main: Open folder when open save folder location context menu is clicked

master
MerryMage 2016-12-15 09:56:32 +07:00
parent f50dcc88bf
commit 5a4e1b469d
2 changed files with 20 additions and 0 deletions

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include <cinttypes>
#include <clocale> #include <clocale>
#include <memory> #include <memory>
#include <thread> #include <thread>
@ -41,6 +42,7 @@
#include "common/string_util.h" #include "common/string_util.h"
#include "core/arm/disassembler/load_symbol_map.h" #include "core/arm/disassembler/load_symbol_map.h"
#include "core/core.h" #include "core/core.h"
#include "core/file_sys/archive_source_sd_savedata.h"
#include "core/gdbstub/gdbstub.h" #include "core/gdbstub/gdbstub.h"
#include "core/loader/loader.h" #include "core/loader/loader.h"
#include "core/settings.h" #include "core/settings.h"
@ -171,6 +173,8 @@ GMainWindow::GMainWindow() : config(new Config()), emu_thread(nullptr) {
// Setup connections // Setup connections
connect(game_list, SIGNAL(GameChosen(QString)), this, SLOT(OnGameListLoadFile(QString)), connect(game_list, SIGNAL(GameChosen(QString)), this, SLOT(OnGameListLoadFile(QString)),
Qt::DirectConnection); Qt::DirectConnection);
connect(game_list, SIGNAL(OpenSaveFolderRequested(u64)), this,
SLOT(OnGameListOpenSaveFolder(u64)), Qt::DirectConnection);
connect(ui.action_Configure, SIGNAL(triggered()), this, SLOT(OnConfigure())); connect(ui.action_Configure, SIGNAL(triggered()), this, SLOT(OnConfigure()));
connect(ui.action_Load_File, SIGNAL(triggered()), this, SLOT(OnMenuLoadFile()), connect(ui.action_Load_File, SIGNAL(triggered()), this, SLOT(OnMenuLoadFile()),
Qt::DirectConnection); Qt::DirectConnection);
@ -460,6 +464,21 @@ void GMainWindow::OnGameListLoadFile(QString game_path) {
BootGame(game_path.toStdString()); BootGame(game_path.toStdString());
} }
void GMainWindow::OnGameListOpenSaveFolder(u64 program_id) {
std::string sdmc_dir = FileUtil::GetUserPath(D_SDMC_IDX);
std::string path = FileSys::ArchiveSource_SDSaveData::GetSaveDataPathFor(sdmc_dir, program_id);
QString qpath = QString::fromStdString(path);
QDir dir(qpath);
if (!dir.exists()) {
QMessageBox::critical(this, tr("Error Opening Save Folder"), tr("Folder does not exist!"));
return;
}
LOG_INFO(Frontend, "Opening save data path for program_id=%" PRIu64, program_id);
QDesktopServices::openUrl(QUrl::fromLocalFile(qpath));
}
void GMainWindow::OnMenuLoadFile() { void GMainWindow::OnMenuLoadFile() {
QString filename = QString filename =
QFileDialog::getOpenFileName(this, tr("Load File"), UISettings::values.roms_path, QFileDialog::getOpenFileName(this, tr("Load File"), UISettings::values.roms_path,

@ -105,6 +105,7 @@ private slots:
void OnStopGame(); void OnStopGame();
/// Called whenever a user selects a game in the game list widget. /// Called whenever a user selects a game in the game list widget.
void OnGameListLoadFile(QString game_path); void OnGameListLoadFile(QString game_path);
void OnGameListOpenSaveFolder(u64 program_id);
void OnMenuLoadFile(); void OnMenuLoadFile();
void OnMenuLoadSymbolMap(); void OnMenuLoadSymbolMap();
/// Called whenever a user selects the "File->Select Game List Root" menu item /// Called whenever a user selects the "File->Select Game List Root" menu item