]> git.itanic.dy.fi Git - maemo-mapper/blobdiff - src/menu.c
Added basic APRS support - Can be disabled by removing definition of INCLUDE_APRS
[maemo-mapper] / src / menu.c
index 0d9171c3178d166420cef4ee39ff7bfde46d6e86..f9e0600008ea4c55effc57eca0c52c50478dc2bb 100644 (file)
@@ -47,6 +47,9 @@
 
 #include "display.h"
 #include "gps.h"
+#include "aprs.h"
+#include "aprs_kiss.h"
+#include "aprs_display.h"
 #include "gdk-pixbuf-rotate.h"
 #include "gpx.h"
 #include "maps.h"
@@ -295,8 +298,10 @@ menu_cb_track_insert_mark(GtkMenuItem *item)
     }
 
     unit2latlon(_pos.unitx, _pos.unity, lat, lon);
-    lat_format(lat, tmp1);
-    lon_format(lon, tmp2);
+    
+    format_lat_lon(lat, lon, tmp1, tmp2);
+    //lat_format(lat, tmp1);
+    //lon_format(lon, tmp2);
     p_latlon = g_strdup_printf("%s, %s", tmp1, tmp2);
     gtk_label_set_text(GTK_LABEL(lbl_latlon), p_latlon);
     g_free(p_latlon);
@@ -853,13 +858,15 @@ menu_cb_view_goto_latlon(GtkMenuItem *item)
 
     /* Initialize with the current center position. */
     {
-        gchar buffer[32];
+        gchar buffer1[32];
+        gchar buffer2[32];
         gdouble lat, lon;
         unit2latlon(_center.unitx, _center.unity, lat, lon);
-        lat_format(lat, buffer);
-        gtk_entry_set_text(GTK_ENTRY(txt_lat), buffer);
-        lon_format(lon, buffer);
-        gtk_entry_set_text(GTK_ENTRY(txt_lon), buffer);
+        //lat_format(lat, buffer1);
+        //lon_format(lon, buffer2);
+        format_lat_lon(lat, lon, buffer1, buffer2);
+        gtk_entry_set_text(GTK_ENTRY(txt_lat), buffer1);
+        gtk_entry_set_text(GTK_ENTRY(txt_lon), buffer2);
     }
 
     gtk_widget_show_all(dialog);
@@ -1242,6 +1249,125 @@ menu_cb_view_fullscreen(GtkMenuItem *item)
     return TRUE;
 }
 
+/****************************************************************************
+ * BELOW: APRS MENU *********************************************************
+ ****************************************************************************/
+#ifdef INCLUDE_APRS
+
+static gboolean menu_cb_aprs_settings(GtkMenuItem *item)
+{
+    printf("%s()\n", __PRETTY_FUNCTION__);
+
+    gboolean aprs_inet_config_changed = FALSE;
+    gboolean aprs_tty_config_changed = FALSE;
+
+    aprs_settings_dialog(&aprs_inet_config_changed, &aprs_tty_config_changed);
+    
+    if(aprs_inet_config_changed)
+    {
+        gtk_widget_set_sensitive(GTK_WIDGET(_menu_enable_aprs_inet_item), _aprs_enable);
+        gtk_widget_set_sensitive(GTK_WIDGET(_menu_enable_aprs_tty_item), _aprs_enable);
+        gtk_widget_set_sensitive(GTK_WIDGET(_menu_list_aprs_stations_item), _aprs_enable);
+        gtk_widget_set_sensitive(GTK_WIDGET(_menu_list_aprs_messages_item), _aprs_enable);
+
+       
+       aprs_server_disconnect();
+       
+       if(_aprs_enable && _aprs_inet_enable)
+       {
+               aprs_server_connect();
+       }
+    }
+    
+    vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
+    return TRUE;
+}
+
+static gboolean menu_cb_enable_tty_aprs(GtkMenuItem *item)
+{
+    printf("%s()\n", __PRETTY_FUNCTION__);
+
+    if(_aprs_enable)
+    {
+
+           if((_aprs_tty_enable = gtk_check_menu_item_get_active(
+                       GTK_CHECK_MENU_ITEM(_menu_enable_aprs_tty_item))))
+               aprs_tty_connect();
+           else
+               aprs_tty_disconnect();
+    }
+    
+
+    vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
+    return TRUE;
+}
+
+
+static gboolean
+menu_cb_enable_inet_aprs(GtkMenuItem *item)
+{
+    printf("%s()\n", __PRETTY_FUNCTION__);
+
+    if(_aprs_enable)
+    {
+
+           if((_aprs_inet_enable = gtk_check_menu_item_get_active(
+                       GTK_CHECK_MENU_ITEM(_menu_enable_aprs_inet_item))))
+               aprs_server_connect();
+           else
+               aprs_server_disconnect();
+
+
+    }
+    else
+    {
+       // APRS not enabled
+    }
+    
+
+    vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
+    return TRUE;
+}
+
+static gboolean menu_cb_list_aprs_messages(GtkMenuItem *item)
+{
+    printf("%s()\n", __PRETTY_FUNCTION__);
+
+    if(_aprs_enable)
+    {
+       list_messages();
+    }
+    else
+    {
+       // APRS not enabled
+    }
+    
+
+    vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
+    return TRUE;       
+}
+
+static gboolean
+menu_cb_list_aprs_stations(GtkMenuItem *item)
+{
+    printf("%s()\n", __PRETTY_FUNCTION__);
+
+    if(_aprs_enable)
+    {
+       list_stations();
+    }
+    else
+    {
+       // APRS not enabled
+    }
+    
+
+    vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);
+    return TRUE;
+}
+
+#endif // INCLUDE_APRS
+
 /****************************************************************************
  * BELOW: GPS MENU **********************************************************
  ****************************************************************************/
@@ -1757,6 +1883,47 @@ menu_init()
 
     gtk_menu_append(menu, gtk_separator_menu_item_new());
 
+#ifdef INCLUDE_APRS
+    /* The "APRS" submenu. */
+    gtk_menu_append(menu, menu_item
+            = gtk_menu_item_new_with_label(_("APRS")));
+    gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item),
+            submenu = gtk_menu_new());
+    
+    gtk_menu_append(submenu, _menu_enable_aprs_inet_item
+            = gtk_check_menu_item_new_with_label(_("Connect to APRS Server")));
+    gtk_check_menu_item_set_active(
+            GTK_CHECK_MENU_ITEM(_menu_enable_aprs_inet_item), _aprs_inet_enable);
+    gtk_widget_set_sensitive(GTK_WIDGET(_menu_enable_aprs_inet_item), _aprs_enable);
+    
+    
+    gtk_menu_append(submenu, _menu_enable_aprs_tty_item
+                = gtk_check_menu_item_new_with_label(_("Connect to TNC")));
+        gtk_check_menu_item_set_active(
+                GTK_CHECK_MENU_ITEM(_menu_enable_aprs_tty_item), _aprs_tty_enable);
+        gtk_widget_set_sensitive(GTK_WIDGET(_menu_enable_aprs_tty_item), _aprs_enable);
+        
+    
+    gtk_menu_append(submenu, _menu_list_aprs_stations_item
+                = gtk_menu_item_new_with_label(_("List Stations...")));
+        
+    gtk_widget_set_sensitive(GTK_WIDGET(_menu_list_aprs_stations_item), _aprs_enable);
+
+
+    gtk_menu_append(submenu, _menu_list_aprs_messages_item
+                = gtk_menu_item_new_with_label(_("List Messages...")));
+        
+    gtk_widget_set_sensitive(GTK_WIDGET(_menu_list_aprs_messages_item), _aprs_enable);
+
+    
+    gtk_menu_append(submenu, _menu_aprs_settings_item
+                    = gtk_menu_item_new_with_label(_("APRS Settings...")));
+    
+    
+    gtk_menu_append(menu, gtk_separator_menu_item_new());
+
+#endif // INCLUDE_APRS
+
     /* The other menu items. */
     gtk_menu_append(menu, _menu_settings_item
         = gtk_menu_item_new_with_label(_("Settings...")));
@@ -1905,6 +2072,24 @@ menu_init()
     g_signal_connect(G_OBJECT(_menu_gps_reset_item), "activate",
                       G_CALLBACK(menu_cb_gps_reset), NULL);
 
+#ifdef INCLUDE_APRS
+    /* Connect the "APRS" signals. */
+    g_signal_connect(G_OBJECT(_menu_enable_aprs_inet_item), "toggled",
+                      G_CALLBACK(menu_cb_enable_inet_aprs), NULL);
+
+    g_signal_connect(G_OBJECT(_menu_enable_aprs_tty_item), "toggled",
+                      G_CALLBACK(menu_cb_enable_tty_aprs), NULL);
+
+    g_signal_connect(G_OBJECT(_menu_list_aprs_stations_item), "activate",
+                          G_CALLBACK(menu_cb_list_aprs_stations), NULL);
+
+    g_signal_connect(G_OBJECT(_menu_list_aprs_messages_item), "activate",
+                              G_CALLBACK(menu_cb_list_aprs_messages), NULL);
+    
+    g_signal_connect(G_OBJECT(_menu_aprs_settings_item), "activate",
+                                  G_CALLBACK(menu_cb_aprs_settings), NULL);
+#endif // INCLUDE_APRS        
+    
     /* Connect the other menu item signals. */
     g_signal_connect(G_OBJECT(_menu_settings_item), "activate",
                       G_CALLBACK(menu_cb_settings), NULL);