[maemo-commits] [maemo-commits] r15889 - projects/haf/branches/hildon-fm/fremantle/hildon-fm
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Tue Aug 26 13:45:29 EEST 2008
- Previous message: [maemo-commits] r15888 - projects/haf/trunk/hildon-fm/tests
- Next message: [maemo-commits] r15890 - projects/haf/branches/hildon-fm/fremantle/hildon-fm
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: yangli Date: 2008-08-26 13:45:21 +0300 (Tue, 26 Aug 2008) New Revision: 15889 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 Log: complete the open 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-25 13:33:55 UTC (rev 15888) +++ projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-chooser-dialog.c 2008-08-26 10:45:21 UTC (rev 15889) @@ -83,6 +83,8 @@ #define FILE_SELECTION_WIDTH_TOTAL 590 /* Width for full filetree (both content and navigation pane) */ +/* adopted from GTK MAXPATHLEN */ +#define MAXPATHLEN 1024 #ifdef DEBUG #define DBG(args...) fprintf (stderr, ## args) @@ -131,7 +133,8 @@ struct _HildonFileChooserDialogPrivate { GtkWidget *up_button; GtkWidget *path_button; - + GtkWidget *path_label; + GtkWidget *action_button; GtkWidget *folder_button; GtkWidget *cancel_button; @@ -367,11 +370,33 @@ self->priv->max_filename_length); } -static void file_activated_handler(GtkWidget * widget, gpointer user_data) +static void file_activated_handler(GtkWidget * widget, gpointer data) { - hildon_file_chooser_update_path_button(HILDON_FILE_CHOOSER_DIALOG(user_data)); + g_assert(HILDON_IS_FILE_CHOOSER_DIALOG(data)); + HildonFileChooserDialogPrivate *priv = HILDON_FILE_CHOOSER_DIALOG(data)->priv; + + if(priv->action == GTK_FILE_CHOOSER_ACTION_OPEN) { + g_signal_emit_by_name(data, "response", GTK_RESPONSE_OK, NULL); + } + } +static void folder_activated_handler(GtkWidget * widget, gpointer data) +{ + g_assert(HILDON_IS_FILE_CHOOSER_DIALOG(data)); + HildonFileChooserDialogPrivate *priv = HILDON_FILE_CHOOSER_DIALOG(data)->priv; + + switch (priv->action) { + case GTK_FILE_CHOOSER_ACTION_OPEN: + case GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER: + hildon_file_chooser_update_path_button(HILDON_FILE_CHOOSER_DIALOG(data)); + break; + default: + ULOG_INFO("wring dialog for the folder activated handler\n"); + break; + } +} + static void hildon_file_chooser_dialog_select_text(HildonFileChooserDialogPrivate *priv) { @@ -1089,7 +1114,12 @@ FILE_SELECTION_WIDTH_TOTAL, FILE_SELECTION_HEIGHT); gtk_widget_show(GTK_WIDGET(priv->filetree)); + hildon_file_selection_show_content_pane(priv->filetree); + hildon_file_selection_hide_navigation_pane(priv->filetree); hildon_file_selection_show_content_pane(priv->filetree); + gtk_widget_show_all(priv->hbox_address); + gtk_widget_hide(priv->path_button); + gtk_widget_show(priv->path_label); gtk_window_set_title(GTK_WINDOW(self), _("ckdg_ti_open_file")); gtk_button_set_label(GTK_BUTTON(priv->action_button), _("ckdg_bd_select_object_ok_open")); @@ -1158,7 +1188,8 @@ HILDON_MARGIN_DEFAULT, FILE_SELECTION_ADDRESS_HEIGHT); - gtk_widget_show(priv->hbox_address); + gtk_widget_show_all(priv->hbox_address); + gtk_widget_hide(priv->path_label); gtk_widget_show(GTK_WIDGET(priv->filetree)); hildon_file_selection_show_content_pane(priv->filetree); hildon_file_selection_hide_navigation_pane(priv->filetree); @@ -1263,8 +1294,6 @@ { GtkWidget *dialog; HildonFileChooserDialogPrivate *priv; - g_assert(HILDON_IS_FILE_CHOOSER_DIALOG(dialog)); - priv = HILDON_FILE_CHOOSER_DIALOG(dialog)->priv; gboolean local_only = FALSE; gboolean show_hidden = FALSE; @@ -1286,6 +1315,9 @@ "show-upnp", show_upnp, NULL); gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE); + g_assert(HILDON_IS_FILE_CHOOSER_DIALOG(dialog)); + priv = HILDON_FILE_CHOOSER_DIALOG(dialog)->priv; + g_assert(HILDON_IS_FILE_SELECTION(priv->filetree)); hildon_file_selection_set_invisible_files(priv->filetree, priv->invisible_files); @@ -2052,15 +2084,14 @@ GtkTreeIter iter; GtkTreeIter cur_iter; char *path; - char *cur_path; - gchar *gtk_tree_path_str; + 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(GTK_TREE_MODEL(priv->model), - path, &iter); + 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, @@ -2091,16 +2122,27 @@ &iter);*/ } //free(title); - path_string = g_malloc(100); - memset(path_string, 0, 100); + path_string = g_malloc(MAXPATHLEN); + memset(path_string, 0, MAXPATHLEN); for (list = g_list_last(list); list; list = list->prev) { if(strlen(path_string) == 0) strcpy(path_string, list->data); - else - strcat(path_string, list->data); + else { + if(strlen(list->data) + strlen(path_string) < MAXPATHLEN) + strcat(path_string, list->data); + else + ULOG_INFO("path length exceeds the maximum path length 1024\n"); + } strcat(path_string, "/"); } - gtk_button_set_label(GTK_BUTTON(priv->path_button), path_string); + if(priv->action == GTK_FILE_CHOOSER_ACTION_SAVE) + gtk_button_set_label(GTK_BUTTON(priv->path_button), path_string); + else if(priv->action == GTK_FILE_CHOOSER_ACTION_OPEN) { + printf("yang set label string to %s\n", path_string); + gtk_label_set_text(GTK_LABEL(priv->path_label), path_string); + } + else + ULOG_INFO("no widget to update the path\n"); g_free(path_string); g_list_free(list); free(title); @@ -2112,13 +2154,11 @@ GtkTreeIter iter; GtkTreeIter cur_iter; char *path = NULL; - GError **error; 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){ - hildon_file_system_model_load_uri(GTK_TREE_MODEL(priv->model), - path, &iter); + 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); @@ -2134,15 +2174,6 @@ g_signal_emit_by_name(data, "response", GTK_RESPONSE_OK, NULL); } -static void hildon_response_folder_button_clicked(GtkWidget *widget, - gpointer data ) -{ - g_return_if_fail(HILDON_IS_FILE_CHOOSER_DIALOG(data)); - g_signal_emit_by_name(data, "response", HILDON_RESPONSE_FOLDER_BUTTON, NULL); - - g_print ("folder button is clicked\n"); -} - static void hildon_file_chooser_dialog_init(HildonFileChooserDialog * self) { GtkMenuShell *shell; @@ -2170,7 +2201,7 @@ image = gtk_image_new_from_stock(GTK_STOCK_GO_BACK, GTK_ICON_SIZE_BUTTON); priv->up_button = g_object_new(GTK_TYPE_BUTTON, "gtk-button-images", TRUE ); - gtk_button_set_image(priv->up_button, image); + gtk_button_set_image(GTK_BUTTON(priv->up_button), image); g_signal_connect (G_OBJECT (priv->up_button), "clicked", G_CALLBACK (hildon_response_up_button_clicked), self); gtk_widget_show(priv->up_button); @@ -2181,6 +2212,10 @@ G_CALLBACK (hildon_response_path_button_clicked), self); gtk_widget_show(priv->path_button); + priv->path_label = g_object_new(GTK_TYPE_LABEL, "label", "Nokia Nxxx/", + "xalign", 0.0f, NULL); + gtk_widget_show(priv->path_label); + priv->action_button = gtk_dialog_add_button(GTK_DIALOG(self), _("ckdg_bd_select_object_ok_open"), @@ -2231,7 +2266,9 @@ gtk_box_pack_start(GTK_BOX(priv->hbox_address), priv->up_button, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(priv->hbox_address), priv->path_button, - FALSE, TRUE, 0); + FALSE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(priv->hbox_address), priv->path_label, + FALSE, TRUE, 0); priv->caption_control_location = hildon_caption_new(size_group, _("sfil_fi_save_objects_items"), @@ -2367,6 +2404,8 @@ (hildon_file_chooser_dialog_current_folder_changed), priv); g_signal_connect(priv->filetree, "file-activated", G_CALLBACK(file_activated_handler), obj); + g_signal_connect(priv->filetree, "folder-activated", + G_CALLBACK(folder_activated_handler), obj); g_signal_connect_object(priv->model, "finished-loading", G_CALLBACK(hildon_file_chooser_dialog_finished_loading), obj, 0); 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-25 13:33:55 UTC (rev 15888) +++ projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-selection.c 2008-08-26 10:45:21 UTC (rev 15889) @@ -108,6 +108,7 @@ static guint signal_folder_changed, signal_file_activated, + signal_folder_activated, signal_selection_changed; /* Signal ids */ static guint signal_navigation_pane_context_menu, @@ -1077,10 +1078,23 @@ g_signal_new("file-activated", HILDON_TYPE_FILE_SELECTION, G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(HildonFileSelectionClass, - file_activated), NULL, NULL, + file_activated), NULL, NULL, gtk_marshal_VOID__VOID, G_TYPE_NONE, 0); /** + * HildonFileSelection::folder-activated: + * @self: a #HildonFileSelection widget + * + * ::folder-activated signal is emitted when user selects an folder item from + * content pane. + */ + signal_folder_activated = + g_signal_new("folder-activated", HILDON_TYPE_FILE_SELECTION, + G_SIGNAL_RUN_LAST, + 0, NULL, NULL, + gtk_marshal_VOID__VOID, G_TYPE_NONE, 0); + + /** * HildonFileSelection::selection-changed: * @self: a #HildonFileSelection widget * @@ -1656,7 +1670,7 @@ rebind_models(priv); hildon_file_selection_inspect_view(priv); - g_signal_emit(self, signal_file_activated, 0); + g_signal_emit(self, signal_folder_activated, 0); /* These DON'T affect colums that have AUTOSIZE as sizing type ;) */ @@ -1785,6 +1799,7 @@ HILDON_FILE_SELECTION(data), dir_path); gtk_tree_path_free(dir_path); } + g_signal_emit(data, signal_folder_activated, 0); } else { /* When we activate file, let's check if we need to reload */ GtkTreeIter iter; @@ -1796,7 +1811,6 @@ HILDON_FILE_SYSTEM_MODEL(self->priv->main_model), &iter, FALSE); } - g_signal_emit(data, signal_file_activated, 0); } } @@ -3157,10 +3171,9 @@ hildon_file_selection_create_thumbnail_view(self); if(self->priv->pannable_flag){ - printf("pannarea attached \n"); - gtk_container_add(HILDON_PANNABLE_AREA(priv->scroll_dir), GTK_WIDGET(priv->dir_tree)); - gtk_container_add(HILDON_PANNABLE_AREA(priv->scroll_list), GTK_WIDGET(priv->view[0])); - gtk_container_add(HILDON_PANNABLE_AREA(priv->scroll_thumb), GTK_WIDGET(priv->view[1])); + gtk_container_add(GTK_CONTAINER(priv->scroll_dir), priv->dir_tree); + gtk_container_add(GTK_CONTAINER(priv->scroll_list), priv->view[0]); + gtk_container_add(GTK_CONTAINER(priv->scroll_thumb), priv->view[1]); } else{ gtk_container_add(GTK_CONTAINER(priv->scroll_dir), priv->dir_tree);
- Previous message: [maemo-commits] r15888 - projects/haf/trunk/hildon-fm/tests
- Next message: [maemo-commits] r15890 - projects/haf/branches/hildon-fm/fremantle/hildon-fm
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]