[brasero] Remember the sort column and the order in data project tree



commit 748557fae2d49027c839e7ca3f39b210661cce95
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date:   Mon Aug 31 11:26:57 2009 +0200

    Remember the sort column and the order in data project tree
    This fixes #593492 -  Compilation must be ordered by file name

 src/brasero-data-disc.c |   55 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 55 insertions(+), 0 deletions(-)
---
diff --git a/src/brasero-data-disc.c b/src/brasero-data-disc.c
index 767420f..95d6a6c 100644
--- a/src/brasero-data-disc.c
+++ b/src/brasero-data-disc.c
@@ -33,6 +33,8 @@
 
 #include <gtk/gtk.h>
 
+#include <gconf/gconf-client.h>
+
 #include "brasero-misc.h"
 
 #include "eggtreemultidnd.h"
@@ -162,6 +164,9 @@ enum {
 	TARGET_URIS_LIST,
 };
 
+#define GCONF_COLUMN_KEY				"/apps/brasero/display/data_column"
+#define GCONF_COLUMN_ORDER_KEY		"/apps/brasero/display/data_sort_order"
+
 static GtkTargetEntry ntables_cd [] = {
 	{BRASERO_DND_TARGET_DATA_TRACK_REFERENCE_LIST, GTK_TARGET_SAME_WIDGET, TREE_MODEL_ROW},
 	{"text/uri-list", 0, TARGET_URIS_LIST}
@@ -1297,6 +1302,27 @@ brasero_data_disc_message_response_cb (BraseroDiscMessage *message,
 	brasero_data_disc_clear (BRASERO_DISC (self));
 }
 
+static 
+brasero_data_disc_sort_column_changed (GtkTreeSortable *sortable,
+                                       BraseroDataDisc *disc)
+{
+	GtkSortType sort_order;
+	GConfClient *client;
+	gint sort_column;
+
+	gtk_tree_sortable_get_sort_column_id (sortable, &sort_column, &sort_order);
+
+	client = gconf_client_get_default ();
+	gconf_client_set_int (client,
+	                      GCONF_COLUMN_KEY,
+	                      sort_column,
+	                      NULL);
+	gconf_client_set_int (client,
+	                      GCONF_COLUMN_ORDER_KEY,
+	                      sort_order,
+	                      NULL);
+}
+
 static BraseroDiscResult
 brasero_data_disc_set_track (BraseroDataDisc *disc,
 			     BraseroTrackDataCfg *track)
@@ -1305,11 +1331,32 @@ brasero_data_disc_set_track (BraseroDataDisc *disc,
 	BraseroDataDiscPrivate *priv;
 	BraseroStatus *status;
 	GtkWidget *message;
+	GConfClient *client;
+	gint sort_column;
+	gint sort_order;
 
 	priv = BRASERO_DATA_DISC_PRIVATE (disc);
 
 	priv->project = g_object_ref (track);
 
+	client = gconf_client_get_default ();
+	sort_column = gconf_client_get_int (client,
+	                                    GCONF_COLUMN_KEY,
+	                                    NULL);
+	sort_order = gconf_client_get_int (client,
+	                                   GCONF_COLUMN_ORDER_KEY,
+	                                   NULL);
+
+	if ((sort_column == BRASERO_DATA_TREE_MODEL_SIZE
+	||   sort_column == BRASERO_DATA_TREE_MODEL_MIME_DESC
+	||   sort_column == BRASERO_DATA_TREE_MODEL_NAME)
+	&& (sort_order == GTK_SORT_ASCENDING
+	||  sort_order == GTK_SORT_DESCENDING))
+		gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (track),
+						      sort_column,
+						      sort_order);
+	g_object_unref (client);
+
 	/* filtered files */
 	priv->filter = brasero_file_filtered_new (priv->project);
 	brasero_file_filtered_set_right_button_group (BRASERO_FILE_FILTERED (priv->filter), priv->button_size);
@@ -1356,6 +1403,11 @@ brasero_data_disc_set_track (BraseroDataDisc *disc,
 		gtk_action_group_set_visible (priv->import_group, TRUE);
 
 	g_signal_connect (track,
+	                  "sort-column-changed",
+	                  G_CALLBACK (brasero_data_disc_sort_column_changed),
+	                  disc);
+
+	g_signal_connect (track,
 			  "2G-file",
 			  G_CALLBACK (brasero_data_disc_2G_file_cb),
 			  disc);
@@ -1523,6 +1575,9 @@ brasero_data_disc_unset_track (BraseroDataDisc *disc)
 	}
 
 	g_signal_handlers_disconnect_by_func (priv->project,
+					      brasero_data_disc_sort_column_changed,
+					      disc);
+	g_signal_handlers_disconnect_by_func (priv->project,
 					      brasero_data_disc_2G_file_cb,
 					      disc);
 	g_signal_handlers_disconnect_by_func (priv->project,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]