X-Git-Url: http://Server1/repobrowser/?p=xestiaab%2F.git;a=blobdiff_plain;f=source%2Fconvert.cpp;h=d7345196e3163d26ed772376f4ac3cde85d8fa2c;hp=8f6d7d1ad2bf716d7ea57397815eaf91bd23d72f;hb=3ef806261b5482a584e05dc8311c8d7633f146b4;hpb=f5cc529d456b2a62f31b32f051fbe41a28d52756 diff --git a/source/convert.cpp b/source/convert.cpp index 8f6d7d1..d734519 100644 --- a/source/convert.cpp +++ b/source/convert.cpp @@ -17,6 +17,8 @@ // with Xestia Address Book. If not, see #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 +}