diff options
-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | data/icons/16x16/status/Makefile.am | 2 | ||||
-rw-r--r-- | data/icons/16x16/status/user-available.png (renamed from data/icons/16x16/status/user-online.png) | bin | 685 -> 685 bytes | |||
-rw-r--r-- | data/icons/22x22/status/Makefile.am | 2 | ||||
-rw-r--r-- | data/icons/22x22/status/user-available.png (renamed from data/icons/22x22/status/user-online.png) | bin | 967 -> 967 bytes | |||
-rw-r--r-- | data/icons/24x24/status/Makefile.am | 2 | ||||
-rw-r--r-- | data/icons/24x24/status/user-available.png (renamed from data/icons/24x24/status/user-online.png) | bin | 1075 -> 1075 bytes | |||
-rw-r--r-- | data/icons/32x32/status/Makefile.am | 2 | ||||
-rw-r--r-- | data/icons/32x32/status/user-available.png (renamed from data/icons/32x32/status/user-online.png) | bin | 1433 -> 1433 bytes | |||
-rw-r--r-- | data/icons/48x48/status/Makefile.am | 2 | ||||
-rw-r--r-- | data/icons/48x48/status/user-available.png (renamed from data/icons/48x48/status/user-online.png) | bin | 2211 -> 2211 bytes | |||
-rw-r--r-- | data/icons/scalable/status/Makefile.am | 2 | ||||
-rw-r--r-- | data/icons/scalable/status/user-available.svg (renamed from data/icons/scalable/status/user-online.svg) | 0 | ||||
-rw-r--r-- | src/gtk-dialog/ck-pk-helper.c | 98 | ||||
-rw-r--r-- | src/gtk-dialog/ck-pk-helper.h | 4 | ||||
-rw-r--r-- | src/status-service.c | 2 |
16 files changed, 55 insertions, 67 deletions
diff --git a/configure.ac b/configure.ac index 33923e8..ad743f1 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ AC_INIT(src/indicator-session.c) AC_PREREQ(2.53) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(indicator-session, 0.1.3) +AM_INIT_AUTOMAKE(indicator-session, 0.1.4) AM_MAINTAINER_MODE @@ -28,6 +28,7 @@ m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) GTK_REQUIRED_VERSION=2.12 INDICATOR_REQUIRED_VERSION=0.2.0 DBUSMENUGTK_REQUIRED_VERSION=0.1.1 +POLKIT_REQUIRED_VERSION=0.92 PKG_CHECK_MODULES(APPLET, gtk+-2.0 >= $GTK_REQUIRED_VERSION indicator >= $INDICATOR_REQUIRED_VERSION @@ -55,7 +56,8 @@ AC_SUBST(SESSIONERVICE_CFLAGS) AC_SUBST(SESSIONERVICE_LIBS) PKG_CHECK_MODULES(GTKLOGOUTHELPER, gtk+-2.0 >= $GTK_REQUIRED_VERSION - polkit-gnome) + polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION) + AC_SUBST(GTKLOGOUTHELPER_CFLAGS) AC_SUBST(GTKLOGOUTHELPER_LIBS) diff --git a/data/icons/16x16/status/Makefile.am b/data/icons/16x16/status/Makefile.am index 7b286f6..fa874bf 100644 --- a/data/icons/16x16/status/Makefile.am +++ b/data/icons/16x16/status/Makefile.am @@ -2,7 +2,7 @@ iconsdir = $(INDICATORICONSDIR)/hicolor/16x16/status icons_DATA = \ - user-online.png \ + user-available.png \ user-offline.png \ user-away.png \ user-busy.png \ diff --git a/data/icons/16x16/status/user-online.png b/data/icons/16x16/status/user-available.png Binary files differindex 5435e02..5435e02 100644 --- a/data/icons/16x16/status/user-online.png +++ b/data/icons/16x16/status/user-available.png diff --git a/data/icons/22x22/status/Makefile.am b/data/icons/22x22/status/Makefile.am index c0a7f76..0171b82 100644 --- a/data/icons/22x22/status/Makefile.am +++ b/data/icons/22x22/status/Makefile.am @@ -2,7 +2,7 @@ iconsdir = $(INDICATORICONSDIR)/hicolor/22x22/status icons_DATA = \ - user-online.png \ + user-available.png \ user-offline.png \ user-away.png \ user-busy.png \ diff --git a/data/icons/22x22/status/user-online.png b/data/icons/22x22/status/user-available.png Binary files differindex ec8c452..ec8c452 100644 --- a/data/icons/22x22/status/user-online.png +++ b/data/icons/22x22/status/user-available.png diff --git a/data/icons/24x24/status/Makefile.am b/data/icons/24x24/status/Makefile.am index e26596c..f92e8f1 100644 --- a/data/icons/24x24/status/Makefile.am +++ b/data/icons/24x24/status/Makefile.am @@ -2,7 +2,7 @@ iconsdir = $(INDICATORICONSDIR)/hicolor/24x24/status icons_DATA = \ - user-online.png \ + user-available.png \ user-offline.png \ user-away.png \ user-busy.png \ diff --git a/data/icons/24x24/status/user-online.png b/data/icons/24x24/status/user-available.png Binary files differindex 95f2534..95f2534 100644 --- a/data/icons/24x24/status/user-online.png +++ b/data/icons/24x24/status/user-available.png diff --git a/data/icons/32x32/status/Makefile.am b/data/icons/32x32/status/Makefile.am index e7967f4..92f55f4 100644 --- a/data/icons/32x32/status/Makefile.am +++ b/data/icons/32x32/status/Makefile.am @@ -2,7 +2,7 @@ iconsdir = $(INDICATORICONSDIR)/hicolor/32x32/status icons_DATA = \ - user-online.png \ + user-available.png \ user-offline.png \ user-away.png \ user-busy.png \ diff --git a/data/icons/32x32/status/user-online.png b/data/icons/32x32/status/user-available.png Binary files differindex 5d04e0a..5d04e0a 100644 --- a/data/icons/32x32/status/user-online.png +++ b/data/icons/32x32/status/user-available.png diff --git a/data/icons/48x48/status/Makefile.am b/data/icons/48x48/status/Makefile.am index a2ff495..a0f2d82 100644 --- a/data/icons/48x48/status/Makefile.am +++ b/data/icons/48x48/status/Makefile.am @@ -2,7 +2,7 @@ iconsdir = $(INDICATORICONSDIR)/hicolor/48x48/status icons_DATA = \ - user-online.png \ + user-available.png \ user-offline.png \ user-away.png \ user-busy.png \ diff --git a/data/icons/48x48/status/user-online.png b/data/icons/48x48/status/user-available.png Binary files differindex 5bcae55..5bcae55 100644 --- a/data/icons/48x48/status/user-online.png +++ b/data/icons/48x48/status/user-available.png diff --git a/data/icons/scalable/status/Makefile.am b/data/icons/scalable/status/Makefile.am index 2c70d33..479ef2c 100644 --- a/data/icons/scalable/status/Makefile.am +++ b/data/icons/scalable/status/Makefile.am @@ -2,7 +2,7 @@ iconsdir = $(INDICATORICONSDIR)/hicolor/scalable/status icons_DATA = \ - user-online.svg \ + user-available.svg \ user-offline.svg \ user-away.svg \ user-busy.svg \ diff --git a/data/icons/scalable/status/user-online.svg b/data/icons/scalable/status/user-available.svg index 8d4cc58..8d4cc58 100644 --- a/data/icons/scalable/status/user-online.svg +++ b/data/icons/scalable/status/user-available.svg diff --git a/src/gtk-dialog/ck-pk-helper.c b/src/gtk-dialog/ck-pk-helper.c index 466ccbc..dc7d900 100644 --- a/src/gtk-dialog/ck-pk-helper.c +++ b/src/gtk-dialog/ck-pk-helper.c @@ -24,7 +24,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>. #include <unistd.h> #include <glib.h> #include <dbus/dbus-glib.h> -#include <polkit-gnome/polkit-gnome.h> +#include <polkit/polkit.h> #include "logout-dialog.h" #include "ck-pk-helper.h" @@ -170,67 +170,53 @@ pk_require_auth (LogoutDialogAction action) { } } - PolKitResult polres; + PolkitAuthorizationResult *polres = NULL; + gboolean ret = FALSE; if (pk_can_do_action(pk_action, &polres)) { - if (polres == POLKIT_RESULT_YES) { - return FALSE; + if (polkit_authorization_result_get_is_challenge (polres)) { + ret = TRUE; } - return TRUE; + g_debug ("pk_require_auth(%s): authorized, is_challenge: %i", pk_action, ret); + } else { + g_debug ("pk_require_auth(%s): not authorized", pk_action); + } + if (polres) { + g_object_unref (polres); } - return FALSE; + return ret; } gboolean -pk_can_do_action (const gchar *action_id, PolKitResult * pol_result) +pk_can_do_action (const gchar *action_id, PolkitAuthorizationResult ** pol_result) { - PolKitGnomeContext *gnome_context; - PolKitAction *action; - PolKitCaller *caller; - DBusError dbus_error; - PolKitError *error; - PolKitResult result; - - gnome_context = polkit_gnome_context_get (NULL); - - if (gnome_context == NULL) { - return FALSE; - } - - if (gnome_context->pk_tracker == NULL) { - return FALSE; - } - - dbus_error_init (&dbus_error); - caller = polkit_tracker_get_caller_from_pid (gnome_context->pk_tracker, - getpid (), - &dbus_error); - dbus_error_free (&dbus_error); - - if (caller == NULL) { - return FALSE; - } - - action = polkit_action_new (); - if (!polkit_action_set_action_id (action, action_id)) { - polkit_action_unref (action); - polkit_caller_unref (caller); - return FALSE; - } - - result = POLKIT_RESULT_UNKNOWN; - error = NULL; - result = polkit_context_is_caller_authorized (gnome_context->pk_context, - action, caller, FALSE, - &error); - if (polkit_error_is_set (error)) { - polkit_error_free (error); - } - polkit_action_unref (action); - polkit_caller_unref (caller); - - if (pol_result != NULL) { - *pol_result = result; - } + PolkitAuthority *authority; + PolkitSubject *subject; + PolkitAuthorizationResult *result; + gboolean ret; + + authority = polkit_authority_get(); + if (!authority) { + g_warning ("Could not get PolicyKit authority instance"); + return FALSE; + } + subject = polkit_unix_process_new (getpid()); - return result != POLKIT_RESULT_NO && result != POLKIT_RESULT_UNKNOWN; + result = polkit_authority_check_authorization_sync (authority, subject, action_id, NULL, 0, NULL, NULL); + g_object_unref (authority); + + ret = FALSE; + if (result) { + ret = polkit_authorization_result_get_is_authorized (result) || + polkit_authorization_result_get_is_challenge (result); + g_debug ("pk_can_do_action(%s): %i", action_id, ret); + } else { + g_warning ("pk_can_do_action(%s): check_authorization returned NULL", action_id); + } + if (pol_result) { + *pol_result = result; + } else { + g_object_unref (result); + } + return ret; + } diff --git a/src/gtk-dialog/ck-pk-helper.h b/src/gtk-dialog/ck-pk-helper.h index 98bce56..501a8c8 100644 --- a/src/gtk-dialog/ck-pk-helper.h +++ b/src/gtk-dialog/ck-pk-helper.h @@ -24,9 +24,9 @@ with this program. If not, see <http://www.gnu.org/licenses/>. #ifndef __CK_PK_HELPER_H__ #define __CK_PK_HELPER_H__ 1 -#include <polkit-gnome/polkit-gnome.h> +#include <polkit/polkit.h> gboolean pk_require_auth (LogoutDialogAction action); -gboolean pk_can_do_action (const gchar *action_id, PolKitResult * pol_result); +gboolean pk_can_do_action (const gchar *action_id, PolkitAuthorizationResult ** pol_result); #endif /* __CK_PK_HELPER__ */ diff --git a/src/status-service.c b/src/status-service.c index 37ae7c4..d8b3631 100644 --- a/src/status-service.c +++ b/src/status-service.c @@ -63,7 +63,7 @@ static const gchar * status_strings [STATUS_PROVIDER_STATUS_LAST] = { }; static const gchar * status_icons[STATUS_PROVIDER_STATUS_LAST] = { - /* STATUS_PROVIDER_STATUS_ONLINE, */ "user-online", + /* STATUS_PROVIDER_STATUS_ONLINE, */ "user-available", /* STATUS_PROVIDER_STATUS_AWAY, */ "user-away", /* STATUS_PROVIDER_STATUS_DND, */ "user-busy", /* STATUS_PROVIDER_STATUS_INVISIBLE, */ "user-invisible", |