~ubuntu-branches/ubuntu/lucid/kdebase/lucid

« back to all changes in this revision

Viewing changes to kdesktop/lock/autologout.cc

  • Committer: Bazaar Package Importer
  • Author(s): Ana Beatriz Guerrero Lopez
  • Date: 2009-04-05 05:22:13 UTC
  • mfrom: (0.4.2 experimental) (0.2.2 upstream)
  • mto: This revision was merged to the branch mainline in revision 235.
  • Revision ID: james.westby@ubuntu.com-20090405052213-39thr4l6p2ss07uj
Tags: 4:4.2.2-1
* New upstream release:
  - khtml fixes. (Closes: #290285, #359680)
  - Default konsole sessions can be deleted. (Closes: #286342)
  - Tag widget uses standard application palette. (Closes: #444800)
  - ... and surely many more but we have lost track...

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
//===========================================================================
2
 
//
3
 
// This file is part of the KDE project
4
 
//
5
 
// Copyright (c) 2004 Chris Howells <howells@kde.org>
6
 
 
7
 
#include "lockprocess.h"
8
 
#include "autologout.h"
9
 
 
10
 
#include <kapplication.h>
11
 
#include <klocale.h>
12
 
#include <kglobalsettings.h>
13
 
#include <kconfig.h>
14
 
#include <kiconloader.h>
15
 
#include <kdebug.h>
16
 
#include <dcopref.h>
17
 
#include <kmessagebox.h>
18
 
#include <kdialog.h>
19
 
 
20
 
#include <qlayout.h>
21
 
#include <qmessagebox.h>
22
 
#include <qlabel.h>
23
 
#include <qstyle.h>
24
 
#include <qapplication.h>
25
 
#include <qdialog.h>
26
 
#include <qprogressbar.h>
27
 
 
28
 
#define COUNTDOWN 30 
29
 
 
30
 
AutoLogout::AutoLogout(LockProcess *parent) : QDialog(parent, "password dialog", true, WX11BypassWM)
31
 
{
32
 
    frame = new QFrame(this);
33
 
    frame->setFrameStyle(QFrame::Panel | QFrame::Raised);
34
 
    frame->setLineWidth(2);
35
 
 
36
 
    QLabel *pixLabel = new QLabel( frame, "pixlabel" );
37
 
    pixLabel->setPixmap(DesktopIcon("exit"));
38
 
 
39
 
    QLabel *greetLabel = new QLabel(i18n("<nobr><qt><b>Automatic Log Out</b></qt><nobr>"), frame);
40
 
    QLabel *infoLabel = new QLabel(i18n("<qt>To prevent being logged out, resume using this session by moving the mouse or pressing a key.</qt>"), frame);
41
 
 
42
 
    mStatusLabel = new QLabel("<b> </b>", frame);
43
 
    mStatusLabel->setAlignment(QLabel::AlignCenter);
44
 
 
45
 
    QLabel *mProgressLabel = new QLabel("Time Remaining:", frame);
46
 
    mProgressRemaining = new QProgressBar(frame);
47
 
    mProgressRemaining->setPercentageVisible(false);
48
 
 
49
 
    QVBoxLayout *unlockDialogLayout = new QVBoxLayout( this );
50
 
    unlockDialogLayout->addWidget( frame );
51
 
 
52
 
    frameLayout = new QGridLayout(frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint());
53
 
    frameLayout->addMultiCellWidget(pixLabel, 0, 2, 0, 0, Qt::AlignCenter | Qt::AlignTop);
54
 
    frameLayout->addWidget(greetLabel, 0, 1);
55
 
    frameLayout->addWidget(mStatusLabel, 1, 1);
56
 
    frameLayout->addWidget(infoLabel, 2, 1);
57
 
    frameLayout->addWidget(mProgressLabel, 3, 1);
58
 
    frameLayout->addWidget(mProgressRemaining, 4, 1);
59
 
 
60
 
    // get the time remaining in seconds for the status label
61
 
    mRemaining = COUNTDOWN * 25;
62
 
 
63
 
    mProgressRemaining->setTotalSteps(COUNTDOWN * 25);
64
 
 
65
 
    updateInfo(mRemaining);
66
 
 
67
 
    mCountdownTimerId = startTimer(1000/25);
68
 
 
69
 
    connect(qApp, SIGNAL(activity()), SLOT(slotActivity()));
70
 
}
71
 
 
72
 
AutoLogout::~AutoLogout()
73
 
{
74
 
    hide();
75
 
}
76
 
 
77
 
void AutoLogout::updateInfo(int timeout)
78
 
{
79
 
    mStatusLabel->setText(i18n("<nobr><qt>You will be automatically logged out in 1 second</qt></nobr>",
80
 
                               "<nobr><qt>You will be automatically logged out in %n seconds</qt></nobr>",
81
 
                               timeout / 25) );
82
 
    mProgressRemaining->setProgress(timeout);
83
 
}
84
 
 
85
 
void AutoLogout::timerEvent(QTimerEvent *ev)
86
 
{
87
 
    if (ev->timerId() == mCountdownTimerId)
88
 
    {
89
 
        updateInfo(mRemaining);
90
 
        --mRemaining;
91
 
        if (mRemaining < 0)
92
 
        {
93
 
                logout();
94
 
        }
95
 
    }
96
 
}
97
 
 
98
 
void AutoLogout::slotActivity()
99
 
{
100
 
    accept();
101
 
}
102
 
 
103
 
void AutoLogout::logout()
104
 
{
105
 
        killTimers();
106
 
        DCOPRef("ksmserver","ksmserver").send("logout", 0, 0, 0);
107
 
}
108
 
 
109
 
void AutoLogout::show()
110
 
{
111
 
    QDialog::show();
112
 
    QApplication::flushX();
113
 
}
114
 
 
115
 
#include "autologout.moc"