]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/mediactrlcmn.cpp
define {first,second}_type in the struct declared by _WX_DECLARE_PAIR too for compati...
[wxWidgets.git] / src / common / mediactrlcmn.cpp
index 3e5a5c9d58e7aaa22ea647eb0b05ddb3524db726..6120cada491a7cebc59b3a9affa3c072d0d0838e 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        common/mediactrl.cpp
+// Name:        src/common/mediactrl.cpp
 // Purpose:     wxMediaCtrl common code
 // Author:      Ryan Norton <wxprojects@comcast.net>
 // Modified by:
 // Purpose:     wxMediaCtrl common code
 // Author:      Ryan Norton <wxprojects@comcast.net>
 // Modified by:
 // TODO: Platform specific backend defaults?
 
 //===========================================================================
 // TODO: Platform specific backend defaults?
 
 //===========================================================================
-// Definitions
+// Declarations
 //===========================================================================
 
 //---------------------------------------------------------------------------
 //===========================================================================
 
 //---------------------------------------------------------------------------
-// Pre-compiled header stuff
+// Includes
 //---------------------------------------------------------------------------
 
 #include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
 //---------------------------------------------------------------------------
 
 #include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
-#pragma hdrstop
+    #pragma hdrstop
 #endif
 
 #endif
 
-//---------------------------------------------------------------------------
-// Includes
-//---------------------------------------------------------------------------
-#include "wx/mediactrl.h"
-#include "wx/hash.h"
-
-//---------------------------------------------------------------------------
-// Compilation guard
-//---------------------------------------------------------------------------
 #if wxUSE_MEDIACTRL
 
 #if wxUSE_MEDIACTRL
 
+#ifndef WX_PRECOMP
+    #include "wx/hash.h"
+    #include "wx/log.h"
+#endif
+
+#include "wx/mediactrl.h"
+
 //===========================================================================
 //
 // Implementation
 //===========================================================================
 //
 // Implementation
 // RTTI and Event implementations
 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
 // RTTI and Event implementations
 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
-IMPLEMENT_CLASS(wxMediaCtrl, wxControl);
+IMPLEMENT_CLASS(wxMediaCtrl, wxControl)
 DEFINE_EVENT_TYPE(wxEVT_MEDIA_STATECHANGED)
 DEFINE_EVENT_TYPE(wxEVT_MEDIA_PLAY)
 DEFINE_EVENT_TYPE(wxEVT_MEDIA_PAUSE)
 DEFINE_EVENT_TYPE(wxEVT_MEDIA_STATECHANGED)
 DEFINE_EVENT_TYPE(wxEVT_MEDIA_PLAY)
 DEFINE_EVENT_TYPE(wxEVT_MEDIA_PAUSE)
-IMPLEMENT_CLASS(wxMediaBackend, wxObject);
-IMPLEMENT_DYNAMIC_CLASS(wxMediaEvent, wxEvent);
-DEFINE_EVENT_TYPE(wxEVT_MEDIA_FINISHED);
-DEFINE_EVENT_TYPE(wxEVT_MEDIA_LOADED);
-DEFINE_EVENT_TYPE(wxEVT_MEDIA_STOP);
+IMPLEMENT_CLASS(wxMediaBackend, wxObject)
+IMPLEMENT_DYNAMIC_CLASS(wxMediaEvent, wxEvent)
+DEFINE_EVENT_TYPE(wxEVT_MEDIA_FINISHED)
+DEFINE_EVENT_TYPE(wxEVT_MEDIA_LOADED)
+DEFINE_EVENT_TYPE(wxEVT_MEDIA_STOP)
 
 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 //
 
 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 //
@@ -115,17 +113,18 @@ bool wxMediaCtrl::Create(wxWindow* parent, wxWindowID id,
             }
         }
 
             }
         }
 
-        SetBestFittingSize(size);
+        SetInitialSize(size);
         return true;
     }
     else
     {
         return true;
     }
     else
     {
-        wxClassInfo::sm_classTable->BeginFind();
+        wxClassInfo::const_iterator it = wxClassInfo::begin_classinfo();
 
 
-        wxClassInfo* classInfo;
+        const wxClassInfo* classInfo;
 
 
-        while((classInfo = NextBackend()) != NULL)
+        while((classInfo = NextBackend(&it)) != NULL)
         {
         {
+            wxLogMessage( classInfo->GetClassName() );
             if(!DoCreate(classInfo, parent, id,
                          pos, size, style, validator, name))
                 continue;
             if(!DoCreate(classInfo, parent, id,
                          pos, size, style, validator, name))
                 continue;
@@ -134,7 +133,7 @@ bool wxMediaCtrl::Create(wxWindow* parent, wxWindowID id,
             {
                 if (Load(fileName))
                 {
             {
                 if (Load(fileName))
                 {
-                    SetBestFittingSize(size);
+                    SetInitialSize(size);
                     return true;
                 }
                 else
                     return true;
                 }
                 else
@@ -142,7 +141,7 @@ bool wxMediaCtrl::Create(wxWindow* parent, wxWindowID id,
             }
             else
             {
             }
             else
             {
-                SetBestFittingSize(size);
+                SetInitialSize(size);
                 return true;
             }
         }
                 return true;
             }
         }
@@ -178,16 +177,16 @@ bool wxMediaCtrl::Create(wxWindow* parent, wxWindowID id,
             return false;
         }
 
             return false;
         }
 
-        SetBestFittingSize(size);
+        SetInitialSize(size);
         return true;
     }
     else
     {
         return true;
     }
     else
     {
-        wxClassInfo::sm_classTable->BeginFind();
+        wxClassInfo::const_iterator it  = wxClassInfo::begin_classinfo();
 
 
-        wxClassInfo* classInfo;
+        const wxClassInfo* classInfo;
 
 
-        while((classInfo = NextBackend()) != NULL)
+        while((classInfo = NextBackend(&it)) != NULL)
         {
             if(!DoCreate(classInfo, parent, id,
                          pos, size, style, validator, name))
         {
             if(!DoCreate(classInfo, parent, id,
                          pos, size, style, validator, name))
@@ -195,7 +194,7 @@ bool wxMediaCtrl::Create(wxWindow* parent, wxWindowID id,
 
             if (Load(location))
             {
 
             if (Load(location))
             {
-                SetBestFittingSize(size);
+                SetInitialSize(size);
                 return true;
             }
             else
                 return true;
             }
             else
@@ -212,7 +211,7 @@ bool wxMediaCtrl::Create(wxWindow* parent, wxWindowID id,
 //
 // Attempts to create the control from a backend
 //---------------------------------------------------------------------------
 //
 // Attempts to create the control from a backend
 //---------------------------------------------------------------------------
-bool wxMediaCtrl::DoCreate(wxClassInfo* classInfo,
+bool wxMediaCtrl::DoCreate(const wxClassInfo* classInfo,
                             wxWindow* parent, wxWindowID id,
                             const wxPoint& pos,
                             const wxSize& size,
                             wxWindow* parent, wxWindowID id,
                             const wxPoint& pos,
                             const wxSize& size,
@@ -246,19 +245,18 @@ bool wxMediaCtrl::DoCreate(wxClassInfo* classInfo,
 // incompatible with the old 2.4 stable version - but since
 // we're in 2.5+ only we don't need to worry about the new version
 //---------------------------------------------------------------------------
 // incompatible with the old 2.4 stable version - but since
 // we're in 2.5+ only we don't need to worry about the new version
 //---------------------------------------------------------------------------
-wxClassInfo* wxMediaCtrl::NextBackend()
+const wxClassInfo* wxMediaCtrl::NextBackend(wxClassInfo::const_iterator* it)
 {
 {
-    wxHashTable::compatibility_iterator
-            node = wxClassInfo::sm_classTable->Next();
-    while (node)
+    for ( wxClassInfo::const_iterator end = wxClassInfo::end_classinfo();
+          *it != end; ++(*it) )
     {
     {
-        wxClassInfo* classInfo = (wxClassInfo *)node->GetData();
+        const wxClassInfo* classInfo = **it;
         if ( classInfo->IsKindOf(CLASSINFO(wxMediaBackend)) &&
              classInfo != CLASSINFO(wxMediaBackend) )
         {
         if ( classInfo->IsKindOf(CLASSINFO(wxMediaBackend)) &&
              classInfo != CLASSINFO(wxMediaBackend) )
         {
+            ++(*it);
             return classInfo;
         }
             return classInfo;
         }
-        node = wxClassInfo::sm_classTable->Next();
     }
 
     //
     }
 
     //
@@ -417,21 +415,21 @@ wxSize wxMediaCtrl::DoGetBestSize() const
     return wxSize(0,0);
 }
 
     return wxSize(0,0);
 }
 
-double wxMediaCtrl::GetVolume() 
+double wxMediaCtrl::GetVolume()
 {
     if(m_imp && m_bLoaded)
         return m_imp->GetVolume();
     return 0.0;
 }
 
 {
     if(m_imp && m_bLoaded)
         return m_imp->GetVolume();
     return 0.0;
 }
 
-bool wxMediaCtrl::SetVolume(double dVolume) 
+bool wxMediaCtrl::SetVolume(double dVolume)
 {
     if(m_imp && m_bLoaded)
         return m_imp->SetVolume(dVolume);
     return false;
 }
 
 {
     if(m_imp && m_bLoaded)
         return m_imp->SetVolume(dVolume);
     return false;
 }
 
-bool wxMediaCtrl::ShowPlayerControls(wxMediaCtrlPlayerControls flags) 
+bool wxMediaCtrl::ShowPlayerControls(wxMediaCtrlPlayerControls flags)
 {
     if(m_imp)
         return m_imp->ShowPlayerControls(flags);
 {
     if(m_imp)
         return m_imp->ShowPlayerControls(flags);
@@ -468,6 +466,19 @@ void wxMediaCtrl::DoMoveWindow(int x, int y, int w, int h)
         m_imp->Move(x, y, w, h);
 }
 
         m_imp->Move(x, y, w, h);
 }
 
+//---------------------------------------------------------------------------
+// wxMediaCtrl::MacVisibilityChanged
+//---------------------------------------------------------------------------
+#ifdef __WXMAC__
+void wxMediaCtrl::MacVisibilityChanged()
+{
+    wxControl::MacVisibilityChanged();
+
+    if(m_imp)
+        m_imp->MacVisibilityChanged();
+}
+#endif
+
 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 //
 //  wxMediaBackendCommonBase
 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 //
 //  wxMediaBackendCommonBase
@@ -537,14 +548,10 @@ void wxMediaBackendCommonBase::QueueStopEvent()
 #include "wx/html/forcelnk.h"
 
 #ifdef __WXMSW__ // MSW has huge backends so we do it seperately
 #include "wx/html/forcelnk.h"
 
 #ifdef __WXMSW__ // MSW has huge backends so we do it seperately
-FORCE_LINK(wxmediabackend_am);
-FORCE_LINK(wxmediabackend_wmp10);
+FORCE_LINK(wxmediabackend_am)
+FORCE_LINK(wxmediabackend_wmp10)
 #else
 #else
-FORCE_LINK(basewxmediabackends);
+FORCE_LINK(basewxmediabackends)
 #endif
 #endif
-//---------------------------------------------------------------------------
-// End of compilation guard and of file
-//---------------------------------------------------------------------------
-#endif //wxUSE_MEDIACTRL
-
 
 
+#endif //wxUSE_MEDIACTRL