diff options
author | Maxim Monastirsky <momonasmon@gmail.com> | 2020-08-13 01:05:59 +0300 |
---|---|---|
committer | Maxim Monastirsky <momonasmon@gmail.com> | 2020-08-14 17:03:55 +0200 |
commit | 7bb20ab2e84cf4d84d24bfcd8103946e92f2ae06 (patch) | |
tree | e86cc948a970fb0f68af2dc229527ac79992cb51 /framework | |
parent | c5301f215fec9016c3a75ff4a6a0c6c22f152718 (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>
Diffstat (limited to 'framework')
-rw-r--r-- | framework/inc/uielement/generictoolbarcontroller.hxx | 71 | ||||
-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 |
4 files changed, 43 insertions, 74 deletions
diff --git a/framework/inc/uielement/generictoolbarcontroller.hxx b/framework/inc/uielement/generictoolbarcontroller.hxx deleted file mode 100644 index 35934818ccb7..000000000000 --- a/framework/inc/uielement/generictoolbarcontroller.hxx +++ /dev/null @@ -1,71 +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_FRAMEWORK_INC_UIELEMENT_GENERICTOOLBARCONTROLLER_HXX -#define INCLUDED_FRAMEWORK_INC_UIELEMENT_GENERICTOOLBARCONTROLLER_HXX - -#include <svtools/toolboxcontroller.hxx> -#include <vcl/vclptr.hxx> - -class ToolBox; - -namespace framework -{ - -class GenericToolbarController final : public svt::ToolboxController -{ - public: - GenericToolbarController( const css::uno::Reference< css::uno::XComponentContext >& rxContext, - const css::uno::Reference< css::frame::XFrame >& rFrame, - ToolBox* pToolBar, - sal_uInt16 nID, - const OUString& aCommand ); - virtual ~GenericToolbarController() 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( GenericToolbarController, ExecuteHdl_Impl, void*, void ); - - struct ExecuteInfo - { - css::uno::Reference< css::frame::XDispatch > xDispatch; - css::util::URL aTargetURL; - css::uno::Sequence< css::beans::PropertyValue > aArgs; - }; - - private: - VclPtr<ToolBox> m_xToolbar; - sal_uInt16 m_nID; - bool m_bEnumCommand : 1, - m_bMadeInvisible : 1; - OUString m_aEnumCommand; -}; - -} - -#endif // INCLUDED_FRAMEWORK_INC_UIELEMENT_GENERICTOOLBARCONTROLLER_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 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> |