Mercurial > pidgin
comparison libpurple/conversation.c @ 32819:2c6510167895 default tip
propagate from branch 'im.pidgin.pidgin.2.x.y' (head 3315c5dfbd0ad16511bdcf865e5b07c02d07df24)
to branch 'im.pidgin.pidgin' (head cbd1eda6bcbf0565ae7766396bb8f6f419cb6a9a)
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sat, 02 Jun 2012 02:30:49 +0000 |
parents | 3a4a35f6f873 |
children |
comparison
equal
deleted
inserted
replaced
32818:01ff09d4a463 | 32819:2c6510167895 |
---|---|
33 #include "signals.h" | 33 #include "signals.h" |
34 #include "util.h" | 34 #include "util.h" |
35 | 35 |
36 #define SEND_TYPED_TIMEOUT_SECONDS 5 | 36 #define SEND_TYPED_TIMEOUT_SECONDS 5 |
37 | 37 |
38 /** | |
39 * Data specific to Chats. | |
40 */ | |
41 struct _PurpleConvChat | |
42 { | |
43 PurpleConversation *conv; /**< The parent conversation. */ | |
44 | |
45 GList *in_room; /**< The users in the room. | |
46 * @deprecated Will be removed in 3.0.0 | |
47 */ | |
48 GList *ignored; /**< Ignored users. */ | |
49 char *who; /**< The person who set the topic. */ | |
50 char *topic; /**< The topic. */ | |
51 int id; /**< The chat ID. */ | |
52 char *nick; /**< Your nick in this chat. */ | |
53 | |
54 gboolean left; /**< We left the chat and kept the window open */ | |
55 GHashTable *users; /**< Hash table of the users in the room. */ | |
56 }; | |
57 | |
58 /** | |
59 * Data specific to Instant Messages. | |
60 */ | |
61 struct _PurpleConvIm | |
62 { | |
63 PurpleConversation *conv; /**< The parent conversation. */ | |
64 | |
65 PurpleTypingState typing_state; /**< The current typing state. */ | |
66 guint typing_timeout; /**< The typing timer handle. */ | |
67 time_t type_again; /**< The type again time. */ | |
68 guint send_typed_timeout; /**< The type again timer handle. */ | |
69 | |
70 PurpleBuddyIcon *icon; /**< The buddy icon. */ | |
71 }; | |
72 | |
73 /** | |
74 * Data for "Chat Buddies" | |
75 */ | |
76 struct _PurpleConvChatBuddy | |
77 { | |
78 /** The chat participant's name in the chat. */ | |
79 char *name; | |
80 | |
81 /** The chat participant's alias, if known; @a NULL otherwise. */ | |
82 char *alias; | |
83 | |
84 /** | |
85 * A string by which this buddy will be sorted, or @c NULL if the | |
86 * buddy should be sorted by its @c name. (This is currently always | |
87 * @c NULL. | |
88 */ | |
89 char *alias_key; | |
90 | |
91 /** | |
92 * @a TRUE if this chat participant is on the buddy list; | |
93 * @a FALSE otherwise. | |
94 */ | |
95 gboolean buddy; | |
96 | |
97 /** | |
98 * A bitwise OR of flags for this participant, such as whether they | |
99 * are a channel operator. | |
100 */ | |
101 PurpleConvChatBuddyFlags flags; | |
102 | |
103 /** | |
104 * A hash table of attributes about the user, such as real name, | |
105 * user\@host, etc. | |
106 */ | |
107 GHashTable *attributes; | |
108 | |
109 /** The UI can put whatever it wants here. */ | |
110 gpointer ui_data; | |
111 }; | |
112 | |
113 /** | |
114 * A core representation of a conversation between two or more people. | |
115 * | |
116 * The conversation can be an IM or a chat. | |
117 */ | |
118 struct _PurpleConversation | |
119 { | |
120 PurpleConversationType type; /**< The type of conversation. */ | |
121 | |
122 PurpleAccount *account; /**< The user using this conversation. */ | |
123 | |
124 | |
125 char *name; /**< The name of the conversation. */ | |
126 char *title; /**< The window title. */ | |
127 | |
128 gboolean logging; /**< The status of logging. */ | |
129 | |
130 GList *logs; /**< This conversation's logs */ | |
131 | |
132 union | |
133 { | |
134 PurpleConvIm *im; /**< IM-specific data. */ | |
135 PurpleConvChat *chat; /**< Chat-specific data. */ | |
136 void *misc; /**< Misc. data. */ | |
137 | |
138 } u; | |
139 | |
140 PurpleConversationUiOps *ui_ops; /**< UI-specific operations. */ | |
141 void *ui_data; /**< UI-specific data. */ | |
142 | |
143 GHashTable *data; /**< Plugin-specific data. */ | |
144 | |
145 PurpleConnectionFlags features; /**< The supported features */ | |
146 GList *message_history; /**< Message history, as a GList of PurpleConvMessage's */ | |
147 }; | |
148 | |
149 /** | |
150 * Description of a conversation message | |
151 */ | |
152 struct _PurpleConvMessage | |
153 { | |
154 char *who; | |
155 char *what; | |
156 PurpleMessageFlags flags; | |
157 time_t when; | |
158 PurpleConversation *conv; | |
159 char *alias; | |
160 }; | |
161 | |
162 | |
38 static GList *conversations = NULL; | 163 static GList *conversations = NULL; |
39 static GList *ims = NULL; | 164 static GList *ims = NULL; |
40 static GList *chats = NULL; | 165 static GList *chats = NULL; |
41 static PurpleConversationUiOps *default_ops = NULL; | 166 static PurpleConversationUiOps *default_ops = NULL; |
42 | 167 |
114 PurpleConnection *gc; | 239 PurpleConnection *gc; |
115 const char *name; | 240 const char *name; |
116 | 241 |
117 g_return_val_if_fail(conv != NULL, FALSE); | 242 g_return_val_if_fail(conv != NULL, FALSE); |
118 | 243 |
119 gc = purple_conversation_get_gc(conv); | 244 gc = purple_conversation_get_connection(conv); |
120 name = purple_conversation_get_name(conv); | 245 name = purple_conversation_get_name(conv); |
121 | 246 |
122 if (gc != NULL && name != NULL) { | 247 if (gc != NULL && name != NULL) { |
123 /* We set this to 1 so that PURPLE_TYPING will be sent | 248 /* We set this to 1 so that PURPLE_TYPING will be sent |
124 * if the Purple user types anything else. | 249 * if the Purple user types anything else. |
144 | 269 |
145 if (*message == '\0') | 270 if (*message == '\0') |
146 return; | 271 return; |
147 | 272 |
148 account = purple_conversation_get_account(conv); | 273 account = purple_conversation_get_account(conv); |
149 gc = purple_conversation_get_gc(conv); | 274 gc = purple_conversation_get_connection(conv); |
150 | 275 |
151 g_return_if_fail(account != NULL); | 276 g_return_if_fail(account != NULL); |
152 g_return_if_fail(gc != NULL); | 277 g_return_if_fail(gc != NULL); |
153 | 278 |
154 type = purple_conversation_get_type(conv); | 279 type = purple_conversation_get_type(conv); |
260 if (flags & PURPLE_MESSAGE_SEND) { | 385 if (flags & PURPLE_MESSAGE_SEND) { |
261 const char *me = NULL; | 386 const char *me = NULL; |
262 if (gc) | 387 if (gc) |
263 me = purple_connection_get_display_name(gc); | 388 me = purple_connection_get_display_name(gc); |
264 if (!me) | 389 if (!me) |
265 me = conv->account->username; | 390 me = purple_account_get_username(conv->account); |
266 who = me; | 391 who = me; |
267 } | 392 } |
268 | 393 |
269 msg = g_new0(PurpleConvMessage, 1); | 394 msg = g_new0(PurpleConvMessage, 1); |
270 PURPLE_DBUS_REGISTER_POINTER(msg, PurpleConvMessage); | 395 PURPLE_DBUS_REGISTER_POINTER(msg, PurpleConvMessage); |
379 conv->name = g_strdup(name); | 504 conv->name = g_strdup(name); |
380 conv->title = g_strdup(name); | 505 conv->title = g_strdup(name); |
381 conv->data = g_hash_table_new_full(g_str_hash, g_str_equal, | 506 conv->data = g_hash_table_new_full(g_str_hash, g_str_equal, |
382 g_free, NULL); | 507 g_free, NULL); |
383 /* copy features from the connection. */ | 508 /* copy features from the connection. */ |
384 conv->features = gc->flags; | 509 conv->features = purple_connection_get_flags(gc); |
385 | 510 |
386 if (type == PURPLE_CONV_TYPE_IM) | 511 if (type == PURPLE_CONV_TYPE_IM) |
387 { | 512 { |
388 PurpleBuddyIcon *icon; | 513 PurpleBuddyIcon *icon; |
389 conv->u.im = g_new0(PurpleConvIm, 1); | 514 conv->u.im = g_new0(PurpleConvIm, 1); |
414 _purple_conversation_user_equal, g_free, NULL); | 539 _purple_conversation_user_equal, g_free, NULL); |
415 PURPLE_DBUS_REGISTER_POINTER(conv->u.chat, PurpleConvChat); | 540 PURPLE_DBUS_REGISTER_POINTER(conv->u.chat, PurpleConvChat); |
416 | 541 |
417 chats = g_list_prepend(chats, conv); | 542 chats = g_list_prepend(chats, conv); |
418 | 543 |
419 if ((disp = purple_connection_get_display_name(account->gc))) | 544 if ((disp = purple_connection_get_display_name(purple_account_get_connection(account)))) |
420 purple_conv_chat_set_nick(conv->u.chat, disp); | 545 purple_conv_chat_set_nick(conv->u.chat, disp); |
421 else | 546 else |
422 purple_conv_chat_set_nick(conv->u.chat, | 547 purple_conv_chat_set_nick(conv->u.chat, |
423 purple_account_get_username(account)); | 548 purple_account_get_username(account)); |
424 | 549 |
467 g_return_if_fail(conv != NULL); | 592 g_return_if_fail(conv != NULL); |
468 | 593 |
469 purple_request_close_with_handle(conv); | 594 purple_request_close_with_handle(conv); |
470 | 595 |
471 ops = purple_conversation_get_ui_ops(conv); | 596 ops = purple_conversation_get_ui_ops(conv); |
472 gc = purple_conversation_get_gc(conv); | 597 gc = purple_conversation_get_connection(conv); |
473 name = purple_conversation_get_name(conv); | 598 name = purple_conversation_get_name(conv); |
474 | 599 |
475 if (gc != NULL) | 600 if (gc != NULL) |
476 { | 601 { |
477 /* Still connected */ | 602 /* Still connected */ |
692 | 817 |
693 return conv->account; | 818 return conv->account; |
694 } | 819 } |
695 | 820 |
696 PurpleConnection * | 821 PurpleConnection * |
697 purple_conversation_get_gc(const PurpleConversation *conv) | 822 purple_conversation_get_connection(const PurpleConversation *conv) |
698 { | 823 { |
699 PurpleAccount *account; | 824 PurpleAccount *account; |
700 | 825 |
701 g_return_val_if_fail(conv != NULL, NULL); | 826 g_return_val_if_fail(conv != NULL, NULL); |
702 | 827 |
703 account = purple_conversation_get_account(conv); | 828 account = purple_conversation_get_account(conv); |
704 | 829 |
705 if (account == NULL) | 830 if (account == NULL) |
706 return NULL; | 831 return NULL; |
707 | 832 |
708 return account->gc; | 833 return purple_account_get_connection(account); |
709 } | 834 } |
710 | 835 |
711 void | 836 void |
712 purple_conversation_set_title(PurpleConversation *conv, const char *title) | 837 purple_conversation_set_title(PurpleConversation *conv, const char *title) |
713 { | 838 { |
988 if (flags & PURPLE_MESSAGE_SEND) { | 1113 if (flags & PURPLE_MESSAGE_SEND) { |
989 b = purple_find_buddy(account, | 1114 b = purple_find_buddy(account, |
990 purple_account_get_username(account)); | 1115 purple_account_get_username(account)); |
991 | 1116 |
992 if (purple_account_get_alias(account) != NULL) | 1117 if (purple_account_get_alias(account) != NULL) |
993 alias = account->alias; | 1118 alias = purple_account_get_alias(account); |
994 else if (b != NULL && !purple_strequal(purple_buddy_get_name(b), purple_buddy_get_contact_alias(b))) | 1119 else if (b != NULL && !purple_strequal(purple_buddy_get_name(b), purple_buddy_get_contact_alias(b))) |
995 alias = purple_buddy_get_contact_alias(b); | 1120 alias = purple_buddy_get_contact_alias(b); |
996 else if (purple_connection_get_display_name(gc) != NULL) | 1121 else if (purple_connection_get_display_name(gc) != NULL) |
997 alias = purple_connection_get_display_name(gc); | 1122 alias = purple_connection_get_display_name(gc); |
998 else | 1123 else |
1377 | 1502 |
1378 return chat->conv; | 1503 return chat->conv; |
1379 } | 1504 } |
1380 | 1505 |
1381 GList * | 1506 GList * |
1382 purple_conv_chat_set_users(PurpleConvChat *chat, GList *users) | |
1383 { | |
1384 g_return_val_if_fail(chat != NULL, NULL); | |
1385 | |
1386 chat->in_room = users; | |
1387 | |
1388 return users; | |
1389 } | |
1390 | |
1391 GList * | |
1392 purple_conv_chat_get_users(const PurpleConvChat *chat) | 1507 purple_conv_chat_get_users(const PurpleConvChat *chat) |
1393 { | 1508 { |
1394 g_return_val_if_fail(chat != NULL, NULL); | 1509 g_return_val_if_fail(chat != NULL, NULL); |
1395 | 1510 |
1396 return chat->in_room; | 1511 return chat->in_room; |
1542 g_return_if_fail(chat != NULL); | 1657 g_return_if_fail(chat != NULL); |
1543 g_return_if_fail(who != NULL); | 1658 g_return_if_fail(who != NULL); |
1544 g_return_if_fail(message != NULL); | 1659 g_return_if_fail(message != NULL); |
1545 | 1660 |
1546 conv = purple_conv_chat_get_conversation(chat); | 1661 conv = purple_conv_chat_get_conversation(chat); |
1547 gc = purple_conversation_get_gc(conv); | 1662 gc = purple_conversation_get_connection(conv); |
1548 account = purple_connection_get_account(gc); | 1663 account = purple_connection_get_account(gc); |
1549 | 1664 |
1550 /* Don't display this if the person who wrote it is ignored. */ | 1665 /* Don't display this if the person who wrote it is ignored. */ |
1551 if (purple_conv_chat_is_user_ignored(chat, who)) | 1666 if (purple_conv_chat_is_user_ignored(chat, who)) |
1552 return; | 1667 return; |
1658 g_return_if_fail(users != NULL); | 1773 g_return_if_fail(users != NULL); |
1659 | 1774 |
1660 conv = purple_conv_chat_get_conversation(chat); | 1775 conv = purple_conv_chat_get_conversation(chat); |
1661 ops = purple_conversation_get_ui_ops(conv); | 1776 ops = purple_conversation_get_ui_ops(conv); |
1662 | 1777 |
1663 gc = purple_conversation_get_gc(conv); | 1778 gc = purple_conversation_get_connection(conv); |
1664 g_return_if_fail(gc != NULL); | 1779 g_return_if_fail(gc != NULL); |
1665 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc)); | 1780 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc)); |
1666 g_return_if_fail(prpl_info != NULL); | 1781 g_return_if_fail(prpl_info != NULL); |
1667 | 1782 |
1668 ul = users; | 1783 ul = users; |
1685 if (display_name != NULL) | 1800 if (display_name != NULL) |
1686 alias = display_name; | 1801 alias = display_name; |
1687 } | 1802 } |
1688 } else { | 1803 } else { |
1689 PurpleBuddy *buddy; | 1804 PurpleBuddy *buddy; |
1690 if ((buddy = purple_find_buddy(gc->account, user)) != NULL) | 1805 if ((buddy = purple_find_buddy(purple_connection_get_account(gc), user)) != NULL) |
1691 alias = purple_buddy_get_contact_alias(buddy); | 1806 alias = purple_buddy_get_contact_alias(buddy); |
1692 } | 1807 } |
1693 } | 1808 } |
1694 | 1809 |
1695 quiet = GPOINTER_TO_INT(purple_signal_emit_return_1(purple_conversations_get_handle(), | 1810 quiet = GPOINTER_TO_INT(purple_signal_emit_return_1(purple_conversations_get_handle(), |
1759 g_return_if_fail(new_user != NULL); | 1874 g_return_if_fail(new_user != NULL); |
1760 | 1875 |
1761 conv = purple_conv_chat_get_conversation(chat); | 1876 conv = purple_conv_chat_get_conversation(chat); |
1762 ops = purple_conversation_get_ui_ops(conv); | 1877 ops = purple_conversation_get_ui_ops(conv); |
1763 | 1878 |
1764 gc = purple_conversation_get_gc(conv); | 1879 gc = purple_conversation_get_connection(conv); |
1765 g_return_if_fail(gc != NULL); | 1880 g_return_if_fail(gc != NULL); |
1766 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc)); | 1881 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc)); |
1767 g_return_if_fail(prpl_info != NULL); | 1882 g_return_if_fail(prpl_info != NULL); |
1768 | 1883 |
1769 if (purple_strequal(chat->nick, purple_normalize(conv->account, old_user))) { | 1884 if (purple_strequal(chat->nick, purple_normalize(conv->account, old_user))) { |
1778 new_alias = alias; | 1893 new_alias = alias; |
1779 else | 1894 else |
1780 { | 1895 { |
1781 const char *display_name = purple_connection_get_display_name(gc); | 1896 const char *display_name = purple_connection_get_display_name(gc); |
1782 if (display_name != NULL) | 1897 if (display_name != NULL) |
1783 alias = display_name; | 1898 new_alias = display_name; |
1784 } | 1899 } |
1785 } | 1900 } |
1786 } else if (!(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) { | 1901 } else if (!(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) { |
1787 PurpleBuddy *buddy; | 1902 PurpleBuddy *buddy; |
1788 if ((buddy = purple_find_buddy(gc->account, new_user)) != NULL) | 1903 if ((buddy = purple_find_buddy(purple_connection_get_account(gc), new_user)) != NULL) |
1789 new_alias = purple_buddy_get_contact_alias(buddy); | 1904 new_alias = purple_buddy_get_contact_alias(buddy); |
1790 } | 1905 } |
1791 | 1906 |
1792 flags = purple_conv_chat_user_get_flags(chat, old_user); | 1907 flags = purple_conv_chat_user_get_flags(chat, old_user); |
1793 cb = purple_conv_chat_cb_new(new_user, new_alias, flags); | 1908 cb = purple_conv_chat_cb_new(new_user, new_alias, flags); |
1832 char *escaped2; | 1947 char *escaped2; |
1833 | 1948 |
1834 if (!(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) { | 1949 if (!(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) { |
1835 PurpleBuddy *buddy; | 1950 PurpleBuddy *buddy; |
1836 | 1951 |
1837 if ((buddy = purple_find_buddy(gc->account, old_user)) != NULL) | 1952 if ((buddy = purple_find_buddy(purple_connection_get_account(gc), old_user)) != NULL) |
1838 old_alias = purple_buddy_get_contact_alias(buddy); | 1953 old_alias = purple_buddy_get_contact_alias(buddy); |
1839 if ((buddy = purple_find_buddy(gc->account, new_user)) != NULL) | 1954 if ((buddy = purple_find_buddy(purple_connection_get_account(gc), new_user)) != NULL) |
1840 new_alias = purple_buddy_get_contact_alias(buddy); | 1955 new_alias = purple_buddy_get_contact_alias(buddy); |
1841 } | 1956 } |
1842 | 1957 |
1843 escaped = g_markup_escape_text(old_alias, -1); | 1958 escaped = g_markup_escape_text(old_alias, -1); |
1844 escaped2 = g_markup_escape_text(new_alias, -1); | 1959 escaped2 = g_markup_escape_text(new_alias, -1); |
1878 g_return_if_fail(chat != NULL); | 1993 g_return_if_fail(chat != NULL); |
1879 g_return_if_fail(users != NULL); | 1994 g_return_if_fail(users != NULL); |
1880 | 1995 |
1881 conv = purple_conv_chat_get_conversation(chat); | 1996 conv = purple_conv_chat_get_conversation(chat); |
1882 | 1997 |
1883 gc = purple_conversation_get_gc(conv); | 1998 gc = purple_conversation_get_connection(conv); |
1884 g_return_if_fail(gc != NULL); | 1999 g_return_if_fail(gc != NULL); |
1885 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc)); | 2000 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc)); |
1886 g_return_if_fail(prpl_info != NULL); | 2001 g_return_if_fail(prpl_info != NULL); |
1887 | 2002 |
1888 ops = purple_conversation_get_ui_ops(conv); | 2003 ops = purple_conversation_get_ui_ops(conv); |
1909 char *tmp; | 2024 char *tmp; |
1910 | 2025 |
1911 if (!(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) { | 2026 if (!(prpl_info->options & OPT_PROTO_UNIQUE_CHATNAME)) { |
1912 PurpleBuddy *buddy; | 2027 PurpleBuddy *buddy; |
1913 | 2028 |
1914 if ((buddy = purple_find_buddy(gc->account, user)) != NULL) | 2029 if ((buddy = purple_find_buddy(purple_connection_get_account(gc), user)) != NULL) |
1915 alias = purple_buddy_get_contact_alias(buddy); | 2030 alias = purple_buddy_get_contact_alias(buddy); |
1916 } | 2031 } |
1917 | 2032 |
1918 alias_esc = g_markup_escape_text(alias, -1); | 2033 alias_esc = g_markup_escape_text(alias, -1); |
1919 | 2034 |
2063 | 2178 |
2064 for (l = purple_get_chats(); l != NULL; l = l->next) { | 2179 for (l = purple_get_chats(); l != NULL; l = l->next) { |
2065 conv = (PurpleConversation *)l->data; | 2180 conv = (PurpleConversation *)l->data; |
2066 | 2181 |
2067 if (purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)) == id && | 2182 if (purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)) == id && |
2068 purple_conversation_get_gc(conv) == gc) | 2183 purple_conversation_get_connection(conv) == gc) |
2069 return conv; | 2184 return conv; |
2070 } | 2185 } |
2071 | 2186 |
2072 return NULL; | 2187 return NULL; |
2073 } | 2188 } |
2091 conv = data; | 2206 conv = data; |
2092 chat = PURPLE_CONV_CHAT(conv); | 2207 chat = PURPLE_CONV_CHAT(conv); |
2093 user = purple_request_fields_get_string(fields, "screenname"); | 2208 user = purple_request_fields_get_string(fields, "screenname"); |
2094 message = purple_request_fields_get_string(fields, "message"); | 2209 message = purple_request_fields_get_string(fields, "message"); |
2095 | 2210 |
2096 serv_chat_invite(purple_conversation_get_gc(conv), chat->id, message, user); | 2211 serv_chat_invite(purple_conversation_get_connection(conv), chat->id, message, user); |
2097 } | 2212 } |
2098 | 2213 |
2099 void purple_conv_chat_invite_user(PurpleConvChat *chat, const char *user, | 2214 void purple_conv_chat_invite_user(PurpleConvChat *chat, const char *user, |
2100 const char *message, gboolean confirm) | 2215 const char *message, gboolean confirm) |
2101 { | 2216 { |
2192 | 2307 |
2193 PURPLE_DBUS_UNREGISTER_POINTER(cb); | 2308 PURPLE_DBUS_UNREGISTER_POINTER(cb); |
2194 g_free(cb); | 2309 g_free(cb); |
2195 } | 2310 } |
2196 | 2311 |
2312 void purple_conv_chat_cb_set_ui_data(PurpleConvChatBuddy *cb, gpointer ui_data) | |
2313 { | |
2314 g_return_if_fail(cb != NULL); | |
2315 | |
2316 cb->ui_data = ui_data; | |
2317 } | |
2318 | |
2319 gpointer purple_conv_chat_cb_get_ui_data(const PurpleConvChatBuddy *cb) | |
2320 { | |
2321 g_return_val_if_fail(cb != NULL, NULL); | |
2322 | |
2323 return cb->ui_data; | |
2324 } | |
2325 | |
2197 const char * | 2326 const char * |
2198 purple_conv_chat_cb_get_name(PurpleConvChatBuddy *cb) | 2327 purple_conv_chat_cb_get_alias(const PurpleConvChatBuddy *cb) |
2199 { | 2328 { |
2200 g_return_val_if_fail(cb != NULL, NULL); | 2329 g_return_val_if_fail(cb != NULL, NULL); |
2201 | 2330 |
2331 return cb->alias; | |
2332 } | |
2333 | |
2334 const char * | |
2335 purple_conv_chat_cb_get_name(const PurpleConvChatBuddy *cb) | |
2336 { | |
2337 g_return_val_if_fail(cb != NULL, NULL); | |
2338 | |
2202 return cb->name; | 2339 return cb->name; |
2340 } | |
2341 | |
2342 PurpleConvChatBuddyFlags | |
2343 purple_conv_chat_cb_get_flags(const PurpleConvChatBuddy *cb) | |
2344 { | |
2345 g_return_val_if_fail(cb != NULL, PURPLE_CBFLAGS_NONE); | |
2346 | |
2347 return cb->flags; | |
2348 } | |
2349 | |
2350 gboolean purple_conv_chat_cb_is_buddy(const PurpleConvChatBuddy *cb) | |
2351 { | |
2352 g_return_val_if_fail(cb != NULL, FALSE); | |
2353 | |
2354 return cb->buddy; | |
2203 } | 2355 } |
2204 | 2356 |
2205 const char * | 2357 const char * |
2206 purple_conv_chat_cb_get_attribute(PurpleConvChatBuddy *cb, const char *key) | 2358 purple_conv_chat_cb_get_attribute(PurpleConvChatBuddy *cb, const char *key) |
2207 { | 2359 { |
2297 GList *purple_conversation_get_message_history(PurpleConversation *conv) | 2449 GList *purple_conversation_get_message_history(PurpleConversation *conv) |
2298 { | 2450 { |
2299 return conv->message_history; | 2451 return conv->message_history; |
2300 } | 2452 } |
2301 | 2453 |
2302 const char *purple_conversation_message_get_sender(PurpleConvMessage *msg) | 2454 const char *purple_conversation_message_get_sender(const PurpleConvMessage *msg) |
2303 { | 2455 { |
2304 g_return_val_if_fail(msg, NULL); | 2456 g_return_val_if_fail(msg, NULL); |
2305 return msg->who; | 2457 return msg->who; |
2306 } | 2458 } |
2307 | 2459 |
2308 const char *purple_conversation_message_get_message(PurpleConvMessage *msg) | 2460 const char *purple_conversation_message_get_message(const PurpleConvMessage *msg) |
2309 { | 2461 { |
2310 g_return_val_if_fail(msg, NULL); | 2462 g_return_val_if_fail(msg, NULL); |
2311 return msg->what; | 2463 return msg->what; |
2312 } | 2464 } |
2313 | 2465 |
2314 PurpleMessageFlags purple_conversation_message_get_flags(PurpleConvMessage *msg) | 2466 PurpleMessageFlags purple_conversation_message_get_flags(const PurpleConvMessage *msg) |
2315 { | 2467 { |
2316 g_return_val_if_fail(msg, 0); | 2468 g_return_val_if_fail(msg, 0); |
2317 return msg->flags; | 2469 return msg->flags; |
2318 } | 2470 } |
2319 | 2471 |
2320 time_t purple_conversation_message_get_timestamp(PurpleConvMessage *msg) | 2472 time_t purple_conversation_message_get_timestamp(const PurpleConvMessage *msg) |
2321 { | 2473 { |
2322 g_return_val_if_fail(msg, 0); | 2474 g_return_val_if_fail(msg, 0); |
2323 return msg->when; | 2475 return msg->when; |
2324 } | 2476 } |
2477 | |
2478 const char *purple_conversation_message_get_alias(const PurpleConvMessage *msg) | |
2479 { | |
2480 g_return_val_if_fail(msg, NULL); | |
2481 return msg->alias; | |
2482 } | |
2483 | |
2484 PurpleConversation *purple_conversation_message_get_conv(const PurpleConvMessage *msg) | |
2485 { | |
2486 g_return_val_if_fail(msg, NULL); | |
2487 return msg->conv; | |
2488 } | |
2489 | |
2490 void purple_conversation_set_ui_data(PurpleConversation *conv, gpointer ui_data) | |
2491 { | |
2492 g_return_if_fail(conv != NULL); | |
2493 | |
2494 conv->ui_data = ui_data; | |
2495 } | |
2496 | |
2497 gpointer purple_conversation_get_ui_data(const PurpleConversation *conv) | |
2498 { | |
2499 g_return_val_if_fail(conv != NULL, NULL); | |
2500 | |
2501 return conv->ui_data; | |
2502 } | |
2503 | |
2325 | 2504 |
2326 gboolean | 2505 gboolean |
2327 purple_conversation_do_command(PurpleConversation *conv, const gchar *cmdline, | 2506 purple_conversation_do_command(PurpleConversation *conv, const gchar *cmdline, |
2328 const gchar *markup, gchar **error) | 2507 const gchar *markup, gchar **error) |
2329 { | 2508 { |