From 8777c9874b834dd6636e73bf473354491ec86a4e Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Tue, 29 Sep 2015 14:47:36 +0200 Subject: [PATCH] logic: don't refresh project on reopen --- src/lib/Application.cpp | 2 +- src/lib/Project.cpp | 23 ++++++++++++++++++++++- src/lib/Project.h | 3 +++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/lib/Application.cpp b/src/lib/Application.cpp index 03d6c62b..d03aeaee 100644 --- a/src/lib/Application.cpp +++ b/src/lib/Application.cpp @@ -76,7 +76,7 @@ void Application::loadProject(const FilePath& projectSettingsFilePath) m_project = Project::create(m_storageCache.get()); m_project->loadProjectSettings(projectSettingsFilePath); - m_project->parseCode(); + m_project->loadStorage(); } void Application::refreshProject() diff --git a/src/lib/Project.cpp b/src/lib/Project.cpp index 79972daa..547b28f1 100644 --- a/src/lib/Project.cpp +++ b/src/lib/Project.cpp @@ -72,6 +72,22 @@ void Project::clearStorage() } } +void Project::loadStorage() +{ + if (m_storageWasLoaded) + { + m_storage->startParsing(); + m_storage->finishParsing(); + MessageFinishedParsing(0, 0, 0, 0).dispatch(); + } + else + { + parseCode(); + } + + m_storageWasLoaded = true; +} + void Project::parseCode() { if (m_projectSettingsFilepath.empty()) @@ -119,13 +135,17 @@ void Project::logStats() const void Project::setProjectSettingsFilePath(const FilePath& path) { + m_storageWasLoaded = false; + if (path.empty()) { m_storage.reset(); } else if (m_projectSettingsFilepath != path) { - m_storage = std::make_shared(FilePath(path).replaceExtension("sqlite")); + FilePath dbPath = FilePath(path).replaceExtension("sqlite"); + m_storageWasLoaded = dbPath.exists(); + m_storage = std::make_shared(dbPath); } m_storageAccessProxy->setSubject(m_storage.get()); @@ -180,5 +200,6 @@ Parser::Arguments Project::getParserArguments() const Project::Project(StorageAccessProxy* storageAccessProxy) : m_storageAccessProxy(storageAccessProxy) + , m_storageWasLoaded(false) { } diff --git a/src/lib/Project.h b/src/lib/Project.h index 42474e28..e5de2aba 100644 --- a/src/lib/Project.h +++ b/src/lib/Project.h @@ -22,6 +22,8 @@ public: void reloadProjectSettings(); void clearStorage(); + void loadStorage(); + void parseCode(); void logStats() const; @@ -42,6 +44,7 @@ private: FileManager m_fileManager; std::shared_ptr m_storage; + bool m_storageWasLoaded; }; #endif // PROJECT_H