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.
176 lines
5.7 KiB
176 lines
5.7 KiB
/***************************************************************************
|
|
kxesettings.h
|
|
-------------
|
|
begin : Tue Dec 02 2003
|
|
copyright : (C) 2003 by The KXMLEditor Team
|
|
email : hartig@users.sourceforge.net
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#ifndef KXESETTINGS_H
|
|
#define KXESETTINGS_H
|
|
|
|
#include <qobject.h>
|
|
|
|
class KConfig;
|
|
class QFrame;
|
|
|
|
/**
|
|
* This is an abstract base class for classes representing a group, that stores
|
|
* several configuration settings and manages a corresponding page in the
|
|
* configuration dialog.
|
|
*
|
|
* @author Olaf Hartig
|
|
*/
|
|
class KXESettings : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
/**
|
|
* the constructor
|
|
*
|
|
* @param strConfigGroup the name of the corresponding group in the config file,
|
|
* it is copied to the member @ref m_strConfigGroup
|
|
*/
|
|
KXESettings( const QString & strConfigGroup, QObject * pParent = 0, const char * pszName = 0 );
|
|
|
|
/**
|
|
* Stores this settings to the given @ref KConfig object, by doing the
|
|
* following things:
|
|
*
|
|
* - set the config group by calling @ref setConfigGroup
|
|
* - write the data to the given @ref KConfig object by calling @ref write
|
|
* (which is implemented in the child class)
|
|
*/
|
|
void store( KConfig * ) const;
|
|
/**
|
|
* Restores the settings from the given @ref KConfig object, by doing
|
|
* following things:
|
|
*
|
|
* - set the config group by calling @ref setConfigGroup
|
|
* - read the data from the given @ref KConfig object by calling @ref read
|
|
* (which is implemented in the child class)
|
|
* - try to update the corresponding config.page by calling @ref updatePage
|
|
* (implemented in the child class)
|
|
* - emit the signal sigChanged
|
|
*/
|
|
void restore( KConfig * );
|
|
/**
|
|
* If the data in the corresponding configuration dialog page has been
|
|
* changed (@ref m_bPageChanged), this data gets applied by the
|
|
* @ref setFromPage member function implemented in child classes,
|
|
* the flag @ref m_bPageChanged is reset (to false) and the signal
|
|
* sigChanged is emitted.
|
|
*/
|
|
void apply();
|
|
|
|
/**
|
|
* Override this function and return the name of the corresponding
|
|
* configuration dialog page. This is the name used in the list of
|
|
* pages in the configuration dialog.
|
|
* This name has to be internationalized.
|
|
*/
|
|
virtual QString dialogPageName() const = 0;
|
|
/**
|
|
* You can override this function and return a header line to
|
|
* be used for the corresponding configuration dialog page.
|
|
* If it's not overridden, the pages name is used (see
|
|
* @ref dialogPageName)
|
|
* This string has to be internationalized.
|
|
*/
|
|
virtual QString dialogPageHeader() const { return QString::null; }
|
|
/**
|
|
* Override this function and return the (file-)name of the icon
|
|
* to be used in the configuration dialog for the corresponding page.
|
|
*/
|
|
virtual QString dialogPageIcon() const = 0;
|
|
/**
|
|
* Override this function to create the corresponding configuration
|
|
* dialog page with the given parent and return it.
|
|
* Update the page's widgets (usually by using @ref updatePage).
|
|
* Connect the signal @ref sigDialogPageChanged to the page's
|
|
* data changed signal(s).
|
|
*/
|
|
virtual QWidget * dialogPage( QFrame * pParent ) = 0;
|
|
|
|
|
|
signals:
|
|
|
|
/**
|
|
* This signal is always emitted when the settings change.
|
|
* It is emitted by @ref restore and @ref apply.
|
|
*/
|
|
void sigChanged();
|
|
/**
|
|
* Emitted, when the data in the corresponding dialog page
|
|
* has been changed.
|
|
* Connect this signal to the page's changed signal in your
|
|
* child class in @ref dialogPage.
|
|
*/
|
|
void sigDialogPageChanged();
|
|
|
|
protected:
|
|
|
|
/**
|
|
* Overide this function and write your settings to the given KConfig object.
|
|
* You mustn't change the config group.
|
|
*/
|
|
virtual void write( KConfig * ) const = 0;
|
|
/**
|
|
* Overide this function and read the settings from the given KConfig object.
|
|
* You mustn't change the config group.
|
|
*/
|
|
virtual void read( const KConfig * ) = 0;
|
|
/**
|
|
* Override this function to set this object's data to the data in the
|
|
* corresponding configuration dialog page, if a page has already been
|
|
* created (check this!).
|
|
*/
|
|
virtual void setFromPage() = 0;
|
|
/**
|
|
* Override this function to update the widgets in the corresponding
|
|
* configuration dialog page with the current data (from your child class
|
|
* object), if a page has already been created (check this!).
|
|
*/
|
|
virtual void updatePage() const = 0;
|
|
|
|
/**
|
|
* Sets the config group of the given @ref KConfig object to
|
|
* this setting's config group (@ref m_strConfigGroup).
|
|
*/
|
|
void setConfigGroup( KConfig * ) const;
|
|
|
|
/**
|
|
* This flag is set to true if the data in the corresponding configuration
|
|
* dialog's page has been changed but not applied yet.
|
|
*/
|
|
bool m_bPageChanged;
|
|
|
|
protected slots:
|
|
|
|
/**
|
|
* Sets the flag @ref m_bPageChanged to true.
|
|
*/
|
|
void slotDialogPageChanged();
|
|
|
|
private:
|
|
|
|
/**
|
|
* name of the config group for this group of settings
|
|
*/
|
|
const QString m_strConfigGroup;
|
|
|
|
};
|
|
|
|
#endif
|