summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2020-12-14 17:00:53 +0100
committerEike Ziller <eike.ziller@qt.io>2020-12-16 08:40:24 +0000
commitc8980478805ed6bcdfbf2965cbf6c03492d804e6 (patch)
tree7637ee0aea7eec25ec46a38dedcad06ece797e79
parent8987996500adea77ac494da5c70e2e489d907353 (diff)
downloadqt-creator-c8980478805ed6bcdfbf2965cbf6c03492d804e6.tar.gz
ProjectExplorer: Don't save defaults to settings
Writes less settings and makes it possible to change defaults in the future. Task-number: QTCREATORBUG-24762 Change-Id: I73873b3684827b4fe27cfa5ea2f62a76003f9750 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
-rw-r--r--src/plugins/classview/classviewnavigationwidgetfactory.cpp4
-rw-r--r--src/plugins/classview/classviewnavigationwidgetfactory.h2
-rw-r--r--src/plugins/coreplugin/inavigationwidgetfactory.cpp4
-rw-r--r--src/plugins/coreplugin/inavigationwidgetfactory.h6
-rw-r--r--src/plugins/coreplugin/navigationsubwidget.cpp2
-rw-r--r--src/plugins/cppeditor/cppincludehierarchy.cpp3
-rw-r--r--src/plugins/cppeditor/cppincludehierarchy.h2
-rw-r--r--src/plugins/projectexplorer/appoutputpane.cpp37
-rw-r--r--src/plugins/projectexplorer/compileoutputwindow.cpp17
-rw-r--r--src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp2
-rw-r--r--src/plugins/projectexplorer/foldernavigationwidget.cpp33
-rw-r--r--src/plugins/projectexplorer/foldernavigationwidget.h3
-rw-r--r--src/plugins/projectexplorer/kitchooser.cpp2
-rw-r--r--src/plugins/projectexplorer/projectexplorer.cpp182
-rw-r--r--src/plugins/projectexplorer/projectexplorersettings.h8
-rw-r--r--src/plugins/projectexplorer/projecttreewidget.cpp45
-rw-r--r--src/plugins/projectexplorer/projecttreewidget.h2
-rw-r--r--src/plugins/projectexplorer/toolchainmanager.cpp9
-rw-r--r--src/plugins/texteditor/outlinefactory.cpp2
-rw-r--r--src/plugins/texteditor/outlinefactory.h2
20 files changed, 247 insertions, 120 deletions
diff --git a/src/plugins/classview/classviewnavigationwidgetfactory.cpp b/src/plugins/classview/classviewnavigationwidgetfactory.cpp
index aaaa4295d3..217fedea9a 100644
--- a/src/plugins/classview/classviewnavigationwidgetfactory.cpp
+++ b/src/plugins/classview/classviewnavigationwidgetfactory.cpp
@@ -75,7 +75,9 @@ static QString settingsPrefix(int position)
//! Flat mode settings
-void NavigationWidgetFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
+void NavigationWidgetFactory::saveSettings(Utils::QtcSettings *settings,
+ int position,
+ QWidget *widget)
{
auto pw = qobject_cast<NavigationWidget *>(widget);
QTC_ASSERT(pw, return);
diff --git a/src/plugins/classview/classviewnavigationwidgetfactory.h b/src/plugins/classview/classviewnavigationwidgetfactory.h
index 31f664476d..e067e9ee00 100644
--- a/src/plugins/classview/classviewnavigationwidgetfactory.h
+++ b/src/plugins/classview/classviewnavigationwidgetfactory.h
@@ -41,7 +41,7 @@ public:
Core::NavigationView createWidget() override;
//! \implements Core::INavigationWidgetFactory::saveSettings
- void saveSettings(QSettings *settings, int position, QWidget *widget) override;
+ void saveSettings(Utils::QtcSettings *settings, int position, QWidget *widget) override;
//! \implements Core::INavigationWidgetFactory::restoreSettings
void restoreSettings(QSettings *settings, int position, QWidget *widget) override;
diff --git a/src/plugins/coreplugin/inavigationwidgetfactory.cpp b/src/plugins/coreplugin/inavigationwidgetfactory.cpp
index 7e36dbdd08..63ed236e11 100644
--- a/src/plugins/coreplugin/inavigationwidgetfactory.cpp
+++ b/src/plugins/coreplugin/inavigationwidgetfactory.cpp
@@ -156,7 +156,9 @@ QKeySequence INavigationWidgetFactory::activationSequence() const
\sa INavigationWidgetFactory::restoreSettings()
*/
-void INavigationWidgetFactory::saveSettings(QSettings * /* settings */, int /* position */, QWidget * /* widget */)
+void INavigationWidgetFactory::saveSettings(Utils::QtcSettings * /* settings */,
+ int /* position */,
+ QWidget * /* widget */)
{
}
diff --git a/src/plugins/coreplugin/inavigationwidgetfactory.h b/src/plugins/coreplugin/inavigationwidgetfactory.h
index 802f1ca5d8..cd918de6f3 100644
--- a/src/plugins/coreplugin/inavigationwidgetfactory.h
+++ b/src/plugins/coreplugin/inavigationwidgetfactory.h
@@ -39,6 +39,10 @@ class QToolButton;
class QWidget;
QT_END_NAMESPACE
+namespace Utils {
+class QtcSettings;
+}
+
namespace Core {
struct NavigationView
@@ -75,7 +79,7 @@ public:
// Similar to how IView
virtual NavigationView createWidget() = 0;
- virtual void saveSettings(QSettings *settings, int position, QWidget *widget);
+ virtual void saveSettings(Utils::QtcSettings *settings, int position, QWidget *widget);
virtual void restoreSettings(QSettings *settings, int position, QWidget *widget);
private:
diff --git a/src/plugins/coreplugin/navigationsubwidget.cpp b/src/plugins/coreplugin/navigationsubwidget.cpp
index 9f340ddf71..bb439d4eff 100644
--- a/src/plugins/coreplugin/navigationsubwidget.cpp
+++ b/src/plugins/coreplugin/navigationsubwidget.cpp
@@ -170,7 +170,7 @@ void NavigationSubWidget::saveSettings()
if (!m_navigationWidget || !factory())
return;
- QSettings *settings = Core::ICore::settings();
+ QtcSettings *settings = Core::ICore::settings();
settings->beginGroup(m_parentWidget->settingsGroup());
factory()->saveSettings(settings, position(), m_navigationWidget);
settings->endGroup();
diff --git a/src/plugins/cppeditor/cppincludehierarchy.cpp b/src/plugins/cppeditor/cppincludehierarchy.cpp
index 8ea60a7609..f3a038c50d 100644
--- a/src/plugins/cppeditor/cppincludehierarchy.cpp
+++ b/src/plugins/cppeditor/cppincludehierarchy.cpp
@@ -48,6 +48,7 @@
#include <utils/fileutils.h>
#include <utils/navigationtreeview.h>
#include <utils/qtcassert.h>
+#include <utils/qtcsettings.h>
#include <utils/utilsicons.h>
#include <QCoreApplication>
@@ -546,7 +547,7 @@ static CppIncludeHierarchyWidget *hierarchyWidget(QWidget *widget)
return hierarchyWidget;
}
-void CppIncludeHierarchyFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
+void CppIncludeHierarchyFactory::saveSettings(QtcSettings *settings, int position, QWidget *widget)
{
hierarchyWidget(widget)->saveSettings(settings, position);
}
diff --git a/src/plugins/cppeditor/cppincludehierarchy.h b/src/plugins/cppeditor/cppincludehierarchy.h
index 99310a8904..ee20f470b7 100644
--- a/src/plugins/cppeditor/cppincludehierarchy.h
+++ b/src/plugins/cppeditor/cppincludehierarchy.h
@@ -72,7 +72,7 @@ public:
CppIncludeHierarchyFactory();
Core::NavigationView createWidget() override;
- void saveSettings(QSettings *settings, int position, QWidget *widget) override;
+ void saveSettings(Utils::QtcSettings *settings, int position, QWidget *widget) override;
void restoreSettings(QSettings *settings, int position, QWidget *widget) override;
};
diff --git a/src/plugins/projectexplorer/appoutputpane.cpp b/src/plugins/projectexplorer/appoutputpane.cpp
index 658028b2b7..8eb808111f 100644
--- a/src/plugins/projectexplorer/appoutputpane.cpp
+++ b/src/plugins/projectexplorer/appoutputpane.cpp
@@ -510,15 +510,27 @@ void AppOutputPane::setSettings(const AppOutputSettings &settings)
updateFromSettings();
}
+const AppOutputPaneMode kRunOutputModeDefault = AppOutputPaneMode::PopupOnFirstOutput;
+const AppOutputPaneMode kDebugOutputModeDefault = AppOutputPaneMode::FlashOnOutput;
+const bool kCleanOldOutputDefault = false;
+const bool kMergeChannelsDefault = false;
+const bool kWrapOutputDefault = true;
+
void AppOutputPane::storeSettings() const
{
- QSettings * const s = Core::ICore::settings();
- s->setValue(POP_UP_FOR_RUN_OUTPUT_KEY, int(m_settings.runOutputMode));
- s->setValue(POP_UP_FOR_DEBUG_OUTPUT_KEY, int(m_settings.debugOutputMode));
- s->setValue(CLEAN_OLD_OUTPUT_KEY, m_settings.cleanOldOutput);
- s->setValue(MERGE_CHANNELS_KEY, m_settings.mergeChannels);
- s->setValue(WRAP_OUTPUT_KEY, m_settings.wrapOutput);
- s->setValue(MAX_LINES_KEY, m_settings.maxCharCount / 100);
+ Utils::QtcSettings *const s = Core::ICore::settings();
+ s->setValueWithDefault(POP_UP_FOR_RUN_OUTPUT_KEY,
+ int(m_settings.runOutputMode),
+ int(kRunOutputModeDefault));
+ s->setValueWithDefault(POP_UP_FOR_DEBUG_OUTPUT_KEY,
+ int(m_settings.debugOutputMode),
+ int(kDebugOutputModeDefault));
+ s->setValueWithDefault(CLEAN_OLD_OUTPUT_KEY, m_settings.cleanOldOutput, kCleanOldOutputDefault);
+ s->setValueWithDefault(MERGE_CHANNELS_KEY, m_settings.mergeChannels, kMergeChannelsDefault);
+ s->setValueWithDefault(WRAP_OUTPUT_KEY, m_settings.wrapOutput, kWrapOutputDefault);
+ s->setValueWithDefault(MAX_LINES_KEY,
+ m_settings.maxCharCount / 100,
+ Core::Constants::DEFAULT_MAX_CHAR_COUNT);
}
void AppOutputPane::loadSettings()
@@ -527,13 +539,12 @@ void AppOutputPane::loadSettings()
const auto modeFromSettings = [s](const QString key, AppOutputPaneMode defaultValue) {
return static_cast<AppOutputPaneMode>(s->value(key, int(defaultValue)).toInt());
};
- m_settings.runOutputMode = modeFromSettings(POP_UP_FOR_RUN_OUTPUT_KEY,
- AppOutputPaneMode::PopupOnFirstOutput);
+ m_settings.runOutputMode = modeFromSettings(POP_UP_FOR_RUN_OUTPUT_KEY, kRunOutputModeDefault);
m_settings.debugOutputMode = modeFromSettings(POP_UP_FOR_DEBUG_OUTPUT_KEY,
- AppOutputPaneMode::FlashOnOutput);
- m_settings.cleanOldOutput = s->value(CLEAN_OLD_OUTPUT_KEY, false).toBool();
- m_settings.mergeChannels = s->value(MERGE_CHANNELS_KEY, false).toBool();
- m_settings.wrapOutput = s->value(WRAP_OUTPUT_KEY, true).toBool();
+ kDebugOutputModeDefault);
+ m_settings.cleanOldOutput = s->value(CLEAN_OLD_OUTPUT_KEY, kCleanOldOutputDefault).toBool();
+ m_settings.mergeChannels = s->value(MERGE_CHANNELS_KEY, kMergeChannelsDefault).toBool();
+ m_settings.wrapOutput = s->value(WRAP_OUTPUT_KEY, kWrapOutputDefault).toBool();
m_settings.maxCharCount = s->value(MAX_LINES_KEY,
Core::Constants::DEFAULT_MAX_CHAR_COUNT).toInt() * 100;
}
diff --git a/src/plugins/projectexplorer/compileoutputwindow.cpp b/src/plugins/projectexplorer/compileoutputwindow.cpp
index 6bd7f7aba8..2f322a660a 100644
--- a/src/plugins/projectexplorer/compileoutputwindow.cpp
+++ b/src/plugins/projectexplorer/compileoutputwindow.cpp
@@ -305,21 +305,26 @@ void CompileOutputWindow::updateFilter()
filterUsesRegexp(), filterIsInverted());
}
+const bool kPopUpDefault = false;
+const bool kWrapOutputDefault = true;
+
void CompileOutputWindow::loadSettings()
{
QSettings * const s = Core::ICore::settings();
- m_settings.popUp = s->value(POP_UP_KEY, false).toBool();
- m_settings.wrapOutput = s->value(WRAP_OUTPUT_KEY, true).toBool();
+ m_settings.popUp = s->value(POP_UP_KEY, kPopUpDefault).toBool();
+ m_settings.wrapOutput = s->value(WRAP_OUTPUT_KEY, kWrapOutputDefault).toBool();
m_settings.maxCharCount = s->value(MAX_LINES_KEY,
Core::Constants::DEFAULT_MAX_CHAR_COUNT).toInt() * 100;
}
void CompileOutputWindow::storeSettings() const
{
- QSettings * const s = Core::ICore::settings();
- s->setValue(POP_UP_KEY, m_settings.popUp);
- s->setValue(WRAP_OUTPUT_KEY, m_settings.wrapOutput);
- s->setValue(MAX_LINES_KEY, m_settings.maxCharCount / 100);
+ Utils::QtcSettings *const s = Core::ICore::settings();
+ s->setValueWithDefault(POP_UP_KEY, m_settings.popUp, kPopUpDefault);
+ s->setValueWithDefault(WRAP_OUTPUT_KEY, m_settings.wrapOutput, kWrapOutputDefault);
+ s->setValueWithDefault(MAX_LINES_KEY,
+ m_settings.maxCharCount / 100,
+ Core::Constants::DEFAULT_MAX_CHAR_COUNT);
}
class CompileOutputSettingsWidget : public Core::IOptionsPageWidget
diff --git a/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp b/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp
index f33607b5c9..12c9e4e53c 100644
--- a/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp
+++ b/src/plugins/projectexplorer/devicesupport/devicesettingswidget.cpp
@@ -219,7 +219,7 @@ void DeviceSettingsWidget::updateDeviceFromUi()
void DeviceSettingsWidget::saveSettings()
{
- ICore::settings()->setValue(QLatin1String(LastDeviceIndexKey), currentIndex());
+ ICore::settings()->setValueWithDefault(LastDeviceIndexKey, currentIndex(), 0);
DeviceManager::replaceInstance();
}
diff --git a/src/plugins/projectexplorer/foldernavigationwidget.cpp b/src/plugins/projectexplorer/foldernavigationwidget.cpp
index b7d399720c..c3987e1e48 100644
--- a/src/plugins/projectexplorer/foldernavigationwidget.cpp
+++ b/src/plugins/projectexplorer/foldernavigationwidget.cpp
@@ -903,15 +903,28 @@ Core::NavigationView FolderNavigationWidgetFactory::createWidget()
return n;
}
-void FolderNavigationWidgetFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
+const bool kHiddenFilesDefault = false;
+const bool kAutoSyncDefault = true;
+const bool kShowBreadCrumbsDefault = true;
+const bool kRootAutoSyncDefault = true;
+
+void FolderNavigationWidgetFactory::saveSettings(Utils::QtcSettings *settings,
+ int position,
+ QWidget *widget)
{
auto fnw = qobject_cast<FolderNavigationWidget *>(widget);
QTC_ASSERT(fnw, return);
const QString base = kSettingsBase + QString::number(position);
- settings->setValue(base + kHiddenFilesKey, fnw->hiddenFilesFilter());
- settings->setValue(base + kSyncKey, fnw->autoSynchronization());
- settings->setValue(base + kShowBreadCrumbs, fnw->isShowingBreadCrumbs());
- settings->setValue(base + kSyncRootWithEditor, fnw->rootAutoSynchronization());
+ settings->setValueWithDefault(base + kHiddenFilesKey,
+ fnw->hiddenFilesFilter(),
+ kHiddenFilesDefault);
+ settings->setValueWithDefault(base + kSyncKey, fnw->autoSynchronization(), kAutoSyncDefault);
+ settings->setValueWithDefault(base + kShowBreadCrumbs,
+ fnw->isShowingBreadCrumbs(),
+ kShowBreadCrumbsDefault);
+ settings->setValueWithDefault(base + kSyncRootWithEditor,
+ fnw->rootAutoSynchronization(),
+ kRootAutoSyncDefault);
}
void FolderNavigationWidgetFactory::restoreSettings(QSettings *settings, int position, QWidget *widget)
@@ -919,10 +932,12 @@ void FolderNavigationWidgetFactory::restoreSettings(QSettings *settings, int pos
auto fnw = qobject_cast<FolderNavigationWidget *>(widget);
QTC_ASSERT(fnw, return);
const QString base = kSettingsBase + QString::number(position);
- fnw->setHiddenFilesFilter(settings->value(base + kHiddenFilesKey, false).toBool());
- fnw->setAutoSynchronization(settings->value(base + kSyncKey, true).toBool());
- fnw->setShowBreadCrumbs(settings->value(base + kShowBreadCrumbs, true).toBool());
- fnw->setRootAutoSynchronization(settings->value(base + kSyncRootWithEditor, true).toBool());
+ fnw->setHiddenFilesFilter(settings->value(base + kHiddenFilesKey, kHiddenFilesDefault).toBool());
+ fnw->setAutoSynchronization(settings->value(base + kSyncKey, kAutoSyncDefault).toBool());
+ fnw->setShowBreadCrumbs(
+ settings->value(base + kShowBreadCrumbs, kShowBreadCrumbsDefault).toBool());
+ fnw->setRootAutoSynchronization(
+ settings->value(base + kSyncRootWithEditor, kRootAutoSyncDefault).toBool());
}
void FolderNavigationWidgetFactory::insertRootDirectory(const RootDirectory &directory)
diff --git a/src/plugins/projectexplorer/foldernavigationwidget.h b/src/plugins/projectexplorer/foldernavigationwidget.h
index f871fb2aaa..a69ddedf47 100644
--- a/src/plugins/projectexplorer/foldernavigationwidget.h
+++ b/src/plugins/projectexplorer/foldernavigationwidget.h
@@ -39,6 +39,7 @@ class IEditor;
namespace Utils {
class NavigationTreeView;
class FileCrumbLabel;
+class QtcSettings;
}
QT_BEGIN_NAMESPACE
@@ -70,7 +71,7 @@ public:
FolderNavigationWidgetFactory();
Core::NavigationView createWidget() override;
- void saveSettings(QSettings *settings, int position, QWidget *widget) override;
+ void saveSettings(Utils::QtcSettings *settings, int position, QWidget *widget) override;
void restoreSettings(QSettings *settings, int position, QWidget *widget) override;
static void insertRootDirectory(const RootDirectory &directory);
diff --git a/src/plugins/projectexplorer/kitchooser.cpp b/src/plugins/projectexplorer/kitchooser.cpp
index 469dc9cf71..8b6b6ecb05 100644
--- a/src/plugins/projectexplorer/kitchooser.cpp
+++ b/src/plugins/projectexplorer/kitchooser.cpp
@@ -92,7 +92,7 @@ void KitChooser::onActivated()
Id id = Id::fromSetting(m_chooser->currentData());
if (m_hasStartupKit && m_chooser->currentIndex() == 0)
id = Id(); // Special value to indicate startup kit.
- ICore::settings()->setValue(lastKitKey, id.toSetting());
+ ICore::settings()->setValueWithDefault(lastKitKey, id.toSetting(), Id().toSetting());
emit activated();
}
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 3552d8d471..3f9a969f29 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -262,6 +262,8 @@ const char DEFAULT_BUILD_DIRECTORY_TEMPLATE[] = "../%{JS: Util.asciify(\"build-%
const char DEFAULT_BUILD_DIRECTORY_TEMPLATE_KEY_OLD[] = "Directories/BuildDirectory.Template"; // TODO: Remove in ~4.16
const char DEFAULT_BUILD_DIRECTORY_TEMPLATE_KEY[] = "Directories/BuildDirectory.TemplateV2";
+const char RECENTPROJECTS_FILE_NAMES_KEY[] = "ProjectExplorer/RecentProjects/FileNames";
+const char RECENTPROJECTS_DISPLAY_NAMES_KEY[] = "ProjectExplorer/RecentProjects/DisplayNames";
const char BUILD_BEFORE_DEPLOY_SETTINGS_KEY[] = "ProjectExplorer/Settings/BuildBeforeDeploy";
const char DEPLOY_BEFORE_RUN_SETTINGS_KEY[] = "ProjectExplorer/Settings/DeployBeforeRun";
const char SAVE_BEFORE_BUILD_SETTINGS_KEY[] = "ProjectExplorer/Settings/SaveBeforeBuild";
@@ -1481,10 +1483,9 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
});
QSettings *s = ICore::settings();
- const QStringList fileNames =
- s->value(QLatin1String("ProjectExplorer/RecentProjects/FileNames")).toStringList();
- const QStringList displayNames =
- s->value(QLatin1String("ProjectExplorer/RecentProjects/DisplayNames")).toStringList();
+ const QStringList fileNames = s->value(Constants::RECENTPROJECTS_FILE_NAMES_KEY).toStringList();
+ const QStringList displayNames = s->value(Constants::RECENTPROJECTS_DISPLAY_NAMES_KEY)
+ .toStringList();
if (fileNames.size() == displayNames.size()) {
for (int i = 0; i < fileNames.size(); ++i) {
dd->m_recentProjects.append(qMakePair(fileNames.at(i), displayNames.at(i)));
@@ -1502,38 +1503,59 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
= static_cast<BuildBeforeRunMode>(buildBeforeDeploy.toInt());
}
- dd->m_projectExplorerSettings.deployBeforeRun =
- s->value(Constants::DEPLOY_BEFORE_RUN_SETTINGS_KEY, true).toBool();
- dd->m_projectExplorerSettings.saveBeforeBuild =
- s->value(Constants::SAVE_BEFORE_BUILD_SETTINGS_KEY, false).toBool();
- dd->m_projectExplorerSettings.useJom = s->value(Constants::USE_JOM_SETTINGS_KEY, true).toBool();
- dd->m_projectExplorerSettings.autorestoreLastSession =
- s->value(Constants::AUTO_RESTORE_SESSION_SETTINGS_KEY, false).toBool();
- dd->m_projectExplorerSettings.addLibraryPathsToRunEnv =
- s->value(Constants::ADD_LIBRARY_PATHS_TO_RUN_ENV_SETTINGS_KEY, true).toBool();
- dd->m_projectExplorerSettings.prompToStopRunControl =
- s->value(Constants::PROMPT_TO_STOP_RUN_CONTROL_SETTINGS_KEY, false).toBool();
- dd->m_projectExplorerSettings.automaticallyCreateRunConfigurations =
- s->value(Constants::AUTO_CREATE_RUN_CONFIGS_SETTINGS_KEY, true).toBool();
+ static const ProjectExplorerSettings defaultSettings;
+
+ dd->m_projectExplorerSettings.deployBeforeRun
+ = s->value(Constants::DEPLOY_BEFORE_RUN_SETTINGS_KEY, defaultSettings.deployBeforeRun)
+ .toBool();
+ dd->m_projectExplorerSettings.saveBeforeBuild
+ = s->value(Constants::SAVE_BEFORE_BUILD_SETTINGS_KEY, defaultSettings.saveBeforeBuild)
+ .toBool();
+ dd->m_projectExplorerSettings.useJom
+ = s->value(Constants::USE_JOM_SETTINGS_KEY, defaultSettings.useJom).toBool();
+ dd->m_projectExplorerSettings.autorestoreLastSession
+ = s->value(Constants::AUTO_RESTORE_SESSION_SETTINGS_KEY,
+ defaultSettings.autorestoreLastSession)
+ .toBool();
+ dd->m_projectExplorerSettings.addLibraryPathsToRunEnv
+ = s->value(Constants::ADD_LIBRARY_PATHS_TO_RUN_ENV_SETTINGS_KEY,
+ defaultSettings.addLibraryPathsToRunEnv)
+ .toBool();
+ dd->m_projectExplorerSettings.prompToStopRunControl
+ = s->value(Constants::PROMPT_TO_STOP_RUN_CONTROL_SETTINGS_KEY,
+ defaultSettings.prompToStopRunControl)
+ .toBool();
+ dd->m_projectExplorerSettings.automaticallyCreateRunConfigurations
+ = s->value(Constants::AUTO_CREATE_RUN_CONFIGS_SETTINGS_KEY,
+ defaultSettings.automaticallyCreateRunConfigurations)
+ .toBool();
dd->m_projectExplorerSettings.environmentId =
QUuid(s->value(Constants::ENVIRONMENT_ID_SETTINGS_KEY).toByteArray());
if (dd->m_projectExplorerSettings.environmentId.isNull())
dd->m_projectExplorerSettings.environmentId = QUuid::createUuid();
int tmp = s->value(Constants::STOP_BEFORE_BUILD_SETTINGS_KEY,
- Utils::HostOsInfo::isWindowsHost() ? 1 : 0).toInt();
+ int(defaultSettings.stopBeforeBuild))
+ .toInt();
if (tmp < 0 || tmp > int(StopBeforeBuild::SameApp))
- tmp = Utils::HostOsInfo::isWindowsHost() ? 1 : 0;
+ tmp = int(defaultSettings.stopBeforeBuild);
dd->m_projectExplorerSettings.stopBeforeBuild = StopBeforeBuild(tmp);
- dd->m_projectExplorerSettings.terminalMode = static_cast<TerminalMode>(s->value(
- Constants::TERMINAL_MODE_SETTINGS_KEY, int(TerminalMode::Off)).toInt());
+ dd->m_projectExplorerSettings.terminalMode = static_cast<TerminalMode>(
+ s->value(Constants::TERMINAL_MODE_SETTINGS_KEY, int(defaultSettings.terminalMode)).toInt());
dd->m_projectExplorerSettings.closeSourceFilesWithProject
- = s->value(Constants::CLOSE_FILES_WITH_PROJECT_SETTINGS_KEY, true).toBool();
+ = s->value(Constants::CLOSE_FILES_WITH_PROJECT_SETTINGS_KEY,
+ defaultSettings.closeSourceFilesWithProject)
+ .toBool();
dd->m_projectExplorerSettings.clearIssuesOnRebuild
- = s->value(Constants::CLEAR_ISSUES_ON_REBUILD_SETTINGS_KEY, true).toBool();
+ = s->value(Constants::CLEAR_ISSUES_ON_REBUILD_SETTINGS_KEY,
+ defaultSettings.clearIssuesOnRebuild)
+ .toBool();
dd->m_projectExplorerSettings.abortBuildAllOnError
- = s->value(Constants::ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY, true).toBool();
+ = s->value(Constants::ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY,
+ defaultSettings.abortBuildAllOnError)
+ .toBool();
dd->m_projectExplorerSettings.lowBuildPriority
- = s->value(Constants::LOW_BUILD_PRIORITY_SETTINGS_KEY, false).toBool();
+ = s->value(Constants::LOW_BUILD_PRIORITY_SETTINGS_KEY, defaultSettings.lowBuildPriority)
+ .toBool();
dd->m_buildPropertiesSettings.buildDirectoryTemplateOld
= s->value(Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE_KEY_OLD).toString();
@@ -2119,7 +2141,7 @@ void ProjectExplorerPluginPrivate::savePersistentSettings()
SessionManager::save();
}
- QSettings *s = ICore::settings();
+ QtcSettings *s = ICore::settings();
if (SessionManager::isDefaultVirgin()) {
s->remove(Constants::STARTUPSESSION_KEY);
} else {
@@ -2137,45 +2159,79 @@ void ProjectExplorerPluginPrivate::savePersistentSettings()
displayNames << (*it).second;
}
- s->setValue(QLatin1String("ProjectExplorer/RecentProjects/FileNames"), fileNames);
- s->setValue(QLatin1String("ProjectExplorer/RecentProjects/DisplayNames"), displayNames);
-
- s->setValue(Constants::BUILD_BEFORE_DEPLOY_SETTINGS_KEY, int(dd->m_projectExplorerSettings.buildBeforeDeploy));
- s->setValue(Constants::DEPLOY_BEFORE_RUN_SETTINGS_KEY, dd->m_projectExplorerSettings.deployBeforeRun);
- s->setValue(Constants::SAVE_BEFORE_BUILD_SETTINGS_KEY, dd->m_projectExplorerSettings.saveBeforeBuild);
- s->setValue(Constants::USE_JOM_SETTINGS_KEY, dd->m_projectExplorerSettings.useJom);
- s->setValue(Constants::AUTO_RESTORE_SESSION_SETTINGS_KEY, dd->m_projectExplorerSettings.autorestoreLastSession);
- s->setValue(Constants::ADD_LIBRARY_PATHS_TO_RUN_ENV_SETTINGS_KEY, dd->m_projectExplorerSettings.addLibraryPathsToRunEnv);
- s->setValue(Constants::PROMPT_TO_STOP_RUN_CONTROL_SETTINGS_KEY, dd->m_projectExplorerSettings.prompToStopRunControl);
- s->setValue(Constants::TERMINAL_MODE_SETTINGS_KEY,
- int(dd->m_projectExplorerSettings.terminalMode));
- s->setValue(Constants::CLOSE_FILES_WITH_PROJECT_SETTINGS_KEY,
- dd->m_projectExplorerSettings.closeSourceFilesWithProject);
- s->setValue(Constants::CLEAR_ISSUES_ON_REBUILD_SETTINGS_KEY,
- dd->m_projectExplorerSettings.clearIssuesOnRebuild);
- s->setValue(Constants::ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY,
- dd->m_projectExplorerSettings.abortBuildAllOnError);
- s->setValue(Constants::LOW_BUILD_PRIORITY_SETTINGS_KEY,
- dd->m_projectExplorerSettings.lowBuildPriority);
- s->setValue(Constants::AUTO_CREATE_RUN_CONFIGS_SETTINGS_KEY,
- dd->m_projectExplorerSettings.automaticallyCreateRunConfigurations);
- s->setValue(Constants::ENVIRONMENT_ID_SETTINGS_KEY, dd->m_projectExplorerSettings.environmentId.toByteArray());
- s->setValue(Constants::STOP_BEFORE_BUILD_SETTINGS_KEY, int(dd->m_projectExplorerSettings.stopBeforeBuild));
+ s->setValueWithDefault(Constants::RECENTPROJECTS_FILE_NAMES_KEY, fileNames);
+ s->setValueWithDefault(Constants::RECENTPROJECTS_DISPLAY_NAMES_KEY, displayNames);
+
+ static const ProjectExplorerSettings defaultSettings;
+
+ s->setValueWithDefault(Constants::BUILD_BEFORE_DEPLOY_SETTINGS_KEY,
+ int(dd->m_projectExplorerSettings.buildBeforeDeploy),
+ int(defaultSettings.buildBeforeDeploy));
+ s->setValueWithDefault(Constants::DEPLOY_BEFORE_RUN_SETTINGS_KEY,
+ dd->m_projectExplorerSettings.deployBeforeRun,
+ defaultSettings.deployBeforeRun);
+ s->setValueWithDefault(Constants::SAVE_BEFORE_BUILD_SETTINGS_KEY,
+ dd->m_projectExplorerSettings.saveBeforeBuild,
+ defaultSettings.saveBeforeBuild);
+ s->setValueWithDefault(Constants::USE_JOM_SETTINGS_KEY,
+ dd->m_projectExplorerSettings.useJom,
+ defaultSettings.useJom);
+ s->setValueWithDefault(Constants::AUTO_RESTORE_SESSION_SETTINGS_KEY,
+ dd->m_projectExplorerSettings.autorestoreLastSession,
+ defaultSettings.autorestoreLastSession);
+ s->setValueWithDefault(Constants::ADD_LIBRARY_PATHS_TO_RUN_ENV_SETTINGS_KEY,
+ dd->m_projectExplorerSettings.addLibraryPathsToRunEnv,
+ defaultSettings.addLibraryPathsToRunEnv);
+ s->setValueWithDefault(Constants::PROMPT_TO_STOP_RUN_CONTROL_SETTINGS_KEY,
+ dd->m_projectExplorerSettings.prompToStopRunControl,
+ defaultSettings.prompToStopRunControl);
+ s->setValueWithDefault(Constants::TERMINAL_MODE_SETTINGS_KEY,
+ int(dd->m_projectExplorerSettings.terminalMode),
+ int(defaultSettings.terminalMode));
+ s->setValueWithDefault(Constants::CLOSE_FILES_WITH_PROJECT_SETTINGS_KEY,
+ dd->m_projectExplorerSettings.closeSourceFilesWithProject,
+ defaultSettings.closeSourceFilesWithProject);
+ s->setValueWithDefault(Constants::CLEAR_ISSUES_ON_REBUILD_SETTINGS_KEY,
+ dd->m_projectExplorerSettings.clearIssuesOnRebuild,
+ defaultSettings.clearIssuesOnRebuild);
+ s->setValueWithDefault(Constants::ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY,
+ dd->m_projectExplorerSettings.abortBuildAllOnError,
+ defaultSettings.abortBuildAllOnError);
+ s->setValueWithDefault(Constants::LOW_BUILD_PRIORITY_SETTINGS_KEY,
+ dd->m_projectExplorerSettings.lowBuildPriority,
+ defaultSettings.lowBuildPriority);
+ s->setValueWithDefault(Constants::AUTO_CREATE_RUN_CONFIGS_SETTINGS_KEY,
+ dd->m_projectExplorerSettings.automaticallyCreateRunConfigurations,
+ defaultSettings.automaticallyCreateRunConfigurations);
+ s->setValueWithDefault(Constants::ENVIRONMENT_ID_SETTINGS_KEY,
+ dd->m_projectExplorerSettings.environmentId.toByteArray());
+ s->setValueWithDefault(Constants::STOP_BEFORE_BUILD_SETTINGS_KEY,
+ int(dd->m_projectExplorerSettings.stopBeforeBuild),
+ int(defaultSettings.stopBeforeBuild));
// Store this in the Core directory scope for backward compatibility!
- s->setValue(Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE_KEY_OLD,
- dd->m_buildPropertiesSettings.buildDirectoryTemplateOld);
- s->setValue(Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE_KEY,
- dd->m_buildPropertiesSettings.buildDirectoryTemplate);
-
- s->setValue(Constants::SEPARATE_DEBUG_INFO_SETTINGS_KEY,
- dd->m_buildPropertiesSettings.separateDebugInfo.toVariant());
- s->setValue(Constants::QML_DEBUGGING_SETTINGS_KEY,
- dd->m_buildPropertiesSettings.qmlDebugging.toVariant());
- s->setValue(Constants::QT_QUICK_COMPILER_SETTINGS_KEY,
- dd->m_buildPropertiesSettings.qtQuickCompiler.toVariant());
-
- s->setValue(Constants::CUSTOM_PARSER_COUNT_KEY, dd->m_customParsers.count());
+ if (dd->m_buildPropertiesSettings.buildDirectoryTemplate
+ == Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE) {
+ s->remove(Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE_KEY_OLD);
+ s->remove(Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE_KEY);
+ } else {
+ s->setValue(Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE_KEY_OLD,
+ dd->m_buildPropertiesSettings.buildDirectoryTemplateOld);
+ s->setValue(Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE_KEY,
+ dd->m_buildPropertiesSettings.buildDirectoryTemplate);
+ }
+
+ s->setValueWithDefault(Constants::SEPARATE_DEBUG_INFO_SETTINGS_KEY,
+ dd->m_buildPropertiesSettings.separateDebugInfo.toVariant(),
+ TriState::Default.toVariant());
+ s->setValueWithDefault(Constants::QML_DEBUGGING_SETTINGS_KEY,
+ dd->m_buildPropertiesSettings.qmlDebugging.toVariant(),
+ TriState::Default.toVariant());
+ s->setValueWithDefault(Constants::QT_QUICK_COMPILER_SETTINGS_KEY,
+ dd->m_buildPropertiesSettings.qtQuickCompiler.toVariant(),
+ TriState::Default.toVariant());
+
+ s->setValueWithDefault(Constants::CUSTOM_PARSER_COUNT_KEY, dd->m_customParsers.count(), 0);
for (int i = 0; i < dd->m_customParsers.count(); ++i) {
s->setValue(Constants::CUSTOM_PARSER_PREFIX_KEY + QString::number(i),
dd->m_customParsers.at(i).toMap());
diff --git a/src/plugins/projectexplorer/projectexplorersettings.h b/src/plugins/projectexplorer/projectexplorersettings.h
index 496bc3e26a..b5cbd7db3f 100644
--- a/src/plugins/projectexplorer/projectexplorersettings.h
+++ b/src/plugins/projectexplorer/projectexplorersettings.h
@@ -25,8 +25,10 @@
#pragma once
+#include "projectexplorerconstants.h"
+
#include <coreplugin/coreconstants.h>
-#include <projectexplorer/projectexplorerconstants.h>
+#include <utils/hostosinfo.h>
#include <QUuid>
@@ -53,7 +55,9 @@ public:
bool clearIssuesOnRebuild = true;
bool abortBuildAllOnError = true;
bool lowBuildPriority = false;
- StopBeforeBuild stopBeforeBuild = StopBeforeBuild::None;
+ StopBeforeBuild stopBeforeBuild = Utils::HostOsInfo::isWindowsHost()
+ ? StopBeforeBuild::SameProject
+ : StopBeforeBuild::None;
TerminalMode terminalMode = TerminalMode::Off;
// Add a UUid which is used to identify the development environment.
diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp
index 353d50716c..6b15b6f13a 100644
--- a/src/plugins/projectexplorer/projecttreewidget.cpp
+++ b/src/plugins/projectexplorer/projecttreewidget.cpp
@@ -635,16 +635,32 @@ NavigationView ProjectTreeWidgetFactory::createWidget()
return n;
}
-void ProjectTreeWidgetFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
+const bool kProjectFilterDefault = false;
+const bool kHideGeneratedFilesDefault = true;
+const bool kHideDisabledFilesDefault = false;
+const bool kTrimEmptyDirsDefault = true;
+const bool kSyncDefault = true;
+
+void ProjectTreeWidgetFactory::saveSettings(QtcSettings *settings, int position, QWidget *widget)
{
auto ptw = qobject_cast<ProjectTreeWidget *>(widget);
Q_ASSERT(ptw);
const QString baseKey = QLatin1String("ProjectTreeWidget.") + QString::number(position);
- settings->setValue(baseKey + QLatin1String(".ProjectFilter"), ptw->projectFilter());
- settings->setValue(baseKey + QLatin1String(".GeneratedFilter"), ptw->generatedFilesFilter());
- settings->setValue(baseKey + ".DisabledFilesFilter", ptw->disabledFilesFilter());
- settings->setValue(baseKey + QLatin1String(".TrimEmptyDirsFilter"), ptw->trimEmptyDirectoriesFilter());
- settings->setValue(baseKey + QLatin1String(".SyncWithEditor"), ptw->autoSynchronization());
+ settings->setValueWithDefault(baseKey + ".ProjectFilter",
+ ptw->projectFilter(),
+ kProjectFilterDefault);
+ settings->setValueWithDefault(baseKey + ".GeneratedFilter",
+ ptw->generatedFilesFilter(),
+ kHideGeneratedFilesDefault);
+ settings->setValueWithDefault(baseKey + ".DisabledFilesFilter",
+ ptw->disabledFilesFilter(),
+ kHideDisabledFilesDefault);
+ settings->setValueWithDefault(baseKey + ".TrimEmptyDirsFilter",
+ ptw->trimEmptyDirectoriesFilter(),
+ kTrimEmptyDirsDefault);
+ settings->setValueWithDefault(baseKey + ".SyncWithEditor",
+ ptw->autoSynchronization(),
+ kSyncDefault);
}
void ProjectTreeWidgetFactory::restoreSettings(QSettings *settings, int position, QWidget *widget)
@@ -652,9 +668,16 @@ void ProjectTreeWidgetFactory::restoreSettings(QSettings *settings, int position
auto ptw = qobject_cast<ProjectTreeWidget *>(widget);
Q_ASSERT(ptw);
const QString baseKey = QLatin1String("ProjectTreeWidget.") + QString::number(position);
- ptw->setProjectFilter(settings->value(baseKey + QLatin1String(".ProjectFilter"), false).toBool());
- ptw->setGeneratedFilesFilter(settings->value(baseKey + QLatin1String(".GeneratedFilter"), true).toBool());
- ptw->setDisabledFilesFilter(settings->value(baseKey + ".DisabledFilesFilter", false).toBool());
- ptw->setTrimEmptyDirectories(settings->value(baseKey + QLatin1String(".TrimEmptyDirsFilter"), true).toBool());
- ptw->setAutoSynchronization(settings->value(baseKey + QLatin1String(".SyncWithEditor"), true).toBool());
+ ptw->setProjectFilter(
+ settings->value(baseKey + QLatin1String(".ProjectFilter"), kProjectFilterDefault).toBool());
+ ptw->setGeneratedFilesFilter(
+ settings->value(baseKey + QLatin1String(".GeneratedFilter"), kHideGeneratedFilesDefault)
+ .toBool());
+ ptw->setDisabledFilesFilter(
+ settings->value(baseKey + ".DisabledFilesFilter", kHideDisabledFilesDefault).toBool());
+ ptw->setTrimEmptyDirectories(
+ settings->value(baseKey + QLatin1String(".TrimEmptyDirsFilter"), kTrimEmptyDirsDefault)
+ .toBool());
+ ptw->setAutoSynchronization(
+ settings->value(baseKey + QLatin1String(".SyncWithEditor"), kSyncDefault).toBool());
}
diff --git a/src/plugins/projectexplorer/projecttreewidget.h b/src/plugins/projectexplorer/projecttreewidget.h
index aa612fdf7e..c9afb44fab 100644
--- a/src/plugins/projectexplorer/projecttreewidget.h
+++ b/src/plugins/projectexplorer/projecttreewidget.h
@@ -114,7 +114,7 @@ public:
Core::NavigationView createWidget() override;
void restoreSettings(QSettings *settings, int position, QWidget *widget) override;
- void saveSettings(QSettings *settings, int position, QWidget *widget) override;
+ void saveSettings(Utils::QtcSettings *settings, int position, QWidget *widget) override;
};
} // namespace Internal
diff --git a/src/plugins/projectexplorer/toolchainmanager.cpp b/src/plugins/projectexplorer/toolchainmanager.cpp
index e16f642952..546f553b0c 100644
--- a/src/plugins/projectexplorer/toolchainmanager.cpp
+++ b/src/plugins/projectexplorer/toolchainmanager.cpp
@@ -105,7 +105,8 @@ ToolChainManager::ToolChainManager(QObject *parent) :
connect(this, &ToolChainManager::toolChainUpdated, this, &ToolChainManager::toolChainsChanged);
QSettings * const s = Core::ICore::settings();
- d->m_detectionSettings.detectX64AsX32 = s->value(DETECT_X64_AS_X32_KEY, false).toBool();
+ d->m_detectionSettings.detectX64AsX32
+ = s->value(DETECT_X64_AS_X32_KEY, ToolchainDetectionSettings().detectX64AsX32).toBool();
}
ToolChainManager::~ToolChainManager()
@@ -137,8 +138,10 @@ void ToolChainManager::saveToolChains()
QTC_ASSERT(d->m_accessor, return);
d->m_accessor->saveToolChains(d->m_toolChains, Core::ICore::dialogParent());
- QSettings * const s = Core::ICore::settings();
- s->setValue(DETECT_X64_AS_X32_KEY, d->m_detectionSettings.detectX64AsX32);
+ QtcSettings *const s = Core::ICore::settings();
+ s->setValueWithDefault(DETECT_X64_AS_X32_KEY,
+ d->m_detectionSettings.detectX64AsX32,
+ ToolchainDetectionSettings().detectX64AsX32);
}
QList<ToolChain *> ToolChainManager::toolChains(const ToolChain::Predicate &predicate)
diff --git a/src/plugins/texteditor/outlinefactory.cpp b/src/plugins/texteditor/outlinefactory.cpp
index 87a162e0d1..7c7e644b18 100644
--- a/src/plugins/texteditor/outlinefactory.cpp
+++ b/src/plugins/texteditor/outlinefactory.cpp
@@ -250,7 +250,7 @@ Core::NavigationView OutlineFactory::createWidget()
return n;
}
-void OutlineFactory::saveSettings(QSettings *settings, int position, QWidget *widget)
+void OutlineFactory::saveSettings(Utils::QtcSettings *settings, int position, QWidget *widget)
{
auto widgetStack = qobject_cast<OutlineWidgetStack *>(widget);
Q_ASSERT(widgetStack);
diff --git a/src/plugins/texteditor/outlinefactory.h b/src/plugins/texteditor/outlinefactory.h
index 83d6e00522..0f72bcf6e5 100644
--- a/src/plugins/texteditor/outlinefactory.h
+++ b/src/plugins/texteditor/outlinefactory.h
@@ -79,7 +79,7 @@ public:
// from INavigationWidgetFactory
Core::NavigationView createWidget() override;
- void saveSettings(QSettings *settings, int position, QWidget *widget) override;
+ void saveSettings(Utils::QtcSettings *settings, int position, QWidget *widget) override;
void restoreSettings(QSettings *settings, int position, QWidget *widget) override;
signals: