diff options
-rw-r--r-- | compilerplugins/clang/writeonlyvars.cxx | 2 | ||||
-rw-r--r-- | framework/source/uielement/generictoolbarcontroller.cxx | 42 | ||||
-rw-r--r-- | framework/source/uielement/toolbarmanager.cxx | 2 | ||||
-rw-r--r-- | framework/source/uielement/toolbarmerger.cxx | 2 | ||||
-rw-r--r-- | include/framework/generictoolbarcontroller.hxx (renamed from framework/inc/uielement/generictoolbarcontroller.hxx) | 12 | ||||
-rw-r--r-- | include/svtools/generictoolboxcontroller.hxx | 74 | ||||
-rw-r--r-- | sfx2/source/sidebar/ControllerFactory.cxx | 7 | ||||
-rw-r--r-- | solenv/clang-format/excludelist | 4 | ||||
-rw-r--r-- | svtools/Library_svt.mk | 1 | ||||
-rw-r--r-- | svtools/source/uno/generictoolboxcontroller.cxx | 224 |
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: */ |