Example #1
0
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;
}
Example #2
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;
}