[gnome-settings-daemon] printing: use human readable name in messages
- From: William Jon McCann <mccann src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] printing: use human readable name in messages
- Date: Tue, 1 Feb 2011 22:42:55 +0000 (UTC)
commit 0f1d4411d91192b62fc826af7c3480e18a4e7d0b
Author: William Jon McCann <jmccann redhat com>
Date: Tue Feb 1 17:37:42 2011 -0500
printing: use human readable name in messages
.../gsd-print-notifications-manager.c | 68 ++++++++++++++------
1 files changed, 47 insertions(+), 21 deletions(-)
---
diff --git a/plugins/print-notifications/gsd-print-notifications-manager.c b/plugins/print-notifications/gsd-print-notifications-manager.c
index b427458..f7398e7 100644
--- a/plugins/print-notifications/gsd-print-notifications-manager.c
+++ b/plugins/print-notifications/gsd-print-notifications-manager.c
@@ -65,42 +65,63 @@ G_DEFINE_TYPE (GsdPrintNotificationsManager, gsd_print_notifications_manager, G_
static gpointer manager_object = NULL;
-static gboolean
-is_local_dest (const char *name)
+static char *
+get_dest_attr (const char *dest_name,
+ const char *attr)
{
cups_dest_t *dests;
int num_dests;
cups_dest_t *dest;
- const char *type_str;
- cups_ptype_t type;
- gboolean is_remote;
+ const char *value;
+ char *ret;
- is_remote = TRUE;
+ if (dest_name == NULL)
+ return NULL;
+
+ ret = NULL;
num_dests = cupsGetDests (&dests);
if (num_dests < 1) {
g_debug ("Unable to get printer destinations");
- return FALSE;
+ return NULL;
}
- dest = cupsGetDest (name, NULL, num_dests, dests);
+ dest = cupsGetDest (dest_name, NULL, num_dests, dests);
if (dest == NULL) {
- g_debug ("Unable to find a printer named '%s'", name);
+ g_debug ("Unable to find a printer named '%s'", dest_name);
goto out;
}
- type_str = cupsGetOption ("printer-type", dest->num_options, dest->options);
+ value = cupsGetOption (attr, dest->num_options, dest->options);
+ if (value == NULL) {
+ g_debug ("Unable to get %s for '%s'", attr, dest_name);
+ goto out;
+ }
+ ret = g_strdup (value);
+ out:
+ cupsFreeDests (num_dests, dests);
+
+ return ret;
+}
+
+static gboolean
+is_local_dest (const char *name)
+{
+ char *type_str;
+ cups_ptype_t type;
+ gboolean is_remote;
+
+ is_remote = TRUE;
+
+ type_str = get_dest_attr (name, "printer-type");
if (type_str == NULL) {
- g_debug ("Unable to get printer type for '%s'", name);
goto out;
}
type = atoi (type_str);
is_remote = type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_IMPLICIT);
-
+ g_free (type_str);
out:
- cupsFreeDests (num_dests, dests);
-
return !is_remote;
}
@@ -118,6 +139,7 @@ on_cups_notification (GDBusConnection *connection,
GSList *actual = NULL;
GSList *tmp = NULL;
gchar *printer_name = NULL;
+ gchar *display_name = NULL;
gchar *user_name = NULL;
gchar *primary_text = NULL;
gchar *secondary_text = NULL;
@@ -132,7 +154,7 @@ on_cups_notification (GDBusConnection *connection,
g_variant_get (parameters, "(&s)", &printer_name);
if (is_local_dest (printer_name)) {
primary_text = g_strdup (_("Printer added"));
- secondary_text = g_strdup_printf ("%s", printer_name);
+ secondary_text = get_dest_attr (printer_name, "printer-info");
}
}
} else if (g_strcmp0 (signal_name, "PrinterRemoved") == 0) {
@@ -141,7 +163,7 @@ on_cups_notification (GDBusConnection *connection,
g_variant_get (parameters, "(&s)", &printer_name);
if (is_local_dest (printer_name)) {
primary_text = g_strdup (_("Printer removed"));
- secondary_text = g_strdup_printf ("%s", printer_name);
+ secondary_text = get_dest_attr (printer_name, "printer-info");
}
}
} else if (g_strcmp0 (signal_name, "QueueChanged") == 0) {
@@ -150,6 +172,8 @@ on_cups_notification (GDBusConnection *connection,
g_variant_get (parameters, "(&s)", &printer_name);
}
+ display_name = get_dest_attr (printer_name, "printer-info");
+
if (manager->priv->actual_jobs != NULL) {
num_jobs = cupsGetJobs (&jobs, printer_name, 1, CUPS_WHICHJOBS_ALL);
@@ -166,28 +190,28 @@ on_cups_notification (GDBusConnection *connection,
/* Translators: A print job has been stopped */
primary_text = g_strdup (_("Printing stopped"));
/* Translators: "print-job xy" on a printer */
- secondary_text = g_strdup_printf (_("\"%s\" on printer %s"), jobs[i].title, jobs[i].dest);
+ secondary_text = g_strdup_printf (_("\"%s\" on printer %s"), jobs[i].title, display_name);
actual->data = GINT_TO_POINTER (-1);
break;
case IPP_JOB_CANCELED:
/* Translators: A print job has been canceled */
primary_text = g_strdup (_("Printing canceled"));
/* Translators: "print-job xy" on a printer */
- secondary_text = g_strdup_printf (_("\"%s\" on printer %s"), jobs[i].title, jobs[i].dest);
+ secondary_text = g_strdup_printf (_("\"%s\" on printer %s"), jobs[i].title, display_name);
actual->data = GINT_TO_POINTER (-1);
break;
case IPP_JOB_ABORTED:
/* Translators: A print job has been aborted */
primary_text = g_strdup (_("Printing aborted"));
/* Translators: "print-job xy" on a printer */
- secondary_text = g_strdup_printf (_("\"%s\" on printer %s"), jobs[i].title, jobs[i].dest);
+ secondary_text = g_strdup_printf (_("\"%s\" on printer %s"), jobs[i].title, display_name);
actual->data = GINT_TO_POINTER (-1);
break;
case IPP_JOB_COMPLETED:
/* Translators: A print job has been completed */
primary_text = g_strdup (_("Printing completed"));
/* Translators: "print-job xy" on a printer */
- secondary_text = g_strdup_printf (_("\"%s\" on printer %s"), jobs[i].title, jobs[i].dest);
+ secondary_text = g_strdup_printf (_("\"%s\" on printer %s"), jobs[i].title, display_name);
actual->data = GINT_TO_POINTER (-1);
break;
}
@@ -233,6 +257,8 @@ on_cups_notification (GDBusConnection *connection,
if (g_variant_n_children (parameters) == 3) {
g_variant_get (parameters, "(&su&s)", &printer_name, &job_id, &user_name);
+ display_name = get_dest_attr (printer_name, "printer-info");
+
for (actual = manager->priv->actual_jobs; actual; actual = actual->next) {
if (GPOINTER_TO_INT (actual->data) == job_id) {
num_jobs = cupsGetJobs (&jobs, printer_name, 1, CUPS_WHICHJOBS_ALL);
@@ -246,7 +272,7 @@ on_cups_notification (GDBusConnection *connection,
/* Translators: A job is printing */
primary_text = g_strdup (_("Printing job"));
/* Translators: "print-job xy" on a printer */
- secondary_text = g_strdup_printf (_("\"%s\" on printer %s"), jobs[index].title, jobs[index].dest);
+ secondary_text = g_strdup_printf (_("\"%s\" on printer %s"), jobs[index].title, display_name);
}
cupsFreeJobs (num_jobs, jobs);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]