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