From 7bb20ab2e84cf4d84d24bfcd8103946e92f2ae06 Mon Sep 17 00:00:00 2001 From: Maxim Monastirsky Date: Thu, 13 Aug 2020 01:05:59 +0300 Subject: 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 --- .../inc/uielement/generictoolbarcontroller.hxx | 71 ---------------------- .../source/uielement/generictoolbarcontroller.cxx | 42 ++++++++++++- framework/source/uielement/toolbarmanager.cxx | 2 +- framework/source/uielement/toolbarmerger.cxx | 2 +- 4 files changed, 43 insertions(+), 74 deletions(-) delete mode 100644 framework/inc/uielement/generictoolbarcontroller.hxx (limited to 'framework') 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 -#include - -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 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 +#include #include #include @@ -28,6 +28,7 @@ #include #include +#include #include #include #include @@ -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 -#include +#include #include #include #include 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 -#include +#include #include #include -- cgit