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

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

?? appointmentbuilder.cpp

?? funambol windows mobile plugin source code, the source code is taken from the funambol site
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/*
 * 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 "pim/AppointmentBuilder.h"
#include "base/Log.h"
#include "pim/difftime.h"
#include "pim/UtilsRecurrence.h"

/*
* Method to populate the appointment XML structure.
* It get every property name and value and build the XML structure to exchange with server.
*
* @param appointmentStringItem : the string that will contain the xml structure
* @param pAppointment          : the appointment object that contain every value
*
*/
void populateAppointmentStringItem(std::wstring &appointmentStringItem, IAppointment *pAppointment, BOOL isCRC) {

    BSTR element        = NULL      ;
    long elementLong    = 0         ;
    DATE startdate      = NULL      ;
    DATE enddate        = NULL      ;
    DATE date           = NULL      ;
    wstring element_s;

    //
    // FOR RECURRENCE
    // to get if a modification in the UTC goes into day before or after
    // store the initial value of day and check the last value
    //
    int x = 0, y = 0, z = 0;
    BOOL changeDay = FALSE, isBackward = FALSE;
    BOOL changeYearBackward = FALSE, changeYearForward = FALSE;


    VARIANT_BOOL variantBool = NULL; // 0==false -1==true
    wchar_t tempDate [DIM_LOCAL_TEMP];
    wchar_t* charBlob = NULL;

    appointmentStringItem = TEXT("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
    appointmentStringItem +=  TEXT("<appointment>");

        // BSTR
        pAppointment->get_Subject(&element);
        element_s = wstring(element);
        encodeSpecialChar(element_s);
        appointmentStringItem  += TEXT("<Subject>") + element_s + TEXT("</Subject>");
        SysFreeString(element);

        pAppointment->get_Location(&element);
        element_s = wstring(element); encodeSpecialChar(element_s);
        appointmentStringItem  += TEXT("<Location>") + element_s + TEXT("</Location>");
        SysFreeString(element);

        pAppointment->get_Categories(&element);
        element_s = wstring(element); encodeSpecialChar(element_s);
        appointmentStringItem  +=  TEXT("<Categories>") + element_s + TEXT("</Categories>");
        SysFreeString(element);

        pAppointment->get_ReminderSoundFile(&element);
        element_s = wstring(element); encodeSpecialChar(element_s);
        appointmentStringItem  +=  TEXT("<ReminderSoundFile>") + element_s + TEXT("</ReminderSoundFile>");
        SysFreeString(element);

        pAppointment->get_Body(&element);
        removeEndCarriage(&element);
        element_s = wstring(element);  encodeSpecialChar(element_s);
        appointmentStringItem  +=  TEXT("<Body>") + element_s + TEXT("</Body>");
        SysFreeString(element);

        // DATE
        pAppointment->get_Start(&startdate);
        pAppointment->get_End(&enddate);


        /*
        * see 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 tag is put to 'true' only in the SIF structure. The format of the date
        * is like the birthday: yyyy-MM-dd
        *
        */

        BOOL isAllDay = FALSE;

        if (isWindowsMobile5()) {
            pAppointment->get_AllDayEvent(&variantBool);
            variantBool == -1 ? isAllDay = TRUE : isAllDay = FALSE;

            if (isAllDay)
                enddate -= 1; // to be decremented of a day if it is all day in windows mobile 5.
                // This because the end date is 00:00:00 of the next day. we want the all day
                // is represented as <startDate>2007-01-15</StartDate> and and date as the same

        } else {
            isAllDayEvent(startdate, enddate);
        }


        wsprintf(tempDate, TEXT(""));
        double toCompare = MAX_DATE_DOUBLE;
        double toCompare4000 = MAX_DATE_DOUBLE_4000;

        SYSTEMTIME st;

        if (startdate != toCompare) {
            VariantTimeToSystemTime(startdate, &st);
            x = st.wHour;
            localTimeToUTC(st);
            y = st.wHour;
            if (isAllDay) {
                doubleToSystemTimeBirthday(tempDate, startdate);
            } else {
                doubleToSystemTime(tempDate, startdate);
            }
        }
        appointmentStringItem  = appointmentStringItem + TEXT("<Start>") + tempDate + TEXT("</Start>");

        wsprintf(tempDate, TEXT(""));
        if (enddate != toCompare) {
            if (isAllDay) {
                doubleToSystemTimeBirthday(tempDate, enddate);
            } else {
                doubleToSystemTime(tempDate, enddate);
            }
        }
        appointmentStringItem  = appointmentStringItem + TEXT("<End>") + tempDate + TEXT("</End>");

        if (isAllDay) {
            wsprintf(tempDate, TEXT("1")); // TRUE
        } else {
            wsprintf(tempDate, TEXT("0")); // TRUE
        }
        appointmentStringItem  = appointmentStringItem + TEXT("<AllDayEvent>") + tempDate + TEXT("</AllDayEvent>");

        pAppointment->get_ReminderSet(&variantBool);
        wsprintf(tempDate, TEXT("%i"), variantBool);
        normalizeBoolean(tempDate);
        appointmentStringItem  = appointmentStringItem + TEXT("<ReminderSet>") + tempDate + TEXT("</ReminderSet>");

        // long
        //pAppointment->get_Duration(&elementLong);
        //wsprintf(tempDate, TEXT("%i"), elementLong);
        //appointmentStringItem  = appointmentStringItem + TEXT("<Duration>") + tempDate + TEXT("</Duration>");

        pAppointment->get_BusyStatus(&elementLong);
        wsprintf(tempDate, TEXT("%i"), elementLong);
        appointmentStringItem  = appointmentStringItem + TEXT("<BusyStatus>") + tempDate + TEXT("</BusyStatus>");

        pAppointment->get_Sensitivity(&elementLong);
        wsprintf(tempDate, TEXT("%i"), elementLong);
        appointmentStringItem  = appointmentStringItem + TEXT("<Sensitivity>") + tempDate + TEXT("</Sensitivity>");

        pAppointment->get_ReminderOptions(&elementLong);
        wsprintf(tempDate, TEXT("%i"), elementLong);
        appointmentStringItem  = appointmentStringItem + TEXT("<ReminderOptions>") + tempDate + TEXT("</ReminderOptions>");

        pAppointment->get_ReminderMinutesBeforeStart(&elementLong);
        wsprintf(tempDate, TEXT("%i"), elementLong);
        appointmentStringItem  = appointmentStringItem + TEXT("<ReminderMinutesBeforeStart>") + tempDate + TEXT("</ReminderMinutesBeforeStart>");


        /******************************************************/

        //Recurrence
        VARIANT_BOOL isRecurring;
        pAppointment->get_IsRecurring(&isRecurring);
        wsprintf(tempDate, TEXT("%i"), isRecurring);
        normalizeBoolean(tempDate);
        appointmentStringItem  = appointmentStringItem + TEXT("<IsRecurring>") + tempDate + TEXT("</IsRecurring>");

        IRecurrencePattern *pRecurrence;
        pAppointment->GetRecurrencePattern (&pRecurrence);

        wstring recurrence = L"";
        if (!isCRC || isRecurring == -1) { // variant bool to say TRUE
            recurrence = getRecurrenceTags(pRecurrence, isRecurring, x, y, olFolderCalendar, startdate, isAllDay);
        }
        // handle recurrence and exceptions events
        // wstring recurrence = getRecurrenceTags(pRecurrence, isRecurring, x, y, olFolderCalendar, startdate, isAllDay);

        pRecurrence->Release();

    appointmentStringItem += recurrence;
    appointmentStringItem = appointmentStringItem +  TEXT("</appointment>");

}

/*
wstring createExceptions(IRecurrencePattern* pRecurrence) {

    IExceptions* pExceptions;
    int numExceptions;

    pRecurrence->get_Exceptions(&pExceptions);
    pExceptions->get_Count(&numExceptions);
    wchar_t temp [DIM_LOCAL_TEMP];

    wstring exceptions = TEXT("<Exceptions>");
        wsprintf(temp, TEXT("<ExceptionNumber>%i</ExceptionNumber>"), numExceptions);
        exceptions += wstring(temp);

    for (int i = 0; i < numExceptions; i++) {
        IException* pException;
        pExceptions->Item(i + 1, &pException);
        wstring exception = createException(pException);
        exceptions += exception;
        pException->Release();
    }

    pExceptions->Release();

    exceptions +=  TEXT("</Exceptions>");

    return exceptions;
}

wstring createException(IException* pException) {

    wstring exceptionItem = TEXT("<Exception>");
    DATE originalDate = 0;
    VARIANT_BOOL varBool; // -1 = TRUE, 0 = FALSE
    SYSTEMTIME st;
    memset(&st, 0, sizeof(SYSTEMTIME));
    BSTR element        = NULL      ;
    wchar_t tempDate [DIM_LOCAL_TEMP];
    wstring element_s;

    pException->get_OriginalDate(&originalDate);
    doubleToSystemTimeBirthday(tempDate, originalDate);    // YYYY-MM-DD

    exceptionItem += TEXT("<OriginalDate>") + wstring(tempDate) + TEXT("</OriginalDate>");

    // if the recurrence is deleted get the delation and go exit
    pException->get_Deleted(&varBool);
    if (varBool == -1)
        goto finally;

    exceptionItem += TEXT("<ExAppointment>");
    IAppointment* pAppointment;
    pException->get_AppointmentItem(&pAppointment);

        pAppointment->get_Subject(&element);
        element_s = wstring(element);
        encodeSpecialChar(element_s);
        exceptionItem  += TEXT("<ExSubject>") + element_s + TEXT("</ExSubject>");
        SysFreeString(element); element = NULL;

        pAppointment->get_Location(&element);
        element_s = wstring(element);
        encodeSpecialChar(element_s);
        exceptionItem  += TEXT("<ExLocation>") + element_s + TEXT("</ExLocation>");
        SysFreeString(element); element = NULL;

        pAppointment->get_Body(&element);
        removeEndCarriage(&element);
        element_s = wstring(element);  encodeSpecialChar(element_s);
        exceptionItem  +=  TEXT("<ExBody>") + element_s + TEXT("</ExBody>");
        SysFreeString(element);

         // VARIANT

        pAppointment->get_AllDayEvent(&varBool);
        wsprintf(tempDate, TEXT("%i"), varBool);
        if (varBool == -1) {
            wsprintf(tempDate, TEXT("1")); // TRUE
        }
        exceptionItem  += TEXT("<ExAllDayEvent>") + wstring(tempDate) + TEXT("</ExAllDayEvent>");

        // DATE
        DATE startdate;
        DATE enddate;
        pAppointment->get_Start(&startdate);
        pAppointment->get_End(&enddate);

        //BOOL isAllDay = isAllDayEvent(startdate, enddate);
        BOOL isAllDay = varBool == -1 ? TRUE : FALSE;

        wsprintf(tempDate, TEXT(""));

        VariantTimeToSystemTime(startdate, &st);
        if (isAllDay) {
            doubleToSystemTimeBirthday(tempDate, startdate);
        } else {
            doubleToSystemTime(tempDate, startdate);
        }

        exceptionItem  += TEXT("<ExStart>") + wstring(tempDate) + TEXT("</ExStart>");
        wsprintf(tempDate, TEXT(""));

        if (isAllDay) {
            doubleToSystemTimeBirthday(tempDate, enddate);
        } else {
            doubleToSystemTime(tempDate, enddate);
        }

        exceptionItem += TEXT("<ExEnd>") + wstring(tempDate) + TEXT("</ExEnd>");

        long elementLong = 0;
        pAppointment->get_BusyStatus(&elementLong);
        wsprintf(tempDate, TEXT("%i"), elementLong);
        exceptionItem  += TEXT("<ExBusyStatus>") + wstring(tempDate) + TEXT("</ExBusyStatus>");

    if (pAppointment)
        pAppointment->Release();

   exceptionItem += TEXT("</ExAppointment>");
finally:

    exceptionItem += TEXT("</Exception>");
    return exceptionItem;

}
*/

/*
* Method that complete an appointment object retrieving property value by an XML structure.
* It parse the XML structure, get the every property value using its name and set it into the object.
*
* @param pAppointment : the appointment object that contain every value
* @param ptrData      : the variable that contain the xml structure
*/

void completeAppointment(IAppointment *pAppointment, wchar_t *ptrData, IP_OUTLOOK_APP* polApp, wchar_t* path) {

    wchar_t* dummy                  = NULL;
    wchar_t* dummyEvent             = NULL;
    wstring  dummyEvent_s;
    VARIANT_BOOL isNotAllDayEvent   = TRUE;
      
    //
    // FOR RECURRENCE
    // to get if a modification in the UTC goes into day before or after
    // store the initial value of day and check the last value
    //
    int x = 0, y = 0, z = 0;
    BOOL changeDay = FALSE, isBackward = FALSE;
    BOOL changeYearBackward = FALSE, changeYearForward = FALSE;

    //VARIANT_BOOL --- AllDayEvent
    dummyEvent = getElementContent(ptrData, TEXT ("AllDayEvent"), NULL);

    if (dummyEvent != NULL &&
        (wcscmp(dummyEvent, TEXT("1")) == 0 ||
         wcscmp(dummyEvent, TEXT("-1")) == 0 || // kept to be compliant with old client. Now TRUE is represented
         wcscmp(dummyEvent, TEXT("True")) == 0)) {  // with "1" only

        if (isWindowsMobile5()) {
            pAppointment->put_AllDayEvent(TRUE);
        } else {
            pAppointment->put_AllDayEvent(FALSE);
        }

        double locDate = NULL;

        dummyEvent = getElementContent(ptrData, TEXT ("Start"), NULL);

        DATE st;
        SYSTEMTIME systemTime;
        BOOL isUTC = FALSE;
        BOOL isAllDayFormat = isDateForAllDayEventFormat(dummyEvent);

        if (isAllDayFormat) {
            systemTimeToDoubleBirthFormat(dummyEvent, &st, TEXT("START"));

        }  else { // the date is in the usual format

            isUTC = getDateAndTimeAsIs(dummyEvent, &st);

            VariantTimeToSystemTime(st, &systemTime);
            x = systemTime.wHour;
            if (isUTC) {
                UTCToLocalTime2(systemTime);
            }
            y = systemTime.wHour;
            systemTime.wHour = 0;
            systemTime.wMinute = 0;
            systemTime.wMilliseconds = 0;
            SystemTimeToVariantTime(&systemTime, &st);
        }
        pAppointment->put_Start(st);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区三区一线天视频 | 国产盗摄一区二区三区| 国产成人av一区二区三区在线 | 日本高清不卡一区| 日韩欧美高清在线| 悠悠色在线精品| 成人免费观看男女羞羞视频| 91.com视频| 亚洲影视在线播放| 成人av在线播放网站| 欧美一区二区三区电影| 亚洲影院在线观看| bt欧美亚洲午夜电影天堂| 久久久久国产精品麻豆ai换脸| 五月天亚洲精品| 色婷婷综合久色| 中文字幕成人av| 国产一二精品视频| 欧美哺乳videos| 日韩精品亚洲一区| 欧美日韩成人一区| 亚洲成精国产精品女| 色狠狠一区二区三区香蕉| 国产精品国产精品国产专区不蜜| 久久99日本精品| 欧美电影免费观看高清完整版在线观看| 亚洲一区二区三区四区在线| 96av麻豆蜜桃一区二区| 自拍偷拍国产亚洲| 91视视频在线观看入口直接观看www | 国产精品久久久一区麻豆最新章节| 久久不见久久见免费视频7 | 蜜桃视频在线一区| 制服丝袜国产精品| 欧美a级一区二区| 337p亚洲精品色噜噜噜| 婷婷六月综合网| 欧美一区二区三区在| 日本不卡一区二区三区高清视频| 欧美色偷偷大香| 偷拍与自拍一区| 日韩免费成人网| 国产在线视视频有精品| 久久一留热品黄| 国产不卡一区视频| 最新日韩在线视频| 欧洲视频一区二区| 亚洲成人一二三| 日韩欧美电影一二三| 国产成人日日夜夜| 一区二区三区日韩| 制服丝袜成人动漫| 国产在线视频不卡二| 国产欧美一区二区三区鸳鸯浴 | 国产精品久久久久久久久图文区| 成人美女视频在线看| 亚洲免费视频成人| 日韩免费观看高清完整版 | 狂野欧美性猛交blacked| 精品国产免费一区二区三区香蕉 | 国产一区二区h| 国产精品国产三级国产aⅴ入口 | 日韩免费视频一区| 丁香另类激情小说| 亚洲国产精品自拍| www成人在线观看| 95精品视频在线| 美女一区二区久久| 国产精品久线观看视频| 欧美日韩精品专区| 国产91丝袜在线播放| 午夜一区二区三区在线观看| 久久综合色婷婷| 欧美在线短视频| 国产伦精品一区二区三区免费| 亚洲欧洲另类国产综合| 欧美一级艳片视频免费观看| av不卡在线观看| 久久99精品一区二区三区| 亚洲日本青草视频在线怡红院| 日韩一区二区在线观看视频播放| 成人av网站免费观看| 美脚の诱脚舐め脚责91| 亚洲免费视频成人| 亚洲国产成人午夜在线一区| 欧美情侣在线播放| 色综合中文字幕国产| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲天堂2014| 日本一区二区在线不卡| 精品日韩99亚洲| 欧美日韩一区 二区 三区 久久精品| 99riav久久精品riav| 日本va欧美va欧美va精品| 日韩理论片在线| 国产视频一区二区三区在线观看| 欧美精品久久久久久久多人混战| www.欧美亚洲| 国产精品中文欧美| 男女性色大片免费观看一区二区 | 中文在线免费一区三区高中清不卡| 欧美日韩电影一区| 色中色一区二区| www..com久久爱| 国产iv一区二区三区| 激情久久五月天| 美女免费视频一区二区| 日本成人在线电影网| 五月婷婷久久综合| 午夜精品成人在线视频| 亚洲高清免费在线| 亚洲第一激情av| 亚洲电影视频在线| 成人av网在线| 国产精华液一区二区三区| 国产在线乱码一区二区三区| 久久99国产精品久久| 久久国产福利国产秒拍| 国产自产v一区二区三区c| 狠狠色丁香婷综合久久| 激情伊人五月天久久综合| 加勒比av一区二区| 国产精品亚洲第一| 成人久久视频在线观看| 99视频在线精品| 欧美专区日韩专区| 欧美日韩在线不卡| 欧美一级免费观看| 欧美精品一区二区三区一线天视频| 久久丝袜美腿综合| 国产精品亲子乱子伦xxxx裸| 国产精品电影一区二区| 亚洲精品视频在线观看免费| 一区二区三区国产豹纹内裤在线| 亚洲第一主播视频| 裸体歌舞表演一区二区| 成人毛片老司机大片| 色婷婷精品久久二区二区蜜臂av | av在线不卡电影| 色婷婷一区二区三区四区| 欧美三级蜜桃2在线观看| 欧美一区二区三区免费观看视频| 久久综合色8888| 亚洲色图色小说| 日本欧美韩国一区三区| 国产成人啪午夜精品网站男同| 91日韩在线专区| 91精品国产入口| 国产精品婷婷午夜在线观看| 亚洲精品免费一二三区| 日本va欧美va欧美va精品| 福利一区二区在线| 欧美私人免费视频| 久久久夜色精品亚洲| 亚洲精品亚洲人成人网在线播放| 亚洲高清久久久| 大白屁股一区二区视频| 欧美日韩一区 二区 三区 久久精品| 精品国产1区2区3区| 亚洲午夜私人影院| 国产精品白丝jk黑袜喷水| 欧美丝袜丝交足nylons图片| 久久久午夜精品理论片中文字幕| 一区二区三区丝袜| 国产精品一区二区黑丝| 欧美日韩高清一区二区| 亚洲国产精品成人久久综合一区| 亚洲地区一二三色| 国产成人亚洲综合色影视| 欧美日韩国产一二三| 国产精品萝li| 精品一区二区三区av| 精品视频123区在线观看| 国产午夜亚洲精品羞羞网站| 视频一区欧美精品| 99久久精品国产观看| 26uuu国产一区二区三区| 日韩电影免费在线| 在线亚洲欧美专区二区| 国产精品久久精品日日| 国产专区综合网| 日韩视频免费观看高清完整版在线观看 | 在线不卡免费av| 尤物在线观看一区| 91小视频在线观看| 国产精品丝袜在线| 国内久久精品视频| 日韩欧美亚洲国产精品字幕久久久| 亚洲妇熟xx妇色黄| 欧美影院午夜播放| 亚洲制服丝袜av| 色88888久久久久久影院野外| 中文字幕国产精品一区二区| 国产99久久精品| 欧美国产精品一区| 国产suv精品一区二区6| 国产欧美日韩视频在线观看| 国产一区视频网站| 亚洲午夜视频在线| 欧美久久久一区|