summaryrefslogtreecommitdiff
path: root/src/instancemanagerdialog.h
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2020-11-06 13:56:04 -0500
committerisanae <14251494+isanae@users.noreply.github.com>2020-11-07 20:16:25 -0500
commitdc2ada2a4249917f538938298deb193ed1dd6bb9 (patch)
tree9f5564aae12004e4a55ed63f1ce294c0c75d7816 /src/instancemanagerdialog.h
parentb7cb63ddb1e2b263d5e485c97faea527c7c0af44 (diff)
added ... to the "Delete Instance" button to make it less scary
merged InstanceInfo into Instance, most of it was redundant added logging before deleting instance added Instance::readFromIni(), contains stuff that used to be in setup(), used by instance dialog replaced QDir with QString in a few places, I hate QDir
Diffstat (limited to 'src/instancemanagerdialog.h')
-rw-r--r--src/instancemanagerdialog.h80
1 files changed, 73 insertions, 7 deletions
diff --git a/src/instancemanagerdialog.h b/src/instancemanagerdialog.h
index 5b08ffc2..94f379ca 100644
--- a/src/instancemanagerdialog.h
+++ b/src/instancemanagerdialog.h
@@ -6,9 +6,11 @@
namespace Ui { class InstanceManagerDialog; };
-class InstanceInfo;
+class Instance;
class PluginContainer;
+// a dialog to manage existing instances
+//
class InstanceManagerDialog : public QDialog
{
Q_OBJECT
@@ -19,21 +21,61 @@ public:
~InstanceManagerDialog();
+ // selects the instance having the given index in the list
+ //
void select(std::size_t i);
+
+ // selects the instance by name
+ //
void select(const QString& name);
+
+ // select the instance that is currently in use in MO
+ //
void selectActiveInstance();
+
+ // switches to the selected instance; restarts MO, unless
+ // was called setRestartOnSelect(false)
+ //
void openSelectedInstance();
+
+ // renames the currently selected instance
+ //
void rename();
+
+ // explores the directory of the selected instance
+ //
void exploreLocation();
+
+ // explores the base directory of the selected instance
+ //
void exploreBaseDirectory();
+
+ // explores the game directory of the selected instance
+ //
void exploreGame();
+
+ // converts the selected, portable instance to a global one; not implemented
+ //
void convertToGlobal();
+
+ // converts the selected, global instance to a portable one; not implemented
+ //
void convertToPortable();
+
+ // opens the ini of the selected instance in the shell
+ //
void openINI();
+
+ // deletes the selected instance
+ //
void deleteInstance();
+
+ // sets whether the dialog should restart MO when selecting an instance; this
+ // is false on startup when no instances exist
+ //
void setRestartOnSelect(bool b);
private:
@@ -41,27 +83,51 @@ private:
std::unique_ptr<Ui::InstanceManagerDialog> ui;
const PluginContainer& m_pc;
- std::vector<std::unique_ptr<InstanceInfo>> m_instances;
+ std::vector<std::unique_ptr<Instance>> m_instances;
MOBase::FilterWidget m_filter;
QStandardItemModel* m_model;
bool m_restartOnSelect;
+ // refreshes the list instances from disk
+ //
void updateInstances();
+ // updates the ui for the selected instance
+ //
void onSelection();
+
+ // opens the create instance dialog
+ //
void createNew();
+
+ // returns the index of selected instance, NoSelection if none
+ //
std::size_t singleSelectionIndex() const;
- InstanceInfo* singleSelection();
- const InstanceInfo* singleSelection() const;
+ // returns the InstanceInfo associated with the selected instance, null if
+ // none
+ //
+ const Instance* singleSelection() const;
+
+ // fills the instance list on the ui
+ //
void updateList();
- void fillData(const InstanceInfo& ii);
+
+ // fills the ui for the selected instance
+ //
+ void fillData(const Instance& ii);
+
+ // clears the ui when there's no selection
+ //
void clearData();
+
+ // enables/disables buttons like rename, explore...
+ //
void setButtonsEnabled(bool b);
- bool deletePortable(const InstanceInfo& ii);
- bool deleteGlobal(const InstanceInfo& ii);
+ // deletes the given files, returns false on error
+ //
bool doDelete(const QStringList& files, bool recycle);
};