diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2010-10-19 04:00:29 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2010-10-19 04:00:29 +0800 |
commit | a133df0caffc738bb0db8e0f23c3eb628eac12a1 (patch) | |
tree | 3ae34c3440418424aae018e248067e2725873e3c /mail/em-folder-tree.c | |
parent | f261f288c8dee85c36ff1b199f71a7730870ae47 (diff) | |
download | gsoc2013-evolution-a133df0caffc738bb0db8e0f23c3eb628eac12a1.tar.gz gsoc2013-evolution-a133df0caffc738bb0db8e0f23c3eb628eac12a1.tar.zst gsoc2013-evolution-a133df0caffc738bb0db8e0f23c3eb628eac12a1.zip |
Add an "ellipsize" property to EMFolderTree.
So we don't have to access GConf directly from EMFolderTree. The
property gets bound to an EShellSettings property, which is in turn
bound to the "no_folder_dots" GConf key by way of a transform function.
Diffstat (limited to 'mail/em-folder-tree.c')
-rw-r--r-- | mail/em-folder-tree.c | 63 |
1 files changed, 53 insertions, 10 deletions
diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c index 46f08e06fa..15cf4a5f35 100644 --- a/mail/em-folder-tree.c +++ b/mail/em-folder-tree.c @@ -114,6 +114,7 @@ struct _EMFolderTreePrivate { gboolean skip_double_click; GtkCellRenderer *text_renderer; + PangoEllipsizeMode ellipsize; GtkWidget *selectable; /* an ESelectable, where to pass selectable calls */ @@ -123,6 +124,7 @@ struct _EMFolderTreePrivate { enum { PROP_0, + PROP_ELLIPSIZE, PROP_SESSION }; @@ -724,6 +726,12 @@ folder_tree_set_property (GObject *object, GParamSpec *pspec) { switch (property_id) { + case PROP_ELLIPSIZE: + em_folder_tree_set_ellipsize ( + EM_FOLDER_TREE (object), + g_value_get_enum (value)); + return; + case PROP_SESSION: folder_tree_set_session ( EM_FOLDER_TREE (object), @@ -741,6 +749,13 @@ folder_tree_get_property (GObject *object, GParamSpec *pspec) { switch (property_id) { + case PROP_ELLIPSIZE: + g_value_set_enum ( + value, + em_folder_tree_get_ellipsize ( + EM_FOLDER_TREE (object))); + return; + case PROP_SESSION: g_value_set_object ( value, @@ -1035,6 +1050,17 @@ folder_tree_class_init (EMFolderTreeClass *class) g_object_class_install_property ( object_class, + PROP_ELLIPSIZE, + g_param_spec_enum ( + "ellipsize", + NULL, + NULL, + PANGO_TYPE_ELLIPSIZE_MODE, + PANGO_ELLIPSIZE_NONE, + G_PARAM_READWRITE)); + + g_object_class_install_property ( + object_class, PROP_SESSION, g_param_spec_object ( "session", @@ -1257,10 +1283,6 @@ folder_tree_new (EMFolderTree *folder_tree) GtkTreeViewColumn *column; GtkCellRenderer *renderer; GtkWidget *tree; - GConfClient *client; - const gchar *key; - - client = gconf_client_get_default (); /* FIXME Gross hack */ tree = GTK_WIDGET (folder_tree); @@ -1280,15 +1302,16 @@ folder_tree_new (EMFolderTree *folder_tree) render_icon, NULL, NULL); renderer = gtk_cell_renderer_text_new (); - key = "/apps/evolution/mail/display/no_folder_dots"; - if (!gconf_client_get_bool (client, key, NULL)) - g_object_set ( - renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); gtk_tree_view_column_pack_start (column, renderer, TRUE); gtk_tree_view_column_set_cell_data_func ( column, renderer, render_display_name, NULL, NULL); folder_tree->priv->text_renderer = g_object_ref (renderer); + g_object_bind_property ( + folder_tree, "ellipsize", + renderer, "ellipsize", + G_BINDING_SYNC_CREATE); + g_signal_connect_swapped ( renderer, "edited", G_CALLBACK (folder_tree_cell_edited_cb), folder_tree); @@ -1302,8 +1325,6 @@ folder_tree_new (EMFolderTree *folder_tree) gtk_tree_view_set_search_column ((GtkTreeView *)tree, COL_STRING_DISPLAY_NAME); - g_object_unref (client); - return (GtkTreeView *) tree; } @@ -1533,6 +1554,28 @@ em_folder_tree_new (EMailSession *session) EM_TYPE_FOLDER_TREE, "session", session, NULL); } +PangoEllipsizeMode +em_folder_tree_get_ellipsize (EMFolderTree *folder_tree) +{ + g_return_val_if_fail (EM_IS_FOLDER_TREE (folder_tree), 0); + + return folder_tree->priv->ellipsize; +} + +void +em_folder_tree_set_ellipsize (EMFolderTree *folder_tree, + PangoEllipsizeMode ellipsize) +{ + g_return_if_fail (EM_IS_FOLDER_TREE (folder_tree)); + + if (ellipsize == folder_tree->priv->ellipsize) + return; + + folder_tree->priv->ellipsize = ellipsize; + + g_object_notify (G_OBJECT (folder_tree), "ellipsize"); +} + EMailSession * em_folder_tree_get_session (EMFolderTree *folder_tree) { |