summaryrefslogtreecommitdiff
path: root/protocols/Tlen/src/tlen_list.h
blob: 80b294e459c786060a929b0b943c1bdc5c4bcf32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*

Jabber Protocol Plugin for Miranda IM
Tlen Protocol Plugin for Miranda NG
Copyright (C) 2002-2004  Santithorn Bunchua
Copyright (C) 2004-2007  Piotr Piastucki

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 "tlen.h"

#ifndef _JABBER_LIST_H_
#define _JABBER_LIST_H_

typedef struct JABBER_LIST_ITEM_STRUCT {
	JABBER_LIST list;
	char *jid;
	char *id2;

	// LIST_ROSTER
	// jid = jid of the contact
	char *nick;
	int status;	// Main status, currently useful for transport where no resource information is kept.
				// On normal contact, this is the same status as shown on contact list.
	JABBER_SUBSCRIPTION subscription;
	char *statusMessage;	// Status message when the update is to JID with no resource specified (e.g. transport user)
	char *software;
	char *version;
	char *system;
	char *group;
	char *protocolVersion;
	int	 avatarFormat;
	char *avatarHash;
	BOOL newAvatarDownloading;
	BOOL versionRequested;
	BOOL infoRequested;
	int idMsgAckPending;
	char *messageEventIdStr;
	BOOL wantComposingEvent;
	BOOL isTyping;

	// LIST_ROOM
	// jid = room JID
	// char *name; // room name
	//char *type;	// room type

	// LIST_CHATROOM
	// jid = room JID
	// char *nick;	// my nick in this chat room (SPECIAL: in UTF8)
	// JABBER_RESOURCE_STATUS *resource;	// participant nicks in this room
	char *roomName;

	// LIST_FILE
	struct TLEN_FILE_TRANSFER_STRUCT *ft;
} JABBER_LIST_ITEM;


void JabberListInit(TlenProtocol *proto);
void JabberListUninit(TlenProtocol *proto);
void JabberListWipe(TlenProtocol *proto);
void JabberListWipeSpecial(TlenProtocol *proto);
int JabberListExist(TlenProtocol *proto, JABBER_LIST list, const char *jid);
JABBER_LIST_ITEM *JabberListAdd(TlenProtocol *proto, JABBER_LIST list, const char *jid);
void JabberListRemove(TlenProtocol *proto, JABBER_LIST list, const char *jid);
void JabberListRemoveList(TlenProtocol *proto, JABBER_LIST list);
void JabberListRemoveByIndex(TlenProtocol *proto, int index);
int JabberListFindNext(TlenProtocol *proto, JABBER_LIST list, int fromOffset);
JABBER_LIST_ITEM *JabberListGetItemPtr(TlenProtocol *proto, JABBER_LIST list, const char *jid);
JABBER_LIST_ITEM *JabberListGetItemPtrFromIndex(TlenProtocol *proto, int index);
JABBER_LIST_ITEM *JabberListFindItemPtrById2(TlenProtocol *proto, JABBER_LIST list, const char *id);

void JabberListAddResource(TlenProtocol *proto, JABBER_LIST list, const char *jid, int status, const char *statusMessage);
void JabberListRemoveResource(TlenProtocol *proto, JABBER_LIST list, const char *jid);

#endif