From cb4a46e7fbe62d788e66ed6121c717a2d22a4d7c Mon Sep 17 00:00:00 2001 From: watcherhd Date: Thu, 21 Apr 2011 14:14:52 +0000 Subject: svn.miranda.im is moving to a new home! git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@7 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- miranda-wine/protocols/MSN/msn_contact.cpp | 74 ++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 miranda-wine/protocols/MSN/msn_contact.cpp (limited to 'miranda-wine/protocols/MSN/msn_contact.cpp') diff --git a/miranda-wine/protocols/MSN/msn_contact.cpp b/miranda-wine/protocols/MSN/msn_contact.cpp new file mode 100644 index 0000000..af19333 --- /dev/null +++ b/miranda-wine/protocols/MSN/msn_contact.cpp @@ -0,0 +1,74 @@ +/* +Plugin of Miranda IM for communicating with users of the MSN Messenger protocol. +Copyright (c) 2003-5 George Hazan. +Copyright (c) 2002-3 Richard Hughes (original version). + +Miranda IM: the free icq client for MS Windows +Copyright (C) 2000-2002 Richard Hughes, Roland Rabien & Tristan Van de Vreede + +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 "msn_global.h" + +HANDLE __stdcall MSN_HContactFromEmail( const char* msnEmail, const char* msnNick, int addIfNeeded, int temporary ) +{ + HANDLE hContact = ( HANDLE )MSN_CallService( MS_DB_CONTACT_FINDFIRST, 0, 0 ); + while ( hContact != NULL ) + { + char* szProto = ( char* )MSN_CallService( MS_PROTO_GETCONTACTBASEPROTO,( WPARAM )hContact, 0 ); + if ( szProto != NULL && !strcmp( msnProtocolName, szProto )) { + char tEmail[ MSN_MAX_EMAIL_LEN ]; + if ( !MSN_GetStaticString( "e-mail", hContact, tEmail, sizeof( tEmail ))) + if ( !strcmpi( msnEmail, tEmail )) + return hContact; + } + + hContact = ( HANDLE )MSN_CallService( MS_DB_CONTACT_FINDNEXT, ( WPARAM )hContact, 0 ); + } + + if ( addIfNeeded ) + { + hContact = ( HANDLE )MSN_CallService( MS_DB_CONTACT_ADD, 0, 0 ); + MSN_CallService( MS_PROTO_ADDTOCONTACT, ( WPARAM )hContact, ( LPARAM )msnProtocolName ); + MSN_SetString( hContact, "e-mail", msnEmail ); + MSN_SetStringUtf( hContact, "Nick", ( char* )msnNick ); + if ( temporary ) + DBWriteContactSettingByte( hContact, "CList", "NotOnList", 1 ); + + return hContact; + } + + return NULL; +} + +HANDLE __stdcall MSN_HContactById( const char* szGuid ) +{ + HANDLE hContact = ( HANDLE )MSN_CallService( MS_DB_CONTACT_FINDFIRST, 0, 0 ); + while ( hContact != NULL ) + { + char* szProto = ( char* )MSN_CallService( MS_PROTO_GETCONTACTBASEPROTO,( WPARAM )hContact, 0 ); + if ( szProto != NULL && !strcmp( msnProtocolName, szProto )) { + char tId[ 100 ]; + if ( !MSN_GetStaticString( "ID", hContact, tId, sizeof tId )) + if ( !strcmpi( szGuid, tId )) + return hContact; + } + + hContact = ( HANDLE )MSN_CallService( MS_DB_CONTACT_FINDNEXT, ( WPARAM )hContact, 0 ); + } + + return NULL; +} -- cgit v1.2.3