diff options
| author | Tannin <devnull@localhost> | 2013-05-10 10:57:35 +0200 |
|---|---|---|
| committer | Tannin <devnull@localhost> | 2013-05-10 10:57:35 +0200 |
| commit | 9bc123e8e2dbd17508a68e4afc2eb881873601bd (patch) | |
| tree | 9e082b7cfca4069d4f47f2a639b570b9ad0a167a | |
| parent | d161e1a0d61181185323fcb547d9e0651d546fb2 (diff) | |
- initial support for exposing the nexusbridge to python
- started improving usability of nexus bridge
- support for installers implemented in python
| -rw-r--r-- | src/downloadlist.h | 142 | ||||
| -rw-r--r-- | src/installationmanager.cpp | 16 | ||||
| -rw-r--r-- | src/mainwindow.cpp | 11 | ||||
| -rw-r--r-- | src/mainwindow.h | 1 | ||||
| -rw-r--r-- | src/modinfo.cpp | 62 | ||||
| -rw-r--r-- | src/modinfo.h | 20 | ||||
| -rw-r--r-- | src/modinfodialog.cpp | 15 | ||||
| -rw-r--r-- | src/modlist.cpp | 13 | ||||
| -rw-r--r-- | src/nexusdialog.cpp | 4 | ||||
| -rw-r--r-- | src/nexusinterface.cpp | 54 | ||||
| -rw-r--r-- | src/nexusinterface.h | 43 | ||||
| -rw-r--r-- | src/organizer.pro | 1 | ||||
| -rw-r--r-- | src/resources.qrc | 1 | ||||
| -rw-r--r-- | src/resources/x-office-calendar.png | bin | 0 -> 604 bytes | |||
| -rw-r--r-- | src/version.rc | 4 |
15 files changed, 192 insertions, 195 deletions
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 <http://www.gnu.org/licenses/>. */ -#ifndef DOWNLOADLIST_H
-#define DOWNLOADLIST_H
-
-#include <QAbstractTableModel>
-
-
-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 <QAbstractTableModel> + + +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<QString> &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<QToolButton*>(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<IPlugin*>(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<ModRepositoryFileInfo*>&)), this, SLOT(nxmFilesAvailable(int,QVariant,QList<ModRepositoryFileInfo*>))); + 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<ModRepositoryFileInfo*> &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<ModInfo::NexusFileInfo>::const_iterator &begin, QList<ModInfo::NexusFileInfo>::const_iterator &end) +void ModInfoRegular::getNexusFiles(QList<ModRepositoryFileInfo*>::const_iterator &begin, QList<ModRepositoryFileInfo*>::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 <http://www.gnu.org/licenses/>. #include <set> #include <vector> +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<NexusFileInfo>::const_iterator &begin, QList<NexusFileInfo>::const_iterator &end) = 0; + virtual void getNexusFiles(QList<MOBase::ModRepositoryFileInfo*>::const_iterator &begin, + QList<MOBase::ModRepositoryFileInfo*>::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<NexusFileInfo>::const_iterator &begin, QList<NexusFileInfo>::const_iterator &end); + virtual void getNexusFiles(QList<MOBase::ModRepositoryFileInfo*>::const_iterator &begin, QList<MOBase::ModRepositoryFileInfo*>::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<ModRepositoryFileInfo*> &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<NexusFileInfo> m_NexusFileInfos; + QList<MOBase::ModRepositoryFileInfo*> m_NexusFileInfos; QDateTime m_LastNexusQuery; @@ -782,7 +784,8 @@ public: virtual std::vector<EFlag> getFlags() const; virtual QString getDescription() const; virtual QDateTime getLastNexusQuery() const { return QDateTime(); } - virtual void getNexusFiles(QList<NexusFileInfo>::const_iterator&, QList<NexusFileInfo>::const_iterator&) {} + virtual void getNexusFiles(QList<MOBase::ModRepositoryFileInfo*>::const_iterator&, + QList<MOBase::ModRepositoryFileInfo*>::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<NexusFileInfo>::const_iterator&, QList<NexusFileInfo>::const_iterator&) {} + virtual void getNexusFiles(QList<MOBase::ModRepositoryFileInfo*>::const_iterator&, + QList<MOBase::ModRepositoryFileInfo*>::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<ModInfo::NexusFileInfo>::const_iterator current, end; + QList<ModRepositoryFileInfo*>::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<int>::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<int>::iterator iter = m_RequestIDs.find(requestID); if (iter != m_RequestIDs.end()) { m_RequestIDs.erase(iter); - emit nxmFilesAvailable(modID, userData, resultData); + + QList<ModRepositoryFileInfo*> 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<int>::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<int>::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<int>::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<int>::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 <http://www.gnu.org/licenses/>. #include "utility.h" #include <gameinfo.h> #include <versioninfo.h> +#include <imodrepositorybridge.h> #include <QNetworkReply> #include <QNetworkDiskCache> #include <QQueue> @@ -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<MOBase::NexusFileInfo*> &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<int> 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 @@ <file alias="emblem_conflict_overwritten">resources/conflict-overwritten.png</file> <file alias="emblem_conflict_redundant">resources/conflict-redundant.png</file> <file alias="emblem_notes">resources/accessories-text-editor.png</file> + <file alias="version_date">resources/x-office-calendar.png</file> </qresource> </RCC> diff --git a/src/resources/x-office-calendar.png b/src/resources/x-office-calendar.png Binary files differnew file mode 100644 index 00000000..f6978d7d --- /dev/null +++ b/src/resources/x-office-calendar.png 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
|
