xref: /trunk/main/svx/source/sidebar/paragraph/ParaNumberingControl.cxx (revision ca62e2c2083b5d0995f1245bad6c2edfb455fbec)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 #include "precompiled_svx.hxx"
23 #include "ParaNumberingControl.hxx"
24 #include "ParaPropertyPanel.hrc"
25 #include <sfx2/sidebar/propertypanel.hrc>
26 #include <svx/dialogs.hrc>
27 #include <svx/dialmgr.hxx>
28 #include <unotools/viewoptions.hxx>
29 #include <editeng/kernitem.hxx>
30 #include <sfx2/bindings.hxx>
31 #include <sfx2/dispatch.hxx>
32 #include <sfx2/sidebar/Theme.hxx>
33 #include <svtools/unitconv.hxx>
34 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
35 #include <com/sun/star/text/XDefaultNumberingProvider.hpp>
36 #include <com/sun/star/text/XNumberingFormatter.hpp>
37 #include <com/sun/star/beans/PropertyValue.hpp>
38 #include <comphelper/processfactory.hxx>
39 #include <svx/nbdtmg.hxx>
40 #include <svx/nbdtmgfact.hxx>
41 #include <editeng/unolingu.hxx>
42 using namespace com::sun::star;
43 using namespace com::sun::star::uno;
44 using namespace com::sun::star::beans;
45 using namespace com::sun::star::lang;
46 using namespace com::sun::star::text;
47 
48 namespace svx { namespace sidebar {
49 
50 Reference<XDefaultNumberingProvider> lcl_GetNumberingProvider()
51 {
52     Reference< XMultiServiceFactory > xMSF = ::comphelper::getProcessServiceFactory();
53     Reference < XInterface > xI = xMSF->createInstance(
54         ::rtl::OUString::createFromAscii( "com.sun.star.text.DefaultNumberingProvider" ) );
55     Reference<XDefaultNumberingProvider> xRet(xI, UNO_QUERY);
56 //  DBG_ASSERT(xRet.is(), "service missing: \"com.sun.star.text.DefaultNumberingProvider\"")
57 
58     return xRet;
59 }
60 
61 ParaNumberingControl::ParaNumberingControl(Window* pParent, svx::sidebar::ParaPropertyPanel& rPanel):
62     PopupControl( pParent,SVX_RES(RID_POPUPPANEL_PARAPAGE_NUMBERING)),
63     maNumberVS(this,SVX_RES(VS_NUMBERING)),
64     maFISep(this,SVX_RES(IMG_SEPERATOR_NUMBERING)),
65     maMoreButton(this,SVX_RES(CB_NUMBERING_MORE) ),
66     mrParaPropertyPanel(rPanel),
67     mpBindings(NULL)
68 {
69     FreeResource();
70     mpBindings = mrParaPropertyPanel.GetBindings();
71 
72     maNumberVS.SetStyle(maNumberVS.GetStyle() | WB_NO_DIRECTSELECT);
73     maNumberVS.SetExtraSpacing(NUM_IMAGE_SPACING);
74     //add by wj for sym2_7246 high contrast
75     if(GetSettings().GetStyleSettings().GetHighContrastMode())
76         maNumberVS.SetBackground(GetSettings().GetStyleSettings().GetMenuColor());
77     else
78         maNumberVS.SetBackground(Color(244,245,249));
79 
80     maNumberVS.SetItemWidth(NUM_IMAGE_WIDTH);
81     maNumberVS.SetItemHeight(NUM_IMAGE_HEIGHT);
82 
83     Reference<XDefaultNumberingProvider> xDefNum = lcl_GetNumberingProvider();
84     if(xDefNum.is())
85     {
86         Sequence< Sequence< PropertyValue > > aNumberings;
87         LanguageType eLang = GetSettings().GetLanguage();
88         Locale aLocale = SvxCreateLocale(eLang);
89         try
90         {
91             aNumberings =
92                 xDefNum->getDefaultContinuousNumberingLevels( aLocale );
93         }
94         catch(Exception&)
95         {
96         }
97         Reference<XNumberingFormatter> xFormat(xDefNum, UNO_QUERY);
98         maNumberVS.SetNumberingSettings(aNumberings, xFormat, aLocale);
99     }
100 
101     maNumberVS.Show();
102     maNumberVS.SetSelectHdl(LINK(this, ParaNumberingControl, NumSelectHdl_Impl));
103 
104     /*maMoreButton.SetDefBkColor(GetSettings().GetStyleSettings().GetHighContrastMode()?
105         GetSettings().GetStyleSettings().GetMenuColor():
106         sfx2::sidebar::Theme::GetColor( sfx2::sidebar::Theme::Paint_DropDownBackground ));//Color(244,245,249)//for high contract
107     maMoreButton.SetHoverBkColor(GetSettings().GetStyleSettings().GetHighContrastMode()?
108         GetSettings().GetStyleSettings().GetMenuColor():
109         sfx2::sidebar::Theme::GetColor( sfx2::sidebar::Theme::Paint_PanelBackground ) );//Color( 93, 120, 163 )
110     maMoreButton.SetHoverTxtColor( sfx2::sidebar::Theme::GetColor( sfx2::sidebar::Theme::Color_PanelTitleFont ) );//Color( 255, 255, 255 )
111     maMoreButton.SetIcoPosX( 2);*/
112     maNumberVS.SetColor(GetSettings().GetStyleSettings().GetHighContrastMode()?
113         GetSettings().GetStyleSettings().GetMenuColor():
114         sfx2::sidebar::Theme::GetColor( sfx2::sidebar::Theme::Paint_PanelBackground ));
115     maNumberVS.SetBackground(GetSettings().GetStyleSettings().GetHighContrastMode()?
116         GetSettings().GetStyleSettings().GetMenuColor():
117         sfx2::sidebar::Theme::GetColor( sfx2::sidebar::Theme::Paint_PanelBackground ));
118 
119     maMoreButton.SetClickHdl(LINK(this, ParaNumberingControl, MoreButtonClickHdl_Impl));
120 
121 }
122 
123 ParaNumberingControl::~ParaNumberingControl()
124 {
125 }
126 
127 
128 IMPL_LINK(ParaNumberingControl, NumSelectHdl_Impl, ValueSet*, EMPTYARG)
129 {
130     sal_uInt16 nIdx = maNumberVS.GetSelectItemId();
131     SfxUInt16Item aItem(FN_SVX_SET_NUMBER, nIdx);
132     if (mpBindings)
133         mpBindings->GetDispatcher()->Execute( FN_SVX_SET_NUMBER, SFX_CALLMODE_RECORD, &aItem, 0L );
134 
135     mrParaPropertyPanel.EndNumberingPopupMode();
136 
137     return 0;
138 }
139 
140 IMPL_LINK(ParaNumberingControl, MoreButtonClickHdl_Impl, void*, EMPTYARG)
141 {
142     if (mpBindings)
143         mpBindings->GetDispatcher()->Execute( SID_OUTLINE_BULLET, SFX_CALLMODE_ASYNCHRON );
144 
145     mrParaPropertyPanel.EndNumberingPopupMode();
146 
147     return 0;
148 }
149 
150 void ParaNumberingControl::UpdateValueSet()
151 {
152     maNumberVS.StateChanged(STATE_CHANGE_STYLE);
153     maNumberVS.StateChanged(STATE_CHANGE_INITSHOW);
154 }
155 
156 void ParaNumberingControl::ToGetFocus()
157 {
158     sal_uInt16 nTypeIndex = mrParaPropertyPanel.GetNumTypeIndex();
159     if ( nTypeIndex != (sal_uInt16)0xFFFF )
160         maNumberVS.SelectItem( nTypeIndex );
161     else
162     {
163         maNumberVS.SelectItem(0);
164     }
165     maMoreButton.GrabFocus();
166 }
167 
168 }} // end of namespace sidebar
169 
170 
171 
172