?? uidlg.cpp
字號(hào):
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();
}
}
};
if(id == SOURCE_BRIEFCASE){
// check if source is enabled
if( strcmp(cs->getConfigSourcesParameter("briefcase","sync"), "none") != 0 ){
// start sync with this source
lstSources.setState(SOURCE_BRIEFCASE, ITEM_STATE_TO_SYNC);
setFirstSourceToSync(SOURCE_BRIEFCASE);
refreshSourcePane(SOURCE_MAIL);
StartSync(_T("manual briefcase"));
}
else{
// ask if to enable source
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_TEXT_ENABLE_SYNC_FOR); s1+=" ";
s2.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_BRIEFCASE); s1+=s2; s1+=" ";
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("briefcase","sync","two-way");
getRegConfig()->setDirty(CS_DIRTY_SOURCE_BRIEFCASE);
getRegConfig()->saveDirty();
}
}
};
#if defined(WIN32_PLATFORM_PSPC)
if(id == SOURCE_NOTES){
// check if source is enabled
if( strcmp(cs->getConfigSourcesParameter("note","sync"), "none") != 0 ){
// start sync with this source
lstSources.setState(SOURCE_NOTES, ITEM_STATE_TO_SYNC);
setFirstSourceToSync(SOURCE_NOTES);
refreshSourcePane(SOURCE_MAIL);
StartSync(_T("manual note"));
}
else{
// ask if to enable source
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_TEXT_ENABLE_SYNC_FOR); s1+=" ";
s2.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_NOTES); s1+=s2; s1+=" ";
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("note","sync","two-way");
getRegConfig()->setDirty(CS_DIRTY_SOURCE_NOTES);
getRegConfig()->saveDirty();
}
}
};
#endif
if(refreshPane){
refreshSourcePane(id);
}
}
catch(...){
LOG.error("uiDlg: error while selecting source");
}
lstSources.UpdateWindow();
}
void CuiDlg::StartSync(CString param){
CString s1;
int check = checkStartSync();
int ret;
bSyncCanceled = false;
// check credentials
ClientSettings* cs = getRegConfig();
CString user;
CString password;
user = cs->getAccessConfig().getUsername();
password = cs->getAccessConfig().getPassword();
if( user.IsEmpty() || password.IsEmpty()){
HwndFunctions::closePreviousMsgBox();
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_ERROR_ENTER_CREDENTIALS);
TimedMessageBox(GetSafeHwnd(), s1, _T("Funambol alert"), MB_OK | MB_ICONHAND, INFINITE);
OnStartsyncEnded(0,0); // signal sync ended
OnMenuComm();
return; // we return from this so we don't lock the panes
}
else
if (!isServerConfigured()) {
HwndFunctions::closePreviousMsgBox();
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_TEXT_SET_FUNAMBOL_URL);
TimedMessageBox(GetSafeHwnd(), s1, _T("Funambol alert"), MB_OK | MB_ICONHAND, INFINITE);
OnStartsyncEnded(0,0); // signal sync ended
OnMenuComm();
return; // we return from this so we don't lock the panes
} else if(check == 0) {
// maybe the user deleted the mail account
// so we refresh the mail and if there is no source to be synced, we return
if(! isSyncEnabled())
return; // no sync will be performed
ret = startProgram(SYNCAPP, param); // start sync process
if ( (ret == 0) || (ret == -5) )
{
HwndFunctions::closePreviousMsgBox();
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_TEXT_STARTSYNC_NOT_FOUND);
TimedMessageBox(GetSafeHwnd(), s1,_T("Funambol alert"), MB_OK | MB_ICONHAND, INFINITE);
OnStartsyncEnded(0,0); // signal sync ended
return; // we return from this so we don't lock the panes
}
else
{
dlgCommandBar.nToolBarId = IDM_STOP;
#if defined WIN32_PLATFORM_WFSP
#if (_WIN32_WCE < 0x500)
CreateMenuBar(IDR_MENUBAR_STOP);
#endif
#endif
if(!SHCreateMenuBar(&dlgCommandBar)){
TRACE(_T("Cannot create command bar!"));
return ;
}
}
};
lstSources.SetItemState(-1, LVIS_SELECTED, LVIF_STATE);
// lock panes so they cannot be selected
lockPanes();
}
void CuiDlg::lockPanes(){
lstSources.lockList();
}
void CuiDlg::unlockPanes(){
lstSources.unlockList();
}
BOOL CuiDlg::PreTranslateMessage(MSG* pMsg){
bool bProcessed =false;
if( ( (pMsg->message == WM_KEYDOWN) || (pMsg->message == WM_KEYUP) ||
((pMsg->message == WM_LBUTTONDOWN) && (pMsg->hwnd == lstSources.GetSafeHwnd())) ) // click in source list
&& (lstSources.getIsLocked()) ){
bProcessed = true;
return TRUE;
};
if(pMsg->message == WM_KEYDOWN){
if(pMsg->wParam == VK_RETURN){
bProcessed = true;
SelectSource(lstSources.GetNextItem(-1, LVNI_SELECTED ));
}
};
if(bProcessed)
return TRUE;
else
return CDialog::PreTranslateMessage(pMsg);
}
void CuiDlg::CancelSync(){
OnMenuStop();
}
void CuiDlg::refreshCanceledState(){
if(lstSources.getState(SOURCE_MAIL) == ITEM_STATE_TO_SYNC)
syncSourceMailState = SYNCSOURCE_STATE_CANCELED;
if(lstSources.getState(SOURCE_CONTACTS) == ITEM_STATE_TO_SYNC)
syncSourceContactState = SYNCSOURCE_STATE_CANCELED;
if(lstSources.getState(SOURCE_CALENDAR) == ITEM_STATE_TO_SYNC)
syncSourceCalendarState = SYNCSOURCE_STATE_CANCELED;
if(lstSources.getState(SOURCE_TASKS) == ITEM_STATE_TO_SYNC)
syncSourceTaskState = SYNCSOURCE_STATE_CANCELED;
if(lstSources.getState(SOURCE_BRIEFCASE) == ITEM_STATE_TO_SYNC)
syncSourceBriefcaseState = SYNCSOURCE_STATE_CANCELED;
if(lstSources.getState(SOURCE_NOTES) == ITEM_STATE_TO_SYNC)
syncSourceNoteState = SYNCSOURCE_STATE_CANCELED;
}
/*
void CuiDlg::refreshRecoveredSources(){
ClientSettings* cs = getRegConfig();
if(checkStartSync()){
}
if(strstr(cs->getConfigSourcesParameter("mail","sync"), "refresh"))
cs->setConfigSourcesParameter("mail","sync","two-way");
if(strstr(cs->getConfigSourcesParameter("contact","sync"), "refresh"))
cs->setConfigSourcesParameter("contact","sync","two-way");
if(strstr(cs->getConfigSourcesParameter("calendar","sync"), "refresh"))
cs->setConfigSourcesParameter("calendar","sync","two-way");
if(strstr(cs->getConfigSourcesParameter("task","sync"), "refresh"))
cs->setConfigSourcesParameter("task","sync","two-way");
if(strstr(cs->getConfigSourcesParameter("briefcase","sync"), "refresh"))
cs->setConfigSourcesParameter("briefcase","sync","two-way");
if(strstr(cs->getConfigSourcesParameter("note","sync"), "refresh"))
cs->setConfigSourcesParameter("note","sync","two-way");
}
*/
// source id as wParam, state as lParam
LRESULT CuiDlg::OnMsgSourceState( WPARAM wParam, LPARAM lParam){
if(wParam == SOURCE_MAIL)
syncSourceMailState = lParam;
if(wParam == SOURCE_CONTACTS)
syncSourceContactState = lParam;
if(wParam == SOURCE_CALENDAR)
syncSourceCalendarState = lParam;
if(wParam == SOURCE_TASKS)
syncSourceTaskState = lParam;
if(wParam == SOURCE_BRIEFCASE)
syncSourceBriefcaseState = lParam;
if(wParam == SOURCE_NOTES)
syncSourceNoteState = lParam;
return 0;
}
void CuiDlg::setFirstSourceToSync(){
CArray<int> sources;
bool found = false;
sources.Add(SOURCE_MAIL); sources.Add(SOURCE_CONTACTS);
sources.Add(SOURCE_CALENDAR); sources.Add(SOURCE_TASKS);
#if defined(WIN32_PLATFORM_PSPC)
sources.Add(SOURCE_NOTES);
#endif
sources.Add(SOURCE_BRIEFCASE);
for(int i=0; (i<sources.GetCount()) && (!found); i++){
if(lstSources.isEnabledItem(sources[i])){
firstSourceId = sources[i];
found = true;
}
}
}
LRESULT CuiDlg::OnMsgEndingSource( WPARAM , LPARAM ){
// sync source ended event
CString s1;
lastItem = currentItem;
currentItem = 0;
if(sourceEnds & (int)pow(2.0, currentSource) ){
// done receiving
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_DONE_RECEIVING);
lstSources.setText(currentSource, s1);
}
else{
// done sending
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_DONE_SENDING);
lstSources.setText(currentSource, s1);
// set the bit for the current source to know that for it we have received a Sync Source Ended event
sourceEnds |= (int) pow(2.0, currentSource);
// reset nr of mails
nMailsToSync =0;
}
lstSources.setIsSyncing(currentSource, false);
return 0;
}
//
LRESULT CuiDlg::OnMsgConnecting( WPARAM , LPARAM ){
CString s1;
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_CONNECTING);
if(firstSourceId == -1){
setFirstSourceToSync();
}
// check if we have a valid first source
if(firstSourceId != -1){
lstSources.SetCurSelItem(lstSources.idToIndex(firstSourceId));
lstSources.setText(firstSourceId, s1);
lstSources.startAnim(firstSourceId);
}
return 0;
}
// 'Ending...' sync message
LRESULT CuiDlg::OnMsgEndingSync( WPARAM , LPARAM ){
CString s1;
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_ENDING);
lstSources.setText(currentSource, s1);
lstSources.startAnim(currentSource);
return 0;
}
void CuiDlg::OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
int id = lstSources.indexToId(pNMListView->iItem);
// if item is disabled we do not change icon
if(lstSources.isEnabledItem(id)){
// Only interested in state changes
if (pNMListView->uChanged & LVIF_STATE)
if (pNMListView->uNewState & LVIS_FOCUSED)
{
// new selection
lstSources.setIcon(id, AfxGetApp()->LoadIcon(IDI_ARROWS22A));
}
else if (pNMListView->uOldState & LVIS_FOCUSED)
{
// deselection
lstSources.resetSourceIcon(id);
}
}
lstSources.InvalidatePane(id);
*pResult = 0;
}
// context menu handlers
void CuiDlg::OnContextMenuSync(){
// TODO: implementation
}
void CuiDlg::OnContextMenuSettings(){
// TODO: implementation
}
void CuiDlg::OnToolsDeviceinfo()
{
CDeviceInfo wndDeviceInfo;
isInSettings = true;
INT_PTR result = wndDeviceInfo.DoModal();
isInSettings = false;
if(bSyncStarted){
CreateMenuBar(IDM_STOP);
}
}
void CuiDlg::EnableSyncButton(bool bEnable){
HWND hwndMB = SHFindMenuBar (this->GetSafeHwnd());
TBBUTTONINFO tbi;
if (!hwndMB)
return;
memset (&tbi, 0, sizeof (tbi));
tbi.cbSize = sizeof (tbi);
tbi.dwMask = TBIF_STATE;
::SendMessage (hwndMB, TB_GETBUTTONINFO, ID_SYNC, (LPARAM)&tbi);
if(bEnable){
tbi.fsState = TBSTATE_ENABLED;
}
else{
tbi.fsState &= ~TBSTATE_ENABLED;
}
::SendMessage (hwndMB, TB_SETBUTTONINFO, ID_SYNC, (LPARAM)&tbi);
}
bool CuiDlg::isSyncEnabled(){
bool enabled = false;
enabled = lstSources.isEnabledItem(SOURCE_MAIL) ||
lstSources.isEnabledItem(SOURCE_CONTACTS) ||
lstSources.isEnabledItem(SOURCE_CALENDAR) ||
lstSources.isEnabledItem(SOURCE_TASKS) ||
lstSources.isEnabledItem(SOURCE_BRIEFCASE);
#if defined(WIN32_PLATFORM_PSPC)
enabled |= lstSources.isEnabledItem(SOURCE_NOTES);
#endif
return enabled;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -