[maemo-commits] [maemo-commits] r16759 - projects/haf/branches/hildon-fm/fremantle/hildon-fm
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Mon Nov 24 16:11:35 EET 2008
- Previous message: [maemo-commits] r16758 - projects/haf/trunk/hildon-thumbnail/thumbs
- Next message: [maemo-commits] r16760 - projects/haf/branches/hildon-fm/fremantle/hildon-fm
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: yangli Date: 2008-11-24 16:11:34 +0200 (Mon, 24 Nov 2008) New Revision: 16759 Modified: projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-chooser-dialog.c Log: implementation of file type selection 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-11-24 11:04:30 UTC (rev 16758) +++ projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-chooser-dialog.c 2008-11-24 14:11:34 UTC (rev 16759) @@ -30,6 +30,8 @@ #endif #define _GNU_SOURCE /* To get the GNU version of basename. */ +#define HILDON_FREMANTLE_DEPRECATED 0 + #include <string.h> #define GTK_FILE_CHOOSER_ENABLE_UNSUPPORTED @@ -158,6 +160,11 @@ GtkFileChooserAction action; GtkWidget *popup; GtkWidget *multiple_label, *hbox_items; + /* type selection dialog */ + GtkWidget *type_select_dialog; + GList *extensions_list; + /* a selector widget containing the available file types */ + GtkWidget *selector; gulong changed_handler; gint max_full_path_length; gint max_filename_length; @@ -180,7 +187,7 @@ gboolean should_show_folder_button; gboolean should_show_location; gboolean show_upnp; -}; + }; static void hildon_response_up_button_clicked(GtkWidget *widget, gpointer data); @@ -1336,7 +1343,7 @@ gboolean local_only = FALSE; gboolean show_hidden = FALSE; - gboolean show_upnp = TRUE; + gboolean show_upnp = FALSE; g_object_get (self->priv->filetree, "local-only", &local_only, NULL); g_object_get (self->priv->filetree, "show-hidden", &show_hidden, NULL); @@ -2577,14 +2584,13 @@ GtkTreeModel *model; GtkTreeIter iter; gboolean valid; - HildonTouchSelector *selector; - selector = hildon_picker_button_get_selector(HILDON_PICKER_BUTTON(priv->extensions_combo)); - model = hildon_touch_selector_get_model(selector, 0); + //priv->selector = hildon_picker_button_get_selector(HILDON_PICKER_BUTTON(priv->extensions_combo)); + model = hildon_touch_selector_get_model(priv->selector, 0); /* if there is a valid extension selected, just leave it */ - if (hildon_touch_selector_get_selected (selector, 0, &iter)) - //if (hildon_touch_selector_get_active_iter (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; gchar *ext; @@ -2604,8 +2610,8 @@ gtk_tree_model_get (model, &iter, 0, &ext, -1); if (strcmp (ext, priv->ext_name + 1) == 0) { - hildon_touch_selector_select_iter (selector, 0, &iter, TRUE); - //hildon_touch_selector_set_active_iter (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); g_free (ext); @@ -2619,6 +2625,29 @@ } static void +hildon_touch_list_selection_changed (HildonTouchSelector * touch_selector, + gint num_column, gpointer data) + +{ + gchar *type_string = NULL; + + HildonFileChooserDialogPrivate *priv = + HILDON_FILE_CHOOSER_DIALOG (data)->priv; + + g_return_if_fail (HILDON_IS_TOUCH_SELECTOR (touch_selector)); + type_string = hildon_touch_selector_get_current_text (touch_selector); + + hildon_button_set_text(HILDON_BUTTON(priv->extensions_combo), + type_string, NULL); + g_free (priv->ext_name); + priv->ext_name = g_strconcat (".", type_string, NULL); + hildon_file_chooser_dialog_do_autonaming (priv); + gtk_dialog_response(GTK_DIALOG(priv->type_select_dialog), + GTK_RESPONSE_OK); +} + +#ifndef HILDON_FREMANTLE_DEPRECATED +static void extension_changed (GtkComboBox *widget, gpointer data) { HildonFileChooserDialogPrivate *priv = @@ -2628,7 +2657,9 @@ priv->ext_name = g_strconcat (".", hildon_button_get_value (HILDON_BUTTON (widget)), NULL); hildon_file_chooser_dialog_do_autonaming (priv); } +#endif + static void hildon_file_chooser_dialog_reset_files_visibility(HildonFileChooserDialogPrivate *priv, gint dialog_type) { @@ -2653,24 +2684,35 @@ static void hildon_chooser_dialog_extension_button_clicked(GtkWidget *widget, gpointer data) { - /** - GtkDialog *dialog; - GtkWidget *selector; - **/ - gint result; - - g_assert(HILDON_IS_TOUCH_SELECTOR (data)); - //selector = HILDON_TOUCH_SELECTOR (data); - //dialog = GTK_DIALOG(selector); - printf("yang: dialog created\n"); - result = gtk_dialog_run (GTK_DIALOG (data)); - switch (result) + GtkBox *box; + GList *list; + gint response; + + g_assert(HILDON_IS_FILE_CHOOSER_DIALOG(data)); + HildonFileChooserDialogPrivate *priv = HILDON_FILE_CHOOSER_DIALOG(data)->priv; + priv->type_select_dialog = gtk_dialog_new(); + + priv->selector = hildon_touch_selector_new_text(); + list = g_list_first(priv->extensions_list); + while (list != NULL) { + hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (priv->selector), + list->data); + list = g_list_next (list); + } + gtk_widget_show(priv->selector); + + box = GTK_BOX(GTK_DIALOG(priv->type_select_dialog)->vbox); + gtk_box_pack_start(box, g_object_ref(priv->selector), + FALSE, TRUE, HILDON_MARGIN_DEFAULT); + gtk_window_set_title (GTK_WINDOW (priv->type_select_dialog), + _("sfil_fi_save_object_dialog_type")); + g_signal_connect (G_OBJECT (priv->selector), "changed", + G_CALLBACK (hildon_touch_list_selection_changed), data); + + while ((response = gtk_dialog_run(GTK_DIALOG(priv->type_select_dialog))) == GTK_RESPONSE_OK) { - case GTK_RESPONSE_OK: - case GTK_RESPONSE_ACCEPT: - break; - default: - break; + gtk_widget_destroy (priv->selector); + gtk_widget_destroy (priv->type_select_dialog); } } @@ -2699,35 +2741,35 @@ char **ext_names) { GtkWidget *button; - GtkWidget *selector; GtkWidget *caption; gint i = 0; - g_return_val_if_fail (self->priv->extensions_combo == NULL, NULL); + HildonFileChooserDialogPrivate *priv = HILDON_FILE_CHOOSER_DIALOG(self)->priv; + + g_return_val_if_fail (priv->extensions_combo == NULL, NULL); button = hildon_button_new(HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH, HILDON_BUTTON_ARRANGEMENT_HORIZONTAL); hildon_button_set_text(HILDON_BUTTON(button), NULL, extensions[0]); - selector = hildon_touch_selector_new_text(); - - self->priv->extensions_combo = button; - + priv->extensions_combo = button; + priv->extensions_list = NULL; for (i = 0; extensions[i]; i++) { - hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (selector), extensions[i]); + priv->extensions_list = g_list_append (priv->extensions_list, + extensions[i]); } - g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(hildon_chooser_dialog_extension_button_clicked), - selector); - hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (button), HILDON_TOUCH_SELECTOR (selector)); + self); gtk_button_set_alignment(GTK_BUTTON(button), 0, 0.5); hildon_button_set_title(HILDON_BUTTON(button), _("sfil_fi_save_object_dialog_type")); hildon_button_set_title(HILDON_BUTTON(button), NULL); + #ifndef HILDON_FREMANTLE_DEPRECATED g_signal_connect (G_OBJECT (button), "value-changed", G_CALLBACK (extension_changed), self); + #endif caption = hildon_caption_new (NULL, _("sfil_fi_save_object_dialog_type"), button, NULL, HILDON_CAPTION_OPTIONAL); hildon_caption_set_separator(HILDON_CAPTION(caption), ""); @@ -2736,8 +2778,7 @@ gtk_widget_show (button); gtk_widget_show (caption); - - sync_extensions_combo (self->priv); + sync_extensions_combo (priv); return button; }
- Previous message: [maemo-commits] r16758 - projects/haf/trunk/hildon-thumbnail/thumbs
- Next message: [maemo-commits] r16760 - projects/haf/branches/hildon-fm/fremantle/hildon-fm
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]