diff options
Diffstat (limited to 'src/organizerproxy.h')
| -rw-r--r-- | src/organizerproxy.h | 282 |
1 files changed, 152 insertions, 130 deletions
diff --git a/src/organizerproxy.h b/src/organizerproxy.h index f419ba59..771d0981 100644 --- a/src/organizerproxy.h +++ b/src/organizerproxy.h @@ -1,130 +1,152 @@ -#ifndef ORGANIZERPROXY_H
-#define ORGANIZERPROXY_H
-
-#include <memory>
-
-#include <iplugin.h>
-#include <imoinfo.h>
-
-#include "organizercore.h"
-
-class PluginContainer;
-class DownloadManagerProxy;
-class ModListProxy;
-class PluginListProxy;
-
-class OrganizerProxy : public MOBase::IOrganizer
-{
-
-public:
-
- OrganizerProxy(OrganizerCore *organizer, PluginContainer *pluginContainer, MOBase::IPlugin *plugin);
- ~OrganizerProxy();
-
-public:
-
- /**
- * @return the plugin corresponding to this proxy.
- */
- MOBase::IPlugin* plugin() const { return m_Plugin; }
-
-public: // IOrganizer interface
-
- virtual MOBase::IModRepositoryBridge *createNexusBridge() const;
- virtual QString profileName() const;
- virtual QString profilePath() const;
- virtual QString downloadsPath() const;
- virtual QString overwritePath() const;
- virtual QString basePath() const;
- virtual QString modsPath() const;
- virtual MOBase::VersionInfo appVersion() const;
- virtual MOBase::IPluginGame *getGame(const QString &gameName) const;
- virtual MOBase::IModInterface *createMod(MOBase::GuessedValue<QString> &name);
- virtual void modDataChanged(MOBase::IModInterface *mod);
- virtual QVariant persistent(const QString &pluginName, const QString &key, const QVariant &def = QVariant()) const;
- virtual void setPersistent(const QString &pluginName, const QString &key, const QVariant &value, bool sync = true);
- virtual QString pluginDataPath() const;
- virtual MOBase::IModInterface *installMod(const QString &fileName, const QString &nameSuggestion = QString());
- virtual QString resolvePath(const QString &fileName) const;
- virtual QStringList listDirectories(const QString &directoryName) const;
- virtual QStringList findFiles(const QString &path, const std::function<bool(const QString &)> &filter) const override;
- virtual QStringList findFiles(const QString &path, const QStringList &globFilters) const override;
- virtual QStringList getFileOrigins(const QString &fileName) const override;
- virtual QList<FileInfo> findFileInfos(const QString &path, const std::function<bool(const FileInfo&)> &filter) const override;
- virtual std::shared_ptr<const MOBase::IFileTree> virtualFileTree() const override;
-
- virtual MOBase::IDownloadManager *downloadManager() const;
- virtual MOBase::IPluginList *pluginList() const;
- virtual MOBase::IModList *modList() const;
- virtual MOBase::IProfile *profile() const override;
- virtual HANDLE startApplication(const QString &executable, const QStringList &args = QStringList(), const QString &cwd = "",
- const QString &profile = "", const QString &forcedCustomOverwrite = "", bool ignoreCustomOverwrite = false);
- virtual bool waitForApplication(HANDLE handle, bool refresh = true, LPDWORD exitCode = nullptr) const;
- virtual void refresh(bool saveChanges);
-
- virtual bool onAboutToRun(const std::function<bool(const QString&)> &func) override;
- virtual bool onFinishedRun(const std::function<void (const QString&, unsigned int)> &func) override;
- virtual bool onUserInterfaceInitialized(std::function<void(QMainWindow*)> const& func) override;
- virtual bool onProfileCreated(std::function<void(MOBase::IProfile*)> const& func) override;
- virtual bool onProfileRenamed(std::function<void(MOBase::IProfile*, QString const&, QString const&)> const& func) override;
- virtual bool onProfileRemoved(std::function<void(QString const&)> const& func) override;
- virtual bool onProfileChanged(std::function<void(MOBase::IProfile*, MOBase::IProfile*)> const& func) override;
-
- // Plugin related:
- virtual bool isPluginEnabled(QString const& pluginName) const override;
- virtual bool isPluginEnabled(MOBase::IPlugin* plugin) const override;
- virtual QVariant pluginSetting(const QString& pluginName, const QString& key) const override;
- virtual void setPluginSetting(const QString& pluginName, const QString& key, const QVariant& value) override;
- virtual bool onPluginSettingChanged(std::function<void(QString const&, const QString& key, const QVariant&, const QVariant&)> const& func) override;
- virtual bool onPluginEnabled(std::function<void(const MOBase::IPlugin*)> const& func) override;
- virtual bool onPluginEnabled(const QString& pluginName, std::function<void()> const& func) override;
- virtual bool onPluginDisabled(std::function<void(const MOBase::IPlugin*)> const& func) override;
- virtual bool onPluginDisabled(const QString& pluginName, std::function<void()> const& func) override;
-
- virtual MOBase::IPluginGame const *managedGame() const;
-
-protected:
-
- // The container needs access to some callbacks to simulate startup.
- friend class PluginContainer;
-
- /**
- * @brief Connect the signals from this proxy and all the child proxies (plugin list, mod
- * list, etc.) to the actual implementation. Before this call, plugins can register signals
- * but they won't be triggered.
- */
- void connectSignals();
-
- /**
- * @brief Disconnect the signals from this proxy and all the child proxies (plugin list, mod
- * list, etc.) from the actual implementation.
- */
- void disconnectSignals();
-
-private:
-
- OrganizerCore *m_Proxied;
- PluginContainer *m_PluginContainer;
-
- MOBase::IPlugin *m_Plugin;
-
- OrganizerCore::SignalAboutToRunApplication m_AboutToRun;
- OrganizerCore::SignalFinishedRunApplication m_FinishedRun;
- OrganizerCore::SignalUserInterfaceInitialized m_UserInterfaceInitialized;
- OrganizerCore::SignalProfileCreated m_ProfileCreated;
- OrganizerCore::SignalProfileRenamed m_ProfileRenamed;
- OrganizerCore::SignalProfileRemoved m_ProfileRemoved;
- OrganizerCore::SignalProfileChanged m_ProfileChanged;
- OrganizerCore::SignalPluginSettingChanged m_PluginSettingChanged;
- OrganizerCore::SignalPluginEnabled m_PluginEnabled;
- OrganizerCore::SignalPluginEnabled m_PluginDisabled;
-
- std::vector<boost::signals2::connection> m_Connections;
-
- std::unique_ptr<DownloadManagerProxy> m_DownloadManagerProxy;
- std::unique_ptr<ModListProxy> m_ModListProxy;
- std::unique_ptr<PluginListProxy> m_PluginListProxy;
-
-};
-
-#endif // ORGANIZERPROXY_H
+#ifndef ORGANIZERPROXY_H +#define ORGANIZERPROXY_H + +#include <memory> + +#include <imoinfo.h> +#include <iplugin.h> + +#include "organizercore.h" + +class PluginContainer; +class DownloadManagerProxy; +class ModListProxy; +class PluginListProxy; + +class OrganizerProxy : public MOBase::IOrganizer +{ + +public: + OrganizerProxy(OrganizerCore* organizer, PluginContainer* pluginContainer, + MOBase::IPlugin* plugin); + ~OrganizerProxy(); + +public: + /** + * @return the plugin corresponding to this proxy. + */ + MOBase::IPlugin* plugin() const { return m_Plugin; } + +public: // IOrganizer interface + virtual MOBase::IModRepositoryBridge* createNexusBridge() const; + virtual QString profileName() const; + virtual QString profilePath() const; + virtual QString downloadsPath() const; + virtual QString overwritePath() const; + virtual QString basePath() const; + virtual QString modsPath() const; + virtual MOBase::VersionInfo appVersion() const; + virtual MOBase::IPluginGame* getGame(const QString& gameName) const; + virtual MOBase::IModInterface* createMod(MOBase::GuessedValue<QString>& name); + virtual void modDataChanged(MOBase::IModInterface* mod); + virtual QVariant persistent(const QString& pluginName, const QString& key, + const QVariant& def = QVariant()) const; + virtual void setPersistent(const QString& pluginName, const QString& key, + const QVariant& value, bool sync = true); + virtual QString pluginDataPath() const; + virtual MOBase::IModInterface* installMod(const QString& fileName, + const QString& nameSuggestion = QString()); + virtual QString resolvePath(const QString& fileName) const; + virtual QStringList listDirectories(const QString& directoryName) const; + virtual QStringList + findFiles(const QString& path, + const std::function<bool(const QString&)>& filter) const override; + virtual QStringList findFiles(const QString& path, + const QStringList& globFilters) const override; + virtual QStringList getFileOrigins(const QString& fileName) const override; + virtual QList<FileInfo> + findFileInfos(const QString& path, + const std::function<bool(const FileInfo&)>& filter) const override; + virtual std::shared_ptr<const MOBase::IFileTree> virtualFileTree() const override; + + virtual MOBase::IDownloadManager* downloadManager() const; + virtual MOBase::IPluginList* pluginList() const; + virtual MOBase::IModList* modList() const; + virtual MOBase::IProfile* profile() const override; + virtual HANDLE startApplication(const QString& executable, + const QStringList& args = QStringList(), + const QString& cwd = "", const QString& profile = "", + const QString& forcedCustomOverwrite = "", + bool ignoreCustomOverwrite = false); + virtual bool waitForApplication(HANDLE handle, bool refresh = true, + LPDWORD exitCode = nullptr) const; + virtual void refresh(bool saveChanges); + + virtual bool onAboutToRun(const std::function<bool(const QString&)>& func) override; + virtual bool + onFinishedRun(const std::function<void(const QString&, unsigned int)>& func) override; + virtual bool + onUserInterfaceInitialized(std::function<void(QMainWindow*)> const& func) override; + virtual bool + onProfileCreated(std::function<void(MOBase::IProfile*)> const& func) override; + virtual bool onProfileRenamed( + std::function<void(MOBase::IProfile*, QString const&, QString const&)> const& + func) override; + virtual bool + onProfileRemoved(std::function<void(QString const&)> const& func) override; + virtual bool onProfileChanged( + std::function<void(MOBase::IProfile*, MOBase::IProfile*)> const& func) override; + + // Plugin related: + virtual bool isPluginEnabled(QString const& pluginName) const override; + virtual bool isPluginEnabled(MOBase::IPlugin* plugin) const override; + virtual QVariant pluginSetting(const QString& pluginName, + const QString& key) const override; + virtual void setPluginSetting(const QString& pluginName, const QString& key, + const QVariant& value) override; + virtual bool onPluginSettingChanged( + std::function<void(QString const&, const QString& key, const QVariant&, + const QVariant&)> const& func) override; + virtual bool + onPluginEnabled(std::function<void(const MOBase::IPlugin*)> const& func) override; + virtual bool onPluginEnabled(const QString& pluginName, + std::function<void()> const& func) override; + virtual bool + onPluginDisabled(std::function<void(const MOBase::IPlugin*)> const& func) override; + virtual bool onPluginDisabled(const QString& pluginName, + std::function<void()> const& func) override; + + virtual MOBase::IPluginGame const* managedGame() const; + +protected: + // The container needs access to some callbacks to simulate startup. + friend class PluginContainer; + + /** + * @brief Connect the signals from this proxy and all the child proxies (plugin list, + * mod list, etc.) to the actual implementation. Before this call, plugins can + * register signals but they won't be triggered. + */ + void connectSignals(); + + /** + * @brief Disconnect the signals from this proxy and all the child proxies (plugin + * list, mod list, etc.) from the actual implementation. + */ + void disconnectSignals(); + +private: + OrganizerCore* m_Proxied; + PluginContainer* m_PluginContainer; + + MOBase::IPlugin* m_Plugin; + + OrganizerCore::SignalAboutToRunApplication m_AboutToRun; + OrganizerCore::SignalFinishedRunApplication m_FinishedRun; + OrganizerCore::SignalUserInterfaceInitialized m_UserInterfaceInitialized; + OrganizerCore::SignalProfileCreated m_ProfileCreated; + OrganizerCore::SignalProfileRenamed m_ProfileRenamed; + OrganizerCore::SignalProfileRemoved m_ProfileRemoved; + OrganizerCore::SignalProfileChanged m_ProfileChanged; + OrganizerCore::SignalPluginSettingChanged m_PluginSettingChanged; + OrganizerCore::SignalPluginEnabled m_PluginEnabled; + OrganizerCore::SignalPluginEnabled m_PluginDisabled; + + std::vector<boost::signals2::connection> m_Connections; + + std::unique_ptr<DownloadManagerProxy> m_DownloadManagerProxy; + std::unique_ptr<ModListProxy> m_ModListProxy; + std::unique_ptr<PluginListProxy> m_PluginListProxy; +}; + +#endif // ORGANIZERPROXY_H |
