diff options
author | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2015-11-16 12:23:25 +0100 |
---|---|---|
committer | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2015-11-16 14:48:47 +0000 |
commit | 40fa83871e18bf7ff54f853e6b665f207ee8fb78 (patch) | |
tree | 01d9d3c2a627e1b38ed7451d0be89cb045692de7 /svtools | |
parent | 396b5f411f7ecc7d600efdc0bb2381a7d1ed6d88 (diff) |
Move CommandInfoProvider to vcl and use it from there
Change-Id: If7e3ef81cad8974bc54f359096e3ecc700fa62d6
Reviewed-on: https://gerrit.libreoffice.org/19984
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Diffstat (limited to 'svtools')
-rw-r--r-- | svtools/Library_svt.mk | 1 | ||||
-rw-r--r-- | svtools/source/misc/commandinfoprovider.cxx | 317 |
2 files changed, 0 insertions, 318 deletions
diff --git a/svtools/Library_svt.mk b/svtools/Library_svt.mk index 19779cb24d76..9e30e77037a6 100644 --- a/svtools/Library_svt.mk +++ b/svtools/Library_svt.mk @@ -172,7 +172,6 @@ $(eval $(call gb_Library_add_exception_objects,svt,\ svtools/source/misc/acceleratorexecute \ svtools/source/misc/bindablecontrolhelper \ svtools/source/misc/cliplistener \ - svtools/source/misc/commandinfoprovider \ svtools/source/misc/dialogclosedlistener \ svtools/source/misc/dialogcontrolling \ svtools/source/misc/ehdl \ diff --git a/svtools/source/misc/commandinfoprovider.cxx b/svtools/source/misc/commandinfoprovider.cxx deleted file mode 100644 index 3536ba47e794..000000000000 --- a/svtools/source/misc/commandinfoprovider.cxx +++ /dev/null @@ -1,317 +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/commandinfoprovider.hxx> -#include <svtools/acceleratorexecute.hxx> -#include <comphelper/processfactory.hxx> -#include <cppuhelper/compbase.hxx> -#include <cppuhelper/basemutex.hxx> - -#include <com/sun/star/frame/ModuleManager.hpp> -#include <com/sun/star/frame/theUICommandDescription.hpp> -#include <com/sun/star/ui/GlobalAcceleratorConfiguration.hpp> -#include <com/sun/star/ui/XUIConfigurationManagerSupplier.hpp> -#include <com/sun/star/ui/theModuleUIConfigurationManagerSupplier.hpp> - -using namespace css; -using namespace css::uno; - - -namespace -{ - typedef ::cppu::WeakComponentImplHelper < - css::lang::XEventListener - > FrameListenerInterfaceBase; - class FrameListener - : public ::cppu::BaseMutex, - public FrameListenerInterfaceBase - { - public: - FrameListener (svt::CommandInfoProvider& rInfoProvider, const Reference<frame::XFrame>& rxFrame) - : FrameListenerInterfaceBase(m_aMutex), - mrInfoProvider(rInfoProvider), - mxFrame(rxFrame) - { - if (mxFrame.is()) - mxFrame->addEventListener(this); - } - virtual ~FrameListener() - { - } - virtual void SAL_CALL disposing() override - { - if (mxFrame.is()) - mxFrame->removeEventListener(this); - } - virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent) - throw (css::uno::RuntimeException, std::exception) override - { - (void)rEvent; - mrInfoProvider.SetFrame(nullptr); - mxFrame = nullptr; - } - - private: - svt::CommandInfoProvider& mrInfoProvider; - Reference<frame::XFrame> mxFrame; - }; -} - -namespace svt { - -CommandInfoProvider& CommandInfoProvider::Instance() -{ - static CommandInfoProvider aProvider; - return aProvider; -} - -CommandInfoProvider::CommandInfoProvider() - : mxContext(comphelper::getProcessComponentContext()), - mxCachedDataFrame(), - mxCachedDocumentAcceleratorConfiguration(), - mxCachedModuleAcceleratorConfiguration(), - mxCachedGlobalAcceleratorConfiguration(), - msCachedModuleIdentifier(), - mxFrameListener() -{ -} - -CommandInfoProvider::~CommandInfoProvider() -{ - if (mxFrameListener.is()) - { - mxFrameListener->dispose(); - mxFrameListener = nullptr; - } -} - - -OUString CommandInfoProvider::GetLabelForCommand ( - const OUString& rsCommandName, - const Reference<frame::XFrame>& rxFrame) -{ - SetFrame(rxFrame); - - return GetCommandProperty("Name", rsCommandName); -} - -OUString CommandInfoProvider::GetTooltipForCommand ( - const OUString& rsCommandName, - const Reference<frame::XFrame>& rxFrame, - bool bIncludeShortcut) -{ - SetFrame(rxFrame); - - OUString sLabel (GetCommandProperty("TooltipLabel", rsCommandName)); - if (sLabel.isEmpty()) - sLabel = GetLabelForCommand(rsCommandName, rxFrame); - - if (bIncludeShortcut) { - const OUString sShortCut(GetCommandShortcut(rsCommandName, rxFrame)); - if (!sShortCut.isEmpty()) - return sLabel + " (" + sShortCut + ")"; - } - return sLabel; -} - -OUString CommandInfoProvider::GetCommandShortcut (const OUString& rsCommandName, - const Reference<frame::XFrame>& rxFrame) -{ - SetFrame(rxFrame); - - OUString sShortcut; - - sShortcut = RetrieveShortcutsFromConfiguration(GetDocumentAcceleratorConfiguration(), rsCommandName); - if (sShortcut.getLength() > 0) - return sShortcut; - - sShortcut = RetrieveShortcutsFromConfiguration(GetModuleAcceleratorConfiguration(), rsCommandName); - if (sShortcut.getLength() > 0) - return sShortcut; - - sShortcut = RetrieveShortcutsFromConfiguration(GetGlobalAcceleratorConfiguration(), rsCommandName); - if (sShortcut.getLength() > 0) - return sShortcut; - - return OUString(); -} - -void CommandInfoProvider::SetFrame (const Reference<frame::XFrame>& rxFrame) -{ - if (rxFrame != mxCachedDataFrame) - { - // Detach from the old frame. - if (mxFrameListener.is()) - { - mxFrameListener->dispose(); - mxFrameListener = nullptr; - } - - // Release objects that are tied to the old frame. - mxCachedDocumentAcceleratorConfiguration = nullptr; - mxCachedModuleAcceleratorConfiguration = nullptr; - msCachedModuleIdentifier.clear(); - mxCachedDataFrame = rxFrame; - - // Connect to the new frame. - if (rxFrame.is()) - mxFrameListener = new FrameListener(*this, rxFrame); - } -} - -Reference<ui::XAcceleratorConfiguration> CommandInfoProvider::GetDocumentAcceleratorConfiguration() -{ - if ( ! mxCachedDocumentAcceleratorConfiguration.is()) - { - // Get the accelerator configuration for the document. - if (mxCachedDataFrame.is()) - { - Reference<frame::XController> xController = mxCachedDataFrame->getController(); - if (xController.is()) - { - Reference<frame::XModel> xModel (xController->getModel()); - if (xModel.is()) - { - Reference<ui::XUIConfigurationManagerSupplier> xSupplier (xModel, UNO_QUERY); - if (xSupplier.is()) - { - Reference<ui::XUIConfigurationManager> xConfigurationManager( - xSupplier->getUIConfigurationManager(), - UNO_QUERY); - if (xConfigurationManager.is()) - { - mxCachedDocumentAcceleratorConfiguration = xConfigurationManager->getShortCutManager(); - } - } - } - } - } - } - return mxCachedDocumentAcceleratorConfiguration; -} - -Reference<ui::XAcceleratorConfiguration> CommandInfoProvider::GetModuleAcceleratorConfiguration() -{ - if ( ! mxCachedModuleAcceleratorConfiguration.is()) - { - try - { - Reference<ui::XModuleUIConfigurationManagerSupplier> xSupplier = ui::theModuleUIConfigurationManagerSupplier::get(mxContext); - Reference<ui::XUIConfigurationManager> xManager ( - xSupplier->getUIConfigurationManager(GetModuleIdentifier())); - if (xManager.is()) - { - mxCachedModuleAcceleratorConfiguration = xManager->getShortCutManager(); - } - } - catch (Exception&) - { - } - } - return mxCachedModuleAcceleratorConfiguration; -} - -Reference<ui::XAcceleratorConfiguration> CommandInfoProvider::GetGlobalAcceleratorConfiguration() -{ - // Get the global accelerator configuration. - if ( ! mxCachedGlobalAcceleratorConfiguration.is()) - { - mxCachedGlobalAcceleratorConfiguration = ui::GlobalAcceleratorConfiguration::create(mxContext); - } - - return mxCachedGlobalAcceleratorConfiguration; -} - -OUString CommandInfoProvider::GetModuleIdentifier() -{ - if (msCachedModuleIdentifier.getLength() == 0) - { - Reference<frame::XModuleManager2> xModuleManager = frame::ModuleManager::create(mxContext); - msCachedModuleIdentifier = xModuleManager->identify(mxCachedDataFrame); - } - return msCachedModuleIdentifier; -} - -OUString CommandInfoProvider::RetrieveShortcutsFromConfiguration( - const Reference<ui::XAcceleratorConfiguration>& rxConfiguration, - const OUString& rsCommandName) -{ - if (rxConfiguration.is()) - { - try - { - Sequence<OUString> aCommands { rsCommandName }; - - Sequence<Any> aKeyCodes (rxConfiguration->getPreferredKeyEventsForCommandList(aCommands)); - if (aCommands.getLength() == 1) - { - css::awt::KeyEvent aKeyEvent; - if (aKeyCodes[0] >>= aKeyEvent) - { - return svt::AcceleratorExecute::st_AWTKey2VCLKey(aKeyEvent).GetName(); - } - } - } - catch (lang::IllegalArgumentException&) - { - } - } - return OUString(); -} - -Sequence<beans::PropertyValue> CommandInfoProvider::GetCommandProperties(const OUString& rsCommandName) -{ - Sequence<beans::PropertyValue> aProperties; - - try - { - const OUString sModuleIdentifier (GetModuleIdentifier()); - if (sModuleIdentifier.getLength() > 0) - { - Reference<container::XNameAccess> xNameAccess = frame::theUICommandDescription::get(mxContext); - Reference<container::XNameAccess> xUICommandLabels; - if (xNameAccess->getByName(sModuleIdentifier) >>= xUICommandLabels) - xUICommandLabels->getByName(rsCommandName) >>= aProperties; - } - } - catch (Exception&) - { - } - - return aProperties; -} - -OUString CommandInfoProvider::GetCommandProperty(const OUString& rsProperty, const OUString& rsCommandName) -{ - const Sequence<beans::PropertyValue> aProperties (GetCommandProperties(rsCommandName)); - for (sal_Int32 nIndex=0; nIndex<aProperties.getLength(); ++nIndex) - { - if (aProperties[nIndex].Name == rsProperty) - { - OUString sLabel; - aProperties[nIndex].Value >>= sLabel; - return sLabel; - } - } - return OUString(); -} - -} // end of namespace svt - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |