Source Code (Use browser search to find items of interest.)

Class Index

kikbd'KConfigObject (./kdebase/kikbd/kobjconf.h:39)

class KConfigObject: public QObject {
  Q_OBJECT
 protected:
  bool         deleteData, persistent, global, NLS;
  QStrList     keys;
  QList<QWidget> *widgets;
  QString  group;
  void*        data;
 public slots:
  /** For internal use
   */
  void deleteWidget();
 /** Set all widgets
  */
  void setWidgets();
 protected:
  /**
     Reading object from configuration file. Must be reimplemented
     in child to read specific data.
     @param config The pointer to parent KObjectConfig class
  */
  virtual void readObject(KObjectConfig*) {}
  /**
     Writing object back to configuration file. Must be reimplemented
     in child to read specific data.
     @param config The pointer to parent KObjectConfig class
  */
  virtual void writeObject(KObjectConfig*){}
  /** Create widget to interactivaly change value. Sutable for writing
      configuration programs. Each call to function return new widget.
  */
  virtual QWidget* createWidget(QWidget* parent, const char* label=0);
  /* Set widget
   */
  virtual void setWidget(QWidget*){}
  /* Add widget for control
   */
  void controlWidget(QWidget*);
  friend class KObjectConfig;
 public:
  /** Constructor of abstract object
      @param pData data reference
      @param pDeleteData If is TRUE the data referenced by pData will be
      deleted by delete at destruction time.
      @param key if not NULL used as key for this object
  */
  KConfigObject(void* pData=0L, bool pDeleteData=FALSE, const char* key=0L);
  virtual ~KConfigObject();
  /** Return active key for this object.
  */
  const QString   getKey () const {return keys.current();}
  /** Return all keys for this object. Usually object contains only one key.
  */
  const QStrList& getKeys() const {return keys;}
  /** Return data reference
   */
  void* getData() const {return data;}
  /** Delete referenced data in destructor if f is TRUE.
  */
  void  setDeleteData(bool f){deleteData = f;}
  /** Configure writing parameters.
      @see KConfigBase::writeEntry KConfigBase class
  */
  void  configure(bool bPersistent = TRUE, bool bGlobal = FALSE,
		  bool bNLS = FALSE);
  /** Called by external object who change data.
   */
  void markDataChanged();
 signals:
  /** Should be connected to object who whants to know about data
      changes.
  */
  void dataChanged();
};

/**
   This is hi level user interface to KConfig class.
   It can be used in KApplication to read configuration from single or
   multiple files and also it can be used in KControlApplication to
   help create widgets and load/save data.

   It should be very easy to load/save data with KObjectConfig. This is an
   example:

       main() {
         KObjectConfig config("test.config");
	 bool myBool;
	 QColor myColor;

	 config.registerBool("MyBool", myBool);
	 config.registerColor("MyColor", myColor);
	 config.loadConfig();

	 ... do some job
	 ... may be change values

	 config.saveConfig();
       }

   If you need to create KControlApplication or in other reason you
   need to change value of one of registered objects in GUI:

          ...
	  QWidget *w = config.createBoolWidget(myBool, "Set My Bool", parent);
	  QWidget *w = config.createColorWidget(myColor, parent);
	  ...

   @author Alexander Budnik (budnik@linserv.jinr.ru)
   @short KDE Object Configuration base class
*/

kikbd'KConfigObject::KConfigObject() (./kdebase/kikbd/kobjconf.cpp:40)

KConfigObject::KConfigObject(void* pData, bool pDeleteData, const char* key)
{
  widgets = 0L;
  data    = pData;
  deleteData = pDeleteData;
  keys.setAutoDelete(TRUE);
  if(key) keys.append(key);
  configure();
  connect(this, SIGNAL(dataChanged()), SLOT(setWidgets()));
}

kikbd'KConfigObject::~KConfigObject() (./kdebase/kikbd/kobjconf.cpp:50)

KConfigObject::~KConfigObject()
{
  if(deleteData) delete data;
  if(widgets) delete widgets;
}

kikbd'KConfigObject::configure() (./kdebase/kikbd/kobjconf.cpp:55)

void KConfigObject::configure(bool bPersistent, bool bGlobal, bool bNLS) 
{
  persistent = bPersistent;
  global = bGlobal;
  NLS = bNLS;
}

kikbd'KConfigObject::controlWidget() (./kdebase/kikbd/kobjconf.cpp:61)

void KConfigObject::controlWidget(QWidget* wid)
{
  if(!widgets) widgets = new QList<QWidget>();
  widgets->append(wid);
  connect(wid, SIGNAL(destroyed()), SLOT(deleteWidget()));
  setWidget(wid);
}

kikbd'KConfigObject::deleteWidget() (./kdebase/kikbd/kobjconf.cpp:68)

void KConfigObject::deleteWidget()
{
  if(sender()) widgets->remove((QWidget*)sender());
}

kikbd'KConfigObject::setWidgets() (./kdebase/kikbd/kobjconf.cpp:72)

void KConfigObject::setWidgets()
{
  for(unsigned i=0; widgets && i<widgets->count(); i++)
    setWidget(widgets->at(i));
}

kikbd'KConfigObject::markDataChanged() (./kdebase/kikbd/kobjconf.cpp:77)

void KConfigObject::markDataChanged() {
  static int flag = 0;
  if(flag) return;
  flag++;
  emit dataChanged();
  flag--;
}

kikbd'KConfigObject::createWidget() (./kdebase/kikbd/kobjconf.cpp:84)

QWidget* KConfigObject::createWidget(QWidget* , const char *) 
{
  return 0L;
}
/*************************************************************************
   Object Configuration 
   
**************************************************************************/