static int TlenPrebuildContactMenu(void *ptr, WPARAM wParam, LPARAM lParam) { HANDLE hContact; DBVARIANT dbv; CLISTMENUITEM clmi = {0}; JABBER_LIST_ITEM *item; TlenProtocol *proto = (TlenProtocol *)ptr; clmi.cbSize = sizeof(CLISTMENUITEM); if ((hContact=(HANDLE) wParam)!=NULL && proto->isOnline) { if (!DBGetContactSetting(hContact, proto->iface.m_szModuleName, "jid", &dbv)) { if ((item=JabberListGetItemPtr(proto, LIST_ROSTER, dbv.pszVal)) != NULL) { if (item->subscription==SUB_NONE || item->subscription==SUB_FROM) clmi.flags = CMIM_FLAGS; else clmi.flags = CMIM_FLAGS|CMIF_HIDDEN; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuContactRequestAuth, (LPARAM) &clmi); if (item->subscription==SUB_NONE || item->subscription==SUB_TO) clmi.flags = CMIM_FLAGS; else clmi.flags = CMIM_FLAGS|CMIF_HIDDEN; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuContactGrantAuth, (LPARAM) &clmi); if (item->status!=ID_STATUS_OFFLINE) clmi.flags = CMIM_FLAGS; else clmi.flags = CMIM_FLAGS|CMIF_HIDDEN; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuContactMUC, (LPARAM) &clmi); if (item->status!=ID_STATUS_OFFLINE && !TlenVoiceIsInUse(proto)) clmi.flags = CMIM_FLAGS; else clmi.flags = CMIM_FLAGS|CMIF_HIDDEN; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuContactVoice, (LPARAM) &clmi); if (item->status!=ID_STATUS_OFFLINE) clmi.flags = CMIM_FLAGS; else clmi.flags = CMIM_FLAGS|CMIF_HIDDEN; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuPicture, (LPARAM) &clmi); DBFreeVariant(&dbv); return 0; } DBFreeVariant(&dbv); } } clmi.flags = CMIM_FLAGS|CMIF_HIDDEN; CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuContactMUC, (LPARAM) &clmi); CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuContactVoice, (LPARAM) &clmi); CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuContactRequestAuth, (LPARAM) &clmi); CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM) proto->hMenuContactGrantAuth, (LPARAM) &clmi); return 0; }
int TlenProtocol::PrebuildContactMenu(WPARAM hContact, LPARAM) { if (hContact != NULL && isOnline) { DBVARIANT dbv; if (!db_get(hContact, m_szModuleName, "jid", &dbv)) { TLEN_LIST_ITEM *item = TlenListGetItemPtr(this, LIST_ROSTER, dbv.pszVal); db_free(&dbv); if (item != NULL) { Menu_ShowItem(hMenuContactRequestAuth, item->subscription == SUB_NONE || item->subscription == SUB_FROM); Menu_ShowItem(hMenuContactGrantAuth, item->subscription == SUB_NONE || item->subscription == SUB_TO); Menu_ShowItem(hMenuContactMUC, item->status != ID_STATUS_OFFLINE); Menu_ShowItem(hMenuContactVoice, item->status != ID_STATUS_OFFLINE && !TlenVoiceIsInUse(this)); Menu_ShowItem(hMenuPicture, item->status != ID_STATUS_OFFLINE); return 0; } } } Menu_ShowItem(hMenuContactMUC, false); Menu_ShowItem(hMenuContactVoice, false); Menu_ShowItem(hMenuContactRequestAuth, false); Menu_ShowItem(hMenuContactGrantAuth, false); return 0; }