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 : :
30 : : #ifdef SD_DLLIMPLEMENTATION
31 : : #undef SD_DLLIMPLEMENTATION
32 : : #endif
33 : :
34 : :
35 : : #include "sdattr.hxx"
36 : : #include "optsitem.hxx"
37 : : #include "prntopts.hrc"
38 : : #include "sdresid.hxx"
39 : : #include "prntopts.hxx"
40 : : #include "app.hrc"
41 : : #include <svl/intitem.hxx>
42 : : #include <sfx2/request.hxx>
43 : :
44 : : /*************************************************************************
45 : : |*
46 : : |* Dialog zum Aendern der Print-Optionen
47 : : |*
48 : : \************************************************************************/
49 : :
50 : 0 : SdPrintOptions::SdPrintOptions( Window* pParent, const SfxItemSet& rInAttrs ) :
51 : : SfxTabPage ( pParent, SdResId( TP_PRINT_OPTIONS ), rInAttrs ),
52 : :
53 : : aGrpPrint ( this, SdResId( GRP_PRINT ) ),
54 : : aCbxDraw ( this, SdResId( CBX_DRAW ) ),
55 : : aCbxNotes ( this, SdResId( CBX_NOTES ) ),
56 : : aCbxHandout ( this, SdResId( CBX_HANDOUTS ) ),
57 : : aCbxOutline ( this, SdResId( CBX_OUTLINE ) ),
58 : :
59 : : aSeparator1FL ( this, SdResId( FL_SEPARATOR1 ) ),
60 : : aGrpOutput ( this, SdResId( GRP_OUTPUT ) ),
61 : : aRbtColor ( this, SdResId( RBT_COLOR ) ),
62 : : aRbtGrayscale ( this, SdResId( RBT_GRAYSCALE ) ),
63 : : aRbtBlackWhite ( this, SdResId( RBT_BLACKWHITE ) ),
64 : :
65 : : aGrpPrintExt ( this, SdResId( GRP_PRINT_EXT ) ),
66 : : aCbxPagename ( this, SdResId( CBX_PAGENAME ) ),
67 : : aCbxDate ( this, SdResId( CBX_DATE ) ),
68 : : aCbxTime ( this, SdResId( CBX_TIME ) ),
69 : : aCbxHiddenPages ( this, SdResId( CBX_HIDDEN_PAGES ) ),
70 : :
71 : : aSeparator2FL ( this, SdResId( FL_SEPARATOR2 ) ),
72 : : aGrpPageoptions ( this, SdResId( GRP_PAGE ) ),
73 : : aRbtDefault ( this, SdResId( RBT_DEFAULT ) ),
74 : : aRbtPagesize ( this, SdResId( RBT_PAGESIZE ) ),
75 : : aRbtPagetile ( this, SdResId( RBT_PAGETILE ) ),
76 : : aRbtBooklet ( this, SdResId( RBT_BOOKLET ) ),
77 : : aCbxFront ( this, SdResId( CBX_FRONT ) ),
78 : : aCbxBack ( this, SdResId( CBX_BACK ) ),
79 : :
80 : : aCbxPaperbin ( this, SdResId( CBX_PAPERBIN ) ),
81 : :
82 : 0 : rOutAttrs ( rInAttrs )
83 : : {
84 : 0 : FreeResource();
85 : :
86 : 0 : Link aLink = LINK( this, SdPrintOptions, ClickBookletHdl );
87 : 0 : aRbtDefault.SetClickHdl( aLink );
88 : 0 : aRbtPagesize.SetClickHdl( aLink );
89 : 0 : aRbtPagetile.SetClickHdl( aLink );
90 : 0 : aRbtBooklet.SetClickHdl( aLink );
91 : :
92 : 0 : aLink = LINK( this, SdPrintOptions, ClickCheckboxHdl );
93 : 0 : aCbxDraw.SetClickHdl( aLink );
94 : 0 : aCbxNotes.SetClickHdl( aLink );
95 : 0 : aCbxHandout.SetClickHdl( aLink );
96 : 0 : aCbxOutline.SetClickHdl( aLink );
97 : :
98 : : #ifndef QUARTZ
99 : 0 : SetDrawMode();
100 : : #endif
101 : :
102 : 0 : aCbxFront.SetAccessibleRelationLabeledBy( &aRbtBooklet );
103 : 0 : aCbxBack.SetAccessibleRelationLabeledBy( &aRbtBooklet );
104 : 0 : }
105 : :
106 : : // -----------------------------------------------------------------------
107 : :
108 : 0 : SdPrintOptions::~SdPrintOptions()
109 : : {
110 : 0 : }
111 : :
112 : : // -----------------------------------------------------------------------
113 : :
114 : 0 : sal_Bool SdPrintOptions::FillItemSet( SfxItemSet& rAttrs )
115 : : {
116 : 0 : if( aCbxDraw.GetSavedValue() != aCbxDraw.IsChecked() ||
117 : 0 : aCbxNotes.GetSavedValue() != aCbxNotes.IsChecked() ||
118 : 0 : aCbxHandout.GetSavedValue() != aCbxHandout.IsChecked() ||
119 : 0 : aCbxOutline.GetSavedValue() != aCbxOutline.IsChecked() ||
120 : 0 : aCbxDate.GetSavedValue() != aCbxDate.IsChecked() ||
121 : 0 : aCbxTime.GetSavedValue() != aCbxTime.IsChecked() ||
122 : 0 : aCbxPagename.GetSavedValue() != aCbxPagename.IsChecked() ||
123 : 0 : aCbxHiddenPages.GetSavedValue() != aCbxHiddenPages.IsChecked() ||
124 : 0 : aRbtPagesize.GetSavedValue() != aRbtPagesize.IsChecked() ||
125 : 0 : aRbtPagetile.GetSavedValue() != aRbtPagetile.IsChecked() ||
126 : 0 : aRbtBooklet.GetSavedValue() != aRbtBooklet.IsChecked() ||
127 : 0 : aCbxFront.GetSavedValue() != aCbxFront.IsChecked() ||
128 : 0 : aCbxBack.GetSavedValue() != aCbxBack.IsChecked() ||
129 : 0 : aCbxPaperbin.GetSavedValue() != aCbxPaperbin.IsChecked() ||
130 : 0 : aRbtColor.GetSavedValue() != aRbtColor.IsChecked() ||
131 : 0 : aRbtGrayscale.GetSavedValue() != aRbtGrayscale.IsChecked() ||
132 : 0 : aRbtBlackWhite.GetSavedValue() != aRbtBlackWhite.IsChecked() )
133 : : {
134 : 0 : SdOptionsPrintItem aOptions( ATTR_OPTIONS_PRINT );
135 : :
136 : 0 : aOptions.GetOptionsPrint().SetDraw( aCbxDraw.IsChecked() );
137 : 0 : aOptions.GetOptionsPrint().SetNotes( aCbxNotes.IsChecked() );
138 : 0 : aOptions.GetOptionsPrint().SetHandout( aCbxHandout.IsChecked() );
139 : 0 : aOptions.GetOptionsPrint().SetOutline( aCbxOutline.IsChecked() );
140 : 0 : aOptions.GetOptionsPrint().SetDate( aCbxDate.IsChecked() );
141 : 0 : aOptions.GetOptionsPrint().SetTime( aCbxTime.IsChecked() );
142 : 0 : aOptions.GetOptionsPrint().SetPagename( aCbxPagename.IsChecked() );
143 : 0 : aOptions.GetOptionsPrint().SetHiddenPages( aCbxHiddenPages.IsChecked() );
144 : 0 : aOptions.GetOptionsPrint().SetPagesize( aRbtPagesize.IsChecked() );
145 : 0 : aOptions.GetOptionsPrint().SetPagetile( aRbtPagetile.IsChecked() );
146 : 0 : aOptions.GetOptionsPrint().SetBooklet( aRbtBooklet.IsChecked() );
147 : 0 : aOptions.GetOptionsPrint().SetFrontPage( aCbxFront.IsChecked() );
148 : 0 : aOptions.GetOptionsPrint().SetBackPage( aCbxBack.IsChecked() );
149 : 0 : aOptions.GetOptionsPrint().SetPaperbin( aCbxPaperbin.IsChecked() );
150 : :
151 : 0 : sal_uInt16 nQuality = 0; // Standard, also Color
152 : 0 : if( aRbtGrayscale.IsChecked() )
153 : 0 : nQuality = 1;
154 : 0 : if( aRbtBlackWhite.IsChecked() )
155 : 0 : nQuality = 2;
156 : 0 : aOptions.GetOptionsPrint().SetOutputQuality( nQuality );
157 : :
158 : 0 : rAttrs.Put( aOptions );
159 : :
160 : 0 : return( sal_True );
161 : : }
162 : 0 : return( sal_False );
163 : : }
164 : :
165 : : // -----------------------------------------------------------------------
166 : :
167 : 0 : void SdPrintOptions::Reset( const SfxItemSet& rAttrs )
168 : : {
169 : 0 : const SdOptionsPrintItem* pPrintOpts = NULL;
170 : 0 : if( SFX_ITEM_SET == rAttrs.GetItemState( ATTR_OPTIONS_PRINT, sal_False,
171 : 0 : (const SfxPoolItem**) &pPrintOpts ) )
172 : : {
173 : 0 : aCbxDraw.Check( pPrintOpts->GetOptionsPrint().IsDraw() );
174 : 0 : aCbxNotes.Check( pPrintOpts->GetOptionsPrint().IsNotes() );
175 : 0 : aCbxHandout.Check( pPrintOpts->GetOptionsPrint().IsHandout() );
176 : 0 : aCbxOutline.Check( pPrintOpts->GetOptionsPrint().IsOutline() );
177 : 0 : aCbxDate.Check( pPrintOpts->GetOptionsPrint().IsDate() );
178 : 0 : aCbxTime.Check( pPrintOpts->GetOptionsPrint().IsTime() );
179 : 0 : aCbxPagename.Check( pPrintOpts->GetOptionsPrint().IsPagename() );
180 : 0 : aCbxHiddenPages.Check( pPrintOpts->GetOptionsPrint().IsHiddenPages() );
181 : 0 : aRbtPagesize.Check( pPrintOpts->GetOptionsPrint().IsPagesize() );
182 : 0 : aRbtPagetile.Check( pPrintOpts->GetOptionsPrint().IsPagetile() );
183 : 0 : aRbtBooklet.Check( pPrintOpts->GetOptionsPrint().IsBooklet() );
184 : 0 : aCbxFront.Check( pPrintOpts->GetOptionsPrint().IsFrontPage() );
185 : 0 : aCbxBack.Check( pPrintOpts->GetOptionsPrint().IsBackPage() );
186 : 0 : aCbxPaperbin.Check( pPrintOpts->GetOptionsPrint().IsPaperbin() );
187 : :
188 : 0 : if( !aRbtPagesize.IsChecked() &&
189 : 0 : !aRbtPagetile.IsChecked() &&
190 : 0 : !aRbtBooklet.IsChecked() )
191 : : {
192 : 0 : aRbtDefault.Check();
193 : : }
194 : :
195 : 0 : sal_uInt16 nQuality = pPrintOpts->GetOptionsPrint().GetOutputQuality();
196 : 0 : if( nQuality == 0 )
197 : 0 : aRbtColor.Check();
198 : 0 : else if( nQuality == 1 )
199 : 0 : aRbtGrayscale.Check();
200 : : else
201 : 0 : aRbtBlackWhite.Check();
202 : : }
203 : 0 : aCbxDraw.SaveValue();
204 : 0 : aCbxNotes.SaveValue();
205 : 0 : aCbxHandout.SaveValue();
206 : 0 : aCbxOutline.SaveValue();
207 : 0 : aCbxDate.SaveValue();
208 : 0 : aCbxTime.SaveValue();
209 : 0 : aCbxPagename.SaveValue();
210 : 0 : aCbxHiddenPages.SaveValue();
211 : 0 : aRbtPagesize.SaveValue();
212 : 0 : aRbtPagetile.SaveValue();
213 : 0 : aRbtBooklet.SaveValue();
214 : 0 : aCbxPaperbin.SaveValue();
215 : 0 : aRbtColor.SaveValue();
216 : 0 : aRbtGrayscale.SaveValue();
217 : 0 : aRbtBlackWhite.SaveValue();
218 : :
219 : 0 : ClickBookletHdl( NULL );
220 : 0 : }
221 : :
222 : : // -----------------------------------------------------------------------
223 : :
224 : 0 : SfxTabPage* SdPrintOptions::Create( Window* pWindow,
225 : : const SfxItemSet& rOutAttrs )
226 : : {
227 : 0 : return( new SdPrintOptions( pWindow, rOutAttrs ) );
228 : : }
229 : :
230 : : //-----------------------------------------------------------------------
231 : :
232 : 0 : IMPL_LINK( SdPrintOptions, ClickCheckboxHdl, CheckBox *, pCbx )
233 : : {
234 : : // there must be at least one of them checked
235 : 0 : if( !aCbxDraw.IsChecked() && !aCbxNotes.IsChecked() && !aCbxOutline.IsChecked() && !aCbxHandout.IsChecked() )
236 : 0 : pCbx->Check();
237 : :
238 : 0 : updateControls();
239 : 0 : return 0;
240 : : }
241 : :
242 : : //-----------------------------------------------------------------------
243 : :
244 : 0 : IMPL_LINK_NOARG(SdPrintOptions, ClickBookletHdl)
245 : : {
246 : 0 : updateControls();
247 : 0 : return 0;
248 : : }
249 : :
250 : 0 : void SdPrintOptions::updateControls()
251 : : {
252 : 0 : aCbxFront.Enable(aRbtBooklet.IsChecked());
253 : 0 : aCbxBack.Enable(aRbtBooklet.IsChecked());
254 : :
255 : 0 : aCbxDate.Enable( !aRbtBooklet.IsChecked() );
256 : 0 : aCbxTime.Enable( !aRbtBooklet.IsChecked() );
257 : :
258 : 0 : aCbxPagename.Enable( !aRbtBooklet.IsChecked() && (aCbxDraw.IsChecked() || aCbxNotes.IsChecked() || aCbxOutline.IsChecked()) );
259 : 0 : }
260 : :
261 : 0 : void lcl_MoveRB_Impl(Window& rBtn, long nXDiff)
262 : : {
263 : 0 : Point aPos(rBtn.GetPosPixel());
264 : 0 : aPos.X() -= nXDiff;
265 : 0 : rBtn.SetPosPixel(aPos);
266 : 0 : }
267 : :
268 : 0 : void SdPrintOptions::SetDrawMode()
269 : : {
270 : 0 : if(aCbxNotes.IsVisible())
271 : : {
272 : 0 : aCbxNotes.Hide();
273 : 0 : aCbxHandout.Hide();
274 : 0 : aCbxOutline.Hide();
275 : 0 : aCbxDraw.Hide();
276 : 0 : aGrpPrint.Hide();
277 : :
278 : 0 : aSeparator1FL.Hide();
279 : 0 : long nXDiff = aGrpOutput.GetPosPixel().X() - aGrpPrint.GetPosPixel().X();
280 : 0 : lcl_MoveRB_Impl(aRbtColor, nXDiff);
281 : 0 : lcl_MoveRB_Impl(aRbtGrayscale, nXDiff);
282 : 0 : lcl_MoveRB_Impl(aRbtBlackWhite, nXDiff);
283 : 0 : lcl_MoveRB_Impl(aGrpOutput, nXDiff);
284 : :
285 : 0 : long nWidth = aGrpOutput.GetSizePixel().Width() + nXDiff;
286 : 0 : Size aSize(aGrpOutput.GetSizePixel());
287 : 0 : aSize.Width() = nWidth;
288 : 0 : aGrpOutput.SetSizePixel(aSize);
289 : : }
290 : 0 : }
291 : :
292 : 0 : void SdPrintOptions::PageCreated (SfxAllItemSet
293 : : #ifdef QUARTZ
294 : : aSet
295 : : #endif
296 : : )
297 : : {
298 : : #ifdef QUARTZ
299 : : SFX_ITEMSET_ARG (&aSet,pFlagItem,SfxUInt32Item,SID_SDMODE_FLAG,sal_False);
300 : : if (pFlagItem)
301 : : {
302 : : sal_uInt32 nFlags=pFlagItem->GetValue();
303 : : if ( ( nFlags & SD_DRAW_MODE ) == SD_DRAW_MODE )
304 : : SetDrawMode();
305 : : }
306 : : #else
307 : 0 : SetDrawMode();
308 : : #endif
309 : 0 : }
310 : :
311 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|