diff options
Diffstat (limited to 'ksmserver/shutdowndlg.h')
-rw-r--r-- | ksmserver/shutdowndlg.h | 270 |
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 |