aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/vcsbase/vcsbaseeditorconfig.cpp
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2021-03-16 07:35:47 +0100
committerhjk <hjk@qt.io>2021-03-16 07:18:50 +0000
commit61b278fe6eeff0c6d6554c3e0dc9bcfc2a4c8a94 (patch)
tree0465860db3c789cdb3fc62eae62354a82fb5f90c /src/plugins/vcsbase/vcsbaseeditorconfig.cpp
parent687d6a76ec90e3580d92cedecac0cbd54f54a652 (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.cpp79
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 ()
}