Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*
3 : : * This file is part of the LibreOffice project.
4 : : *
5 : : * This Source Code Form is subject to the terms of the Mozilla Public
6 : : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : : *
9 : : * This file incorporates work covered by the following license notice:
10 : : *
11 : : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : : * contributor license agreements. See the NOTICE file distributed
13 : : * with this work for additional information regarding copyright
14 : : * ownership. The ASF licenses this file to you under the Apache
15 : : * License, Version 2.0 (the "License"); you may not use this file
16 : : * except in compliance with the License. You may obtain a copy of
17 : : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : : */
19 : :
20 : : #include <comphelper/string.hxx>
21 : : #include <sfx2/new.hxx>
22 : : #include <vcl/msgbox.hxx>
23 : : #include <vcl/morebtn.hxx>
24 : : #include <svtools/svmedit.hxx>
25 : : #include <svl/itemset.hxx>
26 : : #include <svl/eitem.hxx>
27 : : #include <svtools/sfxecode.hxx>
28 : : #include <svtools/ehdl.hxx>
29 : : #include <tools/urlobj.hxx>
30 : : #include <unotools/localfilehelper.hxx>
31 : :
32 : : #include "new.hrc"
33 : : #include "doc.hrc"
34 : : #include <sfx2/app.hxx>
35 : : #include <sfx2/objsh.hxx>
36 : : #include "sfx2/sfxresid.hxx"
37 : : #include <sfx2/docfile.hxx>
38 : : #include "preview.hxx"
39 : : #include <sfx2/printer.hxx>
40 : : #include <vcl/waitobj.hxx>
41 : :
42 : : // Draw modes
43 : : #define OUTPUT_DRAWMODE_COLOR (DRAWMODE_DEFAULT)
44 : : #define OUTPUT_DRAWMODE_GRAYSCALE (DRAWMODE_GRAYLINE | DRAWMODE_GRAYFILL | DRAWMODE_BLACKTEXT | DRAWMODE_GRAYBITMAP | DRAWMODE_GRAYGRADIENT)
45 : : #define OUTPUT_DRAWMODE_BLACKWHITE (DRAWMODE_BLACKLINE | DRAWMODE_BLACKTEXT | DRAWMODE_WHITEFILL | DRAWMODE_GRAYBITMAP | DRAWMODE_WHITEGRADIENT)
46 : : #define OUTPUT_DRAWMODE_CONTRAST (DRAWMODE_SETTINGSLINE | DRAWMODE_SETTINGSFILL | DRAWMODE_SETTINGSTEXT | DRAWMODE_SETTINGSGRADIENT)
47 : :
48 : : //========================================================================
49 : :
50 : : #define MORE_BTN(x) pMoreBt->x
51 : :
52 : : //========================================================================
53 : :
54 : 0 : void SfxPreviewBase_Impl::SetObjectShell( SfxObjectShell* pObj )
55 : : {
56 : : ::boost::shared_ptr<GDIMetaFile> pFile = pObj
57 : 0 : ? pObj->GetPreviewMetaFile()
58 [ # # ][ # # ]: 0 : : ::boost::shared_ptr<GDIMetaFile>();
[ # # ]
59 [ # # ]: 0 : pMetaFile = pFile;
60 [ # # ][ # # ]: 0 : Invalidate();
61 : 0 : }
62 : :
63 : 0 : SfxPreviewBase_Impl::SfxPreviewBase_Impl(
64 : : Window* pParent, const ResId& rResId )
65 [ # # ]: 0 : : Window(pParent, rResId), pMetaFile()
66 : : {
67 : 0 : }
68 : :
69 [ # # ]: 0 : SfxPreviewBase_Impl::~SfxPreviewBase_Impl()
70 : : {
71 [ # # ]: 0 : }
72 : :
73 : 0 : void SfxPreviewBase_Impl::Resize()
74 : : {
75 : 0 : Invalidate();
76 : 0 : }
77 : :
78 : 0 : void SfxPreviewWin_Impl::ImpPaint(
79 : : const Rectangle&, GDIMetaFile* pFile, Window* pWindow )
80 : : {
81 [ # # ]: 0 : Size aTmpSize = pFile ? pFile->GetPrefSize() : Size(1,1 );
82 : : DBG_ASSERT( aTmpSize.Height()*aTmpSize.Width(),
83 : : "size of first page is 0, overload GetFirstPageSize or set vis-area!" );
84 : : #define FRAME 4
85 [ # # ]: 0 : long nWidth = pWindow->GetOutputSize().Width() - 2*FRAME;
86 [ # # ]: 0 : long nHeight = pWindow->GetOutputSize().Height() - 2*FRAME;
87 [ # # ]: 0 : if( nWidth < 0 ) nWidth = 0;
88 [ # # ]: 0 : if( nHeight < 0 ) nHeight = 0;
89 : :
90 : 0 : double dRatio=((double)aTmpSize.Width())/aTmpSize.Height();
91 : 0 : double dRatioPreV=((double) nWidth ) / nHeight;
92 : 0 : Size aSize;
93 : 0 : Point aPoint;
94 [ # # ]: 0 : if (dRatio>dRatioPreV)
95 : : {
96 : 0 : aSize=Size(nWidth, (sal_uInt16)(nWidth/dRatio));
97 : 0 : aPoint=Point( 0, (sal_uInt16)((nHeight-aSize.Height())/2));
98 : : }
99 : : else
100 : : {
101 : 0 : aSize=Size((sal_uInt16)(nHeight*dRatio), nHeight);
102 : 0 : aPoint=Point((sal_uInt16)((nWidth-aSize.Width())/2),0);
103 : : }
104 : 0 : Point bPoint=Point(nWidth,nHeight)-aPoint;
105 : :
106 : :
107 [ # # ]: 0 : pWindow->SetLineColor();
108 : 0 : Color aLightGrayCol( COL_LIGHTGRAY );
109 [ # # ]: 0 : pWindow->SetFillColor( aLightGrayCol );
110 [ # # ][ # # ]: 0 : pWindow->DrawRect( Rectangle( Point( 0,0 ), pWindow->GetOutputSize() ) );
[ # # ]
111 [ # # ]: 0 : if ( pFile )
112 : : {
113 : 0 : Color aBlackCol( COL_BLACK );
114 : 0 : Color aWhiteCol( COL_WHITE );
115 [ # # ]: 0 : pWindow->SetLineColor( aBlackCol );
116 [ # # ]: 0 : pWindow->SetFillColor( aWhiteCol );
117 [ # # ][ # # ]: 0 : pWindow->DrawRect( Rectangle( aPoint + Point( FRAME, FRAME ), bPoint + Point( FRAME, FRAME ) ) );
118 [ # # ]: 0 : pFile->WindStart();
119 [ # # ]: 0 : pFile->Play( pWindow, aPoint + Point( FRAME, FRAME ), aSize );
120 : : }
121 : 0 : }
122 : :
123 : 0 : void SfxPreviewWin_Impl::Paint( const Rectangle& rRect )
124 : : {
125 : 0 : ImpPaint( rRect, pMetaFile.get(), this );
126 : 0 : }
127 : :
128 : : class SfxNewFileDialog_Impl
129 : : {
130 : : FixedText aRegionFt;
131 : : ListBox aRegionLb;
132 : : FixedText aTemplateFt;
133 : : ListBox aTemplateLb;
134 : :
135 : : CheckBox aPreviewBtn;
136 : : SfxPreviewWin_Impl aPreviewWin;
137 : :
138 : : FixedText aTitleFt;
139 : : Edit aTitleEd;
140 : : FixedText aThemaFt;
141 : : Edit aThemaEd;
142 : : FixedText aKeywordsFt;
143 : : Edit aKeywordsEd;
144 : : FixedText aDescFt;
145 : : MultiLineEdit aDescEd;
146 : : FixedLine aDocinfoGb;
147 : :
148 : : CheckBox aTextStyleCB;
149 : : CheckBox aFrameStyleCB;
150 : : CheckBox aPageStyleCB;
151 : : CheckBox aNumStyleCB;
152 : : CheckBox aMergeStyleCB;
153 : : PushButton aLoadFilePB;
154 : :
155 : : OKButton aOkBt;
156 : : CancelButton aCancelBt;
157 : : HelpButton aHelpBt;
158 : : MoreButton* pMoreBt;
159 : : Timer aPrevTimer;
160 : : String aNone;
161 : : String sLoadTemplate;
162 : :
163 : : sal_uInt16 nFlags;
164 : : SfxDocumentTemplates aTemplates;
165 : : SfxObjectShellLock xDocShell;
166 : : SfxNewFileDialog* pAntiImpl;
167 : :
168 : : void ClearInfo();
169 : : DECL_LINK( Update, void * );
170 : :
171 : : DECL_LINK( RegionSelect, ListBox * );
172 : : DECL_LINK(TemplateSelect, void *);
173 : : DECL_LINK( DoubleClick, ListBox * );
174 : : void TogglePreview(CheckBox *);
175 : : DECL_LINK( Expand, void * );
176 : : DECL_LINK( PreviewClick, CheckBox * );
177 : : DECL_LINK(LoadFile, void *);
178 : : sal_uInt16 GetSelectedTemplatePos() const;
179 : :
180 : : public:
181 : :
182 : : SfxNewFileDialog_Impl( SfxNewFileDialog* pAntiImplP, sal_uInt16 nFlags );
183 : : ~SfxNewFileDialog_Impl();
184 : :
185 : : // Returns sal_False if '- No -' is set as a template
186 : : // Template name can only be obtained if IsTemplate() is TRUE
187 : : // erfragt werden
188 : : sal_Bool IsTemplate() const;
189 : : String GetTemplateFileName() const;
190 : :
191 : : sal_uInt16 GetTemplateFlags()const;
192 : : void SetTemplateFlags(sal_uInt16 nSet);
193 : : };
194 : :
195 : :
196 : : //-------------------------------------------------------------------------
197 : :
198 : 0 : void SfxNewFileDialog_Impl::ClearInfo()
199 : : {
200 [ # # ]: 0 : const String aNo;
201 [ # # ]: 0 : aTitleEd.SetText(aNo);
202 [ # # ]: 0 : aThemaEd.SetText(aNo);
203 [ # # ]: 0 : aKeywordsEd.SetText(aNo);
204 [ # # ][ # # ]: 0 : aDescEd.SetText(aNo);
205 : 0 : }
206 : :
207 : : //-------------------------------------------------------------------------
208 : :
209 : 0 : IMPL_LINK_NOARG(SfxNewFileDialog_Impl, Update)
210 : : {
211 [ # # ]: 0 : if ( xDocShell.Is() )
212 : : {
213 [ # # ]: 0 : if ( xDocShell->GetProgress() )
214 : 0 : return sal_False;
215 : 0 : xDocShell.Clear();
216 : : }
217 : :
218 : 0 : const sal_uInt16 nEntry = GetSelectedTemplatePos();
219 [ # # ]: 0 : if(!nEntry)
220 : : {
221 : 0 : ClearInfo();
222 : 0 : aPreviewWin.Invalidate();
223 : 0 : aPreviewWin.SetObjectShell( 0);
224 : 0 : return 0;
225 : : }
226 : :
227 [ # # ][ # # ]: 0 : if ( aPreviewBtn.IsChecked() && (nFlags & SFXWB_PREVIEW) == SFXWB_PREVIEW)
[ # # ]
228 : : {
229 : :
230 [ # # ][ # # ]: 0 : String aFileName = aTemplates.GetPath( aRegionLb.GetSelectEntryPos(), nEntry-1);
231 [ # # ][ # # ]: 0 : INetURLObject aTestObj( aFileName );
232 [ # # ]: 0 : if( aTestObj.GetProtocol() == INET_PROT_NOT_VALID )
233 : : {
234 : : // temp. fix until Templates are managed by UCB compatible service
235 : : // does NOT work with locally cached components !
236 : 0 : rtl::OUString aTemp;
237 [ # # ][ # # ]: 0 : utl::LocalFileHelper::ConvertPhysicalNameToURL( aFileName, aTemp );
238 [ # # ]: 0 : aFileName = aTemp;
239 : : }
240 : :
241 [ # # ][ # # ]: 0 : INetURLObject aObj( aFileName );
242 [ # # ][ # # ]: 0 : for ( SfxObjectShell* pTmp = SfxObjectShell::GetFirst();
[ # # ]
243 : : pTmp;
244 : : pTmp = SfxObjectShell::GetNext(*pTmp) )
245 : : {
246 : : //! fsys bug op==
247 [ # # ]: 0 : if ( pTmp->GetMedium())
248 : : // ??? HasName() MM
249 [ # # ][ # # ]: 0 : if( INetURLObject( pTmp->GetMedium()->GetName() ) == aObj )
[ # # ][ # # ]
[ # # ]
250 : : {
251 [ # # ]: 0 : xDocShell = pTmp;
252 : 0 : break;
253 : : }
254 : : }
255 : :
256 [ # # ]: 0 : if ( !xDocShell.Is() )
257 : : {
258 [ # # ]: 0 : Window *pParent = Application::GetDefDialogParent();
259 [ # # ]: 0 : Application::SetDefDialogParent( pAntiImpl );
260 [ # # ]: 0 : SfxErrorContext eEC(ERRCTX_SFX_LOADTEMPLATE,pAntiImpl);
261 [ # # ]: 0 : SfxApplication *pSfxApp = SFX_APP();
262 : : sal_uIntPtr lErr;
263 [ # # ][ # # ]: 0 : SfxItemSet* pSet = new SfxAllItemSet( pSfxApp->GetPool() );
264 [ # # ][ # # ]: 0 : pSet->Put( SfxBoolItem( SID_TEMPLATE, sal_True ) );
[ # # ]
265 [ # # ][ # # ]: 0 : pSet->Put( SfxBoolItem( SID_PREVIEW, sal_True ) );
[ # # ]
266 [ # # ]: 0 : lErr = pSfxApp->LoadTemplate( xDocShell, aFileName, sal_True, pSet );
267 [ # # ]: 0 : if( lErr )
268 [ # # ]: 0 : ErrorHandler::HandleError(lErr);
269 [ # # ]: 0 : Application::SetDefDialogParent( pParent );
270 [ # # ]: 0 : if ( !xDocShell.Is() )
271 : : {
272 [ # # ]: 0 : aPreviewWin.SetObjectShell( 0 );
273 : 0 : return sal_False;
274 [ # # ][ # # ]: 0 : }
275 : : }
276 : :
277 [ # # ][ # # ]: 0 : aPreviewWin.SetObjectShell( xDocShell );
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
278 : : }
279 : 0 : return sal_True;
280 : : }
281 : :
282 : : //-------------------------------------------------------------------------
283 : :
284 : 0 : IMPL_LINK( SfxNewFileDialog_Impl, RegionSelect, ListBox *, pBox )
285 : : {
286 [ # # ][ # # ]: 0 : if ( xDocShell.Is() && xDocShell->GetProgress() )
[ # # ][ # # ]
287 : 0 : return 0;
288 : :
289 [ # # ]: 0 : const sal_uInt16 nRegion = pBox->GetSelectEntryPos();
290 [ # # ][ # # ]: 0 : const sal_uInt16 nCount = aTemplates.GetRegionCount()? aTemplates.GetCount(nRegion): 0;
[ # # ]
291 [ # # ]: 0 : aTemplateLb.SetUpdateMode(sal_False);
292 [ # # ]: 0 : aTemplateLb.Clear();
293 [ # # ]: 0 : String aSel=aRegionLb.GetSelectEntry();
294 [ # # ]: 0 : sal_uInt16 nc=aSel.Search('(');
295 [ # # ][ # # ]: 0 : if (nc-1&&nc!=STRING_NOTFOUND)
296 [ # # ]: 0 : aSel.Erase(nc-1);
297 [ # # ][ # # ]: 0 : if (aSel.CompareIgnoreCaseToAscii( SfxResId(STR_STANDARD).toString() )==COMPARE_EQUAL)
[ # # ][ # # ]
[ # # ][ # # ]
298 [ # # ]: 0 : aTemplateLb.InsertEntry(aNone);
299 [ # # ]: 0 : for (sal_uInt16 i = 0; i < nCount; ++i)
300 [ # # ][ # # ]: 0 : aTemplateLb.InsertEntry(aTemplates.GetName(nRegion, i));
301 [ # # ]: 0 : aTemplateLb.SelectEntryPos(0);
302 [ # # ]: 0 : aTemplateLb.SetUpdateMode(sal_True);
303 [ # # ]: 0 : aTemplateLb.Invalidate();
304 [ # # ]: 0 : aTemplateLb.Update();
305 [ # # ]: 0 : TemplateSelect(&aTemplateLb);
306 [ # # ]: 0 : return 0;
307 : : }
308 : :
309 : : //-------------------------------------------------------------------------
310 : :
311 : 0 : IMPL_LINK_NOARG_INLINE_START(SfxNewFileDialog_Impl, Expand)
312 : : {
313 : 0 : TemplateSelect(&aTemplateLb);
314 : 0 : return 0;
315 : : }
316 : 0 : IMPL_LINK_NOARG_INLINE_END(SfxNewFileDialog_Impl, Expand)
317 : :
318 : : //-------------------------------------------------------------------------
319 : :
320 : 0 : IMPL_LINK( SfxNewFileDialog_Impl, PreviewClick, CheckBox *, pBox )
321 : : {
322 [ # # ][ # # ]: 0 : if ( xDocShell.Is() && xDocShell->GetProgress() )
[ # # ]
323 : 0 : return 0;
324 : :
325 : 0 : sal_uInt16 nEntry = GetSelectedTemplatePos();
326 [ # # ][ # # ]: 0 : if ( nEntry && pBox->IsChecked() )
[ # # ]
327 : : {
328 [ # # ]: 0 : if(!Update(0))
329 : 0 : aPreviewWin.Invalidate();
330 : : }
331 : : else
332 : : {
333 [ # # ]: 0 : if (xDocShell.Is())
334 : 0 : xDocShell.Clear();
335 : 0 : aPreviewWin.SetObjectShell( 0 );
336 : : }
337 : 0 : return 0;
338 : : }
339 : :
340 : : //-------------------------------------------------------------------------
341 : :
342 : 0 : IMPL_LINK_NOARG(SfxNewFileDialog_Impl, TemplateSelect)
343 : : {
344 : : // Still loading
345 [ # # ][ # # ]: 0 : if ( xDocShell && xDocShell->GetProgress() )
[ # # ]
346 : 0 : return 0;
347 : :
348 [ # # ]: 0 : if ( !MORE_BTN(GetState()) )
349 : : // Dialog is not opened
350 : 0 : return 0;
351 : :
352 : 0 : aPrevTimer.Start();
353 : 0 : return 0;
354 : : }
355 : :
356 : : //-------------------------------------------------------------------------
357 : :
358 : 0 : IMPL_LINK_INLINE_START( SfxNewFileDialog_Impl, DoubleClick, ListBox *, pListBox )
359 : : {
360 : : (void)pListBox;
361 : : // Still loadning
362 [ # # ][ # # ]: 0 : if ( !xDocShell.Is() || !xDocShell->GetProgress() )
[ # # ]
363 : 0 : pAntiImpl->EndDialog(RET_OK);
364 : 0 : return 0;
365 : : }
366 : 0 : IMPL_LINK_INLINE_END( SfxNewFileDialog_Impl, DoubleClick, ListBox *, pListBox )
367 : :
368 : : //-------------------------------------------------------------------------
369 : :
370 : 0 : IMPL_LINK_NOARG_INLINE_START(SfxNewFileDialog_Impl, LoadFile)
371 : : {
372 : 0 : pAntiImpl->EndDialog(RET_TEMPLATE_LOAD);
373 : 0 : return 0;
374 : : }
375 : 0 : IMPL_LINK_NOARG_INLINE_END(SfxNewFileDialog_Impl, LoadFile)
376 : : //-------------------------------------------------------------------------
377 : :
378 : 0 : sal_uInt16 SfxNewFileDialog_Impl::GetSelectedTemplatePos() const
379 : : {
380 [ # # ]: 0 : sal_uInt16 nEntry=aTemplateLb.GetSelectEntryPos();
381 [ # # ][ # # ]: 0 : String aSel=aRegionLb.GetSelectEntry().Copy();
[ # # ]
382 [ # # ]: 0 : sal_uInt16 nc=aSel.Search('(');
383 [ # # ][ # # ]: 0 : if (nc-1&&nc!=STRING_NOTFOUND)
384 [ # # ]: 0 : aSel.Erase(nc-1);
385 [ # # ][ # # ]: 0 : if (aSel.CompareIgnoreCaseToAscii(SfxResId(STR_STANDARD).toString())!=COMPARE_EQUAL)
[ # # ][ # # ]
[ # # ][ # # ]
386 : 0 : nEntry++;
387 [ # # ][ # # ]: 0 : if (!aTemplateLb.GetSelectEntryCount())
388 : 0 : nEntry=0;
389 [ # # ]: 0 : return nEntry;
390 : : }
391 : :
392 : : //-------------------------------------------------------------------------
393 : :
394 : 0 : sal_Bool SfxNewFileDialog_Impl::IsTemplate() const
395 : : {
396 : 0 : return GetSelectedTemplatePos()!=0;
397 : :
398 : : }
399 : :
400 : : //-------------------------------------------------------------------------
401 : :
402 : 0 : String SfxNewFileDialog_Impl::GetTemplateFileName() const
403 : : {
404 [ # # ][ # # ]: 0 : if(!IsTemplate() || !aTemplates.GetRegionCount())
[ # # ]
405 : 0 : return String();
406 : 0 : return aTemplates.GetPath(aRegionLb.GetSelectEntryPos(),
407 : 0 : GetSelectedTemplatePos()-1);
408 : : }
409 : :
410 : : //-------------------------------------------------------------------------
411 : :
412 : 0 : void AdjustPosSize_Impl(Window *pWin, short nMoveOffset, short nSizeOffset)
413 : : {
414 [ # # ]: 0 : Point aPos(pWin->GetPosPixel());
415 [ # # ]: 0 : Size aSize(pWin->GetSizePixel());
416 : 0 : aPos.X() -= nMoveOffset;
417 : 0 : aSize.Width() += nSizeOffset;
418 [ # # ]: 0 : pWin->SetPosSizePixel(aPos, aSize);
419 : 0 : }
420 : : //-------------------------------------------------------------------------
421 : 0 : sal_uInt16 SfxNewFileDialog_Impl::GetTemplateFlags()const
422 : : {
423 [ # # ]: 0 : sal_uInt16 nRet = aTextStyleCB.IsChecked() ? SFX_LOAD_TEXT_STYLES : 0;
424 [ # # ]: 0 : if(aFrameStyleCB.IsChecked())
425 : 0 : nRet |= SFX_LOAD_FRAME_STYLES;
426 [ # # ]: 0 : if(aPageStyleCB.IsChecked())
427 : 0 : nRet |= SFX_LOAD_PAGE_STYLES;
428 [ # # ]: 0 : if(aNumStyleCB.IsChecked())
429 : 0 : nRet |= SFX_LOAD_NUM_STYLES;
430 [ # # ]: 0 : if(aMergeStyleCB.IsChecked())
431 : 0 : nRet |= SFX_MERGE_STYLES;
432 : 0 : return nRet;
433 : : }
434 : : //-------------------------------------------------------------------------
435 : 0 : void SfxNewFileDialog_Impl::SetTemplateFlags(sal_uInt16 nSet)
436 : : {
437 : 0 : aTextStyleCB.Check( 0 != (nSet&SFX_LOAD_TEXT_STYLES ));
438 : 0 : aFrameStyleCB.Check( 0 != (nSet&SFX_LOAD_FRAME_STYLES));
439 : 0 : aPageStyleCB.Check( 0 != (nSet&SFX_LOAD_PAGE_STYLES ));
440 : 0 : aNumStyleCB.Check( 0 != (nSet&SFX_LOAD_NUM_STYLES ));
441 : 0 : aMergeStyleCB.Check( 0 != (nSet&SFX_MERGE_STYLES ));
442 : 0 : }
443 : :
444 : : //-------------------------------------------------------------------------
445 : :
446 : 0 : SfxNewFileDialog_Impl::SfxNewFileDialog_Impl(
447 : : SfxNewFileDialog* pAntiImplP, sal_uInt16 nFl)
448 : : : aRegionFt( pAntiImplP, SfxResId( FT_REGION ) ),
449 : : aRegionLb( pAntiImplP, SfxResId( LB_REGION ) ),
450 : : aTemplateFt( pAntiImplP, SfxResId( FT_TEMPLATE ) ),
451 : : aTemplateLb( pAntiImplP, SfxResId( LB_TEMPLATE ) ),
452 : : aPreviewBtn( pAntiImplP, SfxResId( BTN_PREVIEW ) ),
453 : : aPreviewWin( pAntiImplP, SfxResId( WIN_PREVIEW ) ),
454 : : aTitleFt( pAntiImplP, SfxResId( FT_TITLE ) ),
455 : : aTitleEd( pAntiImplP, SfxResId( ED_TITLE ) ),
456 : : aThemaFt( pAntiImplP, SfxResId( FT_THEMA ) ),
457 : : aThemaEd( pAntiImplP, SfxResId( ED_THEMA ) ),
458 : : aKeywordsFt( pAntiImplP, SfxResId( FT_KEYWORDS ) ),
459 : : aKeywordsEd( pAntiImplP, SfxResId( ED_KEYWORDS ) ),
460 : : aDescFt( pAntiImplP, SfxResId( FT_DESC ) ),
461 : : aDescEd( pAntiImplP, SfxResId( ED_DESC ) ),
462 : : aDocinfoGb( pAntiImplP, SfxResId( GB_DOCINFO ) ),
463 : : aTextStyleCB( pAntiImplP, SfxResId( CB_TEXT_STYLE )),
464 : : aFrameStyleCB( pAntiImplP, SfxResId( CB_FRAME_STYLE )),
465 : : aPageStyleCB( pAntiImplP, SfxResId( CB_PAGE_STYLE )),
466 : : aNumStyleCB( pAntiImplP, SfxResId( CB_NUM_STYLE )),
467 : : aMergeStyleCB( pAntiImplP, SfxResId( CB_MERGE_STYLE )),
468 : : aLoadFilePB( pAntiImplP, SfxResId( PB_LOAD_FILE )),
469 : : aOkBt( pAntiImplP, SfxResId( BT_OK ) ),
470 : : aCancelBt( pAntiImplP, SfxResId( BT_CANCEL ) ),
471 : : aHelpBt( pAntiImplP, SfxResId( BT_HELP ) ),
472 [ # # ]: 0 : pMoreBt( new MoreButton( pAntiImplP, SfxResId( BT_MORE ) ) ),
473 : : aNone(SfxResId(STR_NONE).toString()),
474 : : sLoadTemplate(SfxResId(STR_LOAD_TEMPLATE).toString()),
475 : : nFlags(nFl),
476 [ # # ][ # # ]: 0 : pAntiImpl( pAntiImplP )
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
477 : : {
478 [ # # ]: 0 : short nMoveOffset = *(short *)pAntiImplP->GetClassRes();
479 [ # # ]: 0 : pAntiImplP->IncrementRes(sizeof(short));
480 [ # # ]: 0 : short nExpandSize= *(short *)pAntiImplP->GetClassRes();
481 [ # # ]: 0 : pAntiImplP->IncrementRes(sizeof(short));
482 [ # # ]: 0 : pAntiImplP->FreeResource();
483 : :
484 [ # # ]: 0 : if (!nFlags)
485 [ # # ]: 0 : MORE_BTN(Hide());
486 [ # # ]: 0 : else if(SFXWB_LOAD_TEMPLATE == nFlags)
487 : : {
488 [ # # ]: 0 : aLoadFilePB.SetClickHdl(LINK(this, SfxNewFileDialog_Impl, LoadFile));
489 [ # # ]: 0 : aLoadFilePB.Show();
490 [ # # ]: 0 : aTextStyleCB.Show();
491 [ # # ]: 0 : aFrameStyleCB.Show();
492 [ # # ]: 0 : aPageStyleCB.Show();
493 [ # # ]: 0 : aNumStyleCB.Show();
494 [ # # ]: 0 : aMergeStyleCB.Show();
495 : 0 : Size aSize(pAntiImplP->GetOutputSizePixel());
496 [ # # ][ # # ]: 0 : Size aTmp(pAntiImplP->LogicToPixel(Size(16, 16), MAP_APPFONT));
[ # # ]
497 : 0 : aSize.Height() += aTmp.Height();
498 [ # # ]: 0 : pAntiImplP->SetOutputSizePixel(aSize);
499 [ # # ]: 0 : pMoreBt->Hide();
500 [ # # ]: 0 : aTextStyleCB.Check();
501 [ # # ]: 0 : pAntiImplP->SetText(sLoadTemplate);
502 : : }
503 : : else
504 : : {
505 [ # # ]: 0 : MORE_BTN(SetClickHdl(LINK(this, SfxNewFileDialog_Impl, Expand)));
506 [ # # ]: 0 : if((nFlags & SFXWB_PREVIEW) == SFXWB_PREVIEW)
507 : : {
508 [ # # ]: 0 : MORE_BTN(AddWindow(&aPreviewBtn));
509 [ # # ]: 0 : MORE_BTN(AddWindow(&aPreviewWin));
510 [ # # ]: 0 : aPreviewBtn.SetClickHdl(LINK(this, SfxNewFileDialog_Impl, PreviewClick));
511 : : }
512 : : else
513 : : {
514 [ # # ]: 0 : aPreviewBtn.Hide();
515 [ # # ]: 0 : aPreviewWin.Hide();
516 : : nMoveOffset = (short)pAntiImplP->LogicToPixel(
517 [ # # ][ # # ]: 0 : Size(nMoveOffset, nMoveOffset), MAP_APPFONT).Width();
[ # # ]
518 : : nExpandSize = (short)pAntiImplP->LogicToPixel(
519 [ # # ][ # # ]: 0 : Size(nExpandSize, nExpandSize), MAP_APPFONT).Width();
[ # # ]
520 [ # # ]: 0 : AdjustPosSize_Impl(&aTitleFt, nMoveOffset, 0);
521 [ # # ]: 0 : AdjustPosSize_Impl(&aTitleEd, nMoveOffset, nExpandSize);
522 [ # # ]: 0 : AdjustPosSize_Impl(&aThemaFt, nMoveOffset, 0);
523 [ # # ]: 0 : AdjustPosSize_Impl(&aThemaEd, nMoveOffset, nExpandSize);
524 [ # # ]: 0 : AdjustPosSize_Impl(&aKeywordsFt, nMoveOffset, 0);
525 [ # # ]: 0 : AdjustPosSize_Impl(&aKeywordsEd, nMoveOffset, nExpandSize);
526 [ # # ]: 0 : AdjustPosSize_Impl(&aDescFt , nMoveOffset, 0);
527 [ # # ]: 0 : AdjustPosSize_Impl(&aDescEd , nMoveOffset, nExpandSize);
528 [ # # ]: 0 : AdjustPosSize_Impl(&aDocinfoGb, nMoveOffset, nExpandSize);
529 : : }
530 : : }
531 : :
532 : 0 : String &rExtra = pAntiImplP->GetExtraData();
533 [ # # ][ # # ]: 0 : sal_Int32 nTokCount = comphelper::string::getTokenCount(rExtra, '|');
534 [ # # ][ # # ]: 0 : if( nTokCount > 0 && nFlags )
535 [ # # ][ # # ]: 0 : MORE_BTN(SetState(comphelper::string::equals(rExtra.GetToken( 0, '|'), 'Y')));
[ # # ][ # # ]
536 [ # # ][ # # ]: 0 : if( nTokCount > 1 && nFlags )
537 [ # # ][ # # ]: 0 : aPreviewBtn.Check(comphelper::string::equals(rExtra.GetToken( 1 ,'|'), 'Y'));
[ # # ][ # # ]
538 : :
539 [ # # ]: 0 : aTemplateLb.SetSelectHdl(LINK(this, SfxNewFileDialog_Impl, TemplateSelect));
540 [ # # ]: 0 : aTemplateLb.SetDoubleClickHdl(LINK(this, SfxNewFileDialog_Impl, DoubleClick));
541 : :
542 : : // update the template configuration if necessary
543 : : {
544 [ # # ][ # # ]: 0 : WaitObject aWaitCursor( pAntiImplP->GetParent() );
545 [ # # ][ # # ]: 0 : aTemplates.Update( sal_True /* be smart */ );
546 : : }
547 : : // fill the list boxes
548 [ # # ]: 0 : const sal_uInt16 nCount = aTemplates.GetRegionCount();
549 [ # # ]: 0 : if (nCount)
550 : : {
551 [ # # ]: 0 : for(sal_uInt16 i = 0; i < nCount; ++i)
552 [ # # ][ # # ]: 0 : aRegionLb.InsertEntry(aTemplates.GetFullRegionName(i));
[ # # ]
553 [ # # ]: 0 : aRegionLb.SetSelectHdl(LINK(this, SfxNewFileDialog_Impl, RegionSelect));
554 : : }
555 : :
556 [ # # ]: 0 : aPrevTimer.SetTimeout( 500 );
557 [ # # ]: 0 : aPrevTimer.SetTimeoutHdl( LINK( this, SfxNewFileDialog_Impl, Update));
558 : :
559 [ # # ]: 0 : aRegionLb.SelectEntryPos(0);
560 [ # # ]: 0 : RegionSelect(&aRegionLb);
561 : 0 : }
562 : :
563 : : //-------------------------------------------------------------------------
564 : :
565 [ # # ][ # # ]: 0 : SfxNewFileDialog_Impl::~SfxNewFileDialog_Impl()
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
566 : : {
567 : 0 : String &rExtra = pAntiImpl->GetExtraData();
568 [ # # ][ # # ]: 0 : rExtra = MORE_BTN(GetState()) ? 'Y' : 'N';
569 [ # # ]: 0 : rExtra += '|';
570 [ # # ][ # # ]: 0 : rExtra += aPreviewBtn.IsChecked() ? 'Y' : 'N';
[ # # ]
571 : :
572 [ # # ][ # # ]: 0 : delete pMoreBt;
573 : 0 : }
574 : : //-------------------------------------------------------------------------
575 : 0 : SfxNewFileDialog::SfxNewFileDialog(Window *pParent, sal_uInt16 nFlags)
576 [ # # ]: 0 : : SfxModalDialog( pParent, SfxResId( DLG_NEW_FILE ) )
577 : : {
578 [ # # ][ # # ]: 0 : pImpl = new SfxNewFileDialog_Impl( this, nFlags );
579 : 0 : }
580 : : //-------------------------------------------------------------------------
581 : 0 : SfxNewFileDialog::~SfxNewFileDialog()
582 : : {
583 [ # # ][ # # ]: 0 : delete pImpl;
584 [ # # ]: 0 : }
585 : : //-------------------------------------------------------------------------
586 : 0 : sal_Bool SfxNewFileDialog::IsTemplate() const
587 : : {
588 : 0 : return pImpl->IsTemplate();
589 : : }
590 : : //-------------------------------------------------------------------------
591 : 0 : String SfxNewFileDialog::GetTemplateFileName() const
592 : : {
593 : 0 : return pImpl->GetTemplateFileName();
594 : : }
595 : : //-------------------------------------------------------------------------
596 : 0 : sal_uInt16 SfxNewFileDialog::GetTemplateFlags()const
597 : : {
598 : 0 : return pImpl->GetTemplateFlags();
599 : :
600 : : }
601 : : //-------------------------------------------------------------------------
602 : 0 : void SfxNewFileDialog::SetTemplateFlags(sal_uInt16 nSet)
603 : : {
604 : 0 : pImpl->SetTemplateFlags(nSet);
605 : 0 : }
606 : :
607 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|