22#include "tdeconfigdialogmanager.h" 
   24#include <tqbuttongroup.h> 
   25#include <tqcombobox.h> 
   27#include <tqmetaobject.h> 
   28#include <tqobjectlist.h> 
   29#include <tqsqlpropertymap.h> 
   31#include <tqwhatsthis.h> 
   33#include <tdeapplication.h> 
   34#include <tdeconfigskeleton.h> 
   40class TDEConfigDialogManager::Private {
 
   43  Private() : insideGroupBox(false) { }
 
   46  TQDict<TQWidget> knownWidget;
 
   47  TQDict<TQWidget> buddyWidget;
 
   52 : TQObject(parent, name), m_conf(conf), m_dialog(parent)
 
   56  tdeApp->installKDEPropertyMap();
 
   72    changedMap.insert(
"TQButton", TQ_SIGNAL(stateChanged(
int)));
 
   73    changedMap.insert(
"TQCheckBox", TQ_SIGNAL(stateChanged(
int)));
 
   74    changedMap.insert(
"TQPushButton", TQ_SIGNAL(stateChanged(
int)));
 
   75    changedMap.insert(
"TQRadioButton", TQ_SIGNAL(stateChanged(
int)));
 
   78    changedMap.insert(
"TQButtonGroup", TQ_SIGNAL(clicked(
int)));
 
   79    changedMap.insert(
"TQGroupBox", TQ_SIGNAL(toggled(
bool)));
 
   80    changedMap.insert(
"TQComboBox", TQ_SIGNAL(activated (
int)));
 
   83    changedMap.insert(
"TQDateEdit", TQ_SIGNAL(valueChanged(
const TQDate &)));
 
   84    changedMap.insert(
"TQDateTimeEdit", TQ_SIGNAL(valueChanged(
const TQDateTime &)));
 
   85    changedMap.insert(
"TQDial", TQ_SIGNAL(valueChanged (
int)));
 
   86    changedMap.insert(
"TQLineEdit", TQ_SIGNAL(textChanged(
const TQString &)));
 
   87    changedMap.insert(
"TQSlider", TQ_SIGNAL(valueChanged(
int)));
 
   88    changedMap.insert(
"TQSpinBox", TQ_SIGNAL(valueChanged(
int)));
 
   89    changedMap.insert(
"TQTimeEdit", TQ_SIGNAL(valueChanged(
const TQTime &)));
 
   90    changedMap.insert(
"TQTextEdit", TQ_SIGNAL(textChanged()));
 
   91    changedMap.insert(
"TQTextBrowser", TQ_SIGNAL(sourceChanged(
const TQString &)));
 
   92    changedMap.insert(
"TQMultiLineEdit", TQ_SIGNAL(textChanged()));
 
   93    changedMap.insert(
"TQListBox", TQ_SIGNAL(selectionChanged()));
 
   94    changedMap.insert(
"TQTabWidget", TQ_SIGNAL(currentChanged(TQWidget *)));
 
   97    changedMap.insert( 
"KComboBox", TQ_SIGNAL(activated (
int)));
 
   98    changedMap.insert( 
"TDEFontCombo", TQ_SIGNAL(activated (
int)));
 
   99    changedMap.insert( 
"TDEFontRequester", TQ_SIGNAL(fontSelected(
const TQFont &)));
 
  100    changedMap.insert( 
"TDEFontChooser",  TQ_SIGNAL(fontSelected(
const TQFont &)));
 
  101    changedMap.insert( 
"KHistoryCombo", TQ_SIGNAL(activated (
int)));
 
  103    changedMap.insert( 
"KColorButton", TQ_SIGNAL(changed(
const TQColor &)));
 
  104    changedMap.insert( 
"KDatePicker", TQ_SIGNAL(dateSelected (TQDate)));
 
  105    changedMap.insert( 
"KDateWidget", TQ_SIGNAL(changed (TQDate)));
 
  106    changedMap.insert( 
"KDateTimeWidget", TQ_SIGNAL(valueChanged (
const TQDateTime &)));
 
  107    changedMap.insert( 
"KEditListBox", TQ_SIGNAL(changed()));
 
  108    changedMap.insert( 
"TDEListBox", TQ_SIGNAL(selectionChanged()));
 
  109    changedMap.insert( 
"KLineEdit", TQ_SIGNAL(textChanged(
const TQString &)));
 
  110    changedMap.insert( 
"KPasswordEdit", TQ_SIGNAL(textChanged(
const TQString &)));
 
  111    changedMap.insert( 
"KRestrictedLine", TQ_SIGNAL(textChanged(
const TQString &)));
 
  112    changedMap.insert( 
"KTextBrowser", TQ_SIGNAL(sourceChanged(
const TQString &)));
 
  113    changedMap.insert( 
"KTextEdit", TQ_SIGNAL(textChanged()));
 
  114    changedMap.insert( 
"KURLRequester",  TQ_SIGNAL(textChanged (
const TQString& )));
 
  115    changedMap.insert( 
"KIntNumInput", TQ_SIGNAL(valueChanged (
int)));
 
  116    changedMap.insert( 
"KIntSpinBox", TQ_SIGNAL(valueChanged (
int)));
 
  117    changedMap.insert( 
"KDoubleNumInput", TQ_SIGNAL(valueChanged (
double)));
 
  131  TQVariant minValue = item->
minValue();
 
  132  if (minValue.isValid())
 
  134    if (widget->metaObject()->findProperty(
"minValue", 
true) != -1)
 
  135       widget->setProperty(
"minValue", minValue);
 
  137  TQVariant maxValue = item->
maxValue();
 
  138  if (maxValue.isValid())
 
  140    if (widget->metaObject()->findProperty(
"maxValue", 
true) != -1)
 
  141       widget->setProperty(
"maxValue", maxValue);
 
  143  if (TQWhatsThis::textFor( widget ).isEmpty())
 
  146    if ( !whatsThis.isEmpty() )
 
  148      TQWhatsThis::add( widget, whatsThis );
 
  155  bool valueChanged = 
false;
 
  156  const TQObjectList listOfChildren = widget->childrenListObject();
 
  157  if(listOfChildren.isEmpty())
 
  161  for( TQObjectListIterator it( listOfChildren );
 
  162       (
object = it.current()); ++it )
 
  164    if(!object->isWidgetType())
 
  167    TQWidget *childWidget = (TQWidget *)
object;
 
  169    const char *widgetName = childWidget->name(0);
 
  170    bool bParseChildren = 
true;
 
  171    bool bSaveInsideGroupBox = d->insideGroupBox;
 
  173    if (widgetName && (strncmp(widgetName, 
"kcfg_", 5) == 0))
 
  176      TQString configId = widgetName+5;
 
  180        d->knownWidget.insert(configId, childWidget);
 
  184        TQMap<TQString, TQCString>::const_iterator changedIt = 
changedMap.find(childWidget->className());
 
  192          changedIt = 
changedMap.find(childWidget->metaObject()->superClassName());
 
  197          kdWarning(178) << 
"Don't know how to monitor widget '" << childWidget->className() << 
"' for changes!" << 
endl;
 
  201          connect(childWidget, *changedIt,
 
  204          TQGroupBox *gb = 
dynamic_cast<TQGroupBox *
>(childWidget);
 
  206            bParseChildren = 
false;
 
  208            d->insideGroupBox = 
true;
 
  210          TQComboBox *cb = 
dynamic_cast<TQComboBox *
>(childWidget);
 
  211          if (cb && cb->editable())
 
  212            connect(cb, TQ_SIGNAL(textChanged(
const TQString &)),
 
  218        kdWarning(178) << 
"A widget named '" << widgetName << 
"' was found but there is no setting named '" << configId << 
"'" << 
endl;
 
  221    else if (childWidget->inherits(
"TQLabel"))
 
  223      TQLabel *label = 
static_cast<TQLabel *
>(childWidget);
 
  224      TQWidget *buddy = label->buddy();
 
  227      const char *buddyName = buddy->name(0);
 
  228      if (buddyName && (strncmp(buddyName, 
"kcfg_", 5) == 0))
 
  231        TQString configId = buddyName+5;
 
  232        d->buddyWidget.insert(configId, childWidget);
 
  238      TQMap<TQString, TQCString>::const_iterator changedIt = 
changedMap.find(childWidget->className());
 
  241        if ((!d->insideGroupBox || !childWidget->inherits(
"TQRadioButton")) && 
 
  242            !childWidget->inherits(
"TQGroupBox"))
 
  243          kdDebug(178) << 
"Widget '" << widgetName << 
"' (" << childWidget->className() << 
") remains unmanaged." << 
endl;
 
  254    d->insideGroupBox = bSaveInsideGroupBox;
 
  261  bool changed = 
false;
 
  262  bool bSignalsBlocked = signalsBlocked();
 
  266  for( TQDictIterator<TQWidget> it( d->knownWidget );
 
  267       (widget = it.current()); ++it )
 
  272        kdWarning(178) << 
"The setting '" << it.currentKey() << 
"' has disappeared!" << 
endl;
 
  285        widget->setEnabled(
false);
 
  286        TQWidget *buddy = d->buddyWidget.find(it.currentKey());
 
  288           buddy->setEnabled(
false);
 
  291  blockSignals(bSignalsBlocked);
 
  306  bool changed = 
false;
 
  309  for( TQDictIterator<TQWidget> it( d->knownWidget );
 
  310       (widget = it.current()); ++it )
 
  315        kdWarning(178) << 
"The setting '" << it.currentKey() << 
"' has disappeared!" << 
endl;
 
  335  TQButtonGroup *bg = 
dynamic_cast<TQButtonGroup *
>(w);
 
  338    bg->setButton(v.toInt());
 
  342  TQComboBox *cb = 
dynamic_cast<TQComboBox *
>(w);
 
  343  if (cb && cb->editable())
 
  345    cb->setCurrentText(v.toString());
 
  354  TQButtonGroup *bg = 
dynamic_cast<TQButtonGroup *
>(w);
 
  356    return TQVariant(bg->selectedId());
 
  358  TQComboBox *cb = 
dynamic_cast<TQComboBox *
>(w);
 
  359  if (cb && cb->editable())
 
  360      return TQVariant(cb->currentText());
 
  369  for( TQDictIterator<TQWidget> it( d->knownWidget );
 
  370       (widget = it.current()); ++it )
 
  375        kdWarning(178) << 
"The setting '" << it.currentKey() << 
"' has disappeared!" << 
endl;
 
  397#include "tdeconfigdialogmanager.moc" 
void updateWidgets()
Traverse the specified widgets, sets the state of all known widgets according to the state in the set...
 
void updateWidgetsDefault()
Traverse the specified widgets, sets the state of all known widgets according to the default state in...
 
TQVariant property(TQWidget *w)
Retrieve a property.
 
void setProperty(TQWidget *w, const TQVariant &v)
Set a property.
 
~TDEConfigDialogManager()
Destructor.
 
void settingsChanged()
One or more of the settings have been saved (such as when the user clicks on the Apply button).
 
void init(bool trackChanges)
 
TDEConfigDialogManager(TQWidget *parent, TDEConfigSkeleton *conf, const char *name=0)
Constructor.
 
void addWidget(TQWidget *widget)
Add additional widgets to manage.
 
bool parseChildren(const TQWidget *widget, bool trackChanges)
Recursive function that finds all known children.
 
TQMap< TQString, TQCString > changedMap
Map of the classes and the signals that they emit when changed.
 
void widgetModified()
If retrieveSettings() was told to track changes then if any known setting was changed this signal wil...
 
TQWidget * m_dialog
Dialog being managed.
 
TDEConfigSkeleton * m_conf
TDEConfigSkeleton object used to store settings.
 
bool isDefault()
Returns whether the current state of the known widgets are the same as the default state in the confi...
 
bool hasChanged()
Returns whether the current state of the known widgets are different from the state in the config obj...
 
void updateSettings()
Traverse the specified widgets, saving the settings of all known widgets in the settings object.
 
void setupWidget(TQWidget *widget, TDEConfigSkeletonItem *item)
Setup secondary widget properties.
 
TQSqlPropertyMap * propertyMap
Pointer to the property map for easy access.
 
Class for storing a preferences setting.
 
virtual void setProperty(const TQVariant &p)=0
Set item to p.
 
virtual TQVariant maxValue() const
Return maximum value of item or invalid if not specified.
 
virtual TQVariant property() const =0
Return item as property.
 
TQString whatsThis() const
Return WhatsThis description of item.
 
bool isImmutable() const
Return if the entry can be modified.
 
virtual TQVariant minValue() const
Return minimum value of item or invalid if not specified.
 
Class for handling preferences settings for an application.
 
TDEConfigSkeletonItem * findItem(const TQString &name)
Lookup item by name.
 
bool useDefaults(bool b)
Indicate whether this object should reflect the actual values or the default values.
 
void writeConfig()
Write preferences to config file.
 
kndbgstream & endl(kndbgstream &s)
Does nothing.