summaryrefslogtreecommitdiff
path: root/libpurple/plugins/perl/common/Notify.xs
blob: 1ec708e9dcf9b5ccf334ae976fae54556ab4b4be (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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include "module.h"

MODULE = Purple::Notify  PACKAGE = Purple::Notify  PREFIX = purple_notify_
PROTOTYPES: ENABLE

BOOT:
{
	HV *type_stash = gv_stashpv("Purple::Notify::Type", 1);
	HV *msg_type_stash = gv_stashpv("Purple::Notify::Msg", 1);
	HV *user_info_stash = gv_stashpv("Purple::NotifyUserInfo::Type", 1);

	static const constiv *civ, type_const_iv[] = {
#define const_iv(name) {#name, (IV)PURPLE_NOTIFY_##name}
		const_iv(MESSAGE),
		const_iv(EMAIL),
		const_iv(EMAILS),
		const_iv(FORMATTED),
		const_iv(SEARCHRESULTS),
		const_iv(USERINFO),
		const_iv(URI),
	};
	static const constiv msg_type_const_iv[] = {
#undef const_iv
#define const_iv(name) {#name, (IV)PURPLE_NOTIFY_MSG_##name}
		const_iv(ERROR),
		const_iv(WARNING),
		const_iv(INFO),
	};
	static const constiv user_info_const_iv[] = {
#undef const_iv
#define const_iv(name) {#name, (IV)PURPLE_NOTIFY_USER_INFO_ENTRY_##name}
		const_iv(PAIR),
		const_iv(SECTION_BREAK),
		const_iv(SECTION_HEADER),
	};

	for (civ = type_const_iv + sizeof(type_const_iv) / sizeof(type_const_iv[0]); civ-- > type_const_iv; )
		newCONSTSUB(type_stash, (char *)civ->name, newSViv(civ->iv));

	for (civ = msg_type_const_iv + sizeof(msg_type_const_iv) / sizeof(msg_type_const_iv[0]); civ-- > msg_type_const_iv; )
		newCONSTSUB(msg_type_stash, (char *)civ->name, newSViv(civ->iv));

	for (civ = user_info_const_iv + sizeof(user_info_const_iv) / sizeof(user_info_const_iv[0]); civ-- > user_info_const_iv; )
		newCONSTSUB(user_info_stash, (char *)civ->name, newSViv(civ->iv));
}

void
purple_notify_close(type, ui_handle)
	Purple::NotifyType type
	void * ui_handle

void
purple_notify_close_with_handle(handle)
	void * handle

void *
purple_notify_email(handle, subject, from, to, url, cb, user_data)
	void * handle
	const char *subject
	const char *from
	const char *to
	const char *url
	Purple::NotifyCloseCallback cb
	gpointer user_data

void *
purple_notify_emails(handle, count, detailed, subjects, froms, tos, urls, cb, user_data)
	void * handle
	size_t count
	gboolean detailed
	const char **subjects
	const char **froms
	const char **tos
	const char **urls
	Purple::NotifyCloseCallback cb
	gpointer user_data

void *
purple_notify_formatted(handle, title, primary, secondary, text, cb, user_data)
	void * handle
	const char *title
	const char *primary
	const char *secondary
	const char *text
	Purple::NotifyCloseCallback cb
	gpointer user_data

void *
purple_notify_userinfo(gc, who, user_info, cb, user_data)
	Purple::Connection gc
	const char *who
	Purple::NotifyUserInfo user_info
	Purple::NotifyCloseCallback cb
	gpointer user_data

void *
purple_notify_message(handle, type, title, primary, secondary, cb, user_data)
	void * handle
	Purple::NotifyMsgType type
	const char *title
	const char *primary
	const char *secondary
	Purple::NotifyCloseCallback cb
	gpointer user_data

void *
purple_notify_searchresults(gc, title, primary, secondary, results, cb, user_data)
	Purple::Connection gc
	const char *title
	const char *primary
	const char *secondary
	Purple::NotifySearchResults results
	Purple::NotifyCloseCallback cb
	gpointer user_data

void *
purple_notify_uri(handle, uri)
	void * handle
	const char *uri

MODULE = Purple::Notify  PACKAGE = Purple::NotifyUserInfo  PREFIX = purple_notify_user_info_
PROTOTYPES: ENABLE

Purple::NotifyUserInfo
purple_notify_user_info_new(class)
	C_ARGS: /* void */

void
purple_notify_user_info_destroy(user_info)
	Purple::NotifyUserInfo user_info

void
purple_notify_user_info_get_entries(user_info)
	Purple::NotifyUserInfo user_info
PREINIT:
	GList *l;
PPCODE:
	l = purple_notify_user_info_get_entries(user_info)->head;
	for (; l != NULL; l = l->next) {
		XPUSHs(sv_2mortal(purple_perl_bless_object(l->data, "Purple::NotifyUserInfoEntry")));
	}

gchar_own *
purple_notify_user_info_get_text_with_newline(user_info, newline)
	Purple::NotifyUserInfo user_info
	const char *newline

void purple_notify_user_info_add_pair_html(user_info, label, value)
	Purple::NotifyUserInfo user_info
	const char *label
	const char *value

void purple_notify_user_info_prepend_pair_html(user_info, label, value)
	Purple::NotifyUserInfo user_info
	const char *label
	const char *value

void purple_notify_user_info_add_section_break(user_info)
	Purple::NotifyUserInfo user_info

void purple_notify_user_info_add_section_header(user_info, label)
	Purple::NotifyUserInfo user_info
	const char *label

void purple_notify_user_info_remove_last_item(user_info)
	Purple::NotifyUserInfo user_info

const gchar *
purple_notify_user_info_entry_get_label(user_info_entry)
	Purple::NotifyUserInfoEntry user_info_entry

const gchar *
purple_notify_user_info_entry_get_value(user_info_entry)
	Purple::NotifyUserInfoEntry user_info_entry