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>
24 #include "../frmMain.h"
25 #include "export-vcard3.h"
26 #include "export-vcard4.h"
28 void ExportRun(frmMain *frmMainPtrInc, wxArrayString *FileListInc){
30 // Run the export function. Bring up the export file save
31 // dialog and run the required export functions as needed.
33 frmMainPtrInc->PauseAllTimers();
40 wxString FinalFilename;
42 FileTypes.Append(wxT("vCard 4.0 (directory, one contact per file) (*.vcf)"));
43 FileTypes.Append(wxT("|*.vcf|"));
44 FileTypes.Append(wxT("vCard 4.0 (file, all contacts in one file) (*.vcf)"));
45 FileTypes.Append(wxT("|*.vcf|"));
46 FileTypes.Append(wxT("vCard 3.0 (directory, one contact per file) (*.vcf)"));
47 FileTypes.Append(wxT("|*.vcf|"));
48 FileTypes.Append(wxT("vCard 3.0 (file, all contacts in one file) (*.vcf)"));
49 FileTypes.Append(wxT("|*.vcf"));
51 // Open up the dialog to export file data.
53 wxFileDialog ExportDlg(frmMainPtrInc, wxT("Export Contacts"), wxT(""), wxT(""),
54 FileTypes, wxFD_SAVE|wxFD_OVERWRITE_PROMPT);
56 if (ExportDlg.ShowModal() == wxID_CANCEL){
58 frmMainPtrInc->ResumeAllTimers();
63 // Find which data type is being used.
65 ExportType = ExportDlg.GetFilterIndex();
67 if (ExportType == 0 || ExportType == 2){
71 // Process the filename based on data type.
73 if (DirMode == FALSE){
75 // All contacts exported into one file. Setup the filename.
77 FinalFilename = ExportDlg.GetPath();
81 // One contact per filename. Setup the directory name.
83 FinalFilename = ExportDlg.GetDirectory();
87 if (ExportType == 0 || ExportType == 1){
89 ExportVCard4(DirMode, FinalFilename, FileListInc, &ExportCount);
95 if (ExportType == 2 || ExportType == 3){
97 ExportVCard3(DirMode, FinalFilename, FileListInc, &ExportCount);
101 // Notify the user of how many contacts
104 wxMessageBox(wxString::Format(_("%i contacts exported."), ExportCount), _("Contacts exported"));
106 frmMainPtrInc->ResumeAllTimers();