data: saving and loading Storage with sqlite file next to project file

This commit is contained in:
Eberhard Graether
2015-09-17 12:08:25 +02:00
parent f702b79892
commit a14bfaff56
12 changed files with 37 additions and 33 deletions
+18 -10
View File
@@ -14,7 +14,6 @@
std::shared_ptr<Project> Project::create(StorageAccessProxy* storageAccessProxy)
{
std::shared_ptr<Project> ptr(new Project(storageAccessProxy));
ptr->clearStorage();
return ptr;
}
@@ -27,7 +26,7 @@ bool Project::loadProjectSettings(const FilePath& projectSettingsFile)
bool success = ProjectSettings::getInstance()->load(projectSettingsFile);
if (success)
{
m_projectSettingsFilepath = projectSettingsFile;
setProjectSettingsFilePath(projectSettingsFile);
//m_fileManager.reset();
updateFileManager();
@@ -39,7 +38,7 @@ bool Project::saveProjectSettings(const FilePath& projectSettingsFile)
{
if (!projectSettingsFile.empty())
{
m_projectSettingsFilepath = projectSettingsFile;
setProjectSettingsFilePath(projectSettingsFile);
}
if (m_projectSettingsFilepath.empty())
@@ -56,7 +55,7 @@ bool Project::saveProjectSettings(const FilePath& projectSettingsFile)
void Project::clearProjectSettings()
{
m_projectSettingsFilepath = FilePath();
setProjectSettingsFilePath(FilePath());
ProjectSettings::getInstance()->clear();
//m_fileManager.reset();
@@ -71,12 +70,6 @@ void Project::reloadProjectSettings()
}
}
void Project::clearStorage()
{
m_storage = std::make_shared<Storage>();
m_storageAccessProxy->setSubject(m_storage.get());
}
void Project::parseCode()
{
if (m_projectSettingsFilepath.empty())
@@ -124,6 +117,21 @@ void Project::logStats() const
m_storage->logStats();
}
void Project::setProjectSettingsFilePath(const FilePath& path)
{
if (path.empty())
{
m_storage.reset();
}
else if (m_projectSettingsFilepath != path)
{
m_storage = std::make_shared<Storage>(FilePath(path).replaceExtension("sqlite"));
}
m_storageAccessProxy->setSubject(m_storage.get());
m_projectSettingsFilepath = path;
}
void Project::updateFileManager()
{
std::shared_ptr<ProjectSettings> projSettings = ProjectSettings::getInstance();