+// 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 <http://www.gnu.org/licenses/>
+
#include "vcard34conv.h"
#include "vcard.h"
#include "../version.h"
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")){
}
- ItemSeek++;
+ ItemSeek++;
} else if (wxSProperty == wxT("TEL")){
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")){
}
- 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")){
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")) {
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")){
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")){
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")){
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")){
}
- 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(wxSProperty, wxSPropertySeg2);
+ ContactDatav3.AddRaw(wxT("X-VCARD4-CLIENTPIDMAP"), wxSPropertySeg2);
- } else {
+ } else {
- ContactDatav3.AddRaw(wxSProperty + wxT(";") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+ 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(wxT("X-VCARD4-XML"), wxSPropertySeg2);
+
+ } else {
+
+ 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.