diff options
Diffstat (limited to 'plugins/MirOTR/src/mirotrmenu.cpp')
-rw-r--r-- | plugins/MirOTR/src/mirotrmenu.cpp | 153 |
1 files changed, 75 insertions, 78 deletions
diff --git a/plugins/MirOTR/src/mirotrmenu.cpp b/plugins/MirOTR/src/mirotrmenu.cpp index 4cab62e690..33f69c3915 100644 --- a/plugins/MirOTR/src/mirotrmenu.cpp +++ b/plugins/MirOTR/src/mirotrmenu.cpp @@ -28,13 +28,12 @@ static INT_PTR AddMirOTRMenuItem(WPARAM, LPARAM lParam) return 0; TMO_MenuItem tmi = { 0 }; - tmi.cbSize = sizeof(tmi); tmi.flags = mi->flags; tmi.hIcon = mi->hIcon; tmi.hIcolibItem = mi->icolibItem; tmi.hotKey = mi->hotKey; tmi.position = mi->position; - tmi.ptszName = mi->ptszName; + tmi.name.t = mi->ptszName; tmi.root = mi->root; //owner data @@ -71,92 +70,91 @@ INT_PTR MirOTRMenuExecService(WPARAM wParam,LPARAM lParam) return 0; } -//true - ok,false ignore -INT_PTR MirOTRMenuCheckService(WPARAM wParam,LPARAM) +// true - ok,false ignore +INT_PTR MirOTRMenuCheckService(WPARAM wParam, LPARAM) { - PCheckProcParam pcpp = ( PCheckProcParam )wParam; + PCheckProcParam pcpp = (PCheckProcParam)wParam; TMO_MenuItem mi; - if ( pcpp == NULL ) + if (pcpp == NULL) return FALSE; - lpMirOTRMenuExecParam cmep = ( lpMirOTRMenuExecParam )pcpp->MenuItemOwnerData; - if ( cmep == NULL ) //this is rootsection...build it + lpMirOTRMenuExecParam cmep = (lpMirOTRMenuExecParam)pcpp->MenuItemOwnerData; + if (cmep == NULL) //this is rootsection...build it return TRUE; MCONTACT hContact = (MCONTACT)pcpp->wParam, hSub; - if((hSub = db_mc_getMostOnline(hContact)) != 0) + if ((hSub = db_mc_getMostOnline(hContact)) != 0) hContact = hSub; - + ConnContext *context = otrl_context_find_miranda(otr_user_state, hContact); TrustLevel level = (TrustLevel)otr_context_get_trust(context); - - mi.cbSize = sizeof(mi); - if ( CallService(MO_GETMENUITEM, (WPARAM)pcpp->MenuItemHandle, (LPARAM)&mi) == 0) { - - if ( mi.flags & CMIF_HIDDEN ) return FALSE; - if ( mi.flags & CMIF_NOTPRIVATE && level==TRUST_PRIVATE ) return FALSE; - if ( mi.flags & CMIF_NOTFINISHED && level==TRUST_FINISHED ) return FALSE; - if ( mi.flags & CMIF_NOTUNVERIFIED && level==TRUST_UNVERIFIED ) return FALSE; - if ( mi.flags & CMIF_NOTNOTPRIVATE && level==TRUST_NOT_PRIVATE ) return FALSE; - + + if (CallService(MO_GETMENUITEM, (WPARAM)pcpp->MenuItemHandle, (LPARAM)&mi) == 0) { + if (mi.flags & CMIF_HIDDEN) return FALSE; + if (mi.flags & CMIF_NOTPRIVATE && level == TRUST_PRIVATE) return FALSE; + if (mi.flags & CMIF_NOTFINISHED && level == TRUST_FINISHED) return FALSE; + if (mi.flags & CMIF_NOTUNVERIFIED && level == TRUST_UNVERIFIED) return FALSE; + if (mi.flags & CMIF_NOTNOTPRIVATE && level == TRUST_NOT_PRIVATE) return FALSE; + if (pcpp->MenuItemHandle == hStatusInfoItem) { + size_t len; TCHAR text[128]; - mi.ptszName = text; + mi.name.t = text; mi.flags = CMIM_NAME | CMIM_ICON | CMIF_TCHAR; switch (level) { - case TRUST_PRIVATE:{ - mi.hIcolibItem = IcoLib_GetIconHandle(ICON_PRIVATE); - mir_tstrncpy(text,TranslateT(LANG_STATUS_PRIVATE),_countof(text)); - size_t len = mir_tstrlen(text); - if(len < _countof(text)) - mir_sntprintf(text+len, _countof(text)-len, _T(" [v%i]"), context->protocol_version); - break;} - case TRUST_UNVERIFIED:{ - mi.hIcolibItem = IcoLib_GetIconHandle(ICON_UNVERIFIED); - mir_tstrncpy(text,TranslateT(LANG_STATUS_UNVERIFIED),_countof(text)); - size_t len = mir_tstrlen(text); - if(len < _countof(text)) - mir_sntprintf(text+len, _countof(text)-len, _T(" [v%i]"), context->protocol_version); - break;} - case TRUST_FINISHED: - mi.hIcolibItem = IcoLib_GetIconHandle(ICON_FINISHED); - mi.ptszName = TranslateT(LANG_STATUS_FINISHED); - break; - default: - mi.hIcolibItem = IcoLib_GetIconHandle(ICON_NOT_PRIVATE); - mi.ptszName = TranslateT(LANG_STATUS_DISABLED); + case TRUST_PRIVATE: + mi.hIcolibItem = IcoLib_GetIconHandle(ICON_PRIVATE); + mir_tstrncpy(text, TranslateT(LANG_STATUS_PRIVATE), _countof(text)); + len = mir_tstrlen(text); + if (len < _countof(text)) + mir_sntprintf(text + len, _countof(text) - len, _T(" [v%i]"), context->protocol_version); + break; + case TRUST_UNVERIFIED: + mi.hIcolibItem = IcoLib_GetIconHandle(ICON_UNVERIFIED); + mir_tstrncpy(text, TranslateT(LANG_STATUS_UNVERIFIED), _countof(text)); + len = mir_tstrlen(text); + if (len < _countof(text)) + mir_sntprintf(text + len, _countof(text) - len, _T(" [v%i]"), context->protocol_version); + break; + case TRUST_FINISHED: + mi.hIcolibItem = IcoLib_GetIconHandle(ICON_FINISHED); + mi.name.t = TranslateT(LANG_STATUS_FINISHED); + break; + default: + mi.hIcolibItem = IcoLib_GetIconHandle(ICON_NOT_PRIVATE); + mi.name.t = TranslateT(LANG_STATUS_DISABLED); } CallService(MO_MODIFYMENUITEM, (WPARAM)hStatusInfoItem, (LPARAM)&mi); - } else if (pcpp->MenuItemHandle == hHTMLConvMenuItem) { - if (db_get_b(hContact, MODULENAME, "HTMLConv", 0) ) - mi.flags |= CMIM_FLAGS|CMIF_CHECKED; + } + else if (pcpp->MenuItemHandle == hHTMLConvMenuItem) { + if (db_get_b(hContact, MODULENAME, "HTMLConv", 0)) + mi.flags |= CMIM_FLAGS | CMIF_CHECKED; else - mi.flags = CMIM_FLAGS|(mi.flags &~CMIF_CHECKED); + mi.flags = CMIM_FLAGS | (mi.flags &~CMIF_CHECKED); CallService(MO_MODIFYMENUITEM, (WPARAM)hHTMLConvMenuItem, (LPARAM)&mi); } } return TRUE; } -INT_PTR FreeOwnerDataMirOTRMenu (WPARAM, LPARAM lParam) +INT_PTR FreeOwnerDataMirOTRMenu(WPARAM, LPARAM lParam) { - lpMirOTRMenuExecParam cmep = ( lpMirOTRMenuExecParam )lParam; - if ( cmep != NULL ) { + lpMirOTRMenuExecParam cmep = (lpMirOTRMenuExecParam)lParam; + if (cmep != NULL) { if (cmep->szServiceName) mir_free(cmep->szServiceName); mir_free(cmep); } return 0; } -INT_PTR OnAddMenuItemMirOTRMenu (WPARAM wParam, LPARAM lParam) +INT_PTR OnAddMenuItemMirOTRMenu(WPARAM wParam, LPARAM lParam) { MENUITEMINFO *mii = (MENUITEMINFO*)wParam; if (!mii || mii->cbSize != sizeof(MENUITEMINFO)) return 0; - - TMO_MenuItem mi; - mi.cbSize = sizeof(mi); - if ( CallService(MO_GETMENUITEM, (WPARAM)lParam, (LPARAM)&mi) == 0) { + + TMO_MenuItem mi; + if (CallService(MO_GETMENUITEM, (WPARAM)lParam, (LPARAM)&mi) == 0) { if (mi.flags & CMIF_DISABLED) { mii->fMask |= MIIM_STATE; mii->fState |= MF_DISABLED; @@ -165,11 +163,9 @@ INT_PTR OnAddMenuItemMirOTRMenu (WPARAM wParam, LPARAM lParam) return 1; } - LRESULT CALLBACK PopupMenuWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { - switch (message) - { + switch (message) { case WM_MEASUREITEM: if (CallService(MS_CLIST_MENUMEASUREITEM, wParam, lParam)) return TRUE; break; @@ -179,12 +175,13 @@ LRESULT CALLBACK PopupMenuWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM case WM_COMMAND: if (CallService(MO_PROCESSCOMMANDBYMENUIDENT, wParam, GetWindowLongPtr(hwnd, GWLP_USERDATA))) return TRUE; break; - } - return DefWindowProc(hwnd, message, wParam, lParam); + } + return DefWindowProc(hwnd, message, wParam, lParam); } -void ShowOTRMenu(MCONTACT hContact, POINT pt){ - HMENU menu = (HMENU) CallService(MS_MIROTR_MENUBUILDMIROTR, hContact, 0); +void ShowOTRMenu(MCONTACT hContact, POINT pt) +{ + HMENU menu = (HMENU)CallService(MS_MIROTR_MENUBUILDMIROTR, hContact, 0); SetWindowLongPtr(hDummyPaintWin, GWLP_USERDATA, (LONG_PTR)hContact); TrackPopupMenu(menu, 0, pt.x, pt.y, 0, hDummyPaintWin, 0); DestroyMenu(menu); @@ -192,23 +189,23 @@ void ShowOTRMenu(MCONTACT hContact, POINT pt){ void InitMirOTRMenu(void) { - WNDCLASS wc = {0}; + WNDCLASS wc = { 0 }; wc.hInstance = hInst; wc.lpfnWndProc = PopupMenuWndProc; wc.lpszClassName = _T("MirOTRPopupMenuProcessor"); RegisterClass(&wc); hDummyPaintWin = CreateWindowEx(0, _T("MirOTRPopupMenuProcessor"), NULL, 0, 0, 0, 1, 1, 0, 0, hInst, 0); - CreateServiceFunction("MirOTRMenuExecService",MirOTRMenuExecService); - CreateServiceFunction("MirOTRMenuCheckService",MirOTRMenuCheckService); + CreateServiceFunction("MirOTRMenuExecService", MirOTRMenuExecService); + CreateServiceFunction("MirOTRMenuCheckService", MirOTRMenuCheckService); // menu object - CreateServiceFunction("MIROTRMENUS/FreeOwnerDataMirOTRMenu",FreeOwnerDataMirOTRMenu); - CreateServiceFunction("MIROTRMENUS/OnAddMenuItemMirOTRMenu",OnAddMenuItemMirOTRMenu); + CreateServiceFunction("MIROTRMENUS/FreeOwnerDataMirOTRMenu", FreeOwnerDataMirOTRMenu); + CreateServiceFunction("MIROTRMENUS/OnAddMenuItemMirOTRMenu", OnAddMenuItemMirOTRMenu); - CreateServiceFunction(MS_MIROTR_ADDMIROTRMENUITEM,AddMirOTRMenuItem); - CreateServiceFunction(MS_MIROTR_MENUBUILDMIROTR,BuildMirOTRMenu); - CreateServiceFunction(MS_MIROTR_REMOVEMIROTRMENUITEM,RemoveMirOTRMenuItem); + CreateServiceFunction(MS_MIROTR_ADDMIROTRMENUITEM, AddMirOTRMenuItem); + CreateServiceFunction(MS_MIROTR_MENUBUILDMIROTR, BuildMirOTRMenu); + CreateServiceFunction(MS_MIROTR_REMOVEMIROTRMENUITEM, RemoveMirOTRMenuItem); hMirOTRMenuObject = MO_CreateMenuObject("MirOTRMenu", LPGEN("MirOTR menu"), "MirOTRMenuCheckService", "MirOTRMenuExecService"); MO_SetMenuObjectParam(hMirOTRMenuObject, OPT_USERDEFINEDITEMS, FALSE); @@ -216,47 +213,47 @@ void InitMirOTRMenu(void) MO_SetMenuObjectParam(hMirOTRMenuObject, OPT_MENUOBJECT_SET_ONADD_SERVICE, "MIROTRMENUS/OnAddMenuItemMirOTRMenu"); // menu items - MIROTRMENUITEM mi = {0}; + MIROTRMENUITEM mi = { 0 }; mi.cbSize = sizeof(mi); mi.flags = CMIF_DISABLED | CMIF_TCHAR; mi.ptszName = LPGENT("OTR Status"); mi.position = 0; - hStatusInfoItem = (HGENMENU) AddMirOTRMenuItem(0, (LPARAM) &mi); + hStatusInfoItem = (HGENMENU)AddMirOTRMenuItem(0, (LPARAM)&mi); mi.flags = CMIF_TCHAR | CMIF_NOTPRIVATE | CMIF_NOTUNVERIFIED; mi.ptszName = LANG_MENU_START; mi.position = 100001; mi.pszService = MS_OTR_MENUSTART; mi.icolibItem = IcoLib_GetIconHandle(ICON_UNVERIFIED); - AddMirOTRMenuItem(0, (LPARAM) &mi); + AddMirOTRMenuItem(0, (LPARAM)&mi); mi.flags = CMIF_TCHAR | CMIF_NOTNOTPRIVATE | CMIF_NOTFINISHED; mi.ptszName = LANG_MENU_REFRESH; mi.position = 100002; mi.pszService = MS_OTR_MENUREFRESH; mi.icolibItem = IcoLib_GetIconHandle(ICON_FINISHED); - AddMirOTRMenuItem(0, (LPARAM) &mi); + AddMirOTRMenuItem(0, (LPARAM)&mi); mi.flags = CMIF_TCHAR | CMIF_NOTNOTPRIVATE; mi.ptszName = LANG_MENU_STOP; mi.position = 100003; mi.pszService = MS_OTR_MENUSTOP; mi.icolibItem = IcoLib_GetIconHandle(ICON_NOT_PRIVATE); - AddMirOTRMenuItem(0, (LPARAM) &mi); + AddMirOTRMenuItem(0, (LPARAM)&mi); mi.flags = CMIF_TCHAR | CMIF_NOTNOTPRIVATE | CMIF_NOTFINISHED; mi.ptszName = LANG_MENU_VERIFY; mi.position = 200001; mi.pszService = MS_OTR_MENUVERIFY; mi.icolibItem = IcoLib_GetIconHandle(ICON_PRIVATE); - AddMirOTRMenuItem(0, (LPARAM) &mi); + AddMirOTRMenuItem(0, (LPARAM)&mi); - mi.flags = CMIF_TCHAR|CMIF_CHECKED; + mi.flags = CMIF_TCHAR | CMIF_CHECKED; mi.ptszName = LANG_MENU_TOGGLEHTML; mi.position = 300001; mi.pszService = MS_OTR_MENUTOGGLEHTML; - hHTMLConvMenuItem = (HGENMENU) AddMirOTRMenuItem(0, (LPARAM) &mi); + hHTMLConvMenuItem = (HGENMENU)AddMirOTRMenuItem(0, (LPARAM)&mi); } void UninitMirOTRMenu(void) @@ -264,6 +261,6 @@ void UninitMirOTRMenu(void) DestroyWindow(hDummyPaintWin); hDummyPaintWin = 0; UnregisterClass(_T("MirOTRPopupMenuProcessor"), hInst); - if ( hMirOTRMenuObject ) CallService(MO_REMOVEMENUOBJECT, (WPARAM)hMirOTRMenuObject, 0 ); + if (hMirOTRMenuObject) CallService(MO_REMOVEMENUOBJECT, (WPARAM)hMirOTRMenuObject, 0); hMirOTRMenuObject = 0; } |