Utils: Pimpl BaseAspect

Change-Id: I70a7d49010c24a44dc64d20c5548c249964b78bd
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2020-12-17 15:43:10 +01:00
parent 74b773e68f
commit 0edebcfa9c
4 changed files with 66 additions and 25 deletions

View File

@@ -47,6 +47,19 @@
#include <QToolButton>
namespace Utils {
namespace Internal {
class BaseAspectPrivate
{
public:
Utils::Id m_id;
QString m_displayName;
QString m_settingsKey; // Name of data in settings.
bool m_visible = true;
BaseAspect::ConfigWidgetCreator m_configWidgetCreator;
};
} // Internal
/*!
\class Utils::BaseAspect
@@ -70,7 +83,34 @@ namespace Utils {
/*!
Constructs a BaseAspect.
*/
BaseAspect::BaseAspect() = default;
BaseAspect::BaseAspect()
: d(new Internal::BaseAspectPrivate)
{}
Id BaseAspect::id() const
{
return d->m_id;
}
void BaseAspect::setId(Id id)
{
d->m_id = id;
}
void BaseAspect::setDisplayName(const QString &displayName)
{
d->m_displayName = displayName;
}
bool BaseAspect::isVisible() const
{
return d->m_visible;
}
void BaseAspect::setVisible(bool visible)
{
d->m_visible = visible;
}
/*!
Destructs a BaseAspect.
@@ -82,7 +122,7 @@ BaseAspect::~BaseAspect() = default;
*/
void BaseAspect::setConfigWidgetCreator(const ConfigWidgetCreator &configWidgetCreator)
{
m_configWidgetCreator = configWidgetCreator;
d->m_configWidgetCreator = configWidgetCreator;
}
/*!
@@ -92,7 +132,7 @@ void BaseAspect::setConfigWidgetCreator(const ConfigWidgetCreator &configWidgetC
*/
QString BaseAspect::settingsKey() const
{
return m_settingsKey;
return d->m_settingsKey;
}
/*!
@@ -102,7 +142,7 @@ QString BaseAspect::settingsKey() const
*/
void BaseAspect::setSettingsKey(const QString &key)
{
m_settingsKey = key;
d->m_settingsKey = key;
}
/*!
@@ -112,15 +152,17 @@ void BaseAspect::setSettingsKey(const QString &key)
*/
void BaseAspect::setSettingsKey(const QString &group, const QString &key)
{
m_settingsKey = group + "/" + key;
d->m_settingsKey = group + "/" + key;
}
QString BaseAspect::displayName() const { return d->m_displayName; }
/*!
\internal
*/
QWidget *BaseAspect::createConfigWidget() const
{
return m_configWidgetCreator ? m_configWidgetCreator() : nullptr;
return d->m_configWidgetCreator ? d->m_configWidgetCreator() : nullptr;
}
/*!

View File

@@ -42,6 +42,7 @@ class LayoutBuilder;
namespace Internal {
class AspectContainerPrivate;
class BaseAspectPrivate;
class BoolAspectPrivate;
class IntegerAspectPrivate;
class SelectionAspectPrivate;
@@ -58,17 +59,18 @@ public:
BaseAspect();
~BaseAspect() override;
void setId(Utils::Id id) { m_id = id; }
void setDisplayName(const QString &displayName) { m_displayName = displayName; }
Utils::Id id() const;
void setId(Utils::Id id);
QString settingsKey() const;
void setSettingsKey(const QString &settingsKey);
void setSettingsKey(const QString &group, const QString &key);
Utils::Id id() const { return m_id; }
QString displayName() const { return m_displayName; }
QString settingsKey() const;
QString displayName() const;
void setDisplayName(const QString &displayName);
bool isVisible() const { return m_visible; }
void setVisible(bool visible) { m_visible = visible; }
bool isVisible() const;
void setVisible(bool visible);
using ConfigWidgetCreator = std::function<QWidget *()>;
void setConfigWidgetCreator(const ConfigWidgetCreator &configWidgetCreator);
@@ -88,11 +90,8 @@ protected:
void saveToMap(QVariantMap &data, const QVariant &value,
const QVariant &defaultValue, const QString &keyExtension = {}) const;
Utils::Id m_id;
QString m_displayName;
QString m_settingsKey; // Name of data in settings.
bool m_visible = true;
ConfigWidgetCreator m_configWidgetCreator;
private:
std::unique_ptr<Internal::BaseAspectPrivate> d;
};
class QTCREATOR_UTILS_EXPORT BaseAspects

View File

@@ -117,7 +117,7 @@ QString SavedAction::toString() const
{
return QLatin1String("value: ") + m_value.toString()
+ QLatin1String(" defaultvalue: ") + m_defaultValue.toString()
+ QLatin1String(" settingskey: ") + m_settingsKey;
+ QLatin1String(" settingskey: ") + settingsKey();
}
/*
@@ -128,9 +128,9 @@ QString SavedAction::toString() const
*/
void SavedAction::readSettings(const QSettings *settings)
{
if (m_settingsKey.isEmpty())
if (settingsKey().isEmpty())
return;
QVariant var = settings->value(m_settingsKey, m_defaultValue);
QVariant var = settings->value(settingsKey(), m_defaultValue);
// work around old ini files containing @Invalid() entries
if (m_action.isCheckable() && !var.isValid())
var = false;
@@ -145,9 +145,9 @@ void SavedAction::readSettings(const QSettings *settings)
*/
void SavedAction::writeSettings(QSettings *settings)
{
if (m_settingsKey.isEmpty())
if (settingsKey().isEmpty())
return;
settings->setValue(m_settingsKey, m_value);
settings->setValue(settingsKey(), m_value);
}
/*

View File

@@ -124,14 +124,14 @@ void GlobalOrProjectAspect::fromMap(const QVariantMap &map)
{
if (m_projectSettings)
m_projectSettings->fromMap(map);
m_useGlobalSettings = map.value(m_id.toString() + QLatin1String(".UseGlobalSettings"), true).toBool();
m_useGlobalSettings = map.value(id().toString() + ".UseGlobalSettings", true).toBool();
}
void GlobalOrProjectAspect::toMap(QVariantMap &map) const
{
if (m_projectSettings)
m_projectSettings->toMap(map);
map.insert(m_id.toString() + QLatin1String(".UseGlobalSettings"), m_useGlobalSettings);
map.insert(id().toString() + ".UseGlobalSettings", m_useGlobalSettings);
}
void GlobalOrProjectAspect::resetProjectToGlobalSettings()