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