| 123 PurpleSavedStatus *status) |
123 PurpleSavedStatus *status) |
| 124 { |
124 { |
| 125 GObject *wrapper = NULL; |
125 GObject *wrapper = NULL; |
| 126 PurpleStatusPrimitive primitive; |
126 PurpleStatusPrimitive primitive; |
| 127 gchar *message = NULL; |
127 gchar *message = NULL; |
| 128 const gchar *icon_name = NULL, *type = NULL; |
128 const char *type = NULL; |
| 129 |
129 |
| 130 message = purple_markup_strip_html(purple_savedstatus_get_message(status)); |
130 message = purple_markup_strip_html(purple_savedstatus_get_message(status)); |
| 131 |
131 |
| 132 primitive = purple_savedstatus_get_primitive_type(status); |
132 primitive = purple_savedstatus_get_primitive_type(status); |
| 133 icon_name = pidgin_icon_name_from_status_primitive(primitive, NULL); |
|
| 134 type = purple_primitive_get_name_from_type(primitive); |
133 type = purple_primitive_get_name_from_type(primitive); |
| 135 |
134 |
| 136 /* PurpleSavedStatus is a boxed type, so it can't be put in a GListModel; |
135 /* PurpleSavedStatus is a boxed type, so it can't be put in a GListModel; |
| 137 * instead create a wrapper GObject instance to hold its information. */ |
136 * instead create a wrapper GObject instance to hold its information. */ |
| 138 wrapper = g_object_new(G_TYPE_OBJECT, NULL); |
137 wrapper = g_object_new(G_TYPE_OBJECT, NULL); |
| 139 g_object_set_data(wrapper, "savedstatus", status); |
138 g_object_set_data(wrapper, "savedstatus", status); |
| 140 g_object_set_data_full(wrapper, "title", |
139 g_object_set_data_full(wrapper, "title", |
| 141 g_strdup(purple_savedstatus_get_title(status)), |
140 g_strdup(purple_savedstatus_get_title(status)), |
| 142 g_free); |
141 g_free); |
| 143 g_object_set_data_full(wrapper, "icon-name", g_strdup(icon_name), g_free); |
|
| 144 g_object_set_data_full(wrapper, "type", g_strdup(type), g_free); |
142 g_object_set_data_full(wrapper, "type", g_strdup(type), g_free); |
| 145 g_object_set_data_full(wrapper, "message", g_strdup(message), g_free); |
143 g_object_set_data_full(wrapper, "message", g_strdup(message), g_free); |
| 146 |
144 |
| 147 g_list_store_append(manager->model, wrapper); |
145 g_list_store_append(manager->model, wrapper); |
| 148 |
146 |
| 204 case GTK_RESPONSE_CLOSE: |
202 case GTK_RESPONSE_CLOSE: |
| 205 case GTK_RESPONSE_DELETE_EVENT: |
203 case GTK_RESPONSE_DELETE_EVENT: |
| 206 gtk_window_destroy(GTK_WINDOW(dialog)); |
204 gtk_window_destroy(GTK_WINDOW(dialog)); |
| 207 break; |
205 break; |
| 208 } |
206 } |
| |
207 } |
| |
208 |
| |
209 static PurpleStatusPrimitive |
| |
210 pidgin_status_manager_lookup_primitive_cb(G_GNUC_UNUSED GObject *self, |
| |
211 GObject *wrapper, |
| |
212 G_GNUC_UNUSED gpointer data) |
| |
213 { |
| |
214 PurpleStatusPrimitive primitive = PURPLE_STATUS_UNSET; |
| |
215 |
| |
216 if(G_IS_OBJECT(wrapper)) { |
| |
217 PurpleSavedStatus *status = g_object_get_data(wrapper, "savedstatus"); |
| |
218 primitive = purple_savedstatus_get_primitive_type(status); |
| |
219 } |
| |
220 |
| |
221 return primitive; |
| 209 } |
222 } |
| 210 |
223 |
| 211 static char * |
224 static char * |
| 212 pidgin_status_manager_sort_data_cb(GObject *wrapper, const char *name, |
225 pidgin_status_manager_sort_data_cb(GObject *wrapper, const char *name, |
| 213 G_GNUC_UNUSED gpointer data) |
226 G_GNUC_UNUSED gpointer data) |
| 386 remove_button); |
399 remove_button); |
| 387 |
400 |
| 388 gtk_widget_class_bind_template_callback(widget_class, |
401 gtk_widget_class_bind_template_callback(widget_class, |
| 389 pidgin_status_manager_response_cb); |
402 pidgin_status_manager_response_cb); |
| 390 gtk_widget_class_bind_template_callback(widget_class, |
403 gtk_widget_class_bind_template_callback(widget_class, |
| |
404 pidgin_status_manager_lookup_primitive_cb); |
| |
405 gtk_widget_class_bind_template_callback(widget_class, |
| 391 pidgin_status_manager_lookup_text_data_cb); |
406 pidgin_status_manager_lookup_text_data_cb); |
| 392 gtk_widget_class_bind_template_callback(widget_class, |
407 gtk_widget_class_bind_template_callback(widget_class, |
| 393 pidgin_status_manager_sort_data_cb); |
408 pidgin_status_manager_sort_data_cb); |
| 394 gtk_widget_class_bind_template_callback(widget_class, |
409 gtk_widget_class_bind_template_callback(widget_class, |
| 395 pidgin_status_manager_row_activated_cb); |
410 pidgin_status_manager_row_activated_cb); |