8#ifndef REMOTEDECKLIST_TREEWIDGET_H
9#define REMOTEDECKLIST_TREEWIDGET_H
11#include <QAbstractItemModel>
19#include <qnamespace.h>
20#include <qtmetamacros.h>
24class QSortFilterProxyModel;
72 [[nodiscard]] QString
getPath()
const;
85 const QDateTime &_uploadTime,
87 bool _isPublic =
false)
102 template <
typename T> [[nodiscard]] T
getNode(
const QModelIndex &
index)
const
104 if (!
index.isValid()) {
105 return dynamic_cast<T
>(
root);
107 return dynamic_cast<T
>(
static_cast<Node *
>(
index.internalPointer()));
125 [[nodiscard]]
int rowCount(
const QModelIndex &
parent = QModelIndex())
const override;
126 [[nodiscard]]
int columnCount(
const QModelIndex & = QModelIndex())
const override;
127 [[nodiscard]] QVariant
data(
const QModelIndex &
index,
int role)
const override;
128 [[nodiscard]] QVariant
129 headerData(
int section, Qt::Orientation orientation,
int role = Qt::DisplayRole)
const override;
130 [[nodiscard]] QModelIndex
index(
int row,
int column,
const QModelIndex &
parent = QModelIndex())
const override;
131 [[nodiscard]] QModelIndex
parent(
const QModelIndex &
index)
const override;
132 [[nodiscard]] Qt::ItemFlags
flags(
const QModelIndex &
index)
const override;
Definition abstract_client.h:73
Definition remote_connection_controller.h:20
Definition remote_decklist_tree_widget.h:67
void clearTree()
Definition remote_decklist_tree_widget.cpp:32
DirectoryNode(const QString &_name=QString(), DirectoryNode *_parent=nullptr)
Definition remote_decklist_tree_widget.cpp:21
QString getPath() const
Definition remote_decklist_tree_widget.cpp:40
FileNode * getNodeById(int id) const
Definition remote_decklist_tree_widget.cpp:79
DirectoryNode * getNodeByPath(QStringList path)
Definition remote_decklist_tree_widget.cpp:54
Definition remote_decklist_tree_widget.h:77
int getId() const
Definition remote_decklist_tree_widget.h:92
int id
Definition remote_decklist_tree_widget.h:79
QDateTime uploadTime
Definition remote_decklist_tree_widget.h:80
FileNode(const QString &_name, int _id, const QDateTime &_uploadTime, DirectoryNode *_parent=nullptr, bool _isPublic=false)
Definition remote_decklist_tree_widget.h:83
QDateTime getUploadTime() const
Definition remote_decklist_tree_widget.h:96
Definition remote_decklist_tree_widget.h:37
QString getName() const
Definition remote_decklist_tree_widget.h:53
DirectoryNode * getParent() const
Definition remote_decklist_tree_widget.h:49
bool publicFlag
Definition remote_decklist_tree_widget.h:41
DirectoryNode * parent
Definition remote_decklist_tree_widget.h:39
void setIsPublic(bool _public)
Definition remote_decklist_tree_widget.h:61
QString name
Definition remote_decklist_tree_widget.h:40
Node(const QString &_name, DirectoryNode *_parent=nullptr)
Definition remote_decklist_tree_widget.h:44
bool isPublic() const
Definition remote_decklist_tree_widget.h:57
Definition remote_decklist_tree_widget.h:30
int columnCount(const QModelIndex &=QModelIndex()) const override
Definition remote_decklist_tree_widget.cpp:123
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
Definition remote_decklist_tree_widget.cpp:213
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
Definition remote_decklist_tree_widget.cpp:240
DirectoryNode * addNamedFolderToTree(const QString &name, DirectoryNode *parent)
Definition remote_decklist_tree_widget.cpp:307
QModelIndex nodeToIndex(Node *node) const
Definition remote_decklist_tree_widget.cpp:272
QIcon dirIcon
Definition remote_decklist_tree_widget.h:114
AbstractClient * client
Definition remote_decklist_tree_widget.h:111
void addFileToTree(const ServerInfo_DeckStorage_TreeItem &file, DirectoryNode *parent)
Definition remote_decklist_tree_widget.cpp:280
void clearTree()
Definition remote_decklist_tree_widget.cpp:349
Qt::ItemFlags flags(const QModelIndex &index) const override
Definition remote_decklist_tree_widget.cpp:263
void removeNode(Node *node)
Definition remote_decklist_tree_widget.cpp:317
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Definition remote_decklist_tree_widget.cpp:113
void addFolderToTree(const ServerInfo_DeckStorage_TreeItem &folder, DirectoryNode *parent)
Definition remote_decklist_tree_widget.cpp:291
QModelIndex parent(const QModelIndex &index) const override
Definition remote_decklist_tree_widget.cpp:254
QVariant data(const QModelIndex &index, int role) const override
Definition remote_decklist_tree_widget.cpp:128
void deckListFinished(const Response &r)
Definition remote_decklist_tree_widget.cpp:356
T getNode(const QModelIndex &index) const
Definition remote_decklist_tree_widget.h:102
QIcon fileIcon
Definition remote_decklist_tree_widget.h:114
void refreshTree()
Definition remote_decklist_tree_widget.cpp:326
DirectoryNode * getRoot() const
Definition remote_decklist_tree_widget.h:134
bool isEffectivelyPublic(const Node *node) const
Whether a node is visible to other users (own flag or inherited from any ancestor folder).
Definition remote_decklist_tree_widget.cpp:334
DirectoryNode * root
Definition remote_decklist_tree_widget.h:112
RemoteDeckList_TreeModel(AbstractClient *_client, QObject *parent=nullptr)
Definition remote_decklist_tree_widget.cpp:98
Definition response.proto:11
Definition serverinfo_deckstorage.proto:21