static void contact_list_view_setup (EmpathyContactListView *view) { EmpathyContactListViewPriv *priv; GtkCellRenderer *cell; GtkTreeViewColumn *col; gint i; priv = GET_PRIV (view); gtk_tree_view_set_search_equal_func (GTK_TREE_VIEW (view), empathy_contact_list_store_search_equal_func, NULL, NULL); g_signal_connect (priv->store, "row-has-child-toggled", G_CALLBACK (contact_list_view_row_has_child_toggled_cb), view); gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (priv->store)); /* Setup view */ g_object_set (view, "headers-visible", FALSE, "reorderable", TRUE, "show-expanders", FALSE, NULL); col = gtk_tree_view_column_new (); /* State */ cell = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_column_pack_start (col, cell, FALSE); gtk_tree_view_column_set_cell_data_func ( col, cell, (GtkTreeCellDataFunc) contact_list_view_pixbuf_cell_data_func, view, NULL); g_object_set (cell, "xpad", 5, "ypad", 1, "visible", FALSE, NULL); /* Name */ cell = empathy_cell_renderer_text_new (); gtk_tree_view_column_pack_start (col, cell, TRUE); gtk_tree_view_column_set_cell_data_func ( col, cell, (GtkTreeCellDataFunc) contact_list_view_text_cell_data_func, view, NULL); gtk_tree_view_column_add_attribute (col, cell, "name", EMPATHY_CONTACT_LIST_STORE_COL_NAME); gtk_tree_view_column_add_attribute (col, cell, "status", EMPATHY_CONTACT_LIST_STORE_COL_STATUS); gtk_tree_view_column_add_attribute (col, cell, "is_group", EMPATHY_CONTACT_LIST_STORE_COL_IS_GROUP); /* Voip Capability Icon */ cell = empathy_cell_renderer_activatable_new (); gtk_tree_view_column_pack_start (col, cell, FALSE); gtk_tree_view_column_set_cell_data_func ( col, cell, (GtkTreeCellDataFunc) contact_list_view_voip_cell_data_func, view, NULL); g_object_set (cell, "visible", FALSE, NULL); g_signal_connect (cell, "path-activated", G_CALLBACK (contact_list_view_voip_activated_cb), view); /* Avatar */ cell = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_column_pack_start (col, cell, FALSE); gtk_tree_view_column_set_cell_data_func ( col, cell, (GtkTreeCellDataFunc) contact_list_view_avatar_cell_data_func, view, NULL); g_object_set (cell, "xpad", 0, "ypad", 0, "visible", FALSE, "width", 32, "height", 32, NULL); /* Expander */ cell = empathy_cell_renderer_expander_new (); gtk_tree_view_column_pack_end (col, cell, FALSE); gtk_tree_view_column_set_cell_data_func ( col, cell, (GtkTreeCellDataFunc) contact_list_view_expander_cell_data_func, view, NULL); /* Actually add the column now we have added all cell renderers */ gtk_tree_view_append_column (GTK_TREE_VIEW (view), col); /* Drag & Drop. */ for (i = 0; i < G_N_ELEMENTS (drag_types_dest); ++i) { drag_atoms_dest[i] = gdk_atom_intern (drag_types_dest[i].target, FALSE); } for (i = 0; i < G_N_ELEMENTS (drag_types_source); ++i) { drag_atoms_source[i] = gdk_atom_intern (drag_types_source[i].target, FALSE); } }
static void constructed (GObject *object) { EmpathyPersonaView *self = EMPATHY_PERSONA_VIEW (object); GtkCellRenderer *cell; GtkTreeViewColumn *col; guint i; /* Set up view */ g_object_set (self, "headers-visible", FALSE, "show-expanders", FALSE, NULL); col = gtk_tree_view_column_new (); /* State */ cell = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_column_pack_start (col, cell, FALSE); gtk_tree_view_column_set_cell_data_func (col, cell, (GtkTreeCellDataFunc) pixbuf_cell_data_func, self, NULL); g_object_set (cell, "xpad", 5, "ypad", 1, "visible", TRUE, NULL); /* Name */ cell = empathy_cell_renderer_text_new (); gtk_tree_view_column_pack_start (col, cell, TRUE); gtk_tree_view_column_set_cell_data_func (col, cell, (GtkTreeCellDataFunc) text_cell_data_func, self, NULL); /* We (ab)use the name and status properties here to display display ID and * account name, respectively. Harmless. */ gtk_tree_view_column_add_attribute (col, cell, "name", EMPATHY_PERSONA_STORE_COL_DISPLAY_ID); gtk_tree_view_column_add_attribute (col, cell, "text", EMPATHY_PERSONA_STORE_COL_DISPLAY_ID); gtk_tree_view_column_add_attribute (col, cell, "presence-type", EMPATHY_PERSONA_STORE_COL_PRESENCE_TYPE); gtk_tree_view_column_add_attribute (col, cell, "status", EMPATHY_PERSONA_STORE_COL_ACCOUNT_NAME); /* Audio Call Icon */ cell = empathy_cell_renderer_activatable_new (); gtk_tree_view_column_pack_start (col, cell, FALSE); gtk_tree_view_column_set_cell_data_func (col, cell, (GtkTreeCellDataFunc) audio_call_cell_data_func, self, NULL); g_object_set (cell, "visible", FALSE, NULL); /* Avatar */ cell = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_column_pack_start (col, cell, FALSE); gtk_tree_view_column_set_cell_data_func (col, cell, (GtkTreeCellDataFunc) avatar_cell_data_func, self, NULL); g_object_set (cell, "xpad", 0, "ypad", 0, "visible", FALSE, "width", 32, "height", 32, NULL); /* Actually add the column now we have added all cell renderers */ gtk_tree_view_append_column (GTK_TREE_VIEW (self), col); /* Drag & Drop. */ for (i = 0; i < G_N_ELEMENTS (drag_types_dest); ++i) drag_atoms_dest[i] = gdk_atom_intern (drag_types_dest[i].target, FALSE); }