diff options
author | Petr Mrázek <peterix@gmail.com> | 2016-10-03 00:55:54 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2016-10-26 18:21:24 +0200 |
commit | d66fdcd4cc6913508d2987c14cd9fc4d6760b8a5 (patch) | |
tree | 4f385106ce732d4f7338feab5391f2a06c68a0e6 /api/logic/BaseInstanceProvider.h | |
parent | bbe139dce51a7965394c800cac974946820d3869 (diff) | |
download | MultiMC-d66fdcd4cc6913508d2987c14cd9fc4d6760b8a5.tar MultiMC-d66fdcd4cc6913508d2987c14cd9fc4d6760b8a5.tar.gz MultiMC-d66fdcd4cc6913508d2987c14cd9fc4d6760b8a5.tar.lz MultiMC-d66fdcd4cc6913508d2987c14cd9fc4d6760b8a5.tar.xz MultiMC-d66fdcd4cc6913508d2987c14cd9fc4d6760b8a5.zip |
NOISSUE Granular instance reload
Diffstat (limited to 'api/logic/BaseInstanceProvider.h')
-rw-r--r-- | api/logic/BaseInstanceProvider.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/api/logic/BaseInstanceProvider.h b/api/logic/BaseInstanceProvider.h new file mode 100644 index 00000000..f6833650 --- /dev/null +++ b/api/logic/BaseInstanceProvider.h @@ -0,0 +1,57 @@ +#pragma once + +#include <QObject> +#include <QString> +#include "BaseInstance.h" +#include "settings/SettingsObject.h" + +#include "multimc_logic_export.h" + +using InstanceId = QString; +using InstanceLocator = std::pair<InstancePtr, int>; + +enum class InstCreateError +{ + NoCreateError = 0, + NoSuchVersion, + UnknownCreateError, + InstExists, + CantCreateDir +}; + +class MULTIMC_LOGIC_EXPORT BaseInstanceProvider : public QObject +{ + Q_OBJECT +public: + BaseInstanceProvider(SettingsObjectPtr settings) : m_globalSettings(settings) + { + // nil + } +public: + virtual QList<InstanceId> discoverInstances() = 0; + virtual InstancePtr loadInstance(const InstanceId &id) = 0; + virtual void loadGroupList() = 0; + virtual void saveGroupList() = 0; + + virtual QString getStagedInstancePath() + { + return QString(); + } + virtual bool commitStagedInstance(const QString & keyPath, const QString & path, const QString& instanceName, const QString & groupName) + { + return false; + } + virtual bool destroyStagingPath(const QString & path) + { + return true; + } + +signals: + // Emit this when the list of provided instances changed + void instancesChanged(); + // Emit when the set of groups your provider supplies changes. + void groupsChanged(QSet<QString> groups); + +protected: + SettingsObjectPtr m_globalSettings; +}; |