gaim/gaim
Clone
Summary
Browse
Changes
Graph
newsination
oldstatus
v1_3_0
2005-05-10, Gary Kramlich
6827d18aed67
newsination
/*
* Evolution integration plugin for Gaim
*
* Copyright (C) 2003 Christian Hammond.
*
* 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
"internal.h"
#include
"gtkblist.h"
#include
"gtkgaim.h"
#include
"gtkutils.h"
#include
"gevolution.h"
void
gevo_add_buddy
(
GaimAccount
*
account
,
const
char
*
group_name
,
const
char
*
screenname
,
const
char
*
alias
)
{
GaimConversation
*
conv
=
NULL
;
GaimBuddy
*
buddy
;
GaimGroup
*
group
;
conv
=
gaim_find_conversation_with_account
(
screenname
,
account
);
if
((
group
=
gaim_find_group
(
group_name
))
==
NULL
)
{
group
=
gaim_group_new
(
group_name
);
gaim_blist_add_group
(
group
,
NULL
);
}
buddy
=
gaim_buddy_new
(
account
,
screenname
,
alias
);
gaim_blist_add_buddy
(
buddy
,
NULL
,
group
,
NULL
);
serv_add_buddy
(
gaim_account_get_connection
(
account
),
buddy
);
if
(
conv
!=
NULL
)
{
gaim_buddy_icon_update
(
gaim_conv_im_get_icon
(
GAIM_CONV_IM
(
conv
)));
gaim_conversation_update
(
conv
,
GAIM_CONV_UPDATE_ADD
);
}
}
GList
*
gevo_get_groups
(
void
)
{
GList
*
list
=
NULL
;
GaimGroup
*
g
;
GaimBlistNode
*
gnode
;
if
(
gaim_get_blist
()
->
root
==
NULL
)
{
list
=
g_list_append
(
list
,
_
(
"Buddies"
));
}
else
{
for
(
gnode
=
gaim_get_blist
()
->
root
;
gnode
!=
NULL
;
gnode
=
gnode
->
next
)
{
if
(
GAIM_BLIST_NODE_IS_GROUP
(
gnode
))
{
g
=
(
GaimGroup
*
)
gnode
;
list
=
g_list_append
(
list
,
g
->
name
);
}
}
}
return
list
;
}
EContactField
gevo_prpl_get_field
(
GaimAccount
*
account
,
GaimBuddy
*
buddy
)
{
EContactField
protocol_field
=
0
;
const
char
*
protocol_id
;
g_return_val_if_fail
(
account
!=
NULL
,
0
);
protocol_id
=
gaim_account_get_protocol_id
(
account
);
if
(
!
strcmp
(
protocol_id
,
"prpl-oscar"
))
{
GaimConnection
*
gc
;
GaimPluginProtocolInfo
*
prpl_info
;
gc
=
gaim_account_get_connection
(
account
);
prpl_info
=
GAIM_PLUGIN_PROTOCOL_INFO
(
gc
->
prpl
);
if
(
!
strcmp
(
"aim"
,
prpl_info
->
list_icon
(
account
,
buddy
)))
{
protocol_field
=
E_CONTACT_IM_AIM
;
}
else
protocol_field
=
E_CONTACT_IM_ICQ
;
}
else
if
(
!
strcmp
(
protocol_id
,
"prpl-msn"
))
protocol_field
=
E_CONTACT_IM_MSN
;
else
if
(
!
strcmp
(
protocol_id
,
"prpl-yahoo"
))
protocol_field
=
E_CONTACT_IM_YAHOO
;
else
if
(
!
strcmp
(
protocol_id
,
"prpl-jabber"
))
protocol_field
=
E_CONTACT_IM_JABBER
;
return
protocol_field
;
}
gboolean
gevo_prpl_is_supported
(
GaimAccount
*
account
,
GaimBuddy
*
buddy
)
{
return
(
gevo_prpl_get_field
(
account
,
buddy
)
!=
0
);
}
gboolean
gevo_load_addressbook
(
const
gchar
*
uri
,
EBook
**
book
,
GError
**
error
)
{
gboolean
result
=
FALSE
;
g_return_val_if_fail
(
book
!=
NULL
,
FALSE
);
if
(
uri
==
NULL
)
*
book
=
e_book_new_system_addressbook
(
NULL
);
else
*
book
=
e_book_new_from_uri
(
uri
,
error
);
result
=
e_book_open
(
*
book
,
FALSE
,
NULL
);
if
(
!
result
&&
*
book
!=
NULL
)
{
g_object_unref
(
*
book
);
*
book
=
NULL
;
}
return
result
;
}