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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vproperty.cpp

?? funambol windows mobile plugin source code, the source code is taken from the funambol site
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*
 * 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 "base/util/utils.h"
#include "base/util/WString.h"
#include "vocl/VProperty.h"
#include "base/quoted-printable.h"

VProperty::VProperty(const WCHAR* propname, const WCHAR* propvalue) {

    name = (propname) ? wstrdup(propname) : NULL;

    parameters = new ArrayList();
	values     = new ArrayList();
    valueBuf   = NULL;

	if (propvalue) {
        WString wsVal = propvalue;
		values->add((ArrayElement&)wsVal);
	}
}

VProperty::~VProperty() {

    if (name) {
        delete [] name; name = NULL;
    }
    if (parameters) {
        delete parameters; parameters = NULL;
    }
    if (values) {
        delete values; values = NULL;
    }
    if (valueBuf) {
        delete [] valueBuf; valueBuf = NULL;
    }
}

void VProperty::setName (const WCHAR* s) {

    set(&name, s);
}


WCHAR* VProperty::getName(WCHAR* buf, int size) {

    if (buf == NULL) {
        return name;
    }

    if (size >= 0) {
        wcsncpy(buf, name, size);
    }
    else {
        wcscpy(buf, name);
    }

    return buf;
}

void VProperty::addValue(const WCHAR* value) {

    // Empty strings are accepted
    if(value) {
        WString wsVal = value;
		values->add((ArrayElement &)wsVal);
    }
}

bool VProperty::removeValue(const int index) {

	bool ret = false;
	if (values != NULL) {
		values->removeElementAt(index);
                ret = true;
    }
	return ret;
}

// Returned value is a pointer to internal buffer,
// copy it if must have a different life cycle.
WCHAR* VProperty::getValue(int index) {

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

    WString* wsValue = (WString*)values->get(index);
    if (wsValue) {
        valueBuf = new WCHAR[wsValue->length() + 1];
        wcscpy(valueBuf, wsValue->c_str());
    }

    return valueBuf;
}

int VProperty::valueCount() {

    return values->size();
}


////////// Only for compatibility
WCHAR* VProperty::getValue(WCHAR* buf) {

    if (!buf) {
        return getValue(0);
    }

    WString* wsValue = (WString*)values->get(0);
    if (wsValue) {
        wcscpy(buf, wsValue->c_str());
    }
    return buf;
}


void VProperty::setValue(const WCHAR* value) {

    addValue(value);

}

WCHAR* VProperty::getPropComponent(int i) {

    return getValue(i-1);
}
//////////////////////////////////


void VProperty::addParameter (const WCHAR* paramName, const WCHAR* paramValue) {

    if(paramName) {
    WKeyValuePair *parameter = new WKeyValuePair(paramName, paramValue);
    parameters->add((ArrayElement &)*parameter);

    delete parameter; parameter = NULL;
    }
}

void VProperty::removeParameter(WCHAR* paramName) {

    if (parameters != NULL) {
        for (int i=0; i<parameters->size(); i++){
            WKeyValuePair *parameter;
            parameter = (WKeyValuePair* )parameters->get(i);
            if(!wcscmp(parameter->getKey(), paramName)) {
                parameters->removeElementAt(i);
                break;
            }
        }
    }
}
bool VProperty::containsParameter(WCHAR* paramName) {

    if (parameters != NULL) {
        for (int i=0; i<parameters->size(); i++){
            WKeyValuePair *parameter;
            parameter = (WKeyValuePair* )parameters->get(i);
            if(!wcscmp(parameter->getKey(), paramName)){
                return true;
            }
        }
    }

    return false;
}
WCHAR* VProperty::getParameterValue(WCHAR* paramName) {

    if (parameters != NULL) {
	    for (int i=0; i<parameters->size(); i++) {
            WKeyValuePair *parameter;
            parameter = (WKeyValuePair* )parameters->get(i);
            if(!wcscmp(parameter->getKey(), paramName))
                return ((WCHAR *)parameter->getValue());
        }
    }

    return NULL;
}
WCHAR* VProperty::getParameterValue(int index) {

    if (parameters != NULL) {
        WKeyValuePair *parameter;
        parameter = (WKeyValuePair*)parameters->get(index);
        return parameter ? (WCHAR *)parameter->getValue() : NULL;
    }

    return NULL;
}

void VProperty::set(WCHAR** p, const WCHAR* v) {

    if (*p) {
        delete [] *p;
    }
    *p = (v) ? wstrdup(v) : NULL;
}

ArrayElement* VProperty::clone() {

    if(name) {

        VProperty *cloneProperty = new VProperty(name);

		if(values != NULL) {
			for (int i=0; i<valueCount(); i++) {
				WString* valueCopy = (WString*)values->get(i)->clone();
				cloneProperty->addValue(valueCopy->c_str());
			}
		}

        if (parameters != NULL) {
            for (int i=0; i<parameters->size(); i++) {
                WKeyValuePair* parameterCopy;
                parameterCopy = (WKeyValuePair*)parameters->get(i)->clone();
                cloneProperty->addParameter(parameterCopy->getKey(), parameterCopy->getValue());
                delete parameterCopy;
            }
        }
        return cloneProperty;
    }
    return NULL;
}

int VProperty::parameterCount() {

    return parameters->size();
}


/*
 * Returns a WCHAR* string of this VProperty, based on vCard-vCal specifications.
 * Here values of the property are encoded / special chars are escaped according to
 * vCard-vCal 2.1/3.0 specifications.
 * @param version: vCard version "2.1" or "3.0" - we have different specs
 *                 (if not defined, default will be 2.1)
 *
 * Note:
 * The returned WCHAR* is new allocated, must be freed by the caller.
 */
WCHAR* VProperty::toString(WCHAR* version) {

    bool is_30 = false;
    if (version) {
        is_30 = !wcscmp(version, TEXT("3.0"));
    }

    WString propertyString = TEXT("");
    bool isToFormatValue = true;

    if (!name){
        goto finally;
    }
    
    if (parameterCount()>0 && containsParameter(TEXT("CONTENT-VALUE"))) {
        WCHAR* parVal = getParameterValue(TEXT("CONTENT-VALUE"));
        if (parVal != NULL && wcscmp(parVal, TEXT("UNCHANGED")) == 0) 
            isToFormatValue = false;
        
    }

    // Set encoding (QP/B64) parameter if necessary
    // QP encoding not allowed for vCard 3.0 (RFC 2426)
    if (is_30) {
        if (isToFormatValue) {
            if(!equalsEncoding(TEXT("BASE64")) &&
               !equalsEncoding(TEXT("B")) &&
               !equalsEncoding(TEXT("b")) ) {
                for (int i=0; i<valueCount(); i++) {
                    char* charValue = toMultibyte(getValue(i));
                    if (encodingIsNeed(charValue)) {
                        addParameter(TEXT("ENCODING"), TEXT("b"));
                        delete [] charValue;
                        break;
                    }
                }
            }
        }
    }
    else {               
        if (isToFormatValue) {
            if (!equalsEncoding(TEXT("QUOTED-PRINTABLE")) ) {
                for (int i=0; i<valueCount(); i++) {
                    char* charValue = toMultibyte(getValue(i));
                    if (encodingIsNeed(charValue)) {
                        addParameter(TEXT("ENCODING"), TEXT("QUOTED-PRINTABLE"));
	                    addParameter(TEXT("CHARSET"), TEXT("UTF-8"));
                        delete [] charValue;
                        break;
                    }
                    delete [] charValue;
                }
            }
        }
    }


    //
    // Write Group:
    //
    if (parameterCount()>0 && containsParameter(TEXT("GROUP"))) {
        propertyString.append(getParameterValue(TEXT("GROUP")));
        propertyString.append(TEXT("."));
    }

    //
    // Write name:
    //
    propertyString.append(name);

    //
	// Write parameters:
    //
    if(parameterCount()>0) {
        for (int i=0; i<parameterCount(); i++) {
            WKeyValuePair *parameter;
            parameter = (WKeyValuePair*)parameters->get(i);
            if (parameter->getKey()) {
                if (!wcscmp(parameter->getKey(), TEXT("GROUP"))) {
                    continue;
                }
                // for the custom value 
                if (!wcscmp(parameter->getKey(), TEXT("CONTENT-VALUE"))) {
                    continue;
                }
                propertyString.append(TEXT(";"));
                propertyString.append(parameter->getKey());
		    }
            if (parameter->getValue()) {
                propertyString.append(TEXT("="));
                propertyString.append(parameter->getValue());
            }
        }
    }

    //
    // Write values:
    //
    propertyString.append(TEXT(":"));
    if(valueCount()>0) {
        WString valueString = TEXT("");
        
        if (isToFormatValue) {
            // Get all values in one single string
            WCHAR *value, *valueConv;
            for (int i=0; i<valueCount(); i++) {
                if (i>0) {
                    valueString.append(TEXT(";"));
                }
                value = getValue(i);

                // Escape special chars - based on version (";"  "\", ",")
                valueConv = escapeSpecialChars(value, version);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区四区精品在线视频| 欧美大片在线观看| 最近日韩中文字幕| jvid福利写真一区二区三区| 亚洲国产成人自拍| 91一区一区三区| 亚洲影视在线播放| 日韩一区二区三区电影 | 亚洲四区在线观看| 日本精品视频一区二区三区| 午夜欧美在线一二页| 精品福利二区三区| 成人午夜激情片| 一区二区高清视频在线观看| 欧美一区二区啪啪| 韩国精品主播一区二区在线观看| 国产日韩欧美一区二区三区乱码| 972aa.com艺术欧美| 亚洲已满18点击进入久久| 欧美一二三区在线观看| 粉嫩蜜臀av国产精品网站| 亚洲精品视频在线观看免费| 3d成人动漫网站| 高清成人在线观看| 亚洲一区二区在线观看视频| 精品国产精品网麻豆系列| 成人白浆超碰人人人人| 午夜视黄欧洲亚洲| 中文字幕av一区二区三区| 欧美视频第二页| 国产精品亚洲成人| 婷婷开心激情综合| 国产精品久久久久久亚洲伦| 欧美久久久久久久久中文字幕| 国产激情视频一区二区在线观看| 亚洲国产精品久久不卡毛片 | 欧美日韩高清在线| 国产白丝精品91爽爽久久| 亚洲v日本v欧美v久久精品| 久久久久国产精品人| 欧美亚洲免费在线一区| 国产乱码精品一区二区三区av| 一区二区三区成人| 欧美激情一二三区| 日韩你懂的在线观看| 91亚洲资源网| 国产精品123| 日本欧美一区二区在线观看| 亚洲日本在线看| 久久久久国产精品厨房| 欧美一区午夜视频在线观看| 色呦呦国产精品| 大胆亚洲人体视频| 九九国产精品视频| 丝袜美腿亚洲综合| 一区二区久久久久久| 国产精品大尺度| 久久网站热最新地址| 91精品国产麻豆| 在线视频中文字幕一区二区| 成人夜色视频网站在线观看| 国产一区二区三区电影在线观看| 视频在线观看91| 亚洲福利一区二区| 亚洲综合色视频| 一区二区三区国产精华| 亚洲人成精品久久久久久| 国产亚洲欧美日韩日本| 精品国精品国产| 日韩欧美一级二级三级| 在线91免费看| 欧美日韩国产精品成人| 欧美日本视频在线| 91精品国产综合久久小美女 | 91精品国产综合久久精品图片| 日本高清不卡视频| 日本韩国一区二区| 在线精品观看国产| 91国产精品成人| 91久久精品午夜一区二区| 91黄色激情网站| 91久久精品一区二区三区| 欧美艳星brazzers| 88在线观看91蜜桃国自产| 欧美一区二区二区| 欧美mv日韩mv国产| 久久久久久久电影| 色视频一区二区| 成人app在线观看| 成人精品免费网站| 91色视频在线| 欧美在线视频日韩| 欧美日韩成人激情| 日韩亚洲电影在线| www久久久久| 国产精品麻豆网站| 亚洲美女区一区| 首页国产丝袜综合| 美女在线观看视频一区二区| 国产专区欧美精品| 成人aaaa免费全部观看| 日本久久一区二区| 日韩亚洲欧美高清| 中文字幕精品一区二区精品绿巨人| 亚洲欧洲成人av每日更新| 亚洲一区在线观看视频| 日本亚洲一区二区| 国产成人丝袜美腿| 欧美专区亚洲专区| 精品国产伦一区二区三区观看方式| 国产亚洲欧美色| 亚洲一区电影777| 久久91精品国产91久久小草| 成人av网址在线观看| 欧美日韩在线一区二区| 91精品国产福利在线观看| 国产精品丝袜一区| 香蕉加勒比综合久久| 国产成人在线电影| 欧美日韩精品一区二区| 国产亚洲一本大道中文在线| 亚洲精品少妇30p| 黄一区二区三区| 欧美中文字幕一区二区三区亚洲| 精品国产乱码久久久久久老虎 | 精品盗摄一区二区三区| 国产精品你懂的在线欣赏| 三级精品在线观看| 懂色av一区二区三区免费观看| 欧美精品乱人伦久久久久久| 国产精品色眯眯| 日本欧美韩国一区三区| 一本久道久久综合中文字幕| 久久久欧美精品sm网站| 天堂va蜜桃一区二区三区| 91日韩在线专区| 久久日一线二线三线suv| 亚洲成人激情社区| av影院午夜一区| 26uuu成人网一区二区三区| 性做久久久久久免费观看| 99riav久久精品riav| 精品免费视频一区二区| 亚洲国产欧美日韩另类综合| 成人精品免费看| 久久一区二区三区四区| 日本欧美在线观看| 欧美视频一区二区三区四区| 亚洲欧美综合另类在线卡通| 国产精品系列在线观看| 日韩午夜电影在线观看| 亚洲观看高清完整版在线观看| 99久久精品国产麻豆演员表| 久久精品一区八戒影视| 久久99精品国产91久久来源| 在线不卡欧美精品一区二区三区| 国产精品久久看| 成人avav在线| 国产精品麻豆99久久久久久| 国产精品香蕉一区二区三区| 久久午夜电影网| 国产乱码精品一区二区三区av| 日韩女优毛片在线| 久久69国产一区二区蜜臀| 日韩一二三四区| 麻豆成人久久精品二区三区小说| 欧美一区二区观看视频| 日韩成人av影视| 欧美一区二区三区的| 人禽交欧美网站| 欧美一级一区二区| 青青草国产成人av片免费| 911精品国产一区二区在线| 人妖欧美一区二区| 日韩精品中文字幕一区| 蜜桃91丨九色丨蝌蚪91桃色| 日韩欧美国产综合一区| 久热成人在线视频| 久久久久久亚洲综合影院红桃 | 亚洲色图制服诱惑| 91福利社在线观看| 亚洲大片精品永久免费| 欧美伦理视频网站| 久久精品国产久精国产| 亚洲精品一区二区三区四区高清 | 日本不卡在线视频| 日韩欧美一区二区在线视频| 精品一区二区三区免费| 国产欧美一区二区精品性色 | 美女网站在线免费欧美精品| 日韩精品一区二区三区视频播放| 经典三级在线一区| 中文无字幕一区二区三区| 91尤物视频在线观看| 亚洲国产另类精品专区| 精品国产乱码久久久久久牛牛| 丰满岳乱妇一区二区三区| 一区二区免费看| 日韩欧美国产三级| 成人午夜激情视频|