1766ce4d0SZheng Fan /************************************************************** 2766ce4d0SZheng Fan * 3766ce4d0SZheng Fan * Licensed to the Apache Software Foundation (ASF) under one 4766ce4d0SZheng Fan * or more contributor license agreements. See the NOTICE file 5766ce4d0SZheng Fan * distributed with this work for additional information 6766ce4d0SZheng Fan * regarding copyright ownership. The ASF licenses this file 7766ce4d0SZheng Fan * to you under the Apache License, Version 2.0 (the 8766ce4d0SZheng Fan * "License"); you may not use this file except in compliance 9766ce4d0SZheng Fan * with the License. You may obtain a copy of the License at 10766ce4d0SZheng Fan * 11766ce4d0SZheng Fan * http://www.apache.org/licenses/LICENSE-2.0 12766ce4d0SZheng Fan * 13766ce4d0SZheng Fan * Unless required by applicable law or agreed to in writing, 14766ce4d0SZheng Fan * software distributed under the License is distributed on an 15766ce4d0SZheng Fan * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16766ce4d0SZheng Fan * KIND, either express or implied. See the License for the 17766ce4d0SZheng Fan * specific language governing permissions and limitations 18766ce4d0SZheng Fan * under the License. 19766ce4d0SZheng Fan * 20766ce4d0SZheng Fan *************************************************************/ 21766ce4d0SZheng Fan 22766ce4d0SZheng Fan #include "precompiled_svx.hxx" 23766ce4d0SZheng Fan #include "ParaNumberingControl.hxx" 24766ce4d0SZheng Fan #include "ParaPropertyPanel.hrc" 25766ce4d0SZheng Fan #include <sfx2/sidebar/propertypanel.hrc> 26766ce4d0SZheng Fan #include <svx/dialogs.hrc> 27766ce4d0SZheng Fan #include <svx/dialmgr.hxx> 28766ce4d0SZheng Fan #include <unotools/viewoptions.hxx> 29766ce4d0SZheng Fan #include <editeng/kernitem.hxx> 30766ce4d0SZheng Fan #include <sfx2/bindings.hxx> 31766ce4d0SZheng Fan #include <sfx2/dispatch.hxx> 32766ce4d0SZheng Fan #include <sfx2/sidebar/Theme.hxx> 33766ce4d0SZheng Fan #include <svtools/unitconv.hxx> 34766ce4d0SZheng Fan #include <com/sun/star/lang/XMultiServiceFactory.hpp> 35766ce4d0SZheng Fan #include <com/sun/star/text/XDefaultNumberingProvider.hpp> 36766ce4d0SZheng Fan #include <com/sun/star/text/XNumberingFormatter.hpp> 37766ce4d0SZheng Fan #include <com/sun/star/beans/PropertyValue.hpp> 38766ce4d0SZheng Fan #include <comphelper/processfactory.hxx> 39766ce4d0SZheng Fan #include <svx/nbdtmg.hxx> 40766ce4d0SZheng Fan #include <svx/nbdtmgfact.hxx> 41766ce4d0SZheng Fan #include <editeng/unolingu.hxx> 42766ce4d0SZheng Fan using namespace com::sun::star; 43766ce4d0SZheng Fan using namespace com::sun::star::uno; 44766ce4d0SZheng Fan using namespace com::sun::star::beans; 45766ce4d0SZheng Fan using namespace com::sun::star::lang; 46766ce4d0SZheng Fan using namespace com::sun::star::text; 47766ce4d0SZheng Fan 48766ce4d0SZheng Fan namespace svx { namespace sidebar { 49766ce4d0SZheng Fan 50766ce4d0SZheng Fan Reference<XDefaultNumberingProvider> lcl_GetNumberingProvider() 51766ce4d0SZheng Fan { 52*7aed46aaSOliver-Rainer Wittmann Reference< XMultiServiceFactory > xMSF = ::comphelper::getProcessServiceFactory(); 53*7aed46aaSOliver-Rainer Wittmann Reference < XInterface > xI = xMSF->createInstance( 54*7aed46aaSOliver-Rainer Wittmann ::rtl::OUString::createFromAscii( "com.sun.star.text.DefaultNumberingProvider" ) ); 55*7aed46aaSOliver-Rainer Wittmann Reference<XDefaultNumberingProvider> xRet(xI, UNO_QUERY); 56766ce4d0SZheng Fan 57*7aed46aaSOliver-Rainer Wittmann return xRet; 58766ce4d0SZheng Fan } 59766ce4d0SZheng Fan 60*7aed46aaSOliver-Rainer Wittmann ParaNumberingControl::ParaNumberingControl( 61*7aed46aaSOliver-Rainer Wittmann Window* pParent, 62*7aed46aaSOliver-Rainer Wittmann svx::sidebar::ParaPropertyPanel& rPanel ) 63*7aed46aaSOliver-Rainer Wittmann : PopupControl( pParent,SVX_RES(RID_POPUPPANEL_PARAPAGE_NUMBERING) ) 64*7aed46aaSOliver-Rainer Wittmann , maNumberVS( this,SVX_RES(VS_NUMBERING) ) 65*7aed46aaSOliver-Rainer Wittmann , maMoreButton( this,SVX_RES(CB_NUMBERING_MORE) ) 66*7aed46aaSOliver-Rainer Wittmann , mrParaPropertyPanel( rPanel ) 67*7aed46aaSOliver-Rainer Wittmann , mpBindings( mrParaPropertyPanel.GetBindings() ) 68766ce4d0SZheng Fan { 69*7aed46aaSOliver-Rainer Wittmann FreeResource(); 70*7aed46aaSOliver-Rainer Wittmann 71*7aed46aaSOliver-Rainer Wittmann maNumberVS.SetStyle( maNumberVS.GetStyle() | WB_NO_DIRECTSELECT ); 72*7aed46aaSOliver-Rainer Wittmann maNumberVS.SetExtraSpacing( NUM_IMAGE_SPACING ); 73*7aed46aaSOliver-Rainer Wittmann maNumberVS.SetItemWidth(NUM_IMAGE_WIDTH); 74*7aed46aaSOliver-Rainer Wittmann maNumberVS.SetItemHeight(NUM_IMAGE_HEIGHT); 75*7aed46aaSOliver-Rainer Wittmann 76*7aed46aaSOliver-Rainer Wittmann Reference<XDefaultNumberingProvider> xDefNum = lcl_GetNumberingProvider(); 77*7aed46aaSOliver-Rainer Wittmann if(xDefNum.is()) 78*7aed46aaSOliver-Rainer Wittmann { 79*7aed46aaSOliver-Rainer Wittmann Sequence< Sequence< PropertyValue > > aNumberings; 80766ce4d0SZheng Fan LanguageType eLang = GetSettings().GetLanguage(); 81*7aed46aaSOliver-Rainer Wittmann Locale aLocale = SvxCreateLocale(eLang); 82*7aed46aaSOliver-Rainer Wittmann try 83*7aed46aaSOliver-Rainer Wittmann { 84*7aed46aaSOliver-Rainer Wittmann aNumberings = xDefNum->getDefaultContinuousNumberingLevels( aLocale ); 85*7aed46aaSOliver-Rainer Wittmann } 86*7aed46aaSOliver-Rainer Wittmann catch(Exception&) 87*7aed46aaSOliver-Rainer Wittmann { 88*7aed46aaSOliver-Rainer Wittmann } 89*7aed46aaSOliver-Rainer Wittmann Reference<XNumberingFormatter> xFormat(xDefNum, UNO_QUERY); 90*7aed46aaSOliver-Rainer Wittmann maNumberVS.SetNumberingSettings(aNumberings, xFormat, aLocale); 91*7aed46aaSOliver-Rainer Wittmann } 92766ce4d0SZheng Fan 93766ce4d0SZheng Fan maNumberVS.Show(); 94*7aed46aaSOliver-Rainer Wittmann maNumberVS.SetSelectHdl( LINK(this, ParaNumberingControl, NumSelectHdl_Impl) ); 95*7aed46aaSOliver-Rainer Wittmann 96*7aed46aaSOliver-Rainer Wittmann maNumberVS.SetColor( GetSettings().GetStyleSettings().GetHighContrastMode() 97*7aed46aaSOliver-Rainer Wittmann ? GetSettings().GetStyleSettings().GetMenuColor() 98*7aed46aaSOliver-Rainer Wittmann : sfx2::sidebar::Theme::GetColor( sfx2::sidebar::Theme::Paint_PanelBackground ) ); 99*7aed46aaSOliver-Rainer Wittmann maNumberVS.SetBackground( GetSettings().GetStyleSettings().GetHighContrastMode() 100*7aed46aaSOliver-Rainer Wittmann ? GetSettings().GetStyleSettings().GetMenuColor() 101*7aed46aaSOliver-Rainer Wittmann : sfx2::sidebar::Theme::GetColor( sfx2::sidebar::Theme::Paint_PanelBackground ) ); 102766ce4d0SZheng Fan 103*7aed46aaSOliver-Rainer Wittmann maMoreButton.SetClickHdl(LINK(this, ParaNumberingControl, MoreButtonClickHdl_Impl)); 104766ce4d0SZheng Fan } 105766ce4d0SZheng Fan 106*7aed46aaSOliver-Rainer Wittmann 107766ce4d0SZheng Fan ParaNumberingControl::~ParaNumberingControl() 108*7aed46aaSOliver-Rainer Wittmann { 109766ce4d0SZheng Fan } 110766ce4d0SZheng Fan 111766ce4d0SZheng Fan 112766ce4d0SZheng Fan IMPL_LINK(ParaNumberingControl, NumSelectHdl_Impl, ValueSet*, EMPTYARG) 113766ce4d0SZheng Fan { 114*7aed46aaSOliver-Rainer Wittmann const sal_uInt16 nIdx = maNumberVS.GetSelectItemId(); 115*7aed46aaSOliver-Rainer Wittmann SfxUInt16Item aItem( FN_SVX_SET_NUMBER, nIdx ); 116*7aed46aaSOliver-Rainer Wittmann if (mpBindings) 117*7aed46aaSOliver-Rainer Wittmann mpBindings->GetDispatcher()->Execute( FN_SVX_SET_NUMBER, SFX_CALLMODE_RECORD, &aItem, 0L ); 118*7aed46aaSOliver-Rainer Wittmann 119*7aed46aaSOliver-Rainer Wittmann mrParaPropertyPanel.EndNumberingPopupMode(); 120*7aed46aaSOliver-Rainer Wittmann 121*7aed46aaSOliver-Rainer Wittmann return 0; 122766ce4d0SZheng Fan } 123766ce4d0SZheng Fan 124*7aed46aaSOliver-Rainer Wittmann 125766ce4d0SZheng Fan IMPL_LINK(ParaNumberingControl, MoreButtonClickHdl_Impl, void*, EMPTYARG) 126766ce4d0SZheng Fan { 127*7aed46aaSOliver-Rainer Wittmann if (mpBindings) 128*7aed46aaSOliver-Rainer Wittmann mpBindings->GetDispatcher()->Execute( SID_OUTLINE_BULLET, SFX_CALLMODE_ASYNCHRON ); 129766ce4d0SZheng Fan 130*7aed46aaSOliver-Rainer Wittmann mrParaPropertyPanel.EndNumberingPopupMode(); 131766ce4d0SZheng Fan 132*7aed46aaSOliver-Rainer Wittmann return 0; 133766ce4d0SZheng Fan } 134766ce4d0SZheng Fan 135766ce4d0SZheng Fan 136*7aed46aaSOliver-Rainer Wittmann void ParaNumberingControl::UpdateValueSet() 137766ce4d0SZheng Fan { 138*7aed46aaSOliver-Rainer Wittmann maNumberVS.StateChanged(STATE_CHANGE_STYLE); 139*7aed46aaSOliver-Rainer Wittmann maNumberVS.StateChanged(STATE_CHANGE_INITSHOW); 140*7aed46aaSOliver-Rainer Wittmann 141*7aed46aaSOliver-Rainer Wittmann const sal_uInt16 nTypeIndex = mrParaPropertyPanel.GetNumTypeIndex(); 142*7aed46aaSOliver-Rainer Wittmann if ( nTypeIndex != (sal_uInt16)0xFFFF ) 143*7aed46aaSOliver-Rainer Wittmann maNumberVS.SelectItem( nTypeIndex ); 144*7aed46aaSOliver-Rainer Wittmann else 145*7aed46aaSOliver-Rainer Wittmann { 146*7aed46aaSOliver-Rainer Wittmann maNumberVS.SelectItem(0); 147*7aed46aaSOliver-Rainer Wittmann } 148*7aed46aaSOliver-Rainer Wittmann maMoreButton.GrabFocus(); 149766ce4d0SZheng Fan } 150766ce4d0SZheng Fan 151766ce4d0SZheng Fan }} // end of namespace sidebar 152766ce4d0SZheng Fan 153766ce4d0SZheng Fan 154766ce4d0SZheng Fan 155