X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/355debca0650f70aa8ed4803b2ebc45541e03d9f..4e15d1caa03346c126015019c1fdf093033ef40b:/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()
 
 // ----------------------------------------------------------------------------