diff options
| author | 2019-04-23 08:36:35 -0400 | |
|---|---|---|
| committer | 2019-09-21 16:50:39 -0400 | |
| commit | d4d38dd44d61a64a56a5bc5e7c0644dfbc17e128 (patch) | |
| tree | f0b015d3f84ed2332cf4111c1f9d21d0f9040bc7 /src | |
| parent | core: Store FileSystemController in core (diff) | |
| download | yuzu-d4d38dd44d61a64a56a5bc5e7c0644dfbc17e128.tar.gz yuzu-d4d38dd44d61a64a56a5bc5e7c0644dfbc17e128.tar.xz yuzu-d4d38dd44d61a64a56a5bc5e7c0644dfbc17e128.zip | |
yuzu: Add UI to manage filesystem paths and sizes
Diffstat (limited to 'src')
| -rw-r--r-- | src/yuzu/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure.ui | 11 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_dialog.cpp | 4 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_filesystem.cpp | 173 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_filesystem.h | 43 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_filesystem.ui | 395 |
6 files changed, 627 insertions, 1 deletions
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt index f051e17b4..c50ca317d 100644 --- a/src/yuzu/CMakeLists.txt +++ b/src/yuzu/CMakeLists.txt | |||
| @@ -33,6 +33,8 @@ add_executable(yuzu | |||
| 33 | configuration/configure_debug.ui | 33 | configuration/configure_debug.ui |
| 34 | configuration/configure_dialog.cpp | 34 | configuration/configure_dialog.cpp |
| 35 | configuration/configure_dialog.h | 35 | configuration/configure_dialog.h |
| 36 | configuration/configure_filesystem.cpp | ||
| 37 | configuration/configure_filesystem.h | ||
| 36 | configuration/configure_gamelist.cpp | 38 | configuration/configure_gamelist.cpp |
| 37 | configuration/configure_gamelist.h | 39 | configuration/configure_gamelist.h |
| 38 | configuration/configure_gamelist.ui | 40 | configuration/configure_gamelist.ui |
diff --git a/src/yuzu/configuration/configure.ui b/src/yuzu/configuration/configure.ui index 267717bc9..49fadd0ef 100644 --- a/src/yuzu/configuration/configure.ui +++ b/src/yuzu/configuration/configure.ui | |||
| @@ -63,6 +63,11 @@ | |||
| 63 | <string>Profiles</string> | 63 | <string>Profiles</string> |
| 64 | </attribute> | 64 | </attribute> |
| 65 | </widget> | 65 | </widget> |
| 66 | <widget class="ConfigureFilesystem" name="filesystemTab"> | ||
| 67 | <attribute name="title"> | ||
| 68 | <string>Filesystem</string> | ||
| 69 | </attribute> | ||
| 70 | </widget> | ||
| 66 | <widget class="ConfigureInputSimple" name="inputTab"> | 71 | <widget class="ConfigureInputSimple" name="inputTab"> |
| 67 | <attribute name="title"> | 72 | <attribute name="title"> |
| 68 | <string>Input</string> | 73 | <string>Input</string> |
| @@ -126,6 +131,12 @@ | |||
| 126 | <container>1</container> | 131 | <container>1</container> |
| 127 | </customwidget> | 132 | </customwidget> |
| 128 | <customwidget> | 133 | <customwidget> |
| 134 | <class>ConfigureFilesystem</class> | ||
| 135 | <extends>QWidget</extends> | ||
| 136 | <header>configuration/configure_filesystem.h</header> | ||
| 137 | <container>1</container> | ||
| 138 | </customwidget> | ||
| 139 | <customwidget> | ||
| 129 | <class>ConfigureAudio</class> | 140 | <class>ConfigureAudio</class> |
| 130 | <extends>QWidget</extends> | 141 | <extends>QWidget</extends> |
| 131 | <header>configuration/configure_audio.h</header> | 142 | <header>configuration/configure_audio.h</header> |
diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp index 775e3f2ea..7c875ae87 100644 --- a/src/yuzu/configuration/configure_dialog.cpp +++ b/src/yuzu/configuration/configure_dialog.cpp | |||
| @@ -37,6 +37,7 @@ void ConfigureDialog::ApplyConfiguration() { | |||
| 37 | ui->gameListTab->ApplyConfiguration(); | 37 | ui->gameListTab->ApplyConfiguration(); |
| 38 | ui->systemTab->ApplyConfiguration(); | 38 | ui->systemTab->ApplyConfiguration(); |
| 39 | ui->profileManagerTab->ApplyConfiguration(); | 39 | ui->profileManagerTab->ApplyConfiguration(); |
| 40 | ui->filesystemTab->applyConfiguration(); | ||
| 40 | ui->inputTab->ApplyConfiguration(); | 41 | ui->inputTab->ApplyConfiguration(); |
| 41 | ui->hotkeysTab->ApplyConfiguration(registry); | 42 | ui->hotkeysTab->ApplyConfiguration(registry); |
| 42 | ui->graphicsTab->ApplyConfiguration(); | 43 | ui->graphicsTab->ApplyConfiguration(); |
| @@ -73,7 +74,7 @@ Q_DECLARE_METATYPE(QList<QWidget*>); | |||
| 73 | void ConfigureDialog::PopulateSelectionList() { | 74 | void ConfigureDialog::PopulateSelectionList() { |
| 74 | const std::array<std::pair<QString, QList<QWidget*>>, 4> items{ | 75 | const std::array<std::pair<QString, QList<QWidget*>>, 4> items{ |
| 75 | {{tr("General"), {ui->generalTab, ui->webTab, ui->debugTab, ui->gameListTab}}, | 76 | {{tr("General"), {ui->generalTab, ui->webTab, ui->debugTab, ui->gameListTab}}, |
| 76 | {tr("System"), {ui->systemTab, ui->profileManagerTab, ui->audioTab}}, | 77 | {tr("System"), {ui->systemTab, ui->profileManagerTab, ui->filesystemTab, ui->audioTab}}, |
| 77 | {tr("Graphics"), {ui->graphicsTab}}, | 78 | {tr("Graphics"), {ui->graphicsTab}}, |
| 78 | {tr("Controls"), {ui->inputTab, ui->hotkeysTab}}}, | 79 | {tr("Controls"), {ui->inputTab, ui->hotkeysTab}}}, |
| 79 | }; | 80 | }; |
| @@ -106,6 +107,7 @@ void ConfigureDialog::UpdateVisibleTabs() { | |||
| 106 | {ui->debugTab, tr("Debug")}, | 107 | {ui->debugTab, tr("Debug")}, |
| 107 | {ui->webTab, tr("Web")}, | 108 | {ui->webTab, tr("Web")}, |
| 108 | {ui->gameListTab, tr("Game List")}, | 109 | {ui->gameListTab, tr("Game List")}, |
| 110 | {ui->filesystemTab, tr("Filesystem")}, | ||
| 109 | }; | 111 | }; |
| 110 | 112 | ||
| 111 | [[maybe_unused]] const QSignalBlocker blocker(ui->tabWidget); | 113 | [[maybe_unused]] const QSignalBlocker blocker(ui->tabWidget); |
diff --git a/src/yuzu/configuration/configure_filesystem.cpp b/src/yuzu/configuration/configure_filesystem.cpp new file mode 100644 index 000000000..fabe86e0a --- /dev/null +++ b/src/yuzu/configuration/configure_filesystem.cpp | |||
| @@ -0,0 +1,173 @@ | |||
| 1 | // Copyright 2019 yuzu Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include <QFileDialog> | ||
| 6 | #include <QMessageBox> | ||
| 7 | #include "common/common_paths.h" | ||
| 8 | #include "common/file_util.h" | ||
| 9 | #include "core/settings.h" | ||
| 10 | #include "ui_configure_filesystem.h" | ||
| 11 | #include "yuzu/configuration/configure_filesystem.h" | ||
| 12 | #include "yuzu/ui_settings.h" | ||
| 13 | |||
| 14 | namespace { | ||
| 15 | |||
| 16 | template <typename T> | ||
| 17 | void SetComboBoxFromData(QComboBox* combo_box, T data) { | ||
| 18 | const auto index = combo_box->findData(QVariant::fromValue(static_cast<u64>(data))); | ||
| 19 | if (index >= combo_box->count() || index < 0) | ||
| 20 | return; | ||
| 21 | |||
| 22 | combo_box->setCurrentIndex(index); | ||
| 23 | } | ||
| 24 | |||
| 25 | } // Anonymous namespace | ||
| 26 | |||
| 27 | ConfigureFilesystem::ConfigureFilesystem(QWidget* parent) | ||
| 28 | : QWidget(parent), ui(std::make_unique<Ui::ConfigureFilesystem>()) { | ||
| 29 | ui->setupUi(this); | ||
| 30 | this->setConfiguration(); | ||
| 31 | |||
| 32 | connect(ui->nand_directory_button, &QToolButton::pressed, this, | ||
| 33 | [this] { SetDirectory(DirectoryTarget::NAND, ui->nand_directory_edit); }); | ||
| 34 | connect(ui->sdmc_directory_button, &QToolButton::pressed, this, | ||
| 35 | [this] { SetDirectory(DirectoryTarget::SD, ui->sdmc_directory_edit); }); | ||
| 36 | connect(ui->gamecard_path_button, &QToolButton::pressed, this, | ||
| 37 | [this] { SetDirectory(DirectoryTarget::Gamecard, ui->gamecard_path_edit); }); | ||
| 38 | connect(ui->dump_path_button, &QToolButton::pressed, this, | ||
| 39 | [this] { SetDirectory(DirectoryTarget::Dump, ui->dump_path_edit); }); | ||
| 40 | connect(ui->load_path_button, &QToolButton::pressed, this, | ||
| 41 | [this] { SetDirectory(DirectoryTarget::Load, ui->load_path_edit); }); | ||
| 42 | connect(ui->cache_directory_button, &QToolButton::pressed, this, | ||
| 43 | [this] { SetDirectory(DirectoryTarget::Cache, ui->cache_directory_edit); }); | ||
| 44 | |||
| 45 | connect(ui->reset_game_list_cache, &QPushButton::pressed, this, | ||
| 46 | &ConfigureFilesystem::ResetMetadata); | ||
| 47 | |||
| 48 | connect(ui->gamecard_inserted, &QCheckBox::stateChanged, this, | ||
| 49 | &ConfigureFilesystem::UpdateEnabledControls); | ||
| 50 | connect(ui->gamecard_current_game, &QCheckBox::stateChanged, this, | ||
| 51 | &ConfigureFilesystem::UpdateEnabledControls); | ||
| 52 | } | ||
| 53 | |||
| 54 | ConfigureFilesystem::~ConfigureFilesystem() = default; | ||
| 55 | |||
| 56 | void ConfigureFilesystem::setConfiguration() { | ||
| 57 | ui->nand_directory_edit->setText( | ||
| 58 | QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::NANDDir))); | ||
| 59 | ui->sdmc_directory_edit->setText( | ||
| 60 | QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::SDMCDir))); | ||
| 61 | ui->gamecard_path_edit->setText(QString::fromStdString(Settings::values.gamecard_path)); | ||
| 62 | ui->dump_path_edit->setText( | ||
| 63 | QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::DumpDir))); | ||
| 64 | ui->load_path_edit->setText( | ||
| 65 | QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::LoadDir))); | ||
| 66 | ui->cache_directory_edit->setText( | ||
| 67 | QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::CacheDir))); | ||
| 68 | |||
| 69 | ui->gamecard_inserted->setChecked(Settings::values.gamecard_inserted); | ||
| 70 | ui->gamecard_current_game->setChecked(Settings::values.gamecard_current_game); | ||
| 71 | ui->dump_exefs->setChecked(Settings::values.dump_exefs); | ||
| 72 | ui->dump_nso->setChecked(Settings::values.dump_nso); | ||
| 73 | |||
| 74 | ui->cache_game_list->setChecked(UISettings::values.cache_game_list); | ||
| 75 | |||
| 76 | SetComboBoxFromData(ui->nand_size, Settings::values.nand_total_size); | ||
| 77 | SetComboBoxFromData(ui->usrnand_size, Settings::values.nand_user_size); | ||
| 78 | SetComboBoxFromData(ui->sysnand_size, Settings::values.nand_system_size); | ||
| 79 | SetComboBoxFromData(ui->sdmc_size, Settings::values.sdmc_size); | ||
| 80 | |||
| 81 | UpdateEnabledControls(); | ||
| 82 | } | ||
| 83 | |||
| 84 | void ConfigureFilesystem::applyConfiguration() { | ||
| 85 | FileUtil::GetUserPath(FileUtil::UserPath::NANDDir, | ||
| 86 | ui->nand_directory_edit->text().toStdString()); | ||
| 87 | FileUtil::GetUserPath(FileUtil::UserPath::SDMCDir, | ||
| 88 | ui->sdmc_directory_edit->text().toStdString()); | ||
| 89 | FileUtil::GetUserPath(FileUtil::UserPath::DumpDir, ui->dump_path_edit->text().toStdString()); | ||
| 90 | FileUtil::GetUserPath(FileUtil::UserPath::LoadDir, ui->load_path_edit->text().toStdString()); | ||
| 91 | FileUtil::GetUserPath(FileUtil::UserPath::CacheDir, | ||
| 92 | ui->cache_directory_edit->text().toStdString()); | ||
| 93 | Settings::values.gamecard_path = ui->gamecard_path_edit->text().toStdString(); | ||
| 94 | |||
| 95 | Settings::values.gamecard_inserted = ui->gamecard_inserted->isChecked(); | ||
| 96 | Settings::values.gamecard_current_game = ui->gamecard_current_game->isChecked(); | ||
| 97 | Settings::values.dump_exefs = ui->dump_exefs->isChecked(); | ||
| 98 | Settings::values.dump_nso = ui->dump_nso->isChecked(); | ||
| 99 | |||
| 100 | UISettings::values.cache_game_list = ui->cache_game_list->isChecked(); | ||
| 101 | |||
| 102 | Settings::values.nand_total_size = static_cast<Settings::NANDTotalSize>( | ||
| 103 | ui->nand_size->itemData(ui->nand_size->currentIndex()).toULongLong()); | ||
| 104 | Settings::values.nand_system_size = static_cast<Settings::NANDSystemSize>( | ||
| 105 | ui->nand_size->itemData(ui->sysnand_size->currentIndex()).toULongLong()); | ||
| 106 | Settings::values.nand_user_size = static_cast<Settings::NANDUserSize>( | ||
| 107 | ui->nand_size->itemData(ui->usrnand_size->currentIndex()).toULongLong()); | ||
| 108 | Settings::values.sdmc_size = static_cast<Settings::SDMCSize>( | ||
| 109 | ui->nand_size->itemData(ui->sdmc_size->currentIndex()).toULongLong()); | ||
| 110 | } | ||
| 111 | |||
| 112 | void ConfigureFilesystem::SetDirectory(DirectoryTarget target, QLineEdit* edit) { | ||
| 113 | QString caption; | ||
| 114 | |||
| 115 | switch (target) { | ||
| 116 | case DirectoryTarget::NAND: | ||
| 117 | caption = tr("Select Emulated NAND Directory..."); | ||
| 118 | break; | ||
| 119 | case DirectoryTarget::SD: | ||
| 120 | caption = tr("Select Emulated SD Directory..."); | ||
| 121 | break; | ||
| 122 | case DirectoryTarget::Gamecard: | ||
| 123 | caption = tr("Select Gamecard Path..."); | ||
| 124 | break; | ||
| 125 | case DirectoryTarget::Dump: | ||
| 126 | caption = tr("Select Dump Directory..."); | ||
| 127 | break; | ||
| 128 | case DirectoryTarget::Load: | ||
| 129 | caption = tr("Select Mod Load Directory..."); | ||
| 130 | break; | ||
| 131 | case DirectoryTarget::Cache: | ||
| 132 | caption = tr("Select Cache Directory..."); | ||
| 133 | break; | ||
| 134 | } | ||
| 135 | |||
| 136 | QString str; | ||
| 137 | if (target == DirectoryTarget::Gamecard) { | ||
| 138 | str = QFileDialog::getOpenFileName(this, caption, QFileInfo(edit->text()).dir().path(), | ||
| 139 | "NX Gamecard;*.xci"); | ||
| 140 | } else { | ||
| 141 | str = QFileDialog::getExistingDirectory(this, caption, edit->text()); | ||
| 142 | } | ||
| 143 | |||
| 144 | if (str.isEmpty()) | ||
| 145 | return; | ||
| 146 | |||
| 147 | edit->setText(str); | ||
| 148 | } | ||
| 149 | |||
| 150 | void ConfigureFilesystem::ResetMetadata() { | ||
| 151 | if (FileUtil::DeleteDirRecursively(FileUtil::GetUserPath(FileUtil::UserPath::CacheDir) + | ||
| 152 | DIR_SEP + "game_list")) { | ||
| 153 | QMessageBox::information(this, tr("Reset Metadata Cache"), | ||
| 154 | tr("The operation completed successfully.")); | ||
| 155 | UISettings::values.is_game_list_reload_pending.exchange(true); | ||
| 156 | } else { | ||
| 157 | QMessageBox::warning( | ||
| 158 | this, tr("Reset Metadata Cache"), | ||
| 159 | tr("The metadata cache couldn't be deleted. It might be in use or non-existent.")); | ||
| 160 | } | ||
| 161 | } | ||
| 162 | |||
| 163 | void ConfigureFilesystem::UpdateEnabledControls() { | ||
| 164 | ui->gamecard_current_game->setEnabled(ui->gamecard_inserted->isChecked()); | ||
| 165 | ui->gamecard_path_edit->setEnabled(ui->gamecard_inserted->isChecked() && | ||
| 166 | !ui->gamecard_current_game->isChecked()); | ||
| 167 | ui->gamecard_path_button->setEnabled(ui->gamecard_inserted->isChecked() && | ||
| 168 | !ui->gamecard_current_game->isChecked()); | ||
| 169 | } | ||
| 170 | |||
| 171 | void ConfigureFilesystem::retranslateUi() { | ||
| 172 | ui->retranslateUi(this); | ||
| 173 | } | ||
diff --git a/src/yuzu/configuration/configure_filesystem.h b/src/yuzu/configuration/configure_filesystem.h new file mode 100644 index 000000000..a79303760 --- /dev/null +++ b/src/yuzu/configuration/configure_filesystem.h | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | // Copyright 2019 yuzu Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include <memory> | ||
| 8 | #include <QWidget> | ||
| 9 | |||
| 10 | class QLineEdit; | ||
| 11 | |||
| 12 | namespace Ui { | ||
| 13 | class ConfigureFilesystem; | ||
| 14 | } | ||
| 15 | |||
| 16 | class ConfigureFilesystem : public QWidget { | ||
| 17 | Q_OBJECT | ||
| 18 | |||
| 19 | public: | ||
| 20 | explicit ConfigureFilesystem(QWidget* parent = nullptr); | ||
| 21 | ~ConfigureFilesystem() override; | ||
| 22 | |||
| 23 | void applyConfiguration(); | ||
| 24 | void retranslateUi(); | ||
| 25 | |||
| 26 | private: | ||
| 27 | void setConfiguration(); | ||
| 28 | |||
| 29 | enum class DirectoryTarget { | ||
| 30 | NAND, | ||
| 31 | SD, | ||
| 32 | Gamecard, | ||
| 33 | Dump, | ||
| 34 | Load, | ||
| 35 | Cache, | ||
| 36 | }; | ||
| 37 | |||
| 38 | void SetDirectory(DirectoryTarget target, QLineEdit* edit); | ||
| 39 | void ResetMetadata(); | ||
| 40 | void UpdateEnabledControls(); | ||
| 41 | |||
| 42 | std::unique_ptr<Ui::ConfigureFilesystem> ui; | ||
| 43 | }; | ||
diff --git a/src/yuzu/configuration/configure_filesystem.ui b/src/yuzu/configuration/configure_filesystem.ui new file mode 100644 index 000000000..58cd07f52 --- /dev/null +++ b/src/yuzu/configuration/configure_filesystem.ui | |||
| @@ -0,0 +1,395 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | <ui version="4.0"> | ||
| 3 | <class>ConfigureFilesystem</class> | ||
| 4 | <widget class="QWidget" name="ConfigureFilesystem"> | ||
| 5 | <property name="geometry"> | ||
| 6 | <rect> | ||
| 7 | <x>0</x> | ||
| 8 | <y>0</y> | ||
| 9 | <width>453</width> | ||
| 10 | <height>561</height> | ||
| 11 | </rect> | ||
| 12 | </property> | ||
| 13 | <property name="windowTitle"> | ||
| 14 | <string>Form</string> | ||
| 15 | </property> | ||
| 16 | <layout class="QVBoxLayout" name="verticalLayout"> | ||
| 17 | <item> | ||
| 18 | <layout class="QVBoxLayout" name="verticalLayout_3"> | ||
| 19 | <item> | ||
| 20 | <widget class="QGroupBox" name="groupBox"> | ||
| 21 | <property name="title"> | ||
| 22 | <string>Storage Directories</string> | ||
| 23 | </property> | ||
| 24 | <layout class="QGridLayout" name="gridLayout"> | ||
| 25 | <item row="0" column="0"> | ||
| 26 | <widget class="QLabel" name="label"> | ||
| 27 | <property name="text"> | ||
| 28 | <string>NAND</string> | ||
| 29 | </property> | ||
| 30 | </widget> | ||
| 31 | </item> | ||
| 32 | <item row="0" column="3"> | ||
| 33 | <widget class="QToolButton" name="nand_directory_button"> | ||
| 34 | <property name="text"> | ||
| 35 | <string>...</string> | ||
| 36 | </property> | ||
| 37 | </widget> | ||
| 38 | </item> | ||
| 39 | <item row="0" column="2"> | ||
| 40 | <widget class="QLineEdit" name="nand_directory_edit"/> | ||
| 41 | </item> | ||
| 42 | <item row="1" column="2"> | ||
| 43 | <widget class="QLineEdit" name="sdmc_directory_edit"/> | ||
| 44 | </item> | ||
| 45 | <item row="1" column="0"> | ||
| 46 | <widget class="QLabel" name="label_2"> | ||
| 47 | <property name="text"> | ||
| 48 | <string>SD Card</string> | ||
| 49 | </property> | ||
| 50 | </widget> | ||
| 51 | </item> | ||
| 52 | <item row="1" column="3"> | ||
| 53 | <widget class="QToolButton" name="sdmc_directory_button"> | ||
| 54 | <property name="text"> | ||
| 55 | <string>...</string> | ||
| 56 | </property> | ||
| 57 | </widget> | ||
| 58 | </item> | ||
| 59 | <item row="0" column="1"> | ||
| 60 | <spacer name="horizontalSpacer"> | ||
| 61 | <property name="orientation"> | ||
| 62 | <enum>Qt::Horizontal</enum> | ||
| 63 | </property> | ||
| 64 | <property name="sizeType"> | ||
| 65 | <enum>QSizePolicy::Maximum</enum> | ||
| 66 | </property> | ||
| 67 | <property name="sizeHint" stdset="0"> | ||
| 68 | <size> | ||
| 69 | <width>60</width> | ||
| 70 | <height>20</height> | ||
| 71 | </size> | ||
| 72 | </property> | ||
| 73 | </spacer> | ||
| 74 | </item> | ||
| 75 | </layout> | ||
| 76 | </widget> | ||
| 77 | </item> | ||
| 78 | <item> | ||
| 79 | <widget class="QGroupBox" name="groupBox_2"> | ||
| 80 | <property name="title"> | ||
| 81 | <string>Gamecard</string> | ||
| 82 | </property> | ||
| 83 | <layout class="QGridLayout" name="gridLayout_2"> | ||
| 84 | <item row="2" column="1"> | ||
| 85 | <widget class="QLabel" name="label_3"> | ||
| 86 | <property name="text"> | ||
| 87 | <string>Path</string> | ||
| 88 | </property> | ||
| 89 | </widget> | ||
| 90 | </item> | ||
| 91 | <item row="2" column="2"> | ||
| 92 | <widget class="QLineEdit" name="gamecard_path_edit"/> | ||
| 93 | </item> | ||
| 94 | <item row="0" column="1"> | ||
| 95 | <widget class="QCheckBox" name="gamecard_inserted"> | ||
| 96 | <property name="text"> | ||
| 97 | <string>Inserted</string> | ||
| 98 | </property> | ||
| 99 | </widget> | ||
| 100 | </item> | ||
| 101 | <item row="1" column="1"> | ||
| 102 | <widget class="QCheckBox" name="gamecard_current_game"> | ||
| 103 | <property name="text"> | ||
| 104 | <string>Current Game</string> | ||
| 105 | </property> | ||
| 106 | </widget> | ||
| 107 | </item> | ||
| 108 | <item row="2" column="3"> | ||
| 109 | <widget class="QToolButton" name="gamecard_path_button"> | ||
| 110 | <property name="text"> | ||
| 111 | <string>...</string> | ||
| 112 | </property> | ||
| 113 | </widget> | ||
| 114 | </item> | ||
| 115 | </layout> | ||
| 116 | </widget> | ||
| 117 | </item> | ||
| 118 | <item> | ||
| 119 | <widget class="QGroupBox" name="groupBox_3"> | ||
| 120 | <property name="title"> | ||
| 121 | <string>Storage Sizes</string> | ||
| 122 | </property> | ||
| 123 | <layout class="QGridLayout" name="gridLayout_3"> | ||
| 124 | <item row="3" column="0"> | ||
| 125 | <widget class="QLabel" name="label_5"> | ||
| 126 | <property name="text"> | ||
| 127 | <string>SD Card</string> | ||
| 128 | </property> | ||
| 129 | </widget> | ||
| 130 | </item> | ||
| 131 | <item row="1" column="0"> | ||
| 132 | <widget class="QLabel" name="label_4"> | ||
| 133 | <property name="text"> | ||
| 134 | <string>System NAND</string> | ||
| 135 | </property> | ||
| 136 | </widget> | ||
| 137 | </item> | ||
| 138 | <item row="1" column="1"> | ||
| 139 | <widget class="QComboBox" name="sysnand_size"> | ||
| 140 | <item> | ||
| 141 | <property name="text"> | ||
| 142 | <string>2.5 GB</string> | ||
| 143 | </property> | ||
| 144 | </item> | ||
| 145 | </widget> | ||
| 146 | </item> | ||
| 147 | <item row="3" column="1"> | ||
| 148 | <widget class="QComboBox" name="sdmc_size"> | ||
| 149 | <property name="currentText"> | ||
| 150 | <string>32 GB</string> | ||
| 151 | </property> | ||
| 152 | <item> | ||
| 153 | <property name="text"> | ||
| 154 | <string>1 GB</string> | ||
| 155 | </property> | ||
| 156 | </item> | ||
| 157 | <item> | ||
| 158 | <property name="text"> | ||
| 159 | <string>2 GB</string> | ||
| 160 | </property> | ||
| 161 | </item> | ||
| 162 | <item> | ||
| 163 | <property name="text"> | ||
| 164 | <string>4 GB</string> | ||
| 165 | </property> | ||
| 166 | </item> | ||
| 167 | <item> | ||
| 168 | <property name="text"> | ||
| 169 | <string>8 GB</string> | ||
| 170 | </property> | ||
| 171 | </item> | ||
| 172 | <item> | ||
| 173 | <property name="text"> | ||
| 174 | <string>16 GB</string> | ||
| 175 | </property> | ||
| 176 | </item> | ||
| 177 | <item> | ||
| 178 | <property name="text"> | ||
| 179 | <string>32 GB</string> | ||
| 180 | </property> | ||
| 181 | </item> | ||
| 182 | <item> | ||
| 183 | <property name="text"> | ||
| 184 | <string>64 GB</string> | ||
| 185 | </property> | ||
| 186 | </item> | ||
| 187 | <item> | ||
| 188 | <property name="text"> | ||
| 189 | <string>128 GB</string> | ||
| 190 | </property> | ||
| 191 | </item> | ||
| 192 | <item> | ||
| 193 | <property name="text"> | ||
| 194 | <string>256 GB</string> | ||
| 195 | </property> | ||
| 196 | </item> | ||
| 197 | <item> | ||
| 198 | <property name="text"> | ||
| 199 | <string>1 TB</string> | ||
| 200 | </property> | ||
| 201 | </item> | ||
| 202 | </widget> | ||
| 203 | </item> | ||
| 204 | <item row="2" column="1"> | ||
| 205 | <widget class="QComboBox" name="usrnand_size"> | ||
| 206 | <item> | ||
| 207 | <property name="text"> | ||
| 208 | <string>26 GB</string> | ||
| 209 | </property> | ||
| 210 | </item> | ||
| 211 | </widget> | ||
| 212 | </item> | ||
| 213 | <item row="2" column="0"> | ||
| 214 | <widget class="QLabel" name="label_6"> | ||
| 215 | <property name="text"> | ||
| 216 | <string>User NAND</string> | ||
| 217 | </property> | ||
| 218 | </widget> | ||
| 219 | </item> | ||
| 220 | <item row="0" column="0"> | ||
| 221 | <widget class="QLabel" name="label_7"> | ||
| 222 | <property name="text"> | ||
| 223 | <string>NAND</string> | ||
| 224 | </property> | ||
| 225 | </widget> | ||
| 226 | </item> | ||
| 227 | <item row="0" column="1"> | ||
| 228 | <widget class="QComboBox" name="nand_size"> | ||
| 229 | <item> | ||
| 230 | <property name="text"> | ||
| 231 | <string>29.1 GB</string> | ||
| 232 | </property> | ||
| 233 | </item> | ||
| 234 | </widget> | ||
| 235 | </item> | ||
| 236 | </layout> | ||
| 237 | </widget> | ||
| 238 | </item> | ||
| 239 | <item> | ||
| 240 | <widget class="QGroupBox" name="groupBox_4"> | ||
| 241 | <property name="title"> | ||
| 242 | <string>Patch Manager</string> | ||
| 243 | </property> | ||
| 244 | <layout class="QGridLayout" name="gridLayout_4"> | ||
| 245 | <item row="1" column="2"> | ||
| 246 | <widget class="QLineEdit" name="load_path_edit"/> | ||
| 247 | </item> | ||
| 248 | <item row="0" column="2"> | ||
| 249 | <widget class="QLineEdit" name="dump_path_edit"/> | ||
| 250 | </item> | ||
| 251 | <item row="0" column="3"> | ||
| 252 | <widget class="QToolButton" name="dump_path_button"> | ||
| 253 | <property name="text"> | ||
| 254 | <string>...</string> | ||
| 255 | </property> | ||
| 256 | </widget> | ||
| 257 | </item> | ||
| 258 | <item row="1" column="3"> | ||
| 259 | <widget class="QToolButton" name="load_path_button"> | ||
| 260 | <property name="text"> | ||
| 261 | <string>...</string> | ||
| 262 | </property> | ||
| 263 | </widget> | ||
| 264 | </item> | ||
| 265 | <item row="2" column="0" colspan="4"> | ||
| 266 | <layout class="QHBoxLayout" name="horizontalLayout"> | ||
| 267 | <item> | ||
| 268 | <widget class="QCheckBox" name="dump_nso"> | ||
| 269 | <property name="text"> | ||
| 270 | <string>Dump Decompressed NSOs</string> | ||
| 271 | </property> | ||
| 272 | </widget> | ||
| 273 | </item> | ||
| 274 | <item> | ||
| 275 | <widget class="QCheckBox" name="dump_exefs"> | ||
| 276 | <property name="text"> | ||
| 277 | <string>Dump ExeFS</string> | ||
| 278 | </property> | ||
| 279 | </widget> | ||
| 280 | </item> | ||
| 281 | </layout> | ||
| 282 | </item> | ||
| 283 | <item row="1" column="0"> | ||
| 284 | <widget class="QLabel" name="label_9"> | ||
| 285 | <property name="text"> | ||
| 286 | <string>Mod Load Root</string> | ||
| 287 | </property> | ||
| 288 | </widget> | ||
| 289 | </item> | ||
| 290 | <item row="0" column="0"> | ||
| 291 | <widget class="QLabel" name="label_8"> | ||
| 292 | <property name="text"> | ||
| 293 | <string>Dump Root</string> | ||
| 294 | </property> | ||
| 295 | </widget> | ||
| 296 | </item> | ||
| 297 | <item row="0" column="1"> | ||
| 298 | <spacer name="horizontalSpacer_2"> | ||
| 299 | <property name="orientation"> | ||
| 300 | <enum>Qt::Horizontal</enum> | ||
| 301 | </property> | ||
| 302 | <property name="sizeType"> | ||
| 303 | <enum>QSizePolicy::Fixed</enum> | ||
| 304 | </property> | ||
| 305 | <property name="sizeHint" stdset="0"> | ||
| 306 | <size> | ||
| 307 | <width>40</width> | ||
| 308 | <height>20</height> | ||
| 309 | </size> | ||
| 310 | </property> | ||
| 311 | </spacer> | ||
| 312 | </item> | ||
| 313 | </layout> | ||
| 314 | </widget> | ||
| 315 | </item> | ||
| 316 | <item> | ||
| 317 | <widget class="QGroupBox" name="groupBox_5"> | ||
| 318 | <property name="title"> | ||
| 319 | <string>Caching</string> | ||
| 320 | </property> | ||
| 321 | <layout class="QGridLayout" name="gridLayout_5"> | ||
| 322 | <item row="0" column="0"> | ||
| 323 | <widget class="QLabel" name="label_10"> | ||
| 324 | <property name="text"> | ||
| 325 | <string>Cache Directory</string> | ||
| 326 | </property> | ||
| 327 | </widget> | ||
| 328 | </item> | ||
| 329 | <item row="0" column="1"> | ||
| 330 | <spacer name="horizontalSpacer_3"> | ||
| 331 | <property name="orientation"> | ||
| 332 | <enum>Qt::Horizontal</enum> | ||
| 333 | </property> | ||
| 334 | <property name="sizeType"> | ||
| 335 | <enum>QSizePolicy::Fixed</enum> | ||
| 336 | </property> | ||
| 337 | <property name="sizeHint" stdset="0"> | ||
| 338 | <size> | ||
| 339 | <width>40</width> | ||
| 340 | <height>20</height> | ||
| 341 | </size> | ||
| 342 | </property> | ||
| 343 | </spacer> | ||
| 344 | </item> | ||
| 345 | <item row="0" column="2"> | ||
| 346 | <widget class="QLineEdit" name="cache_directory_edit"/> | ||
| 347 | </item> | ||
| 348 | <item row="0" column="3"> | ||
| 349 | <widget class="QToolButton" name="cache_directory_button"> | ||
| 350 | <property name="text"> | ||
| 351 | <string>...</string> | ||
| 352 | </property> | ||
| 353 | </widget> | ||
| 354 | </item> | ||
| 355 | <item row="1" column="0" colspan="4"> | ||
| 356 | <layout class="QHBoxLayout" name="horizontalLayout_2"> | ||
| 357 | <item> | ||
| 358 | <widget class="QCheckBox" name="cache_game_list"> | ||
| 359 | <property name="text"> | ||
| 360 | <string>Cache Game List Metadata</string> | ||
| 361 | </property> | ||
| 362 | </widget> | ||
| 363 | </item> | ||
| 364 | <item> | ||
| 365 | <widget class="QPushButton" name="reset_game_list_cache"> | ||
| 366 | <property name="text"> | ||
| 367 | <string>Reset Metadata Cache</string> | ||
| 368 | </property> | ||
| 369 | </widget> | ||
| 370 | </item> | ||
| 371 | </layout> | ||
| 372 | </item> | ||
| 373 | </layout> | ||
| 374 | </widget> | ||
| 375 | </item> | ||
| 376 | </layout> | ||
| 377 | </item> | ||
| 378 | <item> | ||
| 379 | <spacer name="verticalSpacer"> | ||
| 380 | <property name="orientation"> | ||
| 381 | <enum>Qt::Vertical</enum> | ||
| 382 | </property> | ||
| 383 | <property name="sizeHint" stdset="0"> | ||
| 384 | <size> | ||
| 385 | <width>20</width> | ||
| 386 | <height>40</height> | ||
| 387 | </size> | ||
| 388 | </property> | ||
| 389 | </spacer> | ||
| 390 | </item> | ||
| 391 | </layout> | ||
| 392 | </widget> | ||
| 393 | <resources/> | ||
| 394 | <connections/> | ||
| 395 | </ui> | ||