static int MSN_OnPrebuildContactMenu(WPARAM wParam, LPARAM lParam) { CMsnProto* ppro = GetProtoInstanceByHContact((HANDLE)wParam); if (ppro) ppro->OnPrebuildContactMenu(wParam, lParam); else { sttEnableMenuItem(hBlockMenuItem, false); sttEnableMenuItem(hLiveSpaceMenuItem, false); sttEnableMenuItem(hNetmeetingMenuItem, false); sttEnableMenuItem(hChatInviteMenuItem, false); sttEnableMenuItem(hOpenInboxMenuItem, false); } return 0; }
static int IcqPrebuildContactMenu( WPARAM wParam, LPARAM lParam ) { sttEnableMenuItem(g_hContactMenuItems[ICMI_AUTH_REQUEST], FALSE); sttEnableMenuItem(g_hContactMenuItems[ICMI_AUTH_GRANT], FALSE); sttEnableMenuItem(g_hContactMenuItems[ICMI_AUTH_REVOKE], FALSE); sttEnableMenuItem(g_hContactMenuItems[ICMI_ADD_TO_SERVLIST], FALSE); sttEnableMenuItem(g_hContactMenuItems[ICMI_XSTATUS_DETAILS], FALSE); sttEnableMenuItem(g_hContactMenuItems[ICMI_OPEN_PROFILE], FALSE); CIcqProto* ppro = IcqGetInstanceByHContact((HANDLE)wParam); return (ppro) ? ppro->OnPreBuildContactMenu(wParam, lParam) : 0; }
int CIcqProto::OnPreBuildContactMenu(WPARAM wParam, LPARAM) { HANDLE hContact = (HANDLE)wParam; if (hContact == NULL) return 0; if (icqOnline()) { BOOL bCtrlPressed = (GetKeyState(VK_CONTROL)&0x8000 ) != 0; DWORD dwUin = getContactUin(hContact); sttEnableMenuItem(g_hContactMenuItems[ICMI_AUTH_REQUEST], dwUin && (bCtrlPressed || (getSettingByte((HANDLE)wParam, "Auth", 0) && getSettingWord((HANDLE)wParam, DBSETTING_SERVLIST_ID, 0)))); sttEnableMenuItem(g_hContactMenuItems[ICMI_AUTH_GRANT], dwUin && (bCtrlPressed || getSettingByte((HANDLE)wParam, "Grant", 0))); sttEnableMenuItem(g_hContactMenuItems[ICMI_AUTH_REVOKE], dwUin && (bCtrlPressed || (getSettingByte(NULL, "PrivacyItems", 0) && !getSettingByte((HANDLE)wParam, "Grant", 0)))); sttEnableMenuItem(g_hContactMenuItems[ICMI_ADD_TO_SERVLIST], m_bSsiEnabled && !getSettingWord((HANDLE)wParam, DBSETTING_SERVLIST_ID, 0) && !getSettingWord((HANDLE)wParam, DBSETTING_SERVLIST_IGNORE, 0) && !DBGetContactSettingByte(hContact, "CList", "NotOnList", 0)); } sttEnableMenuItem(g_hContactMenuItems[ICMI_OPEN_PROFILE],getContactUin(hContact) != 0); BYTE bXStatus = getContactXStatus((HANDLE)wParam); sttEnableMenuItem(g_hContactMenuItems[ICMI_XSTATUS_DETAILS], m_bHideXStatusUI ? 0 : bXStatus != 0); if (bXStatus && !m_bHideXStatusUI) { CLISTMENUITEM clmi = {0}; clmi.cbSize = sizeof(clmi); clmi.flags = CMIM_ICON; if (bXStatus > 0 && bXStatus <= XSTATUS_COUNT) clmi.hIcon = getXStatusIcon(bXStatus, LR_SHARED); else clmi.hIcon = LoadSkinnedIcon(SKINICON_OTHER_SMALLDOT); CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)g_hContactMenuItems[ICMI_XSTATUS_DETAILS], (LPARAM)&clmi); } return 0; }
int JabberMenuPrebuildContactMenu( WPARAM wParam, LPARAM lParam ) { sttEnableMenuItem( hMenuRequestAuth, FALSE ); sttEnableMenuItem( hMenuGrantAuth, FALSE ); sttEnableMenuItem( hMenuRevokeAuth, FALSE ); sttEnableMenuItem( hMenuJoinLeave, FALSE ); sttEnableMenuItem( hMenuCommands, FALSE ); sttEnableMenuItem( hMenuConvert, FALSE ); sttEnableMenuItem( hMenuRosterAdd, FALSE ); sttEnableMenuItem( hMenuLogin, FALSE ); sttEnableMenuItem( hMenuVisitGMail, FALSE ); sttEnableMenuItem( hMenuRefresh, FALSE ); sttEnableMenuItem( hMenuAddBookmark, FALSE ); HANDLE hContact; if (( hContact=( HANDLE )wParam ) == NULL ) return 0; else { DBVARIANT dbv; if ( !JGetStringT( hContact, "FakeContact", &dbv )) { if (!_tcsicmp( dbv.ptszVal, _T("GMAIL"))){ sttEnableMenuItem( hMenuVisitGMail, TRUE ); return 0; } JFreeVariant( &dbv ); } } BYTE bIsChatRoom = (BYTE)JGetByte( hContact, "ChatRoom", 0 ); BYTE bIsTransport = (BYTE)JGetByte( hContact, "IsTransport", 0 ); if ((bIsChatRoom == GCW_CHATROOM) || bIsChatRoom == 0 ) { DBVARIANT dbv; if ( !JGetStringT( hContact, bIsChatRoom?(char*)"ChatRoomID":(char*)"jid", &dbv )) { JFreeVariant( &dbv ); CLISTMENUITEM clmi = { 0 }; sttEnableMenuItem( hMenuConvert, TRUE ); clmi.cbSize = sizeof( clmi ); clmi.pszName = (char *)(bIsChatRoom ? "&Convert to Contact" : "&Convert to Chat Room"); clmi.flags = CMIM_NAME | CMIM_FLAGS; JCallService( MS_CLIST_MODIFYMENUITEM, ( WPARAM )hMenuConvert, ( LPARAM )&clmi ); } } if (!jabberOnline) return 0; if ( bIsChatRoom ) { DBVARIANT dbv; if ( !JGetStringT( hContact, "ChatRoomID", &dbv )) { if ( JabberListGetItemPtr( LIST_ROSTER, dbv.ptszVal ) == NULL ) sttEnableMenuItem( hMenuRosterAdd, TRUE ); if ( JabberListGetItemPtr( LIST_BOOKMARK, dbv.ptszVal ) == NULL ) if ( jabberThreadInfo && jabberThreadInfo->caps & CAPS_BOOKMARK ) sttEnableMenuItem( hMenuAddBookmark, TRUE ); JFreeVariant( &dbv ); } } if ( bIsChatRoom == GCW_CHATROOM ) { CLISTMENUITEM clmi = { 0 }; clmi.cbSize = sizeof( clmi ); clmi.pszName = (char *)(( JGetWord( hContact, "Status", 0 ) == ID_STATUS_ONLINE ) ? "&Leave" : "&Join"); clmi.flags = CMIM_NAME | CMIM_FLAGS; JCallService( MS_CLIST_MODIFYMENUITEM, ( WPARAM )hMenuJoinLeave, ( LPARAM )&clmi ); return 0; } if ( bIsTransport ) { sttEnableMenuItem( hMenuLogin, TRUE ); sttEnableMenuItem( hMenuRefresh, TRUE ); } DBVARIANT dbv; if ( !JGetStringT( hContact, "jid", &dbv )) { JABBER_LIST_ITEM * item; item=JabberListGetItemPtr( LIST_ROSTER, dbv.ptszVal ); if ( !bIsTransport || (( item != NULL ) && (item->cap & AGENT_CAP_ADHOC) ) ) { sttEnableMenuItem( hMenuCommands, TRUE ); } else sttEnableMenuItem( hMenuCommands, FALSE ); JFreeVariant( &dbv ); } if ( !JGetStringT( hContact, "jid", &dbv )) { JABBER_LIST_ITEM* item = JabberListGetItemPtr( LIST_ROSTER, dbv.ptszVal ); JFreeVariant( &dbv ); if ( item != NULL ) { BOOL bCtrlPressed = ( GetKeyState( VK_CONTROL)&0x8000 ) != 0; sttEnableMenuItem( hMenuRequestAuth, item->subscription == SUB_FROM || item->subscription == SUB_NONE || bCtrlPressed ); sttEnableMenuItem( hMenuGrantAuth, item->subscription == SUB_TO || item->subscription == SUB_NONE || bCtrlPressed ); sttEnableMenuItem( hMenuRevokeAuth, item->subscription == SUB_FROM || item->subscription == SUB_BOTH || bCtrlPressed ); sttEnableMenuItem( hMenuCommands, (!bIsChatRoom && (!bIsTransport || (item->cap & AGENT_CAP_ADHOC))) ); return 0; } } return 0; }