#define GCONF_KEY_POI_DL_URL GCONF_KEY_PREFIX"/poi_dl_url"
#define GCONF_KEY_DEG_FORMAT GCONF_KEY_PREFIX"/deg_format"
+// APRS
+#ifdef INCLUDE_APRS
+#define GCONF_KEY_APRS_SERVER GCONF_KEY_PREFIX"/aprs_server"
+#define GCONF_KEY_APRS_SERVER_PORT GCONF_KEY_PREFIX"/aprs_server_port"
+#define GCONF_KEY_APRS_SERVER_VAL GCONF_KEY_PREFIX"/aprs_mycall_val"
+#define GCONF_KEY_APRS_MYCALL GCONF_KEY_PREFIX"/aprs_mycall"
+#define GCONF_KEY_APRS_INET_BEACON GCONF_KEY_PREFIX"/aprs_inet_beacon"
+#define GCONF_KEY_APRS_INET_BEACON_INTERVAL GCONF_KEY_PREFIX"/aprs_inet_beacon_interval"
+#define GCONF_KEY_APRS_ENABLE GCONF_KEY_PREFIX"/aprs_enable"
+#define GCONF_KEY_APRS_ENABLE_INET_TX GCONF_KEY_PREFIX"/aprs_enable_inet_tx"
+#define GCONF_KEY_APRS_ENABLE_TTY_TX GCONF_KEY_PREFIX"/aprs_enable_tty_tx"
+
+#define GCONF_KEY_APRS_MAX_TRACK_PTS GCONF_KEY_PREFIX"/aprs_max_track_points"
+#define GCONF_KEY_APRS_MAX_STATIONS GCONF_KEY_PREFIX"/aprs_max_stations"
+#define GCONF_KEY_APRS_TTY_PORT GCONF_KEY_PREFIX"/aprs_tty_port"
+#define GCONF_KEY_APRS_TNC_CONN_METHOD GCONF_KEY_PREFIX"/aprs_tnc_conn_method"
+#define GCONF_KEY_APRS_TNC_BT_MAC GCONF_KEY_PREFIX"/aprs_tnc_bt_mac"
+#define GCONF_KEY_APRS_INET_AUTO_FILTER GCONF_KEY_PREFIX"/aprs_inet_auto_filter"
+#define GCONF_KEY_APRS_INET_AUTO_FILTER_RANGE GCONF_KEY_PREFIX"/aprs_inet_auto_filter_range"
+#define GCONF_KEY_APRS_SHOW_NEW_STATION_ALERT GCONF_KEY_PREFIX"/aprs_show_new_station_alert"
+#define GCONF_KEY_APRS_BEACON_COMMENT GCONF_KEY_PREFIX"/aprs_beacon_comment"
+#define GCONF_KEY_APRS_TTY_BEACON_INTERVAL GCONF_KEY_PREFIX"/aprs_tty_beacon_interval"
+
+#define GCONF_KEY_APRS_BEACON_PATH GCONF_KEY_PREFIX"/aprs_beacon_path"
+#define GCONF_KEY_APRS_BEACON_SYM_GROUP GCONF_KEY_PREFIX"/aprs_beacon_symbol_group"
+#define GCONF_KEY_APRS_BEACON_SYMBOL GCONF_KEY_PREFIX"/aprs_beacon_symbol"
+#define GCONF_KEY_APRS_BEACON_COMPRESSED GCONF_KEY_PREFIX"/aprs_beacon_compressed"
+
+//////////
+#endif // INCLUDE_APRS
+
typedef struct _ScanInfo ScanInfo;
struct _ScanInfo {
DBusGProxy *sig_proxy;
};
+#ifdef INCLUDE_APRS
+
+typedef struct
+{
+ GtkWidget *txt_aprs_mycall;
+ GtkWidget *txt_aprs_inet_server_validation;
+ GtkWidget *txt_aprs_server;
+ GtkWidget *txt_aprs_inet_beacon_interval;
+ GtkWidget *txt_aprs_inet_beacon_comment;
+ GtkWidget *txt_aprs_max_stations;
+ GtkWidget *txt_aprs_tty_port;
+ GtkWidget *txt_tnc_bt_mac;
+ GtkWidget *txt_auto_filter_range;
+ GtkWidget *txt_beacon_comment;
+ GtkWidget *num_aprs_server_port;
+ GtkWidget *txt_tty_beacon_interval;
+
+ GtkWidget *rad_aprs_file;
+ GtkWidget *rad_tnc_bt;
+ GtkWidget *rad_tnc_file;
+
+ GtkWidget *chk_enable_inet_auto_filter;
+ GtkWidget *chk_enable_inet_tx;
+ GtkWidget *chk_enable_tty_tx;
+ GtkWidget *chk_aprs_show_new_station_alert;
+ GtkWidget *chk_aprs_enabled;
+
+ GtkWidget *btn_scan_bt_tnc;
+
+ GtkWidget *txt_unproto_path;
+ GtkWidget *chk_compressed_beacon;
+ GtkWidget *txt_beacon_group;
+ GtkWidget *txt_beacon_symbol;
+
+} TAprsSettings;
+#endif // INCLUDE_APRS
+
+
typedef struct _KeysDialogInfo KeysDialogInfo;
struct _KeysDialogInfo {
GtkWidget *cmb[CUSTOM_KEY_ENUM_COUNT];
GtkWidget *col[COLORABLE_ENUM_COUNT];
};
+#ifdef INCLUDE_APRS
+typedef enum
+{
+ ALIGN_TOP_LEFT,
+ ALIGN_TOP_CENTER,
+ ALIGN_TOP_RIGHT,
+ ALIGN_CENTER_LEFT,
+ ALIGN_CENTER_CENTER,
+ ALIGN_CENTER_RIGHT,
+ ALIGN_BOTTOM_LEFT,
+ ALIGN_BOTTOM_CENTER,
+ ALIGN_BOTTOM_RIGHT
+} TCellAlignment;
+
+void set_ctrl_alignment(GtkWidget *ctrl, TCellAlignment alignment)
+{
+ gfloat align_hor = 0.0f, align_vert = 0.0f;
+
+ switch(alignment)
+ {
+ case ALIGN_CENTER_LEFT:
+ case ALIGN_CENTER_CENTER:
+ case ALIGN_CENTER_RIGHT:
+ align_vert = 0.5f;
+ break;
+ case ALIGN_BOTTOM_LEFT:
+ case ALIGN_BOTTOM_CENTER:
+ case ALIGN_BOTTOM_RIGHT:
+ align_vert = 1.0f;
+ break;
+ case ALIGN_TOP_LEFT:
+ case ALIGN_TOP_CENTER:
+ case ALIGN_TOP_RIGHT:
+ default:
+ align_vert = 0.0f;
+ break;
+ }
+
+
+ switch(alignment)
+ {
+ case ALIGN_CENTER_CENTER:
+ case ALIGN_BOTTOM_CENTER:
+ case ALIGN_TOP_CENTER:
+ align_hor = 0.5f;
+ break;
+ case ALIGN_CENTER_RIGHT:
+ case ALIGN_BOTTOM_RIGHT:
+ case ALIGN_TOP_RIGHT:
+ align_hor = 1.0f;
+ break;
+ case ALIGN_CENTER_LEFT:
+ case ALIGN_BOTTOM_LEFT:
+ case ALIGN_TOP_LEFT:
+ default:
+ align_hor = 0.0f;
+ break;
+ }
+
+ gtk_misc_set_alignment(GTK_MISC(ctrl), align_hor, align_vert);
+}
+
+void set_ctrl_width(GtkWidget *ctrl, gint width)
+{
+ gtk_widget_set_size_request(ctrl, width, -1);
+}
+
+
+void add_edit_box(GtkWidget *table, gint xmin, gint xmax, gint ymin, gint ymax, gint width,
+ GtkWidget **ctrl, TCellAlignment alignment, gchar * initial_value)
+{
+ GtkWidget * hbox;
+
+ gtk_table_attach(GTK_TABLE(table),
+ hbox = gtk_hbox_new(FALSE, 4),
+ xmin, xmax, ymin, ymax, GTK_EXPAND | GTK_FILL, 0, 2, 4);
+ gtk_box_pack_start(GTK_BOX(hbox),
+ *ctrl = gtk_entry_new(),
+ TRUE, TRUE, 0);
+
+#ifndef LEGACY
+ g_object_set(G_OBJECT(*ctrl), "hildon-input-mode",
+ HILDON_GTK_INPUT_MODE_FULL, NULL);
+#else
+ g_object_set(G_OBJECT(*ctrl), HILDON_AUTOCAP, FALSE, NULL);
+#endif
+
+ set_ctrl_alignment(*ctrl, alignment);
+ set_ctrl_width(*ctrl, width);
+
+ // Set the initial value
+ if(initial_value)
+ {
+ gtk_entry_set_text(GTK_ENTRY(*ctrl), initial_value);
+ }
+}
+
+void add_check_box(GtkWidget *table, gint xmin, gint xmax, gint ymin, gint ymax, gint width,
+ GtkWidget **ctrl, TCellAlignment alignment, gchar * caption, gboolean initial_value)
+{
+ gtk_table_attach(GTK_TABLE(table),
+ *ctrl = gtk_check_button_new_with_label(caption),
+ xmin, xmax, ymin, ymax, GTK_FILL, 0, 2, 4);
+
+ set_ctrl_alignment(*ctrl, alignment);
+ set_ctrl_width(*ctrl, width);
+
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(*ctrl), initial_value);
+}
+
+void add_label_box(GtkWidget *table, gint xmin, gint xmax, gint ymin, gint ymax, gint width,
+ GtkWidget **ctrl, TCellAlignment alignment, gchar * initial_value)
+{
+
+ gtk_table_attach(GTK_TABLE(table),
+ *ctrl = gtk_label_new(initial_value),
+ xmin, xmax, ymin, ymax, GTK_FILL, 0, 2, 4);
+// gtk_misc_set_alignment(GTK_MISC(ctrl), 1.f, 0.5f);
+
+ set_ctrl_alignment(*ctrl, alignment);
+ set_ctrl_width(*ctrl, width);
+}
+
+#endif // INCLUDE_APRS
+
/**
* Save all configuration data to GCONF.
/* Save Deg Format. */
gconf_client_set_string(gconf_client,
- GCONF_KEY_DEG_FORMAT, DEG_FORMAT_ENUM_TEXT[_degformat], NULL);
+ GCONF_KEY_DEG_FORMAT, DEG_FORMAT_ENUM_TEXT[_degformat].name , NULL);
/* Save Speed Limit On flag. */
gconf_client_set_bool(gconf_client,
return TRUE;
}
+#ifdef INCLUDE_APRS
+
+void load_aprs_options(GConfClient *gconf_client)
+{
+ _aprs_server = gconf_client_get_string(
+ gconf_client, GCONF_KEY_APRS_SERVER, NULL);
+
+ _aprs_server_port = gconf_client_get_int(
+ gconf_client, GCONF_KEY_APRS_SERVER_PORT, NULL);
+
+ _aprs_inet_server_validation = gconf_client_get_string(
+ gconf_client, GCONF_KEY_APRS_SERVER_VAL, NULL);
+
+ _aprs_mycall = gconf_client_get_string(gconf_client,
+ GCONF_KEY_APRS_MYCALL, NULL);
+
+
+ _aprs_tty_port = gconf_client_get_string(gconf_client,
+ GCONF_KEY_APRS_TTY_PORT, NULL);
+
+
+
+ _aprs_inet_beacon_comment = gconf_client_get_string(gconf_client,
+ GCONF_KEY_APRS_INET_BEACON, NULL);
+
+ _aprs_inet_beacon_interval = gconf_client_get_int(
+ gconf_client, GCONF_KEY_APRS_INET_BEACON_INTERVAL, NULL);
+
+ _aprs_std_pos_hist = gconf_client_get_int(
+ gconf_client, GCONF_KEY_APRS_MAX_TRACK_PTS, NULL);
+
+ _aprs_max_stations = gconf_client_get_int(
+ gconf_client, GCONF_KEY_APRS_MAX_STATIONS, NULL);
+
+ _aprs_enable = gconf_client_get_bool(gconf_client,
+ GCONF_KEY_APRS_ENABLE, NULL);
+
+ _aprs_show_new_station_alert = gconf_client_get_bool(gconf_client,
+ GCONF_KEY_APRS_SHOW_NEW_STATION_ALERT, NULL);
+
+ _aprs_tnc_method = gconf_client_get_int(
+ gconf_client, GCONF_KEY_APRS_TNC_CONN_METHOD, NULL);
+
+ _aprs_tnc_bt_mac = gconf_client_get_string(gconf_client,
+ GCONF_KEY_APRS_TNC_BT_MAC, NULL);
+
+ _aprs_server_auto_filter_km = gconf_client_get_int(
+ gconf_client, GCONF_KEY_APRS_INET_AUTO_FILTER_RANGE, NULL);
+
+ _aprs_server_auto_filter_on = gconf_client_get_bool(gconf_client,
+ GCONF_KEY_APRS_INET_AUTO_FILTER, NULL);
+
+ _aprs_beacon_comment = gconf_client_get_string(gconf_client,
+ GCONF_KEY_APRS_BEACON_COMMENT, NULL);
+
+ _aprs_enable_inet_tx = gconf_client_get_bool(gconf_client,
+ GCONF_KEY_APRS_ENABLE_INET_TX, NULL);
+ _aprs_enable_tty_tx = gconf_client_get_bool(gconf_client,
+ GCONF_KEY_APRS_ENABLE_TTY_TX, NULL);
+
+ _aprs_tty_beacon_interval = gconf_client_get_int(
+ gconf_client, GCONF_KEY_APRS_TTY_BEACON_INTERVAL, NULL);
+
+
+ //_aprs_unproto_path = g_strdup_printf("WIDE2-2");
+ _aprs_unproto_path = gconf_client_get_string(gconf_client,
+ GCONF_KEY_APRS_BEACON_PATH, NULL);
+
+ _aprs_transmit_compressed_posit = gconf_client_get_bool(gconf_client,
+ GCONF_KEY_APRS_BEACON_COMPRESSED, NULL);
+
+ gchar *tmp;
+ tmp = gconf_client_get_string(gconf_client,
+ GCONF_KEY_APRS_BEACON_SYM_GROUP, NULL);
+ if(tmp && strlen(tmp)>0) _aprs_beacon_group = tmp[0];
+ else _aprs_beacon_group = '/';
+
+ //_aprs_beacon_symbol = 'k';
+ tmp = gconf_client_get_string(gconf_client,
+ GCONF_KEY_APRS_BEACON_SYMBOL, NULL);
+ if(tmp && strlen(tmp)>0) _aprs_beacon_symbol = tmp[0];
+ else _aprs_beacon_symbol = 'l';
+}
+#endif // INCLUDE_APRS
+
/**
* Bring up the Settings dialog. Return TRUE if and only if the recever
* information has changed (MAC or channel).
*/
-gboolean
-settings_dialog()
+gboolean settings_dialog()
{
static GtkWidget *dialog = NULL;
static GtkWidget *notebook = NULL;
cmb_degformat = gtk_combo_box_new_text());
for(i = 0; i < DEG_FORMAT_ENUM_COUNT; i++)
gtk_combo_box_append_text(GTK_COMBO_BOX(cmb_degformat),
- DEG_FORMAT_ENUM_TEXT[i]);
+ DEG_FORMAT_ENUM_TEXT[i].name);
gtk_table_attach(GTK_TABLE(table),
label = gtk_label_new(_("Auto-Download Pre-cache")),
COLORABLE_GCONF[COLORABLE_ROUTE_BREAK]
= GCONF_KEY_PREFIX"/color_route_break";
COLORABLE_GCONF[COLORABLE_POI] = GCONF_KEY_PREFIX"/color_poi";
-
+
+#ifdef INCLUDE_APRS
+ COLORABLE_GCONF[COLORABLE_APRS_STATION] = GCONF_KEY_PREFIX"/color_aprs_station";
+#endif // INCLUDE_APRS
+
if(!gconf_client)
{
popup_error(_window, _("Failed to initialize GConf. Quitting."));
gint i = 0;
if(degformat_key_str)
for(i = DEG_FORMAT_ENUM_COUNT - 1; i > 0; i--)
- if(!strcmp(degformat_key_str, DEG_FORMAT_ENUM_TEXT[i]))
+ if(!strcmp(degformat_key_str, DEG_FORMAT_ENUM_TEXT[i].name))
break;
_degformat = i;
}
_unblank_option = i;
}
+#ifdef INCLUDE_APRS
+ load_aprs_options(gconf_client);
+#endif // INCLUDE_APRS
+
/* Get Info Font Size. Default is INFO_FONT_MEDIUM. */
{
gchar *info_font_size_str = gconf_client_get_string(gconf_client,
vprintf("%s(): return\n", __PRETTY_FUNCTION__);
}
+
+#ifdef INCLUDE_APRS
+////// APRS Settings start
+
+void read_aprs_options(TAprsSettings *aprsSettings )
+{
+ // Basic options
+ _aprs_mycall = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(aprsSettings->txt_aprs_mycall)));
+
+
+ _aprs_enable = gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(aprsSettings->chk_aprs_enabled ));
+
+ _aprs_show_new_station_alert = gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(aprsSettings->chk_aprs_show_new_station_alert ));
+
+
+ gchar * s_max_stations = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(aprsSettings->txt_aprs_max_stations)));
+ gint64 i64_max_stations = g_ascii_strtoll (s_max_stations, NULL, 10);
+ _aprs_max_stations = (gint)i64_max_stations;
+
+
+ // Inet options
+ _aprs_server = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(aprsSettings->txt_aprs_server)));
+
+
+ _aprs_tty_port = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(aprsSettings->txt_aprs_tty_port)));
+
+ _aprs_inet_server_validation = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(aprsSettings->txt_aprs_inet_server_validation)));
+
+ gchar * s_port = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(aprsSettings->num_aprs_server_port)));
+ gint64 i64_port = g_ascii_strtoll (s_port, NULL, 10);
+ _aprs_server_port = (gint)i64_port;
+
+
+ gchar * s_beacon_interval = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(aprsSettings->txt_aprs_inet_beacon_interval )));
+ gint64 i64_beacon_interval = g_ascii_strtoll (s_beacon_interval, NULL, 10);
+ g_free(s_beacon_interval);
+ _aprs_inet_beacon_interval = (gint)i64_beacon_interval;
+
+ s_beacon_interval = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(aprsSettings->txt_tty_beacon_interval )));
+ i64_beacon_interval = g_ascii_strtoll (s_beacon_interval, NULL, 10);
+ g_free(s_beacon_interval);
+ _aprs_tty_beacon_interval = (gint)i64_beacon_interval;
+
+
+ _aprs_inet_beacon_comment = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(aprsSettings->txt_aprs_inet_beacon_comment )));
+
+ _aprs_tnc_bt_mac = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(aprsSettings->txt_tnc_bt_mac )));
+
+ _aprs_tnc_method = TNC_CONNECTION_BT;
+ if( gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(aprsSettings->rad_tnc_file) ))
+ {
+ _aprs_tnc_method = TNC_CONNECTION_FILE;
+ }
+
+
+ _aprs_server_auto_filter_on = gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(aprsSettings->chk_enable_inet_auto_filter ));
+
+ gchar * s_server_auto_filter_km = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(aprsSettings->txt_auto_filter_range )));
+ gint64 i64_server_auto_filter_km = g_ascii_strtoll (s_server_auto_filter_km, NULL, 10);
+ _aprs_server_auto_filter_km = (gint)i64_server_auto_filter_km;
+
+
+ _aprs_enable_inet_tx = gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(aprsSettings->chk_enable_inet_tx ));
+
+ _aprs_enable_tty_tx = gtk_toggle_button_get_active(
+ GTK_TOGGLE_BUTTON(aprsSettings->chk_enable_tty_tx ));
+
+ _aprs_beacon_comment = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(aprsSettings->txt_beacon_comment )));
+
+ _aprs_beacon_comment = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(aprsSettings->txt_beacon_comment )));
+
+
+ _aprs_unproto_path = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(aprsSettings->txt_unproto_path )));
+
+ gchar *tmp;
+ tmp = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(aprsSettings->txt_beacon_group )));
+ if(strlen(tmp)>0) _aprs_beacon_group = tmp[0];
+
+ tmp = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(aprsSettings->txt_beacon_symbol )));
+ if(strlen(tmp)>0) _aprs_beacon_symbol = tmp[0];
+
+ _aprs_transmit_compressed_posit = FALSE; // Not currently supported
+
+}
+
+void save_aprs_options()
+{
+ GConfClient *gconf_client = gconf_client_get_default();
+ if(!gconf_client)
+ {
+ popup_error(_window,
+ _("Failed to initialize GConf. Settings were not saved."));
+ return;
+ }
+
+
+ /* APRS */
+ if(_aprs_server)
+ gconf_client_set_string(gconf_client,
+ GCONF_KEY_APRS_SERVER, _aprs_server, NULL);
+
+ if(_aprs_server_port)
+ gconf_client_set_int(gconf_client,
+ GCONF_KEY_APRS_SERVER_PORT, _aprs_server_port, NULL);
+
+ if(_aprs_inet_server_validation)
+ gconf_client_set_string(gconf_client,
+ GCONF_KEY_APRS_SERVER_VAL, _aprs_inet_server_validation, NULL);
+
+ if(_aprs_mycall)
+ gconf_client_set_string(gconf_client,
+ GCONF_KEY_APRS_MYCALL, _aprs_mycall, NULL);
+
+ if(_aprs_tty_port)
+ gconf_client_set_string(gconf_client,
+ GCONF_KEY_APRS_TTY_PORT, _aprs_tty_port, NULL);
+
+
+
+
+ if(_aprs_inet_beacon_comment)
+ gconf_client_set_string(gconf_client,
+ GCONF_KEY_APRS_INET_BEACON, _aprs_inet_beacon_comment, NULL);
+
+ gconf_client_set_int(gconf_client,
+ GCONF_KEY_APRS_INET_BEACON_INTERVAL, _aprs_inet_beacon_interval, NULL);
+
+ gconf_client_set_int(gconf_client,
+ GCONF_KEY_APRS_MAX_TRACK_PTS, _aprs_std_pos_hist, NULL);
+
+ gconf_client_set_int(gconf_client,
+ GCONF_KEY_APRS_MAX_STATIONS, _aprs_max_stations, NULL);
+
+ gconf_client_set_bool(gconf_client,
+ GCONF_KEY_APRS_ENABLE, _aprs_enable, NULL);
+
+
+ gconf_client_set_bool(gconf_client,
+ GCONF_KEY_APRS_SHOW_NEW_STATION_ALERT, _aprs_show_new_station_alert, NULL);
+
+ if(_aprs_tnc_bt_mac)
+ gconf_client_set_string(gconf_client,
+ GCONF_KEY_APRS_TNC_BT_MAC, _aprs_tnc_bt_mac, NULL);
+
+ gconf_client_set_int(gconf_client,
+ GCONF_KEY_APRS_TNC_CONN_METHOD, _aprs_tnc_method, NULL);
+
+ gconf_client_set_int(gconf_client,
+ GCONF_KEY_APRS_INET_AUTO_FILTER_RANGE, _aprs_server_auto_filter_km, NULL);
+
+ gconf_client_set_bool(gconf_client,
+ GCONF_KEY_APRS_INET_AUTO_FILTER, _aprs_server_auto_filter_on, NULL);
+
+ gconf_client_set_bool(gconf_client,
+ GCONF_KEY_APRS_ENABLE_INET_TX, _aprs_enable_inet_tx, NULL);
+ gconf_client_set_bool(gconf_client,
+ GCONF_KEY_APRS_ENABLE_TTY_TX, _aprs_enable_tty_tx, NULL);
+
+ if(_aprs_beacon_comment)
+ gconf_client_set_string(gconf_client,
+ GCONF_KEY_APRS_BEACON_COMMENT, _aprs_beacon_comment, NULL);
+
+ gconf_client_set_int(gconf_client,
+ GCONF_KEY_APRS_TTY_BEACON_INTERVAL, _aprs_tty_beacon_interval, NULL);
+
+ gconf_client_set_bool(gconf_client,
+ GCONF_KEY_APRS_BEACON_COMPRESSED, _aprs_transmit_compressed_posit, NULL);
+
+ if(_aprs_unproto_path)
+ gconf_client_set_string(gconf_client,
+ GCONF_KEY_APRS_BEACON_PATH, _aprs_unproto_path, NULL);
+
+ //if(_aprs_beacon_group)
+ {
+ gchar tmp[5];
+ snprintf(tmp, 5, "%c", _aprs_beacon_group);
+
+ gconf_client_set_string(gconf_client,
+ GCONF_KEY_APRS_BEACON_SYM_GROUP, tmp, NULL);
+
+ //if(strlen(tmp)> 1) _aprs_beacon_group = tmp[0];
+ }
+
+ //if(_aprs_beacon_symbol)
+ {
+ gchar tmp[5];
+ snprintf(tmp, 5, "%c", _aprs_beacon_symbol);
+
+ gconf_client_set_string(gconf_client,
+ GCONF_KEY_APRS_BEACON_SYMBOL, tmp, NULL);
+
+ //if(strlen(tmp)> 1) _aprs_beacon_symbol = tmp[0];
+ }
+
+}
+
+
+
+
+
+void setup_aprs_options_page(GtkWidget *notebook, TAprsSettings *aprsSettings)
+{
+ GtkWidget *table;
+ GtkWidget *label;
+// GtkWidget *hbox;
+
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
+ table = gtk_table_new(3/*rows*/, 4/*columns*/, FALSE /*Auto re-size*/),
+ label = gtk_label_new(_("Station")));
+
+ /* Callsign. */
+ // Label
+ add_label_box(table, 0, 1, 0, 1, -1, &label, ALIGN_TOP_LEFT, "Callsign");
+ add_edit_box (table, 1, 2, 0, 1, -1, &(aprsSettings->txt_aprs_mycall), ALIGN_TOP_LEFT, _aprs_mycall);
+
+
+ add_check_box(table, 2, 4, 0, 1, -1, &(aprsSettings->chk_compressed_beacon), ALIGN_TOP_LEFT,
+ "Compress Beacons", _aprs_transmit_compressed_posit);
+ // Not yet supported
+ gtk_widget_set_sensitive (GTK_WIDGET (aprsSettings->chk_compressed_beacon), FALSE);
+
+
+
+ add_label_box(table, 0, 1, 1, 2, -1, &label, ALIGN_TOP_LEFT, "Beacon Path");
+ add_edit_box (table, 1, 2, 1, 2, -1, &(aprsSettings->txt_unproto_path), ALIGN_TOP_LEFT, _aprs_unproto_path);
+
+
+ add_check_box(table, 2, 4, 1, 2, -1, &(aprsSettings->chk_aprs_show_new_station_alert), ALIGN_TOP_LEFT,
+ "Show New Station Alerts", _aprs_show_new_station_alert);
+
+
+ add_label_box(table, 0, 1, 2, 3, -1, &label, ALIGN_TOP_LEFT, "Symbol Group");
+ gchar initialValue[2];
+ snprintf(initialValue, 2, "%c", _aprs_beacon_group);
+ add_edit_box (table, 1, 2, 2, 3, -1, &(aprsSettings->txt_beacon_group), ALIGN_TOP_LEFT, initialValue);
+
+ add_label_box(table, 2, 3, 2, 3, -1, &label, ALIGN_TOP_LEFT, "Symbol");
+
+ snprintf(initialValue, 2, "%c", _aprs_beacon_symbol);
+ add_edit_box (table, 3, 4, 2, 3, -1, &(aprsSettings->txt_beacon_symbol), ALIGN_TOP_LEFT, initialValue);
+
+}
+
+
+
+void setup_aprs_tty_page_options_page(GtkWidget *notebook, TAprsSettings *aprsSettings)
+{
+ GtkWidget *table;
+ GtkWidget *label;
+ GtkWidget *hbox;
+
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
+ table = gtk_table_new(3/*rows*/, 2/*columns*/, FALSE /*Auto re-size*/),
+ label = gtk_label_new(_("TNC 1")));
+
+
+ // Receiver MAC Address.
+ gtk_table_attach(GTK_TABLE(table),
+ aprsSettings->rad_tnc_bt = gtk_radio_button_new_with_label(
+ NULL, _("Bluetooth")),
+ 0, 1, 0, 1, GTK_FILL, 0, 2, 4);
+// gtk_misc_set_alignment(/*GTK_MISC*/(aprsSettings->rad_tnc_bt), 1.f, 0.5f);
+ gtk_table_attach(GTK_TABLE(table),
+ hbox = gtk_hbox_new(FALSE, 4),
+ 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 2, 4);
+
+ gtk_box_pack_start(GTK_BOX(hbox),
+ aprsSettings->txt_tnc_bt_mac = gtk_entry_new(),
+ TRUE, TRUE, 0);
+#ifdef MAEMO_CHANGES
+#ifndef LEGACY
+ g_object_set(G_OBJECT(aprsSettings->txt_tnc_bt_mac), "hildon-input-mode",
+ HILDON_GTK_INPUT_MODE_FULL, NULL);
+#else
+ g_object_set(G_OBJECT(txt_gps_bt_mac), HILDON_AUTOCAP, FALSE, NULL);
+#endif
+#endif
+ gtk_box_pack_start(GTK_BOX(hbox),
+ aprsSettings->btn_scan_bt_tnc = gtk_button_new_with_label(_("Scan...")),
+ FALSE, FALSE, 0);
+
+#ifndef HAVE_LIBGPSBT
+gtk_widget_set_sensitive(aprsSettings->rad_tnc_bt, FALSE);
+gtk_widget_set_sensitive(aprsSettings->txt_tnc_bt_mac, FALSE);
+gtk_widget_set_sensitive(aprsSettings->btn_scan_bt_tnc, FALSE);
+#endif
+
+ // File Path (RFComm).
+ gtk_table_attach(GTK_TABLE(table),
+ aprsSettings->rad_tnc_file = gtk_radio_button_new_with_label_from_widget(
+ GTK_RADIO_BUTTON(aprsSettings->rad_tnc_bt), _("File Path")),
+ 0, 1, 1, 2, GTK_FILL, 0, 2, 4);
+// gtk_misc_set_alignment(/*GTK_MISC*/(aprsSettings->rad_tnc_file), 1.f, 0.5f);
+ gtk_table_attach(GTK_TABLE(table),
+ hbox = gtk_hbox_new(FALSE, 4),
+ 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, 0, 2, 4);
+ gtk_box_pack_start(GTK_BOX(hbox),
+ aprsSettings->txt_aprs_tty_port = gtk_entry_new(),
+ TRUE, TRUE, 0);
+#ifdef MAEMO_CHANGES
+#ifndef LEGACY
+ g_object_set(G_OBJECT(aprsSettings->txt_aprs_tty_port), "hildon-input-mode",
+ HILDON_GTK_INPUT_MODE_FULL, NULL);
+#else
+ g_object_set(G_OBJECT(txt_gps_file_path), HILDON_AUTOCAP, FALSE, NULL);
+#endif
+#endif
+
+
+
+ add_check_box(table, 0, 1, 2, 3, -1, &(aprsSettings->chk_enable_tty_tx), ALIGN_TOP_LEFT,
+ "Enable TX", _aprs_enable_tty_tx);
+
+ gtk_table_attach(GTK_TABLE(table),
+ label = gtk_label_new(_("Only KISS TNC's are supported (9600 8N1)")),
+ 1, 2, 2, 3, GTK_FILL, 0, 2, 4);
+ gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
+
+
+
+
+ // Init
+
+ if(aprsSettings->txt_aprs_tty_port)
+ gtk_entry_set_text(GTK_ENTRY(aprsSettings->txt_aprs_tty_port), _aprs_tty_port);
+
+ if(aprsSettings->txt_tnc_bt_mac)
+ gtk_entry_set_text(GTK_ENTRY(aprsSettings->txt_tnc_bt_mac), _aprs_tnc_bt_mac);
+
+
+ if(_aprs_tnc_method == TNC_CONNECTION_BT)
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(aprsSettings->rad_tnc_bt), TRUE);
+ else if(_aprs_tnc_method == TNC_CONNECTION_FILE)
+ gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(aprsSettings->rad_tnc_file), TRUE);
+
+
+}
+
+void setup_aprs_tty2_page_options_page(GtkWidget *notebook, TAprsSettings *aprsSettings)
+{
+ GtkWidget *table;
+ GtkWidget *label;
+
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
+ table = gtk_table_new(2/*rows*/, 1/*columns*/, FALSE /*Auto re-size*/),
+ label = gtk_label_new(_("TNC 2")));
+
+ add_label_box(table, 0, 1, 0, 1, -1, &label, ALIGN_TOP_LEFT, "Beacon Interval");
+
+ gchar s_interval[8]; s_interval[0] = 0;
+ if(_aprs_tty_beacon_interval>0) snprintf(s_interval, 8, "%u", _aprs_tty_beacon_interval );
+ add_edit_box (table, 1, 3, 0, 1, -1, &(aprsSettings->txt_tty_beacon_interval), ALIGN_TOP_LEFT,
+ s_interval);
+ add_label_box(table, 3, 4, 0, 1, -1, &label, ALIGN_TOP_LEFT, "seconds");
+
+ add_label_box(table, 0, 1, 1, 2, -1, &label, ALIGN_TOP_LEFT, "Beacon Text");
+ add_edit_box (table, 1, 4, 1, 2, -1, &(aprsSettings->txt_beacon_comment), ALIGN_TOP_LEFT, _aprs_beacon_comment);
+
+}
+
+
+void setup_aprs_general_options_page(GtkWidget *notebook, TAprsSettings *aprsSettings)
+{
+ GtkWidget *table;
+ GtkWidget *label;
+
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
+ table = gtk_table_new(2/*rows*/, 1/*columns*/, FALSE /*Auto re-size*/),
+ label = gtk_label_new(_("APRS")));
+
+ // Notice
+ add_label_box(table, 0, 1, 0, 1, -1, &label, ALIGN_TOP_LEFT,
+ "APRS (Automatic/Amateur Position Reporting System) is \na system used by Radio Amateurs to communicate position, \nweather, and short messages.");
+
+ // Enabled
+ add_check_box(table, 0, 1, 1, 2, -1, &(aprsSettings->chk_aprs_enabled), ALIGN_TOP_LEFT,
+ "Enable APRS functionality", _aprs_enable);
+}
+
+void setup_aprs_inet_options_page(GtkWidget *notebook, TAprsSettings *aprsSettings)
+{
+ GtkWidget *table;
+ GtkWidget *label;
+
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
+ table = gtk_table_new(3/*rows*/, 5/*columns*/, FALSE /*Auto re-size*/),
+ label = gtk_label_new(_("Internet")));
+
+
+ /*iNet server*/
+ add_label_box(table, 0, 1, 0, 1, -1, &label, ALIGN_TOP_LEFT, "Server");
+ add_edit_box (table, 1, 3, 0, 1, -1, &(aprsSettings->txt_aprs_server), ALIGN_TOP_LEFT, _aprs_server);
+
+ /*iNet server port*/
+ add_label_box(table, 3, 4, 0, 1, -1, &label, ALIGN_TOP_RIGHT, "Port");
+ add_edit_box (table, 4, 5, 0, 1, 0.5, &(aprsSettings->num_aprs_server_port), ALIGN_TOP_LEFT,
+ g_strdup_printf("%u", _aprs_server_port));
+
+
+ /* Validation */
+ add_label_box(table, 0, 1, 1, 2, -1, &label, ALIGN_TOP_LEFT, "Server Validation");
+ add_edit_box (table, 1, 3, 1, 2, 0.5, &(aprsSettings->txt_aprs_inet_server_validation), ALIGN_TOP_LEFT, _aprs_inet_server_validation);
+ add_check_box(table, 3, 5, 1, 2, -1, &(aprsSettings->chk_enable_inet_tx), ALIGN_TOP_LEFT,
+ "Enable TX", _aprs_enable_inet_tx);
+
+ /*iNet server filter*/
+ add_label_box(table, 0, 1, 2, 3, -1, &label, ALIGN_TOP_LEFT, "Filter data");
+ add_check_box(table, 1, 2, 2, 3, -1, &(aprsSettings->chk_enable_inet_auto_filter), ALIGN_TOP_LEFT, "Enable",
+ _aprs_server_auto_filter_on);
+ add_label_box(table, 2, 3, 2, 3, -1, &label, ALIGN_TOP_RIGHT, "Range");
+ add_edit_box (table, 3, 4, 2, 3, 0.75, &(aprsSettings->txt_auto_filter_range), ALIGN_TOP_LEFT,
+ g_strdup_printf("%u", _aprs_server_auto_filter_km));
+ add_label_box(table, 4, 5, 2, 3, -1, &label, ALIGN_TOP_LEFT, "km");
+
+}
+
+
+
+void setup_aprs_inet2_options_page(GtkWidget *notebook, TAprsSettings *aprsSettings)
+{
+ GtkWidget *table;
+ GtkWidget *label;
+ GtkWidget *hbox;
+
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook),
+ table = gtk_table_new(2/*rows*/, 3/*columns*/, FALSE /*Auto re-size*/),
+ label = gtk_label_new(_("Internet 2")));
+
+
+ /* iNet Beacon interval */
+ // Label
+ gtk_table_attach(GTK_TABLE(table),
+ label = gtk_label_new(_("Beacon interval")),
+ 0, 1, 0, 1, GTK_FILL, 0, 2, 4);
+ gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
+
+ // Edit box
+ gtk_table_attach(GTK_TABLE(table),
+ hbox = gtk_hbox_new(FALSE, 4),
+ 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, 0, 2, 4);
+ gtk_box_pack_start(GTK_BOX(hbox),
+ aprsSettings->txt_aprs_inet_beacon_interval = gtk_entry_new(),
+ TRUE, TRUE, 0);
+
+#ifndef LEGACY
+ g_object_set(G_OBJECT(aprsSettings->txt_aprs_inet_beacon_interval), "hildon-input-mode",
+ HILDON_GTK_INPUT_MODE_FULL, NULL);
+#else
+ g_object_set(G_OBJECT(aprsSettings->txt_aprs_inet_beacon_interval), HILDON_AUTOCAP, FALSE, NULL);
+#endif
+
+ gtk_table_attach(GTK_TABLE(table),
+ label = gtk_label_new(_("seconds")),
+ 2, 3, 0, 1, GTK_FILL, 0, 2, 4);
+ gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
+
+ /* Beacon comment */
+ // Label
+ gtk_table_attach(GTK_TABLE(table),
+ label = gtk_label_new(_("Beacon Comment")),
+ 0, 1, 1, 2, GTK_FILL, 0, 2, 4);
+ gtk_misc_set_alignment(GTK_MISC(label), 1.f, 0.5f);
+
+ // Edit box
+ gtk_table_attach(GTK_TABLE(table),
+ hbox = gtk_hbox_new(FALSE, 4),
+ 1, 3, 1, 2, GTK_EXPAND | GTK_FILL, 0, 2, 4);
+ gtk_box_pack_start(GTK_BOX(hbox),
+ aprsSettings->txt_aprs_inet_beacon_comment = gtk_entry_new(),
+ TRUE, TRUE, 0);
+
+#ifndef LEGACY
+ g_object_set(G_OBJECT(aprsSettings->txt_aprs_inet_beacon_comment), "hildon-input-mode",
+ HILDON_GTK_INPUT_MODE_FULL, NULL);
+#else
+ g_object_set(G_OBJECT(aprsSettings->txt_aprs_inet_beacon_comment), HILDON_AUTOCAP, FALSE, NULL);
+#endif
+
+ // Init values
+ if(_aprs_inet_beacon_interval)
+ {
+ gchar interval[8];
+ snprintf(interval, 8, "%d", _aprs_inet_beacon_interval);
+
+ gtk_entry_set_text(GTK_ENTRY(aprsSettings->txt_aprs_inet_beacon_interval), interval);
+ }
+
+ if(_aprs_inet_beacon_comment)
+ gtk_entry_set_text(GTK_ENTRY(aprsSettings->txt_aprs_inet_beacon_comment), _aprs_inet_beacon_comment);
+
+}
+
+void aprs_settings_dialog(gboolean *aprs_inet_config_changed, gboolean *aprs_tty_config_changed)
+{
+ static GtkWidget *dialog = NULL;
+ static GtkWidget *notebook = NULL;
+ static TAprsSettings aprs_settings;
+ static ScanInfo scan_info = {0};
+
+ printf("%s()\n", __PRETTY_FUNCTION__);
+
+
+ *aprs_inet_config_changed = FALSE;
+ *aprs_tty_config_changed = FALSE;
+
+ if(dialog == NULL)
+ {
+ dialog = gtk_dialog_new_with_buttons(_("APRS Settings"),
+ GTK_WINDOW(_window), GTK_DIALOG_MODAL,
+ GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ /* Enable the help button. */
+#ifndef LEGACY
+ hildon_help_dialog_help_enable(
+#else
+ ossohelp_dialog_help_enable(
+#endif
+ GTK_DIALOG(dialog), HELP_ID_SETTINGS, _osso);
+
+ gtk_dialog_add_button(GTK_DIALOG(dialog),
+ GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT);
+
+ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),
+ notebook = gtk_notebook_new(), TRUE, TRUE, 0);
+
+
+
+ // Add enable, and info page
+ setup_aprs_general_options_page(notebook, &aprs_settings);
+
+ // Add station details page
+ setup_aprs_options_page(notebook, &aprs_settings);
+
+ // Add iNet page
+ setup_aprs_inet_options_page(notebook, &aprs_settings);
+ setup_aprs_inet2_options_page(notebook, &aprs_settings);
+
+ // Add TTY page
+ setup_aprs_tty_page_options_page(notebook, &aprs_settings);
+ setup_aprs_tty2_page_options_page(notebook, &aprs_settings);
+
+
+
+ /* Connect signals. */
+ memset(&scan_info, 0, sizeof(scan_info));
+ scan_info.settings_dialog = dialog;
+ scan_info.txt_gps_bt_mac = aprs_settings.txt_tnc_bt_mac;
+ g_signal_connect(G_OBJECT(aprs_settings.btn_scan_bt_tnc), "clicked",
+ G_CALLBACK(scan_bluetooth), &scan_info);
+
+ }
+
+ gtk_widget_show_all(dialog);
+
+ if(GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog)))
+ {
+ // TODO - check if settings have really changed
+ *aprs_inet_config_changed = TRUE;
+ *aprs_tty_config_changed = TRUE;
+
+
+ read_aprs_options(&aprs_settings );
+
+ save_aprs_options();
+
+ }
+
+ gtk_widget_hide(dialog);
+
+ vprintf("%s(): return %d\n", __PRETTY_FUNCTION__, rcvr_changed);
+
+}
+#endif // INCLUDE_APRS
+