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

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Mon Aug 18 11:30:33 EEST 2008
Author: yangli
Date: 2008-08-18 11:30:03 +0300 (Mon, 18 Aug 2008)
New Revision: 15879

Modified:
   projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-chooser-dialog.c
   projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-selection.c
   projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-selection.h
   projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-system-model.c
Log:
done the feature for up button and path button, UI will be refined, backup the code for folder change dialog

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-08-14 13:45:59 UTC (rev 15878)
+++ projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-chooser-dialog.c	2008-08-18 08:30:03 UTC (rev 15879)
@@ -114,6 +114,9 @@
 
 void hildon_gtk_file_chooser_install_properties(GObjectClass * klass);
 
+static void hildon_file_chooser_dialog_update_path(GtkWidget *fs_widget, gpointer data);
+static void hildon_file_chooser_update_path_button(HildonFileChooserDialog *self);
+
 enum {
     PROP_EMPTY_TEXT = 0x2000,
     PROP_FILE_SYSTEM_MODEL,
@@ -375,7 +378,8 @@
 
 static void file_activated_handler(GtkWidget * widget, gpointer user_data)
 {
-    gtk_dialog_response(GTK_DIALOG(user_data), GTK_RESPONSE_OK);
+    hildon_file_chooser_update_path_button(HILDON_FILE_CHOOSER_DIALOG(user_data));
+    //gtk_dialog_response(GTK_DIALOG(user_data), GTK_RESPONSE_OK);
 }
 
 static void
@@ -2031,9 +2035,80 @@
                                           strlen(gtk_entry_get_text(GTK_ENTRY(widget))) > 0);
 }
 
+static void hildon_file_chooser_update_path_button(HildonFileChooserDialog *self)
+{
+    g_return_if_fail(HILDON_IS_FILE_CHOOSER_DIALOG(self));
+    HildonFileChooserDialogPrivate *priv = HILDON_FILE_CHOOSER_DIALOG(self)->priv;
+    GtkTreeIter iter;
+    GtkTreeIter cur_iter;
+    //gchar *gtk_tree_path_str;
+    gchar *title;
+    gchar *path_string;
+    GList *list = NULL;
+
+    
+    if (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);
+	if(strlen(title) == 0)
+	  list = g_list_append(list, "Nokia"); 
+	else
+	  list = g_list_append(list, title); 
+	printf("yang : before the loop, the title is %s\n", title);
+	
+	/*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");  
+
+    while(g_strcasecmp(title, "/")/*!g_strcasecmp(gtk_tree_path_str, "0")*/){
+        //free(title);
+        //free(gtk_tree_path_str);
+	cur_iter = iter;
+	gtk_tree_model_iter_parent(GTK_TREE_MODEL(priv->model), &iter, &cur_iter);
+        gtk_tree_model_get(GTK_TREE_MODEL(priv->model), &iter,
+                           HILDON_FILE_SYSTEM_MODEL_COLUMN_DISPLAY_NAME,
+                           &title, -1);      
+	printf("yang : in the loop, the title is %s\n", title);
+	if(strlen(title) == 0)
+	  list = g_list_append(list, "Nokia"); 
+	else
+	  list = g_list_append(list, title); 
+	/*gtk_tree_path_str = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(priv->model),
+	             &iter);*/
+    }
+    //free(title);
+    path_string = g_malloc(100);
+    memset(path_string, 0, 100);
+    for (list = g_list_last(list); list; list = list->prev) {
+      printf("yang : content is %s", list->data);
+      if(strlen(path_string) == 0)
+	strcpy(path_string, list->data);
+      else
+	strcat(path_string, list->data);
+      strcat(path_string, "/");
+    }
+    gtk_button_set_label(GTK_BUTTON(priv->path_button), path_string);
+    g_free(path_string);
+    g_list_free(list);  
+    free(title);
+}
+
 static void hildon_response_up_button_clicked( GtkWidget *widget,
 					       gpointer   data )
 {
+    GtkTreeIter iter;
+    GtkTreeIter cur_iter;
+
+    g_return_if_fail(HILDON_IS_FILE_CHOOSER_DIALOG(data));
+    HildonFileChooserDialogPrivate *priv = HILDON_FILE_CHOOSER_DIALOG(data)->priv;
+    if (hildon_file_selection_get_current_folder_iter(priv->filetree, &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);
+    }
+    //hildon_file_chooser_update_path_button(HILDON_FILE_CHOOSER_DIALOG(data));
     g_print ("up button is clicked\n");
 }
 
@@ -2086,7 +2161,7 @@
     priv->up_button = g_object_new(GTK_TYPE_BUTTON, "gtk-button-images", TRUE );
     gtk_button_set_image(priv->up_button, image);
     g_signal_connect (G_OBJECT (priv->up_button), "clicked",
-		      G_CALLBACK (hildon_response_up_button_clicked), NULL);
+		      G_CALLBACK (hildon_response_up_button_clicked), self);
     gtk_widget_show(priv->up_button);
 
     priv->path_button = g_object_new(GTK_TYPE_BUTTON,  "label", "Nokia Nxxx/", NULL);
@@ -2317,7 +2392,7 @@
 
     gtk_dialog_set_has_separator(GTK_DIALOG(obj), FALSE);
     hildon_file_chooser_dialog_set_limit(HILDON_FILE_CHOOSER_DIALOG(obj));
-
+    //hildon_file_chooser_update_path_button(HILDON_FILE_CHOOSER_DIALOG(obj));
     return obj;
 }
 
@@ -2743,3 +2818,37 @@
   g_object_get (priv->filetree, "show-upnp", &show_upnp, NULL);
   return show_upnp;
 }
+
+static void hildon_file_chooser_dialog_update_path(GtkWidget *fs_widget, gpointer data)
+{
+	GtkFilePath *path = NULL;
+	gboolean showthumbnails = FALSE;
+	HildonFileSystemModel *fsmodel = NULL;
+	GtkTreeIter iter;	// = NULL;
+
+	gchar *title = NULL;
+
+	if (fs_widget == NULL) {
+		return;
+	}
+
+	path = hildon_file_selection_get_current_folder((HildonFileSelection *) fs_widget);
+	if (path == NULL) {
+		return;
+	}
+
+	if (hildon_file_selection_get_current_folder_iter((HildonFileSelection *) fs_widget,
+							  &iter)) {
+		g_object_get(G_OBJECT(fs_widget), "model", &fsmodel, NULL);
+		if (fsmodel == NULL) {
+			gtk_file_path_free(path);
+			return;
+		}
+		gtk_tree_model_get((GtkTreeModel *) fsmodel, &iter,
+				   HILDON_FILE_SYSTEM_MODEL_COLUMN_DISPLAY_NAME, &title, -1);
+	} 
+	printf("yang: title is %s", title);
+	exit(0);
+	g_free(title);
+	gtk_file_path_free(path);
+}

Modified: projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-selection.c
===================================================================
--- projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-selection.c	2008-08-14 13:45:59 UTC (rev 15878)
+++ projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-selection.c	2008-08-18 08:30:03 UTC (rev 15879)
@@ -76,9 +76,6 @@
                                                   GObjectConstructParam *
                                                   construct_properties);
 static void
-hildon_file_selection_set_current_folder_iter(HildonFileSelection * self,
-                                              GtkTreeIter * main_iter);
-static void
 hildon_file_selection_check_close_load_banner(GtkTreeModel *model,
   GtkTreeIter *iter, gpointer data);
 static void hildon_file_selection_close_load_banner(HildonFileSelection *
@@ -139,6 +136,9 @@
     GtkWidget *scroll_thumb;
     GtkWidget *dir_tree;
     GtkWidget *view[4]; /* List, thumbnail, empty, repair */
+    /* the pointer to the file_chooser_dialog to 
+       notify to change the text in the path button */
+    GtkWidget *chooser_dialog; 
     int cur_view;
     GtkWidget *hpaned;
 
@@ -1437,7 +1437,7 @@
   GtkTreePath *sort_path = NULL;
   gboolean found = FALSE;
 
-  //GDK_THREADS_ENTER();
+  GDK_THREADS_ENTER();
 
   self = HILDON_FILE_SELECTION(data);
   priv = self->priv;
@@ -1490,7 +1490,7 @@
   /* We have to return TRUE, because cancel removes the handler now */
   hildon_file_selection_cancel_delayed_select(priv);
 
-  //GDK_THREADS_LEAVE();
+  GDK_THREADS_LEAVE();
 
   return TRUE;
 }
@@ -1649,6 +1649,7 @@
 
             rebind_models(priv);
             hildon_file_selection_inspect_view(priv);
+	    g_signal_emit(self, signal_file_activated, 0);
 
             /* These DON'T affect colums that have AUTOSIZE as sizing type
                ;) */
@@ -1713,7 +1714,6 @@
             g_error_free(error);
         }
 #endif
-
         gtk_tree_path_free(sort_path);
     }
 }
@@ -1734,23 +1734,18 @@
        => wrong row might be activated */
     while (gtk_events_pending())
         gtk_main_iteration();
-
     model = gtk_tree_view_get_model(view); /* Content pane filter model */
-
     if (gtk_tree_model_get_iter(model, &iter, path)) {
         gtk_tree_model_get(model, &iter,
                            HILDON_FILE_SYSTEM_MODEL_COLUMN_IS_FOLDER,
                            &is_folder,
                            HILDON_FILE_SYSTEM_MODEL_COLUMN_IS_AVAILABLE,
                            &is_available, -1);
-
         if (is_available) {
           if (is_folder) {
             filter_path = gtk_tree_model_sort_convert_path_to_child_path(
               GTK_TREE_MODEL_SORT(model), path);
 
-
-
             base_path = gtk_tree_model_filter_convert_path_to_child_path(
               GTK_TREE_MODEL_FILTER(
                 HILDON_FILE_SELECTION(data)->priv->view_filter),
@@ -1788,8 +1783,7 @@
                 HILDON_FILE_SYSTEM_MODEL(self->priv->main_model),
                 &iter, FALSE);
             }
-
-            g_signal_emit(data, signal_file_activated, 0);
+	    g_signal_emit(data, signal_file_activated, 0);
           }
         }
     }
@@ -3356,7 +3350,7 @@
                                          (gint *) key, order);
 }
 
-static void
+void
 hildon_file_selection_set_current_folder_iter(HildonFileSelection * self,
                                               GtkTreeIter * main_iter)
 {
@@ -4440,14 +4434,14 @@
 {
   struct idle_cursor_data *c = (struct idle_cursor_data *)data;
 
-  //GDK_THREADS_ENTER ();
+  GDK_THREADS_ENTER ();
   if (c->stubbornly)
     hildon_file_selection_set_cursor_stubbornly (c->self, c->view, c->path);
   else
     gtk_tree_view_set_cursor (c->view, c->path, NULL, FALSE);
 
   gtk_tree_path_free (c->path);
-  //GDK_THREADS_LEAVE ();
+  GDK_THREADS_LEAVE ();
   g_free (c);
 
   return FALSE;
@@ -4718,6 +4712,13 @@
   return ret;
 }
 
+/*void hildon_file_selection_associate_file_chooser_dialog(HildonFileSelection *self,
+							 HildonFileChooserDialog *chooser_dialog)
+{
+   HildonFileSelectionPrivate *priv = self->priv;
+   priv->chooser_dialog = chooser_dialog;
+   }*/
+
 void get_current_tree_path(HildonFileSelection *self, char* uri)
 {
   HildonFileSelectionPrivate *priv = self->priv;
@@ -4735,3 +4736,4 @@
   }
 }
 
+

Modified: projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-selection.h
===================================================================
--- projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-selection.h	2008-08-14 13:45:59 UTC (rev 15878)
+++ projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-selection.h	2008-08-18 08:30:03 UTC (rev 15879)
@@ -30,6 +30,7 @@
 #include <gtk/gtkcontainer.h>
 #include <gtk/gtkfilefilter.h>
 #include "hildon-file-system-model.h"
+//#include "hildon-file-chooser-dialog.h"
 
 G_BEGIN_DECLS
 #define HILDON_TYPE_FILE_SELECTION (hildon_file_selection_get_type())
@@ -167,6 +168,10 @@
 gboolean hildon_file_selection_get_current_folder_iter(HildonFileSelection
                                                        * self,
                                                        GtkTreeIter * iter);
+void
+hildon_file_selection_set_current_folder_iter(HildonFileSelection * self,
+                                              GtkTreeIter * main_iter);
+
 #ifndef HILDON_DISABLE_DEPRECATED
 gboolean hildon_file_selection_get_active_content_iter(HildonFileSelection
                                                        *self, GtkTreeIter *iter);
@@ -224,5 +229,8 @@
 
 void get_current_tree_path(HildonFileSelection *self, char* uri);
 
+/*void hildon_file_selection_associate_file_chooser_dialog(HildonFileSelection *self,
+							 HildonFileChooserDialog *chooser_dialog);
+*/
 G_END_DECLS
 #endif

Modified: projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-system-model.c
===================================================================
--- projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-system-model.c	2008-08-14 13:45:59 UTC (rev 15878)
+++ projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-system-model.c	2008-08-18 08:30:03 UTC (rev 15879)
@@ -1166,7 +1166,7 @@
 
   dfa_clos *c = (dfa_clos *)data;
   
-  //GDK_THREADS_ENTER ();
+  GDK_THREADS_ENTER ();
   
   node = hildon_file_system_model_search_folder (c->monitor);
   if (node)
@@ -1177,7 +1177,7 @@
       hildon_file_system_model_files_added (c->monitor, c->paths, c->data);
     }
 
-  //GDK_THREADS_LEAVE ();
+  GDK_THREADS_LEAVE ();
 
   g_object_unref (c->monitor);
   gtk_file_paths_free (c->paths);


More information about the maemo-commits mailing list