X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fvcard%2Fvcard34conv-v3conv.cpp;h=362ed8568a6bbc4e84d668ed3ac1791aa60bd473;hb=ee9b71949005734012f18251774807c38b989ae2;hp=8610fd7697c2d4764e93257c049626ee74b1bffe;hpb=fb95962b20989702f8d689875a977d150c087660;p=xestiaab%2F.git diff --git a/source/vcard/vcard34conv-v3conv.cpp b/source/vcard/vcard34conv-v3conv.cpp index 8610fd7..362ed85 100644 --- a/source/vcard/vcard34conv-v3conv.cpp +++ b/source/vcard/vcard34conv-v3conv.cpp @@ -1,3 +1,21 @@ +// vcard34conv-v3conv.cpp - vCard34Conv Object vCard3 conversion subroutines. +// +// (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 "vcard34conv.h" #include "vcard.h" #include "../version.h" @@ -22,8 +40,6 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ vCard ContactDatav3; - //wxSContactFilename = Filename; - // Check if we are using wxWidgets version 2.8 or less and // execute the required command accordingly. @@ -62,12 +78,9 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ bool QuoteMode = FALSE; bool PropertyFind = TRUE; - bool HasExtraNicknames = FALSE; - bool IgnoreGender = FALSE; bool ExtraLineSeek = TRUE; bool BirthdayProcessed = FALSE; bool AnniversaryProcessed = FALSE; - bool FNProcessed = FALSE; bool GenderProcessed = FALSE; bool NameProcessed = FALSE; bool KindProcessed = FALSE; @@ -77,46 +90,17 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ bool OrganisationFirst = FALSE; bool NoteFirst = FALSE; bool PhotoFirst = FALSE; - bool LogoFirst = FALSE; - int intExtraNickname = 0; wxString wxSProperty; wxString wxSPropertySeg1; wxString wxSPropertySeg2; wxString wxSPropertyNextLine; size_t ContactLineLen = 0; int QuoteBreakPoint = 0; - int FNCount = 0; - int NameCount = 0; - int NicknameCount = 0; - int ADRCount = 0; - int EmailCount = 0; - int IMPPCount = 0; - int TelCount = 0; - int LangCount = 0; - int TZCount = 0; - int GeoCount = 0; - int URLCount = 0; - int RelatedCount = 0; - int TitleCount = 0; - int RoleCount = 0; - int OrgCount = 0; - int NoteCount = 0; - int CategoryCount = 0; - int PhotoCount = 0; - int LogoCount = 0; - int SoundCount = 0; - int CalAdrCount = 0; - int CalReqAdrCount = 0; - int FreeBusyCount = 0; - int KeyCount = 0; - int VendorCount = 0; - int XTokenCount = 0; int ItemSeek = 1; - //int intValueSeek = 1; wxString strVer; - // Setup the version string. + // Setup the version string. strVer.Append(wxT("-//Xestia//Address Book Version ")); strVer.Append(wxT(XSDAB_VERSION)); @@ -153,8 +137,6 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){ wxSPropertyNextLine.Remove(0, 1); - //wxSPropertyNextLine.Trim(FALSE); - //ContactLine.Trim(); ContactLine.Append(wxSPropertyNextLine); } else { @@ -225,8 +207,6 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ wxString PropertyValue; wxString PropertyTokens; int intPrevValue = 4; - - //SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue); intPrevValue = 3; @@ -296,9 +276,6 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ wxString PropertyName; wxString PropertyValue; wxString PropertyTokens; - int intPrevValue = 5; - - intPrevValue = 4; ContactDatav3.AddRaw(wxT("X-ADDRESSBOOKSERVER-KIND"), wxSPropertySeg2); @@ -315,9 +292,6 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ wxString PropertyName; wxString PropertyValue; wxString PropertyTokens; - int intPrevValue = 7; - - intPrevValue = 6; ContactDatav3.AddRaw(wxT("X-ADDRESSBOOKSERVER-MEMBER"), wxSPropertySeg2); @@ -656,23 +630,23 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ intPrevValue = 6; - // TODO: Check in value for X-ABLabel and use it if it is there. + // TODO: Check in value for X-ABLabel and use it if it is there. - if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ - ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".EMAIL"), wxSPropertySeg2); - ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("E-mail Address")); - ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-EMAIL"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".EMAIL"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("E-mail Address")); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-EMAIL"), wxSPropertySeg2); - } else { + } else { - ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".EMAIL"), wxSPropertySeg2); - ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("E-mail Address")); - ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-EMAIL;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".EMAIL"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("E-mail Address")); + ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-EMAIL;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); - } + } - ItemSeek++; + ItemSeek++; } else if (wxSProperty == wxT("IMPP")){ @@ -708,7 +682,7 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ } - ItemSeek++; + ItemSeek++; } else if (wxSProperty == wxT("TEL")){ @@ -735,7 +709,6 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ int intSplitsFound = 0; int intSplitSize = 0; int intPrevValue = 5; - int intType = 0; int intSplitPoint = 0; intPrevValue = 4; @@ -834,16 +807,6 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ TelTypeUI.Append(wxT(",")); } - - if (TypePropertyName == wxT("home")){ - - intType = 1; - - } else if (TypePropertyName == wxT("work")){ - - intType = 2; - - } if (TypePropertyName == wxT("text")){ @@ -895,8 +858,6 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ } else if (TypePropertyName == wxT("textphone")){ - //if (!TelTypeOut.IsEmpty()){ TelTypeOut.Append(wxT(";")); } - if (!FinalFriendlyString.IsEmpty()){ FinalFriendlyString.Append(_(", Textphone")); } else { FinalFriendlyString.Append(_("Textphone")); } TelTypeOut.Append(wxT(";")); @@ -958,15 +919,15 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ intPrevValue = 5; - if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ - ContactDatav3.AddRaw(wxT("X-VCARD4-LANG"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-LANG"), wxSPropertySeg2); - } else { + } else { - ContactDatav3.AddRaw(wxT("X-VCARD4-LANG;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-LANG;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); - } + } } else if (wxSProperty == wxT("GEO")){ @@ -1001,15 +962,15 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ } - if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ - ContactDatav3.AddRaw(wxT("X-VCARD4-GEO;X-GEOTYPE=") + strFinalType, wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-GEO;X-GEOTYPE=") + strFinalType, wxSPropertySeg2); - } else { + } else { - ContactDatav3.AddRaw(wxT("X-VCARD4-GEO;X-GEOTYPE=") + strFinalType + wxT(";") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-GEO;X-GEOTYPE=") + strFinalType + wxT(";") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); - } + } } else if (wxSProperty == wxT("RELATED")){ @@ -1358,15 +1319,15 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ intPrevValue = 11; - if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ - ContactDatav3.AddRaw(wxT("X-VCARD4-CATEGORIES"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-CATEGORIES"), wxSPropertySeg2); - } else { + } else { - ContactDatav3.AddRaw(wxT("X-VCARD4-CATEGORIES;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-CATEGORIES;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); - } + } } else if (wxSProperty == wxT("PHOTO")) { @@ -1568,15 +1529,15 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ intPrevValue = 7; - if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ - ContactDatav3.AddRaw(wxT("X-VCARD4-CALURI"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-CALURI"), wxSPropertySeg2); - } else { + } else { - ContactDatav3.AddRaw(wxT("X-VCARD4-CALURI;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-CALURI;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); - } + } } else if (wxSProperty == wxT("CALADRURI")){ @@ -1591,15 +1552,15 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ intPrevValue = 10; - if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ - ContactDatav3.AddRaw(wxT("X-VCARD4-CALADRURI"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-CALADRURI"), wxSPropertySeg2); - } else { + } else { - ContactDatav3.AddRaw(wxT("X-VCARD4-CALADRURI;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-CALADRURI;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); - } + } } else if (wxSProperty == wxT("FBURL")){ @@ -1614,15 +1575,15 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ intPrevValue = 6; - if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ - ContactDatav3.AddRaw(wxT("X-VCARD4-FBURL"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-FBURL"), wxSPropertySeg2); - } else { + } else { - ContactDatav3.AddRaw(wxT("X-VCARD4-FBURL;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-FBURL;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); - } + } } else if (wxSProperty == wxT("KEY")){ @@ -1637,15 +1598,15 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ intPrevValue = 4; - if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ - ContactDatav3.AddRaw(wxT("X-VCARD4-KEY"), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-KEY"), wxSPropertySeg2); - } else { + } else { - ContactDatav3.AddRaw(wxT("X-VCARD4-KEY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-KEY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); - } + } } else if (wxSProperty == wxT("UID")){ @@ -1671,30 +1632,84 @@ bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){ } - if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ - ContactDatav3.AddRaw(wxT("X-VCARD4-") + wxSProperty, wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-") + wxSProperty, wxSPropertySeg2); - } else { + } else { - ContactDatav3.AddRaw(wxT("X-VCARD4-") + wxSProperty + wxT(";") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-") + wxSProperty + wxT(";") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); - } + } } else if (wxSProperty.Mid(0, 2) == wxT("X-")){ size_t intPrevValue = (wxSProperty.Len() + 1); - if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxSProperty, wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxSProperty + wxT(";") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } else if (wxSProperty.Mid(0, 12) == wxT("CLIENTPIDMAP")){ + + // Process the Client PID maps. + + int intPrevValue = 14; + + intPrevValue = 12; + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-CLIENTPIDMAP"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-CLIENTPIDMAP;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + + } else if (wxSProperty.Mid(0, 3) == wxT("XML")){ + + // Process the XML values. + + int intPrevValue = 5; + + intPrevValue = 3; + + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ - ContactDatav3.AddRaw(wxSProperty, wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-XML"), wxSPropertySeg2); - } else { + } else { - ContactDatav3.AddRaw(wxSProperty + wxT(";") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + ContactDatav3.AddRaw(wxT("X-VCARD4-XML;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); - } + } + + } else if (wxSProperty.Mid(0, 6) == wxT("SOURCE")){ + + // Process the source links. + + int intPrevValue = 8; + + intPrevValue = 6; + if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){ + + ContactDatav3.AddRaw(wxT("X-VCARD4-SOURCE"), wxSPropertySeg2); + + } else { + + ContactDatav3.AddRaw(wxT("X-VCARD4-SOURCE;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2); + + } + } // Reset the variables.