diff options
author | Zolnai Tamás <tamas.zolnai@collabora.com> | 2014-01-07 22:57:58 +0100 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2014-01-09 13:27:29 +0000 |
commit | f3a075f97f0cb13c0e73b567fb2d25374b147cf4 (patch) | |
tree | a2041adefc9ec42df5899e80438b7964865dcefd /sfx2/source | |
parent | eea247993c6c06cad8c6b728c9b013b2c6e86dca (diff) |
Startcenter: Refresh RecentDocsView when select 'Clear list' menu option
Change-Id: I9cbe647563699b9b610661003084d2cd16093f9a
(cherry picked from commit d930cefbe65d8b7f21100fcbf2ddcd977dd15cb1)
Reviewed-on: https://gerrit.libreoffice.org/7304
Reviewed-by: Jan Holesovsky <kendy@collabora.com>
Tested-by: Jan Holesovsky <kendy@collabora.com>
Diffstat (limited to 'sfx2/source')
-rw-r--r-- | sfx2/source/dialog/backingcomp.cxx | 54 | ||||
-rw-r--r-- | sfx2/source/dialog/backingwindow.cxx | 5 | ||||
-rw-r--r-- | sfx2/source/dialog/backingwindow.hxx | 2 |
3 files changed, 58 insertions, 3 deletions
diff --git a/sfx2/source/dialog/backingcomp.cxx b/sfx2/source/dialog/backingcomp.cxx index d202a1c5cd5c..4a144981c6d0 100644 --- a/sfx2/source/dialog/backingcomp.cxx +++ b/sfx2/source/dialog/backingcomp.cxx @@ -102,7 +102,9 @@ css::uno::Any SAL_CALL BackingComp::queryInterface( /*IN*/ const css::uno::Type& static_cast< css::frame::XController* >(this), static_cast< css::lang::XComponent* >(this), static_cast< css::lang::XEventListener* >(this), - static_cast< css::awt::XKeyListener* >(static_cast< css::lang::XEventListener* >(this))); + static_cast< css::awt::XKeyListener* >(static_cast< css::lang::XEventListener* >(this)), + static_cast< css::frame::XDispatchProvider* >(this), + static_cast< css::frame::XDispatch* >(this) ); // then look for supported window interfaces // Note: They exist only, if this instance was initialized @@ -183,6 +185,8 @@ css::uno::Sequence< css::uno::Type > SAL_CALL BackingComp::getTypes() ::getCppuType((const ::com::sun::star::uno::Reference< css::lang::XServiceInfo >*)NULL ), ::getCppuType((const ::com::sun::star::uno::Reference< css::frame::XController >*)NULL ), ::getCppuType((const ::com::sun::star::uno::Reference< css::lang::XComponent >*)NULL ), + ::getCppuType((const ::com::sun::star::uno::Reference< css::frame::XDispatchProvider >*)NULL ), + ::getCppuType((const ::com::sun::star::uno::Reference< css::frame::XDispatch >*)NULL ), lWindowTypes); pTypeCollection = &aTypeCollection; @@ -261,7 +265,8 @@ sal_Bool SAL_CALL BackingComp::supportsService( /*IN*/ const OUString& sServiceN { return ( sServiceName.equals("com.sun.star.frame.StartModule") || - sServiceName.equals(SERVICENAME_FRAMECONTROLLER) + sServiceName.equals(SERVICENAME_FRAMECONTROLLER) || + sServiceName.equals("com.sun.star.frame.ProtocolHandler") ); } @@ -317,8 +322,9 @@ OUString BackingComp::impl_getStaticImplementationName() css::uno::Sequence< OUString > BackingComp::impl_getStaticSupportedServiceNames() { - css::uno::Sequence< OUString > lNames(1); + css::uno::Sequence< OUString > lNames(2); lNames[0] = "com.sun.star.frame.StartModule"; + lNames[1] = "com.sun.star.frame.ProtocolHandler"; return lNames; } @@ -800,4 +806,46 @@ void SAL_CALL BackingComp::keyReleased( /*IN*/ const css::awt::KeyEvent& ) */ } +// XDispatchProvider +css::uno::Reference< css::frame::XDispatch > SAL_CALL BackingComp::queryDispatch( const css::util::URL& aURL, const OUString& /*sTargetFrameName*/, sal_Int32 /*nSearchFlags*/ ) throw( css::uno::RuntimeException ) +{ + css::uno::Reference< css::frame::XDispatch > xDispatch; + if ( aURL.Protocol == "vnd.org.libreoffice.recentdocs:" ) + xDispatch = this; + + return xDispatch; +} + +css::uno::Sequence < css::uno::Reference< css::frame::XDispatch > > SAL_CALL BackingComp::queryDispatches( const css::uno::Sequence < css::frame::DispatchDescriptor >& seqDescripts ) throw( css::uno::RuntimeException ) +{ + sal_Int32 nCount = seqDescripts.getLength(); + css::uno::Sequence < css::uno::Reference < XDispatch > > lDispatcher( nCount ); + + for( sal_Int32 i=0; i<nCount; ++i ) + lDispatcher[i] = queryDispatch( seqDescripts[i].FeatureURL, seqDescripts[i].FrameName, seqDescripts[i].SearchFlags ); + + return lDispatcher; +} + +// XDispatch +void SAL_CALL BackingComp::dispatch( const css::util::URL& aURL, const css::uno::Sequence < css::beans::PropertyValue >& /*lArgs*/ ) throw( css::uno::RuntimeException ) +{ + // vnd.org.libreoffice.recentdocs:ClearRecentFileList - clear recent files + if ( aURL.Path == "ClearRecentFileList" ) + { + Window* pWindow = VCLUnoHelper::GetWindow(m_xWindow); + BackingWindow* pBack = dynamic_cast<BackingWindow*>(pWindow ); + if( pBack ) + pBack->clearRecentFileList(); + } +} + +void SAL_CALL BackingComp::addStatusListener( const css::uno::Reference< css::frame::XStatusListener >& /*xControl*/, const css::util::URL& /*aURL*/ ) throw ( css::uno::RuntimeException ) +{ +} + +void SAL_CALL BackingComp::removeStatusListener( const css::uno::Reference< css::frame::XStatusListener >& /*xControl*/, const css::util::URL& /*aURL*/ ) throw ( css::uno::RuntimeException ) +{ +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sfx2/source/dialog/backingwindow.cxx b/sfx2/source/dialog/backingwindow.cxx index f7a66fb869e0..ea3dd216c9fd 100644 --- a/sfx2/source/dialog/backingwindow.cxx +++ b/sfx2/source/dialog/backingwindow.cxx @@ -547,4 +547,9 @@ Size BackingWindow::GetOptimalSize() const return Window::GetOptimalSize(); } +void BackingWindow::clearRecentFileList() +{ + mpAllRecentThumbnails->Clear(); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab:*/ diff --git a/sfx2/source/dialog/backingwindow.hxx b/sfx2/source/dialog/backingwindow.hxx index 8afb203ba3ea..948265fa96b6 100644 --- a/sfx2/source/dialog/backingwindow.hxx +++ b/sfx2/source/dialog/backingwindow.hxx @@ -112,6 +112,8 @@ public: virtual Size GetOptimalSize() const; void setOwningFrame( const com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& xFrame ); + + void clearRecentFileList(); }; #endif |