From 652a55b4fbee884dacb7971c85097c38ac1952ce Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Mon, 19 Jun 2017 23:38:39 +0200 Subject: [PATCH] logic: Fixed saving project name to ProjectSettings also sets project location to '/' --- src/lib/settings/ProjectSettings.cpp | 22 +++++++++---------- src/lib/settings/ProjectSettings.h | 6 ++--- .../project_wizzard/QtProjectWizzard.cpp | 9 ++------ .../QtProjectWizzardContentProjectData.cpp | 6 +++-- src/test/FilePathTestSuite.h | 8 +++++++ 5 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/lib/settings/ProjectSettings.cpp b/src/lib/settings/ProjectSettings.cpp index 8db923df..c2a3bc10 100644 --- a/src/lib/settings/ProjectSettings.cpp +++ b/src/lib/settings/ProjectSettings.cpp @@ -46,7 +46,7 @@ ProjectSettings::ProjectSettings(const FilePath& projectFilePath) ProjectSettings::ProjectSettings(std::string projectName, const FilePath& projectFileLocation) { - setFilePath(FilePath(projectFileLocation.str() + "/" + projectName + PROJECT_FILE_EXTENSION)); + setProjectFilePath(projectName, projectFileLocation); } ProjectSettings::~ProjectSettings() @@ -105,26 +105,26 @@ bool ProjectSettings::reload() return Settings::load(getFilePath()); } +FilePath ProjectSettings::getProjectFilePath() const +{ + return getFilePath(); +} + +void ProjectSettings::setProjectFilePath(std::string projectName, const FilePath& projectFileLocation) +{ + setFilePath(FilePath(projectFileLocation.str() + "/" + projectName + PROJECT_FILE_EXTENSION)); +} + std::string ProjectSettings::getProjectName() const { return getFilePath().withoutExtension().fileName(); } -void ProjectSettings::setProjectName(const std::string& name) -{ - setFilePath(FilePath(getProjectFileLocation().str() + "/" + name + PROJECT_FILE_EXTENSION)); -} - FilePath ProjectSettings::getProjectFileLocation() const { return getFilePath().parentDirectory(); } -void ProjectSettings::setProjectFileLocation(const FilePath& location) -{ - setFilePath(FilePath(location.str() + "/" + getProjectName() + PROJECT_FILE_EXTENSION)); -} - std::string ProjectSettings::getDescription() const { return getValue("description", ""); diff --git a/src/lib/settings/ProjectSettings.h b/src/lib/settings/ProjectSettings.h index e72bc608..b9dbeb2a 100644 --- a/src/lib/settings/ProjectSettings.h +++ b/src/lib/settings/ProjectSettings.h @@ -29,11 +29,11 @@ public: bool reload(); - std::string getProjectName() const; - void setProjectName(const std::string& name); + FilePath getProjectFilePath() const; + void setProjectFilePath(std::string projectName, const FilePath& projectFileLocation); + std::string getProjectName() const; FilePath getProjectFileLocation() const; - void setProjectFileLocation(const FilePath& location); std::string getDescription() const; diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzard.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzard.cpp index 61b2b703..5615f5aa 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzard.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzard.cpp @@ -67,14 +67,9 @@ void QtProjectWizzard::newProjectFromCDB(const FilePath& filePath, const std::ve m_projectSettings = std::make_shared(); } - if (!m_projectSettings->getProjectName().size()) + if (m_projectSettings->getProjectFilePath().empty()) { - m_projectSettings->setProjectName(filePath.withoutExtension().fileName()); - } - - if (m_projectSettings->getProjectFileLocation().empty()) - { - m_projectSettings->setProjectFileLocation(filePath.parentDirectory()); + m_projectSettings->setProjectFilePath(filePath.withoutExtension().fileName(), filePath.parentDirectory()); } if (!m_contentWidget) diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentProjectData.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentProjectData.cpp index 7c7a8657..595d0294 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentProjectData.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentProjectData.cpp @@ -62,8 +62,10 @@ void QtProjectWizzardContentProjectData::load() void QtProjectWizzardContentProjectData::save() { - m_projectSettings->setProjectName(m_projectName->text().toStdString()); - m_projectSettings->setProjectFileLocation(FilePath(m_projectFileLocation->getText().toStdString())); + m_projectSettings->setProjectFilePath( + m_projectName->text().toStdString(), + FilePath(m_projectFileLocation->getText().toStdString()) + ); } bool QtProjectWizzardContentProjectData::check() diff --git a/src/test/FilePathTestSuite.h b/src/test/FilePathTestSuite.h index 960b73d4..43e62bac 100644 --- a/src/test/FilePathTestSuite.h +++ b/src/test/FilePathTestSuite.h @@ -66,6 +66,14 @@ public: TS_ASSERT(path.parentDirectory().isDirectory()); } + void test_empty_file_path_has_empty_parent_directory() + { + FilePath path; + + TS_ASSERT(path.empty()); + TS_ASSERT(path.parentDirectory().empty()); + } + void test_file_path_is_absolute() { FilePath path("data/FilePathTestSuite/a.cpp");