logic: Fixed crash when refreshing project after deleting coatidb
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
</language_settings>
|
||||
<source>
|
||||
<source_paths>
|
||||
<source_path>C:/Users/Manuel/FH/MSc/Masterproject/Project/bin/app/data/projects/tictactoe/src</source_path>
|
||||
<source_path>./src</source_path>
|
||||
</source_paths>
|
||||
</source>
|
||||
</config>
|
||||
|
||||
@@ -88,8 +88,7 @@ void Application::loadProject(const FilePath& projectSettingsFilePath)
|
||||
m_componentManager->refreshViews();
|
||||
|
||||
m_project = Project::create(m_storageCache.get());
|
||||
m_project->loadProjectSettings(projectSettingsFilePath);
|
||||
m_project->loadStorage();
|
||||
m_project->loadProject(projectSettingsFilePath);
|
||||
|
||||
m_mainView->updateRecentProjectMenu();
|
||||
}
|
||||
@@ -101,13 +100,12 @@ void Application::refreshProject()
|
||||
m_storageCache->clear();
|
||||
m_componentManager->refreshViews();
|
||||
|
||||
m_project->reloadProjectSettings();
|
||||
m_project->parseCode();
|
||||
m_project->reloadProject();
|
||||
}
|
||||
|
||||
void Application::saveProject(const FilePath& projectSettingsFilePath)
|
||||
{
|
||||
if (!m_project->saveProjectSettings(projectSettingsFilePath))
|
||||
if (!m_project->saveProject(projectSettingsFilePath))
|
||||
{
|
||||
LOG_ERROR("No Project Settings File defined");
|
||||
}
|
||||
|
||||
+31
-22
@@ -25,7 +25,7 @@ Project::~Project()
|
||||
{
|
||||
}
|
||||
|
||||
bool Project::loadProjectSettings(const FilePath& projectSettingsFile)
|
||||
bool Project::loadProject(const FilePath& projectSettingsFile)
|
||||
{
|
||||
bool success = ProjectSettings::getInstance()->load(projectSettingsFile);
|
||||
if (success)
|
||||
@@ -33,10 +33,24 @@ bool Project::loadProjectSettings(const FilePath& projectSettingsFile)
|
||||
setProjectSettingsFilePath(projectSettingsFile);
|
||||
updateFileManager();
|
||||
}
|
||||
|
||||
if (m_storageWasLoaded)
|
||||
{
|
||||
m_storage->startParsing();
|
||||
m_storage->finishParsing();
|
||||
MessageFinishedParsing(0, 0, 0, m_storage->getErrorCount()).dispatch();
|
||||
}
|
||||
else
|
||||
{
|
||||
parseCode();
|
||||
}
|
||||
|
||||
m_storageWasLoaded = true;
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
bool Project::saveProjectSettings(const FilePath& projectSettingsFile)
|
||||
bool Project::saveProject(const FilePath& projectSettingsFile)
|
||||
{
|
||||
if (!projectSettingsFile.empty())
|
||||
{
|
||||
@@ -55,13 +69,17 @@ bool Project::saveProjectSettings(const FilePath& projectSettingsFile)
|
||||
return true;
|
||||
}
|
||||
|
||||
void Project::reloadProjectSettings()
|
||||
void Project::reloadProject()
|
||||
{
|
||||
if (!m_projectSettingsFilepath.empty())
|
||||
{
|
||||
ProjectSettings::getInstance()->load(m_projectSettingsFilepath);
|
||||
updateFileManager();
|
||||
|
||||
setProjectSettingsFilePath(m_projectSettingsFilepath);
|
||||
}
|
||||
|
||||
parseCode();
|
||||
}
|
||||
|
||||
void Project::clearStorage()
|
||||
@@ -72,22 +90,6 @@ void Project::clearStorage()
|
||||
}
|
||||
}
|
||||
|
||||
void Project::loadStorage()
|
||||
{
|
||||
if (m_storageWasLoaded)
|
||||
{
|
||||
m_storage->startParsing();
|
||||
m_storage->finishParsing();
|
||||
MessageFinishedParsing(0, 0, 0, m_storage->getErrorCount()).dispatch();
|
||||
}
|
||||
else
|
||||
{
|
||||
parseCode();
|
||||
}
|
||||
|
||||
m_storageWasLoaded = true;
|
||||
}
|
||||
|
||||
void Project::parseCode()
|
||||
{
|
||||
if (m_projectSettingsFilepath.empty())
|
||||
@@ -140,11 +142,18 @@ void Project::setProjectSettingsFilePath(const FilePath& path)
|
||||
{
|
||||
m_storage.reset();
|
||||
}
|
||||
else if (m_projectSettingsFilepath != path)
|
||||
else
|
||||
{
|
||||
FilePath dbPath = FilePath(path).replaceExtension("coatidb");
|
||||
m_storageWasLoaded = dbPath.exists();
|
||||
m_storage = std::make_shared<Storage>(dbPath);
|
||||
|
||||
if (!m_storage || !dbPath.exists())
|
||||
{
|
||||
m_storage = std::make_shared<Storage>(dbPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_storageWasLoaded = true;
|
||||
}
|
||||
|
||||
if (m_storageWasLoaded && m_storage->getVersion().isOlderStorageVersionThan(Version::getApplicationVersion()))
|
||||
{
|
||||
|
||||
+5
-6
@@ -17,14 +17,11 @@ public:
|
||||
|
||||
~Project();
|
||||
|
||||
bool loadProjectSettings(const FilePath& projectSettingsFile);
|
||||
bool saveProjectSettings(const FilePath& projectSettingsFile);
|
||||
void reloadProjectSettings();
|
||||
bool loadProject(const FilePath& projectSettingsFile);
|
||||
bool saveProject(const FilePath& projectSettingsFile);
|
||||
void reloadProject();
|
||||
|
||||
void clearStorage();
|
||||
void loadStorage();
|
||||
|
||||
void parseCode();
|
||||
|
||||
void logStats() const;
|
||||
|
||||
@@ -33,6 +30,8 @@ private:
|
||||
Project(const Project&);
|
||||
Project operator=(const Project&);
|
||||
|
||||
void parseCode();
|
||||
|
||||
void setProjectSettingsFilePath(const FilePath& path);
|
||||
void updateFileManager();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user