From fd584f803893c84049146f0d6d6d2d5f758f55e6 Mon Sep 17 00:00:00 2001 From: Tannin Date: Sun, 12 Apr 2015 15:52:22 +0200 Subject: - 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 --- src/organizercore.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/organizercore.cpp') 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(), -- cgit v1.3.1