mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-23 18:32:51 +00:00
kgreeter: ask for confirmation when user is logged in on poweroff/reboot
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
222670b71c
commit
a21773f440
1 changed files with 37 additions and 0 deletions
|
@ -3,6 +3,7 @@
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
#include <KMessageBox>
|
||||||
#include <KIcon>
|
#include <KIcon>
|
||||||
#include <KStyle>
|
#include <KStyle>
|
||||||
#include <KGlobalSettings>
|
#include <KGlobalSettings>
|
||||||
|
@ -51,6 +52,8 @@ private Q_SLOTS:
|
||||||
void slotLogin();
|
void slotLogin();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
bool isUserLogged() const;
|
||||||
|
|
||||||
Ui::KGreeter m_ui;
|
Ui::KGreeter m_ui;
|
||||||
LightDMGreeter *m_ldmgreeter;
|
LightDMGreeter *m_ldmgreeter;
|
||||||
QImage m_background;
|
QImage m_background;
|
||||||
|
@ -266,6 +269,16 @@ void KGreeter::slotHibernate()
|
||||||
|
|
||||||
void KGreeter::slotPoweroff()
|
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;
|
g_autoptr(GError) gliberror = NULL;
|
||||||
if (!lightdm_shutdown(&gliberror)) {
|
if (!lightdm_shutdown(&gliberror)) {
|
||||||
statusBar()->showMessage(i18n("Could not poweroff: %1", gliberror->message));
|
statusBar()->showMessage(i18n("Could not poweroff: %1", gliberror->message));
|
||||||
|
@ -274,6 +287,16 @@ void KGreeter::slotPoweroff()
|
||||||
|
|
||||||
void KGreeter::slotReboot()
|
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;
|
g_autoptr(GError) gliberror = NULL;
|
||||||
if (!lightdm_restart(&gliberror)) {
|
if (!lightdm_restart(&gliberror)) {
|
||||||
statusBar()->showMessage(i18n("Could not reboot: %1", gliberror->message));
|
statusBar()->showMessage(i18n("Could not reboot: %1", gliberror->message));
|
||||||
|
@ -305,6 +328,20 @@ void KGreeter::slotLogin()
|
||||||
g_main_loop_run(glibloop);
|
g_main_loop_run(glibloop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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<LightDMUser*>(ldmitem->data);
|
||||||
|
Q_ASSERT(ldmuser);
|
||||||
|
|
||||||
|
if (lightdm_user_get_logged_in(ldmuser)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char**argv)
|
int main(int argc, char**argv)
|
||||||
{
|
{
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
|
|
Loading…
Add table
Reference in a new issue