diff options
author | Zolnai Tamás <zolnaitamas2000@gmail.com> | 2013-08-07 12:01:24 +0200 |
---|---|---|
committer | Zolnai Tamás <zolnaitamas2000@gmail.com> | 2013-08-12 10:30:02 +0200 |
commit | e40f07f731080b1e71d1df507f92108fa5ef7b75 (patch) | |
tree | 5aab9a3a3e1baeb0d38c405977a0ec19015a0982 /sw | |
parent | 9ece71a185c93845e38c25eae91bc1955d60bfed (diff) |
Extract code of character attribute convertion
To avoid duplication
Change-Id: Ica59c7819596055c9d521957c663398f9f53272d
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/ui/app/docst.cxx | 65 | ||||
-rw-r--r-- | sw/source/ui/envelp/envfmt.cxx | 25 | ||||
-rw-r--r-- | sw/source/ui/inc/uitool.hxx | 11 | ||||
-rw-r--r-- | sw/source/ui/shells/textsh1.cxx | 39 | ||||
-rw-r--r-- | sw/source/ui/utlui/uitool.cxx | 60 |
5 files changed, 78 insertions, 122 deletions
diff --git a/sw/source/ui/app/docst.cxx b/sw/source/ui/app/docst.cxx index 18095f96427a..8f0dece50831 100644 --- a/sw/source/ui/app/docst.cxx +++ b/sw/source/ui/app/docst.cxx @@ -568,24 +568,7 @@ IMPL_LINK_NOARG(ApplyStyle, ApplyHdl) SfxItemSet aTmpSet( *m_pDlg->GetOutputItemSet() ); if( SFX_STYLE_FAMILY_CHAR == m_nFamily ) { - const SfxPoolItem *pTmpBrush; - if( SFX_ITEM_SET == aTmpSet.GetItemState( RES_BACKGROUND, - sal_False, &pTmpBrush ) ) - { - SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) ); - aTmpBrush.SetWhich( RES_CHRATR_BACKGROUND ); - aTmpSet.Put( aTmpBrush ); - } - aTmpSet.ClearItem( RES_BACKGROUND ); - - const SfxPoolItem *pTmpBox; - if( SFX_ITEM_SET == aTmpSet.GetItemState( RES_BOX, sal_False, &pTmpBox ) ) - { - SvxBoxItem aTmpBox( *((SvxBoxItem*)pTmpBox) ); - aTmpBox.SetWhich( RES_CHRATR_BOX ); - aTmpSet.Put( aTmpBox ); - } - aTmpSet.ClearItem( RES_BOX ); + ::ConvertAttrGenToChar(aTmpSet, CONV_ATTR_STD); } m_xTmp->SetItemSet( aTmpSet ); @@ -743,27 +726,7 @@ sal_uInt16 SwDocShell::Edit( } else if( SFX_STYLE_FAMILY_CHAR == nFamily ) { - SfxItemSet& rSet = xTmp->GetItemSet(); - const SfxPoolItem *pTmpBrush; - if( SFX_ITEM_SET == rSet.GetItemState( RES_CHRATR_BACKGROUND, - sal_True, &pTmpBrush ) ) - { - SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) ); - aTmpBrush.SetWhich( RES_BACKGROUND ); - rSet.Put( aTmpBrush ); - } - else - rSet.ClearItem(RES_BACKGROUND); - - const SfxPoolItem *pTmpBox; - if( SFX_ITEM_SET == rSet.GetItemState( RES_CHRATR_BOX, sal_True, &pTmpBox ) ) - { - SvxBoxItem aTmpBox( *((SvxBoxItem*)pTmpBox) ); - aTmpBox.SetWhich( RES_BOX ); - rSet.Put( aTmpBox ); - } - else - rSet.ClearItem(RES_BOX); + ::ConvertAttrCharToGen(xTmp->GetItemSet(), CONV_ATTR_STD); } if (!bBasic) { @@ -831,29 +794,7 @@ sal_uInt16 SwDocShell::Edit( ::SfxToSwPageDescAttr( *GetWrtShell(), xTmp->GetItemSet() ); else { - SfxItemSet aTmpSet( xTmp->GetItemSet() ); - if( SFX_STYLE_FAMILY_CHAR == nFamily ) - { - const SfxPoolItem *pTmpBrush; - if( SFX_ITEM_SET == aTmpSet.GetItemState( RES_BACKGROUND, - sal_False, &pTmpBrush ) ) - { - SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) ); - aTmpBrush.SetWhich( RES_CHRATR_BACKGROUND ); - aTmpSet.Put( aTmpBrush ); - } - aTmpSet.ClearItem( RES_BACKGROUND ); - - const SfxPoolItem *pTmpBox; - if( SFX_ITEM_SET == aTmpSet.GetItemState( RES_BOX, sal_False, &pTmpBox ) ) - { - SvxBoxItem aTmpBox( *((SvxBoxItem*)pTmpBox) ); - aTmpBox.SetWhich( RES_CHRATR_BOX ); - aTmpSet.Put( aTmpBox ); - } - aTmpSet.ClearItem( RES_BOX ); - } - xTmp->SetItemSet( aTmpSet ); + ::ConvertAttrGenToChar(xTmp->GetItemSet(), CONV_ATTR_STD); } if(SFX_STYLE_FAMILY_PAGE == nFamily) pView->InvalidateRulerPos(); diff --git a/sw/source/ui/envelp/envfmt.cxx b/sw/source/ui/envelp/envfmt.cxx index 5c5a3cff45b8..397af1afb492 100644 --- a/sw/source/ui/envelp/envfmt.cxx +++ b/sw/source/ui/envelp/envfmt.cxx @@ -287,20 +287,7 @@ IMPL_LINK( SwEnvFmtPage, EditHdl, MenuButton *, pButton ) // In order for the background color not to get ironed over: SfxAllItemSet aTmpSet(*pCollSet); - - // The CHRATR_BACKGROUND attribute gets transformed into a - // RES_BACKGROUND for the dialog and back again ... - const SfxPoolItem *pTmpBrush; - - if( SFX_ITEM_SET == aTmpSet.GetItemState( RES_CHRATR_BACKGROUND, - sal_True, &pTmpBrush ) ) - { - SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) ); - aTmpBrush.SetWhich( RES_BACKGROUND ); - aTmpSet.Put( aTmpBrush ); - } - else - aTmpSet.ClearItem( RES_BACKGROUND ); + ::ConvertAttrCharToGen(aTmpSet, CONV_ATTR_ENV); SwAbstractDialogFactory* pFact = swui::GetFactory(); OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!"); @@ -310,15 +297,7 @@ IMPL_LINK( SwEnvFmtPage, EditHdl, MenuButton *, pButton ) if (pDlg->Execute() == RET_OK) { SfxItemSet aOutputSet( *pDlg->GetOutputItemSet() ); - if( SFX_ITEM_SET == aOutputSet.GetItemState( RES_BACKGROUND, - sal_False, &pTmpBrush ) ) - { - SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) ); - aTmpBrush.SetWhich( RES_CHRATR_BACKGROUND ); - pCollSet->Put( aTmpBrush ); - } - aOutputSet.ClearItem( RES_BACKGROUND ); - //pColl->SetAttr( aTmpSet ); + ::ConvertAttrGenToChar(aOutputSet, CONV_ATTR_ENV); pCollSet->Put(aOutputSet); } delete pDlg; diff --git a/sw/source/ui/inc/uitool.hxx b/sw/source/ui/inc/uitool.hxx index 6373801954cc..85387a243146 100644 --- a/sw/source/ui/inc/uitool.hxx +++ b/sw/source/ui/inc/uitool.hxx @@ -42,6 +42,17 @@ SW_DLLPUBLIC void SetMetric(MetricFormatter& rCtrl, FieldUnit eUnit); // fill BoxInfoAttribut SW_DLLPUBLIC void PrepareBoxInfo(SfxItemSet& rSet, const SwWrtShell& rSh); +// Modes for attribute conversion +#define CONV_ATTR_STD 1 // Standard character dialog +#define CONV_ATTR_ENV 2 // Character dialog opened from envelope dialog + +// Convert character specific attributes to general ones used by tab pages +SW_DLLPUBLIC void ConvertAttrCharToGen(SfxItemSet& rSet, sal_uInt8 nMode); + +// Convert general attributes to the corresponding character attributes +// This method is used after executed a character dialog +SW_DLLPUBLIC void ConvertAttrGenToChar(SfxItemSet& rSet, sal_uInt8 nMode); + // SfxItemSets <-> PageDesc void ItemSetToPageDesc( const SfxItemSet& rSet, SwPageDesc& rPageDesc ); void PageDescToItemSet( const SwPageDesc& rPageDesc, SfxItemSet& rSet); diff --git a/sw/source/ui/shells/textsh1.cxx b/sw/source/ui/shells/textsh1.cxx index 4d0263198e11..f700e967c4aa 100644 --- a/sw/source/ui/shells/textsh1.cxx +++ b/sw/source/ui/shells/textsh1.cxx @@ -168,29 +168,8 @@ void sw_CharDialog( SwWrtShell &rWrtSh, bool bUseDialog, sal_uInt16 nSlot,const } aCoreSet.Put( SfxUInt16Item( SID_ATTR_CHAR_WIDTH_FIT_TO_LINE, rWrtSh.GetScalingOfSelectedText() ) ); - // The CHRATR_BACKGROUND attribute will be converted for the - // dialogue in a RES_BACKGROUND and back again ... - const SfxPoolItem *pTmpBrush; - if( SFX_ITEM_SET == aCoreSet.GetItemState( RES_CHRATR_BACKGROUND, sal_True, &pTmpBrush ) ) - { - SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) ); - aTmpBrush.SetWhich( RES_BACKGROUND ); - aCoreSet.Put( aTmpBrush ); - } - else - aCoreSet.ClearItem(RES_BACKGROUND); - // The CHRATR_BOX attribute will be converted for the - // dialogue in a RES_BOX and back again ... - const SfxPoolItem *pTmpBox; - if( SFX_ITEM_SET == aCoreSet.GetItemState( RES_CHRATR_BOX, sal_True, &pTmpBox ) ) - { - SvxBoxItem aTmpBox( *((SvxBoxItem*)pTmpBox) ); - aTmpBox.SetWhich( RES_BOX ); - aCoreSet.Put( aTmpBox ); - } - else - aCoreSet.ClearItem(RES_BOX); + ::ConvertAttrCharToGen(aCoreSet, CONV_ATTR_STD); // Setting the BoxInfo ::PrepareBoxInfo( aCoreSet, rWrtSh ); @@ -223,21 +202,7 @@ void sw_CharDialog( SwWrtShell &rWrtSh, bool bUseDialog, sal_uInt16 nSlot,const if ( pSet) { SfxItemSet aTmpSet( *pSet ); - if( SFX_ITEM_SET == aTmpSet.GetItemState( RES_BACKGROUND, sal_False, &pTmpBrush ) ) - { - SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) ); - aTmpBrush.SetWhich( RES_CHRATR_BACKGROUND ); - aTmpSet.Put( aTmpBrush ); - } - aTmpSet.ClearItem( RES_BACKGROUND ); - - if( SFX_ITEM_SET == aTmpSet.GetItemState( RES_BOX, sal_False, &pTmpBox ) ) - { - SvxBoxItem aTmpBox( *((SvxBoxItem*)pTmpBox) ); - aTmpBox.SetWhich( RES_CHRATR_BOX ); - aTmpSet.Put( aTmpBox ); - } - aTmpSet.ClearItem( RES_BOX ); + ::ConvertAttrGenToChar(aTmpSet, CONV_ATTR_STD); const SfxPoolItem* pSelectionItem; sal_Bool bInsert = sal_False; diff --git a/sw/source/ui/utlui/uitool.cxx b/sw/source/ui/utlui/uitool.cxx index 13375449c590..862a9544a442 100644 --- a/sw/source/ui/utlui/uitool.cxx +++ b/sw/source/ui/utlui/uitool.cxx @@ -33,6 +33,7 @@ #include <editeng/tstpitem.hxx> #include <editeng/boxitem.hxx> #include <editeng/sizeitem.hxx> +#include <editeng/brushitem.hxx> #include <svx/pageitem.hxx> #include <editeng/lrspitem.hxx> #include <svl/style.hxx> @@ -117,6 +118,65 @@ void PrepareBoxInfo(SfxItemSet& rSet, const SwWrtShell& rSh) rSet.Put(aBoxInfo); } +void ConvertAttrCharToGen(SfxItemSet& rSet, sal_uInt8 nMode) +{ + // Background + { + const SfxPoolItem *pTmpBrush; + if( SFX_ITEM_SET == rSet.GetItemState( RES_CHRATR_BACKGROUND, sal_True, &pTmpBrush ) ) + { + SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) ); + aTmpBrush.SetWhich( RES_BACKGROUND ); + rSet.Put( aTmpBrush ); + } + else + rSet.ClearItem(RES_BACKGROUND); + } + + // Border + if( nMode == CONV_ATTR_STD ) + { + const SfxPoolItem *pTmpBox; + if( SFX_ITEM_SET == rSet.GetItemState( RES_CHRATR_BOX, sal_True, &pTmpBox ) ) + { + SvxBoxItem aTmpBox( *((SvxBoxItem*)pTmpBox) ); + aTmpBox.SetWhich( RES_BOX ); + rSet.Put( aTmpBox ); + } + else + rSet.ClearItem(RES_BOX); + } +} + +void ConvertAttrGenToChar(SfxItemSet& rSet, sal_uInt8 nMode) +{ + // Background + { + const SfxPoolItem *pTmpBrush; + if( SFX_ITEM_SET == rSet.GetItemState( RES_BACKGROUND, sal_False, &pTmpBrush ) ) + { + SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) ); + aTmpBrush.SetWhich( RES_CHRATR_BACKGROUND ); + rSet.Put( aTmpBrush ); + } + rSet.ClearItem( RES_BACKGROUND ); + } + + // Border + if( nMode == CONV_ATTR_STD ) + { + const SfxPoolItem *pTmpBox; + if( SFX_ITEM_SET == rSet.GetItemState( RES_BOX, sal_False, &pTmpBox ) ) + { + SvxBoxItem aTmpBox( *((SvxBoxItem*)pTmpBox) ); + aTmpBox.SetWhich( RES_CHRATR_BOX ); + rSet.Put( aTmpBox ); + } + rSet.ClearItem( RES_BOX ); + } +} + + // Fill header footer void FillHdFt(SwFrmFmt* pFmt, const SfxItemSet& rSet) |