summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt2/Config/PathDialog.cpp
diff options
context:
space:
mode:
authorScott Mansell <phiren@gmail.com>2016-01-01 21:48:05 +1300
committerScott Mansell <phiren@gmail.com>2016-01-01 21:48:05 +1300
commitd2e9688ab0b1c91a354b0d96d1750acfe06b21c9 (patch)
treef2f46ed94cb1938887b89c6f999f00855b1017e0 /Source/Core/DolphinQt2/Config/PathDialog.cpp
parent5cd4619a1ddf82311b104c3ceb95e9350e2b5a09 (diff)
parent5b2a76458d660012031c5dd5724171d195113e31 (diff)
Merge pull request #3388 from spxtr/DQt2
DQt2: Implement Paths config dialog
Diffstat (limited to 'Source/Core/DolphinQt2/Config/PathDialog.cpp')
-rw-r--r--Source/Core/DolphinQt2/Config/PathDialog.cpp185
1 files changed, 185 insertions, 0 deletions
diff --git a/Source/Core/DolphinQt2/Config/PathDialog.cpp b/Source/Core/DolphinQt2/Config/PathDialog.cpp
new file mode 100644
index 0000000000..a44131e0cc
--- /dev/null
+++ b/Source/Core/DolphinQt2/Config/PathDialog.cpp
@@ -0,0 +1,185 @@
+// Copyright 2015 Dolphin Emulator Project
+// Licensed under GPLv2+
+// Refer to the license.txt file included.
+
+#include <QAction>
+#include <QDialogButtonBox>
+#include <QDir>
+#include <QFileDialog>
+#include <QFont>
+#include <QLabel>
+#include <QLineEdit>
+#include <QListWidget>
+#include <QPushButton>
+#include <QSize>
+#include <QVBoxLayout>
+
+#include "DolphinQt2/Settings.h"
+#include "DolphinQt2/Config/PathDialog.h"
+
+PathDialog::PathDialog(QWidget* parent)
+ : QDialog(parent)
+{
+ setWindowTitle(tr("Paths"));
+ setAttribute(Qt::WA_DeleteOnClose);
+
+ QVBoxLayout* layout = new QVBoxLayout;
+ layout->addWidget(MakeGameFolderBox());
+ layout->addLayout(MakePathsLayout());
+
+ QDialogButtonBox* ok_box = new QDialogButtonBox(QDialogButtonBox::Ok);
+ connect(ok_box, &QDialogButtonBox::accepted, this, &PathDialog::accept);
+ layout->addWidget(ok_box);
+
+ setLayout(layout);
+}
+
+void PathDialog::Browse()
+{
+ QString dir = QFileDialog::getExistingDirectory(this,
+ tr("Select a Directory"),
+ QDir::currentPath());
+ if (!dir.isEmpty())
+ {
+ Settings settings;
+ QStringList game_folders = settings.GetPaths();
+ if (!game_folders.contains(dir))
+ {
+ game_folders << dir;
+ settings.SetPaths(game_folders);
+ m_path_list->addItem(dir);
+ emit PathAdded(dir);
+ }
+ }
+}
+
+void PathDialog::BrowseDefaultGame()
+{
+ QString file = QFileDialog::getOpenFileName(this,
+ tr("Select a Game"),
+ QDir::currentPath(),
+ tr("All GC/Wii files (*.elf *.dol *.gcm *.iso *.wbfs *.ciso *.gcz *.wad);;"
+ "All Files (*)"));
+ if (!file.isEmpty())
+ {
+ m_game_edit->setText(file);
+ Settings().SetDefaultGame(file);
+ }
+}
+
+void PathDialog::BrowseDVDRoot()
+{
+ QString dir = QFileDialog::getExistingDirectory(this,
+ tr("Select DVD Root"),
+ QDir::currentPath());
+ if (!dir.isEmpty())
+ {
+ m_dvd_edit->setText(dir);
+ Settings().SetDVDRoot(dir);
+ }
+}
+
+void PathDialog::BrowseApploader()
+{
+ QString file = QFileDialog::getOpenFileName(this,
+ tr("Select an Apploader"),
+ QDir::currentPath(),
+ tr("Apploaders (*.img)"));
+ if (!file.isEmpty())
+ {
+ m_app_edit->setText(file);
+ Settings().SetApploader(file);
+ }
+}
+
+void PathDialog::BrowseWiiNAND()
+{
+ QString dir = QFileDialog::getExistingDirectory(this,
+ tr("Select Wii NAND Root"),
+ QDir::currentPath());
+ if (!dir.isEmpty())
+ {
+ m_nand_edit->setText(dir);
+ Settings().SetWiiNAND(dir);
+ }
+}
+
+QGroupBox* PathDialog::MakeGameFolderBox()
+{
+ QGroupBox* game_box = new QGroupBox(tr("Game Folders"));
+ game_box->setMinimumSize(QSize(400, 250));
+ QVBoxLayout* vlayout = new QVBoxLayout;
+
+ m_path_list = new QListWidget;
+ m_path_list->insertItems(0, Settings().GetPaths());
+ m_path_list->setSpacing(1);
+ vlayout->addWidget(m_path_list);
+
+ QHBoxLayout* hlayout = new QHBoxLayout;
+
+ hlayout->addStretch();
+ QPushButton* add = new QPushButton(tr("Add"));
+ QPushButton* remove = new QPushButton(tr("Remove"));
+ hlayout->addWidget(add);
+ hlayout->addWidget(remove);
+ vlayout->addLayout(hlayout);
+
+ connect(add, &QPushButton::clicked, this, &PathDialog::Browse);
+ connect(remove, &QPushButton::clicked, this, &PathDialog::RemovePath);
+
+ game_box->setLayout(vlayout);
+ return game_box;
+}
+
+QGridLayout* PathDialog::MakePathsLayout()
+{
+ QGridLayout* layout = new QGridLayout;
+ layout->setColumnStretch(1, 1);
+
+ m_game_edit = new QLineEdit(Settings().GetDefaultGame());
+ connect(m_game_edit, &QLineEdit::editingFinished,
+ [=]{ Settings().SetDefaultGame(m_game_edit->text()); });
+ QPushButton* game_open = new QPushButton;
+ connect(game_open, &QPushButton::clicked, this, &PathDialog::BrowseDefaultGame);
+ layout->addWidget(new QLabel(tr("Default Game")), 0, 0);
+ layout->addWidget(m_game_edit, 0, 1);
+ layout->addWidget(game_open, 0, 2);
+
+ m_dvd_edit = new QLineEdit(Settings().GetDVDRoot());
+ connect(m_dvd_edit, &QLineEdit::editingFinished,
+ [=]{ Settings().SetDVDRoot(m_dvd_edit->text()); });
+ QPushButton* dvd_open = new QPushButton;
+ connect(dvd_open, &QPushButton::clicked, this, &PathDialog::BrowseDVDRoot);
+ layout->addWidget(new QLabel(tr("DVD Root")), 1, 0);
+ layout->addWidget(m_dvd_edit, 1, 1);
+ layout->addWidget(dvd_open, 1, 2);
+
+ m_app_edit = new QLineEdit(Settings().GetApploader());
+ connect(m_app_edit, &QLineEdit::editingFinished,
+ [=]{ Settings().SetApploader(m_app_edit->text()); });
+ QPushButton* app_open = new QPushButton;
+ connect(app_open, &QPushButton::clicked, this, &PathDialog::BrowseApploader);
+ layout->addWidget(new QLabel(tr("Apploader")), 2, 0);
+ layout->addWidget(m_app_edit, 2, 1);
+ layout->addWidget(app_open, 2, 2);
+
+ m_nand_edit = new QLineEdit(Settings().GetWiiNAND());
+ connect(m_nand_edit, &QLineEdit::editingFinished,
+ [=]{ Settings().SetWiiNAND(m_nand_edit->text()); });
+ QPushButton* nand_open = new QPushButton;
+ connect(nand_open, &QPushButton::clicked, this, &PathDialog::BrowseWiiNAND);
+ layout->addWidget(new QLabel(tr("Wii NAND Root")), 3, 0);
+ layout->addWidget(m_nand_edit, 3, 1);
+ layout->addWidget(nand_open, 3, 2);
+
+ return layout;
+}
+
+void PathDialog::RemovePath()
+{
+ int row = m_path_list->currentRow();
+ if (row < 0)
+ return;
+ emit PathRemoved(m_path_list->takeItem(row)->text());
+ Settings().RemovePath(row);
+}