diff options
Diffstat (limited to 'src/yuzu/configuration')
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure.ui | 138 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_dialog.cpp | 43 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_dialog.h | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input_simple.cpp | 19 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_per_general.cpp | 14 | 
6 files changed, 139 insertions, 79 deletions
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 9ced6e0e2..165d70e9c 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -682,7 +682,7 @@ void Config::SaveValues() {          qt_config->setValue("title_id", QVariant::fromValue<u64>(elem.first));          qt_config->beginWriteArray("disabled");          for (std::size_t j = 0; j < elem.second.size(); ++j) { -            qt_config->setArrayIndex(j); +            qt_config->setArrayIndex(static_cast<int>(j));              qt_config->setValue("d", QString::fromStdString(elem.second[j]));          }          qt_config->endArray(); diff --git a/src/yuzu/configuration/configure.ui b/src/yuzu/configuration/configure.ui index 8706b80d2..ce833b6c8 100644 --- a/src/yuzu/configuration/configure.ui +++ b/src/yuzu/configuration/configure.ui @@ -6,8 +6,8 @@     <rect>      <x>0</x>      <y>0</y> -    <width>461</width> -    <height>659</height> +    <width>382</width> +    <height>241</height>     </rect>    </property>    <property name="windowTitle"> @@ -15,51 +15,71 @@    </property>    <layout class="QVBoxLayout" name="verticalLayout">     <item> -    <widget class="QTabWidget" name="tabWidget"> -     <property name="currentIndex"> -      <number>0</number> -     </property> -     <widget class="ConfigureGeneral" name="generalTab"> -      <attribute name="title"> -       <string>General</string> -      </attribute> -     </widget> -     <widget class="ConfigureGameList" name="gameListTab"> -      <attribute name="title"> -       <string>Game List</string> -      </attribute> -     </widget> -     <widget class="ConfigureSystem" name="systemTab"> -      <attribute name="title"> -       <string>System</string> -      </attribute> -     </widget> -     <widget class="ConfigureInputSimple" name="inputTab"> -      <attribute name="title"> -       <string>Input</string> -      </attribute> -     </widget> -     <widget class="ConfigureGraphics" name="graphicsTab"> -      <attribute name="title"> -       <string>Graphics</string> -      </attribute> -     </widget> -     <widget class="ConfigureAudio" name="audioTab"> -      <attribute name="title"> -       <string>Audio</string> -      </attribute> -     </widget> -     <widget class="ConfigureDebug" name="debugTab"> -      <attribute name="title"> -       <string>Debug</string> -      </attribute> -     </widget> -     <widget class="ConfigureWeb" name="webTab"> -      <attribute name="title"> -       <string>Web</string> -      </attribute> -     </widget> -    </widget> +    <layout class="QHBoxLayout" name="horizontalLayout"> +     <item> +      <widget class="QListWidget" name="selectorList"> +       <property name="minimumSize"> +        <size> +         <width>150</width> +         <height>0</height> +        </size> +       </property> +       <property name="maximumSize"> +        <size> +         <width>150</width> +         <height>16777215</height> +        </size> +       </property> +      </widget> +     </item> +     <item> +      <widget class="QTabWidget" name="tabWidget"> +       <property name="currentIndex"> +        <number>0</number> +       </property> +       <widget class="ConfigureGeneral" name="generalTab"> +        <attribute name="title"> +         <string>General</string> +        </attribute> +       </widget> +       <widget class="ConfigureGameList" name="gameListTab"> +        <attribute name="title"> +         <string>Game List</string> +        </attribute> +       </widget> +       <widget class="ConfigureSystem" name="systemTab"> +        <attribute name="title"> +         <string>System</string> +        </attribute> +       </widget> +       <widget class="ConfigureInputSimple" name="inputTab"> +        <attribute name="title"> +         <string>Input</string> +        </attribute> +       </widget> +       <widget class="ConfigureGraphics" name="graphicsTab"> +        <attribute name="title"> +         <string>Graphics</string> +        </attribute> +       </widget> +       <widget class="ConfigureAudio" name="audioTab"> +        <attribute name="title"> +         <string>Audio</string> +        </attribute> +       </widget> +       <widget class="ConfigureDebug" name="debugTab"> +        <attribute name="title"> +         <string>Debug</string> +        </attribute> +       </widget> +       <widget class="ConfigureWeb" name="webTab"> +        <attribute name="title"> +         <string>Web</string> +        </attribute> +       </widget> +      </widget> +     </item> +    </layout>     </item>     <item>      <widget class="QDialogButtonBox" name="buttonBox"> @@ -78,12 +98,6 @@     <container>1</container>    </customwidget>    <customwidget> -   <class>ConfigureGameList</class> -   <extends>QWidget</extends> -   <header>configuration/configure_gamelist.h</header> -   <container>1</container> -  </customwidget> -  <customwidget>     <class>ConfigureSystem</class>     <extends>QWidget</extends>     <header>configuration/configure_system.h</header> @@ -102,12 +116,6 @@     <container>1</container>    </customwidget>    <customwidget> -   <class>ConfigureInputSimple</class> -   <extends>QWidget</extends> -   <header>configuration/configure_input_simple.h</header> -   <container>1</container> -  </customwidget> -  <customwidget>     <class>ConfigureGraphics</class>     <extends>QWidget</extends>     <header>configuration/configure_graphics.h</header> @@ -119,6 +127,18 @@     <header>configuration/configure_web.h</header>     <container>1</container>    </customwidget> +  <customwidget> +   <class>ConfigureGameList</class> +   <extends>QWidget</extends> +   <header>configuration/configure_gamelist.h</header> +   <container>1</container> +  </customwidget> +  <customwidget> +   <class>ConfigureInputSimple</class> +   <extends>QWidget</extends> +   <header>configuration/configure_input_simple.h</header> +   <container>1</container> +  </customwidget>   </customwidgets>   <resources/>   <connections> diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp index 3905423e9..90d7c6372 100644 --- a/src/yuzu/configuration/configure_dialog.cpp +++ b/src/yuzu/configuration/configure_dialog.cpp @@ -2,6 +2,8 @@  // Licensed under GPLv2 or any later version  // Refer to the license.txt file included. +#include <QHash> +#include <QListWidgetItem>  #include "core/settings.h"  #include "ui_configure.h"  #include "yuzu/configuration/config.h" @@ -13,6 +15,13 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, const HotkeyRegistry& registry      ui->setupUi(this);      ui->generalTab->PopulateHotkeyList(registry);      this->setConfiguration(); +    this->PopulateSelectionList(); +    connect(ui->selectorList, &QListWidget::itemSelectionChanged, this, +            &ConfigureDialog::UpdateVisibleTabs); + +    adjustSize(); + +    ui->selectorList->setCurrentRow(0);  }  ConfigureDialog::~ConfigureDialog() = default; @@ -30,3 +39,37 @@ void ConfigureDialog::applyConfiguration() {      ui->webTab->applyConfiguration();      Settings::Apply();  } + +void ConfigureDialog::PopulateSelectionList() { +    const std::array<std::pair<QString, QStringList>, 4> items{ +        {{tr("General"), {tr("General"), tr("Web"), tr("Debug"), tr("Game List")}}, +         {tr("System"), {tr("System"), tr("Audio")}}, +         {tr("Graphics"), {tr("Graphics")}}, +         {tr("Controls"), {tr("Input")}}}}; + +    for (const auto& entry : items) { +        auto* const item = new QListWidgetItem(entry.first); +        item->setData(Qt::UserRole, entry.second); + +        ui->selectorList->addItem(item); +    } +} + +void ConfigureDialog::UpdateVisibleTabs() { +    const auto items = ui->selectorList->selectedItems(); +    if (items.isEmpty()) +        return; + +    const std::map<QString, QWidget*> widgets = { +        {tr("General"), ui->generalTab}, {tr("System"), ui->systemTab}, +        {tr("Input"), ui->inputTab},     {tr("Graphics"), ui->graphicsTab}, +        {tr("Audio"), ui->audioTab},     {tr("Debug"), ui->debugTab}, +        {tr("Web"), ui->webTab},         {tr("Game List"), ui->gameListTab}}; + +    ui->tabWidget->clear(); + +    const QStringList tabs = items[0]->data(Qt::UserRole).toStringList(); + +    for (const auto& tab : tabs) +        ui->tabWidget->addTab(widgets.find(tab)->second, tab); +} diff --git a/src/yuzu/configuration/configure_dialog.h b/src/yuzu/configuration/configure_dialog.h index f6df7b827..243d9fa09 100644 --- a/src/yuzu/configuration/configure_dialog.h +++ b/src/yuzu/configuration/configure_dialog.h @@ -24,6 +24,8 @@ public:  private:      void setConfiguration(); +    void UpdateVisibleTabs(); +    void PopulateSelectionList();      std::unique_ptr<Ui::ConfigureDialog> ui;  }; diff --git a/src/yuzu/configuration/configure_input_simple.cpp b/src/yuzu/configuration/configure_input_simple.cpp index b4f3724bd..07d71e9d1 100644 --- a/src/yuzu/configuration/configure_input_simple.cpp +++ b/src/yuzu/configuration/configure_input_simple.cpp @@ -3,12 +3,8 @@  // Refer to the license.txt file included.  #include <array> -#include <cstring> -#include <functional>  #include <tuple> -#include <QDialog> -  #include "ui_configure_input_simple.h"  #include "yuzu/configuration/configure_input.h"  #include "yuzu/configuration/configure_input_player.h" @@ -73,20 +69,18 @@ void DualJoyconsDockedOnProfileSelect() {  // Name, OnProfileSelect (called when selected in drop down), OnConfigure (called when configure  // is clicked) -using InputProfile = -    std::tuple<QString, std::function<void()>, std::function<void(ConfigureInputSimple*)>>; +using InputProfile = std::tuple<const char*, void (*)(), void (*)(ConfigureInputSimple*)>; -const std::array<InputProfile, 3> INPUT_PROFILES{{ -    {ConfigureInputSimple::tr("Single Player - Handheld - Undocked"), HandheldOnProfileSelect, +constexpr std::array<InputProfile, 3> INPUT_PROFILES{{ +    {QT_TR_NOOP("Single Player - Handheld - Undocked"), HandheldOnProfileSelect,       [](ConfigureInputSimple* caller) {           CallConfigureDialog<ConfigureInputPlayer>(caller, HANDHELD_INDEX, false);       }}, -    {ConfigureInputSimple::tr("Single Player - Dual Joycons - Docked"), -     DualJoyconsDockedOnProfileSelect, +    {QT_TR_NOOP("Single Player - Dual Joycons - Docked"), DualJoyconsDockedOnProfileSelect,       [](ConfigureInputSimple* caller) {           CallConfigureDialog<ConfigureInputPlayer>(caller, 1, false);       }}, -    {ConfigureInputSimple::tr("Custom"), [] {}, CallConfigureDialog<ConfigureInput>}, +    {QT_TR_NOOP("Custom"), [] {}, CallConfigureDialog<ConfigureInput>},  }};  } // namespace @@ -101,7 +95,8 @@ ConfigureInputSimple::ConfigureInputSimple(QWidget* parent)      ui->setupUi(this);      for (const auto& profile : INPUT_PROFILES) { -        ui->profile_combobox->addItem(std::get<0>(profile), std::get<0>(profile)); +        const QString label = tr(std::get<0>(profile)); +        ui->profile_combobox->addItem(label, label);      }      connect(ui->profile_combobox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, diff --git a/src/yuzu/configuration/configure_per_general.cpp b/src/yuzu/configuration/configure_per_general.cpp index 80109b434..e13d2eac8 100644 --- a/src/yuzu/configuration/configure_per_general.cpp +++ b/src/yuzu/configuration/configure_per_general.cpp @@ -47,8 +47,8 @@ ConfigurePerGameGeneral::ConfigurePerGameGeneral(QWidget* parent, u64 title_id)      tree_view->setContextMenuPolicy(Qt::NoContextMenu);      item_model->insertColumns(0, 2); -    item_model->setHeaderData(0, Qt::Horizontal, "Patch Name"); -    item_model->setHeaderData(1, Qt::Horizontal, "Version"); +    item_model->setHeaderData(0, Qt::Horizontal, tr("Patch Name")); +    item_model->setHeaderData(1, Qt::Horizontal, tr("Version"));      // We must register all custom types with the Qt Automoc system so that we are able to use it      // with signals/slots. In this case, QList falls under the umbrells of custom types. @@ -108,9 +108,9 @@ void ConfigurePerGameGeneral::loadConfiguration() {          if (loader->ReadTitle(title) == Loader::ResultStatus::Success)              ui->display_name->setText(QString::fromStdString(title)); -        std::string developer; -        if (loader->ReadDeveloper(developer) == Loader::ResultStatus::Success) -            ui->display_developer->setText(QString::fromStdString(developer)); +        FileSys::NACP nacp; +        if (loader->ReadControlData(nacp) == Loader::ResultStatus::Success) +            ui->display_developer->setText(QString::fromStdString(nacp.GetDeveloperName()));          ui->display_version->setText(QStringLiteral("1.0.0"));      } @@ -120,7 +120,7 @@ void ConfigurePerGameGeneral::loadConfiguration() {          QPixmap map;          const auto bytes = control.second->ReadAllBytes(); -        map.loadFromData(bytes.data(), bytes.size()); +        map.loadFromData(bytes.data(), static_cast<u32>(bytes.size()));          scene->addPixmap(map.scaled(ui->icon_view->width(), ui->icon_view->height(),                                      Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); @@ -130,7 +130,7 @@ void ConfigurePerGameGeneral::loadConfiguration() {              scene->clear();              QPixmap map; -            map.loadFromData(bytes.data(), bytes.size()); +            map.loadFromData(bytes.data(), static_cast<u32>(bytes.size()));              scene->addPixmap(map.scaled(ui->icon_view->width(), ui->icon_view->height(),                                          Qt::IgnoreAspectRatio, Qt::SmoothTransformation));  | 
