forked from qt-creator/qt-creator
Utils: Pimpl BaseAspect
Change-Id: I70a7d49010c24a44dc64d20c5548c249964b78bd Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -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()
|
||||
|
Reference in New Issue
Block a user