summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKirill Moizik <kmoizik@redhat.com>2016-03-08 16:05:58 +0200
committerJonathon Jongsma <jjongsma@redhat.com>2016-03-24 11:00:02 -0500
commit03e541add456485a6cc890064c98bc259f78ade4 (patch)
tree4ad8e4c24d993d6e7efca23f54ac0af94391d6c7
parent9fbf679453d8dbfe797a738cb536136599d7adab (diff)
UsbDeviceWidget: Show info bar during redirection flows
Signed-off-by: Kirill Moizik <kmoizik@redhat.com> Signed-off-by: Dmitry Fleytman <dfleytma@redhat.com> Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
-rw-r--r--src/map-file1
-rw-r--r--src/usb-device-manager.c23
-rw-r--r--src/usb-device-manager.h2
-rw-r--r--src/usb-device-widget.c7
4 files changed, 33 insertions, 0 deletions
diff --git a/src/map-file b/src/map-file
index 112b5ea..9df9017 100644
--- a/src/map-file
+++ b/src/map-file
@@ -133,6 +133,7 @@ spice_usb_device_manager_connect_device_finish;
spice_usb_device_manager_disconnect_device;
spice_usb_device_manager_disconnect_device_async;
spice_usb_device_manager_disconnect_device_finish;
+spice_usb_device_manager_is_redirecting;
spice_usb_device_manager_get;
spice_usb_device_manager_get_devices;
spice_usb_device_manager_get_devices_with_filter;
diff --git a/src/usb-device-manager.c b/src/usb-device-manager.c
index 1147643..1bbf6b3 100644
--- a/src/usb-device-manager.c
+++ b/src/usb-device-manager.c
@@ -231,6 +231,29 @@ _set_redirecting(SpiceUsbDeviceManager *self, gboolean is_redirecting)
G_DEFINE_BOXED_TYPE(SpiceUsbDevice, spice_usb_device, g_object_ref, g_object_unref)
#endif
+/**
+* spice_usb_device_manager_is_redirecting:
+* @manager: the #SpiceUsbDeviceManager manager
+*
+* Returns: %TRUE if device redirection negotiation flow is in progress
+*/
+gboolean spice_usb_device_manager_is_redirecting(SpiceUsbDeviceManager *self)
+{
+#ifdef USE_USBREDIR
+
+#ifdef USE_GUDEV
+ gboolean redirecting;
+ g_object_get(self->priv->udev, "redirecting", &redirecting, NULL);
+ return redirecting;
+#else
+ return self->priv->redirecting;
+#endif
+
+#else
+ return FALSE;
+#endif
+}
+
static void spice_usb_device_manager_initable_iface_init(GInitableIface *iface);
static guint signals[LAST_SIGNAL] = { 0, };
diff --git a/src/usb-device-manager.h b/src/usb-device-manager.h
index d1b0a96..a9a4f7a 100644
--- a/src/usb-device-manager.h
+++ b/src/usb-device-manager.h
@@ -138,6 +138,8 @@ spice_usb_device_manager_can_redirect_device(SpiceUsbDeviceManager *self,
SpiceUsbDevice *device,
GError **err);
+gboolean spice_usb_device_manager_is_redirecting(SpiceUsbDeviceManager *self);
+
G_END_DECLS
#endif /* __SPICE_USB_DEVICE_MANAGER_H__ */
diff --git a/src/usb-device-widget.c b/src/usb-device-widget.c
index 3b060e9..285bfd5 100644
--- a/src/usb-device-widget.c
+++ b/src/usb-device-widget.c
@@ -410,6 +410,9 @@ static gboolean spice_usb_device_widget_update_status(gpointer user_data)
gchar *str, *markup_str;
const gchar *free_channels_str;
int free_channels;
+ gboolean redirecting;
+
+ redirecting = spice_usb_device_manager_is_redirecting(priv->manager);
g_object_get(priv->manager, "free-channels", &free_channels, NULL);
free_channels_str = ngettext(_("Select USB devices to redirect (%d free channel)"),
@@ -430,6 +433,10 @@ static gboolean spice_usb_device_widget_update_status(gpointer user_data)
GTK_STOCK_DIALOG_WARNING);
g_free(priv->err_msg);
priv->err_msg = NULL;
+ } else if (redirecting) {
+ spice_usb_device_widget_show_info_bar(self, _("Redirecting USB Device..."),
+ GTK_MESSAGE_INFO,
+ GTK_STOCK_DIALOG_INFO);
} else {
spice_usb_device_widget_hide_info_bar(self);
}