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