Blame lib/bluetooth-pairing-dialog.c

Packit Service fc05fa
/*
Packit Service fc05fa
 *
Packit Service fc05fa
 *  Copyright (C) 2013  Bastien Nocera <hadess@hadess.net>
Packit Service fc05fa
 *
Packit Service fc05fa
 *  This library is free software; you can redistribute it and/or
Packit Service fc05fa
 *  modify it under the terms of the GNU Lesser General Public
Packit Service fc05fa
 *  License as published by the Free Software Foundation; either
Packit Service fc05fa
 *  version 2.1 of the License, or (at your option) any later version.
Packit Service fc05fa
 *
Packit Service fc05fa
 *  This library 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 GNU
Packit Service fc05fa
 *  Lesser General Public License for more details.
Packit Service fc05fa
 *
Packit Service fc05fa
 *  You should have received a copy of the GNU Lesser General Public
Packit Service fc05fa
 *  License along with this library; 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
Packit Service fc05fa
#include <glib/gi18n-lib.h>
Packit Service fc05fa
Packit Service fc05fa
#include "bluetooth-pairing-dialog.h"
Packit Service fc05fa
#include "bluetooth-enums.h"
Packit Service fc05fa
#include "gnome-bluetooth-enum-types.h"
Packit Service fc05fa
#include "bluetooth-settings-resources.h"
Packit Service fc05fa
Packit Service fc05fa
#define BLUETOOTH_PAIRING_DIALOG_GET_PRIVATE(obj) \
Packit Service fc05fa
	(bluetooth_pairing_dialog_get_instance_private (obj))
Packit Service fc05fa
Packit Service fc05fa
typedef struct _BluetoothPairingDialogPrivate BluetoothPairingDialogPrivate;
Packit Service fc05fa
Packit Service fc05fa
struct _BluetoothPairingDialogPrivate {
Packit Service fc05fa
	GtkWidget            *title;
Packit Service fc05fa
	GtkWidget            *help_label;
Packit Service fc05fa
	GtkWidget            *label_pin;
Packit Service fc05fa
	GtkWidget            *entry_pin;
Packit Service fc05fa
	GtkWidget            *pin_notebook;
Packit Service fc05fa
	GtkWidget            *done;
Packit Service fc05fa
	GtkWidget            *spinner;
Packit Service fc05fa
	GtkWidget            *cancel;
Packit Service fc05fa
Packit Service fc05fa
	BluetoothPairingMode  mode;
Packit Service fc05fa
	char                 *pin;
Packit Service fc05fa
};
Packit Service fc05fa
Packit Service fc05fa
G_DEFINE_TYPE_WITH_PRIVATE(BluetoothPairingDialog, bluetooth_pairing_dialog, GTK_TYPE_DIALOG)
Packit Service fc05fa
Packit Service fc05fa
enum {
Packit Service fc05fa
	CONFIRMATION_PAGE,
Packit Service fc05fa
	DISPLAY_PAGE,
Packit Service fc05fa
	MESSAGE_PAGE
Packit Service fc05fa
};
Packit Service fc05fa
Packit Service fc05fa
void
Packit Service fc05fa
bluetooth_pairing_dialog_set_mode (BluetoothPairingDialog *self,
Packit Service fc05fa
				   BluetoothPairingMode    mode,
Packit Service fc05fa
				   const char             *pin,
Packit Service fc05fa
				   const char             *device_name)
Packit Service fc05fa
{
Packit Service fc05fa
	BluetoothPairingDialogPrivate *priv = BLUETOOTH_PAIRING_DIALOG_GET_PRIVATE (self);
Packit Service fc05fa
	g_autofree char *title = NULL;
Packit Service fc05fa
	g_autofree char *help = NULL;
Packit Service fc05fa
	GtkStyleContext *context;
Packit Service fc05fa
Packit Service fc05fa
	priv->mode = mode;
Packit Service fc05fa
Packit Service fc05fa
	g_clear_pointer (&priv->pin, g_free);
Packit Service fc05fa
	priv->pin = g_strdup (pin);
Packit Service fc05fa
	gtk_entry_set_text (GTK_ENTRY (priv->entry_pin), pin ? pin : "");
Packit Service fc05fa
	gtk_label_set_text (GTK_LABEL (priv->label_pin), pin);
Packit Service fc05fa
Packit Service fc05fa
	switch (mode) {
Packit Service fc05fa
	case BLUETOOTH_PAIRING_MODE_PIN_QUERY:
Packit Service fc05fa
		gtk_widget_show (priv->done);
Packit Service fc05fa
		gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->pin_notebook), CONFIRMATION_PAGE);
Packit Service fc05fa
		title = g_strdup(_("Confirm Bluetooth PIN"));
Packit Service fc05fa
		help = g_strdup_printf (_("Please confirm the PIN that was entered on “%s”."), device_name);
Packit Service fc05fa
		break;
Packit Service fc05fa
	case BLUETOOTH_PAIRING_MODE_PIN_CONFIRMATION:
Packit Service fc05fa
		gtk_widget_show (priv->done);
Packit Service fc05fa
		gtk_button_set_label (GTK_BUTTON (priv->done), _("Confirm"));
Packit Service fc05fa
		gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->pin_notebook), CONFIRMATION_PAGE);
Packit Service fc05fa
		title = g_strdup(_("Confirm Bluetooth PIN"));
Packit Service fc05fa
		help = g_strdup_printf (_("Confirm the Bluetooth PIN for “%s”. This can usually be found in the device’s manual."), device_name);
Packit Service fc05fa
		break;
Packit Service fc05fa
	case BLUETOOTH_PAIRING_MODE_PIN_DISPLAY_NORMAL:
Packit Service fc05fa
	case BLUETOOTH_PAIRING_MODE_PIN_DISPLAY_KEYBOARD:
Packit Service fc05fa
	case BLUETOOTH_PAIRING_MODE_PIN_DISPLAY_ICADE:
Packit Service fc05fa
		gtk_widget_hide (priv->done);
Packit Service fc05fa
		title = g_strdup_printf (_("Pairing “%s”"), device_name);
Packit Service fc05fa
		gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->pin_notebook), DISPLAY_PAGE);
Packit Service fc05fa
		break;
Packit Service fc05fa
	case BLUETOOTH_PAIRING_MODE_PIN_MATCH:
Packit Service fc05fa
		gtk_button_set_label (GTK_BUTTON (priv->done), _("Confirm"));
Packit Service fc05fa
		gtk_widget_show (priv->done);
Packit Service fc05fa
		gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->pin_notebook), DISPLAY_PAGE);
Packit Service fc05fa
		title = g_strdup(_("Confirm Bluetooth PIN"));
Packit Service fc05fa
		help = g_strdup_printf (_("Please confirm that the following PIN matches the one displayed on “%s”."), device_name);
Packit Service fc05fa
		break;
Packit Service fc05fa
	case BLUETOOTH_PAIRING_MODE_YES_NO:
Packit Service fc05fa
		gtk_widget_show (priv->done);
Packit Service fc05fa
		gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->pin_notebook), MESSAGE_PAGE);
Packit Service fc05fa
		title = g_strdup (_("Bluetooth Pairing Request"));
Packit Service fc05fa
		help = g_strdup_printf (_("“%s” wants to pair with this device. Do you want to allow pairing?"), device_name);
Packit Service fc05fa
		break;
Packit Service fc05fa
	case BLUETOOTH_PAIRING_MODE_CONFIRM_AUTH:
Packit Service fc05fa
		gtk_widget_show (priv->done);
Packit Service fc05fa
		gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->pin_notebook), MESSAGE_PAGE);
Packit Service fc05fa
		title = g_strdup (_("Confirm Bluetooth Connection"));
Packit Service fc05fa
		help = g_strdup_printf (_("“%s” wants to connect with this device. Do you want to allow it?"), device_name);
Packit Service fc05fa
		break;
Packit Service fc05fa
	default:
Packit Service fc05fa
		g_assert_not_reached ();
Packit Service fc05fa
	}
Packit Service fc05fa
Packit Service fc05fa
	switch (mode) {
Packit Service fc05fa
	case BLUETOOTH_PAIRING_MODE_PIN_DISPLAY_NORMAL:
Packit Service fc05fa
		help = g_strdup_printf (_("Please enter the following PIN on “%s”."), device_name);
Packit Service fc05fa
		break;
Packit Service fc05fa
	case BLUETOOTH_PAIRING_MODE_PIN_DISPLAY_KEYBOARD:
Packit Service fc05fa
		help = g_strdup_printf (_("Please enter the following PIN on “%s”. Then press “Return” on the keyboard."), device_name);
Packit Service fc05fa
		break;
Packit Service fc05fa
	case BLUETOOTH_PAIRING_MODE_PIN_DISPLAY_ICADE:
Packit Service fc05fa
		help = g_strdup (_("Please move the joystick of your iCade in the following directions. Then press any of the white buttons."));
Packit Service fc05fa
		break;
Packit Service fc05fa
	default:
Packit Service fc05fa
		g_assert (help);
Packit Service fc05fa
	}
Packit Service fc05fa
Packit Service fc05fa
	if (mode == BLUETOOTH_PAIRING_MODE_YES_NO ||
Packit Service fc05fa
	    mode == BLUETOOTH_PAIRING_MODE_CONFIRM_AUTH) {
Packit Service fc05fa
		gtk_button_set_label (GTK_BUTTON (priv->done), _("Allow"));
Packit Service fc05fa
		context = gtk_widget_get_style_context (priv->done);
Packit Service fc05fa
		gtk_style_context_remove_class (context, "suggested-action");
Packit Service fc05fa
Packit Service fc05fa
		gtk_button_set_label (GTK_BUTTON (priv->cancel), _("Dismiss"));
Packit Service fc05fa
		context = gtk_widget_get_style_context (priv->cancel);
Packit Service fc05fa
		gtk_style_context_add_class (context, "destructive-action");
Packit Service fc05fa
Packit Service fc05fa
		gtk_widget_hide (priv->pin_notebook);
Packit Service fc05fa
	} else {
Packit Service fc05fa
		gtk_button_set_label (GTK_BUTTON (priv->done), _("Confirm"));
Packit Service fc05fa
		context = gtk_widget_get_style_context (priv->done);
Packit Service fc05fa
		gtk_style_context_add_class (context, "suggested-action");
Packit Service fc05fa
Packit Service fc05fa
		gtk_button_set_label (GTK_BUTTON (priv->cancel), _("Cancel"));
Packit Service fc05fa
		context = gtk_widget_get_style_context (priv->cancel);
Packit Service fc05fa
		gtk_style_context_remove_class (context, "destructive-action");
Packit Service fc05fa
Packit Service fc05fa
		gtk_widget_show (priv->pin_notebook);
Packit Service fc05fa
	}
Packit Service fc05fa
Packit Service fc05fa
	gtk_label_set_text (GTK_LABEL (priv->title), title);
Packit Service fc05fa
	gtk_label_set_text (GTK_LABEL (priv->help_label), help);
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
BluetoothPairingMode
Packit Service fc05fa
bluetooth_pairing_dialog_get_mode (BluetoothPairingDialog *self)
Packit Service fc05fa
{
Packit Service fc05fa
	BluetoothPairingDialogPrivate *priv = BLUETOOTH_PAIRING_DIALOG_GET_PRIVATE (self);
Packit Service fc05fa
Packit Service fc05fa
	return priv->mode;
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
char *
Packit Service fc05fa
bluetooth_pairing_dialog_get_pin (BluetoothPairingDialog *self)
Packit Service fc05fa
{
Packit Service fc05fa
	BluetoothPairingDialogPrivate *priv = BLUETOOTH_PAIRING_DIALOG_GET_PRIVATE (self);
Packit Service fc05fa
Packit Service fc05fa
	g_assert (priv->mode == BLUETOOTH_PAIRING_MODE_PIN_CONFIRMATION ||
Packit Service fc05fa
		  priv->mode == BLUETOOTH_PAIRING_MODE_PIN_QUERY);
Packit Service fc05fa
	g_assert (gtk_widget_is_sensitive (GTK_WIDGET (priv->done)));
Packit Service fc05fa
Packit Service fc05fa
	return g_strdup (gtk_entry_get_text (GTK_ENTRY (priv->entry_pin)));
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
void
Packit Service fc05fa
bluetooth_pairing_dialog_set_pin_entered (BluetoothPairingDialog *self,
Packit Service fc05fa
					  guint                   entered)
Packit Service fc05fa
{
Packit Service fc05fa
	BluetoothPairingDialogPrivate *priv = BLUETOOTH_PAIRING_DIALOG_GET_PRIVATE (self);
Packit Service fc05fa
	char *done;
Packit Service fc05fa
Packit Service fc05fa
	g_assert (priv->mode == BLUETOOTH_PAIRING_MODE_PIN_DISPLAY_KEYBOARD);
Packit Service fc05fa
	g_assert (priv->pin);
Packit Service fc05fa
Packit Service fc05fa
	if (entered > 0) {
Packit Service fc05fa
		gunichar invisible;
Packit Service fc05fa
		GString *str;
Packit Service fc05fa
		guint i;
Packit Service fc05fa
Packit Service fc05fa
		invisible = gtk_entry_get_invisible_char (GTK_ENTRY (priv->entry_pin));
Packit Service fc05fa
Packit Service fc05fa
		str = g_string_new (NULL);
Packit Service fc05fa
		for (i = 0; i < entered; i++)
Packit Service fc05fa
			g_string_append_unichar (str, invisible);
Packit Service fc05fa
		if (entered < strlen (priv->pin))
Packit Service fc05fa
			g_string_append (str, priv->pin + entered);
Packit Service fc05fa
Packit Service fc05fa
		done = g_string_free (str, FALSE);
Packit Service fc05fa
	} else {
Packit Service fc05fa
		done = g_strdup (priv->pin);
Packit Service fc05fa
	}
Packit Service fc05fa
Packit Service fc05fa
	gtk_label_set_text (GTK_LABEL (priv->label_pin), done);
Packit Service fc05fa
	g_free (done);
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static void
Packit Service fc05fa
response_cb (GtkWidget *button,
Packit Service fc05fa
	     gpointer   user_data)
Packit Service fc05fa
{
Packit Service fc05fa
	BluetoothPairingDialogPrivate *priv = BLUETOOTH_PAIRING_DIALOG_GET_PRIVATE (user_data);
Packit Service fc05fa
	int response;
Packit Service fc05fa
Packit Service fc05fa
	if (button == priv->done)
Packit Service fc05fa
		response = GTK_RESPONSE_ACCEPT;
Packit Service fc05fa
	else if (button == priv->cancel)
Packit Service fc05fa
		response = GTK_RESPONSE_CANCEL;
Packit Service fc05fa
	else
Packit Service fc05fa
		g_assert_not_reached ();
Packit Service fc05fa
Packit Service fc05fa
	gtk_dialog_response (GTK_DIALOG (user_data), response);
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static void
Packit Service fc05fa
text_changed_cb (GObject    *gobject,
Packit Service fc05fa
		 GParamSpec *pspec,
Packit Service fc05fa
		 gpointer    user_data)
Packit Service fc05fa
{
Packit Service fc05fa
	BluetoothPairingDialogPrivate *priv = BLUETOOTH_PAIRING_DIALOG_GET_PRIVATE (user_data);
Packit Service fc05fa
	const char *text;
Packit Service fc05fa
Packit Service fc05fa
	if (priv->mode != BLUETOOTH_PAIRING_MODE_PIN_CONFIRMATION &&
Packit Service fc05fa
	    priv->mode != BLUETOOTH_PAIRING_MODE_PIN_QUERY)
Packit Service fc05fa
		return;
Packit Service fc05fa
Packit Service fc05fa
	text = gtk_entry_get_text (GTK_ENTRY (priv->entry_pin));
Packit Service fc05fa
	if (!text || strlen (text) < 4)
Packit Service fc05fa
		gtk_widget_set_sensitive (GTK_WIDGET (priv->done), FALSE);
Packit Service fc05fa
	else
Packit Service fc05fa
		gtk_widget_set_sensitive (GTK_WIDGET (priv->done), TRUE);
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static void
Packit Service fc05fa
bluetooth_pairing_dialog_init (BluetoothPairingDialog *self)
Packit Service fc05fa
{
Packit Service fc05fa
	GtkCssProvider *provider;
Packit Service fc05fa
Packit Service fc05fa
	gtk_widget_init_template (GTK_WIDGET (self));
Packit Service fc05fa
Packit Service fc05fa
	gtk_widget_set_size_request (GTK_WIDGET (self), 380, -1);
Packit Service fc05fa
	gtk_window_set_resizable (GTK_WINDOW (self), FALSE);
Packit Service fc05fa
Packit Service fc05fa
	provider = gtk_css_provider_new ();
Packit Service fc05fa
	gtk_css_provider_load_from_resource (provider, "/org/gnome/bluetooth/bluetooth-settings.css");
Packit Service fc05fa
	gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
Packit Service fc05fa
						   GTK_STYLE_PROVIDER (provider),
Packit Service fc05fa
						   GTK_STYLE_PROVIDER_PRIORITY_USER);
Packit Service fc05fa
	g_object_unref (provider);
Packit Service fc05fa
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static void
Packit Service fc05fa
bluetooth_pairing_dialog_constructed (GObject *object)
Packit Service fc05fa
{
Packit Service fc05fa
	BluetoothPairingDialog *self = BLUETOOTH_PAIRING_DIALOG (object);
Packit Service fc05fa
	BluetoothPairingDialogPrivate *priv = BLUETOOTH_PAIRING_DIALOG_GET_PRIVATE (self);
Packit Service fc05fa
	GtkWidget *header;
Packit Service fc05fa
	GtkStyleContext *context;
Packit Service fc05fa
Packit Service fc05fa
	/* Header */
Packit Service fc05fa
	header = gtk_dialog_get_header_bar (GTK_DIALOG (self));
Packit Service fc05fa
	priv->title = gtk_label_new ("");
Packit Service fc05fa
	gtk_header_bar_set_custom_title (GTK_HEADER_BAR (header), priv->title);
Packit Service fc05fa
	gtk_widget_show (priv->title);
Packit Service fc05fa
	gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (header), FALSE);
Packit Service fc05fa
Packit Service fc05fa
	/* OK button */
Packit Service fc05fa
	priv->done = gtk_button_new_with_label (_("Accept"));
Packit Service fc05fa
	gtk_widget_set_no_show_all (priv->done, TRUE);
Packit Service fc05fa
	gtk_widget_set_can_default (GTK_WIDGET (priv->done), TRUE);
Packit Service fc05fa
	g_signal_connect (G_OBJECT (priv->done), "clicked",
Packit Service fc05fa
			  G_CALLBACK (response_cb), self);
Packit Service fc05fa
	gtk_header_bar_pack_end (GTK_HEADER_BAR (header), priv->done);
Packit Service fc05fa
Packit Service fc05fa
	/* Spinner */
Packit Service fc05fa
	priv->spinner = gtk_spinner_new ();
Packit Service fc05fa
	gtk_widget_set_margin_end (priv->spinner, 12);
Packit Service fc05fa
	gtk_widget_set_no_show_all (priv->spinner, TRUE);
Packit Service fc05fa
	gtk_header_bar_pack_end (GTK_HEADER_BAR (header), priv->spinner);
Packit Service fc05fa
	g_object_bind_property (priv->spinner, "visible",
Packit Service fc05fa
				priv->spinner, "active", 0);
Packit Service fc05fa
	g_object_bind_property (priv->spinner, "visible",
Packit Service fc05fa
				priv->done, "visible",
Packit Service fc05fa
				G_BINDING_SYNC_CREATE | G_BINDING_INVERT_BOOLEAN | G_BINDING_BIDIRECTIONAL);
Packit Service fc05fa
Packit Service fc05fa
	/* Cancel button */
Packit Service fc05fa
	priv->cancel = gtk_button_new_with_label (_("Cancel"));
Packit Service fc05fa
	g_signal_connect (G_OBJECT (priv->cancel), "clicked",
Packit Service fc05fa
			  G_CALLBACK (response_cb), self);
Packit Service fc05fa
	gtk_header_bar_pack_start (GTK_HEADER_BAR (header), priv->cancel);
Packit Service fc05fa
	gtk_widget_show (priv->cancel);
Packit Service fc05fa
	gtk_widget_grab_default (GTK_WIDGET (priv->done));
Packit Service fc05fa
Packit Service fc05fa
	g_signal_connect (G_OBJECT (priv->entry_pin), "notify::text",
Packit Service fc05fa
			  G_CALLBACK (text_changed_cb), self);
Packit Service fc05fa
Packit Service fc05fa
	context = gtk_widget_get_style_context (priv->done);
Packit Service fc05fa
	gtk_style_context_add_class (context, "suggested-action");
Packit Service fc05fa
	context = gtk_widget_get_style_context (priv->title);
Packit Service fc05fa
	gtk_style_context_add_class (context, "title");
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static void
Packit Service fc05fa
bluetooth_pairing_dialog_finalize (GObject *object)
Packit Service fc05fa
{
Packit Service fc05fa
	BluetoothPairingDialogPrivate *priv = BLUETOOTH_PAIRING_DIALOG_GET_PRIVATE (BLUETOOTH_PAIRING_DIALOG (object));
Packit Service fc05fa
Packit Service fc05fa
	g_free (priv->pin);
Packit Service fc05fa
Packit Service fc05fa
	G_OBJECT_CLASS(bluetooth_pairing_dialog_parent_class)->finalize(object);
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
static void
Packit Service fc05fa
bluetooth_pairing_dialog_class_init (BluetoothPairingDialogClass *klass)
Packit Service fc05fa
{
Packit Service fc05fa
	GObjectClass *object_class = G_OBJECT_CLASS (klass);
Packit Service fc05fa
	GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
Packit Service fc05fa
Packit Service fc05fa
	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
Packit Service fc05fa
Packit Service fc05fa
	object_class->constructed = bluetooth_pairing_dialog_constructed;
Packit Service fc05fa
	object_class->finalize = bluetooth_pairing_dialog_finalize;
Packit Service fc05fa
Packit Service fc05fa
	/* Bind class to template */
Packit Service fc05fa
	gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/bluetooth/bluetooth-pairing-dialog.ui");
Packit Service fc05fa
	gtk_widget_class_bind_template_child_private (widget_class, BluetoothPairingDialog, help_label);
Packit Service fc05fa
	gtk_widget_class_bind_template_child_private (widget_class, BluetoothPairingDialog, pin_notebook);
Packit Service fc05fa
	gtk_widget_class_bind_template_child_private (widget_class, BluetoothPairingDialog, entry_pin);
Packit Service fc05fa
	gtk_widget_class_bind_template_child_private (widget_class, BluetoothPairingDialog, label_pin);
Packit Service fc05fa
}
Packit Service fc05fa
Packit Service fc05fa
/**
Packit Service fc05fa
 * bluetooth_pairing_dialog_new:
Packit Service fc05fa
 *
Packit Service fc05fa
 * Returns a new #BluetoothPairingDialog widget.
Packit Service fc05fa
 *
Packit Service fc05fa
 * Return value: A #BluetoothPairingDialog widget
Packit Service fc05fa
 **/
Packit Service fc05fa
GtkWidget *
Packit Service fc05fa
bluetooth_pairing_dialog_new (void)
Packit Service fc05fa
{
Packit Service fc05fa
	return g_object_new (BLUETOOTH_TYPE_PAIRING_DIALOG,
Packit Service fc05fa
	                     "use-header-bar", 1,
Packit Service fc05fa
	                     NULL);
Packit Service fc05fa
}