diff options
Diffstat (limited to 'src/yuzu/configuration')
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 111 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_audio.h | 5 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_debug.h | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_dialog.h | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_gamelist.h | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_general.h | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_graphics.h | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_input.h | 1 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_per_general.cpp | 170 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_per_general.h | 50 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_per_general.ui | 276 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_web.h | 5 | 
13 files changed, 576 insertions, 57 deletions
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 83ebbd1fe..eb2077b0f 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -206,60 +206,57 @@ const std::array<int, Settings::NativeKeyboard::NumKeyboardMods> Config::default  void Config::ReadPlayerValues() {      for (std::size_t p = 0; p < Settings::values.players.size(); ++p) { -        Settings::values.players[p].connected = -            qt_config->value(QString("player_%1_connected").arg(p), false).toBool(); +        auto& player = Settings::values.players[p]; -        Settings::values.players[p].type = static_cast<Settings::ControllerType>( +        player.connected = qt_config->value(QString("player_%1_connected").arg(p), false).toBool(); + +        player.type = static_cast<Settings::ControllerType>(              qt_config                  ->value(QString("player_%1_type").arg(p),                          static_cast<u8>(Settings::ControllerType::DualJoycon))                  .toUInt()); -        Settings::values.players[p].body_color_left = -            qt_config -                ->value(QString("player_%1_body_color_left").arg(p), -                        Settings::JOYCON_BODY_NEON_BLUE) -                .toUInt(); -        Settings::values.players[p].body_color_right = -            qt_config -                ->value(QString("player_%1_body_color_right").arg(p), -                        Settings::JOYCON_BODY_NEON_RED) -                .toUInt(); -        Settings::values.players[p].button_color_left = -            qt_config -                ->value(QString("player_%1_button_color_left").arg(p), -                        Settings::JOYCON_BUTTONS_NEON_BLUE) -                .toUInt(); -        Settings::values.players[p].button_color_right = -            qt_config -                ->value(QString("player_%1_button_color_right").arg(p), -                        Settings::JOYCON_BUTTONS_NEON_RED) -                .toUInt(); +        player.body_color_left = qt_config +                                     ->value(QString("player_%1_body_color_left").arg(p), +                                             Settings::JOYCON_BODY_NEON_BLUE) +                                     .toUInt(); +        player.body_color_right = qt_config +                                      ->value(QString("player_%1_body_color_right").arg(p), +                                              Settings::JOYCON_BODY_NEON_RED) +                                      .toUInt(); +        player.button_color_left = qt_config +                                       ->value(QString("player_%1_button_color_left").arg(p), +                                               Settings::JOYCON_BUTTONS_NEON_BLUE) +                                       .toUInt(); +        player.button_color_right = qt_config +                                        ->value(QString("player_%1_button_color_right").arg(p), +                                                Settings::JOYCON_BUTTONS_NEON_RED) +                                        .toUInt();          for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) {              std::string default_param = InputCommon::GenerateKeyboardParam(default_buttons[i]); -            Settings::values.players[p].buttons[i] = +            player.buttons[i] =                  qt_config                      ->value(QString("player_%1_").arg(p) + Settings::NativeButton::mapping[i],                              QString::fromStdString(default_param))                      .toString()                      .toStdString(); -            if (Settings::values.players[p].buttons[i].empty()) -                Settings::values.players[p].buttons[i] = default_param; +            if (player.buttons[i].empty()) +                player.buttons[i] = default_param;          }          for (int i = 0; i < Settings::NativeAnalog::NumAnalogs; ++i) {              std::string default_param = InputCommon::GenerateAnalogParamFromKeys(                  default_analogs[i][0], default_analogs[i][1], default_analogs[i][2],                  default_analogs[i][3], default_analogs[i][4], 0.5f); -            Settings::values.players[p].analogs[i] = +            player.analogs[i] =                  qt_config                      ->value(QString("player_%1_").arg(p) + Settings::NativeAnalog::mapping[i],                              QString::fromStdString(default_param))                      .toString()                      .toStdString(); -            if (Settings::values.players[p].analogs[i].empty()) -                Settings::values.players[p].analogs[i] = default_param; +            if (player.analogs[i].empty()) +                player.analogs[i] = default_param;          }      } @@ -444,6 +441,21 @@ void Config::ReadValues() {      Settings::values.yuzu_token = qt_config->value("yuzu_token").toString().toStdString();      qt_config->endGroup(); +    const auto size = qt_config->beginReadArray("DisabledAddOns"); +    for (int i = 0; i < size; ++i) { +        qt_config->setArrayIndex(i); +        const auto title_id = qt_config->value("title_id", 0).toULongLong(); +        std::vector<std::string> out; +        const auto d_size = qt_config->beginReadArray("disabled"); +        for (int j = 0; j < d_size; ++j) { +            qt_config->setArrayIndex(j); +            out.push_back(qt_config->value("d", "").toString().toStdString()); +        } +        qt_config->endArray(); +        Settings::values.disabled_addons.insert_or_assign(title_id, out); +    } +    qt_config->endArray(); +      qt_config->beginGroup("UI");      UISettings::values.theme = qt_config->value("theme", UISettings::themes[0].second).toString();      UISettings::values.enable_discord_presence = @@ -511,30 +523,28 @@ void Config::ReadValues() {  }  void Config::SavePlayerValues() { -    for (int p = 0; p < Settings::values.players.size(); ++p) { -        qt_config->setValue(QString("player_%1_connected").arg(p), -                            Settings::values.players[p].connected); -        qt_config->setValue(QString("player_%1_type").arg(p), -                            static_cast<u8>(Settings::values.players[p].type)); - -        qt_config->setValue(QString("player_%1_body_color_left").arg(p), -                            Settings::values.players[p].body_color_left); -        qt_config->setValue(QString("player_%1_body_color_right").arg(p), -                            Settings::values.players[p].body_color_right); +    for (std::size_t p = 0; p < Settings::values.players.size(); ++p) { +        const auto& player = Settings::values.players[p]; + +        qt_config->setValue(QString("player_%1_connected").arg(p), player.connected); +        qt_config->setValue(QString("player_%1_type").arg(p), static_cast<u8>(player.type)); + +        qt_config->setValue(QString("player_%1_body_color_left").arg(p), player.body_color_left); +        qt_config->setValue(QString("player_%1_body_color_right").arg(p), player.body_color_right);          qt_config->setValue(QString("player_%1_button_color_left").arg(p), -                            Settings::values.players[p].button_color_left); +                            player.button_color_left);          qt_config->setValue(QString("player_%1_button_color_right").arg(p), -                            Settings::values.players[p].button_color_right); +                            player.button_color_right);          for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) {              qt_config->setValue(QString("player_%1_").arg(p) +                                      QString::fromStdString(Settings::NativeButton::mapping[i]), -                                QString::fromStdString(Settings::values.players[p].buttons[i])); +                                QString::fromStdString(player.buttons[i]));          }          for (int i = 0; i < Settings::NativeAnalog::NumAnalogs; ++i) {              qt_config->setValue(QString("player_%1_").arg(p) +                                      QString::fromStdString(Settings::NativeAnalog::mapping[i]), -                                QString::fromStdString(Settings::values.players[p].analogs[i])); +                                QString::fromStdString(player.analogs[i]));          }      }  } @@ -650,6 +660,21 @@ void Config::SaveValues() {      qt_config->setValue("yuzu_token", QString::fromStdString(Settings::values.yuzu_token));      qt_config->endGroup(); +    qt_config->beginWriteArray("DisabledAddOns"); +    int i = 0; +    for (const auto& elem : Settings::values.disabled_addons) { +        qt_config->setArrayIndex(i); +        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->setValue("d", QString::fromStdString(elem.second[j])); +        } +        qt_config->endArray(); +        ++i; +    } +    qt_config->endArray(); +      qt_config->beginGroup("UI");      qt_config->setValue("theme", UISettings::values.theme);      qt_config->setValue("enable_discord_presence", UISettings::values.enable_discord_presence); diff --git a/src/yuzu/configuration/configure_audio.h b/src/yuzu/configuration/configure_audio.h index 207f9dfb3..8771421c0 100644 --- a/src/yuzu/configuration/configure_audio.h +++ b/src/yuzu/configuration/configure_audio.h @@ -16,15 +16,14 @@ class ConfigureAudio : public QWidget {  public:      explicit ConfigureAudio(QWidget* parent = nullptr); -    ~ConfigureAudio(); +    ~ConfigureAudio() override;      void applyConfiguration();      void retranslateUi(); -public slots: +private:      void updateAudioDevices(int sink_index); -private:      void setConfiguration();      void setOutputSinkFromSinkID();      void setAudioDeviceFromDeviceID(); diff --git a/src/yuzu/configuration/configure_debug.h b/src/yuzu/configuration/configure_debug.h index d167eb996..c6420b18c 100644 --- a/src/yuzu/configuration/configure_debug.h +++ b/src/yuzu/configuration/configure_debug.h @@ -16,13 +16,12 @@ class ConfigureDebug : public QWidget {  public:      explicit ConfigureDebug(QWidget* parent = nullptr); -    ~ConfigureDebug(); +    ~ConfigureDebug() override;      void applyConfiguration();  private:      void setConfiguration(); -private:      std::unique_ptr<Ui::ConfigureDebug> ui;  }; diff --git a/src/yuzu/configuration/configure_dialog.h b/src/yuzu/configuration/configure_dialog.h index bbbdacc29..f6df7b827 100644 --- a/src/yuzu/configuration/configure_dialog.h +++ b/src/yuzu/configuration/configure_dialog.h @@ -18,13 +18,12 @@ class ConfigureDialog : public QDialog {  public:      explicit ConfigureDialog(QWidget* parent, const HotkeyRegistry& registry); -    ~ConfigureDialog(); +    ~ConfigureDialog() override;      void applyConfiguration();  private:      void setConfiguration(); -private:      std::unique_ptr<Ui::ConfigureDialog> ui;  }; diff --git a/src/yuzu/configuration/configure_gamelist.h b/src/yuzu/configuration/configure_gamelist.h index bbf7e25f1..bf3f1cdfa 100644 --- a/src/yuzu/configuration/configure_gamelist.h +++ b/src/yuzu/configuration/configure_gamelist.h @@ -16,7 +16,7 @@ class ConfigureGameList : public QWidget {  public:      explicit ConfigureGameList(QWidget* parent = nullptr); -    ~ConfigureGameList(); +    ~ConfigureGameList() override;      void applyConfiguration(); diff --git a/src/yuzu/configuration/configure_general.h b/src/yuzu/configuration/configure_general.h index 4770034cc..59738af40 100644 --- a/src/yuzu/configuration/configure_general.h +++ b/src/yuzu/configuration/configure_general.h @@ -18,7 +18,7 @@ class ConfigureGeneral : public QWidget {  public:      explicit ConfigureGeneral(QWidget* parent = nullptr); -    ~ConfigureGeneral(); +    ~ConfigureGeneral() override;      void PopulateHotkeyList(const HotkeyRegistry& registry);      void applyConfiguration(); diff --git a/src/yuzu/configuration/configure_graphics.h b/src/yuzu/configuration/configure_graphics.h index 9bda26fd6..d6ffc6fde 100644 --- a/src/yuzu/configuration/configure_graphics.h +++ b/src/yuzu/configuration/configure_graphics.h @@ -16,14 +16,13 @@ class ConfigureGraphics : public QWidget {  public:      explicit ConfigureGraphics(QWidget* parent = nullptr); -    ~ConfigureGraphics(); +    ~ConfigureGraphics() override;      void applyConfiguration();  private:      void setConfiguration(); -private:      std::unique_ptr<Ui::ConfigureGraphics> ui;      QColor bg_color;  }; diff --git a/src/yuzu/configuration/configure_input.cpp b/src/yuzu/configuration/configure_input.cpp index 0527d098c..830d26115 100644 --- a/src/yuzu/configuration/configure_input.cpp +++ b/src/yuzu/configuration/configure_input.cpp @@ -88,6 +88,8 @@ ConfigureInput::ConfigureInput(QWidget* parent)              [this] { CallConfigureDialog<ConfigureTouchscreenAdvanced>(*this); });  } +ConfigureInput::~ConfigureInput() = default; +  void ConfigureInput::OnDockedModeChanged(bool last_state, bool new_state) {      if (ui->use_docked_mode->isChecked() && ui->handheld_connected->isChecked()) {          ui->handheld_connected->setChecked(false); diff --git a/src/yuzu/configuration/configure_input.h b/src/yuzu/configuration/configure_input.h index e8723dfcb..1649e4c0b 100644 --- a/src/yuzu/configuration/configure_input.h +++ b/src/yuzu/configuration/configure_input.h @@ -25,6 +25,7 @@ class ConfigureInput : public QWidget {  public:      explicit ConfigureInput(QWidget* parent = nullptr); +    ~ConfigureInput() override;      /// Save all button configurations to settings file      void applyConfiguration(); diff --git a/src/yuzu/configuration/configure_per_general.cpp b/src/yuzu/configuration/configure_per_general.cpp new file mode 100644 index 000000000..80109b434 --- /dev/null +++ b/src/yuzu/configuration/configure_per_general.cpp @@ -0,0 +1,170 @@ +// Copyright 2016 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include <algorithm> +#include <memory> +#include <utility> + +#include <QHeaderView> +#include <QMenu> +#include <QMessageBox> +#include <QStandardItemModel> +#include <QString> +#include <QTimer> +#include <QTreeView> + +#include "core/file_sys/control_metadata.h" +#include "core/file_sys/patch_manager.h" +#include "core/file_sys/xts_archive.h" +#include "core/loader/loader.h" +#include "ui_configure_per_general.h" +#include "yuzu/configuration/config.h" +#include "yuzu/configuration/configure_input.h" +#include "yuzu/configuration/configure_per_general.h" +#include "yuzu/ui_settings.h" +#include "yuzu/util/util.h" + +ConfigurePerGameGeneral::ConfigurePerGameGeneral(QWidget* parent, u64 title_id) +    : QDialog(parent), ui(std::make_unique<Ui::ConfigurePerGameGeneral>()), title_id(title_id) { + +    ui->setupUi(this); +    setFocusPolicy(Qt::ClickFocus); +    setWindowTitle(tr("Properties")); + +    layout = new QVBoxLayout; +    tree_view = new QTreeView; +    item_model = new QStandardItemModel(tree_view); +    tree_view->setModel(item_model); +    tree_view->setAlternatingRowColors(true); +    tree_view->setSelectionMode(QHeaderView::SingleSelection); +    tree_view->setSelectionBehavior(QHeaderView::SelectRows); +    tree_view->setVerticalScrollMode(QHeaderView::ScrollPerPixel); +    tree_view->setHorizontalScrollMode(QHeaderView::ScrollPerPixel); +    tree_view->setSortingEnabled(true); +    tree_view->setEditTriggers(QHeaderView::NoEditTriggers); +    tree_view->setUniformRowHeights(true); +    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"); + +    // 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. +    qRegisterMetaType<QList<QStandardItem*>>("QList<QStandardItem*>"); + +    layout->setContentsMargins(0, 0, 0, 0); +    layout->setSpacing(0); +    layout->addWidget(tree_view); + +    ui->scrollArea->setLayout(layout); + +    scene = new QGraphicsScene; +    ui->icon_view->setScene(scene); + +    connect(item_model, &QStandardItemModel::itemChanged, +            [] { UISettings::values.is_game_list_reload_pending.exchange(true); }); + +    this->loadConfiguration(); +} + +ConfigurePerGameGeneral::~ConfigurePerGameGeneral() = default; + +void ConfigurePerGameGeneral::applyConfiguration() { +    std::vector<std::string> disabled_addons; + +    for (const auto& item : list_items) { +        const auto disabled = item.front()->checkState() == Qt::Unchecked; +        if (disabled) +            disabled_addons.push_back(item.front()->text().toStdString()); +    } + +    Settings::values.disabled_addons[title_id] = disabled_addons; +} + +void ConfigurePerGameGeneral::loadFromFile(FileSys::VirtualFile file) { +    this->file = std::move(file); +    this->loadConfiguration(); +} + +void ConfigurePerGameGeneral::loadConfiguration() { +    if (file == nullptr) +        return; + +    const auto loader = Loader::GetLoader(file); + +    ui->display_title_id->setText(fmt::format("{:016X}", title_id).c_str()); + +    FileSys::PatchManager pm{title_id}; +    const auto control = pm.GetControlMetadata(); + +    if (control.first != nullptr) { +        ui->display_version->setText(QString::fromStdString(control.first->GetVersionString())); +        ui->display_name->setText(QString::fromStdString(control.first->GetApplicationName())); +        ui->display_developer->setText(QString::fromStdString(control.first->GetDeveloperName())); +    } else { +        std::string title; +        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)); + +        ui->display_version->setText(QStringLiteral("1.0.0")); +    } + +    if (control.second != nullptr) { +        scene->clear(); + +        QPixmap map; +        const auto bytes = control.second->ReadAllBytes(); +        map.loadFromData(bytes.data(), bytes.size()); + +        scene->addPixmap(map.scaled(ui->icon_view->width(), ui->icon_view->height(), +                                    Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); +    } else { +        std::vector<u8> bytes; +        if (loader->ReadIcon(bytes) == Loader::ResultStatus::Success) { +            scene->clear(); + +            QPixmap map; +            map.loadFromData(bytes.data(), bytes.size()); + +            scene->addPixmap(map.scaled(ui->icon_view->width(), ui->icon_view->height(), +                                        Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); +        } +    } + +    FileSys::VirtualFile update_raw; +    loader->ReadUpdateRaw(update_raw); + +    const auto& disabled = Settings::values.disabled_addons[title_id]; + +    for (const auto& patch : pm.GetPatchVersionNames(update_raw)) { +        QStandardItem* first_item = new QStandardItem; +        const auto name = QString::fromStdString(patch.first).replace("[D] ", ""); +        first_item->setText(name); +        first_item->setCheckable(true); + +        const auto patch_disabled = +            std::find(disabled.begin(), disabled.end(), name.toStdString()) != disabled.end(); + +        first_item->setCheckState(patch_disabled ? Qt::Unchecked : Qt::Checked); + +        list_items.push_back(QList<QStandardItem*>{ +            first_item, new QStandardItem{QString::fromStdString(patch.second)}}); +        item_model->appendRow(list_items.back()); +    } + +    tree_view->setColumnWidth(0, 5 * tree_view->width() / 16); + +    ui->display_filename->setText(QString::fromStdString(file->GetName())); + +    ui->display_format->setText( +        QString::fromStdString(Loader::GetFileTypeString(loader->GetFileType()))); + +    const auto valueText = ReadableByteSize(file->GetSize()); +    ui->display_size->setText(valueText); +} diff --git a/src/yuzu/configuration/configure_per_general.h b/src/yuzu/configuration/configure_per_general.h new file mode 100644 index 000000000..a4494446c --- /dev/null +++ b/src/yuzu/configuration/configure_per_general.h @@ -0,0 +1,50 @@ +// Copyright 2016 Citra Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include <memory> +#include <vector> + +#include <QKeyEvent> +#include <QList> +#include <QWidget> + +#include "core/file_sys/vfs_types.h" + +class QTreeView; +class QGraphicsScene; +class QStandardItem; +class QStandardItemModel; + +namespace Ui { +class ConfigurePerGameGeneral; +} + +class ConfigurePerGameGeneral : public QDialog { +    Q_OBJECT + +public: +    explicit ConfigurePerGameGeneral(QWidget* parent, u64 title_id); +    ~ConfigurePerGameGeneral() override; + +    /// Save all button configurations to settings file +    void applyConfiguration(); + +    void loadFromFile(FileSys::VirtualFile file); + +private: +    std::unique_ptr<Ui::ConfigurePerGameGeneral> ui; +    FileSys::VirtualFile file; +    u64 title_id; + +    QVBoxLayout* layout; +    QTreeView* tree_view; +    QStandardItemModel* item_model; +    QGraphicsScene* scene; + +    std::vector<QList<QStandardItem*>> list_items; + +    void loadConfiguration(); +}; diff --git a/src/yuzu/configuration/configure_per_general.ui b/src/yuzu/configuration/configure_per_general.ui new file mode 100644 index 000000000..8fdd96fa4 --- /dev/null +++ b/src/yuzu/configuration/configure_per_general.ui @@ -0,0 +1,276 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>ConfigurePerGameGeneral</class> + <widget class="QDialog" name="ConfigurePerGameGeneral"> +  <property name="geometry"> +   <rect> +    <x>0</x> +    <y>0</y> +    <width>400</width> +    <height>520</height> +   </rect> +  </property> +  <property name="windowTitle"> +   <string>ConfigurePerGameGeneral</string> +  </property> +  <layout class="QHBoxLayout" name="HorizontalLayout"> +   <item> +    <layout class="QVBoxLayout" name="VerticalLayout"> +     <item> +      <widget class="QGroupBox" name="GeneralGroupBox"> +       <property name="title"> +        <string>Info</string> +       </property> +       <layout class="QHBoxLayout" name="GeneralHorizontalLayout"> +        <item> +         <layout class="QGridLayout" name="gridLayout_2"> +          <item row="6" column="1" colspan="2"> +           <widget class="QLineEdit" name="display_filename"> +            <property name="enabled"> +             <bool>true</bool> +            </property> +            <property name="readOnly"> +             <bool>true</bool> +            </property> +           </widget> +          </item> +          <item row="0" column="1"> +           <widget class="QLineEdit" name="display_name"> +            <property name="enabled"> +             <bool>true</bool> +            </property> +            <property name="readOnly"> +             <bool>true</bool> +            </property> +           </widget> +          </item> +          <item row="1" column="0"> +           <widget class="QLabel" name="label_2"> +            <property name="text"> +             <string>Developer</string> +            </property> +           </widget> +          </item> +          <item row="5" column="1" colspan="2"> +           <widget class="QLineEdit" name="display_size"> +            <property name="enabled"> +             <bool>true</bool> +            </property> +            <property name="readOnly"> +             <bool>true</bool> +            </property> +           </widget> +          </item> +          <item row="0" column="0"> +           <widget class="QLabel" name="label"> +            <property name="text"> +             <string>Name</string> +            </property> +           </widget> +          </item> +          <item row="6" column="0"> +           <widget class="QLabel" name="label_7"> +            <property name="text"> +             <string>Filename</string> +            </property> +           </widget> +          </item> +          <item row="2" column="0"> +           <widget class="QLabel" name="label_3"> +            <property name="text"> +             <string>Version</string> +            </property> +           </widget> +          </item> +          <item row="4" column="0"> +           <widget class="QLabel" name="label_5"> +            <property name="text"> +             <string>Format</string> +            </property> +           </widget> +          </item> +          <item row="2" column="1"> +           <widget class="QLineEdit" name="display_version"> +            <property name="enabled"> +             <bool>true</bool> +            </property> +            <property name="readOnly"> +             <bool>true</bool> +            </property> +           </widget> +          </item> +          <item row="4" column="1"> +           <widget class="QLineEdit" name="display_format"> +            <property name="enabled"> +             <bool>true</bool> +            </property> +            <property name="readOnly"> +             <bool>true</bool> +            </property> +           </widget> +          </item> +          <item row="5" column="0"> +           <widget class="QLabel" name="label_6"> +            <property name="text"> +             <string>Size</string> +            </property> +           </widget> +          </item> +          <item row="1" column="1"> +           <widget class="QLineEdit" name="display_developer"> +            <property name="enabled"> +             <bool>true</bool> +            </property> +            <property name="readOnly"> +             <bool>true</bool> +            </property> +           </widget> +          </item> +          <item row="3" column="0"> +           <widget class="QLabel" name="label_4"> +            <property name="text"> +             <string>Title ID</string> +            </property> +           </widget> +          </item> +          <item row="3" column="1"> +           <widget class="QLineEdit" name="display_title_id"> +            <property name="enabled"> +             <bool>true</bool> +            </property> +            <property name="readOnly"> +             <bool>true</bool> +            </property> +           </widget> +          </item> +          <item row="0" column="2" rowspan="5"> +           <widget class="QGraphicsView" name="icon_view"> +            <property name="sizePolicy"> +             <sizepolicy hsizetype="Maximum" vsizetype="Maximum"> +              <horstretch>0</horstretch> +              <verstretch>0</verstretch> +             </sizepolicy> +            </property> +            <property name="minimumSize"> +             <size> +              <width>128</width> +              <height>128</height> +             </size> +            </property> +            <property name="maximumSize"> +             <size> +              <width>128</width> +              <height>128</height> +             </size> +            </property> +            <property name="verticalScrollBarPolicy"> +             <enum>Qt::ScrollBarAlwaysOff</enum> +            </property> +            <property name="horizontalScrollBarPolicy"> +             <enum>Qt::ScrollBarAlwaysOff</enum> +            </property> +            <property name="sizeAdjustPolicy"> +             <enum>QAbstractScrollArea::AdjustToContents</enum> +            </property> +            <property name="interactive"> +             <bool>false</bool> +            </property> +           </widget> +          </item> +         </layout> +        </item> +       </layout> +      </widget> +     </item> +     <item> +      <widget class="QGroupBox" name="PerformanceGroupBox"> +       <property name="title"> +        <string>Add-Ons</string> +       </property> +       <layout class="QHBoxLayout" name="PerformanceHorizontalLayout"> +        <item> +         <widget class="QScrollArea" name="scrollArea"> +          <property name="widgetResizable"> +           <bool>true</bool> +          </property> +          <widget class="QWidget" name="scrollAreaWidgetContents"> +           <property name="geometry"> +            <rect> +             <x>0</x> +             <y>0</y> +             <width>350</width> +             <height>169</height> +            </rect> +           </property> +          </widget> +         </widget> +        </item> +        <item> +         <layout class="QVBoxLayout" name="PerformanceVerticalLayout"/> +        </item> +       </layout> +      </widget> +     </item> +     <item> +      <spacer name="verticalSpacer"> +       <property name="orientation"> +        <enum>Qt::Vertical</enum> +       </property> +       <property name="sizeType"> +        <enum>QSizePolicy::Fixed</enum> +       </property> +       <property name="sizeHint" stdset="0"> +        <size> +         <width>20</width> +         <height>40</height> +        </size> +       </property> +      </spacer> +     </item> +     <item> +      <widget class="QDialogButtonBox" name="buttonBox"> +       <property name="standardButtons"> +        <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> +       </property> +      </widget> +     </item> +    </layout> +   </item> +  </layout> + </widget> + <resources/> + <connections> +  <connection> +   <sender>buttonBox</sender> +   <signal>accepted()</signal> +   <receiver>ConfigurePerGameGeneral</receiver> +   <slot>accept()</slot> +   <hints> +    <hint type="sourcelabel"> +     <x>269</x> +     <y>567</y> +    </hint> +    <hint type="destinationlabel"> +     <x>269</x> +     <y>294</y> +    </hint> +   </hints> +  </connection> +  <connection> +   <sender>buttonBox</sender> +   <signal>rejected()</signal> +   <receiver>ConfigurePerGameGeneral</receiver> +   <slot>reject()</slot> +   <hints> +    <hint type="sourcelabel"> +     <x>269</x> +     <y>567</y> +    </hint> +    <hint type="destinationlabel"> +     <x>269</x> +     <y>294</y> +    </hint> +   </hints> +  </connection> + </connections> +</ui> diff --git a/src/yuzu/configuration/configure_web.h b/src/yuzu/configuration/configure_web.h index 7741ab95d..7752ae4a1 100644 --- a/src/yuzu/configuration/configure_web.h +++ b/src/yuzu/configuration/configure_web.h @@ -17,18 +17,17 @@ class ConfigureWeb : public QWidget {  public:      explicit ConfigureWeb(QWidget* parent = nullptr); -    ~ConfigureWeb(); +    ~ConfigureWeb() override;      void applyConfiguration();      void retranslateUi(); -public slots: +private:      void RefreshTelemetryID();      void OnLoginChanged();      void VerifyLogin();      void OnLoginVerified(); -private:      void setConfiguration();      bool user_verified = true;  | 
