diff options
author | Rishabh Kumar <kris.kr296@gmail.com> | 2016-08-22 16:48:05 +0530 |
---|---|---|
committer | Katarina Behrens <Katarina.Behrens@cib.de> | 2016-10-12 08:36:13 +0000 |
commit | 686349476e03f951f4a9ff9755b9f71951b64ea5 (patch) | |
tree | 7cb559cca9cf88dc0a2e2a957244701ab0b4fe60 | |
parent | da01e9ec5dfb7787b4a3669486b3940590933850 (diff) |
[GSoC] Move all fill style tabs inside area tab
Change-Id: I89e84b7b3c7075ad4107e7bc444ea5c07bc90795
Reviewed-on: https://gerrit.libreoffice.org/27866
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
-rw-r--r-- | cui/source/dialogs/sdrcelldlg.cxx | 4 | ||||
-rw-r--r-- | cui/source/inc/cuitabarea.hxx | 181 | ||||
-rw-r--r-- | cui/source/tabpages/tabarea.cxx | 34 | ||||
-rw-r--r-- | cui/source/tabpages/tparea.cxx | 971 | ||||
-rw-r--r-- | cui/source/tabpages/tpbitmap.cxx | 148 | ||||
-rw-r--r-- | cui/source/tabpages/tpcolor.cxx | 108 | ||||
-rw-r--r-- | cui/source/tabpages/tpgradnt.cxx | 222 | ||||
-rw-r--r-- | cui/source/tabpages/tphatch.cxx | 161 | ||||
-rw-r--r-- | cui/source/tabpages/tppattern.cxx | 205 | ||||
-rw-r--r-- | cui/uiconfig/ui/areatabpage.ui | 283 |
10 files changed, 873 insertions, 1444 deletions
diff --git a/cui/source/dialogs/sdrcelldlg.cxx b/cui/source/dialogs/sdrcelldlg.cxx index 3fd53db146f0..d6e9244cb738 100644 --- a/cui/source/dialogs/sdrcelldlg.cxx +++ b/cui/source/dialogs/sdrcelldlg.cxx @@ -51,10 +51,6 @@ void SvxFormatCellsDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) rAreaPage.SetGradientList( mpGradientList ); rAreaPage.SetHatchingList( mpHatchingList ); rAreaPage.SetBitmapList( mpBitmapList ); - rAreaPage.SetPageType( PageType::Area ); - rAreaPage.SetDlgType( 1 ); - rAreaPage.SetPos( 0 ); - rAreaPage.Construct(); rAreaPage.ActivatePage( mrOutAttrs ); } else if (nId == m_nBorderPageId) diff --git a/cui/source/inc/cuitabarea.hxx b/cui/source/inc/cuitabarea.hxx index 0c103cc22e71..7f1decb475d8 100644 --- a/cui/source/inc/cuitabarea.hxx +++ b/cui/source/inc/cuitabarea.hxx @@ -35,9 +35,60 @@ #include <svx/PaletteManager.hxx> #include <svx/svdview.hxx> +#define NO_BUTTON_SELECTED -1 + class SdrModel; class SvxBitmapCtl; +/************************************************************************/ +class ButtonBox +{ + private: + sal_Int32 mnCurrentButton; + std::vector< VclPtr<PushButton> > maButtonList; + std::map< VclPtr<PushButton>, sal_Int32 > maButtonToPos; + void SelectButtonImpl( sal_Int32 nPos ) + { + if(mnCurrentButton != NO_BUTTON_SELECTED) + { + maButtonList[mnCurrentButton]->SetPressed(false); + } + mnCurrentButton = nPos; + maButtonList[mnCurrentButton]->SetPressed(true); + }; + public: + ButtonBox() + { + mnCurrentButton = NO_BUTTON_SELECTED; + }; + ~ButtonBox() {}; + void AddButton(VclPtr<PushButton> pButton) + { + maButtonList.push_back(pButton); + maButtonToPos.insert( std::make_pair(pButton, maButtonList.size() - 1) ); + } + sal_Int32 GetCurrentButtonPos() { return mnCurrentButton; } + sal_Int32 GetButtonPos( VclPtr<PushButton> pButton ) + { + std::map< VclPtr<PushButton>, sal_Int32 >::const_iterator aBtnPos = maButtonToPos.find(pButton); + if(aBtnPos != maButtonToPos.end()) + return aBtnPos->second; + else + return -1; + } + void SelectButton( VclPtr<PushButton> pButton) + { + sal_Int32 nPos = GetButtonPos(pButton); + if(nPos != -1) + SelectButtonImpl(nPos); + } + void clear() + { + mnCurrentButton = NO_BUTTON_SELECTED; + maButtonList.clear(); + }; +}; + enum class PageType { Area, @@ -47,12 +98,9 @@ enum class PageType Color, Shadow, Transparence, - Unknown = 0xFFFF + Unknown = 0xFFF }; - -/************************************************************************/ - class SvxAreaTabDialog : public SfxTabDialog { sal_uInt16 m_nAreaTabPage; @@ -86,9 +134,7 @@ private: ChangeType mnGradientListState; ChangeType mnHatchingListState; - PageType mnPageType; sal_Int32 mnPos; - bool mbAreaTP; virtual void PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) override; @@ -199,74 +245,57 @@ class SvxAreaTabPage : public SvxTabPage using TabPage::DeactivatePage; static const sal_uInt16 pAreaRanges[]; private: - VclPtr<ListBox> m_pTypeLB; - - VclPtr<VclBox> m_pFillLB; - VclPtr<ColorLB> m_pLbColor; - VclPtr<GradientLB> m_pLbGradient; - VclPtr<HatchingLB> m_pLbHatching; - VclPtr<BitmapLB> m_pLbBitmap; - VclPtr<SvxXRectPreview> m_pCtlBitmapPreview; - VclPtr<SvxXRectPreview> m_pCtlXRectPreview; - - const SfxItemSet& m_rOutAttrs; + ScopedVclPtr<SfxTabPage> m_pFillTabPage; + VclPtr<VclBox> m_pFillTab; + VclPtr<PushButton> m_pBtnNone; + VclPtr<PushButton> m_pBtnColor; + VclPtr<PushButton> m_pBtnGradient; + VclPtr<PushButton> m_pBtnHatch; + VclPtr<PushButton> m_pBtnBitmap; + VclPtr<PushButton> m_pBtnPattern; + ButtonBox maBox; + SdrModel* mpDrawModel; XColorListRef m_pColorList; XGradientListRef m_pGradientList; XHatchListRef m_pHatchingList; XBitmapListRef m_pBitmapList; + XPatternListRef m_pPatternList; // Placeholders for pointer-based entries; these will be inited // to point to these so that the page is usable without that // SvxAreaTabDialog has to call the setter methods (e.g. SetColorChgd). // Without that the pages used in SvxAreaTabDialog are not usable ChangeType maFixed_ChangeType; - bool maFixed_sal_Bool; ChangeType* m_pnColorListState; ChangeType* m_pnBitmapListState; + ChangeType* m_pnPatternListState; ChangeType* m_pnGradientListState; ChangeType* m_pnHatchingListState; - PageType m_nPageType; - sal_uInt16 m_nDlgType; - sal_Int32 m_nPos; - - bool* m_pbAreaTP; - + sal_Int32 m_nPos; XFillAttrSetItem m_aXFillAttr; SfxItemSet& m_rXFSet; - MapUnit m_ePoolUnit; - - DECL_LINK(SelectDialogTypeHdl_Impl, ListBox&, void); - DECL_LINK( ModifyColorHdl_Impl, ListBox&, void ); - DECL_LINK( ModifyGradientHdl_Impl, ListBox&, void ); - DECL_LINK( ModifyHatchingHdl_Impl, ListBox&, void ); - DECL_LINK( ModifyBitmapHdl_Impl, ListBox&, void ); - - DECL_LINK( ModifyTileHdl_Impl, Edit&, void ); - DECL_LINK( ModifyTileClickHdl_Impl, Button*, void ); - DECL_LINK( ClickScaleHdl_Impl, Button*, void ); - void ClickInvisibleHdl_Impl(); - void ClickHatchingHdl_Impl(); - void ClickGradientHdl_Impl(); - void ClickColorHdl_Impl(); - void ClickBitmapHdl_Impl(); + DECL_LINK(SelectFillTypeHdl_Impl, Button*, void); + template< typename TabPage > + bool FillItemSet_Impl( SfxItemSet* ); + template< typename TabPage > + void Reset_Impl( const SfxItemSet* ); + template< typename TabPage > + DeactivateRC DeactivatePage_Impl( SfxItemSet* pSet ); public: SvxAreaTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs ); virtual ~SvxAreaTabPage() override; virtual void dispose() override; - void Construct(); - static VclPtr<SfxTabPage> Create( vcl::Window*, const SfxItemSet* ); static const sal_uInt16* GetRanges() { return pAreaRanges; } virtual bool FillItemSet( SfxItemSet* ) override; virtual void Reset( const SfxItemSet * ) override; - virtual void ChangesApplied() override; virtual void ActivatePage( const SfxItemSet& rSet ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; virtual void PointChanged( vcl::Window* pWindow, RectPoint eRP ) override; @@ -277,12 +306,11 @@ public: void SetHatchingList( XHatchListRef const & pHtchLst) { m_pHatchingList = pHtchLst; } void SetBitmapList( XBitmapListRef const & pBmpLst) { m_pBitmapList = pBmpLst; } + void SetPatternList( XPatternListRef const &pPtrnLst ) { m_pPatternList = pPtrnLst; } + void SetDrawModel( SdrModel* pModel ) { mpDrawModel = pModel; } - void SetPageType( PageType nInType ) { m_nPageType = nInType; } - void SetDlgType( sal_uInt16 nInType ) { m_nDlgType = nInType; } - void SetPos( sal_uInt16 nInPos ) { m_nPos = nInPos; } - void SetAreaTP( bool* pIn ) { m_pbAreaTP = pIn; } virtual void PageCreated(const SfxAllItemSet& aSet) override; + void CreatePage(sal_Int32 nId, SfxTabPage& pTab); void SetColorChgd( ChangeType* pIn ) { m_pnColorListState = pIn; } void SetGrdChgd( ChangeType* pIn ) { m_pnGradientListState = pIn; } void SetHtchChgd( ChangeType* pIn ) { m_pnHatchingListState = pIn; } @@ -379,10 +407,7 @@ private: ChangeType* m_pnGradientListState; ChangeType* m_pnColorListState; - PageType* m_pPageType; - sal_uInt16 m_nDlgType; sal_Int32* m_pPos; - bool* m_pbAreaTP; XFillStyleItem m_aXFStyleItem; XFillGradientItem m_aXGradientItem; @@ -400,6 +425,7 @@ private: DECL_LINK( ChangeAutoStepHdl_Impl, CheckBox&, void ); DECL_LINK( ModifiedSliderHdl_Impl, Slider*, void ); void ModifiedHdl_Impl(void*); + long CheckChanges_Impl(); void SetControlState_Impl( css::awt::GradientStyle eXGS ); sal_Int32 SearchGradientList(const OUString& rGradientName); @@ -421,12 +447,7 @@ public: void SetColorList( XColorListRef const & pColorList ) { m_pColorList = pColorList; } void SetGradientList( XGradientListRef const & pGrdLst) { m_pGradientList = pGrdLst; } - - void SetPageType( PageType* pInType ) { m_pPageType = pInType; } - void SetDlgType( sal_uInt16 nInType ) { m_nDlgType = nInType; } - void SetPos( sal_Int32* pInPos ) { m_pPos = pInPos; } - void SetAreaTP( bool* pIn ) { m_pbAreaTP = pIn; } - + void SetPos( sal_Int32* pPos ) { m_pPos = pPos; } void SetGrdChgd( ChangeType* pIn ) { m_pnGradientListState = pIn; } void SetColorChgd( ChangeType* pIn ) { m_pnColorListState = pIn; } }; @@ -458,10 +479,7 @@ private: ChangeType* m_pnHatchingListState; ChangeType* m_pnColorListState; - PageType* m_pPageType; - sal_uInt16 m_nDlgType; sal_Int32* m_pPos; - bool* m_pbAreaTP; XFillStyleItem m_aXFStyleItem; XFillHatchItem m_aXHatchItem; @@ -505,11 +523,7 @@ public: void SetHatchingList( XHatchListRef const & pHtchLst) { m_pHatchingList = pHtchLst; } - void SetPageType( PageType* pInType ) { m_pPageType = pInType; } - void SetDlgType( sal_uInt16 nInType ) { m_nDlgType = nInType; } - void SetPos( sal_Int32* pInPos ) { m_pPos = pInPos; } - void SetAreaTP( bool* pIn ) { m_pbAreaTP = pIn; } - + void SetPos( sal_Int32* pPos ) { m_pPos = pPos; } void SetHtchChgd( ChangeType* pIn ) { m_pnHatchingListState = pIn; } void SetColorChgd( ChangeType* pIn ) { m_pnColorListState = pIn; } @@ -551,16 +565,13 @@ private: double m_fObjectWidth; double m_fObjectHeight; - PageType* m_nPageType; - sal_uInt16 m_nDlgType; - sal_Int32* m_nPos; - - bool* m_pbAreaTP; + sal_Int32* m_pPos; XFillAttrSetItem m_aXFillAttr; SfxItemSet& m_rXFSet; const SdrView* mpView; MapUnit mePoolUnit; + FieldUnit meDlgUnit; Size rBitmapSize; Size rFilledSize; Size rZoomedSize; @@ -599,11 +610,7 @@ public: virtual void PointChanged( vcl::Window* pWindow, RectPoint eRP ) override; void SetBitmapList( const XBitmapListRef& pBmpLst) { m_pBitmapList = pBmpLst; } - - void SetPageType( PageType* pInType ) { m_nPageType = pInType; } - void SetDlgType( sal_uInt16 nInType ) { m_nDlgType = nInType; } - void SetPos( sal_Int32* pInPos ) { m_nPos = pInPos; } - void SetAreaTP( bool* pIn ) { m_pbAreaTP = pIn; } + void SetPos( sal_Int32* pPos ) { m_pPos = pPos; } void SetBmpChgd( ChangeType* pIn ) { m_pnBitmapListState = pIn; } }; @@ -634,10 +641,7 @@ private: ChangeType* m_pnPatternListState; ChangeType* m_pnColorListState; - PageType* m_pPageType; - sal_uInt16 m_nDlgType; sal_Int32* m_pPos; - bool* m_pbAreaTP; bool m_bPtrnChanged; @@ -653,6 +657,9 @@ private: DECL_LINK( ClickRenameHdl_Impl, SvxPresetListBox*, void ); DECL_LINK( ClickDeleteHdl_Impl, SvxPresetListBox*, void ); + long CheckChanges_Impl(); + sal_Int32 SearchPatternList(const OUString& rPatternName); + public: SvxPatternTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs ); virtual ~SvxPatternTabPage() override; @@ -671,12 +678,7 @@ public: void SetColorList( XColorListRef const & pColorList ) { m_pColorList = pColorList; } void SetPatternList( XPatternListRef const & pPatternList) { m_pPatternList = pPatternList; } - - void SetPageType( PageType* pInType ) { m_pPageType = pInType; } - void SetDlgType( sal_uInt16 nInType ) { m_nDlgType = nInType; } - void SetPos( sal_Int32* pInPos ) { m_pPos = pInPos; } - void SetAreaTP( bool* pIn ) { m_pbAreaTP = pIn; } - + void SetPos( sal_Int32* pPos ) { m_pPos = pPos; } void SetPtrnChgd( ChangeType* pIn ) { m_pnPatternListState = pIn; } void SetColorChgd( ChangeType* pIn ) { m_pnColorListState = pIn; } void ChangeColor_Impl(); @@ -687,7 +689,7 @@ public: enum class ColorModel { RGB, - CMYK // can be extend with more models, e.g. HSV + CMYK }; class SvxColorTabPage : public SfxTabPage @@ -742,10 +744,7 @@ private: XColorListRef pColorList; ChangeType* pnColorListState; - PageType* pPageType; - sal_uInt16 nDlgType; sal_Int32* pPos; - bool* pbAreaTP; XFillStyleItem aXFStyleItem; XFillColorItem aXFillColorItem; @@ -797,13 +796,11 @@ public: virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; void SetPropertyList( XPropertyListType t, const XPropertyListRef &xRef ); - + void SetPos( sal_Int32* pInPos ) { pPos = pInPos; } void SetColorList( const XColorListRef& pColList ); + void SaveToViewFrame( SfxViewFrame *pViewFrame ); + void SetupForViewFrame( SfxViewFrame *pViewFrame ); - void SetPageType( PageType* pInType ) { pPageType = pInType; } - void SetDlgType( sal_uInt16 nInType ) { nDlgType = nInType; } - void SetPos( sal_Int32* pInPos ) { pPos = pInPos; } - void SetAreaTP( bool* pIn ) { pbAreaTP = pIn; } void SetColorChgd( ChangeType* pIn ) { pnColorListState = pIn; } diff --git a/cui/source/tabpages/tabarea.cxx b/cui/source/tabpages/tabarea.cxx index 787fa7625282..06acf58edc62 100644 --- a/cui/source/tabpages/tabarea.cxx +++ b/cui/source/tabpages/tabarea.cxx @@ -73,9 +73,7 @@ SvxAreaTabDialog::SvxAreaTabDialog mnPatternListState ( ChangeType::NONE ), mnGradientListState ( ChangeType::NONE ), mnHatchingListState ( ChangeType::NONE ), - mnPageType( PageType::Area ), - mnPos( 0 ), - mbAreaTP( false ) + mnPos( 0 ) { m_nAreaTabPage = AddTabPage( "RID_SVXPAGE_AREA", SvxAreaTabPage::Create, nullptr ); @@ -262,24 +260,18 @@ void SvxAreaTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) static_cast<SvxAreaTabPage&>(rPage).SetGradientList( mpGradientList ); static_cast<SvxAreaTabPage&>(rPage).SetHatchingList( mpHatchingList ); static_cast<SvxAreaTabPage&>(rPage).SetBitmapList( mpBitmapList ); - static_cast<SvxAreaTabPage&>(rPage).SetPageType( mnPageType ); - static_cast<SvxAreaTabPage&>(rPage).SetDlgType( 0 ); - static_cast<SvxAreaTabPage&>(rPage).SetPos( mnPos ); - static_cast<SvxAreaTabPage&>(rPage).SetAreaTP( &mbAreaTP ); + static_cast<SvxAreaTabPage&>(rPage).SetPatternList( mpPatternList ); + static_cast<SvxAreaTabPage&>(rPage).SetDrawModel( mpDrawModel ); static_cast<SvxAreaTabPage&>(rPage).SetGrdChgd( &mnGradientListState ); static_cast<SvxAreaTabPage&>(rPage).SetHtchChgd( &mnHatchingListState ); static_cast<SvxAreaTabPage&>(rPage).SetBmpChgd( &mnBitmapListState ); static_cast<SvxAreaTabPage&>(rPage).SetColorChgd( &mnColorListState ); - static_cast<SvxAreaTabPage&>(rPage).Construct(); // ActivatePge() is not called the first time static_cast<SvxAreaTabPage&>(rPage).ActivatePage( mrOutAttrs ); } else if (nId == m_nShadowTabPage) { static_cast<SvxShadowTabPage&>(rPage).SetColorList( mpColorList ); - static_cast<SvxShadowTabPage&>(rPage).SetPageType( mnPageType ); - static_cast<SvxShadowTabPage&>(rPage).SetDlgType( 0 ); - static_cast<SvxShadowTabPage&>(rPage).SetAreaTP( &mbAreaTP ); static_cast<SvxShadowTabPage&>(rPage).SetColorChgd( &mnColorListState ); static_cast<SvxShadowTabPage&>(rPage).Construct(); } @@ -287,10 +279,7 @@ void SvxAreaTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) { static_cast<SvxGradientTabPage&>(rPage).SetColorList( mpColorList ); static_cast<SvxGradientTabPage&>(rPage).SetGradientList( mpGradientList ); - static_cast<SvxGradientTabPage&>(rPage).SetPageType( &mnPageType ); - static_cast<SvxGradientTabPage&>(rPage).SetDlgType( 0 ); static_cast<SvxGradientTabPage&>(rPage).SetPos( &mnPos ); - static_cast<SvxGradientTabPage&>(rPage).SetAreaTP( &mbAreaTP ); static_cast<SvxGradientTabPage&>(rPage).SetGrdChgd( &mnGradientListState ); static_cast<SvxGradientTabPage&>(rPage).SetColorChgd( &mnColorListState ); static_cast<SvxGradientTabPage&>(rPage).Construct(); @@ -299,10 +288,7 @@ void SvxAreaTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) { static_cast<SvxHatchTabPage&>(rPage).SetColorList( mpColorList ); static_cast<SvxHatchTabPage&>(rPage).SetHatchingList( mpHatchingList ); - static_cast<SvxHatchTabPage&>(rPage).SetPageType( &mnPageType ); - static_cast<SvxHatchTabPage&>(rPage).SetDlgType( 0 ); static_cast<SvxHatchTabPage&>(rPage).SetPos( &mnPos ); - static_cast<SvxHatchTabPage&>(rPage).SetAreaTP( &mbAreaTP ); static_cast<SvxHatchTabPage&>(rPage).SetHtchChgd( &mnHatchingListState ); static_cast<SvxHatchTabPage&>(rPage).SetColorChgd( &mnColorListState ); static_cast<SvxHatchTabPage&>(rPage).Construct(); @@ -310,10 +296,7 @@ void SvxAreaTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) else if (nId == m_nBitmapTabPage ) { static_cast<SvxBitmapTabPage&>(rPage).SetBitmapList( mpBitmapList ); - static_cast<SvxBitmapTabPage&>(rPage).SetPageType( &mnPageType ); - static_cast<SvxBitmapTabPage&>(rPage).SetDlgType( 0 ); static_cast<SvxBitmapTabPage&>(rPage).SetPos( &mnPos ); - static_cast<SvxBitmapTabPage&>(rPage).SetAreaTP( &mbAreaTP ); static_cast<SvxBitmapTabPage&>(rPage).SetBmpChgd( &mnBitmapListState ); static_cast<SvxBitmapTabPage&>(rPage).Construct(); } @@ -321,10 +304,7 @@ void SvxAreaTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) { static_cast<SvxPatternTabPage&>(rPage).SetColorList( mpColorList ); static_cast<SvxPatternTabPage&>(rPage).SetPatternList( mpPatternList ); - static_cast<SvxPatternTabPage&>(rPage).SetPageType( &mnPageType ); - static_cast<SvxPatternTabPage&>(rPage).SetDlgType( 0 ); static_cast<SvxPatternTabPage&>(rPage).SetPos( &mnPos ); - static_cast<SvxPatternTabPage&>(rPage).SetAreaTP( &mbAreaTP ); static_cast<SvxPatternTabPage&>(rPage).SetPtrnChgd( &mnPatternListState ); static_cast<SvxPatternTabPage&>(rPage).SetColorChgd( &mnColorListState ); static_cast<SvxPatternTabPage&>(rPage).Construct(); @@ -332,18 +312,10 @@ void SvxAreaTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) else if (nId == m_nColorTabPage) { static_cast<SvxColorTabPage&>(rPage).SetColorList( mpColorList ); - static_cast<SvxColorTabPage&>(rPage).SetPageType( &mnPageType ); - static_cast<SvxColorTabPage&>(rPage).SetDlgType( 0 ); static_cast<SvxColorTabPage&>(rPage).SetPos( &mnPos ); - static_cast<SvxColorTabPage&>(rPage).SetAreaTP( &mbAreaTP ); static_cast<SvxColorTabPage&>(rPage).SetColorChgd( &mnColorListState ); static_cast<SvxColorTabPage&>(rPage).Construct(); } - else if (nId == m_nTransparenceTabPage) - { - static_cast<SvxTransparenceTabPage&>(rPage).SetPageType( mnPageType ); - static_cast<SvxTransparenceTabPage&>(rPage).SetDlgType( 0 ); - } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/source/tabpages/tparea.cxx b/cui/source/tabpages/tparea.cxx index d89945dbd8e3..c9b66a189195 100644 --- a/cui/source/tabpages/tparea.cxx +++ b/cui/source/tabpages/tparea.cxx @@ -39,17 +39,24 @@ #include <svl/intitem.hxx> #include <sfx2/request.hxx> #include "paragrph.hrc" - -//UUUU +#include <sfx2/tabdlg.hxx> #include "sfx2/opengrf.hxx" #include <vcl/layout.hxx> -#define DEFAULT_GRADIENTSTEP 64 - using namespace com::sun::star; // static ---------------------------------------------------------------- +enum FillType +{ + TRANSPARENT, + SOLID, + GRADIENT, + HATCH, + BITMAP, + PATTERN +}; + const sal_uInt16 SvxAreaTabPage::pAreaRanges[] = { XATTR_GRADIENTSTEPCOUNT, @@ -71,91 +78,50 @@ SvxAreaTabPage::SvxAreaTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs "AreaTabPage", "cui/ui/areatabpage.ui", rInAttrs ), - m_rOutAttrs (rInAttrs ), - + m_pFillTabPage( nullptr ), m_pColorList( nullptr ), m_pGradientList( nullptr ), m_pHatchingList( nullptr ), m_pBitmapList( nullptr ), + m_pPatternList( nullptr ), // local fixed not o be changed values for local pointers maFixed_ChangeType(ChangeType::NONE), - maFixed_sal_Bool(false), // init with pointers to fixed ChangeType m_pnColorListState(&maFixed_ChangeType), m_pnBitmapListState(&maFixed_ChangeType), + m_pnPatternListState(&maFixed_ChangeType), m_pnGradientListState(&maFixed_ChangeType), m_pnHatchingListState(&maFixed_ChangeType), - - m_nPageType(PageType::Area), - m_nDlgType(0), m_nPos(0), - - // init with pointer to fixed bool - m_pbAreaTP(&maFixed_sal_Bool), - m_aXFillAttr ( rInAttrs.GetPool() ), m_rXFSet ( m_aXFillAttr.GetItemSet() ) { - get(m_pTypeLB,"LB_AREA_TYPE"); - get(m_pFillLB,"boxLB_FILL"); - get(m_pLbColor,"LB_COLOR"); - get(m_pLbGradient,"LB_GRADIENT"); - get(m_pLbHatching,"LB_HATCHING"); - get(m_pLbBitmap,"LB_BITMAP"); - get(m_pCtlBitmapPreview,"CTL_BITMAP_PREVIEW"); - get(m_pCtlXRectPreview,"CTL_COLOR_PREVIEW"); - - - // groups that overlay each other - m_pLbBitmap->Hide(); - m_pCtlBitmapPreview->Hide(); - - // this page needs ExchangeSupport - SetExchangeSupport(); - - // get PoolUnit - SfxItemPool* pPool = m_rOutAttrs.GetPool(); - DBG_ASSERT( pPool, "Wo ist der Pool?" ); - m_ePoolUnit = pPool->GetMetric( XATTR_FILLBMP_SIZEX ); - - // setting the output device - m_rXFSet.Put( XFillStyleItem( drawing::FillStyle_SOLID ) ); - m_rXFSet.Put( XFillColorItem( OUString(), COL_BLACK ) ); - m_pCtlXRectPreview->SetAttributes( m_aXFillAttr.GetItemSet() ); - m_pCtlBitmapPreview->SetAttributes( m_aXFillAttr.GetItemSet() ); - - m_pLbColor->SetSelectHdl( LINK( this, SvxAreaTabPage, ModifyColorHdl_Impl ) ); - m_pLbGradient->SetSelectHdl( LINK( this, SvxAreaTabPage, ModifyGradientHdl_Impl ) ); - m_pLbHatching->SetSelectHdl( LINK( this, SvxAreaTabPage, ModifyHatchingHdl_Impl ) ); - m_pLbBitmap->SetSelectHdl( LINK( this, SvxAreaTabPage, ModifyBitmapHdl_Impl ) ); - - m_pTypeLB->SetSelectHdl( LINK( this, SvxAreaTabPage, SelectDialogTypeHdl_Impl ) ); - - // #i76307# always paint the preview in LTR, because this is what the document does - m_pCtlXRectPreview->EnableRTL(false); - - // Calculate size of dropdown listboxes - Size aSize = LogicToPixel(Size(108, 103), MapUnit::MapAppFont); - - m_pLbColor->set_width_request(aSize.Width()); - m_pLbColor->set_height_request(aSize.Height()); - //m_pLbColor-> - - m_pLbGradient->set_width_request(aSize.Width()); - m_pLbGradient->set_height_request(aSize.Height()); - m_pLbHatching->set_width_request(aSize.Width()); - m_pLbHatching->set_height_request(aSize.Height()); - m_pLbBitmap->set_width_request(aSize.Width()); - m_pLbBitmap->set_height_request(aSize.Height()); - - // Calculate size of display boxes - Size aSize2 = LogicToPixel(Size(110, 42), MapUnit::MapAppFont); - m_pCtlBitmapPreview->set_width_request(aSize2.Width()); - m_pCtlBitmapPreview->set_height_request(aSize2.Height()); - m_pCtlXRectPreview->set_width_request(aSize2.Width()); - m_pCtlXRectPreview->set_height_request(aSize2.Height()); + + get(m_pBtnNone, "btnnone"); + get(m_pBtnColor, "btncolor"); + get(m_pBtnGradient, "btngradient"); + get(m_pBtnHatch, "btnhatch"); + get(m_pBtnBitmap, "btnbitmap"); + get(m_pBtnPattern, "btnpattern"); + get(m_pFillTab, "fillstylebox"); + maBox.AddButton( m_pBtnNone ); + maBox.AddButton( m_pBtnColor ); + maBox.AddButton( m_pBtnGradient ); + maBox.AddButton( m_pBtnHatch ); + maBox.AddButton( m_pBtnBitmap ); + maBox.AddButton( m_pBtnPattern ); + Link< Button*, void > aLink = LINK(this, SvxAreaTabPage, SelectFillTypeHdl_Impl); + m_pBtnNone->SetClickHdl(aLink); + m_pBtnColor->SetClickHdl(aLink); + m_pBtnGradient->SetClickHdl(aLink); + m_pBtnHatch->SetClickHdl(aLink); + m_pBtnBitmap->SetClickHdl(aLink); + m_pBtnPattern->SetClickHdl(aLink); + + m_pFillTab->set_width_request(700); + m_pFillTab->set_height_request(400); } SvxAreaTabPage::~SvxAreaTabPage() @@ -165,504 +131,187 @@ SvxAreaTabPage::~SvxAreaTabPage() void SvxAreaTabPage::dispose() { - m_pTypeLB.clear(); - m_pFillLB.clear(); - m_pLbColor.clear(); - m_pLbGradient.clear(); - m_pLbHatching.clear(); - m_pLbBitmap.clear(); - m_pCtlBitmapPreview.clear(); - m_pCtlXRectPreview.clear(); + m_pBtnNone.clear(); + m_pBtnColor.clear(); + m_pBtnGradient.clear(); + m_pBtnHatch.clear(); + m_pBtnBitmap.clear(); + m_pBtnPattern.clear(); + m_pFillTab.clear(); + m_pFillTabPage.disposeAndClear(); SvxTabPage::dispose(); } -void SvxAreaTabPage::Construct() -{ - // fill colortables / lists - m_pLbColor->Fill( m_pColorList ); - m_pLbGradient->Fill( m_pGradientList ); - m_pLbHatching->Fill( m_pHatchingList ); - m_pLbBitmap->Fill( m_pBitmapList ); -} - - void SvxAreaTabPage::ActivatePage( const SfxItemSet& rSet ) { - sal_Int32 nCount(0); - const SfxUInt16Item* pPageTypeItem = rSet.GetItem<SfxUInt16Item>(SID_PAGE_TYPE, false); - const SfxUInt16Item* pPosItem = rSet.GetItem<SfxUInt16Item>(SID_TABPAGE_POS, false); - if (pPageTypeItem) - SetPageType((PageType) pPageTypeItem->GetValue()); - if (pPosItem) - SetPos(pPosItem->GetValue()); - if( m_nDlgType == 0 ) // area dialog + drawing::FillStyle eXFS = drawing::FillStyle_NONE; + if( rSet.GetItemState( XATTR_FILLSTYLE ) != SfxItemState::DONTCARE ) { - *m_pbAreaTP = true; - - if( m_pColorList.is() ) - { - //UUUU use evtl. previously selected entry to avoid changing values just by - // switching TabPages in dialogs using this TabPage - sal_Int32 _nPos(m_nPos); - - if( *m_pnBitmapListState != ChangeType::NONE ) - { - if( *m_pnBitmapListState & ChangeType::CHANGED ) - m_pBitmapList = static_cast<SvxAreaTabDialog*>( GetParentDialog() )->GetNewBitmapList(); - - _nPos = m_pLbBitmap->GetSelectEntryPos(); - - m_pLbBitmap->Clear(); - m_pLbBitmap->Fill( m_pBitmapList ); - nCount = m_pLbBitmap->GetEntryCount(); - if( nCount == 0 ) - ; // This case should never occur - else if( nCount <= _nPos ) - m_pLbBitmap->SelectEntryPos( 0 ); - else - m_pLbBitmap->SelectEntryPos( _nPos ); - } - - if( *m_pnHatchingListState != ChangeType::NONE ) - { - if( *m_pnHatchingListState & ChangeType::CHANGED ) - m_pHatchingList = static_cast<SvxAreaTabDialog*>( GetParentDialog() )->GetNewHatchingList(); - - _nPos = m_pLbHatching->GetSelectEntryPos(); - - m_pLbHatching->Clear(); - m_pLbHatching->Fill( m_pHatchingList ); - nCount = m_pLbHatching->GetEntryCount(); - if( nCount == 0 ) - ; // This case should never occur - else if( nCount <= _nPos ) - m_pLbHatching->SelectEntryPos( 0 ); - else - m_pLbHatching->SelectEntryPos( _nPos ); - ModifyHatchingHdl_Impl( *m_pLbHatching ); - } - - if( *m_pnGradientListState != ChangeType::NONE ) - { - if( *m_pnGradientListState & ChangeType::CHANGED ) - m_pGradientList = static_cast<SvxAreaTabDialog*>( GetParentDialog() )->GetNewGradientList(); - - _nPos = m_pLbGradient->GetSelectEntryPos(); - - m_pLbGradient->Clear(); - m_pLbGradient->Fill( m_pGradientList ); - nCount = m_pLbGradient->GetEntryCount(); - if( nCount == 0 ) - ; // This case should never occur - else if( nCount <= _nPos ) - m_pLbGradient->SelectEntryPos( 0 ); - else - m_pLbGradient->SelectEntryPos( _nPos ); - ModifyGradientHdl_Impl( *m_pLbGradient ); - } - - if( *m_pnColorListState != ChangeType::NONE ) - { - if( *m_pnColorListState & ChangeType::CHANGED ) - m_pColorList = static_cast<SvxAreaTabDialog*>( GetParentDialog() )->GetNewColorList(); - // aLbColor - _nPos = m_pLbColor->GetSelectEntryPos(); - m_pLbColor->Clear(); - m_pLbColor->Fill( m_pColorList ); - nCount = m_pLbColor->GetEntryCount(); - if( nCount == 0 ) - ; // This case should never occur - else if( nCount <= _nPos ) - m_pLbColor->SelectEntryPos( 0 ); - else - m_pLbColor->SelectEntryPos( _nPos ); - - ModifyColorHdl_Impl( *m_pLbColor ); - } - - // evaluate if any other Tabpage set another filltype - if( m_pTypeLB->GetSelectEntryPos() > drawing::FillStyle_NONE) - { - switch( m_nPageType ) - { - case PageType::Gradient: - m_pTypeLB->SelectEntryPos( drawing::FillStyle_GRADIENT ); - m_pLbGradient->SelectEntryPos( _nPos ); - ClickGradientHdl_Impl(); - break; - - case PageType::Hatch: - m_pTypeLB->SelectEntryPos( drawing::FillStyle_HATCH ); - m_pLbHatching->SelectEntryPos( _nPos ); - ClickHatchingHdl_Impl(); - break; - - case PageType::Bitmap: - m_pTypeLB->SelectEntryPos( drawing::FillStyle_BITMAP ); - m_pLbBitmap->SelectEntryPos( _nPos ); - ClickBitmapHdl_Impl(); - break; - - case PageType::Color: - m_pTypeLB->SelectEntryPos( drawing::FillStyle_SOLID ); - m_pLbColor->SelectEntryPos( _nPos ); - ClickColorHdl_Impl(); - break; - default: break; - } - } - m_nPageType = PageType::Area; - } + eXFS = (drawing::FillStyle) ( static_cast<const XFillStyleItem&>( rSet.Get( GetWhich( XATTR_FILLSTYLE ) ) ).GetValue() ); } -} - - -DeactivateRC SvxAreaTabPage::DeactivatePage( SfxItemSet* _pSet ) -{ - if( m_nDlgType == 0 ) // area dialog + switch(eXFS) { - sal_Int32 nPosOrig = m_nPos; - drawing::FillStyle eStyle = (drawing::FillStyle) m_pTypeLB->GetSelectEntryPos(); - switch( eStyle ) + default: + case drawing::FillStyle_NONE: { - case drawing::FillStyle_GRADIENT: - { - m_nPageType = PageType::Gradient; - m_nPos = m_pLbGradient->GetSelectEntryPos(); - if( nPosOrig != m_nPos ) - *m_pnGradientListState |= ChangeType::MODIFIED; - } + SelectFillTypeHdl_Impl( m_pBtnNone ); break; - case drawing::FillStyle_HATCH: - { - m_nPageType = PageType::Hatch; - m_nPos = m_pLbHatching->GetSelectEntryPos(); - if( nPosOrig != m_nPos ) - *m_pnHatchingListState |= ChangeType::MODIFIED; - } + } + case drawing::FillStyle_SOLID: + { + m_rXFSet.Put( static_cast<const XFillColorItem&>( rSet.Get( GetWhich( XATTR_FILLCOLOR ) ) ) ); + SelectFillTypeHdl_Impl( m_pBtnColor ); break; - case drawing::FillStyle_BITMAP: - { - m_nPageType = PageType::Bitmap; - m_nPos = m_pLbBitmap->GetSelectEntryPos(); - if( nPosOrig != m_nPos ) - *m_pnBitmapListState |= ChangeType::MODIFIED; - } + } + case drawing::FillStyle_GRADIENT: + { + m_rXFSet.Put( static_cast<const XFillGradientItem&>( rSet.Get( GetWhich( XATTR_FILLGRADIENT ) ) ) ); + SelectFillTypeHdl_Impl( m_pBtnGradient ); break; - case drawing::FillStyle_SOLID: - { - m_nPageType = PageType::Color; - m_nPos = m_pLbColor->GetSelectEntryPos(); - if( nPosOrig != m_nPos ) - *m_pnColorListState |= ChangeType::MODIFIED; - } + } + case drawing::FillStyle_HATCH: + { + m_rXFSet.Put( static_cast<const XFillHatchItem&>( rSet.Get(XATTR_FILLHATCH) ) ); + SelectFillTypeHdl_Impl( m_pBtnHatch ); + break; + } + case drawing::FillStyle_BITMAP: + { + XFillBitmapItem aItem(static_cast<const XFillBitmapItem&>( rSet.Get( GetWhich( XATTR_FILLBITMAP ) ) )); + m_rXFSet.Put( aItem ); + if(!aItem.isPattern()) + SelectFillTypeHdl_Impl( m_pBtnBitmap ); + else + SelectFillTypeHdl_Impl( m_pBtnPattern ); break; - default: ;//prevent warning } } - - if( _pSet ) - FillItemSet( _pSet ); - - return DeactivateRC::LeavePage; } - -bool SvxAreaTabPage::FillItemSet( SfxItemSet* rAttrs ) +template< typename TTabPage > +DeactivateRC SvxAreaTabPage::DeactivatePage_Impl( SfxItemSet* _pSet ) { - sal_Int32 _nPos; - bool bModified = false; + return static_cast<TTabPage&>(*m_pFillTabPage).DeactivatePage(_pSet); +} - if( m_nDlgType != 0 || *m_pbAreaTP ) +DeactivateRC SvxAreaTabPage::DeactivatePage( SfxItemSet* _pSet ) +{ + FillType eFillType = static_cast<FillType>(maBox.GetCurrentButtonPos()); + switch( eFillType ) { - const SfxPoolItem* pOld = nullptr; - drawing::FillStyle eStyle = (drawing::FillStyle) m_pTypeLB->GetSelectEntryPos(); - drawing::FillStyle eSavedStyle = (drawing::FillStyle) m_pTypeLB->GetSavedValue(); - switch( eStyle ) + case SOLID: { - default: - case drawing::FillStyle_NONE: - { - if( eSavedStyle != eStyle ) - { - XFillStyleItem aStyleItem( drawing::FillStyle_NONE ); - pOld = GetOldItem( *rAttrs, XATTR_FILLSTYLE ); - if ( !pOld || !( *static_cast<const XFillStyleItem*>(pOld) == aStyleItem ) ) - { - rAttrs->Put( aStyleItem ); - bModified = true; - } - } - } + return DeactivatePage_Impl<SvxColorTabPage>(_pSet); break; - case drawing::FillStyle_SOLID: - { - _nPos = m_pLbColor->GetSelectEntryPos(); - if( _nPos != LISTBOX_ENTRY_NOTFOUND && - m_pLbColor->IsValueChangedFromSaved() ) - { - XFillColorItem aItem( m_pLbColor->GetSelectEntry(), - m_pLbColor->GetSelectEntryColor() ); - pOld = GetOldItem( *rAttrs, XATTR_FILLCOLOR ); - if ( !pOld || !( *static_cast<const XFillColorItem*>(pOld) == aItem ) ) - { - rAttrs->Put( aItem ); - bModified = true; - } - } - // NEW - if( (eSavedStyle != eStyle) && - ( bModified || - SfxItemState::SET == m_rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ) ) ) ) - { - XFillStyleItem aStyleItem( drawing::FillStyle_SOLID ); - pOld = GetOldItem( *rAttrs, XATTR_FILLSTYLE ); - if ( !pOld || !( *static_cast<const XFillStyleItem*>(pOld) == aStyleItem ) ) - { - rAttrs->Put( aStyleItem ); - bModified = true; - } - } - } + } + case GRADIENT: + { + return DeactivatePage_Impl<SvxGradientTabPage>(_pSet); break; - case drawing::FillStyle_GRADIENT: - { - _nPos = m_pLbGradient->GetSelectEntryPos(); - if( _nPos != LISTBOX_ENTRY_NOTFOUND && - m_pLbGradient->IsValueChangedFromSaved() ) - { - XGradient aGradient = m_pGradientList->GetGradient( _nPos )->GetGradient(); - OUString aString = m_pLbGradient->GetSelectEntry(); - XFillGradientItem aItem( aString, aGradient ); - pOld = GetOldItem( *rAttrs, XATTR_FILLGRADIENT ); - if ( !pOld || !( *static_cast<const XFillGradientItem*>(pOld) == aItem ) ) - { - rAttrs->Put( aItem ); - bModified = true; - } - } - // NEW - if( (eSavedStyle != eStyle) && - ( bModified || - SfxItemState::SET == m_rOutAttrs.GetItemState( GetWhich( XATTR_FILLGRADIENT ) ) ) ) - { - XFillStyleItem aStyleItem( drawing::FillStyle_GRADIENT ); - pOld = GetOldItem( *rAttrs, XATTR_FILLSTYLE ); - if ( !pOld || !( *static_cast<const XFillStyleItem*>(pOld) == aStyleItem ) ) - { - rAttrs->Put( aStyleItem ); - bModified = true; - } - } - } + } + case HATCH: + { + return DeactivatePage_Impl<SvxHatchTabPage>(_pSet); break; - case drawing::FillStyle_HATCH: - { - _nPos = m_pLbHatching->GetSelectEntryPos(); - if( _nPos != LISTBOX_ENTRY_NOTFOUND && - m_pLbHatching->IsValueChangedFromSaved() ) - { - XHatch aHatching = m_pHatchingList->GetHatch( _nPos )->GetHatch(); - OUString aString = m_pLbHatching->GetSelectEntry(); - XFillHatchItem aItem( aString, aHatching ); - pOld = GetOldItem( *rAttrs, XATTR_FILLHATCH ); - if ( !pOld || !( *static_cast<const XFillHatchItem*>(pOld) == aItem ) ) - { - rAttrs->Put( aItem ); - bModified = true; - } - } - // NEW - if( (eSavedStyle != eStyle) && - ( bModified || - SfxItemState::SET == m_rOutAttrs.GetItemState( GetWhich( XATTR_FILLHATCH ) ) ) ) - { - XFillStyleItem aStyleItem( drawing::FillStyle_HATCH ); - pOld = GetOldItem( *rAttrs, XATTR_FILLSTYLE ); - if ( !pOld || !( *static_cast<const XFillStyleItem*>(pOld) == aStyleItem ) ) - { - rAttrs->Put( aStyleItem ); - bModified = true; - } - } - } + } + case BITMAP: + { + return DeactivatePage_Impl<SvxBitmapTabPage&>(_pSet); break; - case drawing::FillStyle_BITMAP: - { - //UUUU - m_nPos = m_pLbBitmap->GetSelectEntryPos(); - if( m_nPos != LISTBOX_ENTRY_NOTFOUND && - m_pLbBitmap->IsValueChangedFromSaved() ) - { - const XBitmapEntry* pXBitmapEntry = m_pBitmapList->GetBitmap(m_nPos); - const OUString aString(m_pLbBitmap->GetSelectEntry()); - const XFillBitmapItem aFillBitmapItem(aString, pXBitmapEntry->GetGraphicObject()); - pOld = GetOldItem( *rAttrs, XATTR_FILLBITMAP ); - if ( !pOld || !( *static_cast<const XFillBitmapItem*>(pOld) == aFillBitmapItem ) ) - { - rAttrs->Put( aFillBitmapItem ); - bModified = true; - } - } - // NEW - if( (eSavedStyle != eStyle) && - ( bModified || - SfxItemState::SET == m_rOutAttrs.GetItemState( GetWhich( XATTR_FILLBITMAP ) ) ) ) - { - XFillStyleItem aStyleItem( drawing::FillStyle_BITMAP ); - pOld = GetOldItem( *rAttrs, XATTR_FILLSTYLE ); - if ( !pOld || !( *static_cast<const XFillStyleItem*>(pOld) == aStyleItem ) ) - { - rAttrs->Put( aStyleItem ); - bModified = true; - } - } - } + } + case PATTERN: + { + return DeactivatePage_Impl<SvxPatternTabPage>(_pSet); break; } - rAttrs->Put (SfxUInt16Item(SID_PAGE_TYPE, (sal_uInt16)m_nPageType)); - rAttrs->Put (SfxUInt16Item(SID_TABPAGE_POS,m_nPos)); + default: + break; } - - return bModified; + return DeactivateRC::LeavePage; } +template< typename TTabPage > +bool SvxAreaTabPage::FillItemSet_Impl( SfxItemSet* rAttrs) +{ + return static_cast<TTabPage&>( *m_pFillTabPage ).FillItemSet( rAttrs ); +} -void SvxAreaTabPage::Reset( const SfxItemSet* rAttrs ) +bool SvxAreaTabPage::FillItemSet( SfxItemSet* rAttrs ) { - bool isMissingHatching(false); - bool isMissingGradient(false); - bool isMissingBitmap(false); - drawing::FillStyle eXFS = drawing::FillStyle_NONE; - if( rAttrs->GetItemState( XATTR_FILLSTYLE ) != SfxItemState::DONTCARE ) + FillType eFillType = static_cast<FillType>(maBox.GetCurrentButtonPos()); + switch( eFillType ) { - eXFS = (drawing::FillStyle) ( static_cast<const XFillStyleItem&>( rAttrs-> - Get( GetWhich( XATTR_FILLSTYLE ) ) ).GetValue() ); - m_pTypeLB->SelectEntryPos( sal::static_int_cast< sal_Int32 >( eXFS ) ); - - if (SfxItemState::DONTCARE != rAttrs->GetItemState(XATTR_FILLCOLOR)) + case TRANSPARENT: { - XFillColorItem const& rColorItem(static_cast<const XFillColorItem&>( - rAttrs->Get(XATTR_FILLCOLOR)) ); - m_pLbColor->SelectEntry( rColorItem.GetColorValue() ); + rAttrs->Put( XFillStyleItem( drawing::FillStyle_NONE ) ); + return true; } - - SfxItemState const eGradState(rAttrs->GetItemState(XATTR_FILLGRADIENT)); - XFillGradientItem const* pGradientItem(nullptr); - if (SfxItemState::DONTCARE != eGradState) + case SOLID: { - pGradientItem = &static_cast<const XFillGradientItem&>( - rAttrs->Get(XATTR_FILLGRADIENT)); - OUString const aString( pGradientItem->GetName() ); - XGradient const aGradient( pGradientItem->GetGradientValue() ); - m_pLbGradient->SelectEntryByList(m_pGradientList, aString, aGradient); - } - if (!m_pLbGradient->GetSelectEntryCount() - && (SfxItemState::DEFAULT == eGradState - || (pGradientItem && pGradientItem->GetName().isEmpty()))) - { // avoid relying on pool default - cannot export that - m_pLbGradient->SelectEntryPos(0); // anything better than nothing - isMissingGradient = true; + return FillItemSet_Impl<SvxColorTabPage>( rAttrs ); } - - SfxItemState const eHatchState(rAttrs->GetItemState(XATTR_FILLHATCH)); - XFillHatchItem const* pHatch(nullptr); - if (SfxItemState::DONTCARE != eHatchState) + case GRADIENT: { - pHatch = &static_cast<const XFillHatchItem&>( - rAttrs->Get(XATTR_FILLHATCH)); - m_pLbHatching->SelectEntry(pHatch->GetName()); + return FillItemSet_Impl<SvxGradientTabPage>( rAttrs ); } - if (!m_pLbHatching->GetSelectEntryCount() - && (SfxItemState::DEFAULT == eHatchState - || (pHatch && pHatch->GetName().isEmpty()))) - { // avoid relying on pool default - cannot export that - m_pLbHatching->SelectEntryPos(0); // anything better than nothing - isMissingHatching = true; + case HATCH: + { + return FillItemSet_Impl<SvxHatchTabPage>( rAttrs ); } - - SfxItemState const eBitmapState(rAttrs->GetItemState(XATTR_FILLBITMAP)); - XFillBitmapItem const* pBitmapItem(nullptr); - if (SfxItemState::DONTCARE != eBitmapState) + case BITMAP: { - pBitmapItem = &static_cast<const XFillBitmapItem&>( - rAttrs->Get(XATTR_FILLBITMAP)); - m_pLbBitmap->SelectEntry(pBitmapItem->GetName()); + return FillItemSet_Impl<SvxBitmapTabPage>( rAttrs ); } - if (!m_pLbBitmap->GetSelectEntryCount() - && (SfxItemState::DEFAULT == eBitmapState - || (pBitmapItem && pBitmapItem->GetName().isEmpty()))) - { // avoid relying on pool default - cannot export that - m_pLbBitmap->SelectEntryPos(0); // anything better than nothing - isMissingBitmap = true; + case PATTERN: + { + return FillItemSet_Impl<SvxPatternTabPage>( rAttrs ); } + default: + return false; + } +} - switch( eXFS ) - { - case drawing::FillStyle_NONE: - ClickInvisibleHdl_Impl(); - break; +template< typename TTabPage > +void SvxAreaTabPage::Reset_Impl( const SfxItemSet* rAttrs ) +{ + static_cast<TTabPage&>( *m_pFillTabPage ).Reset( rAttrs ); +} - case drawing::FillStyle_SOLID: - ClickColorHdl_Impl(); +void SvxAreaTabPage::Reset( const SfxItemSet* rAttrs ) +{ + FillType eFillType = static_cast<FillType>(maBox.GetCurrentButtonPos()); + switch(eFillType) + { + case SOLID: + { + Reset_Impl<SvxColorTabPage>( rAttrs ); break; - - case drawing::FillStyle_GRADIENT: - ClickGradientHdl_Impl(); + } + case GRADIENT: + { + Reset_Impl<SvxGradientTabPage>( rAttrs ); break; - - case drawing::FillStyle_HATCH: - ClickHatchingHdl_Impl(); + } + case HATCH: + { + Reset_Impl<SvxHatchTabPage>( rAttrs ); break; - - case drawing::FillStyle_BITMAP: - { - ClickBitmapHdl_Impl(); - } + } + case BITMAP: + { + Reset_Impl<SvxBitmapTabPage>( rAttrs ); break; - - default: - assert(false); + } + case PATTERN: + { + Reset_Impl<SvxPatternTabPage>( rAttrs ); break; } + default: + break; } - else - { - // make all LBs not accessible - m_pFillLB->Hide(); - - m_pCtlBitmapPreview->Hide(); - m_pLbColor->Disable(); - m_pLbColor->Show(); - - // so that Reset() also works correctly with Back - m_pTypeLB->SetNoSelection(); - } - - if( m_pTypeLB->GetSelectEntryPos() == drawing::FillStyle_BITMAP ) - ClickBitmapHdl_Impl(); - - m_pTypeLB->SaveValue(); - if(eXFS == drawing::FillStyle_SOLID) - m_pLbColor->SaveValue(); - if (!isMissingGradient) - m_pLbGradient->SaveValue(); - if (!isMissingHatching) - m_pLbHatching->SaveValue(); - if (!isMissingBitmap) - m_pLbBitmap->SaveValue(); -} - -void SvxAreaTabPage::ChangesApplied() -{ - m_pTypeLB->SaveValue(); - m_pLbColor->SaveValue(); - m_pLbGradient->SaveValue(); - m_pLbHatching->SaveValue(); - m_pLbBitmap->SaveValue(); } - VclPtr<SfxTabPage> SvxAreaTabPage::Create( vcl::Window* pWindow, const SfxItemSet* rAttrs ) { @@ -670,245 +319,113 @@ VclPtr<SfxTabPage> SvxAreaTabPage::Create( vcl::Window* pWindow, } -IMPL_LINK_NOARG(SvxAreaTabPage, SelectDialogTypeHdl_Impl, ListBox&, void) +VclPtr<SfxTabPage> CreateFillStyleTabPage( sal_uInt16 nId, vcl::Window* pParent, const SfxItemSet& rSet ) { - switch( (drawing::FillStyle)m_pTypeLB->GetSelectEntryPos() ) + CreateTabPage fnCreate = nullptr; + switch(nId) { - default: - case drawing::FillStyle_NONE: ClickInvisibleHdl_Impl(); break; - case drawing::FillStyle_SOLID: ClickColorHdl_Impl(); break; - case drawing::FillStyle_GRADIENT: ClickGradientHdl_Impl(); break; - case drawing::FillStyle_HATCH: ClickHatchingHdl_Impl(); break; - case drawing::FillStyle_BITMAP: ClickBitmapHdl_Impl(); break; + case TRANSPARENT: fnCreate = nullptr; break; + case SOLID: fnCreate = &SvxColorTabPage::Create; break; + case GRADIENT: fnCreate = &SvxGradientTabPage::Create; break; + case HATCH: fnCreate = &SvxHatchTabPage::Create; break; + case BITMAP: fnCreate = &SvxBitmapTabPage::Create; break; + case PATTERN: fnCreate = &SvxPatternTabPage::Create; break; } + VclPtr<SfxTabPage> pRet = fnCreate ? (*fnCreate)( pParent, &rSet ) : nullptr; + return pRet; } -void SvxAreaTabPage::ClickInvisibleHdl_Impl() -{ - m_pFillLB->Hide(); - - m_pCtlXRectPreview->Hide(); - m_pCtlBitmapPreview->Hide(); - - m_rXFSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) ); - m_pCtlXRectPreview->SetAttributes( m_aXFillAttr.GetItemSet() ); - m_pCtlBitmapPreview->SetAttributes( m_aXFillAttr.GetItemSet() ); - - m_pCtlXRectPreview->Invalidate(); - m_pCtlBitmapPreview->Invalidate(); -} - - -void SvxAreaTabPage::ClickColorHdl_Impl() -{ - m_pFillLB->Show(); - m_pLbColor->Enable(); - m_pLbColor->Show(); - m_pLbGradient->Hide(); - m_pLbHatching->Hide(); - m_pLbBitmap->Hide(); - m_pCtlXRectPreview->Enable(); - m_pCtlXRectPreview->Show(); - m_pCtlBitmapPreview->Hide(); - - ModifyColorHdl_Impl( *m_pLbColor ); -} - - -IMPL_LINK_NOARG(SvxAreaTabPage, ModifyColorHdl_Impl, ListBox&, void) +IMPL_LINK(SvxAreaTabPage, SelectFillTypeHdl_Impl, Button*, pButton, void) { - const SfxPoolItem* pPoolItem = nullptr; - sal_Int32 _nPos = m_pLbColor->GetSelectEntryPos(); - if( _nPos != LISTBOX_ENTRY_NOTFOUND ) - { - m_rXFSet.Put( XFillStyleItem( drawing::FillStyle_SOLID ) ); - m_rXFSet.Put( XFillColorItem( OUString(), m_pLbColor->GetSelectEntryColor() ) ); - } - // NEW - else if( SfxItemState::SET == m_rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), true, &pPoolItem ) ) + sal_Int32 nPos = maBox.GetButtonPos( static_cast<PushButton*>(pButton) ); + if(nPos != -1 && nPos != maBox.GetCurrentButtonPos()) { - m_rXFSet.Put( XFillStyleItem( drawing::FillStyle_SOLID ) ); - Color aColor( static_cast<const XFillColorItem*>( pPoolItem )->GetColorValue() ); - m_rXFSet.Put( XFillColorItem( OUString(), aColor ) ); + maBox.SelectButton(static_cast<PushButton*>(pButton)); + FillType eFillType = static_cast<FillType>(maBox.GetCurrentButtonPos()); + m_pFillTabPage.disposeAndReset( CreateFillStyleTabPage(eFillType, m_pFillTab, m_rXFSet) ); + CreatePage( eFillType , *m_pFillTabPage); } - else - m_rXFSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) ); - - m_pCtlXRectPreview->SetAttributes( m_aXFillAttr.GetItemSet() ); - m_pCtlXRectPreview->Invalidate(); } - -void SvxAreaTabPage::ClickGradientHdl_Impl() -{ - m_pFillLB->Show(); - m_pLbColor->Hide(); - m_pLbGradient->Enable(); - m_pLbGradient->Show(); - m_pLbHatching->Hide(); - m_pLbBitmap->Hide(); - m_pCtlXRectPreview->Enable(); - m_pCtlXRectPreview->Show(); - m_pCtlBitmapPreview->Hide(); - - ModifyGradientHdl_Impl( *m_pLbGradient ); -} - - -IMPL_LINK_NOARG(SvxAreaTabPage, ModifyGradientHdl_Impl, ListBox&, void) +void SvxAreaTabPage::PageCreated(const SfxAllItemSet& aSet) { - const SfxPoolItem* pPoolItem = nullptr; - sal_Int32 _nPos = m_pLbGradient->GetSelectEntryPos(); - if( _nPos != LISTBOX_ENTRY_NOTFOUND ) - { - // fill ItemSet and pass it on to aCtlXRectPreview - const XGradientEntry* pEntry = m_pGradientList->GetGradient(_nPos); - - m_rXFSet.Put( XFillStyleItem( drawing::FillStyle_GRADIENT ) ); - m_rXFSet.Put( XFillGradientItem( OUString(), pEntry->GetGradient() ) ); - } - else if( SfxItemState::SET == m_rOutAttrs.GetItemState( GetWhich( XATTR_FILLGRADIENT ), true, &pPoolItem ) ) - { - m_rXFSet.Put( XFillStyleItem( drawing::FillStyle_GRADIENT ) ); - m_rXFSet.Put( XFillGradientItem( OUString(), static_cast<const XFillGradientItem*>( pPoolItem )->GetGradientValue() ) ); - } - else - m_rXFSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) ); - - sal_uInt16 nValue = static_cast<const XGradientStepCountItem&>( m_rOutAttrs.Get( XATTR_GRADIENTSTEPCOUNT ) ).GetValue(); - if( nValue == 0 ) - nValue = DEFAULT_GRADIENTSTEP; - m_rXFSet.Put( XGradientStepCountItem( nValue ) ); + const SvxColorListItem* pColorListItem = aSet.GetItem<SvxColorListItem>(SID_COLOR_TABLE, false); + const SvxGradientListItem* pGradientListItem = aSet.GetItem<SvxGradientListItem>(SID_GRADIENT_LIST, false); + const SvxHatchListItem* pHatchingListItem = aSet.GetItem<SvxHatchListItem>(SID_HATCH_LIST, false); + const SvxBitmapListItem* pBitmapListItem = aSet.GetItem<SvxBitmapListItem>(SID_BITMAP_LIST, false); - m_pCtlXRectPreview->SetAttributes( m_aXFillAttr.GetItemSet() ); - m_pCtlXRectPreview->Invalidate(); + if (pColorListItem) + SetColorList(pColorListItem->GetColorList()); + if (pGradientListItem) + SetGradientList(pGradientListItem->GetGradientList()); + if (pHatchingListItem) + SetHatchingList(pHatchingListItem->GetHatchList()); + if (pBitmapListItem) + SetBitmapList(pBitmapListItem->GetBitmapList()); } - -void SvxAreaTabPage::ClickHatchingHdl_Impl() +void SvxAreaTabPage::PointChanged( vcl::Window* , RectPoint ) { - m_pFillLB->Show(); - m_pLbColor->Hide(); - m_pLbGradient->Hide(); - m_pLbHatching->Enable(); - m_pLbHatching->Show(); - m_pLbBitmap->Hide(); - m_pCtlXRectPreview->Enable(); - m_pCtlXRectPreview->Show(); - m_pCtlBitmapPreview->Hide(); - - ModifyHatchingHdl_Impl( *m_pLbHatching ); } -IMPL_LINK_NOARG(SvxAreaTabPage, ModifyHatchingHdl_Impl, ListBox&, void) +void SvxAreaTabPage::CreatePage( sal_Int32 nId, SfxTabPage& pTab ) { - // fill Hatch ItemSet - const SfxPoolItem* pPoolItem = nullptr; - sal_Int32 _nPos = m_pLbHatching->GetSelectEntryPos(); - if( _nPos != LISTBOX_ENTRY_NOTFOUND ) + if(nId == SOLID ) { - // fill ItemSet and pass it on to aCtlXRectPreview - const XHatchEntry* pEntry = m_pHatchingList->GetHatch(_nPos); - - m_rXFSet.Put( XFillStyleItem( drawing::FillStyle_HATCH ) ); - m_rXFSet.Put( XFillHatchItem( OUString(), pEntry->GetHatch() ) ); + static_cast<SvxColorTabPage&>(pTab).SetColorList( m_pColorList ); + static_cast<SvxColorTabPage&>(pTab).SetPos( &m_nPos ); + static_cast<SvxColorTabPage&>(pTab).SetColorChgd( m_pnColorListState ); + static_cast<SvxColorTabPage&>(pTab).Construct(); + static_cast<SvxColorTabPage&>(pTab).ActivatePage( m_rXFSet ); + static_cast<SvxColorTabPage&>(pTab).Reset(&m_rXFSet); + static_cast<SvxColorTabPage&>(pTab).Show(); } - else if( SfxItemState::SET == m_rOutAttrs.GetItemState( GetWhich( XATTR_FILLHATCH ), true, &pPoolItem ) ) + else if(nId == GRADIENT) { - m_rXFSet.Put( XFillStyleItem( drawing::FillStyle_HATCH ) ); - m_rXFSet.Put( XFillHatchItem( OUString(), static_cast<const XFillHatchItem*>( pPoolItem )->GetHatchValue() ) ); + static_cast<SvxGradientTabPage&>(pTab).SetColorList( m_pColorList ); + static_cast<SvxGradientTabPage&>(pTab).SetGradientList( m_pGradientList ); + static_cast<SvxGradientTabPage&>(pTab).SetPos( &m_nPos ); + static_cast<SvxGradientTabPage&>(pTab).SetGrdChgd( m_pnGradientListState ); + static_cast<SvxGradientTabPage&>(pTab).SetColorChgd( m_pnColorListState ); + static_cast<SvxGradientTabPage&>(pTab).Construct(); + static_cast<SvxGradientTabPage&>(pTab).ActivatePage( m_rXFSet ); + static_cast<SvxGradientTabPage&>(pTab).Reset(&m_rXFSet); + static_cast<SvxGradientTabPage&>(pTab).Show(); } - else - m_rXFSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) ); - - // fill Hatch background ItemSet - XFillBackgroundItem aItem(static_cast<const XFillBackgroundItem&>(m_rOutAttrs.Get( XATTR_FILLBACKGROUND ))); - aItem.SetWhich( XATTR_FILLBACKGROUND ); - m_rXFSet.Put ( aItem ); - if(aItem.GetValue()) + else if(nId == HATCH) { - if( SfxItemState::SET == m_rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), true, &pPoolItem ) ) - { - Color aColor( static_cast<const XFillColorItem*>( pPoolItem )->GetColorValue() ); - m_rXFSet.Put( XFillColorItem( OUString(), aColor ) ); - } - else - m_rXFSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) ); + static_cast<SvxHatchTabPage&>(pTab).SetColorList( m_pColorList ); + static_cast<SvxHatchTabPage&>(pTab).SetHatchingList( m_pHatchingList ); + static_cast<SvxHatchTabPage&>(pTab).SetPos(&m_nPos); + static_cast<SvxHatchTabPage&>(pTab).SetHtchChgd( m_pnHatchingListState ); + static_cast<SvxHatchTabPage&>(pTab).SetColorChgd( m_pnColorListState ); + static_cast<SvxHatchTabPage&>(pTab).Construct(); + static_cast<SvxHatchTabPage&>(pTab).ActivatePage( m_rXFSet ); + static_cast<SvxHatchTabPage&>(pTab).Reset(&m_rXFSet); + static_cast<SvxHatchTabPage&>(pTab).Show(); } - - m_pCtlXRectPreview->SetAttributes( m_aXFillAttr.GetItemSet() ); - m_pCtlXRectPreview->Invalidate(); -} - -void SvxAreaTabPage::ClickBitmapHdl_Impl() -{ - m_pFillLB->Show(); - m_pLbColor->Hide(); - m_pLbGradient->Hide(); - m_pLbHatching->Hide(); - m_pLbBitmap->Show(); - m_pCtlBitmapPreview->Enable(); - m_pCtlBitmapPreview->Show(); - m_pCtlXRectPreview->Hide(); - - ModifyBitmapHdl_Impl( *m_pLbBitmap ); -} - - -IMPL_LINK_NOARG(SvxAreaTabPage, ModifyBitmapHdl_Impl, ListBox&, void) -{ - const SfxPoolItem* pPoolItem = nullptr; - sal_Int32 _nPos = m_pLbBitmap->GetSelectEntryPos(); - if( _nPos != LISTBOX_ENTRY_NOTFOUND ) + else if(nId == BITMAP) { - // fill ItemSet and pass it on to aCtlXRectPreview - const XBitmapEntry* pEntry = m_pBitmapList->GetBitmap(_nPos); - - m_rXFSet.Put(XFillStyleItem(drawing::FillStyle_BITMAP)); - m_rXFSet.Put(XFillBitmapItem(OUString(), pEntry->GetGraphicObject())); + static_cast<SvxBitmapTabPage&>(pTab).SetBitmapList( m_pBitmapList ); + static_cast<SvxBitmapTabPage&>(pTab).SetPos( &m_nPos ); + static_cast<SvxBitmapTabPage&>(pTab).SetBmpChgd( m_pnBitmapListState ); + static_cast<SvxBitmapTabPage&>(pTab).Construct(); + static_cast<SvxBitmapTabPage&>(pTab).ActivatePage( m_rXFSet ); + static_cast<SvxBitmapTabPage&>(pTab).Reset(&m_rXFSet); + static_cast<SvxBitmapTabPage&>(pTab).Show(); } - else if( SfxItemState::SET == m_rOutAttrs.GetItemState( GetWhich( XATTR_FILLBITMAP ), true, &pPoolItem ) ) + else if(nId == PATTERN) { - m_rXFSet.Put(XFillStyleItem(drawing::FillStyle_BITMAP)); - m_rXFSet.Put(XFillBitmapItem(OUString(), static_cast<const XFillBitmapItem*>(pPoolItem)->GetGraphicObject())); + static_cast<SvxPatternTabPage&>(pTab).SetColorList( m_pColorList ); + static_cast<SvxPatternTabPage&>(pTab).SetPatternList( m_pPatternList ); + static_cast<SvxPatternTabPage&>(pTab).SetPos( &m_nPos ); + static_cast<SvxPatternTabPage&>(pTab).SetPtrnChgd( m_pnPatternListState ); + static_cast<SvxPatternTabPage&>(pTab).SetColorChgd( m_pnColorListState ); + static_cast<SvxPatternTabPage&>(pTab).Construct(); + static_cast<SvxPatternTabPage&>(pTab).ActivatePage( m_rXFSet ); + static_cast<SvxPatternTabPage&>(pTab).Reset( &m_rXFSet ); + static_cast<SvxPatternTabPage&>(pTab).Show(); } - else - m_rXFSet.Put( XFillStyleItem( drawing::FillStyle_NONE ) ); - - m_pCtlBitmapPreview->SetAttributes( m_aXFillAttr.GetItemSet() ); - m_pCtlBitmapPreview->Invalidate(); -} - -void SvxAreaTabPage::PointChanged( vcl::Window* , RectPoint ) -{ -} - -void SvxAreaTabPage::PageCreated(const SfxAllItemSet& aSet) -{ - const SvxColorListItem* pColorListItem = aSet.GetItem<SvxColorListItem>(SID_COLOR_TABLE, false); - const SvxGradientListItem* pGradientListItem = aSet.GetItem<SvxGradientListItem>(SID_GRADIENT_LIST, false); - const SvxHatchListItem* pHatchingListItem = aSet.GetItem<SvxHatchListItem>(SID_HATCH_LIST, false); - const SvxBitmapListItem* pBitmapListItem = aSet.GetItem<SvxBitmapListItem>(SID_BITMAP_LIST, false); - const SfxUInt16Item* pPageTypeItem = aSet.GetItem<SfxUInt16Item>(SID_PAGE_TYPE, false); - const SfxUInt16Item* pDlgTypeItem = aSet.GetItem<SfxUInt16Item>(SID_DLG_TYPE, false); - const SfxUInt16Item* pPosItem = aSet.GetItem<SfxUInt16Item>(SID_TABPAGE_POS, false); - - if (pColorListItem) - SetColorList(pColorListItem->GetColorList()); - if (pGradientListItem) - SetGradientList(pGradientListItem->GetGradientList()); - if (pHatchingListItem) - SetHatchingList(pHatchingListItem->GetHatchList()); - if (pBitmapListItem) - SetBitmapList(pBitmapListItem->GetBitmapList()); - if (pPageTypeItem) - SetPageType((PageType) pPageTypeItem->GetValue()); - if (pDlgTypeItem) - SetDlgType(pDlgTypeItem->GetValue()); - if (pPosItem) - SetPos(pPosItem->GetValue()); - - Construct(); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/source/tabpages/tpbitmap.cxx b/cui/source/tabpages/tpbitmap.cxx index 55f8ea55a82e..a462892a88b8 100644 --- a/cui/source/tabpages/tpbitmap.cxx +++ b/cui/source/tabpages/tpbitmap.cxx @@ -84,15 +84,12 @@ SvxBitmapTabPage::SvxBitmapTabPage( vcl::Window* pParent, const SfxItemSet& rInA m_aXBitmapItem( OUString(), Graphic() ), m_fObjectWidth(0.0), m_fObjectHeight(0.0), - m_nPageType(nullptr), - m_nDlgType(0), - m_nPos(nullptr), - - m_pbAreaTP( nullptr ), + m_pPos(nullptr), m_aXFillAttr ( rInAttrs.GetPool() ), m_rXFSet ( m_aXFillAttr.GetItemSet() ), mpView(nullptr), + meDlgUnit(GetModuleFieldUnit( GetItemSet() )), nFilledWidthPercent(0), nFilledHeightPercent(0), nZoomedWidthPercent(0), @@ -185,18 +182,12 @@ void SvxBitmapTabPage::Construct() void SvxBitmapTabPage::ActivatePage( const SfxItemSet& ) { - if( m_nDlgType == 0 ) // area dialog + if( *m_pPos != LISTBOX_ENTRY_NOTFOUND ) { - *m_pbAreaTP = false; - - if( *m_nPageType == PageType::Bitmap && *m_nPos != LISTBOX_ENTRY_NOTFOUND ) - { - sal_uInt16 nId = m_pBitmapLB->GetItemId( static_cast<size_t>( *m_nPos ) ); - m_pBitmapLB->SelectItem(nId); - } - *m_nPageType = PageType::Bitmap; - *m_nPos = LISTBOX_ENTRY_NOTFOUND; + sal_uInt16 nId = m_pBitmapLB->GetItemId( static_cast<size_t>( *m_pPos ) ); + m_pBitmapLB->SelectItem(nId); } + *m_pPos = LISTBOX_ENTRY_NOTFOUND; } @@ -211,80 +202,73 @@ DeactivateRC SvxBitmapTabPage::DeactivatePage( SfxItemSet* _pSet ) bool SvxBitmapTabPage::FillItemSet( SfxItemSet* rAttrs ) { - if( m_nDlgType == 0 && !*m_pbAreaTP ) + rAttrs->Put(XFillStyleItem(drawing::FillStyle_BITMAP)); + size_t nPos = m_pBitmapLB->GetSelectItemPos(); + if(VALUESET_ITEM_NOTFOUND != nPos) { - if(PageType::Bitmap == *m_nPageType) - { - rAttrs->Put(XFillStyleItem(drawing::FillStyle_BITMAP)); - size_t nPos = m_pBitmapLB->GetSelectItemPos(); - if(VALUESET_ITEM_NOTFOUND != nPos) - { - const XBitmapEntry* pXBitmapEntry = m_pBitmapList->GetBitmap(nPos); - const OUString aString(m_pBitmapLB->GetItemText( m_pBitmapLB->GetSelectItemId() )); - rAttrs->Put(XFillBitmapItem(aString, pXBitmapEntry->GetGraphicObject())); - } + const XBitmapEntry* pXBitmapEntry = m_pBitmapList->GetBitmap(nPos); + const OUString aString(m_pBitmapLB->GetItemText( m_pBitmapLB->GetSelectItemId() )); + rAttrs->Put(XFillBitmapItem(aString, pXBitmapEntry->GetGraphicObject())); + } - BitmapStyle eStylePos = (BitmapStyle)m_pBitmapStyleLB->GetSelectEntryPos(); - bool bIsStretched( eStylePos == STRETCHED ); - bool bIsTiled( eStylePos == TILED ); + BitmapStyle eStylePos = (BitmapStyle)m_pBitmapStyleLB->GetSelectEntryPos(); bool bIsStretched( eStylePos == STRETCHED ); + bool bIsTiled( eStylePos == TILED ); - rAttrs->Put( XFillBmpTileItem(bIsTiled) ); - rAttrs->Put( XFillBmpStretchItem(bIsStretched) ); + rAttrs->Put( XFillBmpTileItem(bIsTiled) ); + rAttrs->Put( XFillBmpStretchItem(bIsStretched) ); - if(!bIsStretched) + if(!bIsStretched) + { + Size aSetBitmapSize; + switch(eStylePos) + { + case ORIGINAL: + aSetBitmapSize = rBitmapSize; + break; + case FILLED: + aSetBitmapSize = rFilledSize; + break; + case ZOOMED: + aSetBitmapSize = rZoomedSize; + break; + case CUSTOM: + case TILED: { - Size aSetBitmapSize; - switch(eStylePos) + sal_Int64 nWidthPercent = m_pBitmapWidth->Denormalize(m_pBitmapWidth->GetValue()); + sal_Int64 nHeightPercent = m_pBitmapHeight->Denormalize(m_pBitmapHeight->GetValue()); + if(eStylePos == CUSTOM && m_pTsbScale->IsEnabled() && m_pTsbScale->GetState() == TRISTATE_TRUE) { - case ORIGINAL: - aSetBitmapSize = rBitmapSize; - break; - case FILLED: - aSetBitmapSize = rFilledSize; - break; - case ZOOMED: - aSetBitmapSize = rZoomedSize; - break; - case CUSTOM: - case TILED: - { - sal_Int64 nWidthPercent = m_pBitmapWidth->Denormalize(m_pBitmapWidth->GetValue()); - sal_Int64 nHeightPercent = m_pBitmapHeight->Denormalize(m_pBitmapHeight->GetValue()); - if(eStylePos == CUSTOM && m_pTsbScale->IsEnabled() && m_pTsbScale->GetState() == TRISTATE_TRUE) - { - aSetBitmapSize.Width() = -nWidthPercent; - aSetBitmapSize.Height() = -nHeightPercent; - } - else - { - aSetBitmapSize.Width() = static_cast<long>(nWidthPercent*rBitmapSize.Width()/100); - aSetBitmapSize.Height() = static_cast<long>(nHeightPercent*rBitmapSize.Height()/100); - } - break; - } - default: - break; + aSetBitmapSize.Width() = -nWidthPercent; + aSetBitmapSize.Height() = -nHeightPercent; } - rAttrs->Put( XFillBmpSizeXItem( aSetBitmapSize.Width() ) ); - rAttrs->Put( XFillBmpSizeYItem( aSetBitmapSize.Height() ) ); - } - - if(m_pPositionLB->IsEnabled()) - rAttrs->Put( XFillBmpPosItem( static_cast<RectPoint>( m_pPositionLB->GetSelectEntryPos() ) ) ); - if(m_pPositionOffX->IsEnabled()) - rAttrs->Put( XFillBmpPosOffsetXItem( m_pPositionOffX->GetValue() ) ); - if(m_pPositionOffY->IsEnabled()) - rAttrs->Put( XFillBmpPosOffsetYItem( m_pPositionOffY->GetValue() ) ); - if(m_pTileOffBox->IsEnabled()) - { - TileOffset eValue = static_cast<TileOffset>(m_pTileOffLB->GetSelectEntryPos()); - sal_uInt16 nOffsetValue = static_cast<sal_uInt16>(m_pTileOffset->GetValue()); - sal_uInt16 nRowOff = (eValue == ROW) ? nOffsetValue : 0; - sal_uInt16 nColOff = (eValue == COLUMN) ? nOffsetValue : 0; - rAttrs->Put( XFillBmpTileOffsetXItem(nRowOff) ); - rAttrs->Put( XFillBmpTileOffsetYItem(nColOff) ); + else + { + aSetBitmapSize.Width() = static_cast<long>(nWidthPercent*rBitmapSize.Width()/100); + aSetBitmapSize.Height() = static_cast<long>(nHeightPercent*rBitmapSize.Height()/100); + } + break; } + default: + break; } + rAttrs->Put( XFillBmpSizeXItem( aSetBitmapSize.Width() ) ); + rAttrs->Put( XFillBmpSizeYItem( aSetBitmapSize.Height() ) ); + } + + if(m_pPositionLB->IsEnabled()) + rAttrs->Put( XFillBmpPosItem( static_cast<RectPoint>( m_pPositionLB->GetSelectEntryPos() ) ) ); + if(m_pPositionOffX->IsEnabled()) + rAttrs->Put( XFillBmpPosOffsetXItem( m_pPositionOffX->GetValue() ) ); + if(m_pPositionOffY->IsEnabled()) + rAttrs->Put( XFillBmpPosOffsetYItem( m_pPositionOffY->GetValue() ) ); + if(m_pTileOffBox->IsEnabled()) + { + TileOffset eValue = static_cast<TileOffset>(m_pTileOffLB->GetSelectEntryPos()); + sal_uInt16 nOffsetValue = static_cast<sal_uInt16>(m_pTileOffset->GetValue()); + sal_uInt16 nRowOff = (eValue == ROW) ? nOffsetValue : 0; + sal_uInt16 nColOff = (eValue == COLUMN) ? nOffsetValue : 0; + rAttrs->Put( XFillBmpTileOffsetXItem(nRowOff) ); + rAttrs->Put( XFillBmpTileOffsetYItem(nColOff) ); } return true; } @@ -505,7 +489,7 @@ IMPL_LINK_NOARG(SvxBitmapTabPage, ModifyBitmapHdl, ValueSet*, void) if( nPos != VALUESET_ITEM_NOTFOUND ) { - pGraphicObject.reset(new GraphicObject(m_pBitmapList->GetBitmap(nPos)->GetGraphicObject())); + pGraphicObject.reset(new GraphicObject(m_pBitmapList->GetBitmap( static_cast<sal_uInt16>(nPos) )->GetGraphicObject())); } else { @@ -604,7 +588,7 @@ IMPL_LINK_NOARG(SvxBitmapTabPage, ClickDeleteHdl, SvxPresetListBox*, void) if( aQueryBox->Execute() == RET_YES ) { - m_pBitmapList->Remove(nPos); + m_pBitmapList->Remove( static_cast<sal_uInt16>(nPos) ); m_pBitmapLB->RemoveItem( nId ); nId = m_pBitmapLB->GetItemId(0); m_pBitmapLB->SelectItem( nId ); diff --git a/cui/source/tabpages/tpcolor.cxx b/cui/source/tabpages/tpcolor.cxx index 36abaf503b79..9f06f9c56545 100644 --- a/cui/source/tabpages/tpcolor.cxx +++ b/cui/source/tabpages/tpcolor.cxx @@ -59,10 +59,7 @@ SvxColorTabPage::SvxColorTabPage(vcl::Window* pParent, const SfxItemSet& rInAttr , rOutAttrs ( rInAttrs ) // All the horrific pointers we store and should not , pnColorListState( nullptr ) - , pPageType( nullptr ) - , nDlgType( 0 ) , pPos( nullptr ) - , pbAreaTP( nullptr ) , aXFStyleItem( drawing::FillStyle_SOLID ) , aXFillColorItem( OUString(), Color( COL_BLACK ) ) , aXFillAttr( static_cast<XOutdevItemPool*>( rInAttrs.GetPool() )) @@ -238,47 +235,40 @@ void SvxColorTabPage::Construct() void SvxColorTabPage::ActivatePage( const SfxItemSet& ) { - if( nDlgType == 0 ) // area dialog + if( pColorList.is() ) { - *pbAreaTP = false; - - if( pColorList.is() ) + if( *pPos != LISTBOX_ENTRY_NOTFOUND ) { - if( *pPageType == PageType::Color && *pPos != LISTBOX_ENTRY_NOTFOUND ) - { - m_pValSetColorList->SelectItem( m_pValSetColorList->GetItemId( static_cast<size_t>(*pPos) ) ); - const XColorEntry* pEntry = pColorList->GetColor(*pPos); - aPreviousColor = pEntry->GetColor(); - ChangeColor(pEntry->GetColor()); - } - else if( *pPageType == PageType::Color && *pPos == LISTBOX_ENTRY_NOTFOUND ) + m_pValSetColorList->SelectItem( m_pValSetColorList->GetItemId( static_cast<size_t>(*pPos) ) ); + const XColorEntry* pEntry = pColorList->GetColor(*pPos); + aPreviousColor = pEntry->GetColor(); + ChangeColor(pEntry->GetColor()); + } + else if( *pPos == LISTBOX_ENTRY_NOTFOUND ) + { + const SfxPoolItem* pPoolItem = nullptr; + if( SfxItemState::SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), true, &pPoolItem ) ) { - const SfxPoolItem* pPoolItem = nullptr; - if( SfxItemState::SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLCOLOR ), true, &pPoolItem ) ) - { - SetColorModel( ColorModel::RGB ); - ChangeColorModel(); - - aPreviousColor = static_cast<const XFillColorItem*>(pPoolItem)->GetColorValue(); - ChangeColor( aPreviousColor ); + SetColorModel( ColorModel::RGB ); + ChangeColorModel(); + aPreviousColor = static_cast<const XFillColorItem*>(pPoolItem)->GetColorValue(); + ChangeColor( aPreviousColor ); - m_pRcustom->SetValue( ColorToPercent_Impl( aCurrentColor.GetRed() ) ); - m_pGcustom->SetValue( ColorToPercent_Impl( aCurrentColor.GetGreen() ) ); - m_pBcustom->SetValue( ColorToPercent_Impl( aCurrentColor.GetBlue() ) ); - m_pHexcustom->SetColor( aCurrentColor.GetColor() ); + m_pRcustom->SetValue( ColorToPercent_Impl( aCurrentColor.GetRed() ) ); + m_pGcustom->SetValue( ColorToPercent_Impl( aCurrentColor.GetGreen() ) ); + m_pBcustom->SetValue( ColorToPercent_Impl( aCurrentColor.GetBlue() ) ); + m_pHexcustom->SetColor( aCurrentColor.GetColor() ); - } } + } - m_pCtlPreviewOld->SetAttributes( aXFillAttr.GetItemSet() ); - m_pCtlPreviewOld->Invalidate(); + m_pCtlPreviewOld->SetAttributes( aXFillAttr.GetItemSet() ); + m_pCtlPreviewOld->Invalidate(); - SelectValSetHdl_Impl( m_pValSetColorList ); + SelectValSetHdl_Impl( m_pValSetColorList ); - *pPageType = PageType::Color; - *pPos = LISTBOX_ENTRY_NOTFOUND; - } + *pPos = LISTBOX_ENTRY_NOTFOUND; } } @@ -293,13 +283,9 @@ DeactivateRC SvxColorTabPage::DeactivatePage( SfxItemSet* _pSet ) bool SvxColorTabPage::FillItemSet( SfxItemSet* rSet ) { - if( ( nDlgType != 0 ) || - ( *pPageType == PageType::Color && !*pbAreaTP ) ) - { - maPaletteManager.AddRecentColor(aCurrentColor, "#" + aCurrentColor.AsRGBHexString().toAsciiUpperCase()); - rSet->Put( XFillColorItem( OUString(), aCurrentColor ) ); - rSet->Put( XFillStyleItem( drawing::FillStyle_SOLID ) ); - } + maPaletteManager.AddRecentColor( aCurrentColor, OUString() ); + rSet->Put( XFillColorItem( OUString(), aCurrentColor ) ); + rSet->Put( XFillStyleItem( drawing::FillStyle_SOLID ) ); return true; } @@ -774,6 +760,46 @@ void SvxColorTabPage::FillUserData() } +void SvxColorTabPage::SetupForViewFrame( SfxViewFrame *pViewFrame ) +{ + const OfaRefItem<XColorList> *pPtr = nullptr; + if ( pViewFrame != nullptr && pViewFrame->GetDispatcher() ) + pPtr = static_cast<const OfaRefItem<XColorList> *>(pViewFrame-> + GetDispatcher()->Execute( SID_GET_COLORLIST, + SfxCallMode::SYNCHRON )); + pColorList = pPtr ? pPtr->GetValue() : XColorList::GetStdColorList(); + + //SetPos( &pShadow->nUnknownPos ); + //SetColorChgd( &pShadow->nChangeType ); + Construct(); +} + +void SvxColorTabPage::SaveToViewFrame( SfxViewFrame *pViewFrame ) +{ + if( !pColorList.is() ) + return; + + if( !pViewFrame ) + return; + + // notify current viewframe that it uses the same color table + if ( !pViewFrame->GetDispatcher() ) + return; + + const OfaRefItem<XColorList> * pPtr; + pPtr = static_cast<const OfaRefItem<XColorList>*>(pViewFrame->GetDispatcher()->Execute( SID_GET_COLORLIST, SfxCallMode::SYNCHRON )); + if( pPtr ) + { + XColorListRef pReference = pPtr->GetValue(); + + if( pReference.is() && + pReference->GetPath() == pColorList->GetPath() && + pReference->GetName() == pColorList->GetName() ) + SfxObjectShell::Current()->PutItem( SvxColorListItem( pColorList, + SID_COLOR_TABLE ) ); + } +} + void SvxColorTabPage::SetPropertyList( XPropertyListType t, const XPropertyListRef &xRef ) { (void) t; diff --git a/cui/source/tabpages/tpgradnt.cxx b/cui/source/tabpages/tpgradnt.cxx index 11effdd86c9b..d1b50c738c42 100644 --- a/cui/source/tabpages/tpgradnt.cxx +++ b/cui/source/tabpages/tpgradnt.cxx @@ -58,10 +58,7 @@ SvxGradientTabPage::SvxGradientTabPage m_pnGradientListState ( nullptr ), m_pnColorListState ( nullptr ), - m_pPageType ( nullptr ), - m_nDlgType ( 0 ), m_pPos ( nullptr ), - m_pbAreaTP ( nullptr ), m_aXFStyleItem ( drawing::FillStyle_GRADIENT ), m_aXGradientItem ( OUString(), XGradient( COL_BLACK, COL_WHITE ) ), @@ -176,78 +173,73 @@ void SvxGradientTabPage::Construct() } -void SvxGradientTabPage::ActivatePage( const SfxItemSet& ) +void SvxGradientTabPage::ActivatePage( const SfxItemSet& rSet ) { sal_Int32 nPos; sal_Int32 nCount; - if( m_nDlgType == 0 ) // area dialog + if( m_pColorList.is() ) { - *m_pbAreaTP = false; - - if( m_pColorList.is() ) + // ColorList + if( *m_pnColorListState & ChangeType::CHANGED || + *m_pnColorListState & ChangeType::MODIFIED ) { - // ColorList - if( *m_pnColorListState & ChangeType::CHANGED || - *m_pnColorListState & ChangeType::MODIFIED ) - { - if( *m_pnColorListState & ChangeType::CHANGED ) - m_pColorList = static_cast<SvxAreaTabDialog*>( GetParentDialog() )->GetNewColorList(); - - // LbColorFrom - nPos = m_pLbColorFrom->GetSelectEntryPos(); - m_pLbColorFrom->Clear(); - m_pLbColorFrom->Fill( m_pColorList ); - nCount = m_pLbColorFrom->GetEntryCount(); - if( nCount == 0 ) - ; // this case should not occur - else if( nCount <= nPos ) - m_pLbColorFrom->SelectEntryPos( 0 ); - else - m_pLbColorFrom->SelectEntryPos( nPos ); - - // LbColorTo - nPos = m_pLbColorTo->GetSelectEntryPos(); - m_pLbColorTo->Clear(); - m_pLbColorTo->CopyEntries( *m_pLbColorFrom ); - nCount = m_pLbColorTo->GetEntryCount(); - if( nCount == 0 ) - ; // this case should not occur - else if( nCount <= nPos ) - m_pLbColorTo->SelectEntryPos( 0 ); - else - m_pLbColorTo->SelectEntryPos( nPos ); - - ModifiedHdl_Impl( this ); - } + if( *m_pnColorListState & ChangeType::CHANGED ) + m_pColorList = static_cast<SvxAreaTabDialog*>( GetParentDialog() )->GetNewColorList(); + + // LbColorFrom + nPos = m_pLbColorFrom->GetSelectEntryPos(); + m_pLbColorFrom->Clear(); + m_pLbColorFrom->Fill( m_pColorList ); + nCount = m_pLbColorFrom->GetEntryCount(); + if( nCount == 0 ) + ; // this case should not occur + else if( nCount <= nPos ) + m_pLbColorFrom->SelectEntryPos( 0 ); + else + m_pLbColorFrom->SelectEntryPos( nPos ); + + // LbColorTo + nPos = m_pLbColorTo->GetSelectEntryPos(); + m_pLbColorTo->Clear(); + m_pLbColorTo->CopyEntries( *m_pLbColorFrom ); + nCount = m_pLbColorTo->GetEntryCount(); + if( nCount == 0 ) + ; // this case should not occur + else if( nCount <= nPos ) + m_pLbColorTo->SelectEntryPos( 0 ); + else + m_pLbColorTo->SelectEntryPos( nPos ); - // determining (and possibly cutting) the name and - // displaying it in the GroupBox - OUString aString( CUI_RES( RID_SVXSTR_TABLE ) ); - aString += ": "; - INetURLObject aURL( m_pGradientList->GetPath() ); + ModifiedHdl_Impl( this ); + } - aURL.Append( m_pGradientList->GetName() ); - SAL_WARN_IF( aURL.GetProtocol() == INetProtocol::NotValid, "cui.tabpages", "invalid URL" ); + // determining (and possibly cutting) the name and + // displaying it in the GroupBox + OUString aString( CUI_RES( RID_SVXSTR_TABLE ) ); + aString += ": "; + INetURLObject aURL( m_pGradientList->GetPath() ); - if ( aURL.getBase().getLength() > 18 ) - { - aString += aURL.getBase().copy( 0, 15 ) + "..."; - } - else - aString += aURL.getBase(); + aURL.Append( m_pGradientList->GetName() ); + SAL_WARN_IF( aURL.GetProtocol() == INetProtocol::NotValid, "cui.tabpages", "invalid URL" ); - if ( *m_pPageType == PageType::Gradient && *m_pPos != LISTBOX_ENTRY_NOTFOUND ) - { - sal_uInt16 nId = m_pGradientLB->GetItemId( static_cast<size_t>( *m_pPos ) ); - m_pGradientLB->SelectItem( nId ); - } - // colors could have been deleted - ChangeGradientHdl_Impl(); + if ( aURL.getBase().getLength() > 18 ) + { + aString += aURL.getBase().copy( 0, 15 ) + "..."; + } + else + aString += aURL.getBase(); - *m_pPageType = PageType::Gradient; - *m_pPos = LISTBOX_ENTRY_NOTFOUND; + *m_pPos = SearchGradientList( ( &static_cast<const XFillGradientItem&>( rSet.Get(XATTR_FILLGRADIENT) ) )->GetName() ); + if ( *m_pPos != LISTBOX_ENTRY_NOTFOUND ) + { + sal_uInt16 nId = m_pGradientLB->GetItemId( static_cast<size_t>( *m_pPos ) ); + m_pGradientLB->SelectItem( nId ); } + // colors could have been deleted + ChangeGradientHdl_Impl(); + + *m_pPos = LISTBOX_ENTRY_NOTFOUND; } } @@ -260,12 +252,81 @@ DeactivateRC SvxGradientTabPage::DeactivatePage( SfxItemSet* _pSet ) return DeactivateRC::LeavePage; } +long SvxGradientTabPage::CheckChanges_Impl() +{ + // is used here in order to NOT lose changes + XGradient aTmpGradient( m_pLbColorFrom->GetSelectEntryColor(), + m_pLbColorTo->GetSelectEntryColor(), + (css::awt::GradientStyle) m_pLbGradientType->GetSelectEntryPos(), + static_cast<long>(m_pMtrAngle->GetValue() * 10), // should be changed in resource + (sal_uInt16) m_pMtrCenterX->GetValue(), + (sal_uInt16) m_pMtrCenterY->GetValue(), + (sal_uInt16) m_pMtrBorder->GetValue(), + (sal_uInt16) m_pMtrColorFrom->GetValue(), + (sal_uInt16) m_pMtrColorTo->GetValue() ); + + size_t nPos = m_pGradientLB->GetSelectItemPos(); + if( nPos != VALUESET_ITEM_NOTFOUND ) + { + XGradient aGradient = m_pGradientList->GetGradient( static_cast<sal_uInt16>(nPos) )->GetGradient(); + + if( !( aTmpGradient == aGradient ) ) + { + ResMgr& rMgr = CUI_MGR(); + Image aWarningBoxImage = WarningBox::GetStandardImage(); + ScopedVclPtrInstance<SvxMessDialog> aMessDlg( GetParentDialog(), + SVX_RESSTR( RID_SVXSTR_GRADIENT ), + CUI_RESSTR( RID_SVXSTR_ASK_CHANGE_GRADIENT ), + &aWarningBoxImage ); + assert(aMessDlg && "Dialog creation failed!"); + aMessDlg->SetButtonText( SvxMessDialogButton::N1, + OUString( ResId( RID_SVXSTR_CHANGE, rMgr ) ) ); + aMessDlg->SetButtonText( SvxMessDialogButton::N2, + OUString( ResId( RID_SVXSTR_ADD, rMgr ) ) ); + + short nRet = aMessDlg->Execute(); + + switch( nRet ) + { + case RET_BTN_1: + { + ClickModifyHdl_Impl( nullptr ); + } + break; + + case RET_BTN_2: + { + ClickAddHdl_Impl( nullptr ); + } + break; + + case RET_CANCEL: + break; + } + } + } + nPos = m_pGradientLB->GetSelectItemPos(); + if( nPos != VALUESET_ITEM_NOTFOUND ) + { + *m_pPos = static_cast<sal_Int32>(nPos); + } + return 0L; +} + bool SvxGradientTabPage::FillItemSet( SfxItemSet* rSet ) { - if( m_nDlgType == 0 && *m_pPageType == PageType::Gradient && !*m_pbAreaTP ) + std::unique_ptr<XGradient> pXGradient; + OUString aString; + size_t nPos = m_pGradientLB->GetSelectItemPos(); + if( nPos != VALUESET_ITEM_NOTFOUND ) + { + pXGradient.reset(new XGradient( m_pGradientList->GetGradient( static_cast<sal_uInt16>(nPos) )->GetGradient() )); + aString = m_pGradientLB->GetItemText( m_pGradientLB->GetSelectItemId() ); + } + else + // gradient was passed (unidentified) { - std::unique_ptr<XGradient> pXGradient; pXGradient.reset(new XGradient( m_pLbColorFrom->GetSelectEntryColor(), m_pLbColorTo->GetSelectEntryColor(), (css::awt::GradientStyle) m_pLbGradientType->GetSelectEntryPos(), @@ -275,25 +336,16 @@ bool SvxGradientTabPage::FillItemSet( SfxItemSet* rSet ) (sal_uInt16) m_pMtrBorder->GetValue(), (sal_uInt16) m_pMtrColorFrom->GetValue(), (sal_uInt16) m_pMtrColorTo->GetValue() )); + } - OUString aString; - size_t nPos = m_pGradientLB->GetSelectItemPos(); - if( nPos != VALUESET_ITEM_NOTFOUND ) - { - XGradient aTmpGradient = m_pGradientList->GetGradient( static_cast<sal_uInt16>(nPos) )->GetGradient(); - if( *pXGradient == aTmpGradient ) - aString = m_pGradientLB->GetItemText( m_pGradientLB->GetSelectItemId() ); - } - - sal_uInt16 nValue = 0; - if( !m_pCbIncrement->IsChecked() ) - nValue = m_pMtrIncrement->GetValue(); + sal_uInt16 nValue = 0; + if( !m_pCbIncrement->IsChecked() ) + nValue = m_pMtrIncrement->GetValue(); - assert( pXGradient && "XGradient could not be created" ); - rSet->Put( XFillStyleItem( drawing::FillStyle_GRADIENT ) ); - rSet->Put( XFillGradientItem( aString, *pXGradient ) ); - rSet->Put( XGradientStepCountItem( nValue ) ); - } + assert( pXGradient && "XGradient could not be created" ); + rSet->Put( XFillStyleItem( drawing::FillStyle_GRADIENT ) ); + rSet->Put( XFillGradientItem( aString, *pXGradient ) ); + rSet->Put( XGradientStepCountItem( nValue ) ); return true; } @@ -473,7 +525,7 @@ IMPL_LINK_NOARG(SvxGradientTabPage, ClickModifyHdl_Impl, Button*, void) if ( nPos != VALUESET_ITEM_NOTFOUND ) { - OUString aName(m_pGradientList->GetGradient(nPos)->GetName()); + OUString aName( m_pGradientList->GetGradient( static_cast<sal_uInt16>(nPos) )->GetName() ); XGradient aXGradient( m_pLbColorFrom->GetSelectEntryColor(), m_pLbColorTo->GetSelectEntryColor(), @@ -487,7 +539,7 @@ IMPL_LINK_NOARG(SvxGradientTabPage, ClickModifyHdl_Impl, Button*, void) m_pGradientList->Replace(o3tl::make_unique<XGradientEntry>(aXGradient, aName), nPos); - Bitmap aBitmap = m_pGradientList->GetBitmapForPreview(nPos, m_pGradientLB->GetIconSize()); + Bitmap aBitmap = m_pGradientList->GetBitmapForPreview( static_cast<sal_uInt16>(nPos), m_pGradientLB->GetIconSize() ); m_pGradientLB->RemoveItem( nId ); m_pGradientLB->InsertItem( nId, Image(aBitmap), aName, static_cast<sal_uInt16>(nPos) ); m_pGradientLB->SelectItem( nId ); @@ -579,7 +631,7 @@ void SvxGradientTabPage::ChangeGradientHdl_Impl() size_t nPos = m_pGradientLB->GetSelectItemPos(); if( nPos != VALUESET_ITEM_NOTFOUND ) - pGradient.reset(new XGradient(m_pGradientList->GetGradient(nPos)->GetGradient())); + pGradient.reset(new XGradient( m_pGradientList->GetGradient( static_cast<sal_uInt16>( nPos ) )->GetGradient() )); else { const SfxPoolItem* pPoolItem = nullptr; diff --git a/cui/source/tabpages/tphatch.cxx b/cui/source/tabpages/tphatch.cxx index 6d8d4567c0ea..9b6c5adf1ff1 100644 --- a/cui/source/tabpages/tphatch.cxx +++ b/cui/source/tabpages/tphatch.cxx @@ -58,10 +58,7 @@ SvxHatchTabPage::SvxHatchTabPage m_rOutAttrs ( rInAttrs ), m_pnHatchingListState ( nullptr ), m_pnColorListState ( nullptr ), - m_pPageType ( nullptr ), - m_nDlgType ( 0 ), m_pPos ( nullptr ), - m_pbAreaTP ( nullptr ), m_aXFStyleItem ( drawing::FillStyle_HATCH ), m_aXHatchItem ( OUString(), XHatch() ), @@ -167,61 +164,56 @@ void SvxHatchTabPage::ActivatePage( const SfxItemSet& rSet ) sal_Int32 nPos; sal_Int32 nCount; - if( m_nDlgType == 0 ) // area dialog + if( m_pColorList.is() ) { - *m_pbAreaTP = false; - - if( m_pColorList.is() ) + // ColorList + if( *m_pnColorListState & ChangeType::CHANGED || + *m_pnColorListState & ChangeType::MODIFIED ) { - // ColorList - if( *m_pnColorListState & ChangeType::CHANGED || - *m_pnColorListState & ChangeType::MODIFIED ) - { - if( *m_pnColorListState & ChangeType::CHANGED ) - m_pColorList = static_cast<SvxAreaTabDialog*>( GetParentDialog() )->GetNewColorList(); - - // LbLineColor - nPos = m_pLbLineColor->GetSelectEntryPos(); - m_pLbLineColor->Clear(); - m_pLbLineColor->Fill( m_pColorList ); - nCount = m_pLbLineColor->GetEntryCount(); - if( nCount == 0 ) - ; // this case should not occur - else if( nCount <= nPos ) - m_pLbLineColor->SelectEntryPos( 0 ); - else - m_pLbLineColor->SelectEntryPos( nPos ); - - ModifiedHdl_Impl( this ); - } + if( *m_pnColorListState & ChangeType::CHANGED ) + m_pColorList = static_cast<SvxAreaTabDialog*>( GetParentDialog() )->GetNewColorList(); + + // LbLineColor + nPos = m_pLbLineColor->GetSelectEntryPos(); + m_pLbLineColor->Clear(); + m_pLbLineColor->Fill( m_pColorList ); + nCount = m_pLbLineColor->GetEntryCount(); + if( nCount == 0 ) + ; // this case should not occur + else if( nCount <= nPos ) + m_pLbLineColor->SelectEntryPos( 0 ); + else + m_pLbLineColor->SelectEntryPos( nPos ); - // determining (possibly cutting) the name - // and displaying it in the GroupBox - OUString aString( CUI_RES( RID_SVXSTR_TABLE ) ); - aString += ": "; - INetURLObject aURL( m_pHatchingList->GetPath() ); + ModifiedHdl_Impl( this ); + } - aURL.Append( m_pHatchingList->GetName() ); - SAL_WARN_IF( aURL.GetProtocol() == INetProtocol::NotValid, "cui.tabpages", "invalid URL" ); + // determining (possibly cutting) the name + // and displaying it in the GroupBox + OUString aString( CUI_RES( RID_SVXSTR_TABLE ) ); + aString += ": "; + INetURLObject aURL( m_pHatchingList->GetPath() ); - if ( aURL.getBase().getLength() > 18 ) - { - aString += aURL.getBase().copy( 0, 15 ) + "..."; - } - else - aString += aURL.getBase(); + aURL.Append( m_pHatchingList->GetName() ); + SAL_WARN_IF( aURL.GetProtocol() == INetProtocol::NotValid, "cui.tabpages", "invalid URL" ); - if( *m_pPageType == PageType::Hatch && *m_pPos != LISTBOX_ENTRY_NOTFOUND ) - { - sal_uInt16 nId = m_pHatchLB->GetItemId( static_cast<size_t>( *m_pPos ) ); - m_pHatchLB->SelectItem( nId ); - } - // colors could have been deleted - ChangeHatchHdl_Impl(); + if ( aURL.getBase().getLength() > 18 ) + { + aString += aURL.getBase().copy( 0, 15 ) + "..."; + } + else + aString += aURL.getBase(); - *m_pPageType = PageType::Hatch; - *m_pPos = LISTBOX_ENTRY_NOTFOUND; + *m_pPos = SearchHatchList( ( &static_cast<const XFillHatchItem&>( rSet.Get(XATTR_FILLHATCH)) )->GetName() ); + if( *m_pPos != LISTBOX_ENTRY_NOTFOUND ) + { + sal_uInt16 nId = m_pHatchLB->GetItemId( static_cast<size_t>( *m_pPos ) ); + m_pHatchLB->SelectItem( nId ); } + // colors could have been deleted + ChangeHatchHdl_Impl(); + + *m_pPos = LISTBOX_ENTRY_NOTFOUND; } XFillBackgroundItem aBckItem( static_cast<const XFillBackgroundItem&>(rSet.Get(XATTR_FILLBACKGROUND))); @@ -281,42 +273,35 @@ sal_Int32 SvxHatchTabPage::SearchHatchList(const OUString& rHatchName) bool SvxHatchTabPage::FillItemSet( SfxItemSet* rSet ) { - if( m_nDlgType == 0 && !*m_pbAreaTP ) // area dialog + std::unique_ptr<XHatch> pXHatch; + OUString aString; + size_t nPos = m_pHatchLB->GetSelectItemPos(); + if( nPos != VALUESET_ITEM_NOTFOUND ) { - if( *m_pPageType == PageType::Hatch ) - { - std::unique_ptr<XHatch> pXHatch; - pXHatch.reset(new XHatch( m_pLbLineColor->GetSelectEntryColor(), - (css::drawing::HatchStyle) m_pLbLineType->GetSelectEntryPos(), - GetCoreValue( *m_pMtrDistance, m_ePoolUnit ), - static_cast<long>(m_pMtrAngle->GetValue() * 10) )); - - OUString aString; - if( !( m_pMtrDistance->IsValueChangedFromSaved() || - m_pMtrAngle->IsValueChangedFromSaved() || - m_pLbLineType->IsValueChangedFromSaved() || - m_pLbLineColor->IsValueChangedFromSaved() || - m_pHatchLB->IsValueChangedFromSaved() ) ) - { - aString = m_pHatchLB->GetItemText( m_pHatchLB->GetSelectItemId() );; - } - - assert( pXHatch && "XHatch couldn't be created" ); - rSet->Put( XFillStyleItem( drawing::FillStyle_HATCH ) ); - rSet->Put( XFillHatchItem( aString, *pXHatch ) ); - - rSet->Put( XFillBackgroundItem( m_pCbBackgroundColor->IsChecked() ) ); - if(m_pCbBackgroundColor->IsChecked()) - { - sal_uInt32 nPosBckColor = m_pLbBackgroundColor->GetSelectEntryPos(); - OUString aBckColorString; - if( nPosBckColor != LISTBOX_ENTRY_NOTFOUND ) - aBckColorString = m_pLbBackgroundColor->GetSelectEntry(); - else - aBckColorString = OUString(); - rSet->Put( XFillColorItem( aBckColorString, m_pLbBackgroundColor->GetSelectEntryColor() ) ); - } - } + pXHatch.reset(new XHatch( m_pHatchingList->GetHatch( static_cast<sal_uInt16>(nPos) )->GetHatch() )); + aString = m_pHatchLB->GetItemText( m_pHatchLB->GetSelectItemId() ); + } + // gradient has been (unidentifiedly) passed + else + { + pXHatch.reset(new XHatch( m_pLbLineColor->GetSelectEntryColor(), + (css::drawing::HatchStyle) m_pLbLineType->GetSelectEntryPos(), + GetCoreValue( *m_pMtrDistance, m_ePoolUnit ), + static_cast<long>(m_pMtrAngle->GetValue() * 10) )); + } + assert( pXHatch && "XHatch couldn't be created" ); + rSet->Put( XFillStyleItem( drawing::FillStyle_HATCH ) ); + rSet->Put( XFillHatchItem( aString, *pXHatch ) ); + rSet->Put( XFillBackgroundItem( m_pCbBackgroundColor->IsChecked() ) ); + if(m_pCbBackgroundColor->IsChecked()) + { + sal_uInt32 nPosBckColor = m_pLbBackgroundColor->GetSelectEntryPos(); + OUString aBckColorString; + if( nPosBckColor != LISTBOX_ENTRY_NOTFOUND ) + aBckColorString = m_pLbBackgroundColor->GetSelectEntry(); + else + aBckColorString = OUString(); + rSet->Put( XFillColorItem( aBckColorString, m_pLbBackgroundColor->GetSelectEntryColor() ) ); } return true; } @@ -418,7 +403,7 @@ void SvxHatchTabPage::ChangeHatchHdl_Impl() size_t nPos = m_pHatchLB->GetSelectItemPos(); if( nPos != VALUESET_ITEM_NOTFOUND ) - pHatch.reset(new XHatch(m_pHatchingList->GetHatch(nPos)->GetHatch())); + pHatch.reset(new XHatch( m_pHatchingList->GetHatch( static_cast<sal_uInt16>(nPos) )->GetHatch() )); else { const SfxPoolItem* pPoolItem = nullptr; @@ -547,7 +532,7 @@ IMPL_LINK_NOARG(SvxHatchTabPage, ClickModifyHdl_Impl, Button*, void) if( nPos != VALUESET_ITEM_NOTFOUND ) { - OUString aName(m_pHatchingList->GetHatch(nPos)->GetName()); + OUString aName( m_pHatchingList->GetHatch( static_cast<sal_uInt16>(nPos) )->GetName() ); XHatch aXHatch( m_pLbLineColor->GetSelectEntryColor(), (css::drawing::HatchStyle) m_pLbLineType->GetSelectEntryPos(), @@ -556,7 +541,7 @@ IMPL_LINK_NOARG(SvxHatchTabPage, ClickModifyHdl_Impl, Button*, void) m_pHatchingList->Replace(o3tl::make_unique<XHatchEntry>(aXHatch, aName), nPos); - Bitmap aBitmap = m_pHatchingList->GetBitmapForPreview(nPos, m_pHatchLB->GetIconSize()); + Bitmap aBitmap = m_pHatchingList->GetBitmapForPreview( static_cast<sal_uInt16>(nPos), m_pHatchLB->GetIconSize() ); m_pHatchLB->RemoveItem( nId ); m_pHatchLB->InsertItem( nId, Image(aBitmap), aName, static_cast<sal_uInt16>(nPos) ); m_pHatchLB->SelectItem( nId ); diff --git a/cui/source/tabpages/tppattern.cxx b/cui/source/tabpages/tppattern.cxx index 0342d1eeaabd..7c73b3a726dc 100644 --- a/cui/source/tabpages/tppattern.cxx +++ b/cui/source/tabpages/tppattern.cxx @@ -91,11 +91,7 @@ SvxPatternTabPage::SvxPatternTabPage( vcl::Window* pParent, const SfxItemSet& r m_pnPatternListState ( nullptr ), m_pnColorListState ( nullptr ), - m_pPageType ( nullptr ), - m_nDlgType ( 0 ), m_pPos ( nullptr ), - m_pbAreaTP ( nullptr ), - m_bPtrnChanged ( false ), m_aXFStyleItem ( drawing::FillStyle_BITMAP ), @@ -168,77 +164,72 @@ void SvxPatternTabPage::Construct() } -void SvxPatternTabPage::ActivatePage( const SfxItemSet& ) +void SvxPatternTabPage::ActivatePage( const SfxItemSet& rSet ) { sal_Int32 nPos; sal_Int32 nCount; - if( m_nDlgType == 0 ) // area dialog + if( m_pColorList.is() ) { - *m_pbAreaTP = false; - - if( m_pColorList.is() ) + // ColorList + if( *m_pnColorListState & ChangeType::CHANGED || + *m_pnColorListState & ChangeType::MODIFIED ) { - // ColorList - if( *m_pnColorListState & ChangeType::CHANGED || - *m_pnColorListState & ChangeType::MODIFIED ) - { - if( *m_pnColorListState & ChangeType::CHANGED ) - m_pColorList = static_cast<SvxAreaTabDialog*>( GetParentDialog() )->GetNewColorList(); - - // LbColor - nPos = m_pLbColor->GetSelectEntryPos(); - m_pLbColor->Clear(); - m_pLbColor->Fill( m_pColorList ); - nCount = m_pLbColor->GetEntryCount(); - if( nCount == 0 ) - ; // this case should not occur - else if( nCount <= nPos ) - m_pLbColor->SelectEntryPos( 0 ); - else - m_pLbColor->SelectEntryPos( nPos ); - - // LbColorBackground - nPos = m_pLbBackgroundColor->GetSelectEntryPos(); - m_pLbBackgroundColor->Clear(); - m_pLbBackgroundColor->CopyEntries( *m_pLbColor ); - nCount = m_pLbBackgroundColor->GetEntryCount(); - if( nCount == 0 ) - ; // this case should not occur - else if( nCount <= nPos ) - m_pLbBackgroundColor->SelectEntryPos( 0 ); - else - m_pLbBackgroundColor->SelectEntryPos( nPos ); - ChangeColor_Impl(); - } - - // determining (possibly cutting) the name and - // displaying it in the GroupBox - OUString aString( CUI_RES( RID_SVXSTR_TABLE ) ); - aString += ": "; - INetURLObject aURL( m_pPatternList->GetPath() ); + if( *m_pnColorListState & ChangeType::CHANGED ) + m_pColorList = static_cast<SvxAreaTabDialog*>( GetParentDialog() )->GetNewColorList(); + + // LbColor + nPos = m_pLbColor->GetSelectEntryPos(); + m_pLbColor->Clear(); + m_pLbColor->Fill( m_pColorList ); + nCount = m_pLbColor->GetEntryCount(); + if( nCount == 0 ) + ; // this case should not occur + else if( nCount <= nPos ) + m_pLbColor->SelectEntryPos( 0 ); + else + m_pLbColor->SelectEntryPos( nPos ); + + // LbColorBackground + nPos = m_pLbBackgroundColor->GetSelectEntryPos(); + m_pLbBackgroundColor->Clear(); + m_pLbBackgroundColor->CopyEntries( *m_pLbColor ); + nCount = m_pLbBackgroundColor->GetEntryCount(); + if( nCount == 0 ) + ; // this case should not occur + else if( nCount <= nPos ) + m_pLbBackgroundColor->SelectEntryPos( 0 ); + else + m_pLbBackgroundColor->SelectEntryPos( nPos ); + ChangeColor_Impl(); + } - aURL.Append( m_pPatternList->GetName() ); - SAL_WARN_IF( aURL.GetProtocol() == INetProtocol::NotValid, "cui.tabpages", "invalid URL" ); + // determining (possibly cutting) the name and + // displaying it in the GroupBox + OUString aString( CUI_RES( RID_SVXSTR_TABLE ) ); + aString += ": "; + INetURLObject aURL( m_pPatternList->GetPath() ); - if( aURL.getBase().getLength() > 18 ) - { - aString += aURL.getBase().copy( 0, 15 ) + "..."; - } - else - aString += aURL.getBase(); + aURL.Append( m_pPatternList->GetName() ); + SAL_WARN_IF( aURL.GetProtocol() == INetProtocol::NotValid, "cui.tabpages", "invalid URL" ); - if( *m_pPageType == PageType::Bitmap && *m_pPos != LISTBOX_ENTRY_NOTFOUND ) - { - sal_uInt16 nId = m_pPatternLB->GetItemId( static_cast<size_t>( *m_pPos ) ); - m_pPatternLB->SelectItem( nId ); - } - // colors could have been deleted - ChangePatternHdl_Impl( m_pPatternLB ); + if( aURL.getBase().getLength() > 18 ) + { + aString += aURL.getBase().copy( 0, 15 ) + "..."; + } + else + aString += aURL.getBase(); - *m_pPageType = PageType::Bitmap; - *m_pPos = LISTBOX_ENTRY_NOTFOUND; + *m_pPos = SearchPatternList( ( &static_cast<const XFillBitmapItem&>( rSet.Get(XATTR_FILLBITMAP)) )->GetName() ); + if( *m_pPos != LISTBOX_ENTRY_NOTFOUND ) + { + sal_uInt16 nId = m_pPatternLB->GetItemId( static_cast<size_t>( *m_pPos ) ); + m_pPatternLB->SelectItem( nId ); } + // colors could have been deleted + ChangePatternHdl_Impl( m_pPatternLB ); + + *m_pPos = LISTBOX_ENTRY_NOTFOUND; } } @@ -254,28 +245,21 @@ DeactivateRC SvxPatternTabPage::DeactivatePage( SfxItemSet* _pSet) bool SvxPatternTabPage::FillItemSet( SfxItemSet* _rOutAttrs ) { - if( m_nDlgType == 0 && !*m_pbAreaTP ) // area dialog + _rOutAttrs->Put(XFillStyleItem(drawing::FillStyle_BITMAP)); + size_t nPos = m_pPatternLB->GetSelectItemPos(); + if(VALUESET_ITEM_NOTFOUND != nPos) { - if(PageType::Bitmap == *m_pPageType) - { - _rOutAttrs->Put(XFillStyleItem(drawing::FillStyle_BITMAP)); - size_t nPos = m_pPatternLB->GetSelectItemPos(); - if( !m_bPtrnChanged && VALUESET_ITEM_NOTFOUND != nPos) - { - const XBitmapEntry* pXBitmapEntry = m_pPatternList->GetBitmap(nPos); - const OUString aString( m_pPatternLB->GetItemText( m_pPatternLB->GetSelectItemId() ) ); + const XBitmapEntry* pXBitmapEntry = m_pPatternList->GetBitmap( static_cast<sal_uInt16>(nPos) ); + const OUString aString( m_pPatternLB->GetItemText( m_pPatternLB->GetSelectItemId() ) ); - _rOutAttrs->Put(XFillBitmapItem(aString, pXBitmapEntry->GetGraphicObject())); - } - else - { - const BitmapEx aBitmapEx(m_pBitmapCtl->GetBitmapEx()); - - _rOutAttrs->Put(XFillBitmapItem(OUString(), Graphic(aBitmapEx))); - } - } + _rOutAttrs->Put(XFillBitmapItem(aString, pXBitmapEntry->GetGraphicObject())); } + else + { + const BitmapEx aBitmapEx(m_pBitmapCtl->GetBitmapEx()); + _rOutAttrs->Put(XFillBitmapItem(OUString(), Graphic(aBitmapEx))); + } return true; } @@ -321,7 +305,7 @@ IMPL_LINK_NOARG(SvxPatternTabPage, ChangePatternHdl_Impl, ValueSet*, void) if(VALUESET_ITEM_NOTFOUND != nPos) { - pGraphicObject.reset(new GraphicObject(m_pPatternList->GetBitmap(nPos)->GetGraphicObject())); + pGraphicObject.reset(new GraphicObject(m_pPatternList->GetBitmap( static_cast<sal_uInt16>(nPos) )->GetGraphicObject())); } else { @@ -429,16 +413,12 @@ IMPL_LINK_NOARG(SvxPatternTabPage, ClickAddHdl_Impl, Button*, void) long nCount = m_pPatternList->Count(); long j = 1; - bool bDifferent = false; + bool bValidPatternName = false; - while( !bDifferent ) + while( !bValidPatternName ) { - aName = aNewName + " " + OUString::number( j++ ); - bDifferent = true; - - for( long i = 0; i < nCount && bDifferent; i++ ) - if( aName == m_pPatternList->GetBitmap( i )->GetName() ) - bDifferent = false; + aName = aNewName + " " + OUString::number( j++ ); + bValidPatternName = (SearchPatternList(aName) == LISTBOX_ENTRY_NOTFOUND); } SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); @@ -452,13 +432,9 @@ IMPL_LINK_NOARG(SvxPatternTabPage, ClickAddHdl_Impl, Button*, void) { pDlg->GetName( aName ); - bDifferent = true; - - for( long i = 0; i < nCount && bDifferent; i++ ) - if( aName == m_pPatternList->GetBitmap( i )->GetName() ) - bDifferent = false; + bValidPatternName = (SearchPatternList(aName) == LISTBOX_ENTRY_NOTFOUND); - if( bDifferent ) { + if( bValidPatternName ) { nError = 0; break; } @@ -532,14 +508,14 @@ IMPL_LINK_NOARG(SvxPatternTabPage, ClickModifyHdl_Impl, Button*, void) if ( nPos != VALUESET_ITEM_NOTFOUND ) { - OUString aName(m_pPatternList->GetBitmap(nPos)->GetName()); + OUString aName( m_pPatternList->GetBitmap( static_cast<sal_uInt16>(nPos) )->GetName() ); const BitmapEx aBitmapEx(m_pBitmapCtl->GetBitmapEx()); // #i123497# Need to replace the existing entry with a new one (old returned needs to be deleted) m_pPatternList->Replace(o3tl::make_unique<XBitmapEntry>(Graphic(aBitmapEx), aName), nPos); - Bitmap aBitmap = m_pPatternList->GetBitmapForPreview(nPos, m_pPatternLB->GetIconSize()); + Bitmap aBitmap = m_pPatternList->GetBitmapForPreview( static_cast<sal_uInt16>( nPos ), m_pPatternLB->GetIconSize() ); m_pPatternLB->RemoveItem(nId); m_pPatternLB->InsertItem( nId, Image(aBitmap), aName, static_cast<sal_uInt16>(nPos) ); m_pPatternLB->SelectItem( nId ); @@ -561,29 +537,21 @@ IMPL_LINK_NOARG(SvxPatternTabPage, ClickRenameHdl_Impl, SvxPresetListBox*, void) ResMgr& rMgr = CUI_MGR(); OUString aDesc( ResId( RID_SVXSTR_DESC_NEW_PATTERN, rMgr ) ); OUString aName( m_pPatternList->GetBitmap( nPos )->GetName() ); - OUString aOldName = aName; SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); assert(pFact && "Dialog creation failed!"); std::unique_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc )); assert(pDlg && "Dialog creation failed!"); - long nCount = m_pPatternList->Count(); bool bLoop = true; while( bLoop && pDlg->Execute() == RET_OK ) { pDlg->GetName( aName ); - bool bDifferent = true; + sal_Int32 nPatternPos = SearchPatternList(aName); + bool bValidPatternName = (nPatternPos == static_cast<sal_Int32>(nPos) ) || (nPatternPos == LISTBOX_ENTRY_NOTFOUND); - for( long i = 0; i < nCount && bDifferent; i++ ) - { - if( aName == m_pPatternList->GetBitmap( i )->GetName() - && aName != aOldName ) - bDifferent = false; - } - - if( bDifferent ) + if( bValidPatternName ) { bLoop = false; @@ -679,4 +647,21 @@ void SvxPatternTabPage::PointChanged( vcl::Window* pWindow, RectPoint ) } } +sal_Int32 SvxPatternTabPage::SearchPatternList(const OUString& rPatternName) +{ + long nCount = m_pPatternList->Count(); + bool bValidPatternName = true; + sal_Int32 nPos = LISTBOX_ENTRY_NOTFOUND; + + for(long i = 0;i < nCount && bValidPatternName;i++) + { + if(rPatternName == m_pPatternList->GetBitmap( i )->GetName()) + { + nPos = i; + bValidPatternName = false; + } + } + return nPos; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/cui/uiconfig/ui/areatabpage.ui b/cui/uiconfig/ui/areatabpage.ui index 504e9310dab5..665350bc8807 100644 --- a/cui/uiconfig/ui/areatabpage.ui +++ b/cui/uiconfig/ui/areatabpage.ui @@ -3,216 +3,131 @@ <interface> <requires lib="gtk+" version="3.0"/> <!-- interface-requires LibreOffice 1.0 --> - <object class="GtkListStore" id="liststoreLB_AREA_TYPE"> - <columns> - <!-- column-name gchararray1 --> - <column type="gchararray"/> - <!-- column-name guint1 --> - <column type="guint"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">None</col> - <col id="1">0</col> - </row> - <row> - <col id="0" translatable="yes">Color</col> - <col id="1">0</col> - </row> - <row> - <col id="0" translatable="yes">Gradient</col> - <col id="1">0</col> - </row> - <row> - <col id="0" translatable="yes">Hatching</col> - <col id="1">0</col> - </row> - <row> - <col id="0" translatable="yes">Bitmap</col> - <col id="1">0</col> - </row> - </data> - </object> <object class="GtkBox" id="AreaTabPage"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">6</property> <property name="spacing">6</property> <child> - <object class="GtkFrame" id="Fill Frame"> + <object class="GtkBox" id="box1"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label_xalign">0</property> - <property name="shadow_type">none</property> + <property name="orientation">vertical</property> <child> - <object class="GtkAlignment" id="alignment1"> + <object class="GtkButtonBox" id="buttonbox1"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="top_padding">6</property> - <property name="left_padding">12</property> + <property name="hexpand">True</property> + <property name="spacing">12</property> + <property name="layout_style">center</property> + <child> + <object class="GtkButton" id="btnnone"> + <property name="label" translatable="yes">None</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btncolor"> + <property name="label" translatable="yes">Color</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btngradient"> + <property name="label" translatable="yes">Gradient</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> <child> - <object class="GtkVBox" id="box1"> + <object class="GtkButton" id="btnhatch"> + <property name="label" translatable="yes">Hatch</property> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="spacing">6</property> - <child> - <object class="GtkComboBox" id="LB_AREA_TYPE"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="model">liststoreLB_AREA_TYPE</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkBox" id="boxLB_FILL"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="vexpand">True</property> - <property name="orientation">vertical</property> - <property name="spacing">6</property> - <child> - <object class="svxlo-ColorLB" id="LB_COLOR:border"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="vexpand">True</property> - <property name="dropdown">False</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="svxlo-GradientLB" id="LB_GRADIENT:border"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="vexpand">True</property> - <property name="dropdown">False</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="svxlo-HatchingLB" id="LB_HATCHING:border"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="vexpand">True</property> - <property name="dropdown">False</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">2</property> - </packing> - </child> - <child> - <object class="svxlo-BitmapLB" id="LB_BITMAP:border"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="vexpand">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">3</property> - </packing> - </child> - </object> - <packing> - <property name="expand">True</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkBox" id="box4"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="orientation">vertical</property> - <child> - <object class="svxlo-SvxXRectPreview" id="CTL_COLOR_PREVIEW"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="hexpand">True</property> - <property name="vexpand">True</property> - <child internal-child="accessible"> - <object class="AtkObject" id="CTL_COLOR_PREVIEW-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes">Example</property> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="svxlo-SvxXRectPreview" id="CTL_BITMAP_PREVIEW"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="hexpand">True</property> - <property name="vexpand">True</property> - <child internal-child="accessible"> - <object class="AtkObject" id="CTL_BITMAP_PREVIEW-atkobject"> - <property name="AtkObject::accessible-name" translatable="yes">Example</property> - </object> - </child> - </object> - <packing> - <property name="expand">True</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="pack_type">end</property> - <property name="position">2</property> - </packing> - </child> + <property name="can_focus">True</property> + <property name="receives_default">True</property> </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">3</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btnbitmap"> + <property name="label" translatable="yes">Bitmap</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">4</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btnpattern"> + <property name="label" translatable="yes">Pattern</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">5</property> + </packing> </child> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> </child> - <child type="label"> - <object class="GtkLabel" id="label1"> + <child> + <object class="GtkBox" id="fillstylebox"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Fill</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="orientation">vertical</property> + <child> + <placeholder/> + </child> </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> </child> </object> <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">0</property> + <property name="position">1</property> </packing> </child> </object> - <object class="GtkSizeGroup" id="sizegroup1"> - <widgets> - <widget name="LB_AREA_TYPE"/> - <widget name="LB_COLOR:border"/> - <widget name="LB_GRADIENT:border"/> - <widget name="LB_HATCHING:border"/> - <widget name="LB_BITMAP:border"/> - <widget name="CTL_COLOR_PREVIEW"/> - <widget name="CTL_BITMAP_PREVIEW"/> - </widgets> - </object> </interface> |