Support multi-select for remote decks in deck storage tab (#5315)

* enable multiselection

* support multi open deck

* support multi download

* support multi delete
This commit is contained in:
RickyRister 2024-12-23 21:05:49 -08:00 committed by GitHub
parent a40d8092ce
commit 6e470d788e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 65 additions and 41 deletions

View file

@ -300,6 +300,7 @@ RemoteDeckList_TreeWidget::RemoteDeckList_TreeWidget(AbstractClient *_client, QW
header()->setSectionResizeMode(QHeaderView::ResizeToContents);
setUniformRowHeights(true);
setSelectionMode(QAbstractItemView::ExtendedSelection);
setSortingEnabled(true);
proxyModel->sort(0, Qt::AscendingOrder);
header()->setSortIndicator(0, Qt::AscendingOrder);
@ -315,6 +316,15 @@ RemoteDeckList_TreeModel::Node *RemoteDeckList_TreeWidget::getCurrentItem() cons
return getNode(selectionModel()->currentIndex());
}
QList<RemoteDeckList_TreeModel::Node *> RemoteDeckList_TreeWidget::getCurrentSelection() const
{
auto list = QList<RemoteDeckList_TreeModel::Node *>();
for (const auto &row : selectionModel()->selectedRows()) {
list << getNode(row);
}
return list;
}
RemoteDeckList_TreeModel::DirectoryNode *RemoteDeckList_TreeWidget::getNodeByPath(const QString &path) const
{
return treeModel->getRoot()->getNodeByPath(path.split("/"));

View file

@ -118,6 +118,7 @@ public:
RemoteDeckList_TreeWidget(AbstractClient *_client, QWidget *parent = nullptr);
RemoteDeckList_TreeModel::Node *getNode(const QModelIndex &ind) const;
RemoteDeckList_TreeModel::Node *getCurrentItem() const;
QList<RemoteDeckList_TreeModel::Node *> getCurrentSelection() const;
RemoteDeckList_TreeModel::DirectoryNode *getNodeByPath(const QString &path) const;
RemoteDeckList_TreeModel::FileNode *getNodeById(int id) const;
void addFileToTree(const ServerInfo_DeckStorage_TreeItem &file, RemoteDeckList_TreeModel::DirectoryNode *parent);