X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bf354396f61a2e1bd5544b67ecde341b6ff9bf35..6d7b547184bfdcdf67790755deb0122050b1d728:/src/common/mediactrlcmn.cpp diff --git a/src/common/mediactrlcmn.cpp b/src/common/mediactrlcmn.cpp index 2b1bd5d3c8..2563d85a8f 100644 --- a/src/common/mediactrlcmn.cpp +++ b/src/common/mediactrlcmn.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: common/mediactrl.cpp +// Name: src/common/mediactrl.cpp // Purpose: wxMediaCtrl common code // Author: Ryan Norton // Modified by: @@ -9,6 +9,8 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +// TODO: Platform specific backend defaults? + //=========================================================================== // Definitions //=========================================================================== @@ -17,26 +19,22 @@ // Pre-compiled header stuff //--------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "mediactrl.h" -#endif - #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop +#endif + +#if wxUSE_MEDIACTRL + +#ifndef WX_PRECOMP + #include "wx/hash.h" #endif //--------------------------------------------------------------------------- // Includes //--------------------------------------------------------------------------- #include "wx/mediactrl.h" -#include "wx/hash.h" - -//--------------------------------------------------------------------------- -// Compilation guard -//--------------------------------------------------------------------------- -#if wxUSE_MEDIACTRL //=========================================================================== // @@ -48,12 +46,15 @@ // RTTI and Event implementations //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -IMPLEMENT_CLASS(wxMediaCtrl, wxControl); -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(wxMediaCtrl, wxControl) +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) //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // @@ -232,7 +233,7 @@ bool wxMediaCtrl::DoCreate(wxClassInfo* classInfo, } //--------------------------------------------------------------------------- -// wxMediaCtrl::NextBackend +// wxMediaCtrl::NextBackend (static) // // // Search through the RTTI hashmap one at a @@ -243,8 +244,7 @@ bool wxMediaCtrl::DoCreate(wxClassInfo* classInfo, // STL isn't compatible with and will have a compilation error // on a wxNode, however, wxHashTable::compatibility_iterator is // incompatible with the old 2.4 stable version - but since -// we're in 2.5 only we don't need to worry about this -// static +// we're in 2.5+ only we don't need to worry about the new version //--------------------------------------------------------------------------- wxClassInfo* wxMediaCtrl::NextBackend() { @@ -417,21 +417,21 @@ wxSize wxMediaCtrl::DoGetBestSize() const return wxSize(0,0); } -double wxMediaCtrl::GetVolume() +double wxMediaCtrl::GetVolume() { 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; } -bool wxMediaCtrl::ShowPlayerControls(wxMediaCtrlPlayerControls flags) +bool wxMediaCtrl::ShowPlayerControls(wxMediaCtrlPlayerControls flags) { if(m_imp) return m_imp->ShowPlayerControls(flags); @@ -468,6 +468,19 @@ void wxMediaCtrl::DoMoveWindow(int x, int y, int w, int 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 @@ -511,12 +524,36 @@ void wxMediaBackendCommonBase::QueueEvent(wxEventType evtType) m_ctrl->AddPendingEvent(theEvent); } -#include "wx/html/forcelnk.h" -FORCE_LINK(basewxmediabackends); +void wxMediaBackendCommonBase::QueuePlayEvent() +{ + QueueEvent(wxEVT_MEDIA_STATECHANGED); + QueueEvent(wxEVT_MEDIA_PLAY); +} -//--------------------------------------------------------------------------- -// End of compilation guard and of file -//--------------------------------------------------------------------------- -#endif //wxUSE_MEDIACTRL +void wxMediaBackendCommonBase::QueuePauseEvent() +{ + QueueEvent(wxEVT_MEDIA_STATECHANGED); + QueueEvent(wxEVT_MEDIA_PAUSE); +} + +void wxMediaBackendCommonBase::QueueStopEvent() +{ + QueueEvent(wxEVT_MEDIA_STATECHANGED); + QueueEvent(wxEVT_MEDIA_STOP); +} +// +// Force link default backends in - +// see http://wiki.wxwidgets.org/wiki.pl?RTTI +// +#include "wx/html/forcelnk.h" + +#ifdef __WXMSW__ // MSW has huge backends so we do it seperately +FORCE_LINK(wxmediabackend_am) +FORCE_LINK(wxmediabackend_wmp10) +#else +FORCE_LINK(basewxmediabackends) +#endif + +#endif //wxUSE_MEDIACTRL