[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 ]
