1 // export.cpp - Export subroutines.
3 // (c) 2012-2015 Xestia Software Development.
5 // This file is part of Xestia Address Book.
7 // Xestia Address Book is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by the
9 // Free Software Foundation, version 3 of the license.
11 // Xestia Address Book is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with Xestia Address Book. If not, see <http://www.gnu.org/licenses/>
19 #include <wx/filedlg.h>
20 #include <wx/arrstr.h>
23 #include "../frmMain.h"
24 #include "export-vcard3.h"
25 #include "export-vcard4.h"
27 void ExportRun(frmMain *frmMainPtrInc, wxArrayString *FileListInc){
29 // Run the export function. Bring up the export file save
30 // dialog and run the required export functions as needed.
32 frmMainPtrInc->PauseAllTimers();
39 wxString FinalFilename;
41 FileTypes.Append(wxT("vCard 4.0 (directory, one contact per file) (*.vcf)"));
42 FileTypes.Append(wxT("|*.vcf|"));
43 FileTypes.Append(wxT("vCard 4.0 (file, all contacts in one file) (*.vcf)"));
44 FileTypes.Append(wxT("|*.vcf|"));
45 FileTypes.Append(wxT("vCard 3.0 (directory, one contact per file) (*.vcf)"));
46 FileTypes.Append(wxT("|*.vcf|"));
47 FileTypes.Append(wxT("vCard 3.0 (file, all contacts in one file) (*.vcf)"));
48 FileTypes.Append(wxT("|*.vcf"));
50 // Open up the dialog to export file data.
52 wxFileDialog ExportDlg(frmMainPtrInc, wxT("Export Contacts"), wxT(""), wxT(""),
53 FileTypes, wxFD_SAVE|wxFD_OVERWRITE_PROMPT);
55 if (ExportDlg.ShowModal() == wxID_CANCEL){
57 frmMainPtrInc->ResumeAllTimers();
62 // Find which data type is being used.
64 ExportType = ExportDlg.GetFilterIndex();
66 if (ExportType == 0 || ExportType == 2){
70 // Process the filename based on data type.
72 if (DirMode == FALSE){
74 // All contacts exported into one file. Setup the filename.
76 FinalFilename = ExportDlg.GetPath();
80 // One contact per filename. Setup the directory name.
82 FinalFilename = ExportDlg.GetDirectory();
86 if (ExportType == 0 || ExportType == 1){
88 ExportVCard4(DirMode, FinalFilename, FileListInc, &ExportCount);
94 if (ExportType == 2 || ExportType == 3){
96 ExportVCard3(DirMode, FinalFilename, FileListInc, &ExportCount);
100 // Notify the user of how many contacts
103 wxMessageBox(wxString::Format(_("%i contacts exported."), ExportCount), _("Contacts exported"));
105 frmMainPtrInc->ResumeAllTimers();