1ff0525f2SOliver-Rainer Wittmann /************************************************************************
2ff0525f2SOliver-Rainer Wittmann *
3ff0525f2SOliver-Rainer Wittmann * Licensed Materials - Property of IBM.
4ff0525f2SOliver-Rainer Wittmann * (C) Copyright IBM Corporation 2003, 2012.  All Rights Reserved.
5ff0525f2SOliver-Rainer Wittmann * U.S. Government Users Restricted Rights:
6ff0525f2SOliver-Rainer Wittmann * Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
7ff0525f2SOliver-Rainer Wittmann *
8ff0525f2SOliver-Rainer Wittmann ************************************************************************/
9ff0525f2SOliver-Rainer Wittmann 
10ff0525f2SOliver-Rainer Wittmann #include "precompiled_sw.hxx"
11ff0525f2SOliver-Rainer Wittmann 
12ff0525f2SOliver-Rainer Wittmann #include "PagePropertyPanel.hxx"
13ff0525f2SOliver-Rainer Wittmann #include "PagePropertyPanel.hrc"
14ff0525f2SOliver-Rainer Wittmann 
15ff0525f2SOliver-Rainer Wittmann #include "PropertyPanel.hrc"
16ff0525f2SOliver-Rainer Wittmann 
17ff0525f2SOliver-Rainer Wittmann #include <svx/sidebar/PopupContainer.hxx>
18ff0525f2SOliver-Rainer Wittmann #include "PageOrientationControl.hxx"
19ff0525f2SOliver-Rainer Wittmann #include "PageMarginControl.hxx"
20ff0525f2SOliver-Rainer Wittmann #include "PageSizeControl.hxx"
21ff0525f2SOliver-Rainer Wittmann #include "PageColumnControl.hxx"
22ff0525f2SOliver-Rainer Wittmann 
23ff0525f2SOliver-Rainer Wittmann #include <swtypes.hxx>
24ff0525f2SOliver-Rainer Wittmann #include <cmdid.h>
25ff0525f2SOliver-Rainer Wittmann #include <errhdl.hxx>
26ff0525f2SOliver-Rainer Wittmann 
27ff0525f2SOliver-Rainer Wittmann #include <svl/intitem.hxx>
28ff0525f2SOliver-Rainer Wittmann #include <editeng/sizeitem.hxx>
29ff0525f2SOliver-Rainer Wittmann #include <editeng/paperinf.hxx>
30ff0525f2SOliver-Rainer Wittmann #include <svx/svxids.hrc>
31ff0525f2SOliver-Rainer Wittmann #include <svx/dlgutil.hxx>
32ff0525f2SOliver-Rainer Wittmann #include <svx/rulritem.hxx>
33ff0525f2SOliver-Rainer Wittmann 
34ff0525f2SOliver-Rainer Wittmann #include <sfx2/sidebar/ControlFactory.hxx>
35ff0525f2SOliver-Rainer Wittmann #include <sfx2/dispatch.hxx>
36ff0525f2SOliver-Rainer Wittmann #include <sfx2/bindings.hxx>
37ff0525f2SOliver-Rainer Wittmann #include <sfx2/viewsh.hxx>
38ff0525f2SOliver-Rainer Wittmann #include <sfx2/objsh.hxx>
39ff0525f2SOliver-Rainer Wittmann 
40ff0525f2SOliver-Rainer Wittmann #include <boost/bind.hpp>
41ff0525f2SOliver-Rainer Wittmann 
42ff0525f2SOliver-Rainer Wittmann #define A2S(pString) (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(pString)))
43ff0525f2SOliver-Rainer Wittmann 
44ff0525f2SOliver-Rainer Wittmann #define SetFldVal(rField, lValue) (rField).SetValue((rField).Normalize(lValue), FUNIT_TWIP)
45ff0525f2SOliver-Rainer Wittmann 
46ff0525f2SOliver-Rainer Wittmann 
47ff0525f2SOliver-Rainer Wittmann namespace sw { namespace sidebar {
48ff0525f2SOliver-Rainer Wittmann 
49ff0525f2SOliver-Rainer Wittmann PagePropertyPanel* PagePropertyPanel::Create (
50ff0525f2SOliver-Rainer Wittmann     Window* pParent,
51ff0525f2SOliver-Rainer Wittmann     const cssu::Reference<css::frame::XFrame>& rxFrame,
52ff0525f2SOliver-Rainer Wittmann     SfxBindings* pBindings)
53ff0525f2SOliver-Rainer Wittmann {
54ff0525f2SOliver-Rainer Wittmann     if (pParent == NULL)
55ff0525f2SOliver-Rainer Wittmann         throw ::com::sun::star::lang::IllegalArgumentException(A2S("no parent Window given to PagePropertyPanel::Create"), NULL, 0);
56ff0525f2SOliver-Rainer Wittmann     if ( ! rxFrame.is())
57ff0525f2SOliver-Rainer Wittmann         throw ::com::sun::star::lang::IllegalArgumentException(A2S("no XFrame given to PagePropertyPanel::Create"), NULL, 1);
58ff0525f2SOliver-Rainer Wittmann     if (pBindings == NULL)
59ff0525f2SOliver-Rainer Wittmann         throw ::com::sun::star::lang::IllegalArgumentException(A2S("no SfxBindings given to PagePropertyPanel::Create"), NULL, 2);
60ff0525f2SOliver-Rainer Wittmann 
61ff0525f2SOliver-Rainer Wittmann     return new PagePropertyPanel(
62ff0525f2SOliver-Rainer Wittmann         pParent,
63ff0525f2SOliver-Rainer Wittmann         rxFrame,
64ff0525f2SOliver-Rainer Wittmann         pBindings);
65ff0525f2SOliver-Rainer Wittmann }
66ff0525f2SOliver-Rainer Wittmann 
67ff0525f2SOliver-Rainer Wittmann PagePropertyPanel::PagePropertyPanel(
68ff0525f2SOliver-Rainer Wittmann             Window* pParent,
69ff0525f2SOliver-Rainer Wittmann             const cssu::Reference<css::frame::XFrame>& rxFrame,
70ff0525f2SOliver-Rainer Wittmann             SfxBindings* pBindings)
71ff0525f2SOliver-Rainer Wittmann     : Control(pParent, SW_RES(RID_PROPERTYPANEL_SWPAGE))
72ff0525f2SOliver-Rainer Wittmann     , mxFrame(rxFrame)
73ff0525f2SOliver-Rainer Wittmann     , maContext()
74ff0525f2SOliver-Rainer Wittmann     , mpBindings(pBindings)
75ff0525f2SOliver-Rainer Wittmann     // visible controls
76ff0525f2SOliver-Rainer Wittmann     , maFtOrientation( this, SW_RES(FT_ORIENTATION) )
77ff0525f2SOliver-Rainer Wittmann     , mpToolBoxOrientationBackground( ::sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this) )
78ff0525f2SOliver-Rainer Wittmann     , mpToolBoxOrientation( ::sfx2::sidebar::ControlFactory::CreateToolBox( mpToolBoxOrientationBackground.get(), SW_RES(TB_ORIENTATION)) )
79ff0525f2SOliver-Rainer Wittmann     , maFtMargin( this, SW_RES(FT_MARGIN) )
80ff0525f2SOliver-Rainer Wittmann     , mpToolBoxMarginBackground( ::sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this) )
81ff0525f2SOliver-Rainer Wittmann     , mpToolBoxMargin( ::sfx2::sidebar::ControlFactory::CreateToolBox( mpToolBoxMarginBackground.get(), SW_RES(TB_MARGIN)) )
82ff0525f2SOliver-Rainer Wittmann     , maFtSize( this, SW_RES(FT_SIZE) )
83ff0525f2SOliver-Rainer Wittmann     , mpToolBoxSizeBackground( ::sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this) )
84ff0525f2SOliver-Rainer Wittmann     , mpToolBoxSize( ::sfx2::sidebar::ControlFactory::CreateToolBox( mpToolBoxSizeBackground.get(), SW_RES(TB_SIZE)) )
85ff0525f2SOliver-Rainer Wittmann     , maFtColumn( this, SW_RES(FT_COLUMN) )
86ff0525f2SOliver-Rainer Wittmann     , mpToolBoxColumnBackground( ::sfx2::sidebar::ControlFactory::CreateToolBoxBackground(this) )
87ff0525f2SOliver-Rainer Wittmann     , mpToolBoxColumn( ::sfx2::sidebar::ControlFactory::CreateToolBox( mpToolBoxColumnBackground.get(), SW_RES(TB_COLUMN)) )
88ff0525f2SOliver-Rainer Wittmann     // image resources
89ff0525f2SOliver-Rainer Wittmann     , maImgSize					(NULL)
90ff0525f2SOliver-Rainer Wittmann     , maImgSize_L					(NULL)
91ff0525f2SOliver-Rainer Wittmann     , mImgPortrait				(SW_RES(IMG_PAGE_PORTRAIT))
92ff0525f2SOliver-Rainer Wittmann     , mImgLandscape				(SW_RES(IMG_PAGE_LANDSCAPE))
93ff0525f2SOliver-Rainer Wittmann     , mImgNarrow					(SW_RES(IMG_PAGE_NARROW))
94ff0525f2SOliver-Rainer Wittmann     , mImgNormal					(SW_RES(IMG_PAGE_NORMAL))
95ff0525f2SOliver-Rainer Wittmann     , mImgWide					(SW_RES(IMG_PAGE_WIDE))
96ff0525f2SOliver-Rainer Wittmann     , mImgMirrored				(SW_RES(IMG_PAGE_MIRRORED))
97ff0525f2SOliver-Rainer Wittmann     , mImgMarginCustom			(SW_RES(IMG_PAGE_MARGIN_CUSTOM))
98ff0525f2SOliver-Rainer Wittmann     , mImgNarrow_L				(SW_RES(IMG_PAGE_NARROW_L))
99ff0525f2SOliver-Rainer Wittmann     , mImgNormal_L				(SW_RES(IMG_PAGE_NORMAL_L))
100ff0525f2SOliver-Rainer Wittmann     , mImgWide_L					(SW_RES(IMG_PAGE_WIDE_L))
101ff0525f2SOliver-Rainer Wittmann     , mImgMirrored_L				(SW_RES(IMG_PAGE_MIRRORED_L))
102ff0525f2SOliver-Rainer Wittmann     , mImgMarginCustom_L			(SW_RES(IMG_PAGE_MARGIN_CUSTOM_L))
103ff0525f2SOliver-Rainer Wittmann     , mImgA3						(SW_RES(IMG_PAGE_A3))
104ff0525f2SOliver-Rainer Wittmann     , mImgA4						(SW_RES(IMG_PAGE_A4))
105ff0525f2SOliver-Rainer Wittmann     , mImgA5						(SW_RES(IMG_PAGE_A5))
106ff0525f2SOliver-Rainer Wittmann     , mImgB4						(SW_RES(IMG_PAGE_B4))
107ff0525f2SOliver-Rainer Wittmann     , mImgB5						(SW_RES(IMG_PAGE_B5))
108ff0525f2SOliver-Rainer Wittmann     , mImgC5						(SW_RES(IMG_PAGE_C5))
109ff0525f2SOliver-Rainer Wittmann     , mImgLetter					(SW_RES(IMG_PAGE_LETTER))
110ff0525f2SOliver-Rainer Wittmann     , mImgLegal					(SW_RES(IMG_PAGE_LEGAL))
111ff0525f2SOliver-Rainer Wittmann     , mImgSizeNone				(SW_RES(IMG_PAGE_SIZE_NONE))
112ff0525f2SOliver-Rainer Wittmann     , mImgA3_L					(SW_RES(IMG_PAGE_A3_L))
113ff0525f2SOliver-Rainer Wittmann     , mImgA4_L					(SW_RES(IMG_PAGE_A4_L))
114ff0525f2SOliver-Rainer Wittmann     , mImgA5_L					(SW_RES(IMG_PAGE_A5_L))
115ff0525f2SOliver-Rainer Wittmann     , mImgB4_L					(SW_RES(IMG_PAGE_B4_L))
116ff0525f2SOliver-Rainer Wittmann     , mImgB5_L					(SW_RES(IMG_PAGE_B5_L))
117ff0525f2SOliver-Rainer Wittmann     , mImgC5_L					(SW_RES(IMG_PAGE_C5_L))
118ff0525f2SOliver-Rainer Wittmann     , mImgLetter_L				(SW_RES(IMG_PAGE_LETTER_L))
119ff0525f2SOliver-Rainer Wittmann     , mImgLegal_L					(SW_RES(IMG_PAGE_LEGAL_L))
120ff0525f2SOliver-Rainer Wittmann     , mImgSizeNone_L				(SW_RES(IMG_PAGE_SIZE_NONE_L))
121ff0525f2SOliver-Rainer Wittmann     , mImgColumn1					(SW_RES(IMG_PAGE_COLUMN_1))
122ff0525f2SOliver-Rainer Wittmann     , mImgColumn2					(SW_RES(IMG_PAGE_COLUMN_2))
123ff0525f2SOliver-Rainer Wittmann     , mImgColumn3					(SW_RES(IMG_PAGE_COLUMN_3))
124ff0525f2SOliver-Rainer Wittmann     , mImgLeft					(SW_RES(IMG_PAGE_COLUMN_LEFT))
125ff0525f2SOliver-Rainer Wittmann     , mImgRight					(SW_RES(IMG_PAGE_COLUMN_RIGHT))
126ff0525f2SOliver-Rainer Wittmann     , mImgColumnNone				(SW_RES(IMG_PAGE_COLUMN_NONE))
127ff0525f2SOliver-Rainer Wittmann     , mImgColumn1_L				(SW_RES(IMG_PAGE_COLUMN_1_L))
128ff0525f2SOliver-Rainer Wittmann     , mImgColumn2_L				(SW_RES(IMG_PAGE_COLUMN_2_L))
129ff0525f2SOliver-Rainer Wittmann     , mImgColumn3_L				(SW_RES(IMG_PAGE_COLUMN_3_L))
130ff0525f2SOliver-Rainer Wittmann     , mImgLeft_L					(SW_RES(IMG_PAGE_COLUMN_LEFT_L))
131ff0525f2SOliver-Rainer Wittmann     , mImgRight_L					(SW_RES(IMG_PAGE_COLUMN_RIGHT_L))
132ff0525f2SOliver-Rainer Wittmann     , mImgColumnNone_L			(SW_RES(IMG_PAGE_COLUMN_NONE_L))
133ff0525f2SOliver-Rainer Wittmann 
134ff0525f2SOliver-Rainer Wittmann     , mpPageItem( new SvxPageItem(SID_ATTR_PAGE) )
135*8a2dd8f0SOliver-Rainer Wittmann     , mpPageLRMarginItem( new SvxLongLRSpaceItem( 0, 0, SID_ATTR_PAGE_LRSPACE ) )
136*8a2dd8f0SOliver-Rainer Wittmann     , mpPageULMarginItem( new SvxLongULSpaceItem( 0, 0, SID_ATTR_PAGE_ULSPACE ) )
137ff0525f2SOliver-Rainer Wittmann     , mpPageSizeItem( new SvxSizeItem(SID_ATTR_PAGE_SIZE) )
138ff0525f2SOliver-Rainer Wittmann     , mePaper( PAPER_USER )
139*8a2dd8f0SOliver-Rainer Wittmann     , mpPageColumnTypeItem( new SfxInt16Item(SID_ATTR_PAGE_COLUMN) )
140ff0525f2SOliver-Rainer Wittmann 
141ff0525f2SOliver-Rainer Wittmann     , meFUnit()
142ff0525f2SOliver-Rainer Wittmann     , meUnit()
143ff0525f2SOliver-Rainer Wittmann 
144*8a2dd8f0SOliver-Rainer Wittmann     , m_aSwPagePgULControl(SID_ATTR_PAGE_ULSPACE, *pBindings, *this)
145*8a2dd8f0SOliver-Rainer Wittmann     , m_aSwPagePgLRControl(SID_ATTR_PAGE_LRSPACE, *pBindings, *this)
146*8a2dd8f0SOliver-Rainer Wittmann     , m_aSwPagePgSizeControl(SID_ATTR_PAGE_SIZE, *pBindings, *this)
147*8a2dd8f0SOliver-Rainer Wittmann     , m_aSwPagePgControl(SID_ATTR_PAGE, *pBindings, *this)
148*8a2dd8f0SOliver-Rainer Wittmann     , m_aSwPageColControl(SID_ATTR_PAGE_COLUMN, *pBindings, *this)
149*8a2dd8f0SOliver-Rainer Wittmann     , m_aSwPagePgMetricControl(SID_ATTR_METRIC, *pBindings, *this)
150ff0525f2SOliver-Rainer Wittmann 
151ff0525f2SOliver-Rainer Wittmann     , mpOrientationPopup()
152ff0525f2SOliver-Rainer Wittmann     , mpMarginPopup()
153ff0525f2SOliver-Rainer Wittmann     , mpSizePopup()
154ff0525f2SOliver-Rainer Wittmann     , mpColumnPopup()
1557dc3d34dSOliver-Rainer Wittmann 
1567dc3d34dSOliver-Rainer Wittmann     , mbInvalidateSIDAttrPageOnSIDAttrPageSizeNotify( false )
157ff0525f2SOliver-Rainer Wittmann {
158ff0525f2SOliver-Rainer Wittmann     Initialize();
1597dc3d34dSOliver-Rainer Wittmann     mbInvalidateSIDAttrPageOnSIDAttrPageSizeNotify = true;
160ff0525f2SOliver-Rainer Wittmann     FreeResource();
161ff0525f2SOliver-Rainer Wittmann }
162ff0525f2SOliver-Rainer Wittmann 
163ff0525f2SOliver-Rainer Wittmann PagePropertyPanel::~PagePropertyPanel()
164ff0525f2SOliver-Rainer Wittmann {
165ff0525f2SOliver-Rainer Wittmann     delete[] maImgSize;
166ff0525f2SOliver-Rainer Wittmann     delete[] maImgSize_L;
167ff0525f2SOliver-Rainer Wittmann 
168ff0525f2SOliver-Rainer Wittmann     // destroy the toolbox windows.
169ff0525f2SOliver-Rainer Wittmann     mpToolBoxOrientation.reset();
170ff0525f2SOliver-Rainer Wittmann     mpToolBoxMargin.reset();
171ff0525f2SOliver-Rainer Wittmann     mpToolBoxSize.reset();
172ff0525f2SOliver-Rainer Wittmann     mpToolBoxColumn.reset();
173ff0525f2SOliver-Rainer Wittmann 
174ff0525f2SOliver-Rainer Wittmann     // destroy the background windows of the toolboxes.
175ff0525f2SOliver-Rainer Wittmann     mpToolBoxOrientationBackground.reset();
176ff0525f2SOliver-Rainer Wittmann     mpToolBoxMarginBackground.reset();
177ff0525f2SOliver-Rainer Wittmann     mpToolBoxSizeBackground.reset();
178ff0525f2SOliver-Rainer Wittmann     mpToolBoxColumnBackground.reset();
179ff0525f2SOliver-Rainer Wittmann }
180ff0525f2SOliver-Rainer Wittmann 
181ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::Initialize()
182ff0525f2SOliver-Rainer Wittmann {
183ff0525f2SOliver-Rainer Wittmann     // popup for page orientation
184ff0525f2SOliver-Rainer Wittmann     Link aLink = LINK( this, PagePropertyPanel, ClickOrientationHdl );
185ff0525f2SOliver-Rainer Wittmann     mpToolBoxOrientation->SetDropdownClickHdl( aLink );
186ff0525f2SOliver-Rainer Wittmann     mpToolBoxOrientation->SetSelectHdl( aLink );
187ff0525f2SOliver-Rainer Wittmann     mpToolBoxOrientation->SetItemImage( TBI_ORIENTATION, mImgPortrait);
188ff0525f2SOliver-Rainer Wittmann     mpToolBoxOrientation->SetItemBits( TBI_ORIENTATION, mpToolBoxOrientation->GetItemBits( TBI_ORIENTATION ) | TIB_DROPDOWNONLY );
189ff0525f2SOliver-Rainer Wittmann     mpToolBoxOrientation->SetQuickHelpText(TBI_ORIENTATION,String(SW_RES(STR_QHELP_TB_ORIENTATION)));
190ff0525f2SOliver-Rainer Wittmann     mpToolBoxOrientation->SetOutputSizePixel( mpToolBoxOrientation->CalcWindowSizePixel() );
191ff0525f2SOliver-Rainer Wittmann     mpToolBoxOrientation->SetBackground( Wallpaper() );
192ff0525f2SOliver-Rainer Wittmann     mpToolBoxOrientation->SetPaintTransparent( sal_True );
193ff0525f2SOliver-Rainer Wittmann 
194ff0525f2SOliver-Rainer Wittmann     // popup for page margins
195ff0525f2SOliver-Rainer Wittmann     aLink = LINK( this, PagePropertyPanel, ClickMarginHdl );
196ff0525f2SOliver-Rainer Wittmann     mpToolBoxMargin->SetDropdownClickHdl( aLink );
197ff0525f2SOliver-Rainer Wittmann     mpToolBoxMargin->SetSelectHdl( aLink );
198ff0525f2SOliver-Rainer Wittmann     mpToolBoxMargin->SetItemImage(TBI_MARGIN, mImgNormal);
199ff0525f2SOliver-Rainer Wittmann     mpToolBoxMargin->SetItemBits( TBI_MARGIN, mpToolBoxMargin->GetItemBits( TBI_MARGIN ) | TIB_DROPDOWNONLY );
200ff0525f2SOliver-Rainer Wittmann     mpToolBoxMargin->SetQuickHelpText(TBI_MARGIN,String(SW_RES(STR_QHELP_TB_MARGIN)));
201ff0525f2SOliver-Rainer Wittmann     mpToolBoxMargin->SetOutputSizePixel( mpToolBoxMargin->CalcWindowSizePixel() );
202ff0525f2SOliver-Rainer Wittmann     mpToolBoxMargin->SetBackground(Wallpaper());
203ff0525f2SOliver-Rainer Wittmann     mpToolBoxMargin->SetPaintTransparent( sal_True );
204ff0525f2SOliver-Rainer Wittmann 
205ff0525f2SOliver-Rainer Wittmann     // popup for page size
206ff0525f2SOliver-Rainer Wittmann     aLink = LINK( this, PagePropertyPanel, ClickSizeHdl );
207ff0525f2SOliver-Rainer Wittmann     mpToolBoxSize->SetDropdownClickHdl( aLink );
208ff0525f2SOliver-Rainer Wittmann     mpToolBoxSize->SetSelectHdl( aLink );
209ff0525f2SOliver-Rainer Wittmann     mpToolBoxSize->SetItemImage(TBI_SIZE, mImgLetter);
210ff0525f2SOliver-Rainer Wittmann     mpToolBoxSize->SetItemBits( TBI_SIZE, mpToolBoxSize->GetItemBits( TBI_SIZE ) | TIB_DROPDOWNONLY );
211ff0525f2SOliver-Rainer Wittmann     mpToolBoxSize->SetQuickHelpText(TBI_SIZE,String(SW_RES(STR_QHELP_TB_SIZE)));
212ff0525f2SOliver-Rainer Wittmann     mpToolBoxSize->SetOutputSizePixel( mpToolBoxSize->CalcWindowSizePixel() );
213ff0525f2SOliver-Rainer Wittmann     mpToolBoxSize->SetBackground(Wallpaper());
214ff0525f2SOliver-Rainer Wittmann     mpToolBoxSize->SetPaintTransparent( sal_True );
215ff0525f2SOliver-Rainer Wittmann     maImgSize = new Image[8];
216ff0525f2SOliver-Rainer Wittmann     maImgSize[0] = mImgA3;
217ff0525f2SOliver-Rainer Wittmann     maImgSize[1] = mImgA4;
218ff0525f2SOliver-Rainer Wittmann     maImgSize[2] = mImgA5;
219ff0525f2SOliver-Rainer Wittmann     maImgSize[3] = mImgB4;
220ff0525f2SOliver-Rainer Wittmann     maImgSize[4] = mImgB5;
221ff0525f2SOliver-Rainer Wittmann     maImgSize[5] = mImgC5;
222ff0525f2SOliver-Rainer Wittmann     maImgSize[6] = mImgLetter;
223ff0525f2SOliver-Rainer Wittmann     maImgSize[7] = mImgLegal;
224ff0525f2SOliver-Rainer Wittmann     maImgSize_L = new Image[8];
225ff0525f2SOliver-Rainer Wittmann     maImgSize_L[0] = mImgA3_L;
226ff0525f2SOliver-Rainer Wittmann     maImgSize_L[1] = mImgA4_L;
227ff0525f2SOliver-Rainer Wittmann     maImgSize_L[2] = mImgA5_L;
228ff0525f2SOliver-Rainer Wittmann     maImgSize_L[3] = mImgB4_L;
229ff0525f2SOliver-Rainer Wittmann     maImgSize_L[4] = mImgB5_L;
230ff0525f2SOliver-Rainer Wittmann     maImgSize_L[5] = mImgC5_L;
231ff0525f2SOliver-Rainer Wittmann     maImgSize_L[6] = mImgLetter_L;
232ff0525f2SOliver-Rainer Wittmann     maImgSize_L[7] = mImgLegal_L;
233ff0525f2SOliver-Rainer Wittmann 
234ff0525f2SOliver-Rainer Wittmann     // popup for page column property
235ff0525f2SOliver-Rainer Wittmann     aLink = LINK( this, PagePropertyPanel, ClickColumnHdl );
236ff0525f2SOliver-Rainer Wittmann     mpToolBoxColumn->SetDropdownClickHdl( aLink );
237ff0525f2SOliver-Rainer Wittmann     mpToolBoxColumn->SetSelectHdl( aLink );
238ff0525f2SOliver-Rainer Wittmann     mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumn1);
239ff0525f2SOliver-Rainer Wittmann     mpToolBoxColumn->SetItemBits( TBI_COLUMN, mpToolBoxColumn->GetItemBits( TBI_COLUMN ) | TIB_DROPDOWNONLY );
240ff0525f2SOliver-Rainer Wittmann     mpToolBoxColumn->SetQuickHelpText(TBI_COLUMN,String(SW_RES(STR_QHELP_TB_COLUMN)));
241ff0525f2SOliver-Rainer Wittmann     mpToolBoxColumn->SetOutputSizePixel( mpToolBoxColumn->CalcWindowSizePixel() );
242ff0525f2SOliver-Rainer Wittmann     mpToolBoxColumn->SetBackground(Wallpaper());
243ff0525f2SOliver-Rainer Wittmann     mpToolBoxColumn->SetPaintTransparent( sal_True );
244ff0525f2SOliver-Rainer Wittmann 
245ff0525f2SOliver-Rainer Wittmann     meFUnit = GetModuleFieldUnit();
246ff0525f2SOliver-Rainer Wittmann     meUnit  = m_aSwPagePgSizeControl.GetCoreMetric();
247ff0525f2SOliver-Rainer Wittmann 
248ff0525f2SOliver-Rainer Wittmann     // 'pull' for page style's attribute values
249*8a2dd8f0SOliver-Rainer Wittmann     mpBindings->Update( SID_ATTR_PAGE_LRSPACE );
250*8a2dd8f0SOliver-Rainer Wittmann     mpBindings->Update( SID_ATTR_PAGE_ULSPACE );
251ff0525f2SOliver-Rainer Wittmann     mpBindings->Update( SID_ATTR_PAGE );
252ff0525f2SOliver-Rainer Wittmann     mpBindings->Update( SID_ATTR_PAGE_SIZE );
253ff0525f2SOliver-Rainer Wittmann }
254ff0525f2SOliver-Rainer Wittmann 
255ff0525f2SOliver-Rainer Wittmann 
256ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::DataChanged( const DataChangedEvent& rEvent )
257ff0525f2SOliver-Rainer Wittmann {
258ff0525f2SOliver-Rainer Wittmann     // currently nothing special to do
259ff0525f2SOliver-Rainer Wittmann 
260ff0525f2SOliver-Rainer Wittmann     // forward to base class
261ff0525f2SOliver-Rainer Wittmann     Control::DataChanged( rEvent );
262ff0525f2SOliver-Rainer Wittmann }
263ff0525f2SOliver-Rainer Wittmann 
264ff0525f2SOliver-Rainer Wittmann 
265ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::HandleContextChange( const ::sfx2::sidebar::EnumContext aContext)
266ff0525f2SOliver-Rainer Wittmann {
267ff0525f2SOliver-Rainer Wittmann     if (maContext == aContext)
268ff0525f2SOliver-Rainer Wittmann     {
269ff0525f2SOliver-Rainer Wittmann         // nothing to do.
270ff0525f2SOliver-Rainer Wittmann         return;
271ff0525f2SOliver-Rainer Wittmann     }
272ff0525f2SOliver-Rainer Wittmann 
273ff0525f2SOliver-Rainer Wittmann     maContext = aContext;
274ff0525f2SOliver-Rainer Wittmann 
275ff0525f2SOliver-Rainer Wittmann     // TODO: reactions on certain context switches
276ff0525f2SOliver-Rainer Wittmann }
277ff0525f2SOliver-Rainer Wittmann 
278ff0525f2SOliver-Rainer Wittmann 
279ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ShowPageStyleFormatDialog( void )
280ff0525f2SOliver-Rainer Wittmann {
281ff0525f2SOliver-Rainer Wittmann     mpBindings->GetDispatcher()->Execute( FN_FORMAT_PAGE_DLG, SFX_CALLMODE_ASYNCHRON );
282ff0525f2SOliver-Rainer Wittmann }
283ff0525f2SOliver-Rainer Wittmann 
284ff0525f2SOliver-Rainer Wittmann 
285ff0525f2SOliver-Rainer Wittmann 
286ff0525f2SOliver-Rainer Wittmann 
287ff0525f2SOliver-Rainer Wittmann ::svx::sidebar::PopupControl* PagePropertyPanel::CreatePageOrientationControl( ::svx::sidebar::PopupContainer* pParent )
288ff0525f2SOliver-Rainer Wittmann {
289ff0525f2SOliver-Rainer Wittmann     return new PageOrientationControl( pParent, *this , mpPageItem->IsLandscape() );
290ff0525f2SOliver-Rainer Wittmann }
291ff0525f2SOliver-Rainer Wittmann 
292ff0525f2SOliver-Rainer Wittmann 
293ff0525f2SOliver-Rainer Wittmann IMPL_LINK( PagePropertyPanel, ClickOrientationHdl, ToolBox*, pToolBox )
294ff0525f2SOliver-Rainer Wittmann {
295ff0525f2SOliver-Rainer Wittmann     mpOrientationPopup.reset(
296ff0525f2SOliver-Rainer Wittmann         new ::svx::sidebar::Popup(
297ff0525f2SOliver-Rainer Wittmann             this,
298ff0525f2SOliver-Rainer Wittmann             ::boost::bind(&PagePropertyPanel::CreatePageOrientationControl, this, _1),
299ff0525f2SOliver-Rainer Wittmann             ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Page orientation")) ) );
300ff0525f2SOliver-Rainer Wittmann     mpOrientationPopup->Show( *pToolBox );
301ff0525f2SOliver-Rainer Wittmann 
302ff0525f2SOliver-Rainer Wittmann     return 0L;
303ff0525f2SOliver-Rainer Wittmann }
304ff0525f2SOliver-Rainer Wittmann 
305ff0525f2SOliver-Rainer Wittmann 
306ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ExecuteOrientationChange( const sal_Bool bLandscape )
307ff0525f2SOliver-Rainer Wittmann {
308ff0525f2SOliver-Rainer Wittmann     {
309ff0525f2SOliver-Rainer Wittmann         // set new page orientation
310ff0525f2SOliver-Rainer Wittmann         mpPageItem->SetLandscape( bLandscape );
311ff0525f2SOliver-Rainer Wittmann 
312ff0525f2SOliver-Rainer Wittmann         // swap the width and height of the page size
313ff0525f2SOliver-Rainer Wittmann         mpPageSizeItem->SetSize( Size( mpPageSizeItem->GetSize().Height(), mpPageSizeItem->GetSize().Width() ) );
314ff0525f2SOliver-Rainer Wittmann 
315ff0525f2SOliver-Rainer Wittmann         // apply changed attributes
316ff0525f2SOliver-Rainer Wittmann         GetBindings()->GetDispatcher()->Execute( SID_ATTR_PAGE_SIZE, SFX_CALLMODE_RECORD, mpPageSizeItem.get(), mpPageItem.get(), 0L );
317ff0525f2SOliver-Rainer Wittmann     }
318ff0525f2SOliver-Rainer Wittmann 
319ff0525f2SOliver-Rainer Wittmann     // check, if margin values still fit to the changed page size.
320ff0525f2SOliver-Rainer Wittmann     // if not, adjust margin values
321ff0525f2SOliver-Rainer Wittmann     {
322ff0525f2SOliver-Rainer Wittmann         const long nML = mpPageLRMarginItem->GetLeft();
323ff0525f2SOliver-Rainer Wittmann         const long nMR = mpPageLRMarginItem->GetRight();
324ff0525f2SOliver-Rainer Wittmann         const long nTmpPW = nML + nMR + MINBODY;
325ff0525f2SOliver-Rainer Wittmann 
326ff0525f2SOliver-Rainer Wittmann         const long nPW  = mpPageSizeItem->GetSize().Width();
327ff0525f2SOliver-Rainer Wittmann 
328ff0525f2SOliver-Rainer Wittmann         if ( nTmpPW > nPW )
329ff0525f2SOliver-Rainer Wittmann         {
330ff0525f2SOliver-Rainer Wittmann             if ( nML <= nMR )
331ff0525f2SOliver-Rainer Wittmann             {
332ff0525f2SOliver-Rainer Wittmann                 ExecuteMarginLRChange( mpPageLRMarginItem->GetLeft(), nMR - (nTmpPW - nPW ) );
333ff0525f2SOliver-Rainer Wittmann             }
334ff0525f2SOliver-Rainer Wittmann             else
335ff0525f2SOliver-Rainer Wittmann             {
336ff0525f2SOliver-Rainer Wittmann                 ExecuteMarginLRChange( nML - (nTmpPW - nPW ), mpPageLRMarginItem->GetRight() );
337ff0525f2SOliver-Rainer Wittmann             }
338ff0525f2SOliver-Rainer Wittmann         }
339ff0525f2SOliver-Rainer Wittmann 
340ff0525f2SOliver-Rainer Wittmann         const long nMT = mpPageULMarginItem->GetUpper();
341ff0525f2SOliver-Rainer Wittmann         const long nMB = mpPageULMarginItem->GetLower();
342ff0525f2SOliver-Rainer Wittmann         const long nTmpPH = nMT + nMB + MINBODY;
343ff0525f2SOliver-Rainer Wittmann 
344ff0525f2SOliver-Rainer Wittmann         const long nPH  = mpPageSizeItem->GetSize().Height();
345ff0525f2SOliver-Rainer Wittmann 
346ff0525f2SOliver-Rainer Wittmann         if ( nTmpPH > nPH )
347ff0525f2SOliver-Rainer Wittmann         {
348ff0525f2SOliver-Rainer Wittmann             if ( nMT <= nMB )
349ff0525f2SOliver-Rainer Wittmann             {
350ff0525f2SOliver-Rainer Wittmann                 ExecuteMarginULChange( mpPageULMarginItem->GetUpper(), nMB - ( nTmpPH - nPH ) );
351ff0525f2SOliver-Rainer Wittmann             }
352ff0525f2SOliver-Rainer Wittmann             else
353ff0525f2SOliver-Rainer Wittmann             {
354ff0525f2SOliver-Rainer Wittmann                 ExecuteMarginULChange( nMT - ( nTmpPH - nPH ), mpPageULMarginItem->GetLower() );
355ff0525f2SOliver-Rainer Wittmann             }
356ff0525f2SOliver-Rainer Wittmann         }
357ff0525f2SOliver-Rainer Wittmann     }
358ff0525f2SOliver-Rainer Wittmann }
359ff0525f2SOliver-Rainer Wittmann 
360ff0525f2SOliver-Rainer Wittmann 
361ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ClosePageOrientationPopup()
362ff0525f2SOliver-Rainer Wittmann {
363ff0525f2SOliver-Rainer Wittmann     mpOrientationPopup->Hide();
364ff0525f2SOliver-Rainer Wittmann }
365ff0525f2SOliver-Rainer Wittmann 
366ff0525f2SOliver-Rainer Wittmann 
367ff0525f2SOliver-Rainer Wittmann 
368ff0525f2SOliver-Rainer Wittmann 
369ff0525f2SOliver-Rainer Wittmann ::svx::sidebar::PopupControl* PagePropertyPanel::CreatePageMarginControl( ::svx::sidebar::PopupContainer* pParent )
370ff0525f2SOliver-Rainer Wittmann {
371ff0525f2SOliver-Rainer Wittmann     return new PageMarginControl(
372ff0525f2SOliver-Rainer Wittmann         pParent,
373ff0525f2SOliver-Rainer Wittmann         *this,
374ff0525f2SOliver-Rainer Wittmann         *mpPageLRMarginItem.get(),
375ff0525f2SOliver-Rainer Wittmann         *mpPageULMarginItem.get(),
376ff0525f2SOliver-Rainer Wittmann         mpPageItem->GetPageUsage() == SVX_PAGE_MIRROR,
377ff0525f2SOliver-Rainer Wittmann         mpPageSizeItem->GetSize(),
378ff0525f2SOliver-Rainer Wittmann         mpPageItem->IsLandscape(),
379ff0525f2SOliver-Rainer Wittmann         meFUnit,
380ff0525f2SOliver-Rainer Wittmann         meUnit );
381ff0525f2SOliver-Rainer Wittmann }
382ff0525f2SOliver-Rainer Wittmann 
383ff0525f2SOliver-Rainer Wittmann 
384ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ExecuteMarginLRChange(
385ff0525f2SOliver-Rainer Wittmann     const long nPageLeftMargin,
386ff0525f2SOliver-Rainer Wittmann     const long nPageRightMargin )
387ff0525f2SOliver-Rainer Wittmann {
388ff0525f2SOliver-Rainer Wittmann     mpPageLRMarginItem->SetLeft( nPageLeftMargin );
389ff0525f2SOliver-Rainer Wittmann     mpPageLRMarginItem->SetRight( nPageRightMargin );
390*8a2dd8f0SOliver-Rainer Wittmann     GetBindings()->GetDispatcher()->Execute( SID_ATTR_PAGE_LRSPACE, SFX_CALLMODE_RECORD, mpPageLRMarginItem.get(),  0L );
391ff0525f2SOliver-Rainer Wittmann }
392ff0525f2SOliver-Rainer Wittmann 
393ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ExecuteMarginULChange(
394ff0525f2SOliver-Rainer Wittmann     const long nPageTopMargin,
395ff0525f2SOliver-Rainer Wittmann     const long nPageBottomMargin )
396ff0525f2SOliver-Rainer Wittmann {
397ff0525f2SOliver-Rainer Wittmann     mpPageULMarginItem->SetUpper( nPageTopMargin );
398ff0525f2SOliver-Rainer Wittmann     mpPageULMarginItem->SetLower( nPageBottomMargin );
399*8a2dd8f0SOliver-Rainer Wittmann     GetBindings()->GetDispatcher()->Execute( SID_ATTR_PAGE_ULSPACE, SFX_CALLMODE_RECORD, mpPageULMarginItem.get(),  0L );
400ff0525f2SOliver-Rainer Wittmann }
401ff0525f2SOliver-Rainer Wittmann 
402ff0525f2SOliver-Rainer Wittmann 
403ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ExecutePageLayoutChange( const bool bMirrored )
404ff0525f2SOliver-Rainer Wittmann {
405ff0525f2SOliver-Rainer Wittmann     mpPageItem->SetPageUsage( bMirrored ? SVX_PAGE_MIRROR : SVX_PAGE_ALL );
406ff0525f2SOliver-Rainer Wittmann     GetBindings()->GetDispatcher()->Execute( SID_ATTR_PAGE, SFX_CALLMODE_RECORD, mpPageItem.get(),  0L );
407ff0525f2SOliver-Rainer Wittmann }
408ff0525f2SOliver-Rainer Wittmann 
409ff0525f2SOliver-Rainer Wittmann 
410ff0525f2SOliver-Rainer Wittmann IMPL_LINK( PagePropertyPanel, ClickMarginHdl, ToolBox*, pToolBox )
411ff0525f2SOliver-Rainer Wittmann {
412ff0525f2SOliver-Rainer Wittmann     mpMarginPopup.reset(
413ff0525f2SOliver-Rainer Wittmann         new ::svx::sidebar::Popup(
414ff0525f2SOliver-Rainer Wittmann             this,
415ff0525f2SOliver-Rainer Wittmann             ::boost::bind(&PagePropertyPanel::CreatePageMarginControl, this, _1),
416ff0525f2SOliver-Rainer Wittmann             ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Page margins")) ) );
417ff0525f2SOliver-Rainer Wittmann     mpMarginPopup->Show( *pToolBox );
418ff0525f2SOliver-Rainer Wittmann 
419ff0525f2SOliver-Rainer Wittmann     return 0L;
420ff0525f2SOliver-Rainer Wittmann }
421ff0525f2SOliver-Rainer Wittmann 
422ff0525f2SOliver-Rainer Wittmann 
423ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ClosePageMarginPopup()
424ff0525f2SOliver-Rainer Wittmann {
425ff0525f2SOliver-Rainer Wittmann     mpMarginPopup->Hide();
426ff0525f2SOliver-Rainer Wittmann }
427ff0525f2SOliver-Rainer Wittmann 
428ff0525f2SOliver-Rainer Wittmann 
429ff0525f2SOliver-Rainer Wittmann 
430ff0525f2SOliver-Rainer Wittmann 
431ff0525f2SOliver-Rainer Wittmann ::svx::sidebar::PopupControl* PagePropertyPanel::CreatePageSizeControl( ::svx::sidebar::PopupContainer* pParent )
432ff0525f2SOliver-Rainer Wittmann {
433ff0525f2SOliver-Rainer Wittmann     return new PageSizeControl(
434ff0525f2SOliver-Rainer Wittmann         pParent,
435ff0525f2SOliver-Rainer Wittmann         *this,
436ff0525f2SOliver-Rainer Wittmann         mePaper,
437ff0525f2SOliver-Rainer Wittmann         mpPageItem->IsLandscape(),
438ff0525f2SOliver-Rainer Wittmann         meFUnit );
439ff0525f2SOliver-Rainer Wittmann }
440ff0525f2SOliver-Rainer Wittmann 
441ff0525f2SOliver-Rainer Wittmann 
442ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ExecuteSizeChange( const Paper ePaper )
443ff0525f2SOliver-Rainer Wittmann {
444ff0525f2SOliver-Rainer Wittmann     Size aPageSize = SvxPaperInfo::GetPaperSize( ePaper, (MapUnit)(meUnit) );
445ff0525f2SOliver-Rainer Wittmann     if ( mpPageItem->IsLandscape() )
446ff0525f2SOliver-Rainer Wittmann     {
447ff0525f2SOliver-Rainer Wittmann         Swap( aPageSize );
448ff0525f2SOliver-Rainer Wittmann     }
449ff0525f2SOliver-Rainer Wittmann     mpPageSizeItem->SetSize( aPageSize );
450ff0525f2SOliver-Rainer Wittmann 
451ff0525f2SOliver-Rainer Wittmann     mpBindings->GetDispatcher()->Execute(SID_ATTR_PAGE_SIZE, SFX_CALLMODE_RECORD, mpPageSizeItem.get(),  0L );
452ff0525f2SOliver-Rainer Wittmann }
453ff0525f2SOliver-Rainer Wittmann 
454ff0525f2SOliver-Rainer Wittmann 
455ff0525f2SOliver-Rainer Wittmann IMPL_LINK( PagePropertyPanel, ClickSizeHdl, ToolBox*, pToolBox )
456ff0525f2SOliver-Rainer Wittmann {
457ff0525f2SOliver-Rainer Wittmann     mpSizePopup.reset(
458ff0525f2SOliver-Rainer Wittmann         new ::svx::sidebar::Popup(
459ff0525f2SOliver-Rainer Wittmann             this,
460ff0525f2SOliver-Rainer Wittmann             ::boost::bind(&PagePropertyPanel::CreatePageSizeControl, this, _1),
461ff0525f2SOliver-Rainer Wittmann             ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Page size")) ) );
462ff0525f2SOliver-Rainer Wittmann     mpSizePopup->Show( *pToolBox );
463ff0525f2SOliver-Rainer Wittmann 
464ff0525f2SOliver-Rainer Wittmann     return 0L;
465ff0525f2SOliver-Rainer Wittmann }
466ff0525f2SOliver-Rainer Wittmann 
467ff0525f2SOliver-Rainer Wittmann 
468ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ClosePageSizePopup()
469ff0525f2SOliver-Rainer Wittmann {
470ff0525f2SOliver-Rainer Wittmann     mpSizePopup->Hide();
471ff0525f2SOliver-Rainer Wittmann }
472ff0525f2SOliver-Rainer Wittmann 
473ff0525f2SOliver-Rainer Wittmann 
474ff0525f2SOliver-Rainer Wittmann 
475ff0525f2SOliver-Rainer Wittmann 
476ff0525f2SOliver-Rainer Wittmann ::svx::sidebar::PopupControl* PagePropertyPanel::CreatePageColumnControl( ::svx::sidebar::PopupContainer* pParent )
477ff0525f2SOliver-Rainer Wittmann {
478ff0525f2SOliver-Rainer Wittmann     return new PageColumnControl(
479ff0525f2SOliver-Rainer Wittmann         pParent,
480ff0525f2SOliver-Rainer Wittmann         *this,
481ff0525f2SOliver-Rainer Wittmann         mpPageColumnTypeItem->GetValue(),
482ff0525f2SOliver-Rainer Wittmann         mpPageItem->IsLandscape() );
483ff0525f2SOliver-Rainer Wittmann }
484ff0525f2SOliver-Rainer Wittmann 
485ff0525f2SOliver-Rainer Wittmann 
486ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ExecuteColumnChange( const sal_uInt16 nColumnType )
487ff0525f2SOliver-Rainer Wittmann {
488ff0525f2SOliver-Rainer Wittmann     mpPageColumnTypeItem->SetValue( nColumnType );
489*8a2dd8f0SOliver-Rainer Wittmann     mpBindings->GetDispatcher()->Execute(SID_ATTR_PAGE_COLUMN, SFX_CALLMODE_RECORD, mpPageColumnTypeItem.get(),  0L );
490ff0525f2SOliver-Rainer Wittmann }
491ff0525f2SOliver-Rainer Wittmann 
492ff0525f2SOliver-Rainer Wittmann 
493ff0525f2SOliver-Rainer Wittmann IMPL_LINK( PagePropertyPanel, ClickColumnHdl, ToolBox*, pToolBox )
494ff0525f2SOliver-Rainer Wittmann {
495ff0525f2SOliver-Rainer Wittmann     mpColumnPopup.reset(
496ff0525f2SOliver-Rainer Wittmann         new ::svx::sidebar::Popup(
497ff0525f2SOliver-Rainer Wittmann             this,
498ff0525f2SOliver-Rainer Wittmann             ::boost::bind(&PagePropertyPanel::CreatePageColumnControl, this, _1),
499ff0525f2SOliver-Rainer Wittmann             ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Page columns")) ) );
500ff0525f2SOliver-Rainer Wittmann     mpColumnPopup->Show( *pToolBox );
501ff0525f2SOliver-Rainer Wittmann 
502ff0525f2SOliver-Rainer Wittmann     return 0L;
503ff0525f2SOliver-Rainer Wittmann }
504ff0525f2SOliver-Rainer Wittmann 
505ff0525f2SOliver-Rainer Wittmann 
506ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ClosePageColumnPopup()
507ff0525f2SOliver-Rainer Wittmann {
508ff0525f2SOliver-Rainer Wittmann     mpColumnPopup->Hide();
509ff0525f2SOliver-Rainer Wittmann }
510ff0525f2SOliver-Rainer Wittmann 
511ff0525f2SOliver-Rainer Wittmann 
512ff0525f2SOliver-Rainer Wittmann 
513ff0525f2SOliver-Rainer Wittmann 
514ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::NotifyItemUpdate(
515ff0525f2SOliver-Rainer Wittmann     const sal_uInt16 nSId,
516ff0525f2SOliver-Rainer Wittmann     const SfxItemState eState,
517ff0525f2SOliver-Rainer Wittmann     const SfxPoolItem* pState)
518ff0525f2SOliver-Rainer Wittmann {
519ff0525f2SOliver-Rainer Wittmann     switch( nSId )
520ff0525f2SOliver-Rainer Wittmann     {
521*8a2dd8f0SOliver-Rainer Wittmann     case SID_ATTR_PAGE_COLUMN:
522ff0525f2SOliver-Rainer Wittmann         {
523ff0525f2SOliver-Rainer Wittmann             if ( eState >= SFX_ITEM_AVAILABLE &&
524ff0525f2SOliver-Rainer Wittmann                  pState && pState->ISA(SfxInt16Item) )
525ff0525f2SOliver-Rainer Wittmann             {
526ff0525f2SOliver-Rainer Wittmann                 mpPageColumnTypeItem.reset( static_cast<SfxInt16Item*>(pState->Clone()) );
527ff0525f2SOliver-Rainer Wittmann                 ChangeColumnImage( mpPageColumnTypeItem->GetValue() );
528ff0525f2SOliver-Rainer Wittmann             }
529ff0525f2SOliver-Rainer Wittmann         }
530ff0525f2SOliver-Rainer Wittmann         break;
531*8a2dd8f0SOliver-Rainer Wittmann     case SID_ATTR_PAGE_LRSPACE:
532ff0525f2SOliver-Rainer Wittmann         if ( eState >= SFX_ITEM_AVAILABLE &&
533ff0525f2SOliver-Rainer Wittmann              pState && pState->ISA(SvxLongLRSpaceItem) )
534ff0525f2SOliver-Rainer Wittmann         {
535ff0525f2SOliver-Rainer Wittmann             mpPageLRMarginItem.reset( static_cast<SvxLongLRSpaceItem*>(pState->Clone()) );
536ff0525f2SOliver-Rainer Wittmann             ChangeMarginImage();
537ff0525f2SOliver-Rainer Wittmann         }
538ff0525f2SOliver-Rainer Wittmann         break;
539ff0525f2SOliver-Rainer Wittmann 
540*8a2dd8f0SOliver-Rainer Wittmann     case SID_ATTR_PAGE_ULSPACE:
541ff0525f2SOliver-Rainer Wittmann         if ( eState >= SFX_ITEM_AVAILABLE &&
542ff0525f2SOliver-Rainer Wittmann              pState && pState->ISA(SvxLongULSpaceItem) )
543ff0525f2SOliver-Rainer Wittmann         {
544ff0525f2SOliver-Rainer Wittmann             mpPageULMarginItem.reset( static_cast<SvxLongULSpaceItem*>(pState->Clone()) );
545ff0525f2SOliver-Rainer Wittmann             ChangeMarginImage();
546ff0525f2SOliver-Rainer Wittmann         }
547ff0525f2SOliver-Rainer Wittmann         break;
548ff0525f2SOliver-Rainer Wittmann 
549ff0525f2SOliver-Rainer Wittmann     case SID_ATTR_PAGE:
550ff0525f2SOliver-Rainer Wittmann         if ( eState >= SFX_ITEM_AVAILABLE &&
551ff0525f2SOliver-Rainer Wittmann              pState && pState->ISA(SvxPageItem) )
552ff0525f2SOliver-Rainer Wittmann         {
553ff0525f2SOliver-Rainer Wittmann             mpPageItem.reset( static_cast<SvxPageItem*>(pState->Clone()) );
554ff0525f2SOliver-Rainer Wittmann             if ( mpPageItem->IsLandscape() )
555ff0525f2SOliver-Rainer Wittmann             {
556ff0525f2SOliver-Rainer Wittmann                 mpToolBoxOrientation->SetItemImage(TBI_ORIENTATION, mImgLandscape);
557ff0525f2SOliver-Rainer Wittmann             }
558ff0525f2SOliver-Rainer Wittmann             else
559ff0525f2SOliver-Rainer Wittmann             {
560ff0525f2SOliver-Rainer Wittmann                 mpToolBoxOrientation->SetItemImage(TBI_ORIENTATION, mImgPortrait);
561ff0525f2SOliver-Rainer Wittmann             }
562ff0525f2SOliver-Rainer Wittmann             ChangeMarginImage();
563ff0525f2SOliver-Rainer Wittmann             ChangeSizeImage();
564ff0525f2SOliver-Rainer Wittmann             ChangeColumnImage( mpPageColumnTypeItem->GetValue() );
565ff0525f2SOliver-Rainer Wittmann         }
566ff0525f2SOliver-Rainer Wittmann         break;
567ff0525f2SOliver-Rainer Wittmann 
568ff0525f2SOliver-Rainer Wittmann     case SID_ATTR_PAGE_SIZE:
5697dc3d34dSOliver-Rainer Wittmann         if ( mbInvalidateSIDAttrPageOnSIDAttrPageSizeNotify )
5707dc3d34dSOliver-Rainer Wittmann         {
5717dc3d34dSOliver-Rainer Wittmann             mpBindings->Invalidate( SID_ATTR_PAGE, sal_True, sal_False );
5727dc3d34dSOliver-Rainer Wittmann         }
573ff0525f2SOliver-Rainer Wittmann         if ( eState >= SFX_ITEM_AVAILABLE &&
574ff0525f2SOliver-Rainer Wittmann              pState && pState->ISA(SvxSizeItem) )
575ff0525f2SOliver-Rainer Wittmann         {
576ff0525f2SOliver-Rainer Wittmann             mpPageSizeItem.reset( static_cast<SvxSizeItem*>(pState->Clone()) );
577ff0525f2SOliver-Rainer Wittmann             ChangeSizeImage();
578ff0525f2SOliver-Rainer Wittmann         }
579ff0525f2SOliver-Rainer Wittmann         break;
580ff0525f2SOliver-Rainer Wittmann     case SID_ATTR_METRIC:
581ff0525f2SOliver-Rainer Wittmann         MetricState( eState, pState );
582ff0525f2SOliver-Rainer Wittmann         break;
583ff0525f2SOliver-Rainer Wittmann     }
584ff0525f2SOliver-Rainer Wittmann }
585ff0525f2SOliver-Rainer Wittmann 
586ff0525f2SOliver-Rainer Wittmann 
587ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::MetricState( SfxItemState eState, const SfxPoolItem* pState )
588ff0525f2SOliver-Rainer Wittmann {
589ff0525f2SOliver-Rainer Wittmann     meFUnit = FUNIT_NONE;
590ff0525f2SOliver-Rainer Wittmann     if ( pState && eState >= SFX_ITEM_DEFAULT )
591ff0525f2SOliver-Rainer Wittmann     {
592ff0525f2SOliver-Rainer Wittmann         meFUnit = (FieldUnit)( (const SfxUInt16Item*)pState )->GetValue();
593ff0525f2SOliver-Rainer Wittmann     }
594ff0525f2SOliver-Rainer Wittmann     else
595ff0525f2SOliver-Rainer Wittmann     {
596ff0525f2SOliver-Rainer Wittmann         SfxViewFrame* pFrame = SfxViewFrame::Current();
597ff0525f2SOliver-Rainer Wittmann         SfxObjectShell* pSh = NULL;
598ff0525f2SOliver-Rainer Wittmann         if ( pFrame )
599ff0525f2SOliver-Rainer Wittmann             pSh = pFrame->GetObjectShell();
600ff0525f2SOliver-Rainer Wittmann         if ( pSh )
601ff0525f2SOliver-Rainer Wittmann         {
602ff0525f2SOliver-Rainer Wittmann             SfxModule* pModule = pSh->GetModule();
603ff0525f2SOliver-Rainer Wittmann             if ( pModule )
604ff0525f2SOliver-Rainer Wittmann             {
605ff0525f2SOliver-Rainer Wittmann                 const SfxPoolItem* pItem = pModule->GetItem( SID_ATTR_METRIC );
606ff0525f2SOliver-Rainer Wittmann                 if ( pItem )
607ff0525f2SOliver-Rainer Wittmann                     meFUnit = (FieldUnit)( (SfxUInt16Item*)pItem )->GetValue();
608ff0525f2SOliver-Rainer Wittmann             }
609ff0525f2SOliver-Rainer Wittmann             else
610ff0525f2SOliver-Rainer Wittmann             {
611ff0525f2SOliver-Rainer Wittmann                 DBG_ERRORFILE( "<PagePropertyPanel::MetricState(..)>: no module found" );
612ff0525f2SOliver-Rainer Wittmann             }
613ff0525f2SOliver-Rainer Wittmann         }
614ff0525f2SOliver-Rainer Wittmann     }
615ff0525f2SOliver-Rainer Wittmann }
616ff0525f2SOliver-Rainer Wittmann 
617ff0525f2SOliver-Rainer Wittmann 
618ff0525f2SOliver-Rainer Wittmann 
619ff0525f2SOliver-Rainer Wittmann 
620ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ChangeMarginImage()
621ff0525f2SOliver-Rainer Wittmann {
622ff0525f2SOliver-Rainer Wittmann     if ( mpPageLRMarginItem.get() == 0 ||
623ff0525f2SOliver-Rainer Wittmann          mpPageULMarginItem.get() == 0 ||
624ff0525f2SOliver-Rainer Wittmann          mpPageItem.get() == 0 )
625ff0525f2SOliver-Rainer Wittmann     {
626ff0525f2SOliver-Rainer Wittmann         return;
627ff0525f2SOliver-Rainer Wittmann     }
628ff0525f2SOliver-Rainer Wittmann 
629ff0525f2SOliver-Rainer Wittmann     const long cTolerance = 5;
630ff0525f2SOliver-Rainer Wittmann 
631ff0525f2SOliver-Rainer Wittmann     if( abs(mpPageLRMarginItem->GetLeft() - SWPAGE_NARROW_VALUE) <= cTolerance &&
632ff0525f2SOliver-Rainer Wittmann         abs(mpPageLRMarginItem->GetRight() - SWPAGE_NARROW_VALUE) <= cTolerance &&
633ff0525f2SOliver-Rainer Wittmann         abs(mpPageULMarginItem->GetUpper() - SWPAGE_NARROW_VALUE) <= cTolerance &&
634ff0525f2SOliver-Rainer Wittmann         abs(mpPageULMarginItem->GetLower() - SWPAGE_NARROW_VALUE) <= cTolerance &&
635ff0525f2SOliver-Rainer Wittmann         mpPageItem->GetPageUsage() != SVX_PAGE_MIRROR )
636ff0525f2SOliver-Rainer Wittmann         mpToolBoxMargin->SetItemImage( TBI_MARGIN, mpPageItem->IsLandscape() ? mImgNarrow_L : mImgNarrow );
637ff0525f2SOliver-Rainer Wittmann 
638ff0525f2SOliver-Rainer Wittmann     else if( abs(mpPageLRMarginItem->GetLeft() - SWPAGE_NORMAL_VALUE) <= cTolerance &&
639ff0525f2SOliver-Rainer Wittmann         abs(mpPageLRMarginItem->GetRight() - SWPAGE_NORMAL_VALUE) <= cTolerance &&
640ff0525f2SOliver-Rainer Wittmann         abs(mpPageULMarginItem->GetUpper() - SWPAGE_NORMAL_VALUE) <= cTolerance &&
641ff0525f2SOliver-Rainer Wittmann         abs(mpPageULMarginItem->GetLower() - SWPAGE_NORMAL_VALUE) <= cTolerance &&
642ff0525f2SOliver-Rainer Wittmann         mpPageItem->GetPageUsage() != SVX_PAGE_MIRROR )
643ff0525f2SOliver-Rainer Wittmann         mpToolBoxMargin->SetItemImage(TBI_MARGIN, mpPageItem->IsLandscape() ? mImgNormal_L : mImgNormal );
644ff0525f2SOliver-Rainer Wittmann 
645ff0525f2SOliver-Rainer Wittmann     else if( abs(mpPageLRMarginItem->GetLeft() - SWPAGE_WIDE_VALUE2) <= cTolerance &&
646ff0525f2SOliver-Rainer Wittmann         abs(mpPageLRMarginItem->GetRight() - SWPAGE_WIDE_VALUE2) <= cTolerance &&
647ff0525f2SOliver-Rainer Wittmann         abs(mpPageULMarginItem->GetUpper() - SWPAGE_WIDE_VALUE1) <= cTolerance &&
648ff0525f2SOliver-Rainer Wittmann         abs(mpPageULMarginItem->GetLower() - SWPAGE_WIDE_VALUE1) <= cTolerance &&
649ff0525f2SOliver-Rainer Wittmann         mpPageItem->GetPageUsage() != SVX_PAGE_MIRROR )
650ff0525f2SOliver-Rainer Wittmann         mpToolBoxMargin->SetItemImage(TBI_MARGIN, mpPageItem->IsLandscape() ? mImgWide_L : mImgWide );
651ff0525f2SOliver-Rainer Wittmann 
652ff0525f2SOliver-Rainer Wittmann     else if( abs(mpPageLRMarginItem->GetLeft() - SWPAGE_WIDE_VALUE3) <= cTolerance &&
653ff0525f2SOliver-Rainer Wittmann         abs(mpPageLRMarginItem->GetRight() - SWPAGE_WIDE_VALUE1) <= cTolerance &&
654ff0525f2SOliver-Rainer Wittmann         abs(mpPageULMarginItem->GetUpper() - SWPAGE_WIDE_VALUE1) <= cTolerance &&
655ff0525f2SOliver-Rainer Wittmann         abs(mpPageULMarginItem->GetLower() - SWPAGE_WIDE_VALUE1) <= cTolerance &&
656ff0525f2SOliver-Rainer Wittmann         mpPageItem->GetPageUsage() == SVX_PAGE_MIRROR )
657ff0525f2SOliver-Rainer Wittmann         mpToolBoxMargin->SetItemImage(TBI_MARGIN, mpPageItem->IsLandscape() ? mImgMirrored_L : mImgMirrored );
658ff0525f2SOliver-Rainer Wittmann 
659ff0525f2SOliver-Rainer Wittmann     else
660ff0525f2SOliver-Rainer Wittmann         mpToolBoxMargin->SetItemImage(TBI_MARGIN, mpPageItem->IsLandscape() ? mImgMarginCustom_L : mImgMarginCustom );
661ff0525f2SOliver-Rainer Wittmann }
662ff0525f2SOliver-Rainer Wittmann 
663ff0525f2SOliver-Rainer Wittmann 
664ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ChangeSizeImage()
665ff0525f2SOliver-Rainer Wittmann {
666ff0525f2SOliver-Rainer Wittmann     if ( mpPageSizeItem.get() == 0 ||
667ff0525f2SOliver-Rainer Wittmann          mpPageItem.get() == 0 )
668ff0525f2SOliver-Rainer Wittmann     {
669ff0525f2SOliver-Rainer Wittmann         return;
670ff0525f2SOliver-Rainer Wittmann     }
671ff0525f2SOliver-Rainer Wittmann 
672ff0525f2SOliver-Rainer Wittmann     Size aTmpPaperSize = mpPageSizeItem->GetSize();
673ff0525f2SOliver-Rainer Wittmann     if ( mpPageItem->IsLandscape() )
674ff0525f2SOliver-Rainer Wittmann     {
675ff0525f2SOliver-Rainer Wittmann         Swap( aTmpPaperSize ); // Swap(..) defined in editeng/paperinf.hxx
676ff0525f2SOliver-Rainer Wittmann     }
677ff0525f2SOliver-Rainer Wittmann 
678ff0525f2SOliver-Rainer Wittmann     mePaper = SvxPaperInfo::GetSvxPaper( aTmpPaperSize, static_cast<MapUnit>(meUnit), sal_True );
679ff0525f2SOliver-Rainer Wittmann 
680ff0525f2SOliver-Rainer Wittmann     sal_uInt16 nImageIdx = 0;
681ff0525f2SOliver-Rainer Wittmann     switch ( mePaper )
682ff0525f2SOliver-Rainer Wittmann     {
683ff0525f2SOliver-Rainer Wittmann     case PAPER_A3:
684ff0525f2SOliver-Rainer Wittmann         nImageIdx = 1;
685ff0525f2SOliver-Rainer Wittmann         break;
686ff0525f2SOliver-Rainer Wittmann     case PAPER_A4:
687ff0525f2SOliver-Rainer Wittmann         nImageIdx = 2;
688ff0525f2SOliver-Rainer Wittmann         break;
689ff0525f2SOliver-Rainer Wittmann     case PAPER_A5:
690ff0525f2SOliver-Rainer Wittmann         nImageIdx = 3;
691ff0525f2SOliver-Rainer Wittmann         break;
692ff0525f2SOliver-Rainer Wittmann     case PAPER_B4_ISO:
693ff0525f2SOliver-Rainer Wittmann         nImageIdx = 4;
694ff0525f2SOliver-Rainer Wittmann         break;
695ff0525f2SOliver-Rainer Wittmann     case PAPER_B5_ISO:
696ff0525f2SOliver-Rainer Wittmann         nImageIdx = 5;
697ff0525f2SOliver-Rainer Wittmann         break;
698ff0525f2SOliver-Rainer Wittmann     case PAPER_ENV_C5:
699ff0525f2SOliver-Rainer Wittmann         nImageIdx = 6;
700ff0525f2SOliver-Rainer Wittmann         break;
701ff0525f2SOliver-Rainer Wittmann     case PAPER_LETTER:
702ff0525f2SOliver-Rainer Wittmann         nImageIdx = 7;
703ff0525f2SOliver-Rainer Wittmann         break;
704ff0525f2SOliver-Rainer Wittmann     case PAPER_LEGAL:
705ff0525f2SOliver-Rainer Wittmann         nImageIdx = 8;
706ff0525f2SOliver-Rainer Wittmann         break;
707ff0525f2SOliver-Rainer Wittmann     default:
708ff0525f2SOliver-Rainer Wittmann         nImageIdx = 0;
709ff0525f2SOliver-Rainer Wittmann         mePaper = PAPER_USER;
710ff0525f2SOliver-Rainer Wittmann         break;
711ff0525f2SOliver-Rainer Wittmann     }
712ff0525f2SOliver-Rainer Wittmann 
713ff0525f2SOliver-Rainer Wittmann     if ( nImageIdx == 0 )
714ff0525f2SOliver-Rainer Wittmann     {
715ff0525f2SOliver-Rainer Wittmann         mpToolBoxSize->SetItemImage( TBI_SIZE,
716ff0525f2SOliver-Rainer Wittmann                                      ( mpPageItem->IsLandscape() ? mImgSizeNone_L : mImgSizeNone  ) );
717ff0525f2SOliver-Rainer Wittmann     }
718ff0525f2SOliver-Rainer Wittmann     else
719ff0525f2SOliver-Rainer Wittmann     {
720ff0525f2SOliver-Rainer Wittmann         mpToolBoxSize->SetItemImage( TBI_SIZE,
721ff0525f2SOliver-Rainer Wittmann                                      ( mpPageItem->IsLandscape() ? maImgSize_L[nImageIdx-1] : maImgSize[nImageIdx-1] ) );
722ff0525f2SOliver-Rainer Wittmann     }
723ff0525f2SOliver-Rainer Wittmann }
724ff0525f2SOliver-Rainer Wittmann 
725ff0525f2SOliver-Rainer Wittmann 
726ff0525f2SOliver-Rainer Wittmann void PagePropertyPanel::ChangeColumnImage( const sal_uInt16 nColumnType )
727ff0525f2SOliver-Rainer Wittmann {
728ff0525f2SOliver-Rainer Wittmann     if ( mpPageItem.get() == 0 )
729ff0525f2SOliver-Rainer Wittmann     {
730ff0525f2SOliver-Rainer Wittmann         return;
731ff0525f2SOliver-Rainer Wittmann     }
732ff0525f2SOliver-Rainer Wittmann 
733ff0525f2SOliver-Rainer Wittmann     if ( !mpPageItem->IsLandscape() )
734ff0525f2SOliver-Rainer Wittmann     {
735ff0525f2SOliver-Rainer Wittmann         switch( nColumnType )
736ff0525f2SOliver-Rainer Wittmann         {
737ff0525f2SOliver-Rainer Wittmann         case 1:
738ff0525f2SOliver-Rainer Wittmann             mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumn1);
739ff0525f2SOliver-Rainer Wittmann             break;
740ff0525f2SOliver-Rainer Wittmann         case 2:
741ff0525f2SOliver-Rainer Wittmann             mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumn2);
742ff0525f2SOliver-Rainer Wittmann             break;
743ff0525f2SOliver-Rainer Wittmann         case 3:
744ff0525f2SOliver-Rainer Wittmann             mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumn3);
745ff0525f2SOliver-Rainer Wittmann             break;
746ff0525f2SOliver-Rainer Wittmann         case 4:
747ff0525f2SOliver-Rainer Wittmann             mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgLeft);
748ff0525f2SOliver-Rainer Wittmann             break;
749ff0525f2SOliver-Rainer Wittmann         case 5:
750ff0525f2SOliver-Rainer Wittmann             mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgRight);
751ff0525f2SOliver-Rainer Wittmann             break;
752ff0525f2SOliver-Rainer Wittmann         default:
753ff0525f2SOliver-Rainer Wittmann             mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumnNone);
754ff0525f2SOliver-Rainer Wittmann         }
755ff0525f2SOliver-Rainer Wittmann     }
756ff0525f2SOliver-Rainer Wittmann     else
757ff0525f2SOliver-Rainer Wittmann     {
758ff0525f2SOliver-Rainer Wittmann         switch( nColumnType )
759ff0525f2SOliver-Rainer Wittmann         {
760ff0525f2SOliver-Rainer Wittmann         case 1:
761ff0525f2SOliver-Rainer Wittmann             mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumn1_L);
762ff0525f2SOliver-Rainer Wittmann             break;
763ff0525f2SOliver-Rainer Wittmann         case 2:
764ff0525f2SOliver-Rainer Wittmann             mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumn2_L);
765ff0525f2SOliver-Rainer Wittmann             break;
766ff0525f2SOliver-Rainer Wittmann         case 3:
767ff0525f2SOliver-Rainer Wittmann             mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumn3_L);
768ff0525f2SOliver-Rainer Wittmann             break;
769ff0525f2SOliver-Rainer Wittmann         case 4:
770ff0525f2SOliver-Rainer Wittmann             mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgLeft_L);
771ff0525f2SOliver-Rainer Wittmann             break;
772ff0525f2SOliver-Rainer Wittmann         case 5:
773ff0525f2SOliver-Rainer Wittmann             mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgRight_L);
774ff0525f2SOliver-Rainer Wittmann             break;
775ff0525f2SOliver-Rainer Wittmann         default:
776ff0525f2SOliver-Rainer Wittmann             mpToolBoxColumn->SetItemImage(TBI_COLUMN, mImgColumnNone_L);
777ff0525f2SOliver-Rainer Wittmann         }
778ff0525f2SOliver-Rainer Wittmann     }
779ff0525f2SOliver-Rainer Wittmann }
780ff0525f2SOliver-Rainer Wittmann 
781ff0525f2SOliver-Rainer Wittmann } } // end of namespace ::sw::sidebar
782