/* mmainwindow.h - The main window Copyright (C) 2003 Konrad Twardowski This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef __MMAINWINDOW_H__ #define __MMAINWINDOW_H__ #include "actions.h" #include "kshutdowniface.h" #include #include class AppObserver; class TQDateTimeEdit; class TQLabel; class TDEGlobalAccel; class KPushButton; #define ks_main MMainWindow::getInstance() /** @short The main window. */ class MMainWindow: public TDEMainWindow, virtual public KShutdownIface { TQ_OBJECT public: /** * Timeout options. */ enum DelayType { DelayType_Now = 0, /**< Immediate action (no delay). */ DelayType_TimeFromNow = 1, /**< Time from now in HH:MM format. */ DelayType_DateTime = 2, /**< Absolute date and time. */ DelayType_OnAppExit = 3 /**< When desired application exit. */ }; /** Constructor. */ MMainWindow(); /** Destructor. */ virtual ~MMainWindow(); /** Sets current action to @p action. */ void setAction(const Action::Type action); /** Sets delay type to @p value. */ void setDelayType(const DelayType value); /** Sets editor time to @p time. */ void setTime(const TQTime &time); /** Returns the main window widget. Accessed via the @c ks_main macro. */ inline static MMainWindow *getInstance() { return _instance; } /** Sets editor date to @p date. */ void setDate(const TQDate &date); /** * Activates the selected action. * @param confirmation @c false - no confirmation */ void start(const bool confirmation = true); // actions inline TDEAction *cancelAction() const { return _cancelAction; } inline TDEAction *checkSystemConfigurationAction() const { return _checkSystemConfigurationAction; } inline TDEAction *configureKShutDownAction() const { return _configureKShutDownAction; } inline TDEAction *lockScreenAction() const { return _lockScreenAction; } inline TDEAction *logoutAction() const { return _logoutAction; } inline TDEAction *rebootAction() const { return _rebootAction; } inline TDEAction *shutDownAction() const { return _shutDownAction; } inline TDEAction *statisticsAction() const { return _statisticsAction; } // DCOP: // general: virtual void cancel(); virtual bool shutDown(); virtual bool shutdown(); virtual bool reboot(); virtual bool lockScreen(); virtual bool logout(); // misc: virtual void configure(); virtual TQString getStatusInfo(); virtual void makeInvisible(); virtual void makeVisible(); virtual void setTestMode(bool yes); private: bool _showMinimizeInfo; // actions TDEAction *_cancelAction, *_checkSystemConfigurationAction, *_configureKShutDownAction, *_lockScreenAction, *_logoutAction, *_rebootAction, *_shutDownAction, *_startAction, *_statisticsAction; TDEActionCollection *ac_shutDown; TDEGlobalAccel *_globalAccel; int _oldSec; AppObserver *_appObserver; TQDateTimeEdit *_dateTimeEdit; KPushButton *b_startStop; // points to the main window widget (this) static MMainWindow *_instance; TQComboBox *cb_actions, *cb_delayTypes; TQDateTime dt_end, // end date/time dt_start; // start date/time TQLabel *l_statusLine; TQTimer *_timer; // timeout timer DelayType _delayType; TQString getTimeInfo(); void initMainMenu(); void initActions(); TQWidget *initWidgets(); /** * Sets window and system tray captions. * @param remainingTime A remaining time * @param selectedTime A selected time */ void setCaptions(const TQString &remainingTime = TQString::null, const TQString &selectedTime = TQString::null); void setWidgetsEnabled(const bool yes); /** * Updates time infos (e.g. window captions). * Displays time to the final shut down, and the selected action name. */ void updateTimeInfo(const int secs); private slots: /** * This signal is emitted when the application is about to quit, or when the * user shuts down the entire desktop session. */ void slotAboutToQuit(); /** * Checks the time, and after timeout executes active action. */ void slotCheckTime(); /** * Called when a new item has been selected in the combo box. * @param index A new item index */ void slotDelayTypeChange(int index); void slotConfigureGlobalShortcuts(); void slotConfigureKShutDown(); void slotConfigureNotifications(); void slotConfigureShortcuts(); void slotActionChange(int index); void slotCheckSystemConfig(); void slotStats(); /** * Updates "Selected time:" info. * @see calcSelectedTime */ void slotUpdateTimeInfo(); public slots: /** Cancels an active action. */ void slotCancel(); /** Activates the selected action. */ void slotStart(); /** Quits the application. */ void slotQuit(); protected: /** Closes or minizes the main window. */ virtual bool queryClose(); /** * Invoked at application exit. * @return @c true */ virtual bool queryExit(); }; #endif // __MMAINWINDOW_H__