/***************************************************************** ksmserver - the KDE session management server Copyright (C) 2000 Matthias Ettrich <ettrich@kde.org> ******************************************************************/ #ifndef SHUTDOWNDLG_H #define SHUTDOWNDLG_H #include <tqpixmap.h> #include <tqimage.h> #include <tqdatetime.h> #include <tqdialog.h> #include <kpushbutton.h> #include <tqpushbutton.h> #include <tqframe.h> #include <kguiitem.h> #include <tqtoolbutton.h> #include <ksharedpixmap.h> class TQPushButton; class TQVButtonGroup; class TQPopupMenu; class TQTimer; class TQPainter; class TQString; class KAction; #include "timed.h" #include <kapplication.h> #include <kpixmapio.h> #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> // 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; } protected: ~KSMShutdownIPFeedback(); private slots: void slotPaintEffect(); private: static KSMShutdownIPFeedback * s_pSelf; KSMShutdownIPFeedback(); int m_currentY; TQPixmap m_root; void fadeBack( void ); void showNow( void ); TQString pixmapName(int desk); void enableExports(); int m_timeout; }; // The confirmation dialog class KSMShutdownDlg : public TQDialog { Q_OBJECT public: static bool confirmShutdown( bool maysd, KApplication::ShutdownType& sdtype, TQString& bopt ); public slots: void slotLogout(); void slotHalt(); void slotReboot(); void slotReboot(int); void slotSuspend(); void slotHibernate(); protected: ~KSMShutdownDlg(); private: KSMShutdownDlg( TQWidget* parent, bool maysd, KApplication::ShutdownType sdtype ); KApplication::ShutdownType m_shutdownType; TQString m_bootOption; TQPopupMenu *targets; TQStringList rebootOptions; LibHalContext* m_halCtx; DBusConnection *m_dbusConn; bool m_lockOnResume; }; // The shutdown-in-progress dialog class KSMShutdownIPDlg : public TQDialog { Q_OBJECT public: static void showShutdownIP(); protected: ~KSMShutdownIPDlg(); protected slots: void closeEvent(TQCloseEvent *e); private: KSMShutdownIPDlg( TQWidget* parent ); }; 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( KApplication::ShutdownType sdtype, const TQString &bootOption, int confirmDelay ); static bool showTicker( KApplication::ShutdownType sdtype, const TQString &bootOption, int confirmDelay ); protected slots: void updateText(); private: TQString m_template; int m_remaining; }; #endif