printers: Check presence of new printer
Check successful installation of new printer by search in list of destinations given by CUPS. Add index to the end of name of new printer if the name is already used.
This commit is contained in:
parent
8164c8f7f9
commit
03f49b9e3f
1 changed files with 42 additions and 3 deletions
|
@ -265,12 +265,17 @@ devices_get_cb (GObject *source_object,
|
|||
gpointer user_data)
|
||||
{
|
||||
PpNewPrinterDialog *pp = user_data;
|
||||
cups_dest_t *dests;
|
||||
GHashTable *devices = NULL;
|
||||
GtkWidget *widget = NULL;
|
||||
GVariant *dg_output = NULL;
|
||||
gboolean already_present;
|
||||
GError *error = NULL;
|
||||
gchar *new_name = NULL;
|
||||
char *ret_error = NULL;
|
||||
gint i, j;
|
||||
gint name_index;
|
||||
gint num_dests;
|
||||
|
||||
dg_output = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object),
|
||||
res,
|
||||
|
@ -375,6 +380,34 @@ devices_get_cb (GObject *source_object,
|
|||
name = g_strcanon (name, ALLOWED_CHARACTERS, '-');
|
||||
}
|
||||
|
||||
name_index = 2;
|
||||
already_present = FALSE;
|
||||
num_dests = cupsGetDests (&dests);
|
||||
do
|
||||
{
|
||||
if (already_present)
|
||||
{
|
||||
new_name = g_strdup_printf ("%s-%d", name, name_index);
|
||||
name_index++;
|
||||
}
|
||||
else
|
||||
new_name = g_strdup (name);
|
||||
|
||||
already_present = FALSE;
|
||||
for (j = 0; j < num_dests; j++)
|
||||
if (g_strcmp0 (dests[j].name, new_name) == 0)
|
||||
already_present = TRUE;
|
||||
|
||||
if (already_present)
|
||||
g_free (new_name);
|
||||
else
|
||||
{
|
||||
g_free (name);
|
||||
name = new_name;
|
||||
}
|
||||
} while (already_present);
|
||||
cupsFreeDests (num_dests, dests);
|
||||
|
||||
pp->devices[i].display_name = name;
|
||||
}
|
||||
|
||||
|
@ -815,14 +848,16 @@ new_printer_add_button_cb (GtkButton *button,
|
|||
PpNewPrinterDialog *pp = (PpNewPrinterDialog*) user_data;
|
||||
GtkResponseType dialog_response = GTK_RESPONSE_OK;
|
||||
GtkTreeModel *model;
|
||||
cups_dest_t *dests;
|
||||
GtkTreeIter iter;
|
||||
GtkWidget *treeview;
|
||||
gboolean success = FALSE;
|
||||
gchar *device_name = NULL;
|
||||
PPDName *ppd_name = NULL;
|
||||
gchar *device_name = NULL;
|
||||
gint device_id = -1;
|
||||
gint device_type = -1;
|
||||
gint i, j, k;
|
||||
int num_dests;
|
||||
|
||||
treeview = (GtkWidget*)
|
||||
gtk_builder_get_object (pp->builder, "device-types-treeview");
|
||||
|
@ -1029,8 +1064,6 @@ new_printer_add_button_cb (GtkButton *button,
|
|||
|
||||
g_clear_error (&error);
|
||||
}
|
||||
else
|
||||
success = TRUE;
|
||||
|
||||
g_object_unref (proxy);
|
||||
}
|
||||
|
@ -1038,6 +1071,12 @@ new_printer_add_button_cb (GtkButton *button,
|
|||
g_free (ppd_name->ppd_name);
|
||||
g_free (ppd_name);
|
||||
}
|
||||
|
||||
num_dests = cupsGetDests (&dests);
|
||||
for (i = 0; i < num_dests; i++)
|
||||
if (g_strcmp0 (dests[i].name, pp->devices[device_id].display_name) == 0)
|
||||
success = TRUE;
|
||||
cupsFreeDests (num_dests, dests);
|
||||
}
|
||||
|
||||
/* Set some options of the new printer */
|
||||
|
|
Loading…
Add table
Reference in a new issue