summaryrefslogtreecommitdiff
path: root/src/mainwindow.h
diff options
context:
space:
mode:
authorTannin <devnull@localhost>2015-01-03 15:58:52 +0100
committerTannin <devnull@localhost>2015-01-03 15:58:52 +0100
commita16e25380f088dc310fbed24d2dcef603357e99a (patch)
tree40fc3b5254f2797eb20bfac1d54a22652d469fa2 /src/mainwindow.h
parent459816ab71ae6b350847cc93f1e03e49ecf75ade (diff)
parentf2f9e11fdd876821107cff0c1c5b9d8ecf66691f (diff)
Merge with branch1.2
Diffstat (limited to 'src/mainwindow.h')
-rw-r--r--src/mainwindow.h154
1 files changed, 34 insertions, 120 deletions
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 8f035afd..8adaeb1f 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -33,14 +33,13 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#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 +51,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 +67,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 +98,13 @@ public:
void createFirstProfile();
-/* void spawnProgram(const QString &fileName, const QString &argumentsArg,
- const QString &profileName, const QDir &currentDirectory);*/
-
- 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);
@@ -142,14 +116,21 @@ public:
void updateModInDirectoryStructure(unsigned int index, ModInfo::Ptr modInfo);
QString getOriginDisplayName(int originID);
+
+ void installTranslator(const QString &name);
+
+ virtual void disconnectPlugins();
void unloadPlugins();
-public slots:
- void refreshLists();
+ 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();
@@ -159,11 +140,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
@@ -187,41 +163,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 &currentDirectory, const QString &steamAppID);
- void spawnBinary(const QFileInfo &binary, const QString &arguments = "", const QDir &currentDirectory = 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, const QString &initModName = QString());
- 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);
@@ -255,10 +218,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);
@@ -266,7 +225,8 @@ private:
int checkForProblems();
int getBinaryExecuteInfo(const QFileInfo &targetInfo, QFileInfo &binaryInfo, QString &arguments);
- QTreeWidgetItem *addFilterItem(QTreeWidgetItem *root, const QString &name, int categoryID);
+ QTreeWidgetItem *addFilterItem(QTreeWidgetItem *root, const QString &name, int categoryID, ModListSortProxy::FilterType type);
+ void addContentFilters();
void addCategoryFilters(QTreeWidgetItem *root, const std::set<int> &categoriesUsed, int targetID);
void setCategoryListVisible(bool visible);
@@ -286,7 +246,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);
@@ -298,13 +257,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;
@@ -319,21 +273,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;
@@ -345,28 +293,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;
@@ -374,23 +306,14 @@ private:
QTime m_StartTime;
SaveGameInfoWidget *m_CurrentSaveView;
- MOBase::IGameInfo *m_GameInfo;
-
- 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;
+ OrganizerCore &m_OrganizerCore;
+ PluginContainer &m_PluginContainer;
- 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;
@@ -445,8 +368,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);
@@ -455,8 +376,6 @@ private slots:
void createModFromOverwrite();
- void removeOrigin(const QString &name);
-
void procError(QProcess::ProcessError error);
void procFinished(int exitCode, QProcess::ExitStatus exitStatus);
@@ -464,17 +383,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();
@@ -493,6 +404,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);
@@ -525,7 +438,7 @@ private slots:
void startExeAction();
- void checkBSAList();
+ void checkBSAList(const QStringList &defaultArchives);
void updateProblemsButton();
@@ -536,7 +449,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);
@@ -570,9 +482,10 @@ private slots:
void delayedRemove();
void requestDownload(const QUrl &url, QNetworkReply *reply);
+ void modlistSelectionChanged(const QModelIndex &current, const QModelIndex &previous);
+ void modListSortIndicatorChanged(int column, Qt::SortOrder order);
private slots: // ui slots
- void profileRefresh();
// actions
void on_actionAdd_Profile_triggered();
void on_actionInstallMod_triggered();
@@ -615,6 +528,7 @@ private slots: // ui slots
void on_categoriesOrBtn_toggled(bool checked);
void on_managedArchiveLabel_linkHovered(const QString &link);
void on_manageArchivesBox_toggled(bool checked);
+
};