Blame lib/test-deviceselection.c

Packit Service fc05fa
/*
Packit Service fc05fa
 *
Packit Service fc05fa
 *  BlueZ - Bluetooth protocol stack for Linux
Packit Service fc05fa
 *
Packit Service fc05fa
 *  Copyright (C) 2005-2008  Marcel Holtmann <marcel@holtmann.org>
Packit Service fc05fa
 *  Copyright (C) 2006-2007  Bastien Nocera <hadess@hadess.net>
Packit Service fc05fa
 *
Packit Service fc05fa
 *
Packit Service fc05fa
 *  This program is free software; you can redistribute it and/or modify
Packit Service fc05fa
 *  it under the terms of the GNU General Public License as published by
Packit Service fc05fa
 *  the Free Software Foundation; either version 2 of the License, or
Packit Service fc05fa
 *  (at your option) any later version.
Packit Service fc05fa
 *
Packit Service fc05fa
 *  This program is distributed in the hope that it will be useful,
Packit Service fc05fa
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service fc05fa
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service fc05fa
 *  GNU General Public License for more details.
Packit Service fc05fa
 *
Packit Service fc05fa
 *  You should have received a copy of the GNU General Public License
Packit Service fc05fa
 *  along with this program; if not, write to the Free Software
Packit Service fc05fa
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Packit Service fc05fa
 *
Packit Service fc05fa
 */
Packit Service fc05fa
Packit Service fc05fa
#ifdef HAVE_CONFIG_H
Packit Service fc05fa
#include <config.h>
Packit Service fc05fa
#endif
Packit Service fc05fa
Packit Service fc05fa
#include <gtk/gtk.h>
Packit Service fc05fa
#include <stdlib.h>
Packit Service fc05fa
Packit Service fc05fa
#include "bluetooth-chooser.h"
Packit Service fc05fa
#include "bluetooth-chooser-button.h"
Packit Service fc05fa
#include "bluetooth-chooser-combo.h"
Packit Service fc05fa
#include "bluetooth-chooser-private.h"
Packit Service fc05fa
#include "bluetooth-client.h"
Packit Service fc05fa
#include "bluetooth-client-private.h"
Packit Service fc05fa
#include "bluetooth-utils.h"
Packit Service fc05fa
#include "bluetooth-filter-widget.h"
Packit Service fc05fa
Packit Service fc05fa
static void select_device_changed(BluetoothChooser *sel,
Packit Service fc05fa
				  gchar *address, gpointer user_data)
Packit Service fc05fa
{
Packit Service fc05fa
	GtkDialog *dialog = user_data;
Packit Service fc05fa
	char *name;
Packit Service fc05fa
Packit Service fc05fa
	name = bluetooth_chooser_get_selected_device_name (sel);
Packit Service fc05fa
	gtk_dialog_set_response_sensitive(dialog,
Packit Service fc05fa
				GTK_RESPONSE_ACCEPT, (address != NULL && name != NULL));
Packit Service fc05fa
	g_free (name);
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static void selected_device_activated(BluetoothChooser *sel,
Packit Service fc05fa
				      gchar *address, gpointer user_data)
Packit Service fc05fa
{
Packit Service fc05fa
	GtkDialog *dialog = user_data;
Packit Service fc05fa
Packit Service fc05fa
	gtk_dialog_response(dialog, GTK_RESPONSE_ACCEPT);
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static void device_selected_cb(GObject *object,
Packit Service fc05fa
			       GParamSpec *spec, gpointer user_data)
Packit Service fc05fa
{
Packit Service fc05fa
	g_message ("Property \"device-selected\" changed");
Packit Service fc05fa
	if (bluetooth_chooser_get_selected_device (BLUETOOTH_CHOOSER (object)))
Packit Service fc05fa
		bluetooth_chooser_dump_selected_device (BLUETOOTH_CHOOSER (object));
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static void device_type_filter_selected_cb(GObject *object,
Packit Service fc05fa
					   GParamSpec *spec, gpointer user_data)
Packit Service fc05fa
{
Packit Service fc05fa
	g_message ("Property \"device-type-filter\" changed");
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static void device_category_filter_selected_cb(GObject *object,
Packit Service fc05fa
				GParamSpec *spec, gpointer user_data)
Packit Service fc05fa
{
Packit Service fc05fa
	g_message ("Property \"device-category-filter\" changed");
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
/* Phone chooser */
Packit Service fc05fa
Packit Service fc05fa
static void
Packit Service fc05fa
chooser_created (BluetoothChooserButton *button, BluetoothChooser *chooser, gpointer data)
Packit Service fc05fa
{
Packit Service fc05fa
	g_object_set(chooser,
Packit Service fc05fa
		     "show-searching", FALSE,
Packit Service fc05fa
		     "show-pairing", FALSE,
Packit Service fc05fa
		     "show-device-type", FALSE,
Packit Service fc05fa
		     "device-type-filter", BLUETOOTH_TYPE_PHONE,
Packit Service fc05fa
		     "show-device-category", FALSE,
Packit Service fc05fa
		     "device-category-filter", BLUETOOTH_CATEGORY_PAIRED,
Packit Service fc05fa
		     NULL);
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static void
Packit Service fc05fa
is_available_changed (GObject    *gobject,
Packit Service fc05fa
		      GParamSpec *pspec,
Packit Service fc05fa
		      gpointer    user_data)
Packit Service fc05fa
{
Packit Service fc05fa
	gboolean is_available;
Packit Service fc05fa
Packit Service fc05fa
	g_object_get (gobject, "is-available", &is_available, NULL);
Packit Service fc05fa
	g_message ("button is available: %d", is_available);
Packit Service fc05fa
	gtk_widget_set_sensitive (GTK_WIDGET (gobject), is_available);
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static void
Packit Service fc05fa
device_changed (GObject    *gobject,
Packit Service fc05fa
		GParamSpec *pspec,
Packit Service fc05fa
		gpointer    user_data)
Packit Service fc05fa
{
Packit Service fc05fa
	char *device;
Packit Service fc05fa
Packit Service fc05fa
	g_object_get (gobject, "device", &device, NULL);
Packit Service fc05fa
	g_message ("Property \"device\" changed to '%s'", device);
Packit Service fc05fa
Packit Service fc05fa
	g_free (device);
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static GtkWidget *
Packit Service fc05fa
create_phone_dialogue (const char *bdaddr)
Packit Service fc05fa
{
Packit Service fc05fa
	GtkWidget *dialog, *button;
Packit Service fc05fa
Packit Service fc05fa
	dialog = g_object_new(GTK_TYPE_DIALOG,
Packit Service fc05fa
			      "use-header-bar", 1,
Packit Service fc05fa
			      "title", "My test prefs",
Packit Service fc05fa
			      NULL);
Packit Service fc05fa
	button = bluetooth_chooser_button_new ();
Packit Service fc05fa
	if (bdaddr != NULL)
Packit Service fc05fa
		g_object_set (G_OBJECT (button), "device", bdaddr, NULL);
Packit Service fc05fa
	g_signal_connect (G_OBJECT (button), "chooser-created",
Packit Service fc05fa
			  G_CALLBACK (chooser_created), NULL);
Packit Service fc05fa
	g_signal_connect (G_OBJECT (button), "notify::is-available",
Packit Service fc05fa
			  G_CALLBACK (is_available_changed), NULL);
Packit Service fc05fa
	g_signal_connect (G_OBJECT (button), "notify::device",
Packit Service fc05fa
			  G_CALLBACK (device_changed), NULL);
Packit Service fc05fa
	is_available_changed (G_OBJECT (button), NULL, NULL);
Packit Service fc05fa
	gtk_widget_show (button);
Packit Service fc05fa
	gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))),
Packit Service fc05fa
			    button, TRUE, TRUE, 0);
Packit Service fc05fa
Packit Service fc05fa
	g_signal_connect (G_OBJECT (dialog), "response",
Packit Service fc05fa
			  G_CALLBACK (gtk_main_quit), NULL);
Packit Service fc05fa
Packit Service fc05fa
	g_object_add_weak_pointer (G_OBJECT(dialog), (gpointer *) (&dialog));
Packit Service fc05fa
Packit Service fc05fa
	return dialog;
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
/* Wizard and co. */
Packit Service fc05fa
static GtkWidget *
Packit Service fc05fa
create_dialogue (const char *title)
Packit Service fc05fa
{
Packit Service fc05fa
	GtkWidget *dialog, *button;
Packit Service fc05fa
	GtkStyleContext *context;
Packit Service fc05fa
Packit Service fc05fa
	dialog = g_object_new (GTK_TYPE_DIALOG,
Packit Service fc05fa
			       "use-header-bar", 1,
Packit Service fc05fa
			       "title", title,
Packit Service fc05fa
			       NULL);
Packit Service fc05fa
	gtk_dialog_add_buttons(GTK_DIALOG (dialog),
Packit Service fc05fa
			       "_Cancel", GTK_RESPONSE_CANCEL,
Packit Service fc05fa
			       "Connect", GTK_RESPONSE_ACCEPT, NULL);
Packit Service fc05fa
	gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog),
Packit Service fc05fa
					GTK_RESPONSE_ACCEPT, FALSE);
Packit Service fc05fa
	gtk_window_set_default_size(GTK_WINDOW(dialog), 480, 400);
Packit Service fc05fa
Packit Service fc05fa
	gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
Packit Service fc05fa
	gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), 2);
Packit Service fc05fa
Packit Service fc05fa
	button = gtk_dialog_get_widget_for_response(GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
Packit Service fc05fa
	context = gtk_widget_get_style_context(button);
Packit Service fc05fa
	gtk_style_context_add_class (context, "suggested-action");
Packit Service fc05fa
Packit Service fc05fa
	return dialog;
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static void
Packit Service fc05fa
response_cb (GtkDialog *dialog, gint response_id, BluetoothChooser *selector)
Packit Service fc05fa
{
Packit Service fc05fa
	if (response_id == GTK_RESPONSE_ACCEPT) {
Packit Service fc05fa
		char *address, *name, *icon;
Packit Service fc05fa
		guint type;
Packit Service fc05fa
Packit Service fc05fa
		address = bluetooth_chooser_get_selected_device (selector);
Packit Service fc05fa
		name = bluetooth_chooser_get_selected_device_name (selector);
Packit Service fc05fa
		icon = bluetooth_chooser_get_selected_device_icon (selector);
Packit Service fc05fa
		type = bluetooth_chooser_get_selected_device_type (selector);
Packit Service fc05fa
		g_message("Selected device is: %s (address: %s, icon: %s, type: %s)",
Packit Service fc05fa
			  name, address, icon, bluetooth_type_to_string (type));
Packit Service fc05fa
		g_free(address);
Packit Service fc05fa
		g_free (name);
Packit Service fc05fa
		g_free (icon);
Packit Service fc05fa
	} else {
Packit Service fc05fa
		g_message ("No selected device");
Packit Service fc05fa
	}
Packit Service fc05fa
Packit Service fc05fa
	if (response_id == GTK_RESPONSE_DELETE_EVENT)
Packit Service fc05fa
		exit (0);
Packit Service fc05fa
Packit Service fc05fa
	gtk_main_quit ();
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static GtkWidget *
Packit Service fc05fa
create_wizard_dialogue (void)
Packit Service fc05fa
{
Packit Service fc05fa
	GtkWidget *dialog, *selector;
Packit Service fc05fa
Packit Service fc05fa
	dialog = create_dialogue ("Add a Device");
Packit Service fc05fa
Packit Service fc05fa
	selector = bluetooth_chooser_new();
Packit Service fc05fa
	gtk_container_set_border_width(GTK_CONTAINER(selector), 5);
Packit Service fc05fa
	gtk_widget_show(selector);
Packit Service fc05fa
	g_object_set(selector,
Packit Service fc05fa
		     "show-searching", TRUE,
Packit Service fc05fa
		     "show-device-type", TRUE,
Packit Service fc05fa
		     "show-device-category", FALSE,
Packit Service fc05fa
		     "device-category-filter", BLUETOOTH_CATEGORY_NOT_PAIRED_OR_TRUSTED,
Packit Service fc05fa
		     NULL);
Packit Service fc05fa
Packit Service fc05fa
	g_signal_connect(selector, "selected-device-changed",
Packit Service fc05fa
			 G_CALLBACK(select_device_changed), dialog);
Packit Service fc05fa
	g_signal_connect(selector, "notify::device-selected",
Packit Service fc05fa
			 G_CALLBACK(device_selected_cb), dialog);
Packit Service fc05fa
	g_signal_connect(selector, "notify::device-type-filter",
Packit Service fc05fa
			 G_CALLBACK(device_type_filter_selected_cb), dialog);
Packit Service fc05fa
	g_signal_connect(selector, "notify::device-category-filter",
Packit Service fc05fa
			 G_CALLBACK(device_category_filter_selected_cb), dialog);
Packit Service fc05fa
	g_signal_connect(selector, "selected-device-activated",
Packit Service fc05fa
			 G_CALLBACK(selected_device_activated), dialog);
Packit Service fc05fa
	gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG(dialog))), selector,
Packit Service fc05fa
			    TRUE, TRUE, 0);
Packit Service fc05fa
	bluetooth_chooser_start_discovery (BLUETOOTH_CHOOSER (selector));
Packit Service fc05fa
Packit Service fc05fa
	g_signal_connect (G_OBJECT (dialog), "response",
Packit Service fc05fa
			  G_CALLBACK (response_cb), selector);
Packit Service fc05fa
Packit Service fc05fa
	return dialog;
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static GtkWidget *
Packit Service fc05fa
create_props_dialogue (void)
Packit Service fc05fa
{
Packit Service fc05fa
	GtkWidget *dialog, *selector;
Packit Service fc05fa
Packit Service fc05fa
	dialog = create_dialogue ("Add a Device");
Packit Service fc05fa
Packit Service fc05fa
	selector = bluetooth_chooser_new();
Packit Service fc05fa
	gtk_container_set_border_width(GTK_CONTAINER(selector), 5);
Packit Service fc05fa
	gtk_widget_show(selector);
Packit Service fc05fa
	g_object_set(selector,
Packit Service fc05fa
		     "show-searching", FALSE,
Packit Service fc05fa
		     "show-device-type", FALSE,
Packit Service fc05fa
		     "show-device-category", FALSE,
Packit Service fc05fa
		     "show-pairing", TRUE,
Packit Service fc05fa
		     "show-connected", TRUE,
Packit Service fc05fa
		     "device-category-filter", BLUETOOTH_CATEGORY_PAIRED_OR_TRUSTED,
Packit Service fc05fa
		     NULL);
Packit Service fc05fa
Packit Service fc05fa
	g_signal_connect(selector, "selected-device-changed",
Packit Service fc05fa
			 G_CALLBACK(select_device_changed), dialog);
Packit Service fc05fa
	g_signal_connect(selector, "notify::device-selected",
Packit Service fc05fa
			 G_CALLBACK(device_selected_cb), dialog);
Packit Service fc05fa
	g_signal_connect(selector, "notify::device-type-filter",
Packit Service fc05fa
			 G_CALLBACK(device_type_filter_selected_cb), dialog);
Packit Service fc05fa
	g_signal_connect(selector, "notify::device-category-filter",
Packit Service fc05fa
			 G_CALLBACK(device_category_filter_selected_cb), dialog);
Packit Service fc05fa
	g_signal_connect(selector, "selected-device-activated",
Packit Service fc05fa
			 G_CALLBACK(selected_device_activated), dialog);
Packit Service fc05fa
	gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG(dialog))), selector,
Packit Service fc05fa
			    TRUE, TRUE, 0);
Packit Service fc05fa
Packit Service fc05fa
	g_signal_connect (G_OBJECT (dialog), "response",
Packit Service fc05fa
			  G_CALLBACK (response_cb), selector);
Packit Service fc05fa
Packit Service fc05fa
	return dialog;
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static void device_changed_cb (GObject *object,
Packit Service fc05fa
			       GParamSpec *spec,
Packit Service fc05fa
			       GtkDialog *dialog)
Packit Service fc05fa
{
Packit Service fc05fa
	char *device;
Packit Service fc05fa
	BluetoothChooser *chooser;
Packit Service fc05fa
	GtkWidget *tree;
Packit Service fc05fa
	GtkTreeModel *model;
Packit Service fc05fa
	GtkTreeSelection *selection;
Packit Service fc05fa
	GtkTreeIter iter;
Packit Service fc05fa
Packit Service fc05fa
	g_object_get (object, "device", &device, NULL);
Packit Service fc05fa
	g_message ("Property \"device\" changed to '%s'", device);
Packit Service fc05fa
Packit Service fc05fa
	gtk_dialog_set_response_sensitive (dialog,
Packit Service fc05fa
					  GTK_RESPONSE_ACCEPT,
Packit Service fc05fa
					  device != NULL);
Packit Service fc05fa
Packit Service fc05fa
	g_object_get (object, "chooser", &chooser, NULL);
Packit Service fc05fa
	tree = bluetooth_chooser_get_treeview (BLUETOOTH_CHOOSER (chooser));
Packit Service fc05fa
	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree));
Packit Service fc05fa
	gtk_tree_selection_get_selected (selection, &model, &iter);
Packit Service fc05fa
	if (model != NULL)
Packit Service fc05fa
		bluetooth_client_dump_device (model, &iter);
Packit Service fc05fa
Packit Service fc05fa
	g_object_unref (chooser);
Packit Service fc05fa
	g_free (device);
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static GtkWidget *
Packit Service fc05fa
create_combo_dialogue (const char *bdaddr)
Packit Service fc05fa
{
Packit Service fc05fa
	GtkWidget *dialog, *selector, *chooser;
Packit Service fc05fa
	const char *filter = "OBEXObjectPush";
Packit Service fc05fa
//	const char *filter[] = { "OBEXObjectPush", "OBEXFileTransfer", NULL };
Packit Service fc05fa
Packit Service fc05fa
	dialog = create_dialogue ("Add a Device");
Packit Service fc05fa
Packit Service fc05fa
	selector = bluetooth_chooser_combo_new ();
Packit Service fc05fa
	g_signal_connect (G_OBJECT (selector), "notify::device",
Packit Service fc05fa
			  G_CALLBACK (device_changed_cb), dialog);
Packit Service fc05fa
	g_object_get (G_OBJECT (selector), "chooser", &chooser, NULL);
Packit Service fc05fa
	g_object_set(chooser,
Packit Service fc05fa
		     "show-searching", TRUE,
Packit Service fc05fa
		     "show-device-type", TRUE,
Packit Service fc05fa
		     "show-device-category", TRUE,
Packit Service fc05fa
		     "show-pairing", TRUE,
Packit Service fc05fa
		     "show-connected", FALSE,
Packit Service fc05fa
		     "device-service-filter", filter,
Packit Service fc05fa
		     NULL);
Packit Service fc05fa
	g_object_set (G_OBJECT (selector), "device", bdaddr, NULL);
Packit Service fc05fa
	bluetooth_chooser_start_discovery (BLUETOOTH_CHOOSER (chooser));
Packit Service fc05fa
	gtk_container_set_border_width(GTK_CONTAINER(selector), 5);
Packit Service fc05fa
	gtk_widget_show(selector);
Packit Service fc05fa
	gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))),
Packit Service fc05fa
			    selector, TRUE, FALSE, 6);
Packit Service fc05fa
Packit Service fc05fa
	g_signal_connect (G_OBJECT (dialog), "response",
Packit Service fc05fa
			  G_CALLBACK (response_cb), chooser);
Packit Service fc05fa
Packit Service fc05fa
	return dialog;
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static GtkWidget *
Packit Service fc05fa
create_filter_dialogue (void)
Packit Service fc05fa
{
Packit Service fc05fa
	GtkWidget *dialog, *selector, *filter, *vbox, *hbox;
Packit Service fc05fa
Packit Service fc05fa
	dialog = create_dialogue ("Add a Device");
Packit Service fc05fa
Packit Service fc05fa
	hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
Packit Service fc05fa
	gtk_widget_show (hbox);
Packit Service fc05fa
Packit Service fc05fa
	selector = bluetooth_chooser_new();
Packit Service fc05fa
	gtk_container_set_border_width(GTK_CONTAINER(selector), 5);
Packit Service fc05fa
	gtk_widget_show(selector);
Packit Service fc05fa
	g_object_set(selector,
Packit Service fc05fa
		     "show-searching", TRUE,
Packit Service fc05fa
		     "device-category-filter", BLUETOOTH_CATEGORY_NOT_PAIRED_OR_TRUSTED,
Packit Service fc05fa
		     NULL);
Packit Service fc05fa
	gtk_box_pack_start (GTK_BOX (hbox), selector, TRUE, TRUE, 6);
Packit Service fc05fa
Packit Service fc05fa
	vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
Packit Service fc05fa
	gtk_widget_show (vbox);
Packit Service fc05fa
	gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
Packit Service fc05fa
	filter = bluetooth_filter_widget_new ();
Packit Service fc05fa
	g_object_set (filter,
Packit Service fc05fa
		      "show-device-type", TRUE,
Packit Service fc05fa
		      "show-device-category", FALSE,
Packit Service fc05fa
		      NULL);
Packit Service fc05fa
	gtk_widget_show (filter);
Packit Service fc05fa
	bluetooth_filter_widget_bind_filter (BLUETOOTH_FILTER_WIDGET (filter), BLUETOOTH_CHOOSER (selector));
Packit Service fc05fa
	gtk_box_pack_start (GTK_BOX (vbox), filter, FALSE, FALSE, 6);
Packit Service fc05fa
Packit Service fc05fa
	g_signal_connect(selector, "selected-device-changed",
Packit Service fc05fa
			 G_CALLBACK(select_device_changed), dialog);
Packit Service fc05fa
	g_signal_connect(selector, "notify::device-selected",
Packit Service fc05fa
			 G_CALLBACK(device_selected_cb), dialog);
Packit Service fc05fa
	g_signal_connect(selector, "notify::device-type-filter",
Packit Service fc05fa
			 G_CALLBACK(device_type_filter_selected_cb), dialog);
Packit Service fc05fa
	g_signal_connect(selector, "notify::device-category-filter",
Packit Service fc05fa
			 G_CALLBACK(device_category_filter_selected_cb), dialog);
Packit Service fc05fa
	gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))),
Packit Service fc05fa
			    hbox, TRUE, TRUE, 0);
Packit Service fc05fa
	bluetooth_chooser_start_discovery (BLUETOOTH_CHOOSER (selector));
Packit Service fc05fa
Packit Service fc05fa
	g_signal_connect (G_OBJECT (dialog), "response",
Packit Service fc05fa
			  G_CALLBACK (response_cb), selector);
Packit Service fc05fa
Packit Service fc05fa
	return dialog;
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
int main(int argc, char **argv)
Packit Service fc05fa
{
Packit Service fc05fa
	GtkWidget *dialog;
Packit Service fc05fa
	const char *selection;
Packit Service fc05fa
Packit Service fc05fa
	gtk_init(&argc, &argv);
Packit Service fc05fa
	if (argc < 2)
Packit Service fc05fa
		selection = "wizard";
Packit Service fc05fa
	else
Packit Service fc05fa
		selection = argv[1];
Packit Service fc05fa
Packit Service fc05fa
	if (g_str_equal (selection, "phone")) {
Packit Service fc05fa
		if (argc == 3)
Packit Service fc05fa
			dialog = create_phone_dialogue (argv[2]);
Packit Service fc05fa
		else
Packit Service fc05fa
			dialog = create_phone_dialogue (NULL);
Packit Service fc05fa
	} else if (g_str_equal (selection, "wizard")) {
Packit Service fc05fa
		dialog = create_wizard_dialogue ();
Packit Service fc05fa
	} else if (g_str_equal (selection, "props")) {
Packit Service fc05fa
		dialog = create_props_dialogue ();
Packit Service fc05fa
	} else if (g_str_equal (selection, "combo")) {
Packit Service fc05fa
		if (argc == 3)
Packit Service fc05fa
			dialog = create_combo_dialogue (argv[2]);
Packit Service fc05fa
		else
Packit Service fc05fa
			dialog = create_combo_dialogue (BLUETOOTH_CHOOSER_COMBO_FIRST_DEVICE);
Packit Service fc05fa
	} else if (g_str_equal (selection, "filter")) {
Packit Service fc05fa
		dialog = create_filter_dialogue ();
Packit Service fc05fa
	} else {
Packit Service fc05fa
		g_warning ("Unknown dialogue type, try either \"phone\", \"props\", \"combo\", \"filter\"  or \"wizard\"");
Packit Service fc05fa
		return 1;
Packit Service fc05fa
	}
Packit Service fc05fa
Packit Service fc05fa
	gtk_widget_show(dialog);
Packit Service fc05fa
Packit Service fc05fa
	gtk_main ();
Packit Service fc05fa
Packit Service fc05fa
	if (dialog)
Packit Service fc05fa
		gtk_widget_destroy(dialog);
Packit Service fc05fa
Packit Service fc05fa
	return 0;
Packit Service fc05fa
}