static void main_window_view_sort_contacts_cb (GtkRadioAction *action, GtkRadioAction *current, EmpathyMainWindow *window) { EmpathyContactListStoreSort value; GSList *group; GType type; GEnumClass *enum_class; GEnumValue *enum_value; value = gtk_radio_action_get_current_value (action); group = gtk_radio_action_get_group (action); /* Get string from index */ type = empathy_contact_list_store_sort_get_type (); enum_class = G_ENUM_CLASS (g_type_class_peek (type)); enum_value = g_enum_get_value (enum_class, g_slist_index (group, current)); if (!enum_value) { g_warning ("No GEnumValue for EmpathyContactListSort with GtkRadioAction index:%d", g_slist_index (group, action)); } else { empathy_conf_set_string (empathy_conf_get (), EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM, enum_value->value_nick); } empathy_contact_list_store_set_sort_criterium (window->list_store, value); }
static void contact_list_store_set_property (GObject *object, guint param_id, const GValue *value, GParamSpec *pspec) { EmpathyContactListStorePriv *priv; priv = GET_PRIV (object); switch (param_id) { case PROP_CONTACT_LIST: contact_list_store_set_contact_list (EMPATHY_CONTACT_LIST_STORE (object), g_value_get_object (value)); break; case PROP_SHOW_OFFLINE: empathy_contact_list_store_set_show_offline (EMPATHY_CONTACT_LIST_STORE (object), g_value_get_boolean (value)); break; case PROP_SHOW_AVATARS: empathy_contact_list_store_set_show_avatars (EMPATHY_CONTACT_LIST_STORE (object), g_value_get_boolean (value)); break; case PROP_SHOW_GROUPS: empathy_contact_list_store_set_show_groups (EMPATHY_CONTACT_LIST_STORE (object), g_value_get_boolean (value)); break; case PROP_IS_COMPACT: empathy_contact_list_store_set_is_compact (EMPATHY_CONTACT_LIST_STORE (object), g_value_get_boolean (value)); break; case PROP_SORT_CRITERIUM: empathy_contact_list_store_set_sort_criterium (EMPATHY_CONTACT_LIST_STORE (object), g_value_get_enum (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; }; }
static void contact_list_store_setup (EmpathyContactListStore *store) { EmpathyContactListStorePriv *priv; GType types[] = { G_TYPE_STRING, /* Status icon-name */ GDK_TYPE_PIXBUF, /* Avatar pixbuf */ G_TYPE_BOOLEAN, /* Avatar pixbuf visible */ G_TYPE_STRING, /* Name */ G_TYPE_STRING, /* Status string */ G_TYPE_BOOLEAN, /* Show status */ EMPATHY_TYPE_CONTACT, /* Contact type */ G_TYPE_BOOLEAN, /* Is group */ G_TYPE_BOOLEAN, /* Is active */ G_TYPE_BOOLEAN, /* Is online */ G_TYPE_BOOLEAN, /* Is separator */ G_TYPE_BOOLEAN, /* Can make audio calls */ G_TYPE_BOOLEAN, /* Can make video calls */ EMPATHY_TYPE_CONTACT_LIST_FLAGS, /* Flags */ }; priv = GET_PRIV (store); gtk_tree_store_set_column_types (GTK_TREE_STORE (store), EMPATHY_CONTACT_LIST_STORE_COL_COUNT, types); /* Set up sorting */ gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (store), EMPATHY_CONTACT_LIST_STORE_COL_NAME, contact_list_store_name_sort_func, store, NULL); gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (store), EMPATHY_CONTACT_LIST_STORE_COL_STATUS, contact_list_store_state_sort_func, store, NULL); priv->sort_criterium = EMPATHY_CONTACT_LIST_STORE_SORT_NAME; empathy_contact_list_store_set_sort_criterium (store, priv->sort_criterium); }