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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 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一区二区三区免费野_久草精品视频
中文字幕在线观看不卡| 亚洲国产视频直播| 欧美亚洲禁片免费| 国产资源在线一区| 亚洲国产一区在线观看| 欧美国产一区二区| 日韩精品一区二区三区在线| 在线免费观看日本欧美| 国产精品一色哟哟哟| 午夜精品久久久久久久久久久| 国产日本亚洲高清| 日韩欧美一级二级| 欧美日韩国产另类一区| 99在线精品一区二区三区| 精品一二三四区| 亚洲国产成人av网| 亚洲色图一区二区| 中文字幕av一区二区三区免费看 | 欧美高清激情brazzers| yourporn久久国产精品| 国内精品在线播放| 欧美aⅴ一区二区三区视频| 亚洲综合小说图片| 亚洲摸摸操操av| 国产精品乱码人人做人人爱| 精品剧情v国产在线观看在线| 欧美日韩1234| 欧美人动与zoxxxx乱| 91黄色免费网站| 99国产精品久久| 丁香激情综合国产| 欧美午夜精品一区二区三区| 国产精品18久久久久久久久久久久 | 成人av动漫在线| 国产成人丝袜美腿| 国产一区二区精品久久91| 秋霞午夜av一区二区三区| 亚洲成a人片在线不卡一二三区| 亚洲精选免费视频| 亚洲色图欧美在线| 亚洲精品你懂的| 亚洲综合成人在线| 亚洲自拍偷拍欧美| 亚洲亚洲精品在线观看| 性久久久久久久久| 五月婷婷欧美视频| 石原莉奈一区二区三区在线观看| 亚洲不卡av一区二区三区| 亚洲地区一二三色| 人人爽香蕉精品| 精品一区二区免费看| 国产激情一区二区三区桃花岛亚洲| 国产精品资源网| 成人激情开心网| www.亚洲人| 色88888久久久久久影院按摩| 在线观看网站黄不卡| 91麻豆精品国产91久久久久 | 日韩一级高清毛片| 久久久青草青青国产亚洲免观| 久久久精品影视| 中文字幕五月欧美| 亚洲综合视频在线| 日本视频免费一区| 国产美女精品人人做人人爽| 成人a区在线观看| 欧美亚洲动漫制服丝袜| 日韩精品中文字幕一区二区三区 | 欧美一区二区三区在线视频| 日韩视频国产视频| 国产女同性恋一区二区| 亚洲欧洲日韩在线| 日本三级韩国三级欧美三级| 国产黄色精品网站| 色一区在线观看| 欧美成人一级视频| 亚洲三级电影网站| 日本系列欧美系列| 成人黄色软件下载| 欧美日韩成人综合天天影院| 亚洲黄色小视频| 日韩专区一卡二卡| 成人综合在线视频| 56国语精品自产拍在线观看| 中文成人综合网| 日韩精品欧美精品| 北条麻妃国产九九精品视频| 在线不卡一区二区| 欧美高清在线一区| 美国欧美日韩国产在线播放| 成人美女在线观看| 欧美一区二区三区男人的天堂| 日本一区二区三区在线观看| 日韩精彩视频在线观看| 成人午夜av在线| 91精品国产入口在线| 国产精品久久久久久福利一牛影视| 日韩精品1区2区3区| 91在线一区二区三区| 精品国产一区二区精华| 亚洲一区二区三区影院| 国产老妇另类xxxxx| 777奇米成人网| 亚洲少妇屁股交4| 国产一区二区三区蝌蚪| 在线播放欧美女士性生活| 国产精品福利一区| 国产精品888| 日韩欧美高清在线| 亚洲成年人影院| 91麻豆免费在线观看| 国产偷国产偷精品高清尤物| 日韩在线卡一卡二| 欧洲人成人精品| 亚洲日本在线视频观看| 国产伦理精品不卡| 欧美大黄免费观看| 香蕉av福利精品导航| 色婷婷久久久久swag精品| 欧美激情综合五月色丁香小说| 蜜桃视频在线观看一区二区| 欧美精品亚洲一区二区在线播放| 亚洲欧美另类久久久精品2019| 国产乱码精品一区二区三区五月婷| 欧美一区二区三区在线视频| 午夜视频久久久久久| 一本大道综合伊人精品热热| 国产精品无人区| 国产99久久久久久免费看农村| 精品国产成人在线影院| 精品一区中文字幕| 精品久久久久av影院| 精品在线免费视频| 精品国产区一区| 久久电影国产免费久久电影| 国产精品情趣视频| 国产成a人亚洲| 国产精品嫩草影院com| 成人黄色综合网站| 亚洲欧洲精品成人久久奇米网| 丰满少妇在线播放bd日韩电影| 欧美激情在线免费观看| 大桥未久av一区二区三区中文| 国产嫩草影院久久久久| 成人免费av资源| 亚洲视频中文字幕| 欧美日韩在线精品一区二区三区激情| 亚洲一级二级三级在线免费观看| 色噜噜狠狠一区二区三区果冻| 一区二区三区美女视频| 欧美日韩你懂得| 麻豆精品一二三| 久久久久久免费网| av在线播放一区二区三区| 亚洲特黄一级片| 欧美伦理视频网站| 精品一区二区三区香蕉蜜桃 | 洋洋av久久久久久久一区| 欧美视频一区二区三区| 免费高清成人在线| 久久久www成人免费毛片麻豆| 懂色av一区二区在线播放| 亚洲视频电影在线| 4438x亚洲最大成人网| 狠狠久久亚洲欧美| 国产精品高清亚洲| 欧美精品亚洲一区二区在线播放| 美女脱光内衣内裤视频久久网站| 国产午夜精品福利| 一本色道久久综合亚洲aⅴ蜜桃 | 久久9热精品视频| 久久久亚洲高清| 欧洲日韩一区二区三区| 免费日韩伦理电影| 国产午夜精品福利| 欧美日韩国产区一| 国产成人啪免费观看软件 | 老司机午夜精品| 中文字幕亚洲综合久久菠萝蜜| 欧美日本国产一区| 国产不卡在线播放| 一二三区精品视频| 久久一日本道色综合| 欧美性大战久久久久久久| 激情久久五月天| 亚洲一区精品在线| 国产午夜一区二区三区| 欧美日韩中文另类| 国产成人午夜精品5599| 午夜精品福利在线| 中文久久乱码一区二区| 日韩一区二区免费视频| 一本色道久久综合亚洲aⅴ蜜桃| 另类的小说在线视频另类成人小视频在线| 国产精品久久久久久久午夜片 | 欧美精选一区二区| 成人性生交大合| 毛片一区二区三区| 一区二区在线电影| 国产片一区二区|