From 9733174ea00e525c91b4edf1bbc6ab4897f5fbf8 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Wed, 12 Feb 2020 16:27:06 +0000 Subject: inherit MediaControl from InterimItemWindow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit to de-dup some code Change-Id: I8bf20d4b57f3ec7bd2902f01e11278da8ded194b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88550 Tested-by: Jenkins Reviewed-by: Caolán McNamara --- avmedia/inc/mediacontrol.hxx | 11 ++------ avmedia/source/framework/mediacontrol.cxx | 41 ++++++------------------------ avmedia/source/framework/mediatoolbox.cxx | 4 +-- avmedia/source/viewer/mediawindow_impl.cxx | 2 +- sfx2/source/control/InterimItemWindow.cxx | 2 +- 5 files changed, 13 insertions(+), 47 deletions(-) diff --git a/avmedia/inc/mediacontrol.hxx b/avmedia/inc/mediacontrol.hxx index 9899418a6052..254c29dbc434 100644 --- a/avmedia/inc/mediacontrol.hxx +++ b/avmedia/inc/mediacontrol.hxx @@ -21,7 +21,7 @@ #include -#include +#include #include #include #include @@ -34,15 +34,13 @@ namespace avmedia class MediaItem; -class MediaControl : public Control, public MediaControlBase +class MediaControl : public InterimItemWindow, public MediaControlBase { public: MediaControl( vcl::Window* pParent, MediaControlStyle eControlStyle ); virtual ~MediaControl() override; virtual void dispose() override; - Size getMinSizePixel() const; - void setState( const MediaItem& rItem ); void UpdateURLField( MediaItem const & maItem ); @@ -51,7 +49,6 @@ protected: virtual void update() = 0; virtual void execute( const MediaItem& rItem ) = 0; - virtual void Resize() override; virtual void InitializeWidgets() override; std::unique_ptr mxMediaPath; @@ -64,10 +61,6 @@ private: DECL_LINK(implZoomSelectHdl, weld::ComboBox&, void); DECL_LINK(implTimeoutHdl, Timer*, void); - std::unique_ptr m_xBuilder; - VclPtr m_xVclContentArea; - std::unique_ptr m_xContainer; - Idle maIdle; Idle maChangeTimeIdle; MediaItem maItem; diff --git a/avmedia/source/framework/mediacontrol.cxx b/avmedia/source/framework/mediacontrol.cxx index a9c144b1e455..596234771ef1 100644 --- a/avmedia/source/framework/mediacontrol.cxx +++ b/avmedia/source/framework/mediacontrol.cxx @@ -36,7 +36,12 @@ namespace avmedia { MediaControl::MediaControl( vcl::Window* pParent, MediaControlStyle eControlStyle ) : - Control( pParent ), + // MEDIACONTROLSTYLE_MULTILINE is the normal docking windows of tools->media player + // MEDIACONTROLSTYLE_SINGLELINE is the toolbar of view->toolbar->media playback + InterimItemWindow(pParent, eControlStyle == MEDIACONTROLSTYLE_MULTILINE ? + OUString("svx/ui/mediawindow.ui") : + OUString("svx/ui/medialine.ui"), + "MediaWindow"), MediaControlBase(), maIdle( "avmedia MediaControl Idle" ), maChangeTimeIdle( "avmedia MediaControl Change Time Idle" ), @@ -45,18 +50,6 @@ MediaControl::MediaControl( vcl::Window* pParent, MediaControlStyle eControlStyl meControlStyle( eControlStyle ), mfTime(0.0) { - SetStyle(GetStyle() | WB_DIALOGCONTROL); - - m_xVclContentArea = VclPtr::Create(this); - m_xVclContentArea->Show(); - // MEDIACONTROLSTYLE_MULTILINE is the normal docking windows of tools->media player - // MEDIACONTROLSTYLE_SINGLELINE is the toolbar of view->toolbar->media playback - m_xBuilder.reset(Application::CreateInterimBuilder(m_xVclContentArea, - eControlStyle == MEDIACONTROLSTYLE_MULTILINE ? - OUString("svx/ui/mediawindow.ui") : - OUString("svx/ui/medialine.ui"))); - m_xContainer = m_xBuilder->weld_container("MediaWindow"); - mxPlayToolBox = m_xBuilder->weld_toolbar("playtoolbox"); mxTimeSlider = m_xBuilder->weld_scale("timeslider"); mxMuteToolBox = m_xBuilder->weld_toolbar("mutetoolbox"); @@ -65,9 +58,7 @@ MediaControl::MediaControl( vcl::Window* pParent, MediaControlStyle eControlStyl mxTimeEdit = m_xBuilder->weld_entry("timeedit"); mxMediaPath = m_xBuilder->weld_label("url"); - SetBackground(); - SetPaintTransparent( true ); - SetParentClipMode( ParentClipMode::NoClip ); + // TODO SetParentClipMode( ParentClipMode::NoClip ); InitializeWidgets(); @@ -123,15 +114,7 @@ void MediaControl::dispose() { disposeWidgets(); mxMediaPath.reset(); - m_xContainer.reset(); - m_xBuilder.reset(); - m_xVclContentArea.disposeAndClear(); - Control::dispose(); -} - -Size MediaControl::getMinSizePixel() const -{ - return VclContainer::getLayoutRequisition(*GetWindow(GetWindowType::FirstChild)); + InterimItemWindow::dispose(); } void MediaControl::UpdateURLField(MediaItem const & tempItem) @@ -140,14 +123,6 @@ void MediaControl::UpdateURLField(MediaItem const & tempItem) mxMediaPath->set_label(aURL); } -void MediaControl::Resize() -{ - vcl::Window *pChild = GetWindow(GetWindowType::FirstChild); - assert(pChild); - VclContainer::setLayoutAllocation(*pChild, Point(0, 0), GetSizePixel()); - Control::Resize(); -} - void MediaControl::setState( const MediaItem& rItem ) { double fTime = rItem.getTime(); diff --git a/avmedia/source/framework/mediatoolbox.cxx b/avmedia/source/framework/mediatoolbox.cxx index b085d8a77f39..a291218da6c5 100644 --- a/avmedia/source/framework/mediatoolbox.cxx +++ b/avmedia/source/framework/mediatoolbox.cxx @@ -46,15 +46,13 @@ private: MediaToolBoxControl* mpToolBoxControl; }; - MediaToolBoxControl_Impl::MediaToolBoxControl_Impl( vcl::Window& rParent, MediaToolBoxControl& rControl ) : MediaControl( &rParent, MEDIACONTROLSTYLE_SINGLELINE ), mpToolBoxControl( &rControl ) { - SetSizePixel( getMinSizePixel() ); + SetSizePixel(m_xContainer->get_preferred_size()); } - void MediaToolBoxControl_Impl::update() { mpToolBoxControl->implUpdateMediaControl(); diff --git a/avmedia/source/viewer/mediawindow_impl.cxx b/avmedia/source/viewer/mediawindow_impl.cxx index fdc78575f8b7..3e95252d6ad0 100644 --- a/avmedia/source/viewer/mediawindow_impl.cxx +++ b/avmedia/source/viewer/mediawindow_impl.cxx @@ -125,7 +125,7 @@ MediaWindowImpl::MediaWindowImpl(vcl::Window* pParent, MediaWindow* pMediaWindow { if (mpMediaWindowControl) { - mpMediaWindowControl->SetSizePixel(mpMediaWindowControl->getMinSizePixel()); + mpMediaWindowControl->SetSizePixel(mpMediaWindowControl->GetOptimalSize()); mpMediaWindowControl->Show(); } } diff --git a/sfx2/source/control/InterimItemWindow.cxx b/sfx2/source/control/InterimItemWindow.cxx index 6f26b99acab5..1263f2e56aa2 100644 --- a/sfx2/source/control/InterimItemWindow.cxx +++ b/sfx2/source/control/InterimItemWindow.cxx @@ -11,7 +11,7 @@ InterimItemWindow::InterimItemWindow(vcl::Window* pParent, const OUString& rUIXMLDescription, const OString& rID) - : Control(pParent, WB_TABSTOP) + : Control(pParent, WB_TABSTOP | WB_DIALOGCONTROL) { m_xVclContentArea = VclPtr::Create(this); m_xVclContentArea->Show(); -- cgit