diff options
author | Gulsah Kose <gulsah.1004@gmail.com> | 2016-01-19 16:32:18 +0200 |
---|---|---|
committer | Maxim Monastirsky <momonasmon@gmail.com> | 2016-02-17 13:02:32 +0200 |
commit | a009ba2b8ed7ead021ecc3356a477a08e72d2191 (patch) | |
tree | efb3046135e99ad3e23aa6293fdda57f08f9459a /framework | |
parent | d562ee461735a6daa6dcdfcc559f851cad160aaf (diff) |
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 <gulsah.1004@gmail.com>
Diffstat (limited to 'framework')
-rw-r--r-- | framework/Library_fwk.mk | 1 | ||||
-rw-r--r-- | framework/source/uielement/freezepanesmenucontroller.cxx | 104 | ||||
-rw-r--r-- | framework/source/uielement/popuptoolbarcontroller.cxx | 13 | ||||
-rw-r--r-- | framework/util/fwk.component | 4 |
4 files changed, 118 insertions, 4 deletions
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 <cppuhelper/supportsservice.hxx> +#include <svtools/popupmenucontrollerbase.hxx> +#include <vcl/menu.hxx> +#include <vcl/svapp.hxx> + +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<OUString> 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<css::uno::Any> 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"> <service name="com.sun.star.frame.PopupMenuController"/> </implementation> + <implementation name="com.sun.star.comp.framework.FreezePanesMenuController" + constructor="com_sun_star_comp_framework_FreezePanesMenuController_get_implementation"> + <service name="com.sun.star.frame.PopupMenuController"/> + </implementation> <implementation name="com.sun.star.comp.framework.StatusBarControllerFactory" constructor="com_sun_star_comp_framework_StatusBarControllerFactory_get_implementation"> <service name="com.sun.star.frame.StatusbarControllerFactory"/> |