printers: Add ability to add allowed users
This commit is contained in:
parent
0d618405d0
commit
fdd13a9f83
1 changed files with 115 additions and 7 deletions
|
@ -709,7 +709,7 @@ job_selection_changed_cb (GtkTreeSelection *selection,
|
||||||
GtkTreeModel *model;
|
GtkTreeModel *model;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
GtkWidget *widget;
|
GtkWidget *widget;
|
||||||
int id;
|
int id = -1;
|
||||||
|
|
||||||
priv = PRINTERS_PANEL_PRIVATE (self);
|
priv = PRINTERS_PANEL_PRIVATE (self);
|
||||||
|
|
||||||
|
@ -1314,9 +1314,119 @@ allowed_user_remove_cb (GtkButton *button,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
actualize_allowed_users_list (self);
|
actualize_allowed_users_list (self);
|
||||||
|
|
||||||
|
g_free (names);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
allowed_user_add_cb (GtkCellRendererText *renderer,
|
||||||
|
gchar *path,
|
||||||
|
gchar *new_text,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
CcPrintersPanelPrivate *priv;
|
||||||
|
CcPrintersPanel *self = (CcPrintersPanel*) user_data;
|
||||||
|
DBusGProxy *proxy;
|
||||||
|
gboolean ret = FALSE;
|
||||||
|
GError *error = NULL;
|
||||||
|
char *ret_error = NULL;
|
||||||
|
char *printer_name = NULL;
|
||||||
|
char **names = NULL;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
priv = PRINTERS_PANEL_PRIVATE (self);
|
||||||
|
|
||||||
|
g_signal_handlers_disconnect_by_func (G_OBJECT (renderer),
|
||||||
|
allowed_user_add_cb,
|
||||||
|
self);
|
||||||
|
g_object_set (G_OBJECT (renderer), "editable", FALSE, NULL);
|
||||||
|
|
||||||
|
if (priv->current_dest >= 0 &&
|
||||||
|
priv->current_dest < priv->num_dests &&
|
||||||
|
priv->dests != NULL)
|
||||||
|
printer_name = priv->dests[priv->current_dest].name;
|
||||||
|
|
||||||
|
if (new_text && new_text[0] != '\0' && printer_name)
|
||||||
|
{
|
||||||
|
proxy = get_dbus_proxy ();
|
||||||
|
|
||||||
|
if (!proxy)
|
||||||
|
return;
|
||||||
|
|
||||||
|
names = g_new0 (char *, priv->num_allowed_users + 2);
|
||||||
|
for (i = 0; i < (priv->num_allowed_users); i++)
|
||||||
|
names[i] = priv->allowed_users[i];
|
||||||
|
names[priv->num_allowed_users] = new_text;
|
||||||
|
|
||||||
|
ret = dbus_g_proxy_call (proxy, "PrinterSetUsersAllowed", &error,
|
||||||
|
G_TYPE_STRING, printer_name,
|
||||||
|
G_TYPE_STRV, names,
|
||||||
|
G_TYPE_INVALID,
|
||||||
|
G_TYPE_STRING, &ret_error,
|
||||||
|
G_TYPE_INVALID);
|
||||||
|
|
||||||
|
if (error || (ret_error && ret_error[0] != '\0'))
|
||||||
|
{
|
||||||
|
if (error)
|
||||||
|
g_warning ("%s", error->message);
|
||||||
|
|
||||||
|
if (ret_error && ret_error[0] != '\0')
|
||||||
|
g_warning ("%s", ret_error);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free (names);
|
||||||
|
}
|
||||||
|
|
||||||
|
actualize_allowed_users_list (self);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
allowed_user_add_button_cb (GtkButton *button,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
CcPrintersPanelPrivate *priv;
|
||||||
|
GtkTreeViewColumn *column;
|
||||||
|
CcPrintersPanel *self = (CcPrintersPanel*) user_data;
|
||||||
|
GtkListStore *liststore;
|
||||||
|
GtkTreeView *treeview;
|
||||||
|
GtkTreeIter iter;
|
||||||
|
GtkTreePath *path;
|
||||||
|
GList *renderers;
|
||||||
|
|
||||||
|
priv = PRINTERS_PANEL_PRIVATE (self);
|
||||||
|
|
||||||
|
treeview = (GtkTreeView*)
|
||||||
|
gtk_builder_get_object (priv->builder, "allowed-users-treeview");
|
||||||
|
|
||||||
|
liststore = (GtkListStore*)
|
||||||
|
gtk_tree_view_get_model (treeview);
|
||||||
|
|
||||||
|
gtk_list_store_prepend (liststore, &iter);
|
||||||
|
column = gtk_tree_view_get_column (treeview, 0);
|
||||||
|
path = gtk_tree_model_get_path (GTK_TREE_MODEL (liststore), &iter);
|
||||||
|
renderers = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column));
|
||||||
|
|
||||||
|
if (column && renderers)
|
||||||
|
{
|
||||||
|
g_signal_connect (G_OBJECT (renderers->data),
|
||||||
|
"edited",
|
||||||
|
G_CALLBACK (allowed_user_add_cb),
|
||||||
|
self);
|
||||||
|
|
||||||
|
g_object_set (renderers->data, "editable", TRUE, NULL);
|
||||||
|
gtk_widget_grab_focus (GTK_WIDGET (treeview));
|
||||||
|
gtk_tree_view_set_cursor_on_cell (treeview,
|
||||||
|
path,
|
||||||
|
column,
|
||||||
|
GTK_CELL_RENDERER (renderers->data),
|
||||||
|
TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_list_free (renderers);
|
||||||
|
gtk_tree_path_free (path);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
printer_set_default_cb (GtkToggleButton *button,
|
printer_set_default_cb (GtkToggleButton *button,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
|
@ -1522,6 +1632,10 @@ cc_printers_panel_init (CcPrintersPanel *self)
|
||||||
gtk_builder_get_object (priv->builder, "allowed-user-remove-button");
|
gtk_builder_get_object (priv->builder, "allowed-user-remove-button");
|
||||||
g_signal_connect (widget, "clicked", G_CALLBACK (allowed_user_remove_cb), self);
|
g_signal_connect (widget, "clicked", G_CALLBACK (allowed_user_remove_cb), self);
|
||||||
|
|
||||||
|
widget = (GtkWidget*)
|
||||||
|
gtk_builder_get_object (priv->builder, "allowed-user-add-button");
|
||||||
|
g_signal_connect (widget, "clicked", G_CALLBACK (allowed_user_add_button_cb), self);
|
||||||
|
|
||||||
widget = (GtkWidget*)
|
widget = (GtkWidget*)
|
||||||
gtk_builder_get_object (priv->builder, "supply-drawing-area");
|
gtk_builder_get_object (priv->builder, "supply-drawing-area");
|
||||||
g_signal_connect (widget, "draw", G_CALLBACK (supply_levels_draw_cb), self);
|
g_signal_connect (widget, "draw", G_CALLBACK (supply_levels_draw_cb), self);
|
||||||
|
@ -1539,12 +1653,6 @@ cc_printers_panel_init (CcPrintersPanel *self)
|
||||||
g_signal_connect (widget, "clicked", G_CALLBACK (printer_maintenance_cb), self);
|
g_signal_connect (widget, "clicked", G_CALLBACK (printer_maintenance_cb), self);
|
||||||
|
|
||||||
|
|
||||||
/* make unused widgets insensitive for now */
|
|
||||||
widget = (GtkWidget*)
|
|
||||||
gtk_builder_get_object (priv->builder, "allowed-user-add-button");
|
|
||||||
gtk_widget_set_sensitive (widget, FALSE);
|
|
||||||
|
|
||||||
|
|
||||||
populate_printers_list (self);
|
populate_printers_list (self);
|
||||||
populate_jobs_list (self);
|
populate_jobs_list (self);
|
||||||
populate_allowed_users_list (self);
|
populate_allowed_users_list (self);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue