You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1638 lines
56 KiB
1638 lines
56 KiB
/* |
|
* This file is part of KDE. |
|
* |
|
* Copyright (c) 2001,2002,2003 Cornelius Schumacher <schumacher@kde.org> |
|
* Copyright (c) 2003 Waldo Bastian <bastian@kde.org> |
|
* |
|
* This library is free software; you can redistribute it and/or |
|
* modify it under the terms of the GNU Library General Public |
|
* License as published by the Free Software Foundation; either |
|
* version 2 of the License, or (at your option) any later version. |
|
* |
|
* This library is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
* Library General Public License for more details. |
|
* |
|
* You should have received a copy of the GNU Library General Public License |
|
* along with this library; see the file COPYING.LIB. If not, write to |
|
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
|
* Boston, MA 02110-1301, USA. |
|
*/ |
|
|
|
#ifndef KCORECONFIGSKELETON_H |
|
#define KCORECONFIGSKELETON_H |
|
|
|
#include <kconfigcore_export.h> |
|
|
|
#include <ksharedconfig.h> |
|
#include <kconfiggroup.h> |
|
|
|
#include <QDate> |
|
#include <QHash> |
|
#include <QRect> |
|
#include <QStringList> |
|
#include <QVariant> |
|
#include <QUrl> |
|
|
|
class KCoreConfigSkeletonPrivate; |
|
|
|
class KConfigSkeletonItemPrivate; |
|
/** |
|
* \class KConfigSkeletonItem kcoreconfigskeleton.h <KConfigSkeletonItem> |
|
* |
|
* @short Class for storing a preferences setting |
|
* @author Cornelius Schumacher |
|
* @see KCoreConfigSkeleton |
|
* |
|
* This class represents one preferences setting as used by @ref KCoreConfigSkeleton. |
|
* Subclasses of KConfigSkeletonItem implement storage functions for a certain type of |
|
* setting. Normally you don't have to use this class directly. Use the special |
|
* addItem() functions of KCoreConfigSkeleton instead. If you subclass this class you will |
|
* have to register instances with the function KCoreConfigSkeleton::addItem(). |
|
*/ |
|
class KCONFIGCORE_EXPORT KConfigSkeletonItem |
|
{ |
|
Q_DECLARE_PRIVATE(KConfigSkeletonItem) |
|
public: |
|
typedef QList < KConfigSkeletonItem * >List; |
|
typedef QHash < QString, KConfigSkeletonItem * > Dict; |
|
typedef QHash < QString, KConfigSkeletonItem * >::Iterator DictIterator; |
|
|
|
/** |
|
* Constructor. |
|
* |
|
* @param _group Config file group. |
|
* @param _key Config file key. |
|
*/ |
|
KConfigSkeletonItem(const QString &_group, const QString &_key); |
|
|
|
/** |
|
* Destructor. |
|
*/ |
|
virtual ~KConfigSkeletonItem(); |
|
|
|
/** |
|
* Set config file group. |
|
*/ |
|
void setGroup(const QString &_group); |
|
|
|
/** |
|
* Return config file group. |
|
*/ |
|
QString group() const; |
|
|
|
/** |
|
* Set config file group but giving the KConfigGroup. |
|
* Allow the item to be in nested groups. |
|
* @since 5.68 |
|
*/ |
|
void setGroup(const KConfigGroup &cg); |
|
|
|
/** |
|
* Return a KConfigGroup, the one provided by setGroup(KConfigGroup) if it's valid, |
|
* or make one from @param config and item's group |
|
* @sa setGroup(const QString &_group) |
|
* @sa setGroup(KConfigGroup cg) |
|
* @since 5.68 |
|
*/ |
|
KConfigGroup configGroup(KConfig *config) const; |
|
|
|
/** |
|
* Set config file key. |
|
*/ |
|
void setKey(const QString &_key); |
|
|
|
/** |
|
* Return config file key. |
|
*/ |
|
QString key() const; |
|
|
|
/** |
|
* Set internal name of entry. |
|
*/ |
|
void setName(const QString &_name); |
|
|
|
/** |
|
* Return internal name of entry. |
|
*/ |
|
QString name() const; |
|
|
|
/** |
|
Set label providing a translated one-line description of the item. |
|
*/ |
|
void setLabel(const QString &l); |
|
|
|
/** |
|
Return label of item. See setLabel(). |
|
*/ |
|
QString label() const; |
|
|
|
/** |
|
Set ToolTip description of item. |
|
@since 4.2 |
|
*/ |
|
void setToolTip(const QString &t); |
|
|
|
/** |
|
Return ToolTip description of item. See setToolTip(). |
|
@since 4.2 |
|
*/ |
|
QString toolTip() const; |
|
|
|
/** |
|
Set WhatsThis description of item. |
|
*/ |
|
void setWhatsThis(const QString &w); |
|
|
|
/** |
|
Return WhatsThis description of item. See setWhatsThis(). |
|
*/ |
|
QString whatsThis() const; |
|
|
|
/** |
|
The write flags to be used when writing configuration. |
|
@since 5.58 |
|
*/ |
|
void setWriteFlags(KConfigBase::WriteConfigFlags flags); |
|
|
|
/** |
|
Return write flags to be used when writing configuration. |
|
They should be passed to every call of writeEntry() and revertToDefault(). |
|
@since 5.58 |
|
*/ |
|
KConfigBase::WriteConfigFlags writeFlags() const; |
|
|
|
/** |
|
* This function is called by @ref KCoreConfigSkeleton to read the value for this setting |
|
* from a config file. |
|
*/ |
|
virtual void readConfig(KConfig *) = 0; |
|
|
|
/** |
|
* This function is called by @ref KCoreConfigSkeleton to write the value of this setting |
|
* to a config file. |
|
* Make sure to pass writeFlags() to every call of writeEntry() and revertToDefault(). |
|
*/ |
|
virtual void writeConfig(KConfig *) = 0; |
|
|
|
/** |
|
* Read global default value. |
|
*/ |
|
virtual void readDefault(KConfig *) = 0; |
|
|
|
/** |
|
* Set item to @p p |
|
*/ |
|
virtual void setProperty(const QVariant &p) = 0; |
|
|
|
/** |
|
* Check whether the item is equal to p. |
|
* |
|
* Use this function to compare items that use custom types, |
|
* because QVariant::operator== will not work for those. |
|
* |
|
* @param p QVariant to compare to |
|
* @return true if the item is equal to p, false otherwise |
|
*/ |
|
virtual bool isEqual(const QVariant &p) const = 0; |
|
|
|
/** |
|
* Return item as property |
|
*/ |
|
virtual QVariant property() const = 0; |
|
|
|
/** |
|
* Return minimum value of item or invalid if not specified |
|
*/ |
|
virtual QVariant minValue() const; |
|
|
|
/** |
|
* Return maximum value of item or invalid if not specified |
|
*/ |
|
virtual QVariant maxValue() const; |
|
|
|
/** |
|
* Sets the current value to the default value. |
|
*/ |
|
virtual void setDefault() = 0; |
|
|
|
/** |
|
* Exchanges the current value with the default value |
|
* Used by KCoreConfigSkeleton::useDefaults(bool); |
|
*/ |
|
virtual void swapDefault() = 0; |
|
|
|
/** |
|
* Return if the entry can be modified. |
|
*/ |
|
bool isImmutable() const; |
|
|
|
/** |
|
* Indicates if the item is set to its default value. |
|
* |
|
* @since 5.64 |
|
*/ |
|
bool isDefault() const; |
|
|
|
/** |
|
* Indicates if the item has a different value than the |
|
* previously loaded value. |
|
* |
|
* @since 5.64 |
|
*/ |
|
bool isSaveNeeded() const; |
|
|
|
protected: |
|
explicit KConfigSkeletonItem(KConfigSkeletonItemPrivate &dd, const QString &_group, const QString &_key); |
|
|
|
/** |
|
* sets mIsImmutable to true if mKey in config is immutable |
|
* @param group KConfigGroup to check if mKey is immutable in |
|
*/ |
|
void readImmutability(const KConfigGroup &group); |
|
|
|
QString mGroup; ///< The group name for this item |
|
QString mKey; ///< The config key for this item |
|
QString mName; ///< The name of this item |
|
|
|
// HACK: Necessary to avoid introducing new virtuals in KConfigSkeletonItem |
|
// KF6: Use proper pure virtuals in KConfigSkeletonItem |
|
void setIsDefaultImpl(const std::function<bool()> &impl); |
|
void setIsSaveNeededImpl(const std::function<bool()> &impl); |
|
|
|
KConfigSkeletonItemPrivate *const d_ptr; |
|
}; |
|
|
|
class KPropertySkeletonItemPrivate; |
|
|
|
/** |
|
* \class KPropertySkeletonItem kcoreconfigskeleton.h <KCoreConfigSkeleton> |
|
* |
|
* @short Class for proxying a QObject property as a preferences setting |
|
* @author Kevin Ottens |
|
* @see KConfigSkeletonItem |
|
* |
|
* This class represents one preferences setting as used by @ref KCoreConfigSkeleton. |
|
* Unlike other @ref KConfigSkeletonItem subclasses, this one won't store the preference |
|
* in KConfig but will use a QObject property as storage. |
|
* You will have to register instances of this class with the function KCoreConfigSkeleton::addItem(). |
|
* |
|
* @since 5.65 |
|
*/ |
|
class KCONFIGCORE_EXPORT KPropertySkeletonItem : public KConfigSkeletonItem |
|
{ |
|
Q_DECLARE_PRIVATE(KPropertySkeletonItem) |
|
public: |
|
/** |
|
* Constructor |
|
* |
|
* @param object The QObject instance which we'll manage the property of |
|
* @param propertyName The name of the property in @p object which we'll manage |
|
* @param defaultValue The default value of the property |
|
*/ |
|
KPropertySkeletonItem(QObject *object, const QByteArray &propertyName, const QVariant &defaultValue); |
|
|
|
/** @copydoc KConfigSkeletonItem::property() */ |
|
QVariant property() const override; |
|
/** @copydoc KConfigSkeletonItem::setProperty(const QVariant &) */ |
|
void setProperty(const QVariant &p) override; |
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig *) */ |
|
void readConfig(KConfig *) override; |
|
/** @copydoc KConfigSkeletonItem::writeConfig(KConfig *) */ |
|
void writeConfig(KConfig *) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::readDefault(KConfig *) */ |
|
void readDefault(KConfig *) override; |
|
/** @copydoc KConfigSkeletonItem::setDefault() */ |
|
void setDefault() override; |
|
/** @copydoc KConfigSkeletonItem::swapDefault() */ |
|
void swapDefault() override; |
|
|
|
/** |
|
* Set a notify function, it will be invoked when the value of the property changes. |
|
* @since 5.68 |
|
*/ |
|
void setNotifyFunction(const std::function<void ()> &impl); |
|
}; |
|
|
|
|
|
/** |
|
* \class KConfigSkeletonGenericItem kcoreconfigskeleton.h <KConfigSkeletonGenericItem> |
|
*/ |
|
template < typename T > class KConfigSkeletonGenericItem: public KConfigSkeletonItem |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonItem(const QString&, const QString&) |
|
@param reference The initial value to hold in the item |
|
@param defaultValue The default value for the item |
|
*/ |
|
KConfigSkeletonGenericItem(const QString &_group, const QString &_key, T &reference, |
|
T defaultValue) |
|
: KConfigSkeletonItem(_group, _key), mReference(reference), |
|
mDefault(defaultValue), mLoadedValue(defaultValue) |
|
{ |
|
setIsDefaultImpl([this] { return mReference == mDefault; }); |
|
setIsSaveNeededImpl([this] { return mReference != mLoadedValue; }); |
|
} |
|
|
|
/** |
|
* Set value of this KConfigSkeletonItem. |
|
*/ |
|
void setValue(const T &v) |
|
{ |
|
mReference = v; |
|
} |
|
|
|
/** |
|
* Return value of this KConfigSkeletonItem. |
|
*/ |
|
T &value() |
|
{ |
|
return mReference; |
|
} |
|
|
|
/** |
|
* Return const value of this KConfigSkeletonItem. |
|
*/ |
|
const T &value() const |
|
{ |
|
return mReference; |
|
} |
|
|
|
/** |
|
Set default value for this item. |
|
*/ |
|
virtual void setDefaultValue(const T &v) |
|
{ |
|
mDefault = v; |
|
} |
|
|
|
/** |
|
Set the value for this item to the default value |
|
*/ |
|
void setDefault() override |
|
{ |
|
mReference = mDefault; |
|
} |
|
|
|
/** @copydoc KConfigSkeletonItem::writeConfig(KConfig *) */ |
|
void writeConfig(KConfig *config) override |
|
{ |
|
if (mReference != mLoadedValue) { // Is this needed? |
|
KConfigGroup cg = configGroup(config); |
|
if ((mDefault == mReference) && !cg.hasDefault(mKey)) { |
|
cg.revertToDefault(mKey, writeFlags()); |
|
} else { |
|
cg.writeEntry(mKey, mReference, writeFlags()); |
|
} |
|
mLoadedValue = mReference; |
|
} |
|
} |
|
|
|
/** @copydoc KConfigSkeletonItem::readDefault(KConfig*) */ |
|
void readDefault(KConfig *config) override |
|
{ |
|
config->setReadDefaults(true); |
|
readConfig(config); |
|
config->setReadDefaults(false); |
|
mDefault = mReference; |
|
} |
|
|
|
/** @copydoc KConfigSkeletonItem::swapDefault() */ |
|
void swapDefault() override |
|
{ |
|
T tmp = mReference; |
|
mReference = mDefault; |
|
mDefault = tmp; |
|
} |
|
|
|
protected: |
|
T &mReference; ///< Stores the value for this item |
|
T mDefault; ///< The default value for this item |
|
T mLoadedValue; |
|
}; |
|
|
|
/** |
|
* \class KConfigSkeletonChangeNotifyingItem kcoreconfigskeleton.h <KConfigSkeletonChangeNotifyingItem> |
|
* |
|
* @author Alex Richardson |
|
* @see KConfigSkeletonItem |
|
* |
|
* |
|
* This class wraps a @ref KConfigSkeletonItem and invokes a function whenever the value changes. |
|
* That function must take one quint64 parameter. Whenever the property value of the wrapped KConfigSkeletonItem |
|
* changes this function will be invoked with the stored user data passed in the constructor. |
|
* It does not call a function with the new value since this class is designed solely for the kconfig_compiler generated |
|
* code and is therefore probably not suited for any other usecases. |
|
*/ |
|
class KCONFIGCORE_EXPORT KConfigCompilerSignallingItem : public KConfigSkeletonItem |
|
{ |
|
public: |
|
typedef void (QObject::* NotifyFunction)(quint64 arg); |
|
/** |
|
* Constructor. |
|
* |
|
* @param item the KConfigSkeletonItem to wrap |
|
* @param targetFunction the method to invoke whenever the value of @p item changes |
|
* @param object The object on which the method is invoked. |
|
* @param userData This data will be passed to @p targetFunction on every property change |
|
*/ |
|
KConfigCompilerSignallingItem(KConfigSkeletonItem *item, QObject* object, |
|
NotifyFunction targetFunction, quint64 userData); |
|
~KConfigCompilerSignallingItem() override; |
|
|
|
void readConfig(KConfig *) override; |
|
void writeConfig(KConfig *) override; |
|
void readDefault(KConfig *) override; |
|
void setProperty(const QVariant &p) override; |
|
bool isEqual(const QVariant &p) const override; |
|
QVariant property() const override; |
|
void setDefault() override; |
|
void swapDefault() override; |
|
// KF6 TODO - fix this |
|
// Ideally we would do this in an overload of KConfigSkeletonItem, but |
|
// given we can't, I've shadowed the method. This isn't pretty, but given |
|
// the docs say it should generally only be used from auto generated code, |
|
// should be fine. |
|
void setWriteFlags(KConfigBase::WriteConfigFlags flags); |
|
KConfigBase::WriteConfigFlags writeFlags() const; |
|
void setGroup(const KConfigGroup &cg); |
|
KConfigGroup configGroup(KConfig *config) const; |
|
// END TODO |
|
|
|
private: |
|
inline void invokeNotifyFunction() |
|
{ |
|
// call the pointer to member function using the strange ->* operator |
|
(mObject->*mTargetFunction)(mUserData); |
|
} |
|
private: |
|
QScopedPointer<KConfigSkeletonItem> mItem; |
|
NotifyFunction mTargetFunction; |
|
QObject* mObject; |
|
quint64 mUserData; |
|
}; |
|
|
|
|
|
/** |
|
* \class KCoreConfigSkeleton kcoreconfigskeleton.h <KCoreConfigSkeleton> |
|
* |
|
* @short Class for handling preferences settings for an application. |
|
* @author Cornelius Schumacher |
|
* @see KConfigSkeletonItem |
|
* |
|
* This class provides an interface to preferences settings. Preferences items |
|
* can be registered by the addItem() function corresponding to the data type of |
|
* the setting. KCoreConfigSkeleton then handles reading and writing of config files and |
|
* setting of default values. |
|
* |
|
* Normally you will subclass KCoreConfigSkeleton, add data members for the preferences |
|
* settings and register the members in the constructor of the subclass. |
|
* |
|
* Example: |
|
* \code |
|
* class MyPrefs : public KCoreConfigSkeleton |
|
* { |
|
* public: |
|
* MyPrefs() |
|
* { |
|
* setCurrentGroup("MyGroup"); |
|
* addItemBool("MySetting1", mMyBool, false); |
|
* addItemPoint("MySetting2", mMyPoint, QPoint(100, 200)); |
|
* |
|
* setCurrentGroup("MyOtherGroup"); |
|
* addItemDouble("MySetting3", mMyDouble, 3.14); |
|
* } |
|
* |
|
* bool mMyBool; |
|
* QPoint mMyPoint; |
|
* double mMyDouble; |
|
* } |
|
* \endcode |
|
* |
|
* It might be convenient in many cases to make this subclass of KCoreConfigSkeleton a |
|
* singleton for global access from all over the application without passing |
|
* references to the KCoreConfigSkeleton object around. |
|
* |
|
* You can write the data to the configuration file by calling @ref save() |
|
* and read the data from the configuration file by calling @ref readConfig(). |
|
* If you want to watch for config changes, use @ref configChanged() signal. |
|
* |
|
* If you have items, which are not covered by the existing addItem() functions |
|
* you can add customized code for reading, writing and default setting by |
|
* implementing the functions @ref usrUseDefaults(), @ref usrRead() and |
|
* @ref usrSave(). |
|
* |
|
* Internally preferences settings are stored in instances of subclasses of |
|
* @ref KConfigSkeletonItem. You can also add KConfigSkeletonItem subclasses |
|
* for your own types and call the generic @ref addItem() to register them. |
|
* |
|
* In many cases you don't have to write the specific KCoreConfigSkeleton |
|
* subclasses yourself, but you can use \ref kconfig_compiler to automatically |
|
* generate the C++ code from an XML description of the configuration options. |
|
* |
|
* Use KConfigSkeleton if you need GUI types as well. |
|
*/ |
|
class KCONFIGCORE_EXPORT KCoreConfigSkeleton : public QObject |
|
{ |
|
Q_OBJECT |
|
public: |
|
/** |
|
* Class for handling a string preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemString: public KConfigSkeletonGenericItem < QString > |
|
{ |
|
public: |
|
enum Type { Normal, Password, Path }; |
|
|
|
/** @enum Type |
|
The type of string that is held in this item |
|
|
|
@var ItemString::Type ItemString::Normal |
|
A normal string |
|
|
|
@var ItemString::Type ItemString::Password |
|
A password string |
|
|
|
@var ItemString::Type ItemString::Path |
|
A path to a file or directory |
|
*/ |
|
|
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem |
|
@param type The type of string held by the item |
|
*/ |
|
ItemString(const QString &_group, const QString &_key, |
|
QString &reference, |
|
const QString &defaultValue = QLatin1String(""), // NOT QString() !! |
|
Type type = Normal); |
|
|
|
/** @copydoc KConfigSkeletonItem::writeConfig(KConfig*) */ |
|
void writeConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig*) */ |
|
void readConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::setProperty(const QVariant&) */ |
|
void setProperty(const QVariant &p) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) const */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::property() const */ |
|
QVariant property() const override; |
|
|
|
private: |
|
Type mType; |
|
}; |
|
|
|
/** |
|
* Class for handling a password preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemPassword: public ItemString |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemPassword(const QString &_group, const QString &_key, |
|
QString &reference, |
|
const QString &defaultValue = QLatin1String("")); // NOT QString() !! |
|
}; |
|
|
|
/** |
|
* Class for handling a path preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemPath: public ItemString |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemPath(const QString &_group, const QString &_key, |
|
QString &reference, |
|
const QString &defaultValue = QString()); |
|
}; |
|
|
|
/** |
|
* Class for handling a url preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemUrl: public KConfigSkeletonGenericItem < QUrl > |
|
{ |
|
public: |
|
|
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem |
|
*/ |
|
ItemUrl(const QString &_group, const QString &_key, |
|
QUrl &reference, |
|
const QUrl &defaultValue = QUrl()); |
|
|
|
/** @copydoc KConfigSkeletonItem::writeConfig(KConfig*) */ |
|
void writeConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig*) */ |
|
void readConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::setProperty(const QVariant&) */ |
|
void setProperty(const QVariant &p) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) const */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::property() const */ |
|
QVariant property() const override; |
|
}; |
|
|
|
/** |
|
* Class for handling a QVariant preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemProperty: public KConfigSkeletonGenericItem < QVariant > |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemProperty(const QString &_group, const QString &_key, |
|
QVariant &reference, const QVariant &defaultValue = QVariant()); |
|
|
|
void readConfig(KConfig *config) override; |
|
void setProperty(const QVariant &p) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) const */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::property() const */ |
|
QVariant property() const override; |
|
}; |
|
|
|
/** |
|
* Class for handling a bool preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemBool: public KConfigSkeletonGenericItem < bool > |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemBool(const QString &_group, const QString &_key, bool &reference, |
|
bool defaultValue = true); |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig*) */ |
|
void readConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::setProperty(const QVariant&) */ |
|
void setProperty(const QVariant &p) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) const */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::property() const */ |
|
QVariant property() const override; |
|
}; |
|
|
|
/** |
|
* Class for handling a 32-bit integer preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemInt: public KConfigSkeletonGenericItem < qint32 > |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemInt(const QString &_group, const QString &_key, qint32 &reference, |
|
qint32 defaultValue = 0); |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig*) */ |
|
void readConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::setProperty(const QVariant&) */ |
|
void setProperty(const QVariant &p) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) const */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::property() */ |
|
QVariant property() const override; |
|
|
|
/** Get the minimum value that is allowed to be stored in this item */ |
|
QVariant minValue() const override; |
|
|
|
/** Get the maximum value this is allowed to be stored in this item */ |
|
QVariant maxValue() const override; |
|
|
|
/** Set the minimum value for the item |
|
@sa minValue() |
|
*/ |
|
void setMinValue(qint32); |
|
|
|
/** Set the maximum value for the item |
|
@sa maxValue |
|
*/ |
|
void setMaxValue(qint32); |
|
|
|
private: |
|
bool mHasMin : 1; |
|
bool mHasMax : 1; |
|
qint32 mMin; |
|
qint32 mMax; |
|
}; |
|
|
|
/** |
|
* Class for handling a 64-bit integer preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemLongLong: public KConfigSkeletonGenericItem < qint64 > |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemLongLong(const QString &_group, const QString &_key, qint64 &reference, |
|
qint64 defaultValue = 0); |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig*) */ |
|
void readConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::setProperty(const QVariant&) */ |
|
void setProperty(const QVariant &p) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) const */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::property() */ |
|
QVariant property() const override; |
|
|
|
/** @copydoc ItemInt::minValue() */ |
|
QVariant minValue() const override; |
|
|
|
/** @copydoc ItemInt::maxValue() */ |
|
QVariant maxValue() const override; |
|
|
|
/** @copydoc ItemInt::setMinValue(qint32) */ |
|
void setMinValue(qint64); |
|
|
|
/** @copydoc ItemInt::setMaxValue(qint32) */ |
|
void setMaxValue(qint64); |
|
|
|
private: |
|
bool mHasMin : 1; |
|
bool mHasMax : 1; |
|
qint64 mMin; |
|
qint64 mMax; |
|
}; |
|
#if KCONFIGCORE_ENABLE_DEPRECATED_SINCE(5, 0) |
|
typedef KCONFIGCORE_DEPRECATED_VERSION(5, 0, "Use ItemLongLong") ItemLongLong ItemInt64; |
|
#endif |
|
|
|
/** |
|
* Class for handling enums. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemEnum: public ItemInt |
|
{ |
|
public: |
|
struct Choice { |
|
QString name; |
|
QString label; |
|
QString toolTip; |
|
QString whatsThis; |
|
}; |
|
|
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem |
|
@param choices The list of enums that can be stored in this item |
|
*/ |
|
ItemEnum(const QString &_group, const QString &_key, qint32 &reference, |
|
const QList<Choice> &choices, qint32 defaultValue = 0); |
|
|
|
QList<Choice> choices() const; |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig*) */ |
|
void readConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::writeConfig(KConfig*) */ |
|
void writeConfig(KConfig *config) override; |
|
|
|
// Source compatibility with 4.x |
|
typedef Choice Choice2; |
|
QList<Choice> choices2() const; |
|
|
|
private: |
|
QList<Choice> mChoices; |
|
}; |
|
|
|
/** |
|
* Class for handling an unsigned 32-bit integer preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemUInt: public KConfigSkeletonGenericItem < quint32 > |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemUInt(const QString &_group, const QString &_key, |
|
quint32 &reference, quint32 defaultValue = 0); |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig*) */ |
|
void readConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::setProperty(const QVariant&) */ |
|
void setProperty(const QVariant &p) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) const */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::property() */ |
|
QVariant property() const override; |
|
|
|
/** @copydoc ItemInt::minValue() */ |
|
QVariant minValue() const override; |
|
|
|
/** @copydoc ItemInt::maxValue() */ |
|
QVariant maxValue() const override; |
|
|
|
/** @copydoc ItemInt::setMinValue(qint32) */ |
|
void setMinValue(quint32); |
|
|
|
/** @copydoc ItemInt::setMaxValue(qint32) */ |
|
void setMaxValue(quint32); |
|
|
|
private: |
|
bool mHasMin : 1; |
|
bool mHasMax : 1; |
|
quint32 mMin; |
|
quint32 mMax; |
|
}; |
|
|
|
/** |
|
* Class for handling unsigned 64-bit integer preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemULongLong: public KConfigSkeletonGenericItem < quint64 > |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemULongLong(const QString &_group, const QString &_key, quint64 &reference, |
|
quint64 defaultValue = 0); |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig*) */ |
|
void readConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::setProperty(const QVariant&) */ |
|
void setProperty(const QVariant &p) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) const */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::property() */ |
|
QVariant property() const override; |
|
|
|
/** @copydoc ItemInt::minValue() */ |
|
QVariant minValue() const override; |
|
|
|
/** @copydoc ItemInt::maxValue() */ |
|
QVariant maxValue() const override; |
|
|
|
/** @copydoc ItemInt::setMinValue(qint32) */ |
|
void setMinValue(quint64); |
|
|
|
/** @copydoc ItemInt::setMaxValue(qint32) */ |
|
void setMaxValue(quint64); |
|
|
|
private: |
|
bool mHasMin : 1; |
|
bool mHasMax : 1; |
|
quint64 mMin; |
|
quint64 mMax; |
|
}; |
|
#if KCONFIGCORE_ENABLE_DEPRECATED_SINCE(5, 0) |
|
typedef KCONFIGCORE_DEPRECATED_VERSION(5, 0, "Use ItemULongLong") ItemULongLong ItemUInt64; |
|
#endif |
|
|
|
/** |
|
* Class for handling a floating point preference item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemDouble: public KConfigSkeletonGenericItem < double > |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemDouble(const QString &_group, const QString &_key, |
|
double &reference, double defaultValue = 0); |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig*) */ |
|
void readConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::setProperty(const QVariant&) */ |
|
void setProperty(const QVariant &p) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) const */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::property() */ |
|
QVariant property() const override; |
|
|
|
/** @copydoc ItemInt::minValue() */ |
|
QVariant minValue() const override; |
|
|
|
/** @copydoc ItemInt::maxValue() */ |
|
QVariant maxValue() const override; |
|
|
|
/** @copydoc ItemInt::setMinValue() */ |
|
void setMinValue(double); |
|
|
|
/** @copydoc ItemInt::setMaxValue() */ |
|
void setMaxValue(double); |
|
|
|
private: |
|
bool mHasMin : 1; |
|
bool mHasMax : 1; |
|
double mMin; |
|
double mMax; |
|
}; |
|
|
|
/** |
|
* Class for handling a QRect preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemRect: public KConfigSkeletonGenericItem < QRect > |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemRect(const QString &_group, const QString &_key, QRect &reference, |
|
const QRect &defaultValue = QRect()); |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig*) */ |
|
void readConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::setProperty(const QVariant&) */ |
|
void setProperty(const QVariant &p) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) const */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::property() */ |
|
QVariant property() const override; |
|
}; |
|
|
|
/** |
|
* Class for handling a QPoint preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemPoint: public KConfigSkeletonGenericItem < QPoint > |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemPoint(const QString &_group, const QString &_key, QPoint &reference, |
|
const QPoint &defaultValue = QPoint()); |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig*) */ |
|
void readConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::setProperty(const QVariant&) */ |
|
void setProperty(const QVariant &p) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) const */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::property() */ |
|
QVariant property() const override; |
|
}; |
|
|
|
/** |
|
* Class for handling a QSize preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemSize: public KConfigSkeletonGenericItem < QSize > |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemSize(const QString &_group, const QString &_key, QSize &reference, |
|
const QSize &defaultValue = QSize()); |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig*) */ |
|
void readConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::setProperty(const QVariant&) */ |
|
void setProperty(const QVariant &p) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) const */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::property() */ |
|
QVariant property() const override; |
|
}; |
|
|
|
/** |
|
* Class for handling a QDateTime preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemDateTime: public KConfigSkeletonGenericItem < QDateTime > |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemDateTime(const QString &_group, const QString &_key, |
|
QDateTime &reference, |
|
const QDateTime &defaultValue = QDateTime()); |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig*) */ |
|
void readConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::setProperty(const QVariant&) */ |
|
void setProperty(const QVariant &p) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) const */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::property() */ |
|
QVariant property() const override; |
|
}; |
|
|
|
/** |
|
* Class for handling a string list preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemStringList: public KConfigSkeletonGenericItem < QStringList > |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemStringList(const QString &_group, const QString &_key, |
|
QStringList &reference, |
|
const QStringList &defaultValue = QStringList()); |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig*) */ |
|
void readConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::setProperty(const QVariant&) */ |
|
void setProperty(const QVariant &p) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) const */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::property() */ |
|
QVariant property() const override; |
|
}; |
|
|
|
/** |
|
* Class for handling a path list preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemPathList: public ItemStringList |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemPathList(const QString &_group, const QString &_key, |
|
QStringList &reference, |
|
const QStringList &defaultValue = QStringList()); |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig */ |
|
void readConfig(KConfig *config) override; |
|
/** @copydoc KConfigSkeletonItem::writeConfig */ |
|
void writeConfig(KConfig *config) override; |
|
}; |
|
|
|
/** |
|
* Class for handling a url list preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemUrlList: public KConfigSkeletonGenericItem < QList<QUrl> > |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemUrlList(const QString &_group, const QString &_key, |
|
QList<QUrl> &reference, |
|
const QList<QUrl> &defaultValue = QList<QUrl>()); |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig*) */ |
|
void readConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::writeConfig(KConfig*) */ |
|
void writeConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::setProperty(const QVariant&) */ |
|
void setProperty(const QVariant &p) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) const */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::property() */ |
|
QVariant property() const override; |
|
}; |
|
|
|
/** |
|
* Class for handling an integer list preferences item. |
|
*/ |
|
class KCONFIGCORE_EXPORT ItemIntList: public KConfigSkeletonGenericItem < QList < int > > |
|
{ |
|
public: |
|
/** @copydoc KConfigSkeletonGenericItem::KConfigSkeletonGenericItem */ |
|
ItemIntList(const QString &_group, const QString &_key, |
|
QList < int > &reference, |
|
const QList < int > &defaultValue = QList < int >()); |
|
|
|
/** @copydoc KConfigSkeletonItem::readConfig(KConfig*) */ |
|
void readConfig(KConfig *config) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::setProperty(const QVariant&) */ |
|
void setProperty(const QVariant &p) override; |
|
|
|
/** @copydoc KConfigSkeletonItem::isEqual(const QVariant &) const */ |
|
bool isEqual(const QVariant &p) const override; |
|
|
|
/** @copydoc KConfigSkeletonItem::property() */ |
|
QVariant property() const override; |
|
}; |
|
|
|
public: |
|
/** |
|
* Constructor. |
|
* |
|
* @param configname name of config file. If no name is given, the default |
|
* config file as returned by KSharedConfig::openConfig() is used |
|
* @param parent the parent object (see QObject documentation) |
|
*/ |
|
explicit KCoreConfigSkeleton(const QString &configname = QString(), QObject *parent = nullptr); |
|
|
|
/** |
|
* Constructor. |
|
* |
|
* @param config configuration object to use |
|
* @param parent the parent object (see QObject documentation) |
|
*/ |
|
explicit KCoreConfigSkeleton(KSharedConfig::Ptr config, QObject *parent = nullptr); |
|
|
|
/** |
|
* Destructor |
|
*/ |
|
virtual ~KCoreConfigSkeleton(); |
|
|
|
/** |
|
* Set all registered items to their default values. |
|
* This method calls usrSetDefaults() after setting the defaults for the |
|
* registered items. You can override usrSetDefaults() in derived classes |
|
* if you have special requirements. |
|
* If you need more fine-grained control of setting the default values of |
|
* the registered items you can override setDefaults() in a derived class. |
|
*/ |
|
virtual void setDefaults(); |
|
|
|
/** |
|
* Read preferences from config file. All registered items are set to the |
|
* values read from disk. |
|
* This method calls usrRead() after reading the settings of the |
|
* registered items from the KConfig. You can override usrRead() |
|
* in derived classes if you have special requirements. |
|
*/ |
|
void load(); |
|
|
|
#if KCONFIGCORE_ENABLE_DEPRECATED_SINCE(5, 0) |
|
/** |
|
* @deprecated since 5.0, call load() instead (to reload from disk) or just read() |
|
* if the underlying KConfig object is already up-to-date. |
|
*/ |
|
KCONFIGCORE_DEPRECATED_VERSION(5, 0, "Use KCoreConfigSkeleton::load() or KCoreConfigSkeleton::read()") |
|
void readConfig() |
|
{ |
|
load(); |
|
} |
|
#endif |
|
|
|
/** |
|
* Read preferences from the KConfig object. |
|
* This method assumes that the KConfig object was previously loaded, |
|
* i.e. it uses the in-memory values from KConfig without reloading from disk. |
|
* |
|
* This method calls usrRead() after reading the settings of the |
|
* registered items from the KConfig. You can override usrRead() |
|
* in derived classes if you have special requirements. |
|
* @since 5.0 |
|
*/ |
|
void read(); |
|
|
|
/** |
|
* Indicates if all the registered items are set to their default value. |
|
* |
|
* @since 5.64 |
|
*/ |
|
bool isDefaults() const; |
|
|
|
/** |
|
* Indicates if any registered item has a different value than the |
|
* previously loaded value. |
|
* |
|
* @since 5.64 |
|
*/ |
|
bool isSaveNeeded() const; |
|
|
|
/** |
|
* Set the config file group for subsequent addItem() calls. It is valid |
|
* until setCurrentGroup() is called with a new argument. Call this before |
|
* you add any items. The default value is "No Group". |
|
*/ |
|
void setCurrentGroup(const QString &group); |
|
|
|
/** |
|
* Returns the current group used for addItem() calls. |
|
*/ |
|
QString currentGroup() const; |
|
|
|
/** |
|
* Register a custom @ref KConfigSkeletonItem with a given name. |
|
* |
|
* If the name parameter is null, take the name from KConfigSkeletonItem::key(). |
|
* Note that all names must be unique but that multiple entries can have |
|
* the same key if they reside in different groups. |
|
* |
|
* KCoreConfigSkeleton takes ownership of the KConfigSkeletonItem. |
|
*/ |
|
void addItem(KConfigSkeletonItem *, const QString &name = QString()); |
|
|
|
/** |
|
* Register an item of type QString. |
|
* |
|
* @param name Name used to identify this setting. Names must be unique. |
|
* @param reference Pointer to the variable, which is set by readConfig() |
|
* calls and read by save() calls. |
|
* @param defaultValue Default value, which is used when the config file |
|
* does not yet contain the key of this item. |
|
* @param key Key used in config file. If key is null, name is used as key. |
|
* @return The created item |
|
*/ |
|
ItemString *addItemString(const QString &name, QString &reference, |
|
const QString &defaultValue = QLatin1String(""), // NOT QString() !! |
|
const QString &key = QString()); |
|
|
|
/** |
|
* Register a password item of type QString. The string value is written |
|
* encrypted to the config file. Note that the current encryption scheme |
|
* is very weak. |
|
* |
|
* @param name Name used to identify this setting. Names must be unique. |
|
* @param reference Pointer to the variable, which is set by readConfig() |
|
* calls and read by save() calls. |
|
* @param defaultValue Default value, which is used when the config file |
|
* does not yet contain the key of this item. |
|
* @param key Key used in config file. If key is null, name is used as key. |
|
* @return The created item |
|
*/ |
|
ItemPassword *addItemPassword(const QString &name, QString &reference, |
|
const QString &defaultValue = QLatin1String(""), |
|
const QString &key = QString()); |
|
|
|
/** |
|
* Register a path item of type QString. The string value is interpreted |
|
* as a path. This means, dollar expension is activated for this value, so |
|
* that e.g. $HOME gets expanded. |
|
* |
|
* @param name Name used to identify this setting. Names must be unique. |
|
* @param reference Pointer to the variable, which is set by readConfig() |
|
* calls and read by save() calls. |
|
* @param defaultValue Default value, which is used when the config file |
|
* does not yet contain the key of this item. |
|
* @param key Key used in config file. If key is null, name is used as key. |
|
* @return The created item |
|
*/ |
|
ItemPath *addItemPath(const QString &name, QString &reference, |
|
const QString &defaultValue = QLatin1String(""), |
|
const QString &key = QString()); |
|
|
|
/** |
|
* Register a property item of type QVariant. Note that only the following |
|
* QVariant types are allowed: String, StringList, Font, Point, Rect, Size, |
|
* Color, Int, UInt, Bool, Double, DateTime and Date. |
|
* |
|
* @param name Name used to identify this setting. Names must be unique. |
|
* @param reference Pointer to the variable, which is set by readConfig() |
|
* calls and read by save() calls. |
|
* @param defaultValue Default value, which is used when the config file |
|
* does not yet contain the key of this item. |
|
* @param key Key used in config file. If key is null, name is used as key. |
|
* @return The created item |
|
*/ |
|
ItemProperty *addItemProperty(const QString &name, QVariant &reference, |
|
const QVariant &defaultValue = QVariant(), |
|
const QString &key = QString()); |
|
/** |
|
* Register an item of type bool. |
|
* |
|
* @param name Name used to identify this setting. Names must be unique. |
|
* @param reference Pointer to the variable, which is set by readConfig() |
|
* calls and read by save() calls. |
|
* @param defaultValue Default value, which is used when the config file |
|
* does not yet contain the key of this item. |
|
* @param key Key used in config file. If key is null, name is used as key. |
|
* @return The created item |
|
*/ |
|
ItemBool *addItemBool(const QString &name, bool &reference, |
|
bool defaultValue = false, |
|
const QString &key = QString()); |
|
|
|
/** |
|
* Register an item of type qint32. |
|
* |
|
* @param name Name used to identify this setting. Names must be unique. |
|
* @param reference Pointer to the variable, which is set by readConfig() |
|
* calls and read by save() calls. |
|
* @param defaultValue Default value, which is used when the config file |
|
* does not yet contain the key of this item. |
|
* @param key Key used in config file. If key is null, name is used as key. |
|
* @return The created item |
|
*/ |
|
ItemInt *addItemInt(const QString &name, qint32 &reference, qint32 defaultValue = 0, |
|
const QString &key = QString()); |
|
|
|
/** |
|
* Register an item of type quint32. |
|
* |
|
* @param name Name used to identify this setting. Names must be unique. |
|
* @param reference Pointer to the variable, which is set by readConfig() |
|
* calls and read by save() calls. |
|
* @param defaultValue Default value, which is used when the config file |
|
* does not yet contain the key of this item. |
|
* @param key Key used in config file. If key is null, name is used as key. |
|
* @return The created item |
|
*/ |
|
ItemUInt *addItemUInt(const QString &name, quint32 &reference, |
|
quint32 defaultValue = 0, |
|
const QString &key = QString()); |
|
|
|
/** |
|
* Register an item of type qint64. |
|
* |
|
* @param name Name used to identify this setting. Names must be unique. |
|
* @param reference Pointer to the variable, which is set by readConfig() |
|
* calls and read by save() calls. |
|
* @param defaultValue Default value, which is used when the config file |
|
* does not yet contain the key of this item. |
|
* @param key Key used in config file. If key is null, name is used as key. |
|
* @return The created item |
|
*/ |
|
ItemLongLong *addItemLongLong(const QString &name, qint64 &reference, |
|
qint64 defaultValue = 0, |
|
const QString &key = QString()); |
|
|
|
#if KCONFIGCORE_ENABLE_DEPRECATED_SINCE(5, 0) |
|
/** |
|
* @deprecated Since 5.0, use addItemLongLong(). |
|
*/ |
|
KCONFIGCORE_DEPRECATED_VERSION(5, 0, "Use KCoreConfigSkeleton::addItemLongLong(...)") |
|
ItemLongLong *addItemInt64(const QString &name, qint64 &reference, |
|
qint64 defaultValue = 0, |
|
const QString &key = QString()); |
|
#endif |
|
|
|
/** |
|
* Register an item of type quint64 |
|
* |
|
* @param name Name used to identify this setting. Names must be unique. |
|
* @param reference Pointer to the variable, which is set by readConfig() |
|
* calls and read by save() calls. |
|
* @param defaultValue Default value, which is used when the config file |
|
* does not yet contain the key of this item. |
|
* @param key Key used in config file. If key is null, name is used as key. |
|
* @return The created item |
|
*/ |
|
ItemULongLong *addItemULongLong(const QString &name, quint64 &reference, |
|
quint64 defaultValue = 0, |
|
const QString &key = QString()); |
|
|
|
#if KCONFIGCORE_ENABLE_DEPRECATED_SINCE(5, 0) |
|
/** |
|
* @deprecated Since 5.0, use addItemULongLong(). |
|
*/ |
|
KCONFIGCORE_DEPRECATED_VERSION(5, 0, "Use KCoreConfigSkeleton::addItemULongLong(...)") |
|
ItemULongLong *addItemUInt64(const QString &name, quint64 &reference, |
|
quint64 defaultValue = 0, |
|
const QString &key = QString()); |
|
#endif |
|
|
|
/** |
|
* Register an item of type double. |
|
* |
|
* @param name Name used to identify this setting. Names must be unique. |
|
* @param reference Pointer to the variable, which is set by readConfig() |
|
* calls and read by save() calls. |
|
* @param defaultValue Default value, which is used when the config file |
|
* does not yet contain the key of this item. |
|
* @param key Key used in config file. If key is null, name is used as key. |
|
* @return The created item |
|
*/ |
|
ItemDouble *addItemDouble(const QString &name, double &reference, |
|
double defaultValue = 0.0, |
|
const QString &key = QString()); |
|
|
|
/** |
|
* Register an item of type QRect. |
|
* |
|
* @param name Name used to identify this setting. Names must be unique. |
|
* @param reference Pointer to the variable, which is set by readConfig() |
|
* calls and read by save() calls. |
|
* @param defaultValue Default value, which is used when the config file |
|
* does not yet contain the key of this item. |
|
* @param key Key used in config file. If key is null, name is used as key. |
|
* @return The created item |
|
*/ |
|
ItemRect *addItemRect(const QString &name, QRect &reference, |
|
const QRect &defaultValue = QRect(), |
|
const QString &key = QString()); |
|
|
|
/** |
|
* Register an item of type QPoint. |
|
* |
|
* @param name Name used to identify this setting. Names must be unique. |
|
* @param reference Pointer to the variable, which is set by readConfig() |
|
* calls and read by save() calls. |
|
* @param defaultValue Default value, which is used when the config file |
|
* does not yet contain the key of this item. |
|
* @param key Key used in config file. If key is null, name is used as key. |
|
* @return The created item |
|
*/ |
|
ItemPoint *addItemPoint(const QString &name, QPoint &reference, |
|
const QPoint &defaultValue = QPoint(), |
|
const QString &key = QString()); |
|
|
|
/** |
|
* Register an item of type QSize. |
|
* |
|
* @param name Name used to identify this setting. Names must be unique. |
|
* @param reference Pointer to the variable, which is set by readConfig() |
|
* calls and read by save() calls. |
|
* @param defaultValue Default value, which is used when the config file |
|
* does not yet contain the key of this item. |
|
* @param key Key used in config file. If key is null, name is used as key. |
|
* @return The created item |
|
*/ |
|
ItemSize *addItemSize(const QString &name, QSize &reference, |
|
const QSize &defaultValue = QSize(), |
|
const QString &key = QString()); |
|
|
|
/** |
|
* Register an item of type QDateTime. |
|
* |
|
* @param name Name used to identify this setting. Names must be unique. |
|
* @param reference Pointer to the variable, which is set by readConfig() |
|
* calls and read by save() calls. |
|
* @param defaultValue Default value, which is used when the config file |
|
* does not yet contain the key of this item. |
|
* @param key Key used in config file. If key is null, name is used as key. |
|
* @return The created item |
|
*/ |
|
ItemDateTime *addItemDateTime(const QString &name, QDateTime &reference, |
|
const QDateTime &defaultValue = QDateTime(), |
|
const QString &key = QString()); |
|
|
|
/** |
|
* Register an item of type QStringList. |
|
* |
|
* @param name Name used to identify this setting. Names must be unique. |
|
* @param reference Pointer to the variable, which is set by readConfig() |
|
* calls and read by save() calls. |
|
* @param defaultValue Default value, which is used when the config file |
|
* does not yet contain the key of this item. |
|
* @param key Key used in config file. If key is null, name is used as key. |
|
* @return The created item |
|
*/ |
|
ItemStringList *addItemStringList(const QString &name, QStringList &reference, |
|
const QStringList &defaultValue = QStringList(), |
|
const QString &key = QString()); |
|
|
|
/** |
|
* Register an item of type QList<int>. |
|
* |
|
* @param name Name used to identify this setting. Names must be unique. |
|
* @param reference Pointer to the variable, which is set by readConfig() |
|
* calls and read by save() calls. |
|
* @param defaultValue Default value, which is used when the config file |
|
* does not yet contain the key of this item. |
|
* @param key Key used in config file. If key is null, name is used as key. |
|
* @return The created item |
|
*/ |
|
ItemIntList *addItemIntList(const QString &name, QList < int > &reference, |
|
const QList < int > &defaultValue = |
|
QList < int >(), |
|
const QString &key = QString()); |
|
|
|
/** |
|
* Return the @ref KConfig object used for reading and writing the settings. |
|
*/ |
|
KConfig *config(); |
|
|
|
/** |
|
* Return the @ref KConfig object used for reading and writing the settings. |
|
*/ |
|
const KConfig *config() const; |
|
|
|
/** |
|
* Return the @ref KConfig object used for reading and writing the settings. |
|
* @since 5.0 |
|
*/ |
|
KSharedConfig::Ptr sharedConfig() const; |
|
|
|
/** |
|
* Set the @ref KSharedConfig object used for reading and writing the settings. |
|
*/ |
|
void setSharedConfig(KSharedConfig::Ptr pConfig); |
|
|
|
/** |
|
* Return list of items managed by this KCoreConfigSkeleton object. |
|
*/ |
|
KConfigSkeletonItem::List items() const; |
|
|
|
/** |
|
* Removes and deletes an item by name |
|
* @param name the name of the item to remove |
|
*/ |
|
void removeItem(const QString &name); |
|
|
|
/** |
|
* Removes and deletes all items |
|
*/ |
|
void clearItems(); |
|
|
|
/** |
|
* Return whether a certain item is immutable |
|
* @since 4.4 |
|
*/ |
|
Q_INVOKABLE bool isImmutable(const QString &name) const; |
|
|
|
/** |
|
* Lookup item by name |
|
* @since 4.4 |
|
*/ |
|
KConfigSkeletonItem *findItem(const QString &name) const; |
|
|
|
/** |
|
* Specify whether this object should reflect the actual values or the |
|
* default values. |
|
* This method is implemented by usrUseDefaults(), which can be overridden |
|
* in derived classes if you have special requirements and can call |
|
* usrUseDefaults() directly. |
|
* If you don't have control whether useDefaults() or usrUseDefaults() is |
|
* called override useDefaults() directly. |
|
* @param b true to make this object reflect the default values, |
|
* false to make it reflect the actual values. |
|
* @return The state prior to this call |
|
*/ |
|
virtual bool useDefaults(bool b); |
|
|
|
public Q_SLOTS: |
|
/** |
|
* Write preferences to config file. The values of all registered items are |
|
* written to disk. |
|
* This method calls usrSave() after writing the settings from the |
|
* registered items to the KConfig. You can override usrSave() |
|
* in derived classes if you have special requirements. |
|
*/ |
|
bool save(); |
|
|
|
#if KCONFIGCORE_ENABLE_DEPRECATED_SINCE(5, 0) |
|
/** |
|
* @deprecated since 5.0, call save() instead. |
|
*/ |
|
KCONFIGCORE_DEPRECATED_VERSION(5, 0, "Use KCoreConfigSkeleton::save()") |
|
void writeConfig() |
|
{ |
|
save(); |
|
} |
|
#endif |
|
|
|
Q_SIGNALS: |
|
/** |
|
* This signal is emitted when the configuration change. |
|
*/ |
|
void configChanged(); |
|
|
|
protected: |
|
/** |
|
* Implemented by subclasses that use special defaults. |
|
* It replaces the default values with the actual values and |
|
* vice versa. Called from @ref useDefaults() |
|
* @param b true to make this object reflect the default values, |
|
* false to make it reflect the actual values. |
|
* @return The state prior to this call |
|
*/ |
|
virtual bool usrUseDefaults(bool b); |
|
|
|
/** |
|
* Perform the actual setting of default values. |
|
* Override in derived classes to set special default values. |
|
* Called from @ref setDefaults() |
|
*/ |
|
virtual void usrSetDefaults(); |
|
|
|
/** |
|
* Perform the actual reading of the configuration file. |
|
* Override in derived classes to read special config values. |
|
* Called from @ref read() |
|
*/ |
|
virtual void usrRead(); |
|
|
|
/** |
|
* Perform the actual writing of the configuration file. |
|
* Override in derived classes to write special config values. |
|
* Called from @ref save() |
|
*/ |
|
virtual bool usrSave(); |
|
|
|
#if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0) |
|
/** |
|
* @deprecated since 5.0, override usrRead instead. This method is still called from usrRead |
|
* for compatibility. |
|
*/ |
|
KCONFIGCORE_DEPRECATED_VERSION(5, 0, "Override KCoreConfigSkeleton::usrRead()") |
|
virtual void usrReadConfig(); |
|
#endif |
|
|
|
#if KCONFIGCORE_BUILD_DEPRECATED_SINCE(5, 0) |
|
/** |
|
* @deprecated since 5.0, override usrSave instead. This method is still called from usrSave |
|
* for compatibility. |
|
*/ |
|
KCONFIGCORE_DEPRECATED_VERSION(5, 0, "Override KCoreConfigSkeleton::usrSave()") |
|
virtual bool usrWriteConfig(); |
|
#endif |
|
|
|
private: |
|
KCoreConfigSkeletonPrivate *const d; |
|
friend class KConfigSkeleton; |
|
|
|
}; |
|
|
|
#endif
|
|
|