From f2f9e11fdd876821107cff0c1c5b9d8ecf66691f Mon Sep 17 00:00:00 2001 From: Tannin Date: Fri, 21 Nov 2014 14:45:30 +0100 Subject: - started on a refactoring moving functionality out of the MainWindow class - started on support for game-plugins --- src/mainwindow.h | 152 +++++++++++-------------------------------------------- 1 file changed, 30 insertions(+), 122 deletions(-) (limited to 'src/mainwindow.h') diff --git a/src/mainwindow.h b/src/mainwindow.h index ea79fc37..c8cb8152 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -29,18 +29,16 @@ along with Mod Organizer. If not, see . #include #include #include -#include #include "executableslist.h" #include "modlist.h" #include "pluginlist.h" +#include "plugincontainer.h" #define WIN32_LEAN_AND_MEAN #include #include #include "directoryrefresher.h" #include -#include -#include -#include +#include #include "settings.h" #include "downloadmanager.h" #include "installationmanager.h" @@ -52,6 +50,7 @@ along with Mod Organizer. If not, see . #include "savegameinfowidgetgamebryo.h" #include "previewgenerator.h" #include "browserdialog.h" +#include "iuserinterface.h" #include #include #ifndef Q_MOC_RUN @@ -67,42 +66,24 @@ class ModListSortProxy; class ModListGroupCategoriesProxy; -class MainWindow : public QMainWindow, public MOBase::IPluginDiagnose +class MainWindow : public QMainWindow, public IUserInterface { Q_OBJECT - Q_INTERFACES(MOBase::IPluginDiagnose) friend class OrganizerProxy; -private: - - struct SignalCombinerAnd - { - typedef bool result_type; - template - bool operator()(InputIterator first, InputIterator last) const - { - while (first != last) { - if (!(*first)) { - return false; - } - ++first; - } - return true; - } - }; - - typedef boost::signals2::signal SignalAboutToRunApplication; - typedef boost::signals2::signal SignalModInstalled; public: - explicit MainWindow(const QString &exeName, QSettings &initSettings, QWidget *parent = 0); + explicit MainWindow(const QString &exeName, QSettings &initSettings, + OrganizerCore &organizerCore, PluginContainer &pluginContainer, + QWidget *parent = 0); ~MainWindow(); + void storeSettings(QSettings &settings); void readSettings(); bool addProfile(); - void refreshBSAList(); + void updateBSAList(const QStringList &defaultArchives, const QStringList &activeArchives); void refreshDataTree(); void refreshSaveList(); @@ -116,21 +97,13 @@ public: void createFirstProfile(); -/* void spawnProgram(const QString &fileName, const QString &argumentsArg, - const QString &profileName, const QDir ¤tDirectory);*/ - - void loadPlugins(); + bool saveArchiveList(); - virtual std::vector activeProblems() const; - virtual QString shortDescription(unsigned int key) const; - virtual QString fullDescription(unsigned int key) const; - virtual bool hasGuidedFix(unsigned int key) const; - virtual void startGuidedFix(unsigned int key) const; + void registerPluginTool(MOBase::IPluginTool *tool); + void registerModPage(MOBase::IPluginModPage *modPage); void addPrimaryCategoryCandidates(QMenu *primaryCategoryMenu, ModInfo::Ptr info); - bool saveArchiveList(); - void createStdoutPipe(HANDLE *stdOutRead, HANDLE *stdOutWrite); std::string readFromPipe(HANDLE stdOutRead); void processLOOTOut(const std::string &lootOut, std::string &reportURL, std::string &errorMessages, QProgressDialog &dialog); @@ -141,16 +114,21 @@ public: void updateModInDirectoryStructure(unsigned int index, ModInfo::Ptr modInfo); - QString getOriginDisplayName(int originID); - void unloadPlugins(); -public slots: - void refreshLists(); + void installTranslator(const QString &name); + + virtual void disconnectPlugins(); + + virtual bool close(); + virtual void setEnabled(bool enabled); + + void displayModInformation(ModInfo::Ptr modInfo, unsigned int index, int tab); + +public slots: void displayColumnSelection(const QPoint &pos); - void externalMessage(const QString &message); void modorder_changed(); void refresher_progress(int percent); void directory_refreshed(); @@ -160,11 +138,6 @@ public slots: signals: - /** - * @brief emitted after a mod has been installed - * @node this is currently only used for tutorials - */ - void modInstalled(); /** * @brief emitted after the information dialog has been closed @@ -188,41 +161,28 @@ protected: private: - void refreshESPList(); void refreshModList(bool saveChanges = true); void actionToToolButton(QAction *&sourceAction); - bool verifyPlugin(MOBase::IPlugin *plugin); - void registerPluginTool(MOBase::IPluginTool *tool); - void registerModPage(MOBase::IPluginModPage *modPage); - bool registerPlugin(QObject *pluginObj, const QString &fileName); - bool unregisterPlugin(QObject *pluginObj, const QString &fileName); void updateToolBar(); void activateSelectedProfile(); void setExecutableIndex(int index); - bool testForSteam(); void startSteam(); HANDLE spawnBinaryDirect(const QFileInfo &binary, const QString &arguments, const QString &profileName, const QDir ¤tDirectory, const QString &steamAppID); - void spawnBinary(const QFileInfo &binary, const QString &arguments = "", const QDir ¤tDirectory = QDir(), bool closeAfterStart = true, const QString &steamAppID = ""); void updateTo(QTreeWidgetItem *subTree, const std::wstring &directorySoFar, const MOShared::DirectoryEntry &directoryEntry, bool conflictsOnly); void refreshDirectoryStructure(); bool refreshProfiles(bool selectProfile = true); void refreshExecutablesList(); void installMod(); - MOBase::IModInterface *installMod(const QString &fileName); - MOBase::IModInterface *getMod(const QString &name); - MOBase::IModInterface *createMod(MOBase::GuessedValue &name); - bool removeMod(MOBase::IModInterface *mod); QList findFileInfos(const QString &path, const std::function &filter) const; bool modifyExecutablesDialog(); - void displayModInformation(ModInfo::Ptr modInfo, unsigned int index, int tab); void displayModInformation(int row, int tab = 0); void testExtractBSA(int modIndex); @@ -256,10 +216,6 @@ private: // remove invalid category-references from mods void fixCategories(); - void storeSettings(); - - bool queryLogin(QString &username, QString &password); - void createHelpWidget(); bool extractProgress(QProgressDialog &extractProgress, int percentage, std::string fileName); @@ -288,7 +244,6 @@ private: static void setupNetworkProxy(bool activate); void activateProxy(bool activate); - void installTranslator(const QString &name); void setBrowserGeometry(const QByteArray &geometry); bool createBackup(const QString &filePath, const QDateTime &time); @@ -300,13 +255,8 @@ private: void scheduleUpdateButton(); - void updateModActiveState(int index, bool active); - private: - static const unsigned int PROBLEM_PLUGINSNOTLOADED = 1; - static const unsigned int PROBLEM_TOOMANYPLUGINS = 2; - static const char *PATTERN_BACKUP_GLOB; static const char *PATTERN_BACKUP_REGEX; static const char *PATTERN_BACKUP_DATE; @@ -321,21 +271,15 @@ private: int m_OldProfileIndex; - QThread m_RefresherThread; - DirectoryRefresher m_DirectoryRefresher; - MOShared::DirectoryEntry *m_DirectoryStructure; std::vector m_ModNameList; // the mod-list to go with the directory structure QProgressBar *m_RefreshProgress; bool m_Refreshing; - ModList m_ModList; QAbstractItemModel *m_ModListGroupingProxy; ModListSortProxy *m_ModListSortProxy; - PluginList m_PluginList; PluginListSortProxy *m_PluginListSortProxy; - ExecutablesList m_ExecutablesList; int m_OldExecutableIndex; QString m_GamePath; @@ -347,28 +291,12 @@ private: //int m_SelectedSaveGame; - Settings m_Settings; - - DownloadManager m_DownloadManager; - InstallationManager m_InstallationManager; - - SelfUpdater m_Updater; - CategoryFactory &m_CategoryFactory; - Profile *m_CurrentProfile; - int m_ModsToUpdate; - QStringList m_PendingDownloads; - QList > m_PostLoginTasks; - bool m_AskForNexusPW; bool m_LoginAttempted; - QStringList m_DefaultArchives; - QStringList m_ActiveArchives; - bool m_DirectoryUpdate; - bool m_ArchivesInit; QTimer m_CheckBSATimer; QTimer m_SaveMetaTimer; QTimer m_UpdateProblemsTimer; @@ -376,23 +304,14 @@ private: QTime m_StartTime; SaveGameInfoWidget *m_CurrentSaveView; - MOBase::IGameInfo *m_GameInfo; - - std::vector m_DiagnosisPlugins; - std::vector m_DiagnosisConnections; - std::vector m_ModPages; - std::vector m_FailedPlugins; - std::vector m_PluginLoaders; + OrganizerCore &m_OrganizerCore; + PluginContainer &m_PluginContainer; - QFile m_PluginsCheck; - - SignalAboutToRunApplication m_AboutToRun; - SignalModInstalled m_ModInstalled; + MOBase::IPluginGame *m_ActiveGame; QString m_CurrentLanguage; std::vector m_Translators; - PreviewGenerator m_PreviewGenerator; BrowserDialog m_IntegratedBrowser; QFileSystemWatcher m_SavesWatcher; @@ -447,8 +366,6 @@ private slots: void modStatusChanged(unsigned int index); void saveSelectionChanged(QListWidgetItem *newItem); - bool saveCurrentLists(); - void windowTutorialFinished(const QString &windowName); BSA::EErrorCode extractBSA(BSA::Archive &archive, BSA::Folder::Ptr folder, const QString &destination, QProgressDialog &extractProgress); @@ -457,8 +374,6 @@ private slots: void createModFromOverwrite(); - void removeOrigin(const QString &name); - void procError(QProcess::ProcessError error); void procFinished(int exitCode, QProcess::ExitStatus exitStatus); @@ -466,17 +381,9 @@ private slots: void checkModsForUpdates(); void nexusLinkActivated(const QString &link); - void linkClicked(const QString &url); - - bool nexusLogin(); - - void loginSuccessful(bool necessary); - void loginSuccessfulUpdate(bool necessary); void loginFailed(const QString &message); - void loginFailedUpdate(const QString &message); - void downloadRequestedNXM(const QString &url); - void downloadRequested(QNetworkReply *reply, int modID, const QString &fileName); + void linkClicked(const QString &url); void installDownload(int index); void updateAvailable(); @@ -495,6 +402,8 @@ private slots: void modDetailsUpdated(bool success); void modlistChanged(int row); + void modInstalled(); + void nxmUpdatesAvailable(const std::vector &modIDs, QVariant userData, QVariant resultData, int requestID); void nxmEndorsementToggled(int, QVariant, QVariant resultData, int); void nxmDownloadURLs(int modID, int fileID, QVariant userData, QVariant resultData, int requestID); @@ -527,7 +436,7 @@ private slots: void startExeAction(); - void checkBSAList(); + void checkBSAList(const QStringList &defaultArchives); void updateProblemsButton(); @@ -538,7 +447,6 @@ private slots: void modlistChanged(const QModelIndex &index, int role); void fileMoved(const QString &filePath, const QString &oldOriginName, const QString &newOriginName); - void savePluginList(); void modFilterActive(bool active); void espFilterChanged(const QString &filter); @@ -576,7 +484,6 @@ private slots: void modListSortIndicatorChanged(int column, Qt::SortOrder order); private slots: // ui slots - void profileRefresh(); // actions void on_actionAdd_Profile_triggered(); void on_actionInstallMod_triggered(); @@ -619,6 +526,7 @@ private slots: // ui slots void on_categoriesOrBtn_toggled(bool checked); void on_managedArchiveLabel_linkHovered(const QString &link); void on_manageArchivesBox_toggled(bool checked); + }; -- cgit v1.3.1