1 /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
4 * $Id: contacts.c 2096 2001-07-31 01:00:39Z warmenhoven $
6 * Copyright (C) 1998-2001, Denis V. Dmitrienko <denis@null.net> and
7 * Bill Soudan <soudan@kde.org>
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
31 icq_ContactItem
*icq_ContactNew(icq_Link
*icqlink
)
33 icq_ContactItem
*pcontact
=
34 (icq_ContactItem
*)malloc(sizeof(icq_ContactItem
));
37 pcontact
->icqlink
=icqlink
;
42 void icq_ContactDelete(void *p
)
47 void icq_ContactAdd(icq_Link
*icqlink
, DWORD cuin
)
49 icq_ContactItem
*p
= icq_ContactNew(icqlink
);
52 p
->invis_list
= FALSE
;
54 icq_ListEnqueue(icqlink
->d
->icq_ContactList
, p
);
57 void icq_ContactRemove(icq_Link
*icqlink
, DWORD cuin
)
59 icq_ContactItem
*pcontact
=icq_ContactFind(icqlink
, cuin
);
63 icq_ListRemove(icqlink
->d
->icq_ContactList
, pcontact
);
64 icq_ContactDelete(pcontact
);
68 void icq_ContactClear(icq_Link
*icqlink
)
70 icq_ListDelete(icqlink
->d
->icq_ContactList
, icq_ContactDelete
);
71 icqlink
->d
->icq_ContactList
=icq_ListNew();
74 int _icq_ContactFind(void *p
, va_list data
)
76 DWORD uin
=va_arg(data
, DWORD
);
78 return (((icq_ContactItem
*)p
)->uin
== uin
);
81 icq_ContactItem
*icq_ContactFind(icq_Link
*icqlink
, DWORD cuin
)
83 return icq_ListTraverse(icqlink
->d
->icq_ContactList
, _icq_ContactFind
, cuin
);
86 void icq_ContactSetVis(icq_Link
*icqlink
, DWORD cuin
, BOOL on
)
88 icq_ContactItem
*p
= icq_ContactFind(icqlink
, cuin
);
93 void icq_ContactSetInvis(icq_Link
*icqlink
, DWORD cuin
, BOOL on
)
95 icq_ContactItem
*p
= icq_ContactFind(icqlink
, cuin
);
100 icq_ContactItem
*icq_ContactGetFirst(icq_Link
*icqlink
)
102 return icq_ListFirst(icqlink
->d
->icq_ContactList
);
105 icq_ContactItem
*icq_ContactGetNext(icq_ContactItem
*pcontact
)
107 icq_ListNode
*p
=icq_ListFind(pcontact
->icqlink
->d
->icq_ContactList
, pcontact
);
110 return p
->next
->item
;