X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-folder-view.c;h=47a5f4ee85dba788941feb94823cb45644f9e4c4;hp=cfe7ea8bda620a95bee7741123704d121bbfcd62;hb=6d2997c529d0f0eef75ee56242963c29164c1ae7;hpb=92572a5a8545b048ada98f4ad6f9573f900cf29d;ds=sidebyside diff --git a/src/widgets/modest-folder-view.c b/src/widgets/modest-folder-view.c index cfe7ea8..47a5f4e 100644 --- a/src/widgets/modest-folder-view.c +++ b/src/widgets/modest-folder-view.c @@ -236,6 +236,7 @@ struct _ModestFolderViewPrivate { ModestFolderViewFilter filter; TnyFolderStoreQuery *query; + gboolean do_refresh; guint timer_expander; gchar *local_account_name; @@ -255,6 +256,7 @@ struct _ModestFolderViewPrivate { gulong outbox_deleted_handler; guint activity_changed_handler; + GdkColor *active_color; }; #define MODEST_FOLDER_VIEW_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE((o), \ @@ -604,15 +606,13 @@ format_compact_style (gchar **item_name, buffer = g_string_append (buffer, *item_name); if (concat_folder_name) { - if (bold) buffer = g_string_append (buffer, ""); buffer = g_string_append (buffer, folder_name); - if (bold) buffer = g_string_append (buffer, ""); } g_free (*item_name); g_object_unref (account); *item_name = g_string_free (buffer, FALSE); - *use_markup = bold; + *use_markup = FALSE; } else { *use_markup = FALSE; } @@ -739,10 +739,21 @@ text_cell_data (GtkTreeViewColumn *column, if (item_name && item_weight) { /* Set the name in the treeview cell: */ - if (use_markup) - g_object_set (rendobj, "markup", item_name, "weight-set", FALSE, NULL); - else - g_object_set (rendobj, "text", item_name, "weight-set", TRUE, "weight", item_weight, NULL); + if (priv->cell_style == MODEST_FOLDER_VIEW_CELL_STYLE_COMPACT && item_weight == 800 && priv->active_color) { + g_object_set (rendobj, + "text", item_name, + "weight-set", FALSE, + "foreground-set", TRUE, + "foreground-gdk", priv->active_color, + NULL); + } else { + g_object_set (rendobj, + "text", item_name, + "foreground-set", FALSE, + "weight-set", TRUE, + "weight", item_weight, + NULL); + } /* Notify display name observers */ /* TODO: What listens for this signal, and how can it use only the new name? */ @@ -842,7 +853,7 @@ messages_cell_data (GtkTreeViewColumn *column, item_name = g_strdup_printf (drafts?_("mcen_ti_messages"):_("mcen_ti_new_messages"), number); } else if (number == 1) { - item_name = g_strdup_printf (drafts?_("mcen_ti_message"):_("mcen_ti_new_message"), + item_name = g_strdup_printf (drafts?_("mcen_ti_message"):_("mcen_ti_new_messages_singular"), number); } } @@ -1259,6 +1270,7 @@ modest_folder_view_init (ModestFolderView *obj) priv->timer_expander = 0; priv->account_store = NULL; priv->query = NULL; + priv->do_refresh = TRUE; priv->style = MODEST_FOLDER_VIEW_STYLE_SHOW_ALL; priv->cur_folder_store = NULL; priv->visible_account_id = NULL; @@ -1308,6 +1320,8 @@ modest_folder_view_init (ModestFolderView *obj) G_CALLBACK(on_configuration_key_changed), obj); + priv->active_color = NULL; + update_style (obj); g_signal_connect (G_OBJECT (obj), "notify::style", G_CALLBACK (on_notify_style), (gpointer) obj); @@ -1333,6 +1347,11 @@ modest_folder_view_finalize (GObject *obj) priv = MODEST_FOLDER_VIEW_GET_PRIVATE(obj); + if (priv->active_color) { + gdk_color_free (priv->active_color); + priv->active_color = NULL; + } + if (priv->timer_expander != 0) { g_source_remove (priv->timer_expander); priv->timer_expander = 0; @@ -1366,6 +1385,19 @@ modest_folder_view_finalize (GObject *obj) priv->display_name_changed_signal = 0; } +#ifdef MODEST_TOOLKIT_HILDON2 + GtkTreeModel *tny_model; + + if (get_inner_models (MODEST_FOLDER_VIEW (obj), NULL, NULL, &tny_model)) { + if (g_signal_handler_is_connected (tny_model, + priv->activity_changed_handler)) { + g_signal_handler_disconnect (tny_model, + priv->activity_changed_handler); + priv->activity_changed_handler = 0; + } + } +#endif + if (priv->query) { g_object_unref (G_OBJECT (priv->query)); priv->query = NULL; @@ -1766,6 +1798,12 @@ modest_folder_view_on_map (ModestFolderView *self, GtkWidget* modest_folder_view_new (TnyFolderStoreQuery *query) { + return modest_folder_view_new_full (query, TRUE); +} + +GtkWidget* +modest_folder_view_new_full (TnyFolderStoreQuery *query, gboolean do_refresh) +{ GObject *self; ModestFolderViewPrivate *priv; GtkTreeSelection *sel; @@ -1780,6 +1818,8 @@ modest_folder_view_new (TnyFolderStoreQuery *query) if (query) priv->query = g_object_ref (query); + priv->do_refresh = do_refresh; + sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(self)); priv->changed_signal = g_signal_connect (sel, "changed", G_CALLBACK (on_selection_changed), self); @@ -2246,8 +2286,12 @@ modest_folder_view_update_model (ModestFolderView *self, /* FIXME: the local accounts are not shown when the query selects only the subscribed folders */ #ifdef MODEST_TOOLKIT_HILDON2 + TnyGtkFolderListStoreFlags flags; + flags = TNY_GTK_FOLDER_LIST_STORE_FLAG_SHOW_PATH; + if (!priv->do_refresh) + flags &= TNY_GTK_FOLDER_LIST_STORE_FLAG_NO_REFRESH; model = tny_gtk_folder_list_store_new_with_flags (NULL, - TNY_GTK_FOLDER_LIST_STORE_FLAG_SHOW_PATH); + flags); tny_gtk_folder_list_store_set_path_separator (TNY_GTK_FOLDER_LIST_STORE (model), MODEST_FOLDER_PATH_SEPARATOR); #else @@ -3951,7 +3995,7 @@ static void update_style (ModestFolderView *self) { ModestFolderViewPrivate *priv; - GdkColor style_color; + GdkColor style_color, style_active_color; PangoAttrList *attr_list; GtkStyle *style; PangoAttribute *attr; @@ -3985,6 +4029,12 @@ update_style (ModestFolderView *self) NULL); pango_attr_list_unref (attr_list); } + if (priv->active_color) + gdk_color_free (priv->active_color); + + if (gtk_style_lookup_color (GTK_WIDGET (self)->style, "ActiveTextColor", &style_active_color)) { + priv->active_color = gdk_color_copy (&style_active_color); + } } static void