LCOV - code coverage report
Current view: top level - usr/local/src/libreoffice/svx/source/sidebar/text - TextPropertyPanel.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 1 557 0.2 %
Date: 2013-07-09 Functions: 2 45 4.4 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * This file is part of the LibreOffice project.
       3             :  *
       4             :  * This Source Code Form is subject to the terms of the Mozilla Public
       5             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       6             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       7             :  *
       8             :  * This file incorporates work covered by the following license notice:
       9             :  *
      10             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      11             :  *   contributor license agreements. See the NOTICE file distributed
      12             :  *   with this work for additional information regarding copyright
      13             :  *   ownership. The ASF licenses this file to you under the Apache
      14             :  *   License, Version 2.0 (the "License"); you may not use this file
      15             :  *   except in compliance with the License. You may obtain a copy of
      16             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      17             :  */
      18             : 
      19             : #include "TextPropertyPanel.hrc"
      20             : #include "TextPropertyPanel.hxx"
      21             : #include "SvxSBFontNameBox.hxx"
      22             : 
      23             : #include "svx/dialmgr.hxx"
      24             : 
      25             : #include <editeng/brushitem.hxx>
      26             : #include <editeng/colritem.hxx>
      27             : #include <editeng/crossedoutitem.hxx>
      28             : #include <editeng/escapementitem.hxx>
      29             : #include <editeng/flstitem.hxx>
      30             : #include <editeng/fontitem.hxx>
      31             : #include <editeng/kernitem.hxx>
      32             : #include <editeng/postitem.hxx>
      33             : #include <editeng/shdditem.hxx>
      34             : #include <editeng/udlnitem.hxx>
      35             : #include <editeng/wghtitem.hxx>
      36             : #include <rtl/ref.hxx>
      37             : #include <sfx2/dispatch.hxx>
      38             : #include <sfx2/objsh.hxx>
      39             : #include <sfx2/viewsh.hxx>
      40             : #include <sfx2/sidebar/ResourceDefinitions.hrc>
      41             : #include <sfx2/sidebar/ControlFactory.hxx>
      42             : #include <sfx2/sidebar/ControllerFactory.hxx>
      43             : #include <sfx2/sidebar/Theme.hxx>
      44             : #include <sfx2/sidebar/SidebarToolBox.hxx>
      45             : #include "sfx2/imagemgr.hxx"
      46             : #include <svtools/ctrltool.hxx>
      47             : #include <svtools/unitconv.hxx>
      48             : 
      49             : #include <vcl/gradient.hxx>
      50             : #include <vcl/svapp.hxx>
      51             : #include <vcl/toolbox.hxx>
      52             : #include "TextCharacterSpacingControl.hxx"
      53             : #include "TextCharacterSpacingPopup.hxx"
      54             : #include "TextUnderlineControl.hxx"
      55             : #include "TextUnderlinePopup.hxx"
      56             : #include <svx/sidebar/ColorControl.hxx>
      57             : #include <svx/sidebar/PopupContainer.hxx>
      58             : 
      59             : #include <boost/bind.hpp>
      60             : 
      61             : using namespace css;
      62             : using namespace cssu;
      63             : using ::sfx2::sidebar::Theme;
      64             : using ::sfx2::sidebar::ControlFactory;
      65             : 
      66             : const char UNO_BACKCOLOR[] = ".uno:BackColor";
      67             : const char UNO_BOLD[] = ".uno:Bold";
      68             : const char UNO_COLOR[] = ".uno:Color";
      69             : const char UNO_FONTCOLOR[] = ".uno:FontColor";
      70             : const char UNO_GROW[] = ".uno:Grow";
      71             : const char UNO_ITALIC[] = ".uno:Italic";
      72             : const char UNO_STRIKEOUT[] = ".uno:Strikeout";
      73             : const char UNO_SHADOWED[] = ".uno:Shadowed";
      74             : const char UNO_SHRINK[] = ".uno:Shrink";
      75             : const char UNO_SPACING[] = ".uno:Spacing";
      76             : const char UNO_SUBSCRIPT[] = ".uno:SubScript";
      77             : const char UNO_SUPERSCRIPT[] = ".uno:SuperScript";
      78             : const char UNO_UNDERLINE[] = ".uno:Underline";
      79             : 
      80             : #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
      81             : 
      82             : namespace svx { namespace sidebar {
      83             : 
      84             : #undef HAS_IA2
      85             : 
      86             : 
      87           0 : PopupControl* TextPropertyPanel::CreateCharacterSpacingControl (PopupContainer* pParent)
      88             : {
      89           0 :     return new TextCharacterSpacingControl(pParent, *this, mpBindings);
      90             : }
      91             : 
      92           0 : PopupControl* TextPropertyPanel::CreateUnderlinePopupControl (PopupContainer* pParent)
      93             : {
      94           0 :     return new TextUnderlineControl(pParent, *this, mpBindings);
      95             : }
      96             : 
      97           0 : long TextPropertyPanel::GetSelFontSize()
      98             : {
      99           0 :     long nH = 240;
     100           0 :     SfxMapUnit eUnit = maSpacingControl.GetCoreMetric();
     101           0 :     if (mpHeightItem)
     102           0 :         nH = LogicToLogic(  mpHeightItem->GetHeight(), (MapUnit)eUnit, MAP_TWIP );
     103           0 :     return nH;
     104             : }
     105             : 
     106             : 
     107           0 : TextPropertyPanel* TextPropertyPanel::Create (
     108             :     Window* pParent,
     109             :     const cssu::Reference<css::frame::XFrame>& rxFrame,
     110             :     SfxBindings* pBindings,
     111             :     const ::sfx2::sidebar::EnumContext& rContext)
     112             : {
     113           0 :     if (pParent == NULL)
     114           0 :         throw lang::IllegalArgumentException(A2S("no parent Window given to TextPropertyPanel::Create"), NULL, 0);
     115           0 :     if ( ! rxFrame.is())
     116           0 :         throw lang::IllegalArgumentException(A2S("no XFrame given to TextPropertyPanel::Create"), NULL, 1);
     117           0 :     if (pBindings == NULL)
     118           0 :         throw lang::IllegalArgumentException(A2S("no SfxBindings given to TextPropertyPanel::Create"), NULL, 2);
     119             : 
     120             :     return new TextPropertyPanel(
     121             :         pParent,
     122             :         rxFrame,
     123             :         pBindings,
     124           0 :         rContext);
     125             : }
     126             : 
     127             : 
     128           0 : ::sfx2::sidebar::ControllerItem& TextPropertyPanel::GetSpaceController()
     129             : {
     130           0 :     return maSpacingControl;
     131             : }
     132             : 
     133           0 : TextPropertyPanel::TextPropertyPanel ( Window* pParent, const cssu::Reference<css::frame::XFrame>& rxFrame, SfxBindings* pBindings, const ::sfx2::sidebar::EnumContext& rContext )
     134             :     : PanelLayout(pParent, "SidebarTextPanel", "svx/ui/sidebartextpanel.ui", rxFrame),
     135           0 :         maFontNameControl   (SID_ATTR_CHAR_FONT,        *pBindings, *this, A2S("CharFontName"), rxFrame),
     136           0 :         maFontSizeControl   (SID_ATTR_CHAR_FONTHEIGHT,  *pBindings, *this, A2S("FontHeight"),   rxFrame),
     137           0 :         maWeightControl     (SID_ATTR_CHAR_WEIGHT,      *pBindings, *this, A2S("Bold"),         rxFrame),
     138           0 :         maItalicControl     (SID_ATTR_CHAR_POSTURE,     *pBindings, *this, A2S("Italic"),       rxFrame),
     139           0 :         maUnderlineControl  (SID_ATTR_CHAR_UNDERLINE,   *pBindings, *this, A2S("Underline"),    rxFrame),
     140           0 :         maStrikeControl     (SID_ATTR_CHAR_STRIKEOUT,   *pBindings, *this, A2S("Strikeout"),    rxFrame),
     141           0 :         maShadowControl     (SID_ATTR_CHAR_SHADOWED,    *pBindings, *this, A2S("Shadowed"),     rxFrame),
     142           0 :         maScriptControlSw   (SID_ATTR_CHAR_ESCAPEMENT,  *pBindings, *this, A2S("Escapement"),   rxFrame),
     143           0 :         maSuperScriptControl(SID_SET_SUPER_SCRIPT,      *pBindings, *this, A2S("SuperScript"),  rxFrame),
     144           0 :         maSubScriptControl  (SID_SET_SUB_SCRIPT,        *pBindings, *this, A2S("SubScript"),    rxFrame),
     145           0 :         maSpacingControl    (SID_ATTR_CHAR_KERNING,     *pBindings, *this, A2S("Spacing"),      rxFrame),
     146           0 :         maSDFontGrow        (SID_GROW_FONT_SIZE,        *pBindings, *this, A2S("Grow"),         rxFrame),
     147           0 :         maSDFontShrink      (SID_SHRINK_FONT_SIZE,      *pBindings, *this, A2S("Shrink"),       rxFrame),
     148             : 
     149             :         mpFontList          (NULL),
     150             :         mbMustDelete        (false),
     151             :         mbFocusOnFontSizeCtrl(false),
     152             : 
     153             :         maCharSpacePopup(this, ::boost::bind(&TextPropertyPanel::CreateCharacterSpacingControl, this, _1)),
     154             :         maUnderlinePopup(this, ::boost::bind(&TextPropertyPanel::CreateUnderlinePopupControl, this, _1)),
     155             :         maContext(),
     156           0 :         mpBindings(pBindings)
     157             : {
     158           0 :     get(mpFontNameBox, "font");
     159           0 :     get(mpFontSizeBox, "fontsize");
     160           0 :     get(mpToolBoxFont, "fonteffects");
     161           0 :     get(mpToolBoxIncDec, "fontadjust");
     162           0 :     get(mpToolBoxScript, "position");
     163           0 :     get(mpToolBoxSpacing, "spacingbar");
     164           0 :     get(mpToolBoxFontColor, "colorbar");
     165             : 
     166           0 :     Initialize();
     167             : 
     168           0 :     UpdateFontColorToolbox(rContext);
     169           0 : }
     170             : 
     171             : 
     172             : 
     173             : 
     174           0 : TextPropertyPanel::~TextPropertyPanel (void)
     175             : {
     176           0 :     if(mbMustDelete)
     177           0 :         delete mpFontList;
     178           0 : }
     179             : 
     180             : 
     181             : 
     182             : 
     183           0 : void TextPropertyPanel::SetSpacing(long nKern)
     184             : {
     185           0 :     mlKerning = nKern;
     186           0 : }
     187             : 
     188             : 
     189           0 : void TextPropertyPanel::HandleContextChange (
     190             :     const ::sfx2::sidebar::EnumContext aContext)
     191             : {
     192           0 :     if (maContext == aContext)
     193             :     {
     194             :         // Nothing to do.
     195           0 :         return;
     196             :     }
     197             : 
     198           0 :     maContext = aContext;
     199           0 :     switch (maContext.GetCombinedContext_DI())
     200             :     {
     201             :         case CombinedEnumContext(Application_Calc, Context_Cell):
     202             :         case CombinedEnumContext(Application_Calc, Context_Pivot):
     203           0 :             mpToolBoxFontColor->HideItem(mpToolBoxFontColor->GetItemId(UNO_BACKCOLOR));
     204           0 :             mpToolBoxScript->Disable();
     205           0 :             mpToolBoxSpacing->Disable();
     206           0 :             break;
     207             : 
     208             :         case CombinedEnumContext(Application_Calc, Context_EditCell):
     209             :         case CombinedEnumContext(Application_Calc, Context_DrawText):
     210           0 :             mpToolBoxFontColor->HideItem(mpToolBoxFontColor->GetItemId(UNO_BACKCOLOR));
     211           0 :             mpToolBoxScript->Enable();
     212           0 :             mpToolBoxSpacing->Enable();
     213           0 :             break;
     214             : 
     215             :         case CombinedEnumContext(Application_WriterVariants, Context_Text):
     216             :         case CombinedEnumContext(Application_WriterVariants, Context_Table):
     217           0 :             mpToolBoxFontColor->ShowItem(mpToolBoxFontColor->GetItemId(UNO_BACKCOLOR));
     218           0 :             mpToolBoxScript->Enable();
     219           0 :             mpToolBoxSpacing->Show();
     220           0 :             break;
     221             : 
     222             :         case CombinedEnumContext(Application_WriterVariants, Context_DrawText):
     223             :         case CombinedEnumContext(Application_WriterVariants, Context_Annotation):
     224           0 :             mpToolBoxFontColor->HideItem(mpToolBoxFontColor->GetItemId(UNO_BACKCOLOR));
     225           0 :             mpToolBoxScript->Enable();
     226           0 :             mpToolBoxSpacing->Show();
     227           0 :             break;
     228             : 
     229             :         case CombinedEnumContext(Application_DrawImpress, Context_DrawText):
     230             :         case CombinedEnumContext(Application_DrawImpress, Context_Text):
     231             :         case CombinedEnumContext(Application_DrawImpress, Context_Table):
     232             :         case CombinedEnumContext(Application_DrawImpress, Context_OutlineText):
     233             :         case CombinedEnumContext(Application_DrawImpress, Context_Draw):
     234             :         case CombinedEnumContext(Application_DrawImpress, Context_TextObject):
     235             :         case CombinedEnumContext(Application_DrawImpress, Context_Graphic):
     236           0 :             mpToolBoxFontColor->HideItem(mpToolBoxFontColor->GetItemId(UNO_BACKCOLOR));
     237           0 :             mpToolBoxScript->Enable();
     238           0 :             mpToolBoxSpacing->Show();
     239           0 :             break;
     240             : 
     241             :         default:
     242           0 :             break;
     243             :     }
     244             : 
     245           0 :     UpdateFontColorToolbox(aContext);
     246             : }
     247             : 
     248             : 
     249             : 
     250             : 
     251           0 : void TextPropertyPanel::UpdateFontColorToolbox (
     252             :     const ::sfx2::sidebar::EnumContext /* aContext */)
     253             : {
     254           0 :     bool bIsWriterFontColor (false);
     255           0 :     if (maContext.GetApplication_DI() == sfx2::sidebar::EnumContext::Application_WriterVariants)
     256           0 :         if (maContext.GetContext() != sfx2::sidebar::EnumContext::Context_DrawText)
     257           0 :             bIsWriterFontColor = true;
     258           0 :     if (bIsWriterFontColor)
     259             :     {
     260           0 :         mpToolBoxFontColor->HideItem(mpToolBoxFontColor->GetItemId(UNO_COLOR));
     261           0 :         mpToolBoxFontColor->ShowItem(mpToolBoxFontColor->GetItemId(UNO_FONTCOLOR));
     262             :     }
     263             :     else
     264             :     {
     265           0 :         mpToolBoxFontColor->ShowItem(mpToolBoxFontColor->GetItemId(UNO_COLOR));
     266           0 :         mpToolBoxFontColor->HideItem(mpToolBoxFontColor->GetItemId(UNO_FONTCOLOR));
     267             :     }
     268           0 : }
     269             : 
     270             : 
     271             : 
     272             : 
     273           0 : void TextPropertyPanel::DataChanged (const DataChangedEvent& rEvent)
     274             : {
     275             :     (void)rEvent;
     276             : 
     277           0 :     SetupToolboxItems();
     278           0 : }
     279             : 
     280             : 
     281             : 
     282             : 
     283           0 : void TextPropertyPanel::Initialize (void)
     284             : {
     285             :     //<<modify fill font list
     286           0 :     SfxObjectShell* pDocSh = SfxObjectShell::Current();
     287           0 :     const SfxPoolItem* pItem = NULL;
     288             : 
     289           0 :     if (pDocSh != NULL)
     290           0 :         pItem = pDocSh->GetItem( SID_ATTR_CHAR_FONTLIST );
     291           0 :     if (pItem != NULL)
     292           0 :         mpFontList = ( (SvxFontListItem*)pItem )->GetFontList();
     293             :     else
     294             :     {
     295           0 :         mpFontList = new FontList( Application::GetDefaultDevice() );
     296           0 :         mbMustDelete = true;
     297             :     }
     298             : 
     299           0 :     mpFontNameBox->SetAccessibleName(mpFontNameBox->GetQuickHelpText());
     300           0 :     const FontInfo aFontInfo (mpFontList->Get( OUString( "" ), OUString( "" )));
     301           0 :     mpFontSizeBox->Fill(&aFontInfo,mpFontList);
     302           0 :     mpFontSizeBox->SetAccessibleName(mpFontSizeBox->GetQuickHelpText());
     303             : 
     304             :     //toolbox
     305           0 :     SetupToolboxItems();
     306           0 :     InitToolBoxIncDec();
     307           0 :     InitToolBoxFont();
     308           0 :     InitToolBoxScript();
     309           0 :     InitToolBoxSpacing();
     310             : 
     311             : #ifdef HAS_IA2
     312             :     mpFontNameBox->SetAccRelationLabeledBy(mpFontNameBox);
     313             :     mpFontNameBox->SetMpSubEditAccLableBy(mpFontNameBox);
     314             :     mpFontSizeBox->SetAccRelationLabeledBy(mpFontSizeBox);
     315             :     mpFontSizeBox->SetMpSubEditAccLableBy(mpFontSizeBox);
     316             :     mpToolBoxFont->SetAccRelationLabeledBy(mpToolBoxFont);
     317             :     mpToolBoxIncDec->SetAccRelationLabeledBy(mpToolBoxIncDec);
     318             :     mpToolBoxFontColor->SetAccRelationLabeledBy(mpToolBoxFontColor);
     319             :     mpToolBoxScriptSetAccRelationLabeledBy(mpToolBoxScript);
     320             :     mpToolBoxSpacing->SetAccRelationLabeledBy(mpToolBoxSpacing);
     321             : #endif
     322             : 
     323             :     //init state
     324           0 :     mpHeightItem = NULL;
     325           0 :     meWeight = WEIGHT_NORMAL;
     326           0 :     meItalic = ITALIC_NONE;
     327           0 :     mbShadow = false;
     328           0 :     meStrike = STRIKEOUT_NONE;
     329           0 :     mbPostureAvailable = true;
     330           0 :     mbWeightAvailable = true;
     331           0 :     meUnderline = UNDERLINE_NONE;
     332           0 :     meUnderlineColor = COL_AUTO;
     333           0 :     meEscape = SVX_ESCAPEMENT_OFF;
     334           0 :     mbSuper = false;
     335           0 :     mbSub = false;
     336           0 :     mbKernAvailable = true;
     337           0 :     mbKernLBAvailable = true;
     338           0 :     mlKerning = 0;
     339             : 
     340             :     //set handler
     341           0 :     mpFontNameBox->SetBindings(mpBindings);
     342           0 :     Link aLink = LINK(this, TextPropertyPanel, FontSelHdl);
     343           0 :     mpFontNameBox->SetSelectHdl(aLink);
     344           0 :     aLink = LINK(this, TextPropertyPanel, FontSizeModifyHdl);
     345           0 :     mpFontSizeBox->SetModifyHdl(aLink);
     346           0 :     aLink = LINK(this, TextPropertyPanel, FontSizeSelHdl);
     347           0 :     mpFontSizeBox->SetSelectHdl(aLink);
     348           0 :     aLink = LINK(this, TextPropertyPanel, FontSizeLoseFocus);
     349           0 :     mpFontSizeBox->SetLoseFocusHdl(aLink);
     350           0 : }
     351             : 
     352           0 : void TextPropertyPanel::EndSpacingPopupMode (void)
     353             : {
     354           0 :     maCharSpacePopup.Hide();
     355           0 : }
     356             : 
     357           0 : void TextPropertyPanel::EndUnderlinePopupMode (void)
     358             : {
     359           0 :     maUnderlinePopup.Hide();
     360           0 : }
     361             : 
     362             : 
     363           0 : void TextPropertyPanel::InitToolBoxFont()
     364             : {
     365           0 :     Link aLink = LINK(this, TextPropertyPanel, ToolboxFontSelectHandler);
     366           0 :     mpToolBoxFont->SetSelectHdl ( aLink );
     367             : 
     368           0 :     aLink = LINK(this, TextPropertyPanel, ToolBoxUnderlineClickHdl);
     369           0 :     mpToolBoxFont->SetDropdownClickHdl(aLink);
     370           0 : }
     371             : 
     372             : 
     373             : 
     374             : 
     375           0 : void TextPropertyPanel::InitToolBoxIncDec()
     376             : {
     377           0 :     Link aLink = LINK(this, TextPropertyPanel, ToolboxIncDecSelectHdl);
     378           0 :     mpToolBoxIncDec->SetSelectHdl ( aLink );
     379           0 : }
     380             : 
     381             : 
     382             : 
     383             : 
     384           0 : void TextPropertyPanel::InitToolBoxScript()
     385             : {
     386           0 :     Link aLink = LINK(this, TextPropertyPanel, ToolBoxScriptSelectHdl);
     387           0 :     mpToolBoxScript->SetSelectHdl ( aLink );
     388           0 : }
     389             : 
     390           0 : void TextPropertyPanel::InitToolBoxSpacing()
     391             : {
     392           0 :     const sal_uInt16 nId = mpToolBoxSpacing->GetItemId(UNO_SPACING);
     393           0 :     mpToolBoxSpacing->SetItemBits(nId, mpToolBoxSpacing->GetItemBits(nId) | TIB_DROPDOWNONLY);
     394             : 
     395           0 :     Link aLink = LINK(this, TextPropertyPanel, SpacingClickHdl);
     396           0 :     mpToolBoxSpacing->SetDropdownClickHdl ( aLink );
     397           0 :     mpToolBoxSpacing->SetSelectHdl( aLink );
     398           0 : }
     399             : 
     400             : 
     401             : 
     402             : 
     403           0 : void TextPropertyPanel::SetupToolboxItems (void)
     404             : {
     405           0 :     maSDFontGrow.SetupToolBoxItem(*mpToolBoxIncDec, mpToolBoxIncDec->GetItemId(UNO_GROW));
     406           0 :     maSDFontShrink.SetupToolBoxItem(*mpToolBoxIncDec, mpToolBoxIncDec->GetItemId(UNO_SHRINK));
     407             : 
     408           0 :     maWeightControl.SetupToolBoxItem(*mpToolBoxFont, mpToolBoxFont->GetItemId(UNO_BOLD));
     409           0 :     maItalicControl.SetupToolBoxItem(*mpToolBoxFont, mpToolBoxFont->GetItemId(UNO_ITALIC));
     410           0 :     maUnderlineControl.SetupToolBoxItem(*mpToolBoxFont, mpToolBoxFont->GetItemId(UNO_UNDERLINE));
     411           0 :     maStrikeControl.SetupToolBoxItem(*mpToolBoxFont, mpToolBoxFont->GetItemId(UNO_STRIKEOUT));
     412           0 :     maShadowControl.SetupToolBoxItem(*mpToolBoxFont, mpToolBoxFont->GetItemId(UNO_SHADOWED));
     413             : 
     414           0 :     maSuperScriptControl.SetupToolBoxItem(*mpToolBoxScript, mpToolBoxScript->GetItemId(UNO_SUPERSCRIPT));
     415           0 :     maSubScriptControl.SetupToolBoxItem(*mpToolBoxScript, mpToolBoxScript->GetItemId(UNO_SUBSCRIPT));
     416             : 
     417           0 :     maSpacingControl.SetupToolBoxItem(*mpToolBoxSpacing, mpToolBoxSpacing->GetItemId(UNO_SPACING));
     418           0 : }
     419             : 
     420             : 
     421             : 
     422             : 
     423           0 : IMPL_LINK( TextPropertyPanel, FontSelHdl, FontNameBox*, pBox )
     424             : {
     425           0 :     if ( !pBox->IsTravelSelect() )
     426             :     {
     427           0 :         if( SfxViewShell::Current() )
     428             :         {
     429           0 :             Window* pShellWnd = SfxViewShell::Current()->GetWindow();
     430             : 
     431           0 :             if ( pShellWnd )
     432           0 :                 pShellWnd->GrabFocus();
     433             :         }
     434             :     }
     435           0 :     return 0;
     436             : }
     437             : 
     438           0 : IMPL_LINK( TextPropertyPanel, FontSizeModifyHdl, FontSizeBox*, pSizeBox )
     439             : {
     440           0 :     if (pSizeBox == mpFontSizeBox)
     441             :     {
     442           0 :         long nSize = pSizeBox->GetValue();
     443           0 :         mbFocusOnFontSizeCtrl = true;
     444             : 
     445           0 :         float fSize = (float)nSize / 10;
     446           0 :         SfxMapUnit eUnit = maFontSizeControl.GetCoreMetric();
     447           0 :         SvxFontHeightItem aItem( CalcToUnit( fSize, eUnit ), 100, SID_ATTR_CHAR_FONTHEIGHT ) ;
     448             : 
     449           0 :         mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_FONTHEIGHT, SFX_CALLMODE_RECORD, &aItem, 0L );
     450           0 :         mpBindings->Invalidate(SID_ATTR_CHAR_FONTHEIGHT,true,false);
     451             :     }
     452           0 :     return 0;
     453             : }
     454             : 
     455           0 : IMPL_LINK( TextPropertyPanel, FontSizeSelHdl, FontSizeBox*, pSizeBox )
     456             : {
     457           0 :     if ( !pSizeBox->IsTravelSelect() )
     458             :     {
     459           0 :         if( SfxViewShell::Current() )
     460             :         {
     461           0 :             Window* pShellWnd = SfxViewShell::Current()->GetWindow();
     462             : 
     463           0 :             if ( pShellWnd )
     464           0 :                 pShellWnd->GrabFocus();
     465             :         }
     466             :     }
     467             : 
     468           0 :     return 0;
     469             : }
     470             : 
     471           0 : IMPL_LINK(TextPropertyPanel, FontSizeLoseFocus, FontSizeBox*, pSizeBox)
     472             : {
     473           0 :     if(pSizeBox == mpFontSizeBox)
     474             :     {
     475           0 :         mbFocusOnFontSizeCtrl = false;
     476             :     }
     477           0 :     return 0;
     478             : }
     479             : 
     480           0 : IMPL_LINK(TextPropertyPanel, ToolboxFontSelectHandler, ToolBox*, pToolBox)
     481             : {
     482           0 :     const sal_uInt16 nId = pToolBox->GetCurItemId();
     483           0 :     const OUString aCommand(pToolBox->GetItemCommand(nId));
     484             : 
     485           0 :         if (aCommand == UNO_BOLD)
     486             :         {
     487           0 :             EndTracking();
     488           0 :             if(meWeight != WEIGHT_BOLD)
     489           0 :                 meWeight = WEIGHT_BOLD;
     490             :             else
     491           0 :                 meWeight = WEIGHT_NORMAL;
     492           0 :             SvxWeightItem aWeightItem(meWeight, SID_ATTR_CHAR_WEIGHT);
     493           0 :             mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_WEIGHT, SFX_CALLMODE_RECORD, &aWeightItem, 0L);
     494           0 :             UpdateItem(SID_ATTR_CHAR_WEIGHT);
     495             :         }
     496           0 :         else if (aCommand == UNO_ITALIC)
     497             :         {
     498           0 :             EndTracking();
     499           0 :             if(meItalic != ITALIC_NORMAL)
     500           0 :                 meItalic = ITALIC_NORMAL;
     501             :             else
     502           0 :                 meItalic = ITALIC_NONE;
     503           0 :             SvxPostureItem aPostureItem(meItalic, SID_ATTR_CHAR_POSTURE);
     504           0 :             mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_POSTURE, SFX_CALLMODE_RECORD, &aPostureItem, 0L);
     505           0 :             UpdateItem(SID_ATTR_CHAR_POSTURE);
     506             :         }
     507           0 :         else if (aCommand == UNO_UNDERLINE)
     508             :         {
     509           0 :             EndTracking();
     510           0 :             if(meUnderline == UNDERLINE_NONE)
     511             :             {
     512           0 :                 meUnderline = UNDERLINE_SINGLE;
     513           0 :                 SvxUnderlineItem aLineItem(meUnderline, SID_ATTR_CHAR_UNDERLINE);
     514           0 :                 aLineItem.SetColor(meUnderlineColor);
     515           0 :                 mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_UNDERLINE, SFX_CALLMODE_RECORD, &aLineItem, 0L);
     516             :             }
     517             :             else
     518             :             {
     519           0 :                 meUnderline = UNDERLINE_NONE;
     520           0 :                 SvxUnderlineItem aLineItem(meUnderline, SID_ATTR_CHAR_UNDERLINE);
     521           0 :                 mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_UNDERLINE, SFX_CALLMODE_RECORD, &aLineItem, 0L);
     522             :             }
     523           0 :             UpdateItem(SID_ATTR_CHAR_UNDERLINE);
     524             :         }
     525           0 :         else if (aCommand == UNO_STRIKEOUT)
     526             :         {
     527           0 :             EndTracking();
     528           0 :             if(meStrike !=  STRIKEOUT_NONE && meStrike != STRIKEOUT_DONTKNOW)
     529           0 :                 meStrike = STRIKEOUT_NONE;
     530             :             else
     531           0 :                 meStrike = STRIKEOUT_SINGLE;
     532           0 :             SvxCrossedOutItem aStrikeItem(meStrike,SID_ATTR_CHAR_STRIKEOUT);
     533           0 :             mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_STRIKEOUT, SFX_CALLMODE_RECORD, &aStrikeItem, 0L);
     534           0 :             UpdateItem(SID_ATTR_CHAR_STRIKEOUT);
     535             :         }
     536           0 :         else if (aCommand == UNO_SHADOWED)
     537             :         {
     538           0 :             EndTracking();
     539           0 :             mbShadow = !mbShadow;
     540           0 :             SvxShadowedItem aShadowItem(mbShadow, SID_ATTR_CHAR_SHADOWED);
     541           0 :             mpBindings->GetDispatcher()->Execute(SID_ATTR_CHAR_SHADOWED, SFX_CALLMODE_RECORD, &aShadowItem, 0L);
     542           0 :             UpdateItem(SID_ATTR_CHAR_SHADOWED);
     543             :         }
     544             : 
     545           0 :     return 0;
     546             : }
     547             : 
     548             : 
     549             : 
     550             : 
     551           0 : IMPL_LINK(TextPropertyPanel, ToolboxIncDecSelectHdl, ToolBox*, pToolBox)
     552             : {
     553           0 :     const sal_uInt16 nId = pToolBox->GetCurItemId();
     554           0 :     const OUString aCommand(pToolBox->GetItemCommand(nId));
     555             : 
     556             :     // font size +/- enhancement in sd
     557           0 :     switch (maContext.GetCombinedContext_DI())
     558             :     {
     559             :         case CombinedEnumContext(Application_DrawImpress, Context_DrawText):
     560             :         case CombinedEnumContext(Application_DrawImpress, Context_Text):
     561             :         case CombinedEnumContext(Application_DrawImpress, Context_Table):
     562             :         case CombinedEnumContext(Application_DrawImpress, Context_OutlineText):
     563             :         case CombinedEnumContext(Application_DrawImpress, Context_Draw):
     564             :         case CombinedEnumContext(Application_DrawImpress, Context_TextObject):
     565             :         case CombinedEnumContext(Application_DrawImpress, Context_Graphic):
     566           0 :             if(aCommand == UNO_GROW)
     567             :             {
     568           0 :                 EndTracking();
     569           0 :                 SfxVoidItem aItem(SID_GROW_FONT_SIZE);
     570           0 :                 mpBindings->GetDispatcher()->Execute( SID_GROW_FONT_SIZE, SFX_CALLMODE_RECORD, &aItem, 0L );
     571             :             }
     572           0 :             else if(aCommand == UNO_SHRINK)
     573             :             {
     574           0 :                 EndTracking();
     575           0 :                 SfxVoidItem aItem(SID_SHRINK_FONT_SIZE);
     576           0 :                 mpBindings->GetDispatcher()->Execute( SID_SHRINK_FONT_SIZE, SFX_CALLMODE_RECORD, &aItem, 0L );
     577             :             }
     578           0 :             break;
     579             : 
     580             :         default:
     581           0 :             if(aCommand == UNO_GROW)
     582             :             {
     583           0 :                 EndTracking();
     584           0 :                 mbFocusOnFontSizeCtrl = false;
     585           0 :                 sal_Int64 iValue = mpFontSizeBox->GetValue();
     586           0 :                 int iPos = mpFontSizeBox->GetValuePos(iValue, FUNIT_NONE);
     587           0 :                 long nSize = iValue;
     588           0 :                 if(iPos != LISTBOX_ENTRY_NOTFOUND)
     589           0 :                     nSize = mpFontSizeBox->GetValue(iPos+1 , FUNIT_NONE);
     590           0 :                 else if(iValue >= 100 && iValue < 105)
     591           0 :                     nSize = 105;
     592           0 :                 else if(iValue >= 105 && iValue < 110)
     593           0 :                     nSize = 110;
     594           0 :                 else if(iValue < 960)
     595             :                 {
     596           0 :                     nSize = (nSize / 10) * 10 + 10;
     597           0 :                     while(nSize < 960 && mpFontSizeBox->GetValuePos(nSize, FUNIT_NONE) == LISTBOX_ENTRY_NOTFOUND)
     598           0 :                         nSize += 10;
     599             :                 }
     600             :                 else
     601             :                 {
     602           0 :                     nSize = iValue;
     603             :                 }
     604             : 
     605           0 :                 float fSize = (float)nSize / 10;
     606             : 
     607           0 :                 SfxMapUnit eUnit = maFontSizeControl.GetCoreMetric();
     608           0 :                 SvxFontHeightItem aItem( CalcToUnit( fSize, eUnit ), 100, SID_ATTR_CHAR_FONTHEIGHT ) ;
     609             : 
     610           0 :                 mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_FONTHEIGHT, SFX_CALLMODE_RECORD, &aItem, 0L );
     611           0 :                 mpBindings->Invalidate(SID_ATTR_CHAR_FONTHEIGHT,true,false);
     612           0 :                 mpFontSizeBox->SetValue( nSize );
     613             :             }
     614           0 :             else if(aCommand == UNO_SHRINK)
     615             :             {
     616           0 :                 EndTracking();
     617           0 :                 mbFocusOnFontSizeCtrl = false;
     618           0 :                 sal_Int64 iValue = mpFontSizeBox->GetValue();
     619           0 :                 int iPos = mpFontSizeBox->GetValuePos(iValue, FUNIT_NONE);
     620           0 :                 long nSize = iValue;
     621           0 :                 if(iPos != LISTBOX_ENTRY_NOTFOUND)
     622           0 :                     nSize = mpFontSizeBox->GetValue(iPos-1, FUNIT_NONE);
     623           0 :                 else if(iValue > 100 && iValue <= 105)
     624           0 :                     nSize = 100;
     625           0 :                 else if(iValue > 105 && iValue <= 110)
     626           0 :                     nSize = 105;
     627           0 :                 else if(iValue > 960)
     628             :                 {
     629           0 :                     nSize = 960;
     630             :                 }
     631           0 :                 else if(iValue > 60)
     632             :                 {
     633           0 :                     nSize = (nSize / 10) * 10 ;
     634           0 :                     while(nSize > 60 && mpFontSizeBox->GetValuePos(nSize, FUNIT_NONE) == LISTBOX_ENTRY_NOTFOUND)
     635           0 :                         nSize -= 10;
     636             :                 }
     637             :                 else
     638             :                 {
     639           0 :                     nSize = iValue;
     640             :                 }
     641             : 
     642           0 :                 float fSize = (float)nSize / 10;
     643             : 
     644           0 :                 SfxMapUnit eUnit = maFontSizeControl.GetCoreMetric();
     645           0 :                 SvxFontHeightItem aItem( CalcToUnit( fSize, eUnit ), 100, SID_ATTR_CHAR_FONTHEIGHT ) ;
     646             : 
     647           0 :                 mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_FONTHEIGHT, SFX_CALLMODE_RECORD, &aItem, 0L );
     648           0 :                 mpBindings->Invalidate(SID_ATTR_CHAR_FONTHEIGHT,true,false);
     649           0 :                 mpFontSizeBox->SetValue( nSize );
     650             :             }
     651             :     }
     652           0 :     UpdateItem(SID_ATTR_CHAR_FONTHEIGHT);
     653             : 
     654           0 :     return 0;
     655             : }
     656             : 
     657             : 
     658             : 
     659           0 : IMPL_LINK(TextPropertyPanel, ToolBoxUnderlineClickHdl, ToolBox*, pToolBox)
     660             : {
     661           0 :     const sal_uInt16 nId = pToolBox->GetCurItemId();
     662           0 :     const OUString aCommand(pToolBox->GetItemCommand(nId));
     663             : 
     664           0 :     if (aCommand == UNO_UNDERLINE)
     665             :     {
     666           0 :         pToolBox->SetItemDown( nId, true );
     667           0 :         maUnderlinePopup.Rearrange(meUnderline);
     668           0 :         maUnderlinePopup.Show(*pToolBox);
     669             :     }
     670             : 
     671           0 :     return 0L;
     672             : }
     673             : 
     674             : 
     675             : 
     676             : 
     677           0 : IMPL_LINK(TextPropertyPanel, ToolBoxScriptSelectHdl, ToolBox*, pToolBox)
     678             : {
     679           0 :     const sal_uInt16 nId = pToolBox->GetCurItemId();
     680           0 :     const OUString aCommand(pToolBox->GetItemCommand(nId));
     681             : 
     682           0 :     if (isWriter() && aCommand == UNO_SUPERSCRIPT)
     683             :     {
     684           0 :         if(meEscape != SVX_ESCAPEMENT_SUPERSCRIPT)
     685             :         {
     686           0 :             meEscape = SVX_ESCAPEMENT_SUPERSCRIPT;
     687           0 :             SvxEscapementItem aSupItem(DFLT_ESC_SUPER, DFLT_ESC_PROP, SID_ATTR_CHAR_ESCAPEMENT);
     688           0 :             mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_ESCAPEMENT, SFX_CALLMODE_RECORD, &aSupItem, 0L );
     689             :         }
     690             :         else
     691             :         {
     692           0 :             meEscape = SVX_ESCAPEMENT_OFF;
     693           0 :             SvxEscapementItem aNoneItem(0, 100, SID_ATTR_CHAR_ESCAPEMENT);
     694           0 :             mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_ESCAPEMENT, SFX_CALLMODE_RECORD, &aNoneItem, 0L );
     695             :         }
     696           0 :         UpdateItem(SID_ATTR_CHAR_ESCAPEMENT);
     697             :     }
     698           0 :     else if (isWriter() && aCommand == UNO_SUBSCRIPT)
     699             :     {
     700           0 :         if(meEscape != SVX_ESCAPEMENT_SUBSCRIPT)
     701             :         {
     702           0 :             meEscape = (SvxEscapement)SVX_ESCAPEMENT_SUBSCRIPT;
     703           0 :             SvxEscapementItem aSubItem(DFLT_ESC_SUB, DFLT_ESC_PROP, SID_ATTR_CHAR_ESCAPEMENT);
     704           0 :             mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_ESCAPEMENT, SFX_CALLMODE_RECORD, &aSubItem, 0L );
     705             :         }
     706             :         else
     707             :         {
     708           0 :             meEscape = SVX_ESCAPEMENT_OFF;
     709           0 :             SvxEscapementItem aNoneItem(0, 100, SID_ATTR_CHAR_ESCAPEMENT);
     710           0 :             mpBindings->GetDispatcher()->Execute( SID_ATTR_CHAR_ESCAPEMENT, SFX_CALLMODE_RECORD, &aNoneItem, 0L );
     711             :         }
     712           0 :         UpdateItem(SID_ATTR_CHAR_ESCAPEMENT);
     713             :     }
     714           0 :     else if (!isWriter() && aCommand == UNO_SUPERSCRIPT)
     715             :     {
     716           0 :         mbSuper = !mbSuper;
     717           0 :         SfxBoolItem aSupItem(SID_SET_SUPER_SCRIPT, mbSuper);
     718           0 :         mpBindings->GetDispatcher()->Execute( SID_SET_SUPER_SCRIPT, SFX_CALLMODE_RECORD, &aSupItem, 0L );
     719           0 :         UpdateItem(SID_SET_SUPER_SCRIPT);
     720             :     }
     721           0 :     else if (!isWriter() && aCommand == UNO_SUBSCRIPT)
     722             :     {
     723             : 
     724           0 :         mbSub = !mbSub;
     725           0 :         SfxBoolItem aSubItem(SID_SET_SUB_SCRIPT, mbSub );
     726           0 :         mpBindings->GetDispatcher()->Execute( SID_SET_SUB_SCRIPT, SFX_CALLMODE_RECORD, &aSubItem, 0L );
     727           0 :         UpdateItem(SID_SET_SUB_SCRIPT);
     728             :     }
     729             : 
     730           0 :     return 0;
     731             : }
     732             : 
     733             : 
     734             : 
     735             : 
     736           0 : IMPL_LINK(TextPropertyPanel, SpacingClickHdl, ToolBox*, pToolBox)
     737             : {
     738           0 :     const sal_uInt16 nId = pToolBox->GetCurItemId();
     739           0 :     const OUString aCommand(pToolBox->GetItemCommand(nId));
     740             : 
     741           0 :     if (aCommand == UNO_SPACING)
     742             :     {
     743           0 :         pToolBox->SetItemDown( nId, true );
     744           0 :         maCharSpacePopup.Rearrange(mbKernLBAvailable,mbKernAvailable,mlKerning);
     745           0 :         maCharSpacePopup.Show(*pToolBox);
     746             :     }
     747             : 
     748           0 :     return 0L;
     749             : }
     750             : 
     751             : 
     752             : 
     753             : 
     754           0 : void TextPropertyPanel::NotifyItemUpdate (
     755             :     const sal_uInt16 nSID,
     756             :     const SfxItemState eState,
     757             :     const SfxPoolItem* pState,
     758             :     const bool bIsEnabled)
     759             : {
     760           0 :     switch(nSID)
     761             :     {
     762             :     case SID_ATTR_CHAR_FONT:
     763             :         {
     764           0 :             bool bIsControlEnabled (bIsEnabled);
     765           0 :             if (  eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxFontItem) )
     766             :             {
     767           0 :                 const SvxFontItem* pFontItem = (const SvxFontItem*)pState;
     768           0 :                 mpFontNameBox->SetText( pFontItem->GetFamilyName() );
     769             :             }
     770             :             else
     771             :             {
     772           0 :                 mpFontNameBox->SetText( String() );
     773           0 :                 if (SFX_ITEM_DISABLED == eState)
     774           0 :                     bIsControlEnabled = false;
     775             :             }
     776           0 :             mpFontNameBox->Enable(bIsControlEnabled);
     777             :         }
     778           0 :         break;
     779             :     case SID_ATTR_CHAR_FONTHEIGHT:
     780             :         {
     781           0 :             const sal_uInt16 nIncreaseId = mpToolBoxIncDec->GetItemId(UNO_GROW);
     782           0 :             const sal_uInt16 nDecreaseId = mpToolBoxIncDec->GetItemId(UNO_SHRINK);
     783           0 :             bool bIsControlEnabled (bIsEnabled);
     784           0 :             if (  eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxFontHeightItem) )
     785             :             {
     786           0 :                 mpHeightItem = (SvxFontHeightItem*)pState;//const SvxFontHeightItem*
     787           0 :                 SfxMapUnit eUnit = maFontSizeControl.GetCoreMetric();
     788           0 :                 const sal_Int64 nValue (CalcToPoint(mpHeightItem->GetHeight(), eUnit, 10 ));
     789           0 :                 mpToolBoxIncDec->Enable();
     790             : 
     791           0 :                 mpToolBoxIncDec->SetItemState(nIncreaseId, STATE_NOCHECK);
     792           0 :                 mpToolBoxIncDec->SetItemState(nDecreaseId, STATE_NOCHECK);
     793             : 
     794             :                 // For Writer we have to update the states of the
     795             :                 // increase and decrease buttons here, because we have
     796             :                 // no access to the slots used by Writer.
     797           0 :                 switch(maContext.GetCombinedContext_DI())
     798             :                 {
     799             :                     case CombinedEnumContext(Application_DrawImpress, Context_DrawText):
     800             :                     case CombinedEnumContext(Application_DrawImpress, Context_Text):
     801             :                     case CombinedEnumContext(Application_DrawImpress, Context_Table):
     802             :                     case CombinedEnumContext(Application_DrawImpress, Context_OutlineText):
     803             :                     case CombinedEnumContext(Application_DrawImpress, Context_Draw):
     804             :                     case CombinedEnumContext(Application_DrawImpress, Context_TextObject):
     805             :                     case CombinedEnumContext(Application_DrawImpress, Context_Graphic):
     806           0 :                         break;
     807             : 
     808             :                     default:
     809             :                     {
     810           0 :                         mpToolBoxIncDec->EnableItem(nIncreaseId, bIsEnabled && nValue<960);
     811           0 :                         mpToolBoxIncDec->EnableItem(nDecreaseId, bIsEnabled && nValue>60);
     812           0 :                         break;
     813             :                     }
     814             :                 }
     815             : 
     816           0 :                 if( mbFocusOnFontSizeCtrl )
     817           0 :                     return;
     818             : 
     819           0 :                 mpFontSizeBox->SetValue(nValue);
     820           0 :                 mpFontSizeBox->LoseFocus();
     821             : 
     822           0 :                 UpdateItem(SID_SHRINK_FONT_SIZE);
     823           0 :                 UpdateItem(SID_GROW_FONT_SIZE);
     824             :             }
     825             :             else
     826             :             {
     827           0 :                 mpHeightItem = NULL;
     828           0 :                 mpFontSizeBox->SetText( String() );
     829             :                 //increase decrease diabled when multi-seletion have different font size
     830             : 
     831             :                 // font size +/- enhancement in sd
     832           0 :                 switch(maContext.GetCombinedContext_DI())
     833             :                 {
     834             :                     case CombinedEnumContext(Application_DrawImpress, Context_DrawText):
     835             :                     case CombinedEnumContext(Application_DrawImpress, Context_Text):
     836             :                     case CombinedEnumContext(Application_DrawImpress, Context_Table):
     837             :                     case CombinedEnumContext(Application_DrawImpress, Context_OutlineText):
     838             :                     case CombinedEnumContext(Application_DrawImpress, Context_Draw):
     839             :                     case CombinedEnumContext(Application_DrawImpress, Context_TextObject):
     840             :                     case CombinedEnumContext(Application_DrawImpress, Context_Graphic):
     841           0 :                         break;
     842             : 
     843             :                     default:
     844           0 :                         mpToolBoxIncDec->Disable();
     845             :                 }
     846           0 :                 if ( eState <= SFX_ITEM_READONLY )
     847           0 :                     bIsControlEnabled = false;
     848             :             }
     849           0 :             mpFontSizeBox->Enable(bIsControlEnabled);
     850             :         }
     851           0 :         break;
     852             :     case SID_ATTR_CHAR_WEIGHT:
     853             :         {
     854           0 :             mbWeightAvailable = (eState >= SFX_ITEM_DONTCARE);
     855           0 :             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxWeightItem))
     856             :             {
     857           0 :                 const SvxWeightItem* pItem = (const SvxWeightItem*)pState;
     858           0 :                 meWeight = (FontWeight)pItem->GetValue();
     859             :             }
     860             :             else
     861             :             {
     862           0 :                 meWeight = WEIGHT_NORMAL;
     863             :             }
     864           0 :             const sal_uInt16 nId = mpToolBoxFont->GetItemId(UNO_BOLD);
     865           0 :             mpToolBoxFont->EnableItem(nId, mbWeightAvailable && bIsEnabled);
     866           0 :             mpToolBoxFont->SetItemState(nId, meWeight==WEIGHT_BOLD ? STATE_CHECK : STATE_NOCHECK);
     867             :         }
     868           0 :         break;
     869             :     case SID_ATTR_CHAR_POSTURE:
     870             :         {
     871           0 :             mbPostureAvailable = (eState >= SFX_ITEM_DONTCARE);
     872           0 :             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxPostureItem))
     873             :             {
     874           0 :                 const SvxPostureItem* pItem = (const SvxPostureItem*)pState;
     875           0 :                 meItalic = (FontItalic)pItem->GetValue();
     876             :             }
     877             :             else
     878             :             {
     879           0 :                 meItalic = ITALIC_NONE;
     880             :             }
     881           0 :             const sal_uInt16 nId = mpToolBoxFont->GetItemId(UNO_ITALIC);
     882           0 :             mpToolBoxFont->EnableItem(nId, mbPostureAvailable && bIsEnabled);
     883           0 :             mpToolBoxFont->SetItemState(nId, meItalic==ITALIC_NORMAL ? STATE_CHECK : STATE_NOCHECK);
     884             :         }
     885           0 :         break;
     886             :     case SID_ATTR_CHAR_UNDERLINE:
     887             :         {
     888           0 :             if( eState >= SFX_ITEM_DEFAULT)
     889             :             {
     890           0 :                 if(pState->ISA(SvxUnderlineItem))
     891             :                 {
     892           0 :                     const SvxUnderlineItem* pItem = (const SvxUnderlineItem*)pState;
     893           0 :                     meUnderline = (FontUnderline)pItem->GetValue();
     894           0 :                     meUnderlineColor = pItem->GetColor();
     895             :                 }
     896             :             }
     897             :             else
     898             :             {
     899           0 :                 meUnderline = UNDERLINE_NONE;
     900             :             }
     901           0 :             const sal_uInt16 nId = mpToolBoxFont->GetItemId(UNO_UNDERLINE);
     902           0 :             mpToolBoxFont->EnableItem(nId, bIsEnabled);
     903           0 :             mpToolBoxFont->SetItemState(nId, meUnderline==UNDERLINE_NONE ? STATE_NOCHECK : STATE_CHECK);
     904             :         }
     905           0 :         break;
     906             :     case SID_ATTR_CHAR_SHADOWED:
     907             :         {
     908           0 :             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxShadowedItem))
     909             :             {
     910           0 :                 const SvxShadowedItem* pItem = (const SvxShadowedItem*)pState;
     911           0 :                 mbShadow = pItem->GetValue();
     912             :             }
     913             :             else
     914             :             {
     915           0 :                 mbShadow = false;
     916             :             }
     917           0 :             const sal_uInt16 nId = mpToolBoxFont->GetItemId(UNO_SHADOWED);
     918           0 :             mpToolBoxFont->EnableItem(nId, bIsEnabled);
     919           0 :             mpToolBoxFont->SetItemState(nId, mbShadow ? STATE_CHECK : STATE_NOCHECK);
     920             :         }
     921           0 :         break;
     922             :     case SID_ATTR_CHAR_STRIKEOUT:
     923             :         {
     924           0 :             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SvxCrossedOutItem))
     925             :             {
     926           0 :                 const SvxCrossedOutItem* pItem = (const SvxCrossedOutItem*)pState;
     927           0 :                 meStrike = (FontStrikeout)pItem->GetValue();
     928             :             }
     929             :             else
     930             :             {
     931           0 :                 meStrike = STRIKEOUT_NONE;
     932             :             }
     933           0 :             const sal_uInt16 nId = mpToolBoxFont->GetItemId(UNO_STRIKEOUT);
     934           0 :             mpToolBoxFont->EnableItem(nId, bIsEnabled);
     935             :             mpToolBoxFont->SetItemState(nId,
     936           0 :                 meStrike!=STRIKEOUT_NONE && meStrike!=STRIKEOUT_DONTKNOW
     937             :                     ? STATE_CHECK
     938           0 :                     : STATE_NOCHECK);
     939             :         }
     940           0 :         break;
     941             :     case SID_ATTR_CHAR_ESCAPEMENT:
     942           0 :         if (isWriter())
     943             :         {
     944           0 :             bool bIsItemEnabled (true);
     945           0 :             const sal_uInt16 nSuperscriptId = mpToolBoxScript->GetItemId(UNO_SUPERSCRIPT);
     946           0 :             const sal_uInt16 nSubscriptId = mpToolBoxScript->GetItemId(UNO_SUBSCRIPT);
     947           0 :             if (eState == SFX_ITEM_AVAILABLE)
     948             :             {
     949           0 :                 if (pState->ISA(SvxEscapementItem))
     950             :                 {
     951           0 :                     const SvxEscapementItem* pItem = (const SvxEscapementItem *)pState;
     952           0 :                     short nEsc = pItem->GetEsc();
     953           0 :                     if(nEsc == 0)
     954             :                     {
     955           0 :                         meEscape = SVX_ESCAPEMENT_OFF;
     956           0 :                         mpToolBoxScript->SetItemState(nSuperscriptId, STATE_NOCHECK);
     957           0 :                         mpToolBoxScript->SetItemState(nSubscriptId, STATE_NOCHECK);
     958             :                     }
     959           0 :                     else if(nEsc > 0)
     960             :                     {
     961           0 :                         meEscape = SVX_ESCAPEMENT_SUPERSCRIPT;
     962           0 :                         mpToolBoxScript->SetItemState(nSuperscriptId, STATE_CHECK);
     963           0 :                         mpToolBoxScript->SetItemState(nSubscriptId, STATE_NOCHECK);
     964             :                     }
     965             :                     else
     966             :                     {
     967           0 :                         meEscape = SVX_ESCAPEMENT_SUBSCRIPT;
     968           0 :                         mpToolBoxScript->SetItemState(nSuperscriptId, STATE_NOCHECK);
     969           0 :                         mpToolBoxScript->SetItemState(nSubscriptId, STATE_CHECK);
     970             :                     }
     971             :                 }
     972             :                 else
     973             :                 {
     974           0 :                     meEscape = SVX_ESCAPEMENT_OFF;
     975           0 :                     mpToolBoxScript->SetItemState(nSuperscriptId, STATE_NOCHECK);
     976           0 :                     mpToolBoxScript->SetItemState(nSubscriptId, STATE_NOCHECK);
     977             :                 }
     978             :             }
     979           0 :             else if (eState == SFX_ITEM_DISABLED)
     980             :             {
     981           0 :                 bIsItemEnabled = false;
     982             :             }
     983             :             else
     984             :             {
     985           0 :                 meEscape = SVX_ESCAPEMENT_OFF;
     986             :             }
     987           0 :             mpToolBoxScript->EnableItem(nSuperscriptId, bIsItemEnabled && bIsEnabled);
     988           0 :             mpToolBoxScript->EnableItem(nSubscriptId, bIsItemEnabled && bIsEnabled);
     989             :         }
     990           0 :         break;
     991             :     case SID_SET_SUB_SCRIPT:
     992           0 :         if (!isWriter())
     993             :         {
     994           0 :             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SfxBoolItem))
     995             :             {
     996           0 :                 const SfxBoolItem* pItem = (const SfxBoolItem*)pState;
     997           0 :                 mbSub = pItem->GetValue();
     998             :             }
     999             :             else
    1000             :             {
    1001           0 :                 mbSub = false;
    1002             :             }
    1003           0 :             const sal_uInt16 nSubscriptId = mpToolBoxScript->GetItemId(UNO_SUBSCRIPT);
    1004           0 :             mpToolBoxScript->EnableItem(nSubscriptId, bIsEnabled);
    1005           0 :             mpToolBoxScript->SetItemState(nSubscriptId, mbSub ? STATE_CHECK : STATE_NOCHECK);
    1006             :         }
    1007           0 :         break;
    1008             :     case SID_SET_SUPER_SCRIPT:
    1009           0 :         if (!isWriter())
    1010             :         {
    1011           0 :             if( eState >= SFX_ITEM_DEFAULT && pState->ISA(SfxBoolItem))
    1012             :             {
    1013           0 :                 const SfxBoolItem* pItem = (const SfxBoolItem*)pState;
    1014           0 :                 mbSuper = pItem->GetValue();
    1015             :             }
    1016             :             else
    1017             :             {
    1018           0 :                 mbSuper = false;
    1019             :             }
    1020           0 :             const sal_uInt16 nSuperscriptId = mpToolBoxScript->GetItemId(UNO_SUPERSCRIPT);
    1021           0 :             mpToolBoxScript->EnableItem(nSuperscriptId, bIsEnabled);
    1022           0 :             mpToolBoxScript->SetItemState(nSuperscriptId, mbSuper ? STATE_CHECK : STATE_NOCHECK);
    1023             :         }
    1024           0 :         break;
    1025             :     case SID_ATTR_CHAR_KERNING:
    1026             :         {
    1027           0 :             if ( SFX_ITEM_AVAILABLE == eState )
    1028             :             {
    1029           0 :                 mbKernLBAvailable = true;
    1030             : 
    1031           0 :                 if(pState->ISA(SvxKerningItem))
    1032             :                 {
    1033           0 :                     const SvxKerningItem* pKerningItem  = (const SvxKerningItem*)pState;
    1034           0 :                     mlKerning = (long)pKerningItem->GetValue();
    1035           0 :                     mbKernAvailable = true;
    1036             :                 }
    1037             :                 else
    1038             :                 {
    1039           0 :                     mlKerning = 0;
    1040           0 :                     mbKernAvailable =false;
    1041             :                 }
    1042             :             }
    1043           0 :             else if (SFX_ITEM_DISABLED == eState)
    1044             :             {
    1045           0 :                 mbKernLBAvailable = false;
    1046           0 :                 mbKernAvailable = false;
    1047           0 :                 mlKerning = 0;
    1048             :             }
    1049             :             else
    1050             :             {
    1051           0 :                 mbKernLBAvailable = true;
    1052           0 :                 mbKernAvailable = false;
    1053           0 :                 mlKerning = 0;
    1054             :             }
    1055           0 :             mpToolBoxSpacing->EnableItem(mpToolBoxSpacing->GetItemId(UNO_SPACING), bIsEnabled);
    1056             :         }
    1057           0 :         break;
    1058             :     case SID_SHRINK_FONT_SIZE:
    1059             :     case SID_GROW_FONT_SIZE:
    1060             :         {
    1061           0 :             switch(maContext.GetCombinedContext_DI())
    1062             :             {
    1063             :                 case CombinedEnumContext(Application_DrawImpress, Context_DrawText):
    1064             :                 case CombinedEnumContext(Application_DrawImpress, Context_Text):
    1065             :                 case CombinedEnumContext(Application_DrawImpress, Context_Table):
    1066             :                 case CombinedEnumContext(Application_DrawImpress, Context_OutlineText):
    1067             :                 case CombinedEnumContext(Application_DrawImpress, Context_Draw):
    1068             :                 case CombinedEnumContext(Application_DrawImpress, Context_TextObject):
    1069             :                 case CombinedEnumContext(Application_DrawImpress, Context_Graphic):
    1070             :                 {
    1071           0 :                     if(eState == SFX_ITEM_DISABLED)
    1072           0 :                         mpToolBoxIncDec->Disable();
    1073             :                     else
    1074           0 :                         mpToolBoxIncDec->Enable();
    1075           0 :                     const sal_Int64 nSize (mpFontSizeBox->GetValue());
    1076           0 :                     if(nSID == SID_GROW_FONT_SIZE)
    1077             :                     {
    1078           0 :                         mpToolBoxIncDec->EnableItem(mpToolBoxIncDec->GetItemId(UNO_GROW), bIsEnabled && nSize<960);
    1079             :                     }
    1080           0 :                     else if (nSID == SID_SHRINK_FONT_SIZE)
    1081             :                     {
    1082           0 :                         mpToolBoxIncDec->EnableItem(mpToolBoxIncDec->GetItemId(UNO_SHRINK), bIsEnabled && nSize>60);
    1083             :                     }
    1084             :                 }
    1085             :             }
    1086             :         }
    1087           0 :         break;
    1088             :     }
    1089             : }
    1090             : 
    1091             : 
    1092             : 
    1093             : 
    1094           0 : void TextPropertyPanel::UpdateItem (const sal_uInt16 nSlotId)
    1095             : {
    1096           0 :     switch (nSlotId)
    1097             :     {
    1098             :         case SID_ATTR_CHAR_FONT:
    1099           0 :             maFontNameControl.RequestUpdate();
    1100           0 :             break;
    1101             :         case SID_ATTR_CHAR_FONTHEIGHT:
    1102           0 :             maFontSizeControl.RequestUpdate();
    1103           0 :             break;
    1104             :         case SID_ATTR_CHAR_WEIGHT:
    1105           0 :             maWeightControl.RequestUpdate();
    1106           0 :             break;
    1107             :         case SID_ATTR_CHAR_POSTURE:
    1108           0 :             maItalicControl.RequestUpdate();
    1109           0 :             break;
    1110             :         case SID_ATTR_CHAR_UNDERLINE:
    1111           0 :             maUnderlineControl.RequestUpdate();
    1112           0 :             break;
    1113             :         case SID_ATTR_CHAR_STRIKEOUT:
    1114           0 :             maStrikeControl.RequestUpdate();
    1115           0 :             break;
    1116             :         case SID_ATTR_CHAR_SHADOWED:
    1117           0 :             maShadowControl.RequestUpdate();
    1118           0 :             break;
    1119             :         case SID_ATTR_CHAR_ESCAPEMENT:
    1120           0 :             maScriptControlSw.RequestUpdate();
    1121           0 :             break;
    1122             :         case SID_SET_SUPER_SCRIPT:
    1123           0 :             maSuperScriptControl.RequestUpdate();
    1124           0 :             break;
    1125             :         case SID_SET_SUB_SCRIPT:
    1126           0 :             maSubScriptControl.RequestUpdate();
    1127           0 :             break;
    1128             :         case SID_ATTR_CHAR_KERNING:
    1129           0 :             maSpacingControl.RequestUpdate();
    1130           0 :             break;
    1131             :         case SID_GROW_FONT_SIZE:
    1132           0 :             maSDFontGrow.RequestUpdate();
    1133           0 :             break;
    1134             :         case SID_SHRINK_FONT_SIZE:
    1135           0 :             maSDFontShrink.RequestUpdate();
    1136           0 :             break;
    1137             :     }
    1138           0 : }
    1139             : 
    1140             : 
    1141             : 
    1142             : 
    1143             : 
    1144           0 : Color& TextPropertyPanel::GetUnderlineColor()
    1145             : {
    1146           0 :     return meUnderlineColor;
    1147             : }
    1148             : 
    1149           0 : void TextPropertyPanel::SetUnderline(FontUnderline  eUnderline)
    1150             : {
    1151           0 :     meUnderline = eUnderline;
    1152           0 : }
    1153             : 
    1154           0 : bool TextPropertyPanel::isWriter()
    1155             : {
    1156           0 :     switch (maContext.GetCombinedContext_DI())
    1157             :     {
    1158             :         case CombinedEnumContext(Application_WriterVariants, Context_Text):
    1159             :         case CombinedEnumContext(Application_WriterVariants, Context_Table):
    1160             :         case CombinedEnumContext(Application_WriterVariants, Context_DrawText):
    1161             :         case CombinedEnumContext(Application_WriterVariants, Context_Annotation):
    1162           0 :             return true;
    1163             :         default:
    1164           0 :             return false;
    1165             :     }
    1166             : }
    1167             : 
    1168         216 : } } // end of namespace svx::sidebar

Generated by: LCOV version 1.10