From 21549db08d22a6e41443799b917525da1dbf9853 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 10 Aug 2012 10:35:58 +0000 Subject: - SRMM, Chat & Clist_Classic made standard git-svn-id: http://svn.miranda-ng.org/main/trunk@1422 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Chat/src/clist.cpp | 360 --------------------------------------------- 1 file changed, 360 deletions(-) delete mode 100644 plugins/Chat/src/clist.cpp (limited to 'plugins/Chat/src/clist.cpp') diff --git a/plugins/Chat/src/clist.cpp b/plugins/Chat/src/clist.cpp deleted file mode 100644 index df60f1de3a..0000000000 --- a/plugins/Chat/src/clist.cpp +++ /dev/null @@ -1,360 +0,0 @@ -/* -Chat module plugin for Miranda IM - -Copyright (C) 2003 Jörgen Persson - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -#include "chat.h" - -extern HANDLE hJoinMenuItem, hLeaveMenuItem; - -HANDLE CList_AddRoom(const char* pszModule, const TCHAR* pszRoom, const TCHAR* pszDisplayName, int iType) -{ - HANDLE hContact = CList_FindRoom(pszModule, pszRoom); - DBVARIANT dbv; - TCHAR pszGroup[50]; - - *pszGroup = '\0'; - if ( !DBGetContactSettingTString( NULL, "Chat", "AddToGroup", &dbv )) { - if ( lstrlen( dbv.ptszVal ) > 0 ) - lstrcpyn( pszGroup, dbv.ptszVal, 50); - DBFreeVariant(&dbv); - } - else lstrcpyn( pszGroup, _T("Chat rooms"), 50); - - if ( pszGroup[0] ) - CList_CreateGroup( pszGroup ); - - if ( hContact ) { //contact exist, make sure it is in the right group - DBVARIANT dbv; - DBVARIANT dbv2; - char str[50]; - int i; - - if ( pszGroup[0] ) { - for (i = 0;; i++) { - _itoa( i, str, 10 ); - if ( DBGetContactSettingTString( NULL, "CListGroups", str, &dbv )) { - DBWriteContactSettingTString(hContact, "CList", "Group", pszGroup); - goto END_GROUPLOOP; - } - - if ( !DBGetContactSettingTString( hContact, "CList", "Group", &dbv2 )) { - if ( dbv.ptszVal[0] != '\0' && dbv2.ptszVal[0] != '\0' && !lstrcmpi( dbv.ptszVal + 1, dbv2.ptszVal )) { - DBFreeVariant( &dbv ); - DBFreeVariant( &dbv2 ); - goto END_GROUPLOOP; - } - DBFreeVariant(&dbv2); - } - DBFreeVariant(&dbv); - } } - -END_GROUPLOOP: - DBWriteContactSettingWord( hContact, pszModule, "Status", ID_STATUS_OFFLINE ); - DBWriteContactSettingTString(hContact, pszModule, "Nick", pszDisplayName ); -/* if ( iType != GCW_SERVER ) - DBWriteContactSettingByte(hContact, "CList", "Hidden", 1);*/ - return hContact; - } - - // here we create a new one since no one is to be found - if (( hContact = (HANDLE) CallService(MS_DB_CONTACT_ADD, 0, 0)) == NULL ) - return NULL; - - CallService( MS_PROTO_ADDTOCONTACT, (WPARAM) hContact, (LPARAM) pszModule ); - if ( pszGroup && lstrlen( pszGroup ) > 0 ) - DBWriteContactSettingTString(hContact, "CList", "Group", pszGroup ); - else - DBDeleteContactSetting( hContact, "CList", "Group" ); - DBWriteContactSettingTString( hContact, pszModule, "Nick", pszDisplayName ); - DBWriteContactSettingTString( hContact, pszModule, "ChatRoomID", pszRoom ); - DBWriteContactSettingByte( hContact, pszModule, "ChatRoom", (BYTE)iType ); - DBWriteContactSettingWord( hContact, pszModule, "Status", ID_STATUS_OFFLINE ); -// if (iType == GCW_SERVER) - // DBWriteContactSettingByte(hContact, "CList", "Hidden", 1); - return hContact; -} - -BOOL CList_SetOffline(HANDLE hContact, BOOL bHide) -{ - if ( hContact ) { - char* szProto = ( char* )CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - int i = DBGetContactSettingByte(hContact, szProto, "ChatRoom", 0); - DBWriteContactSettingWord(hContact, szProto,"ApparentMode",(LPARAM) 0); - DBWriteContactSettingWord(hContact, szProto, "Status", ID_STATUS_OFFLINE); -/* if ( bHide && i != GCW_SERVER ) - DBWriteContactSettingByte(hContact, "CList", "Hidden", 1);*/ - return TRUE; - } - - return FALSE; -} - -BOOL CList_SetAllOffline(BOOL bHide, const char *pszModule) -{ - HANDLE hContact; - char* szProto; - - hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); - while ( hContact ) { - szProto = (char *) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - if ( MM_FindModule( szProto )) { - if ( !pszModule || ( pszModule && !strcmp( pszModule, szProto ))) { - int i = DBGetContactSettingByte(hContact, szProto, "ChatRoom", 0); - if ( i != 0 ) { - DBWriteContactSettingWord(hContact, szProto,"ApparentMode",(LPARAM)(WORD) 0); - DBWriteContactSettingWord(hContact, szProto, "Status", ID_STATUS_OFFLINE); - /*0000if (bHide && i == GCW_CHATROOM)d0 - DBWriteContactSettingByte(hContact, "CList", "Hidden", 1);*/ - } } } - hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM) hContact, 0); - } - return TRUE; -} - -int CList_RoomDoubleclicked( WPARAM wParam, LPARAM lParam ) -{ - DBVARIANT dbv; - char *szProto; - BOOL bRedrawFlag = FALSE; - - HANDLE hContact = (HANDLE)wParam; - if ( !hContact ) - return 0; - - szProto = ( char* )CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - if ( MM_FindModule(szProto)) { - if ( DBGetContactSettingByte( hContact, szProto, "ChatRoom", 0 ) == 0 ) - return 0; - - if ( !DBGetContactSettingTString( hContact, szProto, "ChatRoomID", &dbv )) { - SESSION_INFO* si = SM_FindSession( dbv.ptszVal, szProto ); - if ( si ) { - // is the "toggle visibility option set, so we need to close the window? - if (si->hWnd != NULL - && DBGetContactSettingByte(NULL, "Chat", "ToggleVisibility", 0)==1 - && !CallService(MS_CLIST_GETEVENT, (WPARAM)hContact, 0) - && IsWindowVisible(si->hWnd) - && !IsIconic(si->hWnd)) - { - if (g_Settings.TabsEnable) - SendMessage(si->hWnd, GC_REMOVETAB, 1, (LPARAM) si ); - else - PostMessage(si->hWnd, GC_CLOSEWINDOW, 0, 0); - DBFreeVariant(&dbv); - return 1; - } - ShowRoom(si, WINDOW_VISIBLE, TRUE); - } - DBFreeVariant(&dbv); - return 1; - } } - - return 0; -} - -INT_PTR CList_EventDoubleclicked(WPARAM wParam,LPARAM lParam) -{ - return CList_RoomDoubleclicked((WPARAM) ((CLISTEVENT*)lParam)->hContact,(LPARAM) 0); -} - -INT_PTR CList_JoinChat(WPARAM wParam, LPARAM lParam) -{ - HANDLE hContact = (HANDLE)wParam; - if ( hContact ) { - char* szProto = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - if ( szProto ) { - if ( DBGetContactSettingWord( hContact, szProto, "Status", 0 ) == ID_STATUS_OFFLINE ) - CallProtoService( szProto, PS_JOINCHAT, wParam, lParam ); - else - CList_RoomDoubleclicked( wParam, 0 ); - } } - - return 0; -} - -INT_PTR CList_LeaveChat(WPARAM wParam, LPARAM lParam) -{ - HANDLE hContact = (HANDLE)wParam; - if ( hContact ) { - char* szProto = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - if ( szProto ) - CallProtoService( szProto, PS_LEAVECHAT, wParam, lParam ); - } - return 0; -} - -int CList_PrebuildContactMenu(WPARAM wParam, LPARAM lParam) -{ - HANDLE hContact = (HANDLE)wParam; - if ( hContact ) { - char* szProto = (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0); - - CLISTMENUITEM clmi = {0}; - clmi.cbSize = sizeof(CLISTMENUITEM); - clmi.flags = CMIM_FLAGS | CMIF_DEFAULT | CMIF_HIDDEN; - - if ( szProto ) { - // display this menu item only for chats - if ( DBGetContactSettingByte( 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 ); - } - return 0; -} - -INT_PTR CList_PrebuildContactMenuSvc(WPARAM wParam, LPARAM lParam) -{ - return CList_PrebuildContactMenu(wParam, lParam); -} - - -void CList_CreateGroup(TCHAR* group) -{ - int i; - char str[50]; - TCHAR name[256]; - DBVARIANT dbv; - - if ( !group ) - return; - - for (i = 0;; i++) - { - _itoa(i, str, 10); - if ( DBGetContactSettingTString( NULL, "CListGroups", str, &dbv )) - break; - - if ( dbv.pszVal[0] != '\0' && !lstrcmpi(dbv.ptszVal + 1, group)) { - DBFreeVariant(&dbv); - return; - } - - DBFreeVariant(&dbv); - } - - // CallService(MS_CLIST_GROUPCREATE, (WPARAM)group, 0); - name[0] = 1 | GROUPF_EXPANDED; - _tcsncpy(name + 1, group, SIZEOF(name) - 1); - name[ lstrlen(group) + 1] = '\0'; - DBWriteContactSettingTString(NULL, "CListGroups", str, name); - CallService(MS_CLUI_GROUPADDED, i + 1, 0); -} - -BOOL CList_AddEvent(HANDLE hContact, HICON hIcon, HANDLE hEvent, int type, TCHAR* fmt, ... ) -{ - CLISTEVENT cle = {0}; - va_list marker; - TCHAR szBuf[4096]; - - if (!fmt || !fmt[0] || _tcslen(fmt) > 2000) - return FALSE; - - va_start(marker, fmt); - _vsntprintf(szBuf, SIZEOF(szBuf), fmt, marker); - va_end(marker); - - cle.cbSize = sizeof(cle); - cle.hContact = hContact; - cle.hDbEvent = hEvent; - cle.flags = type | CLEF_TCHAR; - cle.hIcon = hIcon; - cle.pszService = "GChat/DblClickEvent" ; - cle.ptszTooltip = TranslateTS(szBuf); - if (type) { - if (!CallService(MS_CLIST_GETEVENT, (WPARAM)hContact, 0)) - CallService(MS_CLIST_ADDEVENT, (WPARAM) hContact, (LPARAM) &cle); - } - else { - if (CallService(MS_CLIST_GETEVENT, (WPARAM)hContact, 0)) - CallService(MS_CLIST_REMOVEEVENT, (WPARAM)hContact, (LPARAM)hEvent); - CallService(MS_CLIST_ADDEVENT, (WPARAM)hContact, (LPARAM)&cle); - } - return TRUE; -} - -HANDLE CList_FindRoom ( const char* pszModule, const TCHAR* pszRoom) -{ - HANDLE hContact = ( HANDLE )CallService(MS_DB_CONTACT_FINDFIRST, 0, 0); - while (hContact) { - char* szProto = ( char* )CallService( MS_PROTO_GETCONTACTBASEPROTO, (WPARAM) hContact, 0 ); - if ( szProto && !lstrcmpiA( szProto, pszModule )) { - if ( DBGetContactSettingByte( hContact, szProto, "ChatRoom", 0) != 0 ) { - DBVARIANT dbv; - if ( !DBGetContactSettingTString( hContact, szProto, "ChatRoomID", &dbv )) { - if ( !lstrcmpi(dbv.ptszVal, pszRoom)) { - DBFreeVariant( &dbv ); - return hContact; - } - DBFreeVariant(&dbv); - } } } - - hContact = (HANDLE) CallService(MS_DB_CONTACT_FINDNEXT, (WPARAM) hContact, 0); - } - return 0; -} - -int WCCmp(TCHAR* wild, TCHAR* string) -{ - TCHAR *cp, *mp; - if ( wild == NULL || !wild[0] || string == NULL || !string[0]) - return 0; - - while ((*string) && (*wild != '*')) { - if ((*wild != *string) && (*wild != '?')) - return 0; - - wild++; - string++; - } - - while (*string) { - if (*wild == '*') { - if (!*++wild) - return 1; - - mp = wild; - cp = string+1; - } - else if ((*wild == *string) || (*wild == '?')) { - wild++; - string++; - } - else { - wild = mp; - string = cp++; - } } - - while (*wild == '*') - wild++; - - return !*wild; -} -- cgit v1.2.3