diff options
| author | Tannin <devnull@localhost> | 2013-10-16 19:32:59 +0200 |
|---|---|---|
| committer | Tannin <devnull@localhost> | 2013-10-16 19:32:59 +0200 |
| commit | 1bf3cc585e28516f4ff6c9edf720fa9d290f47c2 (patch) | |
| tree | f981154230527dff90a8907de0cf235ffc665179 | |
| parent | f22bb9d6a6249e6789353903d9e51318ce8340af (diff) | |
- nmm importer now also transfers category, endorsement state and lastest version information
- nmm importer should now always determine the correct nexus id
- nmm importer will now correctly restore overwritten files for imported mods
| -rw-r--r-- | src/mainwindow.cpp | 2 | ||||
| -rw-r--r-- | src/mainwindow.h | 25 | ||||
| -rw-r--r-- | src/modinfo.cpp | 5 | ||||
| -rw-r--r-- | src/modinfo.h | 15 |
4 files changed, 44 insertions, 3 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 7ef2dab6..1b6fd047 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -2131,7 +2131,7 @@ HANDLE MainWindow::startApplication(const QString &executable, const QStringList return spawnBinaryDirect(binary, arguments, profileName, currentDirectory, steamAppID); } -bool MainWindow::onAboutToRun(const boost::function<bool (const QString &)> &func) +bool MainWindow::onAboutToRun(const std::function<bool (const QString &)> &func) { auto conn = m_AboutToRun.connect(func); return conn.connected(); diff --git a/src/mainwindow.h b/src/mainwindow.h index fab850cf..8a34d16a 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -50,6 +50,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>. #include "savegameinfowidgetgamebryo.h" #include <guessedvalue.h> #include <directoryentry.h> +#include <boost/signals2.hpp> namespace Ui { class MainWindow; @@ -59,12 +60,33 @@ class QToolButton; class ModListSortProxy; class ModListGroupCategoriesProxy; + class MainWindow : public QMainWindow, public MOBase::IOrganizer, public MOBase::IPluginDiagnose { Q_OBJECT Q_INTERFACES(MOBase::IPluginDiagnose) public: + + 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; + +public: explicit MainWindow(const QString &exeName, QSettings &initSettings, QWidget *parent = 0); ~MainWindow(); @@ -115,7 +137,7 @@ public: virtual QStringList findFiles(const QString &path, const std::function<bool(const QString &)> &filter) const; virtual MOBase::IDownloadManager *downloadManager(); virtual HANDLE startApplication(const QString &executable, const QStringList &args = QStringList(), const QString &cwd = "", const QString &profile = ""); - virtual bool onAboutToRun(const boost::function<bool(const QString&)> &func); + virtual bool onAboutToRun(const std::function<bool(const QString&)> &func); virtual std::vector<unsigned int> activeProblems() const; virtual QString shortDescription(unsigned int key) const; @@ -157,7 +179,6 @@ signals: void styleChanged(const QString &styleFile); - void modListDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight); protected: diff --git a/src/modinfo.cpp b/src/modinfo.cpp index 1479f7b4..9bc013f1 100644 --- a/src/modinfo.cpp +++ b/src/modinfo.cpp @@ -554,6 +554,11 @@ void ModInfoRegular::setNexusDescription(const QString &description) m_MetaInfoChanged = true; } +void ModInfoRegular::addNexusCategory(int categoryID) +{ + m_Categories.insert(CategoryFactory::instance().resolveNexusID(categoryID)); +} + void ModInfoRegular::setIsEndorsed(bool endorsed) { diff --git a/src/modinfo.h b/src/modinfo.h index 3b83d207..e408e812 100644 --- a/src/modinfo.h +++ b/src/modinfo.h @@ -268,6 +268,13 @@ public: virtual void setNexusDescription(const QString &description) = 0; /** + * @brief sets the category id from a nexus category id. Conversion to MO id happens internally + * @param categoryID the nexus category id + * @note if a mapping is not possible, the category is set to the default value + */ + virtual void addNexusCategory(int categoryID) = 0; + + /** * update the endorsement state for the mod. This only changes the * buffered state, it does not sync with Nexus * @param endorsed the new endorsement state @@ -606,6 +613,13 @@ public: virtual void setNexusDescription(const QString &description); /** + * @brief sets the category id from a nexus category id. Conversion to MO id happens internally + * @param categoryID the nexus category id + * @note if a mapping is not possible, the category is set to the default value + */ + virtual void addNexusCategory(int categoryID); + + /** * @brief sets the new primary category of the mod * @param categoryID the category to set */ @@ -854,6 +868,7 @@ public: virtual void setNewestVersion(const MOBase::VersionInfo&) {} virtual void ignoreUpdate(bool) {} virtual void setNexusDescription(const QString&) {} + virtual void addNexusCategory(int) {} virtual void setIsEndorsed(bool) {} virtual void setNeverEndorse() {} virtual bool remove() { return false; } |
