From 150240a9af43b7c161c833ca081d39dd2cb9ed55 Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Mon, 27 May 2019 18:04:29 +0200 Subject: [PATCH] logic: Don't set project state outdated if only source group name changed (issue #700) --- src/lib/project/Project.cpp | 19 +++++++++++-------- src/lib/settings/Settings.cpp | 9 +++++++++ src/lib/settings/Settings.h | 1 + src/lib/settings/SourceGroupSettings.cpp | 2 +- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/src/lib/project/Project.cpp b/src/lib/project/Project.cpp index 9870d8a9..2f808342 100644 --- a/src/lib/project/Project.cpp +++ b/src/lib/project/Project.cpp @@ -179,16 +179,19 @@ void Project::load(std::shared_ptr dialogView) { m_state = PROJECT_STATE_OUTVERSIONED; } - else if (utility::replace(TextAccess::createFromFile(projectSettingsPath)->getText(), "\r", "") != - utility::replace(TextAccess::createFromString(m_storage->getProjectSettingsText())->getText(), "\r", "")) - { - m_state = PROJECT_STATE_OUTDATED; - canLoad = true; - } else { - m_state = PROJECT_STATE_LOADED; - canLoad = true; + ProjectSettings storedSettings; + if (storedSettings.loadFromString(m_storage->getProjectSettingsText()) && m_settings->equalsExceptNameAndLocation(storedSettings)) + { + m_state = PROJECT_STATE_LOADED; + canLoad = true; + } + else + { + m_state = PROJECT_STATE_OUTDATED; + canLoad = true; + } } try diff --git a/src/lib/settings/Settings.cpp b/src/lib/settings/Settings.cpp index 9b673e16..45f7917a 100644 --- a/src/lib/settings/Settings.cpp +++ b/src/lib/settings/Settings.cpp @@ -44,6 +44,15 @@ bool Settings::load(const FilePath& filePath, bool readOnly) } } +bool Settings::loadFromString(const std::string& text, bool readOnly) +{ + m_readOnly = readOnly; + + m_config = ConfigManager::createAndLoad(TextAccess::createFromString(text)); + m_filePath = FilePath(); + return true; +} + void Settings::save() { if (m_readOnly) diff --git a/src/lib/settings/Settings.h b/src/lib/settings/Settings.h index 5a2896ae..d53baf35 100644 --- a/src/lib/settings/Settings.h +++ b/src/lib/settings/Settings.h @@ -18,6 +18,7 @@ public: virtual ~Settings(); bool load(const FilePath& filePath, bool readOnly = false); + bool loadFromString(const std::string& text, bool readOnly = false); void save(); void save(const FilePath& filePath); diff --git a/src/lib/settings/SourceGroupSettings.cpp b/src/lib/settings/SourceGroupSettings.cpp index d6e61d65..79727c9e 100644 --- a/src/lib/settings/SourceGroupSettings.cpp +++ b/src/lib/settings/SourceGroupSettings.cpp @@ -42,7 +42,7 @@ bool SourceGroupSettings::equals(std::shared_ptr other) con { return ( m_id == other->m_id && - m_name == other->m_name && + // m_name == other->m_name && // Ignore name, since not significant regarding index state m_type == other->m_type && m_status == other->m_status );