X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fmain.cpp;h=feb1520c82a7025d09b3c5f13ae8b8817043a7c7;hb=8fb3ab8465ad5d56a2405ec830e48954e254735c;hp=2a6c5188a41c31848ecaf42aee2d0fedf40be4e9;hpb=ef378615509a0b2cc9912da6c6d40a3f89354b3a;p=xestiaab%2F.git
diff --git a/source/main.cpp b/source/main.cpp
index 2a6c518..feb1520 100644
--- a/source/main.cpp
+++ b/source/main.cpp
@@ -1,3 +1,21 @@
+// main.cpp - Main subroutine (application start).
+//
+// (c) 2012-2015 Xestia Software Development.
+//
+// This file is part of Xestia Address Book.
+//
+// Xestia Address Book is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by the
+// Free Software Foundation, version 3 of the license.
+//
+// Xestia Address Book is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with Xestia Address Book. If not, see
+
#include
#include
@@ -12,8 +30,9 @@
#include "frmMain.h"
#include "bitmaps.h"
#include "version.h"
-#include "frmActivityMgr.h"
-#include "frmSearch.h"
+#include "convert.h"
+#include "actmgr/frmActivityMgr.h"
+#include "search/frmSearch.h"
#include "common/timers.h"
#include "common/defaults.h"
#include "common/dirs.h"
@@ -33,7 +52,7 @@ bool XestiaABApp::OnInit()
wxLocale locale;
locale.Init(wxLANGUAGE_DEFAULT, wxLOCALE_LOAD_DEFAULT);
-#if defined(__WIN32__)
+/*#if defined(__WIN32__)
// Check that the minimum version of Xestia Common Components is installed on the system.
@@ -44,7 +63,7 @@ bool XestiaABApp::OnInit()
this->Exit();
}
-#endif
+#endif*/
static const wxCmdLineEntryDesc g_cmdLineDesc [] =
{
@@ -52,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"),
@@ -60,6 +89,9 @@ bool XestiaABApp::OnInit()
};
wxString wxSContactFilename;
+ wxString wxSContactOutputFilename;
+ wxString wxSContactFormat;
+ wxString wxSContactOutputFormat;
wxCmdLineParser XABArgs (g_cmdLineDesc, argc, argv);
XABArgs.Parse();
@@ -76,12 +108,101 @@ bool XestiaABApp::OnInit()
// Print out the version number.
wxPuts(XSDAB_VERSION);
- exit(0);
+ return false;
}
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;
+ }
+
+ return true;
+
+ }
+
if (XABArgs.Found(wxT("s"))){
// Open up the search window.
@@ -139,6 +260,12 @@ bool XestiaABApp::OnInit()
return true;
}
+
+ /*if (!XABArgs.Found(wxT(""))){
+
+ return false;
+
+ }*/
// Setup default settings and accounts if they don't exist.
@@ -163,5 +290,4 @@ bool XestiaABApp::OnInit()
return true;
-}
-
+}
\ No newline at end of file