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 --- icqj_mod/m_icq.h | 294 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 294 insertions(+) create mode 100644 icqj_mod/m_icq.h (limited to 'icqj_mod/m_icq.h') diff --git a/icqj_mod/m_icq.h b/icqj_mod/m_icq.h new file mode 100644 index 0000000..6a062b2 --- /dev/null +++ b/icqj_mod/m_icq.h @@ -0,0 +1,294 @@ +// ---------------------------------------------------------------------------80 +// ICQ plugin for Miranda Instant Messenger +// ________________________________________ +// +// Copyright © 2000,2001 Richard Hughes, Roland Rabien, Tristan Van de Vreede +// Copyright © 2001,2002 Jon Keating, Richard Hughes +// Copyright © 2002,2003,2004 Martin Öberg, Sam Kothari, Robert Rainwater +// Copyright © 2004,2005,2006 Joe Kucera +// +// 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. +// +// ----------------------------------------------------------------------------- +// +// File name : $Source: /cvsroot/miranda/miranda/protocols/IcqOscarJ/m_icq.h,v $ +// Revision : $Revision: 3069 $ +// Last change on : $Date: 2006-06-07 20:05:39 +0200 (Wed, 07 Jun 2006) $ +// Last change by : $Author: jokusoftware $ +// +// DESCRIPTION: +// +// Describe me here please... +// +// ----------------------------------------------------------------------------- + + + +// Note: In v0.3 the part before "/Servicename" is dynamic. It will be the name of the protocol. +// Example: If the plugin was loaded from ICQ.dll, the service name is "ICQ/Servicename", and if +// the dll was Icq2.dll, the service name will be "Icq2/Servicename". This behaviour is temporary +// until proper multiaccounts are implemented. + + +//start a search of all ICQ users by e-mail +//wParam=0 +//lParam=(LPARAM)(const char*)email +//returns a handle to the search on success, NULL on failure +//Results are returned using the same scheme documented in PSS_BASICSEARCH +//**DEPRECATED** in favour of PS_SEARCHBYEMAIL +typedef struct { //extended search result structure, used for all searches + PROTOSEARCHRESULT hdr; + DWORD uin; + BYTE auth; + char* uid; +} ICQSEARCHRESULT; +#define MS_ICQ_SEARCHBYEMAIL "/SearchByEmail" + +//start a search of all ICQ users by details +//wParam=0 +//lParam=(LPARAM)(ICQDETAILSSEARCH*)&ids +//returns a handle to the search on success, NULL on failure +//Results are returned using the same scheme documented in PSS_BASICSEARCH +//**DEPRECATED** in favour of PS_SEARCHBYNAME +typedef struct { + char *nick; + char *firstName; + char *lastName; +} ICQDETAILSSEARCH; +#define MS_ICQ_SEARCHBYDETAILS "/SearchByDetails" + +// Request authorization +// wParam=(WPARAM)hContact +#define MS_REQ_AUTH "/ReqAuth" + +// Grant authorization +// wParam=(WPARAM)hContact; +#define MS_GRANT_AUTH "/GrantAuth" + +// Revoke authorization +// wParam=(WPARAM)hContact +#define MS_REVOKE_AUTH "/RevokeAuth" + +#define MS_SETINVIS "/SetInvis" +#define MS_SETVIS "/SetVis" + +// Display XStatus detail (internal use only) +// wParam=(WPARAM)hContact; +#define MS_XSTATUS_SHOWDETAILS "/ShowXStatusDetails" + +//Send an SMS via the ICQ network +//wParam=(WPARAM)(const char*)szPhoneNumber +//lParam=(LPARAM)(const char*)szMessage +//Returns a HANDLE to the send on success, or NULL on failure +//szPhoneNumber should be the full number with international code and preceeded +//by a + + +//When the server acks the send, an ack will be broadcast: +// type=ICQACKTYPE_SMS, result=ACKRESULT_SENTREQUEST, lParam=(LPARAM)(char*)szInfo +//At this point the message is queued to be delivered. szInfo contains the raw +//XML data of the ack. Here's what I got when I tried: +//"airbornww.comYesBT Cellnet, United Kingdom[my uin]-1-1955988055-[destination phone#, without +]0\r\n" + +//Now the hProcess has been deleted. The only way to track which receipt +//corresponds with which response is to parse the field. + +//At a (possibly much) later time the SMS will have been delivered. An ack will +//be broadcast: +// type=ICQACKTYPE_SMS, result=ACKRESULT_SUCCESS, hProcess=NULL, lParam=(LPARAM)(char*)szInfo +//Note that the result will always be success even if the send failed, just to +//save needing to have an attempt at an XML parser in the ICQ module. +//Here's the szInfo for a success: +//"[my uin]-1--1461632229-[dest phone#, without +][dest phone#, without +]Yes[first 20 bytes of message]Tue, 30 Oct 2001 22:35:16 GMTTue, 30 Oct 2001 22:34:00 GMT" +//And here's a failure: +//"[my uin]-1-1955988055-[destination phone#, without leading +][destination phone#, without leading +]NoTue, 23 Oct 2001 23:17:02 GMT999999150Multiple message submittion failed" + +//SMSes received from phones come through this same ack, again to avoid having +//an XML parser in the protocol module. Here's one I got: +//"MTN[UIN of recipient, ie this account][sending phone number, without +][contains one space, because I sent from ICQ][body of the message]" +#define ICQACKTYPE_SMS 1001 +#define ICQEVENTTYPE_SMS 2001 //database event type +#define MS_ICQ_SENDSMS "/SendSMS" + +//e-mail express +//db event added to NULL contact +//blob format is: +//ASCIIZ text, usually of the form "Subject: %s\r\n%s" +//ASCIIZ from name +//ASCIIZ from e-mail +#define ICQEVENTTYPE_EMAILEXPRESS 2002 //database event type + +//www pager +//db event added to NULL contact +//blob format is: +//ASCIIZ text, usually "Sender IP: xxx.xxx.xxx.xxx\r\n%s" +//ASCIIZ from name +//ASCIIZ from e-mail +#define ICQEVENTTYPE_WEBPAGER 2003 //database event type + +//for server-side lists, used internally only +//hProcess=dwSequence +//lParam=server's error code, 0 for success +#define ICQACKTYPE_SERVERCLIST 1003 + +//for rate warning distribution (mainly upload dlg) +//hProcess=Rate class ID +//lParam=server's status code +#define ICQACKTYPE_RATEWARNING 1004 + +//received Xtraz Notify response +//hProcess=dwSequence +//lParam=contents of RES node +#define ICQACKTYPE_XTRAZNOTIFY_RESPONSE 1005 + +//received Custom Status details response +//hProcess=dwSequence +//lParam=0 +#define ICQACKTYPE_XSTATUS_RESPONSE 1006 + + +//Update user details on server +//Permited operation types: +#define CIXT_BASIC 0x0001 +#define CIXT_MORE 0x0002 +#define CIXT_WORK 0x0004 +#define CIXT_CONTACT 0x0008 +#define CIXT_LOCATION 0x0010 +#define CIXT_BACKGROUND 0x0020 +#define CIXT_FULL 0x003F +//wParam=operationType +#define PS_CHANGEINFOEX "/ChangeInfoEx" + +//Change nickname in White pages +//lParam=(LPARAM)(const char*)szNewNickName +#define PS_SET_NICKNAME "/SetNickname" + + +//miranda/icqoscar/statusmsgreq event +//called when our status message is requested +//wParam=(BYTE)msgType +//lParam=(DWORD)uin +//msgType is one of the ICQ_MSGTYPE_GET###MSG constants in icq_constants.h +//uin is the UIN of the contact requesting our status message +#define ME_ICQ_STATUSMSGREQ "/StatusMsgReq" + + +//set owner avatar +//wParam=0 +//lParam=(const char *)Avatar file name +//return=0 for success +#define PS_ICQ_SETMYAVATAR "/SetMyAvatar" + +//get current owner avatar +//wParam=(char *)Buffer to file name +//lParam=(int)Buffer size +//return=0 for success +#define PS_ICQ_GETMYAVATAR "/GetMyAvatar" + +//get size limit for avatar image +//wParam=(int *)max width of avatar - will be set +//lParam=(int *)max height of avatar - will be set +//return=0 for success +#define PS_ICQ_GETMYAVATARMAXSIZE "/GetMyAvatarMaxSize" + +//check if image format supported for avatars +//wParam = 0 +//lParam = PA_FORMAT_* // avatar format +//return = 1 (supported) or 0 (not supported) +#define PS_ICQ_ISAVATARFORMATSUPPORTED "/IsAvatarFormatSupported" + + +/* Custom Status helper API * + - to set custom status message & title use PS_ICQ_GETCUSTOMSTATUS to obtain + DB settings and write values to them (UTF-8 strings best). (obsolete) + - use PS_ICQ_GETCUSTOMSTATUSEX and PS_ICQ_SETCUSTOMSTATUSEX for controling Custom Status + - custom messages for each user supported - ME_ICQ_STATUSMSGREQ with type MTYPE_SCRIPT_NOTIFY + */ +#define CSSF_MASK_STATUS 0x0001 // status member valid for set/get +#define CSSF_MASK_NAME 0x0002 // pszName member valid for set/get +#define CSSF_MASK_MESSAGE 0x0004 // pszMessage member valid for set/get +#define CSSF_DISABLE_UI 0x0040 // disable default custom status UI, wParam = bEnable +#define CSSF_DEFAULT_NAME 0x0080 // only with CSSF_MASK_NAME and get API to get default custom status name (wParam = status) +#define CSSF_STATUSES_COUNT 0x0100 // returns number of custom statuses in wParam, only get API +#define CSSF_STR_SIZES 0x0200 // returns sizes of custom status name & message (wParam & lParam members) in chars +#define CSSF_UNICODE 0x1000 // strings are in UCS-2 + +#if defined(_UNICODE) + #define CSSF_TCHAR CSSF_UNICODE +#else + #define CSSF_TCHAR 0 +#endif + + +typedef struct { + int cbSize; // size of the structure + int flags; // combination of CSSF_* + int *status; // custom status id + union { + char *pszName; // buffer for custom status name + TCHAR *ptszName; + WCHAR *pwszName; + }; + union { + char *pszMessage; // buffer for custom status message + TCHAR *ptszMessage; + WCHAR *pwszMessage; + }; + WPARAM *wParam; // extra params, see flags + LPARAM *lParam; +} ICQ_CUSTOM_STATUS; + + +// Sets owner current custom status (obsolete) +//wParam = (int)N // custom status id (1-32) +//lParam = 0 +//return = N (id of status set) or 0 (failed - probably bad params) +#define PS_ICQ_SETCUSTOMSTATUS "/SetXStatus" + +// Sets owner current custom status +//wParam = 0 // reserved +//lParam = (ICQ_CUSTOM_STATUS*)pData // contains what to set and new values +//return = 0 (for success) +#define PS_ICQ_SETCUSTOMSTATUSEX "/SetXStatusEx" + +// Retrieves custom status details for specified hContact +//wParam = (HANDLE)hContact +//lParam = (ICQ_CUSTOM_STATUS*)pData // receives details (members must be prepared) +//return = 0 (for success) +#define PS_ICQ_GETCUSTOMSTATUSEX "/GetXStatusEx" + +// Retrieves specified custom status icon +//wParam = (int)N // custom status id (1-32), 0 = my current custom status +//lParam = 0 +//return = HICON // custom status icon (use DestroyIcon to release resources) +#define PS_ICQ_GETCUSTOMSTATUSICON "/GetXStatusIcon" + +// Get Custom status DB field names & current owner custom status (obsolete) +//wParam = (char**)szDBTitle // will receive title DB setting name (do not free) +//lParam = (char**)szDBMsg // will receive message DB setting name +//return = N // current custom status id if successful, 0 otherwise +#define PS_ICQ_GETCUSTOMSTATUS "/GetXStatus" + +// Request Custom status details (messages) for specified contact +//wParam = hContact // request custom status details for this contact +//lParam = 0 +//return = (int)dwSequence // if successful it is sequence for ICQACKTYPE_XSTATUS_RESPONSE + // 0 failed to request (e.g. auto-request enabled) + // -1 delayed (rate control) - sequence unknown +#define PS_ICQ_REQUESTCUSTOMSTATUS "/RequestXStatusDetails" + +// Called when contact changes custom status and extra icon is set to clist_mw +//wParam = hContact // contact changing status +//lParam = hIcon // HANDLE to clist extra icon set as custom status +#define ME_ICQ_CUSTOMSTATUS_EXTRAICON_CHANGED "/XStatusExtraIconChanged" -- cgit v1.2.3