kgreeter: implement settings loading

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2022-03-31 19:50:00 +03:00
parent e5a5cbdba5
commit 654bf3ba95
3 changed files with 78 additions and 7 deletions

View file

@ -19,9 +19,11 @@
#include "kgreeterconfig.h"
#include <QSettings>
#include <QStyleFactory>
#include <QProcess>
#include <kdebug.h>
#include <klocale.h>
#include <kimageio.h>
#include <kstandarddirs.h>
#include <kmessagebox.h>
#include <kaboutdata.h>
@ -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"))) {

View file

@ -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:

View file

@ -67,7 +67,7 @@
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="colorbox"/>
<widget class="QComboBox" name="colorsbox"/>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_3">
@ -80,10 +80,10 @@
</widget>
</item>
<item row="4" column="1">
<widget class="KUrlRequester" name="backgroundquester"/>
<widget class="KUrlRequester" name="backgroundrequester"/>
</item>
<item row="2" column="1">
<widget class="QComboBox" name="stylescombo"/>
<widget class="QComboBox" name="stylesbox"/>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_4">