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.
 
 
 

103 lines
2.5 KiB

// configuredialog_p.cpp: classes internal to ConfigureDialog
// see configuredialog.cpp for details.
// my header:
#include "configuredialog_p.h"
// other KMail headers:
#include "settings/globalsettings.h"
// other KDE headers:
#include <ktabwidget.h>
#include <KDialog>
// Qt headers:
#include <QShowEvent>
#include <QVBoxLayout>
// Other headers:
#include <assert.h>
ConfigModuleWithTabs::ConfigModuleWithTabs( const KComponentData &instance, QWidget *parent )
: ConfigModule( instance, parent ), mWasInitialized( false )
{
QVBoxLayout *vlay = new QVBoxLayout( this );
vlay->setSpacing( KDialog::spacingHint() );
vlay->setMargin( 0 );
mTabWidget = new KTabWidget( this );
vlay->addWidget( mTabWidget );
}
void ConfigModuleWithTabs::addTab( ConfigModuleTab* tab, const QString & title )
{
mTabWidget->addTab( tab, title );
connect( tab, SIGNAL(changed(bool)),
this, SIGNAL(changed(bool)) );
}
void ConfigModuleWithTabs::showEvent ( QShowEvent * event )
{
mWasInitialized = true;
ConfigModule::showEvent( event );
}
void ConfigModuleWithTabs::load()
{
const int numberOfTab = mTabWidget->count();
for ( int i = 0 ; i < numberOfTab ; ++i ) {
ConfigModuleTab *tab = dynamic_cast<ConfigModuleTab*>( mTabWidget->widget(i) );
if ( tab )
tab->load();
}
KCModule::load();
}
void ConfigModuleWithTabs::save()
{
if ( mWasInitialized ) {
KCModule::save();
const int numberOfTab = mTabWidget->count();
for ( int i = 0 ; i < numberOfTab ; ++i ) {
ConfigModuleTab *tab = dynamic_cast<ConfigModuleTab*>( mTabWidget->widget(i) );
if ( tab )
tab->save();
}
}
}
void ConfigModuleWithTabs::defaults()
{
ConfigModuleTab *tab = dynamic_cast<ConfigModuleTab*>( mTabWidget->currentWidget() );
if ( tab )
tab->defaults();
KCModule::defaults();
}
void ConfigModuleTab::load()
{
mEmitChanges = false;
doLoadFromGlobalSettings();
doLoadOther();
mEmitChanges = true;
}
void ConfigModuleTab::defaults()
{
// reset settings which are available via GlobalSettings to their defaults
// (stolen from KConfigDialogManager::updateWidgetsDefault())
const bool bUseDefaults = GlobalSettings::self()->useDefaults( true );
doLoadFromGlobalSettings();
GlobalSettings::self()->useDefaults( bUseDefaults );
// reset other settings to default values
doResetToDefaultsOther();
}
void ConfigModuleTab::slotEmitChanged( void )
{
if ( mEmitChanges )
emit changed( true );
}