Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : : #include <sfx2/app.hxx>
30 : : #include <sfx2/objsh.hxx>
31 : : #include <vcl/msgbox.hxx>
32 : : #include <unotools/pathoptions.hxx>
33 : : #include <svx/svdmark.hxx>
34 : : #include <svx/svdobj.hxx>
35 : : #include <svx/svdview.hxx>
36 : : #include <svx/dialogs.hrc>
37 : :
38 : : #define _SVX_TABAREA_CXX
39 : :
40 : : #include <cuires.hrc>
41 : : #include <svx/xtable.hxx>
42 : : #include "svx/globl3d.hxx"
43 : : #include <svx/svdmodel.hxx>
44 : : #include "svx/drawitem.hxx"
45 : : #include "cuitabarea.hxx"
46 : : #include "tabarea.hrc"
47 : : #include "dlgname.hxx"
48 : : #include <dialmgr.hxx>
49 : :
50 : 0 : SvxAreaTabDialog::SvxAreaTabDialog
51 : : (
52 : : Window* pParent,
53 : : const SfxItemSet* pAttr,
54 : : SdrModel* pModel,
55 : : const SdrView* /* pSdrView */
56 : : ) :
57 : :
58 : 0 : SfxTabDialog( pParent, CUI_RES( RID_SVXDLG_AREA ), pAttr ),
59 : :
60 : : mpDrawModel ( pModel ),
61 : : mpColorList ( pModel->GetColorList() ),
62 : : mpNewColorList ( pModel->GetColorList() ),
63 : : mpGradientList ( pModel->GetGradientList() ),
64 : : mpNewGradientList ( pModel->GetGradientList() ),
65 : : mpHatchingList ( pModel->GetHatchList() ),
66 : : mpNewHatchingList ( pModel->GetHatchList() ),
67 : : mpBitmapList ( pModel->GetBitmapList() ),
68 : : mpNewBitmapList ( pModel->GetBitmapList() ),
69 : : mrOutAttrs ( *pAttr ),
70 : : mnColorListState ( CT_NONE ),
71 : : mnBitmapListState ( CT_NONE ),
72 : : mnGradientListState ( CT_NONE ),
73 : : mnHatchingListState ( CT_NONE ),
74 : : mnPageType( PT_AREA ),
75 : : mnDlgType( 0 ),
76 [ # # ][ # # ]: 0 : mbAreaTP( sal_False )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
77 : : {
78 [ # # ]: 0 : FreeResource();
79 : :
80 [ # # ]: 0 : AddTabPage( RID_SVXPAGE_AREA, SvxAreaTabPage::Create, 0 );
81 [ # # ]: 0 : AddTabPage( RID_SVXPAGE_SHADOW, SvxShadowTabPage::Create, 0 );
82 [ # # ]: 0 : AddTabPage( RID_SVXPAGE_TRANSPARENCE, SvxTransparenceTabPage::Create, 0);
83 [ # # ]: 0 : AddTabPage( RID_SVXPAGE_COLOR, SvxColorTabPage::Create, 0 );
84 [ # # ]: 0 : AddTabPage( RID_SVXPAGE_GRADIENT, SvxGradientTabPage::Create, 0 );
85 [ # # ]: 0 : AddTabPage( RID_SVXPAGE_HATCH, SvxHatchTabPage::Create, 0 );
86 [ # # ]: 0 : AddTabPage( RID_SVXPAGE_BITMAP, SvxBitmapTabPage::Create, 0);
87 : :
88 : 0 : SetCurPageId( RID_SVXPAGE_AREA );
89 : :
90 : 0 : CancelButton& rBtnCancel = GetCancelButton();
91 [ # # ]: 0 : rBtnCancel.SetClickHdl( LINK( this, SvxAreaTabDialog, CancelHdlImpl ) );
92 : 0 : }
93 : :
94 : : // -----------------------------------------------------------------------
95 : :
96 : 0 : SvxAreaTabDialog::~SvxAreaTabDialog()
97 : : {
98 [ # # ]: 0 : }
99 : :
100 : :
101 : : // -----------------------------------------------------------------------
102 : :
103 : 0 : void SvxAreaTabDialog::SavePalettes()
104 : : {
105 [ # # ]: 0 : SfxObjectShell* pShell = SfxObjectShell::Current();
106 [ # # ][ # # ]: 0 : if( mpNewColorList != mpDrawModel->GetColorList() )
107 : : {
108 [ # # ]: 0 : mpDrawModel->SetPropertyList( static_cast<XPropertyList *>(mpNewColorList.get()) );
109 [ # # ]: 0 : SvxColorListItem aColorListItem( mpNewColorList, SID_COLOR_TABLE );
110 [ # # ]: 0 : if ( pShell )
111 [ # # ]: 0 : pShell->PutItem( aColorListItem );
112 : : else
113 [ # # ]: 0 : mpDrawModel->GetItemPool().Put(aColorListItem,SID_COLOR_TABLE);
114 [ # # ][ # # ]: 0 : mpColorList = mpDrawModel->GetColorList();
[ # # ]
115 : : }
116 [ # # ][ # # ]: 0 : if( mpNewGradientList != mpDrawModel->GetGradientList() )
117 : : {
118 [ # # ]: 0 : mpDrawModel->SetPropertyList( static_cast<XPropertyList *>(mpNewGradientList.get()) );
119 [ # # ]: 0 : SvxGradientListItem aItem( mpNewGradientList, SID_GRADIENT_LIST );
120 [ # # ]: 0 : if ( pShell )
121 [ # # ]: 0 : pShell->PutItem( aItem );
122 : : else
123 [ # # ]: 0 : mpDrawModel->GetItemPool().Put(aItem,SID_GRADIENT_LIST);
124 [ # # ][ # # ]: 0 : mpGradientList = mpDrawModel->GetGradientList();
[ # # ]
125 : : }
126 [ # # ][ # # ]: 0 : if( mpNewHatchingList != mpDrawModel->GetHatchList() )
127 : : {
128 [ # # ]: 0 : mpDrawModel->SetPropertyList( static_cast<XPropertyList *>(mpNewHatchingList.get()) );
129 [ # # ]: 0 : SvxHatchListItem aItem( mpNewHatchingList, SID_HATCH_LIST );
130 [ # # ]: 0 : if ( pShell )
131 [ # # ]: 0 : pShell->PutItem( aItem );
132 : : else
133 [ # # ]: 0 : mpDrawModel->GetItemPool().Put(aItem,SID_HATCH_LIST);
134 [ # # ][ # # ]: 0 : mpHatchingList = mpDrawModel->GetHatchList();
[ # # ]
135 : : }
136 [ # # ][ # # ]: 0 : if( mpNewBitmapList != mpDrawModel->GetBitmapList() )
137 : : {
138 [ # # ]: 0 : mpDrawModel->SetPropertyList( static_cast<XPropertyList *>(mpNewBitmapList.get()) );
139 [ # # ]: 0 : SvxBitmapListItem aItem( mpNewBitmapList, SID_BITMAP_LIST );
140 [ # # ]: 0 : if ( pShell )
141 [ # # ]: 0 : pShell->PutItem( aItem );
142 : : else
143 [ # # ]: 0 : mpDrawModel->GetItemPool().Put(aItem,SID_BITMAP_LIST);
144 [ # # ][ # # ]: 0 : mpBitmapList = mpDrawModel->GetBitmapList();
[ # # ]
145 : : }
146 : :
147 : : // save the tables when they have been changed
148 : :
149 [ # # ][ # # ]: 0 : const String aPath( SvtPathOptions().GetPalettePath() );
[ # # ][ # # ]
150 : :
151 [ # # ]: 0 : if( mnHatchingListState & CT_MODIFIED )
152 : : {
153 [ # # ]: 0 : mpHatchingList->SetPath( aPath );
154 [ # # ]: 0 : mpHatchingList->Save();
155 : :
156 [ # # ]: 0 : SvxHatchListItem aItem( mpHatchingList, SID_HATCH_LIST );
157 : : // ToolBoxControls are informed:
158 [ # # ]: 0 : if ( pShell )
159 [ # # ]: 0 : pShell->PutItem( aItem );
160 : : else
161 [ # # ][ # # ]: 0 : mpDrawModel->GetItemPool().Put(aItem);
162 : : }
163 : :
164 [ # # ]: 0 : if( mnBitmapListState & CT_MODIFIED )
165 : : {
166 [ # # ]: 0 : mpBitmapList->SetPath( aPath );
167 [ # # ]: 0 : mpBitmapList->Save();
168 : :
169 [ # # ]: 0 : SvxBitmapListItem aItem( mpBitmapList, SID_BITMAP_LIST );
170 : : // ToolBoxControls are informed:
171 [ # # ]: 0 : if ( pShell )
172 [ # # ]: 0 : pShell->PutItem( aItem );
173 : : else
174 : : {
175 [ # # ]: 0 : mpDrawModel->GetItemPool().Put(aItem);
176 [ # # ]: 0 : }
177 : : }
178 : :
179 [ # # ]: 0 : if( mnGradientListState & CT_MODIFIED )
180 : : {
181 [ # # ]: 0 : mpGradientList->SetPath( aPath );
182 [ # # ]: 0 : mpGradientList->Save();
183 : :
184 [ # # ]: 0 : SvxGradientListItem aItem( mpGradientList, SID_GRADIENT_LIST );
185 : : // ToolBoxControls are informed:
186 [ # # ]: 0 : if ( pShell )
187 [ # # ]: 0 : pShell->PutItem( aItem );
188 : : else
189 : : {
190 [ # # ]: 0 : mpDrawModel->GetItemPool().Put(aItem);
191 [ # # ]: 0 : }
192 : : }
193 : :
194 [ # # ]: 0 : if( mnColorListState & CT_MODIFIED )
195 : : {
196 [ # # ]: 0 : mpColorList->SetPath( aPath );
197 [ # # ]: 0 : mpColorList->Save();
198 : :
199 [ # # ]: 0 : SvxColorListItem aItem( mpColorList, SID_COLOR_TABLE );
200 : : // ToolBoxControls are informed:
201 [ # # ]: 0 : if ( pShell )
202 [ # # ]: 0 : pShell->PutItem( aItem );
203 : : else
204 : : {
205 [ # # ]: 0 : mpDrawModel->GetItemPool().Put(aItem);
206 [ # # ]: 0 : }
207 [ # # ]: 0 : }
208 : 0 : }
209 : : // -----------------------------------------------------------------------
210 : :
211 : 0 : short SvxAreaTabDialog::Ok()
212 : : {
213 : 0 : SavePalettes();
214 : :
215 : : // RET_OK is returned, if at least one
216 : : // TabPage returns sal_True in FillItemSet().
217 : : // This happens by default at the moment.
218 : 0 : return( SfxTabDialog::Ok() );
219 : : }
220 : :
221 : : // -----------------------------------------------------------------------
222 : :
223 : 0 : IMPL_LINK_NOARG_INLINE_START(SvxAreaTabDialog, CancelHdlImpl)
224 : : {
225 : 0 : SavePalettes();
226 : :
227 : 0 : EndDialog( RET_CANCEL );
228 : 0 : return 0;
229 : : }
230 : 0 : IMPL_LINK_INLINE_END( SvxAreaTabDialog, CancelHdlImpl, void *, p )
231 : :
232 : : // -----------------------------------------------------------------------
233 : :
234 : 0 : void SvxAreaTabDialog::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
235 : : {
236 [ # # # # : 0 : switch( nId )
# # # # ]
237 : : {
238 : : case RID_SVXPAGE_AREA:
239 [ # # ]: 0 : ( (SvxAreaTabPage&) rPage ).SetColorList( mpColorList );
240 [ # # ]: 0 : ( (SvxAreaTabPage&) rPage ).SetGradientList( mpGradientList );
241 [ # # ]: 0 : ( (SvxAreaTabPage&) rPage ).SetHatchingList( mpHatchingList );
242 [ # # ]: 0 : ( (SvxAreaTabPage&) rPage ).SetBitmapList( mpBitmapList );
243 : 0 : ( (SvxAreaTabPage&) rPage ).SetPageType( mnPageType );
244 : 0 : ( (SvxAreaTabPage&) rPage ).SetDlgType( mnDlgType );
245 : 0 : ( (SvxAreaTabPage&) rPage ).SetPos( mnPos );
246 : 0 : ( (SvxAreaTabPage&) rPage ).SetAreaTP( &mbAreaTP );
247 : 0 : ( (SvxAreaTabPage&) rPage ).SetGrdChgd( &mnGradientListState );
248 : 0 : ( (SvxAreaTabPage&) rPage ).SetHtchChgd( &mnHatchingListState );
249 : 0 : ( (SvxAreaTabPage&) rPage ).SetBmpChgd( &mnBitmapListState );
250 : 0 : ( (SvxAreaTabPage&) rPage ).SetColorChgd( &mnColorListState );
251 : 0 : ( (SvxAreaTabPage&) rPage ).Construct();
252 : : // ActivatePage() is not called the first time
253 : 0 : ( (SvxAreaTabPage&) rPage ).ActivatePage( mrOutAttrs );
254 : :
255 : 0 : break;
256 : :
257 : : case RID_SVXPAGE_SHADOW:
258 : : {
259 [ # # ]: 0 : ( (SvxShadowTabPage&) rPage ).SetColorList( mpColorList );
260 : 0 : ( (SvxShadowTabPage&) rPage ).SetPageType( mnPageType );
261 : 0 : ( (SvxShadowTabPage&) rPage ).SetDlgType( mnDlgType );
262 : 0 : ( (SvxShadowTabPage&) rPage ).SetAreaTP( &mbAreaTP );
263 : 0 : ( (SvxShadowTabPage&) rPage ).SetColorChgd( &mnColorListState );
264 : 0 : ( (SvxShadowTabPage&) rPage ).Construct();
265 : : }
266 : 0 : break;
267 : :
268 : : case RID_SVXPAGE_GRADIENT:
269 [ # # ]: 0 : ( (SvxGradientTabPage&) rPage ).SetColorList( mpColorList );
270 [ # # ]: 0 : ( (SvxGradientTabPage&) rPage ).SetGradientList( mpGradientList );
271 : 0 : ( (SvxGradientTabPage&) rPage ).SetPageType( &mnPageType );
272 : 0 : ( (SvxGradientTabPage&) rPage ).SetDlgType( &mnDlgType );
273 : 0 : ( (SvxGradientTabPage&) rPage ).SetPos( &mnPos );
274 : 0 : ( (SvxGradientTabPage&) rPage ).SetAreaTP( &mbAreaTP );
275 : 0 : ( (SvxGradientTabPage&) rPage ).SetGrdChgd( &mnGradientListState );
276 : 0 : ( (SvxGradientTabPage&) rPage ).SetColorChgd( &mnColorListState );
277 : 0 : ( (SvxGradientTabPage&) rPage ).Construct();
278 : 0 : break;
279 : :
280 : : case RID_SVXPAGE_HATCH:
281 [ # # ]: 0 : ( (SvxHatchTabPage&) rPage ).SetColorList( mpColorList );
282 [ # # ]: 0 : ( (SvxHatchTabPage&) rPage ).SetHatchingList( mpHatchingList );
283 : 0 : ( (SvxHatchTabPage&) rPage ).SetPageType( &mnPageType );
284 : 0 : ( (SvxHatchTabPage&) rPage ).SetDlgType( &mnDlgType );
285 : 0 : ( (SvxHatchTabPage&) rPage ).SetPos( &mnPos );
286 : 0 : ( (SvxHatchTabPage&) rPage ).SetAreaTP( &mbAreaTP );
287 : 0 : ( (SvxHatchTabPage&) rPage ).SetHtchChgd( &mnHatchingListState );
288 : 0 : ( (SvxHatchTabPage&) rPage ).SetColorChgd( &mnColorListState );
289 : 0 : ( (SvxHatchTabPage&) rPage ).Construct();
290 : 0 : break;
291 : :
292 : : case RID_SVXPAGE_BITMAP:
293 [ # # ]: 0 : ( (SvxBitmapTabPage&) rPage ).SetColorList( mpColorList );
294 [ # # ]: 0 : ( (SvxBitmapTabPage&) rPage ).SetBitmapList( mpBitmapList );
295 : 0 : ( (SvxBitmapTabPage&) rPage ).SetPageType( &mnPageType );
296 : 0 : ( (SvxBitmapTabPage&) rPage ).SetDlgType( &mnDlgType );
297 : 0 : ( (SvxBitmapTabPage&) rPage ).SetPos( &mnPos );
298 : 0 : ( (SvxBitmapTabPage&) rPage ).SetAreaTP( &mbAreaTP );
299 : 0 : ( (SvxBitmapTabPage&) rPage ).SetBmpChgd( &mnBitmapListState );
300 : 0 : ( (SvxBitmapTabPage&) rPage ).SetColorChgd( &mnColorListState );
301 : 0 : ( (SvxBitmapTabPage&) rPage ).Construct();
302 : 0 : break;
303 : :
304 : : case RID_SVXPAGE_COLOR:
305 [ # # ]: 0 : ( (SvxColorTabPage&) rPage ).SetColorList( mpColorList );
306 : 0 : ( (SvxColorTabPage&) rPage ).SetPageType( &mnPageType );
307 : 0 : ( (SvxColorTabPage&) rPage ).SetDlgType( &mnDlgType );
308 : 0 : ( (SvxColorTabPage&) rPage ).SetPos( &mnPos );
309 : 0 : ( (SvxColorTabPage&) rPage ).SetAreaTP( &mbAreaTP );
310 : 0 : ( (SvxColorTabPage&) rPage ).SetColorChgd( &mnColorListState );
311 : 0 : ( (SvxColorTabPage&) rPage ).Construct();
312 : 0 : break;
313 : :
314 : : case RID_SVXPAGE_TRANSPARENCE:
315 : 0 : ( (SvxTransparenceTabPage&) rPage ).SetPageType( mnPageType );
316 : 0 : ( (SvxTransparenceTabPage&) rPage ).SetDlgType( mnDlgType );
317 : 0 : ( (SvxTransparenceTabPage&) rPage ).Construct();
318 : 0 : break;
319 : :
320 : : }
321 : 0 : }
322 : :
323 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|