summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSilarn <jrim@rimpo.org>2018-04-11 10:58:22 -0500
committerSilarn <jrim@rimpo.org>2018-04-11 10:58:22 -0500
commite037caf58e918c5bf4693e800069098d74ff5e96 (patch)
tree2a1835ca2a41d3c2342594e701d8fb52f3efda01 /src
parente33da8402c9f843b2efe3883fba518bdd42bcdd3 (diff)
Fix both remove and reinstall updating hidden downloads
Diffstat (limited to 'src')
-rw-r--r--src/downloadmanager.cpp21
-rw-r--r--src/downloadmanager.h2
-rw-r--r--src/organizercore.cpp2
3 files changed, 23 insertions, 2 deletions
diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp
index c935d20b..569a7d31 100644
--- a/src/downloadmanager.cpp
+++ b/src/downloadmanager.cpp
@@ -902,6 +902,22 @@ void DownloadManager::markInstalled(int index)
setState(m_ActiveDownloads.at(index), STATE_INSTALLED);
}
+void DownloadManager::markInstalled(QString fileName)
+{
+ int index = indexByName(fileName);
+ if (index >= 0) {
+ markInstalled(index);
+ } else {
+ DownloadInfo *info = getDownloadInfo(fileName);
+ if (info != nullptr) {
+ QSettings metaFile(info->m_Output.fileName() + ".meta", QSettings::IniFormat);
+ metaFile.setValue("installed", true);
+ metaFile.setValue("uninstalled", false);
+ }
+ delete info;
+ }
+}
+
DownloadManager::DownloadInfo* DownloadManager::getDownloadInfo(QString fileName)
{
return DownloadInfo::createFromMeta(fileName, true);
@@ -927,12 +943,13 @@ void DownloadManager::markUninstalled(QString fileName)
if (index >= 0) {
markUninstalled(index);
} else {
- DownloadInfo *info = getDownloadInfo(fileName);
+ QString filePath = QDir::fromNativeSeparators(m_OutputDirectory) + "/" + fileName;
+ DownloadInfo *info = getDownloadInfo(filePath);
if (info != nullptr) {
QSettings metaFile(info->m_Output.fileName() + ".meta", QSettings::IniFormat);
metaFile.setValue("uninstalled", true);
- setState(info, STATE_UNINSTALLED);
}
+ delete info;
}
}
diff --git a/src/downloadmanager.h b/src/downloadmanager.h
index 059c6cb5..a6d3b20c 100644
--- a/src/downloadmanager.h
+++ b/src/downloadmanager.h
@@ -307,6 +307,8 @@ public:
*/
void markInstalled(int index);
+ void markInstalled(QString download);
+
/**
* @brief mark a download as uninstalled
*
diff --git a/src/organizercore.cpp b/src/organizercore.cpp
index 895b3b9c..999c7732 100644
--- a/src/organizercore.cpp
+++ b/src/organizercore.cpp
@@ -895,6 +895,8 @@ MOBase::IModInterface *OrganizerCore::installMod(const QString &fileName,
ModInfoDialog::TAB_INIFILES);
}
m_ModInstalled(modName);
+ m_DownloadManager.markInstalled(fileName);
+ emit modInstalled(modName);
return modInfo.data();
} else {
reportError(tr("mod \"%1\" not found").arg(modName));