LCOV - code coverage report
Current view: top level - libreoffice/sd/source/ui/dlg - dlgass.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 911 0.0 %
Date: 2012-12-27 Functions: 0 82 0.0 %
Legend: Lines: hit not hit

          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             : 
      21             : #ifdef SD_DLLIMPLEMENTATION
      22             : #undef SD_DLLIMPLEMENTATION
      23             : #endif
      24             : #include <com/sun/star/presentation/ClickAction.hpp>
      25             : #include <vcl/svapp.hxx>
      26             : #include <osl/mutex.hxx>
      27             : #include <vcl/msgbox.hxx>
      28             : #include <vcl/lstbox.hxx>
      29             : #include <vcl/combobox.hxx>
      30             : #include <sfx2/doctempl.hxx>
      31             : #include <svl/lstner.hxx>
      32             : #include <sfx2/objsh.hxx>
      33             : #include <svtools/ehdl.hxx>
      34             : #include <svtools/sfxecode.hxx>
      35             : #include <tools/urlobj.hxx>
      36             : #include <com/sun/star/presentation/FadeEffect.hpp>
      37             : #include <fadedef.h>
      38             : #include <sfx2/sfxsids.hrc>
      39             : #include <svl/undo.hxx>
      40             : #include "DrawDocShell.hxx"
      41             : #include <vcl/gdimtf.hxx>
      42             : #include <tools/wintypes.hxx>
      43             : #include "docprev.hxx"
      44             : #include <sfx2/app.hxx>
      45             : #include <sfx2/docfile.hxx>
      46             : #include <sfx2/dispatch.hxx>
      47             : #include <sfx2/request.hxx>
      48             : #include <com/sun/star/sdbc/XResultSet.hpp>
      49             : #include <com/sun/star/lang/XComponent.hpp>
      50             : #include <com/sun/star/util/XCloseable.hpp>
      51             : #include <com/sun/star/uno/RuntimeException.hpp>
      52             : #include <com/sun/star/frame/XModuleManager.hpp>
      53             : #include <com/sun/star/ucb/SimpleFileAccess.hpp>
      54             : #include <com/sun/star/ui/ModuleUIConfigurationManagerSupplier.hpp>
      55             : #include <com/sun/star/ui/XImageManager.hpp>
      56             : #include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
      57             : #include <com/sun/star/frame/UICommandDescription.hpp>
      58             : #include <unotools/historyoptions.hxx>
      59             : #include <osl/file.hxx>
      60             : #include <sfx2/filedlghelper.hxx>
      61             : 
      62             : #include "sdpage.hxx"
      63             : #include "helpids.h"
      64             : #include "assclass.hxx"
      65             : #include "dlgass.hrc"
      66             : #include "dlgass.hxx"
      67             : #include "dlgctrls.hxx"
      68             : #include "strings.hrc"
      69             : #include "dlgassim.hxx"
      70             : #include "TemplateScanner.hxx"
      71             : #include "WindowUpdater.hxx"
      72             : 
      73             : #include <comphelper/processfactory.hxx>
      74             : #include <vector>
      75             : #include <boost/ptr_container/ptr_vector.hpp>
      76             : 
      77             : using namespace ::com::sun::star;
      78             : using namespace ::com::sun::star::uno;
      79             : using namespace ::sd;
      80             : 
      81             : using ::std::vector;
      82             : 
      83           0 : void InterpolateFixedBitmap( FixedBitmap * pBitmap )
      84             : {
      85           0 :     Bitmap aBmp( pBitmap->GetBitmap() );
      86           0 :     Size aSize = pBitmap->GetSizePixel();
      87           0 :     aBmp.Scale( aSize, BMP_SCALE_BEST );
      88           0 :     pBitmap->SetBitmap( aBmp );
      89           0 : }
      90             : 
      91             : 
      92             : // ====================================================================
      93             : // ====================================================================
      94             : 
      95             : const char* PageHelpIds[] =
      96             : {
      97             :     HID_SD_AUTOPILOT_PAGE1,
      98             :     HID_SD_AUTOPILOT_PAGE2,
      99             :     HID_SD_AUTOPILOT_PAGE3,
     100             :     HID_SD_AUTOPILOT_PAGE4,
     101             :     HID_SD_AUTOPILOT_PAGE5
     102             : };
     103             : 
     104             : // ====================================================================
     105             : 
     106           0 : class PasswordEntry
     107             : {
     108             : public:
     109             :     uno::Sequence< beans::NamedValue > aEncryptionData;
     110             :     String maPath;
     111             : };
     112             : 
     113             : // ====================================================================
     114             : 
     115             : /** A simple wrapper that looks like a PushButton and is used to force the
     116             :     broadcasting of focus events primarly for accessibility tools.
     117             :     Forcing focus events is achieved by using two identical PushButtons
     118             :     which, when the focus event is requested, are exchanged and play focus
     119             :     ping-pong by moving the focus from one to the other.
     120             : */
     121           0 : class NextButton
     122             : {
     123             : public:
     124             :     NextButton (::Window* pParent, const ResId& rResId);
     125             : 
     126             :     void ForceFocusEventBroadcast (void);
     127             :     void SetClickHdl (const Link& rLink);
     128             :     bool IsEnabled (void);
     129             :     void Enable (bool bEnable);
     130             : 
     131             : private:
     132             :     PushButton maNextButton1;
     133             :     PushButton maNextButton2;
     134             :     bool mbIsFirstButtonActive;
     135             : };
     136             : 
     137             : 
     138             : 
     139             : // ====================================================================
     140             : 
     141             : class AssistentDlgImpl : public SfxListener
     142             : {
     143             : public:
     144             :     AssistentDlgImpl( ::Window* pWindow, const Link& rFinishLink, sal_Bool bAutoPilot  );
     145             :     ~AssistentDlgImpl();
     146             : 
     147             :     /// Local mutex used to serialize concurrent method calls.
     148             :     ::osl::Mutex maMutex;
     149             : 
     150             :     SfxObjectShellLock GetDocument();
     151             : 
     152             :     /** closes the current preview docshell */
     153             :     void CloseDocShell();
     154             : 
     155             :     /** Extract form the history list of recently used files the impress
     156             :         files and insert them into a listbox.
     157             :     */
     158             :     void    ScanDocmenu         (void);
     159             :     /** Flag that is set to sal_True after the recently used files have been
     160             :         scanned.
     161             :     */
     162             :     sal_Bool mbRecentDocumentsReady;
     163             : 
     164             :     /** When the list of templates has not been scanned already this is done
     165             :         when this method is called.  That includes requesting the whole list
     166             :         of templates from UCB and extracting from that list the impress
     167             :         templates and layouts and storing them for later use in
     168             :         <member>maPresentList</member>.  Note that the first call to this
     169             :         method after installing a new Office may take some time.
     170             :     */
     171             :     void ProvideTemplates (void);
     172             : 
     173             :     /** This method transfers the template folders from the template scanner
     174             :         to the internal structures of this class.  On termination it sets
     175             :         the flag <member>mbTemplatesReady</member> to <TRUE/> to indicate
     176             :         that the templates are available.
     177             :         @param rTemplateFolders
     178             :             This is a list of template folders.  This method takes ownership
     179             :             of the supplied entries by removing them from the list and
     180             :             transferring them to an internal structure.
     181             :     */
     182             :     void TemplateScanDone (std::vector<TemplateDir*>& rTemplateFolders);
     183             : 
     184             :     /** Flag that is set to sal_True after the impress templates have been
     185             :         scanned.
     186             :     */
     187             :     sal_Bool mbTemplatesReady;
     188             : 
     189             :     /** Flag used to prevent nested or concurrent calls to the
     190             :         <member>UpdatePreview</memember> method.  A <TRUE/> value indicates
     191             :         that a preview update is currently active.
     192             :     */
     193             :     sal_Bool mbPreviewUpdating;
     194             : 
     195             :     ::Window* mpWindow;
     196             : 
     197             :     void SavePassword( SfxObjectShellLock xDoc, const String& rPath );
     198             :     void RestorePassword( SfxItemSet* pSet, const String& rPath );
     199             :     uno::Sequence < beans::NamedValue > GetPassword( const String rPath );
     200             :     void DeletePasswords();
     201             : 
     202             :     boost::ptr_vector< PasswordEntry > maPasswordList;
     203             : 
     204             :     String maDocFile;
     205             :     String maLayoutFile;
     206             : 
     207             :     String GetDocFileName();
     208             :     String GetLayoutFileName();
     209             : 
     210             :     /// List of URLs of recently used impress files.
     211             :     std::vector<String*> maOpenFilesList;
     212             : 
     213             :     /// List of folders containing data about impress templates.
     214             :     std::vector<TemplateDir*> maPresentList;
     215             : 
     216             :     /// Currently selected template folder.
     217             :     TemplateDir* mpTemplateRegion;
     218             : 
     219             :     /// Currently selected layout folder.
     220             :     TemplateDir* mpLayoutRegion;
     221             : 
     222             :     // preview
     223             :     sal_Bool mbUserDataDirty;
     224             :     Timer maPrevTimer;
     225             :     Timer maEffectPrevTimer;
     226             :     Timer maUpdatePageListTimer;
     227             :     Timer maStartScanTimer;
     228             : 
     229             :     SfxObjectShellLock xDocShell;
     230             : 
     231             :     ::std::auto_ptr<WindowUpdater> mpWindowUpdater;
     232             : 
     233             :     sal_Bool mbPreview;
     234             :     sal_uInt16 mnShowPage;
     235             :     sal_Bool mbDocPreview;
     236             : 
     237             :     sal_uLong mnTemplate;
     238             : 
     239             :     String maPageListFile;
     240             : 
     241             :     void UpdatePreview( sal_Bool bDocPreview );
     242             :     void UpdatePageList();
     243             :     void UpdateUserData();
     244             : 
     245             :     sal_Bool IsOwnFormat( const String& rPath );
     246             : 
     247             :     // dlg status
     248             :     void EndDialog( long nResult = 0 );
     249             : 
     250             :     void SetStartType( StartType eType );
     251             :     StartType GetStartType();
     252             : 
     253             :     void SelectTemplateRegion( const String& rRegion );
     254             :     void SelectLayoutRegion( const String& rRegion );
     255             : 
     256             :     void UpdatePage();
     257             :     void ChangePage();
     258             :     void LeavePage();
     259             : 
     260             :     String GetUiTextForCommand (const ::rtl::OUString& aCommandURL);
     261             :     Image GetUiIconForCommand (const ::rtl::OUString& aCommandURL);
     262             : 
     263             :     DECL_LINK( StartScanHdl, void * );
     264             :     DECL_LINK( SelectFileHdl, void * );
     265             :     DECL_LINK( SelectRegionHdl, ListBox * );
     266             :     DECL_LINK( UpdatePreviewHdl, void * );
     267             :     DECL_LINK( UpdatePageListHdl, void * );
     268             :     DECL_LINK( StartTypeHdl, RadioButton * );
     269             :     DECL_LINK( SelectTemplateHdl, void * );
     270             :     DECL_LINK( NextPageHdl, void * );
     271             :     DECL_LINK( LastPageHdl, void * );
     272             :     DECL_LINK( PreviewFlagHdl, void * );
     273             :     DECL_LINK( EffectPreviewHdl, void * );
     274             :     DECL_LINK( SelectLayoutHdl, void * );
     275             :     DECL_LINK( PageSelectHdl, void * );
     276             :     DECL_LINK( PresTypeHdl, void * );
     277             :     DECL_LINK( UpdateUserDataHdl, void * );
     278             :     DECL_LINK( SelectEffectHdl, void* );
     279             :     DECL_LINK( OpenButtonHdl, Button * );
     280             : 
     281             :     // Common
     282             :     Assistent           maAssistentFunc;
     283             :     CheckBox            maPreviewFlag;
     284             :     CheckBox            maStartWithFlag;
     285             :     HelpButton          maHelpButton;
     286             :     CancelButton        maCancelButton;
     287             :     PushButton          maLastPageButton;
     288             :     NextButton          maNextPageButton;
     289             :     OKButton            maFinishButton;
     290             :     SdDocPreviewWin     maPreview;
     291             : 
     292             :     String              maCreateStr;
     293             :     String              maOpenStr;
     294             : 
     295             :     // Seite 1
     296             :     FixedBitmap*        mpPage1FB;
     297             :     FixedLine*          mpPage1ArtFL;
     298             :     RadioButton*        mpPage1EmptyRB;
     299             :     RadioButton*        mpPage1TemplateRB;
     300             :     ListBox*            mpPage1RegionLB;
     301             :     ListBox*            mpPage1TemplateLB;
     302             :     RadioButton*        mpPage1OpenRB;
     303             :     ListBox*            mpPage1OpenLB;
     304             :     PushButton*         mpPage1OpenPB;
     305             : 
     306             :     // Seite 2
     307             :     FixedBitmap*        mpPage2FB;
     308             :     FixedLine*          mpPage2LayoutFL;
     309             :     ListBox*            mpPage2RegionLB;
     310             :     ListBox*            mpPage2LayoutLB;
     311             :     FixedLine*          mpPage2OutTypesFL;
     312             :     RadioButton*        mpPage2Medium1RB;
     313             :     RadioButton*        mpPage2Medium2RB;
     314             :     RadioButton*        mpPage2Medium3RB;
     315             :     RadioButton*        mpPage2Medium4RB;
     316             :     RadioButton*        mpPage2Medium5RB;
     317             :     RadioButton*        mpPage2Medium6RB;
     318             : 
     319             :     // Seite 3
     320             :     FixedBitmap*        mpPage3FB;
     321             :     FixedLine*          mpPage3EffectFL;
     322             :     FixedText*          mpPage3EffectFT;
     323             :     FadeEffectLB*       mpPage3EffectLB;
     324             :     FixedText*          mpPage3SpeedFT;
     325             :     ListBox*            mpPage3SpeedLB;
     326             :     FixedLine*          mpPage3PresTypeFL;
     327             :     RadioButton*        mpPage3PresTypeLiveRB;
     328             :     RadioButton*        mpPage3PresTypeKioskRB;
     329             :     FixedText*          mpPage3PresTimeFT;
     330             :     TimeField*          mpPage3PresTimeTMF;
     331             :     FixedText*          mpPage3BreakFT;
     332             :     TimeField*          mpPage3BreakTMF;
     333             :     CheckBox*           mpPage3LogoCB;
     334             : 
     335             :     // Seite 4
     336             :     FixedBitmap*        mpPage4FB;
     337             :     FixedLine*          mpPage4PersonalFL;
     338             :     FixedText*          mpPage4AskNameFT;
     339             :     Edit*               mpPage4AskNameEDT;
     340             :     FixedText*          mpPage4AskTopicFT;
     341             :     Edit*               mpPage4AskTopicEDT;
     342             :     FixedText*          mpPage4AskInfoFT;
     343             :     MultiLineEdit*      mpPage4AskInfoEDT;
     344             : 
     345             :     // Seite 5
     346             :     FixedBitmap*        mpPage5FB;
     347             :     FixedText*          mpPage5PageListFT;
     348             :     SdPageListControl*  mpPage5PageListCT;
     349             :     CheckBox*           mpPage5SummaryCB;
     350             : 
     351             : };
     352             : 
     353             : 
     354             : 
     355             : // ====================================================================
     356             : 
     357           0 : AssistentDlgImpl::AssistentDlgImpl( ::Window* pWindow, const Link& rFinishLink, sal_Bool bAutoPilot ) :
     358             :     mpTemplateRegion(NULL),
     359             :     mpLayoutRegion(NULL),
     360             :     mbUserDataDirty(sal_False),
     361             :     xDocShell (NULL),
     362           0 :     mpWindowUpdater (new WindowUpdater()),
     363             :     mbPreview(sal_True),
     364             :     mnShowPage(0),
     365             :     mbDocPreview(sal_False),
     366             :     maAssistentFunc(5),
     367             :     maPreviewFlag(pWindow,SdResId(CB_PREVIEW)),
     368             :     maStartWithFlag(pWindow,SdResId(CB_STARTWITH)),
     369             :     maHelpButton(pWindow,SdResId(BUT_HELP)),
     370             :     maCancelButton(pWindow,SdResId(BUT_CANCEL)),
     371             :     maLastPageButton(pWindow,SdResId(BUT_LAST)),
     372             :     maNextPageButton(pWindow,SdResId(BUT_NEXT)),
     373             :     maFinishButton(pWindow,SdResId(BUT_FINISH)),
     374             :     maPreview(pWindow,SdResId(CT_PREVIEW)),
     375             :     maCreateStr(SdResId(STR_CREATE)),
     376           0 :     maOpenStr(SdResId(STR_OPEN))
     377             : {
     378           0 :     maPageListFile += sal_Unicode('?'),
     379           0 :     mbRecentDocumentsReady = sal_False;
     380           0 :     mbTemplatesReady = sal_False;
     381           0 :     mbPreviewUpdating = sal_False;
     382             : 
     383           0 :     mpWindow = pWindow;
     384             : 
     385           0 :     if(bAutoPilot)
     386           0 :         maStartWithFlag.Hide();
     387             :     else
     388           0 :         maAssistentFunc.InsertControl(1, &maStartWithFlag );
     389             : 
     390             :     //page1 wird initialisiert und an die Assistentenfunktionalitaet
     391             :     //uebergeben
     392           0 :     maAssistentFunc.InsertControl(1, &maPreview );
     393           0 :     maAssistentFunc.InsertControl(1, &maPreviewFlag );
     394             :     maAssistentFunc.InsertControl(1,
     395           0 :         mpPage1FB = new FixedBitmap(pWindow,SdResId(FB_PAGE1)));
     396             :     maAssistentFunc.InsertControl(1,
     397           0 :         mpPage1ArtFL = new FixedLine(pWindow,SdResId(FL_PAGE1_ARTGROUP)));
     398             :     maAssistentFunc.InsertControl(1,
     399           0 :         mpPage1EmptyRB=new RadioButton(pWindow,SdResId(RB_PAGE1_EMPTY)));
     400             :     maAssistentFunc.InsertControl(1,
     401           0 :         mpPage1TemplateRB=new RadioButton(pWindow,SdResId(RB_PAGE1_TEMPLATE)));
     402             :     maAssistentFunc.InsertControl(1,
     403           0 :         mpPage1OpenRB=new RadioButton(pWindow,SdResId(RB_PAGE1_OPEN)));
     404             :     maAssistentFunc.InsertControl(1,
     405           0 :         mpPage1RegionLB = new ListBox(pWindow,SdResId(LB_PAGE1_REGION)));
     406             :     maAssistentFunc.InsertControl(1,
     407           0 :         mpPage1TemplateLB=new ListBox(pWindow,SdResId(LB_PAGE1_TEMPLATES)));
     408             :     maAssistentFunc.InsertControl(1,
     409           0 :         mpPage1OpenPB=new PushButton(pWindow,SdResId(PB_PAGE1_OPEN)));
     410             :     maAssistentFunc.InsertControl(1,
     411           0 :         mpPage1OpenLB=new ListBox(pWindow,SdResId(LB_PAGE1_OPEN)));
     412             : 
     413             :     // Align the button and list box displayed for the "open existing file"
     414             :     // radio button with the text of that radio button.
     415             :     {
     416           0 :         RadioButton aEmptyRB (mpWindow);
     417           0 :         sal_Int32 nIndent (aEmptyRB.CalcMinimumSize(0).Width());
     418           0 :         sal_Int32 nLeft (mpPage1OpenRB->GetPosPixel().X() + nIndent);
     419           0 :         sal_Int32 nWidth (mpPage1OpenRB->GetSizePixel().Width() - nIndent);
     420             :         mpPage1OpenPB->SetPosSizePixel(
     421           0 :             Point(nLeft, mpPage1OpenPB->GetPosPixel().Y()),
     422           0 :             Size(mpPage1OpenPB->GetSizePixel()));
     423             :         mpPage1OpenLB->SetPosSizePixel(
     424           0 :             Point(nLeft, mpPage1OpenLB->GetPosPixel().Y()),
     425           0 :             Size(nWidth, mpPage1OpenLB->GetSizePixel().Height()));
     426             :     }
     427             : 
     428             :     // Set text and icon of the 'Open...' button.
     429             :     {
     430           0 :         String sText (GetUiTextForCommand(".uno:Open"));
     431             :         // Remove the mnemonic and add a leading space so that icon and text
     432             :         // are not too close together.
     433           0 :         sText.SearchAndReplaceAll(rtl::OUString("~"),String());
     434           0 :         sText.Insert(rtl::OUString(" "),0);
     435           0 :         mpPage1OpenPB->SetText(sText);
     436             :         // Place icon left of text and both centered in the button.
     437             :         mpPage1OpenPB->SetModeImage(
     438             :             GetUiIconForCommand(".uno:Open")
     439           0 :         );
     440           0 :         mpPage1OpenPB->EnableImageDisplay(sal_True);
     441           0 :         mpPage1OpenPB->EnableTextDisplay(sal_True);
     442           0 :         mpPage1OpenPB->SetImageAlign(IMAGEALIGN_LEFT);
     443           0 :         mpPage1OpenPB->SetStyle(mpPage1OpenPB->GetStyle() | WB_CENTER);
     444             :     }
     445             : 
     446             :     // links&handler
     447           0 :     mpPage1RegionLB->SetSelectHdl(LINK(this,AssistentDlgImpl,SelectRegionHdl));
     448           0 :     mpPage1RegionLB->SetDropDownLineCount( 6 );
     449           0 :     mpPage1TemplateLB->SetSelectHdl(LINK(this,AssistentDlgImpl,SelectTemplateHdl));
     450           0 :     mpPage1TemplateLB->SetStyle(mpPage1TemplateLB->GetStyle() | WB_SORT);
     451           0 :     mpPage1TemplateLB->InsertEntry(String(SdResId(STR_ISLOADING)));
     452             : 
     453           0 :     mpPage1EmptyRB->SetClickHdl(LINK(this,AssistentDlgImpl,StartTypeHdl));
     454           0 :     mpPage1TemplateRB->SetClickHdl(LINK(this,AssistentDlgImpl,StartTypeHdl));
     455           0 :     mpPage1OpenRB->SetClickHdl(LINK(this,AssistentDlgImpl,StartTypeHdl));
     456           0 :     mpPage1OpenLB->SetSelectHdl(LINK(this,AssistentDlgImpl,SelectFileHdl));
     457           0 :     mpPage1OpenLB->SetDoubleClickHdl(rFinishLink);
     458           0 :     mpPage1OpenPB->SetClickHdl(LINK(this,AssistentDlgImpl,OpenButtonHdl));
     459             : 
     460             :     // Seite 2
     461           0 :     maAssistentFunc.InsertControl(2, &maPreview );
     462           0 :     maAssistentFunc.InsertControl(2, &maPreviewFlag );
     463             :     maAssistentFunc.InsertControl(2,
     464           0 :         mpPage2FB = new FixedBitmap(pWindow,SdResId(FB_PAGE2)));
     465             :     maAssistentFunc.InsertControl(2,
     466           0 :         mpPage2LayoutFL = new FixedLine( pWindow, SdResId(FL_PAGE2_LAYOUT) ));
     467             :     maAssistentFunc.InsertControl(2,
     468           0 :         mpPage2RegionLB = new ListBox(pWindow,SdResId(LB_PAGE2_REGION) ));
     469             :     maAssistentFunc.InsertControl(2,
     470           0 :         mpPage2LayoutLB = new ListBox(pWindow,SdResId(LB_PAGE2_LAYOUT) ));
     471             : 
     472             :     maAssistentFunc.InsertControl(2,
     473           0 :         mpPage2OutTypesFL = new FixedLine( pWindow, SdResId(FL_PAGE2_OUTPUTTYPES) ));
     474             :     maAssistentFunc.InsertControl(2,
     475           0 :         mpPage2Medium5RB = new RadioButton( pWindow, SdResId(RB_PAGE2_MEDIUM5) ));
     476             :     maAssistentFunc.InsertControl(2,
     477           0 :         mpPage2Medium3RB = new RadioButton( pWindow, SdResId(RB_PAGE2_MEDIUM3) ));
     478             :     maAssistentFunc.InsertControl(2,
     479           0 :         mpPage2Medium4RB = new RadioButton( pWindow, SdResId(RB_PAGE2_MEDIUM4) ));
     480             :     maAssistentFunc.InsertControl(2,
     481           0 :         mpPage2Medium1RB = new RadioButton( pWindow, SdResId(RB_PAGE2_MEDIUM1) ));
     482             :     maAssistentFunc.InsertControl(2,
     483           0 :         mpPage2Medium2RB = new RadioButton( pWindow, SdResId(RB_PAGE2_MEDIUM2) ));
     484             :     maAssistentFunc.InsertControl(2,
     485           0 :         mpPage2Medium6RB = new RadioButton( pWindow, SdResId(RB_PAGE2_MEDIUM6) ));
     486           0 :     mpPage2Medium5RB->Check();
     487             : 
     488           0 :     mpPage2RegionLB->SetSelectHdl(LINK(this,AssistentDlgImpl,SelectRegionHdl));
     489           0 :     mpPage2RegionLB->SetDropDownLineCount( 6 );
     490           0 :     mpPage2LayoutLB->SetSelectHdl(LINK(this,AssistentDlgImpl,SelectLayoutHdl));
     491           0 :     mpPage2LayoutLB->SetStyle(mpPage2LayoutLB->GetStyle() | WB_SORT);
     492           0 :     mpPage2LayoutLB->InsertEntry(String(SdResId(STR_ISLOADING)));
     493             : 
     494             :     // Seite 3
     495           0 :     maAssistentFunc.InsertControl(3, &maPreview );
     496           0 :     maAssistentFunc.InsertControl(3, &maPreviewFlag );
     497             :     maAssistentFunc.InsertControl(3,
     498           0 :         mpPage3FB = new FixedBitmap(pWindow,SdResId(FB_PAGE3)));
     499             :     maAssistentFunc.InsertControl(3,
     500           0 :         mpPage3EffectFL = new FixedLine( pWindow, SdResId(FL_PAGE3_EFFECT) ));
     501             :     maAssistentFunc.InsertControl(3,
     502           0 :         mpPage3EffectFT = new FixedText( pWindow, SdResId(FT_PAGE3_EFFECT) ));
     503             :     maAssistentFunc.InsertControl(3,
     504           0 :         mpPage3EffectLB = new FadeEffectLB( pWindow, SdResId(LB_PAGE3_EFFECT) ));
     505             :     maAssistentFunc.InsertControl(3,
     506           0 :         mpPage3SpeedFT = new FixedText( pWindow, SdResId(FT_PAGE3_SPEED) ));
     507             :     maAssistentFunc.InsertControl(3,
     508           0 :         mpPage3SpeedLB = new FadeEffectLB( pWindow, SdResId(LB_PAGE3_SPEED) ));
     509             :     maAssistentFunc.InsertControl(3,
     510           0 :         mpPage3PresTypeFL = new FixedLine( pWindow, SdResId(FL_PAGE3_PRESTYPE) ));
     511             :     maAssistentFunc.InsertControl(3,
     512           0 :         mpPage3PresTypeLiveRB = new RadioButton( pWindow, SdResId(RB_PAGE3_LIVE) ));
     513             :     maAssistentFunc.InsertControl(3,
     514           0 :         mpPage3PresTypeKioskRB = new RadioButton( pWindow, SdResId(RB_PAGE3_KIOSK) ));
     515             :     maAssistentFunc.InsertControl(3,
     516           0 :         mpPage3PresTimeFT = new FixedText( pWindow, SdResId( FT_PAGE3_TIME) ));
     517             :     maAssistentFunc.InsertControl(3,
     518           0 :         mpPage3PresTimeTMF = new TimeField( pWindow, SdResId( TMF_PAGE3_TIME) ));
     519             :     maAssistentFunc.InsertControl(3,
     520           0 :         mpPage3BreakFT = new FixedText( pWindow, SdResId( FT_PAGE3_BREAK) ));
     521             :     maAssistentFunc.InsertControl(3,
     522           0 :         mpPage3BreakTMF = new TimeField( pWindow, SdResId( TMF_PAGE3_BREAK) ));
     523             :     maAssistentFunc.InsertControl(3,
     524           0 :         mpPage3LogoCB = new CheckBox( pWindow, SdResId( CB_PAGE3_LOGO) ));
     525             : 
     526           0 :     mpPage3EffectLB->Fill();
     527           0 :     mpPage3EffectLB->SetSelectHdl( LINK(this,AssistentDlgImpl,SelectEffectHdl ));
     528           0 :     mpPage3EffectLB->SetDropDownLineCount( 12 );
     529             : 
     530           0 :     mpPage3SpeedLB->InsertEntry( String( SdResId(STR_SLOW) ));
     531           0 :     mpPage3SpeedLB->InsertEntry( String( SdResId(STR_MEDIUM) ));
     532           0 :     mpPage3SpeedLB->InsertEntry( String( SdResId(STR_FAST) ));
     533           0 :     mpPage3SpeedLB->SetDropDownLineCount( 3 );
     534           0 :     mpPage3SpeedLB->SetSelectHdl( LINK(this,AssistentDlgImpl,SelectEffectHdl ));
     535           0 :     mpPage3SpeedLB->SelectEntryPos( 1 );
     536             : 
     537           0 :     mpPage3PresTypeLiveRB->Check();
     538           0 :     mpPage3PresTypeLiveRB->SetClickHdl( LINK(this,AssistentDlgImpl, PresTypeHdl ));
     539           0 :     mpPage3PresTypeKioskRB->SetClickHdl( LINK(this,AssistentDlgImpl, PresTypeHdl ));
     540           0 :     mpPage3PresTimeTMF->SetFormat( TIMEF_SEC );
     541           0 :     mpPage3PresTimeTMF->SetTime( Time( 0, 0, 10 ) );
     542           0 :     mpPage3BreakTMF->SetFormat( TIMEF_SEC );
     543           0 :     mpPage3BreakTMF->SetTime( Time( 0, 0, 10 ) );
     544           0 :     mpPage3LogoCB->Check();
     545             : 
     546             :     // set cursor in timefield
     547           0 :     Edit *pEditPage3PresTimeTMF = mpPage3PresTimeTMF->GetField();
     548           0 :     Edit *pEditPage3BreakTMF = mpPage3BreakTMF->GetField();
     549           0 :     Selection aSel1( pEditPage3PresTimeTMF->GetMaxTextLen(), pEditPage3PresTimeTMF->GetMaxTextLen() );
     550           0 :     Selection aSel2( pEditPage3BreakTMF->GetMaxTextLen(), pEditPage3BreakTMF->GetMaxTextLen() );
     551           0 :     pEditPage3PresTimeTMF->SetSelection( aSel1 );
     552           0 :     pEditPage3BreakTMF->SetSelection( aSel2 );
     553             : 
     554             :     // Seite 4
     555             :     maAssistentFunc.InsertControl(4,
     556           0 :         mpPage4FB = new FixedBitmap(pWindow,SdResId(FB_PAGE4)));
     557             :     maAssistentFunc.InsertControl(4,
     558           0 :         mpPage4PersonalFL = new FixedLine( pWindow, SdResId(FL_PAGE4_PERSONAL) ));
     559             :     maAssistentFunc.InsertControl(4,
     560           0 :         mpPage4AskNameFT   = new FixedText( pWindow, SdResId(FT_PAGE4_ASKNAME) ));
     561             :     maAssistentFunc.InsertControl(4,
     562           0 :         mpPage4AskNameEDT  = new Edit( pWindow, SdResId(EDT_PAGE4_ASKNAME) ));
     563             :     maAssistentFunc.InsertControl(4,
     564           0 :         mpPage4AskTopicFT= new FixedText( pWindow, SdResId(FT_PAGE4_ASKTOPIC) ));
     565             :     maAssistentFunc.InsertControl(4,
     566           0 :         mpPage4AskTopicEDT = new Edit( pWindow, SdResId(EDT_PAGE4_ASKTOPIC) ));
     567             :     maAssistentFunc.InsertControl(4,
     568           0 :         mpPage4AskInfoFT   = new FixedText( pWindow, SdResId(FT_PAGE4_ASKINFORMATION) ));
     569             :     maAssistentFunc.InsertControl(4,
     570           0 :         mpPage4AskInfoEDT  = new MultiLineEdit( pWindow, SdResId(EDT_PAGE4_ASKINFORMATION) ));
     571             : 
     572           0 :     mpPage4AskNameEDT->SetModifyHdl(LINK(this,AssistentDlgImpl,UpdateUserDataHdl));
     573           0 :     mpPage4AskTopicEDT->SetModifyHdl(LINK(this,AssistentDlgImpl,UpdateUserDataHdl));
     574           0 :     mpPage4AskInfoEDT->SetModifyHdl(LINK(this,AssistentDlgImpl,UpdateUserDataHdl));
     575             : 
     576             :     // page 5
     577           0 :     maAssistentFunc.InsertControl(5, &maPreview );
     578           0 :     maAssistentFunc.InsertControl(5, &maPreviewFlag );
     579             :     maAssistentFunc.InsertControl(5,
     580           0 :         mpPage5FB = new FixedBitmap(pWindow,SdResId(FB_PAGE5)));
     581             :     maAssistentFunc.InsertControl(5,
     582           0 :         mpPage5PageListFT = new FixedText( pWindow, SdResId( FT_PAGE5_PAGELIST ) ));
     583             :     maAssistentFunc.InsertControl(5,
     584           0 :         mpPage5PageListCT = new SdPageListControl( pWindow, SdResId( CT_PAGE5_PAGELIST ) ));
     585             :     maAssistentFunc.InsertControl(5,
     586           0 :         mpPage5SummaryCB  = new CheckBox( pWindow, SdResId( CB_PAGE5_SUMMARY ) ));
     587             : 
     588           0 :     mpPage5PageListCT->SetSelectHdl(LINK(this,AssistentDlgImpl, PageSelectHdl));
     589             : 
     590             : 
     591             :     // generell
     592           0 :     InterpolateFixedBitmap( mpPage1FB );
     593           0 :     InterpolateFixedBitmap( mpPage2FB );
     594           0 :     InterpolateFixedBitmap( mpPage3FB );
     595           0 :     InterpolateFixedBitmap( mpPage4FB );
     596           0 :     InterpolateFixedBitmap( mpPage5FB );
     597             : 
     598           0 :     maLastPageButton.SetClickHdl(LINK(this,AssistentDlgImpl, LastPageHdl ));
     599           0 :     maNextPageButton.SetClickHdl(LINK(this,AssistentDlgImpl, NextPageHdl ));
     600             : 
     601           0 :     maPreviewFlag.Check( mbPreview );
     602           0 :     maPreviewFlag.SetClickHdl(LINK(this, AssistentDlgImpl, PreviewFlagHdl ));
     603           0 :     maPreview.SetClickHdl(LINK(this,AssistentDlgImpl, EffectPreviewHdl ));
     604             : 
     605             :     //setzt die Ausgangsseite
     606           0 :     maAssistentFunc.GotoPage(1);
     607           0 :     maLastPageButton.Disable();
     608             : 
     609           0 :     maPrevTimer.SetTimeout( 200 );
     610           0 :     maPrevTimer.SetTimeoutHdl( LINK( this, AssistentDlgImpl, UpdatePreviewHdl));
     611             : 
     612           0 :     maEffectPrevTimer.SetTimeout( 50 );
     613           0 :     maEffectPrevTimer.SetTimeoutHdl( LINK( this, AssistentDlgImpl, EffectPreviewHdl ));
     614             : 
     615           0 :     maUpdatePageListTimer.SetTimeout( 50 );
     616           0 :     maUpdatePageListTimer.SetTimeoutHdl( LINK( this, AssistentDlgImpl, UpdatePageListHdl));
     617             : 
     618           0 :     SetStartType( ST_EMPTY );
     619             : 
     620           0 :     ChangePage();
     621             : 
     622           0 :     mpWindowUpdater->RegisterWindow (&maPreview);
     623             : 
     624           0 :     UpdatePreview( sal_True );
     625             : 
     626             :     //check whether we should start with a template document initialy and preselect it
     627           0 :     const ::rtl::OUString aServiceName( "com.sun.star.presentation.PresentationDocument" );
     628           0 :     String aStandardTemplate( SfxObjectFactory::GetStandardTemplate( aServiceName ) );
     629           0 :     if( aStandardTemplate.Len() )
     630             :     {
     631           0 :         ProvideTemplates();
     632             : 
     633             :         //find aStandardTemplate in maPresentList
     634           0 :         TemplateDir*   pStandardTemplateDir = 0;
     635           0 :         TemplateEntry* pStandardTemplateEntry = 0;
     636             : 
     637           0 :         std::vector<TemplateDir*>::iterator I;
     638           0 :         for (I=maPresentList.begin(); I!=maPresentList.end(); ++I)
     639             :         {
     640           0 :             TemplateDir* pDir = *I;
     641           0 :             std::vector<TemplateEntry*>::iterator   J;
     642           0 :             for (J=pDir->maEntries.begin(); J!=pDir->maEntries.end(); ++J)
     643             :             {
     644           0 :                 TemplateEntry* pEntry = *J;
     645           0 :                 if(pEntry->msPath == aStandardTemplate)
     646             :                 {
     647           0 :                     pStandardTemplateDir = pDir;
     648           0 :                     pStandardTemplateEntry = pEntry;
     649           0 :                     break;
     650             :                 }
     651             :             }
     652           0 :             if(pStandardTemplateDir)
     653             :                 break;
     654             :         }
     655             : 
     656             :         //preselect template
     657           0 :         if( pStandardTemplateDir && pStandardTemplateEntry )
     658             :         {
     659           0 :             mpPage1RegionLB->SelectEntry( pStandardTemplateDir->msRegion );
     660           0 :             SelectTemplateRegion( pStandardTemplateDir->msRegion );
     661           0 :             mpPage1TemplateLB->SelectEntry( pStandardTemplateEntry->msTitle );
     662           0 :             SelectTemplateHdl(mpPage1TemplateLB);
     663             :         }
     664           0 :     }
     665           0 : }
     666             : 
     667             : 
     668             : 
     669             : 
     670           0 : AssistentDlgImpl::~AssistentDlgImpl()
     671             : {
     672           0 :     CloseDocShell();
     673             : 
     674           0 :     DeletePasswords();
     675             : 
     676             :     //  Delete the template file infos.
     677           0 :     std::vector<TemplateDir*>::iterator I;
     678           0 :     std::vector<TemplateEntry*>::iterator   J;
     679           0 :     for (I=maPresentList.begin(); I!=maPresentList.end(); ++I)
     680             :     {
     681           0 :         for (J=(*I)->maEntries.begin(); J!=(*I)->maEntries.end(); ++J)
     682           0 :             delete (*J);
     683           0 :         delete (*I);
     684             :     }
     685             : 
     686             :     // Seite 1
     687           0 :     delete mpPage1FB;
     688           0 :     delete mpPage1ArtFL;
     689           0 :     delete mpPage1EmptyRB;
     690           0 :     delete mpPage1TemplateRB;
     691           0 :     delete mpPage1TemplateLB;
     692           0 :     delete mpPage1RegionLB;
     693           0 :     delete mpPage1OpenRB;
     694           0 :     delete mpPage1OpenLB;
     695           0 :     delete mpPage1OpenPB;
     696             : 
     697             :     // Seite 2
     698           0 :     delete mpPage2FB;
     699           0 :     delete mpPage2LayoutFL;
     700           0 :     delete mpPage2RegionLB;
     701           0 :     delete mpPage2LayoutLB;
     702           0 :     delete mpPage2OutTypesFL;
     703           0 :     delete mpPage2Medium1RB;
     704           0 :     delete mpPage2Medium2RB;
     705           0 :     delete mpPage2Medium3RB;
     706           0 :     delete mpPage2Medium4RB;
     707           0 :     delete mpPage2Medium5RB;
     708           0 :     delete mpPage2Medium6RB;
     709             : 
     710             :     // Seite 3
     711           0 :     delete mpPage3FB;
     712           0 :     delete mpPage3EffectFL;
     713           0 :     delete mpPage3EffectFT;
     714           0 :     delete mpPage3EffectLB;
     715           0 :     delete mpPage3SpeedFT;
     716           0 :     delete mpPage3SpeedLB;
     717           0 :     delete mpPage3PresTypeFL;
     718           0 :     delete mpPage3PresTypeLiveRB;
     719           0 :     delete mpPage3PresTypeKioskRB;
     720           0 :     delete mpPage3PresTimeFT;
     721           0 :     delete mpPage3PresTimeTMF;
     722           0 :     delete mpPage3BreakFT;
     723           0 :     delete mpPage3BreakTMF;
     724           0 :     delete mpPage3LogoCB;
     725             : 
     726             :     // Seite 4
     727           0 :     delete mpPage4FB;
     728           0 :     delete mpPage4PersonalFL;
     729           0 :     delete mpPage4AskNameFT;
     730           0 :     delete mpPage4AskNameEDT;
     731           0 :     delete mpPage4AskTopicFT;
     732           0 :     delete mpPage4AskTopicEDT;
     733           0 :     delete mpPage4AskInfoFT;
     734           0 :     delete mpPage4AskInfoEDT;
     735             : 
     736             :     // Seite 5
     737           0 :     delete mpPage5FB;
     738           0 :     delete mpPage5PageListFT;
     739           0 :     delete mpPage5PageListCT;
     740           0 :     delete mpPage5SummaryCB;
     741             : 
     742             :     //  Delete the file history list.
     743           0 :     std::vector<String*>::iterator  I2;
     744           0 :     for (I2=maOpenFilesList.begin(); I2!=maOpenFilesList.end(); ++I2)
     745           0 :         delete *I2;
     746           0 : }
     747             : 
     748           0 : void AssistentDlgImpl::CloseDocShell()
     749             : {
     750           0 :     if(xDocShell.Is())
     751             :     {
     752           0 :         uno::Reference< util::XCloseable > xCloseable( xDocShell->GetModel(), uno::UNO_QUERY );
     753           0 :         if( xCloseable.is() )
     754             :         {
     755           0 :             xCloseable->close( sal_True );
     756           0 :             xDocShell = NULL;
     757             :         }
     758             :         else
     759             :         {
     760           0 :             xDocShell->DoClose();
     761           0 :             xDocShell = NULL;
     762           0 :         }
     763             :     }
     764           0 : }
     765             : 
     766           0 : void AssistentDlgImpl::EndDialog( long )
     767             : {
     768           0 :     mpWindow = NULL;
     769           0 : }
     770             : 
     771             : 
     772             : 
     773             : 
     774           0 : void    AssistentDlgImpl::ScanDocmenu   (void)
     775             : {
     776           0 :     if( mbRecentDocumentsReady )
     777           0 :         return;
     778             : 
     779             :     uno::Sequence<uno::Sequence<beans::PropertyValue> > aHistory =
     780           0 :         SvtHistoryOptions().GetList (ePICKLIST);
     781             : 
     782           0 :     uno::Reference< lang::XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
     783           0 :     uno::Reference< container::XNameAccess > xFilterFactory( xFactory->createInstance( "com.sun.star.document.FilterFactory" ), uno::UNO_QUERY );
     784             : 
     785           0 :     uno::Reference<ucb::XSimpleFileAccess3> xFileAccess(ucb::SimpleFileAccess::create(::comphelper::getProcessComponentContext()));
     786             : 
     787           0 :     sal_uInt32 nCount = aHistory.getLength();
     788           0 :     for (sal_uInt32 nItem=0; nItem<nCount; ++nItem)
     789             :     {
     790             :         //  Get the current history item's properties.
     791           0 :         uno::Sequence<beans::PropertyValue> aPropertySet = aHistory[nItem];
     792           0 :         rtl::OUString   sURL;
     793           0 :         rtl::OUString   sFilter;
     794           0 :         rtl::OUString   sTitle;
     795           0 :         rtl::OUString   sPassword;
     796           0 :         sal_uInt32 nPropertyCount = aPropertySet.getLength();
     797           0 :         for (sal_uInt32 nProperty=0; nProperty<nPropertyCount; ++nProperty)
     798           0 :             if (aPropertySet[nProperty].Name == HISTORY_PROPERTYNAME_URL)
     799           0 :                 aPropertySet[nProperty].Value >>= sURL;
     800           0 :             else if (aPropertySet[nProperty].Name == HISTORY_PROPERTYNAME_FILTER)
     801           0 :                 aPropertySet[nProperty].Value >>= sFilter;
     802           0 :             else if (aPropertySet[nProperty].Name == HISTORY_PROPERTYNAME_TITLE)
     803           0 :                 aPropertySet[nProperty].Value >>= sTitle;
     804           0 :             else if (aPropertySet[nProperty].Name == HISTORY_PROPERTYNAME_PASSWORD)
     805           0 :                 aPropertySet[nProperty].Value >>= sPassword;
     806             : 
     807             :         //  If the entry is an impress file then insert it into the
     808             :         //  history list and the list box.
     809           0 :         uno::Sequence< beans::PropertyValue > lProps;
     810           0 :         if (xFilterFactory->hasByName(sFilter))
     811             :         {
     812           0 :             uno::Any aFilterPropSet = xFilterFactory->getByName( sFilter );
     813           0 :             aFilterPropSet >>= lProps;
     814             :         }
     815             : 
     816           0 :         sal_Int32 nPropCount = lProps.getLength();
     817           0 :         rtl::OUString sFactoryName;
     818           0 :         for( sal_Int32 i=0; i<nPropCount; ++i )
     819             :         {
     820           0 :             if( lProps[i].Name.compareToAscii( "DocumentService" ) == 0 &&
     821           0 :                 (lProps[i].Value >>= sFactoryName) &&
     822           0 :                 sFactoryName.compareToAscii( "com.sun.star.presentation.PresentationDocument" ) == 0 )
     823             :             {
     824             :                 // yes, it's an impress document
     825           0 :                 INetURLObject aURL;
     826             : 
     827             :                 // Do not include the file if it does not exist.
     828           0 :                 if (xFileAccess.is() && ! xFileAccess->exists(sURL))
     829           0 :                     continue;
     830             : 
     831           0 :                 aURL.SetSmartURL (sURL);
     832             :                 // The password is set only when it is not empty.
     833           0 :                 if (!sPassword.isEmpty())
     834           0 :                     aURL.SetPass (sPassword);
     835           0 :                 maOpenFilesList.push_back (new String (aURL.GetMainURL( INetURLObject::NO_DECODE )));
     836           0 :                 mpPage1OpenLB->InsertEntry (sTitle);
     837           0 :                 break;
     838             :             }
     839             :         }
     840           0 :     }
     841           0 :     mbRecentDocumentsReady = sal_True;
     842             :     try
     843             :     {
     844           0 :         UpdatePreview(sal_True);
     845             :     }
     846           0 :     catch (uno::RuntimeException& )
     847             :     {
     848             :         // Ignore all exceptions.
     849           0 :     }
     850             : }
     851             : 
     852             : 
     853             : 
     854           0 : void AssistentDlgImpl::ProvideTemplates (void)
     855             : {
     856           0 :     if ( ! mbTemplatesReady)
     857             :     {
     858           0 :         TemplateScanner aScanner;
     859           0 :         aScanner.EnableEntrySorting();
     860           0 :         aScanner.Scan ();
     861           0 :         TemplateScanDone (aScanner.GetFolderList());
     862             : 
     863             :         try
     864             :         {
     865           0 :             UpdatePreview(sal_True);
     866             :         }
     867           0 :         catch (uno::RuntimeException& )
     868             :         {
     869             :             // Ignore all exceptions.
     870           0 :         }
     871             :     }
     872           0 : }
     873             : 
     874           0 : void AssistentDlgImpl::TemplateScanDone (
     875             :     std::vector<TemplateDir*>& rTemplateFolder)
     876             : {
     877             :     //  This method is called from a thread.  Therefore we get the solar mutex.
     878           0 :     SolarMutexGuard aGuard;
     879             : 
     880             :     // Copy the contents of the given template folders to a local list.
     881           0 :     maPresentList.swap (rTemplateFolder);
     882             : 
     883             :     //  Fill in the list box on the first page.
     884           0 :     int nFirstEntry = 0;
     885           0 :     mpPage1RegionLB->Clear();
     886           0 :     std::vector<TemplateDir*>::iterator I;
     887             :     int i;
     888           0 :     for (i=0,I=maPresentList.begin(); I!=maPresentList.end(); ++I,++i)
     889             :     {
     890           0 :         TemplateDir* pDir = *I;
     891           0 :         if (pDir == NULL)
     892           0 :             continue;
     893             : 
     894             :         // HACK! presnt directory is always initially selected.
     895             :         // We have to look at the first entry to get a URL.
     896           0 :         if (!pDir->maEntries.empty() )
     897             :         {
     898           0 :             TemplateEntry* pEntry = pDir->maEntries.front();
     899           0 :             if (pEntry != NULL)
     900           0 :                 if (pEntry->msPath.SearchAscii("presnt") != STRING_NOTFOUND)
     901           0 :                     nFirstEntry = i;
     902             :         }
     903             : 
     904           0 :         mpPage1RegionLB->InsertEntry (pDir->msRegion);
     905             :     }
     906           0 :     mpPage1RegionLB->SelectEntryPos ((sal_uInt16)nFirstEntry);
     907           0 :     mpPage1RegionLB->Update();
     908           0 :     SelectTemplateRegion (mpPage1RegionLB->GetSelectEntry());
     909             : 
     910             :     //  Fill in the list box on the second page.
     911           0 :     nFirstEntry = 0;
     912           0 :     mpPage2RegionLB->Clear();
     913           0 :     for (i=0,I=maPresentList.begin(); I!=maPresentList.end(); ++I,++i)
     914             :     {
     915           0 :         TemplateDir* pDir = *I;
     916           0 :         if (pDir == NULL)
     917           0 :             continue;
     918             : 
     919             :         // HACK! layout directory is always initially selected.
     920             :         // We have to look at the first entry to get a URL.
     921           0 :         if (!pDir->maEntries.empty() )
     922             :         {
     923           0 :             TemplateEntry* pEntry = pDir->maEntries.front();
     924           0 :             if (pEntry != NULL)
     925           0 :                 if (pEntry->msPath.SearchAscii("layout") != STRING_NOTFOUND)
     926           0 :                     nFirstEntry = i;
     927             :         }
     928             : 
     929           0 :         mpPage2RegionLB->InsertEntry (pDir->msRegion);
     930             :     }
     931           0 :     mpPage2RegionLB->SelectEntryPos ((sal_uInt16)nFirstEntry);
     932           0 :     mpPage2RegionLB->Update();
     933           0 :     SelectLayoutRegion (mpPage2RegionLB->GetSelectEntry());
     934             : 
     935             :     //  Make the changes visible.
     936           0 :     mbTemplatesReady = sal_True;
     937           0 :     if (mpWindow)
     938           0 :         UpdatePage();
     939           0 : }
     940             : 
     941             : 
     942             : 
     943             : 
     944             : // ********************************************************************
     945             : // Status Methoden
     946             : // ********************************************************************
     947             : 
     948           0 : void AssistentDlgImpl::SetStartType( StartType eType )
     949             : {
     950           0 :     mpPage1EmptyRB->SetState( eType == ST_EMPTY );
     951           0 :     mpPage1TemplateRB->SetState( eType == ST_TEMPLATE );
     952           0 :     mpPage1OpenRB->SetState( eType == ST_OPEN );
     953           0 :     maNextPageButton.Enable( eType != ST_OPEN );
     954             : 
     955           0 :     mpPage1RegionLB->Show(eType == ST_TEMPLATE);
     956           0 :     mpPage1TemplateLB->Show(eType == ST_TEMPLATE);
     957           0 :     mpPage1OpenLB->Show(eType == ST_OPEN);
     958           0 :     mpPage1OpenPB->Show(eType == ST_OPEN);
     959             : 
     960           0 :     if (eType == ST_OPEN)
     961           0 :         maFinishButton.SetText(maOpenStr);
     962             :     else
     963           0 :         maFinishButton.SetText(maCreateStr);
     964           0 : }
     965             : 
     966           0 : StartType AssistentDlgImpl::GetStartType()
     967             : {
     968           0 :     if( mpPage1EmptyRB->IsChecked() )
     969           0 :         return ST_EMPTY;
     970           0 :     else if( mpPage1TemplateRB->IsChecked() )
     971           0 :         return ST_TEMPLATE;
     972             :     else
     973           0 :         return ST_OPEN;
     974             : }
     975             : 
     976           0 : String AssistentDlgImpl::GetDocFileName()
     977             : {
     978           0 :     String aTitle;
     979           0 :     if(mpWindow)
     980             :     {
     981           0 :         aTitle = mpWindow->GetText();
     982           0 :         sal_uInt16 nPos = aTitle.Search(sal_Unicode('('));
     983           0 :         if(nPos != STRING_NOTFOUND)
     984           0 :             aTitle.Erase( nPos-1 );
     985             :     }
     986             : 
     987           0 :     String aDocFile;
     988           0 :     if( GetStartType() == ST_TEMPLATE )
     989             :     {
     990           0 :         const sal_uInt16 nEntry = mpPage1TemplateLB->GetSelectEntryPos();
     991           0 :         TemplateEntry* pEntry = NULL;
     992           0 :         if(nEntry != (sal_uInt16)-1)
     993           0 :             pEntry = mpTemplateRegion->maEntries[nEntry];
     994             : 
     995           0 :         if(pEntry)
     996             :         {
     997           0 :             aDocFile = pEntry->msPath;
     998             : 
     999           0 :             aTitle.AppendAscii( RTL_CONSTASCII_STRINGPARAM(  " (" ) );
    1000           0 :             aTitle.Append( pEntry->msTitle );
    1001           0 :             aTitle.Append( sal_Unicode(')') );
    1002             :         }
    1003             :     }
    1004           0 :     else if( GetStartType() == ST_OPEN )
    1005             :     {
    1006           0 :         const sal_uInt16 nEntry = mpPage1OpenLB->GetSelectEntryPos();
    1007           0 :         if(nEntry != (sal_uInt16)-1 )
    1008           0 :             aDocFile = *maOpenFilesList[nEntry];
    1009             :     }
    1010             : 
    1011           0 :     if(mpWindow)
    1012           0 :         mpWindow->SetText(aTitle);
    1013             : 
    1014           0 :     return aDocFile;
    1015             : }
    1016             : 
    1017           0 : String AssistentDlgImpl::GetLayoutFileName()
    1018             : {
    1019           0 :     String aFile;
    1020           0 :     const sal_uInt16 nEntry = mpPage2LayoutLB->GetSelectEntryPos();
    1021           0 :     TemplateEntry* pEntry = NULL;
    1022           0 :     if(nEntry != (sal_uInt16)-1 && nEntry > 0)
    1023           0 :         pEntry = mpLayoutRegion->maEntries[nEntry-1];
    1024             : 
    1025           0 :     if(pEntry)
    1026           0 :         aFile = pEntry->msPath;
    1027             : 
    1028           0 :     return aFile;
    1029             : }
    1030             : 
    1031           0 : SfxObjectShellLock AssistentDlgImpl::GetDocument()
    1032             : {
    1033           0 :     UpdatePreview(sal_False);   // aber komplett laden
    1034           0 :     UpdatePageList();
    1035             : 
    1036           0 :     SfxObjectShell* pShell = xDocShell;
    1037           0 :     ::sd::DrawDocShell* pDocShell = PTR_CAST(::sd::DrawDocShell,pShell);
    1038           0 :     SdDrawDocument* pDoc = pDocShell?pDocShell->GetDoc():NULL;
    1039             : 
    1040           0 :     if(pDoc)
    1041             :     {
    1042           0 :         const sal_uInt16 nPageCount = pDoc->GetSdPageCount(PK_STANDARD);
    1043           0 :         sal_Bool bKiosk = mpPage3PresTypeKioskRB->IsChecked();
    1044           0 :         sal_uInt32 nNewTime = (sal_uInt32)mpPage3PresTimeTMF->GetTime().GetMSFromTime() / 1000;
    1045           0 :         if(bKiosk)
    1046             :         {
    1047           0 :             PresentationSettings& rSettings = pDoc->getPresentationSettings();
    1048           0 :             rSettings.mbEndless = bKiosk;
    1049           0 :             rSettings.mnPauseTimeout = (sal_Int32)mpPage3BreakTMF->GetTime().GetMSFromTime() / 1000;
    1050           0 :             rSettings.mbShowPauseLogo = mpPage3LogoCB->IsChecked();
    1051             :         }
    1052             : 
    1053           0 :         sal_uInt16 nPgAbsNum = 0;
    1054           0 :         sal_uInt16 nPgRelNum = 0;
    1055           0 :         while( nPgAbsNum < nPageCount )
    1056             :         {
    1057           0 :             SdPage* pPage = pDoc->GetSdPage( nPgRelNum, PK_STANDARD );
    1058           0 :             if( mpPage5PageListCT->IsPageChecked(nPgAbsNum) )
    1059             :             {
    1060           0 :                 mpPage3EffectLB->applySelected(pPage);
    1061           0 :                 const sal_uInt16 nPos = mpPage3SpeedLB->GetSelectEntryPos();
    1062           0 :                 pPage->setTransitionDuration( (nPos == 0) ? 3.0 : (nPos == 1) ? 2.0 : 1.0 );
    1063           0 :                 if(bKiosk)
    1064             :                 {
    1065           0 :                     pPage->SetPresChange( PRESCHANGE_AUTO );
    1066           0 :                     pPage->SetTime(nNewTime);
    1067             :                 }
    1068           0 :                 nPgRelNum++;
    1069             :             }
    1070             :             else
    1071             :             {
    1072             :                 // diese Seite loeschen
    1073           0 :                 pDoc->DeletePage( (nPgRelNum << 1) + 2 ); // Notizseite loeschen
    1074           0 :                 pDoc->DeletePage( (nPgRelNum << 1) + 1 );   // Seite loeschen
    1075             :             }
    1076             : 
    1077           0 :             nPgAbsNum++;
    1078             :         }
    1079             :     }
    1080             :     else
    1081             :     {
    1082             :         OSL_FAIL("sd::AssistentDlgImpl::GetDocument(), no template?");
    1083             :     }
    1084             : 
    1085           0 :     SfxObjectShellLock xRet = xDocShell;
    1086           0 :     xDocShell = NULL;
    1087             : 
    1088           0 :     return xRet;
    1089             : }
    1090             : 
    1091           0 : void AssistentDlgImpl::LeavePage()
    1092             : {
    1093           0 :     int nPage = maAssistentFunc.GetCurrentPage();
    1094             : 
    1095           0 :     if( nPage == 4 && mbUserDataDirty )
    1096           0 :         maPrevTimer.Start();
    1097           0 : }
    1098             : 
    1099           0 : void AssistentDlgImpl::ChangePage()
    1100             : {
    1101           0 :     maNextPageButton.Enable(!maAssistentFunc.IsLastPage());
    1102           0 :     maLastPageButton.Enable(!maAssistentFunc.IsFirstPage());
    1103             : 
    1104           0 :     sal_uInt16 nPage = (sal_uInt16)maAssistentFunc.GetCurrentPage();
    1105             : 
    1106           0 :     if( mpWindow )
    1107             :     {
    1108           0 :         mpWindow->SetHelpId( PageHelpIds[nPage-1]);
    1109             :     }
    1110             : 
    1111           0 :     UpdatePage();
    1112             : 
    1113           0 :     if( maNextPageButton.IsEnabled() )
    1114             :     {
    1115           0 :       maNextPageButton.ForceFocusEventBroadcast();
    1116             :     }
    1117             :     else
    1118           0 :         maFinishButton.GrabFocus();
    1119           0 : }
    1120             : 
    1121           0 : void AssistentDlgImpl::UpdatePage()
    1122             : {
    1123           0 :     sal_uInt16 nPage = (sal_uInt16)maAssistentFunc.GetCurrentPage();
    1124             : 
    1125           0 :     switch(nPage)
    1126             :     {
    1127             :     case 1:
    1128             :         {
    1129             :             // Elemente auf der ersten Seite abhaengig vom Starttype Zeigen
    1130           0 :             SetStartType( GetStartType() );
    1131           0 :             mpPage1TemplateRB->Enable(sal_True /*mbTemplatesReady*/);
    1132           0 :             break;
    1133             :         }
    1134             : 
    1135             :     case 2:
    1136             :         {
    1137           0 :             mpPage2RegionLB->Enable(mbTemplatesReady);
    1138           0 :             mpPage2LayoutLB->Enable(mbTemplatesReady);
    1139             : 
    1140           0 :             if( GetStartType() != ST_EMPTY )
    1141             :             {
    1142           0 :                 mpPage2Medium5RB->Enable( sal_True );
    1143             :             }
    1144             :             else
    1145             :             {
    1146           0 :                 mpPage2Medium5RB->Enable( sal_False );
    1147           0 :                 if(mpPage2Medium5RB->IsChecked())
    1148           0 :                     mpPage2Medium1RB->Check();
    1149             :             }
    1150             : 
    1151           0 :             break;
    1152             :         }
    1153             :     case 5:
    1154             :         {
    1155           0 :             if(mbDocPreview || maPageListFile != maDocFile)
    1156           0 :                 mpPage5PageListCT->Clear();
    1157             : 
    1158           0 :             maUpdatePageListTimer.Start();
    1159           0 :             break;
    1160             :         }
    1161             : 
    1162             :     case 3:
    1163             :         {
    1164           0 :             if(GetStartType() != ST_TEMPLATE)
    1165           0 :                 maNextPageButton.Enable(false);
    1166             : 
    1167           0 :             sal_Bool bKiosk = mpPage3PresTypeKioskRB->IsChecked();
    1168           0 :             mpPage3PresTimeFT->Enable(bKiosk);
    1169           0 :             mpPage3BreakFT->Enable(bKiosk);
    1170           0 :             mpPage3PresTimeTMF->Enable(bKiosk);
    1171           0 :             mpPage3BreakTMF->Enable(bKiosk);
    1172           0 :             mpPage3LogoCB->Enable(bKiosk);
    1173           0 :             break;
    1174             :         }
    1175             :     }
    1176           0 : }
    1177             : 
    1178             : // ********************************************************************
    1179             : // UI-Handler
    1180             : // ********************************************************************
    1181             : 
    1182           0 : IMPL_LINK( AssistentDlgImpl, SelectRegionHdl, ListBox *, pLB )
    1183             : {
    1184           0 :     if( pLB == mpPage1RegionLB )
    1185             :     {
    1186           0 :         SelectTemplateRegion( pLB->GetSelectEntry() );
    1187           0 :         SetStartType( ST_TEMPLATE );
    1188           0 :         mpPage2Medium5RB->Check();
    1189             :     }
    1190             :     else
    1191             :     {
    1192           0 :         SelectLayoutRegion( pLB->GetSelectEntry() );
    1193             :     }
    1194             : 
    1195           0 :     return 0;
    1196             : }
    1197             : 
    1198           0 : IMPL_LINK_NOARG(AssistentDlgImpl, SelectEffectHdl)
    1199             : {
    1200           0 :     maEffectPrevTimer.Start();
    1201           0 :     return 0;
    1202             : }
    1203             : 
    1204           0 : IMPL_LINK( AssistentDlgImpl, OpenButtonHdl, Button*, pButton )
    1205             : {
    1206             :     // Clear the selection and forward the call.
    1207           0 :     mpPage1OpenLB->SetNoSelection();
    1208           0 :     return mpPage1OpenLB->GetDoubleClickHdl().Call(pButton);
    1209             : }
    1210             : 
    1211           0 : IMPL_LINK_NOARG(AssistentDlgImpl, EffectPreviewHdl)
    1212             : {
    1213           0 :     if(mbPreview && xDocShell.Is() )
    1214             :     {
    1215           0 :         SfxObjectShell* pShell = xDocShell;
    1216           0 :         DrawDocShell* pDocShell = dynamic_cast< DrawDocShell * >(pShell);
    1217           0 :         if( pDocShell )
    1218             :         {
    1219           0 :             SdDrawDocument* pDoc = pDocShell->GetDoc();
    1220           0 :             if( pDoc )
    1221             :             {
    1222           0 :                 SdPage* pPage = pDoc->GetSdPage( mnShowPage, PK_STANDARD );
    1223           0 :                 if( pPage )
    1224           0 :                     mpPage3EffectLB->applySelected(pPage);
    1225             :             }
    1226             :         }
    1227           0 :         maPreview.startPreview();
    1228             :     }
    1229           0 :     return 0;
    1230             : }
    1231             : 
    1232           0 : IMPL_LINK_NOARG(AssistentDlgImpl, PreviewFlagHdl)
    1233             : 
    1234             : {
    1235           0 :     if( maPreviewFlag.IsChecked() != mbPreview )
    1236             :     {
    1237           0 :         mbPreview = maPreviewFlag.IsChecked();
    1238           0 :         UpdatePreview(sal_True);
    1239             :     }
    1240           0 :     return 0;
    1241             : }
    1242             : 
    1243           0 : IMPL_LINK_NOARG(AssistentDlgImpl, SelectTemplateHdl)
    1244             : {
    1245           0 :     SetStartType( ST_TEMPLATE );
    1246           0 :     mpPage2Medium5RB->Check();
    1247           0 :     mpPage2LayoutLB->SelectEntryPos(0);
    1248           0 :     maPrevTimer.Start();
    1249           0 :     return 0;
    1250             : }
    1251             : 
    1252           0 : IMPL_LINK_NOARG(AssistentDlgImpl, SelectLayoutHdl)
    1253             : {
    1254           0 :     maPrevTimer.Start();
    1255           0 :     return 0;
    1256             : }
    1257             : 
    1258           0 : IMPL_LINK_NOARG(AssistentDlgImpl, SelectFileHdl)
    1259             : {
    1260           0 :     SetStartType( ST_OPEN );
    1261           0 :     maPrevTimer.Start();
    1262           0 :     return 0;
    1263             : }
    1264             : 
    1265           0 : IMPL_LINK_NOARG(AssistentDlgImpl, PageSelectHdl)
    1266             : {
    1267           0 :     sal_uInt16 nPage = mpPage5PageListCT->GetSelectedPage();
    1268           0 :     if( mnShowPage != nPage )
    1269             :     {
    1270           0 :         mnShowPage = nPage;
    1271           0 :         UpdatePreview(sal_False);
    1272             :     }
    1273             : 
    1274           0 :     return 0;
    1275             : }
    1276             : 
    1277           0 : IMPL_LINK_NOARG(AssistentDlgImpl, UpdatePageListHdl)
    1278             : {
    1279           0 :     UpdatePageList();
    1280           0 :     return 0;
    1281             : }
    1282             : 
    1283           0 : IMPL_LINK_NOARG(AssistentDlgImpl, UpdatePreviewHdl)
    1284             : {
    1285           0 :     UpdatePreview( sal_True );
    1286           0 :     return 0;
    1287             : }
    1288             : 
    1289           0 : IMPL_LINK( AssistentDlgImpl, StartTypeHdl, RadioButton *, pButton )
    1290             : {
    1291           0 :     StartType eType = pButton == mpPage1EmptyRB?ST_EMPTY:pButton == mpPage1TemplateRB?ST_TEMPLATE:ST_OPEN;
    1292             : 
    1293           0 :     if(eType == ST_TEMPLATE)
    1294           0 :         ProvideTemplates();
    1295           0 :     else if(eType == ST_OPEN)
    1296           0 :         ScanDocmenu();
    1297             : 
    1298           0 :     SetStartType( eType );
    1299             : 
    1300           0 :     if(eType == ST_TEMPLATE)
    1301             :     {
    1302           0 :         mpPage1TemplateLB->SelectEntryPos(0);
    1303           0 :         mpPage2Medium5RB->Check();
    1304             :     }
    1305           0 :     else if(eType == ST_OPEN)
    1306           0 :         mpPage1OpenLB->SelectEntryPos(0);
    1307             : 
    1308           0 :     maPrevTimer.Start();
    1309           0 :     return 0;
    1310             : }
    1311             : 
    1312             : 
    1313           0 : IMPL_LINK_NOARG(AssistentDlgImpl, NextPageHdl)
    1314             : {
    1315             :     // When changing from the first to the second page make sure that the
    1316             :     // templates are present.
    1317           0 :     if (maAssistentFunc.GetCurrentPage() == 1)
    1318           0 :         ProvideTemplates();
    1319             : 
    1320             :     // Change to the next page.
    1321           0 :     LeavePage();
    1322           0 :     maAssistentFunc.NextPage();
    1323           0 :     ChangePage();
    1324           0 :     return 0;
    1325             : }
    1326             : 
    1327           0 : IMPL_LINK_NOARG(AssistentDlgImpl, LastPageHdl)
    1328             : {
    1329           0 :     LeavePage();
    1330           0 :     maAssistentFunc.PreviousPage();
    1331           0 :     ChangePage();
    1332           0 :     return 0;
    1333             : }
    1334             : 
    1335           0 : IMPL_LINK_NOARG(AssistentDlgImpl, PresTypeHdl)
    1336             : {
    1337           0 :     if(maDocFile.Len() == 0)
    1338             :       {
    1339           0 :         maNextPageButton.Enable(false);
    1340             :       }
    1341             : 
    1342           0 :     sal_Bool bKiosk = mpPage3PresTypeKioskRB->IsChecked();
    1343           0 :     mpPage3PresTimeFT->Enable(bKiosk);
    1344           0 :     mpPage3BreakFT->Enable(bKiosk);
    1345           0 :     mpPage3PresTimeTMF->Enable(bKiosk);
    1346           0 :     mpPage3BreakTMF->Enable(bKiosk);
    1347           0 :     mpPage3LogoCB->Enable(bKiosk);
    1348           0 :     return 0;
    1349             : }
    1350             : 
    1351           0 : IMPL_LINK_NOARG(AssistentDlgImpl, UpdateUserDataHdl)
    1352             : {
    1353           0 :     mbUserDataDirty = sal_True;
    1354           0 :     String aTopic = mpPage4AskTopicEDT->GetText();
    1355           0 :     String aName  = mpPage4AskNameEDT->GetText();
    1356           0 :     String aInfo  = mpPage4AskInfoEDT->GetText();
    1357             : 
    1358           0 :     if(aTopic.Len() == 0 && aName.Len() == 0 && aInfo.Len() == 0)
    1359           0 :         maDocFile.Erase();
    1360             : 
    1361           0 :     return 0;
    1362             : }
    1363             : 
    1364             : // ********************************************************************
    1365             : // ********************************************************************
    1366             : 
    1367           0 : void AssistentDlgImpl::SelectTemplateRegion( const String& rRegion )
    1368             : {
    1369           0 :     mpPage1TemplateLB->Clear();
    1370           0 :     std::vector<TemplateDir*>::iterator I;
    1371           0 :     for (I=maPresentList.begin(); I!=maPresentList.end(); ++I)
    1372             :     {
    1373           0 :         TemplateDir * pDir = *I;
    1374           0 :         mpTemplateRegion = *I;
    1375           0 :         if (pDir->msRegion.Equals( rRegion ) )
    1376             :         {
    1377           0 :             std::vector<TemplateEntry*>::iterator   J;
    1378           0 :             for (J=pDir->maEntries.begin(); J!=pDir->maEntries.end(); ++J)
    1379           0 :                 mpPage1TemplateLB->InsertEntry ((*J)->msTitle);
    1380           0 :             mpPage1TemplateLB->Update();
    1381           0 :             if(GetStartType() == ST_TEMPLATE)
    1382             :             {
    1383           0 :                 mpPage1TemplateLB->SelectEntryPos( 0 );
    1384           0 :                 SelectTemplateHdl(NULL);
    1385             :             }
    1386             :             break;
    1387             :         }
    1388             :     }
    1389           0 : }
    1390             : 
    1391           0 : void AssistentDlgImpl::SelectLayoutRegion( const String& rRegion )
    1392             : {
    1393           0 :     mpPage2LayoutLB->Clear();
    1394           0 :     mpPage2LayoutLB->InsertEntry(String(SdResId(STR_WIZARD_ORIGINAL)));
    1395           0 :     std::vector<TemplateDir*>::iterator I;
    1396           0 :     for (I=maPresentList.begin(); I!=maPresentList.end(); ++I)
    1397             :     {
    1398           0 :         TemplateDir * pDir = *I;
    1399           0 :         mpLayoutRegion = *I;
    1400             : 
    1401           0 :         if (pDir->msRegion.Equals (rRegion))
    1402             :         {
    1403           0 :             std::vector<TemplateEntry*>::iterator   J;
    1404           0 :             for (J=pDir->maEntries.begin(); J!=pDir->maEntries.end(); ++J)
    1405           0 :                 mpPage2LayoutLB->InsertEntry ((*J)->msTitle);
    1406           0 :             mpPage2LayoutLB->Update();
    1407             :             break;
    1408             :         }
    1409             :     }
    1410           0 : }
    1411             : 
    1412           0 : void AssistentDlgImpl::UpdateUserData()
    1413             : {
    1414           0 :     String aTopic = mpPage4AskTopicEDT->GetText();
    1415           0 :     String aName  = mpPage4AskNameEDT->GetText();
    1416           0 :     String aInfo  = mpPage4AskInfoEDT->GetText();
    1417             : 
    1418           0 :     SfxObjectShell* pShell = xDocShell;
    1419           0 :     DrawDocShell* pDocShell = PTR_CAST(DrawDocShell,pShell);
    1420           0 :     SdDrawDocument* pDoc = pDocShell?pDocShell->GetDoc():NULL;
    1421           0 :     SdPage* pPage = pDoc?pDoc->GetSdPage(0, PK_STANDARD):NULL;
    1422             : 
    1423           0 :     if(pPage && ( aTopic.Len() != 0 || aName.Len() != 0 || aInfo.Len() != 0 ) )
    1424             :     {
    1425           0 :         if( pPage->GetAutoLayout() == AUTOLAYOUT_NONE )
    1426           0 :             pPage->SetAutoLayout(AUTOLAYOUT_TITLE, sal_True);
    1427             : 
    1428             :         SdrTextObj* pObj;
    1429           0 :         String aEmptyString;
    1430             : 
    1431           0 :         if( aTopic.Len() )
    1432             :         {
    1433           0 :             pObj  = dynamic_cast<SdrTextObj*>( pPage->GetPresObj( PRESOBJ_TITLE ) );
    1434           0 :             if( pObj )
    1435             :             {
    1436           0 :                 pPage->SetObjText( pObj, NULL, PRESOBJ_TITLE, aTopic );
    1437           0 :                 pObj->NbcSetStyleSheet( pPage->GetStyleSheetForPresObj( PRESOBJ_TITLE ), sal_True );
    1438           0 :                 pObj->SetEmptyPresObj(sal_False);
    1439             :             }
    1440             : 
    1441             :         }
    1442             : 
    1443           0 :         if ( aName.Len() || aInfo.Len() )
    1444             :         {
    1445           0 :             String aStrTmp( aName );
    1446           0 :             if( aName.Len() )
    1447           0 :                 aStrTmp.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "\n\n" ) );
    1448           0 :             aStrTmp.Append( aInfo );
    1449             : 
    1450           0 :             pObj = dynamic_cast<SdrTextObj*>( pPage->GetPresObj( PRESOBJ_OUTLINE ) );
    1451           0 :             if( pObj )
    1452             :             {
    1453           0 :                 pPage->SetObjText( pObj, NULL, PRESOBJ_OUTLINE, aStrTmp );
    1454           0 :                 pObj->NbcSetStyleSheet( pPage->GetStyleSheetForPresObj( PRESOBJ_OUTLINE ), sal_True );
    1455           0 :                 pObj->SetEmptyPresObj(sal_False);
    1456             :             }
    1457             :             else
    1458             :             {
    1459           0 :                 pObj = dynamic_cast<SdrTextObj*>( pPage->GetPresObj( PRESOBJ_TEXT ) );
    1460           0 :                 if( pObj )
    1461             :                 {
    1462           0 :                     pPage->SetObjText( pObj, NULL, PRESOBJ_TEXT, aStrTmp );
    1463           0 :                     pObj->NbcSetStyleSheet( pPage->GetStyleSheetForPresObj( PRESOBJ_TEXT ), sal_True );
    1464           0 :                     pObj->SetEmptyPresObj(sal_False);
    1465             :                 }
    1466           0 :             }
    1467           0 :         }
    1468             :     }
    1469             : 
    1470           0 :     mbUserDataDirty = sal_False;
    1471           0 : }
    1472             : 
    1473           0 : void AssistentDlgImpl::UpdatePageList()
    1474             : {
    1475           0 :     if(mbDocPreview || !mbPreview)
    1476           0 :         UpdatePreview(sal_False);
    1477           0 :     else if(maPageListFile == maDocFile)
    1478           0 :         return;
    1479             : 
    1480           0 :     maPageListFile = maDocFile;
    1481             : 
    1482           0 :     SfxObjectShell* pShell = xDocShell;
    1483           0 :     DrawDocShell* pDocShell = PTR_CAST(DrawDocShell,pShell);
    1484           0 :     SdDrawDocument* pDoc = pDocShell?pDocShell->GetDoc():NULL;
    1485             : 
    1486           0 :     mpPage5PageListCT->Clear();
    1487             : 
    1488           0 :     if(pDoc)
    1489           0 :         mpPage5PageListCT->Fill(pDoc);
    1490             : }
    1491             : 
    1492           0 : void AssistentDlgImpl::UpdatePreview( sal_Bool bDocPreview )
    1493             : {
    1494             :     // Guard against multiple concurrent execution to this method caused either
    1495             :     // by calls from different threads or recursion.
    1496           0 :     ::osl::MutexGuard aGuard (maMutex);
    1497           0 :     if (mbPreviewUpdating)
    1498             :         return;
    1499           0 :     mbPreviewUpdating = sal_True;
    1500             : 
    1501           0 :     if(!mbPreview && bDocPreview)
    1502             :     {
    1503           0 :         maPreview.Invalidate();
    1504           0 :         maPreview.SetObjectShell(0);
    1505           0 :         mbPreviewUpdating = sal_False;
    1506             :         return;
    1507             :     }
    1508             : 
    1509           0 :     String aDocFile = GetDocFileName();
    1510           0 :     String aLayoutFile = GetLayoutFileName();
    1511           0 :     String aEmptyStr;
    1512             : 
    1513           0 :     SfxApplication *pSfxApp = SFX_APP();
    1514             :     sal_uLong lErr;
    1515           0 :     sal_Bool bChangeMaster = aLayoutFile.Len() != 0;
    1516             : 
    1517           0 :     if( aDocFile.Len() == 0 )
    1518             :     {
    1519           0 :         if( !xDocShell.Is() || maDocFile.Len() != 0 ||
    1520           0 :             (maDocFile.Len() == 0 && maLayoutFile.Len() != 0 && aLayoutFile.Len() == 0 ))
    1521             :         {
    1522           0 :             CloseDocShell();
    1523             : 
    1524             :             DrawDocShell* pNewDocSh;
    1525           0 :             xDocShell = pNewDocSh = new DrawDocShell(SFX_CREATE_MODE_STANDARD, sal_False);
    1526           0 :             pNewDocSh->DoInitNew(NULL);
    1527           0 :             SdDrawDocument* pDoc = pNewDocSh->GetDoc();
    1528           0 :             pDoc->CreateFirstPages();
    1529           0 :             pDoc->StopWorkStartupDelay();
    1530           0 :             mbDocPreview = sal_False;
    1531             : 
    1532           0 :             maDocFile = aDocFile;
    1533           0 :             mbUserDataDirty = sal_True;
    1534             :         }
    1535             :         else
    1536           0 :             bChangeMaster = (aLayoutFile.Len() != 0) && (maLayoutFile != aLayoutFile);
    1537             :     }
    1538           0 :     else if( aDocFile == maDocFile && ( mbDocPreview == bDocPreview || bDocPreview ) )
    1539             :     {
    1540           0 :         if( aLayoutFile != maLayoutFile )
    1541             :         {
    1542           0 :             SfxObjectShell* pShell = xDocShell;
    1543           0 :             DrawDocShell* pDocShell = PTR_CAST(DrawDocShell,pShell);
    1544           0 :             ::svl::IUndoManager* pUndoMgr = pDocShell?pDocShell->GetUndoManager():NULL;
    1545           0 :             if(pUndoMgr)
    1546           0 :                 pUndoMgr->Undo();
    1547           0 :             mbUserDataDirty = sal_True;
    1548             :         }
    1549             :         else
    1550           0 :             bChangeMaster = sal_False;
    1551             :     }
    1552             :     else
    1553             :     {
    1554           0 :         CloseDocShell();
    1555             : 
    1556           0 :         ::Window *pParent = Application::GetDefDialogParent();
    1557           0 :         Application::SetDefDialogParent( mpWindow );
    1558             : 
    1559           0 :         SfxErrorContext eEC(ERRCTX_SFX_LOADTEMPLATE,mpWindow);
    1560             : 
    1561           0 :         SfxItemSet* pSet = new SfxAllItemSet( pSfxApp->GetPool() );
    1562           0 :         if(IsOwnFormat(aDocFile))
    1563             :         {
    1564           0 :             pSet->Put( SfxBoolItem( SID_TEMPLATE, sal_True ) );
    1565           0 :             if(bDocPreview)
    1566           0 :                 pSet->Put( SfxBoolItem( SID_PREVIEW, sal_True ) );
    1567           0 :             RestorePassword( pSet, aDocFile );
    1568           0 :             if( (lErr = pSfxApp->LoadTemplate( xDocShell, aDocFile, sal_True, pSet )) != 0 )
    1569           0 :                 ErrorHandler::HandleError(lErr);
    1570             :             else
    1571           0 :                 SavePassword( xDocShell, aDocFile );
    1572             :         }
    1573             :         else
    1574             :         {
    1575           0 :             SfxRequest aReq( SID_OPENDOC, SFX_CALLMODE_SYNCHRON, SFX_APP()->GetPool() );
    1576           0 :             aReq.AppendItem( SfxStringItem( SID_FILE_NAME, aDocFile ));
    1577           0 :             aReq.AppendItem( SfxStringItem( SID_REFERER, aEmptyStr ) );
    1578           0 :             aReq.AppendItem( SfxStringItem( SID_TARGETNAME, rtl::OUString("_default") ) );
    1579           0 :             aReq.AppendItem( SfxBoolItem( SID_HIDDEN, sal_True ) );
    1580           0 :             aReq.AppendItem( SfxBoolItem( SID_PREVIEW, bDocPreview ) );
    1581             : 
    1582           0 :             const SfxViewFrameItem* pRet = PTR_CAST( SfxViewFrameItem, SFX_APP()->ExecuteSlot( aReq ) );
    1583             : 
    1584           0 :             if ( pRet && pRet->GetFrame() && pRet->GetFrame()->GetObjectShell() )
    1585           0 :                 xDocShell = pRet->GetFrame()->GetObjectShell();
    1586             :         }
    1587             : 
    1588             : 
    1589           0 :         Application::SetDefDialogParent( pParent );
    1590             : 
    1591           0 :         mnShowPage = 0;
    1592           0 :         mbDocPreview = bDocPreview;
    1593           0 :         maDocFile = aDocFile;
    1594           0 :         mbUserDataDirty = sal_True;
    1595             :     }
    1596             : 
    1597           0 :     if(bChangeMaster && (aLayoutFile != maDocFile))
    1598             :     {
    1599             :         // Layoutvorlage laden
    1600           0 :         SfxObjectShellLock xLayoutDocShell;
    1601           0 :         SfxErrorContext eEC(ERRCTX_SFX_LOADTEMPLATE,mpWindow);
    1602           0 :         SfxItemSet* pSet = new SfxAllItemSet( pSfxApp->GetPool() );
    1603             : 
    1604           0 :         ::Window *pParent = Application::GetDefDialogParent();
    1605           0 :         Application::SetDefDialogParent( mpWindow );
    1606             : 
    1607           0 :         if(IsOwnFormat(aLayoutFile))
    1608             :         {
    1609           0 :             pSet->Put( SfxBoolItem( SID_TEMPLATE, sal_True ) );
    1610           0 :             pSet->Put( SfxBoolItem( SID_PREVIEW, sal_True ) );
    1611             : 
    1612           0 :             RestorePassword( pSet, aLayoutFile );
    1613           0 :             if( (lErr = pSfxApp->LoadTemplate( xLayoutDocShell, aLayoutFile, sal_True, pSet )) != 0 )
    1614           0 :                 ErrorHandler::HandleError(lErr);
    1615           0 :             SavePassword( xLayoutDocShell, aLayoutFile );
    1616             :         }
    1617             : 
    1618           0 :         Application::SetDefDialogParent( pParent );
    1619             : 
    1620             :         // die Implementierung ermitteln
    1621           0 :         SfxObjectShell* pShell = xDocShell;
    1622           0 :         DrawDocShell* pDocShell = PTR_CAST(DrawDocShell,pShell);
    1623           0 :         SdDrawDocument* pDoc = pDocShell?pDocShell->GetDoc():NULL;
    1624             : 
    1625           0 :         pShell = xLayoutDocShell;
    1626           0 :         pDocShell = PTR_CAST(DrawDocShell,pShell);
    1627           0 :         SdDrawDocument* pLayoutDoc = pDocShell?pDocShell->GetDoc():NULL;
    1628             : 
    1629           0 :         if( pDoc && pLayoutDoc )
    1630             :         {
    1631           0 :             pDoc->SetMasterPage(0, aEmptyStr, pLayoutDoc, sal_True,  sal_False );
    1632             :         }
    1633             :         else
    1634             :         {
    1635             :             OSL_FAIL("sd::AssistentDlgImpl::UpdatePreview(), no document for preview?");
    1636             :         }
    1637             : 
    1638           0 :         mbUserDataDirty = sal_True;
    1639             :     }
    1640           0 :     maLayoutFile = aLayoutFile;
    1641             : 
    1642           0 :     if(mbUserDataDirty)
    1643           0 :         UpdateUserData();
    1644             : 
    1645           0 :     if ( !xDocShell.Is() || !mbPreview )
    1646           0 :         maPreview.SetObjectShell( 0 );
    1647             :     else
    1648             :     {
    1649           0 :         maPreview.SetObjectShell( xDocShell, mnShowPage );
    1650             :     }
    1651             : 
    1652           0 :     mbPreviewUpdating = sal_False;
    1653             : }
    1654             : 
    1655           0 : void AssistentDlgImpl::SavePassword( SfxObjectShellLock xDoc, const String& rPath )
    1656             : {
    1657           0 :     if(xDoc.Is())
    1658             :     {
    1659           0 :         SfxMedium * pMedium = xDoc->GetMedium();
    1660           0 :         if(pMedium && pMedium->IsStorage())
    1661             :         {
    1662           0 :           SfxItemSet * pSet = pMedium->GetItemSet();
    1663           0 :           SFX_ITEMSET_ARG( pSet, pEncryptionDataItem, SfxUnoAnyItem, SID_ENCRYPTIONDATA, sal_False);
    1664           0 :           uno::Sequence < beans::NamedValue > aEncryptionData;
    1665           0 :           if (pEncryptionDataItem)
    1666           0 :               pEncryptionDataItem->GetValue() >>= aEncryptionData;
    1667             :           else
    1668           0 :               return;
    1669           0 :           if( aEncryptionData.getLength() )
    1670             :           {
    1671             : 
    1672           0 :             PasswordEntry* pEntry = NULL;
    1673           0 :             for ( size_t i = 0, n = maPasswordList.size(); i < n; ++i )
    1674             :             {
    1675           0 :                 if ( maPasswordList[ i ].maPath == rPath )
    1676             :                 {
    1677           0 :                     pEntry = &maPasswordList[ i ];
    1678           0 :                     break;
    1679             :                 }
    1680             :             }
    1681             : 
    1682           0 :             if(pEntry == NULL)
    1683             :             {
    1684           0 :                 pEntry = new PasswordEntry();
    1685           0 :                 pEntry->maPath = rPath;
    1686           0 :                 maPasswordList.push_back( pEntry );
    1687             :             }
    1688             : 
    1689           0 :             if(pEntry)
    1690           0 :                 pEntry->aEncryptionData = aEncryptionData;
    1691           0 :           }
    1692             :         }
    1693             :     }
    1694             : }
    1695             : 
    1696           0 : void AssistentDlgImpl::RestorePassword( SfxItemSet* pSet, const String& rPath )
    1697             : {
    1698           0 :     uno::Sequence < beans::NamedValue > aEncryptionData( GetPassword( rPath ) );
    1699             : 
    1700           0 :     if(aEncryptionData.getLength())
    1701           0 :         pSet->Put( SfxUnoAnyItem( SID_ENCRYPTIONDATA, uno::makeAny( aEncryptionData ) ) );
    1702           0 : }
    1703             : 
    1704           0 : uno::Sequence < beans::NamedValue > AssistentDlgImpl::GetPassword( const String rPath )
    1705             : {
    1706           0 :     for ( size_t i = 0, n = maPasswordList.size(); i < n; ++i )
    1707             :     {
    1708           0 :         PasswordEntry* pEntry = &maPasswordList[ i ];
    1709           0 :         if(pEntry->maPath == rPath)
    1710           0 :             return pEntry->aEncryptionData;
    1711             :     }
    1712           0 :     return uno::Sequence < beans::NamedValue > ();;
    1713             : }
    1714             : 
    1715           0 : void AssistentDlgImpl::DeletePasswords()
    1716             : {
    1717           0 :     maPasswordList.clear();
    1718           0 : }
    1719             : 
    1720           0 : sal_Bool AssistentDlgImpl::IsOwnFormat( const String& rPath )
    1721             : {
    1722           0 :     INetURLObject   aURL( rPath );
    1723           0 :     String          aExt( aURL.GetFileExtension() );
    1724             : 
    1725             :     DBG_ASSERT( aURL.GetProtocol() != INET_PROT_NOT_VALID, "invalid URL" );
    1726             : 
    1727           0 :     return !aExt.EqualsIgnoreCaseAscii( "ppt" );
    1728             : }
    1729             : 
    1730             : 
    1731             : 
    1732             : 
    1733           0 : String AssistentDlgImpl::GetUiTextForCommand (const ::rtl::OUString& sCommandURL)
    1734             : {
    1735           0 :     String sLabel;
    1736           0 :     Reference<container::XNameAccess> xUICommandLabels;
    1737             : 
    1738             :     try
    1739             :     {
    1740             :         do
    1741             :         {
    1742           0 :             if (sCommandURL.isEmpty())
    1743             :                 break;
    1744             : 
    1745             :             // Retrieve popup menu labels
    1746           0 :             Reference<uno::XComponentContext> xContext( ::comphelper::getProcessComponentContext() );
    1747           0 :             if ( ! xContext.is())
    1748             :                 break;
    1749             : 
    1750             :             Reference<container::XNameAccess> const xNameAccess(
    1751           0 :                     frame::UICommandDescription::create(xContext) );
    1752           0 :             Any a = xNameAccess->getByName(
    1753           0 :                 "com.sun.star.presentation.PresentationDocument");
    1754           0 :             a >>= xUICommandLabels;
    1755           0 :             if ( ! xUICommandLabels.is())
    1756             :                 break;
    1757             : 
    1758           0 :             ::rtl::OUString sString;
    1759           0 :             Sequence<beans::PropertyValue> aProperties;
    1760           0 :             Any aAny (xUICommandLabels->getByName(sCommandURL));
    1761           0 :             if (aAny >>= aProperties)
    1762             :             {
    1763           0 :                 sal_Int32 nCount (aProperties.getLength());
    1764           0 :                 for (sal_Int32 i=0; i<nCount; i++)
    1765             :                 {
    1766           0 :                     ::rtl::OUString sPropertyName (aProperties[i].Name);
    1767           0 :                     if ( sPropertyName == "Label" )
    1768             :                     {
    1769           0 :                         aProperties[i].Value >>= sString;
    1770             :                         break;
    1771             :                     }
    1772           0 :                 }
    1773             :             }
    1774           0 :             sLabel = sString;
    1775             :         }
    1776             :         while(false);
    1777             :     }
    1778           0 :     catch (com::sun::star::uno::Exception& )
    1779             :     {
    1780             :     }
    1781             : 
    1782           0 :     return sLabel;
    1783             : }
    1784             : 
    1785             : 
    1786             : 
    1787             : 
    1788           0 : Image AssistentDlgImpl::GetUiIconForCommand (const ::rtl::OUString& sCommandURL)
    1789             : {
    1790           0 :     Image aIcon;
    1791           0 :     Reference<container::XNameAccess> xUICommandLabels;
    1792             : 
    1793             :     try
    1794             :     {
    1795             :         do
    1796             :         {
    1797           0 :             if (sCommandURL.isEmpty())
    1798             :                 break;
    1799             : 
    1800             :             // Retrieve popup menu labels
    1801           0 :             Reference<uno::XComponentContext> xContext ( ::comphelper::getProcessComponentContext() );
    1802           0 :             if ( ! xContext.is())
    1803             :                 break;
    1804             : 
    1805             :             Reference<ui::XModuleUIConfigurationManagerSupplier> xSupplier (
    1806           0 :                 ui::ModuleUIConfigurationManagerSupplier::create(xContext));
    1807             : 
    1808             :             Reference<com::sun::star::ui::XUIConfigurationManager> xManager (
    1809           0 :                 xSupplier->getUIConfigurationManager(
    1810           0 :                     "com.sun.star.presentation.PresentationDocument"));
    1811           0 :             if ( ! xManager.is())
    1812             :                 break;
    1813             : 
    1814             :             Reference<com::sun::star::ui::XImageManager> xImageManager (
    1815           0 :                 xManager->getImageManager(),
    1816           0 :                 UNO_QUERY_THROW);
    1817             : 
    1818           0 :             Sequence<rtl::OUString> aCommandList(1);
    1819           0 :             aCommandList[0] = sCommandURL;
    1820             :             Sequence<Reference<graphic::XGraphic> > xIconList (
    1821           0 :                 xImageManager->getImages(0,aCommandList));
    1822           0 :             if ( ! xIconList.hasElements())
    1823             :                 break;
    1824             : 
    1825           0 :             aIcon = Graphic(xIconList[0]).GetBitmapEx();
    1826             :         }
    1827             :         while(false);
    1828             :     }
    1829           0 :     catch (com::sun::star::uno::Exception& )
    1830             :     {
    1831             :     }
    1832             : 
    1833           0 :     return aIcon;
    1834             : }
    1835             : 
    1836             : 
    1837             : //////////////////////////////////////////////
    1838             : 
    1839           0 : AssistentDlg::AssistentDlg(Window* pParent, sal_Bool bAutoPilot) :
    1840           0 :     ModalDialog(pParent,SdResId(DLG_ASS))
    1841             : {
    1842           0 :     Link aFinishLink = LINK(this,AssistentDlg, FinishHdl);
    1843           0 :     mpImpl = new AssistentDlgImpl( this, aFinishLink, bAutoPilot );
    1844             : 
    1845             :     //Buttonbelegung
    1846           0 :     mpImpl->maFinishButton.SetClickHdl(LINK(this,AssistentDlg,FinishHdl));
    1847             : 
    1848           0 :     FreeResource();
    1849           0 : }
    1850             : 
    1851           0 : IMPL_LINK_NOARG(AssistentDlg, FinishHdl)
    1852             : {
    1853           0 :     if( GetStartType() == ST_OPEN )
    1854             :     {
    1855             :         //if we do not have a file here asked for one before ending the dialog
    1856           0 :         String aFileToOpen = GetDocPath();
    1857           0 :         if(aFileToOpen.Len() == 0)
    1858             :         {
    1859             :             sfx2::FileDialogHelper aFileDlg(
    1860             :                 ui::dialogs::TemplateDescription::FILEOPEN_READONLY_VERSION, 0,
    1861           0 :                 rtl::OUString("simpress") );
    1862             : 
    1863           0 :             if ( aFileDlg.Execute() == ERRCODE_NONE )
    1864           0 :                 aFileToOpen = aFileDlg.GetPath();
    1865           0 :             if( aFileToOpen.Len() == 0)
    1866           0 :                 return 1;
    1867             :             else
    1868             :             {
    1869             :                 //add the selected file to the recent-file-listbox and select the new entry
    1870             :                 //this is necessary for 'GetDocPath()' returning the selected file after end of dialog
    1871             : 
    1872           0 :                 INetURLObject aURL;
    1873           0 :                 aURL.SetSmartURL(aFileToOpen);
    1874           0 :                 mpImpl->maOpenFilesList.push_back (new String (aURL.GetMainURL( INetURLObject::NO_DECODE )));
    1875           0 :                 sal_uInt16 nNewPos = mpImpl->mpPage1OpenLB->InsertEntry(aURL.getName());
    1876           0 :                 mpImpl->mpPage1OpenLB->SelectEntryPos(nNewPos);
    1877           0 :             }
    1878           0 :         }
    1879             :     }
    1880             : 
    1881             :     //Ende
    1882           0 :     mpImpl->EndDialog(RET_OK);
    1883           0 :     EndDialog(RET_OK);
    1884           0 :     return 0;
    1885             : }
    1886             : 
    1887           0 : AssistentDlg::~AssistentDlg()
    1888             : {
    1889           0 :     delete mpImpl;
    1890           0 : }
    1891             : 
    1892             : 
    1893           0 : SfxObjectShellLock AssistentDlg::GetDocument()
    1894             : {
    1895           0 :     return mpImpl->GetDocument();
    1896             : }
    1897             : 
    1898           0 : OutputType AssistentDlg::GetOutputMedium() const
    1899             : {
    1900           0 :     if(mpImpl->mpPage2Medium1RB->IsChecked())
    1901           0 :         return OUTPUT_PRESENTATION;
    1902           0 :     else if(mpImpl->mpPage2Medium2RB->IsChecked())
    1903           0 :         return OUTPUT_SLIDE;
    1904           0 :     else if(mpImpl->mpPage2Medium3RB->IsChecked())
    1905           0 :         return OUTPUT_OVERHEAD;
    1906           0 :     else if(mpImpl->mpPage2Medium4RB->IsChecked())
    1907           0 :         return OUTPUT_PAGE;
    1908           0 :     else if(mpImpl->mpPage2Medium6RB->IsChecked())
    1909           0 :         return OUTPUT_WIDESCREEN;
    1910             :     else
    1911           0 :         return OUTPUT_ORIGINAL;
    1912             : }
    1913             : 
    1914           0 : sal_Bool AssistentDlg::IsSummary() const
    1915             : {
    1916           0 :     return mpImpl->mpPage5SummaryCB->IsChecked();
    1917             : }
    1918             : 
    1919           0 : StartType AssistentDlg::GetStartType() const
    1920             : {
    1921           0 :     return mpImpl->GetStartType();
    1922             : }
    1923             : 
    1924           0 : String AssistentDlg::GetDocPath() const
    1925             : {
    1926           0 :     return mpImpl->GetDocFileName();
    1927             : }
    1928             : 
    1929           0 : sal_Bool AssistentDlg::GetStartWithFlag() const
    1930             : {
    1931           0 :     return !mpImpl->maStartWithFlag.IsChecked();
    1932             : }
    1933             : 
    1934           0 : sal_Bool AssistentDlg::IsDocEmpty() const
    1935             : {
    1936           0 :     return mpImpl->GetDocFileName().Len() == 0 &&
    1937           0 :            mpImpl->GetLayoutFileName().Len() == 0;
    1938             : }
    1939             : 
    1940           0 : uno::Sequence< beans::NamedValue > AssistentDlg::GetPassword()
    1941             : {
    1942           0 :     return mpImpl->GetPassword( mpImpl->maDocFile );
    1943             : }
    1944             : 
    1945             : 
    1946             : 
    1947             : 
    1948             : //===== NextButton ============================================================
    1949             : 
    1950           0 : NextButton::NextButton (::Window* pParent, const ResId& rResId)
    1951             :     : maNextButton1(pParent, rResId),
    1952             :       maNextButton2(pParent, rResId),
    1953           0 :       mbIsFirstButtonActive(true)
    1954             : {
    1955             :     // Hide the unused button.
    1956           0 :     maNextButton2.Hide();
    1957           0 : }
    1958             : 
    1959             : 
    1960             : 
    1961             : 
    1962           0 : void NextButton::ForceFocusEventBroadcast (void)
    1963             : {
    1964             :     // Hide the currently visible button and show and focus the other one.
    1965           0 :     if (mbIsFirstButtonActive)
    1966             :     {
    1967           0 :         mbIsFirstButtonActive = false;
    1968           0 :         maNextButton2.Show();
    1969           0 :         maNextButton2.GrabFocus();
    1970           0 :         maNextButton1.Hide();
    1971             :     }
    1972             :     else
    1973             :     {
    1974           0 :         mbIsFirstButtonActive = true;
    1975           0 :         maNextButton1.Show();
    1976           0 :         maNextButton1.GrabFocus();
    1977           0 :         maNextButton2.Hide();
    1978             :     }
    1979           0 : }
    1980             : 
    1981             : 
    1982             : 
    1983             : 
    1984           0 : void NextButton::SetClickHdl (const Link& rLink)
    1985             : {
    1986             :     // Forward the setting of the click handler to the two buttons
    1987             :     // regardless of which one is currently visible.
    1988           0 :     maNextButton1.SetClickHdl(rLink);
    1989           0 :     maNextButton2.SetClickHdl(rLink);
    1990           0 : }
    1991             : 
    1992             : 
    1993             : 
    1994             : 
    1995           0 : bool NextButton::IsEnabled (void)
    1996             : {
    1997             :     // Because the buttons are both either enabled or disabled, it is
    1998             :     // sufficient to ask one to determine the state.
    1999           0 :     return maNextButton1.IsEnabled();
    2000             : }
    2001             : 
    2002             : 
    2003             : 
    2004             : 
    2005           0 : void NextButton::Enable (bool bEnable)
    2006             : {
    2007             :     // Enable or disable both buttons but do not change visibility or focus.
    2008           0 :     maNextButton1.Enable(bEnable);
    2009           0 :     maNextButton2.Enable(bEnable);
    2010           0 : }
    2011             : 
    2012             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10