From 616fa8b7c718ffaf13815ba5bad3d7b54f55c6b1 Mon Sep 17 00:00:00 2001 From: Steve Brokenshire Date: Sun, 8 Nov 2015 15:25:35 +0000 Subject: [PATCH] Extra commit for -e command switch support. --- .../contacteditor/frmContactEditor-Load.cpp | 23 ++++++- .../frmContactEditor-LoadGroup.cpp | 5 +- .../contacteditor/frmContactEditor-Save.cpp | 66 ++++++++++--------- source/contacteditor/frmContactEditor.h | 2 + 4 files changed, 63 insertions(+), 33 deletions(-) diff --git a/source/contacteditor/frmContactEditor-Load.cpp b/source/contacteditor/frmContactEditor-Load.cpp index 1ef92c4..3f1d407 100644 --- a/source/contacteditor/frmContactEditor-Load.cpp +++ b/source/contacteditor/frmContactEditor-Load.cpp @@ -21,7 +21,10 @@ bool frmContactEditor::LoadContact(wxString Filename){ wxString wxSContactString; wxString ContactLine; vCard ContactData; - XABViewMode XVMData = MainPtr->GetViewMode(); + XABViewMode XVMData; + if (StartupEditMode == FALSE){ + XVMData = MainPtr->GetViewMode(); + } wxSContactFilename = Filename; @@ -75,6 +78,7 @@ bool frmContactEditor::LoadContact(wxString Filename){ bool KindProcessed = FALSE; bool ETagFound = FALSE; bool ETagOrigFound = FALSE; + bool VersionProcessed = FALSE; int intExtraNickname = 0; wxString wxSProperty; wxString wxSPropertySeg1; @@ -198,7 +202,22 @@ bool frmContactEditor::LoadContact(wxString Filename){ // Add the data into the contact editor depending on what it is. - if (wxSProperty == wxT("KIND") && KindProcessed == FALSE){ + if (wxSProperty == wxT("VERSION") && VersionProcessed == FALSE){ + + // Check if version is 4.0, otherwise don't + // load. + + wxPuts(wxSPropertySeg2); + if (wxSPropertySeg2 != wxT("4.0")){ + wxMessageBox(_("This file is not a vCard 4.0 contact and is not supported under Xestia Address Book."), + _("Contact not supported"), wxICON_ERROR); + this->Close(); + return FALSE; + } + + VersionProcessed = TRUE; + + } if (wxSProperty == wxT("KIND") && KindProcessed == FALSE){ // See frmContactEditor-LoadGroup.cpp diff --git a/source/contacteditor/frmContactEditor-LoadGroup.cpp b/source/contacteditor/frmContactEditor-LoadGroup.cpp index 8a37f61..9d08801 100644 --- a/source/contacteditor/frmContactEditor-LoadGroup.cpp +++ b/source/contacteditor/frmContactEditor-LoadGroup.cpp @@ -38,7 +38,10 @@ void frmContactEditor::LoadMember(wxString MemberData, int *GroupCount){ // Go through the list of contacts for the account and find the matching UID. // If contact with UID doesn't match then say (unknown contact). - XABViewMode XVMData = MainPtr->GetViewMode(); + XABViewMode XVMData; + if (StartupEditMode == FALSE){ + XVMData = MainPtr->GetViewMode(); + } wxString AccountDirFinal = GetAccountDir(wxSContactAccount, FALSE); diff --git a/source/contacteditor/frmContactEditor-Save.cpp b/source/contacteditor/frmContactEditor-Save.cpp index 66890df..0ca9cb0 100644 --- a/source/contacteditor/frmContactEditor-Save.cpp +++ b/source/contacteditor/frmContactEditor-Save.cpp @@ -29,54 +29,60 @@ void frmContactEditor::SaveContact( wxCommandEvent& event ) wxString FilenameFinal; bool ReplaceContact = FALSE; - if (cmbType->GetCurrentSelection() == 1 || - cmbType->GetCurrentSelection() == 3 || - cmbType->GetCurrentSelection() == 4){ + if (StartupEditMode == TRUE){ + + if (cmbType->GetCurrentSelection() == 1 || + cmbType->GetCurrentSelection() == 3 || + cmbType->GetCurrentSelection() == 4){ - if (IsGroup == TRUE){ - - // Mark contact for replacing. + if (IsGroup == TRUE){ - ReplaceContact = TRUE; + // Mark contact for replacing. - } + ReplaceContact = TRUE; + IsGroup = FALSE; + + } - } else if (cmbType->GetCurrentSelection() == 2){ + } else if (cmbType->GetCurrentSelection() == 2){ - if (IsGroup == TRUE){ - - // Mark contact for replacing. + if (IsGroup == FALSE){ - ReplaceContact = TRUE; + // Mark contact for replacing. - } + ReplaceContact = TRUE; + IsGroup = TRUE; + + } - } + } - if (ReplaceContact == TRUE){ + if (ReplaceContact == TRUE){ - wxString wxDelSplitFilename; - wxString wxDelFinalFilename; - wxString wxSDelDataURL; - wxStringTokenizer wSTDelFilename(wxSContactFilename, wxT("/")); - while(wSTDelFilename.HasMoreTokens()){ + wxString wxDelSplitFilename; + wxString wxDelFinalFilename; + wxString wxSDelDataURL; + wxStringTokenizer wSTDelFilename(wxSContactFilename, wxT("/")); + while(wSTDelFilename.HasMoreTokens()){ - wxDelSplitFilename = wSTDelFilename.GetNextToken(); + wxDelSplitFilename = wSTDelFilename.GetNextToken(); - } + } - wxSDelDataURL = wxDelSplitFilename; + wxSDelDataURL = wxDelSplitFilename; - // Delete the contact from the server as it will be useless in certain - // address book clients. + // Delete the contact from the server as it will be useless in certain + // address book clients. - ActMgrPtr->AddTask(2, cmbDisplayAs->GetValue(), wxSContactAccount, wxSDelDataURL, wxDelSplitFilename, wxSContactFilename, wxT("")); + ActMgrPtr->AddTask(2, cmbDisplayAs->GetValue(), wxSContactAccount, wxSDelDataURL, wxDelSplitFilename, wxSContactFilename, wxT("")); - // Clear the filename so the trigger to recreate the UID is done. + // Clear the filename so the trigger to recreate the UID is done. - wxSContactFilename.Clear(); - EditMode = FALSE; + wxSContactFilename.Clear(); + EditMode = FALSE; + } + } if (wxSContactFilename.IsEmpty()){ diff --git a/source/contacteditor/frmContactEditor.h b/source/contacteditor/frmContactEditor.h index f0e73a7..7123fc5 100644 --- a/source/contacteditor/frmContactEditor.h +++ b/source/contacteditor/frmContactEditor.h @@ -350,6 +350,7 @@ class frmContactEditor : public frmContactEditorADT void SetupPointers(frmActivityMgr *ActMgr, wxETagProcessTimer *ETagProc, frmMain *MainPtrInc); bool LoadContact(wxString Filename); + void SetMode(bool StartupEditMode); void SetUID(int UID); private: @@ -1210,6 +1211,7 @@ class frmContactEditor : public frmContactEditorADT int intValue3 = 0; bool BinaryDataProc = FALSE; bool EditMode = FALSE; + bool StartupEditMode = FALSE; bool DialogOpen = FALSE; /* -- 2.39.2