summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorZolnai Tamás <zolnaitamas2000@gmail.com>2013-08-07 12:01:24 +0200
committerZolnai Tamás <zolnaitamas2000@gmail.com>2013-08-12 10:30:02 +0200
commite40f07f731080b1e71d1df507f92108fa5ef7b75 (patch)
tree5aab9a3a3e1baeb0d38c405977a0ec19015a0982 /sw
parent9ece71a185c93845e38c25eae91bc1955d60bfed (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.cxx65
-rw-r--r--sw/source/ui/envelp/envfmt.cxx25
-rw-r--r--sw/source/ui/inc/uitool.hxx11
-rw-r--r--sw/source/ui/shells/textsh1.cxx39
-rw-r--r--sw/source/ui/utlui/uitool.cxx60
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)