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;
|
||||
GtkTreeIter iter;
|
||||
GtkWidget *widget;
|
||||
int id;
|
||||
int id = -1;
|
||||
|
||||
priv = PRINTERS_PANEL_PRIVATE (self);
|
||||
|
||||
|
@ -1314,9 +1314,119 @@ allowed_user_remove_cb (GtkButton *button,
|
|||
}
|
||||
else
|
||||
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
|
||||
printer_set_default_cb (GtkToggleButton *button,
|
||||
gpointer user_data)
|
||||
|
@ -1522,6 +1632,10 @@ cc_printers_panel_init (CcPrintersPanel *self)
|
|||
gtk_builder_get_object (priv->builder, "allowed-user-remove-button");
|
||||
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*)
|
||||
gtk_builder_get_object (priv->builder, "supply-drawing-area");
|
||||
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);
|
||||
|
||||
|
||||
/* 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_jobs_list (self);
|
||||
populate_allowed_users_list (self);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue