[Libreoffice-commits] core.git: Branch 'libreoffice-4-2-0' - framework/source officecfg/registry sfx2/inc sfx2/source sfx2/util

Zolnai Tamás tamas.zolnai at collabora.com
Mon Jan 13 04:26:15 PST 2014


 framework/source/uielement/recentfilesmenucontroller.cxx          |    5 
 officecfg/registry/data/org/openoffice/Office/ProtocolHandler.xcu |    5 
 sfx2/inc/backingcomp.hxx                                          |   13 ++
 sfx2/source/dialog/backingcomp.cxx                                |   54 +++++++++-
 sfx2/source/dialog/backingwindow.cxx                              |    5 
 sfx2/source/dialog/backingwindow.hxx                              |    2 
 sfx2/util/sfx.component                                           |    1 
 7 files changed, 82 insertions(+), 3 deletions(-)

New commits:
commit 49cdba81cde14d62f5f6c887315232a90085e428
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date:   Tue Jan 7 22:57:58 2014 +0100

    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 at collabora.com>
    Tested-by: Jan Holesovsky <kendy at collabora.com>
    (cherry picked from commit f3a075f97f0cb13c0e73b567fb2d25374b147cf4)
    Reviewed-on: https://gerrit.libreoffice.org/7356
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Reviewed-by: Zolnai Tamás <zolnaitamas2000 at gmail.com>
    Reviewed-by: Andras Timar <andras.timar at collabora.com>
    Tested-by: Andras Timar <andras.timar at collabora.com>

diff --git a/framework/source/uielement/recentfilesmenucontroller.cxx b/framework/source/uielement/recentfilesmenucontroller.cxx
index 586a9af..3866355 100644
--- a/framework/source/uielement/recentfilesmenucontroller.cxx
+++ b/framework/source/uielement/recentfilesmenucontroller.cxx
@@ -281,7 +281,12 @@ void SAL_CALL RecentFilesMenuController::itemSelected( const css::awt::MenuEvent
                    OUStringToOString( aCommand, RTL_TEXTENCODING_UTF8 ).getStr() );
 
         if ( aCommand.startsWith( CMD_CLEAR_LIST ) )
+        {
             SvtHistoryOptions().Clear( ePICKLIST );
+            dispatchCommand(
+                "vnd.org.libreoffice.recentdocs:ClearRecentFileList",
+                ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >() );
+        }
         else
             executeEntry( rEvent.MenuId-1 );
     }
diff --git a/officecfg/registry/data/org/openoffice/Office/ProtocolHandler.xcu b/officecfg/registry/data/org/openoffice/Office/ProtocolHandler.xcu
index 8bb848a..62f7566 100644
--- a/officecfg/registry/data/org/openoffice/Office/ProtocolHandler.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/ProtocolHandler.xcu
@@ -70,5 +70,10 @@
         <value>vnd.com.sun.star.comp.PresentationMinimizer:*</value>
       </prop>
     </node>
+    <node oor:name="com.sun.star.comp.sfx2.BackingComp" oor:op="replace" install:module="start">
+      <prop oor:name="Protocols">
+        <value>vnd.org.libreoffice.recentdocs:*</value>
+      </prop>
+    </node>
   </node>
 </oor:component-data>
diff --git a/sfx2/inc/backingcomp.hxx b/sfx2/inc/backingcomp.hxx
index d4d86fe..7d1b38e 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 d202a1c..4a14498 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 ad9b8d8..60ce65f 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 8afb203..948265f 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 dc31509..dc05e34 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"/>


More information about the Libreoffice-commits mailing list