diff --git a/CMakeLists.txt b/CMakeLists.txt index e4263ff6..224236ce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,5 +26,3 @@ macro_optional_add_subdirectory (zeroconf-ioslave) macro_optional_add_subdirectory (kdestopspy) macro_optional_add_subdirectory (kvolume) macro_optional_add_subdirectory (ksnapshot) -macro_optional_add_subdirectory (kgreeter) - diff --git a/kgreeter/50-lightdm-kgreeter-greeter.conf b/kgreeter/50-lightdm-kgreeter-greeter.conf deleted file mode 100644 index d113b665..00000000 --- a/kgreeter/50-lightdm-kgreeter-greeter.conf +++ /dev/null @@ -1,2 +0,0 @@ -[SeatDefaults] -greeter-session=lightdm-kgreeter-greeter diff --git a/kgreeter/CMakeLists.txt b/kgreeter/CMakeLists.txt deleted file mode 100644 index c0769374..00000000 --- a/kgreeter/CMakeLists.txt +++ /dev/null @@ -1,82 +0,0 @@ -project(kgreeter) - -if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR}) - find_package(KDE4 4.21.0 REQUIRED) - include(KDE4Defaults) - include_directories(${KDE4_INCLUDES}) - add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS}) -endif() - -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules") -set(CMAKE_AUTOMOC TRUE) -set(CMAKE_AUTOUIC TRUE) - -include(GNUInstallDirs) - -find_package(LightDM) -set_package_properties(LightDM PROPERTIES - PURPOSE "Required for the greeter" - DESCRIPTION "Cross-desktop display manager" - URL "https://github.com/canonical/lightdm" - TYPE REQUIRED -) - -find_package(GLIB2) -set_package_properties(GLIB2 PROPERTIES - PURPOSE "Required for the greeter" - DESCRIPTION "Low-level core library that forms the basis for projects such as GTK and GNOME" - URL "https://gitlab.gnome.org/GNOME/glib" - TYPE REQUIRED -) - -configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/config-kgreeter.h.cmake - ${CMAKE_CURRENT_BINARY_DIR}/config-kgreeter.h - @ONLY -) - -include_directories(${CMAKE_CURRENT_BINARY_DIR}) -add_subdirectory(kcm) - -include_directories( - ${LIGHTDM_INCLUDE_DIR} - ${GLIB2_INCLUDE_DIR} -) - -add_definitions( - ${LIGHTDM_DEFINITIONS} -) - -add_executable(kgreeter kgreeter.cpp) -target_link_libraries(kgreeter - ${QT_QTCORE_LIBRARY} - ${QT_QTGUI_LIBRARY} - ${KDE4_KDEUI_LIBS} - ${LIGHTDM_LIBRARIES} - ${GLIB2_LIBRARIES} - gobject-2.0 -) - -set_target_properties(kgreeter PROPERTIES - OUTPUT_NAME lightdm-kgreeter-greeter -) - -install( - TARGETS kgreeter - DESTINATION ${KDE4_SBIN_INSTALL_DIR} -) - -install( - FILES lightdm-kgreeter-greeter.conf - DESTINATION ${KDE4_SYSCONF_INSTALL_DIR}/lightdm -) - -install( - FILES 50-lightdm-kgreeter-greeter.conf - DESTINATION ${KDE4_SHARE_INSTALL_PREFIX}/lightdm/lightdm.conf.d -) - -install( - FILES lightdm-kgreeter-greeter.desktop - DESTINATION ${KDE4_SHARE_INSTALL_PREFIX}/xgreeters -) diff --git a/kgreeter/cmake/modules/FindLightDM.cmake b/kgreeter/cmake/modules/FindLightDM.cmake deleted file mode 100644 index efbe782b..00000000 --- a/kgreeter/cmake/modules/FindLightDM.cmake +++ /dev/null @@ -1,42 +0,0 @@ -# Try to find LightDM library, once done this will define: -# -# LIGHTDM_FOUND - system has LightDM -# LIGHTDM_INCLUDE_DIR - the LightDM include directory -# LIGHTDM_LIBRARIES - the libraries needed to use LightDM -# LIGHTDM_DEFINITIONS - compiler switches required for using LightDM -# -# Copyright (c) 2022 Ivailo Monev -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - -if(NOT WIN32) - include(FindPkgConfig) - pkg_check_modules(PC_LIGHTDM QUIET liblightdm-gobject-1) - - set(LIGHTDM_INCLUDE_DIR ${PC_LIGHTDM_INCLUDE_DIRS}) - set(LIGHTDM_LIBRARIES ${PC_LIGHTDM_LIBRARIES}) -endif() - -set(LIGHTDM_VERSION ${PC_LIGHTDM_VERSION}) -set(LIGHTDM_DEFINITIONS ${PC_LIGHTDM_CFLAGS_OTHER}) - -if(NOT LIGHTDM_INCLUDE_DIR OR NOT LIGHTDM_LIBRARIES) - find_path(LIGHTDM_INCLUDE_DIR - NAMES lightdm-gobject-1/lightdm.h - HINTS $ENV{LIGHTDMDIR}/include - ) - - find_library(LIGHTDM_LIBRARIES - NAMES lightdm-gobject-1 - HINTS $ENV{LIGHTDMDIR}/lib - ) -endif() - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(LightDM - VERSION_VAR LIGHTDM_VERSION - REQUIRED_VARS LIGHTDM_LIBRARIES LIGHTDM_INCLUDE_DIR -) - -mark_as_advanced(LIGHTDM_INCLUDE_DIR LIGHTDM_LIBRARIES) diff --git a/kgreeter/config-kgreeter.h.cmake b/kgreeter/config-kgreeter.h.cmake deleted file mode 100644 index 95078d2e..00000000 --- a/kgreeter/config-kgreeter.h.cmake +++ /dev/null @@ -1,2 +0,0 @@ - -#define SYSCONF_INSTALL_DIR "@KDE4_SYSCONF_INSTALL_DIR@" diff --git a/kgreeter/kcm/CMakeLists.txt b/kgreeter/kcm/CMakeLists.txt deleted file mode 100644 index 7051266e..00000000 --- a/kgreeter/kcm/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -########### next target ############### - -set(kgreeterconfig_SRCS - kgreeterconfig.cpp - kgreeterconfig.ui -) - -kde4_add_plugin(kcm_kgreeterconfig ${kgreeterconfig_SRCS}) - -target_link_libraries(kcm_kgreeterconfig - ${KDE4_KDEUI_LIBS} - ${KDE4_KCMUTILS_LIBS} - ${KDE4_KIO_LIBS} -) - -install( - TARGETS kcm_kgreeterconfig - DESTINATION ${KDE4_PLUGIN_INSTALL_DIR} -) - -install( - FILES kcm_kgreeterconfig.desktop - DESTINATION ${KDE4_SERVICES_INSTALL_DIR} -) - -########### next target ############### - -add_executable(kcmkgreeterhelper kgreeterhelper.cpp) -target_link_libraries(kcmkgreeterhelper ${KDE4_KDECORE_LIBS}) - -install( - TARGETS kcmkgreeterhelper - DESTINATION ${KDE4_LIBEXEC_INSTALL_DIR} -) - -kde4_install_auth_helper_files(kcmkgreeterhelper org.kde.kcontrol.kcmkgreeter root) diff --git a/kgreeter/kcm/kcm_kgreeterconfig.desktop b/kgreeter/kcm/kcm_kgreeterconfig.desktop deleted file mode 100644 index 1af62199..00000000 --- a/kgreeter/kcm/kcm_kgreeterconfig.desktop +++ /dev/null @@ -1,16 +0,0 @@ -[Desktop Entry] -Exec=kcmshell4 kgreeterconfig -Icon=preferences-system-login -Type=Service - -X-KDE-ServiceTypes=KCModule -X-KDE-Library=kcm_kgreeterconfig -X-KDE-ParentApp=kcontrol -X-KDE-System-Settings-Parent-Category=workspace-appearance-and-behavior -X-KDE-System-Settings-Parent-Category-V2=workspace-appearance-and-behavior -X-DocPath=kcontrol/kgreeterconfig/index.html -Categories=Qt;KDE;X-KDE-settings-workspace-appearance-and-behavior; - -Name=Greeter -Comment=Change greeter options -X-KDE-Keywords=Greeter,Login diff --git a/kgreeter/kcm/kgreeterconfig.cpp b/kgreeter/kcm/kgreeterconfig.cpp deleted file mode 100644 index 81564b5b..00000000 --- a/kgreeter/kcm/kgreeterconfig.cpp +++ /dev/null @@ -1,174 +0,0 @@ -/* This file is part of the KDE project - Copyright (C) 2022 Ivailo Monev - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License version 2, as published by the Free Software Foundation. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include "kgreeterconfig.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "config-kgreeter.h" - -K_PLUGIN_FACTORY(KCMGreeterFactory, registerPlugin();) -K_EXPORT_PLUGIN(KCMGreeterFactory("kcmgreeterconfig", "kcm_greeterconfig")) - -KCMGreeter::KCMGreeter(QWidget* parent, const QVariantList& args) - : KCModule(KCMGreeterFactory::componentData(), parent) -{ - Q_UNUSED(args); - - setQuickHelp(i18n("

KGreeter

This module allows you to change KDE greeter options.")); - - setupUi(this); - - KAboutData *about = - new KAboutData(I18N_NOOP("kcmkgreeter"), 0, - ki18n("KDE Greeter Module"), - 0, KLocalizedString(), KAboutData::License_GPL, - ki18n("Copyright 2022, Ivailo Monev xakepa10@gmail.com" - )); - - about->addAuthor(ki18n("Ivailo Monev"), KLocalizedString(), "xakepa10@gmail.com"); - setAboutData(about); - - setNeedsAuthorization(true); - setButtons(KCModule::Help | KCModule::Apply); - - load(); - - stylesbox->addItems(QStyleFactory::keys()); - connect(stylesbox, SIGNAL(currentIndexChanged(QString)), this, SLOT(slotStyleChanged(QString))); - - const QStringList kcolorschemes = KGlobal::dirs()->findAllResources("data", "color-schemes/*.colors", KStandardDirs::NoDuplicates); - foreach (const QString &kcolorscheme, kcolorschemes) { - const QString kcolorschemename = QSettings(kcolorscheme, QSettings::IniFormat).value("General/Name").toString(); - const QString kcolorschemebasename = QFileInfo(kcolorscheme).baseName(); - colorsbox->addItem(kcolorschemename, QVariant(kcolorschemebasename)); - } - 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()); - testbutton->setIcon(KIcon("debug-run")); - connect(testbutton, SIGNAL(pressed()), this, SLOT(slotTest())); -} - -KCMGreeter::~KCMGreeter() -{ -} - -void KCMGreeter::load() -{ - QSettings kgreetersettings(SYSCONF_INSTALL_DIR "/lightdm/lightdm-kgreeter-greeter.conf", QSettings::IniFormat); - - 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->itemData(i).toString() == 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); -} - -void KCMGreeter::save() -{ - KAuth::Action kgreeteraction("org.kde.kcontrol.kcmkgreeter.save"); - kgreeteraction.setHelperID("org.kde.kcontrol.kcmkgreeter"); - kgreeteraction.addArgument("style", stylesbox->currentText()); - kgreeteraction.addArgument("colorscheme", colorsbox->itemData(colorsbox->currentIndex()).toString()); - kgreeteraction.addArgument("background", backgroundrequester->url().path()); - kgreeteraction.addArgument("rectangle", rectanglerequester->url().path()); - KAuth::ActionReply kgreeterreply = kgreeteraction.execute(); - - // qDebug() << kgreeter.errorCode() << kgreeter.errorDescription(); - - if (kgreeterreply != KAuth::ActionReply::SuccessReply) { - KMessageBox::error(this, kgreeterreply.errorDescription()); - } - emit changed(false); -} - -void KCMGreeter::slotStyleChanged(const QString &style) -{ - Q_UNUSED(style); - emit changed(true); -} - -void KCMGreeter::slotColorChanged(const QString &color) -{ - Q_UNUSED(color); - 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"))) { - KMessageBox::error(this, i18n("Could not start LightDM")); - } -} - -#include "moc_kgreeterconfig.cpp" diff --git a/kgreeter/kcm/kgreeterconfig.h b/kgreeter/kcm/kgreeterconfig.h deleted file mode 100644 index 060fd90e..00000000 --- a/kgreeter/kcm/kgreeterconfig.h +++ /dev/null @@ -1,54 +0,0 @@ -/* This file is part of the KDE project - Copyright (C) 2022 Ivailo Monev - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License version 2, as published by the Free Software Foundation. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef KGREETERCONFIG_H -#define KGREETERCONFIG_H - -#include - -#include "ui_kgreeterconfig.h" - -/** - * Control look of KDE greeter - * - * @author Ivailo Monev (xakepa10@gmail.com) - */ -class KCMGreeter : public KCModule, public Ui_KGreeterDialog -{ - Q_OBJECT -public: - // KCModule reimplementations - KCMGreeter(QWidget* parent, const QVariantList&); - ~KCMGreeter(); - - void load() final; - void save() final; - -private Q_SLOTS: - void slotStyleChanged(const QString &style); - void slotColorChanged(const QString &color); - void slotURLChanged(const QString &url); - void slotURLChanged(const KUrl &url); - - void slotTest(); - -private: - QString m_lightdmexe; -}; - -#endif // KGREETERCONFIG_H diff --git a/kgreeter/kcm/kgreeterconfig.ui b/kgreeter/kcm/kgreeterconfig.ui deleted file mode 100644 index 68b452f7..00000000 --- a/kgreeter/kcm/kgreeterconfig.ui +++ /dev/null @@ -1,127 +0,0 @@ - - - KGreeterDialog - - - - 0 - 0 - 496 - 253 - - - - - - - Test - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Color scheme: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Style: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - Background: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - - Rectangle: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - KUrlRequester - -
kurlrequester.h
-
-
- - -
diff --git a/kgreeter/kcm/kgreeterhelper.cpp b/kgreeter/kcm/kgreeterhelper.cpp deleted file mode 100644 index 4364ba46..00000000 --- a/kgreeter/kcm/kgreeterhelper.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/* This file is part of the KDE project - Copyright (C) 2022 Ivailo Monev - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License version 2, as published by the Free Software Foundation. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include "kgreeterhelper.h" - -#include -#include - -#include "config-kgreeter.h" - -ActionReply KGreeterHelper::save(const QVariantMap ¶meters) -{ - if (!parameters.contains("style") || !parameters.contains("colorscheme") - || !parameters.contains("background") || !parameters.contains("rectangle")) { - return KAuth::ActionReply::HelperErrorReply; - } - - QSettings kgreetersettings(SYSCONF_INSTALL_DIR "/lightdm/lightdm-kgreeter-greeter.conf", QSettings::IniFormat); - kgreetersettings.setValue("greeter/style", parameters.value("style")); - kgreetersettings.setValue("greeter/colorscheme", parameters.value("colorscheme")); - kgreetersettings.setValue("greeter/background", parameters.value("background")); - kgreetersettings.setValue("greeter/rectangle", parameters.value("rectangle")); - if (kgreetersettings.status() != QSettings::NoError) { - KAuth::ActionReply errorreply(KAuth::ActionReply::HelperError); - errorreply.setErrorDescription("Could not save settings"); - errorreply.setErrorCode(1); - return errorreply; - } - - return KAuth::ActionReply::SuccessReply; -} - -KDE4_AUTH_HELPER_MAIN("org.kde.kcontrol.kcmkgreeter", KGreeterHelper) diff --git a/kgreeter/kcm/kgreeterhelper.h b/kgreeter/kcm/kgreeterhelper.h deleted file mode 100644 index 2b9c0ee9..00000000 --- a/kgreeter/kcm/kgreeterhelper.h +++ /dev/null @@ -1,34 +0,0 @@ -/* This file is part of the KDE project - Copyright (C) 2022 Ivailo Monev - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License version 2, as published by the Free Software Foundation. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef KGREETERHELPER_H -#define KGREETERHELPER_H - -#include - -// methods return type must be ActionReply otherwise QMetaObject::invokeMethod() fails -using namespace KAuth; - -class KGreeterHelper : public QObject -{ - Q_OBJECT -public slots: - ActionReply save(const QVariantMap ¶meters); -}; - -#endif // KGREETERHELPER_H diff --git a/kgreeter/kgreeter.cpp b/kgreeter/kgreeter.cpp deleted file mode 100644 index 1a3b91d7..00000000 --- a/kgreeter/kgreeter.cpp +++ /dev/null @@ -1,486 +0,0 @@ -#define QT_NO_KEYWORDS -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "ui_kgreeter.h" -#include "config-kgreeter.h" - -// for the callbacks -static GMainLoop *glibloop = NULL; - -static QSettings kgreetersettings(SYSCONF_INSTALL_DIR "/lightdm/lightdm-kgreeter-greeter.conf", QSettings::IniFormat); - -class KGreeter : public QMainWindow -{ - Q_OBJECT -public: - explicit KGreeter(QWidget *parent = nullptr); - - QByteArray getUser() const; - QByteArray getPass() const; - QByteArray getSession() const; - - LightDMGreeter* getGreeter() const; - - static void showPromptCb(LightDMGreeter *ldmgreeter, const char *ldmtext, LightDMPromptType ldmtype, gpointer ldmptr); - static void authenticationCompleteCb(LightDMGreeter *ldmgreeter, gpointer ldmptr); - static void showMessageCb(LightDMGreeter *ldmgreeter, const gchar *ldmtext, LightDMMessageType ldmtype, gpointer ldmptr); - - // QMainWindow reimplementations -protected: - void paintEvent(QPaintEvent *event) final; - -private Q_SLOTS: - void slotSuspend(); - void slotHibernate(); - void slotPoweroff(); - void slotReboot(); - - void slotSession(); - - void slotLayout(); - - void slotLogin(); - -private: - void setUser(const QString &user); - void setSession(const QString &session); - bool isUserLogged() const; - - Ui::KGreeter m_ui; - LightDMGreeter *m_ldmgreeter; - QList m_sessionactions; - QList m_layoutactions; - QImage m_background; - QImage m_rectangle; -}; - -KGreeter::KGreeter(QWidget *parent) - : QMainWindow(parent), - m_ldmgreeter(nullptr) -{ -#if !defined(GLIB_VERSION_2_36) - g_type_init(); -#endif - - m_ui.setupUi(this); - - m_background = QImage(kgreetersettings.value("greeter/background").toString()); - m_rectangle = QImage(kgreetersettings.value("greeter/rectangle").toString()); - - m_ldmgreeter = lightdm_greeter_new(); - - g_signal_connect( - m_ldmgreeter, LIGHTDM_GREETER_SIGNAL_SHOW_PROMPT, - G_CALLBACK(KGreeter::showPromptCb), this - ); - g_signal_connect( - m_ldmgreeter, LIGHTDM_GREETER_SIGNAL_AUTHENTICATION_COMPLETE, - G_CALLBACK(KGreeter::authenticationCompleteCb), this - ); - g_signal_connect( - m_ldmgreeter, LIGHTDM_GREETER_SIGNAL_SHOW_MESSAGE, - G_CALLBACK(KGreeter::showMessageCb), this - ); - - // TODO: sort and then add - GList *ldmlayouts = lightdm_get_layouts(); - for (GList *ldmitem = ldmlayouts; ldmitem; ldmitem = ldmitem->next) { - LightDMLayout *ldmlayout = static_cast(ldmitem->data); - Q_ASSERT(ldmlayout); - - QAction* layoutaction = new QAction(m_ui.menuKeyboard); - layoutaction->setCheckable(true); - layoutaction->setText(QString::fromUtf8(lightdm_layout_get_description(ldmlayout))); - layoutaction->setData(QVariant(QString::fromUtf8(lightdm_layout_get_name(ldmlayout)))); - connect(layoutaction, SIGNAL(triggered()), this, SLOT(slotLayout())); - m_ui.menuKeyboard->addAction(layoutaction); - m_layoutactions.append(layoutaction); - } - - GList *ldmusers = lightdm_user_list_get_users(lightdm_user_list_get_instance()); - for (GList *ldmitem = ldmusers; ldmitem; ldmitem = ldmitem->next) { - LightDMUser *ldmuser = static_cast(ldmitem->data); - Q_ASSERT(ldmuser); - - const QString ldmuserimage = QString::fromUtf8(lightdm_user_get_image(ldmuser)); - if (!ldmuserimage.isEmpty()) { - m_ui.usersbox->addItem(QIcon(QPixmap(ldmuserimage)), QString::fromUtf8(lightdm_user_get_name(ldmuser))); - } else { - m_ui.usersbox->addItem(QString::fromUtf8(lightdm_user_get_name(ldmuser))); - } - } - - GList *ldmsessions = lightdm_get_sessions(); - for (GList* ldmitem = ldmsessions; ldmitem; ldmitem = ldmitem->next) { - LightDMSession *ldmsession = static_cast(ldmitem->data); - Q_ASSERT(ldmsession); - - const QString ldmsessionname = QString::fromUtf8(lightdm_session_get_name(ldmsession)); - const QString ldmsessionkey = QString::fromUtf8(lightdm_session_get_key(ldmsession)); - - QAction* sessionaction = new QAction(m_ui.menuSessions); - sessionaction->setCheckable(true); - sessionaction->setText(ldmsessionname); - sessionaction->setData(QVariant(ldmsessionkey)); - connect(sessionaction, SIGNAL(triggered()), this, SLOT(slotSession())); - m_ui.menuSessions->addAction(sessionaction); - m_sessionactions.append(sessionaction); - } - - const QString ldmdefaultuser = QString::fromUtf8(lightdm_greeter_get_select_user_hint(m_ldmgreeter)); - if (!ldmdefaultuser.isEmpty()) { - setUser(ldmdefaultuser); - } - const QString ldmdefaultsession = QString::fromUtf8(lightdm_greeter_get_default_session_hint(m_ldmgreeter)); - if (!ldmdefaultsession.isEmpty()) { - setSession(ldmdefaultsession); - } - - QSettings kgreeterstate("lightdm-kgreeter-state"); - const QString lastuser = kgreeterstate.value("state/lastuser").toString(); - if (!lastuser.isEmpty()) { - setUser(lastuser); - } - const QString lastsession = kgreeterstate.value("state/lastsession").toString(); - if (!lastsession.isEmpty()) { - setSession(lastsession); - } - - // if no default session is specified and no last session is saved use the first - bool sessionchecked = false; - Q_FOREACH (QAction *sessionaction, m_sessionactions) { - if (sessionaction->isChecked()) { - sessionchecked = true; - break; - } - } - if (!sessionchecked && !m_sessionactions.isEmpty()) { - m_sessionactions.first()->setChecked(true); - } - - m_ui.groupbox->setTitle(QString::fromUtf8(lightdm_get_hostname())); - - m_ui.actionSuspend->setVisible(lightdm_get_can_suspend()); - m_ui.actionSuspend->setIcon(KIcon("system-suspend")); - m_ui.actionHibernate->setVisible(lightdm_get_can_hibernate()); - m_ui.actionHibernate->setIcon(KIcon("system-suspend-hibernate")); - m_ui.actionPoweroff->setVisible(lightdm_get_can_shutdown()); - m_ui.actionPoweroff->setIcon(KIcon("system-shutdown")); - m_ui.actionReboot->setVisible(lightdm_get_can_restart()); - m_ui.actionReboot->setIcon(KIcon("system-reboot")); - connect(m_ui.actionSuspend, SIGNAL(triggered()), this, SLOT(slotSuspend())); - connect(m_ui.actionHibernate, SIGNAL(triggered()), this, SLOT(slotHibernate())); - connect(m_ui.actionPoweroff, SIGNAL(triggered()), this, SLOT(slotPoweroff())); - connect(m_ui.actionReboot, SIGNAL(triggered()), this, SLOT(slotReboot())); - - connect(m_ui.loginbutton, SIGNAL(pressed()), this, SLOT(slotLogin())); - - if (lightdm_greeter_get_hide_users_hint(m_ldmgreeter) - || lightdm_greeter_get_show_manual_login_hint(m_ldmgreeter)) { - m_ui.userlabel->setVisible(false); - m_ui.usersbox->setVisible(false); - m_ui.useredit->setFocus(); - } else { - m_ui.userlabel2->setVisible(false); - m_ui.useredit->setVisible(false); - m_ui.passedit->setFocus(); - } -} - -void KGreeter::paintEvent(QPaintEvent *event) -{ - if (!m_background.isNull()) { - QPainter painter(this); - painter.drawImage(rect(), m_background); - } - - if (!m_rectangle.isNull()) { - m_ui.groupbox->setFlat(true); - QPainter painter(this); - QSize kgreeterrectanglesize(m_ui.groupbox->size()); - kgreeterrectanglesize.rwidth() = kgreeterrectanglesize.width() * 1.04; - kgreeterrectanglesize.rheight() = kgreeterrectanglesize.height() * 1.8; - painter.drawImage(m_ui.groupbox->pos(), m_rectangle.scaled(kgreeterrectanglesize)); - } else { - m_ui.groupbox->setFlat(false); - } - - QMainWindow::paintEvent(event); -} - -QByteArray KGreeter::getUser() const -{ - if (m_ui.useredit->isVisible()) { - return m_ui.useredit->text().toUtf8(); - } - return m_ui.usersbox->currentText().toUtf8(); -} - -QByteArray KGreeter::getPass() const -{ - return m_ui.passedit->text().toUtf8(); -} - -QByteArray KGreeter::getSession() const -{ - Q_FOREACH (const QAction *sessionaction, m_sessionactions) { - if (sessionaction->isChecked()) { - return sessionaction->data().toByteArray(); - } - } - Q_ASSERT(false); - return QByteArray(); -} - -LightDMGreeter * KGreeter::getGreeter() const -{ - return m_ldmgreeter; -} - -void KGreeter::showPromptCb(LightDMGreeter *ldmgreeter, const char *ldmtext, LightDMPromptType ldmtype, gpointer ldmptr) -{ - // qDebug() << Q_FUNC_INFO; - - KGreeter* kgreeter = static_cast(ldmptr); - Q_ASSERT(kgreeter); - - if (ldmtype == LIGHTDM_PROMPT_TYPE_SECRET) { - const QByteArray kgreeterpass = kgreeter->getPass(); - - g_autoptr(GError) gliberror = NULL; - if (!lightdm_greeter_respond(ldmgreeter, kgreeterpass.constData(), &gliberror)) { - kgreeter->statusBar()->showMessage(i18n("Failed to repsond: %1", gliberror->message)); - } - } -} - -void KGreeter::authenticationCompleteCb(LightDMGreeter *ldmgreeter, gpointer ldmptr) -{ - // qDebug() << Q_FUNC_INFO; - - KGreeter* kgreeter = static_cast(ldmptr); - Q_ASSERT(kgreeter); - - const QByteArray kgreetersession = kgreeter->getSession(); - - g_autoptr(GError) gliberror = NULL; - if (!lightdm_greeter_get_is_authenticated(ldmgreeter) || - !lightdm_greeter_start_session_sync(ldmgreeter, kgreetersession.constData(), &gliberror)) { - kgreeter->statusBar()->showMessage(i18n("Failed to authenticate or start session: %1", gliberror->message)); - g_main_loop_quit(glibloop); - } else { - g_main_loop_quit(glibloop); - qApp->quit(); - } -} - -void KGreeter::showMessageCb(LightDMGreeter *ldmgreeter, const gchar *ldmtext, LightDMMessageType ldmtype, gpointer ldmptr) -{ - // qDebug() << Q_FUNC_INFO; - - KGreeter* kgreeter = static_cast(ldmptr); - Q_ASSERT(kgreeter); - - kgreeter->statusBar()->showMessage(QString::fromUtf8(ldmtext)); -} - -void KGreeter::slotSuspend() -{ - g_autoptr(GError) gliberror = NULL; - if (!lightdm_suspend(&gliberror)) { - statusBar()->showMessage(i18n("Could not suspend: %1", gliberror->message)); - } -} - -void KGreeter::slotHibernate() -{ - g_autoptr(GError) gliberror = NULL; - if (!lightdm_hibernate(&gliberror)) { - statusBar()->showMessage(i18n("Could not hibernate: %1", gliberror->message)); - } -} - -void KGreeter::slotPoweroff() -{ - if (isUserLogged()) { - const int kmessageresult = KMessageBox::questionYesNo( - this, - i18n("There is user logged in, are you sure you want to poweroff?") - ); - if (kmessageresult != KMessageBox::Yes) { - return; - } - } - - g_autoptr(GError) gliberror = NULL; - if (!lightdm_shutdown(&gliberror)) { - statusBar()->showMessage(i18n("Could not poweroff: %1", gliberror->message)); - } -} - -void KGreeter::slotReboot() -{ - if (isUserLogged()) { - const int kmessageresult = KMessageBox::questionYesNo( - this, - i18n("There is user logged in, are you sure you want to reboot?") - ); - if (kmessageresult != KMessageBox::Yes) { - return; - } - } - - g_autoptr(GError) gliberror = NULL; - if (!lightdm_restart(&gliberror)) { - statusBar()->showMessage(i18n("Could not reboot: %1", gliberror->message)); - } -} - -void KGreeter::slotSession() -{ - const QAction* sessionaction = qobject_cast(sender()); - const QString sessionname = sessionaction->data().toString(); - - Q_FOREACH (QAction *sessionaction, m_sessionactions) { - sessionaction->setChecked(false); - if (sessionaction->data().toString() == sessionname) { - sessionaction->setChecked(true); - } - } -} - -void KGreeter::slotLayout() -{ - QString ldmlayoutname; - - const QAction* layoutaction = qobject_cast(sender()); - const QString layoutname = layoutaction->data().toString(); - GList *ldmlayouts = lightdm_get_layouts(); - for (GList *ldmitem = ldmlayouts; ldmitem; ldmitem = ldmitem->next) { - LightDMLayout *ldmlayout = static_cast(ldmitem->data); - Q_ASSERT(ldmlayout); - - ldmlayoutname = QString::fromUtf8(lightdm_layout_get_name(ldmlayout)); - if (layoutname == ldmlayoutname) { - lightdm_set_layout(ldmlayout); - break; - } - } - - if (ldmlayoutname.isEmpty()) { - Q_ASSERT(false); - return; - } - - Q_FOREACH (QAction *layoutaction, m_layoutactions) { - layoutaction->setChecked(false); - if (layoutaction->data().toString() == ldmlayoutname) { - layoutaction->setChecked(true); - } - } -} - -void KGreeter::slotLogin() -{ - const QByteArray kgreeterusername = getUser(); - const QByteArray kgreetersession = getSession(); - - // the trick is to save before lightdm_greeter_authenticate() - { - QSettings kgreeterstate("lightdm-kgreeter-state"); - kgreeterstate.setValue("state/lastsession", kgreetersession); - kgreeterstate.setValue("state/lastuser", kgreeterusername); - } - - g_autoptr(GError) gliberror = NULL; - lightdm_greeter_authenticate(m_ldmgreeter, kgreeterusername.constData(), &gliberror); - - g_main_loop_run(glibloop); -} - -void KGreeter::setUser(const QString &user) -{ - for (int i = 0; i < m_ui.usersbox->count(); i++) { - if (m_ui.usersbox->itemText(i) == user) { - m_ui.usersbox->setCurrentIndex(i); - break; - } - } - m_ui.useredit->setText(user); -} - -void KGreeter::setSession(const QString &session) -{ - Q_FOREACH (QAction *sessionaction, m_sessionactions) { - sessionaction->setChecked(false); - if (sessionaction->data().toString() == session) { - sessionaction->setChecked(true); - } - } -} - -bool KGreeter::isUserLogged() const -{ - GList *ldmusers = lightdm_user_list_get_users(lightdm_user_list_get_instance()); - for (GList *ldmitem = ldmusers; ldmitem; ldmitem = ldmitem->next) { - LightDMUser *ldmuser = static_cast(ldmitem->data); - Q_ASSERT(ldmuser); - - if (lightdm_user_get_logged_in(ldmuser)) { - return true; - } - } - return false; -} - -int main(int argc, char**argv) -{ - QApplication app(argc, argv); - - const QString kgreeterstyle = kgreetersettings.value("greeter/style").toString(); - if (!kgreeterstyle.isEmpty()) { - app.setStyle(kgreeterstyle); - } else { - app.setStyle(KStyle::defaultStyle()); - } - - const QString kgreetercolorscheme = kgreetersettings.value("greeter/colorscheme").toString(); - if (!kgreetercolorscheme.isEmpty()) { - KSharedConfigPtr kcolorschemeconfig = KSharedConfig::openConfig( - QString::fromLatin1("color-schemes/%1.colors").arg(kgreetercolorscheme), - KConfig::FullConfig, "data" - ); - app.setPalette(KGlobalSettings::createApplicationPalette(kcolorschemeconfig)); - } else { - app.setPalette(KGlobalSettings::createApplicationPalette()); - } - - glibloop = g_main_loop_new(NULL, false); - - KGreeter kgreeter; - kgreeter.showMaximized(); - - LightDMGreeter *ldmgreeter = kgreeter.getGreeter(); - - g_autoptr(GError) gliberror = NULL; - if (!lightdm_greeter_connect_to_daemon_sync(ldmgreeter, &gliberror)) { - ::fprintf(stderr, "%s: %s\n", "Could not connect to daemon", gliberror->message); - return 1; - } - - return app.exec(); -} - -#include "kgreeter.moc" diff --git a/kgreeter/kgreeter.ui b/kgreeter/kgreeter.ui deleted file mode 100644 index 8ce67bb2..00000000 --- a/kgreeter/kgreeter.ui +++ /dev/null @@ -1,227 +0,0 @@ - - - KGreeter - - - - 0 - 0 - 511 - 417 - - - - KGreeter - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - 0 - 0 - - - - Login - - - true - - - true - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::AlignCenter - - - true - - - - - - - - Password: - - - - - - - - - - User: - - - - - - - QLineEdit::Password - - - - - - - - - - User: - - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 0 - 0 - 511 - 21 - - - - - System - - - - - - - - - Keyboard - - - - - Sessions - - - - - - - - - - Suspend - - - - - Hibernate - - - - - Poweroff - - - - - Reboot - - - - - - diff --git a/kgreeter/lightdm-kgreeter-greeter.conf b/kgreeter/lightdm-kgreeter-greeter.conf deleted file mode 100644 index 6d937ddd..00000000 --- a/kgreeter/lightdm-kgreeter-greeter.conf +++ /dev/null @@ -1,8 +0,0 @@ -# LightDM KGreeter Configuration -# Available configuration options listed below. -# -[greeter] -#style= -#colorscheme= -#background= -#rectangle= diff --git a/kgreeter/lightdm-kgreeter-greeter.desktop b/kgreeter/lightdm-kgreeter-greeter.desktop deleted file mode 100644 index ee4fa330..00000000 --- a/kgreeter/lightdm-kgreeter-greeter.desktop +++ /dev/null @@ -1,6 +0,0 @@ -[Desktop Entry] -Name=LightDM KGreeter Greeter -Comment=This runs the KGreeter greeter, it should only be run from LightDM -Exec=lightdm-kgreeter-greeter -Type=Application -X-Ubuntu-Gettext-Domain=lightdm