diff options
Diffstat (limited to 'src/yuzu/configuration')
| -rw-r--r-- | src/yuzu/configuration/configure_profile_manager.cpp | 67 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_profile_manager.h | 27 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_profile_manager.ui | 6 | 
3 files changed, 89 insertions, 11 deletions
| diff --git a/src/yuzu/configuration/configure_profile_manager.cpp b/src/yuzu/configuration/configure_profile_manager.cpp index 5c0217ba8..a47089988 100644 --- a/src/yuzu/configuration/configure_profile_manager.cpp +++ b/src/yuzu/configuration/configure_profile_manager.cpp @@ -2,6 +2,9 @@  // SPDX-License-Identifier: GPL-2.0-or-later  #include <algorithm> +#include <functional> +#include <QDialog> +#include <QDialogButtonBox>  #include <QFileDialog>  #include <QGraphicsItem>  #include <QHeaderView> @@ -108,9 +111,12 @@ ConfigureProfileManager::ConfigureProfileManager(const Core::System& system_, QW      connect(ui->pm_add, &QPushButton::clicked, this, &ConfigureProfileManager::AddUser);      connect(ui->pm_rename, &QPushButton::clicked, this, &ConfigureProfileManager::RenameUser); -    connect(ui->pm_remove, &QPushButton::clicked, this, &ConfigureProfileManager::DeleteUser); +    connect(ui->pm_remove, &QPushButton::clicked, this, +            &ConfigureProfileManager::ConfirmDeleteUser);      connect(ui->pm_set_image, &QPushButton::clicked, this, &ConfigureProfileManager::SetUserImage); +    confirm_dialog = new ConfigureProfileManagerDeleteDialog(this); +      scene = new QGraphicsScene;      ui->current_user_icon->setScene(scene); @@ -230,26 +236,23 @@ void ConfigureProfileManager::RenameUser() {      UpdateCurrentUser();  } -void ConfigureProfileManager::DeleteUser() { +void ConfigureProfileManager::ConfirmDeleteUser() {      const auto index = tree_view->currentIndex().row();      const auto uuid = profile_manager->GetUser(index);      ASSERT(uuid);      const auto username = GetAccountUsername(*profile_manager, *uuid); -    const auto confirm = QMessageBox::question( -        this, tr("Confirm Delete"), -        tr("You are about to delete user with name \"%1\". Are you sure?").arg(username)); - -    if (confirm == QMessageBox::No) { -        return; -    } +    confirm_dialog->SetInfo(username, *uuid, [this, uuid]() { DeleteUser(*uuid); }); +    confirm_dialog->show(); +} +void ConfigureProfileManager::DeleteUser(const Common::UUID& uuid) {      if (Settings::values.current_user.GetValue() == tree_view->currentIndex().row()) {          Settings::values.current_user = 0;      }      UpdateCurrentUser(); -    if (!profile_manager->RemoveUser(*uuid)) { +    if (!profile_manager->RemoveUser(uuid)) {          return;      } @@ -319,3 +322,47 @@ void ConfigureProfileManager::SetUserImage() {                          new QStandardItem{GetIcon(*uuid), FormatUserEntryText(username, *uuid)});      UpdateCurrentUser();  } + +ConfigureProfileManagerDeleteDialog::ConfigureProfileManagerDeleteDialog(QWidget* parent) +    : QDialog{parent} { +    auto dialog_vbox_layout = new QVBoxLayout(this); +    dialog_button_box = +        new QDialogButtonBox(QDialogButtonBox::Yes | QDialogButtonBox::No, Qt::Horizontal, parent); +    auto label_message = +        new QLabel(tr("Delete this user? All of the user's save data will be deleted."), this); +    label_info = new QLabel(this); +    auto dialog_hbox_layout_widget = new QWidget(this); +    auto dialog_hbox_layout = new QHBoxLayout(dialog_hbox_layout_widget); +    icon_scene = new QGraphicsScene(0, 0, 64, 64, this); +    auto icon_view = new QGraphicsView(icon_scene, this); + +    dialog_hbox_layout_widget->setLayout(dialog_hbox_layout); +    icon_view->setMaximumSize(64, 64); +    icon_view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); +    icon_view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); +    this->setLayout(dialog_vbox_layout); +    this->setWindowTitle(tr("Confirm Delete")); +    this->setSizeGripEnabled(false); +    dialog_vbox_layout->addWidget(label_message); +    dialog_vbox_layout->addWidget(dialog_hbox_layout_widget); +    dialog_vbox_layout->addWidget(dialog_button_box); +    dialog_hbox_layout->addWidget(icon_view); +    dialog_hbox_layout->addWidget(label_info); + +    connect(dialog_button_box, &QDialogButtonBox::rejected, this, [this]() { close(); }); +} + +ConfigureProfileManagerDeleteDialog::~ConfigureProfileManagerDeleteDialog() = default; + +void ConfigureProfileManagerDeleteDialog::SetInfo(const QString& username, const Common::UUID& uuid, +                                                  std::function<void()> accept_callback) { +    label_info->setText( +        tr("Name: %1\nUUID: %2").arg(username, QString::fromStdString(uuid.FormattedString()))); +    icon_scene->clear(); +    icon_scene->addPixmap(GetIcon(uuid)); + +    connect(dialog_button_box, &QDialogButtonBox::accepted, this, [this, accept_callback]() { +        close(); +        accept_callback(); +    }); +} diff --git a/src/yuzu/configuration/configure_profile_manager.h b/src/yuzu/configuration/configure_profile_manager.h index fe9033779..c4b1a334e 100644 --- a/src/yuzu/configuration/configure_profile_manager.h +++ b/src/yuzu/configuration/configure_profile_manager.h @@ -3,16 +3,24 @@  #pragma once +#include <functional>  #include <memory> +#include <QDialog>  #include <QList>  #include <QWidget> +namespace Common { +struct UUID; +} +  namespace Core {  class System;  }  class QGraphicsScene; +class QDialogButtonBox; +class QLabel;  class QStandardItem;  class QStandardItemModel;  class QTreeView; @@ -26,6 +34,20 @@ namespace Ui {  class ConfigureProfileManager;  } +class ConfigureProfileManagerDeleteDialog : public QDialog { +public: +    explicit ConfigureProfileManagerDeleteDialog(QWidget* parent); +    ~ConfigureProfileManagerDeleteDialog(); + +    void SetInfo(const QString& username, const Common::UUID& uuid, +                 std::function<void()> accept_callback); + +private: +    QDialogButtonBox* dialog_button_box; +    QGraphicsScene* icon_scene; +    QLabel* label_info; +}; +  class ConfigureProfileManager : public QWidget {      Q_OBJECT @@ -47,7 +69,8 @@ private:      void SelectUser(const QModelIndex& index);      void AddUser();      void RenameUser(); -    void DeleteUser(); +    void ConfirmDeleteUser(); +    void DeleteUser(const Common::UUID& uuid);      void SetUserImage();      QVBoxLayout* layout; @@ -55,6 +78,8 @@ private:      QStandardItemModel* item_model;      QGraphicsScene* scene; +    ConfigureProfileManagerDeleteDialog* confirm_dialog; +      std::vector<QList<QStandardItem*>> list_items;      std::unique_ptr<Ui::ConfigureProfileManager> ui; diff --git a/src/yuzu/configuration/configure_profile_manager.ui b/src/yuzu/configuration/configure_profile_manager.ui index cfe7478c8..bd6dea4f4 100644 --- a/src/yuzu/configuration/configure_profile_manager.ui +++ b/src/yuzu/configuration/configure_profile_manager.ui @@ -57,6 +57,12 @@                <height>48</height>               </size>              </property> +            <property name="frameShape"> +             <enum>QFrame::NoFrame</enum> +            </property> +            <property name="frameShadow"> +             <enum>QFrame::Plain</enum> +            </property>              <property name="verticalScrollBarPolicy">               <enum>Qt::ScrollBarAlwaysOff</enum>              </property> | 
