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

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

?? mailsyncsource.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 "pim/mail/MailSyncSource.h"
#include "spds/SyncItemStatus.h"
#include "spds/MailMessage.h"
#include "spds/constants.h"
#include "base/util/utils.h"
#include "base/util/StringBuffer.h"
#include "pim/utils.h"
#include "spds/FolderData.h"
#include "notify/timed_msgbox.h"
#include "spds/SyncReport.h"
#include "spds/MailSyncSourceConfig.h"

#include "HwndFunctions.h"
#include "OutOfMemoryException.h"

#define ASK_REFRESH_MESSAGE TEXT("A sync to replace your local email with your mail server email has been requested. All the local mails will be deleted before adding the server items. Are you sure you want to continue?")
#define ASK_REFRESH_TIMEOUT 10

static int call;
static int cnew;
static int cupdated;
static int cdeleted;

static SyncItem *buildSyncItem(MailClientData* m)
{
    MailMessage& msg = m->getEmailData()->getEmailItem();

    SyncItem *syncItem = new SyncItem(m->getEntryId());

    char* toSend = m->getEmailData()->format();
    syncItem->setData(toSend, strlen(toSend) * sizeof(char));
    syncItem->setSourceParent(m->getParent());
    if (toSend)
        delete [] toSend;

    return syncItem;
}

static bool setMailData(SyncItem &item, const wchar_t *parent, MailClientData &m, bool isUpdate)
{
    int errorCode;

    char *msg = new char[item.getDataSize() + 1];
    memset(msg, 0, item.getDataSize() + 1);
    memcpy(msg, item.getData(), item.getDataSize());

    errorCode = m.getEmailData()->parse(msg);

    //errorCode = m.getEmailData()->parse((char*)item.getData(), item.getDataSize());
    //
    // -2 is a real error
    // -1 is an error only if it is a new item but not if it is an update.
    //
    if (errorCode == 0 || (errorCode == -1 && isUpdate)) {
        // nothing to do.
        // it continue usually
    } else {
        LOG.error("Error parsing message!");
        return false;
    }
    m.setParent(parent);

    delete [] msg;
    return true;
}

static bool setFolderData(SyncItem &item, /*const wchar_t *parent*/ FolderData &folder)
{
    int errorCode;

    char *msg = new char[item.getDataSize() + 1];
    memset(msg, 0, item.getDataSize() + 1);
    memcpy(msg, item.getData(), item.getDataSize());

    errorCode = folder.parse(msg);

    if (errorCode != 0) {
        LOG.error("Error parsing message!");
        return false;
    }

    delete [] msg;
    return true;
}



MailSyncSource::MailSyncSource(const wchar_t* name, SyncSourceConfig *sc) : SyncSource(name, sc)
{
    path = wstrdup(TEXT("\\"));
    s_folderToSync = NULL;
    syncItem = NULL;
    isMailInOutbox = false;
    isMailInInbox = false;
    mailClient2Server = NULL;
    mailServer2Client = NULL;
    failedSendMailInOutbox = false;
    maxMailMessageSize = 0;
    isSyncInclusive = false;
}

MailSyncSource::MailSyncSource(MailSyncSource& s) : SyncSource(s)
{
    path = NULL;
    s_folderToSync = NULL;
    setLastSync(s.getLastSync());
    setNextSync(s.getNextSync());
    setMaxMailMessageSize(s.getMaxMailMessageSize());
    setLastAnchor(s.getLastAnchor());
    setNextAnchor(s.getNextAnchor());
    //setErrorHandler(s.getErrorHandler());
    setFilter(s.getFilter());

    setPath(s.path);
    setFolderToSync(s.s_folderToSync);

    // These are not copied from the other instance
    isMailInOutbox = false;
    isMailInInbox = false;
    failedSendMailInOutbox = false;
    mailServer2Client=NULL;
    mailClient2Server=NULL;
    

}

MailSyncSource::~MailSyncSource() {
    if (syncItem) {
        syncItem = NULL;
    }
    if (s_folderToSync) {
        delete [] s_folderToSync; s_folderToSync = NULL;
    }
    if (path) {
        delete [] path; path = NULL;
    }
    if (mailServer2Client)
        delete mailServer2Client;
    if (mailClient2Server)
        delete mailClient2Server;
}

void MailSyncSource::setPath(const wchar_t* p) {
    if (path)
        delete [] path;

    if (p == NULL)
        path = wstrdup(TEXT(""));
    else
        path = wstrdup(p);
}

const wchar_t* MailSyncSource::getPath() {
    return path;
}

void MailSyncSource::setFolderToSync(const wchar_t* t){
    if(s_folderToSync)
        delete [] s_folderToSync;
    s_folderToSync = wstrdup(t);
}

const wchar_t* MailSyncSource::getFolderToSync() {
    return s_folderToSync;
}

bool MailSyncSource::isInFolderToSync(const wchar_t* toCheck) {
    return wcsstr(s_folderToSync, toCheck) != NULL ? true : false;
}

void MailSyncSource::setIsMailInOutbox(bool value){
    isMailInOutbox = value;

}

bool MailSyncSource::getIsMailInOutbox() {
    return isMailInOutbox;
}

void MailSyncSource::setIsMailInInbox(bool value){
    isMailInInbox = value;
}

bool MailSyncSource::getIsMailInInbox() {
    return isMailInInbox;
}

void MailSyncSource::setFailedSendMailInOutbox(bool value){
    failedSendMailInOutbox = value;
}

bool MailSyncSource::getFailedSendMailInOutbox() {
    return failedSendMailInOutbox;
}

/*
 * Return the first SyncItem of all. It is used in case of slow
 * sync and retrieve the entire data source content.
 */
SyncItem* MailSyncSource::getFirstItem()
{
    if (syncItem) {
        //delete syncItem; syncItem = NULL;
        syncItem = NULL;
    }
    //
    // initialize the flag
    //
    isMailInInbox = false;

    if ( mailClient2Server->setSync(SYNC_SLOW, getPath()) != S_OK ){
        LOG.error("getFirstItem: error in MailClient2Server::setSync");
        return NULL;
    }

    MailClientData* m = mailClient2Server->getFirstItem();

    if (m) {
        LOG.info("Subject first all mail: -%s-", m->getEmailData()->getEmailItem().getSubject());
        syncItem = buildSyncItem(m);
        syncItem->setState(SYNC_STATE_NONE);
        if (m->getParent()[0] == 'O')
            isMailInOutbox = true;

        delete m; m = NULL;

    } else {
        LOG.info("No mail get first");
    }

    return syncItem;

}

/*
* Return the next SyncItem of all. It is used in case of slow or refresh sync
* and retrieve the entire data source content.
*/

SyncItem* MailSyncSource::getNextItem() {
    if (syncItem) {
        //delete syncItem; syncItem = NULL;
        syncItem = NULL;
    }

    MailClientData* m = mailClient2Server->getNextItem();
    if (m) {
        LOG.info("Subject other all mail: -%s-", m->getEmailData()->getEmailItem().getSubject());
        syncItem = buildSyncItem(m);
        syncItem->setState(SYNC_STATE_NONE);
        if (m->getParent()[0] == 'O')
            isMailInOutbox = true;

        delete m; m = NULL;

    } else {
        LOG.info("No mail get next");
    }

    return syncItem;


}

SyncItem* MailSyncSource::getFirstItemKey() {

    if (syncItem) {
        //delete syncItem; syncItem = NULL;
        syncItem = NULL;
    }
    //
    // initialize the flag
    //
    setIsMailInOutbox(false);

    mailClient2Server->setFolderToSync(s_folderToSync);

    if ( mailClient2Server->setSync(SYNC_SLOW, getPath()) != S_OK ){
        LOG.error("getFirstItemKey: error in MailClient2Server::setSync");
        return NULL;
    }

    MailClientData* m = mailClient2Server->getFirstItem(TRUE);

    if (m) {
        mailServer2Client->setFolderToSync(s_folderToSync);
        mailServer2Client->deleteMessage(m);
        delete m; m = NULL;

        while((m = mailClient2Server->getNextItem(TRUE)) != NULL) {
            mailServer2Client->deleteMessage(m);
            LOG.debug("Delete all items: one record deleted");
            delete m; m = NULL;
        }
    }

    return NULL;
}

SyncItem* MailSyncSource::getNextItemKey() {

    LOG.debug("MailSyncSource::getNextItemKey");
    return NULL;
}

/*
* This method is always called by the sync manager. So the setModifiedItemsPOOM is always called
*/

SyncItem* MailSyncSource::getFirstNewItem() {

    if (syncItem) {
        //delete syncItem; syncItem = NULL;
        syncItem = NULL;
    }
    //
    // initialize the flag
    //
    setIsMailInOutbox(false);

    mailClient2Server->setFolderToSync(s_folderToSync);

    if ( mailClient2Server->setSync(SYNC_TWO_WAY, getPath()) != S_OK ){
        LOG.error("getFirstNewItem: error in MailClient2Server::setSync");
        return NULL;
    }

    MailClientData* m = mailClient2Server->getFirstNewItem();

    if (m) {
        LOG.info("Subject first new mail: -%s-", m->getEmailData()->getEmailItem().getSubject());
        syncItem = buildSyncItem(m);
        syncItem->setState(SYNC_STATE_NEW);
        if (m->getParent()[0] == 'O')
        {
            isMailInOutbox = true;
        }

        delete m; m = NULL;

    } else {
        LOG.info("No new mail");
    }

    return syncItem;
}

SyncItem* MailSyncSource::getNextNewItem() {
    if (syncItem) {
        //delete syncItem; syncItem = NULL;
        syncItem = NULL;
    }

    MailClientData* m = mailClient2Server->getNextNewItem();

    if (m) {
        LOG.info("Subject other new mail: -%s-", m->getEmailData()->getEmailItem().getSubject());
        syncItem = buildSyncItem(m);
        syncItem->setState(SYNC_STATE_NEW);
        //syncItem->setSourceParent(m->getParent());
        if (m->getParent()[0] == 'O')
               isMailInOutbox = true;

        delete m; m = NULL;

    } else {
        LOG.info("No other new mail");
    }
    //-- check if syncItem is NULL
    return syncItem;
}

SyncItem* MailSyncSource::getFirstUpdatedItem() {
    if (syncItem) {
        //delete syncItem; syncItem = NULL;
        syncItem = NULL;
    }

    MailClientData* m = mailClient2Server->getFirstUpdatedItem();

    if (m) {
        if(!m->getEmailData()->getEmailItem().empty()){
            LOG.info("Subject first updated mail: -%s-",
                m->getEmailData()->getEmailItem().getSubject());
        }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产福利| 日欧美一区二区| 国产成人h网站| 国产亚洲欧美在线| 风间由美性色一区二区三区| 国产喷白浆一区二区三区| 大桥未久av一区二区三区中文| 久久亚区不卡日本| 成年人网站91| 伊人色综合久久天天人手人婷| 在线区一区二视频| 91福利精品第一导航| 日韩免费成人网| 亚洲成人www| 日韩女同互慰一区二区| 成人中文字幕合集| 日韩一区中文字幕| 欧美老女人在线| 激情图区综合网| 亚洲免费av高清| 91精品国产黑色紧身裤美女| 国产精品一卡二卡在线观看| 亚洲欧洲av在线| 欧美高清一级片在线| 国产一区二区在线视频| 亚洲欧美日本在线| 日韩欧美国产wwwww| 成人毛片在线观看| 亚洲1区2区3区4区| 欧美极品另类videosde| 色婷婷国产精品| 久久99久久精品| 亚洲人精品午夜| 欧美大黄免费观看| 成人18视频日本| 奇米影视7777精品一区二区| 欧美国产精品一区二区| 精品视频一区三区九区| 国产成人精品综合在线观看| 艳妇臀荡乳欲伦亚洲一区| 26uuu另类欧美| 欧美日韩一区三区| 成人黄动漫网站免费app| 午夜一区二区三区在线观看| 久久久蜜桃精品| 欧美日韩午夜在线| www.一区二区| 在线播放91灌醉迷j高跟美女| 国产激情一区二区三区桃花岛亚洲| 亚洲国产乱码最新视频| 久久久www成人免费无遮挡大片| 在线欧美日韩精品| 国产jizzjizz一区二区| 美女国产一区二区三区| 亚洲一区免费视频| 中文字幕在线不卡视频| 欧美videos大乳护士334| 欧美在线高清视频| 色综合色狠狠综合色| 国产福利91精品一区| 蜜臀久久99精品久久久久久9| 一区二区三区四区亚洲| 国产精品传媒入口麻豆| 精品国产麻豆免费人成网站| 欧美狂野另类xxxxoooo| 91国内精品野花午夜精品| 成人看片黄a免费看在线| 激情五月激情综合网| 蜜桃视频一区二区| 性做久久久久久久免费看| 一区二区欧美在线观看| ㊣最新国产の精品bt伙计久久| 欧美精品一区二区精品网| 日韩午夜在线影院| 91精品国产综合久久婷婷香蕉| 在线免费不卡电影| 91久久精品一区二区三区| 99久久精品久久久久久清纯| 国产91丝袜在线播放0| 国产河南妇女毛片精品久久久| 韩国欧美一区二区| 国产呦精品一区二区三区网站| 久久99国产精品久久| 韩国v欧美v日本v亚洲v| 激情综合五月婷婷| 国产不卡在线播放| 成人美女在线观看| 91色porny在线视频| 色婷婷av一区二区三区软件| 91丝袜美腿高跟国产极品老师 | 亚洲日穴在线视频| 国产精品视频在线看| 国产欧美一区二区三区在线看蜜臀| 久久综合色婷婷| 国产片一区二区| 亚洲美女电影在线| 天天综合网天天综合色| 日本午夜一本久久久综合| 麻豆精品在线观看| 国产黄色91视频| 91丨九色丨蝌蚪丨老版| 欧美特级限制片免费在线观看| 欧美群妇大交群的观看方式| 欧美一级日韩一级| 久久午夜羞羞影院免费观看| 国产精品欧美一区二区三区| 一区二区成人在线观看| 日韩电影在线观看网站| 国产精品一区二区黑丝| 91免费小视频| 制服丝袜一区二区三区| 日本一区二区三区视频视频| 18成人在线视频| 五月天激情综合网| 国产一区二区调教| 色成年激情久久综合| 欧美va亚洲va在线观看蝴蝶网| 国产精品国产精品国产专区不片| 99re这里只有精品视频首页| 欧美日韩精品电影| 久久女同互慰一区二区三区| 亚洲人成网站精品片在线观看| 蜜臀va亚洲va欧美va天堂| 风间由美一区二区av101| 欧美日韩国产另类不卡| 国产亚洲人成网站| 午夜精品一区二区三区免费视频| 精品亚洲porn| 91福利视频在线| 欧美激情一区二区三区在线| 日韩国产欧美在线观看| av一区二区久久| 久久在线观看免费| 午夜一区二区三区在线观看| 成人精品电影在线观看| 91精品国产综合久久福利软件| 日韩一区在线播放| 国产综合色视频| 欧美视频日韩视频在线观看| 国产精品久久久久久妇女6080| 爽好多水快深点欧美视频| 91欧美一区二区| 2023国产一二三区日本精品2022| 夜夜爽夜夜爽精品视频| 福利一区福利二区| 日韩视频一区二区在线观看| 亚洲国产裸拍裸体视频在线观看乱了 | 91成人免费在线| 国产精品理论在线观看| 国内精品第一页| 日韩欧美国产午夜精品| 偷窥国产亚洲免费视频| 在线亚洲人成电影网站色www| 久久精品人人做| 国产精品一区久久久久| 日韩欧美中文一区| 日韩精品电影一区亚洲| 欧美性大战久久久久久久蜜臀| 中文字幕在线不卡一区二区三区 | 成人h动漫精品一区二区| 美女看a上一区| 7777精品伊人久久久大香线蕉最新版| 亚洲天堂成人在线观看| 不卡的电影网站| 国产精品三级av在线播放| 国产白丝精品91爽爽久久| 国产亚洲一区二区三区在线观看 | 日本不卡123| 欧美丰满一区二区免费视频| 亚洲第四色夜色| 欧美在线高清视频| 五月婷婷色综合| 日韩一区二区视频| 麻豆精品久久久| 精品少妇一区二区三区日产乱码 | 91在线视频播放地址| 国产精品久久久99| 99re在线视频这里只有精品| 伊人性伊人情综合网| 欧美日韩高清一区二区不卡| 麻豆视频一区二区| 免费观看在线综合色| 美女免费视频一区二区| 免费看日韩精品| voyeur盗摄精品| 亚洲欧美综合色| 欧美中文字幕不卡| 亚洲444eee在线观看| 欧美精品久久久久久久久老牛影院| 亚洲mv在线观看| 日韩亚洲欧美在线| 国产精品69毛片高清亚洲| 亚洲欧洲精品天堂一级| 在线观看国产精品网站| 日韩高清在线一区| 国产亚洲精品资源在线26u| 91丨porny丨首页| 性感美女久久精品| 26uuu久久综合| 91社区在线播放|