Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Setup CMake to build for macOS
[xestiaab/.git] / source / convert.cpp
index 8f6d7d1..d734519 100644 (file)
@@ -17,6 +17,8 @@
 // with Xestia Address Book. If not, see <http://www.gnu.org/licenses/>
 
 #include "convert.h"
+#include "vcard/vcard.h"
+#include "vcard/vcard34conv.h"
 
 ConvertResult ConvertContact(wxString InputFormat, wxString OutputFormat, 
        wxString InputFilename, wxString OutputFilename){
@@ -72,6 +74,14 @@ ConvertResult ConvertContact(wxString InputFormat, wxString OutputFormat,
        
        }
        
+       // Check that the input filename is not empty.
+       
+       if (InputFilename.empty()){
+       
+               return CONVERTRESULT_INPUTFILEEMPTY;
+       
+       }
+       
        // Check that the input file given exists.
        
        if (!wxFileExists(InputFilename)){
@@ -80,6 +90,113 @@ ConvertResult ConvertContact(wxString InputFormat, wxString OutputFormat,
                
        }
        
+       wxFile InputFile;
+       
+       if (!InputFile.Open(InputFilename, wxFile::read, wxS_DEFAULT)){
+                               
+               return CONVERTRESULT_INPUTFILEERROR;
+               
+       }
+       
+       // Check that the output file can be opened.
+       
+       bool OutputPipe = false;
+       wxFile OutputFile;
+       
+       if (!OutputFilename.IsEmpty()){
+       
+               if (!OutputFile.Open(OutputFilename, wxFile::write, wxS_DEFAULT)){
+                       return CONVERTRESULT_OUTPUTFILEERROR;
+               }
+       
+       } else {
+       
+               OutputPipe = true;
+       
+       }
+       
+       // Check that the file has the correct file format.
+       
+       vCard vCard4Format;
+       wxString FinalData;
+       
+       if (InputFormat == "vCard4"){
+       
+               // Read from the file.
+               
+               wxString InputFileData;
+               InputFile.ReadAll(&InputFileData, wxConvAuto());
+       
+               vCard vCard4Format;
+               
+               vCard4Format.LoadString(InputFileData);
+               
+               if (vCard4Format.Get("VERSION") != "4.0"){
+                       return CONVERTRESULT_INPUTFILEINVALIDFORMAT;
+               }
+       
+       } else if (InputFormat == "vCard3"){
+       
+               // Read from the file.
+               
+               wxString InputFileData;
+               InputFile.ReadAll(&InputFileData, wxConvAuto());
+       
+               vCard InputvCard;
+               
+               InputvCard.LoadString(InputFileData);
+               
+               if (InputvCard.Get("VERSION") != "3.0"){
+                       return CONVERTRESULT_INPUTFILEINVALIDFORMAT;
+               }
+
+               vCard34Conv vCard34ConvObj;
+               
+               vCard vCard4Format;
+               
+               vCard34ConvObj.ConvertToV4(&InputFileData, &vCard4Format);
+               
+               FinalData = vCard4Format.WriteString();
+               
+       }
+       
+       // Convert the vCard into the required format and
+       // get the string value.
+       
+       if (OutputFormat == "vCard4"){
+       
+               // Do nothing as the vCard is already in the vCard 4.0
+               // format.
+       
+       } else if (OutputFormat == "vCard3"){
+       
+               // Convert the vCard to vCard 3.0.
+               
+               vCard34Conv vCard34ConvObj;
+               
+               vCard vCard3Format;
+               
+               vCard34ConvObj.ConvertToV3(InputFilename, &FinalData);
+       
+       }
+       
+       // Check if we are outputting to console or to file.
+       
+       if (OutputPipe == false){
+       
+               // We are outputting to a file.
+               
+               OutputFile.Write(FinalData, wxConvUTF8);
+       
+       } else {
+       
+               // Write out the data to the console.
+               
+               FinalData.Trim();
+               std::cout << FinalData.ToStdString() << std::endl;
+       
+       }
+       
        return CONVERTRESULT_OK;
        
-}
\ No newline at end of file
+}
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