diff options
| author | Tannin <devnull@localhost> | 2014-11-21 14:45:30 +0100 |
|---|---|---|
| committer | Tannin <devnull@localhost> | 2014-11-21 14:45:30 +0100 |
| commit | f2f9e11fdd876821107cff0c1c5b9d8ecf66691f (patch) | |
| tree | ac27533947a8f7a28545cf1f1901647242c03b53 /src/mainwindow.h | |
| parent | d23466f036618760de16ee874a3c076f05fe6087 (diff) | |
- started on a refactoring moving functionality out of the MainWindow class
- started on support for game-plugins
Diffstat (limited to 'src/mainwindow.h')
| -rw-r--r-- | src/mainwindow.h | 152 |
1 files changed, 30 insertions, 122 deletions
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 <http://www.gnu.org/licenses/>. #include <QThread>
#include <QProgressBar>
#include <QTranslator>
-#include <QPluginLoader>
#include "executableslist.h"
#include "modlist.h"
#include "pluginlist.h"
+#include "plugincontainer.h"
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <archive.h>
#include "directoryrefresher.h"
#include <imoinfo.h>
-#include <iplugintool.h>
-#include <iplugindiagnose.h>
-#include <ipluginmodpage.h>
+#include <iplugingame.h>
#include "settings.h"
#include "downloadmanager.h"
#include "installationmanager.h"
@@ -52,6 +50,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include "savegameinfowidgetgamebryo.h"
#include "previewgenerator.h"
#include "browserdialog.h"
+#include "iuserinterface.h"
#include <guessedvalue.h>
#include <directoryentry.h>
#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<typename InputIterator>
- bool operator()(InputIterator first, InputIterator last) const
- {
- while (first != last) {
- if (!(*first)) {
- return false;
- }
- ++first;
- }
- return true;
- }
- };
-
- typedef boost::signals2::signal<bool (const QString&), SignalCombinerAnd> SignalAboutToRunApplication;
- typedef boost::signals2::signal<void (const QString&)> 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<unsigned int> 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<QString> &name);
- bool removeMod(MOBase::IModInterface *mod);
QList<MOBase::IOrganizer::FileInfo> findFileInfos(const QString &path, const std::function<bool (const MOBase::IOrganizer::FileInfo &)> &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<QString> 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<boost::function<void (MainWindow*)> > 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;
+ OrganizerCore &m_OrganizerCore;
+ PluginContainer &m_PluginContainer;
- std::vector<MOBase::IPluginDiagnose*> m_DiagnosisPlugins;
- std::vector<boost::signals2::connection> m_DiagnosisConnections;
- std::vector<MOBase::IPluginModPage*> m_ModPages;
- std::vector<QString> m_FailedPlugins;
- std::vector<QPluginLoader*> m_PluginLoaders;
-
- QFile m_PluginsCheck;
-
- SignalAboutToRunApplication m_AboutToRun;
- SignalModInstalled m_ModInstalled;
+ MOBase::IPluginGame *m_ActiveGame;
QString m_CurrentLanguage;
std::vector<QTranslator*> 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<int> &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);
+
};
|
