summaryrefslogtreecommitdiff
path: root/src/editexecutablesdialog.h
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-06-09 11:38:44 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-06-15 14:40:40 -0400
commite86224ee7ffdb18b7c7d17bc2c5cef2457665103 (patch)
treeda8642f6d0ce7f82410361cd3aed5a7a511647c7 /src/editexecutablesdialog.h
parentd6d05dcae8d2b26aff5917449e38f9886bca65ba (diff)
moved commiting changes to EditExecutablesDialog itself instead of doing it from the main window
use a separate enabled state for custom overwrites and forced libraries, this remembers the values even when unchecking the checkbox, as long as the dialog stays opened pass the whole OrganizerCore to EditExecutablesDialog, simplifies a bunch of things
Diffstat (limited to 'src/editexecutablesdialog.h')
-rw-r--r--src/editexecutablesdialog.h39
1 files changed, 25 insertions, 14 deletions
diff --git a/src/editexecutablesdialog.h b/src/editexecutablesdialog.h
index 6e006ae2..4957ebff 100644
--- a/src/editexecutablesdialog.h
+++ b/src/editexecutablesdialog.h
@@ -34,7 +34,7 @@ namespace Ui {
}
class ModList;
-
+class OrganizerCore;
/** helper class to manage custom overwrites within the edit executables
* dialog
@@ -42,15 +42,22 @@ class ModList;
class CustomOverwrites
{
public:
+ struct Info
+ {
+ bool enabled;
+ QString modName;
+ };
+
void load(Profile* p, const ExecutablesList& exes);
- std::optional<QString> find(const QString& title) const;
+ std::optional<Info> find(const QString& title) const;
- void set(const QString& title, const QString& mod);
+ void setEnabled(const QString& title, bool b);
+ void setMod(const QString& title, const QString& mod);
void rename(const QString& oldTitle, const QString& newTitle);
void remove(const QString& title);
private:
- std::map<QString, QString> m_map;
+ std::map<QString, Info> m_map;
};
@@ -61,15 +68,22 @@ class ForcedLibraries
public:
using list_type = QList<MOBase::ExecutableForcedLoadSetting>;
+ struct Info
+ {
+ bool enabled;
+ list_type list;
+ };
+
void load(Profile* p, const ExecutablesList& exes);
- std::optional<list_type> find(const QString& title) const;
+ std::optional<Info> find(const QString& title) const;
- void set(const QString& title, const list_type& list);
+ void setEnabled(const QString& title, bool b);
+ void setList(const QString& title, const list_type& list);
void rename(const QString& oldTitle, const QString& newTitle);
void remove(const QString& title);
private:
- std::map<QString, list_type> m_map;
+ std::map<QString, Info> m_map;
};
@@ -85,9 +99,7 @@ public:
* @param executablesList current list of executables
* @param parent parent widget
**/
- explicit EditExecutablesDialog(
- const ExecutablesList &executablesList, const ModList &modList,
- Profile *profile, const MOBase::IPluginGame *game, QWidget *parent = 0);
+ explicit EditExecutablesDialog(OrganizerCore& oc, QWidget* parent=nullptr);
~EditExecutablesDialog();
@@ -115,15 +127,13 @@ private slots:
private:
std::unique_ptr<Ui::EditExecutablesDialog> ui;
+ OrganizerCore& m_organizerCore;
+ const ExecutablesList m_originalExecutables;
ExecutablesList m_executablesList;
CustomOverwrites m_customOverwrites;
ForcedLibraries m_forcedLibraries;
- Profile *m_profile;
- const MOBase::IPluginGame *m_gamePlugin;
bool m_settingUI;
- QListWidgetItem *m_currentItem;
-
QListWidgetItem* selectedItem();
Executable* selectedExe();
@@ -137,6 +147,7 @@ private:
void setJarBinary(const QString& binaryName);
std::optional<QString> makeNonConflictingTitle(const QString& prefix);
bool isTitleConflicting(const QString& s);
+ void commitChanges();
};
#endif // EDITEXECUTABLESDIALOG_H