[accounts-dialog/lockbutton: 1/4] Try a lockbutton for user page too
- From: Matthias Clasen <matthiasc src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [accounts-dialog/lockbutton: 1/4] Try a lockbutton for user page too
- Date: Fri, 29 Jan 2010 13:38:29 +0000 (UTC)
commit 1f03da9a52cc5f374581ce6bc34a75b2eb50315e
Author: Matthias Clasen <mclasen redhat com>
Date: Thu Jan 21 22:41:51 2010 -0500
Try a lockbutton for user page too
src/main.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 64 insertions(+), 0 deletions(-)
---
diff --git a/src/main.c b/src/main.c
index 4f150a7..95ec374 100644
--- a/src/main.c
+++ b/src/main.c
@@ -33,6 +33,7 @@
#include <gtk/gtk.h>
#include <unique/unique.h>
#include <polkit/polkit.h>
+#include <polkitgtk/polkitgtk.h>
#include <dbus/dbus-glib-bindings.h>
#ifdef HAVE_CHEESE
@@ -62,6 +63,7 @@ typedef struct {
GtkBuilder *builder;
GtkWidget *main_window;
+ GtkWidget *lock_button;
UmAccountDialog *account_dialog;
UmAccountTypeDialog *account_type_dialog;
@@ -756,6 +758,8 @@ authorizations_changed (PolkitAuthority *authority,
}
}
+static void lockbutton_changed (PolkitLockButton *button, gpointer data);
+
static void
selected_user_changed (GtkTreeSelection *selection, UserAccountDialog *d)
{
@@ -771,7 +775,10 @@ selected_user_changed (GtkTreeSelection *selection, UserAccountDialog *d)
widget = get_widget (d, "login-options-button");
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (widget), FALSE);
update_create_buttons (d);
+#if 0
update_change_buttons (d, user);
+#endif
+ lockbutton_changed (POLKIT_LOCK_BUTTON (d->lock_button), d);
g_object_unref (user);
}
@@ -1006,6 +1013,52 @@ users_loaded (UmUserManager *manager,
}
static void
+lockbutton_changed (PolkitLockButton *button,
+ gpointer data)
+{
+ UserAccountDialog *d = data;
+ gboolean is_authorized;
+ UmUser *user;
+
+ user = get_selected_user (d);
+ if (!user) {
+ return;
+ }
+
+ if (um_user_get_uid (user) == geteuid ()) {
+ gtk_widget_hide (GTK_WIDGET (button));
+ is_authorized = TRUE;
+ }
+ else {
+ gtk_widget_show (GTK_WIDGET (button));
+ is_authorized = polkit_lock_button_get_is_authorized (button);
+ }
+
+ if (is_authorized) {
+ gtk_widget_show (get_widget (d, "user-icon-button"));
+ gtk_widget_hide (get_widget (d, "user-icon-nonbutton"));
+
+ gtk_widget_show (get_widget (d, "change-name-button"));
+ gtk_widget_show (get_widget (d, "change-email-button"));
+ gtk_widget_show (get_widget (d, "change-language-button"));
+ gtk_widget_show (get_widget (d, "change-location-button"));
+ gtk_widget_show (get_widget (d, "change-account-type-button"));
+ gtk_widget_show (get_widget (d, "change-password-button"));
+ }
+ else {
+ gtk_widget_hide (get_widget (d, "user-icon-button"));
+ gtk_widget_show (get_widget (d, "user-icon-nonbutton"));
+
+ gtk_widget_hide (get_widget (d, "change-name-button"));
+ gtk_widget_hide (get_widget (d, "change-email-button"));
+ gtk_widget_hide (get_widget (d, "change-language-button"));
+ gtk_widget_hide (get_widget (d, "change-location-button"));
+ gtk_widget_hide (get_widget (d, "change-account-type-button"));
+ gtk_widget_hide (get_widget (d, "change-password-button"));
+ }
+}
+
+static void
setup_main_window (UserAccountDialog *d)
{
GtkWidget *window;
@@ -1018,6 +1071,7 @@ setup_main_window (UserAccountDialog *d)
GtkWidget *button;
GtkTreeIter iter;
gint expander_size;
+ GtkWidget *box;
window = get_widget (d, "user-account-window");
g_signal_connect (window, "delete-event", G_CALLBACK (gtk_main_quit), NULL);
@@ -1112,6 +1166,16 @@ setup_main_window (UserAccountDialog *d)
button = get_widget (d, "change-fingerprint-button-disable");
g_signal_connect (button, "clicked",
G_CALLBACK (change_fingerprint), d);
+
+ button = polkit_lock_button_new ("org.freedesktop.accounts.user-administration");
+ gtk_widget_show (button);
+ box = get_widget (d, "main-user-vbox");
+ gtk_box_pack_end (GTK_BOX (box), button, FALSE, FALSE, 0);
+ g_signal_connect (button, "changed",
+ G_CALLBACK (lockbutton_changed), d);
+ lockbutton_changed (POLKIT_LOCK_BUTTON (button), d);
+ d->lock_button = button;
+
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]