亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? vcardconverter.cpp

?? funambol windows mobile plugin source code, the source code is taken from the funambol site
?? CPP
字號:
/*
 * Copyright (C) 2003-2007 Funambol, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY, TITLE, NONINFRINGEMENT 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 this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
 * 02111-1307  USA
 */


#include "vocl/vCard/vCardConverter.h"
#include "base/util/WString.h"

vCardConverter::vCardConverter() {
    vCard = NULL;
    contact = NULL;
}

vCardConverter::~vCardConverter() {
    if (vCard) {
        delete [] vCard; vCard = NULL;
    }
    if (contact) {
        delete contact; contact = NULL;
    }
}

void vCardConverter::setSource(WCHAR* inputCard) {
    if(vCard) {
        delete[] vCard;
        vCard = NULL;
    }
    if(inputCard) {
        vCard = new WCHAR[wcslen(inputCard) + 1];
        wcscpy(vCard, inputCard);
    }
    if(contact) {
        delete contact; contact = NULL;
    }
}

void vCardConverter::setSource(Contact& inputContact) {
    if(contact)
        delete contact;

    contact = inputContact.clone();

    if(vCard) {
        delete [] vCard; vCard = NULL;
    }
}

void vCardConverter::getvCard(WCHAR* outputCard) {
    if(vCard) {
        if(!outputCard)
            return;
        wcscpy(outputCard, vCard);
    }
    else
        outputCard = NULL;
}

void vCardConverter::getContact(Contact** outputContact) {
    if(contact) {
        *outputContact = contact->clone();
    }
    else
        *outputContact = NULL;
}

bool vCardConverter::convert(WString& errorDescription, long* errorCode) {
    errorDescription = TEXT("");
    *errorCode = ERROR_SUCCESS;

    if(!contact && !vCard)
        return false;
    if(contact && vCard)
        return true;
    if(contact) {
        vCard = contact->toString();
        if (!validate((VObject*) contact, errorDescription, errorCode)) {
            delete [] vCard; vCard = NULL;
        }
    }
    if (vCard) {
        WCHAR* vCardCopy = new WCHAR[wcslen(vCard) + 1];
        vCardCopy =  vCard;
        Contact* invalidatedContact = (Contact*)VConverter::parse(vCardCopy);
        if (invalidatedContact && validate((VObject*)invalidatedContact, errorDescription, errorCode))
            contact = invalidatedContact->clone();
        else
            return false;
        delete invalidatedContact; invalidatedContact = NULL;
    }

   return true;
}

bool vCardConverter::validate(VObject* vObject, WString& errorDescription, long* errorCode) {

    //validate begin, end, N and FN properties
    if(wcscmp(vObject->getProperty(0)->getName(), TEXT("BEGIN")) ||
        wcscmp(vObject->getProperty(0)->getValue(), TEXT("VCARD"))) {
        *errorCode = ERROR_KEY_PROPERTY_MISSING;
        errorDescription =  TEXT("'BEGIN' property is missing");
        return false;
        }
    if(wcscmp(vObject->getProperty(vObject->propertiesCount()-1)->getName(), TEXT("END")) ||
        wcscmp(vObject->getProperty(vObject->propertiesCount()-1)->getValue(), TEXT("VCARD"))) {
        *errorCode = ERROR_KEY_PROPERTY_MISSING;
        errorDescription =  TEXT("'END' property is missing");
        return false;
        }
    if(!vObject->containsProperty(TEXT("N"))) {
        *errorCode = ERROR_KEY_PROPERTY_MISSING;
        errorDescription =  TEXT("'N' property is missing");
        return false;
    }
    if(!vObject->containsProperty(TEXT("FN"))) {
        *errorCode = ERROR_KEY_PROPERTY_MISSING;
        errorDescription =  TEXT("'FN' property is missing");
        return false;
    }

    //validate the version and then each property according with version
    if(vObject->containsProperty(TEXT("VERSION"))) {
        if(!vObject->getProperty(TEXT("VERSION"))->getValue()) {
            *errorCode = ERROR_ILLEGAL_VERSION_NUMBER;
            errorDescription =  TEXT("Version number is missing");
            return false;
        }
        if(!wcscmp(vObject->getProperty(TEXT("VERSION"))->getValue(), TEXT("2.1")))
            for(int i = 0; i < vObject->propertiesCount(); i++) {
                if(!validateProperty21(vObject->getProperty(i), errorDescription, errorCode))
                    return false;
            }
        else if(!wcscmp(vObject->getProperty(TEXT("VERSION"))->getValue(), TEXT("3.0"))) {
            for(int i = 0; i < vObject->propertiesCount(); i++) {
                if(!validateProperty30(vObject->getProperty(i), errorDescription, errorCode))
                    return false;
            }
        }
        //VERSION property is neither 2.1 nor 3.0
        else {
            *errorCode = ERROR_ILLEGAL_VERSION_NUMBER;
            errorDescription = TEXT("Illegal version number : %s");
            errorDescription += vObject->getProperty(TEXT("VERSION"))->getValue();
            return false;
        }
    }
    //Version property is missing
    else {
        *errorCode = ERROR_KEY_PROPERTY_MISSING;
        errorDescription =  TEXT("'VERSION' property is missing");
        return false;
    }

    return true;
}

bool vCardConverter::validateProperty21(VProperty* prop, WString& errorDescription, long* errorCode) {

    if(!wcsstr(VCARD21_PROPERTIES_LIST, prop->getName()) &&
        wcsstr(prop->getName(),TEXT("X-")) != prop->getName()) {
        *errorCode = ERROR_ILLEGAL_PROPERTY_NAME;
        errorDescription = TEXT("Illegal property name : %s");
        errorDescription += prop->getName();
        return false;
    }

    //The default encoding for the vCard object is 7-Bit.
    //It can be overridden for an individual property value by using the 揈NCODING

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产无天堂网2021| 日韩二区三区四区| 欧美日韩视频不卡| 国产在线麻豆精品观看| 一区二区三区毛片| 国产无遮挡一区二区三区毛片日本| 91成人免费在线视频| 国产成人高清视频| 人禽交欧美网站| 亚洲最快最全在线视频| 国产精品视频免费| 精品99一区二区三区| 正在播放亚洲一区| 99精品视频在线观看免费| 国产乱码精品一区二区三区忘忧草| 午夜影院久久久| 亚洲免费看黄网站| 亚洲特黄一级片| 国产精品护士白丝一区av| 久久综合99re88久久爱| 日韩一卡二卡三卡| 欧美日韩国产色站一区二区三区| 97aⅴ精品视频一二三区| 高清国产一区二区| 国产美女视频一区| 精品影视av免费| 日韩国产精品久久| 午夜精品久久一牛影视| 亚洲国产精品综合小说图片区| 中文字幕在线不卡视频| 国产免费成人在线视频| 久久精品欧美日韩| 久久日一线二线三线suv| 日韩精品一区二区三区四区视频| 欧美一区午夜精品| 91精品国产一区二区| 欧美剧情片在线观看| 欧美日韩国产小视频在线观看| 欧美日韩一级片在线观看| 欧美亚洲国产bt| 欧美日韩高清不卡| 日韩一区二区免费高清| 欧美成人vr18sexvr| 久久在线观看免费| 欧美激情一区二区三区不卡| 国产精品视频看| 亚洲欧美激情插| 亚洲综合久久av| 亚洲韩国精品一区| 日韩精品久久久久久| 久久国产精品免费| 国产伦精品一区二区三区免费迷| 国产精品亚洲视频| 99精品久久只有精品| 欧美午夜电影在线播放| 欧美日产国产精品| 2023国产一二三区日本精品2022| 国产清纯白嫩初高生在线观看91 | 成人av资源下载| 97se亚洲国产综合在线| 在线观看网站黄不卡| 欧美丰满嫩嫩电影| 337p日本欧洲亚洲大胆色噜噜| 国产欧美视频在线观看| 亚洲精品ww久久久久久p站| 亚洲国产毛片aaaaa无费看| 九一久久久久久| 成人av影视在线观看| 在线看日韩精品电影| 日韩欧美一级特黄在线播放| 欧美激情一区三区| 亚洲一线二线三线视频| 精品无人码麻豆乱码1区2区| 99久免费精品视频在线观看| 欧美日韩黄色一区二区| 久久精品视频在线看| 亚洲精品自拍动漫在线| 日韩国产欧美在线视频| 成人做爰69片免费看网站| 精品婷婷伊人一区三区三| 久久久亚洲国产美女国产盗摄 | 中文av一区特黄| 一区二区三区免费| 国产精品综合二区| 欧美特级限制片免费在线观看| 久久品道一品道久久精品| 亚洲福利视频导航| 丰满少妇久久久久久久| 欧美精品第一页| 国产精品久久一卡二卡| 久久成人久久爱| 在线日韩一区二区| 久久久久久久国产精品影院| 亚洲一区二区三区四区五区中文| 国产成人免费视| 这里只有精品电影| 一区二区三区四区五区视频在线观看| 国产资源在线一区| 欧美久久久久久蜜桃| 最新欧美精品一区二区三区| 久久精品国产成人一区二区三区| 色av成人天堂桃色av| 国产喂奶挤奶一区二区三区| 欧美aaa在线| 欧美日韩日日摸| 1区2区3区欧美| 国产激情偷乱视频一区二区三区| 在线播放/欧美激情| 尤物在线观看一区| caoporn国产一区二区| ww亚洲ww在线观看国产| 午夜精品久久久| 日本高清视频一区二区| 中文字幕一区二区三区不卡 | 91在线视频网址| 26uuu色噜噜精品一区二区| 日韩二区三区四区| 欧美日韩一区二区不卡| 亚洲综合无码一区二区| 99久久精品免费看国产| 国产精品电影院| 成人h精品动漫一区二区三区| 久久免费的精品国产v∧| 久久国产尿小便嘘嘘| 91精品欧美久久久久久动漫| 婷婷成人综合网| 欧美日韩国产中文| 无码av免费一区二区三区试看| 在线观看区一区二| 亚洲午夜羞羞片| 欧美三级一区二区| 午夜精品一区二区三区电影天堂 | 在线不卡a资源高清| 亚洲午夜电影网| 欧美日韩久久久久久| 性久久久久久久久| 欧美高清视频一二三区| 日本亚洲一区二区| 日韩一区二区精品在线观看| 奇米精品一区二区三区四区 | 中文字幕乱码亚洲精品一区| 福利一区二区在线| 最新热久久免费视频| 欧美在线视频你懂得| 日韩精品亚洲专区| 日韩欧美一级二级三级久久久| 久久av老司机精品网站导航| 久久伊99综合婷婷久久伊| 国产成人av一区二区三区在线观看| 久久精品在这里| av电影在线观看一区| 亚洲精品视频一区| 91精品欧美一区二区三区综合在| 蜜芽一区二区三区| 国产亚洲欧美中文| 91在线免费视频观看| 亚洲图片欧美综合| 精品国产网站在线观看| 国产99精品国产| 亚洲精品伦理在线| 91精品久久久久久蜜臀| 国产经典欧美精品| 一区二区三区高清在线| 欧美一区二区三区在线观看 | 中文字幕第一区第二区| 91香蕉视频mp4| 亚洲va韩国va欧美va| 精品av综合导航| 91蜜桃视频在线| 蜜臀av性久久久久蜜臀aⅴ四虎 | 五月激情丁香一区二区三区| 精品国产乱码久久久久久久久| www.亚洲激情.com| 丝袜诱惑亚洲看片| 中文子幕无线码一区tr| 欧美乱熟臀69xxxxxx| 成人中文字幕电影| 视频在线观看一区二区三区| 国产视频在线观看一区二区三区 | 亚洲国产精品成人综合色在线婷婷| 日本电影亚洲天堂一区| 看片的网站亚洲| 一区二区三区四区av| 久久久美女毛片| 欧美欧美欧美欧美首页| 成人蜜臀av电影| 奇米影视一区二区三区| 亚洲裸体在线观看| 久久亚洲欧美国产精品乐播 | 欧美色偷偷大香| 国产激情视频一区二区三区欧美| 亚洲h精品动漫在线观看| 中文字幕欧美日韩一区| 91精品国产欧美一区二区成人| 91丨porny丨最新| 国产精一品亚洲二区在线视频| 婷婷六月综合亚洲| 亚洲精品国产一区二区三区四区在线 | 捆绑调教美女网站视频一区| 亚洲欧洲日韩女同|