Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Improved importing support.
[xestiaab/.git] / source / import / import.cpp
index 416a39f..948f83f 100644 (file)
@@ -19,10 +19,6 @@ void ImportRun(frmMain *frmMainPtrInc){
        // Bring up a dialog selecting one or multiple 
        // files for processing based on type.
 
-       struct ImportResultData{
-               
-       };
-
        frmMainPtrInc->PauseAllTimers();
 
        wxString FileTypes;
@@ -35,9 +31,10 @@ void ImportRun(frmMain *frmMainPtrInc){
        wxArrayString SelectedFileList;
        wxString SelectedFileDirectory;
        wxString AccountName;
+       wxString AccountType;
        int ImportErrorCount = 0;
        
-       std::map<int,wxString> ResultData;
+       std::map<int,wxString> *ResultData = new std::map<int,wxString>;
        
        FileTypes.Append(wxT("vCard 4.0 Contact(s) (*.vcf)"));
        FileTypes.Append(wxT("|*.vcf|"));
@@ -105,6 +102,10 @@ void ImportRun(frmMain *frmMainPtrInc){
        frmIC->ShowModal();
        frmIC->GetResults(&ContactData);
        AccountName = frmIC->GetAccount();
+       AccountType = frmIC->GetAccountType();
+
+       delete frmIC;
+       frmIC = NULL;
 
        // Import the contacts into the selected account.
 
@@ -139,7 +140,7 @@ void ImportRun(frmMain *frmMainPtrInc){
        
                if (iter->second.ContactSelected == TRUE){
                
-                       // Workout the file name.
+                       // Workout the file name.               void CloseWindow( wxCommandEvent& event );
                        // Get the UID value and check if it is empty.
                        // If it isn't empty, check it can be used for a valid
                        // filename other wise generate a file name for the purposes
@@ -223,7 +224,7 @@ void ImportRun(frmMain *frmMainPtrInc){
                        
                                // File already exists so mark as an error.
                                
-                               ResultData.insert(std::make_pair(ImportSeek, wxString::Format(_("Unable to import '%s'(%s): "), iter->second.FriendlyName, UIDToken)));
+                               ResultData->insert(std::make_pair(ImportSeek, wxString::Format(_("Unable to import '%s'(%s): %s"), iter->second.FriendlyName, UIDToken, _("Contact already exists."))));
                                ImportErrorCount++;
                                ImportSeek++;
                                GeneratedFilename.Clear();
@@ -240,16 +241,19 @@ void ImportRun(frmMain *frmMainPtrInc){
                                wxFFile OutputFile;
                        
 #if wxABI_VERSION < 20900
-                               OutputFile.Open(OutputFilename, wxT("w"));
+                               if(!OutputFile.Open(OutputFilename, wxT("w"))){
 #else
-                               OutputFile.Open(OutputFilename, wxT("w"));
+                               if(!OutputFile.Open(OutputFilename, wxT("w"))){
 #endif
+                                       ResultData->insert(std::make_pair(ImportSeek, wxString::Format(_("Unable to import '%s'(%s): %s"), iter->second.FriendlyName, UIDToken, _("Error occured whilst trying to create this contact. Please check permissions and storage device."))));
+                       
+                               }
                        
                                OutputFile.Write(iter->second.ContactData, wxConvAuto());
                        
                                OutputFile.Close();
                                
-                               ResultData.insert(std::make_pair(ImportSeek, wxString::Format(_("Contact '%s'(%s) was successfully imported."))));
+                               ResultData->insert(std::make_pair(ImportSeek, wxString::Format(_("Contact '%s'(%s) was successfully imported."), iter->second.FriendlyName, UIDToken)));
                        
                        }
                        
@@ -274,24 +278,25 @@ void ImportRun(frmMain *frmMainPtrInc){
        // Check if the import error count is more than 0. If it is, then
        // display the results dialog.
        
-       frmImportResults *frmIR = new frmImportResults(frmMainPtrInc);
-       frmIR->LoadData(&ResultData);
-       frmIR->ShowModal();
+       wxCommandEvent imprres(IMPORT_RESULTSSHOW);
+       imprres.SetClientData(ResultData);
+       imprres.SetInt(ImportCount);
+       imprres.SetExtraLong(ImportErrorCount);
+       wxPostEvent(frmMainPtrInc, imprres);
                
-       delete frmIR;
-       frmIR = NULL;
-
-       delete frmIC;
-       frmIC = NULL;
-       
        // Syncronise the account which the contacts got imported to.
+       // (If the account is not a local account).
        
-       wxString *AccNamePostEventPtr = new wxString;
+       if (AccountType != wxT("Local") && AccountType != wxT("local")){
        
-       wxCommandEvent accevent(SYNCACCOUNT);
-       accevent.SetClientData(AccNamePostEventPtr);
+               wxString *AccNamePostEventPtr = new wxString;
        
-       wxPostEvent(frmMainPtrInc, accevent);
+               wxCommandEvent accevent(SYNCACCOUNT);
+               accevent.SetClientData(AccNamePostEventPtr);
+       
+               wxPostEvent(frmMainPtrInc, accevent);
+       
+       }
        
        //wxPostEvent
        
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy