From b665a90f50f09435aef5bc3b5b9da710e4558690 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 5 Apr 2013 16:54:27 +0000 Subject: various menu items quirks, simplifications & optimization git-svn-id: http://svn.miranda-ng.org/main/trunk@4319 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/TabSRMM/src/chat/clist.cpp | 46 +++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 25 deletions(-) (limited to 'plugins/TabSRMM/src/chat/clist.cpp') diff --git a/plugins/TabSRMM/src/chat/clist.cpp b/plugins/TabSRMM/src/chat/clist.cpp index 5506aa5cad..18172a2e01 100644 --- a/plugins/TabSRMM/src/chat/clist.cpp +++ b/plugins/TabSRMM/src/chat/clist.cpp @@ -194,7 +194,7 @@ INT_PTR CList_JoinChat(WPARAM wParam, LPARAM lParam) if ( hContact ) { char* szProto = GetContactProto(hContact); if ( szProto ) { - if ( DBGetContactSettingWord( hContact, szProto, "Status", 0 ) == ID_STATUS_OFFLINE ) + if ( db_get_w( hContact, szProto, "Status", 0 ) == ID_STATUS_OFFLINE ) CallProtoService( szProto, PS_JOINCHAT, wParam, lParam ); else CList_RoomDoubleclicked( wParam, 0 ); @@ -217,31 +217,28 @@ INT_PTR CList_LeaveChat(WPARAM wParam, LPARAM lParam) int CList_PrebuildContactMenu(WPARAM wParam, LPARAM lParam) { HANDLE hContact = (HANDLE)wParam; - if ( hContact ) { - char* szProto = GetContactProto(hContact); + if (hContact == NULL) + return 0; - CLISTMENUITEM clmi = { sizeof(clmi) }; - clmi.flags = CMIM_FLAGS | CMIF_DEFAULT | CMIF_HIDDEN; + bool bEnabled = false; + char *szProto = GetContactProto(hContact); + if ( szProto ) { + // display this menu item only for chats + if ( M->GetByte(hContact, szProto, "ChatRoom", 0 )) { + // still hide it for offline protos + if (CallProtoService( szProto, PS_GETSTATUS, 0, 0 ) != ID_STATUS_OFFLINE) { + CLISTMENUITEM clmi = { sizeof(clmi) }; + clmi.flags = CMIM_NAME; + if (db_get_w( hContact, szProto, "Status", 0 ) == ID_STATUS_OFFLINE) + clmi.pszName = (char*)LPGEN("Join chat"); + else + clmi.pszName = (char*)LPGEN("Open chat window"); + Menu_ModifyItem(hJoinMenuItem, &clmi); + bEnabled = true; + } } } - if ( szProto ) { - // display this menu item only for chats - if ( M->GetByte(hContact, szProto, "ChatRoom", 0 )) { - // still hide it for offline protos - if ( CallProtoService( szProto, PS_GETSTATUS, 0, 0 ) != ID_STATUS_OFFLINE ) { - clmi.flags &= ~CMIF_HIDDEN; - clmi.flags |= CMIM_NAME; - - if ( DBGetContactSettingWord( hContact, szProto, "Status", 0 ) == ID_STATUS_OFFLINE ) - clmi.pszName = ( char* )LPGEN("Join chat"); - else - clmi.pszName = ( char* )LPGEN("Open chat window"); - } } } - CallService( MS_CLIST_MODIFYMENUITEM, ( WPARAM )hJoinMenuItem, ( LPARAM )&clmi ); - - clmi.flags &= ~(CMIM_NAME | CMIF_DEFAULT); - clmi.flags |= CMIF_NOTOFFLINE; - CallService( MS_CLIST_MODIFYMENUITEM, ( WPARAM )hLeaveMenuItem, ( LPARAM )&clmi ); - } + Menu_ShowItem(hJoinMenuItem, bEnabled); + Menu_ShowItem(hLeaveMenuItem, bEnabled); return 0; } @@ -250,7 +247,6 @@ INT_PTR CList_PrebuildContactMenuSvc(WPARAM wParam, LPARAM lParam) return CList_PrebuildContactMenu(wParam, lParam); } - void CList_CreateGroup(TCHAR* group) { if (!group) -- cgit v1.2.3