⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uidlg.cpp

📁 funambol window mobile客户端源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
        s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_BRIEFCASE);
        lstSources.addItem(SOURCE_BRIEFCASE, s1, AfxGetApp()->LoadIcon(IDI_BRIEFCASE));
    }

    refreshSourcePanes();

    lstSources.Invalidate();
}

void CuiDlg::OnContextMenu(CWnd* /*pWnd*/, CPoint point)
{
    // TODO:  handle 2nd event and close the popup
    CPoint mPointCurrent;
    ::GetCursorPos(&mPointCurrent);
    CMenu mPopupMenu;
//    mPopupMenu.LoadMenu(IDR_MENU_CONTEXT);


    CMenu *pContextMenu = mPopupMenu.GetSubMenu(0);
    /*pContextMenu->TrackPopupMenu(TPM_LEFTALIGN |
    TPM_LEFTBUTTON | TPM_RIGHTBUTTON | TPM_RETURNCMD |
    TPM_NONOTIFY,
    mPointCurrent.x, mPointCurrent.y, GetActiveWindow(),
    NULL); */

    pContextMenu->TrackPopupMenu(TPM_LEFTALIGN |
        TPM_RETURNCMD | TPM_NONOTIFY,
        point.x, point.y, GetActiveWindow(),
        NULL);
}

bool isToday(SYSTEMTIME time) {
    SYSTEMTIME st;
    GetLocalTime(&st);
    if (time.wYear  == st.wYear   &&
        time.wMonth == st.wMonth &&
        time.wDay   == st.wDay) {

        return true;
    }
    else {
        return false;
    }
}


wstring CuiDlg::getFormattedDateAndTime(long lastSync) {

    SYSTEMTIME timeDest; wchar_t data[80]; 
    wchar_t formatDate[80]; wchar_t formatTime[80];
    wstring result;

    CTime timeSyncContacts(lastSync);
    
    timeSyncContacts.GetAsSystemTime(timeDest);
    GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SLONGDATE, data, 80);

    if (isToday(timeDest)) {
        CString s1;
        s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_TODAY);
        wcscpy(formatDate, s1);
    } else {
        result = reformatDate(data);   
    GetDateFormat(LOCALE_USER_DEFAULT, NULL, &timeDest, result.c_str(), formatDate, 80); 
    }
    
    GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_STIMEFORMAT, data, 80);
    result = reformatTime(data);   

    GetTimeFormat(LOCALE_USER_DEFAULT, NULL, &timeDest, result.c_str(), formatTime, 80); 
    
    result = formatDate;
    result += TEXT(" ");
    result += formatTime;    
    
    return result;
}


void CuiDlg::refreshSourcePane( int id ){
    CString s1;
    ClientSettings* cs = getRegConfig();
    bool enable;
    unsigned long lastSync=0;
    wstring date_time;

    if(id == SOURCE_MAIL){        
        lastSync=0;

        enable = strcmp(cs->getConfigSourcesParameter("mail","sync"), "none") != 0;
        if(!doesFunambolAccountExist()) {
            enable = false;
        }        
        lstSources.enableItem(id, enable);
        lastSync = cs->getConfigSourcesLastTimestamp("mail");

        if(syncSourceMailState == SYNCSOURCE_STATE_NOT_SYNCED){
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LAST_SYNC_FAILED);
        }
        else if( syncSourceMailState == SYNCSOURCE_STATE_CANCELED){
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LAST_SYNC_CANCELED);
        }
        else if(lastSync == 0) {
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_NOT_SYNCHRONIZED);
        }
        else {           
            date_time = getFormattedDateAndTime(lastSync);
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_SYNCHRONIZED); s1+= TEXT(" ");
            s1 += date_time.c_str();
        }
            lstSources.setText(SOURCE_MAIL, s1);
    }

    if(id == SOURCE_CONTACTS){
       lastSync=0;

        enable =  strcmp(cs->getConfigSourcesParameter("contact","sync"), "none") != 0;
        lstSources.enableItem(id, enable);
        lastSync = cs->getConfigSourcesLastTimestamp("contact");

        if(syncSourceContactState == SYNCSOURCE_STATE_NOT_SYNCED){
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LAST_SYNC_FAILED);
        }
        else if( syncSourceContactState == SYNCSOURCE_STATE_CANCELED){
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LAST_SYNC_CANCELED);
        }
        else if(lastSync == 0) {
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_NOT_SYNCHRONIZED);
        }
        else
        {           
            wstring date_time = getFormattedDateAndTime(lastSync);
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_SYNCHRONIZED); s1+= TEXT(" ");
            s1 += date_time.c_str();
        }
         lstSources.setText(SOURCE_CONTACTS, s1);
    }


    if(id == SOURCE_CALENDAR){
        lastSync=0;

        enable =  strcmp(cs->getConfigSourcesParameter("calendar","sync"), "none") != 0;
        lstSources.enableItem(id, enable);
        lastSync = cs->getConfigSourcesLastTimestamp("calendar");

        if(syncSourceCalendarState == SYNCSOURCE_STATE_NOT_SYNCED){
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LAST_SYNC_FAILED);
        }
        else if( syncSourceCalendarState == SYNCSOURCE_STATE_CANCELED){
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LAST_SYNC_CANCELED);
        }
        else if(lastSync == 0) {
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_NOT_SYNCHRONIZED);
        }
        else
        {            
            date_time = getFormattedDateAndTime(lastSync);
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_SYNCHRONIZED); s1+= TEXT(" ");
            s1 += date_time.c_str();
        }
        lstSources.setText(SOURCE_CALENDAR, s1);
    }

    if(id == SOURCE_TASKS){
        lastSync=0;

        enable =  strcmp(cs->getConfigSourcesParameter("task","sync"), "none") != 0;
        lstSources.enableItem(id, enable);
        lastSync = cs->getConfigSourcesLastTimestamp("task");

        if(syncSourceTaskState == SYNCSOURCE_STATE_NOT_SYNCED){
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LAST_SYNC_FAILED);
        }
        else if( syncSourceTaskState == SYNCSOURCE_STATE_CANCELED){
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LAST_SYNC_CANCELED);
        }
        else if(lastSync == 0) {
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_NOT_SYNCHRONIZED);
        }
        else
        {           
            date_time = getFormattedDateAndTime(lastSync);
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_SYNCHRONIZED); s1+= TEXT(" ");
            s1 += date_time.c_str();
        }
        lstSources.setText(SOURCE_TASKS, s1);
    }

    if(id == SOURCE_BRIEFCASE){
        lastSync=0;

        enable =  strcmp(cs->getConfigSourcesParameter("briefcase","sync"), "none") != 0;
        lstSources.enableItem(id, enable);
        lastSync = cs->getConfigSourcesLastTimestamp("briefcase");

        if(syncSourceBriefcaseState == SYNCSOURCE_STATE_NOT_SYNCED){
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LAST_SYNC_FAILED);
        }
        else if( syncSourceBriefcaseState == SYNCSOURCE_STATE_CANCELED){
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LAST_SYNC_CANCELED);
        }
        else if(lastSync == 0) {
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_NOT_SYNCHRONIZED);
        }
        else
        {           
            date_time = getFormattedDateAndTime(lastSync);
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_SYNCHRONIZED); s1+= TEXT(" ");
            s1 += date_time.c_str();
        }
        lstSources.setText(SOURCE_BRIEFCASE, s1);
    }

#if defined(WIN32_PLATFORM_PSPC)
    if(id == SOURCE_NOTES){
        lastSync=0;

        enable =  strcmp(cs->getConfigSourcesParameter("note","sync"), "none") != 0;
        lstSources.enableItem(id, enable);
        lastSync = cs->getConfigSourcesLastTimestamp("note");

        if(syncSourceNoteState == SYNCSOURCE_STATE_NOT_SYNCED){
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LAST_SYNC_FAILED);
        }
        else if( syncSourceNoteState == SYNCSOURCE_STATE_CANCELED){
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LAST_SYNC_CANCELED);
        }
        else if(lastSync == 0) {
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_NOT_SYNCHRONIZED);
        }
        else
        {           
            date_time = getFormattedDateAndTime(lastSync);
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_SYNCHRONIZED); s1+= TEXT(" ");
            s1 += date_time.c_str();
        }
        lstSources.setText(SOURCE_NOTES, s1);
    }
#endif

    EnableSyncButton(isSyncEnabled());
    lstSources.resetSourceIcon(id);
}

void CuiDlg::refreshSourcePanes(){
    refreshSourcePane(SOURCE_MAIL);
    refreshSourcePane(SOURCE_CONTACTS);
    refreshSourcePane(SOURCE_CALENDAR);
    refreshSourcePane(SOURCE_TASKS);

    //ClientSettings* cs = getRegConfig();
    //if(! cs->getIsPortal()){
    if (showNoteSource) {
        #if defined(WIN32_PLATFORM_PSPC)
            refreshSourcePane(SOURCE_NOTES);
        #endif
    }
    if (showBriefcaseSource) {
        refreshSourcePane(SOURCE_BRIEFCASE);
    }

    lstSources.resetSourceIcons();
}


void CuiDlg::SelectSource( int index ){
 if(index < 0)
    return;

 try{
    CString s1,s2;
    bool refreshPane = false;
    ClientSettings* cs = getRegConfig();

    int id = lstSources.indexToId(index);

    if(id == SOURCE_MAIL){
        if(!doesFunambolAccountExist()){
            refreshSourcePane(SOURCE_MAIL);
        }
       else{

        // check if source is enabled
        if( ( strcmp(cs->getConfigSourcesParameter("mail","sync"), "none") != 0) ){
            // start sync with this source
            lstSources.setState(SOURCE_MAIL, ITEM_STATE_TO_SYNC);
            setFirstSourceToSync(SOURCE_MAIL);
            refreshSourcePane(SOURCE_MAIL);
            StartSync(_T("manual mail"));
        }
        else{
            if(!doesFunambolAccountExist())
                return;
            // ask if to enable source
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_TEXT_ENABLE_SYNC_FOR); s1+=" ";
            s2.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_EMAIL); s1+=s2;
            s2.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_TEXT_ITEMS_LOWER); s2+="?";
            s1+=s2;

            int retMsgBox =TimedMessageBox(GetSafeHwnd(), s1, getLocalizationUtils()->getLocalizationString(IDS_FUNAMBOL_ALERT),
                MB_YESNO | MB_ICONQUESTION | MB_SETFOREGROUND, 10 * 1000);

            if(retMsgBox == IDYES){
                refreshPane = true;
                cs->setConfigSourcesParameter("mail","sync","two-way");
                getRegConfig()->setDirty(CS_DIRTY_SOURCE_MAIL);
                getRegConfig()->saveDirty();
            }
        }
      }
    };

    if(id == SOURCE_CONTACTS){
        // check if source is enabled
        if( strcmp(cs->getConfigSourcesParameter("contact","sync"), "none") != 0 ){
            // start sync with this source
            lstSources.setState(SOURCE_CONTACTS, ITEM_STATE_TO_SYNC);
            setFirstSourceToSync(SOURCE_CONTACTS);
            refreshSourcePane(SOURCE_MAIL);
            StartSync(_T("manual contact"));
        }
        else{
            // ask if to enable source
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_TEXT_ENABLE_SYNC_FOR); s1+=" ";
            s2.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_CONTACTS); s1+=s2;
            s2.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_TEXT_ITEMS_LOWER); s2+="?";
            s1+=s2;

            int retMsgBox =TimedMessageBox(GetSafeHwnd(), s1, getLocalizationUtils()->getLocalizationString(IDS_FUNAMBOL_ALERT),
              MB_YESNO | MB_ICONQUESTION | MB_SETFOREGROUND, 10 * 1000);

            if(retMsgBox == IDYES){
                refreshPane = true;
                cs->setConfigSourcesParameter("contact","sync","two-way");
                getRegConfig()->setDirty(CS_DIRTY_SOURCE_CONTACTS);
                getRegConfig()->saveDirty();
            }
        }
    };

    if(id == SOURCE_CALENDAR){
        // check if source is enabled
        if( strcmp(cs->getConfigSourcesParameter("calendar","sync"), "none") != 0 ){
            // start sync with this source
            lstSources.setState(SOURCE_CALENDAR, ITEM_STATE_TO_SYNC);
            setFirstSourceToSync(SOURCE_CALENDAR);
            refreshSourcePane(SOURCE_MAIL);
            StartSync(_T("manual calendar"));
        }
        else{
            // ask if to enable source
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_TEXT_ENABLE_SYNC_FOR); s1+=" ";
            s2.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_CALENDAR); s1+=s2;
            s2.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_TEXT_ITEMS_LOWER); s2+="?";
            s1+=s2;

            int retMsgBox =TimedMessageBox(GetSafeHwnd(), s1, getLocalizationUtils()->getLocalizationString(IDS_FUNAMBOL_ALERT),
                MB_YESNO | MB_ICONQUESTION | MB_SETFOREGROUND, 10 * 1000);

            if(retMsgBox == IDYES){
                refreshPane = true;
                cs->setConfigSourcesParameter("calendar","sync","two-way");
                getRegConfig()->setDirty(CS_DIRTY_SOURCE_CALENDAR);
                getRegConfig()->saveDirty();
            }
        }
    };

    if(id == SOURCE_TASKS){
        // check if source is enabled
        if( strcmp(cs->getConfigSourcesParameter("task","sync"), "none") != 0 ){
            // start sync with this source
            lstSources.setState(SOURCE_TASKS, ITEM_STATE_TO_SYNC);
            setFirstSourceToSync(SOURCE_TASKS);
            refreshSourcePane(SOURCE_MAIL);
            StartSync(_T("manual task"));
        }
        else{
            // ask if to enable source
            s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_TEXT_ENABLE_SYNC_FOR); s1+=" ";
            s2.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_TASKS); s1+=s2;
            s2.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_TEXT_ITEMS_LOWER); s2+="?";
            s1+=s2;

            int retMsgBox =TimedMessageBox(GetSafeHwnd(), s1, getLocalizationUtils()->getLocalizationString(IDS_FUNAMBOL_ALERT),
                MB_YESNO | MB_ICONQUESTION | MB_SETFOREGROUND, 10 * 1000);

            if(retMsgBox == IDYES){
                refreshPane = true;
                cs->setConfigSourcesParameter("task","sync","two-way");
                getRegConfig()->setDirty(CS_DIRTY_SOURCE_TASKS);
                getRegConfig()->saveDirty();
            }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -