diff options
| author | Tannin <devnull@localhost> | 2015-04-12 15:52:22 +0200 |
|---|---|---|
| committer | Tannin <devnull@localhost> | 2015-04-12 15:52:22 +0200 |
| commit | fd584f803893c84049146f0d6d6d2d5f758f55e6 (patch) | |
| tree | 457ef616e39cff936c912253c39af2bf9f0d94d3 /src | |
| parent | 942bd04e5e3053b4ee3d7d94d51ce8cfa34cb9b9 (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.cpp | 4 | ||||
| -rw-r--r-- | src/mainwindow.h | 5 | ||||
| -rw-r--r-- | src/organizercore.cpp | 13 | ||||
| -rw-r--r-- | src/organizercore.h | 1 |
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;
|
