[Libreoffice-commits] core.git: compilerplugins/clang framework/inc framework/source include/framework include/svtools sfx2/source solenv/clang-format svtools/Library_svt.mk svtools/source

Maxim Monastirsky (via logerrit) logerrit at kemper.freedesktop.org
Fri Aug 14 15:04:39 UTC 2020


 compilerplugins/clang/writeonlyvars.cxx                 |    2 
 framework/source/uielement/generictoolbarcontroller.cxx |   42 ++-
 framework/source/uielement/toolbarmanager.cxx           |    2 
 framework/source/uielement/toolbarmerger.cxx            |    2 
 include/framework/generictoolbarcontroller.hxx          |   12 
 include/svtools/generictoolboxcontroller.hxx            |   74 -----
 sfx2/source/sidebar/ControllerFactory.cxx               |    7 
 solenv/clang-format/excludelist                         |    4 
 svtools/Library_svt.mk                                  |    1 
 svtools/source/uno/generictoolboxcontroller.cxx         |  224 ----------------
 10 files changed, 55 insertions(+), 315 deletions(-)

New commits:
commit 7bb20ab2e84cf4d84d24bfcd8103946e92f2ae06
Author:     Maxim Monastirsky <momonasmon at gmail.com>
AuthorDate: Thu Aug 13 01:05:59 2020 +0300
Commit:     Maxim Monastirsky <momonasmon at gmail.com>
CommitDate: Fri Aug 14 17:03:55 2020 +0200

    One toolbar generic controller is enough
    
    The one from framework is more feature complete, so use that one.
    
    Change-Id: I499f0ae1d20c588cfc04beebc643819559325882
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100726
    Tested-by: Jenkins
    Reviewed-by: Maxim Monastirsky <momonasmon at gmail.com>

diff --git a/compilerplugins/clang/writeonlyvars.cxx b/compilerplugins/clang/writeonlyvars.cxx
index 6161b428557a..51a967dac8a0 100644
--- a/compilerplugins/clang/writeonlyvars.cxx
+++ b/compilerplugins/clang/writeonlyvars.cxx
@@ -252,8 +252,6 @@ void WriteOnlyVars::run()
             return;
         if (loplugin::isSamePathname(fn, SRCDIR "/svtools/source/filter/SvFilterOptionsDialog.cxx"))
             return;
-        if (loplugin::isSamePathname(fn, SRCDIR "/svtools/source/uno/generictoolboxcontroller.cxx"))
-            return;
         if (loplugin::isSamePathname(fn, SRCDIR "/svtools/source/java/javainteractionhandler.cxx"))
             return;
         if (loplugin::isSamePathname(fn, SRCDIR "/basic/source/classes/sbunoobj.cxx"))
diff --git a/framework/source/uielement/generictoolbarcontroller.cxx b/framework/source/uielement/generictoolbarcontroller.cxx
index 8bea883d90d6..f8dc874b2902 100644
--- a/framework/source/uielement/generictoolbarcontroller.cxx
+++ b/framework/source/uielement/generictoolbarcontroller.cxx
@@ -17,7 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#include <uielement/generictoolbarcontroller.hxx>
+#include <framework/generictoolbarcontroller.hxx>
 
 #include <com/sun/star/util/XURLTransformer.hpp>
 #include <com/sun/star/frame/XDispatchProvider.hpp>
@@ -28,6 +28,7 @@
 
 #include <vcl/svapp.hxx>
 #include <vcl/toolbox.hxx>
+#include <vcl/weld.hxx>
 #include <tools/urlobj.hxx>
 #include <strings.hrc>
 #include <classes/fwkresid.hxx>
@@ -92,6 +93,20 @@ GenericToolbarController::GenericToolbarController( const Reference< XComponentC
 {
     if ( m_bEnumCommand )
         addStatusListener( getMasterCommand( aCommand ) );
+
+    addStatusListener( aCommand );
+
+    // Initialization is done through ctor
+    m_bInitialized = true;
+}
+
+GenericToolbarController::GenericToolbarController( const Reference< XComponentContext >&    rxContext,
+                                                    const Reference< XFrame >&               rFrame,
+                                                    weld::Toolbar&                           rToolbar,
+                                                    const OUString&                          aCommand ) :
+    GenericToolbarController( rxContext, rFrame, nullptr, 0, aCommand )
+{
+    m_pToolbar = &rToolbar;
 }
 
 GenericToolbarController::~GenericToolbarController()
@@ -104,6 +119,7 @@ void SAL_CALL GenericToolbarController::dispose()
 
     svt::ToolboxController::dispose();
 
+    m_pToolbar = nullptr;
     m_xToolbar.clear();
     m_nID = 0;
 }
@@ -159,6 +175,30 @@ void GenericToolbarController::statusChanged( const FeatureStateEvent& Event )
     if ( m_bDisposed )
         return;
 
+    if ( m_pToolbar )
+    {
+        OString sId = m_aCommandURL.toUtf8();
+
+        m_pToolbar->set_item_sensitive(sId, Event.IsEnabled);
+
+        bool        bValue;
+        OUString    aStrValue;
+
+        if ( Event.State >>= bValue )
+        {
+            // Boolean, treat it as checked/unchecked
+            m_pToolbar->set_item_active(sId, bValue);
+        }
+        else if ( Event.State >>= aStrValue )
+        {
+            m_pToolbar->set_item_label(sId, aStrValue);
+        }
+        else
+            m_pToolbar->set_item_active(sId, false);
+
+        return;
+    }
+
     if ( !m_xToolbar )
         return;
 
diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx
index e3d8a20f8b4b..2582bcd109d9 100644
--- a/framework/source/uielement/toolbarmanager.cxx
+++ b/framework/source/uielement/toolbarmanager.cxx
@@ -23,7 +23,7 @@
 
 #include <uielement/toolbarmanager.hxx>
 
-#include <uielement/generictoolbarcontroller.hxx>
+#include <framework/generictoolbarcontroller.hxx>
 #include <uielement/styletoolbarcontroller.hxx>
 #include <properties.h>
 #include <framework/sfxhelperfunctions.hxx>
diff --git a/framework/source/uielement/toolbarmerger.cxx b/framework/source/uielement/toolbarmerger.cxx
index b2307a9483de..c012576fa35b 100644
--- a/framework/source/uielement/toolbarmerger.cxx
+++ b/framework/source/uielement/toolbarmerger.cxx
@@ -18,7 +18,7 @@
  */
 
 #include <uielement/toolbarmerger.hxx>
-#include <uielement/generictoolbarcontroller.hxx>
+#include <framework/generictoolbarcontroller.hxx>
 
 #include <uielement/buttontoolbarcontroller.hxx>
 #include <uielement/comboboxtoolbarcontroller.hxx>
diff --git a/framework/inc/uielement/generictoolbarcontroller.hxx b/include/framework/generictoolbarcontroller.hxx
similarity index 84%
rename from framework/inc/uielement/generictoolbarcontroller.hxx
rename to include/framework/generictoolbarcontroller.hxx
index 35934818ccb7..bebdf78621c2 100644
--- a/framework/inc/uielement/generictoolbarcontroller.hxx
+++ b/include/framework/generictoolbarcontroller.hxx
@@ -17,9 +17,9 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-#ifndef INCLUDED_FRAMEWORK_INC_UIELEMENT_GENERICTOOLBARCONTROLLER_HXX
-#define INCLUDED_FRAMEWORK_INC_UIELEMENT_GENERICTOOLBARCONTROLLER_HXX
+#pragma once
 
+#include <framework/fwkdllapi.h>
 #include <svtools/toolboxcontroller.hxx>
 #include <vcl/vclptr.hxx>
 
@@ -28,7 +28,7 @@ class ToolBox;
 namespace framework
 {
 
-class GenericToolbarController final : public svt::ToolboxController
+class FWK_DLLPUBLIC GenericToolbarController final : public svt::ToolboxController
 {
     public:
         GenericToolbarController( const css::uno::Reference< css::uno::XComponentContext >& rxContext,
@@ -36,6 +36,10 @@ class GenericToolbarController final : public svt::ToolboxController
                                   ToolBox* pToolBar,
                                   sal_uInt16 nID,
                                   const OUString& aCommand );
+        GenericToolbarController( const css::uno::Reference< css::uno::XComponentContext >& rxContext,
+                                  const css::uno::Reference< css::frame::XFrame >& rFrame,
+                                  weld::Toolbar& rToolBar,
+                                  const OUString& aCommand );
         virtual ~GenericToolbarController() override;
 
         // XComponent
@@ -66,6 +70,4 @@ class GenericToolbarController final : public svt::ToolboxController
 
 }
 
-#endif // INCLUDED_FRAMEWORK_INC_UIELEMENT_GENERICTOOLBARCONTROLLER_HXX
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svtools/generictoolboxcontroller.hxx b/include/svtools/generictoolboxcontroller.hxx
deleted file mode 100644
index 7f12c466cd14..000000000000
--- a/include/svtools/generictoolboxcontroller.hxx
+++ /dev/null
@@ -1,74 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_SVTOOLS_GENERICTOOLBOXCONTROLLER_HXX
-#define INCLUDED_SVTOOLS_GENERICTOOLBOXCONTROLLER_HXX
-
-#include <config_options.h>
-#include <svtools/svtdllapi.h>
-#include <svtools/toolboxcontroller.hxx>
-#include <vcl/toolbox.hxx>
-
-namespace weld
-{
-    class Toolbar;
-}
-
-namespace svt
-{
-
-class UNLESS_MERGELIBS(SVT_DLLPUBLIC) GenericToolboxController final : public svt::ToolboxController
-{
-public:
-    GenericToolboxController( const css::uno::Reference< css::uno::XComponentContext >& rxContext,
-                              const css::uno::Reference< css::frame::XFrame >& rFrame,
-                              ToolBox* pToolBox,
-                              sal_uInt16   nID,
-                              const OUString& aCommand );
-
-    GenericToolboxController(const css::uno::Reference< css::uno::XComponentContext >& rxContext,
-                             const css::uno::Reference< css::frame::XFrame >& rFrame,
-                             weld::Toolbar& rToolbar,
-                             const OUString& rCommand);
-
-    virtual ~GenericToolboxController() override;
-
-    // XComponent
-    virtual void SAL_CALL dispose() override;
-
-    // XToolbarController
-    virtual void SAL_CALL execute( sal_Int16 KeyModifier ) override;
-
-    // XStatusListener
-    virtual void SAL_CALL statusChanged( const css::frame::FeatureStateEvent& Event ) override;
-
-    DECL_STATIC_LINK( GenericToolboxController, ExecuteHdl_Impl, void*, void );
-
-private:
-    VclPtr<ToolBox>    m_xToolbox;
-    sal_uInt16         m_nID;
-
-    weld::Toolbar*     m_pToolbox;
-};
-
-}
-
-#endif // INCLUDED_SVTOOLS_GENERICTOOLBOXCONTROLLER_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/source/sidebar/ControllerFactory.cxx b/sfx2/source/sidebar/ControllerFactory.cxx
index 2d887bd48536..692ee10628d4 100644
--- a/sfx2/source/sidebar/ControllerFactory.cxx
+++ b/sfx2/source/sidebar/ControllerFactory.cxx
@@ -26,9 +26,10 @@
 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
 
 #include <framework/sfxhelperfunctions.hxx>
+#include <framework/generictoolbarcontroller.hxx>
+#include <vcl/toolbox.hxx>
 #include <vcl/commandinfoprovider.hxx>
 #include <vcl/weldutils.hxx>
-#include <svtools/generictoolboxcontroller.hxx>
 #include <comphelper/processfactory.hxx>
 #include <toolkit/helper/vclunohelper.hxx>
 
@@ -69,7 +70,7 @@ Reference<frame::XToolbarController> ControllerFactory::CreateToolBoxController(
     if ( ! xController.is())
     {
         xController.set(
-            static_cast<XWeak*>(new svt::GenericToolboxController(
+            static_cast<XWeak*>(new framework::GenericToolbarController(
                     ::comphelper::getProcessComponentContext(),
                     rxFrame,
                     pToolBox,
@@ -155,7 +156,7 @@ Reference<frame::XToolbarController> ControllerFactory::CreateToolBoxController(
     if (!xController.is())
     {
         xController.set(
-            static_cast<XWeak*>(new svt::GenericToolboxController(
+            static_cast<XWeak*>(new framework::GenericToolbarController(
                     ::comphelper::getProcessComponentContext(),
                     rxFrame,
                     rToolbar,
diff --git a/solenv/clang-format/excludelist b/solenv/clang-format/excludelist
index f8dc69f04d38..281b92c86875 100644
--- a/solenv/clang-format/excludelist
+++ b/solenv/clang-format/excludelist
@@ -4922,7 +4922,6 @@ framework/inc/uielement/fontmenucontroller.hxx
 framework/inc/uielement/fontsizemenucontroller.hxx
 framework/inc/uielement/footermenucontroller.hxx
 framework/inc/uielement/genericstatusbarcontroller.hxx
-framework/inc/uielement/generictoolbarcontroller.hxx
 framework/inc/uielement/headermenucontroller.hxx
 framework/inc/uielement/imagebuttontoolbarcontroller.hxx
 framework/inc/uielement/itemcontainer.hxx
@@ -6046,6 +6045,7 @@ include/framework/documentundoguard.hxx
 include/framework/framecontainer.hxx
 include/framework/framelistanalyzer.hxx
 include/framework/gate.hxx
+include/framework/generictoolbarcontroller.hxx
 include/framework/imutex.hxx
 include/framework/interaction.hxx
 include/framework/sfxhelperfunctions.hxx
@@ -6571,7 +6571,6 @@ include/svtools/extcolorcfg.hxx
 include/svtools/filechangedchecker.hxx
 include/svtools/fontsubstconfig.hxx
 include/svtools/framestatuslistener.hxx
-include/svtools/generictoolboxcontroller.hxx
 include/svtools/genericunodialog.hxx
 include/svtools/helpids.h
 include/svtools/helpopt.hxx
@@ -13087,7 +13086,6 @@ svtools/source/uno/addrtempuno.cxx
 svtools/source/uno/fpicker.cxx
 svtools/source/uno/fpicker.hxx
 svtools/source/uno/framestatuslistener.cxx
-svtools/source/uno/generictoolboxcontroller.cxx
 svtools/source/uno/genericunodialog.cxx
 svtools/source/uno/miscservices.cxx
 svtools/source/uno/popupmenucontrollerbase.cxx
diff --git a/svtools/Library_svt.mk b/svtools/Library_svt.mk
index b7ed7657d691..5072c5917592 100644
--- a/svtools/Library_svt.mk
+++ b/svtools/Library_svt.mk
@@ -166,7 +166,6 @@ $(eval $(call gb_Library_add_exception_objects,svt,\
     svtools/source/uno/addrtempuno \
     svtools/source/uno/fpicker \
     svtools/source/uno/framestatuslistener \
-    svtools/source/uno/generictoolboxcontroller \
     svtools/source/uno/genericunodialog \
     svtools/source/uno/miscservices \
     svtools/source/uno/popupmenucontrollerbase \
diff --git a/svtools/source/uno/generictoolboxcontroller.cxx b/svtools/source/uno/generictoolboxcontroller.cxx
deleted file mode 100644
index 57f7f5553b44..000000000000
--- a/svtools/source/uno/generictoolboxcontroller.cxx
+++ /dev/null
@@ -1,224 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include <svtools/generictoolboxcontroller.hxx>
-
-#include <com/sun/star/util/XURLTransformer.hpp>
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/frame/status/ItemStatus.hpp>
-#include <com/sun/star/frame/XDispatch.hpp>
-
-#include <vcl/svapp.hxx>
-#include <vcl/weld.hxx>
-
-using namespace css::awt;
-using namespace css::uno;
-using namespace css::beans;
-using namespace css::lang;
-using namespace css::frame;
-using namespace css::frame::status;
-using namespace css::util;
-
-namespace svt
-{
-
-namespace {
-
-struct ExecuteInfo
-{
-    css::uno::Reference< css::frame::XDispatch >     xDispatch;
-    css::util::URL                                                aTargetURL;
-    css::uno::Sequence< css::beans::PropertyValue >  aArgs;
-};
-
-}
-
-GenericToolboxController::GenericToolboxController( const Reference< XComponentContext >& rxContext,
-                                                    const Reference< XFrame >&            rFrame,
-                                                    ToolBox*                              pToolbox,
-                                                    sal_uInt16                            nID,
-                                                    const OUString&                       aCommand )
-    : svt::ToolboxController( rxContext, rFrame, aCommand )
-    , m_xToolbox( pToolbox )
-    , m_nID( nID )
-    , m_pToolbox(nullptr)
-{
-    // Initialization is done through ctor
-    m_bInitialized = true;
-
-    // insert main command to our listener map
-    if ( !m_aCommandURL.isEmpty() )
-        m_aListenerMap.emplace( aCommand, Reference< XDispatch >() );
-}
-
-GenericToolboxController::GenericToolboxController( const Reference< XComponentContext >& rxContext,
-                                                    const Reference< XFrame >&            rFrame,
-                                                    weld::Toolbar&                        rToolbar,
-                                                    const OUString&                       aCommand )
-    : svt::ToolboxController( rxContext, rFrame, aCommand )
-    , m_xToolbox( nullptr )
-    , m_nID( 0 )
-    , m_pToolbox(&rToolbar)
-{
-    // Initialization is done through ctor
-    m_bInitialized = true;
-
-    // insert main command to our listener map
-    if ( !m_aCommandURL.isEmpty() )
-        m_aListenerMap.emplace( aCommand, Reference< XDispatch >() );
-}
-
-GenericToolboxController::~GenericToolboxController()
-{
-}
-
-void SAL_CALL GenericToolboxController::dispose()
-{
-    SolarMutexGuard aSolarMutexGuard;
-    m_xToolbox.clear();
-    m_nID = 0;
-    m_pToolbox = nullptr;
-    svt::ToolboxController::dispose();
-}
-
-void SAL_CALL GenericToolboxController::execute( sal_Int16 /*KeyModifier*/ )
-{
-    Reference< XDispatch >       xDispatch;
-    OUString                     aCommandURL;
-
-    {
-        SolarMutexGuard aSolarMutexGuard;
-
-        if ( m_bDisposed )
-            throw DisposedException();
-
-        if ( m_bInitialized &&
-             m_xFrame.is() &&
-             !m_aCommandURL.isEmpty() )
-        {
-            aCommandURL = m_aCommandURL;
-            URLToDispatchMap::iterator pIter = m_aListenerMap.find( m_aCommandURL );
-            if ( pIter != m_aListenerMap.end() )
-                xDispatch = pIter->second;
-        }
-    }
-
-    if ( !xDispatch.is() )
-        return;
-
-    css::util::URL aTargetURL;
-    Sequence<PropertyValue>   aArgs;
-
-    aTargetURL.Complete = aCommandURL;
-    if ( m_xUrlTransformer.is() )
-        m_xUrlTransformer->parseStrict( aTargetURL );
-
-    // Execute dispatch asynchronously
-    ExecuteInfo* pExecuteInfo = new ExecuteInfo;
-    pExecuteInfo->xDispatch     = xDispatch;
-    pExecuteInfo->aTargetURL    = aTargetURL;
-    pExecuteInfo->aArgs         = aArgs;
-    Application::PostUserEvent( LINK(nullptr, GenericToolboxController , ExecuteHdl_Impl), pExecuteInfo );
-}
-
-void GenericToolboxController::statusChanged( const FeatureStateEvent& Event )
-{
-    SolarMutexGuard aSolarMutexGuard;
-
-    if ( m_bDisposed )
-        return;
-
-    if (m_xToolbox)
-    {
-        m_xToolbox->EnableItem( m_nID, Event.IsEnabled );
-
-        ToolBoxItemBits nItemBits = m_xToolbox->GetItemBits( m_nID );
-        nItemBits &= ~ToolBoxItemBits::CHECKABLE;
-        TriState eTri = TRISTATE_FALSE;
-
-        bool        bValue;
-        OUString    aStrValue;
-        ItemStatus  aItemState;
-
-        if ( Event.State >>= bValue )
-        {
-            // Boolean, treat it as checked/unchecked
-            m_xToolbox->SetItemBits( m_nID, nItemBits );
-            m_xToolbox->CheckItem( m_nID, bValue );
-            if ( bValue )
-                eTri = TRISTATE_TRUE;
-            nItemBits |= ToolBoxItemBits::CHECKABLE;
-        }
-        else if ( Event.State >>= aStrValue )
-        {
-            m_xToolbox->SetItemText( m_nID, aStrValue );
-        }
-        else if ( Event.State >>= aItemState )
-        {
-            eTri = TRISTATE_INDET;
-            nItemBits |= ToolBoxItemBits::CHECKABLE;
-        }
-
-        m_xToolbox->SetItemState( m_nID, eTri );
-        m_xToolbox->SetItemBits( m_nID, nItemBits );
-    }
-
-    if (!m_pToolbox)
-        return;
-
-    OString sId = m_aCommandURL.toUtf8();
-
-    m_pToolbox->set_item_sensitive(sId, Event.IsEnabled);
-
-    bool        bValue;
-    OUString    aStrValue;
-
-    if ( Event.State >>= bValue )
-    {
-        // Boolean, treat it as checked/unchecked
-        m_pToolbox->set_item_active(sId, bValue);
-    }
-    else if ( Event.State >>= aStrValue )
-    {
-        m_pToolbox->set_item_label(sId, aStrValue);
-    }
-    else
-        m_pToolbox->set_item_active(sId, false);
-}
-
-IMPL_STATIC_LINK( GenericToolboxController, ExecuteHdl_Impl, void*, p, void )
-{
-   ExecuteInfo* pExecuteInfo = static_cast<ExecuteInfo*>(p);
-   try
-   {
-       // Asynchronous execution as this can lead to our own destruction!
-       // Framework can recycle our current frame and the layout manager disposes all user interface
-       // elements if a component gets detached from its frame!
-       pExecuteInfo->xDispatch->dispatch( pExecuteInfo->aTargetURL, pExecuteInfo->aArgs );
-   }
-   catch ( Exception& )
-   {
-   }
-   delete pExecuteInfo;
-}
-
-} // namespace
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list