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>
|
#include <QToolButton>
|
||||||
|
|
||||||
namespace Utils {
|
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
|
\class Utils::BaseAspect
|
||||||
@@ -70,7 +83,34 @@ namespace Utils {
|
|||||||
/*!
|
/*!
|
||||||
Constructs a BaseAspect.
|
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.
|
Destructs a BaseAspect.
|
||||||
@@ -82,7 +122,7 @@ BaseAspect::~BaseAspect() = default;
|
|||||||
*/
|
*/
|
||||||
void BaseAspect::setConfigWidgetCreator(const ConfigWidgetCreator &configWidgetCreator)
|
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
|
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)
|
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)
|
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
|
\internal
|
||||||
*/
|
*/
|
||||||
QWidget *BaseAspect::createConfigWidget() const
|
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 {
|
namespace Internal {
|
||||||
class AspectContainerPrivate;
|
class AspectContainerPrivate;
|
||||||
|
class BaseAspectPrivate;
|
||||||
class BoolAspectPrivate;
|
class BoolAspectPrivate;
|
||||||
class IntegerAspectPrivate;
|
class IntegerAspectPrivate;
|
||||||
class SelectionAspectPrivate;
|
class SelectionAspectPrivate;
|
||||||
@@ -58,17 +59,18 @@ public:
|
|||||||
BaseAspect();
|
BaseAspect();
|
||||||
~BaseAspect() override;
|
~BaseAspect() override;
|
||||||
|
|
||||||
void setId(Utils::Id id) { m_id = id; }
|
Utils::Id id() const;
|
||||||
void setDisplayName(const QString &displayName) { m_displayName = displayName; }
|
void setId(Utils::Id id);
|
||||||
|
|
||||||
|
QString settingsKey() const;
|
||||||
void setSettingsKey(const QString &settingsKey);
|
void setSettingsKey(const QString &settingsKey);
|
||||||
void setSettingsKey(const QString &group, const QString &key);
|
void setSettingsKey(const QString &group, const QString &key);
|
||||||
|
|
||||||
Utils::Id id() const { return m_id; }
|
QString displayName() const;
|
||||||
QString displayName() const { return m_displayName; }
|
void setDisplayName(const QString &displayName);
|
||||||
QString settingsKey() const;
|
|
||||||
|
|
||||||
bool isVisible() const { return m_visible; }
|
bool isVisible() const;
|
||||||
void setVisible(bool visible) { m_visible = visible; }
|
void setVisible(bool visible);
|
||||||
|
|
||||||
using ConfigWidgetCreator = std::function<QWidget *()>;
|
using ConfigWidgetCreator = std::function<QWidget *()>;
|
||||||
void setConfigWidgetCreator(const ConfigWidgetCreator &configWidgetCreator);
|
void setConfigWidgetCreator(const ConfigWidgetCreator &configWidgetCreator);
|
||||||
@@ -88,11 +90,8 @@ protected:
|
|||||||
void saveToMap(QVariantMap &data, const QVariant &value,
|
void saveToMap(QVariantMap &data, const QVariant &value,
|
||||||
const QVariant &defaultValue, const QString &keyExtension = {}) const;
|
const QVariant &defaultValue, const QString &keyExtension = {}) const;
|
||||||
|
|
||||||
Utils::Id m_id;
|
private:
|
||||||
QString m_displayName;
|
std::unique_ptr<Internal::BaseAspectPrivate> d;
|
||||||
QString m_settingsKey; // Name of data in settings.
|
|
||||||
bool m_visible = true;
|
|
||||||
ConfigWidgetCreator m_configWidgetCreator;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class QTCREATOR_UTILS_EXPORT BaseAspects
|
class QTCREATOR_UTILS_EXPORT BaseAspects
|
||||||
|
@@ -117,7 +117,7 @@ QString SavedAction::toString() const
|
|||||||
{
|
{
|
||||||
return QLatin1String("value: ") + m_value.toString()
|
return QLatin1String("value: ") + m_value.toString()
|
||||||
+ QLatin1String(" defaultvalue: ") + m_defaultValue.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)
|
void SavedAction::readSettings(const QSettings *settings)
|
||||||
{
|
{
|
||||||
if (m_settingsKey.isEmpty())
|
if (settingsKey().isEmpty())
|
||||||
return;
|
return;
|
||||||
QVariant var = settings->value(m_settingsKey, m_defaultValue);
|
QVariant var = settings->value(settingsKey(), m_defaultValue);
|
||||||
// work around old ini files containing @Invalid() entries
|
// work around old ini files containing @Invalid() entries
|
||||||
if (m_action.isCheckable() && !var.isValid())
|
if (m_action.isCheckable() && !var.isValid())
|
||||||
var = false;
|
var = false;
|
||||||
@@ -145,9 +145,9 @@ void SavedAction::readSettings(const QSettings *settings)
|
|||||||
*/
|
*/
|
||||||
void SavedAction::writeSettings(QSettings *settings)
|
void SavedAction::writeSettings(QSettings *settings)
|
||||||
{
|
{
|
||||||
if (m_settingsKey.isEmpty())
|
if (settingsKey().isEmpty())
|
||||||
return;
|
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)
|
if (m_projectSettings)
|
||||||
m_projectSettings->fromMap(map);
|
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
|
void GlobalOrProjectAspect::toMap(QVariantMap &map) const
|
||||||
{
|
{
|
||||||
if (m_projectSettings)
|
if (m_projectSettings)
|
||||||
m_projectSettings->toMap(map);
|
m_projectSettings->toMap(map);
|
||||||
map.insert(m_id.toString() + QLatin1String(".UseGlobalSettings"), m_useGlobalSettings);
|
map.insert(id().toString() + ".UseGlobalSettings", m_useGlobalSettings);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GlobalOrProjectAspect::resetProjectToGlobalSettings()
|
void GlobalOrProjectAspect::resetProjectToGlobalSettings()
|
||||||
|
Reference in New Issue
Block a user