[Spice-devel] [PATCH 1/2] usb-device-widget: Improve "there are no free USB channnels" string
Fabiano FidĂȘncio
fidencio at redhat.com
Tue Jan 19 13:36:37 PST 2016
As the message can be understand as an error message, let's replace it
for a more user-friendly message and display it in the infobar as an
info message instead of a warning message.
Related: rhbz#1298772
---
src/spice-client.h | 2 ++
src/usb-device-manager.c | 6 ++++--
src/usb-device-widget.c | 10 ++++++++--
3 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/src/spice-client.h b/src/spice-client.h
index 32b79ea..cccb325 100644
--- a/src/spice-client.h
+++ b/src/spice-client.h
@@ -70,6 +70,7 @@ G_BEGIN_DECLS
* @SPICE_CLIENT_ERROR_AUTH_NEEDS_USERNAME: username is required
* @SPICE_CLIENT_ERROR_AUTH_NEEDS_PASSWORD_AND_USERNAME: password and username are required
* @SPICE_CLIENT_ERROR_USB_SERVICE: USB service error
+ * @SPICE_CLIENT_ERROR_USB_NO_FREE_CHANNELS_AVAILABLE: there are no more free channels available for redirecting a device
*
* Error codes returned by spice-client API.
*/
@@ -82,6 +83,7 @@ typedef enum
SPICE_CLIENT_ERROR_AUTH_NEEDS_USERNAME,
SPICE_CLIENT_ERROR_AUTH_NEEDS_PASSWORD_AND_USERNAME,
SPICE_CLIENT_ERROR_USB_SERVICE,
+ SPICE_CLIENT_ERROR_USB_NO_FREE_CHANNELS_AVAILABLE,
} SpiceClientError;
#ifndef SPICE_DISABLE_DEPRECATED
diff --git a/src/usb-device-manager.c b/src/usb-device-manager.c
index c62f56e..a22d926 100644
--- a/src/usb-device-manager.c
+++ b/src/usb-device-manager.c
@@ -1673,8 +1673,10 @@ spice_usb_device_manager_can_redirect_device(SpiceUsbDeviceManager *self,
break;
}
if (i == priv->channels->len) {
- g_set_error_literal(err, SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
- _("There are no free USB channels"));
+ g_set_error_literal(err,
+ SPICE_CLIENT_ERROR,
+ SPICE_CLIENT_ERROR_USB_NO_FREE_CHANNELS_AVAILABLE,
+ _("All available USB channels are in use.\nNo additional devices can be redirected"));
return FALSE;
}
diff --git a/src/usb-device-widget.c b/src/usb-device-widget.c
index fe983c9..830bdce 100644
--- a/src/usb-device-widget.c
+++ b/src/usb-device-widget.c
@@ -74,6 +74,7 @@ struct _SpiceUsbDeviceWidgetPrivate {
GtkWidget *info_bar;
gchar *err_msg;
gsize device_count;
+ gboolean is_info_message;
};
static guint signals[LAST_SIGNAL] = { 0, };
@@ -381,6 +382,10 @@ static void check_can_redirect(GtkWidget *widget, gpointer user_data)
/* If we cannot redirect this device, append the error message to
err_msg, but only if it is *not* already there! */
if (!can_redirect) {
+ priv->is_info_message = g_error_matches(err,
+ SPICE_CLIENT_ERROR,
+ SPICE_CLIENT_ERROR_USB_NO_FREE_CHANNELS_AVAILABLE);
+
if (priv->err_msg) {
if (!strstr(priv->err_msg, err->message)) {
gchar *old_err_msg = priv->err_msg;
@@ -407,8 +412,9 @@ static gboolean spice_usb_device_widget_update_status(gpointer user_data)
if (priv->err_msg) {
spice_usb_device_widget_show_info_bar(self, priv->err_msg,
- GTK_MESSAGE_INFO,
- GTK_STOCK_DIALOG_WARNING);
+ GTK_MESSAGE_INFO,
+ priv->is_info_message ?
+ GTK_STOCK_DIALOG_INFO : GTK_STOCK_DIALOG_WARNING);
g_free(priv->err_msg);
priv->err_msg = NULL;
} else {
--
2.5.0
More information about the Spice-devel
mailing list