1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
/*
Copyright (C) 2012 Sebastian Herbord. All rights reserved.
This file is part of Mod Organizer.
Mod Organizer is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Mod Organizer is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PROFILESDIALOG_H
#define PROFILESDIALOG_H
#include <QObject>
#include "tutorabledialog.h"
class QListWidget;
class QListWidgetItem;
class QString;
namespace Ui
{
class ProfilesDialog;
}
namespace MOBase
{
class IPluginGame;
}
class GameFeatures;
class Profile;
class OrganizerCore;
/**
* @brief Dialog that can be used to create/delete/modify profiles
**/
class ProfilesDialog : public MOBase::TutorableDialog
{
Q_OBJECT
public:
/**
* @brief constructor
*
* @param profileName currently enabled profile
* @param organizer
* @param parent parent widget
**/
explicit ProfilesDialog(const QString& profileName, OrganizerCore& organizer,
QWidget* parent = 0);
~ProfilesDialog();
// also saves and restores geometry
//
int exec() override;
/**
* @return true if creation of a new profile failed
* @todo the notion of a fail state makes little sense in the current dialog
**/
bool failed() const { return m_FailState; }
// if the dialog was closed with the 'select' button, returns the name of the
// selected profile; if the dialog was closed with 'cancel', returns empty
//
std::optional<QString> selectedProfile() const;
signals:
/**
* @brief Signal emitted when a profile is created.
*/
void profileCreated(Profile* profile);
/**
* @brief Signal emitted when a profile is renamed.
*/
void profileRenamed(Profile* profile, QString const& oldName, QString const& newName);
/**
* @brief Signal emitted when a profile has been removed.
*/
void profileRemoved(QString const& profileName);
protected:
virtual void showEvent(QShowEvent* event);
private slots:
void on_localIniFilesBox_stateChanged(int state);
private:
QListWidgetItem* addItem(const QString& name);
void createProfile(const QString& name, bool useDefaultSettings);
void createProfile(const QString& name, const Profile& reference);
private slots:
void on_close_clicked();
void on_select_clicked();
void on_addProfileButton_clicked();
void on_invalidationBox_stateChanged(int arg1);
void on_copyProfileButton_clicked();
void on_profilesList_currentItemChanged(QListWidgetItem* current,
QListWidgetItem* previous);
void on_profilesList_itemActivated(QListWidgetItem* item);
void on_removeProfileButton_clicked();
void on_localSavesBox_stateChanged(int arg1);
void on_transferButton_clicked();
void on_renameButton_clicked();
private:
Ui::ProfilesDialog* ui;
GameFeatures& m_GameFeatures;
QListWidget* m_ProfilesList;
bool m_FailState;
MOBase::IPluginGame const* m_Game;
QString m_ActiveProfileName;
std::optional<QString> m_Selected;
};
#endif // PROFILESDIALOG_H
|