Diff of /trunk/src/main.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 189 by harbaum, Mon Jul 6 15:51:30 2009 UTC revision 190 by harbaum, Mon Jul 6 19:17:24 2009 UTC
# Line 27  Line 27 
27  #include <hildon/hildon-button.h>  #include <hildon/hildon-button.h>
28  #include <hildon/hildon-check-button.h>  #include <hildon/hildon-check-button.h>
29  #include <hildon/hildon-window-stack.h>  #include <hildon/hildon-window-stack.h>
30    #include <gdk/gdkx.h>
31    #include <X11/Xatom.h>
32  #endif  #endif
33    
34  #include "appdata.h"  #include "appdata.h"
# Line 878  static gboolean no_icon_get_toggle(appda Line 880  static gboolean no_icon_get_toggle(appda
880    return appdata->settings->no_icons;    return appdata->settings->no_icons;
881  }  }
882    
883    static gboolean enable_gps_get_toggle(appdata_t *appdata) {
884      if(!appdata)           return FALSE;
885      return appdata->gps_enabled;
886    }
887    
888    static gboolean follow_gps_get_toggle(appdata_t *appdata) {
889      if(!appdata)           return FALSE;
890      if(!appdata->settings) return FALSE;
891      return appdata->settings->follow_gps;
892    }
893    
894  /* create a HildonAppMenu */  /* create a HildonAppMenu */
895  static GtkWidget *app_menu_create(appdata_t *appdata, const menu_entry_t *menu_entries) {  static GtkWidget *app_menu_create(appdata_t *appdata,
896                                      const menu_entry_t *menu_entries) {
897    HildonAppMenu *menu = HILDON_APP_MENU(hildon_app_menu_new());    HildonAppMenu *menu = HILDON_APP_MENU(hildon_app_menu_new());
898    
899    while(menu_entries->label) {    while(menu_entries->label) {
# Line 889  static GtkWidget *app_menu_create(appdat Line 903  static GtkWidget *app_menu_create(appdat
903        button = hildon_button_new_with_text(        button = hildon_button_new_with_text(
904              HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH,              HILDON_SIZE_FINGER_HEIGHT | HILDON_SIZE_AUTO_WIDTH,
905              HILDON_BUTTON_ARRANGEMENT_VERTICAL,              HILDON_BUTTON_ARRANGEMENT_VERTICAL,
906              _(menu_entries->label), menu_entries->value);              _(menu_entries->label), _(menu_entries->value));
907        g_signal_connect_after(button, "clicked", menu_entries->activate_cb, appdata);        g_signal_connect_after(button, "clicked",
908                                 menu_entries->activate_cb, appdata);
909      } else {      } else {
910        button = hildon_check_button_new(HILDON_SIZE_AUTO);        button = hildon_check_button_new(HILDON_SIZE_AUTO);
911        gtk_button_set_label(GTK_BUTTON(button), _(menu_entries->label));        gtk_button_set_label(GTK_BUTTON(button), _(menu_entries->label));
912        hildon_check_button_set_active(HILDON_CHECK_BUTTON(button),        hildon_check_button_set_active(HILDON_CHECK_BUTTON(button),
913                                       menu_entries->toggle(appdata));                                       menu_entries->toggle(appdata));
914        g_signal_connect_after(button, "toggled", menu_entries->activate_cb, appdata);        g_signal_connect_after(button, "toggled",
915                                 menu_entries->activate_cb, appdata);
916      }      }
917    
918      /* offset to GtkWidget pointer was given -> store pointer */      /* offset to GtkWidget pointer was given -> store pointer */
# Line 915  static GtkWidget *app_menu_create(appdat Line 931  static GtkWidget *app_menu_create(appdat
931    
932  /* the view submenu */  /* the view submenu */
933  void on_submenu_view_clicked(GtkButton *button, appdata_t *appdata) {  void on_submenu_view_clicked(GtkButton *button, appdata_t *appdata) {
934    /* draw a popup menu. */    hildon_app_menu_popup(HILDON_APP_MENU(appdata->app_menu_view),
   hildon_app_menu_popup(HILDON_APP_MENU(appdata->submenu_view),  
935                          GTK_WINDOW(appdata->window));                          GTK_WINDOW(appdata->window));
936  }  }
937    
938  void on_submenu_wms_clicked(GtkButton *button, appdata_t *appdata) {  void on_submenu_wms_clicked(GtkButton *button, appdata_t *appdata) {
939    /* draw a popup menu. */    hildon_app_menu_popup(HILDON_APP_MENU(appdata->app_menu_wms),
940    hildon_app_menu_popup(HILDON_APP_MENU(appdata->submenu_wms),                          GTK_WINDOW(appdata->window));
941    }
942    
943    void on_submenu_track_clicked(GtkButton *button, appdata_t *appdata) {
944      hildon_app_menu_popup(HILDON_APP_MENU(appdata->app_menu_track),
945                          GTK_WINDOW(appdata->window));                          GTK_WINDOW(appdata->window));
946  }  }
947    
948  /* -- the view submenu -- */  /* -- the view submenu -- */
949  #define APP_OFFSET(a)  offsetof(appdata_t, a)  #define APP_OFFSET(a)  offsetof(appdata_t, a)
950  #define SIMPLE_ENTRY(a,b)     { a, NULL, TRUE,   NULL, 0, G_CALLBACK(b) }  #define SIMPLE_ENTRY(a,b)     { a, NULL, TRUE,   NULL, 0, G_CALLBACK(b) }
951    #define ENABLED_ENTRY(a,b,c) { a, NULL, TRUE,  NULL, APP_OFFSET(c), G_CALLBACK(b) }
952  #define DISABLED_ENTRY(a,b,c) { a, NULL, FALSE,  NULL, APP_OFFSET(c), G_CALLBACK(b) }  #define DISABLED_ENTRY(a,b,c) { a, NULL, FALSE,  NULL, APP_OFFSET(c), G_CALLBACK(b) }
953    #define TOGGLE_ENTRY(a,b,c)  { a, NULL, TRUE, c, 0, G_CALLBACK(b) }
954    #define DISABLED_TOGGLE_ENTRY(a,b,c,d)  { a, NULL, FALSE, c, APP_OFFSET(d), G_CALLBACK(b) }
955    #define ENABLED_TOGGLE_ENTRY(a,b,c,d)  { a, NULL, TRUE, c, APP_OFFSET(d), G_CALLBACK(b) }
956  #define LAST_ENTRY            { NULL, NULL, FALSE, NULL, 0, NULL }  #define LAST_ENTRY            { NULL, NULL, FALSE, NULL, 0, NULL }
957    
958  static const menu_entry_t submenu_view[] = {  static const menu_entry_t submenu_view[] = {
# Line 945  static const menu_entry_t submenu_view[] Line 968  static const menu_entry_t submenu_view[]
968    DISABLED_ENTRY("Hide selected", cb_menu_map_hide_sel, menu_item_map_hide_sel),    DISABLED_ENTRY("Hide selected", cb_menu_map_hide_sel, menu_item_map_hide_sel),
969    DISABLED_ENTRY("Show all",      cb_menu_map_show_all, menu_item_map_show_all),    DISABLED_ENTRY("Show all",      cb_menu_map_show_all, menu_item_map_show_all),
970    /* --- */    /* --- */
971    { "No icons",       NULL, TRUE,  no_icon_get_toggle, 0, G_CALLBACK(cb_menu_map_no_icons) },    TOGGLE_ENTRY("No icons",        cb_menu_map_no_icons, no_icon_get_toggle),
972    
973    LAST_ENTRY    LAST_ENTRY
974  };  };
# Line 959  static const menu_entry_t submenu_wms[] Line 982  static const menu_entry_t submenu_wms[]
982    LAST_ENTRY    LAST_ENTRY
983  };  };
984    
985  void menu_create(appdata_t *appdata) {  /* -- the track submenu -- */
986    GtkWidget *button;  static const menu_entry_t submenu_track[] = {
987    HildonAppMenu *menu = HILDON_APP_MENU(hildon_app_menu_new());    ENABLED_ENTRY("Import",  cb_menu_track_import, track.menu_item_track_import),
988      DISABLED_ENTRY("Export", cb_menu_track_export, track.menu_item_track_export),
989      DISABLED_ENTRY("Clear",  cb_menu_track_clear, track.menu_item_track_clear),
990      ENABLED_TOGGLE_ENTRY("GPS enable", cb_menu_track_enable_gps,
991                    enable_gps_get_toggle, track.menu_item_track_enable_gps),
992      DISABLED_TOGGLE_ENTRY("GPS follow", cb_menu_track_follow_gps,
993                    follow_gps_get_toggle, track.menu_item_track_follow_gps),
994    
995      LAST_ENTRY
996    };
997    
   /* build submenus */  
   appdata->submenu_wms = app_menu_create(appdata, submenu_wms);  
   appdata->submenu_view = app_menu_create(appdata, submenu_view);  
   
   /* ------- */  
   button = gtk_button_new_with_label(_("About"));  
   g_signal_connect_after(button, "clicked",  
                          G_CALLBACK(cb_menu_about), appdata);  
   hildon_app_menu_append(menu, GTK_BUTTON(button));  
   
   button = gtk_button_new_with_label(_("View"));  
   g_signal_connect_after(button, "clicked",  
                          G_CALLBACK(on_submenu_view_clicked), appdata);  
   hildon_app_menu_append(menu, GTK_BUTTON(button));  
   
   button = gtk_button_new_with_label(_("WMS"));  
   g_signal_connect_after(button, "clicked",  
                          G_CALLBACK(on_submenu_wms_clicked), appdata);  
   hildon_app_menu_append(menu, GTK_BUTTON(button));  
998    
999    /* -- the applications main menu -- */
1000    static const menu_entry_t main_menu[] = {
1001      SIMPLE_ENTRY("About",  cb_menu_about),
1002      ENABLED_ENTRY("View",  on_submenu_view_clicked,  submenu_view),
1003      ENABLED_ENTRY("WMS",   on_submenu_wms_clicked,   submenu_wms),
1004      ENABLED_ENTRY("Track", on_submenu_track_clicked, track.submenu_track),
1005    
1006      LAST_ENTRY
1007    };
1008    
1009    gtk_widget_show_all(GTK_WIDGET(menu));  void menu_create(appdata_t *appdata) {
1010    hildon_window_set_app_menu(HILDON_WINDOW(appdata->window), menu);    HildonAppMenu *menu = HILDON_APP_MENU(hildon_app_menu_new());
1011    
1012      /* build menu/submenus */
1013      menu = HILDON_APP_MENU(app_menu_create(appdata, main_menu));
1014      appdata->app_menu_wms = app_menu_create(appdata, submenu_wms);
1015      appdata->app_menu_view = app_menu_create(appdata, submenu_view);
1016      appdata->app_menu_track = app_menu_create(appdata, submenu_track);
1017    
1018      hildon_window_set_app_menu(HILDON_WINDOW(appdata->window), menu);
1019  }  }
1020  #endif  #endif
1021    
# Line 1078  gboolean on_window_key_press(GtkWidget * Line 1107  gboolean on_window_key_press(GtkWidget *
1107    appdata_t *appdata = (appdata_t*)data;    appdata_t *appdata = (appdata_t*)data;
1108    int handled = FALSE;    int handled = FALSE;
1109    
1110      //  printf("key event with keyval %x\n", event->keyval);
1111    
1112    // the map handles some keys on its own ...    // the map handles some keys on its own ...
1113    switch(event->keyval) {    switch(event->keyval) {
1114    
# Line 1151  int main(int argc, char *argv[]) { Line 1182  int main(int argc, char *argv[]) {
1182    /* Create HildonWindow and set it to HildonProgram */    /* Create HildonWindow and set it to HildonProgram */
1183    appdata.window = HILDON_WINDOW(hildon_window_new());    appdata.window = HILDON_WINDOW(hildon_window_new());
1184    hildon_program_add_window(appdata.program, appdata.window);    hildon_program_add_window(appdata.program, appdata.window);
1185    
1186    #if MAEMO_VERSION_MAJOR == 5
1187      unsigned long val;
1188      XChangeProperty(GDK_DISPLAY(),
1189                      GDK_WINDOW_XID(GTK_WIDGET(appdata.window)->window),
1190                      XInternAtom(GDK_DISPLAY(),
1191                                  "_HILDON_ZOOM_KEY_ATOM",
1192                                  False), XA_INTEGER, 32,
1193                      PropModeReplace, (unsigned char *) &val, 1);
1194    #endif
1195    
1196  #else  #else
1197    /* Create a Window. */    /* Create a Window. */
1198    appdata.window = gtk_window_new(GTK_WINDOW_TOPLEVEL);    appdata.window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

Legend:
Removed from v.189  
changed lines
  Added in v.190