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.
34 #include <glib/gstdio.h>
37 #include <gconf/gconf-client.h>
44 #ifdef WITH_HILDON_DBUS_BT
49 #include "mapper-types.h"
51 #include "bluetooth-scan.h"
54 * Scan for all bluetooth devices. This method can take a few seconds,
55 * during which the UI will freeze.
57 gboolean scan_bluetooth(GtkWidget * widget, ScanInfo * scan_info)
61 GtkWidget *lst_devices;
62 GtkTreeViewColumn *column;
63 GtkCellRenderer *renderer;
64 printf("%s()\n", __PRETTY_FUNCTION__);
66 dialog = gtk_dialog_new_with_buttons(_("Select Bluetooth Device"),
67 GTK_WINDOW(scan_info->
69 GTK_DIALOG_MODAL, GTK_STOCK_OK,
72 GTK_RESPONSE_REJECT, NULL);
74 scan_info->scan_dialog = dialog;
76 scan_info->store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
78 gtk_window_set_default_size(GTK_WINDOW(dialog), 500, 300);
80 gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),
82 gtk_tree_view_new_with_model(GTK_TREE_MODEL
86 g_object_unref(G_OBJECT(scan_info->store));
88 gtk_tree_selection_set_mode(gtk_tree_view_get_selection
89 (GTK_TREE_VIEW(lst_devices)),
90 GTK_SELECTION_SINGLE);
91 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(lst_devices), TRUE);
93 renderer = gtk_cell_renderer_text_new();
94 column = gtk_tree_view_column_new_with_attributes(_("MAC"), renderer, "text",
96 gtk_tree_view_append_column(GTK_TREE_VIEW(lst_devices), column);
98 renderer = gtk_cell_renderer_text_new();
99 column = gtk_tree_view_column_new_with_attributes(_("Description"), renderer,
101 gtk_tree_view_append_column(GTK_TREE_VIEW(lst_devices), column);
103 gtk_widget_show_all(dialog);
105 scan_info->banner = hildon_banner_show_animation(dialog, NULL,
106 _("Scanning for Bluetooth Devices"));
108 if (scan_start_search(scan_info)) {
109 gtk_widget_destroy(scan_info->banner);
110 popup_error(scan_info->settings_dialog,
111 _("An error occurred while attempting to scan for "
112 "bluetooth devices."));
114 while (GTK_RESPONSE_ACCEPT == gtk_dialog_run(GTK_DIALOG(dialog))) {
116 if (gtk_tree_selection_get_selected
117 (gtk_tree_view_get_selection
118 (GTK_TREE_VIEW(lst_devices)), NULL, &iter)) {
120 gtk_tree_model_get(GTK_TREE_MODEL
121 (scan_info->store), &iter, 0,
123 gtk_entry_set_text(GTK_ENTRY
124 (scan_info->txt_rcvr_mac),
128 popup_error(dialog, _("Please select a bluetooth device from the list."));
131 gtk_widget_destroy(dialog);
133 #ifdef WITH_HILDON_DBUS_BT
134 /* Clean up D-Bus. */
135 dbus_g_proxy_call(scan_info->req_proxy, BTSEARCH_STOP_SEARCH_REQ, &error, G_TYPE_INVALID, G_TYPE_INVALID);
136 g_object_unref(scan_info->req_proxy);
137 g_object_unref(scan_info->sig_proxy);
140 vprintf("%s(): return TRUE\n", __PRETTY_FUNCTION__);