summaryrefslogtreecommitdiffstats
path: root/ksmserver/shutdowndlg.h
diff options
context:
space:
mode:
Diffstat (limited to 'ksmserver/shutdowndlg.h')
-rw-r--r--ksmserver/shutdowndlg.h270
1 files changed, 270 insertions, 0 deletions
diff --git a/ksmserver/shutdowndlg.h b/ksmserver/shutdowndlg.h
new file mode 100644
index 000000000..a3864e616
--- /dev/null
+++ b/ksmserver/shutdowndlg.h
@@ -0,0 +1,270 @@
+/*****************************************************************
+ksmserver - the KDE session management server
+
+Copyright (C) 2012 Serghei Amelian <[email protected]>
+Copyright (C) 2000 Matthias Ettrich <[email protected]>
+******************************************************************/
+
+#ifndef SHUTDOWNDLG_H
+#define SHUTDOWNDLG_H
+
+#include <tqpixmap.h>
+#include <tqimage.h>
+#include <tqdatetime.h>
+#include <kdialog.h>
+#include <kpushbutton.h>
+#include <tqpushbutton.h>
+#include <tqframe.h>
+#include <kguiitem.h>
+#include <tqtoolbutton.h>
+#include <krootpixmap.h>
+#include <ntqprogressbar.h>
+
+class TQPushButton;
+class TQVButtonGroup;
+class TQPopupMenu;
+class TQTimer;
+class TQPainter;
+class TQString;
+class TDEAction;
+
+#include "timed.h"
+#include <tdeapplication.h>
+#include <kpixmapio.h>
+
+#include <config.h>
+
+#ifdef COMPILE_HALBACKEND
+ #ifndef NO_QT3_DBUS_SUPPORT
+ /* We acknowledge the the dbus API is unstable */
+ #define DBUS_API_SUBJECT_TO_CHANGE
+ #include <dbus/connection.h>
+ #endif // NO_QT3_DBUS_SUPPORT
+
+ #include <hal/libhal.h>
+#endif // COMPILE_HALBACKEND
+
+// The (singleton) widget that makes/fades the desktop gray.
+class KSMShutdownFeedback : public TQWidget
+{
+ Q_OBJECT
+
+public:
+ static void start() { s_pSelf = new KSMShutdownFeedback(); }
+ static void stop() { if ( s_pSelf != 0L ) s_pSelf->fadeBack(); delete s_pSelf; s_pSelf = 0L; }
+ static KSMShutdownFeedback * self() { return s_pSelf; }
+
+protected:
+ ~KSMShutdownFeedback() {}
+
+private slots:
+ void slotPaintEffect();
+
+private:
+ static KSMShutdownFeedback * s_pSelf;
+ KSMShutdownFeedback();
+ int m_currentY;
+ TQPixmap m_root;
+ void fadeBack( void );
+ float m_grayOpacity;
+ float m_compensation;
+ bool m_fadeBackwards;
+ bool m_readDelayComplete;
+ TQImage m_unfadedImage;
+ TQImage m_grayImage;
+ TQTime m_fadeTime;
+ int m_rowsDone;
+ KPixmapIO m_pmio;
+ bool m_greyImageCreated;
+
+};
+
+// The (singleton) widget that shows either pretty pictures or a black screen during logout
+class KSMShutdownIPFeedback : public TQWidget
+{
+ Q_OBJECT
+
+public:
+ static void start() { s_pSelf = new KSMShutdownIPFeedback(); }
+ static void showit() { if ( s_pSelf != 0L ) s_pSelf->showNow(); }
+ static void stop() { if ( s_pSelf != 0L ) s_pSelf->fadeBack(); delete s_pSelf; s_pSelf = 0L; }
+ static KSMShutdownIPFeedback * self() { return s_pSelf; }
+ static bool ispainted() { if ( s_pSelf != 0L ) return s_pSelf->m_isPainted; else return false; }
+
+protected:
+ ~KSMShutdownIPFeedback();
+ virtual void resizeEvent(TQResizeEvent* re);
+
+public slots:
+ void slotPaintEffect();
+ void slotSetBackgroundPixmap(const TQPixmap &);
+
+private:
+ /**
+ * Asks KDesktop to export the desktop background as a TDESharedPixmap.
+ * This method uses DCOP to call KBackgroundIface/setExport(int).
+ */
+ void enableExports();
+
+private:
+ static KSMShutdownIPFeedback * s_pSelf;
+ KSMShutdownIPFeedback();
+ int m_currentY;
+ TQPixmap m_root;
+ void fadeBack( void );
+ void showNow( void );
+ int m_timeout;
+ bool m_isPainted;
+ bool m_paintedFromSharedRootPixmap;
+ KRootPixmap* m_sharedRootPixmap;
+ TQPixmap m_rootPixmap;
+ int mPixmapTimeout;
+ TQRect m_screenGeometry;
+};
+
+// The confirmation dialog
+class KSMShutdownDlg : public TQDialog
+{
+ Q_OBJECT
+
+public:
+ static bool confirmShutdown( bool maysd, bool mayrb, TDEApplication::ShutdownType& sdtype, TQString& bopt, int* selection=0 );
+
+public slots:
+ void slotLogout();
+ void slotHalt();
+ void slotReboot();
+ void slotReboot(int);
+ void slotSuspend();
+ void slotHibernate();
+ void slotFreeze();
+
+protected:
+ ~KSMShutdownDlg();
+
+private:
+ KSMShutdownDlg( TQWidget* parent, bool maysd, bool mayrb, TDEApplication::ShutdownType sdtype, int* selection=0 );
+ TDEApplication::ShutdownType m_shutdownType;
+ TQString m_bootOption;
+ TQPopupMenu *targets;
+ TQStringList rebootOptions;
+#ifdef COMPILE_HALBACKEND
+ LibHalContext* m_halCtx;
+ DBusConnection *m_dbusConn;
+#endif
+ bool m_lockOnResume;
+ int* m_selection;
+};
+
+// The shutdown-in-progress dialog
+class KSMShutdownIPDlg : public KSMModalDialog
+{
+ Q_OBJECT
+
+public:
+ static TQWidget* showShutdownIP();
+
+ void showNotificationActionButtons();
+ void hideNotificationActionButtons();
+ void setNotificationActionButtonsSkipText(TQString text);
+ void setProgressBarTotalSteps(int total_steps);
+ void setProgressBarProgress(int step);
+
+signals:
+ void abortLogoutClicked();
+ void skipNotificationClicked();
+
+protected:
+ ~KSMShutdownIPDlg();
+
+private:
+ KSMShutdownIPDlg( TQWidget* parent );
+
+ TQProgressBar *m_progressbar;
+};
+
+class KSMDelayedPushButton : public KPushButton
+{
+ Q_OBJECT
+
+public:
+
+ KSMDelayedPushButton( const KGuiItem &item, TQWidget *parent, const char *name = 0 );
+ void setPopup( TQPopupMenu *pop);
+
+private slots:
+ void slotTimeout();
+ void slotPressed();
+ void slotReleased();
+
+private:
+ TQPopupMenu *pop;
+ TQTimer *popt;
+};
+
+class KSMPushButton : public KPushButton
+{
+ Q_OBJECT
+
+public:
+
+ KSMPushButton( const KGuiItem &item, TQWidget *parent, const char *name = 0 );
+
+protected:
+ virtual void keyPressEvent(TQKeyEvent*e);
+ virtual void keyReleaseEvent(TQKeyEvent*e);
+
+private:
+
+ bool m_pressed;
+
+};
+
+
+
+class FlatButton : public TQToolButton
+{
+ Q_OBJECT
+
+ public:
+
+ FlatButton( TQWidget *parent = 0, const char *name = 0 );
+ ~FlatButton();
+
+ protected:
+ virtual void keyPressEvent(TQKeyEvent*e);
+ virtual void keyReleaseEvent(TQKeyEvent*e);
+
+ private slots:
+
+ private:
+ void init();
+
+ bool m_pressed;
+ TQString m_text;
+ TQPixmap m_pixmap;
+
+};
+
+
+
+
+class TQLabel;
+
+class KSMDelayedMessageBox : public TimedLogoutDlg
+{
+ Q_OBJECT
+
+public:
+ KSMDelayedMessageBox( TDEApplication::ShutdownType sdtype, const TQString &bootOption, int confirmDelay );
+ static bool showTicker( TDEApplication::ShutdownType sdtype, const TQString &bootOption, int confirmDelay );
+
+protected slots:
+ void updateText();
+
+private:
+ TQString m_template;
+ int m_remaining;
+};
+
+#endif