summaryrefslogtreecommitdiff
path: root/src/modinforegular.cpp
diff options
context:
space:
mode:
authorLostDragonist <lost.dragonist@gmail.com>2019-03-06 20:12:09 -0600
committerLostDragonist <lost.dragonist@gmail.com>2019-03-07 11:21:47 -0600
commitd5332c5080ea5e1d0812cc900bb5ed6e20ff8f0e (patch)
treefe39b16810e537e7e4f3a97b4e2c599590748067 /src/modinforegular.cpp
parent09a68079bb9ac083bd060b1e75bf329917a7d888 (diff)
Add support for displaying tracked mods and setting tracked status
Diffstat (limited to 'src/modinforegular.cpp')
-rw-r--r--src/modinforegular.cpp51
1 files changed, 49 insertions, 2 deletions
diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp
index 2545b3f8..a271c4e8 100644
--- a/src/modinforegular.cpp
+++ b/src/modinforegular.cpp
@@ -35,6 +35,7 @@ ModInfoRegular::ModInfoRegular(PluginContainer *pluginContainer, const IPluginGa
, m_Validated(false)
, m_MetaInfoChanged(false)
, m_EndorsedState(ENDORSED_UNKNOWN)
+ , m_TrackedState(TRACKED_UNKNOWN)
, m_NexusBridge(pluginContainer)
{
testValid();
@@ -55,6 +56,8 @@ ModInfoRegular::ModInfoRegular(PluginContainer *pluginContainer, const IPluginGa
, this, SLOT(nxmDescriptionAvailable(QString,int,QVariant,QVariant)));
connect(&m_NexusBridge, SIGNAL(endorsementToggled(QString,int,QVariant,QVariant))
, this, SLOT(nxmEndorsementToggled(QString,int,QVariant,QVariant)));
+ connect(&m_NexusBridge, SIGNAL(trackingToggled(QString,int,QVariant,bool))
+ , this, SLOT(nxmTrackingToggled(QString,int,QVariant,bool)));
connect(&m_NexusBridge, SIGNAL(requestFailed(QString,int,int,QVariant,QNetworkReply::NetworkError,QString))
, this, SLOT(nxmRequestFailed(QString,int,int,QVariant,QNetworkReply::NetworkError,QString)));
}
@@ -102,6 +105,7 @@ void ModInfoRegular::readMeta()
m_LastNexusUpdate = QDateTime::fromString(metaFile.value("lastNexusUpdate", "").toString(), Qt::ISODate);
m_NexusLastModified = QDateTime::fromString(metaFile.value("nexusLastModified", QDateTime::currentDateTimeUtc()).toString(), Qt::ISODate);
m_Color = metaFile.value("color",QColor()).value<QColor>();
+ m_TrackedState = metaFile.value("tracked", false).toBool() ? TRACKED_TRUE : TRACKED_FALSE;
if (metaFile.contains("endorsed")) {
if (metaFile.value("endorsed").canConvert<int>()) {
switch (metaFile.value("endorsed").toInt()) {
@@ -114,7 +118,7 @@ void ModInfoRegular::readMeta()
m_EndorsedState = metaFile.value("endorsed", false).toBool() ? ENDORSED_TRUE : ENDORSED_FALSE;
}
}
-
+
QString categoriesString = metaFile.value("category", "").toString();
QStringList categories = categoriesString.split(',', QString::SkipEmptyParts);
@@ -173,6 +177,7 @@ void ModInfoRegular::saveMeta()
if (m_EndorsedState != ENDORSED_UNKNOWN) {
metaFile.setValue("endorsed", m_EndorsedState);
}
+ metaFile.setValue("tracked", m_TrackedState);
metaFile.remove("installedFiles");
metaFile.beginWriteArray("installedFiles");
@@ -259,6 +264,18 @@ void ModInfoRegular::nxmEndorsementToggled(QString, int, QVariant, QVariant resu
}
+void ModInfoRegular::nxmTrackingToggled(QString, int, QVariant, bool tracked)
+{
+ if (tracked)
+ m_TrackedState = TRACKED_TRUE;
+ else
+ m_TrackedState = TRACKED_FALSE;
+ m_MetaInfoChanged = true;
+ saveMeta();
+ emit modDetailsUpdated(true);
+}
+
+
void ModInfoRegular::nxmRequestFailed(QString, int, int, QVariant userData, QNetworkReply::NetworkError error, const QString &errorMessage)
{
QString fullMessage = errorMessage;
@@ -414,6 +431,14 @@ void ModInfoRegular::setEndorsedState(EEndorsedState endorsedState)
}
}
+void ModInfoRegular::setTrackedState(ETrackedState trackedState)
+{
+ if (trackedState != m_TrackedState) {
+ m_TrackedState = trackedState;
+ m_MetaInfoChanged = true;
+ }
+}
+
void ModInfoRegular::setInstallationFile(const QString &fileName)
{
m_InstallationFile = fileName;
@@ -433,13 +458,19 @@ void ModInfoRegular::setIsEndorsed(bool endorsed)
}
}
-
void ModInfoRegular::setNeverEndorse()
{
m_EndorsedState = ENDORSED_NEVER;
m_MetaInfoChanged = true;
}
+void ModInfoRegular::setIsTracked(bool tracked)
+{
+ if (tracked != (m_TrackedState == TRACKED_TRUE)) {
+ m_TrackedState = tracked ? TRACKED_TRUE : TRACKED_FALSE;
+ m_MetaInfoChanged = true;
+ }
+}
void ModInfoRegular::setColor(QColor color)
{
@@ -465,6 +496,13 @@ void ModInfoRegular::endorse(bool doEndorse)
}
}
+void ModInfoRegular::track(bool doTrack)
+{
+ if (doTrack != (m_TrackedState == TRACKED_TRUE)) {
+ m_NexusBridge.requestToggleTracking(m_GameName, getNexusID(), doTrack, QVariant(1));
+ }
+}
+
void ModInfoRegular::markConverted(bool converted)
{
m_Converted = converted;
@@ -518,6 +556,10 @@ std::vector<ModInfo::EFlag> ModInfoRegular::getFlags() const
Settings::instance().endorsementIntegration()) {
result.push_back(ModInfo::FLAG_NOTENDORSED);
}
+ if ((m_NexusID > 0) &&
+ (trackedState() == TRACKED_TRUE)) {
+ result.push_back(ModInfo::FLAG_TRACKED);
+ }
if (!isValid() && !m_Validated) {
result.push_back(ModInfo::FLAG_INVALID);
}
@@ -667,6 +709,11 @@ ModInfoRegular::EEndorsedState ModInfoRegular::endorsedState() const
return m_EndorsedState;
}
+ModInfoRegular::ETrackedState ModInfoRegular::trackedState() const
+{
+ return m_TrackedState;
+}
+
QDateTime ModInfoRegular::getLastNexusUpdate() const
{
return m_LastNexusUpdate;