From 1c9018e9fdba7878b0ef605f81529c20ef3bbffe Mon Sep 17 00:00:00 2001 From: Tannin Date: Sat, 13 Apr 2013 19:23:18 +0200 Subject: - bugfix: wrong multibyte to widechar conversion in hookdll breaks internationalization - bugfix: mod names not checked for validity on rename - bugfix: mod list wasn't invalidated after rename (regression?) - problem reports moved to separate dialog - ncc plugin now does the check for dotNet - python plugin wrapper started (only supports tools currently) - new ini editor plugin in python (non-functional currently) --- src/installationmanager.cpp | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/installationmanager.cpp') diff --git a/src/installationmanager.cpp b/src/installationmanager.cpp index 1abb19da..63945150 100644 --- a/src/installationmanager.cpp +++ b/src/installationmanager.cpp @@ -18,9 +18,7 @@ along with Mod Organizer. If not, see . */ #include "installationmanager.h" - #include "utility.h" - #include "report.h" #include "categories.h" #include "questionboxmemory.h" -- cgit v1.3.1 From d161e1a0d61181185323fcb547d9e0651d546fb2 Mon Sep 17 00:00:00 2001 From: Tannin Date: Sun, 14 Apr 2013 20:49:18 +0200 Subject: - if no version is known for a mod, the file date is used - added files for the python proxy --- src/installationmanager.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/installationmanager.cpp') diff --git a/src/installationmanager.cpp b/src/installationmanager.cpp index 63945150..16761f24 100644 --- a/src/installationmanager.cpp +++ b/src/installationmanager.cpp @@ -43,6 +43,7 @@ along with Mod Organizer. If not, see . #include #include #include +#include #include #include @@ -720,6 +721,11 @@ bool InstallationManager::install(const QString &fileName, const QString &modsDi categoryID = CategoryFactory::instance().getCategoryID(categoryIndex); } + if (version.isEmpty()) { + QDateTime lastMod = fileInfo.lastModified(); + version = "d" + lastMod.toString("yyyy.M.d"); + } + { // guess the mod name and mod if from the file name if there was no meta information QString guessedModName; int guessedModID = modID; -- cgit v1.3.1 From 9bc123e8e2dbd17508a68e4afc2eb881873601bd Mon Sep 17 00:00:00 2001 From: Tannin Date: Fri, 10 May 2013 10:57:35 +0200 Subject: - initial support for exposing the nexusbridge to python - started improving usability of nexus bridge - support for installers implemented in python --- src/downloadlist.h | 142 ++++++++++++++++++------------------ src/installationmanager.cpp | 16 ++-- src/mainwindow.cpp | 11 ++- src/mainwindow.h | 1 + src/modinfo.cpp | 62 +++------------- src/modinfo.h | 20 +++-- src/modinfodialog.cpp | 15 ++-- src/modlist.cpp | 13 +++- src/nexusdialog.cpp | 4 +- src/nexusinterface.cpp | 54 +++++++++----- src/nexusinterface.h | 43 +++++------ src/organizer.pro | 1 + src/resources.qrc | 1 + src/resources/x-office-calendar.png | Bin 0 -> 604 bytes src/version.rc | 4 +- 15 files changed, 192 insertions(+), 195 deletions(-) create mode 100644 src/resources/x-office-calendar.png (limited to 'src/installationmanager.cpp') diff --git a/src/downloadlist.h b/src/downloadlist.h index abd177b2..1ae97cd0 100644 --- a/src/downloadlist.h +++ b/src/downloadlist.h @@ -17,76 +17,72 @@ You should have received a copy of the GNU General Public License along with Mod Organizer. If not, see . */ -#ifndef DOWNLOADLIST_H -#define DOWNLOADLIST_H - -#include - - -class DownloadManager; - - -/** - * @brief model of the list of active and completed downloads - **/ -class DownloadList : public QAbstractTableModel -{ - - Q_OBJECT - -public: - - /** - * @brief constructor - * - * @param manager the download manager processing downloads - * @param parent parent object Defaults to 0. - **/ - explicit DownloadList(DownloadManager *manager, QObject *parent = 0); - - /** - * @brief retrieve the number of rows to display. Invoked by Qt - * - * @param parent not relevant for this implementation - * @return number of rows to display - **/ - virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; - - virtual int columnCount(const QModelIndex &parent) const; - - QModelIndex index(int row, int column, const QModelIndex &parent) const; - QModelIndex parent(const QModelIndex &child) const; - - virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const; - - /** - * @brief retrieve the data to display in a specific row. Invoked by Qt - * - * @param index location to look up - * @param role ... Defaults to Qt::DisplayRole. - * @return this implementation only returns the row, the QItemDelegate implementation is expected to fetch its information from the DownloadManager - **/ - virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; - -signals: - -public slots: - - /** - * @brief used to inform the model that data has changed - * - * @param row the row that changed. This can be negative to update the whole view - **/ - void update(int row); - - void aboutToUpdate(); - -private: - -private: - - DownloadManager *m_Manager; - -}; - -#endif // DOWNLOADLIST_H +#ifndef DOWNLOADLIST_H +#define DOWNLOADLIST_H + +#include + + +class DownloadManager; + + +/** + * @brief model of the list of active and completed downloads + **/ +class DownloadList : public QAbstractTableModel +{ + + Q_OBJECT + +public: + + /** + * @brief constructor + * + * @param manager the download manager processing downloads + * @param parent parent object Defaults to 0. + **/ + explicit DownloadList(DownloadManager *manager, QObject *parent = 0); + + /** + * @brief retrieve the number of rows to display. Invoked by Qt + * + * @param parent not relevant for this implementation + * @return number of rows to display + **/ + virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; + + virtual int columnCount(const QModelIndex &parent) const; + + QModelIndex index(int row, int column, const QModelIndex &parent) const; + QModelIndex parent(const QModelIndex &child) const; + + virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const; + + /** + * @brief retrieve the data to display in a specific row. Invoked by Qt + * + * @param index location to look up + * @param role ... Defaults to Qt::DisplayRole. + * @return this implementation only returns the row, the QItemDelegate implementation is expected to fetch its information from the DownloadManager + **/ + virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + +public slots: + + /** + * @brief used to inform the model that data has changed + * + * @param row the row that changed. This can be negative to update the whole view + **/ + void update(int row); + + void aboutToUpdate(); + +private: + + DownloadManager *m_Manager; + +}; + +#endif // DOWNLOADLIST_H diff --git a/src/installationmanager.cpp b/src/installationmanager.cpp index 16761f24..52ef01c1 100644 --- a/src/installationmanager.cpp +++ b/src/installationmanager.cpp @@ -693,7 +693,7 @@ bool InstallationManager::install(const QString &fileName, const QString &modsDi GuessedValue &modName, bool &hasIniTweaks) { QFileInfo fileInfo(fileName); - bool success = false; +// bool success = false; if (m_SupportedExtensions.find(fileInfo.suffix()) == m_SupportedExtensions.end()) { reportError(tr("File format \"%1\" not supported").arg(fileInfo.completeSuffix())); return false; @@ -706,7 +706,7 @@ bool InstallationManager::install(const QString &fileName, const QString &modsDi QString version = ""; QString newestVersion = ""; int categoryID = 0; - bool nameGuessed = false; +// bool nameGuessed = false; QString metaName = fileName.mid(0).append(".meta"); if (QFile(metaName).exists()) { @@ -804,10 +804,14 @@ bool InstallationManager::install(const QString &fileName, const QString &modsDi return false; } break; case IPluginInstaller::RESULT_SUCCESS: { - DirectoryTree::node_iterator iniTweakNode = filesTree->nodeFind(DirectoryTreeInformation("INI Tweaks")); - hasIniTweaks = (iniTweakNode != filesTree->nodesEnd()) && - ((*iniTweakNode)->numLeafs() != 0); - return true; + if (filesTree != NULL) { + DirectoryTree::node_iterator iniTweakNode = filesTree->nodeFind(DirectoryTreeInformation("INI Tweaks")); + hasIniTweaks = (iniTweakNode != filesTree->nodesEnd()) && + ((*iniTweakNode)->numLeafs() != 0); + return true; + } else { + return false; + } } break; } } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 2fd47537..50c81ccc 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -900,7 +900,7 @@ void MainWindow::registerPluginTool(IPluginTool *tool) action->setToolTip(tool->tooltip()); tool->setParentWidget(this); action->setData(qVariantFromValue((void*)tool)); - connect(action, SIGNAL(triggered()), this, SLOT(toolPluginInvoke())); + connect(action, SIGNAL(triggered()), this, SLOT(toolPluginInvoke()), Qt::QueuedConnection); QToolButton *toolBtn = qobject_cast(ui->toolBar->widgetForAction(ui->actionTool)); toolBtn->menu()->addAction(action); } @@ -911,6 +911,7 @@ bool MainWindow::registerPlugin(QObject *plugin) { // generic treatment for all plugins IPlugin *pluginObj = qobject_cast(plugin); if (pluginObj == NULL) { + qDebug("not an IPlugin"); return false; } m_Settings.registerPlugin(pluginObj); @@ -958,6 +959,8 @@ bool MainWindow::registerPlugin(QObject *plugin) } } + qDebug("no matching plugin interface"); + return addon; } @@ -1000,6 +1003,12 @@ IGameInfo &MainWindow::gameInfo() const } +IModRepositoryBridge *MainWindow::createNexusBridge() const +{ + return new NexusBridge(); +} + + QString MainWindow::profileName() const { if (m_CurrentProfile != NULL) { diff --git a/src/mainwindow.h b/src/mainwindow.h index e50a8c23..e398a674 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -94,6 +94,7 @@ public: void loadPlugins(); virtual MOBase::IGameInfo &gameInfo() const; + virtual MOBase::IModRepositoryBridge *createNexusBridge() const; virtual QString profileName() const; virtual QString profilePath() const; virtual QString downloadsPath() const; diff --git a/src/modinfo.cpp b/src/modinfo.cpp index d84a6aa0..2ac7182b 100644 --- a/src/modinfo.cpp +++ b/src/modinfo.cpp @@ -56,35 +56,6 @@ static bool ByName(const ModInfo::Ptr &LHS, const ModInfo::Ptr &RHS) return QString::compare(LHS->name(), RHS->name(), Qt::CaseInsensitive) < 0; } -ModInfo::NexusFileInfo::NexusFileInfo(const QString &data) -{ - QVariantList result = QtJson::Json::parse(data).toList(); - - while (result.length() < 7) { - result.append(QVariant()); - } - id = result.at(0).toInt(); - name = result.at(1).toString(); - url = result.at(2).toString(); - version = result.at(3).toString(); - description = result.at(4).toString(); - category = result.at(5).toInt(); - size = result.at(6).toInt(); -} - - -QString ModInfo::NexusFileInfo::toString() const -{ - return QString("[ %1,\"%2\",\"%3\",\"%4\",\"%5\",%6,%7 ]") - .arg(id) - .arg(name) - .arg(url) - .arg(version) - .arg(description.mid(0).replace("\"", "'")) - .arg(category) - .arg(size); -} - ModInfo::Ptr ModInfo::createFrom(const QDir &dir, DirectoryEntry **directoryStructure) { @@ -356,7 +327,7 @@ ModInfoRegular::ModInfoRegular(const QDir &path, DirectoryEntry **directoryStruc for (int i = 0; i < numNexusFiles; ++i) { metaFile.setArrayIndex(i); QString infoString = metaFile.value("info", "").toString(); - NexusFileInfo info(infoString); + ModRepositoryFileInfo *info = new ModRepositoryFileInfo(infoString, this); m_NexusFileInfos.push_back(info); } metaFile.endArray(); @@ -379,10 +350,10 @@ ModInfoRegular::ModInfoRegular(const QDir &path, DirectoryEntry **directoryStruc } } - connect(&m_NexusBridge, SIGNAL(nxmDescriptionAvailable(int,QVariant,QVariant)), this, SLOT(nxmDescriptionAvailable(int,QVariant,QVariant))); - connect(&m_NexusBridge, SIGNAL(nxmFilesAvailable(int,QVariant,QVariant)), this, SLOT(nxmFilesAvailable(int,QVariant,QVariant))); - connect(&m_NexusBridge, SIGNAL(nxmEndorsementToggled(int,QVariant,QVariant)), this, SLOT(nxmEndorsementToggled(int,QVariant,QVariant))); - connect(&m_NexusBridge, SIGNAL(nxmRequestFailed(int,QVariant,QString)), this, SLOT(nxmRequestFailed(int,QVariant,QString))); + connect(&m_NexusBridge, SIGNAL(descriptionAvailable(int,QVariant,QVariant)), this, SLOT(nxmDescriptionAvailable(int,QVariant,QVariant))); + connect(&m_NexusBridge, SIGNAL(filesAvailable(int,QVariant,const QList&)), this, SLOT(nxmFilesAvailable(int,QVariant,QList))); + connect(&m_NexusBridge, SIGNAL(endorsementToggled(int,QVariant,QVariant)), this, SLOT(nxmEndorsementToggled(int,QVariant,QVariant))); + connect(&m_NexusBridge, SIGNAL(requestFailed(int,QVariant,QString)), this, SLOT(nxmRequestFailed(int,QVariant,QString))); } @@ -422,7 +393,7 @@ void ModInfoRegular::saveMeta() metaFile.beginWriteArray("nexusFiles"); for (int i = 0; i < m_NexusFileInfos.size(); ++i) { metaFile.setArrayIndex(i); - metaFile.setValue("info", m_NexusFileInfos.at(i).toString()); + metaFile.setValue("info", m_NexusFileInfos.at(i)->toString()); } metaFile.endArray(); } else { @@ -454,24 +425,9 @@ void ModInfoRegular::nxmDescriptionAvailable(int, QVariant, QVariant resultData) } -void ModInfoRegular::nxmFilesAvailable(int, QVariant, QVariant resultData) +void ModInfoRegular::nxmFilesAvailable(int, QVariant, const QList &resultData) { - m_NexusFileInfos.clear(); - - QVariantList result = resultData.toList(); - - foreach(QVariant file, result) { - QVariantMap fileInfo = file.toMap(); - - m_NexusFileInfos.push_back(NexusFileInfo(fileInfo["id"].toInt(), - fileInfo["name"].toString(), - fileInfo["uri"].toString(), - fileInfo["version"].toString(), - fileInfo["description"].toString(), - fileInfo["category_id"].toInt(), - fileInfo["size"].toInt())); - } - + m_NexusFileInfos = resultData; m_LastNexusQuery = QDateTime::currentDateTime(); m_MetaInfoChanged = true; saveMeta(); @@ -697,7 +653,7 @@ QString ModInfoRegular::notes() const return m_Notes; } -void ModInfoRegular::getNexusFiles(QList::const_iterator &begin, QList::const_iterator &end) +void ModInfoRegular::getNexusFiles(QList::const_iterator &begin, QList::const_iterator &end) { begin = m_NexusFileInfos.begin(); end = m_NexusFileInfos.end(); diff --git a/src/modinfo.h b/src/modinfo.h index adf194dd..92752e4b 100644 --- a/src/modinfo.h +++ b/src/modinfo.h @@ -35,6 +35,7 @@ along with Mod Organizer. If not, see . #include #include +using MOBase::ModRepositoryFileInfo; /** * @brief Represents meta information about a single mod. @@ -79,7 +80,7 @@ public: ENDORSED_UNKNOWN, ENDORSED_NEVER }; - +/* struct NexusFileInfo { NexusFileInfo(const QString &data); NexusFileInfo(int id, const QString &name, const QString &url, const QString &version, @@ -95,7 +96,7 @@ public: int size; QString toString() const; - }; + };*/ public: @@ -373,7 +374,8 @@ public: * @param begin iterator to the first file * @param end iterator to one past the last file */ - virtual void getNexusFiles(QList::const_iterator &begin, QList::const_iterator &end) = 0; + virtual void getNexusFiles(QList::const_iterator &begin, + QList::const_iterator &end) = 0; /** * @return nexus description of the mod (html) @@ -684,7 +686,7 @@ public: * @param begin iterator to the first file * @param end iterator to one past the last file */ - virtual void getNexusFiles(QList::const_iterator &begin, QList::const_iterator &end); + virtual void getNexusFiles(QList::const_iterator &begin, QList::const_iterator &end); /** * @return nexus description of the mod (html) @@ -719,7 +721,7 @@ private: private slots: void nxmDescriptionAvailable(int modID, QVariant userData, QVariant resultData); - void nxmFilesAvailable(int, QVariant, QVariant resultData); + void nxmFilesAvailable(int, QVariant, const QList &resultData); void nxmEndorsementToggled(int, QVariant userData, QVariant resultData); void nxmRequestFailed(int modID, QVariant userData, const QString &errorMessage); @@ -746,7 +748,7 @@ private: QString m_InstallationFile; QString m_Notes; QString m_NexusDescription; - QList m_NexusFileInfos; + QList m_NexusFileInfos; QDateTime m_LastNexusQuery; @@ -782,7 +784,8 @@ public: virtual std::vector getFlags() const; virtual QString getDescription() const; virtual QDateTime getLastNexusQuery() const { return QDateTime(); } - virtual void getNexusFiles(QList::const_iterator&, QList::const_iterator&) {} + virtual void getNexusFiles(QList::const_iterator&, + QList::const_iterator&) {} virtual QString getNexusDescription() const { return QString(); } private: @@ -825,7 +828,8 @@ public: virtual int getHighlight() const; virtual QString getDescription() const; virtual QDateTime getLastNexusQuery() const { return QDateTime(); } - virtual void getNexusFiles(QList::const_iterator&, QList::const_iterator&) {} + virtual void getNexusFiles(QList::const_iterator&, + QList::const_iterator&) {} virtual QString getNexusDescription() const { return QString(); } private: diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp index 5d6f4a2b..d1c37263 100644 --- a/src/modinfodialog.cpp +++ b/src/modinfodialog.cpp @@ -781,20 +781,21 @@ void ModInfoDialog::modDetailsUpdated(bool success) // prevent sorting while we change the table filesWidget->setSortingEnabled(false); int row = 0; - QList::const_iterator current, end; + QList::const_iterator current, end; m_ModInfo->getNexusFiles(current, end); for (; current != end; ++current) { + ModRepositoryFileInfo *fileInfo = *current; filesWidget->insertRow(row); - int type = current->category; + int type = fileInfo->categoryID; filesWidget->setItem(row, 4, new QTableWidgetItem(QString("%1").arg(type))); filesWidget->setItem(row, 0, new QTableWidgetItem(getFileCategory(type))); - QTableWidgetItem *nameItem = new QTableWidgetItem(current->name); - nameItem->setToolTip(current->description); - nameItem->setData(Qt::UserRole, current->id); + QTableWidgetItem *nameItem = new QTableWidgetItem(fileInfo->name); + nameItem->setToolTip(fileInfo->description); + nameItem->setData(Qt::UserRole, fileInfo->fileID); filesWidget->setItem(row, 1, nameItem); - filesWidget->setItem(row, 2, new QTableWidgetItem(current->version)); + filesWidget->setItem(row, 2, new QTableWidgetItem(fileInfo->version.canonicalString())); QTableWidgetItem *sizeItem = new QTableWidgetItem(); - sizeItem->setData(Qt::DisplayRole, current->size); + sizeItem->setData(Qt::DisplayRole, fileInfo->fileSize); filesWidget->setItem(row, 3, sizeItem); ++row; } diff --git a/src/modlist.cpp b/src/modlist.cpp index 2183ce09..3fc8ae23 100644 --- a/src/modlist.cpp +++ b/src/modlist.cpp @@ -136,6 +136,8 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const QString version = modInfo->getVersion().canonicalString(); if (version.isEmpty() && modInfo->canBeUpdated()) { version = "?"; + } else if (version[0] == 'd') { + version.remove(0, 1); } return version; } else if (column == COL_PRIORITY) { @@ -228,10 +230,13 @@ QVariant ModList::data(const QModelIndex &modelIndex, int role) const } return result; } else if (role == Qt::DecorationRole) { - if ((column == COL_VERSION) && - modInfo->updateAvailable() && - modInfo->getNewestVersion().isValid()) { - return QIcon(":/MO/gui/update_available"); + if (column == COL_VERSION) { + if (modInfo->updateAvailable() && + modInfo->getNewestVersion().isValid()) { + return QIcon(":/MO/gui/update_available"); + } else if (modInfo->getVersion().isVersionDate()) { + return QIcon(":/MO/gui/version_date"); + } } return QVariant(); } else if (role == Qt::ForegroundRole) { diff --git a/src/nexusdialog.cpp b/src/nexusdialog.cpp index 6d8e850b..2569798e 100644 --- a/src/nexusdialog.cpp +++ b/src/nexusdialog.cpp @@ -168,7 +168,9 @@ void NexusDialog::loginFinished(bool necessary) void NexusDialog::loadNexus() { - m_View->load(QUrl(m_Url)); + if (m_View != NULL) { + m_View->load(QUrl(m_Url)); + } } diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp index 49cf595e..56752ca5 100644 --- a/src/nexusinterface.cpp +++ b/src/nexusinterface.cpp @@ -32,34 +32,35 @@ using namespace MOShared; NexusBridge::NexusBridge() + : m_Interface(NexusInterface::instance()) + , m_Url(MOBase::ToQString(MOShared::GameInfo::instance().getNexusInfoUrl())) { - m_Interface = NexusInterface::instance(); } -void NexusBridge::requestDescription(int modID, QVariant userData, const QString &url) +void NexusBridge::requestDescription(int modID, QVariant userData) { - m_RequestIDs.insert(m_Interface->requestDescription(modID, this, userData, url)); + m_RequestIDs.insert(m_Interface->requestDescription(modID, this, userData, m_Url)); } -void NexusBridge::requestFiles(int modID, QVariant userData, const QString &url) +void NexusBridge::requestFiles(int modID, QVariant userData) { - m_RequestIDs.insert(m_Interface->requestFiles(modID, this, userData, url)); + m_RequestIDs.insert(m_Interface->requestFiles(modID, this, userData, m_Url)); } -void NexusBridge::requestFileInfo(int modID, int fileID, QVariant userData, const QString &url) +void NexusBridge::requestFileInfo(int modID, int fileID, QVariant userData) { - m_RequestIDs.insert(m_Interface->requestFileInfo(modID, fileID, this, userData, url)); + m_RequestIDs.insert(m_Interface->requestFileInfo(modID, fileID, this, userData, m_Url)); } -void NexusBridge::requestDownloadURL(int modID, int fileID, QVariant userData, const QString &url) +void NexusBridge::requestDownloadURL(int modID, int fileID, QVariant userData) { - m_RequestIDs.insert(m_Interface->requestDownloadURL(modID, fileID, this, userData, url)); + m_RequestIDs.insert(m_Interface->requestDownloadURL(modID, fileID, this, userData, m_Url)); } -void NexusBridge::requestToggleEndorsement(int modID, bool endorse, QVariant userData, const QString &url) +void NexusBridge::requestToggleEndorsement(int modID, bool endorse, QVariant userData) { - m_RequestIDs.insert(m_Interface->requestToggleEndorsement(modID, endorse, this, userData, url)); + m_RequestIDs.insert(m_Interface->requestToggleEndorsement(modID, endorse, this, userData, m_Url)); } void NexusBridge::nxmDescriptionAvailable(int modID, QVariant userData, QVariant resultData, int requestID) @@ -67,7 +68,7 @@ void NexusBridge::nxmDescriptionAvailable(int modID, QVariant userData, QVariant std::set::iterator iter = m_RequestIDs.find(requestID); if (iter != m_RequestIDs.end()) { m_RequestIDs.erase(iter); - emit nxmDescriptionAvailable(modID, userData, resultData); + emit descriptionAvailable(modID, userData, resultData); } } @@ -76,7 +77,26 @@ void NexusBridge::nxmFilesAvailable(int modID, QVariant userData, QVariant resul std::set::iterator iter = m_RequestIDs.find(requestID); if (iter != m_RequestIDs.end()) { m_RequestIDs.erase(iter); - emit nxmFilesAvailable(modID, userData, resultData); + + QList fileInfoList; + + QVariantList resultList = resultData.toList(); + + foreach(QVariant file, resultList) { + ModRepositoryFileInfo *temp = new ModRepositoryFileInfo(NULL); + QVariantMap fileInfo = file.toMap(); + temp->uri = fileInfo["uri"].toString(); + temp->name = fileInfo["name"].toString(); + temp->description = fileInfo["description"].toString(); + temp->version = VersionInfo(fileInfo["version"].toString()); + temp->categoryID = fileInfo["category_id"].toInt(); + temp->fileID = fileInfo["id"].toInt(); + temp->fileSize = fileInfo["size"].toInt(); + fileInfoList.append(temp); + } + + emit bla(userData.toString()); + emit filesAvailable(modID, userData, fileInfoList); } } @@ -85,7 +105,7 @@ void NexusBridge::nxmFileInfoAvailable(int modID, int fileID, QVariant userData, std::set::iterator iter = m_RequestIDs.find(requestID); if (iter != m_RequestIDs.end()) { m_RequestIDs.erase(iter); - emit nxmFileInfoAvailable(modID, fileID, userData, resultData); + emit fileInfoAvailable(modID, fileID, userData, resultData); } } @@ -94,7 +114,7 @@ void NexusBridge::nxmDownloadURLsAvailable(int modID, int fileID, QVariant userD std::set::iterator iter = m_RequestIDs.find(requestID); if (iter != m_RequestIDs.end()) { m_RequestIDs.erase(iter); - emit nxmDownloadURLsAvailable(modID, fileID, userData, resultData); + //emit downloadURLsAvailable(modID, fileID, userData, resultData); } } @@ -103,7 +123,7 @@ void NexusBridge::nxmEndorsementToggled(int modID, QVariant userData, QVariant r std::set::iterator iter = m_RequestIDs.find(requestID); if (iter != m_RequestIDs.end()) { m_RequestIDs.erase(iter); - emit nxmEndorsementToggled(modID, userData, resultData); + //emit endorsementToggled(modID, userData, resultData); } } @@ -112,7 +132,7 @@ void NexusBridge::nxmRequestFailed(int modID, QVariant userData, int requestID, std::set::iterator iter = m_RequestIDs.find(requestID); if (iter != m_RequestIDs.end()) { m_RequestIDs.erase(iter); - emit nxmRequestFailed(modID, userData, errorMessage); + //emit requestFailed(modID, userData, errorMessage); } } diff --git a/src/nexusinterface.h b/src/nexusinterface.h index cca84e06..cb455e93 100644 --- a/src/nexusinterface.h +++ b/src/nexusinterface.h @@ -26,6 +26,7 @@ along with Mod Organizer. If not, see . #include "utility.h" #include #include +#include #include #include #include @@ -46,7 +47,7 @@ class NexusInterface; * NexusBridge does this automatically. Users connect to the signals of NexusBridge they intend * to handle and only receive the signals the caused **/ -class NexusBridge : public QObject +class NexusBridge : public MOBase::IModRepositoryBridge { Q_OBJECT @@ -62,18 +63,15 @@ public: * @param userData user data to be returned with the result * @param url the url to request from **/ - void requestDescription(int modID, QVariant userData, - const QString &url = MOBase::ToQString(MOShared::GameInfo::instance().getNexusInfoUrl())); + virtual void requestDescription(int modID, QVariant userData); /** * @brief request a list of the files belonging to a mod * * @param modID id of the mod caller is interested in * @param userData user data to be returned with the result - * @param url the url to request from **/ - void requestFiles(int modID, QVariant userData, - const QString &url = MOBase::ToQString(MOShared::GameInfo::instance().getNexusInfoUrl())); + virtual void requestFiles(int modID, QVariant userData); /** * @brief request info about a single file of a mod @@ -81,10 +79,8 @@ public: * @param modID id of the mod caller is interested in * @param fileID id of the file the caller is interested in * @param userData user data to be returned with the result - * @param url the url to request from **/ - void requestFileInfo(int modID, int fileID, QVariant userData, - const QString &url = MOBase::ToQString(MOShared::GameInfo::instance().getNexusInfoUrl())); + virtual void requestFileInfo(int modID, int fileID, QVariant userData); /** * @brief request the download url of a file @@ -92,28 +88,28 @@ public: * @param modID id of the mod caller is interested in * @param fileID id of the file the caller is interested in * @param userData user data to be returned with the result - * @param url the url to request from **/ - void requestDownloadURL(int modID, int fileID, QVariant userData, - const QString &url = MOBase::ToQString(MOShared::GameInfo::instance().getNexusInfoUrl())); + virtual void requestDownloadURL(int modID, int fileID, QVariant userData); /** * @brief requestToggleEndorsement - * @param modID - * @param userData - * @param url + * @param modID id of the mod caller is interested in + * @param userData user data to be returned with the result */ - void requestToggleEndorsement(int modID, bool endorse, QVariant userData, - const QString &url = MOBase::ToQString(MOShared::GameInfo::instance().getNexusInfoUrl())); + virtual void requestToggleEndorsement(int modID, bool endorse, QVariant userData); +/* +signals: + + void descriptionAvailable(int modID, QVariant userData, QVariant resultData); + void filesAvailable(int modID, QVariant userData, const QList &resultData); + void fileInfoAvailable(int modID, int fileID, QVariant userData, QVariant resultData); + void downloadURLsAvailable(int modID, int fileID, QVariant userData, QVariant resultData); + void endorsementToggled(int modID, QVariant userData, QVariant resultData); + void requestFailed(int modID, QVariant userData, const QString &errorMessage);*/ signals: - void nxmDescriptionAvailable(int modID, QVariant userData, QVariant resultData); - void nxmFilesAvailable(int modID, QVariant userData, QVariant resultData); - void nxmFileInfoAvailable(int modID, int fileID, QVariant userData, QVariant resultData); - void nxmDownloadURLsAvailable(int modID, int fileID, QVariant userData, QVariant resultData); - void nxmEndorsementToggled(int modID, QVariant userData, QVariant resultData); - void nxmRequestFailed(int modID, QVariant userData, const QString &errorMessage); + void bla(QString userData); public slots: @@ -127,6 +123,7 @@ public slots: private: NexusInterface *m_Interface; + QString m_Url; std::set m_RequestIDs; }; diff --git a/src/organizer.pro b/src/organizer.pro index cfdf990b..c4a829cf 100644 --- a/src/organizer.pro +++ b/src/organizer.pro @@ -195,6 +195,7 @@ CONFIG(debug, debug|release) { LIBS += -L$$OUT_PWD/../shared/release -L$$OUT_PWD/../bsatk/release LIBS += -L$$OUT_PWD/../uibase/release QMAKE_CXXFLAGS += /Zi + QMAKE_CXXFLAGS -= -O2 QMAKE_LFLAGS += /DEBUG } diff --git a/src/resources.qrc b/src/resources.qrc index 855a23fc..df17ea79 100644 --- a/src/resources.qrc +++ b/src/resources.qrc @@ -50,5 +50,6 @@ resources/conflict-overwritten.png resources/conflict-redundant.png resources/accessories-text-editor.png + resources/x-office-calendar.png diff --git a/src/resources/x-office-calendar.png b/src/resources/x-office-calendar.png new file mode 100644 index 00000000..f6978d7d Binary files /dev/null and b/src/resources/x-office-calendar.png differ diff --git a/src/version.rc b/src/version.rc index 3b2c4804..9921149a 100644 --- a/src/version.rc +++ b/src/version.rc @@ -1,7 +1,7 @@ #include "Winver.h" -#define VER_FILEVERSION 0,13,0,0 -#define VER_FILEVERSION_STR 0,13,0,0 +#define VER_FILEVERSION 0,99,0,0 +#define VER_FILEVERSION_STR 0,99,0,0 VS_VERSION_INFO VERSIONINFO FILEVERSION VER_FILEVERSION -- cgit v1.3.1