📄 uidlg.cpp
字号:
// set the bit for the current source to know that for it we have received a Sync Source Ended event
sourceBegins |= (int) pow(2.0, currentSource);
CString msg;
msg.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_CHECKING);
msg+=" ";
switch(lParam)
{
case SOURCE_MAIL:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_MAIL); break;
case SOURCE_CALENDAR:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_CALENDAR); break;
//s1=getStringLang(IDS_LOWER_CALENDAR); break;
case SOURCE_CONTACTS:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_CONTACTS); break;
case SOURCE_TASKS:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_TASKS); break;
case SOURCE_BRIEFCASE:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_FILES); break;
case SOURCE_NOTES:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_NOTES); break;
default:
s1 = "";
}
msg+=s1;
lstSources.setText(lParam, msg);
};
// if source fails without sending a message that it has finished
// then we send it ourselves
if(lstSources.getIsSyncing(currentSource)){
OnMsgEndingSource(NULL, NULL);
}
// if the source fails without sending 'Starting' message
//s1 = lstSources.getText(currentSource);
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_CONNECTING); s2 = "("; s2+=s1; s2+= ")";
s1 = lstSources.getText(firstSourceId);
if(s1.Compare(s2) == 0){
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_FAILED);
lstSources.setText(firstSourceId, s1);
}
//currentSource = lParam;
currentItem = 0;
//LOG.debug("OnStartingSource: firstSourceId=%d", firstSourceId);
lstSources.stopAnim(firstSourceId);
lstSources.setIsSyncing(currentSource, true);
lstSources.SetCurSelItem(lstSources.idToIndex(currentSource));
lstSources.startAnim(currentSource);
return 0;
}
// not a WM_APP message handler
void CuiDlg::OnMsgItemSynced(WPARAM wParam, LPARAM lParam, bool fromClient)
{
int source=-1;
CString msg("");
CString s1;
if(!bSyncStarted)
return;
if (resetTheItem) {
resetTheItem = false;
currentItem = 0;
}
currentItem++;
if( ((wParam > 0) && (currentSource != wParam))) // extra check
{
resetCurrentItem = true;
lastItem = 0;
};
CString s2; s2.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_UPDATES);
if( fromClient ){
if (messageToWrite == "") {
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_SENDING);
s1 += " ";
s1 += s2;
} else {
s1 = messageToWrite;
}
//msg += s1; msg+=" ";
msg += s1;
}
else{
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_RECEIVING);
msg+=s1; msg+=" ";
msg+= s2;
}
source = wParam;
currentSource = source;
/*
if(currentSource == SOURCE_MAIL){
totalItems = nMailsToSync;
};
*/
if( (!resetCurrentItem) && (lParam != 0) ) // the server sent more valid noc's for the same source
currentItem =lastItem+lParam;
/* // not used because the last word is always "updates"
switch(source) {
case SOURCE_MAIL:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_MAIL); break;
case SOURCE_CALENDAR:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_CALENDAR); break;
case SOURCE_CONTACTS:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_CONTACT); break;
case SOURCE_TASKS:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_TASK); break;
case SOURCE_BRIEFCASE:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_FILE); break;
case SOURCE_NOTES:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_NOTE); break;
default:
s1 = "";
}
msg+=s1;
*/
if(msg == "")
goto finally;
msg+=" ";
char* v = ltow(currentItem);
msg+=v;
delete [] v; v = NULL;
if( (totalItems != -1) && (currentItem <= totalItems))
{
msg+="/";
char* v = ltow(totalItems);
msg+=v;
delete [] v; v = NULL;
}
lstSources.setText(source, msg);
finally:
return;
}
LRESULT CuiDlg::OnMsgItemSyncedFromServer( WPARAM wParam, LPARAM lParam)
{
OnMsgItemSynced(wParam,lParam, false);
return 0;
}
LRESULT CuiDlg::OnMsgItemSyncedFromClient( WPARAM wParam, LPARAM lParam)
{
OnMsgItemSynced(wParam, lParam, true);
return 0;
}
/**
* wParam = source id
* lParam = number of items
* Sending message
*/
LRESULT CuiDlg::OnMsgTotalItemsNew(WPARAM wParam, LPARAM lParam) {
resetTheItem = true;
CString s; s.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_SENDING_MESSAGE);
messageToWrite = s;
return OnMsgTotalItems(wParam, lParam);
}
/**
* wParam = source id
* lParam = number of items
* Sending updates
*/
LRESULT CuiDlg::OnMsgTotalItemsMod(WPARAM wParam, LPARAM lParam) {
resetTheItem = true;
messageToWrite = ""; // substitute with resource string
return OnMsgTotalItems(wParam, lParam);
}
/**
* wParam = source id
* lParam = number of items
* Not used at the moment
*/
LRESULT CuiDlg::OnMsgTotalItemsDel(WPARAM wParam, LPARAM lParam) {
resetTheItem = true;
messageToWrite = "Deleting"; // substitute with resource string
return OnMsgTotalItems(wParam, lParam);
}
// TODO: remove unused code
LRESULT CuiDlg::OnMsgTotalItems(WPARAM wParam, LPARAM lParam)
{
CString msg;
CString s1;
bool changeLabel = false;
int sourceNumber = wParam;
totalItems = lParam;
if (!resetTheItem) {
messageToWrite = "";
}
msg.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_RECEIVING); msg+=" ";
#if 0
if ( (sourceNumber != -1) && (sourceNumber > 0) ) // wParam > 0, then the modifs are from server
{
if (sourceNumber != currentSource) // a new source from server
{
// begin a new source from server, update the progress bar for the previous source
changeLabel = true;
if((currentItem < ITEMS_FROM_SERVER) && (currentItem > 0) && (totalItems == -1))
{
/* syncSourceTotalServerItems supplied -1, so if the number of synced
items is less than ITEMS_FROM_SERVER, step the remaining of the progressbar for
(ITEMS_FROM_SERVER - currentItem-1) items
*/
currentItem = 0;
lastItem = 0;
};
totalItems = lParam;
resetCurrentItem = true;
lastItem = 0;
currentItem = 0;
currentSource = sourceNumber;
}
else
{
/*
wParam == currentSource, one of more syncSourceTotalServerItems events for
the same source, or there is only one source to be synced
(lastSource == -1) for sources from client
(lastSource > 0) for sources from server, here lastSource is the source code
*/
if(lastSource < 0) // (wParam>0) && (lastSource<0) => first source from server
{
resetCurrentItem = true;
totalItems = lParam;
lastItem = 0;
currentItem = 0;
changeLabel = true;
}
else
{
resetCurrentItem = false;
lastItem = currentItem;
}
};
} //if wParam < 0
else if(wParam == -1)
{
totalItems = lParam; // source from client, total items are ok
}
#endif
switch(sourceNumber)
{
case SOURCE_MAIL:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_MAIL); break;
case SOURCE_CALENDAR:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_CALENDAR); break;
case SOURCE_CONTACTS:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_CONTACTS); break;
case SOURCE_TASKS:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_TASKS); break;
case SOURCE_BRIEFCASE:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_NOTES); break;
case SOURCE_NOTES:
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_LOWER_FILES); break;
default:
s1 = "";
}
msg+=s1;
if( (msg!="") && changeLabel) // !
{
SetDlgItemText(IDC_MAIN_MSG,msg);
lstSources.setText(wParam, msg);
if(lstSources.GetNextItem(-1, LVNI_SELECTED ) != wParam)
lstSources.SetItemState(wParam, LVIS_SELECTED, LVIF_STATE);
}
/*
if(wParam == SOURCE_MAIL){
nMailsToSync+=totalItems;
}
*/
return 0;
}
void CuiDlg::CreateMenuBar(const int id){
ZeroMemory(&dlgCommandBar, sizeof(SHMENUBARINFO));
dlgCommandBar.cbSize = sizeof(SHMENUBARINFO);
dlgCommandBar.hwndParent = this->GetSafeHwnd();
dlgCommandBar.dwFlags = SHCMBF_HMENU;
dlgCommandBar.nToolBarId = id;
dlgCommandBar.hInstRes = getLocalizationUtils()->getLocaleResource();
dlgCommandBar.nBmpId = 0;
dlgCommandBar.cBmpImages = 0;
if(!SHCreateMenuBar(&dlgCommandBar)){
TRACE(_T("Cannot create command bar!\n\n"));
}
}
LRESULT CuiDlg::OnOKMsg(WPARAM wParam, LPARAM lParam) {
this->ShowWindow(SW_MINIMIZE);
return 0;
}
void CuiDlg::OnOK()
{
this->ShowWindow(SW_MINIMIZE);
}
bool isServerConfigured() {
ClientSettings* cs = getRegConfig();
CString s1;
s1 = cs->getAccessConfig().getSyncURL();
if(s1.Find(_T("<")) > 0)
return false;
else
return true;
}
// override back key sph
void CuiDlg::OnCancel(){
// just hide the window
this->ShowWindow(SW_MINIMIZE);
}
HBRUSH CuiDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){
if(pWnd->GetRuntimeClass() == RUNTIME_CLASS(CCustomButton)){
pDC->SetBkMode(TRANSPARENT);
pDC->SetBkColor(RGB(255,255,255));
return (HBRUSH) GetStockObject(HOLLOW_BRUSH);
}
HBRUSH hbr = (HBRUSH) CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
void CuiDlg::initSyncControls(){
CString s1;
ClientSettings* cs = getRegConfig();
s1 = cs->getAccessConfig().getSyncURL();
// add sync sources to list
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_EMAIL);
lstSources.addItem(SOURCE_MAIL, s1, AfxGetApp()->LoadIcon(IDI_MAIL));
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_CONTACTS);
lstSources.addItem(SOURCE_CONTACTS, s1, AfxGetApp()->LoadIcon(IDI_CONTACTS));
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_CALENDAR);
lstSources.addItem(SOURCE_CALENDAR, s1, AfxGetApp()->LoadIcon(IDI_CALENDAR));
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_TASKS);
lstSources.addItem(SOURCE_TASKS, s1, AfxGetApp()->LoadIcon(IDI_TASKS));
// Initialize the main logo only if it's a portal build.
//if(cs->getIsPortal()) {
// lstSources.calculateMainLogoPosition();
//}
if (!showNoteSource && !showBriefcaseSource) {
lstSources.calculateMainLogoPosition();
}
//if(!cs->getIsPortal()){
if (showNoteSource) {
#if defined(WIN32_PLATFORM_PSPC)
s1.LoadString(getLocalizationUtils()->getLocaleResource(), IDS_NOTES);
lstSources.addItem(SOURCE_NOTES, s1, AfxGetApp()->LoadIcon(IDI_NOTES));
#endif
}
if (showBriefcaseSource) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -