mirror of
https://github.com/transmission/transmission.git
synced 2025-12-20 10:28:32 +00:00
There're places where manual intervention is still required as uncrustify is not ideal (unfortunately), but at least one may rely on it to do the right thing most of the time (e.g. when sending in a patch). The style itself is quite different from what we had before but making it uniform across all the codebase is the key. I also hope that it'll make the code more readable (YMMV) and less sensitive to further changes.
85 lines
2.2 KiB
C++
85 lines
2.2 KiB
C++
/*
|
|
* This file Copyright (C) 2009-2015 Mnemosyne LLC
|
|
*
|
|
* It may be used under the GNU GPL versions 2 or 3
|
|
* or any future license endorsed by Mnemosyne LLC.
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <QSet>
|
|
#include <QTreeView>
|
|
|
|
#include "Torrent.h" // FileList
|
|
|
|
class QAction;
|
|
class QMenu;
|
|
class QSortFilterProxyModel;
|
|
|
|
class FileTreeDelegate;
|
|
class FileTreeModel;
|
|
|
|
class FileTreeView : public QTreeView
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
FileTreeView(QWidget* parent = nullptr, bool editable = true);
|
|
|
|
void clear();
|
|
void update(const FileList& files, bool updateProperties = true);
|
|
|
|
void setEditable(bool editable);
|
|
|
|
signals:
|
|
void priorityChanged(const QSet<int>& fileIndices, int priority);
|
|
void wantedChanged(const QSet<int>& fileIndices, bool wanted);
|
|
void pathEdited(const QString& oldpath, const QString& newname);
|
|
void openRequested(const QString& path);
|
|
|
|
protected:
|
|
// QWidget
|
|
virtual void resizeEvent(QResizeEvent* event);
|
|
virtual void keyPressEvent(QKeyEvent* event);
|
|
virtual void mouseDoubleClickEvent(QMouseEvent* event);
|
|
virtual void contextMenuEvent(QContextMenuEvent* event);
|
|
|
|
// QAbstractItemView
|
|
virtual bool edit(const QModelIndex& index, EditTrigger trigger, QEvent* event);
|
|
|
|
private slots:
|
|
void onClicked(const QModelIndex& index);
|
|
|
|
void checkSelectedItems();
|
|
void uncheckSelectedItems();
|
|
void onlyCheckSelectedItems();
|
|
void setSelectedItemsPriority();
|
|
bool openSelectedItem();
|
|
void renameSelectedItem();
|
|
|
|
void refreshContextMenuActionsSensitivity();
|
|
|
|
private:
|
|
void initContextMenu();
|
|
QModelIndexList selectedSourceRows(int column = 0) const;
|
|
|
|
static Qt::CheckState getCumulativeCheckState(const QModelIndexList& indices);
|
|
|
|
private:
|
|
FileTreeModel* myModel;
|
|
QSortFilterProxyModel* myProxy;
|
|
FileTreeDelegate* myDelegate;
|
|
|
|
QMenu* myContextMenu = nullptr;
|
|
QMenu* myPriorityMenu = nullptr;
|
|
QAction* myCheckSelectedAction = nullptr;
|
|
QAction* myUncheckSelectedAction = nullptr;
|
|
QAction* myOnlyCheckSelectedAction = nullptr;
|
|
QAction* myHighPriorityAction = nullptr;
|
|
QAction* myNormalPriorityAction = nullptr;
|
|
QAction* myLowPriorityAction = nullptr;
|
|
QAction* myOpenAction = nullptr;
|
|
QAction* myRenameAction = nullptr;
|
|
};
|