From cdfbab41030439c70fc1c9bb5ad2583953bc86e1 Mon Sep 17 00:00:00 2001 From: ElBread3 <92335081+ElBread3@users.noreply.github.com> Date: Thu, 8 Aug 2024 08:10:27 -0500 Subject: [PATCH] add double-click to start game --- src/qt_gui/game_grid_frame.cpp | 1 + src/qt_gui/game_grid_frame.h | 1 + src/qt_gui/game_list_frame.cpp | 2 ++ src/qt_gui/game_list_frame.h | 1 + src/qt_gui/main_window.cpp | 54 ++++++++++++++++++---------------- src/qt_gui/main_window.h | 1 + 6 files changed, 34 insertions(+), 26 deletions(-) diff --git a/src/qt_gui/game_grid_frame.cpp b/src/qt_gui/game_grid_frame.cpp index 3d5ab14e..3d05d2b1 100644 --- a/src/qt_gui/game_grid_frame.cpp +++ b/src/qt_gui/game_grid_frame.cpp @@ -37,6 +37,7 @@ GameGridFrame::GameGridFrame(std::shared_ptr game_info_get, QWidg crtColumn = this->currentColumn(); columnCnt = this->columnCount(); }); + connect(this, &QTableWidget::cellDoubleClicked, this, &MainWindow::StartGame); } void GameGridFrame::PopulateGameGrid(QVector m_games_search, bool fromSearch) { diff --git a/src/qt_gui/game_grid_frame.h b/src/qt_gui/game_grid_frame.h index ce775315..305a58b7 100644 --- a/src/qt_gui/game_grid_frame.h +++ b/src/qt_gui/game_grid_frame.h @@ -19,6 +19,7 @@ #include "game_info.h" #include "game_list_utils.h" #include "gui_context_menus.h" +#include "main_window.h" class GameGridFrame : public QTableWidget { Q_OBJECT diff --git a/src/qt_gui/game_list_frame.cpp b/src/qt_gui/game_list_frame.cpp index 2699c961..703dc5e6 100644 --- a/src/qt_gui/game_list_frame.cpp +++ b/src/qt_gui/game_list_frame.cpp @@ -54,6 +54,8 @@ GameListFrame::GameListFrame(std::shared_ptr game_info_get, QWidg connect(this->horizontalScrollBar(), &QScrollBar::valueChanged, this, &GameListFrame::RefreshListBackgroundImage); + connect(this, &QTableWidget::cellDoubleClicked, this, &MainWindow::StartGame); + this->horizontalHeader()->setSortIndicatorShown(true); this->horizontalHeader()->setSectionsClickable(true); QObject::connect( diff --git a/src/qt_gui/game_list_frame.h b/src/qt_gui/game_list_frame.h index d8bccf46..bcb3f4b1 100644 --- a/src/qt_gui/game_list_frame.h +++ b/src/qt_gui/game_list_frame.h @@ -20,6 +20,7 @@ #include "game_info.h" #include "game_list_utils.h" #include "gui_context_menus.h" +#include "main_window.h" class GameListFrame : public QTableWidget { Q_OBJECT diff --git a/src/qt_gui/main_window.cpp b/src/qt_gui/main_window.cpp index b3778be0..6b51a371 100644 --- a/src/qt_gui/main_window.cpp +++ b/src/qt_gui/main_window.cpp @@ -179,32 +179,7 @@ void MainWindow::CreateConnects() { } }); - connect(ui->playButton, &QPushButton::clicked, this, [this]() { - QString gamePath = ""; - int table_mode = Config::getTableMode(); - if (table_mode == 0) { - if (m_game_list_frame->currentItem()) { - int itemID = m_game_list_frame->currentItem()->row(); - gamePath = QString::fromStdString(m_game_info->m_games[itemID].path + "/eboot.bin"); - } - } else if (table_mode == 1) { - if (m_game_grid_frame->cellClicked) { - int itemID = (m_game_grid_frame->crtRow * m_game_grid_frame->columnCnt) + - m_game_grid_frame->crtColumn; - gamePath = QString::fromStdString(m_game_info->m_games[itemID].path + "/eboot.bin"); - } - } else { - if (m_elf_viewer->currentItem()) { - int itemID = m_elf_viewer->currentItem()->row(); - gamePath = QString::fromStdString(m_elf_viewer->m_elf_list[itemID].toStdString()); - } - } - if (gamePath != "") { - AddRecentFiles(gamePath); - Core::Emulator emulator; - emulator.Run(gamePath.toUtf8().constData()); - } - }); + connect(ui->playButton, &QPushButton::clicked, this, &MainWindow::StartGame); connect(ui->setIconSizeTinyAct, &QAction::triggered, this, [this]() { if (isTableList) { @@ -386,6 +361,33 @@ void MainWindow::CreateConnects() { }); } +void MainWindow::StartGame() { + QString gamePath = ""; + int table_mode = Config::getTableMode(); + if (table_mode == 0) { + if (m_game_list_frame->currentItem()) { + int itemID = m_game_list_frame->currentItem()->row(); + gamePath = QString::fromStdString(m_game_info->m_games[itemID].path + "/eboot.bin"); + } + } else if (table_mode == 1) { + if (m_game_grid_frame->cellClicked) { + int itemID = (m_game_grid_frame->crtRow * m_game_grid_frame->columnCnt) + + m_game_grid_frame->crtColumn; + gamePath = QString::fromStdString(m_game_info->m_games[itemID].path + "/eboot.bin"); + } + } else { + if (m_elf_viewer->currentItem()) { + int itemID = m_elf_viewer->currentItem()->row(); + gamePath = QString::fromStdString(m_elf_viewer->m_elf_list[itemID].toStdString()); + } + } + if (gamePath != "") { + AddRecentFiles(gamePath); + Core::Emulator emulator; + emulator.Run(gamePath.toUtf8().constData()); + } +} + void MainWindow::SearchGameTable(const QString& text) { if (isTableList) { for (int row = 0; row < m_game_list_frame->rowCount(); row++) { diff --git a/src/qt_gui/main_window.h b/src/qt_gui/main_window.h index d1ef48dc..39a5d049 100644 --- a/src/qt_gui/main_window.h +++ b/src/qt_gui/main_window.h @@ -39,6 +39,7 @@ public: bool Init(); void InstallDragDropPkg(std::filesystem::path file, int pkgNum, int nPkg); void InstallDirectory(); + void StartGame(); private Q_SLOTS: void ConfigureGuiFromSettings();