1 // Copyright 2016 Citra 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 
9 #include <QList>
10 #include <QWidget>
11 
12 class QGraphicsScene;
13 class QStandardItem;
14 class QStandardItemModel;
15 class QTreeView;
16 class QVBoxLayout;
17 
18 namespace Service::Account {
19 class ProfileManager;
20 }
21 
22 namespace Ui {
23 class ConfigureProfileManager;
24 }
25 
26 class ConfigureProfileManager : public QWidget {
27     Q_OBJECT
28 
29 public:
30     explicit ConfigureProfileManager(QWidget* parent = nullptr);
31     ~ConfigureProfileManager() override;
32 
33     void ApplyConfiguration();
34 
35 private:
36     void changeEvent(QEvent* event) override;
37     void RetranslateUI();
38 
39     void SetConfiguration();
40 
41     void PopulateUserList();
42     void UpdateCurrentUser();
43 
44     void SelectUser(const QModelIndex& index);
45     void AddUser();
46     void RenameUser();
47     void DeleteUser();
48     void SetUserImage();
49 
50     QVBoxLayout* layout;
51     QTreeView* tree_view;
52     QStandardItemModel* item_model;
53     QGraphicsScene* scene;
54 
55     std::vector<QList<QStandardItem*>> list_items;
56 
57     std::unique_ptr<Ui::ConfigureProfileManager> ui;
58     bool enabled = false;
59 
60     std::unique_ptr<Service::Account::ProfileManager> profile_manager;
61 };
62