[maemo-commits] [maemo-commits] r16788 - projects/haf/branches/hildon-fm/fremantle/hildon-fm
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Thu Nov 27 17:51:40 EET 2008
- Previous message: [maemo-commits] r16787 - in projects/haf/trunk/sapwood: . engine
- Next message: [maemo-commits] r16789 - projects/haf/branches/hildon-fm/fremantle/hildon-fm
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: rabinovich Date: 2008-11-27 17:51:40 +0200 (Thu, 27 Nov 2008) New Revision: 16788 Modified: projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-selection.c Log: priv->current_row is a row reference for the last activated item, no TreeSelection anymore 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-11-27 14:49:07 UTC (rev 16787) +++ projects/haf/branches/hildon-fm/fremantle/hildon-fm/hildon-file-selection.c 2008-11-27 15:51:40 UTC (rev 16788) @@ -197,6 +197,7 @@ in for example, folder chooser dialog and some other similar dialogs */ gboolean show_files; gboolean edit_mode; + GtkTreeRowReference *current_row; // a row in sort_model of content pane }; #if 0 @@ -609,6 +610,7 @@ /* Works also with NULLs */ gtk_tree_row_reference_free(priv->current_folder); + gtk_tree_row_reference_free(priv->current_row); g_strfreev(priv->drag_data_uris); g_object_unref(priv->dir_filter); @@ -1803,6 +1805,9 @@ model = gtk_tree_view_get_model(view); /* Content pane filter model */ + gtk_tree_row_reference_free(HILDON_FILE_SELECTION(data)->priv->current_row); + HILDON_FILE_SELECTION(data)->priv->current_row = gtk_tree_row_reference_new(model, path); + if (gtk_tree_model_get_iter(model, &iter, path)) { gtk_tree_model_get(model, &iter, HILDON_FILE_SYSTEM_MODEL_COLUMN_IS_FOLDER, @@ -2565,7 +2570,7 @@ /* self->priv->dir_tree = */ /* gtk_tree_view_new_with_model(self->priv->dir_filter); */ - self->priv->dir_tree = hildon_gtk_tree_view_new_with_model(HILDON_UI_MODE_EDIT, self->priv->dir_filter); //TODO + self->priv->dir_tree = hildon_gtk_tree_view_new_with_model(HILDON_UI_MODE_EDIT, self->priv->dir_filter); //for selection-changed signal to be sent col = gtk_tree_view_column_new(); gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_AUTOSIZE); @@ -3702,21 +3707,14 @@ * hildon_file_selection_select_all: * @self: a pointer to #HildonFileSelection * - * Selects all files from the content pane. Multiple selection must be - * enabled before calling this. + * Selects the first row in the content pane. */ void hildon_file_selection_select_all(HildonFileSelection * self) { - GtkTreeSelection *selection; - g_return_if_fail(HILDON_IS_FILE_SELECTION(self)); - selection = - gtk_tree_view_get_selection(GTK_TREE_VIEW(self->priv->view[0])); - gtk_tree_selection_select_all(selection); - selection = - gtk_tree_view_get_selection(GTK_TREE_VIEW(self->priv->view[1])); - gtk_tree_selection_select_all(selection); + gtk_tree_row_reference_free(self->priv->current_row); + self->priv->current_row = gtk_tree_row_reference_new(self->priv->sort_model, gtk_tree_path_new_first()); } /** @@ -3812,11 +3810,13 @@ return NULL; } +#if 0 //Fremantle static void select_path_helper(gpointer path, gpointer selection) { gtk_tree_selection_select_path((GtkTreeSelection *)(selection), (GtkTreePath *)(path)); } +#endif /* Used by select/unselect path for selections */ static void @@ -3829,7 +3829,6 @@ if (GTK_IS_TREE_VIEW(view)) { GtkTreeIter sort_iter, filter_iter; - GtkTreeSelection *selection; GtkTreeView *treeview = GTK_TREE_VIEW(view); gtk_tree_model_filter_convert_child_iter_to_iter @@ -3840,8 +3839,6 @@ (GTK_TREE_MODEL_SORT(priv->sort_model), &sort_iter, &filter_iter); - selection = gtk_tree_view_get_selection(treeview); - if (select) { GtkTreePath *path; @@ -3853,26 +3850,13 @@ if (path) { - GList *selected = NULL; - - if (keep_current) - selected = gtk_tree_selection_get_selected_rows(selection, NULL); - gtk_tree_view_set_cursor(treeview, path, NULL, FALSE); + gtk_tree_row_reference_free(priv->current_row); + priv->current_row = gtk_tree_row_reference_new(priv->sort_model, path); gtk_tree_path_free(path); - - if (keep_current) - { - g_list_foreach(selected, (GFunc) select_path_helper, selection); - g_list_foreach(selected, (GFunc) gtk_tree_path_free, NULL); - g_list_free(selected); - } } - gtk_tree_selection_select_iter(selection, &sort_iter); } - else - gtk_tree_selection_unselect_iter(selection, &sort_iter); } } @@ -4292,7 +4276,7 @@ return TRUE; } - +#if 0 //Fremantle static void get_selected_files_helper(GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) @@ -4314,28 +4298,43 @@ *list = g_slist_append(*list, file_path); } } - +#endif /* Similar to get_selected_paths, but returns only files. This still uses content_pane_last_used, so we do not need to change dialog at all */ +/** + * _hildon_file_selection_get_selected_files: + * @self: a #HildonFileSelection. + * + * This function always returns a list of one file or NULL. + */ GSList *_hildon_file_selection_get_selected_files(HildonFileSelection * self) { GtkWidget *view; + GtkTreeIter iter; + GtkTreeModel *model; + gboolean folder; + GtkFilePath *file_path; g_return_val_if_fail(HILDON_IS_FILE_SELECTION(self), NULL); view = get_current_view(self->priv); if (GTK_IS_TREE_VIEW(view) && self->priv->content_pane_last_used) { - GSList *paths = NULL; - - gtk_tree_selection_selected_foreach(gtk_tree_view_get_selection - (GTK_TREE_VIEW(view)), - get_selected_files_helper, - &paths); - return paths; + model = gtk_tree_view_get_model(GTK_TREE_VIEW(view)); + if (gtk_tree_row_reference_valid(self->priv->current_row)) { + gtk_tree_model_get_iter(model, &iter, gtk_tree_row_reference_get_path(self->priv->current_row)); + gtk_tree_model_get(model, &iter, + HILDON_FILE_SYSTEM_MODEL_COLUMN_IS_FOLDER, + &folder, -1); + if (!folder) { + gtk_tree_model_get(model, &iter, + HILDON_FILE_SYSTEM_MODEL_COLUMN_GTK_PATH_INTERNAL, + &file_path, -1); + return g_slist_append(NULL, file_path); + } + } } - return NULL; }
- Previous message: [maemo-commits] r16787 - in projects/haf/trunk/sapwood: . engine
- Next message: [maemo-commits] r16789 - projects/haf/branches/hildon-fm/fremantle/hildon-fm
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]