diff options
-rw-r--r-- | include/svx/dialogs.hrc | 2 | ||||
-rw-r--r-- | officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu | 22 | ||||
-rw-r--r-- | sd/source/ui/func/fuolbull.cxx | 2 | ||||
-rw-r--r-- | sd/source/ui/view/drviewsf.cxx | 2 | ||||
-rw-r--r-- | svx/Library_svx.mk | 1 | ||||
-rw-r--r-- | svx/sdi/svx.sdi | 16 | ||||
-rw-r--r-- | svx/source/dialog/svxbmpnumvalueset.cxx | 1 | ||||
-rw-r--r-- | svx/source/tbxctrls/bulletsnumbering.cxx | 236 | ||||
-rw-r--r-- | svx/source/tbxctrls/tbcontrl.src | 10 | ||||
-rw-r--r-- | svx/util/svx.component | 4 | ||||
-rw-r--r-- | sw/source/uibase/shells/textsh1.cxx | 2 | ||||
-rw-r--r-- | sw/source/uibase/shells/txtnum.cxx | 2 |
12 files changed, 281 insertions, 19 deletions
diff --git a/include/svx/dialogs.hrc b/include/svx/dialogs.hrc index 0fe72fa17189..b8755e601f5c 100644 --- a/include/svx/dialogs.hrc +++ b/include/svx/dialogs.hrc @@ -253,6 +253,8 @@ #define RID_SVXSTR_LINECOLOR (RID_SVX_START + 201) #define RID_SVXSTR_MORE_STYLES (RID_SVX_START + 202) #define RID_SVXSTR_FILLCOLOR (RID_SVX_START + 203) +#define RID_SVXSTR_MORENUMBERING (RID_SVX_START + 204) +#define RID_SVXSTR_MOREBULLETS (RID_SVX_START + 205) // Strings for insert/overwrite mode #define RID_SVXSTR_INSERT_HELPTEXT (RID_SVX_START + 210) diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu index c25e19dc2030..74acecb4a710 100644 --- a/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu +++ b/officecfg/registry/data/org/openoffice/Office/UI/Controller.xcu @@ -242,6 +242,28 @@ <value>com.sun.star.comp.sd.InsertSlideController</value> </prop> </node> + <node oor:name="NumberingToolBox" oor:op="replace"> + <prop oor:name="Command"> + <value>.uno:DefaultNumbering</value> + </prop> + <prop oor:name="Module"> + <value/> + </prop> + <prop oor:name="Controller"> + <value>com.sun.star.comp.svx.NumberingToolBoxControl</value> + </prop> + </node> + <node oor:name="BulletsToolBox" oor:op="replace"> + <prop oor:name="Command"> + <value>.uno:DefaultBullet</value> + </prop> + <prop oor:name="Module"> + <value/> + </prop> + <prop oor:name="Controller"> + <value>com.sun.star.comp.svx.NumberingToolBoxControl</value> + </prop> + </node> <node oor:name="ExtrusionDirectionFloater" oor:op="replace"> <prop oor:name="Command"> <value>.uno:ExtrusionDirectionFloater</value> diff --git a/sd/source/ui/func/fuolbull.cxx b/sd/source/ui/func/fuolbull.cxx index d0790da6d95e..1f329416b541 100644 --- a/sd/source/ui/func/fuolbull.cxx +++ b/sd/source/ui/func/fuolbull.cxx @@ -202,7 +202,7 @@ void FuOutlineBullet::SetCurrentBulletsNumbering(SfxRequest& rReq) // get numbering rule corresponding to <nIdx> and apply the needed number formats to <pNumRule> NBOTypeMgrBase* pNumRuleMgr = NBOutlineTypeMgrFact::CreateInstance( - nSId == FN_SVX_SET_BULLET ? eNBOType::MIXBULLETS : eNBOType::NUMBERING ); + nSId == FN_SVX_SET_BULLET ? eNBOType::BULLETS : eNBOType::NUMBERING ); if ( pNumRuleMgr ) { sal_uInt16 nActNumLvl = (sal_uInt16)0xFFFF; diff --git a/sd/source/ui/view/drviewsf.cxx b/sd/source/ui/view/drviewsf.cxx index 0770ed23857e..ec7543378aad 100644 --- a/sd/source/ui/view/drviewsf.cxx +++ b/sd/source/ui/view/drviewsf.cxx @@ -620,7 +620,7 @@ void DrawViewShell::GetAttrState( SfxItemSet& rSet ) rSet.Put(SfxUInt16Item(FN_NUM_NUM_RULE_INDEX,(sal_uInt16)0xFFFF)); if ( bBullets ) { - NBOTypeMgrBase* pBullets = NBOutlineTypeMgrFact::CreateInstance(eNBOType::MIXBULLETS); + NBOTypeMgrBase* pBullets = NBOutlineTypeMgrFact::CreateInstance(eNBOType::BULLETS); if ( pBullets ) { sal_uInt16 nBulIndex = pBullets->GetNBOIndexForNumRule(*pNumRule,nActNumLvl); diff --git a/svx/Library_svx.mk b/svx/Library_svx.mk index 1fc78a2cf0d7..b037c26bec25 100644 --- a/svx/Library_svx.mk +++ b/svx/Library_svx.mk @@ -219,6 +219,7 @@ $(eval $(call gb_Library_add_exception_objects,svx,\ svx/source/table/tabledesign \ svx/source/table/tablertfexporter \ svx/source/table/tablertfimporter \ + svx/source/tbxctrls/bulletsnumbering \ svx/source/tbxctrls/colrctrl \ svx/source/tbxctrls/SvxColorChildWindow \ svx/source/tbxctrls/fillctrl \ diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi index 47d5c14620d8..9691ba578622 100644 --- a/svx/sdi/svx.sdi +++ b/svx/sdi/svx.sdi @@ -6523,8 +6523,7 @@ SfxVoidItem DefaultNumbering FN_NUM_NUMBERING_ON GroupId = GID_ENUMERATION; ] -SfxBoolItem CurrentBulletListType FN_BUL_NUM_RULE_INDEX -(SfxUInt16Item On FN_PARAM_1) +SfxUInt16Item CurrentBulletListType FN_BUL_NUM_RULE_INDEX [ /* flags: */ AutoUpdate = TRUE, @@ -6539,11 +6538,6 @@ SfxBoolItem CurrentBulletListType FN_BUL_NUM_RULE_INDEX RecordPerSet; Synchron; - ImageRotation = TRUE; - ImageReflection = TRUE; - /* status: */ - SlotType = SfxBoolItem - /* config: */ AccelConfig = FALSE, MenuConfig = FALSE, @@ -6551,8 +6545,7 @@ SfxBoolItem CurrentBulletListType FN_BUL_NUM_RULE_INDEX ToolBoxConfig = FALSE, GroupId = GID_ENUMERATION; ] -SfxBoolItem CurrentNumListType FN_NUM_NUM_RULE_INDEX -(SfxUInt16Item On FN_PARAM_1) +SfxUInt16Item CurrentNumListType FN_NUM_NUM_RULE_INDEX [ /* flags: */ AutoUpdate = TRUE, @@ -6567,11 +6560,6 @@ SfxBoolItem CurrentNumListType FN_NUM_NUM_RULE_INDEX RecordPerSet; Synchron; - ImageRotation = TRUE; - ImageReflection = TRUE; - /* status: */ - SlotType = SfxBoolItem - /* config: */ AccelConfig = FALSE, MenuConfig = FALSE, diff --git a/svx/source/dialog/svxbmpnumvalueset.cxx b/svx/source/dialog/svxbmpnumvalueset.cxx index f0e961aaebf9..0963e6d635df 100644 --- a/svx/source/dialog/svxbmpnumvalueset.cxx +++ b/svx/source/dialog/svxbmpnumvalueset.cxx @@ -185,7 +185,6 @@ void SvxNumValueSet::UserDraw( const UserDrawEvent& rUDEvt ) pVDev->SetOutputSize( aRectSize ); aOrgRect = aRect; pVDev->SetFillColor( aBackColor ); - pVDev->DrawRect(aOrgRect); if(aBackColor == aLineColor) aLineColor.Invert(); diff --git a/svx/source/tbxctrls/bulletsnumbering.cxx b/svx/source/tbxctrls/bulletsnumbering.cxx new file mode 100644 index 000000000000..3b72ad9feafc --- /dev/null +++ b/svx/source/tbxctrls/bulletsnumbering.cxx @@ -0,0 +1,236 @@ +/* -*- 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 <com/sun/star/text/DefaultNumberingProvider.hpp> +#include <com/sun/star/text/XNumberingFormatter.hpp> + +#include <comphelper/processfactory.hxx> +#include <i18nlangtag/mslangid.hxx> +#include <sfx2/imagemgr.hxx> +#include <svtools/popupwindowcontroller.hxx> +#include <svtools/toolbarmenu.hxx> +#include <svx/dialogs.hrc> +#include <svx/dialmgr.hxx> +#include <svx/numvset.hxx> +#include <vcl/toolbox.hxx> +#include <vcl/settings.hxx> + +#define NUM_PAGETYPE_BULLET 0 +#define NUM_PAGETYPE_SINGLENUM 1 + +class NumberingPopup : public svtools::ToolbarMenu +{ + bool mbBulletItem; + svt::ToolboxController& mrController; + SvxNumValueSet* mpValueSet; + DECL_LINK( VSSelectHdl, void * ); + +public: + NumberingPopup( svt::ToolboxController& rController, + const css::uno::Reference< css::frame::XFrame >& rFrame, + vcl::Window* pParent, bool bBulletItem ); + + virtual void statusChanged( const css::frame::FeatureStateEvent& rEvent ) + throw ( css::uno::RuntimeException ) SAL_OVERRIDE; +}; + +class NumberingToolBoxControl : public svt::PopupWindowController +{ + bool mbBulletItem; + +public: + NumberingToolBoxControl( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); + virtual vcl::Window* createPopupWindow( vcl::Window* pParent ) SAL_OVERRIDE; + + // XStatusListener + virtual void statusChanged( const css::frame::FeatureStateEvent& rEvent ) + throw ( css::uno::RuntimeException ) SAL_OVERRIDE; + + // XInitialization + virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) + throw ( css::uno::Exception, css::uno::RuntimeException, std::exception ) SAL_OVERRIDE; + + // XServiceInfo + virtual OUString SAL_CALL getImplementationName() + throw ( css::uno::RuntimeException, std::exception ) SAL_OVERRIDE; + virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() + throw ( css::uno::RuntimeException, std::exception ) SAL_OVERRIDE; + + using svt::ToolboxController::createPopupWindow; +}; + +//class NumberingPopup +NumberingPopup::NumberingPopup( svt::ToolboxController& rController, + const css::uno::Reference< css::frame::XFrame >& rFrame, + vcl::Window* pParent, bool bBulletItem ) : + ToolbarMenu( rFrame, pParent, WB_STDPOPUP ), + mbBulletItem( bBulletItem ), + mrController( rController ) +{ + WinBits nBits = WB_TABSTOP | WB_MENUSTYLEVALUESET | WB_FLATVALUESET | WB_NO_DIRECTSELECT; + mpValueSet = new SvxNumValueSet( this, nBits ); + mpValueSet->init( mbBulletItem ? NUM_PAGETYPE_BULLET : NUM_PAGETYPE_SINGLENUM ); + + if ( !mbBulletItem ) + { + css::uno::Reference< css::text::XDefaultNumberingProvider > xDefNum = css::text::DefaultNumberingProvider::create( comphelper::getProcessComponentContext() ); + if ( xDefNum.is() ) + { + css::uno::Sequence< css::uno::Sequence< css::beans::PropertyValue > > aNumberings; + css::lang::Locale aLocale = GetSettings().GetLanguageTag().getLocale(); + try + { + aNumberings = xDefNum->getDefaultContinuousNumberingLevels( aLocale ); + } + catch( css::uno::Exception& ) + {} + + css::uno::Reference< css::text::XNumberingFormatter > xFormat( xDefNum, css::uno::UNO_QUERY ); + mpValueSet->SetNumberingSettings( aNumberings, xFormat, aLocale ); + } + } + + Size aItemSize( LogicToPixel( Size( 30, 42 ), MAP_APPFONT ) ); + mpValueSet->SetExtraSpacing( 2 ); + mpValueSet->SetOutputSizePixel( mpValueSet->CalcWindowSizePixel( aItemSize ) ); + mpValueSet->SetColor( GetSettings().GetStyleSettings().GetFieldColor() ); + + appendEntry( 0, mpValueSet ); + appendSeparator(); + + if ( mbBulletItem ) + appendEntry( 1, SVX_RESSTR( RID_SVXSTR_MOREBULLETS ), ::GetImage( rFrame, ".uno:OutlineBullet", false ) ); + else + appendEntry( 1, SVX_RESSTR( RID_SVXSTR_MORENUMBERING ), ::GetImage( rFrame, ".uno:OutlineBullet", false ) ); + + SetOutputSizePixel( getMenuSize() ); + Link aLink = LINK( this, NumberingPopup, VSSelectHdl ); + mpValueSet->SetSelectHdl( aLink ); + SetSelectHdl( aLink ); + + if ( mbBulletItem ) + AddStatusListener( ".uno:CurrentBulletListType" ); + else + AddStatusListener( ".uno:CurrentNumListType" ); +} + +void NumberingPopup::statusChanged( const css::frame::FeatureStateEvent& rEvent ) + throw ( css::uno::RuntimeException ) +{ + mpValueSet->SetNoSelection(); + + sal_Int32 nSelItem; + if ( rEvent.State >>= nSelItem ) + mpValueSet->SelectItem( nSelItem ); +} + +IMPL_LINK( NumberingPopup, VSSelectHdl, void *, pControl ) +{ + if ( IsInPopupMode() ) + EndPopupMode(); + + if ( pControl == mpValueSet ) + { + sal_uInt16 nSelItem = mpValueSet->GetSelectItemId(); + css::uno::Sequence< css::beans::PropertyValue > aArgs( 1 ); + if ( mbBulletItem ) + { + aArgs[0].Name = "SetBullet"; + aArgs[0].Value <<= sal_uInt16( nSelItem ); + mrController.dispatchCommand( ".uno:SetBullet", aArgs ); + } + else + { + aArgs[0].Name = "SetNumber"; + aArgs[0].Value <<= sal_uInt16( nSelItem ); + mrController.dispatchCommand( ".uno:SetNumber", aArgs ); + } + } + else if ( getSelectedEntryId() == 1 ) + { + css::uno::Sequence< css::beans::PropertyValue > aArgs( 0 ); + mrController.dispatchCommand( ".uno:OutlineBullet", aArgs ); + } + + return 0; +} + + +//class NumberingToolBoxControl +NumberingToolBoxControl::NumberingToolBoxControl( const css::uno::Reference< css::uno::XComponentContext >& rxContext ): + svt::PopupWindowController( rxContext, css::uno::Reference< css::frame::XFrame >(), OUString() ), + mbBulletItem( false ) +{ +} + +vcl::Window* NumberingToolBoxControl::createPopupWindow( vcl::Window* pParent ) +{ + return new NumberingPopup( *this, m_xFrame, pParent, mbBulletItem ); +} + +void NumberingToolBoxControl::statusChanged( const css::frame::FeatureStateEvent& rEvent ) + throw ( css::uno::RuntimeException ) +{ + ToolBox* pToolBox = 0; + sal_uInt16 nId = 0; + if ( getToolboxId( nId, &pToolBox ) ) + { + pToolBox->EnableItem( nId, rEvent.IsEnabled ); + bool bChecked; + if ( rEvent.State >>= bChecked ) + pToolBox->CheckItem( nId, bChecked ); + } +} + +void SAL_CALL NumberingToolBoxControl::initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) + throw ( css::uno::Exception, css::uno::RuntimeException, std::exception ) +{ + svt::PopupWindowController::initialize( aArguments ); + + ToolBox* pToolBox = 0; + sal_uInt16 nId = 0; + if ( getToolboxId( nId, &pToolBox ) ) + pToolBox->SetItemBits( nId, pToolBox->GetItemBits( nId ) | ToolBoxItemBits::DROPDOWN ); + + mbBulletItem = m_aCommandURL == ".uno:DefaultBullet"; +} + +OUString SAL_CALL NumberingToolBoxControl::getImplementationName() + throw ( css::uno::RuntimeException, std::exception ) +{ + return OUString( "com.sun.star.comp.svx.NumberingToolBoxControl" ); +} + +css::uno::Sequence< OUString > SAL_CALL NumberingToolBoxControl::getSupportedServiceNames() + throw ( css::uno::RuntimeException, std::exception ) +{ + css::uno::Sequence< OUString > aRet( 1 ); + aRet[0] = "com.sun.star.frame.ToolbarController"; + return aRet; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL +com_sun_star_comp_svx_NumberingToolBoxControl_get_implementation( + css::uno::XComponentContext *rxContext, + css::uno::Sequence<css::uno::Any> const & ) +{ + return cppu::acquire( new NumberingToolBoxControl( rxContext ) ); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/source/tbxctrls/tbcontrl.src b/svx/source/tbxctrls/tbcontrl.src index b13cf629d6dd..0e250c3ad8f7 100644 --- a/svx/source/tbxctrls/tbcontrl.src +++ b/svx/source/tbxctrls/tbcontrl.src @@ -81,6 +81,16 @@ String RID_SVXSTR_FILLCOLOR Text [ en-US ] = "Fill Color" ; }; +String RID_SVXSTR_MORENUMBERING +{ + Text [ en-US ] = "More Numbering..." ; +}; + +String RID_SVXSTR_MOREBULLETS +{ + Text [ en-US ] = "More Bullets..." ; +}; + ComboBox RID_SVXTBX_STYLE { HelpId = HID_STYLE_LISTBOX ; diff --git a/svx/util/svx.component b/svx/util/svx.component index 5529d276dbfd..967677befed0 100644 --- a/svx/util/svx.component +++ b/svx/util/svx.component @@ -80,4 +80,8 @@ constructor="org_apache_openoffice_comp_svx_sidebar_PanelFactory_get_implementation"> <service name="com.sun.star.ui.UIElementFactory"/> </implementation> + <implementation name="com.sun.star.comp.svx.NumberingToolBoxControl" + constructor="com_sun_star_comp_svx_NumberingToolBoxControl_get_implementation"> + <service name="com.sun.star.frame.ToolbarController"/> + </implementation> </component> diff --git a/sw/source/uibase/shells/textsh1.cxx b/sw/source/uibase/shells/textsh1.cxx index 5dfef0497004..c94fa1fc5903 100644 --- a/sw/source/uibase/shells/textsh1.cxx +++ b/sw/source/uibase/shells/textsh1.cxx @@ -1784,7 +1784,7 @@ void SwTextShell::GetState( SfxItemSet &rSet ) { rSet.Put(SfxUInt16Item(FN_BUL_NUM_RULE_INDEX, USHRT_MAX)); rSet.Put(SfxUInt16Item(FN_NUM_NUM_RULE_INDEX, USHRT_MAX)); - NBOTypeMgrBase* pBullets = NBOutlineTypeMgrFact::CreateInstance(eNBOType::MIXBULLETS); + NBOTypeMgrBase* pBullets = NBOutlineTypeMgrFact::CreateInstance(eNBOType::BULLETS); if ( pBullets ) { const sal_uInt16 nBulIndex = pBullets->GetNBOIndexForNumRule(aSvxRule,nActNumLvl); diff --git a/sw/source/uibase/shells/txtnum.cxx b/sw/source/uibase/shells/txtnum.cxx index 663927ece749..6f4fafe0f174 100644 --- a/sw/source/uibase/shells/txtnum.cxx +++ b/sw/source/uibase/shells/txtnum.cxx @@ -258,7 +258,7 @@ void SwTextShell::ExecSetNumber(SfxRequest &rReq) svx::sidebar::NBOTypeMgrBase* pNBOTypeMgr = nSlot == FN_SVX_SET_NUMBER ? svx::sidebar::NBOutlineTypeMgrFact::CreateInstance( svx::sidebar::eNBOType::NUMBERING ) - : svx::sidebar::NBOutlineTypeMgrFact::CreateInstance( svx::sidebar::eNBOType::MIXBULLETS ); + : svx::sidebar::NBOutlineTypeMgrFact::CreateInstance( svx::sidebar::eNBOType::BULLETS ); if ( pNBOTypeMgr != NULL ) { const SwNumRule* pNumRuleAtCurrentSelection = GetShell().GetNumRuleAtCurrentSelection(); |