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.
tdelibs/tdecore/kconfigskeleton.h

1231 lines
37 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 _KCONFIGSKELETON_H
#define _KCONFIGSKELETON_H
#include <tqcolor.h>
#include <tqdatetime.h>
#include <tqfont.h>
#include <tqpoint.h>
#include <tqptrlist.h>
#include <tqdict.h>
#include <tqrect.h>
#include <tqsize.h>
#include <tqstringlist.h>
#include <tqvariant.h>
#include <kconfig.h>
#include <kglobalsettings.h>
/**
* @short Class for storing a preferences setting
* @author Cornelius Schumacher
* @see KConfigSkeleton
*
* This class represents one preferences setting as used by @ref KConfigSkeleton.
* 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 KConfigSkeleton instead. If you subclass this class you will
* have to register instances with the function KConfigSkeleton::addItem().
*/
class KDECORE_EXPORT KConfigSkeletonItem
{
public:
typedef TQValueList < KConfigSkeletonItem * >List;
typedef TQDict < KConfigSkeletonItem > Dict;
typedef TQDictIterator < KConfigSkeletonItem > DictIterator;
/**
* Constructor.
*
* @param group Config file group.
* @param key Config file key.
*/
KConfigSkeletonItem(const TQString & group, const TQString & key)
:mGroup(group),mKey(key), mIsImmutable(true)
{
}
/**
* Destructor.
*/
virtual ~KConfigSkeletonItem()
{
}
/**
* Set config file group.
*/
void setGroup( const TQString &group )
{
mGroup = group;
}
/**
* Return config file group.
*/
TQString group() const
{
return mGroup;
}
/**
* Set config file key.
*/
void setKey( const TQString &key )
{
mKey = key;
}
/**
* Return config file key.
*/
TQString key() const
{
return mKey;
}
/**
* Set internal name of entry.
*/
void setName(const TQString &name)
{
mName = name;
}
/**
* Return internal name of entry.
*/
TQString name() const
{
return mName;
}
/**
Set label providing a translated one-line description of the item.
*/
void setLabel( const TQString &l )
{
mLabel = l;
}
/**
Return label of item. See setLabel().
*/
TQString label() const
{
return mLabel;
}
/**
Set WhatsThis description og item.
*/
void setWhatsThis( const TQString &w )
{
mWhatsThis = w;
}
/**
Return WhatsThis description of item. See setWhatsThis().
*/
TQString whatsThis() const
{
return mWhatsThis;
}
/**
* This function is called by @ref KConfigSkeleton to read the value for this setting
* from a config file.
* value.
*/
virtual void readConfig(KConfig *) = 0;
/**
* This function is called by @ref KConfigSkeleton to write the value of this setting
* to a config file.
*/
virtual void writeConfig(KConfig *) = 0;
/**
* Read global default value.
*/
virtual void readDefault(KConfig *) = 0;
/**
* Set item to @p p
*/
virtual void setProperty(const TQVariant &p) = 0;
/**
* Return item as property
*/
virtual TQVariant property() const = 0;
/**
* Return minimum value of item or invalid if not specified
*/
virtual TQVariant minValue() const { return TQVariant(); }
/**
* Return maximum value of item or invalid if not specified
*/
virtual TQVariant maxValue() const { return TQVariant(); }
/**
Sets the current value to the default value.
*/
virtual void setDefault() = 0;
/**
* Exchanges the current value with the default value
* Used by KConfigSkeleton::useDefaults(bool);
*/
virtual void swapDefault() = 0;
/**
* Return if the entry can be modified.
*/
bool isImmutable() const
{
return mIsImmutable;
}
protected:
/**
* sets mIsImmutable to true if mKey in config is immutable
* @param config KConfig to check if mKey is immutable in
*/
void readImmutability(KConfig *config);
TQString mGroup;
TQString mKey;
TQString mName;
private:
bool mIsImmutable;
TQString mLabel;
TQString mWhatsThis;
};
template < typename T > class KConfigSkeletonGenericItem:public KConfigSkeletonItem
{
public:
KConfigSkeletonGenericItem(const TQString & group, const TQString & key, T & reference,
T defaultValue)
: KConfigSkeletonItem(group, key), mReference(reference),
mDefault(defaultValue), mLoadedValue(defaultValue)
{
}
/**
* 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;
}
virtual void setDefault()
{
mReference = mDefault;
}
virtual void writeConfig(KConfig * config)
{
if ( mReference != mLoadedValue ) // Is this needed?
{
config->setGroup(mGroup);
if ((mDefault == mReference) && !config->hasDefault( mKey))
config->revertToDefault( mKey );
else
config->writeEntry(mKey, mReference);
}
}
void readDefault(KConfig * config)
{
config->setReadDefaults(true);
readConfig(config);
config->setReadDefaults(false);
mDefault = mReference;
}
void swapDefault()
{
T tmp = mReference;
mReference = mDefault;
mDefault = tmp;
}
protected:
T & mReference;
T mDefault;
T mLoadedValue;
};
/**
* @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 seetting. KConfigSkeleton then handles reading and writing of config files and
* setting of default values.
*
* Normally you will subclass KConfigSkeleton, add data members for the preferences
* settings and register the members in the constructor of the subclass.
*
* Example:
* \code
* class MyPrefs : public KConfigSkeleton
* {
* public:
* MyPrefs()
* {
* setCurrentGroup("MyGroup");
* addItemBool("MySetting1",mMyBool,false);
* addItemColor("MySetting2",mMyColor,TQColor(1,2,3));
*
* setCurrentGroup("MyOtherGroup");
* addItemFont("MySetting3",mMyFont,TQFont("helvetica",12));
* }
*
* bool mMyBool;
* TQColor mMyColor;
* TQFont mMyFont;
* }
* \endcode
*
* It might be convenient in many cases to make this subclass of KConfigSkeleton a
* singleton for global access from all over the application without passing
* references to the KConfigSkeleton object around.
*
* You can write the data to the configuration file by calling @ref writeConfig()
* and read the data from the configuration file by calling @ref readConfig().
*
* 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 usrReadConfig() and
* @ref usrWriteConfig().
*
* 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 KConfigSkeleton
* subclasses yourself, but you can use \ref kconfig_compiler to automatically
* generate the C++ code from an XML description of the configuration options.
*/
class KDECORE_EXPORT KConfigSkeleton
{
public:
/**
* Class for handling a string preferences item.
*/
class KDECORE_EXPORT ItemString:public KConfigSkeletonGenericItem < TQString >
{
public:
enum Type { Normal, Password, Path };
ItemString(const TQString & group, const TQString & key,
TQString & reference,
const TQString & defaultValue = TQString::tqfromLatin1(""), // NOT TQString::null !!
Type type = Normal);
void writeConfig(KConfig * config);
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
private:
Type mType;
};
/**
* Class for handling a password preferences item.
*/
class KDECORE_EXPORT ItemPassword:public ItemString
{
public:
ItemPassword(const TQString & group, const TQString & key,
TQString & reference,
const TQString & defaultValue = TQString::tqfromLatin1("")); // NOT TQString::null !!
};
/**
* Class for handling a path preferences item.
*/
class KDECORE_EXPORT ItemPath:public ItemString
{
public:
ItemPath(const TQString & group, const TQString & key,
TQString & reference,
const TQString & defaultValue = TQString::null);
};
/**
* Class for handling a TQVariant preferences item.
*/
class KDECORE_EXPORT ItemProperty:public KConfigSkeletonGenericItem < TQVariant >
{
public:
ItemProperty(const TQString & group, const TQString & key,
TQVariant & reference, TQVariant defaultValue = 0);
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
};
/**
* Class for handling a bool preferences item.
*/
class KDECORE_EXPORT ItemBool:public KConfigSkeletonGenericItem < bool >
{
public:
ItemBool(const TQString & group, const TQString & key, bool & reference,
bool defaultValue = true);
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
};
/**
* Class for handling an integer preferences item.
*/
class KDECORE_EXPORT ItemInt:public KConfigSkeletonGenericItem < int >
{
public:
ItemInt(const TQString & group, const TQString & key, int &reference,
int defaultValue = 0);
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
TQVariant minValue() const;
TQVariant maxValue() const;
void setMinValue(int);
void setMaxValue(int);
private:
bool mHasMin : 1;
bool mHasMax : 1;
int mMin;
int mMax;
};
/**
* Class for handling an 64-bit integer preferences item.
*/
class KDECORE_EXPORT ItemInt64:public KConfigSkeletonGenericItem < TQ_INT64 >
{
public:
ItemInt64(const TQString & group, const TQString & key, TQ_INT64 &reference,
TQ_INT64 defaultValue = 0);
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
TQVariant minValue() const;
TQVariant maxValue() const;
void setMinValue(TQ_INT64);
void setMaxValue(TQ_INT64);
private:
bool mHasMin : 1;
bool mHasMax : 1;
TQ_INT64 mMin;
TQ_INT64 mMax;
};
/**
* Class for handling enums.
*/
class KDECORE_EXPORT ItemEnum:public ItemInt
{
public:
struct Choice
{
TQString name;
TQString label;
TQString whatsThis;
};
ItemEnum(const TQString & group, const TQString & key, int &reference,
const TQValueList<Choice> &choices, int defaultValue = 0);
TQValueList<Choice> choices() const;
void readConfig(KConfig * config);
void writeConfig(KConfig * config);
private:
TQValueList<Choice> mChoices;
};
/**
* Class for handling an unsingend integer preferences item.
*/
class KDECORE_EXPORT ItemUInt:public KConfigSkeletonGenericItem < unsigned int >
{
public:
ItemUInt(const TQString & group, const TQString & key,
unsigned int &reference, unsigned int defaultValue = 0);
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
TQVariant minValue() const;
TQVariant maxValue() const;
void setMinValue(unsigned int);
void setMaxValue(unsigned int);
private:
bool mHasMin : 1;
bool mHasMax : 1;
unsigned int mMin;
unsigned int mMax;
};
/**
* Class for hanlding a long integer preferences item.
*/
class KDECORE_EXPORT ItemLong:public KConfigSkeletonGenericItem < long >
{
public:
ItemLong(const TQString & group, const TQString & key, long &reference,
long defaultValue = 0);
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
TQVariant minValue() const;
TQVariant maxValue() const;
void setMinValue(long);
void setMaxValue(long);
private:
bool mHasMin : 1;
bool mHasMax : 1;
long mMin;
long mMax;
};
/**
* Class for handling an unsigned long integer preferences item.
*/
class KDECORE_EXPORT ItemULong:public KConfigSkeletonGenericItem < unsigned long >
{
public:
ItemULong(const TQString & group, const TQString & key,
unsigned long &reference, unsigned long defaultValue = 0);
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
TQVariant minValue() const;
TQVariant maxValue() const;
void setMinValue(unsigned long);
void setMaxValue(unsigned long);
private:
bool mHasMin : 1;
bool mHasMax : 1;
unsigned long mMin;
unsigned long mMax;
};
/**
* Class for handling unsigned 64-bit integer preferences item.
*/
class KDECORE_EXPORT ItemUInt64:public KConfigSkeletonGenericItem < TQ_UINT64 >
{
public:
ItemUInt64(const TQString & group, const TQString & key, TQ_UINT64 &reference,
TQ_UINT64 defaultValue = 0);
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
TQVariant minValue() const;
TQVariant maxValue() const;
void setMinValue(TQ_UINT64);
void setMaxValue(TQ_UINT64);
private:
bool mHasMin : 1;
bool mHasMax : 1;
TQ_UINT64 mMin;
TQ_UINT64 mMax;
};
/**
* Class for handling a floating point preference item.
*/
class KDECORE_EXPORT ItemDouble:public KConfigSkeletonGenericItem < double >
{
public:
ItemDouble(const TQString & group, const TQString & key,
double &reference, double defaultValue = 0);
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
TQVariant minValue() const;
TQVariant maxValue() const;
void setMinValue(double);
void setMaxValue(double);
private:
bool mHasMin : 1;
bool mHasMax : 1;
double mMin;
double mMax;
};
/**
* Class for handling a color preferences item.
*/
class KDECORE_EXPORT ItemColor:public KConfigSkeletonGenericItem < TQColor >
{
public:
ItemColor(const TQString & group, const TQString & key,
TQColor & reference,
const TQColor & defaultValue = TQColor(128, 128, 128));
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
};
/**
* Class for handling a font preferences item.
*/
class KDECORE_EXPORT ItemFont:public KConfigSkeletonGenericItem < TQFont >
{
public:
ItemFont(const TQString & group, const TQString & key, TQFont & reference,
const TQFont & defaultValue = KGlobalSettings::generalFont());
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
};
/**
* Class for handling a TQRect preferences item.
*/
class KDECORE_EXPORT ItemRect:public KConfigSkeletonGenericItem < TQRect >
{
public:
ItemRect(const TQString & group, const TQString & key, TQRect & reference,
const TQRect & defaultValue = TQRect());
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
};
/**
* Class for handling a TQPoint preferences item.
*/
class KDECORE_EXPORT ItemPoint:public KConfigSkeletonGenericItem < TQPoint >
{
public:
ItemPoint(const TQString & group, const TQString & key, TQPoint & reference,
const TQPoint & defaultValue = TQPoint());
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
};
/**
* Class for handling a TQSize preferences item.
*/
class KDECORE_EXPORT ItemSize:public KConfigSkeletonGenericItem < TQSize >
{
public:
ItemSize(const TQString & group, const TQString & key, TQSize & reference,
const TQSize & defaultValue = TQSize());
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
};
/**
* Class for handling a TQDateTime preferences item.
*/
class KDECORE_EXPORT ItemDateTime:public KConfigSkeletonGenericItem < TQDateTime >
{
public:
ItemDateTime(const TQString & group, const TQString & key,
TQDateTime & reference,
const TQDateTime & defaultValue = TQDateTime());
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
};
/**
* Class for handling a string list preferences item.
*/
class KDECORE_EXPORT ItemStringList:public KConfigSkeletonGenericItem < TQStringList >
{
public:
ItemStringList(const TQString & group, const TQString & key,
TQStringList & reference,
const TQStringList & defaultValue = TQStringList());
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
};
/**
* Class for handling a path list preferences item.
*/
class KDECORE_EXPORT ItemPathList:public ItemStringList
{
public:
ItemPathList(const TQString & group, const TQString & key,
TQStringList & reference,
const TQStringList & defaultValue = TQStringList());
void readConfig(KConfig * config);
void writeConfig(KConfig * config);
};
/**
* Class for handling an integer list preferences item.
*/
class KDECORE_EXPORT ItemIntList:public KConfigSkeletonGenericItem < TQValueList < int > >
{
public:
ItemIntList(const TQString & group, const TQString & key,
TQValueList < int >&reference,
const TQValueList < int >&defaultValue = TQValueList < int >());
void readConfig(KConfig * config);
void setProperty(const TQVariant & p);
TQVariant property() const;
};
public:
/**
* Constructor.
*
* @param configname name of config file. If no name is given, the default
* config file as returned by kapp()->config() is used.
*/
KConfigSkeleton(const TQString & configname = TQString::null);
/**
* Constructor.
*
* @param config configuration object to use.
*/
KConfigSkeleton(KSharedConfig::Ptr config);
/**
* Destructor
*/
virtual ~ KConfigSkeleton();
/**
Set all registered items to their default values.
*/
void setDefaults();
/**
* Read preferences from config file. All registered items are set to the
* values read from disk.
*/
void readConfig();
/**
* Write preferences to config file. The values of all registered items are
* written to disk.
*/
void writeConfig();
/**
* 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 TQString & group);
/**
* Returns the current group used for addItem() calls.
*/
TQString currentGroup() // ### KDE 4.0: make const
{
return mCurrentGroup;
}
/**
* 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.
*/
void addItem(KConfigSkeletonItem *, const TQString & name = TQString::null );
/**
* Register an item of type TQString.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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 TQString & name, TQString & reference,
const TQString & defaultValue = TQString::tqfromLatin1(""), // NOT TQString::null !!
const TQString & key = TQString::null);
/**
* Register a password item of type TQString. The string value is written
* encrypted to the config file. Note that the current encryption scheme
* is very weak.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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 TQString & name, TQString & reference,
const TQString & defaultValue = TQString::tqfromLatin1(""),
const TQString & key = TQString::null);
/**
* Register a path item of type TQString. 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 indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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 TQString & name, TQString & reference,
const TQString & defaultValue = TQString::tqfromLatin1(""),
const TQString & key = TQString::null);
/**
* Register a property item of type TQVariant. Note that only the following
* TQVariant types are allowed: String, StringList, Font, Point, Rect, Size,
* Color, Int, UInt, Bool, Double, DateTime and Date.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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 TQString & name, TQVariant & reference,
const TQVariant & defaultValue = TQVariant(),
const TQString & key = TQString::null);
/**
* Register an item of type bool.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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 TQString & name, bool & reference,
bool defaultValue = false,
const TQString & key = TQString::null);
/**
* Register an item of type int.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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 TQString & name, int &reference, int defaultValue = 0,
const TQString & key = TQString::null);
/**
* Register an item of type unsigned int.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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 TQString & name, unsigned int &reference,
unsigned int defaultValue = 0,
const TQString & key = TQString::null);
/**
* Register an item of type long.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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
*/
ItemLong *addItemLong(const TQString & name, long &reference,
long defaultValue = 0,
const TQString & key = TQString::null);
/**
* Register an item of type unsigned long.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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
*/
ItemULong *addItemULong(const TQString & name, unsigned long &reference,
unsigned long defaultValue = 0,
const TQString & key = TQString::null);
/**
* Register an item of type TQ_INT64.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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
*/
ItemInt64 *addItemInt64(const TQString & name, TQ_INT64 &reference,
TQ_INT64 defaultValue = 0,
const TQString & key = TQString::null);
/**
* Register an item of type TQ_UINT64
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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
*/
ItemUInt64 *addItemUInt64(const TQString & name, TQ_UINT64 &reference,
TQ_UINT64 defaultValue = 0,
const TQString & key = TQString::null);
/**
* Register an item of type double.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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 TQString & name, double &reference,
double defaultValue = 0.0,
const TQString & key = TQString::null);
/**
* Register an item of type TQColor.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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
*/
ItemColor *addItemColor(const TQString & name, TQColor & reference,
const TQColor & defaultValue = TQColor(128, 128, 128),
const TQString & key = TQString::null);
/**
* Register an item of type TQFont.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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
*/
ItemFont *addItemFont(const TQString & name, TQFont & reference,
const TQFont & defaultValue =
KGlobalSettings::generalFont(),
const TQString & key = TQString::null);
/**
* Register an item of type TQRect.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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 TQString & name, TQRect & reference,
const TQRect & defaultValue = TQRect(),
const TQString & key = TQString::null);
/**
* Register an item of type TQPoint.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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 TQString & name, TQPoint & reference,
const TQPoint & defaultValue = TQPoint(),
const TQString & key = TQString::null);
/**
* Register an item of type TQSize.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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 TQString & name, TQSize & reference,
const TQSize & defaultValue = TQSize(),
const TQString & key = TQString::null);
/**
* Register an item of type TQDateTime.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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 TQString & name, TQDateTime & reference,
const TQDateTime & defaultValue = TQDateTime(),
const TQString & key = TQString::null);
/**
* Register an item of type TQStringList.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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 TQString & name, TQStringList & reference,
const TQStringList & defaultValue = TQStringList(),
const TQString & key = TQString::null);
/**
* Register an item of type TQValueList<int>.
*
* @param name Name used to indentify this setting. Names must be unique.
* @param reference Pointer to the variable, which is set by readConfig()
* calls and read by writeConfig() 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 TQString & name, TQValueList < int >&reference,
const TQValueList < int >&defaultValue =
TQValueList < int >(),
const TQString & key = TQString::null);
/**
* Return the @ref KConfig object used for reading and writing the settings.
*/
KConfig *config() const;
/**
* Return list of items managed by this KConfigSkeleton object.
*/
KConfigSkeletonItem::List items() const
{
return mItems;
}
/**
* Return whether a certain item is immutable
*/
bool isImmutable(const TQString & name);
/**
* Lookup item by name
*/
KConfigSkeletonItem * findItem(const TQString & name);
/**
* Indicate whether this object should reflect the actual
* values or the default values.
* @param b If true this object reflects the default values.
* @return The state prior to this call
*/
bool useDefaults(bool b);
protected:
/**
* Implemented by subclasses that use special defaults.
* It should replace the default values with the actual
* values and vice versa.
*/
virtual void usrUseDefaults(bool)
{
}
virtual void usrSetDefaults()
{
}
/**
* Implemented by subclasses that read special config values.
*/
virtual void usrReadConfig()
{
}
/**
* Implemented by subclasses that write special config values.
*/
virtual void usrWriteConfig()
{
}
private:
TQString mCurrentGroup;
KSharedConfig::Ptr mConfig; // pointer to KConfig object
KConfigSkeletonItem::List mItems;
KConfigSkeletonItem::Dict mItemDict;
bool mUseDefaults;
class Private;
Private *d;
};
#endif