[maemo-commits] [maemo-commits] r15951 - projects/haf/branches/hildon-fm/fremantle/hildon-fm
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Tue Sep 2 16:00:55 EEST 2008
- Previous message: [maemo-commits] r15950 - projects/haf/tags/hildon-control-panel
- Next message: [maemo-commits] r15952 - projects/haf/tags/gtk+
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: yangli Date: 2008-09-02 16:00:53 +0300 (Tue, 02 Sep 2008) New Revision: 15951 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: replace location title label with Hildon Button, Path Button size is not fixed, require to check on the device to do the final fixing, cancel button remains temporarily for testing purpose 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-09-02 12:40:49 UTC (rev 15950) +++ projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-chooser-dialog.c 2008-09-02 13:00:53 UTC (rev 15951) @@ -78,8 +78,10 @@ #define FILE_SELECTION_HEIGHT (8 * 30 + 2 * HILDON_MARGIN_DEFAULT) #define FILE_SELECTION_WIDTH_LIST 240 /* Width used in select folder mode */ -#define FILE_SELECTION_UPBUTTON_WIDTH 60 /* the width of the up level button */ -#define FILE_SELECTION_ADDRESS_HEIGHT FILE_SELECTION_HEIGHT/6 +#define FILE_SELECTION_UPBUTTON_WIDTH 70 /* the width of the up level button */ +#define FILE_SELECTION_UP_LEVEL_ICON_WIDTH 48 /* the width of the up level icon size */ +#define FILE_SELECTION_UP_LEVEL_ICON_HEIGHT 48 /* the height of the up level icon size */ +#define FILE_SELECTION_ADDRESS_HEIGHT 70 #define FILE_SELECTION_WIDTH_TOTAL 590 /* Width for full filetree (both content and navigation pane) */ @@ -137,6 +139,7 @@ GtkWidget *up_button; GtkWidget *path_button; GtkWidget *path_label; + GtkWidget *location_button; GtkWidget *action_button; GtkWidget *folder_button; @@ -687,10 +690,16 @@ &title, -1); gtk_label_set_text(GTK_LABEL(priv->title_location), title); + hildon_button_set_text(HILDON_BUTTON(priv->location_button), + title, NULL); if (icon) /* It's possible that we don't get an icon */ { gtk_image_set_from_pixbuf(GTK_IMAGE(priv->image_location), icon); + hildon_button_set_image(GTK_BUTTON(priv->location_button), + gtk_image_new_from_pixbuf(icon)); + hildon_button_set_image_position(HILDON_BUTTON(priv->location_button), + GTK_POS_LEFT); g_object_unref(icon); } @@ -1095,19 +1104,32 @@ static void update_location_visibility(HildonFileChooserDialogPrivate * priv) { - if (priv->should_show_location - && (priv->action == GTK_FILE_CHOOSER_ACTION_SAVE - || priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)) { - hildon_file_chooser_dialog_update_location_info(priv); - gtk_widget_show_all(priv->caption_control_location); - } else - gtk_widget_hide(priv->caption_control_location); + if (priv->should_show_location){ + hildon_file_chooser_dialog_update_location_info(priv); + gtk_widget_show_all(priv->caption_control_location); + switch (priv->action) { + case GTK_FILE_CHOOSER_ACTION_SAVE: + gtk_widget_hide(priv->title_location); + gtk_widget_hide(priv->image_location); + break; + case GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER: + gtk_widget_hide(priv->location_button); + break; + default: + gtk_widget_hide(priv->caption_control_location); + break; + } + } + else + gtk_widget_hide(priv->caption_control_location); } /* We build ui for current action */ static void build_ui(HildonFileChooserDialog * self) { HildonFileChooserDialogPrivate *priv = self->priv; + gint width; + gint height; switch (priv->action) { case GTK_FILE_CHOOSER_ACTION_OPEN: @@ -1146,12 +1168,12 @@ hildon_caption_set_label(HILDON_CAPTION(priv->caption_control_name), _("ckdg_fi_save_object_name")); gtk_widget_show_all(priv->caption_control_name); - gtk_widget_hide(priv->hbox_items); + gtk_widget_hide(priv->hbox_items); hildon_caption_set_label(HILDON_CAPTION(priv->caption_control_name), _("ckdg_fi_save_object_name")); } - + hildon_caption_set_label (HILDON_CAPTION (priv->caption_control_location), _("sfil_fi_save_objects_location")); gtk_widget_hide(GTK_WIDGET(priv->filetree)); @@ -1180,24 +1202,24 @@ gtk_widget_set_size_request(GTK_WIDGET(priv->filetree), FILE_SELECTION_WIDTH_LIST, FILE_SELECTION_HEIGHT); + gtk_widget_show(GTK_WIDGET(priv->filetree)); + gtk_widget_get_size_request(GTK_WIDGET(priv->filetree), + &width, &height); gtk_widget_set_size_request(GTK_WIDGET(priv->hbox_address), - FILE_SELECTION_WIDTH_LIST, + width, FILE_SELECTION_ADDRESS_HEIGHT); gtk_widget_set_size_request(GTK_WIDGET(priv->up_button), FILE_SELECTION_UPBUTTON_WIDTH, FILE_SELECTION_ADDRESS_HEIGHT); - gtk_widget_set_size_request(GTK_WIDGET(priv->path_button), - FILE_SELECTION_WIDTH_LIST - - FILE_SELECTION_UPBUTTON_WIDTH - - HILDON_MARGIN_DEFAULT, - FILE_SELECTION_ADDRESS_HEIGHT); + /*gtk_widget_set_size_request(GTK_WIDGET(priv->path_button), + width - FILE_SELECTION_UPBUTTON_WIDTH, + FILE_SELECTION_ADDRESS_HEIGHT);*/ gtk_widget_show_all(priv->hbox_address); gtk_widget_hide(priv->path_label); hildon_file_chooser_dialog_reset_files_visibility(priv, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); - gtk_widget_show(GTK_WIDGET(priv->filetree)); hildon_file_selection_show_content_pane(priv->filetree); hildon_file_selection_hide_navigation_pane(priv->filetree); @@ -2145,7 +2167,7 @@ strcat(path_string, "/"); } if(priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER) - gtk_button_set_label(GTK_BUTTON(priv->path_button), path_string); + hildon_button_set_text(HILDON_BUTTON(priv->path_button), path_string, NULL); else if(priv->action == GTK_FILE_CHOOSER_ACTION_OPEN) { gtk_label_set_text(GTK_LABEL(priv->path_label), path_string); } @@ -2156,8 +2178,8 @@ free(title); } -static void hildon_response_up_button_clicked( GtkWidget *widget, - gpointer data ) +static void hildon_response_up_button_clicked(GtkWidget *widget, + gpointer data ) { GtkTreeIter iter; GtkTreeIter cur_iter; @@ -2174,14 +2196,28 @@ } } -static void hildon_response_path_button_clicked( GtkWidget *widget, - gpointer data ) +static void hildon_response_path_button_clicked(GtkWidget *widget, + gpointer data ) { g_return_if_fail(HILDON_IS_FILE_CHOOSER_DIALOG(data)); g_signal_emit_by_name(data, "response", GTK_RESPONSE_OK, NULL); } +static void hildon_file_chooser_dialog_location_button_clicked(GtkWidget *widget, + gpointer data) +{ + HildonFileChooserDialog *self = HILDON_FILE_CHOOSER_DIALOG(data); + + fprintf (stderr, "LOCATION_PRESSED %d\n", + self->priv->should_show_folder_button); + + if (self->priv->should_show_folder_button + && (self->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE + || self->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)) + handle_folder_popup(self); +} + static void hildon_file_chooser_dialog_init(HildonFileChooserDialog * self) { GtkMenuShell *shell; @@ -2208,14 +2244,21 @@ priv->action = GTK_FILE_CHOOSER_ACTION_OPEN; 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(GTK_BUTTON(priv->up_button), image); + gtk_widget_set_size_request(GTK_WIDGET(image), + FILE_SELECTION_UP_LEVEL_ICON_WIDTH, + FILE_SELECTION_UP_LEVEL_ICON_HEIGHT); + + priv->up_button = hildon_button_new(HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH, + HILDON_BUTTON_ARRANGEMENT_HORIZONTAL); + hildon_button_set_image(HILDON_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); - priv->path_button = g_object_new(GTK_TYPE_BUTTON, "label", "Nokia Nxxx/", - "xalign", 0.0f, NULL); + priv->path_button = hildon_button_new_with_text(HILDON_SIZE_FINGER_HEIGHT | + HILDON_SIZE_AUTO_WIDTH, + HILDON_BUTTON_ARRANGEMENT_HORIZONTAL, + "Nokia", NULL); g_signal_connect (G_OBJECT (priv->path_button), "clicked", G_CALLBACK (hildon_response_path_button_clicked), self); gtk_widget_show(priv->path_button); @@ -2258,10 +2301,18 @@ priv->image_location = gtk_image_new(); priv->title_location = gtk_label_new(NULL); gtk_misc_set_alignment(GTK_MISC(priv->title_location), 0.0f, 0.5f); + + priv->location_button = hildon_button_new(HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH, + HILDON_BUTTON_ARRANGEMENT_HORIZONTAL); + gtk_widget_show(priv->location_button); + gtk_box_pack_start(GTK_BOX(priv->hbox_location), priv->image_location, FALSE, TRUE, 0); gtk_box_pack_start(GTK_BOX(priv->hbox_location), priv->title_location, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(priv->hbox_location), priv->location_button, + TRUE, TRUE, 0); + eventbox = gtk_event_box_new(); priv->eventbox_location = eventbox; gtk_event_box_set_visible_window(GTK_EVENT_BOX(eventbox), FALSE); @@ -2277,7 +2328,6 @@ 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"), eventbox, NULL, @@ -2358,9 +2408,13 @@ g_signal_connect(priv->sort_size, "toggled", G_CALLBACK(hildon_file_chooser_dialog_sort_changed), priv); - g_signal_connect(eventbox, "button-release-event", + /*g_signal_connect(eventbox, "button-release-event", G_CALLBACK(hildon_file_chooser_dialog_location_pressed), - self); + self);*/ + g_signal_connect(G_OBJECT (priv->location_button), "clicked", + G_CALLBACK(hildon_file_chooser_dialog_location_button_clicked), + self); + g_signal_connect (eventbox, "key-press-event", G_CALLBACK (on_location_hw_enter_pressed), self); 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-09-02 12:40:49 UTC (rev 15950) +++ projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-selection.c 2008-09-02 13:00:53 UTC (rev 15951) @@ -160,6 +160,7 @@ guint banner_close_timeout_id; guint content_pane_changed_id; guint delayed_select_id; + guint pane_pos; GtkWidget *update_banner; gboolean content_pane_last_used; @@ -946,6 +947,7 @@ case PROP_PANE_POSITION: gtk_paned_set_position (GTK_PANED (priv->hpaned), g_value_get_int (value)); + priv->pane_pos = g_value_get_int (value); break; case PROP_DRAGGING: ULOG_ERR_F("PROP_DRAGGING is a read-only property"); @@ -999,8 +1001,8 @@ g_value_set_boolean(value, priv->show_upnp); break; case PROP_PANE_POSITION: - g_value_set_int (value, - gtk_paned_get_position (GTK_PANED (priv->hpaned))); + g_value_set_int (value, priv->pane_pos + /*gtk_paned_get_position (GTK_PANED (priv->hpaned))*/); break; case PROP_DRAGGING: g_value_set_boolean(value, priv->currently_dragging); @@ -3070,6 +3072,8 @@ HildonFileSelectionPrivate *priv; GtkTreePath *temp_path; gboolean fs_pannable = TRUE; + gint pos = 0; + gboolean pannable_area_created = FALSE; obj = G_OBJECT_CLASS(hildon_file_selection_parent_class)-> @@ -3106,12 +3110,26 @@ self->priv->scroll_dir = hildon_pannable_area_new(); self->priv->scroll_list = hildon_pannable_area_new(); self->priv->scroll_thumb = hildon_pannable_area_new(); + if(HILDON_IS_PANNABLE_AREA(self->priv->scroll_dir) && + HILDON_IS_PANNABLE_AREA(self->priv->scroll_dir) && + HILDON_IS_PANNABLE_AREA(self->priv->scroll_dir)){ + pannable_area_created = TRUE; + } + else{ + pannable_area_created = FALSE; + } } - else { + else{ self->priv->scroll_dir = gtk_scrolled_window_new(NULL, NULL); self->priv->scroll_list = gtk_scrolled_window_new(NULL, NULL); self->priv->scroll_thumb = gtk_scrolled_window_new(NULL, NULL); - + } + if(!pannable_area_created || !fs_pannable){ + if(!pannable_area_created){ + self->priv->scroll_dir = gtk_scrolled_window_new(NULL, NULL); + self->priv->scroll_list = gtk_scrolled_window_new(NULL, NULL); + self->priv->scroll_thumb = gtk_scrolled_window_new(NULL, NULL); + } gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (self->priv->scroll_dir), GTK_POLICY_AUTOMATIC, @@ -3197,8 +3215,9 @@ g_signal_connect(self, "grab-notify", G_CALLBACK(hildon_file_selection_check_scroll), NULL); /* above code were moved from hildon_file_selection_init */ - g_object_set(self,"pane-position", 250, NULL); // to be fixed - + g_object_get (HILDON_FILE_SELECTION(self), "pane-position", + &pos, NULL); + g_object_set(self,"pane-position", pos, NULL); hildon_file_selection_create_dir_view(self); hildon_file_selection_create_list_view(self); hildon_file_selection_create_thumbnail_view(self);
- Previous message: [maemo-commits] r15950 - projects/haf/tags/hildon-control-panel
- Next message: [maemo-commits] r15952 - projects/haf/tags/gtk+
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]