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 /svtools/source/uno | |
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 'svtools/source/uno')
-rw-r--r-- | svtools/source/uno/generictoolboxcontroller.cxx | 224 |
1 files changed, 0 insertions, 224 deletions
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: */ |