diff --git a/src/plugins/conan/conaninstallstep.cpp b/src/plugins/conan/conaninstallstep.cpp index cb47cf8b224..43a793eddd8 100644 --- a/src/plugins/conan/conaninstallstep.cpp +++ b/src/plugins/conan/conaninstallstep.cpp @@ -91,7 +91,7 @@ ConanInstallStep::ConanInstallStep(BuildStepList *bsl, Id id) const QString buildType = bt == BuildConfiguration::Release ? QString("Release") : QString("Debug"); - CommandLine cmd(ConanPlugin::conanSettings()->conanFilePath()); + CommandLine cmd(ConanPlugin::conanSettings()->conanFilePath.filePath()); cmd.addArgs({"install", "-s", "build_type=" + buildType}); if (buildMissing->value()) cmd.addArg("--build=missing"); diff --git a/src/plugins/conan/conanplugin.cpp b/src/plugins/conan/conanplugin.cpp index 4e548774f2a..e4f5235c64c 100644 --- a/src/plugins/conan/conanplugin.cpp +++ b/src/plugins/conan/conanplugin.cpp @@ -65,7 +65,7 @@ bool ConanPlugin::initialize(const QStringList &arguments, QString *errorString) Q_UNUSED(errorString) m_runData = new ConanPluginRunData; - conanSettings()->fromSettings(ICore::settings()); + conanSettings()->readSettings(ICore::settings()); connect(SessionManager::instance(), &SessionManager::projectAdded, this, &ConanPlugin::projectAdded); diff --git a/src/plugins/conan/conansettings.cpp b/src/plugins/conan/conansettings.cpp index 7e5285dc411..2d93756694a 100644 --- a/src/plugins/conan/conansettings.cpp +++ b/src/plugins/conan/conansettings.cpp @@ -24,30 +24,25 @@ ****************************************************************************/ #include "conansettings.h" + #include +using namespace Utils; + namespace ConanPackageManager { namespace Internal { -namespace { -static const char SETTINGS_KEY[] = "ConanSettings"; -static const char CONAN_FILE_PATH[] = "ConanFilePath"; -} - -void ConanSettings::fromSettings(QSettings *settings) +ConanSettings::ConanSettings() { - const QString rootKey = QString(SETTINGS_KEY) + '/'; + setSettingsGroup("ConanSettings"); + setAutoApply(false); - const QString defaultExe = Utils::HostOsInfo::withExecutableSuffix(QString("conan")); - m_conanFilePath = Utils::FilePath::fromUserInput( - settings->value(rootKey + CONAN_FILE_PATH, defaultExe).toString()); + registerAspect(&conanFilePath); + conanFilePath.setSettingsKey("ConanFilePath"); + conanFilePath.setDisplayStyle(StringAspect::PathChooserDisplay); + conanFilePath.setExpectedKind(PathChooser::ExistingCommand); + conanFilePath.setDefaultValue(HostOsInfo::withExecutableSuffix("conan")); } -void ConanSettings::toSettings(QSettings *settings) const -{ - settings->beginGroup(QString(SETTINGS_KEY)); - settings->endGroup(); -} - -} -} +} // Internal +} // ConanPackageManager diff --git a/src/plugins/conan/conansettings.h b/src/plugins/conan/conansettings.h index c21b09a0d28..b03fd0e9011 100644 --- a/src/plugins/conan/conansettings.h +++ b/src/plugins/conan/conansettings.h @@ -25,6 +25,7 @@ #pragma once +#include #include #include @@ -32,18 +33,13 @@ namespace ConanPackageManager { namespace Internal { -class ConanSettings +class ConanSettings : public Utils::AspectContainer { public: - ConanSettings() = default; - void fromSettings(QSettings *settings); - void toSettings(QSettings *settings) const; + ConanSettings(); - Utils::FilePath conanFilePath() const { return m_conanFilePath; } - -private: - Utils::FilePath m_conanFilePath; + Utils::StringAspect conanFilePath; }; -} -} +} // Internal +} // ConanPackageManager