2 * This file is part of mapper
4 * Copyright (C) 2007 Kaj-Michael Lang
5 * Copyright (C) 2006-2007 John Costigan.
7 * POI and GPS-Info code originally written by Cezary Jackiewicz.
9 * Default map data provided by http://www.openstreetmap.org/
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License along
22 * with this program; if not, write to the Free Software Foundation, Inc.,
23 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
30 #include <libgnomevfs/gnome-vfs.h>
32 #include "hildon-mapper.h"
36 #include "mapper-types.h"
38 #include "ui-common.h"
39 #include "hildon-wrappers.h"
43 * Open a file for reading.
46 file_open(gchar **dir, gchar **new_file)
49 gboolean success=FALSE;
50 GtkFileFilter *filter;
53 dialog = hildon_file_chooser_dialog_new(GTK_WINDOW(_window), GTK_FILE_CHOOSER_ACTION_OPEN);
55 dialog = gtk_file_chooser_dialog_new("Open...", GTK_WINDOW(_window), GTK_FILE_CHOOSER_ACTION_OPEN,
59 GTK_RESPONSE_OK, NULL);
62 /* Show .gpx files only */
63 filter=gtk_file_filter_new();
64 gtk_file_filter_add_pattern(filter, "*.gpx");
65 gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter);
68 gtk_file_chooser_set_current_folder_uri(GTK_FILE_CHOOSER(dialog), *dir);
70 gtk_file_chooser_set_current_folder_uri(GTK_FILE_CHOOSER(dialog), g_get_home_dir());
75 if (gtk_dialog_run(GTK_DIALOG(dialog))==GTK_RESPONSE_OK) {
76 /* Get the selected filename. */
77 *new_file = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog));
78 g_printf("file: %s\n", *new_file);
82 gtk_widget_destroy(dialog);
87 * Open a file for writing. Return a GnomeVFSHandle to the file for writing.
90 file_save(gchar **dir, gchar **file, GnomeVFSHandle **vfs_handle)
93 gboolean success=FALSE;
96 dialog = hildon_file_chooser_dialog_new(GTK_WINDOW(_window), GTK_FILE_CHOOSER_ACTION_SAVE);
98 dialog = gtk_file_chooser_dialog_new("Save...", GTK_WINDOW(_window), GTK_FILE_CHOOSER_ACTION_SAVE,
102 GTK_RESPONSE_OK, NULL);
103 gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE);
107 gtk_file_chooser_set_current_folder_uri(GTK_FILE_CHOOSER(dialog), *dir);
109 gtk_file_chooser_set_current_folder_uri(GTK_FILE_CHOOSER(dialog), g_get_home_dir());
113 gtk_file_chooser_set_uri(GTK_FILE_CHOOSER(dialog), *file);
114 if (strlen(*file)==0)
115 gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), "track.gpx");
117 gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), "track.gpx");
119 if (gtk_dialog_run(GTK_DIALOG(dialog))==GTK_RESPONSE_OK) {
121 GnomeVFSResult vfs_result;
123 file_uri_str = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog));
124 vfs_result = gnome_vfs_create(vfs_handle, file_uri_str, GNOME_VFS_OPEN_WRITE, FALSE, 0664);
125 g_free(file_uri_str);
127 if (vfs_result!=GNOME_VFS_OK) {
132 *dir = gtk_file_chooser_get_current_folder_uri(GTK_FILE_CHOOSER(dialog));
136 *file = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog));
142 gtk_widget_destroy(dialog);
147 file_open_get_contents(gchar **dir, gchar **buffer, guint *bytes)
150 GnomeVFSResult vfs_result;
152 if (!file_open(dir, &file_uri_str)) {
157 vfs_result=gnome_vfs_read_entire_file(file_uri_str, bytes, buffer);
158 if (vfs_result!=GNOME_VFS_OK)