diff options
Diffstat (limited to 'src/citron/applets/qt_profile_select.h')
-rw-r--r-- | src/citron/applets/qt_profile_select.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/src/citron/applets/qt_profile_select.h b/src/citron/applets/qt_profile_select.h new file mode 100644 index 000000000..607f1777c --- /dev/null +++ b/src/citron/applets/qt_profile_select.h @@ -0,0 +1,87 @@ +// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include <vector> +#include <QDialog> +#include <QList> +#include "core/frontend/applets/profile_select.h" + +class ControllerNavigation; +class GMainWindow; +class QDialogButtonBox; +class QGraphicsScene; +class QLabel; +class QScrollArea; +class QStandardItem; +class QStandardItemModel; +class QTreeView; +class QVBoxLayout; + +namespace Core { +class System; +} + +namespace Service::Account { +class ProfileManager; +} + +class QtProfileSelectionDialog final : public QDialog { + Q_OBJECT + +public: + explicit QtProfileSelectionDialog(Core::System& system, QWidget* parent, + const Core::Frontend::ProfileSelectParameters& parameters); + ~QtProfileSelectionDialog() override; + + int exec() override; + void accept() override; + void reject() override; + + int GetIndex() const; + +private: + void SelectUser(const QModelIndex& index); + + void SetWindowTitle(const Core::Frontend::ProfileSelectParameters& parameters); + void SetDialogPurpose(const Core::Frontend::ProfileSelectParameters& parameters); + + int user_index = 0; + + QVBoxLayout* layout; + QTreeView* tree_view; + QStandardItemModel* item_model; + QGraphicsScene* scene; + + std::vector<QList<QStandardItem*>> list_items; + + QVBoxLayout* outer_layout; + QLabel* instruction_label; + QScrollArea* scroll_area; + QDialogButtonBox* buttons; + + Service::Account::ProfileManager& profile_manager; + ControllerNavigation* controller_navigation = nullptr; +}; + +class QtProfileSelector final : public QObject, public Core::Frontend::ProfileSelectApplet { + Q_OBJECT + +public: + explicit QtProfileSelector(GMainWindow& parent); + ~QtProfileSelector() override; + + void Close() const override; + void SelectProfile(SelectProfileCallback callback_, + const Core::Frontend::ProfileSelectParameters& parameters) const override; + +signals: + void MainWindowSelectProfile(const Core::Frontend::ProfileSelectParameters& parameters) const; + void MainWindowRequestExit() const; + +private: + void MainWindowFinishedSelection(std::optional<Common::UUID> uuid); + + mutable SelectProfileCallback callback; +}; |