]> git.saurik.com Git - wxWidgets.git/blobdiff - src/palmos/statbrpalm.cpp
don't assume there's always an active wxEventLoop instance
[wxWidgets.git] / src / palmos / statbrpalm.cpp
index ae4b758f3aad8ccfd1502cecb4d4c16f3b35908c..679433f1b9940cca61deb2fa97c09693ec7df472 100644 (file)
@@ -1,18 +1,14 @@
 ///////////////////////////////////////////////////////////////////////////////
-// Name:        palmos/statbrpalm.cpp
+// Name:        src/palmos/statbrpalm.cpp
 // Purpose:     Implementation of wxStatusBar for PalmOS
-// Author:      William Osborne
-// Modified by:
+// Author:      William Osborne - minimal working wxPalmOS port
+// Modified by: Wlodzimierz ABX Skiba - transition from faked drawing to native statusbar
 // Created:     10/13/04
-// RCS-ID:      $Id:
-// Copyright:   (c) William Osborne
+// RCS-ID:      $Id$
+// Copyright:   (c) William Osborne, Wlodzimierz Skiba
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma implementation "statusbr.h"
-#endif
-
 // for compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
   #pragma hdrstop
 #endif
 
+#if wxUSE_NATIVE_STATUSBAR
+
+#include "wx/statusbr.h"
+
 #ifndef WX_PRECOMP
-  #include "wx/setup.h"
-  #include "wx/frame.h"
-  #include "wx/settings.h"
-  #include "wx/dcclient.h"
+    #include "wx/frame.h"
+    #include "wx/settings.h"
+    #include "wx/dcclient.h"
+    #include "wx/intl.h"
+    #include "wx/log.h"
 #endif
 
-#if wxUSE_STATUSBAR
-
-#include "wx/intl.h"
-#include "wx/log.h"
-#include "wx/statusbr.h"
+#include <StatusBar.h>
 
 // ----------------------------------------------------------------------------
 // macros
 wxStatusBarPalm::wxStatusBarPalm()
 {
     SetParent(NULL);
-    m_hWnd = 0;
-    m_windowId = 0;
 }
 
 bool wxStatusBarPalm::Create(wxWindow *parent,
-                           wxWindowID id,
-                           long style,
-                           const wxString& name)
+                             wxWindowID id,
+                             long style,
+                             const wxString& name)
 {
-    wxCHECK_MSG( parent, FALSE, wxT("status bar must have a parent") );
+    wxCHECK_MSG( parent, false, wxT("status bar must have a parent") );
 
     StatusTextBuffer = NULL;
 
     SetName(name);
     SetParent(parent);
+    SetId( id == wxID_ANY ? NewControlId() : id );
 
     parent->AddChild(this);
 
-    m_windowId = id == -1 ? NewControlId() : id;
-
     SetFieldsCount(1);
-    SubclassWin(m_hWnd);
 
-    return TRUE;
+    return true;
 }
 
 wxStatusBarPalm::~wxStatusBarPalm()
 {
+    Show();
+
     DeleteStatusBuffer();
 }
 
+bool wxStatusBarPalm::IsShown() const
+{
+    return StatGetAttribute ( statAttrBarVisible , NULL );
+}
+
+bool wxStatusBarPalm::Show( bool show )
+{
+    if(show)
+    {
+        // show it if hidden
+        if(IsShown())
+            return false;
+        status_t rc = StatShow();
+        wxCHECK_MSG( rc == errNone, false, wxT("cannot hide status bar") );
+    }
+    else
+    {
+        // hide it if shown
+        if(!IsShown())
+            return false;
+        status_t rc = StatHide();
+        wxCHECK_MSG( rc == errNone, false, wxT("cannot hide status bar") );
+    }
+    return true;
+}
+
 void wxStatusBarPalm::SetFieldsCount(int nFields, const int *widths)
 {
     // this is a Windows limitation
@@ -122,6 +143,7 @@ wxString wxStatusBarPalm::GetStatusText(int nField) const
 
 void wxStatusBarPalm::DrawStatusBar()
 {
+#if 0
     int i=0;
     int leftPos=0;
     wxArrayInt widthsAbs;
@@ -144,6 +166,7 @@ void wxStatusBarPalm::DrawStatusBar()
         leftPos+=widthsAbs[i]+2;
     }
     WinDrawLine(0,160-FntCharHeight()-1,159,160-FntCharHeight()-1);
+#endif
 }
 
 void wxStatusBarPalm::SetStatusBufferText(const wxString& text, int number)
@@ -159,7 +182,7 @@ wxString wxStatusBarPalm::GetStatusBufferText(int number)
 {
     wxListString *st = GetStatusBufferStack(number);
     if(st==0)
-        return "";
+        return wxEmptyString;
 
     wxListString::compatibility_iterator top = st->GetFirst();
     return(*top->GetData());
@@ -244,5 +267,4 @@ void wxStatusBarPalm::DoMoveWindow(int x, int y, int width, int height)
 {
 }
 
-#endif // wxUSE_STATUSBAR
-
+#endif // wxUSE_NATIVE_STATUSBAR