forked from qt-creator/qt-creator
Utils: Consolidate some duplicated code in aspect implementations
Change-Id: Iad6b81d13705ce6ad752f2855fb47ea038ffe581 Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
@@ -1205,42 +1205,28 @@ void StringAspect::addToLayout(LayoutItem &parent)
|
|||||||
|
|
||||||
bool StringAspect::guiToBuffer()
|
bool StringAspect::guiToBuffer()
|
||||||
{
|
{
|
||||||
const QString old = m_buffer;
|
if (d->m_pathChooserDisplay)
|
||||||
switch (d->m_displayStyle) {
|
return updateStorage(m_buffer, d->m_pathChooserDisplay->lineEdit()->text());
|
||||||
case PathChooserDisplay:
|
if (d->m_lineEditDisplay)
|
||||||
if (d->m_pathChooserDisplay)
|
return updateStorage(m_buffer, d->m_lineEditDisplay->text());
|
||||||
m_buffer = d->m_pathChooserDisplay->lineEdit()->text();
|
if (d->m_textEditDisplay)
|
||||||
break;
|
return updateStorage(m_buffer, d->m_textEditDisplay->document()->toPlainText());
|
||||||
case LineEditDisplay:
|
return false;
|
||||||
if (d->m_lineEditDisplay)
|
|
||||||
m_buffer = d->m_lineEditDisplay->text();
|
|
||||||
break;
|
|
||||||
case TextEditDisplay:
|
|
||||||
if (d->m_textEditDisplay)
|
|
||||||
m_buffer = d->m_textEditDisplay->document()->toPlainText();
|
|
||||||
case LabelDisplay:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return m_buffer != old;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool StringAspect::bufferToInternal()
|
bool StringAspect::bufferToInternal()
|
||||||
{
|
{
|
||||||
const QString old = m_internal;
|
|
||||||
if (d->m_valueAcceptor) {
|
if (d->m_valueAcceptor) {
|
||||||
if (const std::optional<QString> tmp = d->m_valueAcceptor(m_internal, m_buffer))
|
if (const std::optional<QString> tmp = d->m_valueAcceptor(m_internal, m_buffer))
|
||||||
m_internal = *tmp;
|
return updateStorage(m_internal, *tmp);
|
||||||
} else {
|
|
||||||
m_internal = m_buffer;
|
|
||||||
}
|
}
|
||||||
return m_internal != old;
|
return updateStorage(m_internal, m_buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool StringAspect::internalToBuffer()
|
bool StringAspect::internalToBuffer()
|
||||||
{
|
{
|
||||||
const QString old = m_buffer;
|
const QString val = d->m_displayFilter ? d->m_displayFilter(m_internal) : m_internal;
|
||||||
m_buffer = d->m_displayFilter ? d->m_displayFilter(m_internal) : m_internal;
|
return updateStorage(m_buffer, val);
|
||||||
return m_buffer != old;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void StringAspect::bufferToGui()
|
void StringAspect::bufferToGui()
|
||||||
@@ -1398,10 +1384,9 @@ void ColorAspect::addToLayout(Layouting::LayoutItem &parent)
|
|||||||
|
|
||||||
bool ColorAspect::guiToBuffer()
|
bool ColorAspect::guiToBuffer()
|
||||||
{
|
{
|
||||||
const QColor old = m_buffer;
|
|
||||||
if (d->m_colorButton)
|
if (d->m_colorButton)
|
||||||
m_buffer = d->m_colorButton->color();
|
return updateStorage(m_buffer, d->m_colorButton->color());
|
||||||
return m_buffer != old;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ColorAspect::bufferToGui()
|
void ColorAspect::bufferToGui()
|
||||||
@@ -1630,19 +1615,12 @@ bool SelectionAspect::guiToBuffer()
|
|||||||
|
|
||||||
void SelectionAspect::bufferToGui()
|
void SelectionAspect::bufferToGui()
|
||||||
{
|
{
|
||||||
switch (d->m_displayStyle) {
|
if (d->m_buttonGroup) {
|
||||||
case DisplayStyle::RadioButtons: {
|
QAbstractButton *button = d->m_buttonGroup->button(m_buffer);
|
||||||
if (d->m_buttonGroup) {
|
QTC_ASSERT(button, return);
|
||||||
QAbstractButton *button = d->m_buttonGroup->button(m_buffer);
|
button->setChecked(true);
|
||||||
QTC_ASSERT(button, return);
|
} else if (d->m_comboBox) {
|
||||||
button->setChecked(true);
|
d->m_comboBox->setCurrentIndex(m_buffer);
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case DisplayStyle::ComboBox:
|
|
||||||
if (d->m_comboBox)
|
|
||||||
d->m_comboBox->setCurrentIndex(m_buffer);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1819,18 +1797,18 @@ void MultiSelectionAspect::bufferToGui()
|
|||||||
|
|
||||||
bool MultiSelectionAspect::guiToBuffer()
|
bool MultiSelectionAspect::guiToBuffer()
|
||||||
{
|
{
|
||||||
const QStringList old = m_buffer;
|
|
||||||
if (d->m_listView) {
|
if (d->m_listView) {
|
||||||
m_buffer.clear();
|
QStringList val;
|
||||||
const int n = d->m_listView->count();
|
const int n = d->m_listView->count();
|
||||||
QTC_CHECK(n == d->m_allValues.size());
|
QTC_CHECK(n == d->m_allValues.size());
|
||||||
for (int i = 0; i != n; ++i) {
|
for (int i = 0; i != n; ++i) {
|
||||||
auto item = d->m_listView->item(i);
|
auto item = d->m_listView->item(i);
|
||||||
if (item->checkState() == Qt::Checked)
|
if (item->checkState() == Qt::Checked)
|
||||||
m_buffer.append(item->text());
|
val.append(item->text());
|
||||||
}
|
}
|
||||||
|
return updateStorage(m_buffer, val);
|
||||||
}
|
}
|
||||||
return m_buffer != old;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1884,10 +1862,9 @@ void IntegerAspect::addToLayout(Layouting::LayoutItem &parent)
|
|||||||
|
|
||||||
bool IntegerAspect::guiToBuffer()
|
bool IntegerAspect::guiToBuffer()
|
||||||
{
|
{
|
||||||
const qint64 old = m_buffer;
|
|
||||||
if (d->m_spinBox)
|
if (d->m_spinBox)
|
||||||
m_buffer = d->m_spinBox->value() * d->m_displayScaleFactor;
|
return updateStorage(m_buffer, d->m_spinBox->value() * d->m_displayScaleFactor);
|
||||||
return m_buffer != old;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntegerAspect::bufferToGui()
|
void IntegerAspect::bufferToGui()
|
||||||
@@ -1985,10 +1962,9 @@ void DoubleAspect::addToLayout(LayoutItem &builder)
|
|||||||
|
|
||||||
bool DoubleAspect::guiToBuffer()
|
bool DoubleAspect::guiToBuffer()
|
||||||
{
|
{
|
||||||
const double old = m_buffer;
|
|
||||||
if (d->m_spinBox)
|
if (d->m_spinBox)
|
||||||
m_buffer = d->m_spinBox->value();
|
return updateStorage(m_buffer, d->m_spinBox->value());
|
||||||
return m_buffer != old;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoubleAspect::bufferToGui()
|
void DoubleAspect::bufferToGui()
|
||||||
|
@@ -214,6 +214,16 @@ protected:
|
|||||||
static void saveToMap(QVariantMap &data, const QVariant &value,
|
static void saveToMap(QVariantMap &data, const QVariant &value,
|
||||||
const QVariant &defaultValue, const QString &key);
|
const QVariant &defaultValue, const QString &key);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
template <class Value>
|
||||||
|
bool updateStorage(Value &target, const Value &val)
|
||||||
|
{
|
||||||
|
if (target == val)
|
||||||
|
return false;
|
||||||
|
target = val;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<Internal::BaseAspectPrivate> d;
|
std::unique_ptr<Internal::BaseAspectPrivate> d;
|
||||||
};
|
};
|
||||||
@@ -288,34 +298,22 @@ protected:
|
|||||||
|
|
||||||
bool internalToBuffer() override
|
bool internalToBuffer() override
|
||||||
{
|
{
|
||||||
if (m_buffer == m_internal)
|
return updateStorage(m_buffer, m_internal);
|
||||||
return false;
|
|
||||||
m_buffer = m_internal;
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool bufferToInternal() override
|
bool bufferToInternal() override
|
||||||
{
|
{
|
||||||
if (m_buffer == m_internal)
|
return updateStorage(m_internal, m_buffer);
|
||||||
return false;
|
|
||||||
m_internal = m_buffer;
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool internalToExternal() override
|
bool internalToExternal() override
|
||||||
{
|
{
|
||||||
if (m_external == m_internal)
|
return updateStorage(m_external, m_internal);
|
||||||
return false;
|
|
||||||
m_external = m_internal;
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool externalToInternal() override
|
bool externalToInternal() override
|
||||||
{
|
{
|
||||||
if (m_external == m_internal)
|
return updateStorage(m_internal, m_external);
|
||||||
return false;
|
|
||||||
m_internal = m_external;
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant variantValue() const override
|
QVariant variantValue() const override
|
||||||
|
Reference in New Issue
Block a user