From 654bf3ba959e042f10fcd47e304c6b331d51e55a Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Thu, 31 Mar 2022 19:50:00 +0300 Subject: [PATCH] kgreeter: implement settings loading Signed-off-by: Ivailo Monev --- kgreeter/kcm/kgreeterconfig.cpp | 74 +++++++++++++++++++++++++++++++-- kgreeter/kcm/kgreeterconfig.h | 5 +++ kgreeter/kcm/kgreeterconfig.ui | 6 +-- 3 files changed, 78 insertions(+), 7 deletions(-) diff --git a/kgreeter/kcm/kgreeterconfig.cpp b/kgreeter/kcm/kgreeterconfig.cpp index bd0c225f..f791dd90 100644 --- a/kgreeter/kcm/kgreeterconfig.cpp +++ b/kgreeter/kcm/kgreeterconfig.cpp @@ -19,9 +19,11 @@ #include "kgreeterconfig.h" #include +#include #include #include #include +#include #include #include #include @@ -55,6 +57,24 @@ KCMGreeter::KCMGreeter(QWidget* parent, const QVariantList& args) load(); + stylesbox->addItems(QStyleFactory::keys()); + connect(stylesbox, SIGNAL(currentIndexChanged(QString)), this, SLOT(slotStyleChanged(QString))); + + // TODO: load name from General/Name + const QStringList kcolorschemes = KGlobal::dirs()->findAllResources("data", "color-schemes/*.colors", KStandardDirs::NoDuplicates); + foreach (const QString &kcolorscheme, kcolorschemes) { + colorsbox->addItem(QFileInfo(kcolorscheme).baseName()); + } + connect(colorsbox, SIGNAL(currentIndexChanged(QString)), this, SLOT(slotColorChanged(QString))); + + backgroundrequester->setFilter(KImageIO::pattern(KImageIO::Reading)); + connect(backgroundrequester, SIGNAL(textChanged(QString)), this, SLOT(slotURLChanged(QString))); + connect(backgroundrequester, SIGNAL(urlSelected(KUrl)), this, SLOT(slotURLChanged(KUrl))); + + rectanglerequester->setFilter(KImageIO::pattern(KImageIO::Reading)); + connect(rectanglerequester, SIGNAL(textChanged(QString)), this, SLOT(slotURLChanged(QString))); + connect(rectanglerequester, SIGNAL(urlSelected(KUrl)), this, SLOT(slotURLChanged(KUrl))); + m_lightdmexe = KStandardDirs::findRootExe("lightdm"); testbutton->setEnabled(!m_lightdmexe.isEmpty()); connect(testbutton, SIGNAL(pressed()), this, SLOT(slotTest())); @@ -67,10 +87,32 @@ KCMGreeter::~KCMGreeter() void KCMGreeter::load() { QSettings kgreetersettings(SYSCONF_INSTALL_DIR "/lightdm/lightdm-kgreeter-greeter.conf", QSettings::IniFormat); - qDebug() << Q_FUNC_INFO << kgreetersettings.value("greeter/style").toString(); - qDebug() << Q_FUNC_INFO << kgreetersettings.value("greeter/colorscheme").toString(); - qDebug() << Q_FUNC_INFO << kgreetersettings.value("greeter/background").toString(); - qDebug() << Q_FUNC_INFO << kgreetersettings.value("greeter/rectangle").toString(); + + const QString kgreeterstyle = kgreetersettings.value("greeter/style").toString(); + if (!kgreeterstyle.isEmpty()) { + for (int i = 0; i < stylesbox->count(); i++) { + if (stylesbox->itemText(i) == kgreeterstyle) { + stylesbox->setCurrentIndex(i); + break; + } + } + } + + const QString kgreetercolor = kgreetersettings.value("greeter/colorscheme").toString(); + if (!kgreetercolor.isEmpty()) { + for (int i = 0; i < colorsbox->count(); i++) { + if (colorsbox->itemText(i) == kgreetercolor) { + colorsbox->setCurrentIndex(i); + break; + } + } + } + + const QString kgreeterbackground = kgreetersettings.value("greeter/background").toString(); + backgroundrequester->setUrl(KUrl(kgreeterbackground)); + + const QString kgreeterrectangle = kgreetersettings.value("greeter/rectangle").toString(); + rectanglerequester->setUrl(KUrl(kgreeterrectangle)); emit changed(false); } @@ -80,6 +122,30 @@ void KCMGreeter::save() emit changed(false); } +void KCMGreeter::slotStyleChanged(const QString &style) +{ + Q_UNUSED(style); + emit changed(true); +} + +void KCMGreeter::slotColorChanged(const QString &style) +{ + Q_UNUSED(style); + emit changed(true); +} + +void KCMGreeter::slotURLChanged(const QString &url) +{ + Q_UNUSED(url); + emit changed(true); +} + +void KCMGreeter::slotURLChanged(const KUrl &url) +{ + Q_UNUSED(url); + emit changed(true); +} + void KCMGreeter::slotTest() { if (!QProcess::startDetached(m_lightdmexe, QStringList() << QString::fromLatin1("--test-mode"))) { diff --git a/kgreeter/kcm/kgreeterconfig.h b/kgreeter/kcm/kgreeterconfig.h index b993bfdc..4c556c32 100644 --- a/kgreeter/kcm/kgreeterconfig.h +++ b/kgreeter/kcm/kgreeterconfig.h @@ -40,6 +40,11 @@ public: void save() final; private Q_SLOTS: + void slotStyleChanged(const QString &style); + void slotColorChanged(const QString &style); + void slotURLChanged(const QString &url); + void slotURLChanged(const KUrl &url); + void slotTest(); private: diff --git a/kgreeter/kcm/kgreeterconfig.ui b/kgreeter/kcm/kgreeterconfig.ui index 060e4bed..68b452f7 100644 --- a/kgreeter/kcm/kgreeterconfig.ui +++ b/kgreeter/kcm/kgreeterconfig.ui @@ -67,7 +67,7 @@ - + @@ -80,10 +80,10 @@ - + - +