Sophie

Sophie

distrib > Mandriva > 2009.0 > i586 > by-pkgid > 901b66721cd8b67ee1adbc6604574c15 > files > 33

kdebase-3.5.10-6mdv2009.0.src.rpm

diff -p -up kdebase-3.5.9/kcontrol/kdm/kdm-appear.cpp.kcontrol-kdm_theme_selector kdebase-3.5.9/kcontrol/kdm/kdm-appear.cpp
--- kdebase-3.5.9/kcontrol/kdm/kdm-appear.cpp.kcontrol-kdm_theme_selector	2008-02-13 07:40:34.000000000 -0200
+++ kdebase-3.5.9/kcontrol/kdm/kdm-appear.cpp	2008-02-29 14:04:52.000000000 -0300
@@ -26,12 +26,14 @@
 #include <qbuttongroup.h>
 #include <qlabel.h>
 #include <qlayout.h>
+#include <qcheckbox.h>
 #include <qradiobutton.h>
 #include <qwhatsthis.h>
 #include <qvalidator.h>
 #include <qstylefactory.h>
 #include <qstyle.h>
 
+#include <kdesktopfile.h>
 #include <klocale.h>
 #include <klineedit.h>
 #include <kimageio.h>
@@ -56,16 +58,49 @@ KDMAppearanceWidget::KDMAppearanceWidget
 
   QVBoxLayout *vbox = new QVBoxLayout(this, KDialog::marginHint(),
                       KDialog::spacingHint(), "vbox");
-  QGroupBox *group = new QGroupBox(i18n("Appearance"), this);
+  
+  // ThemeBox Starts here
+
+  themecheck = new QCheckBox( i18n("Use Theme"), this );
+  vbox->addWidget(themecheck);
+  connect(themecheck, SIGNAL(toggled(bool)), SLOT(changed()));
+  connect(themecheck, SIGNAL(toggled(bool)), SLOT(slotUsethemeChanged(bool)));  
+  
+  themegroup = new QGroupBox(0, Vertical, i18n("Theme"), this);
+  vbox->addWidget(themegroup);
+
+  QGridLayout * grid = new QGridLayout( themegroup->layout(), 4, 3, KDialog::spacingHint() );
+  
+  grid->setColStretch(1, 1);
+  grid->setColStretch(2, 1);
+
+  themecombo = new KBackedComboBox(themegroup);
+  loadThemes(themecombo);
+  
+  QLabel * label1 = new QLabel(themecombo, i18n("KDM Theme:"),themegroup);
+  grid->addWidget(label1,1,0);
+  grid->addWidget(themecombo,1,1);
+  connect(themecombo, SIGNAL(activated(int)), SLOT(changed()));
+  connect(themecombo, SIGNAL(activated(int)), SLOT(slotThemeChanged(int)));
+
+  themeimagelabel = new QLabel(themecombo,"",themegroup);
+
+  grid->addMultiCellWidget(themeimagelabel,1,3,2,2,Qt::AlignRight);
+
+  vbox->addStretch(1);
+  // ENDS HERE
+
+
+  QGroupBox * group = new QGroupBox(i18n("Appearance"), this);
   vbox->addWidget(group);
 
-  QGridLayout *grid = new QGridLayout( group, 5, 2, KDialog::marginHint(),
+  grid = new QGridLayout( group, 5, 2, KDialog::marginHint(),
                        KDialog::spacingHint(), "grid");
   grid->addRowSpacing(0, group->fontMetrics().height());
   grid->setColStretch(0, 1);
   grid->setColStretch(1, 1);
 
-  QHBoxLayout *hlay = new QHBoxLayout( KDialog::spacingHint() );
+  QHBoxLayout *  hlay = new QHBoxLayout( KDialog::spacingHint() );
   grid->addMultiCellLayout(hlay, 1,1, 0,1);
   greetstr_lined = new KLineEdit(group);
   QLabel *label = new QLabel(greetstr_lined, i18n("&Greeting:"), group);
@@ -230,10 +265,25 @@ KDMAppearanceWidget::KDMAppearanceWidget
 
 }
 
+void KDMAppearanceWidget::slotUsethemeChanged(bool state){
+
+	//themehlay->setEnabled(state);
+	//themecombo->setEnabled(state);
+	//themeimagelabel->setEnabled(state);
+	themegroup->setEnabled(state);
+        
+}
+
+
 void KDMAppearanceWidget::makeReadOnly()
 {
     disconnect( logobutton, SIGNAL(clicked()),
 		this, SLOT(slotLogoButtonClicked()) );
+    
+    themecheck->setEnabled(false);
+    //themegroup->setEnabled(false);
+    themecombo->setEnabled(false);
+    themeimagelabel->setEnabled(false);
     logobutton->setAcceptDrops(false);
     greetstr_lined->setReadOnly(true);
     noneRadio->setEnabled(false);
@@ -313,6 +363,31 @@ void KDMAppearanceWidget::loadGuiStyles(
   }
 }
 
+void KDMAppearanceWidget::loadThemes(KBackedComboBox *combo)
+{
+  QDir d("/usr/share/mdk/dm/", "mdk-kde*.xml");
+  
+  QStringList list = d.entryList();
+
+  KDesktopFile cfg("/usr/share/mdk/dm/KdmGreeterTheme.desktop");
+  cfg.setGroup("GdmGreeterTheme");
+  QString current = cfg.readEntry("Greeter", "mdk-kde.xml");
+  combo->clear();
+  for (QStringList::ConstIterator it = list.begin(); it != list.end(); ++it)
+  {
+      QString name = (*it);
+      name.remove("mdk-kde");
+      name.remove(".xml");
+      name.remove(QRegExp("^-"));
+      if (name.isEmpty())
+         name = "default";
+      combo->insertItem( *it, name);
+
+      if ((*it) == current)
+         combo->setCurrentItem(combo->count()-1);
+  }
+}
+
 bool KDMAppearanceWidget::setLogo(QString logo)
 {
     QString flogo = logo.isEmpty() ?
@@ -330,7 +405,6 @@ bool KDMAppearanceWidget::setLogo(QStrin
     return true;
 }
 
-
 void KDMAppearanceWidget::slotLogoButtonClicked()
 {
     KImageIO::registerFormats();
@@ -427,6 +501,10 @@ void KDMAppearanceWidget::save()
 
   config->writeEntry("GUIStyle", guicombo->currentId());
 
+  KDesktopFile cfg("/usr/share/mdk/dm/KdmGreeterTheme.desktop");
+  cfg.setGroup("GdmGreeterTheme");
+  cfg.writeEntry("Greeter", themecombo->currentId());
+
   config->writeEntry("ColorScheme", colcombo->currentId());
 
   config->writeEntry("EchoMode", echocombo->currentId());
@@ -434,6 +512,8 @@ void KDMAppearanceWidget::save()
   config->writeEntry("GreeterPos", xLineEdit->text() + ',' + yLineEdit->text());
 
   config->writeEntry("Language", langcombo->current());
+
+  config->writeEntry("UseTheme", themecheck->isChecked());
 }
 
 
@@ -460,6 +540,7 @@ void KDMAppearanceWidget::load()
   // See if we use alternate logo
   setLogo(config->readEntry("LogoPixmap"));
 
+  loadThemes(themecombo);
   // Check the GUI type
   guicombo->setCurrentId(config->readEntry("GUIStyle"));
 
@@ -480,15 +561,20 @@ void KDMAppearanceWidget::load()
 
   // get the language
   langcombo->setCurrentItem(config->readEntry("Language", "C"));
+
+  themecheck->setChecked(config->readBoolEntry("UseTheme",true));
+  slotUsethemeChanged(config->readBoolEntry("UseTheme",true));
 }
 
 
 void KDMAppearanceWidget::defaults()
 {
+  themecheck->setChecked(true);
   greetstr_lined->setText( i18n("Welcome to %s at %n") );
   logoRadio->setChecked( true );
   slotAreaRadioClicked( KdmLogo );
   setLogo( "" );
+  themecombo->setCurrentId("");
   guicombo->setCurrentId( "" );
   colcombo->setCurrentId( "" );
   echocombo->setCurrentItem( "OneStar" );
diff -p -up kdebase-3.5.9/kcontrol/kdm/kdm-appear.h.kcontrol-kdm_theme_selector kdebase-3.5.9/kcontrol/kdm/kdm-appear.h
--- kdebase-3.5.9/kcontrol/kdm/kdm-appear.h.kcontrol-kdm_theme_selector	2005-10-10 12:03:49.000000000 -0300
+++ kdebase-3.5.9/kcontrol/kdm/kdm-appear.h	2008-02-29 14:04:52.000000000 -0300
@@ -26,6 +26,7 @@
 #include <qimage.h>
 #include <qfileinfo.h>
 #include <qpushbutton.h>
+#include <qgroupbox.h>
 
 #include <kcolorbutton.h>
 #include <kurl.h>
@@ -57,6 +58,7 @@ public:
 
 	void loadColorSchemes(KBackedComboBox *combo);
 	void loadGuiStyles(KBackedComboBox *combo);
+	void loadThemes(KBackedComboBox *combo);
 	void loadLanguageList(KLanguageButton *combo);
 
 	bool eventFilter(QObject *, QEvent *);
@@ -72,6 +74,7 @@ protected:
 private slots:
 	void slotAreaRadioClicked(int id);
 	void slotLogoButtonClicked();
+	void slotUsethemeChanged(bool state);
 	void changed();
 
 private:
@@ -85,11 +88,15 @@ private:
 	QRadioButton *logoRadio;
 	QLineEdit    *xLineEdit;
 	QLineEdit    *yLineEdit;
+	QCheckBox    * themecheck;
 	KBackedComboBox    *guicombo;
+	KBackedComboBox    *themecombo;
 	KBackedComboBox    *colcombo;
 	KBackedComboBox    *echocombo;
+	QLabel * themeimagelabel;
 	KLanguageButton *langcombo;
-
+        //QHBoxLayout * themehlay;
+	QGroupBox *themegroup;
 };
 
 #endif