From 48540940b6c28bb4378abfeb500ec45a625b37b6 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Tue, 15 May 2012 10:38:20 +0000 Subject: initial commit git-svn-id: http://svn.miranda-ng.org/main/trunk@2 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/IcqOscarJ/icq_servlist.h | 179 +++++++++++++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 protocols/IcqOscarJ/icq_servlist.h (limited to 'protocols/IcqOscarJ/icq_servlist.h') diff --git a/protocols/IcqOscarJ/icq_servlist.h b/protocols/IcqOscarJ/icq_servlist.h new file mode 100644 index 0000000000..c16ee552a5 --- /dev/null +++ b/protocols/IcqOscarJ/icq_servlist.h @@ -0,0 +1,179 @@ +// ---------------------------------------------------------------------------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-2004 Martin Öberg, Sam Kothari, Robert Rainwater +// Copyright © 2004-2010 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +// +// ----------------------------------------------------------------------------- +// +// File name : $URL: http://miranda.googlecode.com/svn/trunk/miranda/protocols/IcqOscarJ/icq_servlist.h $ +// Revision : $Revision: 11805 $ +// Last change on : $Date: 2010-05-20 23:54:42 +0300 (Чт, 20 май 2010) $ +// Last change by : $Author: jokusoftware $ +// +// DESCRIPTION: +// +// Describe me here please... +// +// ----------------------------------------------------------------------------- + +#ifndef __ICQ_SERVLIST_H +#define __ICQ_SERVLIST_H + +// actions: +#define SSA_CHECK_ROSTER 0 // request serv-list +#define SSA_VISIBILITY 1 // update visibility +#define SSA_CONTACT_UPDATE 2 // update contact's details +#define SSA_GROUP_RENAME 5 // rename group +#define SSA_PRIVACY_ADD 0xA // add privacy item +#define SSA_PRIVACY_REMOVE 0xB // remove privacy item +#define SSA_CONTACT_ADD 0x10 // add contact w/o auth +#define SSA_CONTACT_SET_GROUP 0x12 // move to group +#define SSA_CONTACT_REMOVE 0x13 // delete contact +#define SSA_CONTACT_FIX_AUTH 0x40 // reuploading contact for auth re-request +#define SSA_GROUP_ADD 0x15 // create group +#define SSA_GROUP_REMOVE 0x16 // delete group +#define SSA_GROUP_UPDATE 0x17 // update group +#define SSA_SERVLIST_ACK 0x20 // send proto ack only (UploadUI) +#define SSA_SETAVATAR 0x30 +#define SSA_REMOVEAVATAR 0x31 +#define SSA_IMPORT 7 +#define SSA_ACTION_GROUP 0x80 // grouped action + +struct CIcqProto; +// callback prototypes for pending operation mechanism: +typedef int (__cdecl CIcqProto::*PENDING_GROUP_CALLBACK)(const char* pszGroup, WORD wGroupId, LPARAM lParam, int nResult); +typedef int (__cdecl CIcqProto::*PENDING_CONTACT_CALLBACK)(HANDLE hContact, WORD wContactId, WORD wGroupId, LPARAM lParam, int nResult); + +// cookie struct for SSI actions +struct cookie_servlist_action +{ + HANDLE hContact; + char *szGroup; + WORD wContactId; + WORD wGroupId; + char *szGroupName; + WORD wNewContactId; + WORD wNewGroupId; + int dwAction; + LPARAM lParam; + int dwGroupCount; + cookie_servlist_action **pGroupItems; +}; + +// server id type groups +#define SSIT_ITEM 0x00000000 +#define SSIT_GROUP 0x00010000 + +// server id flags +#define SSIF_UNHANDLED 0x01000000 + + +// pending operations +#define PENDING_RESULT_SUCCESS 0x00 +#define PENDING_RESULT_INLINE 0x01 +#define PENDING_RESULT_FAILED 0x0F +#define PENDING_RESULT_PURGE 0x10 + +// serv-list update board +#define SSOG_SINGLE 0x00010000 +#define SSOG_DOUBLE 0x00020000 + +#define SSOF_CONTACT 0x00800000 +#define SSOF_BEGIN_OPERATION 0x00100000 +#define SSOF_END_OPERATION 0x00200000 +#define SSOF_IMPORT_OPERATION 0x00400000 + +#define SSOP_ITEM_ACTION 0x01000000 | SSOG_SINGLE +// SSA_PRIVACY_ADD +// SSA_CONTACT_ADD +// SSA_CONTACT_UPDATE +// SSA_VISIBILITY +// SSA_PRIVACY_REMOVE +// SSA_CONTACT_REMOVE +// SSA_SETAVATAR +// SSA_REMOVEAVATAR +#define SSOP_GROUP_ACTION 0x02000000 | SSOG_SINGLE +// SSA_GROUP_ADD +// SSA_GROUP_RENAME +// SSA_GROUP_UPDATE +// SSA_GROUP_REMOVE +#define SSO_CONTACT_SETGROUP 0x04000000 | SSOG_DOUBLE +// SSA_CONTACT_SET_GROUP +#define SSO_CONTACT_FIXAUTH 0x06000000 | SSOG_DOUBLE +// SSA_CONTACT_FIX_AUTH + +#define SSO_BEGIN_OPERATION 0x80000000 +#define SSO_END_OPERATION 0x40000000 + +#define SSOF_SEND_DIRECTLY 0x10000000 + +#define SSOF_ACTIONMASK 0x0000FFFF +#define SSOF_GROUPINGMASK 0x0F0FFFFF + + +#define MAX_SERVLIST_PACKET_ITEMS 200 + +// server-list request handler item +struct servlistgroupitem +{ // generic parent + DWORD dwOperation; + cookie_servlist_action* cookie; + icq_packet packet; + // perhaps add some dummy bytes +}; + +struct servlistgroupitemdouble: public servlistgroupitem +{ + icq_packet packet2; + WORD wAction2; +}; + +struct ssiqueueditems +{ + time_t tAdded; + int dwTimeout; + int nItems; + servlistgroupitem* pItems[MAX_SERVLIST_PACKET_ITEMS]; +}; + + +// cookie structs for pending records +struct servlistpendingoperation +{ + DWORD flags; + PENDING_GROUP_CALLBACK callback; + LPARAM param; +}; + +struct servlistpendingitem +{ + int nType; + HANDLE hContact; + char* szGroup; + WORD wContactID; + WORD wGroupID; + + servlistpendingoperation* operations; + int operationsCount; +}; + + +#endif /* __ICQ_SERVLIST_H */ -- cgit v1.2.3