Fri, 04 Apr 2014 21:09:16 +0200
Remote smileys: correctly handle failed smileys
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
1 | /* purple |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
2 | * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
3 | * Purple is the legal property of its developers, whose names are too numerous |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
4 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
5 | * source distribution. |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
6 | * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
7 | * This program is free software; you can redistribute it and/or modify |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
8 | * it under the terms of the GNU General Public License as published by |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
9 | * the Free Software Foundation; either version 2 of the License, or |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
10 | * (at your option) any later version. |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
11 | * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
12 | * This program is distributed in the hope that it will be useful, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
15 | * GNU General Public License for more details. |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
16 | * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
17 | * You should have received a copy of the GNU General Public License |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
18 | * along with this program; if not, write to the Free Software |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
20 | */ |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
21 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
22 | #include "request-datasheet.h" |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
23 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
24 | #include "debug.h" |
|
35190
5986ee34c476
libpurple: Fix build and warnings with glib 2.24
Ankit Vani <a@nevitus.org>
parents:
35143
diff
changeset
|
25 | #include "glibcompat.h" |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
26 | #include "signals.h" |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
27 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
28 | struct _PurpleRequestDatasheet |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
29 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
30 | guint col_count; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
31 | GArray *col_types; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
32 | GArray *col_titles; |
|
34504
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
33 | GList *actions; |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
34 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
35 | GList *record_list; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
36 | GHashTable *record_li_by_key; |
|
35143
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
37 | |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
38 | GHashTable *marked_for_rem; |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
39 | }; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
40 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
41 | struct _PurpleRequestDatasheetRecord |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
42 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
43 | PurpleRequestDatasheet *sheet; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
44 | gpointer key; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
45 | gchar **data; /* at this point, there is only string data possible */ |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
46 | }; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
47 | |
|
34504
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
48 | struct _PurpleRequestDatasheetAction |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
49 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
50 | gchar *label; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
51 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
52 | PurpleRequestDatasheetActionCb cb; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
53 | gpointer cb_data; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
54 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
55 | PurpleRequestDatasheetActionCheckCb sens_cb; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
56 | gpointer sens_data; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
57 | }; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
58 | |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
59 | static void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
60 | purple_request_datasheet_record_free(PurpleRequestDatasheetRecord *rec); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
61 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
62 | /***** Datasheet API **********************************************************/ |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
63 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
64 | PurpleRequestDatasheet * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
65 | purple_request_datasheet_new(void) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
66 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
67 | PurpleRequestDatasheet *sheet; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
68 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
69 | sheet = g_new0(PurpleRequestDatasheet, 1); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
70 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
71 | sheet->col_types = g_array_new(FALSE, FALSE, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
72 | sizeof(PurpleRequestDatasheetColumnType)); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
73 | sheet->col_titles = g_array_new(FALSE, FALSE, sizeof(gchar *)); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
74 | /* XXX: use g_array_set_clear_func when we depend on Glib 2.32 */ |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
75 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
76 | sheet->record_li_by_key = g_hash_table_new(g_direct_hash, g_direct_equal); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
77 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
78 | purple_signal_register(sheet, "record-changed", |
|
35051
74d393e8fac7
Removed this new purple_value_new stuff
Ankit Vani <a@nevitus.org>
parents:
34502
diff
changeset
|
79 | purple_marshal_VOID__POINTER_POINTER, G_TYPE_NONE, 2, |
|
74d393e8fac7
Removed this new purple_value_new stuff
Ankit Vani <a@nevitus.org>
parents:
34502
diff
changeset
|
80 | G_TYPE_POINTER, /* (PurpleRequestDatasheet *) */ |
|
74d393e8fac7
Removed this new purple_value_new stuff
Ankit Vani <a@nevitus.org>
parents:
34502
diff
changeset
|
81 | G_TYPE_POINTER); /* NULL for all */ |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
82 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
83 | purple_signal_register(sheet, "destroy", |
|
35051
74d393e8fac7
Removed this new purple_value_new stuff
Ankit Vani <a@nevitus.org>
parents:
34502
diff
changeset
|
84 | purple_marshal_VOID__POINTER, G_TYPE_NONE, 1, |
|
74d393e8fac7
Removed this new purple_value_new stuff
Ankit Vani <a@nevitus.org>
parents:
34502
diff
changeset
|
85 | G_TYPE_POINTER); /* (PurpleRequestDatasheet *) */ |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
86 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
87 | return sheet; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
88 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
89 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
90 | void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
91 | purple_request_datasheet_free(PurpleRequestDatasheet *sheet) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
92 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
93 | guint i; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
94 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
95 | g_return_if_fail(sheet != NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
96 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
97 | purple_signal_emit(sheet, "destroy", sheet); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
98 | purple_signals_unregister_by_instance(sheet); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
99 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
100 | for (i = 0; i < sheet->col_titles->len; i++) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
101 | g_free(g_array_index(sheet->col_titles, gchar *, i)); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
102 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
103 | g_array_free(sheet->col_titles, TRUE); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
104 | g_array_free(sheet->col_types, TRUE); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
105 | |
|
34504
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
106 | g_list_free_full(sheet->actions, |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
107 | (GDestroyNotify)purple_request_datasheet_action_free); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
108 | |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
109 | g_hash_table_destroy(sheet->record_li_by_key); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
110 | g_list_free_full(sheet->record_list, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
111 | (GDestroyNotify)purple_request_datasheet_record_free); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
112 | |
|
35143
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
113 | if (sheet->marked_for_rem != NULL) |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
114 | g_hash_table_destroy(sheet->marked_for_rem); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
115 | |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
116 | g_free(sheet); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
117 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
118 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
119 | void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
120 | purple_request_datasheet_add_column(PurpleRequestDatasheet *sheet, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
121 | PurpleRequestDatasheetColumnType type, const gchar *title) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
122 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
123 | gchar *title_clone; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
124 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
125 | g_return_if_fail(sheet != NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
126 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
127 | if (sheet->record_list != NULL) { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
128 | purple_debug_error("request-datasheet", "Cannot modify model " |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
129 | "when there is already some data"); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
130 | return; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
131 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
132 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
133 | title_clone = g_strdup(title); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
134 | sheet->col_count++; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
135 | g_array_append_val(sheet->col_types, type); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
136 | g_array_append_val(sheet->col_titles, title_clone); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
137 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
138 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
139 | guint |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
140 | purple_request_datasheet_get_column_count(PurpleRequestDatasheet *sheet) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
141 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
142 | g_return_val_if_fail(sheet != NULL, 0); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
143 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
144 | return sheet->col_count; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
145 | /*return sheet->col_types->len;*/ |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
146 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
147 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
148 | PurpleRequestDatasheetColumnType |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
149 | purple_request_datasheet_get_column_type(PurpleRequestDatasheet *sheet, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
150 | guint col_no) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
151 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
152 | g_return_val_if_fail(sheet != NULL, 0); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
153 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
154 | return g_array_index(sheet->col_types, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
155 | PurpleRequestDatasheetColumnType, col_no); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
156 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
157 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
158 | const gchar * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
159 | purple_request_datasheet_get_column_title(PurpleRequestDatasheet *sheet, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
160 | guint col_no) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
161 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
162 | g_return_val_if_fail(sheet != NULL, 0); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
163 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
164 | return g_array_index(sheet->col_titles, gchar *, col_no); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
165 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
166 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
167 | const GList * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
168 | purple_request_datasheet_get_records(PurpleRequestDatasheet *sheet) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
169 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
170 | g_return_val_if_fail(sheet != NULL, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
171 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
172 | return sheet->record_list; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
173 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
174 | |
|
34504
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
175 | void |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
176 | purple_request_datasheet_add_action(PurpleRequestDatasheet *sheet, |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
177 | PurpleRequestDatasheetAction *action) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
178 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
179 | g_return_if_fail(sheet != NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
180 | g_return_if_fail(action != NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
181 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
182 | sheet->actions = g_list_append(sheet->actions, action); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
183 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
184 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
185 | const GList * |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
186 | purple_request_datasheet_get_actions(PurpleRequestDatasheet *sheet) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
187 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
188 | g_return_val_if_fail(sheet != NULL, NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
189 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
190 | return sheet->actions; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
191 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
192 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
193 | /***** Datasheet actions API **************************************************/ |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
194 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
195 | PurpleRequestDatasheetAction * |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
196 | purple_request_datasheet_action_new(void) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
197 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
198 | return g_new0(PurpleRequestDatasheetAction, 1); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
199 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
200 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
201 | void |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
202 | purple_request_datasheet_action_free(PurpleRequestDatasheetAction *act) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
203 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
204 | g_return_if_fail(act != NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
205 | g_free(act->label); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
206 | g_free(act); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
207 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
208 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
209 | void |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
210 | purple_request_datasheet_action_set_label(PurpleRequestDatasheetAction *act, |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
211 | const gchar *label) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
212 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
213 | gchar *new_label; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
214 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
215 | g_return_if_fail(act != NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
216 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
217 | new_label = g_strdup(label); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
218 | g_free(act->label); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
219 | act->label = new_label; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
220 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
221 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
222 | const gchar* |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
223 | purple_request_datasheet_action_get_label(PurpleRequestDatasheetAction *act) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
224 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
225 | g_return_val_if_fail(act != NULL, NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
226 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
227 | return act->label; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
228 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
229 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
230 | void |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
231 | purple_request_datasheet_action_set_cb(PurpleRequestDatasheetAction *act, |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
232 | PurpleRequestDatasheetActionCb cb, gpointer user_data) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
233 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
234 | g_return_if_fail(act != NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
235 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
236 | act->cb = cb; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
237 | act->cb_data = user_data; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
238 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
239 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
240 | void |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
241 | purple_request_datasheet_action_call(PurpleRequestDatasheetAction *act, |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
242 | PurpleRequestDatasheetRecord *rec) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
243 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
244 | g_return_if_fail(act != NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
245 | |
|
34509
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
246 | if (!act->cb) |
|
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
247 | return; |
|
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
248 | |
| 34512 | 249 | if (!purple_request_datasheet_action_is_sensitive(act, rec)) { |
|
34509
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
250 | purple_debug_warning("request-datasheet", |
|
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
251 | "Action is disabled for this record"); |
|
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
252 | return; |
|
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
253 | } |
|
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
254 | |
|
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
255 | act->cb(rec, act->cb_data); |
|
34504
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
256 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
257 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
258 | void |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
259 | purple_request_datasheet_action_set_sens_cb( |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
260 | PurpleRequestDatasheetAction *act, |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
261 | PurpleRequestDatasheetActionCheckCb cb, gpointer user_data) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
262 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
263 | g_return_if_fail(act != NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
264 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
265 | act->sens_cb = cb; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
266 | act->sens_data = user_data; |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
267 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
268 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
269 | gboolean |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
270 | purple_request_datasheet_action_is_sensitive(PurpleRequestDatasheetAction *act, |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
271 | PurpleRequestDatasheetRecord *rec) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
272 | { |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
273 | g_return_val_if_fail(act != NULL, FALSE); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
274 | |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
275 | if (!act->sens_cb) |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
276 | return (rec != NULL); |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
277 | |
|
34509
15514969ff61
Request API: fix a bug when checking datasheet action sensitivity
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34504
diff
changeset
|
278 | return act->sens_cb(rec, act->sens_data); |
|
34504
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
279 | } |
|
188423493b57
Request API: actions for datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
34502
diff
changeset
|
280 | |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
281 | /***** Datasheet record API ***************************************************/ |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
282 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
283 | static PurpleRequestDatasheetRecord * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
284 | purple_request_datasheet_record_new(void) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
285 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
286 | return g_new0(PurpleRequestDatasheetRecord, 1); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
287 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
288 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
289 | static void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
290 | purple_request_datasheet_record_free(PurpleRequestDatasheetRecord *rec) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
291 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
292 | g_strfreev(rec->data); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
293 | g_free(rec); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
294 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
295 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
296 | gpointer |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
297 | purple_request_datasheet_record_get_key(const PurpleRequestDatasheetRecord *rec) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
298 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
299 | g_return_val_if_fail(rec != NULL, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
300 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
301 | return rec->key; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
302 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
303 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
304 | PurpleRequestDatasheet * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
305 | purple_request_datasheet_record_get_datasheet( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
306 | PurpleRequestDatasheetRecord *rec) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
307 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
308 | g_return_val_if_fail(rec != NULL, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
309 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
310 | return rec->sheet; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
311 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
312 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
313 | PurpleRequestDatasheetRecord * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
314 | purple_request_datasheet_record_find(PurpleRequestDatasheet *sheet, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
315 | gpointer key) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
316 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
317 | GList *it; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
318 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
319 | g_return_val_if_fail(sheet != NULL, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
320 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
321 | it = g_hash_table_lookup(sheet->record_li_by_key, key); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
322 | if (!it) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
323 | return NULL; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
324 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
325 | return it->data; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
326 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
327 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
328 | PurpleRequestDatasheetRecord * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
329 | purple_request_datasheet_record_add(PurpleRequestDatasheet *sheet, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
330 | gpointer key) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
331 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
332 | PurpleRequestDatasheetRecord *rec; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
333 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
334 | g_return_val_if_fail(sheet != NULL, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
335 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
336 | rec = purple_request_datasheet_record_find(sheet, key); |
|
35143
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
337 | if (rec != NULL) { |
|
35636
0fcbcc3b45eb
Fix a NULL pointer misuse
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35454
diff
changeset
|
338 | if (sheet->marked_for_rem != NULL) |
|
0fcbcc3b45eb
Fix a NULL pointer misuse
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35454
diff
changeset
|
339 | g_hash_table_remove(sheet->marked_for_rem, key); |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
340 | return rec; |
|
35143
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
341 | } |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
342 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
343 | rec = purple_request_datasheet_record_new(); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
344 | rec->sheet = sheet; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
345 | rec->key = key; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
346 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
347 | /* we don't allow modifying collumn count when datasheet contains |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
348 | * any records */ |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
349 | rec->data = g_new0(gchar*, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
350 | purple_request_datasheet_get_column_count(sheet) + 1); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
351 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
352 | sheet->record_list = g_list_append(sheet->record_list, rec); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
353 | g_hash_table_insert(sheet->record_li_by_key, key, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
354 | g_list_find(sheet->record_list, rec)); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
355 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
356 | purple_signal_emit(sheet, "record-changed", sheet, key); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
357 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
358 | return rec; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
359 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
360 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
361 | void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
362 | purple_request_datasheet_record_remove(PurpleRequestDatasheet *sheet, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
363 | gpointer key) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
364 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
365 | GList *it; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
366 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
367 | g_return_if_fail(sheet != NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
368 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
369 | it = g_hash_table_lookup(sheet->record_li_by_key, key); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
370 | if (it == NULL) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
371 | return; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
372 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
373 | purple_request_datasheet_record_free(it->data); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
374 | sheet->record_list = g_list_delete_link(sheet->record_list, it); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
375 | g_hash_table_remove(sheet->record_li_by_key, key); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
376 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
377 | purple_signal_emit(sheet, "record-changed", sheet, key); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
378 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
379 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
380 | void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
381 | purple_request_datasheet_record_remove_all(PurpleRequestDatasheet *sheet) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
382 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
383 | g_return_if_fail(sheet != NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
384 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
385 | g_list_free_full(sheet->record_list, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
386 | (GDestroyNotify)purple_request_datasheet_record_free); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
387 | sheet->record_list = NULL; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
388 | g_hash_table_remove_all(sheet->record_li_by_key); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
389 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
390 | purple_signal_emit(sheet, "record-changed", sheet, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
391 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
392 | |
|
35143
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
393 | void |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
394 | purple_request_datasheet_record_mark_all_for_rem(PurpleRequestDatasheet *sheet) |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
395 | { |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
396 | const GList *it; |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
397 | |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
398 | if (sheet->marked_for_rem != NULL) |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
399 | g_hash_table_destroy(sheet->marked_for_rem); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
400 | sheet->marked_for_rem = g_hash_table_new(g_direct_hash, g_direct_equal); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
401 | |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
402 | it = purple_request_datasheet_get_records(sheet); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
403 | for (; it != NULL; it = g_list_next(it)) { |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
404 | PurpleRequestDatasheetRecord *rec = it->data; |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
405 | gpointer key = purple_request_datasheet_record_get_key(rec); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
406 | |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
407 | g_hash_table_insert(sheet->marked_for_rem, key, key); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
408 | } |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
409 | } |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
410 | |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
411 | void |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
412 | purple_request_datasheet_record_remove_marked(PurpleRequestDatasheet *sheet) |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
413 | { |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
414 | GHashTableIter it; |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
415 | gpointer key; |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
416 | GHashTable *rem; |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
417 | |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
418 | if (sheet->marked_for_rem == NULL) |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
419 | return; |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
420 | rem = sheet->marked_for_rem; |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
421 | sheet->marked_for_rem = NULL; |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
422 | |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
423 | g_hash_table_iter_init(&it, rem); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
424 | while (g_hash_table_iter_next(&it, &key, NULL)) |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
425 | purple_request_datasheet_record_remove(sheet, key); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
426 | |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
427 | g_hash_table_destroy(rem); |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
428 | } |
|
7847eb4b93b0
Make datasheet refresh easier with marking for removal routines
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
35067
diff
changeset
|
429 | |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
430 | static void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
431 | purple_request_datasheet_record_set_common_data( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
432 | PurpleRequestDatasheetRecord *rec, guint col_no, const gchar *data) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
433 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
434 | g_return_if_fail(rec != NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
435 | g_return_if_fail( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
436 | purple_request_datasheet_get_column_count(rec->sheet) > col_no); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
437 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
438 | if (g_strcmp0(rec->data[col_no], data) == 0) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
439 | return; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
440 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
441 | /* we assume, model hasn't changed */ |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
442 | g_free(rec->data[col_no]); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
443 | rec->data[col_no] = g_strdup(data); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
444 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
445 | purple_signal_emit(rec->sheet, "record-changed", rec->sheet, rec->key); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
446 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
447 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
448 | void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
449 | purple_request_datasheet_record_set_string_data( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
450 | PurpleRequestDatasheetRecord *rec, guint col_no, const gchar *data) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
451 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
452 | g_return_if_fail(rec != NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
453 | g_return_if_fail(purple_request_datasheet_get_column_type(rec->sheet, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
454 | col_no) == PURPLE_REQUEST_DATASHEET_COLUMN_STRING); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
455 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
456 | purple_request_datasheet_record_set_common_data(rec, col_no, data); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
457 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
458 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
459 | void |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
460 | purple_request_datasheet_record_set_image_data( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
461 | PurpleRequestDatasheetRecord *rec, guint col_no, const gchar *stock_id) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
462 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
463 | g_return_if_fail(rec != NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
464 | g_return_if_fail(purple_request_datasheet_get_column_type(rec->sheet, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
465 | col_no) == PURPLE_REQUEST_DATASHEET_COLUMN_IMAGE); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
466 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
467 | purple_request_datasheet_record_set_common_data(rec, col_no, stock_id); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
468 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
469 | |
| 35067 | 470 | static const gchar * |
|
34502
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
471 | purple_request_datasheet_record_get_common_data( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
472 | const PurpleRequestDatasheetRecord *rec, guint col_no) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
473 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
474 | g_return_val_if_fail(rec != NULL, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
475 | g_return_val_if_fail( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
476 | purple_request_datasheet_get_column_count(rec->sheet) > col_no, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
477 | NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
478 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
479 | return rec->data[col_no]; |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
480 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
481 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
482 | const gchar * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
483 | purple_request_datasheet_record_get_string_data( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
484 | const PurpleRequestDatasheetRecord *rec, guint col_no) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
485 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
486 | g_return_val_if_fail(rec != NULL, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
487 | g_return_val_if_fail(purple_request_datasheet_get_column_type( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
488 | rec->sheet, col_no) == PURPLE_REQUEST_DATASHEET_COLUMN_STRING, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
489 | NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
490 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
491 | return purple_request_datasheet_record_get_common_data(rec, col_no); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
492 | } |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
493 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
494 | const gchar * |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
495 | purple_request_datasheet_record_get_image_data( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
496 | const PurpleRequestDatasheetRecord *rec, guint col_no) |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
497 | { |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
498 | g_return_val_if_fail(rec != NULL, NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
499 | g_return_val_if_fail(purple_request_datasheet_get_column_type( |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
500 | rec->sheet, col_no) == PURPLE_REQUEST_DATASHEET_COLUMN_IMAGE, |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
501 | NULL); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
502 | |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
503 | return purple_request_datasheet_record_get_common_data(rec, col_no); |
|
433382371e89
Request API: datasheet field
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents:
diff
changeset
|
504 | } |