logic: don't refresh project on reopen

This commit is contained in:
Eberhard Graether
2015-09-29 14:47:36 +02:00
parent eeed22f478
commit 8777c9874b
3 changed files with 26 additions and 2 deletions
+1 -1
View File
@@ -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()
+22 -1
View File
@@ -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<Storage>(FilePath(path).replaceExtension("sqlite"));
FilePath dbPath = FilePath(path).replaceExtension("sqlite");
m_storageWasLoaded = dbPath.exists();
m_storage = std::make_shared<Storage>(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)
{
}
+3
View File
@@ -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<Storage> m_storage;
bool m_storageWasLoaded;
};
#endif // PROJECT_H