diff options
-rw-r--r-- | avmedia/inc/mediacontrol.hxx | 1 | ||||
-rw-r--r-- | avmedia/source/framework/mediacontrol.cxx | 11 | ||||
-rw-r--r-- | avmedia/source/framework/mediaitem.cxx | 124 | ||||
-rw-r--r-- | include/avmedia/mediaitem.hxx | 26 |
4 files changed, 87 insertions, 75 deletions
diff --git a/avmedia/inc/mediacontrol.hxx b/avmedia/inc/mediacontrol.hxx index 33c063fc9dad..6b004626ff83 100644 --- a/avmedia/inc/mediacontrol.hxx +++ b/avmedia/inc/mediacontrol.hxx @@ -66,7 +66,6 @@ private: MediaItem maItem; bool mbLocked; MediaControlStyle meControlStyle; - double mfTime; }; } diff --git a/avmedia/source/framework/mediacontrol.cxx b/avmedia/source/framework/mediacontrol.cxx index bb1bca959a90..23d700595f95 100644 --- a/avmedia/source/framework/mediacontrol.cxx +++ b/avmedia/source/framework/mediacontrol.cxx @@ -39,8 +39,7 @@ MediaControl::MediaControl( vcl::Window* pParent, MediaControlStyle eControlStyl maChangeTimeIdle( "avmedia MediaControl Change Time Idle" ), maItem( 0, AVMediaSetMask::ALL ), mbLocked( false ), - meControlStyle( eControlStyle ), - mfTime(0.0) + meControlStyle( eControlStyle ) { mxPlayToolBox = m_xBuilder->weld_toolbar("playtoolbox"); mxTimeSlider = m_xBuilder->weld_scale("timeslider"); @@ -112,11 +111,11 @@ void MediaControl::UpdateURLField(MediaItem const & tempItem) void MediaControl::setState( const MediaItem& rItem ) { - double fTime = rItem.getTime(); - if( !mbLocked && fTime != mfTime) + if (mbLocked) + return; + bool bChanged = maItem.merge(rItem); + if (bChanged) { - mfTime = fTime; - maItem.merge( rItem ); if( rItem.getURL().isEmpty() && meControlStyle == MediaControlStyle::SingleLine ) mxPlayToolBox->set_sensitive(false); UpdateToolBoxes( maItem ); diff --git a/avmedia/source/framework/mediaitem.cxx b/avmedia/source/framework/mediaitem.cxx index 127ad8af243f..0a53cf5d4d39 100644 --- a/avmedia/source/framework/mediaitem.cxx +++ b/avmedia/source/framework/mediaitem.cxx @@ -178,187 +178,201 @@ bool MediaItem::PutValue( const css::uno::Any& rVal, sal_uInt8 ) return bRet; } - -void MediaItem::merge( const MediaItem& rMediaItem ) +bool MediaItem::merge(const MediaItem& rMediaItem) { + bool bChanged = false; + const AVMediaSetMask nMaskSet = rMediaItem.getMaskSet(); if( AVMediaSetMask::URL & nMaskSet ) - setURL( rMediaItem.getURL(), rMediaItem.getTempURL(), rMediaItem.getReferer() ); + bChanged |= setURL(rMediaItem.getURL(), rMediaItem.getTempURL(), rMediaItem.getReferer()); if( AVMediaSetMask::MIME_TYPE & nMaskSet ) - setMimeType( rMediaItem.getMimeType() ); + bChanged |= setMimeType(rMediaItem.getMimeType()); if (nMaskSet & AVMediaSetMask::GRAPHIC) - setGraphic(rMediaItem.getGraphic()); + bChanged |= setGraphic(rMediaItem.getGraphic()); if( AVMediaSetMask::STATE & nMaskSet ) - setState( rMediaItem.getState() ); + bChanged |= setState( rMediaItem.getState() ); if( AVMediaSetMask::DURATION & nMaskSet ) - setDuration( rMediaItem.getDuration() ); + bChanged |= setDuration(rMediaItem.getDuration()); if( AVMediaSetMask::TIME & nMaskSet ) - setTime( rMediaItem.getTime() ); + bChanged |= setTime(rMediaItem.getTime()); if( AVMediaSetMask::LOOP & nMaskSet ) - setLoop( rMediaItem.isLoop() ); + bChanged |= setLoop(rMediaItem.isLoop()); if( AVMediaSetMask::MUTE & nMaskSet ) - setMute( rMediaItem.isMute() ); + bChanged |= setMute(rMediaItem.isMute()); if( AVMediaSetMask::VOLUMEDB & nMaskSet ) - setVolumeDB( rMediaItem.getVolumeDB() ); + bChanged |= setVolumeDB(rMediaItem.getVolumeDB()); if( AVMediaSetMask::ZOOM & nMaskSet ) - setZoom( rMediaItem.getZoom() ); -} + bChanged |= setZoom(rMediaItem.getZoom()); + return bChanged; +} AVMediaSetMask MediaItem::getMaskSet() const { return m_pImpl->m_nMaskSet; } - -void MediaItem::setURL( const OUString& rURL, const OUString& rTempURL, const OUString& rReferer ) +bool MediaItem::setURL(const OUString& rURL, const OUString& rTempURL, const OUString& rReferer) { m_pImpl->m_nMaskSet |= AVMediaSetMask::URL; - m_pImpl->m_URL = rURL; - m_pImpl->m_TempFileURL = rTempURL; - m_pImpl->m_Referer = rReferer; + bool bChanged = rURL != m_pImpl->m_URL || rTempURL != m_pImpl->m_TempFileURL || rReferer != m_pImpl->m_Referer; + if (bChanged) + { + m_pImpl->m_URL = rURL; + m_pImpl->m_TempFileURL = rTempURL; + m_pImpl->m_Referer = rReferer; + } + return bChanged; } - const OUString& MediaItem::getURL() const { return m_pImpl->m_URL; } - const OUString& MediaItem::getTempURL() const { return m_pImpl->m_TempFileURL; } - const OUString& MediaItem::getReferer() const { return m_pImpl->m_Referer; } - -void MediaItem::setMimeType( const OUString& rMimeType ) +bool MediaItem::setMimeType(const OUString& rMimeType) { m_pImpl->m_nMaskSet |= AVMediaSetMask::MIME_TYPE; - m_pImpl->m_sMimeType = rMimeType; + bool bChanged = rMimeType != m_pImpl->m_sMimeType; + if (bChanged) + m_pImpl->m_sMimeType = rMimeType; + return bChanged; } - OUString MediaItem::getMimeType() const { return !m_pImpl->m_sMimeType.isEmpty() ? m_pImpl->m_sMimeType : AVMEDIA_MIMETYPE_COMMON; } -void MediaItem::setGraphic(const Graphic& rGraphic) +bool MediaItem::setGraphic(const Graphic& rGraphic) { m_pImpl->m_nMaskSet |= AVMediaSetMask::GRAPHIC; - m_pImpl->m_aGraphic = rGraphic; + bool bChanged = rGraphic != m_pImpl->m_aGraphic; + if (bChanged) + m_pImpl->m_aGraphic = rGraphic; + return bChanged; } const Graphic & MediaItem::getGraphic() const { return m_pImpl->m_aGraphic; } -void MediaItem::setState( MediaState eState ) +bool MediaItem::setState(MediaState eState) { - m_pImpl->m_eState = eState; m_pImpl->m_nMaskSet |= AVMediaSetMask::STATE; + bool bChanged = eState != m_pImpl->m_eState; + if (bChanged) + m_pImpl->m_eState = eState; + return bChanged; } - MediaState MediaItem::getState() const { return m_pImpl->m_eState; } - -void MediaItem::setDuration( double fDuration ) +bool MediaItem::setDuration(double fDuration) { - m_pImpl->m_fDuration = fDuration; m_pImpl->m_nMaskSet |= AVMediaSetMask::DURATION; + bool bChanged = fDuration != m_pImpl->m_fDuration; + if (bChanged) + m_pImpl->m_fDuration = fDuration; + return bChanged; } - double MediaItem::getDuration() const { return m_pImpl->m_fDuration; } - -void MediaItem::setTime( double fTime ) +bool MediaItem::setTime(double fTime) { - m_pImpl->m_fTime = fTime; m_pImpl->m_nMaskSet |= AVMediaSetMask::TIME; + bool bChanged = fTime != m_pImpl->m_fTime; + if (bChanged) + m_pImpl->m_fTime = fTime; + return bChanged; } - double MediaItem::getTime() const { return m_pImpl->m_fTime; } - -void MediaItem::setLoop( bool bLoop ) +bool MediaItem::setLoop(bool bLoop) { - m_pImpl->m_bLoop = bLoop; m_pImpl->m_nMaskSet |= AVMediaSetMask::LOOP; + bool bChanged = bLoop != m_pImpl->m_bLoop; + if (bChanged) + m_pImpl->m_bLoop = bLoop; + return bChanged; } - bool MediaItem::isLoop() const { return m_pImpl->m_bLoop; } - -void MediaItem::setMute( bool bMute ) +bool MediaItem::setMute(bool bMute) { - m_pImpl->m_bMute = bMute; m_pImpl->m_nMaskSet |= AVMediaSetMask::MUTE; + bool bChanged = bMute != m_pImpl->m_bMute; + if (bChanged) + m_pImpl->m_bMute = bMute; + return bChanged; } - bool MediaItem::isMute() const { return m_pImpl->m_bMute; } - -void MediaItem::setVolumeDB( sal_Int16 nDB ) +bool MediaItem::setVolumeDB(sal_Int16 nDB) { - m_pImpl->m_nVolumeDB = nDB; m_pImpl->m_nMaskSet |= AVMediaSetMask::VOLUMEDB; + bool bChanged = nDB != m_pImpl->m_nVolumeDB; + if (bChanged) + m_pImpl->m_nVolumeDB = nDB; + return bChanged; } - sal_Int16 MediaItem::getVolumeDB() const { return m_pImpl->m_nVolumeDB; } - -void MediaItem::setZoom( css::media::ZoomLevel eZoom ) +bool MediaItem::setZoom(css::media::ZoomLevel eZoom) { - m_pImpl->m_eZoom = eZoom; m_pImpl->m_nMaskSet |= AVMediaSetMask::ZOOM; + bool bChanged = eZoom != m_pImpl->m_eZoom; + if (bChanged) + m_pImpl->m_eZoom = eZoom; + return bChanged; } - css::media::ZoomLevel MediaItem::getZoom() const { return m_pImpl->m_eZoom; } - OUString GetFilename(OUString const& rSourceURL) { uno::Reference<uri::XUriReferenceFactory> const xUriFactory( diff --git a/include/avmedia/mediaitem.hxx b/include/avmedia/mediaitem.hxx index a19c2319315b..ab9418607cb7 100644 --- a/include/avmedia/mediaitem.hxx +++ b/include/avmedia/mediaitem.hxx @@ -85,39 +85,39 @@ public: virtual bool QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const override; virtual bool PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId ) override; - void merge( const MediaItem& rMediaItem ); + bool merge(const MediaItem& rMediaItem); AVMediaSetMask getMaskSet() const; - void setState( MediaState eState ); + bool setState(MediaState eState); MediaState getState() const; - void setDuration( double fDuration ); + bool setDuration(double fDuration); double getDuration() const; - void setTime( double fTime ); + bool setTime(double fTime); double getTime() const; - void setLoop( bool bLoop ); + bool setLoop(bool bLoop); bool isLoop() const; - void setMute( bool bMute ); + bool setMute(bool bMute); bool isMute() const; - void setVolumeDB( sal_Int16 nDB ); + bool setVolumeDB(sal_Int16 nDB); sal_Int16 getVolumeDB() const; - void setZoom( ::css::media::ZoomLevel eZoom ); + bool setZoom(css::media::ZoomLevel eZoom); ::css::media::ZoomLevel getZoom() const; - void setURL( const OUString& rURL, - const OUString& rTempURL, - const OUString& rReferer); + bool setURL(const OUString& rURL, + const OUString& rTempURL, + const OUString& rReferer); const OUString& getURL() const; - void setMimeType( const OUString& rMimeType ); + bool setMimeType(const OUString& rMimeType); OUString getMimeType() const; - void setGraphic(const Graphic& rGraphic); + bool setGraphic(const Graphic& rGraphic); const Graphic & getGraphic() const; const OUString& getTempURL() const; |