summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Monastirsky <momonasmon@gmail.com>2020-08-13 01:05:59 +0300
committerMaxim Monastirsky <momonasmon@gmail.com>2020-08-14 17:03:55 +0200
commit7bb20ab2e84cf4d84d24bfcd8103946e92f2ae06 (patch)
treee86cc948a970fb0f68af2dc229527ac79992cb51
parentc5301f215fec9016c3a75ff4a6a0c6c22f152718 (diff)
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@gmail.com>
-rw-r--r--compilerplugins/clang/writeonlyvars.cxx2
-rw-r--r--framework/source/uielement/generictoolbarcontroller.cxx42
-rw-r--r--framework/source/uielement/toolbarmanager.cxx2
-rw-r--r--framework/source/uielement/toolbarmerger.cxx2
-rw-r--r--include/framework/generictoolbarcontroller.hxx (renamed from framework/inc/uielement/generictoolbarcontroller.hxx)12
-rw-r--r--include/svtools/generictoolboxcontroller.hxx74
-rw-r--r--sfx2/source/sidebar/ControllerFactory.cxx7
-rw-r--r--solenv/clang-format/excludelist4
-rw-r--r--svtools/Library_svt.mk1
-rw-r--r--svtools/source/uno/generictoolboxcontroller.cxx224
10 files changed, 55 insertions, 315 deletions
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
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: */