Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Implemented support for contact format conversion via the command line using the...
authorSteve Brokenshire <sbrokenshire@xestia.co.uk>
Sun, 6 Dec 2015 12:48:43 +0000 (12:48 +0000)
committerSteve Brokenshire <sbrokenshire@xestia.co.uk>
Sun, 6 Dec 2015 12:48:43 +0000 (12:48 +0000)
source/main.cpp

index a5b8ae6..f098d36 100644 (file)
@@ -30,6 +30,7 @@
 #include "frmMain.h"
 #include "bitmaps.h"
 #include "version.h"
+#include "convert.h"
 #include "actmgr/frmActivityMgr.h"
 #include "search/frmSearch.h"
 #include "common/timers.h"
@@ -70,6 +71,16 @@ bool XestiaABApp::OnInit()
                        wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP },
                { wxCMD_LINE_OPTION, wxT_2("e"), wxT_2("edit"), wxTRANSLATE("Edit a vCard 4.0 formatted contact"),
                        wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
+               { wxCMD_LINE_SWITCH, wxT_2("c"), wxT_2("convert"), wxTRANSLATE("Convert a contact file into another format."),
+                       wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL },
+               { wxCMD_LINE_OPTION, wxT_2("ifmt"), NULL, wxTRANSLATE("Input format to convert from. (used with -c)"),
+                       wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
+               { wxCMD_LINE_OPTION, wxT_2("ofmt"), NULL, wxTRANSLATE("Output format to convert to. (used with -c)"),
+                       wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
+               { wxCMD_LINE_OPTION, wxT_2("ifile"), NULL, wxTRANSLATE("Input filename to read from. (used with -c)"),
+                       wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
+               { wxCMD_LINE_OPTION, wxT_2("ofile"), NULL, wxTRANSLATE("Output filename to write to (don't use to pipe to console). (used with -c)"),
+                       wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL },
                { wxCMD_LINE_SWITCH, wxT_2("s"), wxT_2("search"), wxTRANSLATE("Display the search window instead of starting normally"),
                        wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL },
                { wxCMD_LINE_SWITCH, wxT_2("v"), wxT_2("version"), wxTRANSLATE("Displays version number"),
@@ -78,6 +89,9 @@ bool XestiaABApp::OnInit()
        };
 
        wxString wxSContactFilename;
+       wxString wxSContactOutputFilename;
+       wxString wxSContactFormat;
+       wxString wxSContactOutputFormat;
        wxCmdLineParser XABArgs (g_cmdLineDesc, argc, argv);
        XABArgs.Parse();
     
@@ -94,12 +108,101 @@ bool XestiaABApp::OnInit()
                // Print out the version number.    
 
                wxPuts(XSDAB_VERSION);
-               exit(0);
+               exit(EXIT_SUCCESS);
     
        }
     
        wxInitAllImageHandlers();
-    
+
+       if (XABArgs.Found(wxT("c"))){
+       
+               // Preform a conversion.
+
+               wxString InputFormat;
+               wxString ExportFormat;
+               wxString InputFilename;
+               wxString OutputFilename;
+               
+               // Get the input format. Return error if blank
+               // or invalid.
+
+               if (XABArgs.Found(wxT("ifmt"))){                
+                       XABArgs.Found(wxT("ifmt"), &InputFormat);
+               }       
+                       
+               // Get the export format. Return error if blank
+               // or invalid.
+
+               if (XABArgs.Found(wxT("ofmt"))){
+                       XABArgs.Found(wxT("ofmt"), &ExportFormat);
+               }
+               
+               // Get the input filename.
+
+               if (XABArgs.Found(wxT("ifile"))){
+                       XABArgs.Found(wxT("ifile"), &InputFilename);
+               }
+               
+               // Get the output filename (if any).
+               
+               if (XABArgs.Found(wxT("ofile"))){
+                       XABArgs.Found(wxT("ofile"), &OutputFilename);
+               }
+               
+               if (argc >= 7){
+                       wxPuts("Too many arguments given.");
+                       exit(EXIT_FAILURE);
+               }
+               
+               // Run the conversion process.
+               
+               ConvertResult ConvertRunStatus = ConvertContact(InputFormat, ExportFormat, InputFilename, OutputFilename);
+       
+               switch (ConvertRunStatus){
+                       case CONVERTRESULT_UNITTESTFAIL:
+                               wxPuts("An internal unit testing failure has occured.");
+                               exit(EXIT_SUCCESS);
+                               break;
+                       case CONVERTRESULT_OK:
+                               break;
+                       case CONVERTRESULT_FORMATSSAME:
+                               wxPuts("Both input and output formats are the same.");
+                               exit(EXIT_FAILURE);
+                               break;
+                       case CONVERTRESULT_INVALIDINPUTFORMAT:
+                               wxPuts("Invalid input format given.");
+                               exit(EXIT_FAILURE);
+                               break;
+                       case CONVERTRESULT_INVALIDOUTPUTFORMAT:
+                               wxPuts("Invalid output format given.");
+                               exit(EXIT_FAILURE);
+                               break;
+                       case CONVERTRESULT_INPUTFILEMISSING:
+                               wxPuts("Input file with the filename given does not exist.");
+                               exit(EXIT_FAILURE);
+                               break;
+                       case CONVERTRESULT_INPUTFILEEMPTY:
+                               wxPuts("No input filename given.");
+                               exit(EXIT_FAILURE);
+                               break;
+                       case CONVERTRESULT_INPUTFILEINVALIDFORMAT:
+                               wxPuts("Input file is in an invalid format.");
+                               exit(EXIT_FAILURE);
+                               break; 
+                       case CONVERTRESULT_INPUTFILEERROR:
+                               wxPuts("An error occured whilst trying to open the input file location.");
+                               exit(EXIT_FAILURE);
+                               break;
+                       case CONVERTRESULT_OUTPUTFILEERROR:
+                               wxPuts("An error occured whilst trying to open the output file location.");
+                               exit(EXIT_FAILURE);
+                               break;
+               }
+       
+               exit(EXIT_SUCCESS);
+       
+       }
+
        if (XABArgs.Found(wxT("s"))){
     
                // Open up the search window.
@@ -157,6 +260,12 @@ bool XestiaABApp::OnInit()
                return true;
     
        }
+       
+       if (!XABArgs.Found(wxT(""))){
+       
+               return false;
+       
+       }
     
        // Setup default settings and accounts if they don't exist.
     
@@ -181,5 +290,4 @@ bool XestiaABApp::OnInit()
    
        return true;
 
-}
-
+}
\ 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