summaryrefslogtreecommitdiff
path: root/svtools
diff options
context:
space:
mode:
authorSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2015-11-16 12:23:25 +0100
committerSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>2015-11-16 14:48:47 +0000
commit40fa83871e18bf7ff54f853e6b665f207ee8fb78 (patch)
tree01d9d3c2a627e1b38ed7451d0be89cb045692de7 /svtools
parent396b5f411f7ecc7d600efdc0bb2381a7d1ed6d88 (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.mk1
-rw-r--r--svtools/source/misc/commandinfoprovider.cxx317
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: */