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

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

?? mailclient2server.cpp

?? funambol windows mobile plugin source code, the source code is taken from the funambol site
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
FuncExit:
    if(pRows)
    {
        // Free each element in the pRows buffer
        FreeProws(pRows);
    }
    RELEASE_OBJ(pContentsTable);
    LOG.debug("Exiting from GetAllMessages function");
    return hr;
}


HRESULT MailClient2Server::GetModificatedMessages(
                                ENTRYLIST& newMessages,
                                ENTRYLIST& updatedMessages,
                                ArrayList** deletedMessages,
                                LPMAPIFOLDER m_pInBoxFolder,
                                const wchar_t* path,
                                wchar_t folderId) {

    LOG.debug("Enter into GetModificatedMessages function");
    HRESULT        hr;
    UINT        nEntries = 0;
    SBinary        sbEntry;
    LPMAPITABLE pContentsTable = NULL;
    LPSRowSet    pRows = NULL;
    DATE        lastSync = 0;
    int         numMailItem = 0;
    int         i = 0;
    int         action = 0;
    BOOL        found = FALSE;

    BOOL        flagRead = FALSE;
    FILETIME    ft;
    SYSTEMTIME  st;

    DATE        lastSyncMailItem = 0;
    BOOL        flagReadMailItem = FALSE;

    MailInfo*  mailInfo = readPreviousMail(path, folderId);

    if (mailInfo == NULL) {
        if (folderId == 'O') {
            mailInfo = new MailInfo();
        } else {
            goto FuncExit;
        }
    }

    MailItem*  mailItem = NULL;

    lastSync    = mailInfo->getLast();
    numMailItem = mailInfo->getNum();


    // We define a SPropTagArray array here using the SizedSPropTagArray Macro
    // This enum will allows us to access portions of the array by a name instead of a number.
    // If more tags are added to the array, appropriate constants need to be added to the enum.

    hr = m_pInBoxFolder->GetContentsTable( 0, &pContentsTable);
    EXIT_ON_FAILED(hr);

    hr = pContentsTable->SetColumns((LPSPropTagArray)&Columns, 0);
    EXIT_ON_FAILED(hr);

    while(!FAILED(hr = pContentsTable->QueryRows(1, 0, &pRows)))
    {
        found = FALSE;

        if(pRows->cRows == 0)
            break;

        // get the property of the mail in the folder
        sbEntry = pRows->aRow[0].lpProps[eePR_ENTRYID].Value.bin;
        ft = pRows->aRow[0].lpProps[eePR_LAST_MODIFICATION_TIME].Value.ft;
        FileTimeToSystemTime(&ft, &st);
        SystemTimeToVariantTime(&st, &lastSyncMailItem);

        if (pRows->aRow[0].lpProps[eePR_MESSAGE_FLAGS].Value.ul & MSGFLAG_READ)
            flagRead = TRUE;
        else
            flagRead = FALSE;

        char* id = convertBinaryToChar(sbEntry, folderId);

        for (i = 0; i < mailInfo->getMailItems()->size(); i++) {

            mailItem = (MailItem*)(mailInfo->getMailItems())->get(i);;

            if (strcmp(id, mailItem->getId()) != 0)
                continue;

            // if no continue then it goes on and found the item
            found = TRUE;
            flagReadMailItem = mailItem->getRead();

            if (flagReadMailItem != flagRead ||
                lastSyncMailItem > lastSync) {
                action = UPDATED_MAIL;
            } else {
                action = NO_ACTION_MAIL;
            }
            mailInfo->getMailItems()->removeElementAt(i);
            break;

        }

        if (id) { delete [] id; id = NULL;}

        if (found == FALSE)
            action = NEW_MAIL;

        switch (action) {

            case NEW_MAIL: {

                if(newMessages.cValues)
                {
                    PVOID    pOldBuffer = newMessages.lpbin;
                    MAPIAllocateBuffer(sizeof(SBinary) * (newMessages.cValues + 1), (LPVOID*)&(newMessages.lpbin));
                    memmove((LPVOID*)newMessages.lpbin, pOldBuffer, sizeof(SBinary) * newMessages.cValues);
                    MAPIFreeBuffer(pOldBuffer);
                }
                else {
                    MAPIAllocateBuffer(sizeof(SBinary), (LPVOID*)&(newMessages.lpbin));
                }
                newMessages.lpbin[newMessages.cValues].cb = sbEntry.cb;
                MAPIAllocateBuffer(sbEntry.cb, (LPVOID*)&(newMessages.lpbin[newMessages.cValues].lpb) );
                memmove(newMessages.lpbin[newMessages.cValues].lpb, sbEntry.lpb, sbEntry.cb);
                newMessages.cValues++;

                // Free each element in the pRows buffer
                FreeProws(pRows);

            }; break;

            case UPDATED_MAIL: {

                if(updatedMessages.cValues)
                {
                    PVOID    pOldBuffer = updatedMessages.lpbin;
                    MAPIAllocateBuffer(sizeof(SBinary) * (updatedMessages.cValues + 1), (LPVOID*)&(updatedMessages.lpbin));
                    memmove((LPVOID*)updatedMessages.lpbin, pOldBuffer, sizeof(SBinary) * updatedMessages.cValues);
                    MAPIFreeBuffer(pOldBuffer);
                }
                else {
                    MAPIAllocateBuffer(sizeof(SBinary), (LPVOID*)&(updatedMessages.lpbin));
                }

                updatedMessages.lpbin[updatedMessages.cValues].cb = sbEntry.cb;
                MAPIAllocateBuffer(sbEntry.cb, (LPVOID*)&(updatedMessages.lpbin[updatedMessages.cValues].lpb) );
                memmove(updatedMessages.lpbin[updatedMessages.cValues].lpb, sbEntry.lpb, sbEntry.cb);
                updatedMessages.cValues++;

                // Free each element in the pRows buffer
                FreeProws(pRows);
            }; break;

            case NO_ACTION_MAIL:
                // No action to do
                break;
        }

    }
    if (mailInfo->getMailItems()->size() > 0)
        *deletedMessages = mailInfo->getMailItems()->clone();

FuncExit:
    if(pRows)
    {
        // Free each element in the pRows buffer
        FreeProws(pRows);
    }
    if (mailInfo) {
        delete mailInfo; mailInfo = NULL;
    }

    RELEASE_OBJ(pContentsTable);
    LOG.debug("Exiting from GetModificatedMessages function");
    return hr;
}

void MailClient2Server::setFolderToSync(const wchar_t* t){
    if(folderToSync)
        delete folderToSync;
    folderToSync = wstrdup(t);
}

wchar_t* MailClient2Server::getFolderToSync() {
    return folderToSync;
}

HRESULT MailClient2Server::setSync (int mode, const wchar_t* path)
{
    LOG.debug("Enter into setSync function");
    HRESULT           hr          =  E_FAIL;
    IMAPISession *    pSession    =  NULL;
    IMAPITable*       pTable      =  NULL;
    SRowSet*          psrs        =  NULL;
    IMsgStore*        pStore      =  NULL;
    int               i           =  0;
    ULONG*   rgTags;
    folderNumber = 0;
    
    if (folderToSync == NULL) {
        rgTags = new ULONG[2];
        rgTags[0] = 1;
        rgTags[1] = PR_CE_IPM_INBOX_ENTRYID;
        folderNumber = 1;
    }
    else {
        folderNumber = wcslen(folderToSync);
        rgTags = new ULONG[folderNumber + 1];
        rgTags[0] = folderNumber;
        for (int i = 1; i <= folderNumber; i++)
            rgTags[i] = getFolderId(folderToSync[i-1]);    // PR_CE_IPM_INBOX_ENTRYID;
        // PR_CE_IPM_DRAFTS_ENTRYID;
    }

    ULONG             rgMsgTags[] =  { 1, PR_ENTRYID };
    ULONG             cValues     =  0;
    ULONG             returned    =  0;

    SPropValue*       rgprops     =  NULL;
    SPropValue*       rgpropsMsg  =  NULL;
    LPMAPIFOLDER      pfldrInbox  =  NULL;

    IMessage*         pmsg        =  NULL;
    ULONG             cmsgValue   =  0;
    SPropValue*       msgprops    =  NULL;


    // First log on to the store.
    hr = MAPILogonEx (NULL, NULL, NULL, NULL, &pSession);
    EXIT_ON_FAILED (hr);

    // Get the message stores table
    hr = pSession->GetMsgStoresTable (MAPI_UNICODE, &pTable);
    EXIT_ON_FAILED (hr);

    hr = pTable->SetColumns((LPSPropTagArray)&Columns, 0);
    EXIT_ON_FAILED(hr);

    int totalMails =0;

    while (1){
        // Get a row
        hr = pTable->QueryRows (1, 0, &psrs);
        EXIT_ON_FAILED (hr);

        // Did we hit the end of the table?
        if (psrs->cRows != 1) {
            break;
        }
        //
        // the display name is the name of the account.
        //
        wchar_t* displayName = psrs->aRow[0].lpProps[eePR_DISPLAY_NAME].Value.lpszW;


        //
        // The name of the MessageStore that we use for the own Transport
        //
        if (wcscmp(displayName, ACCOUNT_NAME) == 0) {

            // Make sure we got the props we need
            if ( (psrs->aRow[0].cValues < 1) ||
                 (psrs->aRow[0].lpProps[0].ulPropTag != PR_ENTRYID) ) {
                LOG.error("Store missing PR_ENTRYID!");
                hr = E_FAIL;
                break;
            }
            wchar_t accountMail[256];
            getAccountInfoSession(accName, accountMail, pSession);
            // Open this message store
            hr = pSession->OpenMsgStore (NULL,
                    psrs->aRow[0].lpProps[0].Value.bin.cb,
                    (ENTRYID *) psrs->aRow[0].lpProps[0].Value.
                    bin.lpb, NULL, 0, &pStore);
            EXIT_ON_FAILED (hr);

            // Now get the Inbox folder.
            hr = pStore->GetProps ((SPropTagArray *) rgTags, MAPI_UNICODE, &cValues, &rgprops);
            EXIT_ON_FAILED (hr);

            ASSERT (rgprops);

            entryListArray       = new ENTRYLIST[folderNumber];
            newMessagesArray     = new ENTRYLIST[folderNumber];
            updatedMessagesArray = new ENTRYLIST[folderNumber];
            deletedMessagesArray = new ArrayList*[folderNumber];
            
            //
            // watch at the folder that we want to sync
            //
            for (i = 0; i < folderNumber; i++) {

                // open the message store
                hr = pStore->OpenEntry (rgprops[i].Value.bin.cb,
                        (LPENTRYID)rgprops[i].Value.bin.lpb,
                        NULL,
                        MAPI_MODIFY,
                        NULL,
                        (IUnknown **) &pfldrInbox);
                EXIT_ON_FAILED (hr);

                if ( !pfldrInbox) {
                    LOG.error("Null inbox folder");
                    hr = E_FAIL;
                    break;
                }

                entryListArray[i].cValues = 0;
                newMessagesArray[i].cValues = 0;
                updatedMessagesArray[i].cValues = 0;
                deletedMessagesArray[i] = new ArrayList();

                // ENTRYLIST entry;
                switch (mode) {

                    case ONLY_ALL_MESSAGE_LIST:
                    {
                        hr = GetAllMessages(entryListArray[i], pfldrInbox, path, folderToSync[i]);
                        break;
                    }
                    case SYNC_SLOW:
                    {
                        //extra.clear();

                        if (folderToSync[i] == 'I' || folderToSync[i] == 'S') {
                            ENTRYLIST entry;
                            entry.cValues = 0;
                            hr = GetAllMessages(entry, pfldrInbox, path, folderToSync[i]);
                            hr = pfldrInbox->DeleteMessages (&entry, 0, NULL, 0);

                        } else {

                            hr = GetAllMessages(entryListArray[i], pfldrInbox, path, folderToSync[i]);
                            MailInfo* mailInfo = NULL;
                            readPreviousMail(path, folderToSync[i]);
                            if (mailInfo) {
                                delete mailInfo; mailInfo = NULL;
                            }
                        }
                        /*
                        * for the slow sync of Inbox and Sent (if checked to sync) the new way to do is delete all the items
                        * in the folder.

                        if (folderToSync[i] == 'I' || folderToSync[i] == 'S') {
                            hr = pfldrInbox->DeleteMessages (&entryListArray[i], 0, NULL, 0);
                            //MAPIFreeBuffer(entryListArray[i].lpbin);
                            //entryListArray[i].cValues = 0;
                        } else {
                            readPreviousMail(path, folderToSync[i], extra);
                            if (mailInfo) {
                                delete mailInfo; mailInfo = NULL;
                            }
                        }*/
                        break;
                    }
                    case SYNC_TWO_WAY:
                    {
                        
                        hr = GetModificatedMessages(newMessagesArray[i], updatedMessagesArray[i],
                                &deletedMessagesArray[i], pfldrInbox, path, folderToSync[i]);

                        totalMails += newMessagesArray[i].cValues;
                        totalMails += updatedMessagesArray[i].cValues;
                        totalMails += deletedMessagesArray[i]->size();

                        break;
                    }
                    default:
                        break;
                }
            }
        }


        // Clean up
        MAPIFreeBuffer (rgprops);
        MAPIFreeBuffer (rgpropsMsg);
        FreeProws   (psrs);

        rgprops   =  NULL;
        rgpropsMsg =  NULL;
        psrs    =  NULL;

        RELEASE_OBJ (pmsg);
        RELEASE_OBJ (pfldrInbox);
        RELEASE_OBJ (pStore);
    }

FuncExit:

    MAPIFreeBuffer (rgprops);
    MAPIFreeBuffer (rgpropsMsg);
    FreeProws   (psrs);

    RELEASE_OBJ (pmsg);
    RELEASE_OBJ (pfldrInbox);
    RELEASE_OBJ (pStore);
    RELEASE_OBJ (pTable);
    RELEASE_OBJ (pSession);

    if (rgTags)
        delete rgTags;

    if(HwndFunctions::wnd)
        SendMessage(HwndFunctions::wnd, ID_MYMSG_TOTAL_ITEMS, SOURCE_MAIL, (LPARAM)totalMails);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成a人亚洲精品| 亚洲综合色成人| 精品第一国产综合精品aⅴ| 91精品国产色综合久久ai换脸| 91久久精品一区二区三| 欧美日韩视频在线第一区 | 欧美va在线播放| 国内精品国产三级国产a久久| 免费观看在线综合色| 国内精品第一页| 欧美一级片在线| 91女厕偷拍女厕偷拍高清| 琪琪久久久久日韩精品| 精品伊人久久久久7777人| 久久精品国产免费| 日韩一区二区精品| 日本久久一区二区三区| 欧美v亚洲v综合ⅴ国产v| 久久99国产乱子伦精品免费| 精品欧美一区二区三区精品久久| 天堂影院一区二区| 欧美一级淫片007| 国产91丝袜在线播放九色| 一区精品在线播放| 777久久久精品| 97国产精品videossex| 亚洲成人av电影| 欧美精品一区二区三区蜜桃视频| 成人手机电影网| 视频一区二区欧美| 久久久久久9999| 日韩亚洲国产中文字幕欧美| 韩国在线一区二区| 亚洲国产精品久久不卡毛片| 国产视频视频一区| 欧美日韩成人激情| 成人美女视频在线观看| 亚洲高清在线精品| **性色生活片久久毛片| 欧美v国产在线一区二区三区| 色综合色综合色综合| 国产在线乱码一区二区三区| 亚洲电影中文字幕在线观看| 国产精品毛片大码女人| 久久这里只有精品视频网| 欧美日韩在线三区| 欧美色精品天天在线观看视频| 成人激情午夜影院| 国产麻豆精品在线| 国产一区在线观看视频| 久久99热99| 国产精品小仙女| 国产suv一区二区三区88区| 久久av资源站| 麻豆一区二区三区| 国产一区二区h| 国产精品亚洲一区二区三区妖精 | 欧美三级电影网| 欧美日韩高清影院| 欧美卡1卡2卡| 2017欧美狠狠色| 国产精品美女久久久久aⅴ国产馆| 久久久www成人免费毛片麻豆| 欧美激情综合网| 亚洲最新在线观看| 免费不卡在线视频| 国产一区中文字幕| 一本大道综合伊人精品热热| 色婷婷亚洲婷婷| 欧美www视频| 亚洲免费高清视频在线| 日本欧美一区二区三区乱码| 国产麻豆午夜三级精品| 91小视频在线免费看| 日韩小视频在线观看专区| 国产日本欧洲亚洲| 天堂蜜桃91精品| 成人免费视频视频在线观看免费 | 奇米一区二区三区av| 成人一级片在线观看| 欧美一级生活片| 一区二区三区色| 国产成人鲁色资源国产91色综| 91丨九色丨蝌蚪富婆spa| 精品99999| 琪琪久久久久日韩精品| 在线观看成人免费视频| 国产精品高潮呻吟| 国内外成人在线视频| 日韩欧美一区二区不卡| 亚洲免费观看在线视频| 国产综合一区二区| 精品国产一区久久| 日韩av一级片| 欧美一区二区三区免费大片 | 成人免费高清视频| 国产欧美日韩一区二区三区在线观看 | 欧美日韩在线免费视频| 国产精品污网站| 丁香另类激情小说| 中文字幕在线观看不卡视频| 精品一区二区日韩| 精品国产第一区二区三区观看体验| 亚洲第一激情av| 欧美夫妻性生活| 久久机这里只有精品| 精品区一区二区| 国产99久久久国产精品潘金| 国产人成一区二区三区影院| 成人av电影在线播放| 亚洲美女屁股眼交3| 欧美伊人精品成人久久综合97| 天堂va蜜桃一区二区三区 | 91精品国产综合久久久久久久久久| 亚洲成人综合视频| 精品成人在线观看| 不卡一卡二卡三乱码免费网站| 亚洲精品成人精品456| 欧美日本视频在线| 国产999精品久久久久久| 亚洲欧美日韩一区二区三区在线观看| 欧美羞羞免费网站| 国产精品一二三四| 亚洲一二三四区不卡| 国产视频在线观看一区二区三区 | 一区二区在线观看免费| 欧美午夜理伦三级在线观看| 日本欧美一区二区三区| 欧美男生操女生| 成人一区二区三区视频在线观看| 国产精品欧美一区喷水| 欧美美女网站色| 亚洲成年人网站在线观看| 久久一留热品黄| 色综合久久久久网| 三级精品在线观看| 中文文精品字幕一区二区| 欧美在线一二三四区| 国产精选一区二区三区| 一区二区三区国产| 久久久精品日韩欧美| 欧美亚洲动漫另类| 成人综合日日夜夜| 久久国产日韩欧美精品| 一区二区不卡在线视频 午夜欧美不卡在| 欧美日韩国产综合一区二区三区| 国产麻豆91精品| 免费的国产精品| 自拍偷拍欧美精品| 亚洲日本成人在线观看| 国产日韩精品一区二区三区| 日韩欧美一级片| 欧美性猛交xxxx乱大交退制版| 欧美伊人久久久久久久久影院| 成人激情小说乱人伦| 国产69精品一区二区亚洲孕妇| 婷婷成人激情在线网| 日韩高清在线一区| 午夜欧美视频在线观看| 性久久久久久久| 午夜精品福利一区二区蜜股av| |精品福利一区二区三区| 欧美不卡一区二区三区| 久久久久久免费网| 中文字幕欧美区| 亚洲三级久久久| 亚洲午夜一区二区三区| 午夜国产精品影院在线观看| 亚洲图片有声小说| 亚洲一线二线三线久久久| 亚洲高清视频在线| 蜜臀av性久久久久蜜臀aⅴ流畅| 视频一区二区国产| 国模一区二区三区白浆| 97久久精品人人做人人爽50路 | 日韩伦理免费电影| 亚洲一区二区偷拍精品| 国产在线精品免费| 国产中文字幕一区| 日本黄色一区二区| 日韩免费观看高清完整版在线观看| 久久久久久一级片| 亚洲小少妇裸体bbw| 国产一区二区精品在线观看| 99久久er热在这里只有精品15 | 久久99在线观看| 91亚洲精品久久久蜜桃网站| 在线播放亚洲一区| 国产欧美一区二区精品久导航 | 亚洲美女电影在线| 国产成人免费9x9x人网站视频| 欧美亚洲禁片免费| 中文无字幕一区二区三区| 美国av一区二区| 7777精品伊人久久久大香线蕉经典版下载| 亚洲国产精品t66y| 国产精品一区二区在线看| 日韩一区二区在线观看视频| 久久一区二区三区四区| 国产一区二区三区电影在线观看|