diff options
author | hjk <hjk@qt.io> | 2021-03-16 07:35:47 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2021-03-16 07:18:50 +0000 |
commit | 61b278fe6eeff0c6d6554c3e0dc9bcfc2a4c8a94 (patch) | |
tree | 0465860db3c789cdb3fc62eae62354a82fb5f90c /src/plugins/vcsbase/vcsbaseeditorconfig.cpp | |
parent | 687d6a76ec90e3580d92cedecac0cbd54f54a652 (diff) |
VCS: Allow VcsBaseEditorConfig to operate on aspects
Change-Id: Id7b5b1a1020ea002e631e401c49b8eda6dfb8944
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/vcsbase/vcsbaseeditorconfig.cpp')
-rw-r--r-- | src/plugins/vcsbase/vcsbaseeditorconfig.cpp | 79 |
1 files changed, 77 insertions, 2 deletions
diff --git a/src/plugins/vcsbase/vcsbaseeditorconfig.cpp b/src/plugins/vcsbase/vcsbaseeditorconfig.cpp index 95a08f72ae..f4b704b6e9 100644 --- a/src/plugins/vcsbase/vcsbaseeditorconfig.cpp +++ b/src/plugins/vcsbase/vcsbaseeditorconfig.cpp @@ -25,6 +25,7 @@ #include "vcsbaseeditorconfig.h" +#include <utils/aspects.h> #include <utils/utilsicons.h> #include <QComboBox> @@ -34,8 +35,9 @@ #include <QStringList> #include <QDebug> -namespace VcsBase { +using namespace Utils; +namespace VcsBase { namespace Internal { class SettingMappingData @@ -46,7 +48,10 @@ public: Invalid, Bool, String, - Int + Int, + AspectBool, + AspectString, + AspectInt }; SettingMappingData() : boolSetting(nullptr) @@ -61,6 +66,15 @@ public: SettingMappingData(int *setting) : intSetting(setting), m_type(Int) { } + SettingMappingData(BoolAspect *setting) : boolAspectSetting(setting), m_type(AspectBool) + { } + + SettingMappingData(StringAspect *setting) : stringAspectSetting(setting), m_type(AspectString) + { } + + SettingMappingData(IntegerAspect *setting) : intAspectSetting(setting), m_type(AspectInt) + { } + Type type() const { return m_type; @@ -70,6 +84,9 @@ public: bool *boolSetting; QString *stringSetting; int *intSetting; + BoolAspect *boolAspectSetting; + StringAspect *stringAspectSetting; + IntegerAspect *intAspectSetting; }; private: @@ -197,6 +214,17 @@ void VcsBaseEditorConfig::mapSetting(QAction *button, bool *setting) } } +void VcsBaseEditorConfig::mapSetting(QAction *button, BoolAspect *setting) +{ + if (!d->m_settingMapping.contains(button) && button) { + d->m_settingMapping.insert(button, Internal::SettingMappingData(setting)); + if (setting) { + QSignalBlocker blocker(button); + button->setChecked(setting->value()); + } + } +} + void VcsBaseEditorConfig::mapSetting(QComboBox *comboBox, QString *setting) { if (!d->m_settingMapping.contains(comboBox) && comboBox) { @@ -210,6 +238,19 @@ void VcsBaseEditorConfig::mapSetting(QComboBox *comboBox, QString *setting) } } +void VcsBaseEditorConfig::mapSetting(QComboBox *comboBox, StringAspect *setting) +{ + if (!d->m_settingMapping.contains(comboBox) && comboBox) { + d->m_settingMapping.insert(comboBox, Internal::SettingMappingData(setting)); + if (setting) { + QSignalBlocker blocker(comboBox); + const int itemIndex = comboBox->findData(setting->value()); + if (itemIndex != -1) + comboBox->setCurrentIndex(itemIndex); + } + } +} + void VcsBaseEditorConfig::mapSetting(QComboBox *comboBox, int *setting) { if (d->m_settingMapping.contains(comboBox) || !comboBox) @@ -224,6 +265,20 @@ void VcsBaseEditorConfig::mapSetting(QComboBox *comboBox, int *setting) comboBox->setCurrentIndex(*setting); } +void VcsBaseEditorConfig::mapSetting(QComboBox *comboBox, IntegerAspect *setting) +{ + if (d->m_settingMapping.contains(comboBox) || !comboBox) + return; + + d->m_settingMapping.insert(comboBox, Internal::SettingMappingData(setting)); + + if (!setting || setting->value() < 0 || setting->value() >= comboBox->count()) + return; + + QSignalBlocker blocker(comboBox); + comboBox->setCurrentIndex(setting->value()); +} + void VcsBaseEditorConfig::handleArgumentsChanged() { updateMappedSettings(); @@ -287,6 +342,12 @@ void VcsBaseEditorConfig::updateMappedSettings() *settingData.boolSetting = action->isChecked(); break; } + case Internal::SettingMappingData::AspectBool : + { + if (auto action = qobject_cast<const QAction *>(optMapping.object)) + settingData.boolAspectSetting->setValue(action->isChecked()); + break; + } case Internal::SettingMappingData::String : { auto cb = qobject_cast<const QComboBox *>(optMapping.object); @@ -294,6 +355,13 @@ void VcsBaseEditorConfig::updateMappedSettings() *settingData.stringSetting = cb->itemData(cb->currentIndex()).toString(); break; } + case Internal::SettingMappingData::AspectString : + { + auto cb = qobject_cast<const QComboBox *>(optMapping.object); + if (cb && cb->currentIndex() != -1) + settingData.stringAspectSetting->setValue(cb->itemData(cb->currentIndex()).toString()); + break; + } case Internal::SettingMappingData::Int: { auto cb = qobject_cast<const QComboBox *>(optMapping.object); @@ -301,6 +369,13 @@ void VcsBaseEditorConfig::updateMappedSettings() *settingData.intSetting = cb->currentIndex(); break; } + case Internal::SettingMappingData::AspectInt: + { + auto cb = qobject_cast<const QComboBox *>(optMapping.object); + if (cb && cb->currentIndex() != -1) + settingData.intAspectSetting->setValue(cb->currentIndex()); + break; + } case Internal::SettingMappingData::Invalid : break; } // end switch () } |