From 771ccdb89c2ec0733cf16104709ad8670fc34c55 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 10 Apr 2015 21:05:37 +0000 Subject: status menu handler: code reordering git-svn-id: http://svn.miranda-ng.org/main/trunk@12759 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- src/modules/clist/clistmenus.cpp | 125 ++++++++++++++++++++------------------- 1 file changed, 63 insertions(+), 62 deletions(-) (limited to 'src') diff --git a/src/modules/clist/clistmenus.cpp b/src/modules/clist/clistmenus.cpp index c4e4eb7834..a50588813d 100644 --- a/src/modules/clist/clistmenus.cpp +++ b/src/modules/clist/clistmenus.cpp @@ -528,75 +528,76 @@ INT_PTR StatusMenuCheckService(WPARAM wParam, LPARAM) INT_PTR StatusMenuExecService(WPARAM wParam, LPARAM) { StatusMenuExecParam *smep = (StatusMenuExecParam*)wParam; - if (smep != NULL) { - if (smep->custom) { - if (smep->svc && *smep->svc) - CallService(smep->svc, 0, (LPARAM)smep->hMenuItem); + if (smep == NULL) + return 0; + + if (smep->custom) { + if (smep->svc && *smep->svc) + CallService(smep->svc, 0, (LPARAM)smep->hMenuItem); + return 0; + } + + if (smep->status == 0 && smep->protoindex != 0 && smep->proto != NULL) { + char *prot = smep->proto; + char szHumanName[64] = { 0 }; + PROTOACCOUNT *acc = Proto_GetAccount(smep->proto); + bool bIsLocked = !Proto_IsAccountLocked(acc); + db_set_b(NULL, prot, "LockMainStatus", bIsLocked); + + CallProtoServiceInt(NULL, smep->proto, PS_GETNAME, (WPARAM)SIZEOF(szHumanName), (LPARAM)szHumanName); + + PMO_IntMenuItem pimi = MO_GetIntMenuItem((HGENMENU)smep->protoindex); + if (pimi == NULL) + return 0; + + PMO_IntMenuItem root = (PMO_IntMenuItem)pimi->mi.root; + TCHAR buf[256], *ptszName; + if (bIsLocked) { + pimi->mi.flags |= CMIF_CHECKED; + if (cli.bDisplayLocked) { + mir_sntprintf(buf, SIZEOF(buf), TranslateT("%s (locked)"), acc->tszAccountName); + ptszName = buf; + } + else ptszName = acc->tszAccountName; } else { - if (smep->status == 0 && smep->protoindex != 0 && smep->proto != NULL) { - char *prot = smep->proto; - char szHumanName[64] = { 0 }; - PROTOACCOUNT *acc = Proto_GetAccount(smep->proto); - bool bIsLocked = !Proto_IsAccountLocked(acc); - db_set_b(NULL, prot, "LockMainStatus", bIsLocked); - - CallProtoServiceInt(NULL, smep->proto, PS_GETNAME, (WPARAM)SIZEOF(szHumanName), (LPARAM)szHumanName); - PMO_IntMenuItem pimi = MO_GetIntMenuItem((HGENMENU)smep->protoindex); - PMO_IntMenuItem root = (PMO_IntMenuItem)pimi->mi.root; - mir_free(pimi->mi.pszName); - mir_free(root->mi.pszName); - if (bIsLocked) { - TCHAR buf[256]; - pimi->mi.flags |= CMIF_CHECKED; - if (cli.bDisplayLocked) { - mir_sntprintf(buf, SIZEOF(buf), TranslateT("%s (locked)"), acc->tszAccountName); - pimi->mi.ptszName = mir_tstrdup(buf); - root->mi.ptszName = mir_tstrdup(buf); - } - else { - pimi->mi.ptszName = mir_tstrdup(acc->tszAccountName); - root->mi.ptszName = mir_tstrdup(acc->tszAccountName); - } - } - else { - pimi->mi.ptszName = mir_tstrdup(acc->tszAccountName); - root->mi.ptszName = mir_tstrdup(acc->tszAccountName); - pimi->mi.flags &= ~CMIF_CHECKED; - } - if (cli.hwndStatus) - InvalidateRect(cli.hwndStatus, NULL, TRUE); - } - else if (smep->proto != NULL) { - Proto_SetStatus(smep->proto, smep->status); - NotifyEventHooks(hStatusModeChangeEvent, smep->status, (LPARAM)smep->proto); - } - else { - int MenusProtoCount = 0; + ptszName = acc->tszAccountName; + pimi->mi.flags &= ~CMIF_CHECKED; + } + replaceStrT(pimi->mi.ptszName, ptszName); + replaceStrT(root->mi.ptszName, ptszName); - for (int i = 0; i < accounts.getCount(); i++) - if (cli.pfnGetProtocolVisibility(accounts[i]->szModuleName)) - MenusProtoCount++; + if (cli.hwndStatus) + InvalidateRect(cli.hwndStatus, NULL, TRUE); + return 0; + } + + if (smep->proto != NULL) { + Proto_SetStatus(smep->proto, smep->status); + NotifyEventHooks(hStatusModeChangeEvent, smep->status, (LPARAM)smep->proto); + return 0; + } - cli.currentDesiredStatusMode = smep->status; + int MenusProtoCount = 0; - for (int j = 0; j < accounts.getCount(); j++) { - PROTOACCOUNT *pa = accounts[j]; - if (!Proto_IsAccountEnabled(pa)) - continue; - if (MenusProtoCount > 1 && Proto_IsAccountLocked(pa)) - continue; + for (int i = 0; i < accounts.getCount(); i++) + if (cli.pfnGetProtocolVisibility(accounts[i]->szModuleName)) + MenusProtoCount++; - Proto_SetStatus(pa->szModuleName, cli.currentDesiredStatusMode); - } - NotifyEventHooks(hStatusModeChangeEvent, cli.currentDesiredStatusMode, 0); - db_set_w(NULL, "CList", "Status", (WORD)cli.currentDesiredStatusMode); - return 1; - } - } - } + cli.currentDesiredStatusMode = smep->status; - return 0; + for (int j = 0; j < accounts.getCount(); j++) { + PROTOACCOUNT *pa = accounts[j]; + if (!Proto_IsAccountEnabled(pa)) + continue; + if (MenusProtoCount > 1 && Proto_IsAccountLocked(pa)) + continue; + + Proto_SetStatus(pa->szModuleName, cli.currentDesiredStatusMode); + } + NotifyEventHooks(hStatusModeChangeEvent, cli.currentDesiredStatusMode, 0); + db_set_w(NULL, "CList", "Status", (WORD)cli.currentDesiredStatusMode); + return 1; } INT_PTR FreeOwnerDataStatusMenu(WPARAM, LPARAM lParam) -- cgit v1.2.3