summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTannin <devnull@localhost>2015-04-12 15:52:22 +0200
committerTannin <devnull@localhost>2015-04-12 15:52:22 +0200
commitfd584f803893c84049146f0d6d6d2d5f758f55e6 (patch)
tree457ef616e39cff936c912253c39af2bf9f0d94d3 /src
parent942bd04e5e3053b4ee3d7d94d51ce8cfa34cb9b9 (diff)
- operations not possible during directory refresh can now be delayed unit after
the refresh. - will now rewrite the plugin list(s) immediately after running external application - changes missing from changeset 9f522a324341
Diffstat (limited to 'src')
-rw-r--r--src/mainwindow.cpp4
-rw-r--r--src/mainwindow.h5
-rw-r--r--src/organizercore.cpp13
-rw-r--r--src/organizercore.h1
4 files changed, 21 insertions, 2 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 286c9013..d36ec158 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -4436,6 +4436,10 @@ void MainWindow::on_bossButton_clicked()
QFile::remove(m_OrganizerCore.currentProfile()->getLoadOrderFileName());
}
m_OrganizerCore.refreshESPList();
+ if (GameInfo::instance().getLoadOrderMechanism() == GameInfo::TYPE_FILETIME) {
+ // the load order should have been retrieved from file time, now save it to our own format
+ m_OrganizerCore.savePluginList();
+ }
}
}
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 88419594..51d67e1e 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -247,6 +247,11 @@ private:
void scheduleUpdateButton();
+ QDir currentSavesDir() const;
+
+ void startMonitorSaves();
+ void stopMonitorSaves();
+
private:
static const char *PATTERN_BACKUP_GLOB;
diff --git a/src/organizercore.cpp b/src/organizercore.cpp
index 50e72548..5375cd3a 100644
--- a/src/organizercore.cpp
+++ b/src/organizercore.cpp
@@ -892,8 +892,13 @@ void OrganizerCore::spawnBinary(const QFileInfo &binary, const QString &argument
// need to remove our stored load order because it may be outdated if a foreign tool changed the
// file time. After removing that file, refreshESPList will use the file time as the order
if (GameInfo::instance().getLoadOrderMechanism() == GameInfo::TYPE_FILETIME) {
+ qDebug("removing loadorder.txt");
QFile::remove(m_CurrentProfile->getLoadOrderFileName());
- refreshESPList();
+ }
+ refreshESPList();
+ if (GameInfo::instance().getLoadOrderMechanism() == GameInfo::TYPE_FILETIME) {
+ // the load order should have been retrieved from file time, now save it to our own format
+ savePluginList();
}
m_FinishedRun(binary.absoluteFilePath(), processExitCode);
@@ -1311,6 +1316,9 @@ void OrganizerCore::directory_refreshed()
ModInfo::Ptr modInfo = ModInfo::getByIndex(i);
modInfo->clearCaches();
}
+ for (auto task : m_PostRefreshTasks) {
+ task();
+ }
}
void OrganizerCore::profileRefresh()
@@ -1480,7 +1488,8 @@ bool OrganizerCore::saveCurrentLists()
void OrganizerCore::savePluginList()
{
if (m_DirectoryUpdate) {
- qWarning("Can't save plugin lists now, might outdated");
+ // delay save till after directory update
+ m_PostRefreshTasks.append([&] () { this->savePluginList(); });
return;
}
m_PluginList.saveTo(m_CurrentProfile->getPluginsFileName(),
diff --git a/src/organizercore.h b/src/organizercore.h
index bb35cbb5..e9914ea7 100644
--- a/src/organizercore.h
+++ b/src/organizercore.h
@@ -244,6 +244,7 @@ private:
PluginList m_PluginList;
QList<std::function<void()>> m_PostLoginTasks;
+ QList<std::function<void()>> m_PostRefreshTasks;
ExecutablesList m_ExecutablesList;
QStringList m_PendingDownloads;