summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorZolnai Tamás <tamas.zolnai@collabora.com>2014-01-07 22:57:58 +0100
committerAndras Timar <andras.timar@collabora.com>2014-01-13 12:25:52 +0000
commit49cdba81cde14d62f5f6c887315232a90085e428 (patch)
treee601564e66e960d09fd1742c36b5b73d20cfe21f /sfx2
parent41189d834e5d2b7c22eb91f2641c8c716e75c101 (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> (cherry picked from commit f3a075f97f0cb13c0e73b567fb2d25374b147cf4) Reviewed-on: https://gerrit.libreoffice.org/7356 Reviewed-by: Eike Rathke <erack@redhat.com> Reviewed-by: Zolnai Tamás <zolnaitamas2000@gmail.com> Reviewed-by: Andras Timar <andras.timar@collabora.com> Tested-by: Andras Timar <andras.timar@collabora.com>
Diffstat (limited to 'sfx2')
-rw-r--r--sfx2/inc/backingcomp.hxx13
-rw-r--r--sfx2/source/dialog/backingcomp.cxx54
-rw-r--r--sfx2/source/dialog/backingwindow.cxx5
-rw-r--r--sfx2/source/dialog/backingwindow.hxx2
-rw-r--r--sfx2/util/sfx.component1
5 files changed, 72 insertions, 3 deletions
diff --git a/sfx2/inc/backingcomp.hxx b/sfx2/inc/backingcomp.hxx
index d4d86fe784a6..7d1b38e46949 100644
--- a/sfx2/inc/backingcomp.hxx
+++ b/sfx2/inc/backingcomp.hxx
@@ -30,6 +30,8 @@
#include <com/sun/star/uno/XComponentContext.hpp>
#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/frame/XDispatch.hpp>
+#include <com/sun/star/frame/XDispatchProvider.hpp>
#include <com/sun/star/datatransfer/dnd/XDropTargetListener.hpp>
#include <com/sun/star/lang/XEventListener.hpp>
@@ -57,6 +59,8 @@ class BackingComp : public css::lang::XTypeProvider
, public css::lang::XInitialization
, public css::frame::XController // => XComponent
, public css::awt::XKeyListener // => XEventListener
+ , public css::frame::XDispatchProvider
+ , public css::frame::XDispatch
, public ::cppu::OWeakObject
{
//______________________________________
@@ -119,6 +123,15 @@ class BackingComp : public css::lang::XTypeProvider
virtual void SAL_CALL addEventListener ( const css::uno::Reference< css::lang::XEventListener >& xListener ) throw(css::uno::RuntimeException);
virtual void SAL_CALL removeEventListener( const css::uno::Reference< css::lang::XEventListener >& xListener ) throw(css::uno::RuntimeException);
+ // XDispatchProvider
+ virtual css::uno::Reference< css::frame::XDispatch > SAL_CALL queryDispatch( const css::util::URL& aURL, const OUString& sTargetFrameName , sal_Int32 nSearchFlags ) throw( css::uno::RuntimeException );
+ virtual css::uno::Sequence< css::uno::Reference< css::frame::XDispatch > > SAL_CALL queryDispatches( const css::uno::Sequence< css::frame::DispatchDescriptor >& lDescriptions ) throw( css::uno::RuntimeException );
+
+ // XDispatch
+ virtual void SAL_CALL dispatch( const css::util::URL& aURL, const css::uno::Sequence< css::beans::PropertyValue >& lArguments ) throw( css::uno::RuntimeException );
+ virtual void SAL_CALL addStatusListener( const css::uno::Reference< css::frame::XStatusListener >& xListener, const css::util::URL& aURL ) throw( css::uno::RuntimeException );
+ virtual void SAL_CALL removeStatusListener( const css::uno::Reference< css::frame::XStatusListener >& xListener, const css::util::URL& aURL ) throw( css::uno::RuntimeException );
+
//______________________________________
// helper
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 ad9b8d83e82c..60ce65f25354 100644
--- a/sfx2/source/dialog/backingwindow.cxx
+++ b/sfx2/source/dialog/backingwindow.cxx
@@ -544,4 +544,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
diff --git a/sfx2/util/sfx.component b/sfx2/util/sfx.component
index dc3150988622..dc05e341cd4a 100644
--- a/sfx2/util/sfx.component
+++ b/sfx2/util/sfx.component
@@ -21,6 +21,7 @@
xmlns="http://openoffice.org/2010/uno-components">
<implementation name="com.sun.star.comp.sfx2.BackingComp">
<service name="com.sun.star.frame.StartModule"/>
+ <service name="com.sun.star.frame.ProtocolHandler"/>
</implementation>
<implementation name="SfxDocumentMetaData">
<service name="com.sun.star.document.DocumentProperties"/>