static void contact_list_view_expander_cell_data_func (GtkTreeViewColumn *column, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, EmpathyContactListView *view) { gboolean is_group; gboolean is_active; gtk_tree_model_get (model, iter, EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active, -1); if (gtk_tree_model_iter_has_child (model, iter)) { GtkTreePath *path; gboolean row_expanded; path = gtk_tree_model_get_path (model, iter); row_expanded = gtk_tree_view_row_expanded (GTK_TREE_VIEW (column->tree_view), path); gtk_tree_path_free (path); g_object_set (cell, "visible", TRUE, "expander-style", row_expanded ? GTK_EXPANDER_EXPANDED : GTK_EXPANDER_COLLAPSED, NULL); } else { g_object_set (cell, "visible", FALSE, NULL); } contact_list_view_cell_set_background (view, cell, is_group, is_active); }
static void contact_list_view_pixbuf_cell_data_func (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, EmpathyContactListView *view) { gchar *icon_name; gboolean is_group; gboolean is_active; gtk_tree_model_get (model, iter, EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active, EMPATHY_CONTACT_LIST_STORE_COL_ICON_STATUS, &icon_name, -1); g_object_set (cell, "visible", !is_group, "icon-name", icon_name, NULL); g_free (icon_name); contact_list_view_cell_set_background (view, cell, is_group, is_active); }
static void contact_list_view_avatar_cell_data_func (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, EmpathyContactListView *view) { GdkPixbuf *pixbuf; gboolean show_avatar; gboolean is_group; gboolean is_active; gtk_tree_model_get (model, iter, EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR, &pixbuf, EMPATHY_CONTACT_LIST_STORE_COL_PIXBUF_AVATAR_VISIBLE, &show_avatar, EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active, -1); g_object_set (cell, "visible", !is_group && show_avatar, "pixbuf", pixbuf, NULL); if (pixbuf) { g_object_unref (pixbuf); } contact_list_view_cell_set_background (view, cell, is_group, is_active); }
static void contact_list_view_video_call_cell_data_func ( GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, EmpathyContactListView *view) { gboolean is_group; gboolean is_active; gboolean can_voip; gtk_tree_model_get (model, iter, EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active, EMPATHY_CONTACT_LIST_STORE_COL_CAN_VIDEO_CALL, &can_voip, -1); g_object_set (cell, "visible", !is_group && can_voip, "icon-name", EMPATHY_IMAGE_VIDEO_CALL, NULL); contact_list_view_cell_set_background (view, cell, is_group, is_active); }
static void contact_list_view_text_cell_data_func (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, GtkTreeModel *model, GtkTreeIter *iter, EmpathyContactListView *view) { gboolean is_group; gboolean is_active; gboolean show_status; gtk_tree_model_get (model, iter, EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP, &is_group, EMPATHY_CONTACT_LIST_STORE_COL_IS_ACTIVE, &is_active, EMPATHY_CONTACT_LIST_STORE_COL_STATUS_VISIBLE, &show_status, -1); g_object_set (cell, "show-status", show_status, NULL); contact_list_view_cell_set_background (view, cell, is_group, is_active); }