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>
This commit is contained in:
@@ -252,8 +252,6 @@ void WriteOnlyVars::run()
|
|||||||
return;
|
return;
|
||||||
if (loplugin::isSamePathname(fn, SRCDIR "/svtools/source/filter/SvFilterOptionsDialog.cxx"))
|
if (loplugin::isSamePathname(fn, SRCDIR "/svtools/source/filter/SvFilterOptionsDialog.cxx"))
|
||||||
return;
|
return;
|
||||||
if (loplugin::isSamePathname(fn, SRCDIR "/svtools/source/uno/generictoolboxcontroller.cxx"))
|
|
||||||
return;
|
|
||||||
if (loplugin::isSamePathname(fn, SRCDIR "/svtools/source/java/javainteractionhandler.cxx"))
|
if (loplugin::isSamePathname(fn, SRCDIR "/svtools/source/java/javainteractionhandler.cxx"))
|
||||||
return;
|
return;
|
||||||
if (loplugin::isSamePathname(fn, SRCDIR "/basic/source/classes/sbunoobj.cxx"))
|
if (loplugin::isSamePathname(fn, SRCDIR "/basic/source/classes/sbunoobj.cxx"))
|
||||||
|
@@ -17,7 +17,7 @@
|
|||||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
* 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/util/XURLTransformer.hpp>
|
||||||
#include <com/sun/star/frame/XDispatchProvider.hpp>
|
#include <com/sun/star/frame/XDispatchProvider.hpp>
|
||||||
@@ -28,6 +28,7 @@
|
|||||||
|
|
||||||
#include <vcl/svapp.hxx>
|
#include <vcl/svapp.hxx>
|
||||||
#include <vcl/toolbox.hxx>
|
#include <vcl/toolbox.hxx>
|
||||||
|
#include <vcl/weld.hxx>
|
||||||
#include <tools/urlobj.hxx>
|
#include <tools/urlobj.hxx>
|
||||||
#include <strings.hrc>
|
#include <strings.hrc>
|
||||||
#include <classes/fwkresid.hxx>
|
#include <classes/fwkresid.hxx>
|
||||||
@@ -92,6 +93,20 @@ GenericToolbarController::GenericToolbarController( const Reference< XComponentC
|
|||||||
{
|
{
|
||||||
if ( m_bEnumCommand )
|
if ( m_bEnumCommand )
|
||||||
addStatusListener( getMasterCommand( aCommand ) );
|
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()
|
GenericToolbarController::~GenericToolbarController()
|
||||||
@@ -104,6 +119,7 @@ void SAL_CALL GenericToolbarController::dispose()
|
|||||||
|
|
||||||
svt::ToolboxController::dispose();
|
svt::ToolboxController::dispose();
|
||||||
|
|
||||||
|
m_pToolbar = nullptr;
|
||||||
m_xToolbar.clear();
|
m_xToolbar.clear();
|
||||||
m_nID = 0;
|
m_nID = 0;
|
||||||
}
|
}
|
||||||
@@ -159,6 +175,30 @@ void GenericToolbarController::statusChanged( const FeatureStateEvent& Event )
|
|||||||
if ( m_bDisposed )
|
if ( m_bDisposed )
|
||||||
return;
|
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 )
|
if ( !m_xToolbar )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
#include <uielement/toolbarmanager.hxx>
|
#include <uielement/toolbarmanager.hxx>
|
||||||
|
|
||||||
#include <uielement/generictoolbarcontroller.hxx>
|
#include <framework/generictoolbarcontroller.hxx>
|
||||||
#include <uielement/styletoolbarcontroller.hxx>
|
#include <uielement/styletoolbarcontroller.hxx>
|
||||||
#include <properties.h>
|
#include <properties.h>
|
||||||
#include <framework/sfxhelperfunctions.hxx>
|
#include <framework/sfxhelperfunctions.hxx>
|
||||||
|
@@ -18,7 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <uielement/toolbarmerger.hxx>
|
#include <uielement/toolbarmerger.hxx>
|
||||||
#include <uielement/generictoolbarcontroller.hxx>
|
#include <framework/generictoolbarcontroller.hxx>
|
||||||
|
|
||||||
#include <uielement/buttontoolbarcontroller.hxx>
|
#include <uielement/buttontoolbarcontroller.hxx>
|
||||||
#include <uielement/comboboxtoolbarcontroller.hxx>
|
#include <uielement/comboboxtoolbarcontroller.hxx>
|
||||||
|
@@ -17,9 +17,9 @@
|
|||||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef INCLUDED_FRAMEWORK_INC_UIELEMENT_GENERICTOOLBARCONTROLLER_HXX
|
#pragma once
|
||||||
#define INCLUDED_FRAMEWORK_INC_UIELEMENT_GENERICTOOLBARCONTROLLER_HXX
|
|
||||||
|
|
||||||
|
#include <framework/fwkdllapi.h>
|
||||||
#include <svtools/toolboxcontroller.hxx>
|
#include <svtools/toolboxcontroller.hxx>
|
||||||
#include <vcl/vclptr.hxx>
|
#include <vcl/vclptr.hxx>
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ class ToolBox;
|
|||||||
namespace framework
|
namespace framework
|
||||||
{
|
{
|
||||||
|
|
||||||
class GenericToolbarController final : public svt::ToolboxController
|
class FWK_DLLPUBLIC GenericToolbarController final : public svt::ToolboxController
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GenericToolbarController( const css::uno::Reference< css::uno::XComponentContext >& rxContext,
|
GenericToolbarController( const css::uno::Reference< css::uno::XComponentContext >& rxContext,
|
||||||
@@ -36,6 +36,10 @@ class GenericToolbarController final : public svt::ToolboxController
|
|||||||
ToolBox* pToolBar,
|
ToolBox* pToolBar,
|
||||||
sal_uInt16 nID,
|
sal_uInt16 nID,
|
||||||
const OUString& aCommand );
|
const OUString& aCommand );
|
||||||
|
GenericToolbarController( const css::uno::Reference< css::uno::XComponentContext >& rxContext,
|
||||||
|
const css::uno::Reference< css::frame::XFrame >& rFrame,
|
||||||
|
weld::Toolbar& rToolBar,
|
||||||
|
const OUString& aCommand );
|
||||||
virtual ~GenericToolbarController() override;
|
virtual ~GenericToolbarController() override;
|
||||||
|
|
||||||
// XComponent
|
// XComponent
|
||||||
@@ -66,6 +70,4 @@ class GenericToolbarController final : public svt::ToolboxController
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // INCLUDED_FRAMEWORK_INC_UIELEMENT_GENERICTOOLBARCONTROLLER_HXX
|
|
||||||
|
|
||||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
@@ -1,74 +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_SVTOOLS_GENERICTOOLBOXCONTROLLER_HXX
|
|
||||||
#define INCLUDED_SVTOOLS_GENERICTOOLBOXCONTROLLER_HXX
|
|
||||||
|
|
||||||
#include <config_options.h>
|
|
||||||
#include <svtools/svtdllapi.h>
|
|
||||||
#include <svtools/toolboxcontroller.hxx>
|
|
||||||
#include <vcl/toolbox.hxx>
|
|
||||||
|
|
||||||
namespace weld
|
|
||||||
{
|
|
||||||
class Toolbar;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace svt
|
|
||||||
{
|
|
||||||
|
|
||||||
class UNLESS_MERGELIBS(SVT_DLLPUBLIC) GenericToolboxController final : public svt::ToolboxController
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
GenericToolboxController( const css::uno::Reference< css::uno::XComponentContext >& rxContext,
|
|
||||||
const css::uno::Reference< css::frame::XFrame >& rFrame,
|
|
||||||
ToolBox* pToolBox,
|
|
||||||
sal_uInt16 nID,
|
|
||||||
const OUString& aCommand );
|
|
||||||
|
|
||||||
GenericToolboxController(const css::uno::Reference< css::uno::XComponentContext >& rxContext,
|
|
||||||
const css::uno::Reference< css::frame::XFrame >& rFrame,
|
|
||||||
weld::Toolbar& rToolbar,
|
|
||||||
const OUString& rCommand);
|
|
||||||
|
|
||||||
virtual ~GenericToolboxController() 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( GenericToolboxController, ExecuteHdl_Impl, void*, void );
|
|
||||||
|
|
||||||
private:
|
|
||||||
VclPtr<ToolBox> m_xToolbox;
|
|
||||||
sal_uInt16 m_nID;
|
|
||||||
|
|
||||||
weld::Toolbar* m_pToolbox;
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // INCLUDED_SVTOOLS_GENERICTOOLBOXCONTROLLER_HXX
|
|
||||||
|
|
||||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
|
@@ -26,9 +26,10 @@
|
|||||||
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
|
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
|
||||||
|
|
||||||
#include <framework/sfxhelperfunctions.hxx>
|
#include <framework/sfxhelperfunctions.hxx>
|
||||||
|
#include <framework/generictoolbarcontroller.hxx>
|
||||||
|
#include <vcl/toolbox.hxx>
|
||||||
#include <vcl/commandinfoprovider.hxx>
|
#include <vcl/commandinfoprovider.hxx>
|
||||||
#include <vcl/weldutils.hxx>
|
#include <vcl/weldutils.hxx>
|
||||||
#include <svtools/generictoolboxcontroller.hxx>
|
|
||||||
#include <comphelper/processfactory.hxx>
|
#include <comphelper/processfactory.hxx>
|
||||||
#include <toolkit/helper/vclunohelper.hxx>
|
#include <toolkit/helper/vclunohelper.hxx>
|
||||||
|
|
||||||
@@ -69,7 +70,7 @@ Reference<frame::XToolbarController> ControllerFactory::CreateToolBoxController(
|
|||||||
if ( ! xController.is())
|
if ( ! xController.is())
|
||||||
{
|
{
|
||||||
xController.set(
|
xController.set(
|
||||||
static_cast<XWeak*>(new svt::GenericToolboxController(
|
static_cast<XWeak*>(new framework::GenericToolbarController(
|
||||||
::comphelper::getProcessComponentContext(),
|
::comphelper::getProcessComponentContext(),
|
||||||
rxFrame,
|
rxFrame,
|
||||||
pToolBox,
|
pToolBox,
|
||||||
@@ -155,7 +156,7 @@ Reference<frame::XToolbarController> ControllerFactory::CreateToolBoxController(
|
|||||||
if (!xController.is())
|
if (!xController.is())
|
||||||
{
|
{
|
||||||
xController.set(
|
xController.set(
|
||||||
static_cast<XWeak*>(new svt::GenericToolboxController(
|
static_cast<XWeak*>(new framework::GenericToolbarController(
|
||||||
::comphelper::getProcessComponentContext(),
|
::comphelper::getProcessComponentContext(),
|
||||||
rxFrame,
|
rxFrame,
|
||||||
rToolbar,
|
rToolbar,
|
||||||
|
@@ -4922,7 +4922,6 @@ framework/inc/uielement/fontmenucontroller.hxx
|
|||||||
framework/inc/uielement/fontsizemenucontroller.hxx
|
framework/inc/uielement/fontsizemenucontroller.hxx
|
||||||
framework/inc/uielement/footermenucontroller.hxx
|
framework/inc/uielement/footermenucontroller.hxx
|
||||||
framework/inc/uielement/genericstatusbarcontroller.hxx
|
framework/inc/uielement/genericstatusbarcontroller.hxx
|
||||||
framework/inc/uielement/generictoolbarcontroller.hxx
|
|
||||||
framework/inc/uielement/headermenucontroller.hxx
|
framework/inc/uielement/headermenucontroller.hxx
|
||||||
framework/inc/uielement/imagebuttontoolbarcontroller.hxx
|
framework/inc/uielement/imagebuttontoolbarcontroller.hxx
|
||||||
framework/inc/uielement/itemcontainer.hxx
|
framework/inc/uielement/itemcontainer.hxx
|
||||||
@@ -6046,6 +6045,7 @@ include/framework/documentundoguard.hxx
|
|||||||
include/framework/framecontainer.hxx
|
include/framework/framecontainer.hxx
|
||||||
include/framework/framelistanalyzer.hxx
|
include/framework/framelistanalyzer.hxx
|
||||||
include/framework/gate.hxx
|
include/framework/gate.hxx
|
||||||
|
include/framework/generictoolbarcontroller.hxx
|
||||||
include/framework/imutex.hxx
|
include/framework/imutex.hxx
|
||||||
include/framework/interaction.hxx
|
include/framework/interaction.hxx
|
||||||
include/framework/sfxhelperfunctions.hxx
|
include/framework/sfxhelperfunctions.hxx
|
||||||
@@ -6571,7 +6571,6 @@ include/svtools/extcolorcfg.hxx
|
|||||||
include/svtools/filechangedchecker.hxx
|
include/svtools/filechangedchecker.hxx
|
||||||
include/svtools/fontsubstconfig.hxx
|
include/svtools/fontsubstconfig.hxx
|
||||||
include/svtools/framestatuslistener.hxx
|
include/svtools/framestatuslistener.hxx
|
||||||
include/svtools/generictoolboxcontroller.hxx
|
|
||||||
include/svtools/genericunodialog.hxx
|
include/svtools/genericunodialog.hxx
|
||||||
include/svtools/helpids.h
|
include/svtools/helpids.h
|
||||||
include/svtools/helpopt.hxx
|
include/svtools/helpopt.hxx
|
||||||
@@ -13087,7 +13086,6 @@ svtools/source/uno/addrtempuno.cxx
|
|||||||
svtools/source/uno/fpicker.cxx
|
svtools/source/uno/fpicker.cxx
|
||||||
svtools/source/uno/fpicker.hxx
|
svtools/source/uno/fpicker.hxx
|
||||||
svtools/source/uno/framestatuslistener.cxx
|
svtools/source/uno/framestatuslistener.cxx
|
||||||
svtools/source/uno/generictoolboxcontroller.cxx
|
|
||||||
svtools/source/uno/genericunodialog.cxx
|
svtools/source/uno/genericunodialog.cxx
|
||||||
svtools/source/uno/miscservices.cxx
|
svtools/source/uno/miscservices.cxx
|
||||||
svtools/source/uno/popupmenucontrollerbase.cxx
|
svtools/source/uno/popupmenucontrollerbase.cxx
|
||||||
|
@@ -166,7 +166,6 @@ $(eval $(call gb_Library_add_exception_objects,svt,\
|
|||||||
svtools/source/uno/addrtempuno \
|
svtools/source/uno/addrtempuno \
|
||||||
svtools/source/uno/fpicker \
|
svtools/source/uno/fpicker \
|
||||||
svtools/source/uno/framestatuslistener \
|
svtools/source/uno/framestatuslistener \
|
||||||
svtools/source/uno/generictoolboxcontroller \
|
|
||||||
svtools/source/uno/genericunodialog \
|
svtools/source/uno/genericunodialog \
|
||||||
svtools/source/uno/miscservices \
|
svtools/source/uno/miscservices \
|
||||||
svtools/source/uno/popupmenucontrollerbase \
|
svtools/source/uno/popupmenucontrollerbase \
|
||||||
|
@@ -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: */
|
|
Reference in New Issue
Block a user