in main/svx/source/sidebar/paragraph/ParaLineSpacingControl.cxx [185:510]
void ParaLineSpacingControl::Rearrange(SfxItemState currSPState,FieldUnit currMetricUnit,SvxLineSpacingItem* currSPItem,const ::sfx2::sidebar::EnumContext currentContext)
{
SvtViewOptions aWinOpt( E_WINDOW, LSP_POS_GLOBAL_VALUE );
if ( aWinOpt.Exists() )
{
::com::sun::star::uno::Sequence < ::com::sun::star::beans::NamedValue > aSeq = aWinOpt.GetUserData();
::rtl::OUString aTmp;
if ( aSeq.getLength())
aSeq[0].Value >>= aTmp;
String aWinData( aTmp );
maPos = (sal_uInt16)aWinData.ToInt32();
}
SvtViewOptions aWinOpt2( E_WINDOW, LSP_LV_GLOBAL_VALUE );
if ( aWinOpt2.Exists() )
{
::com::sun::star::uno::Sequence < ::com::sun::star::beans::NamedValue > aSeq = aWinOpt2.GetUserData();
::rtl::OUString aTmp;
if ( aSeq.getLength())
aSeq[0].Value >>= aTmp;
String aWinData( aTmp );
maValue = (sal_uInt16)aWinData.ToInt32();
}
String sHelpText;
switch(maPos)
{
case LLINESPACE_1:
sHelpText += mpStrTip[0];
break;
case LLINESPACE_15:
sHelpText += mpStrTip[2];
break;
case LLINESPACE_2:
sHelpText += mpStrTip[3];
break;
case LLINESPACE_PROP:
sHelpText +=maLine;
sHelpText.Append(String("Proportion: ", 12, RTL_TEXTENCODING_ASCII_US));
sHelpText += maOf;
sHelpText.Append( String::CreateFromInt64( maValue ));
break;
case LLINESPACE_MIN:
sHelpText += maLine;
sHelpText.Append(String("At Least: ", 10, RTL_TEXTENCODING_ASCII_US));
sHelpText += maOf;
sHelpText.Append( String::CreateFromInt64( maValue ));
break;
case LLINESPACE_DURCH:
sHelpText += maLine;
sHelpText.Append(String("Leading: ", 9, RTL_TEXTENCODING_ASCII_US));
sHelpText += maOf;
sHelpText.Append( String::CreateFromInt64( maValue ));
break;
case LLINESPACE_FIX:
sHelpText += maLine;
sHelpText.Append(String("Fixed: ", 7, RTL_TEXTENCODING_ASCII_US));
sHelpText += maOf;
sHelpText.Append( String::CreateFromInt64( maValue ));
break;
}
if( !aWinOpt.Exists() && !aWinOpt2.Exists() )
mbLineSPDisable = sal_True;
else
mbLineSPDisable = sal_False;
if( mbLineSPDisable )
maLineSpacing.ReplaceItemImages(5, maImgCusGrey,0);
else
{
maLineSpacing.ReplaceItemImages(5, maImgCus,0);
maLineSpacing.SetItemText(5,sHelpText);
}
SfxItemState eState = currSPState;
SetFieldUnit( aLineDistAtMetricBox, currMetricUnit );
// mpLineSPPage->SetAllNoSel();
aLineDist.Enable();
pActLineDistFld->Enable();
pActLineDistFld->SetText( String() );
bool bValueSetFocus = sal_False; //wj
if( eState >= SFX_ITEM_AVAILABLE )
{
// SfxMapUnit eUnit = maLNSpaceControl.GetCoreMetric();
SfxMapUnit eUnit = SFX_MAPUNIT_100TH_MM;
m_eLNSpaceUnit = eUnit;
switch( currSPItem->GetLineSpaceRule() )
{
case SVX_LINE_SPACE_AUTO:
{
SvxInterLineSpace eInter = currSPItem->GetInterLineSpaceRule();
switch( eInter )
{
case SVX_INTER_LINE_SPACE_OFF:
{
aLineDist.SelectEntryPos( LLINESPACE_1 );
pActLineDistFld->Disable();
pActLineDistFld->SetText( String() );
mbUseLineSPCustom = DO_NOT_CUSTOM;
if ( LINESPACE_1 == currSPItem->GetPropLineSpace() )
{
maLineSpacing.SelectItem(1);
bValueSetFocus = sal_True; //wj
}
}
break;
case SVX_INTER_LINE_SPACE_PROP:
{
if ( LINESPACE_1 == currSPItem->GetPropLineSpace() )
{
aLineDist.SelectEntryPos( LLINESPACE_1 );
pActLineDistFld->Disable();
pActLineDistFld->SetText( String() );
mbUseLineSPCustom = DO_NOT_CUSTOM;
maLineSpacing.SelectItem(1);
bValueSetFocus = sal_True; //wj
break;
}
if ( LINESPACE_15 == currSPItem->GetPropLineSpace() )
{
aLineDist.SelectEntryPos( LLINESPACE_15 );
pActLineDistFld->Disable();
pActLineDistFld->SetText( String() );
mbUseLineSPCustom = DO_NOT_CUSTOM;
maLineSpacing.SelectItem(3);
bValueSetFocus = sal_True; //wj
break;
}
if ( LINESPACE_2 == currSPItem->GetPropLineSpace() )
{
aLineDist.SelectEntryPos( LLINESPACE_2 );
pActLineDistFld->Disable();
pActLineDistFld->SetText( String() );
mbUseLineSPCustom = DO_NOT_CUSTOM;
maLineSpacing.SelectItem(4);
bValueSetFocus = sal_True; //wj
break;
}
aLineDist.SelectEntryPos( LLINESPACE_PROP );
if(pActLineDistFld != &(aLineDistAtPercentBox))
{
pActLineDistFld->Disable();
pActLineDistFld->Hide();
pActLineDistFld = &(aLineDistAtPercentBox);
}
else
{
pActLineDistFld = &(aLineDistAtMetricBox);
pActLineDistFld->Disable();
pActLineDistFld->Hide();
pActLineDistFld = &(aLineDistAtPercentBox);
}
pActLineDistFld->Enable();
pActLineDistFld->Show();
aLineDistAtPercentBox.
SetValue( aLineDistAtPercentBox.Normalize(
currSPItem->GetPropLineSpace() ) );
if( currSPItem->GetPropLineSpace() == LINESPACE_115 )
{
mbUseLineSPCustom = DO_NOT_CUSTOM;
maLineSpacing.SelectItem(2);
bValueSetFocus = sal_True; //wj
}
else
{
mbUseLineSPCustom = USE_CUSTOM;
maLineSpacing.SetNoSelection();
maLineSpacing.SelectItem(0);
}
}
break;
case SVX_INTER_LINE_SPACE_FIX:
{
if(pActLineDistFld != &(aLineDistAtMetricBox))
{
pActLineDistFld->Disable();
pActLineDistFld->Hide();
pActLineDistFld = &(aLineDistAtMetricBox);
}
else
{
pActLineDistFld = &(aLineDistAtPercentBox);
pActLineDistFld->Disable();
pActLineDistFld->Hide();
pActLineDistFld = &(aLineDistAtMetricBox);
}
pActLineDistFld->Enable();
pActLineDistFld->Show();
maLineSpacing.SetNoSelection();
maLineSpacing.SelectItem(0);
SetMetricValue( aLineDistAtMetricBox,
currSPItem->GetInterLineSpace(), eUnit );
aLineDist.SelectEntryPos( LLINESPACE_DURCH );
mbUseLineSPCustom = USE_CUSTOM;
}
break;
default:
break;
}
}
break;
case SVX_LINE_SPACE_FIX:
{
if(pActLineDistFld != &(aLineDistAtMetricBox))
{
pActLineDistFld->Disable();
pActLineDistFld->Hide();
pActLineDistFld = &(aLineDistAtMetricBox);
}
else
{
pActLineDistFld = &(aLineDistAtPercentBox);
pActLineDistFld->Disable();
pActLineDistFld->Hide();
pActLineDistFld = &(aLineDistAtMetricBox);
}
pActLineDistFld->Enable();
pActLineDistFld->Show();
maLineSpacing.SetNoSelection();
maLineSpacing.SelectItem(0);
SetMetricValue(aLineDistAtMetricBox, currSPItem->GetLineHeight(), eUnit);
aLineDist.SelectEntryPos( LLINESPACE_FIX );
mbUseLineSPCustom = USE_CUSTOM;
}
break;
case SVX_LINE_SPACE_MIN:
{
if(pActLineDistFld != &(aLineDistAtMetricBox))
{
pActLineDistFld->Disable();
pActLineDistFld->Hide();
pActLineDistFld = &(aLineDistAtMetricBox);
}
else
{
pActLineDistFld = &(aLineDistAtPercentBox);
pActLineDistFld->Disable();
pActLineDistFld->Hide();
pActLineDistFld = &(aLineDistAtMetricBox);
}
pActLineDistFld->Enable();
pActLineDistFld->Show();
maLineSpacing.SetNoSelection();
maLineSpacing.SelectItem(0);
SetMetricValue(aLineDistAtMetricBox, currSPItem->GetLineHeight(), eUnit);
aLineDist.SelectEntryPos( LLINESPACE_MIN );
mbUseLineSPCustom = USE_CUSTOM;
}
break;
default:
break;
}
}
else if( eState == SFX_ITEM_DISABLED )
{
aLineDist.Disable();
pActLineDistFld->Enable(sal_False);
pActLineDistFld->SetText( String() );
maLineSpacing.SetNoSelection();
maLineSpacing.SelectItem(0);
mbUseLineSPCustom = DO_NOT_CUSTOM;
}
else
{
pActLineDistFld->Enable(sal_False);
pActLineDistFld->SetText( String() );
aLineDist.SetNoSelection();
maLineSpacing.SetNoSelection();
maLineSpacing.SelectItem(0);
mbUseLineSPCustom = DO_NOT_CUSTOM;
}
aLineDist.SaveValue();
const sal_uInt16 uCount = aLineDist.GetEntryCount();
if( uCount == LLINESPACE_FIX + 1 )
{
switch (currentContext.GetCombinedContext_DI())
{
case CombinedEnumContext(Application_DrawImpress, Context_Table):
case CombinedEnumContext(Application_DrawImpress, Context_DrawText):
case CombinedEnumContext(Application_DrawImpress, Context_Draw):
case CombinedEnumContext(Application_DrawImpress, Context_TextObject):
case CombinedEnumContext(Application_DrawImpress, Context_Graphic):
case CombinedEnumContext(Application_Calc, Context_DrawText):
case CombinedEnumContext(Application_WriterVariants, Context_DrawText):
case CombinedEnumContext(Application_WriterVariants, Context_Annotation):
{
aLineDist.RemoveEntry(LLINESPACE_FIX);
}
}
}
else if( uCount == LLINESPACE_FIX)
{
switch (currentContext.GetCombinedContext_DI())
{
case CombinedEnumContext(Application_WriterVariants, Context_Default):
case CombinedEnumContext(Application_WriterVariants, Context_Text):
case CombinedEnumContext(Application_WriterVariants, Context_Table):
{
aLineDist.InsertEntry(String::CreateFromAscii("Fixed"), LLINESPACE_FIX);
}
}
}
maLineSpacing.Format();
maLineSpacing.StartSelection();
}