diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index b72fc2060e3..1565e4bc300 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -2511,9 +2511,9 @@ void DoubleAspect::setSingleStep(double step) */ TriStateAspect::TriStateAspect(AspectContainer *container, - const QString &onString, - const QString &offString, - const QString &defaultString) + const QString &enabledDisplay, + const QString &disabledDisplay, + const QString &defaultDisplay) : SelectionAspect(container) { setDisplayStyle(DisplayStyle::ComboBox); @@ -2521,17 +2521,26 @@ TriStateAspect::TriStateAspect(AspectContainer *container, SelectionAspect::addOption({}); SelectionAspect::addOption({}); SelectionAspect::addOption({}); - setOptionTexts(onString, offString, defaultString); + setOptionText(TriState::EnabledValue, enabledDisplay); + setOptionText(TriState::DisabledValue, disabledDisplay); + setOptionText(TriState::DefaultValue, defaultDisplay); } -void TriStateAspect::setOptionTexts(const QString &onString, - const QString &offString, - const QString &defaultString) +static QString defaultTristateDisplay(TriState::Value tristate) { - QTC_ASSERT(d->m_options.size() == 3, return); - d->m_options[0].displayName = onString.isEmpty() ? Tr::tr("Enable") : onString; - d->m_options[1].displayName = offString.isEmpty() ? Tr::tr("Disable") : offString; - d->m_options[2].displayName = defaultString.isEmpty() ? Tr::tr("Leave at Default") : defaultString; + switch (tristate) { + case TriState::EnabledValue: return Tr::tr("Enable"); + case TriState::DisabledValue: return Tr::tr("Disable"); + case TriState::DefaultValue: return Tr::tr("Default"); + } + QTC_CHECK(false); + return {}; +} + +void TriStateAspect::setOptionText(const TriState::Value tristate, const QString &display) +{ + d->m_options[tristate].displayName = display.isEmpty() + ? defaultTristateDisplay(tristate) : display; } TriState TriStateAspect::value() const diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index cb885cc495a..9d4d7cc390f 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -773,11 +773,11 @@ private: class QTCREATOR_UTILS_EXPORT TriState { - enum Value { EnabledValue, DisabledValue, DefaultValue }; - explicit TriState(Value v) : m_value(v) {} - public: + enum Value { EnabledValue, DisabledValue, DefaultValue }; + TriState() = default; + explicit TriState(Value v) : m_value(v) {} int toInt() const { return int(m_value); } QVariant toVariant() const { return int(m_value); } @@ -801,9 +801,9 @@ class QTCREATOR_UTILS_EXPORT TriStateAspect : public SelectionAspect public: TriStateAspect(AspectContainer *container = nullptr, - const QString &onString = {}, - const QString &offString = {}, - const QString &defaultString = {}); + const QString &enabledDisplay = {}, + const QString &disabledDisplay = {}, + const QString &defaultDisplay = {}); TriState operator()() const { return value(); } TriState value() const; @@ -812,9 +812,8 @@ public: TriState defaultValue() const; void setDefaultValue(TriState setting); - void setOptionTexts(const QString &onString, - const QString &offString, - const QString &defaultString); + void setOptionText(const TriState::Value tristate, const QString &display); + private: void addOption(const QString &displayName, const QString &toolTip = {}) = delete; void addOption(const Option &option) = delete; diff --git a/src/plugins/debugger/debuggerrunconfigurationaspect.cpp b/src/plugins/debugger/debuggerrunconfigurationaspect.cpp index cff934e398d..54ac38e8ece 100644 --- a/src/plugins/debugger/debuggerrunconfigurationaspect.cpp +++ b/src/plugins/debugger/debuggerrunconfigurationaspect.cpp @@ -111,15 +111,15 @@ DebuggerRunConfigurationAspect::DebuggerRunConfigurationAspect(Target *target) m_cppAspect.setSettingsKey("RunConfiguration.UseCppDebugger"); m_cppAspect.setLabelText(Tr::tr("C++ debugger:")); - m_cppAspect.setOptionTexts(Tr::tr("Enabled"), Tr::tr("Disabled"), Tr::tr("Automatic")); + m_cppAspect.setOptionText(TriState::DefaultValue, Tr::tr("Automatic")); m_qmlAspect.setSettingsKey("RunConfiguration.UseQmlDebugger"); m_qmlAspect.setLabelText(Tr::tr("QML debugger:")); - m_qmlAspect.setOptionTexts(Tr::tr("Enabled"), Tr::tr("Disabled"), Tr::tr("Automatic")); + m_qmlAspect.setOptionText(TriState::DefaultValue, Tr::tr("Automatic")); m_pythonAspect.setSettingsKey("RunConfiguration.UsePythonDebugger"); m_pythonAspect.setLabelText(Tr::tr("Python debugger:")); - m_pythonAspect.setOptionTexts(Tr::tr("Enabled"), Tr::tr("Disabled"), Tr::tr("Automatic")); + m_pythonAspect.setOptionText(TriState::DefaultValue, Tr::tr("Automatic")); // Make sure at least one of the debuggers is set to be active. connect(&m_cppAspect, &TriStateAspect::changed, this, [this] { diff --git a/src/plugins/debugger/gdb/gdbsettings.cpp b/src/plugins/debugger/gdb/gdbsettings.cpp index d0088d59f0e..3d1bed263c8 100644 --- a/src/plugins/debugger/gdb/gdbsettings.cpp +++ b/src/plugins/debugger/gdb/gdbsettings.cpp @@ -168,7 +168,7 @@ GdbSettings::GdbSettings() useDebugInfoD.setSettingsKey("UseDebugInfoD"); useDebugInfoD.setLabelText(Tr::tr("Use debug info daemon")); - useDebugInfoD.setOptionTexts({}, {}, tr("Use system settings")); + useDebugInfoD.setOptionText(TriState::DefaultValue, tr("Use system settings")); useDebugInfoD.setToolTip(Tr::tr("Lets GDB attempt to automatically retrieve " "debug information for system packages."));