X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/355debca0650f70aa8ed4803b2ebc45541e03d9f..34326da778583ca8eab95f2e41738da2852a5a16:/samples/power/power.cpp diff --git a/samples/power/power.cpp b/samples/power/power.cpp index 04b9ab3c63..e7ad00d397 100644 --- a/samples/power/power.cpp +++ b/samples/power/power.cpp @@ -25,6 +25,7 @@ #ifndef WX_PRECOMP #include "wx/app.h" #include "wx/frame.h" + #include "wx/log.h" #endif #include "wx/textctrl.h" @@ -32,7 +33,7 @@ #include "wx/power.h" -#if !defined(__WXMSW__) && !defined(__WXPM__) +#ifndef wxHAS_IMAGES_IN_RESOURCES #include "../sample.xpm" #endif @@ -44,16 +45,20 @@ class MyFrame : public wxFrame { public: MyFrame() - : wxFrame(NULL, wxID_ANY, _T("wxWidgets Power Management Sample"), + : wxFrame(NULL, wxID_ANY, wxT("wxWidgets Power Management Sample"), wxDefaultPosition, wxSize(500, 200)) { - wxTextCtrl *text = new wxTextCtrl(this, wxID_ANY, _T(""), + wxTextCtrl *text = new wxTextCtrl(this, wxID_ANY, wxT(""), wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE | wxTE_READONLY); m_logOld = wxLog::SetActiveTarget(new wxLogTextCtrl(text)); + CreateStatusBar(); + SetIcon(wxICON(sample)); + UpdatePowerSettings(wxPOWER_UNKNOWN, wxBATTERY_UNKNOWN_STATE); + Show(); } @@ -63,32 +68,103 @@ public: } private: + void OnIdle(wxIdleEvent& WXUNUSED(event)) + { + const wxPowerType powerType = wxGetPowerType(); + const wxBatteryState batteryState = wxGetBatteryState(); + if ( powerType != m_powerType || batteryState != m_batteryState ) + { + UpdatePowerSettings(powerType, batteryState); + } + } + +#ifdef wxHAS_POWER_EVENTS void OnSuspending(wxPowerEvent& event) { - wxLogMessage(_T("System suspend starting...")); - if ( wxMessageBox(_T("Veto suspend?"), _T("Please answer"), + wxLogMessage(wxT("System suspend starting...")); + if ( wxMessageBox(wxT("Veto suspend?"), wxT("Please answer"), wxYES_NO, this) == wxYES ) { event.Veto(); - wxLogMessage(_T("Vetoed suspend.")); + wxLogMessage(wxT("Vetoed suspend.")); } } void OnSuspended(wxPowerEvent& WXUNUSED(event)) { - wxLogMessage(_T("System is going to suspend.")); + wxLogMessage(wxT("System is going to suspend.")); } void OnSuspendCancel(wxPowerEvent& WXUNUSED(event)) { - wxLogMessage(_T("System suspend was cancelled.")); + wxLogMessage(wxT("System suspend was cancelled.")); } void OnResume(wxPowerEvent& WXUNUSED(event)) { - wxLogMessage(_T("System resumed from suspend.")); + wxLogMessage(wxT("System resumed from suspend.")); + } +#endif // wxHAS_POWER_EVENTS + + + void UpdatePowerSettings(wxPowerType powerType, wxBatteryState batteryState) + { + wxString powerStr; + switch ( m_powerType = powerType ) + { + case wxPOWER_SOCKET: + powerStr = wxT("wall"); + break; + + case wxPOWER_BATTERY: + powerStr = wxT("battery"); + break; + + default: + wxFAIL_MSG(wxT("unknown wxPowerType value")); + // fall through + + case wxPOWER_UNKNOWN: + powerStr = wxT("psychic"); + break; + } + + wxString batteryStr; + switch ( m_batteryState = batteryState ) + { + case wxBATTERY_NORMAL_STATE: + batteryStr = wxT("charged"); + break; + + case wxBATTERY_LOW_STATE: + batteryStr = wxT("low"); + break; + + case wxBATTERY_CRITICAL_STATE: + batteryStr = wxT("critical"); + break; + + case wxBATTERY_SHUTDOWN_STATE: + batteryStr = wxT("empty"); + break; + + default: + wxFAIL_MSG(wxT("unknown wxBatteryState value")); + // fall through + + case wxBATTERY_UNKNOWN_STATE: + batteryStr = wxT("unknown"); + break; + } + + SetStatusText(wxString::Format( + wxT("System is on %s power, battery state is %s"), + powerStr.c_str(), + batteryStr.c_str())); } + wxPowerType m_powerType; + wxBatteryState m_batteryState; wxLog *m_logOld; @@ -96,10 +172,14 @@ private: }; BEGIN_EVENT_TABLE(MyFrame, wxFrame) + EVT_IDLE(MyFrame::OnIdle) + +#ifdef wxHAS_POWER_EVENTS EVT_POWER_SUSPENDING(MyFrame::OnSuspending) EVT_POWER_SUSPENDED(MyFrame::OnSuspended) EVT_POWER_SUSPEND_CANCEL(MyFrame::OnSuspendCancel) EVT_POWER_RESUME(MyFrame::OnResume) +#endif // wxHAS_POWER_EVENTS END_EVENT_TABLE() // ----------------------------------------------------------------------------