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

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

?? winevent.cpp

?? funambol windows mobile plugin source code, the source code is taken from the funambol site
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
    //
    WCHAR* tmp = vo->toString();
    if (tmp) {
        vCalendar = tmp;
        delete [] tmp;
    }
    return vCalendar;
}




//
// Parse a vCalendar string and fills the propertyMap.
//
int WinEvent::parse(const wstring dataString) {

    WCHAR* element = NULL;
    DATE startDate = NULL;
    DATE endDate   = NULL;
    wstring startDateValue, endDateValue;

    //
    // Parse the vCalendar and fill the VObject.
    // -----------------------------------------
    //
    VObject* vo = VConverter::parse(dataString.c_str());
    if (!vo) {
        sprintf(lastErrorMsg, ERR_ITEM_VOBJ_PARSE);
        LOG.error(lastErrorMsg);
        return 1;
    }
    // Check if VObject type and version are the correct ones.
    if (!checkVCalendarTypeAndVersion(vo)) {
        if (vo) delete vo;
        return 1;
    }


    //
    // Conversion: vObject -> WinEvent.
    // --------------------------------
    // Note: properties found are added to the propertyMap, so that the 
    //       map will contain only parsed properties after this process.
    //
    if(element = getVObjectPropertyValue(vo, L"SUMMARY")) {
        setProperty(L"Subject", element);
    }
    if(element = getVObjectPropertyValue(vo, L"LOCATION")) {
        setProperty(L"Location", element);
    }
    if(element = getVObjectPropertyValue(vo, L"DESCRIPTION")) {
        setProperty(L"Body", element);
    }
    if(element = getVObjectPropertyValue(vo, L"X-FUNAMBOL-FOLDER")) {
        setProperty(L"Folder", element);
    }

    //
    // DTSTART, DTEND:
    // Set the start and end date. If the start is 00:00 and end is 23:59 the appointment is decided to be
    // an all day event. So the AllDayEvent property is set to '1' in the propertyMap.
    //
    if(element = getVObjectPropertyValue(vo, L"DTSTART")){
        startDateValue = element;
        stringTimeToDouble(element, &startDate);            // 'startDate' will be used also for RRULE parsing
    }
    if(element = getVObjectPropertyValue(vo, L"DTEND")) {
        endDateValue = element;
        stringTimeToDouble(element, &endDate);
    }

    if (startDate && endDate) {
        // ALL-DAY EVENT
        bool isAllDay = false;
        if(element = getVObjectPropertyValue(vo, L"X-FUNAMBOL-ALLDAY")){
            isAllDay = wcscmp(element, L"1")?  false : true;
        }
        if (!isAllDay) {
            // All-day check #2: interval [00:00 - 23:59]
            isAllDay = isAllDayInterval(startDate, endDate);
        }
        if (!isAllDay) {
            // All-day check #3: format "yyyyMMdd"
            if (startDateValue.size() == 8 && endDateValue.size() == 8 ) {
                isAllDay = true;
            }
        }

        if (isAllDay) {
            // Safe check on endDate: min value is 'startDate + 1'
            if (endDate <= startDate) {
                endDate = startDate + 1;
                doubleToStringTime(endDateValue, endDate, true);
            }
        }
        setProperty(L"Start",       startDateValue       );
        setProperty(L"End",         endDateValue         );
        setProperty(L"AllDayEvent", isAllDay? L"1" : L"0");
    }


    if(element = getVObjectPropertyValue(vo, L"X-MICROSOFT-CDO-BUSYSTATUS")) {
        setProperty(L"BusyStatus", element);
    }
    if(element = getVObjectPropertyValue(vo, L"CATEGORIES")) {
        setProperty(L"Categories", element);
    }
    if(element = getVObjectPropertyValue(vo, L"CLASS")) {
        WCHAR tmp[10];
        if( !wcscmp(element, TEXT("PRIVATE"     )) || 
            !wcscmp(element, TEXT("CONFIDENTIAL")) ) {
            wsprintf(tmp, TEXT("%i"), winPrivate);          // Private = 2
        }
        else {
            wsprintf(tmp, TEXT("%i"), winNormal);           // Normal = 0
        }
        setProperty(L"Sensitivity", tmp);
    }
    if(element = getVObjectPropertyValue(vo, L"PRIORITY")) {
        setProperty(L"Importance", element);
    }
    if(element = getVObjectPropertyValue(vo, L"STATUS")) {
        setProperty(L"MeetingStatus", element);
    }
    if(element = getVObjectPropertyValue(vo, L"X-MICROSOFT-CDO-REPLYTIME")) {
        setProperty(L"ReplyTime", element);
    }


    // AALARM
    // The value consists of: RunTime, SnoozeTime, RepeatCount, AudioContent
    if(element = getVObjectPropertyValue(vo, L"AALARM")) {
        WCHAR tmp[10];
        WCHAR* runTimeValue = vo->getProperty(TEXT("AALARM"))->getPropComponent(1);
        if (wcslen(runTimeValue) > 0) {
            setProperty(L"ReminderSet", L"1");
            DATE runTime = 0;
            stringTimeToDouble(runTimeValue, &runTime);

            long minBeforeEvent = round((startDate - runTime) * 1440);
            // Safety check: values < 0 not accepted.
            if (minBeforeEvent < 0) {
                minBeforeEvent = 0;
            }
            wsprintf(tmp, TEXT("%i"), minBeforeEvent);
            setProperty(L"ReminderMinutesBeforeStart", tmp);

            // Reminder sound file path
            WCHAR* filePath = vo->getProperty(TEXT("AALARM"))->getPropComponent(4);
            if (filePath && wcslen(filePath)>0) {
                setProperty(L"ReminderSoundFile", filePath);
            }
            else {
                setProperty(L"ReminderSoundFile", L"");
            }
        }
        else {
            // RunTime not found -> no reminder
            setProperty(L"ReminderSet", L"0");
        }
    }


    if(element = getVObjectPropertyValue(vo, L"RRULE")) {
        setProperty(L"IsRecurring", L"1");

        // RRULE -> Recurrence pattern
        // Fill recPattern propertyMap.
        recPattern.parse(element, startDate);

        // EXDATE -> fill excludeDate list
        VProperty* vprop = vo->getProperty(L"EXDATE");
        if(vprop) {
            for (int i=0; element = vprop->getValue(i); i++) {
                if (wcslen(element) > 0) {
                    excludeDate.push_back(element);
                }
            }
        }
        // RDATE -> fill includeDate list
        vprop = vo->getProperty(L"RDATE");
        if(vprop) {
            for (int i=0; element = vprop->getValue(i); i++) {
                if (wcslen(element) > 0) {
                    includeDate.push_back(element);
                }
            }
        }
    }
    else {
        // Not recurring.
        setProperty(L"IsRecurring", L"0");
    }

    //
    // ---- Other Funambol defined properties ----
    // Support for other fields that don't have a
    // specific correspondence in vCalendar.
    if(element = getVObjectPropertyValue(vo, L"X-FUNAMBOL-COMPANIES")) {
        setProperty(L"Companies", element);
    }
    if(element = getVObjectPropertyValue(vo, L"X-FUNAMBOL-MILEAGE")) {
        setProperty(L"Mileage", element);
    }


    return 0;
}


// Utility to check the productID and version of VObject passed.
bool WinEvent::checkVCalendarTypeAndVersion(VObject* vo) {

    WCHAR* prodID  = vo->getProdID();
    WCHAR* version = vo->getVersion();
    if (!prodID || !version) {
        return false;
    }

    if (wcscmp(prodID, L"VCALENDAR")) {
        LOG.error(ERR_ITEM_VOBJ_WRONG_TYPE, prodID, L"VCALENDAR");
        return false;
    }
    if (wcscmp(version, VCALENDAR_VERSION)) {
        // Just log a warning...
        LOG.info(INFO_ITEM_VOBJ_WRONG_VERSION, version, VCALENDAR_VERSION);
    }

    return true;
}


// Utility to safe-retrieve the property value inside VObject 'vo'.
WCHAR* WinEvent::getVObjectPropertyValue(VObject* vo, const WCHAR* propertyName) {

    WCHAR* propertyValue = NULL;
    VProperty* vprop = vo->getProperty(propertyName);
    if (vprop && vprop->getValue()) {
        propertyValue = vprop->getValue();
    }
    return propertyValue;
}



WinRecurrence* WinEvent::getRecPattern() {
    return &recPattern;
}

list<wstring>* WinEvent::getExcludeDates() {
    return &excludeDate;
}

list<wstring>* WinEvent::getIncludeDates() {
    return &includeDate;
}

list<WinRecipient>* WinEvent::getRecipients() {
    return &recipients;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产农村妇女毛片精品久久麻豆| 91小视频免费观看| 婷婷中文字幕综合| 亚洲曰韩产成在线| 亚洲精品伦理在线| 亚洲精品免费一二三区| 综合自拍亚洲综合图不卡区| 欧美国产日韩一二三区| 国产日韩精品视频一区| 国产性色一区二区| 国产精品不卡在线| 亚洲一区二区中文在线| 亚洲综合丁香婷婷六月香| 亚洲男人的天堂一区二区| 亚洲天堂精品视频| 亚洲影视在线观看| 日本成人中文字幕| 韩日精品视频一区| 成人精品亚洲人成在线| 91蜜桃在线免费视频| 色婷婷久久99综合精品jk白丝| 在线区一区二视频| 日韩欧美国产一区二区在线播放 | 午夜私人影院久久久久| 视频一区中文字幕国产| 经典三级一区二区| 99久久er热在这里只有精品15 | 精品久久人人做人人爽| 久久久久久亚洲综合影院红桃| 国产精品欧美久久久久一区二区| 亚洲视频一二三| 日本欧美加勒比视频| 国产麻豆精品95视频| 色婷婷久久综合| 精品国产免费一区二区三区四区 | 国产成人免费在线观看| 99久久精品99国产精品| 4hu四虎永久在线影院成人| 久久综合久久综合久久综合| 国产精品福利在线播放| 日本中文一区二区三区| 国产成人av电影在线观看| 日本精品裸体写真集在线观看| 欧美日韩大陆在线| 国产精品国产三级国产aⅴ原创| 一区二区高清免费观看影视大全| 韩国av一区二区三区| 欧美乱妇23p| 亚洲欧美激情视频在线观看一区二区三区| 日本美女视频一区二区| 91成人免费电影| 亚洲国产精品99久久久久久久久| 午夜欧美在线一二页| 91丨porny丨户外露出| 久久久久久久综合色一本| 亚洲国产成人av网| 色猫猫国产区一区二在线视频| 久久久久久日产精品| 老司机一区二区| 这里只有精品电影| 亚洲亚洲人成综合网络| 不卡大黄网站免费看| 国产欧美精品一区aⅴ影院| 麻豆91免费观看| 制服丝袜激情欧洲亚洲| 一区二区欧美在线观看| 91最新地址在线播放| 国产精品欧美精品| 丁香激情综合国产| 国产性做久久久久久| 国产一区二区三区在线看麻豆| 欧美一二三区在线| 全国精品久久少妇| 日韩欧美在线网站| 喷白浆一区二区| 日韩一区二区三区在线| 免费人成精品欧美精品| 91精品国产高清一区二区三区| 亚洲妇女屁股眼交7| 欧美日韩一级二级三级| 午夜欧美大尺度福利影院在线看| 在线欧美日韩精品| 亚洲大片免费看| 欧美日本精品一区二区三区| 亚洲成人激情社区| 欧美一区二区视频在线观看2020| 日韩综合在线视频| 日韩午夜在线播放| 国产综合一区二区| 欧美激情一区二区三区四区| 成人国产在线观看| 亚洲精品高清在线| 欧美高清www午色夜在线视频| 日日摸夜夜添夜夜添国产精品| 日韩欧美第一区| 成人理论电影网| 亚洲图片欧美一区| 欧美mv日韩mv| 成人av在线播放网站| 一区二区三区欧美日韩| 777午夜精品免费视频| 久久精品噜噜噜成人av农村| 国产蜜臀97一区二区三区| 91在线观看免费视频| 亚洲成精国产精品女| 2020国产精品久久精品美国| 成人精品免费网站| 亚洲va天堂va国产va久| 日韩精品一区在线观看| 波多野结衣一区二区三区| 午夜电影网亚洲视频| 久久久久久夜精品精品免费| 色系网站成人免费| 蜜臀精品久久久久久蜜臀 | 成人app软件下载大全免费| 一区二区三区小说| 日韩三级伦理片妻子的秘密按摩| 国产乱码精品一区二区三区av | 国精产品一区一区三区mba桃花| 国产精品久久久久久久第一福利| 欧美午夜精品电影| 国产电影精品久久禁18| 亚洲国产毛片aaaaa无费看| 亚洲精品一区二区三区四区高清| 91老司机福利 在线| 国产在线一区二区综合免费视频| 亚洲视频综合在线| 精品国产sm最大网站免费看| 色狠狠色狠狠综合| 丁香亚洲综合激情啪啪综合| 天天色天天操综合| 亚洲伦理在线免费看| 中文字幕欧美日本乱码一线二线| 欧美精品久久99| 在线观看av一区| 97精品国产露脸对白| 国产一区二区在线观看视频| 秋霞影院一区二区| 亚洲高清不卡在线| 亚洲国产色一区| 亚洲欧美一区二区不卡| 国产精品激情偷乱一区二区∴| 亚洲精品在线免费播放| 欧美成人乱码一区二区三区| 欧美高清一级片在线| 欧美三级乱人伦电影| 91久久精品午夜一区二区| 99精品国产91久久久久久 | 一片黄亚洲嫩模| 亚洲欧美日韩久久精品| 中文字幕亚洲一区二区av在线| 国产亚洲成年网址在线观看| 精品国产一二三| 精品久久国产字幕高潮| 日韩女优毛片在线| 精品福利一二区| 欧美va在线播放| 久久综合久色欧美综合狠狠| 久久久久久久精| 久久精品欧美一区二区三区不卡| 欧美大白屁股肥臀xxxxxx| 日韩欧美在线影院| 久久久久99精品国产片| 欧美极品aⅴ影院| 国产精品国产三级国产aⅴ中文| 国产精品动漫网站| 亚洲精品视频在线| 亚洲午夜av在线| 美女久久久精品| 国产成人aaa| 99精品欧美一区| 欧美日韩日日摸| 精品国产人成亚洲区| 日本一区二区动态图| 亚洲欧美在线另类| 亚洲国产精品一区二区久久| 免费成人在线视频观看| 国产剧情一区在线| 99国产一区二区三精品乱码| 色域天天综合网| 欧美一级片在线| 国产精品网站在线播放| 夜夜嗨av一区二区三区网页| 日韩电影免费一区| 成人综合在线视频| 欧美日本在线一区| 国产欧美日韩视频一区二区 | 欧美人动与zoxxxx乱| 欧美成人精品1314www| 国产欧美日韩精品一区| 亚洲一二三区在线观看| 国产伦精品一区二区三区免费 | 色狠狠av一区二区三区| 日韩一区二区三区电影在线观看| 欧美极品美女视频| 免费高清不卡av| 欧美色视频在线| 国产精品久久午夜| 久久国产精品72免费观看| 日本道免费精品一区二区三区|