void InitMirOTRMenu(void) { 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); // menu object CreateServiceFunction("MIROTRMENUS/FreeOwnerDataMirOTRMenu", FreeOwnerDataMirOTRMenu); CreateServiceFunction("MIROTRMENUS/OnAddMenuItemMirOTRMenu", OnAddMenuItemMirOTRMenu); hMirOTRMenuObject = Menu_AddObject("MirOTRMenu", LPGEN("MirOTR menu"), "MirOTRMenuCheckService", "MirOTRMenuExecService"); Menu_ConfigureObject(hMirOTRMenuObject, MCO_OPT_FREE_SERVICE, "MIROTRMENUS/FreeOwnerDataMirOTRMenu"); Menu_ConfigureObject(hMirOTRMenuObject, MCO_OPT_ONADD_SERVICE, "MIROTRMENUS/OnAddMenuItemMirOTRMenu"); // menu items CMenuItem mi; mi.flags = CMIF_DISABLED | CMIF_TCHAR; mi.name.t = LPGENT("OTR Status"); mi.position = 0; hStatusInfoItem = AddMirOTRMenuItem(&mi, NULL); mi.flags = CMIF_TCHAR | CMIF_NOTPRIVATE | CMIF_NOTUNVERIFIED; mi.name.t = LANG_MENU_START; mi.position = 100001; mi.hIcolibItem = IcoLib_GetIconHandle(ICON_UNVERIFIED); AddMirOTRMenuItem(&mi, MS_OTR_MENUSTART); mi.flags = CMIF_TCHAR | CMIF_NOTNOTPRIVATE | CMIF_NOTFINISHED; mi.name.t = LANG_MENU_REFRESH; mi.position = 100002; mi.hIcolibItem = IcoLib_GetIconHandle(ICON_FINISHED); AddMirOTRMenuItem(&mi, MS_OTR_MENUREFRESH); mi.flags = CMIF_TCHAR | CMIF_NOTNOTPRIVATE; mi.name.t = LANG_MENU_STOP; mi.position = 100003; mi.hIcolibItem = IcoLib_GetIconHandle(ICON_NOT_PRIVATE); AddMirOTRMenuItem(&mi, MS_OTR_MENUSTOP); mi.flags = CMIF_TCHAR | CMIF_NOTNOTPRIVATE | CMIF_NOTFINISHED; mi.name.t = LANG_MENU_VERIFY; mi.position = 200001; mi.hIcolibItem = IcoLib_GetIconHandle(ICON_PRIVATE); AddMirOTRMenuItem(&mi, MS_OTR_MENUVERIFY); mi.flags = CMIF_TCHAR | CMIF_CHECKED; mi.name.t = LANG_MENU_TOGGLEHTML; mi.position = 300001; mi.hIcolibItem = 0; hHTMLConvMenuItem = AddMirOTRMenuItem(&mi, MS_OTR_MENUTOGGLEHTML); }
// true - ok,false ignore INT_PTR MirOTRMenuCheckService(WPARAM wParam, LPARAM) { TCheckProcParam *pcpp = (TCheckProcParam*)wParam; if (pcpp == NULL) return FALSE; 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) hContact = hSub; ConnContext *context = otrl_context_find_miranda(otr_user_state, hContact); TrustLevel level = (TrustLevel)otr_context_get_trust(context); TMO_MenuItem mi; if (Menu_GetItemInfo(pcpp->MenuItemHandle, 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) { TCHAR text[128]; switch (level) { case TRUST_PRIVATE: mir_sntprintf(text, _T("%s [v%i]"), TranslateT(LANG_STATUS_PRIVATE), context->protocol_version); Menu_ModifyItem(hStatusInfoItem, text, IcoLib_GetIconHandle(ICON_PRIVATE)); break; case TRUST_UNVERIFIED: mir_sntprintf(text, _T("%s [v%i]"), TranslateT(LANG_STATUS_UNVERIFIED), context->protocol_version); Menu_ModifyItem(hStatusInfoItem, text, IcoLib_GetIconHandle(ICON_UNVERIFIED)); break; case TRUST_FINISHED: Menu_ModifyItem(hStatusInfoItem, TranslateT(LANG_STATUS_FINISHED), IcoLib_GetIconHandle(ICON_UNVERIFIED)); break; default: Menu_ModifyItem(hStatusInfoItem, TranslateT(LANG_STATUS_DISABLED), IcoLib_GetIconHandle(ICON_NOT_PRIVATE)); } } else if (pcpp->MenuItemHandle == hHTMLConvMenuItem) Menu_SetChecked(hHTMLConvMenuItem, db_get_b(hContact, MODULENAME, "HTMLConv", 0) != 0); } return TRUE; }
int TTBLoaded(WPARAM, LPARAM) { TTBButton ttb = { 0 }; ttb.pszService = "Popup/EnableDisableMenuCommand"; ttb.lParamUp = 1; ttb.dwFlags = TTBBF_VISIBLE | TTBBF_SHOWTOOLTIP | TTBBF_ASPUSHBUTTON; if (db_get_b(0, "Popup", "ModuleIsEnabled", 1)) ttb.dwFlags |= TTBBF_PUSHED; ttb.name = LPGEN("Toggle Popups"); ttb.hIconHandleUp = IcoLib_GetIconHandle(ICO_TB_POPUP_OFF); ttb.hIconHandleDn = IcoLib_GetIconHandle(ICO_TB_POPUP_ON); ttb.pszTooltipUp = LPGEN("Enable Popups"); ttb.pszTooltipDn = LPGEN("Disable Popups"); hTTButton = TopToolbar_AddButton(&ttb); return 0; }
void SetContactExtraIcon(MCONTACT hContact, int status) { char iconName[100]; mir_snprintf(iconName, _countof(iconName), "%s_%s", MODULE, "gaming"); ExtraIcon_SetIcon(hExtraXStatus, hContact, (status > 0) ? IcoLib_GetIconHandle(iconName) : NULL); }
HANDLE CSkypeProto::Skin_GetIconHandle(const char *name) { char iconName[100]; mir_snprintf(iconName, "%s_%s", MODULE, name); HANDLE hIcon = IcoLib_GetIconHandle(iconName); if (hIcon == NULL) hIcon = GetIconHandle(name); return hIcon; }
static int icolib_GetIcon(lua_State *L) { const char *name = luaL_checkstring(L, 1); HANDLE res = IcoLib_GetIconHandle(name); lua_pushlightuserdata(L, res); return 1; }
HANDLE GetIconHandle(char *szIcon) { char szSettingName[64]; mir_snprintf(szSettingName, "%s_%s", MODULE, szIcon); return IcoLib_GetIconHandle(szSettingName); }