X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6f8c67e71020cb3b7779b1267dda8702423e7c42..57436bb7dbd331de64d05007960aa1fc966f8de9:/src/common/mediactrlcmn.cpp?ds=sidebyside diff --git a/src/common/mediactrlcmn.cpp b/src/common/mediactrlcmn.cpp index aeadd68451..618eccabf9 100644 --- a/src/common/mediactrlcmn.cpp +++ b/src/common/mediactrlcmn.cpp @@ -17,10 +17,6 @@ // Pre-compiled header stuff //--------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "mediactrl.h" -#endif - #include "wx/wxprec.h" #ifdef __BORLANDC__ @@ -48,11 +44,12 @@ // 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_STOP); +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) //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // @@ -281,6 +278,8 @@ wxMediaCtrl::~wxMediaCtrl() //--------------------------------------------------------------------------- // wxMediaCtrl::Load (file version) // wxMediaCtrl::Load (URL version) +// wxMediaCtrl::Load (URL & Proxy version) +// wxMediaCtrl::Load (wxInputStream version) // // Here we call load of the backend - keeping // track of whether it was successful or not - which @@ -300,6 +299,13 @@ bool wxMediaCtrl::Load(const wxURI& location) return false; } +bool wxMediaCtrl::Load(const wxURI& location, const wxURI& proxy) +{ + if(m_imp) + return (m_bLoaded = m_imp->Load(location, proxy)); + return false; +} + //--------------------------------------------------------------------------- // wxMediaCtrl::Play // wxMediaCtrl::Pause @@ -313,6 +319,9 @@ bool wxMediaCtrl::Load(const wxURI& location) // wxMediaCtrl::DoGetBestSize // wxMediaCtrl::SetVolume // wxMediaCtrl::GetVolume +// wxMediaCtrl::ShowInterface +// wxMediaCtrl::GetDownloadProgress +// wxMediaCtrl::GetDownloadTotal // // 1) Check to see whether the backend exists and is loading // 2) Call the backend's version of the method, returning success @@ -418,6 +427,27 @@ bool wxMediaCtrl::SetVolume(double dVolume) return false; } +bool wxMediaCtrl::ShowPlayerControls(wxMediaCtrlPlayerControls flags) +{ + if(m_imp) + return m_imp->ShowPlayerControls(flags); + return false; +} + +wxFileOffset wxMediaCtrl::GetDownloadProgress() +{ + if(m_imp && m_bLoaded) + return (wxFileOffset) m_imp->GetDownloadProgress().ToLong(); + return wxInvalidOffset; +} + +wxFileOffset wxMediaCtrl::GetDownloadTotal() +{ + if(m_imp && m_bLoaded) + return (wxFileOffset) m_imp->GetDownloadTotal().ToLong(); + return wxInvalidOffset; +} + //--------------------------------------------------------------------------- // wxMediaCtrl::DoMoveWindow // @@ -434,8 +464,51 @@ void wxMediaCtrl::DoMoveWindow(int x, int y, int w, int h) m_imp->Move(x, y, w, h); } +//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +// +// wxMediaBackendCommonBase +// +//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +void wxMediaBackendCommonBase::NotifyMovieSizeChanged() +{ + // our best size changed after opening a new file + m_ctrl->InvalidateBestSize(); + m_ctrl->SetSize(m_ctrl->GetSize()); + + // if the parent of the control has a sizer ask it to refresh our size + wxWindow * const parent = m_ctrl->GetParent(); + if ( parent->GetSizer() ) + { + m_ctrl->GetParent()->Layout(); + m_ctrl->GetParent()->Refresh(); + m_ctrl->GetParent()->Update(); + } +} + +void wxMediaBackendCommonBase::NotifyMovieLoaded() +{ + NotifyMovieSizeChanged(); + + // notify about movie being fully loaded + QueueEvent(wxEVT_MEDIA_LOADED); +} + +bool wxMediaBackendCommonBase::SendStopEvent() +{ + wxMediaEvent theEvent(wxEVT_MEDIA_STOP, m_ctrl->GetId()); + + return !m_ctrl->ProcessEvent(theEvent) || theEvent.IsAllowed(); +} + +void wxMediaBackendCommonBase::QueueEvent(wxEventType evtType) +{ + wxMediaEvent theEvent(evtType, m_ctrl->GetId()); + m_ctrl->AddPendingEvent(theEvent); +} + #include "wx/html/forcelnk.h" -FORCE_LINK(basewxmediabackends); +FORCE_LINK(basewxmediabackends) //--------------------------------------------------------------------------- // End of compilation guard and of file