| 1 | /////////////////////////////////////////////////////////////////////////////// |
| 2 | // Name: wx/power.h |
| 3 | // Purpose: functions and classes for system power management |
| 4 | // Author: Vadim Zeitlin |
| 5 | // Modified by: |
| 6 | // Created: 2006-05-27 |
| 7 | // RCS-ID: $Id$ |
| 8 | // Copyright: (c) 2006 Vadim Zeitlin <vadim@wxwindows.org> |
| 9 | // Licence: wxWindows licence |
| 10 | /////////////////////////////////////////////////////////////////////////////// |
| 11 | |
| 12 | #ifndef _WX_POWER_H_ |
| 13 | #define _WX_POWER_H_ |
| 14 | |
| 15 | #include "wx/event.h" |
| 16 | |
| 17 | // ---------------------------------------------------------------------------- |
| 18 | // power management constants |
| 19 | // ---------------------------------------------------------------------------- |
| 20 | |
| 21 | enum wxPowerType |
| 22 | { |
| 23 | wxPOWER_SOCKET, |
| 24 | wxPOWER_BATTERY, |
| 25 | wxPOWER_UNKNOWN |
| 26 | }; |
| 27 | |
| 28 | enum wxBatteryState |
| 29 | { |
| 30 | wxBATTERY_NORMAL_STATE, // system is fully usable |
| 31 | wxBATTERY_LOW_STATE, // start to worry |
| 32 | wxBATTERY_CRITICAL_STATE, // save quickly |
| 33 | wxBATTERY_SHUTDOWN_STATE, // too late |
| 34 | wxBATTERY_UNKNOWN_STATE |
| 35 | }; |
| 36 | |
| 37 | // ---------------------------------------------------------------------------- |
| 38 | // wxPowerEvent is generated when the system online status changes |
| 39 | // ---------------------------------------------------------------------------- |
| 40 | |
| 41 | // currently the power events are only available under Windows, to avoid |
| 42 | // compiling in the code for handling them which is never going to be invoked |
| 43 | // under the other platforms, we define wxHAS_POWER_EVENTS symbol if this event |
| 44 | // is available, it should be used to guard all code using wxPowerEvent |
| 45 | #ifdef __WXMSW__ |
| 46 | |
| 47 | #define wxHAS_POWER_EVENTS |
| 48 | |
| 49 | class WXDLLIMPEXP_BASE wxPowerEvent : public wxEvent |
| 50 | { |
| 51 | public: |
| 52 | wxPowerEvent(wxEventType evtType) : wxEvent(wxID_NONE, evtType) |
| 53 | { |
| 54 | m_veto = false; |
| 55 | } |
| 56 | |
| 57 | // Veto the operation (only makes sense with EVT_POWER_SUSPENDING) |
| 58 | void Veto() { m_veto = true; } |
| 59 | |
| 60 | bool IsVetoed() const { return m_veto; } |
| 61 | |
| 62 | |
| 63 | // default copy ctor, assignment operator and dtor are ok |
| 64 | |
| 65 | virtual wxEvent *Clone() const { return new wxPowerEvent(*this); } |
| 66 | |
| 67 | private: |
| 68 | bool m_veto; |
| 69 | |
| 70 | DECLARE_ABSTRACT_CLASS(wxPowerEvent) |
| 71 | }; |
| 72 | |
| 73 | extern WXDLLIMPEXP_BASE const wxEventType wxEVT_POWER_SUSPENDING; |
| 74 | extern WXDLLIMPEXP_BASE const wxEventType wxEVT_POWER_SUSPENDED; |
| 75 | extern WXDLLIMPEXP_BASE const wxEventType wxEVT_POWER_SUSPEND_CANCEL; |
| 76 | extern WXDLLIMPEXP_BASE const wxEventType wxEVT_POWER_RESUME; |
| 77 | |
| 78 | typedef void (wxEvtHandler::*wxPowerEventFunction)(wxPowerEvent&); |
| 79 | |
| 80 | #define wxPowerEventHandler(func) \ |
| 81 | (wxObjectEventFunction)(wxEventFunction) \ |
| 82 | wxStaticCastEvent(wxPowerEventFunction, &func) |
| 83 | |
| 84 | #define EVT_POWER_SUSPENDING(func) \ |
| 85 | wx__DECLARE_EVT0(wxEVT_POWER_SUSPENDING, wxPowerEventHandler(func)) |
| 86 | #define EVT_POWER_SUSPENDED(func) \ |
| 87 | wx__DECLARE_EVT0(wxEVT_POWER_SUSPENDED, wxPowerEventHandler(func)) |
| 88 | #define EVT_POWER_SUSPEND_CANCEL(func) \ |
| 89 | wx__DECLARE_EVT0(wxEVT_POWER_SUSPEND_CANCEL, wxPowerEventHandler(func)) |
| 90 | #define EVT_POWER_RESUME(func) \ |
| 91 | wx__DECLARE_EVT0(wxEVT_POWER_RESUME, wxPowerEventHandler(func)) |
| 92 | |
| 93 | #else // no support for power events |
| 94 | #undef wxHAS_POWER_EVENTS |
| 95 | #endif // support for power events/no support |
| 96 | |
| 97 | // ---------------------------------------------------------------------------- |
| 98 | // power management functions |
| 99 | // ---------------------------------------------------------------------------- |
| 100 | |
| 101 | // return the current system power state: online or offline |
| 102 | WXDLLIMPEXP_BASE wxPowerType wxGetPowerType(); |
| 103 | |
| 104 | // return approximate battery state |
| 105 | WXDLLIMPEXP_BASE wxBatteryState wxGetBatteryState(); |
| 106 | |
| 107 | #endif // _WX_POWER_H_ |