Sophie

Sophie

distrib > * > 2008.0 > x86_64 > by-pkgid > 31e1296274b13d07b478531793fc3fda > files > 33

kdebase-3.5.9-4mdv2008.0.src.rpm

diff -p -up kdebase-3.5.8/kcontrol/kdm/kdm-appear.h.orig kdebase-3.5.8/kcontrol/kdm/kdm-appear.h
--- kdebase-3.5.8/kcontrol/kdm/kdm-appear.h.orig	2005-09-29 10:24:25.000000000 -0300
+++ kdebase-3.5.8/kcontrol/kdm/kdm-appear.h	2008-01-07 15:03:56.000000000 -0200
@@ -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,8 @@ protected:
 private slots:
 	void slotAreaRadioClicked(int id);
 	void slotLogoButtonClicked();
+	void slotThemeChanged(int id);
+	void slotUsethemeChanged(bool state);
 	void changed();
 
 private:
@@ -85,11 +89,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
diff -p -up kdebase-3.5.8/kcontrol/kdm/kdm-appear.cpp.orig kdebase-3.5.8/kcontrol/kdm/kdm-appear.cpp
--- kdebase-3.5.8/kcontrol/kdm/kdm-appear.cpp.orig	2007-11-16 10:30:07.000000000 -0200
+++ kdebase-3.5.8/kcontrol/kdm/kdm-appear.cpp	2008-01-07 16:53:08.000000000 -0200
@@ -26,6 +26,7 @@
 #include <qbuttongroup.h>
 #include <qlabel.h>
 #include <qlayout.h>
+#include <qcheckbox.h>
 #include <qradiobutton.h>
 #include <qwhatsthis.h>
 #include <qvalidator.h>
@@ -56,16 +57,50 @@ 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);
+  themecombo->listBox()->sort();
+  
+  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,35 @@ void KDMAppearanceWidget::loadGuiStyles(
   }
 }
 
+void KDMAppearanceWidget::loadThemes(KBackedComboBox *combo)
+{
+  // XXX: Global + local schemes
+  
+  // Hardcoded Mandriva's theme
+  themecombo->insertItem( "/usr/share/mdk/dm/", i18n("<default>") );
+  
+  QStringList list = KGlobal::dirs()->
+      findAllResources("data", "kdm/themes/*/KdmGreeterTheme.desktop", false, true);
+
+  for (QStringList::ConstIterator it = list.begin(); it != list.end(); ++it)
+  {
+    KSimpleConfig config(*it, true);
+
+    if (config.hasGroup("KdmGreeterTheme")){
+    	config.setGroup("KdmGreeterTheme");
+    }else{
+	config.setGroup("GdmGreeterTheme");
+    }
+
+    QString str2 = config.readEntry("Name");
+    if (str2.isNull())
+	continue;
+    QString aux = *it;
+    aux.remove(QRegExp("KdmGreeterTheme.desktop$"));
+    combo->insertItem( aux, config.readEntry("Name") );
+  }
+}
+
 bool KDMAppearanceWidget::setLogo(QString logo)
 {
     QString flogo = logo.isEmpty() ?
@@ -330,6 +409,22 @@ bool KDMAppearanceWidget::setLogo(QStrin
     return true;
 }
 
+void KDMAppearanceWidget::slotThemeChanged(int id){
+    //kdDebug() << "Teste: " << themecombo->currentId() <<  "screenshot.png" << endl;
+    //
+    KSimpleConfig config(themecombo->currentId() + "KdmGreeterTheme.desktop", true);
+
+    if (config.hasGroup("KdmGreeterTheme")){
+    	config.setGroup("KdmGreeterTheme");
+    }else{
+	config.setGroup("GdmGreeterTheme");
+    }
+
+    QString fname = config.readEntry("Screenshot");
+    QImage qi(themecombo->currentId() + fname);
+    qi = qi.scale(160,120, QImage::ScaleFree);
+    themeimagelabel->setPixmap(QPixmap(qi));
+}
 
 void KDMAppearanceWidget::slotLogoButtonClicked()
 {
@@ -427,6 +522,8 @@ void KDMAppearanceWidget::save()
 
   config->writeEntry("GUIStyle", guicombo->currentId());
 
+  config->writeEntry("Theme", themecombo->currentId());
+
   config->writeEntry("ColorScheme", colcombo->currentId());
 
   config->writeEntry("EchoMode", echocombo->currentId());
@@ -434,6 +531,8 @@ void KDMAppearanceWidget::save()
   config->writeEntry("GreeterPos", xLineEdit->text() + ',' + yLineEdit->text());
 
   config->writeEntry("Language", langcombo->current());
+
+  config->writeEntry("UseTheme", themecheck->isChecked());
 }
 
 
@@ -460,6 +559,9 @@ void KDMAppearanceWidget::load()
   // See if we use alternate logo
   setLogo(config->readEntry("LogoPixmap"));
 
+  // Check Theme
+  themecombo->setCurrentId(config->readEntry("Theme"));
+  slotThemeChanged(0);
   // Check the GUI type
   guicombo->setCurrentId(config->readEntry("GUIStyle"));
 
@@ -480,15 +582,22 @@ 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);
+  themecombo->setCurrentId( i18n("<default>") );
+  slotThemeChanged(0);
   greetstr_lined->setText( i18n("Welcome to %s at %n") );
   logoRadio->setChecked( true );
   slotAreaRadioClicked( KdmLogo );
   setLogo( "" );
+  themecombo->setCurrentId("");
   guicombo->setCurrentId( "" );
   colcombo->setCurrentId( "" );
   echocombo->setCurrentItem( "OneStar" );