summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTannin <devnull@localhost>2013-05-10 10:57:35 +0200
committerTannin <devnull@localhost>2013-05-10 10:57:35 +0200
commit9bc123e8e2dbd17508a68e4afc2eb881873601bd (patch)
tree9e082b7cfca4069d4f47f2a639b570b9ad0a167a
parentd161e1a0d61181185323fcb547d9e0651d546fb2 (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.h142
-rw-r--r--src/installationmanager.cpp16
-rw-r--r--src/mainwindow.cpp11
-rw-r--r--src/mainwindow.h1
-rw-r--r--src/modinfo.cpp62
-rw-r--r--src/modinfo.h20
-rw-r--r--src/modinfodialog.cpp15
-rw-r--r--src/modlist.cpp13
-rw-r--r--src/nexusdialog.cpp4
-rw-r--r--src/nexusinterface.cpp54
-rw-r--r--src/nexusinterface.h43
-rw-r--r--src/organizer.pro1
-rw-r--r--src/resources.qrc1
-rw-r--r--src/resources/x-office-calendar.pngbin0 -> 604 bytes
-rw-r--r--src/version.rc4
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
new file mode 100644
index 00000000..f6978d7d
--- /dev/null
+++ b/src/resources/x-office-calendar.png
Binary files 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