1*766ce4d0SZheng Fan /************************************************************** 2*766ce4d0SZheng Fan * 3*766ce4d0SZheng Fan * Licensed to the Apache Software Foundation (ASF) under one 4*766ce4d0SZheng Fan * or more contributor license agreements. See the NOTICE file 5*766ce4d0SZheng Fan * distributed with this work for additional information 6*766ce4d0SZheng Fan * regarding copyright ownership. The ASF licenses this file 7*766ce4d0SZheng Fan * to you under the Apache License, Version 2.0 (the 8*766ce4d0SZheng Fan * "License"); you may not use this file except in compliance 9*766ce4d0SZheng Fan * with the License. You may obtain a copy of the License at 10*766ce4d0SZheng Fan * 11*766ce4d0SZheng Fan * http://www.apache.org/licenses/LICENSE-2.0 12*766ce4d0SZheng Fan * 13*766ce4d0SZheng Fan * Unless required by applicable law or agreed to in writing, 14*766ce4d0SZheng Fan * software distributed under the License is distributed on an 15*766ce4d0SZheng Fan * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*766ce4d0SZheng Fan * KIND, either express or implied. See the License for the 17*766ce4d0SZheng Fan * specific language governing permissions and limitations 18*766ce4d0SZheng Fan * under the License. 19*766ce4d0SZheng Fan * 20*766ce4d0SZheng Fan *************************************************************/ 21*766ce4d0SZheng Fan 22*766ce4d0SZheng Fan #include "precompiled_svx.hxx" 23*766ce4d0SZheng Fan #include <svx/sidebar/ColorControl.hxx> 24*766ce4d0SZheng Fan 25*766ce4d0SZheng Fan #include "ParaPropertyPanel.hxx" 26*766ce4d0SZheng Fan #include "ParaPropertyPanel.hrc" 27*766ce4d0SZheng Fan 28*766ce4d0SZheng Fan #include "ParaLineSpacingPopup.hxx" 29*766ce4d0SZheng Fan #include "ParaLineSpacingControl.hxx" 30*766ce4d0SZheng Fan #include "ParaBulletsPopup.hxx" 31*766ce4d0SZheng Fan #include "ParaBulletsControl.hxx" 32*766ce4d0SZheng Fan #include "ParaNumberingPopup.hxx" 33*766ce4d0SZheng Fan #include "ParaNumberingControl.hxx" 34*766ce4d0SZheng Fan #include <sfx2/sidebar/Theme.hxx> 35*766ce4d0SZheng Fan #include <sfx2/sidebar/propertypanel.hrc> 36*766ce4d0SZheng Fan #include <sfx2/sidebar/ControlFactory.hxx> 37*766ce4d0SZheng Fan #include <svx/sidebar/PopupContainer.hxx> 38*766ce4d0SZheng Fan #include <sfx2/dispatch.hxx> 39*766ce4d0SZheng Fan #include <editeng/colritem.hxx> 40*766ce4d0SZheng Fan #include <editeng/brshitem.hxx> 41*766ce4d0SZheng Fan #include <editeng/lrspitem.hxx> 42*766ce4d0SZheng Fan #include <editeng/ulspitem.hxx> 43*766ce4d0SZheng Fan #include <vcl/toolbox.hxx> 44*766ce4d0SZheng Fan #include <vcl/fixed.hxx> 45*766ce4d0SZheng Fan #include <vcl/svapp.hxx> 46*766ce4d0SZheng Fan #include <svx/svxids.hrc> 47*766ce4d0SZheng Fan #include <svl/intitem.hxx> 48*766ce4d0SZheng Fan #include "svx/dialmgr.hxx" 49*766ce4d0SZheng Fan #include <sfx2/objsh.hxx> 50*766ce4d0SZheng Fan #include <svtools/unitconv.hxx> 51*766ce4d0SZheng Fan #include <boost/bind.hpp> 52*766ce4d0SZheng Fan using namespace css; 53*766ce4d0SZheng Fan using namespace cssu; 54*766ce4d0SZheng Fan using ::sfx2::sidebar::Theme; 55*766ce4d0SZheng Fan using ::sfx2::sidebar::ControlFactory; 56*766ce4d0SZheng Fan 57*766ce4d0SZheng Fan #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString))) 58*766ce4d0SZheng Fan 59*766ce4d0SZheng Fan 60*766ce4d0SZheng Fan namespace svx {namespace sidebar { 61*766ce4d0SZheng Fan #define DEFAULT_VALUE 0 62*766ce4d0SZheng Fan #define TOOLBOX_ITEM1 1 63*766ce4d0SZheng Fan #define TOOLBOX_ITEM2 2 64*766ce4d0SZheng Fan #define TOOLBOX_ITEM3 3 65*766ce4d0SZheng Fan #define TOOLBOX_ITEM4 4 66*766ce4d0SZheng Fan 67*766ce4d0SZheng Fan #define MAX_DURCH 5670 68*766ce4d0SZheng Fan 69*766ce4d0SZheng Fan #define INDENT_INCREMENT 1 70*766ce4d0SZheng Fan #define INDENT_DECREMENT 2 71*766ce4d0SZheng Fan #define INDENT_STEP 706 72*766ce4d0SZheng Fan #define UL_STEP 58 73*766ce4d0SZheng Fan #define UL_INCREMENT 1 74*766ce4d0SZheng Fan #define UL_DECREMENT 2 75*766ce4d0SZheng Fan 76*766ce4d0SZheng Fan #define NEGATIVE_MAX_VALUE -9999 77*766ce4d0SZheng Fan #define BEGIN_VALUE 28 78*766ce4d0SZheng Fan #define MAX_SW 1709400 79*766ce4d0SZheng Fan #define MAX_SC_SD 116220200 80*766ce4d0SZheng Fan #define NEGA_MAXVALUE -10000000 81*766ce4d0SZheng Fan 82*766ce4d0SZheng Fan #define POS_FT_PARA_SPACE Point(LogicToPixel(Point(FT_PARA_SPACE_X,FT_PARA_SPACE_Y), MAP_APPFONT)) 83*766ce4d0SZheng Fan #define POS_FT_PARA_SPACE2 Point(LogicToPixel(Point(FT_PARA_SPACE_X,FT_PARA_SPACE_Y2), MAP_APPFONT)) 84*766ce4d0SZheng Fan #define POS_TBX_PARA_SPACE_INC_DEC Point(LogicToPixel(Point(TBX_PARA_SPACE_INC_DEC_X,TBX_PARA_SPACE_INC_DEC_Y), MAP_APPFONT)) 85*766ce4d0SZheng Fan #define POS_TBX_PARA_SPACE_INC_DEC2 Point(LogicToPixel(Point(TBX_PARA_SPACE_INC_DEC_X,TBX_PARA_SPACE_INC_DEC_Y2), MAP_APPFONT)) 86*766ce4d0SZheng Fan #define POS_FT_PARA_INDENT Point(LogicToPixel(Point(FT_PARA_INDENT_X,FT_PARA_INDENT_Y), MAP_APPFONT)) 87*766ce4d0SZheng Fan #define POS_FT_PARA_INDENT2 Point(LogicToPixel(Point(FT_PARA_INDENT_X,FT_PARA_INDENT_Y2), MAP_APPFONT)) 88*766ce4d0SZheng Fan #define POS_TBX_PARA_INDENT_INC_DEC Point(LogicToPixel(Point(TBX_PARA_INDENT_INC_DEC_X,TBX_PARA_INDENT_INC_DEC_Y), MAP_APPFONT)) 89*766ce4d0SZheng Fan #define POS_TBX_PARA_INDENT_INC_DEC2 Point(LogicToPixel(Point(TBX_PARA_INDENT_INC_DEC_X,TBX_PARA_INDENT_INC_DEC_Y2), MAP_APPFONT)) 90*766ce4d0SZheng Fan #define POS_MBX_TOP_DIST Point(LogicToPixel(Point(MBX_TOP_DIST_X,MBX_TOP_DIST_Y), MAP_APPFONT)) 91*766ce4d0SZheng Fan #define POS_MBX_TOP_DIST2 Point(LogicToPixel(Point(MBX_TOP_DIST_X,MBX_TOP_DIST_Y2), MAP_APPFONT)) 92*766ce4d0SZheng Fan #define POS_MBX_BOT_DIST Point(LogicToPixel(Point(MBX_BOT_DIST_X,MBX_BOT_DIST_Y), MAP_APPFONT)) 93*766ce4d0SZheng Fan #define POS_MBX_BOT_DIST2 Point(LogicToPixel(Point(MBX_BOT_DIST_X,MBX_BOT_DIST_Y2), MAP_APPFONT)) 94*766ce4d0SZheng Fan #define POS_MBX_LEFT_DIST Point(LogicToPixel(Point(MBX_LEFT_DIST_X,MBX_LEFT_DIST_Y), MAP_APPFONT)) 95*766ce4d0SZheng Fan #define POS_MBX_LEFT_DIST2 Point(LogicToPixel(Point(MBX_LEFT_DIST_X,MBX_LEFT_DIST_Y2), MAP_APPFONT)) 96*766ce4d0SZheng Fan #define POS_MBX_RIGHT_DIST Point(LogicToPixel(Point(MBX_RIGHT_DIST_X,MBX_RIGHT_DIST_Y), MAP_APPFONT)) 97*766ce4d0SZheng Fan #define POS_MBX_RIGHT_DIST2 Point(LogicToPixel(Point(MBX_RIGHT_DIST_X,MBX_RIGHT_DIST_Y2), MAP_APPFONT)) 98*766ce4d0SZheng Fan #define POS_MBX_FLINE_DIST Point(LogicToPixel(Point(MBX_FLINE_DIST_X,MBX_FLINE_DIST_Y), MAP_APPFONT)) 99*766ce4d0SZheng Fan #define POS_MBX_FLINE_DIST2 Point(LogicToPixel(Point(MBX_FLINE_DIST_X,MBX_FLINE_DIST_Y2), MAP_APPFONT)) 100*766ce4d0SZheng Fan #define POS_IMG_SPACE1 Point(LogicToPixel(Point(IMG_SPACE_X,IMG_SPACE1_Y), MAP_APPFONT)) 101*766ce4d0SZheng Fan #define POS_IMG_SPACE12 Point(LogicToPixel(Point(IMG_SPACE_X,IMG_SPACE1_Y2), MAP_APPFONT)) 102*766ce4d0SZheng Fan #define POS_IMG_SPACE2 Point(LogicToPixel(Point(IMG_SPACE_X,IMG_SPACE2_Y), MAP_APPFONT)) 103*766ce4d0SZheng Fan #define POS_IMG_SPACE22 Point(LogicToPixel(Point(IMG_SPACE_X,IMG_SPACE2_Y2), MAP_APPFONT)) 104*766ce4d0SZheng Fan #define POS_IMG_INDENT1 Point(LogicToPixel(Point(IMG_INDENT_X,IMG_INDENT1_Y), MAP_APPFONT)) 105*766ce4d0SZheng Fan #define POS_IMG_INDENT12 Point(LogicToPixel(Point(IMG_INDENT_X,IMG_INDENT1_Y2), MAP_APPFONT)) 106*766ce4d0SZheng Fan #define POS_IMG_INDENT2 Point(LogicToPixel(Point(IMG_INDENT_X,IMG_INDENT2_Y), MAP_APPFONT)) 107*766ce4d0SZheng Fan #define POS_IMG_INDENT22 Point(LogicToPixel(Point(IMG_INDENT_X,IMG_INDENT2_Y2), MAP_APPFONT)) 108*766ce4d0SZheng Fan #define POS_IMG_INDENT3 Point(LogicToPixel(Point(IMG_INDENT_X,IMG_INDENT3_Y), MAP_APPFONT)) 109*766ce4d0SZheng Fan #define POS_IMG_INDENT32 Point(LogicToPixel(Point(IMG_INDENT_X,IMG_INDENT3_Y2), MAP_APPFONT)) 110*766ce4d0SZheng Fan #define TBX_LINE_SPACE Point(LogicToPixel(Point(TBX_LINE_SPACE_X,TBX_LINE_SPACE_Y), MAP_APPFONT)) 111*766ce4d0SZheng Fan #define TBX_LINE_SPACE2 Point(LogicToPixel(Point(TBX_LINE_SPACE_X,TBX_LINE_SPACE_Y2), MAP_APPFONT)) 112*766ce4d0SZheng Fan 113*766ce4d0SZheng Fan #define LINE_POINT1_WHITE Point(LogicToPixel(Point(LINE_X_WHITE,LINE_TOP_Y), MAP_APPFONT)) 114*766ce4d0SZheng Fan #define LINE_POINT2_WHITE Point(LogicToPixel(Point(LINE_X_WHITE,LINE_BOT_Y), MAP_APPFONT)) 115*766ce4d0SZheng Fan #define LINE_POINT3_WHITE Point(LogicToPixel(Point(LINE_X_WHITE,LINE_TOP_Y2), MAP_APPFONT)) 116*766ce4d0SZheng Fan #define LINE_POINT4_WHITE Point(LogicToPixel(Point(LINE_X_WHITE,LINE_BOT_Y2), MAP_APPFONT)) 117*766ce4d0SZheng Fan 118*766ce4d0SZheng Fan ParaPropertyPanel* ParaPropertyPanel::Create ( 119*766ce4d0SZheng Fan Window* pParent, 120*766ce4d0SZheng Fan const cssu::Reference<css::frame::XFrame>& rxFrame, 121*766ce4d0SZheng Fan SfxBindings* pBindings) 122*766ce4d0SZheng Fan { 123*766ce4d0SZheng Fan if (pParent == NULL) 124*766ce4d0SZheng Fan throw lang::IllegalArgumentException(A2S("no parent Window given to ParaPropertyPanel::Create"), NULL, 0); 125*766ce4d0SZheng Fan if ( ! rxFrame.is()) 126*766ce4d0SZheng Fan throw lang::IllegalArgumentException(A2S("no XFrame given to ParaPropertyPanel::Create"), NULL, 1); 127*766ce4d0SZheng Fan if (pBindings == NULL) 128*766ce4d0SZheng Fan throw lang::IllegalArgumentException(A2S("no SfxBindings given to ParaPropertyPanel::Create"), NULL, 2); 129*766ce4d0SZheng Fan 130*766ce4d0SZheng Fan return new ParaPropertyPanel( 131*766ce4d0SZheng Fan pParent, 132*766ce4d0SZheng Fan rxFrame, 133*766ce4d0SZheng Fan pBindings); 134*766ce4d0SZheng Fan } 135*766ce4d0SZheng Fan 136*766ce4d0SZheng Fan void ParaPropertyPanel::HandleContextChange ( 137*766ce4d0SZheng Fan const ::sfx2::sidebar::EnumContext aContext) 138*766ce4d0SZheng Fan { 139*766ce4d0SZheng Fan if (maContext == aContext) 140*766ce4d0SZheng Fan { 141*766ce4d0SZheng Fan // Nothing to do. 142*766ce4d0SZheng Fan return; 143*766ce4d0SZheng Fan } 144*766ce4d0SZheng Fan 145*766ce4d0SZheng Fan maContext = aContext; 146*766ce4d0SZheng Fan switch (maContext.GetCombinedContext()) 147*766ce4d0SZheng Fan { 148*766ce4d0SZheng Fan case CombinedEnumContext(Application_Calc, Context_DrawText): 149*766ce4d0SZheng Fan { 150*766ce4d0SZheng Fan maTBxVertAlign->Show(); 151*766ce4d0SZheng Fan maTBxVertAlignBackground->Show(); 152*766ce4d0SZheng Fan maTBxBackColor->Hide(); 153*766ce4d0SZheng Fan maTBxBackColorBackground->Hide(); 154*766ce4d0SZheng Fan maTBxNumBullet->Hide(); 155*766ce4d0SZheng Fan maTBxNumBulletBackground->Hide(); 156*766ce4d0SZheng Fan ReSize(0); 157*766ce4d0SZheng Fan maTbxIndent_IncDec->Show(); 158*766ce4d0SZheng Fan maTbxIndent_IncDecBackground->Show(); 159*766ce4d0SZheng Fan maTbxProDemote->Hide(); 160*766ce4d0SZheng Fan maTbxProDemoteBackground->Hide(); 161*766ce4d0SZheng Fan } 162*766ce4d0SZheng Fan break; 163*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_Draw): 164*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_TextObject): 165*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_Graphic): 166*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_Draw): 167*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_TextObject): 168*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_Graphic): 169*766ce4d0SZheng Fan { 170*766ce4d0SZheng Fan maTBxVertAlign->Hide(); 171*766ce4d0SZheng Fan maTBxVertAlignBackground->Hide(); 172*766ce4d0SZheng Fan maTBxBackColor->Hide(); 173*766ce4d0SZheng Fan maTBxBackColorBackground->Hide(); 174*766ce4d0SZheng Fan maTBxNumBullet->Show(); 175*766ce4d0SZheng Fan maTBxNumBulletBackground->Show(); 176*766ce4d0SZheng Fan ReSize(1); 177*766ce4d0SZheng Fan maTbxIndent_IncDec->Hide(); 178*766ce4d0SZheng Fan maTbxIndent_IncDecBackground->Hide(); 179*766ce4d0SZheng Fan maTbxProDemote->Show(); 180*766ce4d0SZheng Fan maTbxProDemoteBackground->Show(); 181*766ce4d0SZheng Fan } 182*766ce4d0SZheng Fan break; 183*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_DrawText): 184*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_DrawText): 185*766ce4d0SZheng Fan { 186*766ce4d0SZheng Fan maTBxVertAlign->Show(); 187*766ce4d0SZheng Fan maTBxVertAlignBackground->Show(); 188*766ce4d0SZheng Fan maTBxBackColor->Hide(); 189*766ce4d0SZheng Fan maTBxBackColorBackground->Hide(); 190*766ce4d0SZheng Fan maTBxNumBullet->Show(); 191*766ce4d0SZheng Fan maTBxNumBulletBackground->Show(); 192*766ce4d0SZheng Fan ReSize(1); 193*766ce4d0SZheng Fan maTbxIndent_IncDec->Hide(); 194*766ce4d0SZheng Fan maTbxIndent_IncDecBackground->Hide(); 195*766ce4d0SZheng Fan maTbxProDemote->Show(); 196*766ce4d0SZheng Fan maTbxProDemoteBackground->Show(); 197*766ce4d0SZheng Fan } 198*766ce4d0SZheng Fan break; 199*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_Table): 200*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_Table): 201*766ce4d0SZheng Fan { 202*766ce4d0SZheng Fan maTBxVertAlign->Show(); 203*766ce4d0SZheng Fan maTBxVertAlignBackground->Show(); 204*766ce4d0SZheng Fan maTBxBackColor->Hide(); 205*766ce4d0SZheng Fan maTBxBackColorBackground->Hide(); 206*766ce4d0SZheng Fan maTBxNumBullet->Show(); 207*766ce4d0SZheng Fan maTBxNumBulletBackground->Show(); 208*766ce4d0SZheng Fan ReSize(1); 209*766ce4d0SZheng Fan maTbxIndent_IncDec->Hide(); 210*766ce4d0SZheng Fan maTbxIndent_IncDecBackground->Hide(); 211*766ce4d0SZheng Fan maTbxProDemote->Show(); 212*766ce4d0SZheng Fan maTbxProDemoteBackground->Show(); 213*766ce4d0SZheng Fan } 214*766ce4d0SZheng Fan break; 215*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Default): 216*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Text): 217*766ce4d0SZheng Fan { 218*766ce4d0SZheng Fan maTBxVertAlign->Hide(); 219*766ce4d0SZheng Fan maTBxVertAlignBackground->Hide(); 220*766ce4d0SZheng Fan maTBxBackColor->Show(); 221*766ce4d0SZheng Fan maTBxBackColorBackground->Show(); 222*766ce4d0SZheng Fan maTBxNumBullet->Show(); 223*766ce4d0SZheng Fan 224*766ce4d0SZheng Fan maTBxNumBulletBackground->Show(); 225*766ce4d0SZheng Fan ReSize(1); 226*766ce4d0SZheng Fan maTbxIndent_IncDec->Show(); 227*766ce4d0SZheng Fan maTbxIndent_IncDecBackground->Show(); 228*766ce4d0SZheng Fan maTbxProDemote->Hide(); 229*766ce4d0SZheng Fan maTbxProDemoteBackground->Hide(); 230*766ce4d0SZheng Fan } 231*766ce4d0SZheng Fan break; 232*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Table): 233*766ce4d0SZheng Fan { 234*766ce4d0SZheng Fan maTBxVertAlign->Show(); 235*766ce4d0SZheng Fan maTBxVertAlignBackground->Show(); 236*766ce4d0SZheng Fan maTBxBackColor->Show(); 237*766ce4d0SZheng Fan maTBxBackColorBackground->Show(); 238*766ce4d0SZheng Fan maTBxNumBullet->Show(); 239*766ce4d0SZheng Fan maTBxNumBulletBackground->Show(); 240*766ce4d0SZheng Fan ReSize(1); 241*766ce4d0SZheng Fan maTbxIndent_IncDec->Show(); 242*766ce4d0SZheng Fan maTbxIndent_IncDecBackground->Show(); 243*766ce4d0SZheng Fan maTbxProDemote->Hide(); 244*766ce4d0SZheng Fan maTbxProDemoteBackground->Hide(); 245*766ce4d0SZheng Fan } 246*766ce4d0SZheng Fan break; 247*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_DrawText): 248*766ce4d0SZheng Fan { 249*766ce4d0SZheng Fan maTBxVertAlign->Show(); 250*766ce4d0SZheng Fan maTBxVertAlignBackground->Show(); 251*766ce4d0SZheng Fan maTBxBackColor->Hide(); 252*766ce4d0SZheng Fan maTBxBackColorBackground->Hide(); 253*766ce4d0SZheng Fan maTBxNumBullet->Hide(); 254*766ce4d0SZheng Fan maTBxNumBulletBackground->Hide(); 255*766ce4d0SZheng Fan ReSize(0); 256*766ce4d0SZheng Fan maTbxIndent_IncDec->Show(); 257*766ce4d0SZheng Fan maTbxIndent_IncDecBackground->Show(); 258*766ce4d0SZheng Fan maTbxProDemote->Hide(); 259*766ce4d0SZheng Fan maTbxProDemoteBackground->Hide(); 260*766ce4d0SZheng Fan } 261*766ce4d0SZheng Fan break; 262*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Annotation): 263*766ce4d0SZheng Fan { 264*766ce4d0SZheng Fan maTBxVertAlign->Hide(); 265*766ce4d0SZheng Fan maTBxVertAlignBackground->Hide(); 266*766ce4d0SZheng Fan maTBxBackColor->Hide(); 267*766ce4d0SZheng Fan maTBxBackColorBackground->Hide(); 268*766ce4d0SZheng Fan maTBxNumBullet->Hide(); 269*766ce4d0SZheng Fan maTBxNumBulletBackground->Hide(); 270*766ce4d0SZheng Fan ReSize(0); 271*766ce4d0SZheng Fan maTbxIndent_IncDec->Show(); 272*766ce4d0SZheng Fan maTbxIndent_IncDecBackground->Show(); 273*766ce4d0SZheng Fan maTbxProDemote->Hide(); 274*766ce4d0SZheng Fan maTbxProDemoteBackground->Hide(); 275*766ce4d0SZheng Fan } 276*766ce4d0SZheng Fan break; 277*766ce4d0SZheng Fan case CombinedEnumContext(Application_Calc, Context_EditCell): 278*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_Text): 279*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_OutlineText): 280*766ce4d0SZheng Fan case CombinedEnumContext(Application_Calc, Context_Cell): 281*766ce4d0SZheng Fan case CombinedEnumContext(Application_Calc, Context_Pivot): 282*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_Text): 283*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_OutlineText): 284*766ce4d0SZheng Fan /*{ 285*766ce4d0SZheng Fan mpToolBoxScriptSw->Hide(); 286*766ce4d0SZheng Fan mpToolBoxScript->Show(); 287*766ce4d0SZheng Fan mpToolBoxSpacing->Show(); 288*766ce4d0SZheng Fan mpToolBoxHighlight->Hide(); 289*766ce4d0SZheng Fan 290*766ce4d0SZheng Fan Size aSize(PROPERTYPAGE_WIDTH,TEXT_SECTIONPAGE_HEIGHT); 291*766ce4d0SZheng Fan aSize = LogicToPixel( aSize,MapMode(MAP_APPFONT) ); 292*766ce4d0SZheng Fan aSize.setWidth(GetOutputSizePixel().Width()); 293*766ce4d0SZheng Fan SetSizePixel(aSize); 294*766ce4d0SZheng Fan break; 295*766ce4d0SZheng Fan }*/ 296*766ce4d0SZheng Fan 297*766ce4d0SZheng Fan default: 298*766ce4d0SZheng Fan break; 299*766ce4d0SZheng Fan } 300*766ce4d0SZheng Fan } 301*766ce4d0SZheng Fan 302*766ce4d0SZheng Fan SfxBindings* ParaPropertyPanel::GetBindings() 303*766ce4d0SZheng Fan { 304*766ce4d0SZheng Fan return mpBindings; 305*766ce4d0SZheng Fan } 306*766ce4d0SZheng Fan 307*766ce4d0SZheng Fan void ParaPropertyPanel::SetupIcons (void) 308*766ce4d0SZheng Fan { 309*766ce4d0SZheng Fan if (Theme::GetBoolean(Theme::Bool_UseSymphonyIcons)) 310*766ce4d0SZheng Fan { 311*766ce4d0SZheng Fan } 312*766ce4d0SZheng Fan else 313*766ce4d0SZheng Fan { 314*766ce4d0SZheng Fan } 315*766ce4d0SZheng Fan } 316*766ce4d0SZheng Fan 317*766ce4d0SZheng Fan void ParaPropertyPanel::DataChanged (const DataChangedEvent& rEvent) 318*766ce4d0SZheng Fan { 319*766ce4d0SZheng Fan (void)rEvent; 320*766ce4d0SZheng Fan 321*766ce4d0SZheng Fan SetupIcons(); 322*766ce4d0SZheng Fan } 323*766ce4d0SZheng Fan 324*766ce4d0SZheng Fan ParaPropertyPanel::~ParaPropertyPanel() 325*766ce4d0SZheng Fan { 326*766ce4d0SZheng Fan delete mpLnSPItem; 327*766ce4d0SZheng Fan } 328*766ce4d0SZheng Fan 329*766ce4d0SZheng Fan void ParaPropertyPanel::ReSize(bool bSize) 330*766ce4d0SZheng Fan { 331*766ce4d0SZheng Fan if(bSize) 332*766ce4d0SZheng Fan { 333*766ce4d0SZheng Fan //Paragraph spacing 334*766ce4d0SZheng Fan maFTUL->SetPosPixel(POS_FT_PARA_SPACE); 335*766ce4d0SZheng Fan maTbxUL_IncDec->SetPosPixel(POS_TBX_PARA_SPACE_INC_DEC); 336*766ce4d0SZheng Fan maTopDist->SetPosPixel(POS_MBX_TOP_DIST); 337*766ce4d0SZheng Fan maBottomDist->SetPosPixel(POS_MBX_BOT_DIST); 338*766ce4d0SZheng Fan //Indent 339*766ce4d0SZheng Fan maFTIndent->SetPosPixel(POS_FT_PARA_INDENT); 340*766ce4d0SZheng Fan maTbxIndent_IncDec->SetPosPixel(POS_TBX_PARA_INDENT_INC_DEC); 341*766ce4d0SZheng Fan maTbxProDemote->SetPosPixel(POS_TBX_PARA_INDENT_INC_DEC); 342*766ce4d0SZheng Fan maLeftIndent->SetPosPixel(POS_MBX_LEFT_DIST); 343*766ce4d0SZheng Fan maRightIndent->SetPosPixel(POS_MBX_RIGHT_DIST); 344*766ce4d0SZheng Fan maFLineIndent->SetPosPixel(POS_MBX_FLINE_DIST); 345*766ce4d0SZheng Fan //Line spacing 346*766ce4d0SZheng Fan maLineSPTbx->SetPosPixel(TBX_LINE_SPACE); 347*766ce4d0SZheng Fan //image 348*766ce4d0SZheng Fan maFISpace1.SetPosPixel(POS_IMG_SPACE1); 349*766ce4d0SZheng Fan maFISpace2.SetPosPixel(POS_IMG_SPACE2); 350*766ce4d0SZheng Fan maFIndent1.SetPosPixel(POS_IMG_INDENT1); 351*766ce4d0SZheng Fan maFIndent2.SetPosPixel(POS_IMG_INDENT2); 352*766ce4d0SZheng Fan maFIndent3.SetPosPixel(POS_IMG_INDENT3); 353*766ce4d0SZheng Fan Size aSize(GetOutputSizePixel().Width(),PARA_SECTIONPAGE_HEIGHT); 354*766ce4d0SZheng Fan aSize = LogicToPixel( aSize, MapMode(MAP_APPFONT) ); 355*766ce4d0SZheng Fan aSize.setWidth(GetOutputSizePixel().Width()); 356*766ce4d0SZheng Fan SetSizePixel(aSize); 357*766ce4d0SZheng Fan } 358*766ce4d0SZheng Fan else 359*766ce4d0SZheng Fan { 360*766ce4d0SZheng Fan //Paragraph spacing 361*766ce4d0SZheng Fan maFTUL->SetPosPixel(POS_FT_PARA_SPACE2); 362*766ce4d0SZheng Fan maTbxUL_IncDec->SetPosPixel(POS_TBX_PARA_SPACE_INC_DEC2); 363*766ce4d0SZheng Fan maTopDist->SetPosPixel(POS_MBX_TOP_DIST2); 364*766ce4d0SZheng Fan maBottomDist->SetPosPixel(POS_MBX_BOT_DIST2); 365*766ce4d0SZheng Fan //Indent 366*766ce4d0SZheng Fan maFTIndent->SetPosPixel(POS_FT_PARA_INDENT2); 367*766ce4d0SZheng Fan maTbxIndent_IncDec->SetPosPixel(POS_TBX_PARA_INDENT_INC_DEC2); 368*766ce4d0SZheng Fan maTbxProDemote->SetPosPixel(POS_TBX_PARA_INDENT_INC_DEC2); 369*766ce4d0SZheng Fan maLeftIndent->SetPosPixel(POS_MBX_LEFT_DIST2); 370*766ce4d0SZheng Fan maRightIndent->SetPosPixel(POS_MBX_RIGHT_DIST2); 371*766ce4d0SZheng Fan maFLineIndent->SetPosPixel(POS_MBX_FLINE_DIST2); 372*766ce4d0SZheng Fan //Line spacing 373*766ce4d0SZheng Fan maLineSPTbx->SetPosPixel(TBX_LINE_SPACE2); 374*766ce4d0SZheng Fan //image 375*766ce4d0SZheng Fan maFISpace1.SetPosPixel(POS_IMG_SPACE12); 376*766ce4d0SZheng Fan maFISpace2.SetPosPixel(POS_IMG_SPACE22); 377*766ce4d0SZheng Fan maFIndent1.SetPosPixel(POS_IMG_INDENT12); 378*766ce4d0SZheng Fan maFIndent2.SetPosPixel(POS_IMG_INDENT22); 379*766ce4d0SZheng Fan maFIndent3.SetPosPixel(POS_IMG_INDENT32); 380*766ce4d0SZheng Fan Size aSize(GetOutputSizePixel().Width(),PARA_SECTIONPAGE_HEIGHT_2); 381*766ce4d0SZheng Fan aSize = LogicToPixel( aSize, MapMode(MAP_APPFONT) ); 382*766ce4d0SZheng Fan aSize.setWidth(GetOutputSizePixel().Width()); 383*766ce4d0SZheng Fan SetSizePixel(aSize); 384*766ce4d0SZheng Fan } 385*766ce4d0SZheng Fan } 386*766ce4d0SZheng Fan 387*766ce4d0SZheng Fan void ParaPropertyPanel::EndSpacingPopupMode (void) 388*766ce4d0SZheng Fan { 389*766ce4d0SZheng Fan maLineSpacePopup.Hide(); 390*766ce4d0SZheng Fan } 391*766ce4d0SZheng Fan 392*766ce4d0SZheng Fan void ParaPropertyPanel::EndBulletsPopupMode (void) 393*766ce4d0SZheng Fan { 394*766ce4d0SZheng Fan //maUnderlinePopup.Hide(); 395*766ce4d0SZheng Fan } 396*766ce4d0SZheng Fan 397*766ce4d0SZheng Fan void ParaPropertyPanel::EndNumberingPopupMode (void) 398*766ce4d0SZheng Fan { 399*766ce4d0SZheng Fan //maUnderlinePopup.Hide(); 400*766ce4d0SZheng Fan } 401*766ce4d0SZheng Fan 402*766ce4d0SZheng Fan 403*766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxAlign() 404*766ce4d0SZheng Fan { 405*766ce4d0SZheng Fan maAlignToolBox->SetItemImage(TOOLBOX_ITEM1,maLeftPara); 406*766ce4d0SZheng Fan maAlignToolBox->SetItemImage(TOOLBOX_ITEM2,maCentPara); 407*766ce4d0SZheng Fan maAlignToolBox->SetItemImage(TOOLBOX_ITEM3,maRightPara); 408*766ce4d0SZheng Fan maAlignToolBox->SetItemImage(TOOLBOX_ITEM4,maJusPara); 409*766ce4d0SZheng Fan Link aLink = LINK( this, ParaPropertyPanel, AlignStyleModifyHdl_Impl ); 410*766ce4d0SZheng Fan maAlignToolBox->SetSelectHdl( aLink ); 411*766ce4d0SZheng Fan Size aTbxSize (maAlignToolBox->CalcWindowSizePixel()); 412*766ce4d0SZheng Fan maAlignToolBox->SetOutputSizePixel( aTbxSize ); 413*766ce4d0SZheng Fan } 414*766ce4d0SZheng Fan 415*766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxVertAlign() 416*766ce4d0SZheng Fan { 417*766ce4d0SZheng Fan InitImageList(maTBxVertAlign, maVertImageList, maVertImageListH); 418*766ce4d0SZheng Fan maTBxVertAlign->SetSelectHdl(LINK(this,ParaPropertyPanel,VertTbxSelectHandler)); 419*766ce4d0SZheng Fan Size aTbxSize (maTBxVertAlign->CalcWindowSizePixel()); 420*766ce4d0SZheng Fan maTBxVertAlign->SetOutputSizePixel( aTbxSize ); 421*766ce4d0SZheng Fan } 422*766ce4d0SZheng Fan 423*766ce4d0SZheng Fan 424*766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxIndent() 425*766ce4d0SZheng Fan { 426*766ce4d0SZheng Fan Link aLink = LINK( this, ParaPropertyPanel, ModifyIndentHdl_Impl ); 427*766ce4d0SZheng Fan maLeftIndent->SetModifyHdl( aLink ); 428*766ce4d0SZheng Fan maRightIndent->SetModifyHdl( aLink ); 429*766ce4d0SZheng Fan maFLineIndent->SetModifyHdl( aLink ); 430*766ce4d0SZheng Fan 431*766ce4d0SZheng Fan if( Application::GetSettings().GetLayoutRTL()) 432*766ce4d0SZheng Fan { 433*766ce4d0SZheng Fan maTbxIndent_IncDec->SetItemImage(TOOLBOX_ITEM1,maIndInc_BD); 434*766ce4d0SZheng Fan maTbxIndent_IncDec->SetItemImage(TOOLBOX_ITEM2,maIndDec_BD); 435*766ce4d0SZheng Fan } 436*766ce4d0SZheng Fan else 437*766ce4d0SZheng Fan { 438*766ce4d0SZheng Fan maTbxIndent_IncDec->SetItemImage(TOOLBOX_ITEM1,maIndInc); 439*766ce4d0SZheng Fan maTbxIndent_IncDec->SetItemImage(TOOLBOX_ITEM2,maIndDec); 440*766ce4d0SZheng Fan } 441*766ce4d0SZheng Fan maTbxIndent_IncDec->SetItemImage(TOOLBOX_ITEM3,maIndHang); 442*766ce4d0SZheng Fan aLink = LINK( this, ParaPropertyPanel, ClickIndent_IncDec_Hdl_Impl ); 443*766ce4d0SZheng Fan maTbxIndent_IncDec->SetSelectHdl(aLink); 444*766ce4d0SZheng Fan m_eLRSpaceUnit = maLRSpaceControl.GetCoreMetric(); 445*766ce4d0SZheng Fan Size aTbxSize = maTbxIndent_IncDec->CalcWindowSizePixel(); 446*766ce4d0SZheng Fan maTbxIndent_IncDec->SetOutputSizePixel( aTbxSize ); 447*766ce4d0SZheng Fan 448*766ce4d0SZheng Fan if( Application::GetSettings().GetLayoutRTL()) 449*766ce4d0SZheng Fan { 450*766ce4d0SZheng Fan maTbxProDemote->SetItemImage(TOOLBOX_ITEM1,maIndInc_BD); 451*766ce4d0SZheng Fan maTbxProDemote->SetItemImage(TOOLBOX_ITEM2,maIndDec_BD); 452*766ce4d0SZheng Fan } 453*766ce4d0SZheng Fan else 454*766ce4d0SZheng Fan { 455*766ce4d0SZheng Fan maTbxProDemote->SetItemImage(TOOLBOX_ITEM1,maIndInc); 456*766ce4d0SZheng Fan maTbxProDemote->SetItemImage(TOOLBOX_ITEM2,maIndDec); 457*766ce4d0SZheng Fan } 458*766ce4d0SZheng Fan maTbxProDemote->SetItemImage(TOOLBOX_ITEM3,maIndHang); 459*766ce4d0SZheng Fan aLink = LINK( this, ParaPropertyPanel, ClickProDemote_Hdl_Impl ); 460*766ce4d0SZheng Fan maTbxProDemote->SetSelectHdl(aLink); 461*766ce4d0SZheng Fan m_eLRSpaceUnit = maLRSpaceControl.GetCoreMetric(); 462*766ce4d0SZheng Fan aTbxSize = maTbxProDemote->CalcWindowSizePixel(); 463*766ce4d0SZheng Fan maTbxProDemote->SetOutputSizePixel( aTbxSize ); 464*766ce4d0SZheng Fan } 465*766ce4d0SZheng Fan 466*766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxBGColor() 467*766ce4d0SZheng Fan { 468*766ce4d0SZheng Fan mpColorUpdater.reset(new ::svx::ToolboxButtonColorUpdater(SID_BACKGROUND_COLOR, TBI_BACK_COLOR, maTBxBackColor.get(), TBX_UPDATER_MODE_CHAR_COLOR_NEW )); 469*766ce4d0SZheng Fan 470*766ce4d0SZheng Fan maTBxBackColor->SetItemImage(TBI_BACK_COLOR, GetDisplayBackground().GetColor().IsDark()? maImgBackColorHigh : maImgBackColor); 471*766ce4d0SZheng Fan maTBxBackColor->SetItemBits( TBI_BACK_COLOR, maTBxBackColor->GetItemBits( TBI_BACK_COLOR ) | TIB_DROPDOWNONLY ); 472*766ce4d0SZheng Fan 473*766ce4d0SZheng Fan Link aLink = LINK(this, ParaPropertyPanel, ToolBoxBackColorDDHandler); 474*766ce4d0SZheng Fan maTBxBackColor->SetDropdownClickHdl ( aLink ); 475*766ce4d0SZheng Fan maTBxBackColor->SetSelectHdl ( aLink ); 476*766ce4d0SZheng Fan Size aTbxSize (maTBxBackColor->CalcWindowSizePixel()); 477*766ce4d0SZheng Fan maTBxBackColor->SetOutputSizePixel( aTbxSize ); 478*766ce4d0SZheng Fan } 479*766ce4d0SZheng Fan 480*766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxBulletsNumbering() 481*766ce4d0SZheng Fan { 482*766ce4d0SZheng Fan if( Application::GetSettings().GetLayoutRTL())//sym2_7380 483*766ce4d0SZheng Fan { 484*766ce4d0SZheng Fan maTBxNumBullet->SetItemImage( IID_BULLET, maNumBImageListRTL.GetImage( IID_BULLET ) ); 485*766ce4d0SZheng Fan maTBxNumBullet->SetItemImage( IID_NUMBER, maNumBImageListRTL.GetImage( IID_NUMBER ) ); 486*766ce4d0SZheng Fan } 487*766ce4d0SZheng Fan else 488*766ce4d0SZheng Fan InitImageList(maTBxNumBullet, maNumBImageList, maNumBImageListH); 489*766ce4d0SZheng Fan 490*766ce4d0SZheng Fan maTBxNumBullet->SetDropdownClickHdl(LINK(this,ParaPropertyPanel,NumBTbxDDHandler)); 491*766ce4d0SZheng Fan maTBxNumBullet->SetSelectHdl(LINK(this,ParaPropertyPanel,NumBTbxSelectHandler)); 492*766ce4d0SZheng Fan Size aTbxSize (maTBxNumBullet->CalcWindowSizePixel()); 493*766ce4d0SZheng Fan maTBxNumBullet->SetOutputSizePixel( aTbxSize ); 494*766ce4d0SZheng Fan } 495*766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxSpacing() 496*766ce4d0SZheng Fan { 497*766ce4d0SZheng Fan Link aLink = LINK( this, ParaPropertyPanel, ULSpaceHdl_Impl ); 498*766ce4d0SZheng Fan maTopDist->SetModifyHdl(aLink); 499*766ce4d0SZheng Fan maBottomDist->SetModifyHdl( aLink ); 500*766ce4d0SZheng Fan 501*766ce4d0SZheng Fan maTbxUL_IncDec->SetItemImage(TOOLBOX_ITEM1,maParInc); 502*766ce4d0SZheng Fan maTbxUL_IncDec->SetItemImage(TOOLBOX_ITEM2,maParDec); 503*766ce4d0SZheng Fan aLink = LINK( this, ParaPropertyPanel, ClickUL_IncDec_Hdl_Impl ); 504*766ce4d0SZheng Fan maTbxUL_IncDec->SetSelectHdl(aLink); 505*766ce4d0SZheng Fan m_eULSpaceUnit = maULSpaceControl.GetCoreMetric(); 506*766ce4d0SZheng Fan Size aTbxSize = maTbxUL_IncDec->CalcWindowSizePixel(); 507*766ce4d0SZheng Fan maTbxUL_IncDec->SetOutputSizePixel( aTbxSize ); 508*766ce4d0SZheng Fan } 509*766ce4d0SZheng Fan void ParaPropertyPanel::InitToolBoxLineSpacing() 510*766ce4d0SZheng Fan { 511*766ce4d0SZheng Fan Link aLink = LINK( this, ParaPropertyPanel, ClickLineSPDropDownHdl_Impl ); 512*766ce4d0SZheng Fan maLineSPTbx->SetDropdownClickHdl( aLink ); 513*766ce4d0SZheng Fan maLineSPTbx->SetSelectHdl( aLink ); //support keyinput "ENTER" 514*766ce4d0SZheng Fan maLineSPTbx->SetItemBits( TOOLBOX_ITEM1, maLineSPTbx->GetItemBits( TOOLBOX_ITEM1 ) | TIB_DROPDOWNONLY ); 515*766ce4d0SZheng Fan maLineSPTbx->SetItemImage(TOOLBOX_ITEM1,maSpace3); 516*766ce4d0SZheng Fan Size aTbxSize = maLineSPTbx->CalcWindowSizePixel(); 517*766ce4d0SZheng Fan maLineSPTbx->SetOutputSizePixel( aTbxSize ); 518*766ce4d0SZheng Fan } 519*766ce4d0SZheng Fan 520*766ce4d0SZheng Fan void ParaPropertyPanel::initial() 521*766ce4d0SZheng Fan { 522*766ce4d0SZheng Fan maFISpace1.SetImage(maSpace1); 523*766ce4d0SZheng Fan maFISpace2.SetImage(maSpace2); 524*766ce4d0SZheng Fan maFIndent1.SetImage(maIndent3); 525*766ce4d0SZheng Fan maFIndent2.SetImage(maIndent2); 526*766ce4d0SZheng Fan maFIndent3.SetImage(maIndent1); 527*766ce4d0SZheng Fan 528*766ce4d0SZheng Fan GetBindings()->Invalidate(SID_ATTR_PARA_ADJUST_LEFT,sal_True,sal_False); 529*766ce4d0SZheng Fan GetBindings()->Invalidate(SID_ATTR_PARA_ADJUST_CENTER,sal_True,sal_False); 530*766ce4d0SZheng Fan GetBindings()->Invalidate(SID_ATTR_PARA_ADJUST_RIGHT,sal_True,sal_False); 531*766ce4d0SZheng Fan GetBindings()->Invalidate(SID_ATTR_PARA_ADJUST_BLOCK,sal_True,sal_False); 532*766ce4d0SZheng Fan 533*766ce4d0SZheng Fan //toolbox 534*766ce4d0SZheng Fan SetupIcons(); 535*766ce4d0SZheng Fan InitToolBoxAlign(); 536*766ce4d0SZheng Fan InitToolBoxVertAlign(); 537*766ce4d0SZheng Fan InitToolBoxIndent(); 538*766ce4d0SZheng Fan InitToolBoxBGColor(); 539*766ce4d0SZheng Fan InitToolBoxBulletsNumbering(); 540*766ce4d0SZheng Fan InitToolBoxSpacing(); 541*766ce4d0SZheng Fan InitToolBoxLineSpacing(); 542*766ce4d0SZheng Fan 543*766ce4d0SZheng Fan #ifdef HAS_IA2 544*766ce4d0SZheng Fan maAlignToolBox->SetAccRelationLabeledBy(&maAlignToolBox); 545*766ce4d0SZheng Fan maTBxVertAlign->SetMpSubEditAccLableBy(&maTBxVertAlign); 546*766ce4d0SZheng Fan maTBxNumBullet->SetAccRelationLabeledBy(&maTBxNumBullet); 547*766ce4d0SZheng Fan maTBxBackColor->SetMpSubEditAccLableBy(&maTBxBackColor); 548*766ce4d0SZheng Fan maFTUL->SetAccRelationLabeledBy(&maFTUL); 549*766ce4d0SZheng Fan maTbxUL_IncDec->SetAccRelationLabeledBy(&maTbxUL_IncDec); 550*766ce4d0SZheng Fan maTopDist->SetAccRelationLabeledBy(&maTopDist); 551*766ce4d0SZheng Fan maBottomDist->SetAccRelationLabeledBy(&maBottomDist); 552*766ce4d0SZheng Fan maLineSPTbx->SetAccRelationLabeledBy(&maLineSPTbx); 553*766ce4d0SZheng Fan maFTIndent->SetAccRelationLabeledBy(&maFTIndent); 554*766ce4d0SZheng Fan maTbxIndent_IncDec->SetAccRelationLabeledBy(&maTbxIndent_IncDec); 555*766ce4d0SZheng Fan maTbxProDemote->SetAccRelationLabeledBy(&maTbxProDemote); 556*766ce4d0SZheng Fan maLeftIndent->SetAccRelationLabeledBy(&maLeftIndent); 557*766ce4d0SZheng Fan maRightIndent->SetAccRelationLabeledBy(&maRightIndent); 558*766ce4d0SZheng Fan maFLineIndent->SetAccRelationLabeledBy(&maFLineIndent); 559*766ce4d0SZheng Fan mpColorUpdater->SetAccRelationLabeledBy(&mpColorUpdater); 560*766ce4d0SZheng Fan #endif 561*766ce4d0SZheng Fan } 562*766ce4d0SZheng Fan 563*766ce4d0SZheng Fan void ParaPropertyPanel::InitImageList(::boost::scoped_ptr<ToolBox>& rTbx, ImageList& rImglst, ImageList& rImgHlst) 564*766ce4d0SZheng Fan { 565*766ce4d0SZheng Fan sal_Bool bHighContrast = GetDisplayBackground().GetColor().IsDark(); 566*766ce4d0SZheng Fan 567*766ce4d0SZheng Fan ImageList& rImgLst = bHighContrast ? rImgHlst : rImglst; 568*766ce4d0SZheng Fan 569*766ce4d0SZheng Fan sal_uInt16 nCount = rTbx->GetItemCount(); 570*766ce4d0SZheng Fan for (sal_uInt16 i = 0; i < nCount; i++) 571*766ce4d0SZheng Fan { 572*766ce4d0SZheng Fan sal_uInt16 nId = rTbx->GetItemId(i); 573*766ce4d0SZheng Fan rTbx->SetItemImage( nId, rImgLst.GetImage( nId ) ); 574*766ce4d0SZheng Fan } 575*766ce4d0SZheng Fan } 576*766ce4d0SZheng Fan 577*766ce4d0SZheng Fan //===========================for Numbering & Bullet================================================ 578*766ce4d0SZheng Fan 579*766ce4d0SZheng Fan 580*766ce4d0SZheng Fan 581*766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, NumBTbxDDHandler, ToolBox*, pToolBox) 582*766ce4d0SZheng Fan { 583*766ce4d0SZheng Fan sal_uInt16 nId = pToolBox->GetCurItemId(); 584*766ce4d0SZheng Fan 585*766ce4d0SZheng Fan EndTracking(); 586*766ce4d0SZheng Fan pToolBox->SetItemDown( nId, sal_True ); 587*766ce4d0SZheng Fan 588*766ce4d0SZheng Fan if (nId == 1) 589*766ce4d0SZheng Fan { 590*766ce4d0SZheng Fan maBulletsPopup.UpdateValueSet(); 591*766ce4d0SZheng Fan maBulletsPopup.Show(*pToolBox); 592*766ce4d0SZheng Fan } 593*766ce4d0SZheng Fan else if (nId == 2) 594*766ce4d0SZheng Fan { 595*766ce4d0SZheng Fan maNumberingPopup.UpdateValueSet(); 596*766ce4d0SZheng Fan maNumberingPopup.Show(*pToolBox); 597*766ce4d0SZheng Fan } 598*766ce4d0SZheng Fan pToolBox->SetItemDown( nId, sal_False ); 599*766ce4d0SZheng Fan return 0; 600*766ce4d0SZheng Fan } 601*766ce4d0SZheng Fan 602*766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, NumBTbxSelectHandler, ToolBox*, pToolBox) 603*766ce4d0SZheng Fan { 604*766ce4d0SZheng Fan sal_uInt16 nId = pToolBox->GetCurItemId(); 605*766ce4d0SZheng Fan sal_uInt16 nSID = SID_TABLE_VERT_NONE; 606*766ce4d0SZheng Fan 607*766ce4d0SZheng Fan EndTracking(); 608*766ce4d0SZheng Fan if (nId == 1) 609*766ce4d0SZheng Fan { 610*766ce4d0SZheng Fan nSID = FN_NUM_BULLET_ON; 611*766ce4d0SZheng Fan } 612*766ce4d0SZheng Fan else if ( nId == 2) 613*766ce4d0SZheng Fan { 614*766ce4d0SZheng Fan nSID = FN_NUM_NUMBERING_ON; 615*766ce4d0SZheng Fan } 616*766ce4d0SZheng Fan SfxBoolItem aBoolItem(nSID, sal_True); 617*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute(nSID, SFX_CALLMODE_RECORD, &aBoolItem, 0L); 618*766ce4d0SZheng Fan 619*766ce4d0SZheng Fan return 0; 620*766ce4d0SZheng Fan } 621*766ce4d0SZheng Fan 622*766ce4d0SZheng Fan 623*766ce4d0SZheng Fan //================================for Vertical Alignment======================================== 624*766ce4d0SZheng Fan 625*766ce4d0SZheng Fan 626*766ce4d0SZheng Fan 627*766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, VertTbxSelectHandler, ToolBox*, pToolBox) 628*766ce4d0SZheng Fan { 629*766ce4d0SZheng Fan sal_uInt16 nId = pToolBox->GetCurItemId(); 630*766ce4d0SZheng Fan sal_uInt16 nSID = SID_TABLE_VERT_NONE; 631*766ce4d0SZheng Fan EndTracking(); 632*766ce4d0SZheng Fan if (nId == 1) 633*766ce4d0SZheng Fan { 634*766ce4d0SZheng Fan nSID = SID_TABLE_VERT_NONE; 635*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(1, STATE_CHECK); 636*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(2, STATE_NOCHECK); 637*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(3, STATE_NOCHECK); 638*766ce4d0SZheng Fan } 639*766ce4d0SZheng Fan else if (nId == 2) 640*766ce4d0SZheng Fan { 641*766ce4d0SZheng Fan nSID = SID_TABLE_VERT_CENTER; 642*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(1, STATE_NOCHECK); 643*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(2, STATE_CHECK); 644*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(3, STATE_NOCHECK); 645*766ce4d0SZheng Fan } 646*766ce4d0SZheng Fan else if (nId == 3) 647*766ce4d0SZheng Fan { 648*766ce4d0SZheng Fan nSID = SID_TABLE_VERT_BOTTOM; 649*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(1, STATE_NOCHECK); 650*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(2, STATE_NOCHECK); 651*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(3, STATE_CHECK); 652*766ce4d0SZheng Fan } 653*766ce4d0SZheng Fan SfxBoolItem aBoolItem(nSID, sal_True); 654*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute(nSID, SFX_CALLMODE_RECORD, &aBoolItem, 0L); 655*766ce4d0SZheng Fan 656*766ce4d0SZheng Fan return 0; 657*766ce4d0SZheng Fan } 658*766ce4d0SZheng Fan 659*766ce4d0SZheng Fan void ParaPropertyPanel::VertStateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState) 660*766ce4d0SZheng Fan { 661*766ce4d0SZheng Fan if (eState < SFX_ITEM_DONTCARE) 662*766ce4d0SZheng Fan { 663*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(1, STATE_NOCHECK); 664*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(2, STATE_NOCHECK); 665*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(3, STATE_NOCHECK); 666*766ce4d0SZheng Fan maTBxVertAlign->EnableItem(1, sal_False); 667*766ce4d0SZheng Fan maTBxVertAlign->EnableItem(2, sal_False); 668*766ce4d0SZheng Fan maTBxVertAlign->EnableItem(3, sal_False); 669*766ce4d0SZheng Fan } 670*766ce4d0SZheng Fan else 671*766ce4d0SZheng Fan { 672*766ce4d0SZheng Fan maTBxVertAlign->EnableItem(1, sal_True); 673*766ce4d0SZheng Fan maTBxVertAlign->EnableItem(2, sal_True); 674*766ce4d0SZheng Fan maTBxVertAlign->EnableItem(3, sal_True); 675*766ce4d0SZheng Fan if ( (eState >= SFX_ITEM_DEFAULT) && (pState->ISA(SfxBoolItem))) 676*766ce4d0SZheng Fan { 677*766ce4d0SZheng Fan const SfxBoolItem* pItem= (const SfxBoolItem*)pState; 678*766ce4d0SZheng Fan sal_Bool aBool = (sal_Bool)pItem->GetValue(); 679*766ce4d0SZheng Fan 680*766ce4d0SZheng Fan if (aBool) 681*766ce4d0SZheng Fan { 682*766ce4d0SZheng Fan if (nSID == SID_TABLE_VERT_NONE) 683*766ce4d0SZheng Fan { 684*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(1, STATE_CHECK); 685*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(2, STATE_NOCHECK); 686*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(3, STATE_NOCHECK); 687*766ce4d0SZheng Fan } 688*766ce4d0SZheng Fan else if (nSID == SID_TABLE_VERT_CENTER) 689*766ce4d0SZheng Fan { 690*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(1, STATE_NOCHECK); 691*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(2, STATE_CHECK); 692*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(3, STATE_NOCHECK); 693*766ce4d0SZheng Fan } 694*766ce4d0SZheng Fan else if (nSID == SID_TABLE_VERT_BOTTOM) 695*766ce4d0SZheng Fan { 696*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(1, STATE_NOCHECK); 697*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(2, STATE_NOCHECK); 698*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(3, STATE_CHECK); 699*766ce4d0SZheng Fan } 700*766ce4d0SZheng Fan } 701*766ce4d0SZheng Fan else 702*766ce4d0SZheng Fan { 703*766ce4d0SZheng Fan if (nSID == SID_TABLE_VERT_NONE) 704*766ce4d0SZheng Fan { 705*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(1, STATE_NOCHECK); 706*766ce4d0SZheng Fan } 707*766ce4d0SZheng Fan else if (nSID == SID_TABLE_VERT_CENTER) 708*766ce4d0SZheng Fan { 709*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(2, STATE_NOCHECK); 710*766ce4d0SZheng Fan } 711*766ce4d0SZheng Fan else if (nSID == SID_TABLE_VERT_BOTTOM) 712*766ce4d0SZheng Fan { 713*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(3, STATE_NOCHECK); 714*766ce4d0SZheng Fan } 715*766ce4d0SZheng Fan } 716*766ce4d0SZheng Fan } 717*766ce4d0SZheng Fan else 718*766ce4d0SZheng Fan { 719*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(1, STATE_NOCHECK); 720*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(2, STATE_NOCHECK); 721*766ce4d0SZheng Fan maTBxVertAlign->SetItemState(3, STATE_NOCHECK); 722*766ce4d0SZheng Fan } 723*766ce4d0SZheng Fan } 724*766ce4d0SZheng Fan } 725*766ce4d0SZheng Fan //==================================for Background color===================== 726*766ce4d0SZheng Fan 727*766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, ToolBoxBackColorDDHandler,ToolBox*, pToolBox) 728*766ce4d0SZheng Fan { 729*766ce4d0SZheng Fan sal_uInt16 nId = pToolBox->GetCurItemId(); 730*766ce4d0SZheng Fan OSL_ASSERT(nId == TBI_BACK_COLOR); 731*766ce4d0SZheng Fan if(nId == TBI_BACK_COLOR) 732*766ce4d0SZheng Fan { 733*766ce4d0SZheng Fan pToolBox->SetItemDown( nId, true ); 734*766ce4d0SZheng Fan maBGColorPopup.Show(*pToolBox); 735*766ce4d0SZheng Fan maBGColorPopup.SetCurrentColor(maColor, mbColorAvailable); 736*766ce4d0SZheng Fan } 737*766ce4d0SZheng Fan return 0; 738*766ce4d0SZheng Fan } 739*766ce4d0SZheng Fan 740*766ce4d0SZheng Fan IMPL_LINK( ParaPropertyPanel, ImplPopupModeEndHdl, FloatingWindow*, EMPTYARG ) 741*766ce4d0SZheng Fan { 742*766ce4d0SZheng Fan return 0; 743*766ce4d0SZheng Fan } 744*766ce4d0SZheng Fan 745*766ce4d0SZheng Fan void ParaPropertyPanel::ShowMenu (void) 746*766ce4d0SZheng Fan { 747*766ce4d0SZheng Fan if (mpBindings != NULL) 748*766ce4d0SZheng Fan { 749*766ce4d0SZheng Fan SfxDispatcher* pDispatcher = mpBindings->GetDispatcher(); 750*766ce4d0SZheng Fan if (pDispatcher != NULL) 751*766ce4d0SZheng Fan pDispatcher->Execute(SID_PARA_DLG, SFX_CALLMODE_ASYNCHRON); 752*766ce4d0SZheng Fan } 753*766ce4d0SZheng Fan } 754*766ce4d0SZheng Fan 755*766ce4d0SZheng Fan void ParaPropertyPanel::ParaBKGStateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState) 756*766ce4d0SZheng Fan { 757*766ce4d0SZheng Fan if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxBrushItem)) 758*766ce4d0SZheng Fan { 759*766ce4d0SZheng Fan const SvxBrushItem* pItem = (const SvxBrushItem*)pState; 760*766ce4d0SZheng Fan maColor = pItem->GetColor(); 761*766ce4d0SZheng Fan mbColorAvailable = sal_True; 762*766ce4d0SZheng Fan mpColorUpdater->Update(maColor); 763*766ce4d0SZheng Fan } 764*766ce4d0SZheng Fan else 765*766ce4d0SZheng Fan { 766*766ce4d0SZheng Fan mbColorAvailable = sal_False; 767*766ce4d0SZheng Fan maColor.SetColor(COL_AUTO); 768*766ce4d0SZheng Fan mpColorUpdater->Update(maColor); 769*766ce4d0SZheng Fan } 770*766ce4d0SZheng Fan } 771*766ce4d0SZheng Fan 772*766ce4d0SZheng Fan Color ParaPropertyPanel::GetBGColor (void) const 773*766ce4d0SZheng Fan { 774*766ce4d0SZheng Fan return maColor; 775*766ce4d0SZheng Fan } 776*766ce4d0SZheng Fan 777*766ce4d0SZheng Fan void ParaPropertyPanel::SetBGColor ( 778*766ce4d0SZheng Fan const String& rsColorName, 779*766ce4d0SZheng Fan const Color aColor) 780*766ce4d0SZheng Fan { 781*766ce4d0SZheng Fan SvxColorItem aColorItem(aColor, SID_BACKGROUND_COLOR); 782*766ce4d0SZheng Fan mpBindings->GetDispatcher()->Execute(SID_BACKGROUND_COLOR, SFX_CALLMODE_RECORD, &aColorItem, 0L); 783*766ce4d0SZheng Fan maColor = aColor; 784*766ce4d0SZheng Fan } 785*766ce4d0SZheng Fan 786*766ce4d0SZheng Fan //==================================for Paragraph Alignment===================== 787*766ce4d0SZheng Fan IMPL_LINK( ParaPropertyPanel, AlignStyleModifyHdl_Impl, ToolBox*, pBox ) 788*766ce4d0SZheng Fan { 789*766ce4d0SZheng Fan switch (pBox->GetCurItemId()) 790*766ce4d0SZheng Fan { 791*766ce4d0SZheng Fan case BT_SUBSTLEFT: 792*766ce4d0SZheng Fan { 793*766ce4d0SZheng Fan pBox->SetItemState(BT_SUBSTLEFT,STATE_CHECK); 794*766ce4d0SZheng Fan pBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK); 795*766ce4d0SZheng Fan pBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK); 796*766ce4d0SZheng Fan pBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK); 797*766ce4d0SZheng Fan SfxBoolItem aBoolItem( SID_ATTR_PARA_ADJUST_LEFT, sal_True ); 798*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute(SID_ATTR_PARA_ADJUST_LEFT, SFX_CALLMODE_RECORD, &aBoolItem, 0L); 799*766ce4d0SZheng Fan } 800*766ce4d0SZheng Fan break; 801*766ce4d0SZheng Fan case BT_SUBSTCENTER: 802*766ce4d0SZheng Fan { 803*766ce4d0SZheng Fan pBox->SetItemState(BT_SUBSTCENTER,STATE_CHECK); 804*766ce4d0SZheng Fan pBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK); 805*766ce4d0SZheng Fan pBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK); 806*766ce4d0SZheng Fan pBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK); 807*766ce4d0SZheng Fan SfxBoolItem aBoolItem( SID_ATTR_PARA_ADJUST_CENTER, sal_True ); 808*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute(SID_ATTR_PARA_ADJUST_CENTER, SFX_CALLMODE_RECORD, &aBoolItem, 0L); 809*766ce4d0SZheng Fan } 810*766ce4d0SZheng Fan break; 811*766ce4d0SZheng Fan case BT_SUBSTRIGHT: 812*766ce4d0SZheng Fan { 813*766ce4d0SZheng Fan pBox->SetItemState(BT_SUBSTRIGHT,STATE_CHECK); 814*766ce4d0SZheng Fan pBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK); 815*766ce4d0SZheng Fan pBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK); 816*766ce4d0SZheng Fan pBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK); 817*766ce4d0SZheng Fan SfxBoolItem aBoolItem( SID_ATTR_PARA_ADJUST_RIGHT, sal_True ); 818*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute(SID_ATTR_PARA_ADJUST_RIGHT, SFX_CALLMODE_RECORD, &aBoolItem, 0L); 819*766ce4d0SZheng Fan } 820*766ce4d0SZheng Fan break; 821*766ce4d0SZheng Fan case BT_SUBSTJUSTIFY: 822*766ce4d0SZheng Fan { 823*766ce4d0SZheng Fan pBox->SetItemState(BT_SUBSTJUSTIFY,STATE_CHECK); 824*766ce4d0SZheng Fan pBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK); 825*766ce4d0SZheng Fan pBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK); 826*766ce4d0SZheng Fan pBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK); 827*766ce4d0SZheng Fan SfxBoolItem aBoolItem( SID_ATTR_PARA_ADJUST_BLOCK, sal_True ); 828*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute(SID_ATTR_PARA_ADJUST_BLOCK, SFX_CALLMODE_RECORD, &aBoolItem, 0L); 829*766ce4d0SZheng Fan } 830*766ce4d0SZheng Fan break; 831*766ce4d0SZheng Fan } 832*766ce4d0SZheng Fan 833*766ce4d0SZheng Fan return 0; 834*766ce4d0SZheng Fan } 835*766ce4d0SZheng Fan //==================================for Paragraph Indent===================== 836*766ce4d0SZheng Fan IMPL_LINK( ParaPropertyPanel, ModifyIndentHdl_Impl, SvxRelativeField*, pBox ) 837*766ce4d0SZheng Fan { 838*766ce4d0SZheng Fan SvxLRSpaceItem aMargin( SID_ATTR_LRSPACE ); 839*766ce4d0SZheng Fan aMargin.SetTxtLeft( (const long)GetCoreValue( *maLeftIndent.get(), m_eLRSpaceUnit ) ); 840*766ce4d0SZheng Fan aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) ); 841*766ce4d0SZheng Fan aMargin.SetTxtFirstLineOfst( (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) ); 842*766ce4d0SZheng Fan 843*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute( 844*766ce4d0SZheng Fan SID_ATTR_LRSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L); 845*766ce4d0SZheng Fan return 0; 846*766ce4d0SZheng Fan } 847*766ce4d0SZheng Fan 848*766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, ClickIndent_IncDec_Hdl_Impl, ToolBox *, pControl) 849*766ce4d0SZheng Fan { 850*766ce4d0SZheng Fan switch (pControl->GetCurItemId()) 851*766ce4d0SZheng Fan { 852*766ce4d0SZheng Fan case INDENT_INCREMENT: 853*766ce4d0SZheng Fan { 854*766ce4d0SZheng Fan switch (maContext.GetCombinedContext()) 855*766ce4d0SZheng Fan { 856*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Default): 857*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Text): 858*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Table): 859*766ce4d0SZheng Fan { 860*766ce4d0SZheng Fan SfxBoolItem aMargin( SID_INC_INDENT, sal_True ); 861*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute( 862*766ce4d0SZheng Fan SID_INC_INDENT, SFX_CALLMODE_RECORD, &aMargin, 0L); 863*766ce4d0SZheng Fan } 864*766ce4d0SZheng Fan break; 865*766ce4d0SZheng Fan default: 866*766ce4d0SZheng Fan { 867*766ce4d0SZheng Fan SvxLRSpaceItem aMargin( SID_ATTR_LRSPACE ); 868*766ce4d0SZheng Fan 869*766ce4d0SZheng Fan maTxtLeft += INDENT_STEP; 870*766ce4d0SZheng Fan sal_Int64 nVal = OutputDevice::LogicToLogic( maTxtLeft, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM ); 871*766ce4d0SZheng Fan nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit ); 872*766ce4d0SZheng Fan aMargin.SetTxtLeft( (const long)nVal ); 873*766ce4d0SZheng Fan aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) ); 874*766ce4d0SZheng Fan aMargin.SetTxtFirstLineOfst( (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) ); 875*766ce4d0SZheng Fan 876*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute( 877*766ce4d0SZheng Fan SID_ATTR_LRSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L); 878*766ce4d0SZheng Fan } 879*766ce4d0SZheng Fan } 880*766ce4d0SZheng Fan } 881*766ce4d0SZheng Fan break; 882*766ce4d0SZheng Fan case INDENT_DECREMENT: 883*766ce4d0SZheng Fan { 884*766ce4d0SZheng Fan switch (maContext.GetCombinedContext()) 885*766ce4d0SZheng Fan { 886*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Default): 887*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Text): 888*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Table): 889*766ce4d0SZheng Fan { 890*766ce4d0SZheng Fan SfxBoolItem aMargin( SID_DEC_INDENT, sal_True ); 891*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute( 892*766ce4d0SZheng Fan SID_DEC_INDENT, SFX_CALLMODE_RECORD, &aMargin, 0L); 893*766ce4d0SZheng Fan } 894*766ce4d0SZheng Fan break; 895*766ce4d0SZheng Fan default: 896*766ce4d0SZheng Fan { 897*766ce4d0SZheng Fan if((maTxtLeft - INDENT_STEP) < 0) 898*766ce4d0SZheng Fan maTxtLeft = DEFAULT_VALUE; 899*766ce4d0SZheng Fan else 900*766ce4d0SZheng Fan maTxtLeft -= INDENT_STEP; 901*766ce4d0SZheng Fan 902*766ce4d0SZheng Fan SvxLRSpaceItem aMargin( SID_ATTR_LRSPACE ); 903*766ce4d0SZheng Fan 904*766ce4d0SZheng Fan sal_Int64 nVal = OutputDevice::LogicToLogic( maTxtLeft, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM ); 905*766ce4d0SZheng Fan nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit ); 906*766ce4d0SZheng Fan 907*766ce4d0SZheng Fan aMargin.SetTxtLeft( (const long)nVal ); 908*766ce4d0SZheng Fan aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) ); 909*766ce4d0SZheng Fan aMargin.SetTxtFirstLineOfst( (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) ); 910*766ce4d0SZheng Fan 911*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute( 912*766ce4d0SZheng Fan SID_ATTR_LRSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L); 913*766ce4d0SZheng Fan } 914*766ce4d0SZheng Fan } 915*766ce4d0SZheng Fan } 916*766ce4d0SZheng Fan break; 917*766ce4d0SZheng Fan case ID_HANGING_INDENT: 918*766ce4d0SZheng Fan { 919*766ce4d0SZheng Fan SvxLRSpaceItem aMargin( SID_ATTR_LRSPACE ); 920*766ce4d0SZheng Fan aMargin.SetTxtLeft( (const long)GetCoreValue( *maLeftIndent.get(), m_eLRSpaceUnit ) + (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) ); 921*766ce4d0SZheng Fan aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) ); 922*766ce4d0SZheng Fan aMargin.SetTxtFirstLineOfst( ((const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ))*(-1) ); 923*766ce4d0SZheng Fan 924*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute( 925*766ce4d0SZheng Fan SID_ATTR_LRSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L); 926*766ce4d0SZheng Fan } 927*766ce4d0SZheng Fan break; 928*766ce4d0SZheng Fan } 929*766ce4d0SZheng Fan return( 0L ); 930*766ce4d0SZheng Fan } 931*766ce4d0SZheng Fan 932*766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, ClickProDemote_Hdl_Impl, ToolBox *, pControl) 933*766ce4d0SZheng Fan { 934*766ce4d0SZheng Fan switch (pControl->GetCurItemId()) 935*766ce4d0SZheng Fan { 936*766ce4d0SZheng Fan case BT_TBX_INDENT_PROMOTE: 937*766ce4d0SZheng Fan { 938*766ce4d0SZheng Fan SvxLRSpaceItem aMargin( SID_ATTR_PARA_RIGHT ); 939*766ce4d0SZheng Fan 940*766ce4d0SZheng Fan maTxtLeft += INDENT_STEP; 941*766ce4d0SZheng Fan sal_Int64 nVal = OutputDevice::LogicToLogic( maTxtLeft, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM ); 942*766ce4d0SZheng Fan nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit ); 943*766ce4d0SZheng Fan aMargin.SetTxtLeft( (const long)nVal ); 944*766ce4d0SZheng Fan aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) ); 945*766ce4d0SZheng Fan aMargin.SetTxtFirstLineOfst( (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) ); 946*766ce4d0SZheng Fan 947*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute( 948*766ce4d0SZheng Fan SID_ATTR_PARA_RIGHT, SFX_CALLMODE_RECORD, &aMargin, 0L); 949*766ce4d0SZheng Fan } 950*766ce4d0SZheng Fan break; 951*766ce4d0SZheng Fan case BT_TBX_INDENT_DEMOTE: 952*766ce4d0SZheng Fan { 953*766ce4d0SZheng Fan if((maTxtLeft - INDENT_STEP) < 0) 954*766ce4d0SZheng Fan maTxtLeft = DEFAULT_VALUE; 955*766ce4d0SZheng Fan else 956*766ce4d0SZheng Fan maTxtLeft -= INDENT_STEP; 957*766ce4d0SZheng Fan 958*766ce4d0SZheng Fan SvxLRSpaceItem aMargin( SID_ATTR_PARA_LEFT ); 959*766ce4d0SZheng Fan 960*766ce4d0SZheng Fan sal_Int64 nVal = OutputDevice::LogicToLogic( maTxtLeft, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM ); 961*766ce4d0SZheng Fan nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit ); 962*766ce4d0SZheng Fan 963*766ce4d0SZheng Fan aMargin.SetTxtLeft( (const long)nVal ); 964*766ce4d0SZheng Fan aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) ); 965*766ce4d0SZheng Fan aMargin.SetTxtFirstLineOfst( (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) ); 966*766ce4d0SZheng Fan 967*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute( 968*766ce4d0SZheng Fan SID_ATTR_PARA_LEFT, SFX_CALLMODE_RECORD, &aMargin, 0L); 969*766ce4d0SZheng Fan } 970*766ce4d0SZheng Fan break; 971*766ce4d0SZheng Fan case SD_HANGING_INDENT: 972*766ce4d0SZheng Fan { 973*766ce4d0SZheng Fan SvxLRSpaceItem aMargin( SID_ATTR_LRSPACE ); 974*766ce4d0SZheng Fan aMargin.SetTxtLeft( (const long)GetCoreValue( *maLeftIndent.get(), m_eLRSpaceUnit ) + (const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ) ); 975*766ce4d0SZheng Fan aMargin.SetRight( (const long)GetCoreValue( *maRightIndent.get(), m_eLRSpaceUnit ) ); 976*766ce4d0SZheng Fan aMargin.SetTxtFirstLineOfst( ((const short)GetCoreValue( *maFLineIndent.get(), m_eLRSpaceUnit ))*(-1) ); 977*766ce4d0SZheng Fan 978*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute( 979*766ce4d0SZheng Fan SID_ATTR_LRSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L); 980*766ce4d0SZheng Fan } 981*766ce4d0SZheng Fan break; 982*766ce4d0SZheng Fan } 983*766ce4d0SZheng Fan return( 0L ); 984*766ce4d0SZheng Fan } 985*766ce4d0SZheng Fan //==================================for Paragraph Line Spacing===================== 986*766ce4d0SZheng Fan 987*766ce4d0SZheng Fan IMPL_LINK( ParaPropertyPanel, ClickLineSPDropDownHdl_Impl, ToolBox*, pBox ) 988*766ce4d0SZheng Fan { 989*766ce4d0SZheng Fan 990*766ce4d0SZheng Fan const sal_uInt16 nId = pBox->GetCurItemId(); 991*766ce4d0SZheng Fan OSL_ASSERT(nId == TOOLBOX_ITEM1); 992*766ce4d0SZheng Fan if(nId == TOOLBOX_ITEM1) 993*766ce4d0SZheng Fan { 994*766ce4d0SZheng Fan pBox->SetItemDown( nId, true ); 995*766ce4d0SZheng Fan maLineSpacePopup.Rearrange(meLnSpState,m_eMetricUnit,mpLnSPItem,maContext); 996*766ce4d0SZheng Fan maLineSpacePopup.Show(*pBox); 997*766ce4d0SZheng Fan 998*766ce4d0SZheng Fan } 999*766ce4d0SZheng Fan return (0L); 1000*766ce4d0SZheng Fan } 1001*766ce4d0SZheng Fan 1002*766ce4d0SZheng Fan //==================================for Paragraph Spacing===================== 1003*766ce4d0SZheng Fan IMPL_LINK( ParaPropertyPanel, ULSpaceHdl_Impl, SvxRelativeField*, pBox ) 1004*766ce4d0SZheng Fan { 1005*766ce4d0SZheng Fan SvxULSpaceItem aMargin( SID_ATTR_ULSPACE ); 1006*766ce4d0SZheng Fan aMargin.SetUpper( (sal_uInt16)GetCoreValue( *maTopDist.get(), m_eULSpaceUnit ) ); 1007*766ce4d0SZheng Fan aMargin.SetLower( (sal_uInt16)GetCoreValue( *maBottomDist.get(), m_eULSpaceUnit ) ); 1008*766ce4d0SZheng Fan 1009*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute( 1010*766ce4d0SZheng Fan SID_ATTR_ULSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L); 1011*766ce4d0SZheng Fan return 0L; 1012*766ce4d0SZheng Fan } 1013*766ce4d0SZheng Fan 1014*766ce4d0SZheng Fan IMPL_LINK(ParaPropertyPanel, ClickUL_IncDec_Hdl_Impl, ToolBox *, pControl) 1015*766ce4d0SZheng Fan { 1016*766ce4d0SZheng Fan switch (pControl->GetCurItemId()) 1017*766ce4d0SZheng Fan { 1018*766ce4d0SZheng Fan case UL_INCREMENT: 1019*766ce4d0SZheng Fan { 1020*766ce4d0SZheng Fan SvxULSpaceItem aMargin( SID_ATTR_ULSPACE ); 1021*766ce4d0SZheng Fan 1022*766ce4d0SZheng Fan maUpper += UL_STEP; 1023*766ce4d0SZheng Fan sal_Int64 nVal = OutputDevice::LogicToLogic( maUpper, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM ); 1024*766ce4d0SZheng Fan nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit ); 1025*766ce4d0SZheng Fan aMargin.SetUpper( (const sal_uInt16)nVal ); 1026*766ce4d0SZheng Fan 1027*766ce4d0SZheng Fan maLower += UL_STEP; 1028*766ce4d0SZheng Fan nVal = OutputDevice::LogicToLogic( maLower, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM ); 1029*766ce4d0SZheng Fan nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit ); 1030*766ce4d0SZheng Fan aMargin.SetLower( (const sal_uInt16)nVal ); 1031*766ce4d0SZheng Fan 1032*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute( 1033*766ce4d0SZheng Fan SID_ATTR_ULSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L); 1034*766ce4d0SZheng Fan } 1035*766ce4d0SZheng Fan break; 1036*766ce4d0SZheng Fan case UL_DECREMENT: 1037*766ce4d0SZheng Fan { 1038*766ce4d0SZheng Fan SvxULSpaceItem aMargin( SID_ATTR_ULSPACE ); 1039*766ce4d0SZheng Fan 1040*766ce4d0SZheng Fan if( maUpper >= UL_STEP ) 1041*766ce4d0SZheng Fan { 1042*766ce4d0SZheng Fan maUpper -= UL_STEP; 1043*766ce4d0SZheng Fan sal_Int64 nVal = OutputDevice::LogicToLogic( maUpper, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM ); 1044*766ce4d0SZheng Fan nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit ); 1045*766ce4d0SZheng Fan aMargin.SetUpper( (const sal_uInt16)nVal ); 1046*766ce4d0SZheng Fan } 1047*766ce4d0SZheng Fan else 1048*766ce4d0SZheng Fan aMargin.SetUpper( DEFAULT_VALUE ); 1049*766ce4d0SZheng Fan if( maLower >= UL_STEP ) 1050*766ce4d0SZheng Fan { 1051*766ce4d0SZheng Fan maLower -= UL_STEP; 1052*766ce4d0SZheng Fan sal_Int64 nVal = OutputDevice::LogicToLogic( maLower, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM ); 1053*766ce4d0SZheng Fan nVal = OutputDevice::LogicToLogic( (long)nVal, MAP_100TH_MM, (MapUnit)m_eLRSpaceUnit ); 1054*766ce4d0SZheng Fan aMargin.SetLower( (const sal_uInt16)nVal ); 1055*766ce4d0SZheng Fan } 1056*766ce4d0SZheng Fan else 1057*766ce4d0SZheng Fan aMargin.SetLower( DEFAULT_VALUE ); 1058*766ce4d0SZheng Fan 1059*766ce4d0SZheng Fan GetBindings()->GetDispatcher()->Execute( 1060*766ce4d0SZheng Fan SID_ATTR_ULSPACE, SFX_CALLMODE_RECORD, &aMargin, 0L); 1061*766ce4d0SZheng Fan } 1062*766ce4d0SZheng Fan break; 1063*766ce4d0SZheng Fan } 1064*766ce4d0SZheng Fan return( 0L ); 1065*766ce4d0SZheng Fan } 1066*766ce4d0SZheng Fan 1067*766ce4d0SZheng Fan //==================================for Paragraph State change===================== 1068*766ce4d0SZheng Fan void ParaPropertyPanel::NotifyItemUpdate( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ) 1069*766ce4d0SZheng Fan { 1070*766ce4d0SZheng Fan if( nSID == SID_ATTR_METRIC ) 1071*766ce4d0SZheng Fan { 1072*766ce4d0SZheng Fan m_eMetricUnit = GetCurrentUnit(eState,pState); 1073*766ce4d0SZheng Fan if( m_eMetricUnit!=m_last_eMetricUnit ) 1074*766ce4d0SZheng Fan { 1075*766ce4d0SZheng Fan SetFieldUnit( *maLeftIndent.get(), m_eMetricUnit ); 1076*766ce4d0SZheng Fan SetFieldUnit( *maRightIndent.get(), m_eMetricUnit ); 1077*766ce4d0SZheng Fan SetFieldUnit( *maFLineIndent.get(), m_eMetricUnit ); 1078*766ce4d0SZheng Fan SetFieldUnit( *maTopDist.get(), m_eMetricUnit ); 1079*766ce4d0SZheng Fan SetFieldUnit( *maBottomDist.get(), m_eMetricUnit ); 1080*766ce4d0SZheng Fan } 1081*766ce4d0SZheng Fan m_last_eMetricUnit = m_eMetricUnit; 1082*766ce4d0SZheng Fan } 1083*766ce4d0SZheng Fan 1084*766ce4d0SZheng Fan if( nSID == SID_ATTR_PARA_LRSPACE ) 1085*766ce4d0SZheng Fan StateChangedIndentImpl( nSID, eState, pState ); 1086*766ce4d0SZheng Fan 1087*766ce4d0SZheng Fan if( nSID == SID_ATTR_PARA_LINESPACE ) 1088*766ce4d0SZheng Fan StateChangedLnSPImpl( nSID, eState, pState ); 1089*766ce4d0SZheng Fan 1090*766ce4d0SZheng Fan if( nSID == SID_ATTR_PARA_ULSPACE) 1091*766ce4d0SZheng Fan StateChangedULImpl( nSID, eState, pState ); 1092*766ce4d0SZheng Fan 1093*766ce4d0SZheng Fan if (nSID==SID_ATTR_PARA_ADJUST_LEFT || nSID==SID_ATTR_PARA_ADJUST_CENTER || nSID==SID_ATTR_PARA_ADJUST_RIGHT || nSID==SID_ATTR_PARA_ADJUST_BLOCK) 1094*766ce4d0SZheng Fan StateChangedAlignmentImpl( nSID, eState, pState ); 1095*766ce4d0SZheng Fan 1096*766ce4d0SZheng Fan if (nSID==SID_OUTLINE_LEFT || nSID==SID_OUTLINE_RIGHT) 1097*766ce4d0SZheng Fan StateChangeOutLineImpl( nSID, eState, pState ); 1098*766ce4d0SZheng Fan 1099*766ce4d0SZheng Fan if (nSID==SID_INC_INDENT || nSID==SID_DEC_INDENT) 1100*766ce4d0SZheng Fan StateChangeIncDecImpl( nSID, eState, pState ); 1101*766ce4d0SZheng Fan //Sym3_1093. Add toggle state for numbering and bullet icons 1102*766ce4d0SZheng Fan if (nSID==FN_NUM_NUMBERING_ON || nSID==FN_NUM_BULLET_ON) 1103*766ce4d0SZheng Fan StateChangeBulletNumImpl( nSID, eState, pState ); 1104*766ce4d0SZheng Fan 1105*766ce4d0SZheng Fan //Modified for Numbering&Bullets Dialog UX Enh(Story 992) by chengjh,2011.7.5 1106*766ce4d0SZheng Fan //Get the num rule index data of the current selection 1107*766ce4d0SZheng Fan if ( nSID == FN_BUL_NUM_RULE_INDEX ||nSID == FN_NUM_NUM_RULE_INDEX) 1108*766ce4d0SZheng Fan StateChangeBulletNumRuleImpl( nSID, eState, pState ); 1109*766ce4d0SZheng Fan //End 1110*766ce4d0SZheng Fan 1111*766ce4d0SZheng Fan if ((nSID == SID_TABLE_VERT_NONE)||(nSID == SID_TABLE_VERT_CENTER)||(nSID == SID_TABLE_VERT_BOTTOM)) 1112*766ce4d0SZheng Fan { 1113*766ce4d0SZheng Fan VertStateChanged( nSID, eState, pState); 1114*766ce4d0SZheng Fan } 1115*766ce4d0SZheng Fan else if (nSID == SID_BACKGROUND_COLOR) 1116*766ce4d0SZheng Fan { 1117*766ce4d0SZheng Fan ParaBKGStateChanged(nSID, eState, pState); 1118*766ce4d0SZheng Fan } 1119*766ce4d0SZheng Fan } 1120*766ce4d0SZheng Fan 1121*766ce4d0SZheng Fan void ParaPropertyPanel::StateChangedAlignmentImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ) 1122*766ce4d0SZheng Fan { 1123*766ce4d0SZheng Fan if( eState >= SFX_ITEM_AVAILABLE ) 1124*766ce4d0SZheng Fan { 1125*766ce4d0SZheng Fan const SfxBoolItem* pItem = (const SfxBoolItem*)pState; 1126*766ce4d0SZheng Fan bool IsChecked = (bool)pItem->GetValue(); 1127*766ce4d0SZheng Fan switch (nSID) 1128*766ce4d0SZheng Fan { 1129*766ce4d0SZheng Fan case SID_ATTR_PARA_ADJUST_LEFT: 1130*766ce4d0SZheng Fan { 1131*766ce4d0SZheng Fan if(IsChecked) 1132*766ce4d0SZheng Fan { 1133*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_CHECK); 1134*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK); 1135*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK); 1136*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK); 1137*766ce4d0SZheng Fan } 1138*766ce4d0SZheng Fan else 1139*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK); 1140*766ce4d0SZheng Fan } 1141*766ce4d0SZheng Fan break; 1142*766ce4d0SZheng Fan case SID_ATTR_PARA_ADJUST_CENTER: 1143*766ce4d0SZheng Fan { 1144*766ce4d0SZheng Fan if(IsChecked) 1145*766ce4d0SZheng Fan { 1146*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_CHECK); 1147*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK); 1148*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK); 1149*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK); 1150*766ce4d0SZheng Fan } 1151*766ce4d0SZheng Fan else 1152*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK); 1153*766ce4d0SZheng Fan } 1154*766ce4d0SZheng Fan break; 1155*766ce4d0SZheng Fan case SID_ATTR_PARA_ADJUST_RIGHT: 1156*766ce4d0SZheng Fan { 1157*766ce4d0SZheng Fan if(IsChecked) 1158*766ce4d0SZheng Fan { 1159*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_CHECK); 1160*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK); 1161*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK); 1162*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK); 1163*766ce4d0SZheng Fan } 1164*766ce4d0SZheng Fan else 1165*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK); 1166*766ce4d0SZheng Fan } 1167*766ce4d0SZheng Fan break; 1168*766ce4d0SZheng Fan case SID_ATTR_PARA_ADJUST_BLOCK: 1169*766ce4d0SZheng Fan { 1170*766ce4d0SZheng Fan if(IsChecked) 1171*766ce4d0SZheng Fan { 1172*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_CHECK); 1173*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK); 1174*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK); 1175*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK); 1176*766ce4d0SZheng Fan } 1177*766ce4d0SZheng Fan else 1178*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK); 1179*766ce4d0SZheng Fan } 1180*766ce4d0SZheng Fan break; 1181*766ce4d0SZheng Fan } 1182*766ce4d0SZheng Fan } 1183*766ce4d0SZheng Fan else if( eState == SFX_ITEM_DISABLED ) 1184*766ce4d0SZheng Fan { 1185*766ce4d0SZheng Fan } 1186*766ce4d0SZheng Fan else if ( eState == SFX_ITEM_DONTCARE ) 1187*766ce4d0SZheng Fan { 1188*766ce4d0SZheng Fan switch (nSID) 1189*766ce4d0SZheng Fan { 1190*766ce4d0SZheng Fan case SID_ATTR_PARA_ADJUST_LEFT: 1191*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTLEFT,STATE_NOCHECK); 1192*766ce4d0SZheng Fan break; 1193*766ce4d0SZheng Fan case SID_ATTR_PARA_ADJUST_CENTER: 1194*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTCENTER,STATE_NOCHECK); 1195*766ce4d0SZheng Fan break; 1196*766ce4d0SZheng Fan case SID_ATTR_PARA_ADJUST_RIGHT: 1197*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTRIGHT,STATE_NOCHECK); 1198*766ce4d0SZheng Fan break; 1199*766ce4d0SZheng Fan case SID_ATTR_PARA_ADJUST_BLOCK: 1200*766ce4d0SZheng Fan maAlignToolBox->SetItemState(BT_SUBSTJUSTIFY,STATE_NOCHECK); 1201*766ce4d0SZheng Fan break; 1202*766ce4d0SZheng Fan } 1203*766ce4d0SZheng Fan } 1204*766ce4d0SZheng Fan } 1205*766ce4d0SZheng Fan 1206*766ce4d0SZheng Fan void ParaPropertyPanel::StateChangedIndentImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ) 1207*766ce4d0SZheng Fan { 1208*766ce4d0SZheng Fan switch (maContext.GetCombinedContext()) 1209*766ce4d0SZheng Fan { 1210*766ce4d0SZheng Fan 1211*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_DrawText): 1212*766ce4d0SZheng Fan case CombinedEnumContext(Application_Calc, Context_DrawText): 1213*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Annotation): 1214*766ce4d0SZheng Fan { 1215*766ce4d0SZheng Fan maLeftIndent->SetMin( DEFAULT_VALUE ); 1216*766ce4d0SZheng Fan maRightIndent->SetMin( DEFAULT_VALUE ); 1217*766ce4d0SZheng Fan maFLineIndent->SetMin( DEFAULT_VALUE ); 1218*766ce4d0SZheng Fan maTbxIndent_IncDec->Show(); 1219*766ce4d0SZheng Fan maTbxProDemote->Hide(); 1220*766ce4d0SZheng Fan } 1221*766ce4d0SZheng Fan break; 1222*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_DrawText): 1223*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_DrawText): 1224*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_Draw): 1225*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_TextObject): 1226*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_Graphic): 1227*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_Draw): 1228*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_TextObject): 1229*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_Graphic): 1230*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_Table): 1231*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_Table): 1232*766ce4d0SZheng Fan { 1233*766ce4d0SZheng Fan maLeftIndent->SetMin( DEFAULT_VALUE ); 1234*766ce4d0SZheng Fan maRightIndent->SetMin( DEFAULT_VALUE ); 1235*766ce4d0SZheng Fan maFLineIndent->SetMin( DEFAULT_VALUE ); 1236*766ce4d0SZheng Fan maTbxIndent_IncDec->Hide(); 1237*766ce4d0SZheng Fan maTbxProDemote->Show(); 1238*766ce4d0SZheng Fan } 1239*766ce4d0SZheng Fan break; 1240*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Default): 1241*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Text): 1242*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Table): 1243*766ce4d0SZheng Fan { 1244*766ce4d0SZheng Fan maLeftIndent->SetMin( NEGA_MAXVALUE, FUNIT_100TH_MM ); 1245*766ce4d0SZheng Fan maRightIndent->SetMin( NEGA_MAXVALUE, FUNIT_100TH_MM ); 1246*766ce4d0SZheng Fan maFLineIndent->SetMin( NEGA_MAXVALUE, FUNIT_100TH_MM ); 1247*766ce4d0SZheng Fan maTbxIndent_IncDec->Show(); 1248*766ce4d0SZheng Fan maTbxProDemote->Hide(); 1249*766ce4d0SZheng Fan } 1250*766ce4d0SZheng Fan break; 1251*766ce4d0SZheng Fan } 1252*766ce4d0SZheng Fan 1253*766ce4d0SZheng Fan if( pState && eState >= SFX_ITEM_AVAILABLE ) 1254*766ce4d0SZheng Fan { 1255*766ce4d0SZheng Fan SvxLRSpaceItem* pSpace = ( SvxLRSpaceItem*)pState; 1256*766ce4d0SZheng Fan maTxtLeft = pSpace->GetTxtLeft(); 1257*766ce4d0SZheng Fan maTxtLeft = OutputDevice::LogicToLogic( maTxtLeft, (MapUnit)m_eLRSpaceUnit, MAP_100TH_MM ); 1258*766ce4d0SZheng Fan maTxtLeft = OutputDevice::LogicToLogic( maTxtLeft, MAP_100TH_MM, (MapUnit)(SFX_MAPUNIT_TWIP) ); 1259*766ce4d0SZheng Fan 1260*766ce4d0SZheng Fan long aTxtRight = pSpace->GetRight(); 1261*766ce4d0SZheng Fan aTxtRight = OutputDevice::LogicToLogic( aTxtRight, (MapUnit)m_eLRSpaceUnit, MAP_100TH_MM ); 1262*766ce4d0SZheng Fan aTxtRight = OutputDevice::LogicToLogic( aTxtRight, MAP_100TH_MM, (MapUnit)(SFX_MAPUNIT_TWIP) ); 1263*766ce4d0SZheng Fan 1264*766ce4d0SZheng Fan long aTxtFirstLineOfst = pSpace->GetTxtFirstLineOfst(); 1265*766ce4d0SZheng Fan aTxtFirstLineOfst = OutputDevice::LogicToLogic( aTxtFirstLineOfst, (MapUnit)m_eLRSpaceUnit, MAP_100TH_MM ); 1266*766ce4d0SZheng Fan aTxtFirstLineOfst = OutputDevice::LogicToLogic( aTxtFirstLineOfst, MAP_100TH_MM, (MapUnit)(SFX_MAPUNIT_TWIP) ); 1267*766ce4d0SZheng Fan 1268*766ce4d0SZheng Fan long nVal = OutputDevice::LogicToLogic( maTxtLeft, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM ); 1269*766ce4d0SZheng Fan nVal = (long)maLeftIndent->Normalize( (long)nVal ); 1270*766ce4d0SZheng Fan maLeftIndent->SetValue( nVal, FUNIT_100TH_MM ); 1271*766ce4d0SZheng Fan 1272*766ce4d0SZheng Fan if(maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Text) && 1273*766ce4d0SZheng Fan maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Default) && 1274*766ce4d0SZheng Fan maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Table)) 1275*766ce4d0SZheng Fan { 1276*766ce4d0SZheng Fan maFLineIndent->SetMin( nVal*(-1), FUNIT_100TH_MM ); 1277*766ce4d0SZheng Fan } 1278*766ce4d0SZheng Fan 1279*766ce4d0SZheng Fan long nrVal = OutputDevice::LogicToLogic( aTxtRight, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM ); 1280*766ce4d0SZheng Fan nrVal = (long)maRightIndent->Normalize( (long)nrVal ); 1281*766ce4d0SZheng Fan maRightIndent->SetValue( nrVal, FUNIT_100TH_MM ); 1282*766ce4d0SZheng Fan 1283*766ce4d0SZheng Fan long nfVal = OutputDevice::LogicToLogic( aTxtFirstLineOfst, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM ); 1284*766ce4d0SZheng Fan nfVal = (long)maFLineIndent->Normalize( (long)nfVal ); 1285*766ce4d0SZheng Fan maFLineIndent->SetValue( nfVal, FUNIT_100TH_MM ); 1286*766ce4d0SZheng Fan 1287*766ce4d0SZheng Fan switch (maContext.GetCombinedContext()) 1288*766ce4d0SZheng Fan { 1289*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_DrawText): 1290*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Text): 1291*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Default): 1292*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Table): 1293*766ce4d0SZheng Fan case CombinedEnumContext(Application_Writer, Context_Annotation): 1294*766ce4d0SZheng Fan { 1295*766ce4d0SZheng Fan maLeftIndent->SetMax( MAX_SW - nrVal, FUNIT_100TH_MM ); 1296*766ce4d0SZheng Fan maRightIndent->SetMax( MAX_SW - nVal, FUNIT_100TH_MM ); 1297*766ce4d0SZheng Fan maFLineIndent->SetMax( MAX_SW - nVal - nrVal, FUNIT_100TH_MM ); 1298*766ce4d0SZheng Fan } 1299*766ce4d0SZheng Fan break; 1300*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_DrawText): 1301*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_Draw): 1302*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_Table): 1303*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_TextObject): 1304*766ce4d0SZheng Fan case CombinedEnumContext(Application_Draw, Context_Graphic): 1305*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_TextObject): 1306*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_DrawText): 1307*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_Table): 1308*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_Draw): 1309*766ce4d0SZheng Fan case CombinedEnumContext(Application_Impress, Context_Graphic): 1310*766ce4d0SZheng Fan { 1311*766ce4d0SZheng Fan maLeftIndent->SetMax( MAX_SC_SD - nrVal, FUNIT_100TH_MM ); 1312*766ce4d0SZheng Fan maRightIndent->SetMax( MAX_SC_SD - nVal, FUNIT_100TH_MM ); 1313*766ce4d0SZheng Fan maFLineIndent->SetMax( MAX_SC_SD - nVal - nrVal, FUNIT_100TH_MM ); 1314*766ce4d0SZheng Fan } 1315*766ce4d0SZheng Fan } 1316*766ce4d0SZheng Fan 1317*766ce4d0SZheng Fan maTbxIndent_IncDec->Enable(); 1318*766ce4d0SZheng Fan maTbxIndent_IncDec->EnableItem(ID_HANGING_INDENT, sal_True); 1319*766ce4d0SZheng Fan if(maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Text) 1320*766ce4d0SZheng Fan && maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Default) 1321*766ce4d0SZheng Fan && maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Table)) 1322*766ce4d0SZheng Fan { 1323*766ce4d0SZheng Fan maTbxIndent_IncDec->EnableItem(BT_TBX_INDENT_INC, sal_True); 1324*766ce4d0SZheng Fan maTbxIndent_IncDec->EnableItem(BT_TBX_INDENT_DEC, sal_True); 1325*766ce4d0SZheng Fan } 1326*766ce4d0SZheng Fan 1327*766ce4d0SZheng Fan maTbxProDemote->Enable(); 1328*766ce4d0SZheng Fan if( !mbOutLineRight && !mbOutLineLeft ) 1329*766ce4d0SZheng Fan maTbxProDemote->EnableItem(SD_HANGING_INDENT, sal_True); 1330*766ce4d0SZheng Fan maTbxProDemote->EnableItem(SD_HANGING_INDENT, sal_True); 1331*766ce4d0SZheng Fan } 1332*766ce4d0SZheng Fan else if( eState == SFX_ITEM_DISABLED ) 1333*766ce4d0SZheng Fan { 1334*766ce4d0SZheng Fan maLeftIndent-> Disable(); 1335*766ce4d0SZheng Fan maRightIndent->Disable(); 1336*766ce4d0SZheng Fan maFLineIndent->Disable(); 1337*766ce4d0SZheng Fan maTbxIndent_IncDec->Disable(); 1338*766ce4d0SZheng Fan if( maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Text) && 1339*766ce4d0SZheng Fan maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Default) && 1340*766ce4d0SZheng Fan maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Table) ) 1341*766ce4d0SZheng Fan maTbxIndent_IncDec->Disable(); 1342*766ce4d0SZheng Fan else 1343*766ce4d0SZheng Fan maTbxIndent_IncDec->EnableItem(ID_HANGING_INDENT, sal_False); 1344*766ce4d0SZheng Fan 1345*766ce4d0SZheng Fan maTbxProDemote->Disable(); 1346*766ce4d0SZheng Fan maTbxProDemote->EnableItem(SD_HANGING_INDENT, sal_False); 1347*766ce4d0SZheng Fan } 1348*766ce4d0SZheng Fan else 1349*766ce4d0SZheng Fan { 1350*766ce4d0SZheng Fan maLeftIndent->SetEmptyFieldValue(); 1351*766ce4d0SZheng Fan maRightIndent->SetEmptyFieldValue(); 1352*766ce4d0SZheng Fan maFLineIndent->SetEmptyFieldValue(); 1353*766ce4d0SZheng Fan if( maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Text) && 1354*766ce4d0SZheng Fan maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Default) && 1355*766ce4d0SZheng Fan maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Table) ) 1356*766ce4d0SZheng Fan maTbxIndent_IncDec->Disable(); 1357*766ce4d0SZheng Fan else 1358*766ce4d0SZheng Fan maTbxIndent_IncDec->EnableItem(ID_HANGING_INDENT, sal_False); 1359*766ce4d0SZheng Fan maTbxProDemote->Disable(); 1360*766ce4d0SZheng Fan maTbxProDemote->EnableItem(SD_HANGING_INDENT, sal_False); 1361*766ce4d0SZheng Fan } 1362*766ce4d0SZheng Fan } 1363*766ce4d0SZheng Fan 1364*766ce4d0SZheng Fan void ParaPropertyPanel::StateChangedLnSPImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ) 1365*766ce4d0SZheng Fan { 1366*766ce4d0SZheng Fan meLnSpState = eState; 1367*766ce4d0SZheng Fan 1368*766ce4d0SZheng Fan if( pState && eState >= SFX_ITEM_AVAILABLE ) 1369*766ce4d0SZheng Fan { 1370*766ce4d0SZheng Fan if(mpLnSPItem) 1371*766ce4d0SZheng Fan delete mpLnSPItem; 1372*766ce4d0SZheng Fan mpLnSPItem = ( SvxLineSpacingItem *)pState->Clone(); 1373*766ce4d0SZheng Fan } 1374*766ce4d0SZheng Fan } 1375*766ce4d0SZheng Fan 1376*766ce4d0SZheng Fan void ParaPropertyPanel::StateChangedULImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ) 1377*766ce4d0SZheng Fan { 1378*766ce4d0SZheng Fan maTopDist->SetMax( maTopDist->Normalize( MAX_DURCH ), MapToFieldUnit(m_eULSpaceUnit) ); 1379*766ce4d0SZheng Fan maBottomDist->SetMax( maBottomDist->Normalize( MAX_DURCH ), MapToFieldUnit(m_eULSpaceUnit) ); 1380*766ce4d0SZheng Fan 1381*766ce4d0SZheng Fan if( pState && eState >= SFX_ITEM_AVAILABLE ) 1382*766ce4d0SZheng Fan { 1383*766ce4d0SZheng Fan SvxULSpaceItem* pOldItem = (SvxULSpaceItem*)pState; 1384*766ce4d0SZheng Fan 1385*766ce4d0SZheng Fan maUpper = pOldItem->GetUpper(); 1386*766ce4d0SZheng Fan maUpper = OutputDevice::LogicToLogic( maUpper, (MapUnit)m_eULSpaceUnit, MAP_100TH_MM ); 1387*766ce4d0SZheng Fan maUpper = OutputDevice::LogicToLogic( maUpper, MAP_100TH_MM, (MapUnit)(SFX_MAPUNIT_TWIP) ); 1388*766ce4d0SZheng Fan 1389*766ce4d0SZheng Fan maLower = pOldItem->GetLower(); 1390*766ce4d0SZheng Fan maLower = OutputDevice::LogicToLogic( maLower, (MapUnit)m_eULSpaceUnit, MAP_100TH_MM ); 1391*766ce4d0SZheng Fan maLower = OutputDevice::LogicToLogic( maLower, MAP_100TH_MM, (MapUnit)(SFX_MAPUNIT_TWIP) ); 1392*766ce4d0SZheng Fan 1393*766ce4d0SZheng Fan sal_Int64 nVal = OutputDevice::LogicToLogic( maUpper, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM ); 1394*766ce4d0SZheng Fan nVal = maTopDist->Normalize( nVal ); 1395*766ce4d0SZheng Fan maTopDist->SetValue( nVal, FUNIT_100TH_MM ); 1396*766ce4d0SZheng Fan 1397*766ce4d0SZheng Fan nVal = OutputDevice::LogicToLogic( maLower, (MapUnit)(SFX_MAPUNIT_TWIP), MAP_100TH_MM ); 1398*766ce4d0SZheng Fan nVal = maBottomDist->Normalize( nVal ); 1399*766ce4d0SZheng Fan maBottomDist->SetValue( nVal, FUNIT_100TH_MM ); 1400*766ce4d0SZheng Fan maTbxUL_IncDec->Enable(); 1401*766ce4d0SZheng Fan } 1402*766ce4d0SZheng Fan else if(nSID == SID_ATTR_ULSPACE && eState == SFX_ITEM_DISABLED ) 1403*766ce4d0SZheng Fan { 1404*766ce4d0SZheng Fan maTopDist->Disable(); 1405*766ce4d0SZheng Fan maBottomDist->Disable(); 1406*766ce4d0SZheng Fan maTbxUL_IncDec->Disable(); 1407*766ce4d0SZheng Fan } 1408*766ce4d0SZheng Fan else if (nSID == SID_ATTR_ULSPACE) 1409*766ce4d0SZheng Fan { 1410*766ce4d0SZheng Fan maTopDist->SetEmptyFieldValue(); 1411*766ce4d0SZheng Fan maBottomDist->SetEmptyFieldValue(); 1412*766ce4d0SZheng Fan maTbxUL_IncDec->Disable(); 1413*766ce4d0SZheng Fan } 1414*766ce4d0SZheng Fan } 1415*766ce4d0SZheng Fan 1416*766ce4d0SZheng Fan void ParaPropertyPanel::StateChangeOutLineImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ) 1417*766ce4d0SZheng Fan { 1418*766ce4d0SZheng Fan if (nSID==SID_OUTLINE_LEFT) 1419*766ce4d0SZheng Fan { 1420*766ce4d0SZheng Fan if( pState && eState == SFX_ITEM_UNKNOWN ) 1421*766ce4d0SZheng Fan mbOutLineLeft = 1; 1422*766ce4d0SZheng Fan else 1423*766ce4d0SZheng Fan mbOutLineLeft = 0; 1424*766ce4d0SZheng Fan } 1425*766ce4d0SZheng Fan if (nSID==SID_OUTLINE_RIGHT) 1426*766ce4d0SZheng Fan { 1427*766ce4d0SZheng Fan if( pState && eState == SFX_ITEM_UNKNOWN ) 1428*766ce4d0SZheng Fan mbOutLineRight = 1; 1429*766ce4d0SZheng Fan else 1430*766ce4d0SZheng Fan mbOutLineRight = 0; 1431*766ce4d0SZheng Fan } 1432*766ce4d0SZheng Fan if(mbOutLineLeft) 1433*766ce4d0SZheng Fan maTbxProDemote->EnableItem(BT_TBX_INDENT_DEMOTE, sal_True); 1434*766ce4d0SZheng Fan else 1435*766ce4d0SZheng Fan maTbxProDemote->EnableItem(BT_TBX_INDENT_DEMOTE, sal_False); 1436*766ce4d0SZheng Fan 1437*766ce4d0SZheng Fan if(mbOutLineRight) 1438*766ce4d0SZheng Fan maTbxProDemote->EnableItem(BT_TBX_INDENT_PROMOTE, sal_True); 1439*766ce4d0SZheng Fan else 1440*766ce4d0SZheng Fan maTbxProDemote->EnableItem(BT_TBX_INDENT_PROMOTE, sal_False); 1441*766ce4d0SZheng Fan 1442*766ce4d0SZheng Fan if( !mbOutLineRight && !mbOutLineLeft ) 1443*766ce4d0SZheng Fan { 1444*766ce4d0SZheng Fan maTbxProDemote->EnableItem(BT_TBX_INDENT_PROMOTE, sal_True); 1445*766ce4d0SZheng Fan maTbxProDemote->EnableItem(BT_TBX_INDENT_DEMOTE, sal_True); 1446*766ce4d0SZheng Fan maTbxProDemote->EnableItem(SD_HANGING_INDENT, sal_True); 1447*766ce4d0SZheng Fan } 1448*766ce4d0SZheng Fan else 1449*766ce4d0SZheng Fan maTbxProDemote->EnableItem(SD_HANGING_INDENT, sal_False); 1450*766ce4d0SZheng Fan } 1451*766ce4d0SZheng Fan 1452*766ce4d0SZheng Fan void ParaPropertyPanel::StateChangeIncDecImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ) 1453*766ce4d0SZheng Fan { 1454*766ce4d0SZheng Fan if (nSID==SID_INC_INDENT) 1455*766ce4d0SZheng Fan { 1456*766ce4d0SZheng Fan if( pState && eState == SFX_ITEM_UNKNOWN ) 1457*766ce4d0SZheng Fan maTbxIndent_IncDec->EnableItem(BT_TBX_INDENT_INC, sal_True); 1458*766ce4d0SZheng Fan else 1459*766ce4d0SZheng Fan if( maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Text) && 1460*766ce4d0SZheng Fan maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Default) && 1461*766ce4d0SZheng Fan maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Table) ) 1462*766ce4d0SZheng Fan maTbxIndent_IncDec->EnableItem(BT_TBX_INDENT_INC, sal_False); 1463*766ce4d0SZheng Fan } 1464*766ce4d0SZheng Fan if (nSID==SID_DEC_INDENT) 1465*766ce4d0SZheng Fan { 1466*766ce4d0SZheng Fan if( pState && eState == SFX_ITEM_UNKNOWN ) 1467*766ce4d0SZheng Fan maTbxIndent_IncDec->EnableItem(BT_TBX_INDENT_DEC, sal_True); 1468*766ce4d0SZheng Fan else 1469*766ce4d0SZheng Fan if( maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Text) && 1470*766ce4d0SZheng Fan maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Default) && 1471*766ce4d0SZheng Fan maContext.GetCombinedContext() != CombinedEnumContext(Application_Writer, Context_Table) ) 1472*766ce4d0SZheng Fan maTbxIndent_IncDec->EnableItem(BT_TBX_INDENT_DEC, sal_False); 1473*766ce4d0SZheng Fan } 1474*766ce4d0SZheng Fan } 1475*766ce4d0SZheng Fan //Sym3_1093. Add toggle state for numbering and bullet icons 1476*766ce4d0SZheng Fan void ParaPropertyPanel::StateChangeBulletNumImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ) 1477*766ce4d0SZheng Fan { 1478*766ce4d0SZheng Fan if (nSID==FN_NUM_NUMBERING_ON) 1479*766ce4d0SZheng Fan { 1480*766ce4d0SZheng Fan if ( (eState >= SFX_ITEM_DEFAULT) && (pState->ISA(SfxBoolItem))) 1481*766ce4d0SZheng Fan { 1482*766ce4d0SZheng Fan const SfxBoolItem* pItem= (const SfxBoolItem*)pState; 1483*766ce4d0SZheng Fan sal_Bool aBool = (sal_Bool)pItem->GetValue(); 1484*766ce4d0SZheng Fan if (aBool) { 1485*766ce4d0SZheng Fan maTBxNumBullet->SetItemState(IID_NUMBER, STATE_CHECK); 1486*766ce4d0SZheng Fan } else { 1487*766ce4d0SZheng Fan maTBxNumBullet->SetItemState(IID_NUMBER, STATE_NOCHECK); 1488*766ce4d0SZheng Fan } 1489*766ce4d0SZheng Fan } 1490*766ce4d0SZheng Fan } 1491*766ce4d0SZheng Fan if (nSID==FN_NUM_BULLET_ON) 1492*766ce4d0SZheng Fan { 1493*766ce4d0SZheng Fan if ( (eState >= SFX_ITEM_DEFAULT) && (pState->ISA(SfxBoolItem))) 1494*766ce4d0SZheng Fan { 1495*766ce4d0SZheng Fan const SfxBoolItem* pItem= (const SfxBoolItem*)pState; 1496*766ce4d0SZheng Fan sal_Bool aBool = (sal_Bool)pItem->GetValue(); 1497*766ce4d0SZheng Fan if (aBool) { 1498*766ce4d0SZheng Fan maTBxNumBullet->SetItemState(IID_BULLET, STATE_CHECK); 1499*766ce4d0SZheng Fan } else { 1500*766ce4d0SZheng Fan maTBxNumBullet->SetItemState(IID_BULLET, STATE_NOCHECK); 1501*766ce4d0SZheng Fan } 1502*766ce4d0SZheng Fan } 1503*766ce4d0SZheng Fan } 1504*766ce4d0SZheng Fan } 1505*766ce4d0SZheng Fan //Modified for Numbering&Bullets Dialog UX Enh(Story 992) by chengjh,2011.7.5 1506*766ce4d0SZheng Fan //Handing the transferred the num rule index data of the current selection 1507*766ce4d0SZheng Fan void ParaPropertyPanel::StateChangeBulletNumRuleImpl( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ) 1508*766ce4d0SZheng Fan { 1509*766ce4d0SZheng Fan 1510*766ce4d0SZheng Fan const SfxUInt16Item* pIt = (const SfxUInt16Item*)pState; 1511*766ce4d0SZheng Fan sal_uInt16 nValue = (sal_uInt16)0xFFFF; 1512*766ce4d0SZheng Fan if ( pIt ) 1513*766ce4d0SZheng Fan nValue = pIt->GetValue(); 1514*766ce4d0SZheng Fan 1515*766ce4d0SZheng Fan if ( nSID == FN_BUL_NUM_RULE_INDEX ) 1516*766ce4d0SZheng Fan { 1517*766ce4d0SZheng Fan nBulletTypeIndex = nValue; 1518*766ce4d0SZheng Fan }else if ( nSID == FN_NUM_NUM_RULE_INDEX ) 1519*766ce4d0SZheng Fan { 1520*766ce4d0SZheng Fan nNumTypeIndex = nValue; 1521*766ce4d0SZheng Fan } 1522*766ce4d0SZheng Fan } 1523*766ce4d0SZheng Fan //End 1524*766ce4d0SZheng Fan FieldUnit ParaPropertyPanel::GetCurrentUnit( SfxItemState eState, const SfxPoolItem* pState ) 1525*766ce4d0SZheng Fan { 1526*766ce4d0SZheng Fan FieldUnit eUnit = FUNIT_NONE; 1527*766ce4d0SZheng Fan 1528*766ce4d0SZheng Fan if ( pState && eState >= SFX_ITEM_DEFAULT ) 1529*766ce4d0SZheng Fan eUnit = (FieldUnit)( (const SfxUInt16Item*)pState )->GetValue(); 1530*766ce4d0SZheng Fan else 1531*766ce4d0SZheng Fan { 1532*766ce4d0SZheng Fan SfxViewFrame* pFrame = SfxViewFrame::Current(); 1533*766ce4d0SZheng Fan SfxObjectShell* pSh = NULL; 1534*766ce4d0SZheng Fan if ( pFrame ) 1535*766ce4d0SZheng Fan pSh = pFrame->GetObjectShell(); 1536*766ce4d0SZheng Fan if ( pSh ) //the object shell is not always available during reload 1537*766ce4d0SZheng Fan { 1538*766ce4d0SZheng Fan SfxModule* pModule = pSh->GetModule(); 1539*766ce4d0SZheng Fan if ( pModule ) 1540*766ce4d0SZheng Fan { 1541*766ce4d0SZheng Fan const SfxPoolItem* pItem = pModule->GetItem( SID_ATTR_METRIC ); 1542*766ce4d0SZheng Fan if ( pItem ) 1543*766ce4d0SZheng Fan eUnit = (FieldUnit)( (SfxUInt16Item*)pItem )->GetValue(); 1544*766ce4d0SZheng Fan } 1545*766ce4d0SZheng Fan else 1546*766ce4d0SZheng Fan { 1547*766ce4d0SZheng Fan DBG_ERRORFILE( "GetModuleFieldUnit(): no module found" ); 1548*766ce4d0SZheng Fan } 1549*766ce4d0SZheng Fan } 1550*766ce4d0SZheng Fan } 1551*766ce4d0SZheng Fan 1552*766ce4d0SZheng Fan return eUnit; 1553*766ce4d0SZheng Fan } 1554*766ce4d0SZheng Fan //new FixedText(this, SVX_RES(FT_COLOR)) 1555*766ce4d0SZheng Fan 1556*766ce4d0SZheng Fan PopupControl* ParaPropertyPanel::CreateLineSpacingControl (PopupContainer* pParent) 1557*766ce4d0SZheng Fan { 1558*766ce4d0SZheng Fan return new ParaLineSpacingControl(pParent, *this); 1559*766ce4d0SZheng Fan } 1560*766ce4d0SZheng Fan 1561*766ce4d0SZheng Fan PopupControl* ParaPropertyPanel::CreateBulletsPopupControl (PopupContainer* pParent) 1562*766ce4d0SZheng Fan { 1563*766ce4d0SZheng Fan return new ParaBulletsControl(pParent, *this); 1564*766ce4d0SZheng Fan } 1565*766ce4d0SZheng Fan 1566*766ce4d0SZheng Fan PopupControl* ParaPropertyPanel::CreateNumberingPopupControl (PopupContainer* pParent) 1567*766ce4d0SZheng Fan { 1568*766ce4d0SZheng Fan return new ParaNumberingControl(pParent, *this); 1569*766ce4d0SZheng Fan } 1570*766ce4d0SZheng Fan 1571*766ce4d0SZheng Fan PopupControl* ParaPropertyPanel::CreateBGColorPopupControl (PopupContainer* pParent) 1572*766ce4d0SZheng Fan { 1573*766ce4d0SZheng Fan return new ColorControl( 1574*766ce4d0SZheng Fan pParent, 1575*766ce4d0SZheng Fan mpBindings, 1576*766ce4d0SZheng Fan SVX_RES(RID_POPUPPANEL_TEXTPAGE_FONT_COLOR), 1577*766ce4d0SZheng Fan SVX_RES(VS_FONT_COLOR), 1578*766ce4d0SZheng Fan ::boost::bind(&ParaPropertyPanel::GetBGColor, this), 1579*766ce4d0SZheng Fan ::boost::bind(&ParaPropertyPanel::SetBGColor, this, _1,_2), 1580*766ce4d0SZheng Fan pParent, 1581*766ce4d0SZheng Fan 0); 1582*766ce4d0SZheng Fan } 1583*766ce4d0SZheng Fan 1584*766ce4d0SZheng Fan 1585*766ce4d0SZheng Fan ParaPropertyPanel::ParaPropertyPanel(Window* pParent, 1586*766ce4d0SZheng Fan const cssu::Reference<css::frame::XFrame>& rxFrame, 1587*766ce4d0SZheng Fan SfxBindings* pBindings) 1588*766ce4d0SZheng Fan : Control(pParent, SVX_RES(RID_SIDEBAR_PARA_PANEL)) 1589*766ce4d0SZheng Fan //, mnContextId (PROPERTY_CONTEXT_NOT_SUPPORT) 1590*766ce4d0SZheng Fan //Alignment 1591*766ce4d0SZheng Fan ,maAlignToolBoxBackground(ControlFactory::CreateToolBoxBackground(this)) 1592*766ce4d0SZheng Fan , maAlignToolBox (ControlFactory::CreateToolBox(maAlignToolBoxBackground.get(),SVX_RES(TBX_HORIZONTALALIGNMENT))) 1593*766ce4d0SZheng Fan ,maTBxVertAlignBackground(ControlFactory::CreateToolBoxBackground(this)) 1594*766ce4d0SZheng Fan , maTBxVertAlign (ControlFactory::CreateToolBox(maTBxVertAlignBackground.get(),SVX_RES(TBX_VERT_ALIGN))) 1595*766ce4d0SZheng Fan , maLeftPara (SVX_RES(IMG_LEFT_PARA)) 1596*766ce4d0SZheng Fan , maCentPara (SVX_RES(IMG_CENTER_PARA)) 1597*766ce4d0SZheng Fan , maRightPara (SVX_RES(IMG_RIGHT_PARA)) 1598*766ce4d0SZheng Fan , maJusPara (SVX_RES(IMG_JUSTIFY_PARA)) 1599*766ce4d0SZheng Fan , maVertImageList (SVX_RES(IL_VERT_ALIGN)) 1600*766ce4d0SZheng Fan , maVertImageListH (SVX_RES(IL_VERT_ALIGN)) 1601*766ce4d0SZheng Fan //Num&Backcolor 1602*766ce4d0SZheng Fan ,maTBxNumBulletBackground(ControlFactory::CreateToolBoxBackground(this)) 1603*766ce4d0SZheng Fan , maTBxNumBullet (ControlFactory::CreateToolBox(maTBxNumBulletBackground.get(),SVX_RES(TBX_NUM_BULLET))) 1604*766ce4d0SZheng Fan ,maTBxBackColorBackground(ControlFactory::CreateToolBoxBackground(this)) 1605*766ce4d0SZheng Fan , maTBxBackColor (ControlFactory::CreateToolBox(maTBxBackColorBackground.get(),SVX_RES(TBX_BACK_COLOR))) 1606*766ce4d0SZheng Fan , maNumBImageList (SVX_RES(IL_NUM_BULLET)) 1607*766ce4d0SZheng Fan , maNumBImageListH (SVX_RES(ILH_NUM_BULLET)) 1608*766ce4d0SZheng Fan , maNumBImageListRTL (SVX_RES(IL_NUM_BULLET_RTL)) //wj sym2_7380 1609*766ce4d0SZheng Fan , maImgBackColorHigh (SVX_RES(IMG_BACK_COLOR_H)) 1610*766ce4d0SZheng Fan , maImgBackColor (SVX_RES(IMG_BACK_COLOR)) 1611*766ce4d0SZheng Fan , mpColorUpdater () 1612*766ce4d0SZheng Fan , maColor (COL_AUTO) 1613*766ce4d0SZheng Fan , mbColorAvailable (sal_True) 1614*766ce4d0SZheng Fan //Paragraph spacing 1615*766ce4d0SZheng Fan , maFTUL (new FixedText(this, SVX_RES(FT_SPACING))) 1616*766ce4d0SZheng Fan ,maTbxUL_IncDecBackground(ControlFactory::CreateToolBoxBackground(this)) 1617*766ce4d0SZheng Fan , maTbxUL_IncDec (ControlFactory::CreateToolBox(maTbxUL_IncDecBackground.get(),SVX_RES(TBX_UL_INC_DEC))) 1618*766ce4d0SZheng Fan , maParInc (SVX_RES(IMG_PARA_INC)) 1619*766ce4d0SZheng Fan , maParDec (SVX_RES(IMG_PARA_DEC)) 1620*766ce4d0SZheng Fan , maTopDist (new SvxRelativeField(this, SVX_RES(MF_ABOVE_PARASPACING))) 1621*766ce4d0SZheng Fan , maBottomDist (new SvxRelativeField(this, SVX_RES(MF_BELOW_PARASPACING))) 1622*766ce4d0SZheng Fan //Indent 1623*766ce4d0SZheng Fan , maFTIndent (new FixedText(this, SVX_RES(FT_INDENT))) 1624*766ce4d0SZheng Fan ,maTbxIndent_IncDecBackground(ControlFactory::CreateToolBoxBackground(this)) 1625*766ce4d0SZheng Fan , maTbxIndent_IncDec (ControlFactory::CreateToolBox(maTbxIndent_IncDecBackground.get(),SVX_RES(TBX_INDENT_INC_DEC))) 1626*766ce4d0SZheng Fan ,maTbxProDemoteBackground(ControlFactory::CreateToolBoxBackground(this)) 1627*766ce4d0SZheng Fan , maTbxProDemote (ControlFactory::CreateToolBox(maTbxProDemoteBackground.get(),SVX_RES(TBX_INDENT_PRO_DEMOTE))) 1628*766ce4d0SZheng Fan , maLeftIndent (new SvxRelativeField(this, SVX_RES(MF_BEFORE_INDENT))) 1629*766ce4d0SZheng Fan , maRightIndent (new SvxRelativeField(this, SVX_RES(MF_AFTER_INDENT))) 1630*766ce4d0SZheng Fan , maFLineIndent (new SvxRelativeField(this, SVX_RES(MF_FL_INDENT))) 1631*766ce4d0SZheng Fan , maIndInc (SVX_RES(IMG_INDENT_INC)) 1632*766ce4d0SZheng Fan , maIndDec (SVX_RES(IMG_INDENT_DEC)) 1633*766ce4d0SZheng Fan , maIndInc_BD (SVX_RES(IMG_INDENT_INC_BD)) 1634*766ce4d0SZheng Fan , maIndDec_BD (SVX_RES(IMG_INDENT_DEC_BD)) 1635*766ce4d0SZheng Fan , maIndHang (SVX_RES(IMG_INDENT_HANG)) 1636*766ce4d0SZheng Fan , maTxtLeft (0) 1637*766ce4d0SZheng Fan //Line spacing 1638*766ce4d0SZheng Fan ,maLineSPTbxBackground(ControlFactory::CreateToolBoxBackground(this)) 1639*766ce4d0SZheng Fan , maLineSPTbx (ControlFactory::CreateToolBox(maLineSPTbxBackground.get(),SVX_RES(TBX_LINESP))) 1640*766ce4d0SZheng Fan , maSpace1 (SVX_RES(IMG_SPACE1)) 1641*766ce4d0SZheng Fan , maSpace2 (SVX_RES(IMG_SPACE2)) 1642*766ce4d0SZheng Fan , maSpace3 (SVX_RES(IMG_SPACE3)) 1643*766ce4d0SZheng Fan , maIndent1 (SVX_RES(IMG_INDENT1)) 1644*766ce4d0SZheng Fan , maIndent2 (SVX_RES(IMG_INDENT2)) 1645*766ce4d0SZheng Fan , maIndent3 (SVX_RES(IMG_INDENT3)) 1646*766ce4d0SZheng Fan , maLineSpacePopup(this, ::boost::bind(&ParaPropertyPanel::CreateLineSpacingControl, this, _1)) 1647*766ce4d0SZheng Fan , maBulletsPopup(this, ::boost::bind(&ParaPropertyPanel::CreateBulletsPopupControl, this, _1)) 1648*766ce4d0SZheng Fan , maNumberingPopup(this, ::boost::bind(&ParaPropertyPanel::CreateNumberingPopupControl, this, _1)) 1649*766ce4d0SZheng Fan , maBGColorPopup(this, ::boost::bind(&ParaPropertyPanel::CreateBGColorPopupControl, this, _1)) 1650*766ce4d0SZheng Fan //Controller 1651*766ce4d0SZheng Fan , maLeftAlignControl (SID_ATTR_PARA_ADJUST_LEFT, *pBindings,*this) 1652*766ce4d0SZheng Fan , maCenterAlignControl (SID_ATTR_PARA_ADJUST_CENTER, *pBindings,*this) 1653*766ce4d0SZheng Fan , maRightAlignControl (SID_ATTR_PARA_ADJUST_RIGHT, *pBindings,*this) 1654*766ce4d0SZheng Fan , maJustifyAlignControl (SID_ATTR_PARA_ADJUST_BLOCK, *pBindings,*this) 1655*766ce4d0SZheng Fan , maLRSpaceControl (SID_ATTR_PARA_LRSPACE,*pBindings,*this) 1656*766ce4d0SZheng Fan , maLNSpaceControl (SID_ATTR_PARA_LINESPACE, *pBindings,*this) 1657*766ce4d0SZheng Fan , maULSpaceControl (SID_ATTR_PARA_ULSPACE, *pBindings,*this) 1658*766ce4d0SZheng Fan , maOutLineLeftControl (SID_OUTLINE_LEFT, *pBindings,*this) 1659*766ce4d0SZheng Fan , maOutLineRightControl (SID_OUTLINE_RIGHT, *pBindings,*this) 1660*766ce4d0SZheng Fan , maIncIndentControl (SID_INC_INDENT, *pBindings,*this) 1661*766ce4d0SZheng Fan , maDecIndentControl (SID_DEC_INDENT, *pBindings,*this) 1662*766ce4d0SZheng Fan , maVertTop (SID_TABLE_VERT_NONE, *pBindings,*this) 1663*766ce4d0SZheng Fan , maVertCenter (SID_TABLE_VERT_CENTER, *pBindings,*this) 1664*766ce4d0SZheng Fan , maVertBottom (SID_TABLE_VERT_BOTTOM,*pBindings,*this) 1665*766ce4d0SZheng Fan , maBulletOnOff (FN_NUM_BULLET_ON, *pBindings,*this) 1666*766ce4d0SZheng Fan , maNumberOnOff (FN_NUM_NUMBERING_ON, *pBindings,*this) 1667*766ce4d0SZheng Fan //Modified for Numbering&Bullets Dialog UX Enh(Story 992) by chengjh,2011.7.5 1668*766ce4d0SZheng Fan //Add entry to transfer number rule index data 1669*766ce4d0SZheng Fan ,maBulletNumRuleIndex (FN_BUL_NUM_RULE_INDEX, *pBindings,*this) 1670*766ce4d0SZheng Fan ,maNumNumRuleIndex (FN_NUM_NUM_RULE_INDEX, *pBindings,*this) 1671*766ce4d0SZheng Fan //End 1672*766ce4d0SZheng Fan , maBackColorControl (SID_BACKGROUND_COLOR, *pBindings,*this) 1673*766ce4d0SZheng Fan , m_aMetricCtl (SID_ATTR_METRIC, *pBindings,*this) 1674*766ce4d0SZheng Fan //, m_eMetricUnit (FUNIT_INCH) 1675*766ce4d0SZheng Fan //, m_last_eMetricUnit (FUNIT_INCH) 1676*766ce4d0SZheng Fan //internal var 1677*766ce4d0SZheng Fan , maUpper (0) 1678*766ce4d0SZheng Fan , maLower (0) 1679*766ce4d0SZheng Fan , mpLnSPItem (NULL) 1680*766ce4d0SZheng Fan , meLnSpState (SFX_ITEM_DONTCARE) 1681*766ce4d0SZheng Fan , maFISpace1 ( this, SVX_RES( FI_SPACE1)) 1682*766ce4d0SZheng Fan , maFISpace2 ( this, SVX_RES( FI_SPACE2)) 1683*766ce4d0SZheng Fan , maFIndent1 ( this, SVX_RES( FI_INDENT1)) 1684*766ce4d0SZheng Fan , maFIndent2 ( this, SVX_RES( FI_INDENT2)) 1685*766ce4d0SZheng Fan , maFIndent3 ( this, SVX_RES( FI_INDENT3)) 1686*766ce4d0SZheng Fan , mbOutLineRight (0) 1687*766ce4d0SZheng Fan , mbOutLineLeft (0) 1688*766ce4d0SZheng Fan ,nBulletTypeIndex ((sal_uInt16)0xFFFF) 1689*766ce4d0SZheng Fan ,nNumTypeIndex ((sal_uInt16)0xFFFF) 1690*766ce4d0SZheng Fan //End 1691*766ce4d0SZheng Fan ,mpBindings(pBindings) 1692*766ce4d0SZheng Fan { 1693*766ce4d0SZheng Fan initial(); 1694*766ce4d0SZheng Fan FreeResource(); 1695*766ce4d0SZheng Fan } 1696*766ce4d0SZheng Fan 1697*766ce4d0SZheng Fan }} 1698