xref: /AOO41X/main/svx/source/sidebar/text/TextPropertyPanel.cxx (revision b9e67834aa136f0c8550ba8a880ab75deaeb26df)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 #include "precompiled_svx.hxx"
23 
24 #include "TextPropertyPanel.hrc"
25 #include "TextPropertyPanel.hxx"
26 #include "SvxSBFontNameBox.hxx"
27 
28 #include "svx/dialmgr.hxx"
29 
30 #include <editeng/brshitem.hxx>
31 #include <editeng/colritem.hxx>
32 #include <editeng/crsditem.hxx>
33 #include <editeng/escpitem.hxx>
34 #include <editeng/flstitem.hxx>
35 #include <editeng/fontitem.hxx>
36 #include <editeng/kernitem.hxx>
37 #include <editeng/postitem.hxx>
38 #include <editeng/shdditem.hxx>
39 #include <editeng/udlnitem.hxx>
40 #include <editeng/wghtitem.hxx>
41 #include <rtl/ref.hxx>
42 #include <sfx2/dispatch.hxx>
43 #include <sfx2/objsh.hxx>
44 #include <sfx2/viewsh.hxx>
45 #include <sfx2/sidebar/propertypanel.hrc>
46 #include <sfx2/sidebar/ControlFactory.hxx>
47 #include <sfx2/sidebar/Theme.hxx>
48 #include <svtools/ctrltool.hxx>
49 #include <svtools/unitconv.hxx>
50 
51 #include <vcl/gradient.hxx>
52 #include <vcl/svapp.hxx>
53 
54 
55 using namespace css;
56 using namespace cssu;
57 using ::sfx2::sidebar::Theme;
58 
59 #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
60 
61 namespace svx { namespace sidebar {
62 
63 #undef HAS_IA2
64 
65 
66 #define FONT_CONTROL_WIDTH      160
67 #define SIZE_CONTROL_WIDTH      80
68 #define CONTROL_COMBOX_HEIGHT   20
69 #define CONTROL_HEIGHT_5X       120
70 #define SIDEBAR_SPACE_NORMAL    0
71 #define SIDEBAR_SPACE_EXPAND    1
72 #define SIDEBAR_SPACE_CONDENSED 2
73 #define SIDEBAR_SPACING_GLOBAL_VALUE    String("PopupPanal_Spacing", 18, RTL_TEXTENCODING_ASCII_US)
74 #define TEXT_SECTIONPAGE_HEIGHT_S   SECTIONPAGE_MARGIN_VERTICAL_TOP + CBOX_HEIGHT  + ( TOOLBOX_ITEM_HEIGHT + 2 ) + CONTROL_SPACING_VERTICAL * 1 + SECTIONPAGE_MARGIN_VERTICAL_BOT
75 #define TEXT_SECTIONPAGE_HEIGHT     SECTIONPAGE_MARGIN_VERTICAL_TOP + CBOX_HEIGHT  + ( TOOLBOX_ITEM_HEIGHT + 2 ) * 2 + CONTROL_SPACING_VERTICAL * 2 + SECTIONPAGE_MARGIN_VERTICAL_BOT
76 
77 //
78 #define SPACING_NOCUSTOM                0
79 #define SPACING_CLOSE_BY_CLICK_ICON     -1
80 #define SPACING_CLOSE_BY_CUS_EDIT       1
81 //end
82 
83 
84 
85 
86 
87 Reference<ui::XUIElement> TextPropertyPanel::Create (
88     const ::rtl::OUString& rsResourceURL,
89     Window* pParent,
90     const cssu::Reference<css::frame::XFrame>& rxFrame,
91     SfxBindings* pBindings)
92 {
93     if (pParent == NULL)
94         throw lang::IllegalArgumentException(A2S("no parent Window given to TextPropertyPanel::Create"), NULL, 0);
95     if ( ! rxFrame.is())
96         throw lang::IllegalArgumentException(A2S("no XFrame given to TextPropertyPanel::Create"), NULL, 1);
97     if (pBindings == NULL)
98         throw lang::IllegalArgumentException(A2S("no SfxBindings given to TextPropertyPanel::Create"), NULL, 2);
99 
100     ::rtl::Reference<TextPropertyPanel> pPanel (
101         new TextPropertyPanel(
102             rsResourceURL,
103             pParent,
104             rxFrame,
105             pBindings));
106     return Reference<ui::XUIElement>(static_cast<XWeak*>(pPanel.get()), UNO_QUERY);
107 }
108 
109 
110 
111 
112 TextPropertyPanel::TextPropertyPanel (
113     const ::rtl::OUString& rsResourceURL,
114     Window* pParent,
115     const cssu::Reference<css::frame::XFrame>& rxFrame,
116     SfxBindings* pBindings)
117     :   ::sfx2::sidebar::SidebarPanelBase(rsResourceURL, pParent, rxFrame, SVX_RES(RID_SIDEBAR_TEXT_PANEL)),
118         mpFontNameBox (new SvxSBFontNameBox(this, SVX_RES(CB_SBFONT_FONT))),
119         maFontSizeBox       (this, SVX_RES(MB_SBFONT_FONTSIZE)),
120         mpToolBoxIncDec(sfx2::sidebar::ControlFactory::CreateToolBox(this, SVX_RES(TB_INCREASE_DECREASE))),
121         mpToolBoxFont(sfx2::sidebar::ControlFactory::CreateToolBox(this, SVX_RES(TB_FONT))),
122         mpToolBoxFontColor(sfx2::sidebar::ControlFactory::CreateToolBox(this, SVX_RES(TB_FONTCOLOR))),
123         mpToolBoxScript(sfx2::sidebar::ControlFactory::CreateToolBox(this, SVX_RES(TB_SCRIPT))),
124         mpToolBoxScriptSw(sfx2::sidebar::ControlFactory::CreateToolBox(this, SVX_RES(TB_SCRIPT_SW))),
125         mpToolBoxSpacing(sfx2::sidebar::ControlFactory::CreateToolBox(this, SVX_RES(TB_SPACING))),
126         mpToolBoxHighlight(sfx2::sidebar::ControlFactory::CreateToolBox(this, SVX_RES(TB_HIGHLIGHT))),
127         mpFontColorUpdater(),
128         mpHighlightUpdater(),
129 
130         maFontNameControl   (SID_ATTR_CHAR_FONT,        *pBindings, *this),
131         maFontSizeControl   (SID_ATTR_CHAR_FONTHEIGHT,  *pBindings, *this),
132         maWeightControl     (SID_ATTR_CHAR_WEIGHT,      *pBindings, *this),
133         maItalicControl     (SID_ATTR_CHAR_POSTURE,     *pBindings, *this),
134         maUnderlineControl  (SID_ATTR_CHAR_UNDERLINE,   *pBindings, *this),
135         maStrikeControl     (SID_ATTR_CHAR_STRIKEOUT,   *pBindings, *this),
136         maShadowControl     (SID_ATTR_CHAR_SHADOWED,    *pBindings, *this),
137         maFontColorControl  (SID_ATTR_CHAR_COLOR,       *pBindings, *this),
138         maScriptControlSw   (SID_ATTR_CHAR_ESCAPEMENT,  *pBindings, *this),  //for sw
139         maSuperScriptControl (SID_SET_SUPER_SCRIPT,     *pBindings, *this),
140         maSubScriptControl  (SID_SET_SUB_SCRIPT,        *pBindings, *this),
141         maSpacingControl    (SID_ATTR_CHAR_KERNING,     *pBindings, *this),
142         maHighlightControl  (SID_ATTR_BRUSH_CHAR,       *pBindings, *this),
143         maSDFontGrow        (SID_GROW_FONT_SIZE,        *pBindings, *this),
144         maSDFontShrink      (SID_SHRINK_FONT_SIZE,      *pBindings, *this),
145 
146         maImgIncrease       (SVX_RES( IMG_INCREASE)),
147         maImgDecrease       (SVX_RES( IMG_DECREASE)),
148         maImgBold           (SVX_RES( IMG_BOLD )),
149         maImgItalic         (SVX_RES( IMG_ITALIC )),
150         maImgUnderline      (SVX_RES( IMG_UNDERLINE )),
151         maImgStrike         (SVX_RES( IMG_STRIKEOUT )),
152         maImgShadow         (SVX_RES( IMG_SHADOWED )),
153         maImgFontColor      (SVX_RES( IMG_FONTCOLOR)),
154         maImgSupScript      (SVX_RES( IMG_SUPSCRIPT)),
155         maImgSubScript      (SVX_RES( IMG_SUBSCRIPT)),
156         maImgHighlight      (SVX_RES( IMG_HIGHLIGHT)),
157 
158         maImgNormalIcon     (SVX_RES(IMG_SPACING_D)),
159 
160         maImgIncreaseHigh   (SVX_RES( IMG_INCREASE_H )),
161         maImgDecreaseHigh   (SVX_RES( IMG_DECREASE_H )),
162         maImgBoldHigh       (SVX_RES( IMG_BOLD_H )),
163         maImgItalicHigh     (SVX_RES( IMG_ITALIC_H )),
164         maImgUnderlineHigh  (SVX_RES( IMG_UNDERLINE_H )),
165         maImgStrikeHigh     (SVX_RES( IMG_STRIKEOUT_H )),
166         maImgShadowHigh     (SVX_RES( IMG_SHADOWED_H )),
167         maImgFontColorHigh  (SVX_RES( IMG_FONTCOLOR_H)),
168         maImgSupScriptHigh  (SVX_RES( IMG_SUPSCRIPT_H)),
169         maImgSubScriptHigh  (SVX_RES( IMG_SUBSCRIPT_H)),
170         maImgHighlightHigh  (SVX_RES( IMG_HIGHLIGHT_H)),
171 
172         mpFontList          (NULL),
173         mbMustDelete        (false),
174         mbFocusOnFontSizeCtrl(false),
175         /*AF
176         mpFloatWinUnderline(NULL),
177         mpPageUnderline(NULL),
178         mpFloatWinFontColor(NULL),
179         mpPageFontColor(NULL),
180         mpFloatWinSpacing(NULL),
181         mpPageSpacing(NULL)
182         */
183         maContext(),
184         mpBindings(pBindings)
185 {
186     Initialize();
187     FreeResource();
188 }
189 
190 
191 
192 
193 TextPropertyPanel::~TextPropertyPanel (void)
194 {
195     if(mbMustDelete)
196         delete mpFontList;
197 
198     /*AF
199     delete mpPageUnderline;
200     delete mpFloatWinUnderline;
201 
202     delete mpPageFontColor;
203     delete mpFloatWinFontColor;
204 
205     delete mpPageSpacing;
206     delete mpFloatWinSpacing;
207     */
208 }
209 
210 
211 
212 
213 void TextPropertyPanel::HandleContextChange (
214     const ::sfx2::sidebar::EnumContext aContext)
215 {
216     if (maContext == aContext)
217     {
218         // Nothing to do.
219         return;
220     }
221 
222     maContext = aContext;
223     switch (maContext.GetCombinedContext())
224     {
225         case CombinedEnumContext(Application_Calc, Context_Cell):
226         case CombinedEnumContext(Application_Calc, Context_Pivot):
227         {
228             mpToolBoxScript->Hide();
229             mpToolBoxScriptSw->Hide();
230             mpToolBoxSpacing->Hide();
231             mpToolBoxHighlight->Hide();
232 
233             Size aSize(PROPERTYPAGE_WIDTH,TEXT_SECTIONPAGE_HEIGHT_S);
234             aSize = LogicToPixel( aSize, MapMode(MAP_APPFONT) );
235             aSize.setWidth(GetOutputSizePixel().Width());
236             SetSizePixel(aSize);
237             break;
238         }
239 
240         case CombinedEnumContext(Application_Writer, Context_Text):
241         case CombinedEnumContext(Application_Writer, Context_Table):
242         {
243             mpToolBoxScriptSw->Show();
244             mpToolBoxScript->Hide();
245             mpToolBoxHighlight->Show();
246             mpToolBoxSpacing->Show();
247 
248             Size aSize(PROPERTYPAGE_WIDTH, TEXT_SECTIONPAGE_HEIGHT);
249             aSize = LogicToPixel( aSize, MapMode(MAP_APPFONT) );
250             aSize.setWidth(GetOutputSizePixel().Width());
251             SetSizePixel(aSize);
252             break;
253         }
254 
255         case CombinedEnumContext(Application_Writer, Context_DrawText):
256         case CombinedEnumContext(Application_Writer, Context_Annotation):
257         {
258             mpToolBoxScriptSw->Show();
259             mpToolBoxScript->Hide();
260             mpToolBoxSpacing->Show();
261             mpToolBoxHighlight->Hide();
262 
263             Size aSize(PROPERTYPAGE_WIDTH,TEXT_SECTIONPAGE_HEIGHT);
264             aSize = LogicToPixel( aSize, MapMode(MAP_APPFONT) );
265             aSize.setWidth(GetOutputSizePixel().Width());
266             SetSizePixel(aSize);
267             break;
268         }
269 
270         case CombinedEnumContext(Application_Calc, Context_EditCell):
271         case CombinedEnumContext(Application_Calc, Context_DrawText):
272         case CombinedEnumContext(Application_Draw, Context_DrawText):
273         case CombinedEnumContext(Application_Draw, Context_Text):
274         case CombinedEnumContext(Application_Draw, Context_Table):
275         case CombinedEnumContext(Application_Draw, Context_OutlineText):
276         case CombinedEnumContext(Application_Draw, Context_Draw):
277         case CombinedEnumContext(Application_Draw, Context_TextObject):
278         case CombinedEnumContext(Application_Draw, Context_Graphic):
279         case CombinedEnumContext(Application_Impress, Context_DrawText):
280         case CombinedEnumContext(Application_Impress, Context_Text):
281         case CombinedEnumContext(Application_Impress, Context_Table):
282         case CombinedEnumContext(Application_Impress, Context_OutlineText):
283         case CombinedEnumContext(Application_Impress, Context_Draw):
284         case CombinedEnumContext(Application_Impress, Context_TextObject):
285         case CombinedEnumContext(Application_Impress, Context_Graphic):
286         {
287             mpToolBoxScriptSw->Hide();
288             mpToolBoxScript->Show();
289             mpToolBoxSpacing->Show();
290             mpToolBoxHighlight->Hide();
291 
292             Size aSize(PROPERTYPAGE_WIDTH,TEXT_SECTIONPAGE_HEIGHT);
293             aSize = LogicToPixel( aSize,MapMode(MAP_APPFONT) );
294             aSize.setWidth(GetOutputSizePixel().Width());
295             SetSizePixel(aSize);
296             break;
297         }
298 
299         default:
300             break;
301     }
302 }
303 
304 
305 
306 
307 void TextPropertyPanel::PaintRect(const ToolBox &rTB)
308 {
309     Point aPos = rTB.GetPosPixel();
310     Size aSize = rTB.GetSizePixel();
311     Rectangle aRect( aPos, aSize );
312     aRect.Left() -= 2;
313     aRect.Top() -= 1;
314     aRect.Right() += 2;
315     aRect.Bottom() += 1;
316     Color aOldLineColor = GetLineColor();
317     Color aOldFillColor = GetFillColor();
318     Color aLineColor(200,209,225);
319 //  Color aLineColor = GetSettings().GetStyleSettings().GetPropertySectionTBxBorderColor();
320     if(!GetSettings().GetStyleSettings().GetHighContrastMode())
321         SetLineColor(aLineColor);
322     else
323         SetLineColor(GetSettings().GetStyleSettings().GetShadowColor());
324     SetFillColor(COL_TRANSPARENT);
325     DrawRect(aRect);
326 
327     aRect.Left() += 1 ;
328     aRect.Top() += 1;
329     aRect.Right() -= 1;
330     aRect.Bottom() -= 1;
331     Color aStartColor(220,228,238);
332     Color aEndColor(245,245,247);
333     Gradient aBKGrad(GRADIENT_LINEAR, aStartColor, aEndColor);
334     if(!GetSettings().GetStyleSettings().GetHighContrastMode())
335 //  DrawGradient(aRect, GetSettings().GetStyleSettings().GetPropertySectionTBxBKGGradient());
336         DrawGradient(aRect, aBKGrad);
337     //else
338     //{
339     //  SetFillColor(GetSettings().GetStyleSettings().GetMenuColor());
340     //  DrawRect(aRect);
341     //}
342 
343     SetLineColor(aOldLineColor);
344     SetFillColor(aOldFillColor);
345 }
346 
347 
348 
349 
350 void TextPropertyPanel::Paint(const Rectangle &rRect)
351 {
352     SidebarPanelBase::Paint(rRect);
353 
354     if(mpFontColorUpdater == NULL && mpHighlightUpdater == NULL)
355         return;
356 
357     //size increase & decrease
358     //AF    PaintRect(*mpToolBoxIncDec);
359 
360     //Font Toolbox
361     PaintRect(*mpToolBoxFont);
362 
363     //font color toolbox
364     PaintRect(*mpToolBoxFontColor);
365 
366     //script for sw
367     switch (maContext.GetCombinedContext())
368     {
369         case CombinedEnumContext(Application_Writer, Context_Text):
370         case CombinedEnumContext(Application_Writer, Context_Table):
371             PaintRect(*mpToolBoxHighlight);
372             // fall through
373         case CombinedEnumContext(Application_Writer, Context_DrawText):
374         case CombinedEnumContext(Application_Writer, Context_Annotation):
375             PaintRect(*mpToolBoxScriptSw);
376             break;
377 
378         case CombinedEnumContext(Application_Calc, Context_EditCell):
379         case CombinedEnumContext(Application_Calc, Context_DrawText):
380         case CombinedEnumContext(Application_Draw, Context_DrawText):
381         case CombinedEnumContext(Application_Draw, Context_Text):
382         case CombinedEnumContext(Application_Draw, Context_Table):
383         case CombinedEnumContext(Application_Draw, Context_OutlineText):
384         case CombinedEnumContext(Application_Draw, Context_Draw):
385         case CombinedEnumContext(Application_Draw, Context_TextObject):
386         case CombinedEnumContext(Application_Draw, Context_Graphic):
387         case CombinedEnumContext(Application_Impress, Context_DrawText):
388         case CombinedEnumContext(Application_Impress, Context_Text):
389         case CombinedEnumContext(Application_Impress, Context_Table):
390         case CombinedEnumContext(Application_Impress, Context_OutlineText):
391         case CombinedEnumContext(Application_Impress, Context_Draw):
392         case CombinedEnumContext(Application_Impress, Context_TextObject):
393         case CombinedEnumContext(Application_Impress, Context_Graphic):
394             PaintRect(*mpToolBoxScript);
395             break;
396     }
397 
398     if (maContext.GetCombinedContext() != CombinedEnumContext(Application_Calc, Context_Cell))
399     {
400         PaintRect(*mpToolBoxSpacing);
401     }
402 }
403 
404 
405 
406 
407 void TextPropertyPanel::DataChanged (const DataChangedEvent& rEvent)
408 {
409     SetupIcons();
410 }
411 
412 
413 
414 void TextPropertyPanel::Initialize (void)
415 {
416     //<<modify fill font list
417     SfxObjectShell* pDocSh = SfxObjectShell::Current();
418     const SfxPoolItem* pItem = NULL;
419 
420     if (pDocSh != NULL)
421         pItem = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST );
422     if (pItem != NULL)
423         mpFontList = ( (SvxFontListItem*)pItem )->GetFontList();
424     else
425     {
426         mpFontList = new FontList( Application::GetDefaultDevice() );
427         mbMustDelete = 1;
428     }
429 
430     mpFontNameBox->SetAccessibleName(mpFontNameBox->GetQuickHelpText());
431     maFontSizeBox.Fill( &mpFontList->Get( String::CreateFromAscii( "" ), String::CreateFromAscii( "" )),mpFontList );
432     maFontSizeBox.SetAccessibleName(maFontSizeBox.GetQuickHelpText());
433 
434     //toolbox
435     SetupIcons();
436     InitToolBoxIncDec();
437     InitToolBoxFont();
438     InitToolBoxFontColor();
439     InitToolBoxScript();
440     InitToolBoxSpacing();
441     InitToolBoxHighlight();
442 
443 #ifdef HAS_IA2
444     mpFontNameBox->SetAccRelationLabeledBy(&maFontNameBox);
445     mpFontNameBox->SetMpSubEditAccLableBy(&maFontNameBox);
446     maFontSizeBox.SetAccRelationLabeledBy(&maFontSizeBox);
447     maFontSizeBox.SetMpSubEditAccLableBy(&maFontSizeBox);
448     maToolBoxFont.SetAccRelationLabeledBy(&maToolBoxFont);
449     maToolBoxIncDec.SetAccRelationLabeledBy(&maToolBoxIncDec);
450     maToolBoxFontColor.SetAccRelationLabeledBy(&maToolBoxFontColor);
451     maToolBoxScript.SetAccRelationLabeledBy(&maToolBoxScript);
452     maToolBoxScriptSw.SetAccRelationLabeledBy(&maToolBoxScriptSw);
453     maToolBoxSpacing.SetAccRelationLabeledBy(&maToolBoxSpacing);
454     maToolBoxHighlight.SetAccRelationLabeledBy(&maToolBoxHighlight);
455 #endif
456 
457     //init state
458     mpHeightItem = NULL;
459     meWeight = WEIGHT_NORMAL;
460     meItalic = ITALIC_NONE;
461     mbShadow = false;
462     meStrike = STRIKEOUT_NONE;
463     mbPostureAvailable = true;
464     mbWeightAvailable = true;
465     meUnderline = UNDERLINE_NONE;
466     meUnderlineColor = COL_AUTO;   //
467     maColor = COL_BLACK;
468     mbColorAvailable = true;
469     maBackColor = COL_AUTO;
470     mbBackColorAvailable = true;
471     meColorType = FONT_COLOR;
472     meEscape = SVX_ESCAPEMENT_OFF;
473     mbSuper = false;
474     mbSub = false;
475     mbKernAvailable = true;
476     mbKernLBAvailable = true;
477     mlKerning = 0;
478     mpFontColorUpdater.reset(new ToolboxButtonColorUpdater(
479             SID_ATTR_CHAR_COLOR,
480             TBI_FONTCOLOR,
481             mpToolBoxFontColor.get(),
482             TBX_UPDATER_MODE_CHAR_COLOR_NEW));
483     mpHighlightUpdater.reset(new ToolboxButtonColorUpdater(
484             SID_ATTR_BRUSH_CHAR,
485             TBI_HIGHLIGHT,
486             mpToolBoxHighlight.get(),
487             TBX_UPDATER_MODE_CHAR_COLOR_NEW));
488 
489     //set handler
490     mpFontNameBox->SetBindings(mpBindings);
491     //add
492     Link aLink = LINK(this, TextPropertyPanel, FontSelHdl);
493     mpFontNameBox->SetSelectHdl(aLink);
494     //add end
495 
496     aLink = LINK(this, TextPropertyPanel, FontSizeModifyHdl);
497     maFontSizeBox.SetModifyHdl(aLink);
498     //add
499     aLink = LINK(this, TextPropertyPanel, FontSizeSelHdl);
500     maFontSizeBox.SetSelectHdl(aLink);
501     //add end
502     aLink = LINK(this, TextPropertyPanel, FontSizeLoseFocus);
503     maFontSizeBox.SetLoseFocusHdl(aLink);
504 
505 // add
506     long aSizeBoxHeight = maFontSizeBox.GetSizePixel().getHeight();;
507     Point aPosFontSize = maFontSizeBox.GetPosPixel();
508     long aPosY = aPosFontSize.getY();
509     Point pTBIncDec = mpToolBoxIncDec->GetPosPixel();
510     long aIncDecHeight = mpToolBoxIncDec->GetSizePixel().getHeight();
511     pTBIncDec.setY(aPosY+aSizeBoxHeight/2-aIncDecHeight/2);
512     mpToolBoxIncDec->SetPosPixel(pTBIncDec);
513     //end
514 }
515 
516 
517 
518 
519 void TextPropertyPanel::InitToolBoxFont()
520 {
521     mpToolBoxFont->SetQuickHelpText(TBI_BOLD,String(SVX_RES(STR_QH_BOLD))); //Add
522     mpToolBoxFont->SetQuickHelpText(TBI_ITALIC,String(SVX_RES(STR_QH_ITALIC))); //Add
523     mpToolBoxFont->SetQuickHelpText(TBI_UNDERLINE,String(SVX_RES(STR_QH_UNDERLINE))); //Add
524     mpToolBoxFont->SetBackground(Wallpaper());
525     mpToolBoxFont->SetPaintTransparent(true);
526 
527     Size aTbxSize( mpToolBoxFont->CalcWindowSizePixel() );
528     mpToolBoxFont->SetOutputSizePixel( aTbxSize );
529 
530     Link aLink  = LINK(this, TextPropertyPanel, ToolboxFontSelectHandler);
531     mpToolBoxFont->SetSelectHdl ( aLink );
532     aLink = LINK(this, TextPropertyPanel, ToolBoxUnderlineClickHdl);
533     mpToolBoxFont->SetDropdownClickHdl(aLink);
534 }
535 
536 
537 
538 
539 void TextPropertyPanel::InitToolBoxIncDec()
540 {
541     Size aTbxSize( mpToolBoxIncDec->CalcWindowSizePixel() );
542     mpToolBoxIncDec->SetOutputSizePixel( aTbxSize );
543 
544     Link aLink = LINK(this, TextPropertyPanel, ToolboxIncDecSelectHdl);
545     mpToolBoxIncDec->SetSelectHdl ( aLink );
546 }
547 
548 
549 
550 
551 void TextPropertyPanel::InitToolBoxFontColor()
552 {
553     Size aTbxSize( mpToolBoxFontColor->CalcWindowSizePixel() );
554     mpToolBoxFontColor->SetOutputSizePixel( aTbxSize );
555     mpToolBoxFontColor->SetItemBits( TBI_FONTCOLOR, mpToolBoxFontColor->GetItemBits( TBI_FONTCOLOR ) | TIB_DROPDOWNONLY );
556     mpToolBoxFontColor->SetBackground(Wallpaper());
557     mpToolBoxFontColor->SetPaintTransparent(true);
558 
559     Link aLink = LINK(this, TextPropertyPanel, ToolBoxFontColorDropHdl);
560     mpToolBoxFontColor->SetDropdownClickHdl ( aLink );
561     mpToolBoxFontColor->SetSelectHdl ( aLink );
562 
563 }
564 void TextPropertyPanel::InitToolBoxScript()
565 {
566     Size aTbxSize( mpToolBoxScriptSw->CalcWindowSizePixel() );
567     mpToolBoxScriptSw->SetOutputSizePixel( aTbxSize );
568     mpToolBoxScriptSw->SetBackground(Wallpaper());
569     mpToolBoxScriptSw->SetPaintTransparent(true);
570 
571     Link aLink = LINK(this, TextPropertyPanel, ToolBoxSwScriptSelectHdl);
572     mpToolBoxScriptSw->SetSelectHdl ( aLink );
573 
574     aTbxSize = mpToolBoxScript->CalcWindowSizePixel() ;
575     mpToolBoxScript->SetOutputSizePixel( aTbxSize );
576     mpToolBoxScript->SetBackground(Wallpaper());
577     mpToolBoxScript->SetPaintTransparent(true);
578 
579     aLink = LINK(this, TextPropertyPanel, ToolBoxScriptSelectHdl);
580     mpToolBoxScript->SetSelectHdl ( aLink );
581 }
582 void TextPropertyPanel::InitToolBoxSpacing()
583 {
584     Size aTbxSize( mpToolBoxSpacing->CalcWindowSizePixel() );
585     mpToolBoxSpacing->SetOutputSizePixel( aTbxSize );
586     mpToolBoxSpacing->SetItemBits( TBI_SPACING, mpToolBoxSpacing->GetItemBits( TBI_SPACING ) | TIB_DROPDOWNONLY );
587     mpToolBoxSpacing->SetBackground(Wallpaper());
588     mpToolBoxSpacing->SetPaintTransparent(true);
589 
590     Link aLink = LINK(this, TextPropertyPanel, SpacingClickHdl);
591     mpToolBoxSpacing->SetDropdownClickHdl ( aLink );
592     mpToolBoxSpacing->SetSelectHdl( aLink );
593 }
594 void TextPropertyPanel::InitToolBoxHighlight()
595 {
596     Size aTbxSize( mpToolBoxHighlight->CalcWindowSizePixel() );
597     mpToolBoxHighlight->SetOutputSizePixel( aTbxSize );
598     mpToolBoxHighlight->SetItemBits( TBI_HIGHLIGHT, mpToolBoxHighlight->GetItemBits( TBI_HIGHLIGHT ) | TIB_DROPDOWNONLY );
599     mpToolBoxHighlight->SetBackground(Wallpaper());
600     mpToolBoxHighlight->SetPaintTransparent(true);
601 
602     Link aLink = LINK(this, TextPropertyPanel, ToolBoxHighlightDropHdl);
603     mpToolBoxHighlight->SetDropdownClickHdl ( aLink );
604     mpToolBoxHighlight->SetSelectHdl( aLink );
605 }
606 
607 
608 
609 
610 void TextPropertyPanel::SetupIcons (void)
611 {
612     if (Theme::GetBoolean(Theme::Bool_UseSymphonyIcons))
613     {
614         mpToolBoxIncDec->SetItemImage(TBI_INCREASE, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgIncreaseHigh : maImgIncrease);
615         mpToolBoxIncDec->SetItemImage(TBI_DECREASE, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgDecreaseHigh : maImgDecrease);
616         mpToolBoxFont->SetItemImage(TBI_BOLD, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgBoldHigh : maImgBold);
617         mpToolBoxFont->SetItemImage(TBI_ITALIC, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgItalicHigh : maImgItalic);
618         mpToolBoxFont->SetItemImage(TBI_UNDERLINE, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgUnderlineHigh : maImgUnderline);
619         mpToolBoxFont->SetItemImage(TBI_STRIKEOUT, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgStrikeHigh : maImgStrike);
620         mpToolBoxFont->SetItemImage(TBI_SHADOWED, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgShadowHigh : maImgShadow);
621 
622         mpToolBoxFontColor->SetItemImage(TBI_FONTCOLOR, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgFontColorHigh : maImgFontColor);
623         //for sw
624         mpToolBoxScriptSw->SetItemImage(TBI_SUPER_SW, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgSupScriptHigh : maImgSupScript);
625         mpToolBoxScriptSw->SetItemImage(TBI_SUB_SW, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgSubScriptHigh : maImgSubScript);
626         //for sc and sd
627         mpToolBoxScript->SetItemImage(TBI_SUPER, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgSupScriptHigh : maImgSupScript);
628         mpToolBoxScript->SetItemImage(TBI_SUB, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgSubScriptHigh : maImgSubScript);
629         mpToolBoxSpacing->SetItemImage(TBI_SPACING,  maImgNormalIcon);
630         mpToolBoxHighlight->SetItemImage(TBI_HIGHLIGHT, Application::GetSettings().GetStyleSettings().GetHighContrastMode()? maImgHighlightHigh : maImgHighlight);
631     }
632     else
633     {
634         mpToolBoxIncDec->SetItemImage(TBI_INCREASE, GetIcon(A2S(".uno:Grow")));
635         mpToolBoxIncDec->SetItemImage(TBI_DECREASE, GetIcon(A2S(".uno:Shrink")));
636         mpToolBoxFont->SetItemImage(TBI_BOLD, GetIcon(A2S(".uno:Bold")));
637         mpToolBoxFont->SetItemImage(TBI_ITALIC, GetIcon(A2S(".uno:Italic")));
638         mpToolBoxFont->SetItemImage(TBI_UNDERLINE, GetIcon(A2S(".uno:Underline")));
639         mpToolBoxFont->SetItemImage(TBI_STRIKEOUT, GetIcon(A2S(".uno:Strikeout")));
640         mpToolBoxFont->SetItemImage(TBI_SHADOWED, GetIcon(A2S(".uno:Shadowed")));
641 
642         mpToolBoxFontColor->SetItemImage(TBI_FONTCOLOR, GetIcon(A2S(".uno:FontColor")));
643         //for sw
644         mpToolBoxScriptSw->SetItemImage(TBI_SUPER_SW, GetIcon(A2S(".uno:SuperScript")));
645         mpToolBoxScriptSw->SetItemImage(TBI_SUB_SW, GetIcon(A2S(".uno:SubScript")));
646         //for sc and sd
647         mpToolBoxScript->SetItemImage(TBI_SUPER, GetIcon(A2S(".uno:SuperScript")));
648         mpToolBoxScript->SetItemImage(TBI_SUB, GetIcon(A2S(".uno:SubScript")));
649         mpToolBoxSpacing->SetItemImage(TBI_SPACING,  GetIcon(A2S(".uno:FontworkCharacterSpacingFloater")));
650         mpToolBoxHighlight->SetItemImage(TBI_HIGHLIGHT, GetIcon(A2S(".uno:BackColor")));
651     }
652 }
653 
654 
655 
656 
657 IMPL_LINK( TextPropertyPanel, FontSelHdl, FontNameBox*, pBox )
658 {
659     if ( !pBox->IsTravelSelect() )
660     {
661         if( SfxViewShell::Current() )
662         {
663             Window* pShellWnd = SfxViewShell::Current()->GetWindow();
664 
665             if ( pShellWnd )
666                 pShellWnd->GrabFocus();
667         }
668     }
669     return 0;
670 }
671 //add end
672 IMPL_LINK( TextPropertyPanel, FontSizeModifyHdl, FontSizeBox*, pSizeBox )
673 {
674     if (pSizeBox == &maFontSizeBox)
675     {
676         long nSize = pSizeBox->GetValue();
677         mbFocusOnFontSizeCtrl = true;
678 
679         float fSize = (float)nSize / 10;
680         SfxMapUnit eUnit = maFontSizeControl.GetCoreMetric();
681         SvxFontHeightItem aItem( CalcToUnit( fSize, eUnit ), 100, SID_ATTR_CHAR_FONTHEIGHT ) ;
682 
683         mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_FONTHEIGHT, SFX_CALLMODE_RECORD, &aItem, 0L );
684         mpBindings->Invalidate(SID_ATTR_CHAR_FONTHEIGHT,true,false);
685     }
686     return 0;
687 }
688 //add
689 IMPL_LINK( TextPropertyPanel, FontSizeSelHdl, FontSizeBox*, pSizeBox )
690 {
691     if ( !pSizeBox->IsTravelSelect() )
692     {
693         if( SfxViewShell::Current() )
694         {
695             Window* pShellWnd = SfxViewShell::Current()->GetWindow();
696 
697             if ( pShellWnd )
698                 pShellWnd->GrabFocus();
699         }
700     }
701 
702     return 0;
703 }
704 //add end
705 IMPL_LINK(TextPropertyPanel, FontSizeLoseFocus, FontSizeBox*, pSizeBox)
706 {
707     if(pSizeBox == &maFontSizeBox)
708     {
709         mbFocusOnFontSizeCtrl = false;
710     }
711     return 0;
712 }
713 
714 IMPL_LINK(TextPropertyPanel, ToolboxFontSelectHandler, ToolBox*, pToolBox)
715 {
716     const sal_uInt16 nId = pToolBox->GetCurItemId();
717 
718     //Bold
719     if(nId == TBI_BOLD)
720     {
721         EndTracking();
722         if(meWeight != WEIGHT_BOLD)
723             meWeight = WEIGHT_BOLD;
724         else
725             meWeight = WEIGHT_NORMAL;
726         SvxWeightItem aWeightItem(meWeight, SID_ATTR_CHAR_WEIGHT);
727         mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_WEIGHT, SFX_CALLMODE_RECORD, &aWeightItem, 0L);
728         UpdateFontBold();
729     }
730     //Italic
731     else if(nId == TBI_ITALIC)
732     {
733         EndTracking();
734         if(meItalic != ITALIC_NORMAL)
735             meItalic = ITALIC_NORMAL;
736         else
737             meItalic = ITALIC_NONE;
738         SvxPostureItem aPostureItem(meItalic, SID_ATTR_CHAR_POSTURE);
739         mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_POSTURE, SFX_CALLMODE_RECORD, &aPostureItem, 0L);
740         UpdateFontItalic();
741     }
742     //underline
743     else if(nId == TBI_UNDERLINE)
744     {
745         EndTracking();
746         //add , keep underline's color
747         if(meUnderline == UNDERLINE_NONE)
748         {
749             meUnderline = GetDefaultUnderline();
750             //<<modify
751             //SvxTextLineItem aLineItem(meUnderline, SID_ATTR_CHAR_UNDERLINE);
752             SvxUnderlineItem aLineItem(meUnderline, SID_ATTR_CHAR_UNDERLINE);
753             //modify end>>
754             aLineItem.SetColor(meUnderlineColor);
755             mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_UNDERLINE, SFX_CALLMODE_RECORD, &aLineItem, 0L);
756         }
757         else
758         {
759             meUnderline = UNDERLINE_NONE;
760             //<<modify
761             //SvxTextLineItem aLineItem(meUnderline, SID_ATTR_CHAR_UNDERLINE);
762             SvxUnderlineItem aLineItem(meUnderline, SID_ATTR_CHAR_UNDERLINE);
763             //modify end>>
764             mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_UNDERLINE, SFX_CALLMODE_RECORD, &aLineItem, 0L);
765         }
766         UpdateFontUnderline();
767         //add end
768     }
769     //strike out
770     else if(nId == TBI_STRIKEOUT)
771     {
772         EndTracking();
773         if(meStrike !=  STRIKEOUT_NONE && meStrike != STRIKEOUT_DONTKNOW)
774             meStrike = STRIKEOUT_NONE;
775         else
776             meStrike = STRIKEOUT_SINGLE;
777         SvxCrossedOutItem aStrikeItem(meStrike,SID_ATTR_CHAR_STRIKEOUT);
778         mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_STRIKEOUT, SFX_CALLMODE_RECORD, &aStrikeItem, 0L);
779         UpdateFontStrikeOut();
780     }
781     //shadowed
782     else if(nId == TBI_SHADOWED)
783     {
784         EndTracking();
785         mbShadow = !mbShadow;
786         SvxShadowedItem aShadowItem(mbShadow, SID_ATTR_CHAR_SHADOWED);
787         mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_SHADOWED, SFX_CALLMODE_RECORD, &aShadowItem, 0L);
788         UpdateFontShadowed();
789     }
790     return 0;
791 }
792 
793 
794 
795 
796 IMPL_LINK(TextPropertyPanel, ToolboxIncDecSelectHdl, ToolBox*, pToolBox)
797 {
798     const sal_uInt16 nId = pToolBox->GetCurItemId();
799 
800     // font size +/- enhancement in sd
801     switch (maContext.GetCombinedContext())
802     {
803         case CombinedEnumContext(Application_Draw, Context_DrawText):
804         case CombinedEnumContext(Application_Draw, Context_Text):
805         case CombinedEnumContext(Application_Draw, Context_Table):
806         case CombinedEnumContext(Application_Draw, Context_OutlineText):
807         case CombinedEnumContext(Application_Draw, Context_Draw):
808         case CombinedEnumContext(Application_Draw, Context_TextObject):
809         case CombinedEnumContext(Application_Draw, Context_Graphic):
810         case CombinedEnumContext(Application_Impress, Context_DrawText):
811         case CombinedEnumContext(Application_Impress, Context_Text):
812         case CombinedEnumContext(Application_Impress, Context_Table):
813         case CombinedEnumContext(Application_Impress, Context_OutlineText):
814         case CombinedEnumContext(Application_Impress, Context_Draw):
815         case CombinedEnumContext(Application_Impress, Context_TextObject):
816         case CombinedEnumContext(Application_Impress, Context_Graphic):
817             if(nId == TBI_INCREASE)
818             {
819                 EndTracking();
820                 SfxVoidItem aItem(SID_GROW_FONT_SIZE);
821                 mpBindings->GetDispatcher()->Execute( SID_GROW_FONT_SIZE, SFX_CALLMODE_RECORD, &aItem, 0L );
822             }
823             else if(nId == TBI_DECREASE)
824             {
825                 EndTracking();
826                 SfxVoidItem aItem(SID_SHRINK_FONT_SIZE);
827                 mpBindings->GetDispatcher()->Execute( SID_SHRINK_FONT_SIZE, SFX_CALLMODE_RECORD, &aItem, 0L );
828             }
829             break;
830 
831         default:
832             if(nId == TBI_INCREASE)
833             {
834                 EndTracking();
835                 mbFocusOnFontSizeCtrl = false;
836                 sal_Int64 iValue = maFontSizeBox.GetValue();
837                 int iPos = maFontSizeBox.GetValuePos(iValue, FUNIT_NONE);
838                 long nSize = iValue;
839                 if(iPos != LISTBOX_ENTRY_NOTFOUND)
840                     nSize = maFontSizeBox.GetValue(iPos+1 , FUNIT_NONE);
841                 else if(iValue >= 100 && iValue < 105)
842                     nSize = 105;
843                 else if(iValue >= 105 && iValue < 110)
844                     nSize = 110;
845                 else if(iValue < 960)
846                 {
847                     nSize = (nSize / 10) * 10 + 10;
848                     while(maFontSizeBox.GetValuePos(nSize, FUNIT_NONE) == LISTBOX_ENTRY_NOTFOUND)
849                         nSize += 10;
850                 }
851                 else
852                 {
853                     nSize = iValue;
854                 }
855 
856                 float fSize = (float)nSize / 10;
857 
858                 SfxMapUnit eUnit = maFontSizeControl.GetCoreMetric();
859                 SvxFontHeightItem aItem( CalcToUnit( fSize, eUnit ), 100, SID_ATTR_CHAR_FONTHEIGHT ) ;
860 
861                 mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_FONTHEIGHT, SFX_CALLMODE_RECORD, &aItem, 0L );
862                 mpBindings->Invalidate(SID_ATTR_CHAR_FONTHEIGHT,true,false);
863                 //add  , update ASAP
864                 maFontSizeBox.SetValue( nSize );
865                 if(nSize >= 960)
866                 {
867                     mpToolBoxIncDec->EnableItem(TBI_INCREASE,false);
868                     mpToolBoxIncDec->EnableItem(TBI_DECREASE,true);
869                 }
870                 else if(nSize <= 60)
871                 {
872                     mpToolBoxIncDec->EnableItem(TBI_INCREASE,true);
873                     mpToolBoxIncDec->EnableItem(TBI_DECREASE,false);
874                 }
875                 else
876                 {
877                     mpToolBoxIncDec->EnableItem(TBI_INCREASE,true);
878                     mpToolBoxIncDec->EnableItem(TBI_DECREASE,true);
879                 }
880                 //add end
881             }
882             else if(nId == TBI_DECREASE)
883             {
884                 EndTracking();
885                 mbFocusOnFontSizeCtrl = false;
886                 sal_Int64 iValue = maFontSizeBox.GetValue();
887                 int iPos = maFontSizeBox.GetValuePos(iValue, FUNIT_NONE);
888                 long nSize = iValue;
889                 if(iPos != LISTBOX_ENTRY_NOTFOUND)
890                     nSize = maFontSizeBox.GetValue(iPos-1 , FUNIT_NONE);
891                 else if(iValue > 100 && iValue <= 105)
892                     nSize = 100;
893                 else if(iValue > 105 && iValue <= 110)
894                     nSize = 105;
895                 else if(iValue > 960)
896                 {
897                     nSize = 960;
898                 }
899                 else if(iValue > 60)
900                 {
901                     nSize = (nSize / 10) * 10 ;
902                     while(maFontSizeBox.GetValuePos(nSize, FUNIT_NONE) == LISTBOX_ENTRY_NOTFOUND)
903                         nSize -= 10;
904                 }
905                 else
906                 {
907                     nSize = iValue;
908                 }
909 
910                 float fSize = (float)nSize / 10;
911 
912                 SfxMapUnit eUnit = maFontSizeControl.GetCoreMetric();
913                 SvxFontHeightItem aItem( CalcToUnit( fSize, eUnit ), 100, SID_ATTR_CHAR_FONTHEIGHT ) ;
914 
915                 mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_FONTHEIGHT, SFX_CALLMODE_RECORD, &aItem, 0L );
916                 mpBindings->Invalidate(SID_ATTR_CHAR_FONTHEIGHT,true,false);
917                 //add
918                 maFontSizeBox.SetValue( nSize );
919                 if(nSize >= 960)
920                 {
921                     mpToolBoxIncDec->EnableItem(TBI_INCREASE,false);
922                     mpToolBoxIncDec->EnableItem(TBI_DECREASE,true);
923                 }
924                 else if(nSize <= 60)
925                 {
926                     mpToolBoxIncDec->EnableItem(TBI_INCREASE,true);
927                     mpToolBoxIncDec->EnableItem(TBI_DECREASE,false);
928                 }
929                 else
930                 {
931                     mpToolBoxIncDec->EnableItem(TBI_INCREASE,true);
932                     mpToolBoxIncDec->EnableItem(TBI_DECREASE,true);
933                 }
934                 //add end
935             }
936     }
937     return 0;
938 }
939 
940 
941 
942 
943 IMPL_LINK(TextPropertyPanel, ToolBoxUnderlineClickHdl, ToolBox*, pToolBox)
944 {
945     const sal_uInt16 nId = pToolBox->GetCurItemId();
946     if(nId == TBI_UNDERLINE)
947     {
948         pToolBox->SetItemDown( nId, true );
949 
950         /**AF
951         SvxTextUnderlinePage* pUnderlinePage = GetUnderlinePage();
952         Size aFloatSz = pUnderlinePage->GetOutputSizePixel();
953         GetUnderlineFloatWin()->SetSizePixel( aFloatSz );
954 
955         Point aPos = mpToolBoxFont->GetPosPixel();
956         aPos = OutputToScreenPixel( aPos );
957         Size aSize = mpToolBoxFont->GetSizePixel();
958         Rectangle aRect( aPos, aSize );
959 
960         GetUnderlineFloatWin()->StartPopupMode( aRect, FLOATWIN_POPUPMODE_NOFOCUSCLOSE|FLOATWIN_POPUPMODE_DOWN );
961         GetUnderlineFloatWin()->SetPopupModeFlags(GetUnderlineFloatWin()->GetPopupModeFlags() | FLOATWIN_POPUPMODE_NOAPPFOCUSCLOSE );
962         pUnderlinePage->SetUnderlineSelect(meUnderline);
963         */
964     }
965     return 0;
966 }
967 
968 
969 
970 
971 IMPL_LINK(TextPropertyPanel, ToolBoxFontColorDropHdl,ToolBox*, pToolBox)
972 {
973     const sal_uInt16 nId = pToolBox->GetCurItemId();
974     if(nId == TBI_FONTCOLOR)
975     {
976         meColorType = FONT_COLOR;
977 
978         pToolBox->SetItemDown( nId, true );
979 
980         /*AF
981         SvxTextFontColorPage* pFontColorPage = GetFontColorPage();
982 
983         Size aFloatSz = pFontColorPage->GetOutputSizePixel();
984         GetFontColorFloatWin()->SetSizePixel( aFloatSz );
985 
986         Point aPos = mpToolBoxFontColor->GetPosPixel();
987         aPos = OutputToScreenPixel( aPos );
988         Size aSize = mpToolBoxFontColor->GetSizePixel();
989         Rectangle aRect( aPos, aSize );
990 
991         GetFontColorFloatWin()->StartPopupMode( aRect, FLOATWIN_POPUPMODE_NOFOCUSCLOSE|FLOATWIN_POPUPMODE_DOWN );
992         GetFontColorFloatWin()->SetPopupModeFlags(GetFontColorFloatWin()->GetPopupModeFlags() | FLOATWIN_POPUPMODE_NOAPPFOCUSCLOSE );
993 
994         pFontColorPage->GetFocus();
995         pFontColorPage->SetCurColorSelect(maColor, mbColorAvailable);
996         */
997     }
998     return 0;
999 }
1000 
1001 
1002 
1003 
1004 IMPL_LINK(TextPropertyPanel, ToolBoxSwScriptSelectHdl, ToolBox*, pToolBox)
1005 {
1006     const sal_uInt16 nId = pToolBox->GetCurItemId();
1007     if( nId == TBI_SUPER_SW )
1008     {
1009         if(meEscape != SVX_ESCAPEMENT_SUPERSCRIPT)
1010         {
1011             meEscape = SVX_ESCAPEMENT_SUPERSCRIPT;
1012             SvxEscapementItem aSupItem(DFLT_ESC_SUPER, DFLT_ESC_PROP, SID_ATTR_CHAR_ESCAPEMENT);
1013             mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_ESCAPEMENT, SFX_CALLMODE_RECORD, &aSupItem, 0L );
1014         }
1015         else
1016         {
1017             meEscape = SVX_ESCAPEMENT_OFF;
1018             SvxEscapementItem aNoneItem(0, 100, SID_ATTR_CHAR_ESCAPEMENT);
1019             mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_ESCAPEMENT, SFX_CALLMODE_RECORD, &aNoneItem, 0L );
1020         }
1021     }
1022     else if(TBI_SUB_SW == nId)
1023     {
1024         if(meEscape != SVX_ESCAPEMENT_SUBSCRIPT)
1025         {
1026             meEscape = (SvxEscapement)SVX_ESCAPEMENT_SUBSCRIPT;
1027             SvxEscapementItem aSubItem(DFLT_ESC_SUB, DFLT_ESC_PROP, SID_ATTR_CHAR_ESCAPEMENT);
1028             mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_ESCAPEMENT, SFX_CALLMODE_RECORD, &aSubItem, 0L );
1029         }
1030         else
1031         {
1032             meEscape = SVX_ESCAPEMENT_OFF;
1033             SvxEscapementItem aNoneItem(0, 100, SID_ATTR_CHAR_ESCAPEMENT);
1034             mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_ESCAPEMENT, SFX_CALLMODE_RECORD, &aNoneItem, 0L );
1035         }
1036     }
1037     UpdateFontScript();
1038 
1039     return 0;
1040 }
1041 
1042 
1043 
1044 
1045 IMPL_LINK(TextPropertyPanel, ToolBoxScriptSelectHdl, ToolBox*, pToolBox)
1046 {
1047     const sal_uInt16 nId = pToolBox->GetCurItemId();
1048     if( nId == TBI_SUPER )
1049     {
1050         mbSuper = !mbSuper;
1051         SfxBoolItem aSupItem(SID_SET_SUPER_SCRIPT, mbSuper);
1052         mpBindings->GetDispatcher()->Execute( SID_SET_SUPER_SCRIPT, SFX_CALLMODE_RECORD, &aSupItem, 0L );
1053     }
1054     else if(TBI_SUB == nId)
1055     {
1056 
1057         mbSub = !mbSub;
1058         SfxBoolItem aSubItem(SID_SET_SUB_SCRIPT, mbSub );
1059         mpBindings->GetDispatcher()->Execute( SID_SET_SUB_SCRIPT, SFX_CALLMODE_RECORD, &aSubItem, 0L );
1060     }
1061     UpdateFontScript();
1062     return 0;
1063 }
1064 
1065 
1066 
1067 
1068 IMPL_LINK(TextPropertyPanel, ToolBoxHighlightDropHdl, ToolBox*, pToolBox)
1069 {
1070     const sal_uInt16 nId = pToolBox->GetCurItemId();
1071     if(nId == TBI_HIGHLIGHT)
1072     {
1073         meColorType = BACK_COLOR;
1074 
1075         pToolBox->SetItemDown( nId, true );
1076 
1077         /*AF
1078         SvxTextFontColorPage* pFontColorPage = GetFontColorPage();
1079 
1080         Size aFloatSz = pFontColorPage->GetOutputSizePixel();
1081         GetFontColorFloatWin()->SetSizePixel( aFloatSz );
1082 
1083         Point aPos = mpToolBoxHighlight->GetPosPixel();
1084         aPos = OutputToScreenPixel( aPos );
1085         Size aSize = mpToolBoxHighlight->GetSizePixel();
1086         Rectangle aRect( aPos, aSize );
1087 
1088         GetFontColorFloatWin()->StartPopupMode( aRect, FLOATWIN_POPUPMODE_NOFOCUSCLOSE|FLOATWIN_POPUPMODE_DOWN );
1089         GetFontColorFloatWin()->SetPopupModeFlags(GetFontColorFloatWin()->GetPopupModeFlags() | FLOATWIN_POPUPMODE_NOAPPFOCUSCLOSE );
1090 
1091         pFontColorPage->GetFocus();
1092         pFontColorPage->SetCurColorSelect(maBackColor,
1093         mbBackColorAvailable);
1094         */
1095     }
1096     return 0;
1097 }
1098 
1099 
1100 
1101 
1102 IMPL_LINK(TextPropertyPanel, SpacingClickHdl, ToolBox*, pToolBox)
1103 {
1104     const sal_uInt16 nId = pToolBox->GetCurItemId();
1105     if(nId == TBI_SPACING)
1106     {
1107         pToolBox->SetItemDown( nId, true );
1108 
1109         /*AF
1110         SvxTextSpacingPage* pSpacingPage = GetSpacingPage();
1111         pSpacingPage->SetControlState(mbKernLBAvailable,mbKernAvailable,mlKerning);
1112 
1113         Size aFloatSz = pSpacingPage->GetOutputSizePixel();
1114         GetSpacingFloatWin()->SetSizePixel( aFloatSz );
1115 
1116         Point aPos = mpToolBoxSpacing->GetPosPixel();
1117         aPos = OutputToScreenPixel( aPos );
1118         Size aSize = mpToolBoxSpacing->GetSizePixel();
1119         Rectangle aRect( aPos, aSize );
1120 
1121         GetSpacingFloatWin()->StartPopupMode( aRect, FLOATWIN_POPUPMODE_NOFOCUSCLOSE|FLOATWIN_POPUPMODE_DOWN );
1122         GetSpacingFloatWin()->SetPopupModeFlags(GetSpacingFloatWin()->GetPopupModeFlags() | FLOATWIN_POPUPMODE_NOAPPFOCUSCLOSE );
1123         pSpacingPage->GetFocus();
1124         */
1125     }
1126     return 0;
1127 }
1128 
1129 
1130 
1131 
1132 IMPL_LINK( TextPropertyPanel, ImplPopupModeEndHdl, FloatingWindow*, EMPTYARG )
1133 {
1134     return 0;
1135 }
1136 
1137 
1138 
1139 
1140 IMPL_LINK( TextPropertyPanel, ImplSpacingPopupModeEndHdl, FloatingWindow*, EMPTYARG )
1141 {
1142     /*AF
1143     if(mpPageSpacing)
1144     {
1145         if( mpPageSpacing->GetLastCustomState() == SPACING_CLOSE_BY_CUS_EDIT)
1146         {
1147             SvtViewOptions aWinOpt( E_WINDOW, SIDEBAR_SPACING_GLOBAL_VALUE );
1148             ::com::sun::star::uno::Sequence < ::com::sun::star::beans::NamedValue > aSeq(1);
1149             aSeq[0].Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Spacing") );
1150             aSeq[0].Value <<= ::rtl::OUString( String::CreateFromInt32( mpPageSpacing->GetLastCustomValue() ));
1151             aWinOpt.SetUserData( aSeq );
1152 
1153         }
1154     }
1155     */
1156     return 0;
1157 }
1158 
1159 
1160 
1161 
1162 void TextPropertyPanel::NotifyItemUpdate (
1163     const sal_uInt16 nSID,
1164     const SfxItemState eState,
1165     const SfxPoolItem* pState)
1166 {
1167     switch(nSID)
1168     {
1169         case SID_ATTR_CHAR_FONT:
1170             if (  eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxFontItem) )
1171             {
1172                 mpFontNameBox->Enable();
1173                 const SvxFontItem* pFontItem = (const SvxFontItem*)pState;
1174                 mpFontNameBox->SetText( pFontItem->GetFamilyName() );
1175             }
1176             else
1177             {
1178                 mpFontNameBox->SetText( String() );
1179                 if (SFX_ITEM_DISABLED == eState)
1180                 {
1181                     mpFontNameBox->Disable();
1182                 }
1183             }
1184             break;
1185         case SID_ATTR_CHAR_FONTHEIGHT:
1186             if (  eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxFontHeightItem) )
1187             {
1188                 mpHeightItem = (SvxFontHeightItem*)pState;//const SvxFontHeightItem*
1189                 SfxMapUnit eUnit = maFontSizeControl.GetCoreMetric();
1190                 long iValue = (long)CalcToPoint( mpHeightItem->GetHeight(), eUnit, 10 );
1191                 mpToolBoxIncDec->Enable();
1192 
1193                 // font size +/- enhancement in sd
1194                 switch(maContext.GetCombinedContext())
1195                 {
1196                     case CombinedEnumContext(Application_Draw, Context_DrawText):
1197                     case CombinedEnumContext(Application_Draw, Context_Text):
1198                     case CombinedEnumContext(Application_Draw, Context_Table):
1199                     case CombinedEnumContext(Application_Draw, Context_OutlineText):
1200                     case CombinedEnumContext(Application_Draw, Context_Draw):
1201                     case CombinedEnumContext(Application_Draw, Context_TextObject):
1202                     case CombinedEnumContext(Application_Draw, Context_Graphic):
1203                     case CombinedEnumContext(Application_Impress, Context_DrawText):
1204                     case CombinedEnumContext(Application_Impress, Context_Text):
1205                     case CombinedEnumContext(Application_Impress, Context_Table):
1206                     case CombinedEnumContext(Application_Impress, Context_OutlineText):
1207                     case CombinedEnumContext(Application_Impress, Context_Draw):
1208                     case CombinedEnumContext(Application_Impress, Context_TextObject):
1209                     case CombinedEnumContext(Application_Impress, Context_Graphic):
1210                         break;
1211 
1212                     default:
1213                         if(iValue > 60 && iValue < 960 )
1214                         {
1215                             mpToolBoxIncDec->EnableItem(TBI_INCREASE,true);
1216                             mpToolBoxIncDec->EnableItem(TBI_DECREASE,true);
1217                         }
1218                         else if (iValue <= 60)
1219                         {
1220                             mpToolBoxIncDec->EnableItem(TBI_INCREASE,true);
1221                             mpToolBoxIncDec->EnableItem(TBI_DECREASE,false);
1222                         }
1223                         else if (iValue >= 960)
1224                         {
1225                             mpToolBoxIncDec->EnableItem(TBI_INCREASE,false);
1226                             mpToolBoxIncDec->EnableItem(TBI_DECREASE,true);
1227                         }
1228                 }
1229                 mpToolBoxIncDec->SetItemState(TBI_INCREASE, STATE_NOCHECK);
1230                 mpToolBoxIncDec->SetItemState(TBI_DECREASE, STATE_NOCHECK);
1231 
1232                 if( mbFocusOnFontSizeCtrl )
1233                     return;
1234 
1235                 maFontSizeBox.Enable( );
1236                 maFontSizeBox.SetValue( iValue );
1237                 maFontSizeBox.LoseFocus();
1238             }
1239             else
1240             {
1241                 mpHeightItem = NULL;
1242                 maFontSizeBox.SetText( String() );
1243                 //increase decrease diabled when multi-seletion have different font size
1244 
1245                 // font size +/- enhancement in sd
1246                 switch(maContext.GetCombinedContext())
1247                 {
1248                     case CombinedEnumContext(Application_Draw, Context_DrawText):
1249                     case CombinedEnumContext(Application_Draw, Context_Text):
1250                     case CombinedEnumContext(Application_Draw, Context_Table):
1251                     case CombinedEnumContext(Application_Draw, Context_OutlineText):
1252                     case CombinedEnumContext(Application_Draw, Context_Draw):
1253                     case CombinedEnumContext(Application_Draw, Context_TextObject):
1254                     case CombinedEnumContext(Application_Draw, Context_Graphic):
1255                     case CombinedEnumContext(Application_Impress, Context_DrawText):
1256                     case CombinedEnumContext(Application_Impress, Context_Text):
1257                     case CombinedEnumContext(Application_Impress, Context_Table):
1258                     case CombinedEnumContext(Application_Impress, Context_OutlineText):
1259                     case CombinedEnumContext(Application_Impress, Context_Draw):
1260                     case CombinedEnumContext(Application_Impress, Context_TextObject):
1261                     case CombinedEnumContext(Application_Impress, Context_Graphic):
1262                         break;
1263 
1264                     default:
1265                         mpToolBoxIncDec->Disable();
1266                 }
1267                 if ( eState <= SFX_ITEM_READONLY )
1268                 {
1269                     maFontSizeBox.Disable( );
1270                 }
1271             }
1272             break;
1273         case SID_ATTR_CHAR_WEIGHT:
1274             mbWeightAvailable = (eState >= SFX_ITEM_DONTCARE);
1275             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxWeightItem))
1276             {
1277                 const SvxWeightItem* pItem = (const SvxWeightItem*)pState;
1278                 meWeight = (FontWeight)pItem->GetValue();
1279                 TextStyleChanged();
1280             }
1281             else
1282             {
1283                 meWeight = WEIGHT_NORMAL;
1284                 TextStyleChanged();
1285             }
1286             break;
1287         case SID_ATTR_CHAR_POSTURE:
1288             mbPostureAvailable = (eState >= SFX_ITEM_DONTCARE);
1289             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxPostureItem))
1290             {
1291                 const SvxPostureItem* pItem = (const SvxPostureItem*)pState;
1292                 meItalic = (FontItalic)pItem->GetValue();
1293                 TextStyleChanged();
1294             }
1295             else
1296             {
1297                 meItalic = ITALIC_NONE;
1298                 TextStyleChanged();
1299             }
1300             break;
1301         case SID_ATTR_CHAR_UNDERLINE:
1302             if( eState >= SFX_ITEM_DEFAULT) //SvxUnderlineItem
1303             {
1304                 //<<delete
1305                 //if(pState->ISA(SvxTextLineItem))
1306                 //{
1307                 //  const SvxTextLineItem* pItem = (const SvxTextLineItem*)pState;
1308                 //  meUnderline = (FontUnderline)pItem->GetValue();
1309                 //   //add , need to record the underline's color, if not the color will turn to auto
1310                 //  meUnderlineColor = pItem->GetColor();
1311                 //  //add end
1312                 //}
1313                 //else
1314                 //delete end>>
1315                 if(pState->ISA(SvxUnderlineItem))
1316                 {
1317                     const SvxUnderlineItem* pItem = (const SvxUnderlineItem*)pState;
1318                     meUnderline = (FontUnderline)pItem->GetValue();
1319                     //add
1320                     meUnderlineColor = pItem->GetColor();
1321                     //add end
1322                 }
1323                 TextStyleChanged();
1324             }
1325             else
1326             {
1327                 meUnderline = UNDERLINE_NONE;
1328                 TextStyleChanged();
1329             }
1330             break;
1331         case SID_ATTR_CHAR_SHADOWED:
1332             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxShadowedItem))
1333             {
1334                 const SvxShadowedItem* pItem = (const SvxShadowedItem*)pState;
1335                 mbShadow = pItem->GetValue();
1336                 TextStyleChanged();
1337             }
1338             else
1339             {
1340                 mbShadow = false;
1341                 TextStyleChanged();
1342             }
1343             break;
1344         case SID_ATTR_CHAR_STRIKEOUT:
1345             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxCrossedOutItem))
1346             {
1347                 const SvxCrossedOutItem* pItem = (const SvxCrossedOutItem*)pState;
1348                 meStrike = (FontStrikeout)pItem->GetValue();
1349 
1350                 TextStyleChanged();
1351             }
1352             else
1353             {
1354                 meStrike = STRIKEOUT_NONE;
1355                 TextStyleChanged();
1356             }
1357             break;
1358         case SID_ATTR_CHAR_COLOR:
1359             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxColorItem))
1360             {
1361                 const SvxBrushItem* pItem =  (const SvxBrushItem*)pState;
1362                 maColor = pItem->GetColor();
1363                 mbColorAvailable = true;
1364                 mpFontColorUpdater->Update(maColor);
1365             }
1366             else
1367             {
1368                 mbColorAvailable = false;
1369                 maColor.SetColor(COL_AUTO);
1370                 mpFontColorUpdater->Update(maColor);
1371             }
1372             break;
1373         case SID_ATTR_BRUSH_CHAR:
1374             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxBrushItem))
1375             {
1376                 const SvxBrushItem* pItem =  (const SvxBrushItem*)pState;
1377                 maBackColor = pItem->GetColor();
1378                 mbBackColorAvailable = true;
1379                 mpHighlightUpdater->Update(maBackColor);
1380             }
1381             else
1382             {
1383                 mbBackColorAvailable = false;
1384                 maBackColor.SetColor(COL_AUTO);
1385                 mpHighlightUpdater->Update(maBackColor);
1386             }
1387             break;
1388         case SID_ATTR_CHAR_ESCAPEMENT:
1389             if( eState == SFX_ITEM_AVAILABLE)
1390             {
1391                 if( pState->ISA(SvxEscapementItem))
1392                 {
1393                     const SvxEscapementItem* pItem = (const SvxEscapementItem *)pState;
1394                     short nEsc = pItem->GetEsc();
1395                     if(nEsc == 0)
1396                         meEscape = SVX_ESCAPEMENT_OFF;
1397                     else if(nEsc > 0)
1398                         meEscape = SVX_ESCAPEMENT_SUPERSCRIPT;
1399                     else
1400                         meEscape = SVX_ESCAPEMENT_SUBSCRIPT;
1401                 }
1402                 else
1403                 {
1404                     meEscape = SVX_ESCAPEMENT_OFF;
1405                 }
1406                 TextStyleChanged();
1407             }
1408             else if(eState == SFX_ITEM_DISABLED)
1409             {
1410                 mpToolBoxScriptSw->EnableItem(TBI_SUPER,false);
1411                 mpToolBoxScriptSw->EnableItem(TBI_SUB,false);
1412             }
1413             else
1414             {
1415                 meEscape = SVX_ESCAPEMENT_OFF;
1416                 TextStyleChanged();
1417             }
1418             break;
1419         case SID_SET_SUB_SCRIPT:
1420             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SfxBoolItem))
1421             {
1422                 const SfxBoolItem* pItem = (const SfxBoolItem*)pState;
1423                 mbSub = pItem->GetValue();
1424                 TextStyleChanged();
1425             }
1426             else
1427             {
1428                 mbSub = false;
1429                 TextStyleChanged();
1430             }
1431             break;
1432         case SID_SET_SUPER_SCRIPT:
1433             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SfxBoolItem))
1434             {
1435                 const SfxBoolItem* pItem = (const SfxBoolItem*)pState;
1436                 mbSuper = pItem->GetValue();
1437                 TextStyleChanged();
1438             }
1439             else
1440             {
1441                 mbSuper = false;
1442                 TextStyleChanged();
1443             }
1444             break;
1445         case SID_ATTR_CHAR_KERNING:
1446             if ( SFX_ITEM_AVAILABLE == eState )
1447             {
1448                 mbKernLBAvailable = true;
1449 
1450                 if(pState->ISA(SvxKerningItem))
1451                 {
1452                     const SvxKerningItem* pKerningItem  = (const SvxKerningItem*)pState;
1453                     mlKerning = (long)pKerningItem->GetValue();
1454                     mbKernAvailable = true;
1455                 }
1456                 else
1457                 {
1458                     mlKerning = 0;
1459                     mbKernAvailable =false;
1460                 }
1461             }
1462             else if (SFX_ITEM_DISABLED == eState)
1463             {
1464                 mbKernLBAvailable = false;
1465                 mbKernAvailable = false;
1466                 mlKerning = 0;
1467             }
1468             else
1469             {
1470                 mbKernLBAvailable = true;
1471                 mbKernAvailable = false;
1472                 mlKerning = 0;
1473             }
1474             break;
1475 
1476             // font size +/- enhancement in sd
1477         case SID_SHRINK_FONT_SIZE:
1478         case SID_GROW_FONT_SIZE:
1479                 switch(maContext.GetCombinedContext())
1480                 {
1481                     case CombinedEnumContext(Application_Draw, Context_DrawText):
1482                     case CombinedEnumContext(Application_Draw, Context_Text):
1483                     case CombinedEnumContext(Application_Draw, Context_Table):
1484                     case CombinedEnumContext(Application_Draw, Context_OutlineText):
1485                     case CombinedEnumContext(Application_Draw, Context_Draw):
1486                     case CombinedEnumContext(Application_Draw, Context_TextObject):
1487                     case CombinedEnumContext(Application_Draw, Context_Graphic):
1488                     case CombinedEnumContext(Application_Impress, Context_DrawText):
1489                     case CombinedEnumContext(Application_Impress, Context_Text):
1490                     case CombinedEnumContext(Application_Impress, Context_Table):
1491                     case CombinedEnumContext(Application_Impress, Context_OutlineText):
1492                     case CombinedEnumContext(Application_Impress, Context_Draw):
1493                     case CombinedEnumContext(Application_Impress, Context_TextObject):
1494                     case CombinedEnumContext(Application_Impress, Context_Graphic):
1495                         if(eState == SFX_ITEM_DISABLED)
1496                         {
1497                             mpToolBoxIncDec->Disable();
1498                         }
1499                         else
1500                         {
1501                             mpToolBoxIncDec->Enable();
1502                         }
1503                     break;
1504                 }
1505                 break;
1506     }
1507 }
1508 
1509 
1510 
1511 
1512 void TextPropertyPanel::TextStyleChanged()
1513 {
1514     if( !mbWeightAvailable )
1515         mpToolBoxFont->EnableItem(TBI_BOLD,false);
1516     else
1517         mpToolBoxFont->EnableItem(TBI_BOLD,true);
1518 
1519     if(!mbPostureAvailable )
1520         mpToolBoxFont->EnableItem(TBI_ITALIC,false);
1521     else
1522         mpToolBoxFont->EnableItem(TBI_ITALIC,true);
1523 
1524     UpdateFontBold();
1525     UpdateFontItalic();
1526     UpdateFontUnderline();
1527     UpdateFontStrikeOut();
1528     UpdateFontShadowed();
1529     UpdateFontScript();
1530 }
1531 
1532 
1533 
1534 
1535 void TextPropertyPanel::UpdateFontBold()
1536 {
1537     if( meWeight == WEIGHT_BOLD )
1538     {
1539         mpToolBoxFont->SetItemState(TBI_BOLD,   STATE_CHECK);
1540     }
1541     else
1542     {
1543         mpToolBoxFont->SetItemState(TBI_BOLD,   STATE_NOCHECK);
1544     }
1545 }
1546 void TextPropertyPanel::UpdateFontItalic()
1547 {
1548     if(meItalic == ITALIC_NORMAL)
1549     {
1550         mpToolBoxFont->SetItemState(TBI_ITALIC, STATE_CHECK);
1551     }
1552     else
1553     {
1554         mpToolBoxFont->SetItemState(TBI_ITALIC, STATE_NOCHECK);
1555     }
1556 }
1557 void TextPropertyPanel::UpdateFontUnderline()
1558 {
1559     if(meUnderline == UNDERLINE_NONE)
1560     {
1561         mpToolBoxFont->SetItemState(TBI_UNDERLINE,  STATE_NOCHECK);
1562     }
1563     else
1564     {
1565         mpToolBoxFont->SetItemState(TBI_UNDERLINE,  STATE_CHECK);
1566     }
1567 }
1568 void TextPropertyPanel::UpdateFontStrikeOut()
1569 {
1570     if(meStrike !=  STRIKEOUT_NONE && meStrike != STRIKEOUT_DONTKNOW)
1571     {
1572         mpToolBoxFont->SetItemState(TBI_STRIKEOUT,  STATE_CHECK);
1573     }
1574     else
1575     {
1576         mpToolBoxFont->SetItemState(TBI_STRIKEOUT,  STATE_NOCHECK);
1577     }
1578 }
1579 void TextPropertyPanel::UpdateFontShadowed()
1580 {
1581     if(mbShadow)
1582     {
1583         mpToolBoxFont->SetItemState(TBI_SHADOWED,   STATE_CHECK);
1584     }
1585     else
1586     {
1587         mpToolBoxFont->SetItemState(TBI_SHADOWED,   STATE_NOCHECK);
1588     }
1589 }
1590 void  TextPropertyPanel::UpdateFontScript()
1591 {
1592     //script for sw
1593     mpToolBoxScriptSw->EnableItem(TBI_SUPER,true);
1594     mpToolBoxScriptSw->EnableItem(TBI_SUB,true);
1595     if(meEscape == SVX_ESCAPEMENT_SUPERSCRIPT)
1596     {
1597         mpToolBoxScriptSw->SetItemState(TBI_SUPER_SW,   STATE_CHECK);
1598         mpToolBoxScriptSw->SetItemState(TBI_SUB_SW, STATE_NOCHECK);
1599     }
1600     else if(meEscape == SVX_ESCAPEMENT_SUBSCRIPT)
1601     {
1602         mpToolBoxScriptSw->SetItemState(TBI_SUPER_SW,   STATE_NOCHECK);
1603         mpToolBoxScriptSw->SetItemState(TBI_SUB_SW, STATE_CHECK);
1604     }
1605     else
1606     {
1607         mpToolBoxScriptSw->SetItemState(TBI_SUPER_SW,   STATE_NOCHECK);
1608         mpToolBoxScriptSw->SetItemState(TBI_SUB_SW, STATE_NOCHECK);
1609     }
1610 
1611     //script for sc sd
1612     mpToolBoxScript->EnableItem(TBI_SUPER,true);
1613     mpToolBoxScript->EnableItem(TBI_SUB,true);
1614     if(mbSuper)
1615     {
1616         mpToolBoxScript->SetItemState(TBI_SUPER,    STATE_CHECK);
1617         mpToolBoxScript->SetItemState(TBI_SUB,  STATE_NOCHECK);
1618     }
1619     else if(mbSub)
1620     {
1621         mpToolBoxScript->SetItemState(TBI_SUPER,    STATE_NOCHECK);
1622         mpToolBoxScript->SetItemState(TBI_SUB,  STATE_CHECK);
1623     }
1624     else
1625     {
1626         mpToolBoxScript->SetItemState(TBI_SUPER,    STATE_NOCHECK);
1627         mpToolBoxScript->SetItemState(TBI_SUB,  STATE_NOCHECK);
1628     }
1629 }
1630 
1631 /*
1632 USHORT TextPropertyPanel::GetCurrColorType()
1633 {
1634     return meColorType;
1635 }
1636 long TextPropertyPanel::GetSelFontSize()
1637 {
1638     long nH = 240;
1639     SfxMapUnit eUnit = maSpacingControl.GetCoreMetric();
1640     if (mpHeightItem)
1641         nH = LogicToLogic(  mpHeightItem->GetHeight(), (MapUnit)eUnit, MAP_TWIP );
1642     return nH;
1643 }
1644 SfxPropertyPageController TextPropertyPanel::GetSpaceController()
1645 {
1646     return maSpacingControl;
1647 }
1648 
1649 //add
1650 Color& TextPropertyPanel::GetUnderlineColor()
1651 {
1652     return meUnderlineColor;
1653 }
1654 //add end
1655 void TextPropertyPanel::SetBackColor(Color aCol)
1656 {
1657     maBackColor = aCol;
1658 }
1659 void TextPropertyPanel::SetColor(Color aCol)
1660 {
1661     maColor = aCol;
1662 }
1663 void TextPropertyPanel::SetUnderline(FontUnderline  eUnderline)
1664 {
1665     meUnderline = eUnderline;
1666 }
1667 void TextPropertyPanel::SetSpacing(long nKern)
1668 {
1669     mlKerning = nKern;
1670 }
1671 */
1672 } } // end of namespace svx::sidebar
1673