[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdebase/kcontrol/display
From: Hamish Rodda <rodda () kde ! org>
Date: 2004-09-19 9:20:59
Message-ID: 20040919092059.68A4512660 () office ! kde ! org
[Download RAW message or body]
CVS commit by rodda:
Two changes:
1) Remember each sub-module's changed state so that if one submodule reports
it is unchanged after another has reported a change, this module
will not declare itself unchanged.
2) Include the new nvidia modules if present.
M +40 -26 display.cpp 1.12
M +6 -6 display.h 1.8
--- kdebase/kcontrol/display/display.cpp #1.11:1.12
@@ -32,14 +32,16 @@ K_EXPORT_COMPONENT_FACTORY ( kcm_display
KCMDisplay::KCMDisplay( QWidget *parent, const char *name, const QStringList& )
- : KCModule( parent, name ),
- m_randr( 0 ), m_gamma( 0 ), m_xiner( 0 ), m_energy( 0 )
+ : KCModule( parent, name )
+ , m_changed(false)
{
m_tabs = new QTabWidget( this );
- m_randr = addTab( "randr", i18n( "Size && Orientation" ) );
- m_gamma = addTab( "kgamma", i18n( "Monitor Gamma" ) );
+ addTab( "randr", i18n( "Size && Orientation" ) );
+ addTab( "nvidiadisplay", i18n( "Graphics Adaptor" ) );
+ addTab( "nvidia3d", i18n( "3D Options" ) );
+ addTab( "kgamma", i18n( "Monitor Gamma" ) );
if ( QApplication::desktop()->isVirtualDesktop() )
- m_xiner = addTab( "xinerama", i18n( "Multiple Monitors" ) );
- m_energy = addTab( "energy", i18n( "Power Control" ) );
+ addTab( "xinerama", i18n( "Multiple Monitors" ) );
+ addTab( "energy", i18n( "Power Control" ) );
QVBoxLayout *top = new QVBoxLayout( this, 0, KDialog::spacingHint() );
@@ -50,5 +52,5 @@ KCMDisplay::KCMDisplay( QWidget *parent,
}
-KCModule* KCMDisplay::addTab( const QString &name, const QString &label )
+void KCMDisplay::addTab( const QString &name, const QString &label )
{
QWidget *page = new QWidget( m_tabs, name.latin1() );
@@ -62,34 +64,46 @@ KCModule* KCMDisplay::addTab( const QStr
m_tabs->addTab( page, label );
- connect( kcm, SIGNAL( changed(bool) ), SIGNAL( changed(bool) ) );
+ connect( kcm, SIGNAL( changed(bool) ), SLOT( moduleChanged(bool) ) );
+ m_modules.insert(kcm, false);
}
else
delete page;
-
- return kcm;
}
void KCMDisplay::load()
{
- if ( m_randr )
- m_randr->load();
- if ( m_gamma )
- m_gamma->load();
- if ( m_xiner )
- m_xiner->load();
- if ( m_energy )
- m_energy->load();
+ for (QMap<KCModule*, bool>::ConstIterator it = m_modules.begin(); it != \
m_modules.end(); ++it) + it.key()->load();
}
void KCMDisplay::save()
{
- if ( m_randr )
- m_randr->save();
- if ( m_gamma )
- m_gamma->save();
- if ( m_xiner )
- m_xiner->save();
- if ( m_energy )
- m_energy->save();
+ for (QMap<KCModule*, bool>::Iterator it = m_modules.begin(); it != \
m_modules.end(); ++it) + if (it.data())
+ it.key()->save();
+}
+
+void KCMDisplay::moduleChanged( bool isChanged )
+{
+ QMap<KCModule*, bool>::Iterator currentModule = \
m_modules.find(static_cast<KCModule*>(const_cast<QObject*>(sender()))); + \
Q_ASSERT(currentModule != m_modules.end()); + if (currentModule.data() == isChanged)
+ return;
+
+ currentModule.data() = isChanged;
+
+ bool c = false;
+
+ for (QMap<KCModule*, bool>::ConstIterator it = m_modules.begin(); it != \
m_modules.end(); ++it) { + if (it.data()) {
+ c = true;
+ break;
+ }
+ }
+
+ if (m_changed != c) {
+ m_changed = c;
+ emit changed(c);
+ }
}
--- kdebase/kcontrol/display/display.h #1.7:1.8
@@ -34,13 +34,13 @@ class KCMDisplay : public KCModule
void save();
- protected:
- KCModule* addTab( const QString &name, const QString &label );
+ private slots:
+ void moduleChanged(bool isChanged);
private:
+ void addTab( const QString &name, const QString &label );
+
QTabWidget *m_tabs;
- KCModule *m_randr;
- KCModule *m_gamma;
- KCModule *m_xiner;
- KCModule *m_energy;
+ QMap<KCModule*, bool> m_modules;
+ bool m_changed;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic