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: power.h 48811 2007-09-19 23:11:28Z RD $ 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: wxPowerEvent(wxEventType evtType)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) Veto()58 void Veto() { m_veto = true; } 59 IsVetoed()60 bool IsVetoed() const { return m_veto; } 61 62 63 // default copy ctor, assignment operator and dtor are ok 64 Clone()65 virtual wxEvent *Clone() const { return new wxPowerEvent(*this); } 66 67 private: 68 bool m_veto; 69 70 #if wxABI_VERSION >= 20806 71 DECLARE_ABSTRACT_CLASS(wxPowerEvent) 72 #endif 73 }; 74 75 BEGIN_DECLARE_EVENT_TYPES() 76 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_BASE, wxEVT_POWER_SUSPENDING, 406) 77 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_BASE, wxEVT_POWER_SUSPENDED, 407) 78 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_BASE, wxEVT_POWER_SUSPEND_CANCEL, 408) 79 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_BASE, wxEVT_POWER_RESUME, 444) 80 END_DECLARE_EVENT_TYPES() 81 82 typedef void (wxEvtHandler::*wxPowerEventFunction)(wxPowerEvent&); 83 84 #define wxPowerEventHandler(func) \ 85 (wxObjectEventFunction)(wxEventFunction) \ 86 wxStaticCastEvent(wxPowerEventFunction, &func) 87 88 #define EVT_POWER_SUSPENDING(func) \ 89 wx__DECLARE_EVT0(wxEVT_POWER_SUSPENDING, wxPowerEventHandler(func)) 90 #define EVT_POWER_SUSPENDED(func) \ 91 wx__DECLARE_EVT0(wxEVT_POWER_SUSPENDED, wxPowerEventHandler(func)) 92 #define EVT_POWER_SUSPEND_CANCEL(func) \ 93 wx__DECLARE_EVT0(wxEVT_POWER_SUSPEND_CANCEL, wxPowerEventHandler(func)) 94 #define EVT_POWER_RESUME(func) \ 95 wx__DECLARE_EVT0(wxEVT_POWER_RESUME, wxPowerEventHandler(func)) 96 97 #else // no support for power events 98 #undef wxHAS_POWER_EVENTS 99 #endif // support for power events/no support 100 101 // ---------------------------------------------------------------------------- 102 // power management functions 103 // ---------------------------------------------------------------------------- 104 105 // return the current system power state: online or offline 106 WXDLLIMPEXP_BASE wxPowerType wxGetPowerType(); 107 108 // return approximate battery state 109 WXDLLIMPEXP_BASE wxBatteryState wxGetBatteryState(); 110 111 #endif // _WX_POWER_H_ 112