[maemo-commits] [maemo-commits] r16832 - projects/haf/branches/hildon-fm/fremantle/hildon-fm

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Mon Dec 1 17:12:31 EET 2008
Author: yangli
Date: 2008-12-01 17:12:31 +0200 (Mon, 01 Dec 2008)
New Revision: 16832

Modified:
   projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-chooser-dialog.c
Log:
make the chooser dialogs recognize the virtual node

Modified: projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-chooser-dialog.c
===================================================================
--- projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-chooser-dialog.c	2008-12-01 14:08:51 UTC (rev 16831)
+++ projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-chooser-dialog.c	2008-12-01 15:12:31 UTC (rev 16832)
@@ -2116,32 +2116,23 @@
     HildonFileChooserDialogPrivate *priv = HILDON_FILE_CHOOSER_DIALOG(self)->priv;
     GtkTreeIter iter;
     GtkTreeIter cur_iter;
-    char *path;
     gchar *gtk_tree_path_str = NULL;
     gchar *title;
     gchar *path_string;
     GList *list = NULL;
 
-    if((path = hildon_file_selection_get_current_folder_uri(priv->filetree)) != NULL){
-      hildon_file_system_model_load_uri(priv->model,
-					(const char*) path, &iter);
-	free(path);
-        gtk_tree_model_get(GTK_TREE_MODEL(priv->model), &iter,
-                           HILDON_FILE_SYSTEM_MODEL_COLUMN_DISPLAY_NAME,
-                           &title, -1);
-	gtk_tree_path_str = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(priv->model),
-	                    &iter);
-    } else
-        ULOG_INFO("Failed to get current folder iter");  
-    if(!g_strcasecmp(gtk_tree_path_str, "0")) {
-      gtk_widget_set_sensitive(priv->up_button, TRUE);
+    hildon_file_selection_get_current_folder_iter(priv->filetree, &iter);
+    gtk_tree_model_get(GTK_TREE_MODEL(priv->model), &iter,
+		       HILDON_FILE_SYSTEM_MODEL_COLUMN_DISPLAY_NAME,
+		       &title, -1);
+    gtk_tree_path_str = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(priv->model),
+							    &iter);
+    if(strlen(gtk_tree_path_str) > 1) {
+       gtk_widget_set_sensitive(priv->up_button, TRUE);
     }
-    else {
-      gtk_widget_set_sensitive(priv->up_button, TRUE);
-    }
-    free(gtk_tree_path_str);
-    while(g_strcasecmp(title, "/")/*!g_strcasecmp(gtk_tree_path_str, "0")*/){
-        //free(title);     
+    while(g_ascii_strncasecmp(gtk_tree_path_str, "0", 1) == 0 && 
+	  (strlen(gtk_tree_path_str) > 1)){
+        free(gtk_tree_path_str);
 	if(strlen(title) == 0)
 	  list = g_list_append(list, " "); 
 	else
@@ -2151,10 +2142,10 @@
         gtk_tree_model_get(GTK_TREE_MODEL(priv->model), &iter,
                            HILDON_FILE_SYSTEM_MODEL_COLUMN_DISPLAY_NAME,
                            &title, -1);
-	/*gtk_tree_path_str = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(priv->model),
-	             &iter);*/
+	gtk_tree_path_str = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(priv->model),
+								&iter);
     }
-    //free(title);
+    free(gtk_tree_path_str);
     path_string = g_malloc(MAXPATHLEN);
     memset(path_string, 0, MAXPATHLEN);
     for (list = g_list_last(list); list; list = list->prev) {
@@ -2192,13 +2183,22 @@
 
     g_return_if_fail(HILDON_IS_FILE_CHOOSER_DIALOG(data));
     HildonFileChooserDialogPrivate *priv = HILDON_FILE_CHOOSER_DIALOG(data)->priv;
-    if((path = hildon_file_selection_get_current_folder_uri(priv->filetree)) != NULL){
+    path = hildon_file_selection_get_current_folder_uri(priv->filetree);
+    hildon_file_system_model_load_uri(priv->model, path, &cur_iter);
+
+    if(gtk_tree_model_iter_parent(GTK_TREE_MODEL(priv->model), &iter, &cur_iter)){
+	hildon_file_selection_set_current_folder_iter(priv->filetree, &iter);
+	path = hildon_file_selection_get_current_folder_uri(priv->filetree);
         hildon_file_system_model_load_uri(priv->model, path, &iter);
 	cur_iter = iter;
-	gtk_tree_model_iter_parent(GTK_TREE_MODEL(priv->model), &iter, &cur_iter);
-	hildon_file_selection_set_current_folder_iter(priv->filetree, &iter);
 	free(path);
     }
+    if (gtk_tree_model_iter_parent(GTK_TREE_MODEL(priv->model), &iter, &cur_iter)) {
+	gtk_widget_set_sensitive(priv->up_button, TRUE);
+    }
+    else {
+      gtk_widget_set_sensitive(priv->up_button, FALSE);
+    }
 }
 
 static void hildon_response_path_button_clicked(GtkWidget *widget,
@@ -2589,7 +2589,7 @@
       model = hildon_touch_selector_get_model(HILDON_TOUCH_SELECTOR(priv->selector), 0);
 
       /* if there is a valid extension selected, just leave it */
-      if (hildon_touch_selector_get_selected ((HildonTouchSelector *) priv->selector, 0, &iter))
+      if (hildon_touch_selector_get_selected (priv->selector, 0, &iter))
       //if (hildon_touch_selector_get_active_iter (priv->selector, 0, &iter))
         {
 	  gboolean matches;
@@ -2610,7 +2610,7 @@
 	  gtk_tree_model_get (model, &iter, 0, &ext, -1);
 	  if (strcmp (ext, priv->ext_name + 1) == 0)
 	    {
-	      hildon_touch_selector_select_iter ((HildonTouchSelector *) priv->selector, 0, &iter, TRUE);
+	      hildon_touch_selector_select_iter (priv->selector, 0, &iter, TRUE);
 	      //hildon_touch_selector_set_active_iter (priv->selector, 0, &iter, TRUE);
               hildon_button_set_value(HILDON_BUTTON(priv->extensions_combo), ext);
 
@@ -2690,7 +2690,7 @@
 
   g_assert(HILDON_IS_FILE_CHOOSER_DIALOG(data));
   HildonFileChooserDialogPrivate *priv = HILDON_FILE_CHOOSER_DIALOG(data)->priv;
-  priv->type_select_dialog = hildon_dialog_new(); 
+  priv->type_select_dialog = hildon_dialog_new();  
 
   priv->selector = hildon_touch_selector_new_text();
   list = g_list_first(priv->extensions_list);


More information about the maemo-commits mailing list