[maemo-commits] [maemo-commits] r15883 - projects/haf/branches/hildon-fm/fremantle/hildon-fm
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Wed Aug 20 17:11:02 EEST 2008
- Previous message: [maemo-commits] r15882 - projects/haf/branches/hildon-fm/fremantle/hildon-fm
- Next message: [maemo-commits] r15884 - projects/haf/trunk/hildon-fm/tests
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: yangli Date: 2008-08-20 17:11:00 +0300 (Wed, 20 Aug 2008) New Revision: 15883 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 Log: improved files filtering in file chooser dialog, button new added besides the fileselection, feature has not yet finished 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-19 08:45:09 UTC (rev 15882) +++ projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-chooser-dialog.c 2008-08-20 14:11:00 UTC (rev 15883) @@ -127,7 +127,9 @@ PROP_MULTIPLE_TEXT, PROP_MAX_NAME_LENGTH, PROP_MAX_FULL_PATH_LENGTH, - PROP_SELECTION_MODE + PROP_SELECTION_MODE, + PROP_INVISIBLE_FILES, + PROP_SHOW_NEW_BUTTON }; struct _HildonFileChooserDialogPrivate { @@ -148,14 +150,6 @@ /* horizontal address box containing the up level button and the path button */ GtkWidget *hbox_address; - /* vertical box containing the address and the tree view */ - GtkWidget *hbox_browser; - /* vertical box containing the new button and two dummy labels */ - GtkWidget *vbox_new; - /* horizontal box containing the vbox_browser and the new button */ - GtkWidget *hbox_whole; - /* fixed container for complexy dialog UI, folder change, move */ - GtkWidget *fixed; GtkWidget *extensions_combo; GtkFileChooserAction action; GtkWidget *popup; @@ -182,6 +176,8 @@ gboolean should_show_folder_button; gboolean should_show_location; gboolean show_upnp; + gboolean invisible_files; + gboolean should_show_new_button; }; static void hildon_response_up_button_clicked(GtkWidget *widget, @@ -1136,17 +1132,14 @@ case GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER: gtk_widget_hide(priv->caption_control_name); gtk_widget_hide(priv->hbox_items); + priv->should_show_new_button = TRUE; + hildon_file_selection_set_show_button(priv->filetree, + priv->should_show_new_button); gtk_widget_set_size_request(GTK_WIDGET(self), FOLDER_CHANGE_DIALOG_WIDTH, FOLDER_CHANGE_DIALOG_HEIGHT); - gtk_widget_set_size_request(GTK_WIDGET(priv->hbox_browser), - FILE_SELECTION_WIDTH_LIST, - FILE_SELECTION_HEIGHT + - FILE_SELECTION_ADDRESS_HEIGHT + - HILDON_MARGIN_DEFAULT); - gtk_widget_set_size_request(GTK_WIDGET(priv->filetree), FILE_SELECTION_WIDTH_LIST, FILE_SELECTION_HEIGHT); @@ -1163,17 +1156,9 @@ gtk_widget_show(priv->hbox_address); gtk_widget_show(GTK_WIDGET(priv->filetree)); - gtk_widget_show_all(GTK_WIDGET(priv->hbox_browser)); hildon_file_selection_show_content_pane(priv->filetree); hildon_file_selection_hide_navigation_pane(priv->filetree); - /*gchar *uri; - uri = g_malloc(100); //to be changed - get_current_tree_path(priv->filetree, uri); - gtk_button_set_label(GTK_BUTTON(priv->folder_button), - uri); - delete(uri);*/ - //hildon_file_selection_hide_content_pane(priv->filetree); gtk_window_set_title(GTK_WINDOW(self), _("ckdg_ti_change_folder")); gtk_button_set_label(GTK_BUTTON(priv->action_button), @@ -1272,26 +1257,35 @@ action) { 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; gboolean show_upnp = TRUE; - + g_object_get (self->priv->filetree, "local-only", &local_only, NULL); g_object_get (self->priv->filetree, "show-hidden", &show_hidden, NULL); g_object_get (self->priv->filetree, "show-upnp", &show_upnp, NULL); + /* new button need to be visible */ dialog = hildon_file_chooser_dialog_new_with_properties (GTK_WINDOW(self), "action", action, "file-system-model", self->priv->model, + "invisible-files", TRUE, "local-only", local_only, "show-hidden", show_hidden, "show-upnp", show_upnp, NULL); gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE); + g_assert(HILDON_IS_FILE_SELECTION(priv->filetree)); + hildon_file_selection_set_invisible_files(priv->filetree, + priv->invisible_files); + hildon_file_selection_set_filter(priv->filetree, NULL); sync_current_folders(self, HILDON_FILE_CHOOSER_DIALOG(dialog)); - return dialog; } @@ -1362,7 +1356,6 @@ dialog = hildon_file_chooser_dialog_create_sub_dialog(self, GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER); - while ((response = gtk_dialog_run(GTK_DIALOG(dialog))) == GTK_RESPONSE_OK) { uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog)); @@ -1681,6 +1674,12 @@ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(priv->mode_thumbnails), TRUE); break; + case PROP_INVISIBLE_FILES: + priv->invisible_files = g_value_get_boolean(value); + break; + case PROP_SHOW_NEW_BUTTON: + priv->should_show_new_button = g_value_get_boolean(value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; @@ -1747,6 +1746,12 @@ case PROP_SELECTION_MODE: g_value_set_enum(value, hildon_file_selection_get_mode(priv->filetree)); break; + case PROP_INVISIBLE_FILES: + g_value_set_boolean(value, priv->invisible_files); + break; + case PROP_SHOW_NEW_BUTTON: + g_value_set_boolean(value, priv->should_show_new_button); + break; default: /* Backend is not readable */ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; @@ -1869,6 +1874,7 @@ GTK_WIDGET_CLASS(klass)->show_all = gtk_widget_show; GTK_OBJECT_CLASS(klass)->destroy = hildon_file_chooser_dialog_destroy; + pspec = g_param_spec_string("empty-text", "Empty text", "String to use when selected " "folder is empty", @@ -1913,6 +1919,16 @@ "String to use in leftmost (=open) button", NULL, G_PARAM_READWRITE)); + pspec = g_param_spec_boolean("invisible-files", "invisible files", + "files should be invisible (if it's true)", + FALSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT); + g_object_class_install_property(gobject_class, PROP_INVISIBLE_FILES, pspec); + + pspec = g_param_spec_boolean("should-show-new-button", "should show new button", + "new button should be shown (if it's true)", + FALSE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT); + g_object_class_install_property(gobject_class, PROP_SHOW_NEW_BUTTON, pspec); + g_object_class_install_property(gobject_class, PROP_MULTIPLE_TEXT, g_param_spec_string("save-multiple", "Save multiple files", "Text to be displayed in items field when saving multiple files", @@ -1941,7 +1957,6 @@ G_PARAM_READWRITE); g_object_class_install_property(gobject_class, PROP_SELECTION_MODE, pspec); - hildon_gtk_file_chooser_install_properties(gobject_class); } @@ -2168,17 +2183,11 @@ G_CALLBACK (hildon_response_path_button_clicked), self); gtk_widget_show(priv->path_button); - priv->folder_button = g_object_new(GTK_TYPE_BUTTON, "label", _("ckdg_bd_change_folder_new_folder")); - g_signal_connect (G_OBJECT (priv->folder_button), "clicked", - G_CALLBACK (hildon_response_folder_button_clicked), self); - gtk_widget_show(priv->folder_button); - - /*priv->action_button = gtk_dialog_add_button(GTK_DIALOG(self), _("ckdg_bd_select_object_ok_open"), - GTK_RESPONSE_OK);*/ - /*priv->folder_button = + GTK_RESPONSE_OK); + priv->folder_button = gtk_dialog_add_button(GTK_DIALOG(self), _("ckdg_bd_change_folder_new_folder"), HILDON_RESPONSE_FOLDER_BUTTON);*/ @@ -2226,23 +2235,6 @@ FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(priv->hbox_address), priv->path_button, FALSE, TRUE, 0); - /* organize the new button and centralized it */ - priv->vbox_new = gtk_vbox_new(FALSE, HILDON_MARGIN_DEFAULT); - label_up = gtk_label_new(""); - label_down = gtk_label_new(""); - gtk_box_pack_start(GTK_BOX(priv->vbox_new), label_up, - TRUE, TRUE, 0); - gtk_box_pack_start(GTK_BOX(priv->vbox_new), priv->folder_button, - FALSE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(priv->vbox_new), label_down, - TRUE, TRUE, 0); - /* organize the folder browser */ - priv->hbox_browser = gtk_hbox_new(FALSE, HILDON_MARGIN_DEFAULT); - gtk_box_pack_start(GTK_BOX(priv->hbox_browser), GTK_WIDGET(priv->filetree), - TRUE, FALSE, 0); - gtk_box_pack_start(GTK_BOX(priv->hbox_browser), priv->vbox_new, - FALSE, FALSE, 0); - gtk_widget_show(priv->filetree); priv->caption_control_location = hildon_caption_new(size_group, _("sfil_fi_save_objects_items"), @@ -2357,12 +2349,11 @@ "pane-position", get_global_pane_position (), NULL); - hildon_file_selection_set_invisible_files(priv->filetree, TRUE); + hildon_file_selection_set_invisible_files(priv->filetree, + priv->invisible_files); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(obj)->vbox), priv->hbox_address, FALSE, TRUE, 0); - /*gtk_box_pack_start(GTK_BOX(GTK_DIALOG(obj)->vbox), - priv->hbox_browser, TRUE, FALSE, 0);*/ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(obj)->vbox), GTK_WIDGET(priv->filetree), TRUE, TRUE, 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-19 08:45:09 UTC (rev 15882) +++ projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-selection.c 2008-08-20 14:11:00 UTC (rev 15883) @@ -127,7 +127,7 @@ PROP_ACTIVE_PANE, PROP_SHOW_UPNP, PROP_PANE_POSITION, - PROP_DRAGGING + PROP_DRAGGING, }; struct _HildonFileSelectionPrivate { @@ -140,7 +140,10 @@ notify to change the text in the path button */ int cur_view; GtkWidget *hpaned; - + /* vertical box to contain a dummy label and the button new */ + GtkWidget *vbox_button; + /* button new used in the libhildonfm only */ + GtkWidget *new_button; GtkTreeModel *main_model; GtkTreeModel *sort_model; /* HildonFileSystemModel doesn't implement */ GtkTreeModel *dir_sort; /* GtkTreeSortable */ @@ -185,9 +188,6 @@ gboolean show_hidden; gboolean show_upnp; gboolean currently_dragging; - /* ignoring listing the folders in the - content pane, file_chooser dialog needs this */ - gboolean folders_ignoring; GtkFilePath *safe_folder; gchar **drag_data_uris; @@ -200,6 +200,9 @@ /* set this flag to true, files will be filtered out, used in for example, folder chooser dialog and some other similar dialogs */ gboolean invisible_files; + /* TRUE: show the button new + FALSE: hide the button new */ + gboolean should_show_new_button; }; #if 0 @@ -3062,7 +3065,7 @@ self->priv->view[2], TRUE, TRUE, 0); { - GtkWidget *vbox, *label, *button_label, *button, *button_box; + GtkWidget *vbox, *label, *button_label, *button, *button_box, vbox_button; label = gtk_label_new (_("hfil_li_memory_card_corrupted")); #if 0 @@ -3095,6 +3098,18 @@ self->priv->view[3] = vbox; gtk_box_pack_start (GTK_BOX (self->priv->view_selector), self->priv->view[3], TRUE, TRUE, 0); + + self->priv->vbox_button = gtk_vbox_new (FALSE, 0); + self->priv->new_button = gtk_button_new_with_label("new"); + button_label = gtk_label_new (" "); + gtk_box_pack_start(GTK_BOX(self->priv->vbox_button), button_label, + TRUE, FALSE, 10); + gtk_box_pack_end(GTK_BOX(self->priv->vbox_button), self->priv->new_button, + FALSE, FALSE, 0); + gtk_box_pack_end(GTK_BOX (self->priv->view_selector), + self->priv->vbox_button, FALSE, TRUE, 0); + gtk_widget_show(self->priv->new_button); + } self->priv->hpaned = gtk_hpaned_new(); @@ -3143,8 +3158,6 @@ priv->view_filter = gtk_tree_model_filter_new(priv->main_model, temp_path); gtk_tree_path_free (temp_path); - hildon_file_selection_set_invisible_files(self, FALSE); - gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (priv->view_filter), filter_func, priv, NULL); @@ -3246,9 +3259,9 @@ gtk_widget_hide (priv->scroll_thumb); gtk_widget_hide (priv->view[2]); gtk_widget_hide (priv->view[3]); + hildon_file_selection_set_show_button(self, FALSE); hildon_file_selection_inspect_view (priv); - priv->folders_ignoring = FALSE; return obj; } @@ -4726,18 +4739,27 @@ return ret; } -/*void hildon_file_selection_associate_file_chooser_dialog(HildonFileSelection *self, - HildonFileChooserDialog *chooser_dialog) +void hildon_file_selection_set_invisible_files(HildonFileSelection *self, + gboolean invisible) { - HildonFileSelectionPrivate *priv = self->priv; - priv->chooser_dialog = chooser_dialog; - }*/ + HildonFileSelectionPrivate *priv = self->priv; + priv->invisible_files = invisible; +} -void hildon_file_selection_set_invisible_files(HildonFileSelection *self, - gboolean visible) +void hildon_file_selection_set_show_button(HildonFileSelection *self, + gboolean show) { HildonFileSelectionPrivate *priv = self->priv; - priv->invisible_files = visible; + if(show) { + priv->should_show_new_button = TRUE; + gtk_widget_show(priv->vbox_button); + } + else { + priv->should_show_new_button = FALSE; + gtk_widget_hide(priv->vbox_button); + } + } + 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-19 08:45:09 UTC (rev 15882) +++ projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-selection.h 2008-08-20 14:11:00 UTC (rev 15883) @@ -172,7 +172,9 @@ hildon_file_selection_set_current_folder_iter(HildonFileSelection * self, GtkTreeIter * main_iter); void hildon_file_selection_set_invisible_files(HildonFileSelection *self, - gboolean visible); + gboolean invisible); +void hildon_file_selection_set_show_button(HildonFileSelection *self, + gboolean show); #ifndef HILDON_DISABLE_DEPRECATED
- Previous message: [maemo-commits] r15882 - projects/haf/branches/hildon-fm/fremantle/hildon-fm
- Next message: [maemo-commits] r15884 - projects/haf/trunk/hildon-fm/tests
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]