void CJabberProto::SearchDeleteFromRecent( const TCHAR* szAddr, BOOL deleteLastFromDB ) { DBVARIANT dbv; char key[30]; //search in recent for ( int i=0; i<10; i++ ) { sprintf(key,"RecentlySearched_%d",i); if ( !JGetStringT( NULL, key, &dbv )) { if ( !_tcsicmp( szAddr, dbv.ptszVal )) { JFreeVariant( &dbv ); for ( int j=i; j<10; j++ ) { sprintf( key, "RecentlySearched_%d", j+1 ); if ( !JGetStringT( NULL, key, &dbv )) { sprintf(key,"RecentlySearched_%d",j); JSetStringT(NULL,key,dbv.ptszVal); JFreeVariant( &dbv ); } else { if ( deleteLastFromDB ) { sprintf(key,"RecentlySearched_%d",j); JDeleteSetting(NULL,key); } break; } } break; } else JFreeVariant( &dbv ); } } }
int JabberMenuConvertChatContact( WPARAM wParam, LPARAM lParam ) { BYTE bIsChatRoom = (BYTE)JGetByte( (HANDLE ) wParam, "ChatRoom", 0 ); if ((bIsChatRoom == GCW_CHATROOM) || bIsChatRoom == 0 ) { DBVARIANT dbv; if ( !JGetStringT( (HANDLE ) wParam, (bIsChatRoom == GCW_CHATROOM)?(char*)"ChatRoomID":(char*)"jid", &dbv )) { JDeleteSetting( (HANDLE ) wParam, (bIsChatRoom == GCW_CHATROOM)?"ChatRoomID":"jid"); JSetStringT( (HANDLE ) wParam, (bIsChatRoom != GCW_CHATROOM)?"ChatRoomID":"jid", dbv.ptszVal); JFreeVariant( &dbv ); JSetByte((HANDLE ) wParam, "ChatRoom", (bIsChatRoom == GCW_CHATROOM)?0:GCW_CHATROOM); } } return 0; }
int JabberGcInit( WPARAM wParam, LPARAM lParam ) { JABBER_LIST_ITEM* item = ( JABBER_LIST_ITEM* )wParam; GCSESSION gcw = {0}; GCEVENT gce = {0}; TCHAR* szNick = JabberNickFromJID( item->jid ); gcw.cbSize = sizeof(GCSESSION); gcw.iType = GCW_CHATROOM; gcw.pszModule = jabberProtoName; gcw.ptszName = szNick; gcw.ptszID = item->jid; gcw.dwFlags = GC_TCHAR; JCallService( MS_GC_NEWSESSION, NULL, (LPARAM)&gcw ); HANDLE hContact = JabberHContactFromJID( item->jid ); if ( hContact != NULL ) { DBVARIANT dbv; if ( !DBGetContactSettingTString( hContact, jabberProtoName, "MyNick", &dbv )) { if ( !lstrcmp( dbv.ptszVal, szNick )) JDeleteSetting( hContact, "MyNick" ); else JSetStringT( hContact, "MyNick", item->nick ); JFreeVariant( &dbv ); } else JSetStringT( hContact, "MyNick", item->nick ); } mir_free( szNick ); item->bChatActive = TRUE; GCDEST gcd = { jabberProtoName, NULL, GC_EVENT_ADDGROUP }; gcd.ptszID = item->jid; gce.cbSize = sizeof(GCEVENT); gce.pDest = &gcd; gce.dwFlags = GC_TCHAR; for ( int i = SIZEOF(sttRoles)-1; i >= 0; i-- ) { gce.ptszStatus = TranslateTS( sttRoles[i] ); JCallService(MS_GC_EVENT, NULL, ( LPARAM )&gce ); } gce.cbSize = sizeof(GCEVENT); gce.pDest = &gcd; gcd.iType = GC_EVENT_CONTROL; JCallService(MS_GC_EVENT, SESSION_INITDONE, (LPARAM)&gce); JCallService(MS_GC_EVENT, SESSION_ONLINE, (LPARAM)&gce); return 0; }
void JabberDBAddAuthRequest( TCHAR* jid, TCHAR* nick ) { HANDLE hContact = JabberDBCreateContact( jid, NULL, FALSE, TRUE ); JDeleteSetting( hContact, "Hidden" ); //JSetStringT( hContact, "Nick", nick ); #if defined( _UNICODE ) char* szJid = u2a( jid ); char* szNick = u2a( nick ); #else char* szJid = jid; char* szNick = nick; #endif //blob is: uin( DWORD ), hContact( HANDLE ), nick( ASCIIZ ), first( ASCIIZ ), last( ASCIIZ ), email( ASCIIZ ), reason( ASCIIZ ) //blob is: 0( DWORD ), hContact( HANDLE ), nick( ASCIIZ ), ""( ASCIIZ ), ""( ASCIIZ ), email( ASCIIZ ), ""( ASCIIZ ) DBEVENTINFO dbei = {0}; dbei.cbSize = sizeof( DBEVENTINFO ); dbei.szModule = jabberProtoName; dbei.timestamp = ( DWORD )time( NULL ); dbei.flags = 0; dbei.eventType = EVENTTYPE_AUTHREQUEST; dbei.cbBlob = sizeof( DWORD )+ sizeof( HANDLE ) + strlen( szNick ) + strlen( szJid ) + 5; PBYTE pCurBlob = dbei.pBlob = ( PBYTE ) mir_alloc( dbei.cbBlob ); *(( PDWORD ) pCurBlob ) = 0; pCurBlob += sizeof( DWORD ); *(( PHANDLE ) pCurBlob ) = hContact; pCurBlob += sizeof( HANDLE ); strcpy(( char* )pCurBlob, szNick ); pCurBlob += strlen( szNick )+1; *pCurBlob = '\0'; pCurBlob++; //firstName *pCurBlob = '\0'; pCurBlob++; //lastName strcpy(( char* )pCurBlob, szJid ); pCurBlob += strlen( szJid )+1; *pCurBlob = '\0'; //reason JCallService( MS_DB_EVENT_ADD, ( WPARAM ) ( HANDLE ) NULL, ( LPARAM )&dbei ); JabberLog( "Setup DBAUTHREQUEST with nick='" TCHAR_STR_PARAM "' jid='" TCHAR_STR_PARAM "'", szNick, szJid ); #if defined( _UNICODE ) mir_free( szJid ); mir_free( szNick ); #endif }