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

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

?? taskbuilder.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
 */
//
// @author Marco Magistrali
//

#include "pim/TaskBuilder.h"



/*
* Method to populate the task XML structure.
* It get every property name and value and build the XML structure to exchange with server.
*
* @param taskStringItem : the string that will contain the xml structure
* @param pTask          : the task object that contain every value
* @param isCRC          : it says if the sif is calculated for the crc or not. If we are looking at the crc
*                         we have to consider the recurrence fields only if the task is recurring
*/

void populateTaskStringItem (std::wstring &taskStringItem, ITask *pTask, BOOL isCRC) {

    BSTR element = NULL;
    long elementLong = 0;
    DATE date = NULL, startdate = NULL;
    std::wstring element_s;

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

    wchar_t* charBlob = NULL;

    //
    // 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;

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

    // BSTR
    pTask->get_Subject(&element);
    element_s = std::wstring(element); encodeSpecialChar(element_s);
    taskStringItem += TEXT("<Subject>") + element_s + TEXT("</Subject>");
    SysFreeString(element);

    pTask->get_Categories(&element);
    element_s = std::wstring(element); encodeSpecialChar(element_s);
    taskStringItem += TEXT("<Categories>") + element_s + TEXT("</Categories>");
    SysFreeString(element);

    pTask->get_ReminderSoundFile(&element);
    element_s = (std::wstring)element; encodeSpecialChar(element_s);
    taskStringItem += TEXT("<ReminderSoundFile>") + element_s + TEXT("</ReminderSoundFile>");
    SysFreeString(element);

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

    // VARIANT_BOOL
    pTask->get_ReminderSet(&variantBool);
    wsprintf(tempDate, TEXT("%i"), variantBool);
    normalizeBoolean(tempDate);
    taskStringItem += TEXT("<ReminderSet>") + wstring(tempDate) + TEXT("</ReminderSet>");

    pTask->get_Complete(&variantBool);
    wsprintf(tempDate, TEXT("%i"), variantBool);
    normalizeBoolean(tempDate);
    taskStringItem  += TEXT("<Complete>") + wstring(tempDate) + TEXT("</Complete>");

    pTask->get_TeamTask(&variantBool);
    wsprintf(tempDate, TEXT("%i"), variantBool);
    normalizeBoolean(tempDate);
    taskStringItem += TEXT("<TeamTask>") + wstring(tempDate) + TEXT("</TeamTask>");


    // DATE
    pTask->get_StartDate(&startdate);

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

    SYSTEMTIME st;
    if (startdate != toCompare) {
        doubleToSystemTimeBirthday(tempDate, startdate);
        //doubleToSystemTime(tempDate, date);
        VariantTimeToSystemTime(startdate, &st);
        x = st.wHour;
        localTimeToUTC(st);
        y = st.wHour;


    }
    taskStringItem += TEXT("<StartDate>") + wstring(tempDate) + TEXT("</StartDate>");


    pTask->get_DueDate(&date);

    wsprintf(tempDate, TEXT(""));
    if (date != toCompare) {
        doubleToSystemTimeBirthday(tempDate, date);
        //doubleToSystemTime(tempDate, date);
    }
    taskStringItem += TEXT("<DueDate>") + wstring(tempDate) + TEXT("</DueDate>");

    /*
    pTask->get_DateCompleted(&date);

    wsprintf(tempDate, TEXT(""));
    if (date != toCompare) {
            doubleToSystemTime(tempDate, date);
    }
    taskStringItem  = taskStringItem + TEXT("<DateCompleted>") + tempDate + TEXT("</DateCompleted>");
    */

    pTask->get_ReminderTime(&date);

    wsprintf(tempDate, TEXT(""));
    if (date != toCompare) {
        doubleToSystemTime(tempDate, date);
    }
    taskStringItem += TEXT("<ReminderTime>") + wstring(tempDate) + TEXT("</ReminderTime>");


    // long

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

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

    pTask->get_Importance(&elementLong);
    wsprintf(tempDate, TEXT("%i"), elementLong);
    taskStringItem +=  TEXT("<Importance>") + wstring(tempDate) + TEXT("</Importance>");

    /******************************************************/
    //Recurrence
    VARIANT_BOOL isRecurring;
    pTask->get_IsRecurring(&isRecurring);
    wsprintf(tempDate, TEXT("%i"), isRecurring);
    normalizeBoolean(tempDate);
    taskStringItem += TEXT("<IsRecurring>") + wstring(tempDate) + TEXT("</IsRecurring>");

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

    wstring recurrence = L"";
    if (!isCRC || isRecurring == -1) { // variant bool to say TRUE
        recurrence = getRecurrenceTags(pRecurrence, isRecurring, 0, 0, olFolderTasks, startdate, TRUE);
    }
/*
    long            recurrenceType = 0,
        interval       = 0,
        monthOfYear    = 0,
        dayOfMonth     = 0,
        dayOfWeekMask  = 0,
        instance       = 0;

    pRecurrence->get_RecurrenceType(&recurrenceType);
    pRecurrence->get_Interval(&interval);
    pRecurrence->get_MonthOfYear(&monthOfYear);
    pRecurrence->get_DayOfMonth(&dayOfMonth);
    pRecurrence->get_Instance(&instance);
    pRecurrence->get_DayOfWeekMask(&dayOfWeekMask);

    //
    // Modification to get right information about changing day, month...
    //
    TIME_ZONE_INFORMATION tmz;
    int k = GetTimeZoneInformation(&tmz);

    z = (x-y) < 0 ? (x-y)*(-1) : (x-y) ;

    //
    // Change day?
    //
    changeDay = z > 12 ? TRUE : FALSE;
    if (changeDay) {
        if (tmz.Bias < 0)
            isBackward = TRUE;
        else
            isBackward = FALSE;
    }


    if (recurrenceType < 0) {
        recurrenceType = 0;
    }
    wsprintf(tempDate, TEXT("%i"), recurrenceType);
    taskStringItem  = taskStringItem + TEXT("<RecurrenceType>") + tempDate + TEXT("</RecurrenceType>");

    pRecurrence->get_Interval(&elementLong);
    wsprintf(tempDate, TEXT("%i"), elementLong);
    taskStringItem  = taskStringItem + TEXT("<Interval>") + tempDate + TEXT("</Interval>");

    //
    // Day of Month
    //
    if (dayOfMonth != 0) {
        if (changeDay) {
            if (isBackward) {
                dayOfMonth = dayOfMonth - 1;
                if (dayOfMonth == 0) {
                    if (monthOfYear == 5 || monthOfYear == 7 || monthOfYear == 10) {
                        // if May, July, October the month before has 30 days
                        dayOfMonth = 30;
                    } else {
                        dayOfMonth = 31;
                    }
                    changeYearBackward = TRUE;
                }
            } else { // is
                dayOfMonth = dayOfMonth + 1;
                if (dayOfMonth >  31  ||
                    (dayOfMonth == 31 &&
                    (monthOfYear == 4 || monthOfYear == 6 || monthOfYear == 9)
                    )
                    ) {
                        dayOfMonth = 1;
                        changeYearForward = TRUE;
                }
            }
        }
        wsprintf(tempDate, TEXT("%i"), dayOfMonth);
        taskStringItem  = taskStringItem + TEXT("<DayOfMonth>") + tempDate + TEXT("</DayOfMonth>");
    } else {
        taskStringItem  = taskStringItem + TEXT("<DayOfMonth>0</DayOfMonth>");
    }

    //
    // Month of Year
    //
    if (monthOfYear != 0) {
        if (changeYearBackward) {
            monthOfYear = monthOfYear - 1;
            if (monthOfYear == 0) {
                monthOfYear = 12;
            }
        } else if (changeYearForward) {
            monthOfYear = monthOfYear + 1;
            if (monthOfYear > 12) {
                monthOfYear = 1;
            }
        }
        wsprintf(tempDate, TEXT("%i"), monthOfYear);
        taskStringItem  = taskStringItem + TEXT("<MonthOfYear>") + tempDate + TEXT("</MonthOfYear>");
    } else {
        taskStringItem  = taskStringItem + TEXT("<MonthOfYear>0</MonthOfYear>");
    }
    //
    // DayOfWeekMask
    //
    if (dayOfWeekMask != 0) {
        if (changeDay) {
            if (isBackward) {
                dayOfWeekMask = convertDayOfWeekMaskBackward2(dayOfWeekMask);
            } else {
                dayOfWeekMask = convertDayOfWeekMaskForward2(dayOfWeekMask);
            }
        }
        wsprintf(tempDate, TEXT("%i"), dayOfWeekMask);
        taskStringItem  = taskStringItem + TEXT("<DayOfWeekMask>") + tempDate + TEXT("</DayOfWeekMask>");
    } else {
        taskStringItem  = taskStringItem + TEXT("<DayOfWeekMask>0</DayOfWeekMask>");
    }

    //
    // Instance
    //
    if (instance != 0) {
        wsprintf(tempDate, TEXT("%i"), instance);
        taskStringItem  = taskStringItem + TEXT("<Instance>") + tempDate + TEXT("</Instance>");
    } else {
        taskStringItem  = taskStringItem + TEXT("<Instance>0</Instance>");
    }

    //
    // Pattern Start Date
    //
    pRecurrence->get_PatternStartDate(&date);
    wsprintf(tempDate, TEXT(""));
    toCompare = MAX_DATE_DOUBLE;

    if (date != toCompare && date < toCompare4000 ) {
        doubleToSystemTime(tempDate, date);
    }
    taskStringItem  = taskStringItem + TEXT("<PatternStartDate>") + tempDate + TEXT("</PatternStartDate>");

    //
    // No End Date
    //
    pRecurrence->get_NoEndDate(&variantBool);
    wsprintf(tempDate, TEXT("%i"), variantBool);
    normalizeBoolean(tempDate);
    taskStringItem  = taskStringItem + TEXT("<NoEndDate>") + tempDate + TEXT("</NoEndDate>");

    //
    // Pattern End Date
    //
    pRecurrence->get_PatternEndDate(&date);
    wsprintf(tempDate, TEXT(""));
    toCompare = MAX_DATE_DOUBLE;

    if (date != toCompare && date < toCompare4000 ) {
        doubleToSystemTime(tempDate, date);
    }
    taskStringItem  = taskStringItem + TEXT("<PatternEndDate>") + tempDate + TEXT("</PatternEndDate>");

    //
    // Occurrences
    //

    pRecurrence->get_Occurrences(&elementLong);
    if (elementLong < 0) {
        elementLong = 0;
    }
    wsprintf(tempDate, TEXT("%i"), elementLong);
    taskStringItem  = taskStringItem + TEXT("<Occurrences>") + tempDate + TEXT("</Occurrences>");
*/
    taskStringItem += recurrence;
    taskStringItem += TEXT("</task>");

}


/*
* Method that complete an task 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 pTask      : the task object that contain every value
* @param ptrData    : the variable that contain the xml structure
*/

void completeTask  (ITask *pTask, wchar_t * ptrData) {

    wchar_t* dummy = NULL;
    wchar_t* dummyEvent = NULL;
    wstring    dummyEvent_s;
    //pTask->ClearRecurrencePattern ();

    //VARIANT_BOOL -- ReminderSet
    dummyEvent = getElementContent(ptrData, TEXT ("ReminderSet"), NULL);
    if (dummyEvent != NULL &&
        (wcscmp(dummyEvent, TEXT("1")) == 0 ||
         wcscmp(dummyEvent, TEXT("-1")) == 0 ||
         wcscmp(dummyEvent, TEXT("True")) == 0)) {
        pTask->put_ReminderSet(VARIANT_TRUE);
        if (dummyEvent != NULL) { delete [] dummyEvent; dummyEvent=NULL; }

        dummyEvent = getElementContent(ptrData, TEXT ("ReminderTime"), NULL);
        if (dummyEvent != NULL) {
            DATE st;
            systemTimeToDouble(dummyEvent, &st, NULL);
            pTask->put_ReminderTime(st);
        }
    }
    else {
        pTask->put_ReminderSet(VARIANT_FALSE);
    }
    if (dummyEvent != NULL)
    delete [] dummyEvent;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产盗摄女厕一区二区三区 | 亚洲精品亚洲人成人网| 亚洲男人的天堂在线aⅴ视频| 香蕉成人啪国产精品视频综合网 | 日韩欧美一级特黄在线播放| 久久品道一品道久久精品| 国产精品丝袜黑色高跟| 一区二区久久久久| 久久国产婷婷国产香蕉| 粉嫩高潮美女一区二区三区| 欧美亚洲国产一区在线观看网站| 欧美成人福利视频| 亚洲欧美自拍偷拍色图| 日韩精品久久久久久| 岛国av在线一区| 欧美日韩一级片网站| 国产欧美精品一区| 一区二区不卡在线播放 | 日韩欧美国产高清| 国产精品国产自产拍在线| 日本不卡免费在线视频| av电影在线观看完整版一区二区| 欧美一区二区三区影视| 亚洲国产成人午夜在线一区 | 日韩免费看的电影| 中文字幕日韩精品一区| 理论片日本一区| 91丨porny丨户外露出| 91精品国产综合久久国产大片| 国产欧美va欧美不卡在线 | 欧美一区二区日韩| 国产精品传媒视频| 韩国三级中文字幕hd久久精品| 欧美日韩一区二区三区在线看| 国产日韩视频一区二区三区| 石原莉奈一区二区三区在线观看| 99re热视频精品| 久久蜜桃av一区精品变态类天堂 | 日韩一区二区三区在线视频| 亚洲三级理论片| 国产精品一级二级三级| 91麻豆精品久久久久蜜臀| 一区二区三区四区在线免费观看 | 国产精品二区一区二区aⅴ污介绍| 日韩在线播放一区二区| 在线免费av一区| 成人精品高清在线| 国产成人精品免费网站| 欧美无砖砖区免费| 亚洲欧美日韩电影| 亚洲女女做受ⅹxx高潮| 日韩av中文字幕一区二区| 在线观看不卡视频| 综合久久久久久| 国产91丝袜在线播放0| 日韩欧美亚洲另类制服综合在线| 亚洲综合一区二区精品导航| av一区二区三区| 国产网站一区二区三区| 精品在线播放免费| 91麻豆精品国产自产在线| 亚洲国产成人91porn| 色婷婷久久久亚洲一区二区三区| 中文字幕av一区二区三区高 | 日韩欧美中文字幕一区| 日韩电影在线一区二区三区| 欧美色精品在线视频| 亚洲午夜久久久久中文字幕久| 91免费看片在线观看| 亚洲天堂2014| 91蝌蚪porny| 亚洲精品ww久久久久久p站| 91视频观看免费| 亚洲精品视频在线看| 色婷婷亚洲婷婷| 亚洲激情在线播放| 91国偷自产一区二区开放时间| 一区二区三区四区亚洲| 欧美综合在线视频| 视频在线观看91| 日韩欧美在线1卡| 激情欧美一区二区| 久久精品欧美一区二区三区麻豆 | 日韩久久一区二区| 92国产精品观看| 亚洲在线中文字幕| 欧美精品一级二级| 美国毛片一区二区三区| 久久精品夜色噜噜亚洲a∨| 国产乱码精品一区二区三区av| 国产视频一区在线播放| 成人在线视频首页| 亚洲欧美日韩在线| 8v天堂国产在线一区二区| 国内欧美视频一区二区| 国产女主播在线一区二区| 不卡欧美aaaaa| 尤物视频一区二区| 欧美一级黄色片| 国产成人av一区二区三区在线 | 成人午夜私人影院| 亚洲精品午夜久久久| 在线播放中文一区| 国产一区二区在线电影| 亚洲天堂精品视频| 欧美高清你懂得| 国产精品99久久久久久久女警 | 99久久久精品| 午夜激情一区二区三区| 久久综合视频网| 91蜜桃在线观看| 奇米在线7777在线精品| 国产三级三级三级精品8ⅰ区| 91啪亚洲精品| 美洲天堂一区二卡三卡四卡视频| 国产欧美精品一区二区色综合 | 手机精品视频在线观看| 久久亚洲综合色一区二区三区 | 亚洲成av人影院| 精品处破学生在线二十三| 91色九色蝌蚪| 九九久久精品视频| 亚洲欧洲精品一区二区三区不卡| 精品视频在线视频| 大陆成人av片| 亚洲成人av中文| 日本一区二区电影| 欧美精品三级在线观看| 国产成人h网站| 奇米色一区二区| 亚洲免费观看高清完整版在线 | 国产一区二区福利| 亚洲最色的网站| 久久精品免视看| 欧美群妇大交群中文字幕| 成人免费视频视频| 麻豆91精品视频| 亚洲一区在线观看免费观看电影高清 | 国产欧美日韩麻豆91| 欧美日韩aaaaa| eeuss鲁片一区二区三区| 免费观看久久久4p| 一区二区三区中文字幕| 国产视频在线观看一区二区三区| 91精品在线免费| av在线综合网| 国模大尺度一区二区三区| 亚洲无线码一区二区三区| 国产精品你懂的| 久久久www成人免费毛片麻豆 | 久久99蜜桃精品| 亚洲午夜久久久久中文字幕久| 国产精品私人影院| 久久在线观看免费| 日韩午夜激情视频| 欧美日韩精品一区二区三区| 99精品欧美一区二区三区综合在线| 国产一区二区三区电影在线观看| 婷婷成人综合网| 亚洲一区在线看| 亚洲黄一区二区三区| 国产日韩v精品一区二区| 精品成a人在线观看| 欧美二区在线观看| 欧美午夜在线观看| 在线看不卡av| 色综合一区二区| 99热精品一区二区| 成人av电影在线| 99热99精品| 成人免费av在线| 懂色一区二区三区免费观看 | 亚洲嫩草精品久久| 国产精品久久久久久久蜜臀| 久久久一区二区三区| 亚洲精品在线一区二区| 日韩精品一区在线| 日韩午夜精品视频| 日韩亚洲欧美高清| 日韩一区二区不卡| 日韩一级二级三级精品视频| 欧美一区欧美二区| 欧美一区二区日韩一区二区| 欧美三级蜜桃2在线观看| 欧美午夜免费电影| 欧美日韩国产a| 91精品国产综合久久国产大片| 91麻豆精品国产91久久久 | 日本不卡中文字幕| 免费在线一区观看| 蜜臀av亚洲一区中文字幕| 久久精品国产**网站演员| 蜜臀久久99精品久久久久宅男| 日韩电影在线观看一区| 日韩av电影天堂| 麻豆国产精品一区二区三区| 国产一区二区在线免费观看| 成人丝袜18视频在线观看| 91色porny蝌蚪| 欧美日精品一区视频|