[Libreoffice-commits] .: svx/inc svx/source sw/inc sw/source
Cédric Bosdonnat
cbosdo at kemper.freedesktop.org
Thu Sep 15 01:57:47 PDT 2011
svx/inc/svx/hdft.hxx | 6 ++
svx/source/dialog/hdft.cxx | 92 +++++++++++++++++++--------------
sw/inc/cmdid.h | 1
sw/inc/swcommands.h | 1
sw/source/ui/app/mn.src | 6 ++
sw/source/ui/docvw/HeaderFooterWin.cxx | 48 +++++++++++++++++
6 files changed, 115 insertions(+), 39 deletions(-)
New commits:
commit c95d90199397b529de1a9979c065a7f35e52a188
Author: Cédric Bosdonnat <cedric.bosdonnat.ooo at free.fr>
Date: Thu Sep 15 10:54:46 2011 +0200
Header/Footer: add the Border and Background... menu item
diff --git a/svx/inc/svx/hdft.hxx b/svx/inc/svx/hdft.hxx
index b1dd6b8..a196ee7 100644
--- a/svx/inc/svx/hdft.hxx
+++ b/svx/inc/svx/hdft.hxx
@@ -40,6 +40,12 @@
#include <svx/pagectrl.hxx>
#include "svx/svxdllapi.h"
+namespace svx
+{
+ SVX_DLLPUBLIC bool ShowBorderBackgroundDlg( Window* pParent, SfxItemSet* pBBSet,
+ bool bEnableBackgroundSelector );
+}
+
// class SvxHFPage ------------------------------------------------------
class SVX_DLLPUBLIC SvxHFPage: public SfxTabPage
diff --git a/svx/source/dialog/hdft.cxx b/svx/source/dialog/hdft.cxx
index 90438e8..245c939 100644
--- a/svx/source/dialog/hdft.cxx
+++ b/svx/source/dialog/hdft.cxx
@@ -89,6 +89,36 @@ static sal_uInt16 pRanges[] =
0
};
+namespace svx {
+
+ bool ShowBorderBackgroundDlg( Window* pParent, SfxItemSet* pBBSet,
+ bool bEnableBackgroundSelector )
+ {
+ bool bRes = false;
+ SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
+ if(pFact)
+ {
+ SfxAbstractTabDialog* pDlg = pFact->CreateSvxBorderBackgroundDlg( pParent, *pBBSet, bEnableBackgroundSelector );
+ DBG_ASSERT(pDlg, "Dialogdiet fail!");
+ if ( pDlg->Execute() == RET_OK && pDlg->GetOutputItemSet() )
+ {
+ SfxItemIter aIter( *pDlg->GetOutputItemSet() );
+ const SfxPoolItem* pItem = aIter.FirstItem();
+
+ while ( pItem )
+ {
+ if ( !IsInvalidItem( pItem ) )
+ pBBSet->Put( *pItem );
+ pItem = aIter.NextItem();
+ }
+ bRes = true;
+ }
+ delete pDlg;
+ }
+ return bRes;
+ }
+}
+
// returns the Which values to the range
@@ -531,54 +561,38 @@ IMPL_LINK( SvxHFPage, BackgroundHdl, Button *, EMPTYARG )
pBBSet->Put( *pItem );
}
- SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
- if(pFact)
+ if ( svx::ShowBorderBackgroundDlg( this, pBBSet, bEnableBackgroundSelector ) )
{
- SfxAbstractTabDialog* pDlg = pFact->CreateSvxBorderBackgroundDlg( this, *pBBSet, bEnableBackgroundSelector );
- DBG_ASSERT(pDlg, "Dialogdiet fail!");
- if ( pDlg->Execute() == RET_OK && pDlg->GetOutputItemSet() )
- {
- SfxItemIter aIter( *pDlg->GetOutputItemSet() );
- const SfxPoolItem* pItem = aIter.FirstItem();
-
- while ( pItem )
- {
- if ( !IsInvalidItem( pItem ) )
- pBBSet->Put( *pItem );
- pItem = aIter.NextItem();
- }
+ //----------------------------------------------------------------
- //----------------------------------------------------------------
-
- sal_uInt16 nWhich = GetWhich( SID_ATTR_BRUSH );
-
- if ( pBBSet->GetItemState( nWhich ) == SFX_ITEM_SET )
- {
- const SvxBrushItem& rItem = (const SvxBrushItem&)pBBSet->Get( nWhich );
- if ( nId == SID_ATTR_PAGE_HEADERSET )
- aBspWin.SetHdColor( rItem.GetColor() );
- else
- aBspWin.SetFtColor( rItem.GetColor() );
- }
+ sal_uInt16 nWhich = GetWhich( SID_ATTR_BRUSH );
- //----------------------------------------------------------------
+ if ( pBBSet->GetItemState( nWhich ) == SFX_ITEM_SET )
+ {
+ const SvxBrushItem& rItem = (const SvxBrushItem&)pBBSet->Get( nWhich );
+ if ( nId == SID_ATTR_PAGE_HEADERSET )
+ aBspWin.SetHdColor( rItem.GetColor() );
+ else
+ aBspWin.SetFtColor( rItem.GetColor() );
+ }
- nWhich = GetWhich( SID_ATTR_BORDER_OUTER );
+ //----------------------------------------------------------------
- if ( pBBSet->GetItemState( nWhich ) == SFX_ITEM_SET )
- {
- const SvxBoxItem& rItem = (const SvxBoxItem&)pBBSet->Get( nWhich );
+ nWhich = GetWhich( SID_ATTR_BORDER_OUTER );
- if ( nId == SID_ATTR_PAGE_HEADERSET )
- aBspWin.SetHdBorder( rItem );
- else
- aBspWin.SetFtBorder( rItem );
- }
+ if ( pBBSet->GetItemState( nWhich ) == SFX_ITEM_SET )
+ {
+ const SvxBoxItem& rItem = (const SvxBoxItem&)pBBSet->Get( nWhich );
- UpdateExample();
+ if ( nId == SID_ATTR_PAGE_HEADERSET )
+ aBspWin.SetHdBorder( rItem );
+ else
+ aBspWin.SetFtBorder( rItem );
}
- delete pDlg;
+
+ UpdateExample();
}
+
return 0;
}
diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h
index 466e07d..087a3c2 100644
--- a/sw/inc/cmdid.h
+++ b/sw/inc/cmdid.h
@@ -1017,6 +1017,7 @@ included in c-context files, so c++ style stuff will cause problems.
#define FN_HEADERFOOTER_EDIT (FN_HEADERFOOTER+1)
#define FN_HEADERFOOTER_DELETE (FN_HEADERFOOTER+2)
+#define FN_HEADERFOOTER_BORDERBACK (FN_HEADERFOOTER+3)
/*--------------------------------------------------------------------
Region: Parameter
diff --git a/sw/inc/swcommands.h b/sw/inc/swcommands.h
index 036abc8..9e8343e 100644
--- a/sw/inc/swcommands.h
+++ b/sw/inc/swcommands.h
@@ -435,5 +435,6 @@
#define CMD_FN_COPY_HYPERLINK_LOCATION ".uno:CopyHyperlinkLocation"
#define CMD_FN_HEADERFOOTER_EDIT ".uno:HeaderFooterEdit"
#define CMD_FN_HEADERFOOTER_DELETE ".uno:HeaderFooterDelete"
+#define CMD_FN_HEADERFOOTER_BORDERBACK ".uno:HeaderFooterBorderBackground"
#endif
diff --git a/sw/source/ui/app/mn.src b/sw/source/ui/app/mn.src
index 4156ba2..3a5c21c 100644
--- a/sw/source/ui/app/mn.src
+++ b/sw/source/ui/app/mn.src
@@ -1446,6 +1446,12 @@ Menu MN_HEADERFOOTER_BUTTON
};
MenuItem
{
+ Identifier = FN_HEADERFOOTER_BORDERBACK ;
+ HelpID = CMD_FN_HEADERFOOTER_BORDERBACK ;
+ Text [ en-US ] = "Border and Background..." ;
+ };
+ MenuItem
+ {
Identifier = FN_HEADERFOOTER_DELETE ;
HelpID = CMD_FN_HEADERFOOTER_DELETE ;
Text [ en-US ] = "Delete $1..." ;
diff --git a/sw/source/ui/docvw/HeaderFooterWin.cxx b/sw/source/ui/docvw/HeaderFooterWin.cxx
index 1f7bbae..a706639 100644
--- a/sw/source/ui/docvw/HeaderFooterWin.cxx
+++ b/sw/source/ui/docvw/HeaderFooterWin.cxx
@@ -45,7 +45,9 @@
#include <basegfx/polygon/b2dpolygon.hxx>
#include <basegfx/color/bcolortools.hxx>
+#include <editeng/boxitem.hxx>
#include <svtools/svtdata.hxx>
+#include <svx/hdft.hxx>
#include <vcl/decoview.hxx>
#include <vcl/gradient.hxx>
#include <vcl/menubtn.hxx>
@@ -292,6 +294,52 @@ void SwHeaderFooterWin::ExecuteCommand( sal_uInt16 nSlot )
nPageId, &rSh );
}
break;
+ case FN_HEADERFOOTER_BORDERBACK:
+ {
+ const SwPageDesc* pDesc = m_pPageFrm->GetPageDesc();
+ const SwFrmFmt& rMaster = pDesc->GetMaster();
+ SwFrmFmt* pHFFmt = const_cast< SwFrmFmt* >( rMaster.GetFooter().GetFooterFmt() );
+ if ( m_bIsHeader )
+ pHFFmt = const_cast< SwFrmFmt* >( rMaster.GetHeader().GetHeaderFmt() );
+
+
+ SfxItemPool* pPool = pHFFmt->GetAttrSet().GetPool();
+ SfxItemSet aSet( *pPool,
+ RES_BACKGROUND, RES_BACKGROUND,
+ RES_BOX, RES_BOX,
+ SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_INNER,
+ RES_SHADOW, RES_SHADOW, 0 );
+
+ aSet.Put( pHFFmt->GetAttrSet() );
+
+ // Create a box info item... needed by the dialog
+ SvxBoxInfoItem aBoxInfo( SID_ATTR_BORDER_INNER );
+ const SfxPoolItem *pBoxInfo;
+ if ( SFX_ITEM_SET == pHFFmt->GetAttrSet().GetItemState( SID_ATTR_BORDER_INNER,
+ sal_True, &pBoxInfo) )
+ aBoxInfo = *(SvxBoxInfoItem*)pBoxInfo;
+
+ aBoxInfo.SetTable( sal_False );
+ aBoxInfo.SetDist( sal_True);
+ aBoxInfo.SetMinDist( sal_False );
+ aBoxInfo.SetDefDist( MIN_BORDER_DIST );
+ aBoxInfo.SetValid( VALID_DISABLE );
+ aSet.Put( aBoxInfo );
+
+ if ( svx::ShowBorderBackgroundDlg( this, &aSet, true ) )
+ {
+ const SfxPoolItem* pItem;
+ if ( SFX_ITEM_SET == aSet.GetItemState( RES_BACKGROUND, sal_False, &pItem ) )
+ pHFFmt->SetFmtAttr( *pItem );
+
+ if ( SFX_ITEM_SET == aSet.GetItemState( RES_BOX, sal_False, &pItem ) )
+ pHFFmt->SetFmtAttr( *pItem );
+
+ if ( SFX_ITEM_SET == aSet.GetItemState( RES_SHADOW, sal_False, &pItem ) )
+ pHFFmt->SetFmtAttr( *pItem );
+ }
+ }
+ break;
case FN_HEADERFOOTER_DELETE:
{
rSh.ChangeHeaderOrFooter( rStyleName, m_bIsHeader, false, true );
More information about the Libreoffice-commits
mailing list