From a009ba2b8ed7ead021ecc3356a477a08e72d2191 Mon Sep 17 00:00:00 2001 From: Gulsah Kose Date: Tue, 19 Jan 2016 16:32:18 +0200 Subject: tdf#91013 Add new uno commands to freeze one row and column. Added freezepanesfirstcolumn and freezepanesfirstrow commands. FreezePanes button became a split button that includes this two new uno commands. And this new commands added to menu. Change-Id: Ic6958067cc98b3df50bcd06a1eac220bd9a61473 Reviewed-on: https://gerrit.libreoffice.org/21604 Signed-off-by: Gulsah Kose --- framework/Library_fwk.mk | 1 + .../source/uielement/freezepanesmenucontroller.cxx | 104 +++++++++++++++++++++ .../source/uielement/popuptoolbarcontroller.cxx | 13 ++- framework/util/fwk.component | 4 + 4 files changed, 118 insertions(+), 4 deletions(-) create mode 100644 framework/source/uielement/freezepanesmenucontroller.cxx (limited to 'framework') diff --git a/framework/Library_fwk.mk b/framework/Library_fwk.mk index 0c78fc460a2d..f9aed1fced13 100644 --- a/framework/Library_fwk.mk +++ b/framework/Library_fwk.mk @@ -144,6 +144,7 @@ $(eval $(call gb_Library_add_exception_objects,fwk,\ framework/source/uielement/popuptoolbarcontroller \ framework/source/uielement/progressbarwrapper \ framework/source/uielement/recentfilesmenucontroller \ + framework/source/uielement/freezepanesmenucontroller \ framework/source/uielement/resourcemenucontroller \ framework/source/uielement/saveasmenucontroller \ framework/source/uielement/spinfieldtoolbarcontroller \ diff --git a/framework/source/uielement/freezepanesmenucontroller.cxx b/framework/source/uielement/freezepanesmenucontroller.cxx new file mode 100644 index 000000000000..9d4cd1bda4f4 --- /dev/null +++ b/framework/source/uielement/freezepanesmenucontroller.cxx @@ -0,0 +1,104 @@ +/* -*- 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 +#include +#include +#include + +using namespace css; +using namespace com::sun::star::uno; +using namespace com::sun::star::frame; + +namespace { + +class FreezePanesMenuController : public svt::PopupMenuControllerBase +{ +public: + explicit FreezePanesMenuController( const uno::Reference< uno::XComponentContext >& xContext ); + virtual ~FreezePanesMenuController(); + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() + throw (css::uno::RuntimeException, std::exception) override + { + return OUString("com.sun.star.comp.framework.FreezePanesMenuController"); + } + + virtual sal_Bool SAL_CALL supportsService(OUString const & ServiceName) + throw (css::uno::RuntimeException, std::exception) override + { + return cppu::supportsService(this, ServiceName); + } + + virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() + throw (css::uno::RuntimeException, std::exception) override + { + css::uno::Sequence< OUString > aSeq { "com.sun.star.frame.PopupMenuController" }; + return aSeq; + } + + // XStatusListener + virtual void SAL_CALL statusChanged( const frame::FeatureStateEvent& Event ) throw ( uno::RuntimeException, std::exception ) override; + +private: + virtual void impl_setPopupMenu() override; +}; + +FreezePanesMenuController::FreezePanesMenuController( const uno::Reference< uno::XComponentContext >& xContext ) : + svt::PopupMenuControllerBase( xContext ) +{ +} + +FreezePanesMenuController::~FreezePanesMenuController() +{ +} + +void FreezePanesMenuController::impl_setPopupMenu() +{ + VCLXMenu* pPopupMenu = VCLXMenu::GetImplementation( m_xPopupMenu ); + Menu* pVCLPopupMenu = nullptr; + + SolarMutexGuard aSolarMutexGuard; + + if ( pPopupMenu ) + pVCLPopupMenu = pPopupMenu->GetMenu(); + + if ( pVCLPopupMenu ) + { + pVCLPopupMenu->InsertItem( ".uno:FreezePanesFirstColumn", m_xFrame ); + pVCLPopupMenu->InsertItem( ".uno:FreezePanesFirstRow", m_xFrame ); + } +} + +// XStatusListener +void SAL_CALL FreezePanesMenuController::statusChanged( const FeatureStateEvent& /*Event*/ ) throw ( RuntimeException, std::exception ) +{ +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL +com_sun_star_comp_framework_FreezePanesMenuController_get_implementation( + css::uno::XComponentContext *context, + css::uno::Sequence const &) +{ + return cppu::acquire(new FreezePanesMenuController(context)); +} + +} +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/framework/source/uielement/popuptoolbarcontroller.cxx b/framework/source/uielement/popuptoolbarcontroller.cxx index 8296dac661c8..28f7affa0487 100644 --- a/framework/source/uielement/popuptoolbarcontroller.cxx +++ b/framework/source/uielement/popuptoolbarcontroller.cxx @@ -169,10 +169,15 @@ throw ( css::uno::Exception, css::uno::RuntimeException, std::exception ) void SAL_CALL PopupMenuToolbarController::statusChanged( const css::frame::FeatureStateEvent& rEvent ) throw ( css::uno::RuntimeException, std::exception ) { - // TODO move to base class - - svt::ToolboxController::statusChanged( rEvent ); - enable( rEvent.IsEnabled ); + ToolBox* pToolBox = nullptr; + sal_uInt16 nItemId = 0; + if ( getToolboxId( nItemId, &pToolBox ) ) + { + pToolBox->EnableItem( nItemId, rEvent.IsEnabled ); + bool bValue; + if ( rEvent.State >>= bValue ) + pToolBox->CheckItem( nItemId, bValue ); + } } css::uno::Reference< css::awt::XWindow > SAL_CALL diff --git a/framework/util/fwk.component b/framework/util/fwk.component index f14fbe4f06bc..f6ae4821979a 100644 --- a/framework/util/fwk.component +++ b/framework/util/fwk.component @@ -121,6 +121,10 @@ constructor="com_sun_star_comp_framework_SaveAsMenuController_get_implementation"> + + + -- cgit