jl165 merging heads
[LibreOffice.git] / testautomation / framework / required / includes / wizard_mailmerge.inc
blob3e631335c7b60f7c3dacd776ba27f4ee7f770b24
1 'encoding UTF-8  Do not remove or change this line!
2 '**************************************************************************
3 ' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 ' Copyright 2000, 2010 Oracle and/or its affiliates.
7 ' OpenOffice.org - a multi-platform office productivity suite
9 ' This file is part of OpenOffice.org.
11 ' OpenOffice.org is free software: you can redistribute it and/or modify
12 ' it under the terms of the GNU Lesser General Public License version 3
13 ' only, as published by the Free Software Foundation.
15 ' OpenOffice.org is distributed in the hope that it will be useful,
16 ' but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 ' GNU Lesser General Public License version 3 for more details
19 ' (a copy is included in the LICENSE file that accompanied this code).
21 ' You should have received a copy of the GNU Lesser General Public License
22 ' version 3 along with OpenOffice.org.  If not, see
23 ' <http://www.openoffice.org/license.html>
24 ' for a copy of the LGPLv3 License.
26 '/************************************************************************
28 '*  owner : gregor.hartmann@oracle.com
30 '*  short description : Update test for the mailmerge wizard
32 '\******************************************************************************
34 private CSV_DATABASE as string
36 testcase tUpdtWizardMailMerge
38     printlog( "Resource test for the mailmerge wizard" )
40     dim brc as boolean
41     dim irc as integer
42     
43     qaerrorlog( "#i54524# - MM-Wizard modifies datasource -> CVS merge conflict" )
44     
45     CSV_DATABASE = hGetWorkPath() & "myDatabase"
46     hDeleteFile( CSV_DATABASE )
47     hRemoveDatabaseConnections()
49     
50     hInitSingleDoc()
51     
52     printlog( "Open the Mailmerge-Wizard" )
53     ToolsMailMergeWizard
54     
55     Kontext "MailMergeWizard"
56     brc = hUpdtMMWpage1()
57     if ( not brc ) then
58         warnlog( "MailMergeWizard is not visible, aborting test" )
59         goto endsub
60     endif
61     
62     Kontext "MailMergeWizard"
63     hClickButton( NextButton )
64     hUpdtMMWPage2()
65     
66     Kontext "MailMergeWizard"
67     hClickButton( NextButton )
68     hUpdtMMWpage3()
69     
70     Kontext "MailMergeWizard"
71     hClickButton( NextButton )
72     hUpdtMMWPage4()
73     
74     Kontext "MailMergeWizard"
75     hClickButton( NextButton )
76     hUpdtMMWPage5()
78     Kontext "MailMergeWizard"
79     hClickButton( NextButton )
80     hUpdtMMWPage6()
81     
82     Kontext "MailMergeWizard"
83     hClickButton( NextButton )
84     hUpdtMMWPage7()
85     
86     Kontext "MailMergeWizard"
87     hClickNextButton()
88     hUpdtMMWPage8()
89     
90     printlog( "close the wizard" )
91     Kontext "MailMergeWizard"
92     hCloseDialog( MailMergeWizard, "cancel" )
94     hRemoveDatabaseConnections()
95     hCloseDocument()
96     hCloseDocument()
97     
99 endcase
101 '**********************************************************************
103 function hUpdtMMWpage1() as boolean
105     
107     const CFN = "hUpdtMMWpage1::"
108     
109     Kontext "TabMailMergeSourceDocument"
110     if ( not TabMailMergeSourceDocument.exists() ) then
111         warnlog( CFN & "Page 1 could not be accessed" )
112         hUpdtMMWPage1() = false
113         exit function
114     endif
116     Kontext "TabMailMergeSourceDocument"
117     if ( BrowseDocument.exists( 1 ) ) then
118         if ( BrowseDocument.isEnabled ) then
119             BrowseDocument.click()
120             
121             Kontext "OeffnenDlg"
122             if ( OeffnenDlg.exists( 1 ) ) then
123                 printlog( CFN & "BrowseDocument::File Open Dialog" )
124                 call dialogtest( OeffnenDlg )
125                 OeffnenDlg.cancel()
126             else
127                 warnlog( CFN & "BrowseDocument::FileOpen not open" )
128             endif
129         else
130             warnlog( CFN & "BrowseDocument::Button is disabled" )
131        endif
132     else
133         warnlog( CFN & "BrowseDocument::Button does not exist" )
134     endif
135     
136     Kontext "TabMailMergeSourceDocument"
137     if ( BrowseTemplate.exists( 2 ) ) then
138         if ( BrowseTemplate.isEnabled ) then
139             BrowseTemplate.click()
140             
141             Kontext "Neu"
142             if ( Neu.exists( 1 ) ) then
143                 printlog( CFN & "BrowseTemplate::New Dialog" )
144                 call dialogtest( Neu )
145                 Neu.cancel()
146             else
147                 warnlog( CFN & "BrowseTemplate::FileOpen not open" )
148             endif
149         else
150             warnlog( CFN & "BrowseTemplate::Button is disabled" )
151         endif
152     else
153         warnlog( CFN & "BrowseTemplate::Button does not exist" )
154     endif
155         
156     kontext "TabMailMergeSourceDocument"
157     if ( CreateANewDocument.exists( 2 ) ) then
158         if ( CreateANewDocument.isEnabled ) then
159             printlog( CFN & "Check Create new Document" )
160             CreateANewDocument.check()
161         else
162             warnlog( CFN & "CheckBbox is disabled" )
163         endif
164     else
165         warnlog( CFN & "CheckBox does not exist" )
166     endif
168     hUpdtMMWPage1() = true
170 end function
172 '**********************************************************************
174 function hUpdtMMWpage2()
177     const CFN = "hUpdtMMWpage2::"
179     Kontext "TabMailMergeDocumentType"
180     if ( not TabMailMergeDocumentType.exists( 2 ) ) then
181         warnlog( CFN & "Page 2 could not be accessed" )
182         exit function
183     endif
184     
185     call dialogtest( TabMailMergeDocumentType )
186     
187     printlog( CFN & "Select to create a letter" )
188     if ( Letter.exists() ) then
189         if ( Letter.isEnabled() ) then
190             Letter.check()
191         else
192             warnlog( CFN & "Cannot check Letter-Checkbox" )
193         endif
194     else
195         warnlog( CFN & "Letter Checkbox does not exist" )
196     endif
197     
198 end function   
200 '*******************************************************************************
202 function hUpdtMMWpage3()
205     const CFN = "hUpdtMMWpage3::"
206     
207     dim cDatabase as string
208         cDatabase = gTesttoolpath & "framework\required\input\mailmerge_data.odb"
209         cDatabase = convertpath( cDatabase )
210     
211     Kontext "TabMailMergeAddressBlock"
212     if ( not TabMailMergeAddressBlock.exists( 2 ) ) then
213         warnlog( CFN & "Page 3 could not be accessed" )
214         exit function
215     endif
216     
217     call Dialogtest( TabMailMergeAddressBlock )
218     
219     Kontext "TabMailMergeAddressBlock"
220     hSelectDifferentAddressList( cDatabase )
221     
222     Kontext "TabMailMergeAddressBlock"
223     if ( AddressBlock.exists( 2 ) ) then
225         
226         if( not AddressBlock.isChecked() ) then
227             warnlog( CFN & "AddressBlock Checkbox not checked" )
228             AddressBlock.check()
229         endif
231         hSelectAddressBlock()
232     
233         hUpdtMailmergeMatchFields()
234     else
235         warnlog( CFN & "AddressBlock-Checkbox missing, skipping dialogs" )
236     endif
237     
238     
239 end function
241 '*******************************************************************************
243 function hUpdtMMWpage4()
246     const CFN = "hUpdtMMWpage4::"
247     dim brc as boolean
248    
249     brc = false
251     Kontext "TabMailMergeGreetingsPage"
252     if ( not TabMailMergeGreetingsPage.exists( 2 ) ) then
253         warnlog( CFN & "Page 4 could not be accessed" )
254         exit function
255     endif
256     
257     call dialogtest( TabMailMergeGreetingsPage )
258     
259     ' the salutation checkbox must be checked, otherwise the buttons are not 
260     ' available
261     if ( not GreetingPersonalized.isEnabled() ) then
262         warnlog( CFN & "CheckBox Salutation not in HID.LST, it should be checked" )
263         exit function
264     endif
265     
266     Kontext "TabMailMergeGreetingsPage"
267     printlog( CFN & "GreetingButtonFemale" )
268     if ( GreetingButtonFemale.isEnabled() ) then
269         hNewEditAddressBlock( 3 )
270     else
271         warnlog( CFN & "GreetingButtonFemale is not enabled" )
272     endif
274     Kontext "TabMailMergeGreetingsPage"
275     printlog( CFN & "GreetingButtonMale" )
276     if ( GreetingButtonMale.isEnabled() ) then
277         hNewEditAddressBlock( 4 )
278     else
279         warnlog( CFN & "GreetingButtonMale is not enabled" )
280     endif
282     Kontext "TabMailMergeGreetingsPage"
284 end function
287 '**************************************************************************
289 function hUpdtMMWpage5()
292     const CFN = "hUpdtMMWpage5::"
293     
294     kontext "TabMailMergeLayoutPage"
295     if ( not TabMailMergeLayoutPage.exists( 2 ) ) then
296         warnlog( CFN & "Page 5 could not be accessed" )
297         exit function
298     endif
299     
300     call DialogTest( TabMailMergeLayoutPage )
301     
302     printlog( CFN )
303     
304 end function
306 '**************************************************************************
308 function hUpdtMMWpage6()
311     const CFN = "hUpdtMMWpage6::"
312     
313     printlog( CFN )
314     
315     kontext "TabMailMergePrepare"
316     if ( not TabMailMergePrepare.exists( 2 ) ) then
317         warnlog( CFN & "Page 6 could not be accessed" )
318         exit function
319     endif
320     
321     call DialogTest( TabMailMergePrepare )
322     
323     qaerrorlog( "Skipping preview button" )
324     
325 end function
327 '**************************************************************************
329 function hUpdtMMWpage7()
331     
332     const CFN = "hUpdtMMWpage7::"
333     
334     printlog( CFN )    
335     
336     kontext "TabMailMergePersonalize"
337     hWaitForObject( EditIndividualButton, 8000 )
338     'if ( not TabMailMergePersonalize.exists( 2 ) ) then
339     '    warnlog( CFN & "Page 7 could not be accessed" )
340     '    exit function
341     'endif
342     
343     call DialogTest( TabMailMergePersonalize )
344     
345     qaerrorlog( "Skipping Preview-Button" )
346     
347 end function
349 '**************************************************************************
351 function hUpdtMMWpage8()
354     const CFN = "hUpdtMMWpage8::"
355     
356     kontext "TabMailMergeOutputPage"
357     if ( not TabMailMergeOutputPage.exists( 2 ) ) then
358         warnlog( CFN & "Page 8 could not be accessed" )
359         exit function
360     endif
361     
362     printlog( CFN )
363     
364     call DialogTest( TabMailMergeOutputPage )
365     
366     kontext "TabMailMergeOutputPage"
367     hSaveStartingDocument()
368     
369     kontext "TabMailMergeOutputPage"
370     hSaveMailMergeDocument()
371     
372     kontext "TabMailMergeOutputPage"
373     hPrintMailMergeDocument()
374     
375     kontext "TabMailMergeOutputPage"
376     hSendMailMergeDocument()
377     
378 end function
380 '*******************************************************************************
382 function hSelectDifferentAddressList( cDatabase as string ) as boolean
385     const CFN = "hSelectDifferentAddressList::"
386     
387     dim brc as boolean
388         
389     dim iAddressList as integer
390     dim cAddressList as string
391         
392     Kontext "TabMailMergeAddressBlock"
393     SelectAddressListButton.click()
395     Kontext "SelectAddressList"
396     if ( SelectAddressList.exists( 2 ) ) then
397         printlog( CFN & "Select Address List Dialog" )
398         call dialogtest( SelectAddressList )
399     else
400         warnlog( CFN & "SelectAddressList dialog is not open" )
401         hSelectDifferentAddressList() = false
402         exit function
403     endif
404             
405     Kontext "SelectAddressList"
406     brc = hAddDatabase( cDatabase ) 
408     
409     Kontext "SelectAddressList"
410     if ( SelectAddressList.exists( 2 ) ) then
411         if ( AddressList.getItemCount() < 2 ) then
412             brc = hAddDatabase( cDatabase )
413         endif
414         
415         Kontext "SelectAddressList"
416         brc = hEditCreateAddressList( 1 )
417         
418         Kontext "SelectAddressList" 
419         brc = hFilterDialog()
421         Kontext "SelectAddressList"
422         brc = hEditCreateAddressList( 2 )
423         
424         Kontext "SelectAddressList"
425         for iAddressList = 1 to AddressList.getItemCount()
426         
427             AddressList.select( iAddressList )
428             cAddressList = AddressList.getText()
429             printlog( CFN & "Current address list: " & cAddressList )
430             
431             try
432                 SelectAddressList.ok()
433                 brc = true
434                 exit for
435             catch
436                 qaerrorlog( CFN & "Ok-Button disabled for <" & cAddressList & ">" )
437                 brc = false
438             endcatch
439             
440         next iAddressList
441         
442         if ( not brc ) then
443             warnlog( "#i84250# OK button not enabled for any address list." )
444         endif        
445     else
446         warnlog( CFN & "Select Address List dialog is not open" )
447         brc = false
448     endif
449     
451     
452     Kontext "TabMailMergeAddressBlock"
453     hSelectDifferentAddressList() = brc
455 end function
457 '*******************************************************************************
459 function hWaitForBackToWizardFloat() as boolean
462     const CFN = "hWaitForBackToWizardFloat::"
463     dim brc as boolean
464     
465     printlog( CFN & "Enter" )
466            
467     Kontext "MailMergeFloat"
468     if ( MailMergeFloat.exists( 20 ) ) then
469         printlog( CFN & "Back to document float is open" )
470         ReturnToMailMergeWizard.click()
471         
472         Kontext "MailMergeWizard"
473         if ( MailMergeWizard.exists( 5 ) ) then
474             printlog( CFN & "Successfully returned to Mail Merge Wizard" )
475             brc = true
476         else
477             warnlog( CFN & "Could not return to Mail Merge Wizard" )
478             brc = false
479         endif
480     else
481         warnlog( CFN & "Unable to access Mail Merge Float" )
482         brc = false
483     endif
484     
485     printlog( CFN & "Exit with result = " & brc )
486     hWaitForBackToWizardFloat() = brc
487         
488 end function
490 '*******************************************************************************
492 function hAddDatabase( cDatabase as string ) as boolean
494     
495     const CFN = "hAddDatabase::"
496     
497     dim brc as boolean
498         brc = false
499         
500     dim iWait as integer
501     
502     add.click()
504     Kontext "OeffnenDlg"
505     if ( OeffnenDlg.exists( 2 ) ) then
506         printlog( CFN & "File Open Dialog" )
507         DateiName.setText( cDatabase )
508         Oeffnen.click()
509         brc = true
510     else
511         warnlog( CFN & "FileOpen is missing" )
512     endif
513         
514     ' When a new addressdatabase is imported it might take some time before we
515     ' get back to the SelectAddressList dialog
516     hWaitForSelectAddressListDialog()
517     
518     hAddDatabase() = brc
519     
520 end function
522 '******************************************************************************
524 function hEditCreateAddressList( iMode as integer ) as boolean
526     const CFN = "hEditCreateAddressList::"
528     dim brc as boolean
529         brc = false
530         
531     dim iWait as integer
532         
533     Kontext "SelectAddressList"
534     select case iMode
535     case 1 : create.click()
536     case 2 : edit.click()
537     end select
539     Kontext "NewAddressList"
540     if ( NewAddressList.exists( 2 ) ) then
541         printlog( CFN & "New/Edit Address List Dialog is open" )
542         call dialogtest( NewAddressList )
543         brc = true
544     else
545         warnlog( CFN & "New/EditAddressList does not exist" )
546     endif
548     if ( not brc ) then
549         hEditCreateAddressList() = brc
550         exit function
551     endif
552         
554     ' Try to use the Find-dialog, do not evaluate the returncode,
555     ' the test should continue even if the dialog does not come up.
556     brc = hFindDialog()
557     
558     ' Try to use the Customize-dialog, don't evaluate the rc either
559     brc = hCustomizeAddressList()
560     
561     ' Return to "NewAddressList" 
562     Kontext "NewAddressList"
563     NewAddressList.ok()
564     
565     ' only save when a new list has been created, editing saves automatically
566     if ( iMode = 1 ) then
567         hSaveNewAddressList()
568     endif
569     
570     hWaitForSelectAddressListDialog()
571     
572     Kontext "SelectAddressList"
573     hEditCreateAddressList() = brc
574         
575 end function
577 '*******************************************************************************
579 function hFindDialog() as boolean
582     const CFN = "hFindDialog::"
584     dim brc as boolean
585         brc = false
586         
587     printlog( CFN )
589     Kontext "NewAddressList"
590     find.click()
592     kontext "FindEntry"
593     if ( FindEntry.exists( 2 ) ) then
594         call dialogtest( FindEntry )
595         printlog( CFN & "Find Entry Dialog is open" )
596         FindEntry.cancel()
597         brc = true
598     else
599         warnlog( CFN & "Dialog is not open" )
600     endif
601         
602     Kontext "NewAddressList"
603     hFindDialog() = brc
604         
605 end function
607 '******************************************************************************
609 function hCustomizeAddressList() as boolean
613     const CFN = "hCustomizeAddressList::"
615     dim brc as boolean
616         brc = false
617         
618     printlog( CFN )
620     Kontext "NewAddressList"
621     if ( Customize.exists( 2 ) ) then
622         if ( Customize.isEnabled() ) then
623             Customize.click()
625             kontext "CustomizeAddressList"
626             if ( CustomizeAddressList.exists( 2 ) ) then
627                 printlog( CFN & "Customize Address List Dialog" )
628                 call dialogtest( CustomizeAddressList )
629                 
630                 kontext "CustomizeAddressList"
631                 hAddRenameElement( "NewElement" , 1 ) 
632                 
633                 kontext "CustomizeAddressList"
634                 hAddRenameElement( "Renamed" , 2 )
635                 
636                 kontext "CustomizeAddressList"
637                 printlog( CFN & "Delete" )
638                 delete.click()
639                 
640                 kontext "CustomizeAddressList"
641                 CustomizeAddressList.cancel()
642                 brc = true
643             else
644                 warnlog( CFN & "Dialog is not open" )
645             endif
646         else
647             warnlog( CFN & "Button is not enabled" )
648         endif
649     else
650         warnlog( CFN & "Button does not exist" )
651     endif
652         
653     Kontext "NewAddressList"
654     hCustomizeAddressList() = brc
655         
656 end function
658 '************************************************************************************
660 function hAddRenameElement( cElementName as string , iMode as integer ) as boolean
662     const CFN = "hAddRenameElement::"
663     dim brc as boolean
664         brc = false
666     select case iMode
667     case 1 : Add.click()
668     case 2 : Rename.click()
669     end select
670     
671     Kontext "RenameElement"
672     if ( RenameElement.exists( 2 ) ) then
673         printlog( CFN & "Add/Rename Element Dialog" )
674         call Dialogtest( RenameElement )
675         
676         FieldTitle.setText( cElementName )
677         RenameElement.ok()
678         brc = true
679     else
680         warnlog( CFN & "Dialog is not open" )
681     endif
682         
683     hAddRenameElement() = brc
684         
685 end function
687 '*******************************************************************************
689 function hFilterDialog() as integer
692     const CFN = "hFilterDialog::"
693     
694     dim brc as boolean
695         brc = false
696         
697     Kontext "SelectAddressList"
698     if ( Filter.exists( 2 ) ) then
699         if ( Filter.isEnabled() ) then
700             Filter.click()
701             
702             kontext "FilterDialog"
703             if ( FilterDialog.exists( 2 ) ) then
704                 printlog( CFN & "Filter Dialog" )
705                 call Dialogtest( FilterDialog )
706                 
707                 FilterDialog.cancel()
708                 brc = true
709             else
710                 warnlog( "#i54150 " & CFN & "Filter dialog is not open" )
711             endif
712         else
713             warnlog( CFN & "Filter Button is not enabled" )
714         endif
715     else
716         warnlog( CFN & "Filter Button is missing" )
717     endif
718     
719     hWaitForSelectAddressListDialog()
720     hFilterDialog() = brc
721   
722 end function
724 '****************************************************************************
726 function hSelectAddressBlock() as boolean
728     const CFN = "hSelectAddressBlock::"
729     
730     dim brc as boolean
731         brc = false
732         
733     printlog( CFN  & "More..." )
734         
735     Kontext "TabMailMergeAddressBlock"
736     if ( more.exists( 2 ) ) then
737     
738         ' A dynamic delay (function borrowed from toolbar_tools.inc)
739         hWaitForObject( more , 3000 )
740         
741         if ( more.isEnabled() ) then
742             more.click()
743             
744             Kontext "SelectAddressBlock"
745             if ( SelectAddressBlock.exists( 2 ) ) then
746                 printlog( CFN & "SelectAddressBlock dialog is open" )
747                 call DialogTest( SelectAddressBlock )
748                 
749                 Kontext "SelectAddressBlock"
750                 hNewEditAddressBlock( 1 )
751                 
752                 Kontext "SelectAddressBlock"
753                 hNewEditAddressBlock( 2 )
754                 
755                 Kontext "SelectAddressBlock"
756                 SelectAddressBlock.ok()
757                 brc = true
758             else
759                 warnlog( CFN & "Dialog is not open" )
760             endif        
761         else
762             warnlog( CFN & "Button is disabled" )
763         endif
764     else
765         warnlog( CFN & "Button does not exist" )
766     endif
767         
768     hSelectAddressBlock() = brc
769     
770 end function
772 '*******************************************************************************
774 function hNewEditAddressBlock( iMode as integer ) as boolean
776     const CFN = "hNewEditAddressBlock::"
778     select case iMode
779     case 1 : NewBtn.click()
780     case 2 : Customize.click()
781     case 3 : GreetingButtonFemale.click()
782     case 4 : GreetingButtonMale.click()
783     end select
784     
785     Kontext "NewAddressBlock"
786     if ( NewAddressBlock.exists( 2 ) ) then
787         printlog( cfn & "Dialog is open" )
788         NewAddressBlock.cancel()
789         hNewEditAddressBlock() = true
790     else
791         warnlog( cfn & "Dialog is not open" )
792         hNewEditAddressBlock() = false
793     endif
794         
795 end function
797 '*******************************************************************************
799 function hSaveStartingDocument() as boolean
801     const CFN = "hSaveStartingDocument::"
802     
803     dim brc as boolean
804         brc = false
806     if ( RBSaveStartDoc.exists( 2 ) ) then
807          if ( RBSaveStartDoc.isEnabled ) then
808              RBSaveStartDoc.check()
809              brc = true
810          else
811              warnlog( CFN & "Cannot set radiobutton" )
812          endif
813     else
814         warnlog( CFN & "Radiobutton is missing" )
815     endif
816     
817     ' save file
818     if ( PBSaveStartDoc.exists( 2 ) ) then
819         if ( PBSaveStartDoc.isEnabled ) then
820             PBSaveStartDoc.click()
821              
822             Kontext "SpeichernDlg"
823             if ( SpeichernDlg.exists( 2 ) ) then
824                 printlog( CFN & "Save As Dialog is open" )
825                 SpeichernDlg.cancel()
826                 brc = true
827             else
828                 warnlog( CFN & "FileSave dialog is missing" )
829             endif
830         else
831             warnlog( CFN & "SaveStartDoc is disabled" )
832         endif
833     else
834         warnlog( CFN & "SaveStartDoc is missing" )
835     endif            
836     
837     hSaveStartingDocument() = brc
838     
839 end function
841 '******************************************************************************* 
843 function hSaveMailMergeDocument() as boolean
845     const CFN = "hSaveMailMergeDocument::"
846     
847     dim brc as boolean
848         brc = false
850     if ( RBSaveMergedDoc.exists( 2 ) ) then
851          if ( RBSaveMergedDoc.isEnabled() ) then
852              RBSaveMergedDoc.check()
853              brc = true
854          else
855              warnlog( CFN & "Cannot set radiobutton" )
856          endif
857     else
858         warnlog( CFN & "Radiobutton is missing" )
859     endif
860     
861     ' save file
862     if ( PBSaveNow.exists( 2 ) ) then
863         if ( PBSaveNow.isEnabled() ) then
864             PBSaveNow.click()
865              
866             Kontext "SpeichernDlg"
867             if ( SpeichernDlg.exists( 2 ) ) then
868                 printlog( CFN & "Save As Dialog is open" )
869                 SpeichernDlg.cancel()
870                 brc = true
871             else
872                 warnlog( CFN & "FileSave dialog is missing" )
873             endif
874         else
875             warnlog( CFN & "Save Now is disabled" )
876         endif
877     else
878         warnlog( CFN & "Save Now is missing" )
879     endif            
880     
881     hSaveMailMergeDocument() = brc
882     
883 end function
885 '******************************************************************************* 
887 function hPrintMailMergeDocument() as boolean
889     const CFN = "hPrintMailMergeDocument::"
890     
891     dim brc as boolean
892         brc = false
894     if ( RBPrintMerged.exists( 2 ) ) then
895          if ( RBPrintMerged.isEnabled() ) then
896              RBPrintMerged.check()
897              brc = true
898          else
899              warnlog( CFN & "Cannot set radiobutton" )
900          endif
901     else
902         warnlog( CFN & "Radiobutton is missing" )
903     endif
905     if ( instr( gtSYSName , "win" ) > 0 ) then
906         printlog( CFN & "Skipping printer dialog on windows" )
907         hPrintMailMergeDocument() = true
908         exit function
909     endif
910     
911     if ( lcase( gPlatform ) = "osx" ) then
912         qaerrorlog( "#i81545# No printer settings on MacOS X" )
913         hPrintMailMergeDocument() = true
914         exit function
915     endif
916     
917     ' printer settings
918     if ( PBPrinterSettings.exists( 2 ) ) then
919         if ( PBPrinterSettings.isEnabled() ) then
920             PBPrinterSettings.click()
921              
922             Kontext "TabSPAPaper"
923             if ( TabSPAPaper.exists() ) then
924                 printlog( CFN & "Printer Settings Dialog" )
925                 TabSPAPaper.OK
926                 brc = true
927             else
928                 warnlog( "#i89114# Printer Settings dialog is missing" )
929             endif
930         else
931             warnlog( CFN & "Printer Settings is disabled" )
932         endif
933     else
934         warnlog( CFN & "Printer Settings is missing" )
935     endif   
936     
937     hPrintMailMergeDocument() = brc
938     
939 end function
941 '******************************************************************************* 
943 function hSendMailMergeDocument() as boolean
945     const CFN = "hSendMailMergeDocument::"
946     
947     dim brc as boolean
948         brc = false
950     if ( RBSendAsMail.exists( 2 ) ) then
951          if ( RBSendAsMail.isEnabled() ) then
952              RBSendAsMail.check()
953          else
954              warnlog( CFN & "Cannot set radiobutton" )
955          endif
956     else
957         warnlog( CFN & "Radiobutton is missing" )
958     endif
959     
960     ' send copy to
961     if ( PBCopyTo.exists( 2 ) ) then
962         if ( PBCopyTo.isEnabled() ) then
963             PBCopyTo.click()
964              
965             Kontext "CopyToDialog"
966             if ( CopyToDialog.exists( 2 ) ) then
967                 printlog( CFN & "CopyToDialog is open" )
968                 call DialogTest( CopyToDialog )
969                 CopyToDialog.OK()
970             else
971                 warnlog( CFN & "CopyToDialog dialog is missing" )
972             endif
973         else
974             warnlog( CFN & "PBCopyTo is disabled" )
975         endif
976     else
977         warnlog( CFN & "PBCopyTo is missing" )
978     endif   
979     
980     kontext "TabMailMergeOutputPage"
981     if ( PBSendDocuments.exists( 2 ) ) then
982         if ( PBSendDocuments.isEnabled() ) then
983             PBSendDocuments.click()
984             Kontext "Active"
985             if ( active.exists( 2 ) ) then
986                 printlog( CFN & "Dialog asking for EMail-account is open" )
987                 call Dialogtest( active )
988                 active.yes()
989                 
990                 kontext "TabMailMergeEmail"
991                 hMailMergeEmailDialog()
992             else
993                 warnlog( CFN & "Dialog asking for EMail-account is missing" )
994             endif
995         else
996             warnlog( CFN & "Send documents Button is disabled" )
997         endif
998     else
999         warnlog( CFN & "Send Documents Button is missing" )
1000     endif
1001     
1002     hSendMailMergeDocument() = brc
1003     
1004 end function
1006 '******************************************************************************* 
1008 function hMailMergeEmailDialog() as boolean
1010     const CFN = "hMailMergeEmailDialog::"
1011     dim brc as boolean
1012         brc = false
1013     
1014     if ( TabMailMergeEmail.exists( 2 ) ) then
1015         printlog( CFN & "EMail Account Dialog is open" )
1016         brc = true
1017     else
1018         warnlog( CFN & "EMail Account Dialog is not open" )
1019         exit function
1020     endif
1021     
1022     ' server authentication
1023     if ( ServerAuthentication.exists( 2 ) ) then
1024         if ( ServerAuthentication.isEnabled() ) then
1025             ServerAuthentication.click()
1026             
1027             Kontext "ServerAuthentication"
1028             if ( ServerAuthentication.exists( 2 ) ) then
1029                 printlog( CFN & "Server Authentication dialog is open" )
1030                 call DialogTest( ServerAuthentication )
1031                 ServerAuthentication.cancel()
1032             else
1033                 warnlog( CFN & "ServerAuthentication is not open" )
1034             endif
1035         else
1036             warnlog( CFN & "ServerAuthentication-Button is not enabled" )
1037         endif
1038     else
1039         warnlog( CFN & "ServerAuthentication-Button does not exist" )
1040         brc = false
1041     endif
1042     
1043     ' Test settings
1044     kontext "TabMailMergeEmail"   
1045     if ( TestSettings.exists( 2 ) ) then
1046         if ( TestSettings.isEnabled() ) then
1047             TestSettings.click()
1048             
1049             kontext "TestAccountSettings"
1050             if ( TestAccountSettings.exists( 2 ) ) then
1051                 printlog( CFN & "Test Account Settings Dialog is open" )
1052                 call DialogTest( TestAccountSettings )
1053                 TestAccountSettings.cancel()
1054             else
1055                 warnlog( CFN & "Test Account Settings Dialog is not open" )
1056             endif
1057         else
1058             warnlog( CFN & "Test Settings-button is disabled" )
1059         endif
1060     else
1061         warnlog( CFN & "Test Settings-button is missing" )
1062     endif
1063     
1064     kontext "TabMailMergeEmail"
1065     TabMailMergeEmail.cancel()
1066     
1067     hMailMergeEmailDialog() = brc
1068     
1069 end function
1071 '*******************************************************************************
1073 function hWaitForSelectAddressListDialog() as boolean
1075     Kontext "SelectAddressList"
1076     if ( SelectAddressList.exists( 5 ) ) then
1077         hWaitForSelectAddressListDialog() = true
1078     else
1079         hWaitForSelectAddressListDialog() = false
1080     endif
1081     
1082     
1083 end function
1085 '*******************************************************************************
1087 function hSaveNewAddressList()
1089     const CFN = "hSaveNewAddressList::"
1091     Kontext "SpeichernDlg"
1092     if ( SpeichernDlg.exists( 2 ) ) then
1093     
1094         DateiName.setText( CSV_DATABASE )
1095         Speichern.click()
1096         
1097         kontext "active"
1098         if ( active.exists( 2 ) ) then
1099             warnlog( active.getText() ) 
1100             active.yes()
1101         endif
1102         
1103         printlog( CFN & "File saved" )
1104     else
1105         warnlog( CFN & "FileSave did not come up" )
1106     endif
1107     
1108 end function
1110 '*******************************************************************************
1112 function hRemoveDatabaseConnections() as integer
1114     const CFN = "hRemoveDatabaseConnections()::"
1115     const DEFAULT_DATABASE = "Bibliography"
1116     
1117     dim iConnectionCount as integer
1118     dim iCurrentConnection as integer
1119     dim cConnectionName as string
1120     dim bOptionsOpen as boolean : bOptionsOpen = true
1121     
1122     kontext "OptionenDlg"
1123     if ( not OptionenDlg.exists() ) then
1124         bOptionsOpen = false
1125         ToolsOptions
1126     endif
1127     
1128     hToolsOptions( "DataSources", "Databases" )
1129     
1130     kontext "TabRegisteredDatabase"
1131     iConnectionCount = RegisteredDatabases.getItemCount()
1132     
1133     for iCurrentConnection = iConnectionCount to 1 step -1
1134     
1135         kontext "TabRegisteredDatabase"
1136         if ( TabRegisteredDatabase.exists( 2 ) ) then
1137         
1138             RegisteredDatabases.select( iCurrentConnection )
1139             cConnectionName = RegisteredDatabases.getSelText()
1140             printlog( CFN & "Current database: " & cConnectionName )
1141         
1142             if ( cConnectionName <> DEFAULT_DATABASE ) then
1143                 DeleteBtn.click()
1144                 kontext "active"
1145                 if ( active.exists( 2 ) ) then
1146                     active.yes()
1147                 else
1148                     warnlog( CFN & "Confirmation dialog for delete is missing" )
1149                 endif
1150             else
1151                 printlog( CFN & "Not deleting default database connection" )
1152             endif
1153         else
1154             warnlog( CFN & "Failed to set context to Registered Databases Tab" )
1155         endif
1156         
1157     next iCurrentConnection
1158     
1159     if ( not bOptionsOpen ) then
1160         kontext "OptionenDlg"
1161         OptionenDlg.ok()
1162     endif
1163     
1164     hRemoveDatabaseConnections() = iConnectionCount - 1
1165     
1166 end function
1168 '*******************************************************************************
1170 function hUpdtMailmergeMatchFields() as boolean
1172     
1173     const CFN = "hUpdtMailmergeMatchFields::"
1174     dim brc as boolean
1175     
1176     printlog( CFN & "Accessing Match Fields Dialog" )
1177     Kontext "TabMailMergeAddressBlock"
1178     MatchFieldsButton.click()
1179     
1180     kontext "MatchFields"
1181     if ( not MatchFields.exists( 2 ) ) then
1182         warnlog( CFN & "Unable to access Match Fields dialog" )
1183         brc = false
1184     else
1185     
1186         Title.select( 2 )
1187         FirstName.select( 3 )
1188         LastName.select( 4 )
1189         Company.select( 5 )
1190         Address1.select( 6 )
1191         Address2.select( 7 )
1192         City.select( 8 )
1193         State.select( 2 )
1194         ZIP.select( 3 )
1195         Country.select( 4 )
1196         PhonePrivate.select( 1 )
1197         PhoneBusiness.select( 2 )
1198         EMail.select( 5 )
1199         Gender.select( 4 )
1200         
1201         MatchFields.OK()
1202         printlog( CFN & "Leaving Match Fields Dialog" )
1203         brc = true
1204         
1205     endif
1206     
1207     hUpdtMailmergeMatchFields() = brc
1208         
1209 end function