pidgin/pidginstatusmanager.c

changeset 42198
4df23def5fe0
parent 42106
eafcc5051015
child 42202
2273647d24b0
equal deleted inserted replaced
42197:f3bece910126 42198:4df23def5fe0
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);

mercurial