open replays on double-click in replays tab (#5323)

This commit is contained in:
RickyRister 2024-12-24 21:34:43 -08:00 committed by GitHub
parent 2b9d7538bf
commit 4c3ceae0e4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 26 additions and 1 deletions

View file

@ -131,6 +131,13 @@ void TabReplays::retranslateUi()
aDeleteRemoteReplay->setText(tr("Delete"));
}
void TabReplays::actLocalDoubleClick(const QModelIndex &curLeft)
{
if (!localDirModel->isDir(curLeft)) {
actOpenLocalReplay();
}
}
void TabReplays::actOpenLocalReplay()
{
QModelIndexList curLefts = localDirView->selectionModel()->selectedRows();
@ -192,6 +199,13 @@ void TabReplays::actDeleteLocalReplay()
}
}
void TabReplays::actRemoteDoubleClick(const QModelIndex &curRight)
{
if (serverDirView->getReplay(curRight)) {
actOpenRemoteReplay();
}
}
void TabReplays::actOpenRemoteReplay()
{
auto const curRights = serverDirView->getSelectedReplays();

View file

@ -28,10 +28,12 @@ private:
QAction *aOpenLocalReplay, *aNewLocalFolder, *aDeleteLocalReplay;
QAction *aOpenRemoteReplay, *aDownload, *aKeep, *aDeleteRemoteReplay;
private slots:
void actLocalDoubleClick(const QModelIndex &curLeft);
void actOpenLocalReplay();
void actNewLocalFolder();
void actDeleteLocalReplay();
void actRemoteDoubleClick(const QModelIndex &curLeft);
void actOpenRemoteReplay();
void openRemoteReplayFinished(const Response &r);

View file

@ -309,6 +309,15 @@ RemoteReplayList_TreeWidget::RemoteReplayList_TreeWidget(AbstractClient *_client
setSelectionMode(QAbstractItemView::ExtendedSelection);
}
/**
* Gets the replay at the given index
* @return The replay. Returns nullptr if there is no replay at the index.
*/
ServerInfo_Replay const *RemoteReplayList_TreeWidget::getReplay(const QModelIndex &ind) const
{
return treeModel->getReplay(proxyModel->mapToSource(ind));
}
/**
* Gets all currently selected replays.
* Any selection that isn't a replay file (e.g. a folder) will appear as a nullptr in the list.

View file

@ -107,10 +107,10 @@ class RemoteReplayList_TreeWidget : public QTreeView
private:
RemoteReplayList_TreeModel *treeModel;
QSortFilterProxyModel *proxyModel;
ServerInfo_Replay const *getNode(const QModelIndex &ind) const;
public:
RemoteReplayList_TreeWidget(AbstractClient *_client, QWidget *parent = nullptr);
ServerInfo_Replay const *getReplay(const QModelIndex &ind) const;
QList<ServerInfo_Replay const *> getSelectedReplays() const;
QSet<ServerInfo_ReplayMatch const *> getSelectedReplayMatches() const;
void refreshTree();