+typedef struct {
+ HildonProgram *program;
+ HildonWindow *window;
+
+ GtkWidget * main_vbox, *btn_hbox;
+ GtkWidget *status_label;
+ GtkButton *start_stop_button, *save_button;
+ gboolean tracking_is_on;
+} AppData;
+
+static gchar * interface_file_chooser (AppData * appdata, GtkFileChooserAction action)
+{
+ GtkWidget *dialog;
+ gchar *filename = NULL;
+ gchar save_fname[256];
+ time_t t;
+ struct tm *tmp;
+
+ t = time(NULL);
+ tmp = localtime(&t);
+ strftime(save_fname, sizeof(save_fname), "gps-tracker-%F-%H-%M.gpx", tmp);
+ dialog = hildon_file_chooser_dialog_new (GTK_WINDOW (appdata->window), action);
+ gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER (dialog), save_fname);
+ g_snprintf(save_fname, sizeof(save_fname), "%s" G_DIR_SEPARATOR_S "MyDocs", g_get_home_dir());
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), save_fname);
+ gtk_widget_show_all (GTK_WIDGET (dialog));
+
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) {
+ filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
+ }
+
+ gtk_widget_destroy(dialog);
+ return filename;
+}
+
+static void cb_start_stop (GtkWidget * w, AppData * data)
+{
+ data->tracking_is_on = !data->tracking_is_on;
+ if(data->tracking_is_on) {
+ hildon_banner_show_information(GTK_WIDGET(data->window), NULL, "Tracking started");
+ gtk_button_set_label (data->start_stop_button, "Stop");
+ }
+ else {
+ gtk_button_set_label (data->start_stop_button, "Start");
+ hildon_banner_show_information(GTK_WIDGET(data->window), NULL, "Tracking stopped");
+ }
+}
+
+static void cb_file_save (GtkWidget * w, AppData * data)
+{
+ gchar *filename = NULL;
+ filename = interface_file_chooser (data, GTK_FILE_CHOOSER_ACTION_SAVE);
+
+ if (filename) {
+ //FILE * f = fopen (filename, "w");
+ //fprintf (f, "This file was generated by Hildon File Chooser example.");
+ //fclose (f);
+ g_print ("File saved as %s\n", filename);
+ hildon_banner_show_information(GTK_WIDGET(data->window), NULL, filename);
+ }
+ g_free(filename);
+}