aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Korn <korn@ubuntu>2009-09-02 16:17:44 +0200
committerChristoph Korn <korn@ubuntu>2009-09-02 16:17:44 +0200
commit1f0874253406566587d4e42a9ee2f4617a5c66d9 (patch)
treecd8a07328b4a7fcdf836e6596c311a0640e2cf2d
parent41f1b3206ab13b008aed6670dc42636049c9590d (diff)
downloadayatana-indicator-session-1f0874253406566587d4e42a9ee2f4617a5c66d9.tar.gz
ayatana-indicator-session-1f0874253406566587d4e42a9ee2f4617a5c66d9.tar.bz2
ayatana-indicator-session-1f0874253406566587d4e42a9ee2f4617a5c66d9.zip
These patches introduce a gconf key whether the logout/restart/shutdown confirmations
should be shown or not. Also the menu items should be suffixed by '...' accordingly. However this only works after a restart. Bugs which get fixed are: https://bugs.launchpad.net/indicator-session/+bug/422025 https://bugs.launchpad.net/ubuntu/+source/indicator-session/+bug/421693 https://bugs.launchpad.net/ubuntu/+source/indicator-session/+bug/419472
-rw-r--r--configure.ac13
-rw-r--r--data/Makefile.am32
-rw-r--r--src/Makefile.am6
-rw-r--r--src/gtk-dialog/Makefile.am6
-rw-r--r--src/gtk-dialog/gtk-logout-helper.c4
-rw-r--r--src/session-service.c20
6 files changed, 70 insertions, 11 deletions
diff --git a/configure.ac b/configure.ac
index 28b2c8b..5c5fbe1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8,6 +8,8 @@ AM_INIT_AUTOMAKE(indicator-session, 0.1)
AM_MAINTAINER_MODE
+IT_PROG_INTLTOOL([0.35.0])
+
AC_ISC_POSIX
AC_PROG_CC
AM_PROG_CC_C_O
@@ -56,6 +58,16 @@ PKG_CHECK_MODULES(GTKLOGOUTHELPER, gtk+-2.0 >= $GTK_REQUIRED_VERSION
AC_SUBST(GTKLOGOUTHELPER_CFLAGS)
AC_SUBST(GTKLOGOUTHELPER_LIBS)
+AC_PATH_PROG(GCONFTOOL, gconftool-2)
+dnl Specify the gconf configuration source,
+dnl default to xml::$(sysconfdir)/gconf/gconf.xml.defaults
+
+AM_GCONF_SOURCE_2
+
+PKG_CHECK_MODULES(GCONF, gconf-2.0 >= 2.0)
+AC_SUBST(GCONF_CFLAGS)
+AC_SUBST(GCONF_LIBS)
+
###########################
# Check to see if we're local
###########################
@@ -115,6 +127,7 @@ data/icons/48x48/status/Makefile
data/icons/scalable/Makefile
data/icons/scalable/status/Makefile
data/icons/scalable/actions/Makefile
+po/Makefile.in
])
###########################
diff --git a/data/Makefile.am b/data/Makefile.am
index 434e7d6..9ba0d97 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -9,9 +9,37 @@ dbus_services_DATA = $(service_in_files:.service.in=.service)
%.service: %.service.in
sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@
+##############################
+# GConf Schema
+##############################
+
+schemadir = \
+ $(GCONF_SCHEMA_FILE_DIR)
+
+schema_in_files = \
+ indicator-session.schemas.in
+
+schema_DATA = \
+ $(schema_in_files:.schemas.in=.schemas)
+
+@INTLTOOL_SCHEMAS_RULE@
+
+
#$(dbus_services_DATA): $(service_in_files) Makefile
# sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@
-EXTRA_DIST = $(service_in_files)
+EXTRA_DIST = \
+ $(service_in_files) \
+ $(schema_in_files)
+
+CLEANFILES = \
+ $(dbus_services_DATA) \
+ $(schema_DATA)
-CLEANFILES = $(dbus_services_DATA)
+if GCONF_SCHEMAS_INSTALL
+install-data-local:
+ GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
+ gconftool-2 --makefile-install-rule $(schema_DATA)
+else
+install-data-local:
+endif
diff --git a/src/Makefile.am b/src/Makefile.am
index 599b70a..e2f0008 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -84,9 +84,9 @@ indicator_users_service_LDADD = $(USERSSERVICE_LIBS)
# Session Stuff
#################
-indicator_session_service_SOURCES = session-service.c
-indicator_session_service_CFLAGS = $(SESSIONSERVICE_CFLAGS) -DLIBEXECDIR=\"$(libexecdir)\" -Wall -Werror
-indicator_session_service_LDADD = $(SESSIONSERVICE_LIBS)
+indicator_session_service_SOURCES = session-service.c gtk-dialog/gconf-helper.c
+indicator_session_service_CFLAGS = $(SESSIONSERVICE_CFLAGS) $(GCONF_CFLAGS) -DLIBEXECDIR=\"$(libexecdir)\" -Wall -Werror
+indicator_session_service_LDADD = $(SESSIONSERVICE_LIBS) $(GCONF_LIBS)
###############
# Other Stuff
diff --git a/src/gtk-dialog/Makefile.am b/src/gtk-dialog/Makefile.am
index 9aa0097..90a6209 100644
--- a/src/gtk-dialog/Makefile.am
+++ b/src/gtk-dialog/Makefile.am
@@ -5,9 +5,11 @@ gtk_logout_helper_SOURCES = \
gtk-logout-helper.c \
ck-pk-helper.c \
ck-pk-helper.h \
+ gconf-helper.c \
+ gconf-helper.h \
logout-dialog.c \
logout-dialog.h
-gtk_logout_helper_CFLAGS = $(GTKLOGOUTHELPER_CFLAGS) -Wall -Werror
-gtk_logout_helper_LDADD = $(GTKLOGOUTHELPER_LIBS)
+gtk_logout_helper_CFLAGS = $(GTKLOGOUTHELPER_CFLAGS) $(GCONF_CFLAGS) -Wall -Werror
+gtk_logout_helper_LDADD = $(GTKLOGOUTHELPER_LIBS) $(GCONF_LIBS)
diff --git a/src/gtk-dialog/gtk-logout-helper.c b/src/gtk-dialog/gtk-logout-helper.c
index 5d87148..13991ca 100644
--- a/src/gtk-dialog/gtk-logout-helper.c
+++ b/src/gtk-dialog/gtk-logout-helper.c
@@ -6,6 +6,7 @@ Copyright 2009 Canonical Ltd.
Authors:
Ted Gould <ted@canonical.com>
+ Christoph Korn <c_korn@gmx.de>
This program is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License version 3, as published
@@ -26,6 +27,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
#include <dbus/dbus-glib.h>
#include "logout-dialog.h"
#include "ck-pk-helper.h"
+#include "gconf-helper.h"
static void
session_action (LogoutDialogAction action)
@@ -132,7 +134,7 @@ main (int argc, char * argv[])
}
GtkWidget * dialog = NULL;
- if (!pk_require_auth(type)) {
+ if (!pk_require_auth(type) && !supress_confirmations()) {
dialog = logout_dialog_new(type);
}
diff --git a/src/session-service.c b/src/session-service.c
index ad160e9..0e89fed 100644
--- a/src/session-service.c
+++ b/src/session-service.c
@@ -31,6 +31,8 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
#include "dbus-shared-names.h"
+#include "gtk-dialog/gconf-helper.h"
+
#define DKP_ADDRESS "org.freedesktop.DeviceKit.Power"
#define DKP_OBJECT "/org/freedesktop/DeviceKit/Power"
#define DKP_INTERFACE "org.freedesktop.DeviceKit.Power"
@@ -223,7 +225,11 @@ create_items (DbusmenuMenuitem * root) {
DbusmenuMenuitem * mi = NULL;
mi = dbusmenu_menuitem_new();
- dbusmenu_menuitem_property_set(mi, "label", _("Log Out"));
+ if (supress_confirmations()) {
+ dbusmenu_menuitem_property_set(mi, "label", _("Log Out"));
+ } else {
+ dbusmenu_menuitem_property_set(mi, "label", _("Log Out ..."));
+ }
dbusmenu_menuitem_child_append(root, mi);
g_signal_connect(G_OBJECT(mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(show_dialog), "logout");
@@ -240,12 +246,20 @@ create_items (DbusmenuMenuitem * root) {
g_signal_connect(G_OBJECT(hibernate_mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(sleep), "Hibernate");
mi = dbusmenu_menuitem_new();
- dbusmenu_menuitem_property_set(mi, "label", _("Restart"));
+ if (supress_confirmations()) {
+ dbusmenu_menuitem_property_set(mi, "label", _("Restart"));
+ } else {
+ dbusmenu_menuitem_property_set(mi, "label", _("Restart ..."));
+ }
dbusmenu_menuitem_child_append(root, mi);
g_signal_connect(G_OBJECT(mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(show_dialog), "restart");
mi = dbusmenu_menuitem_new();
- dbusmenu_menuitem_property_set(mi, "label", _("Shutdown"));
+ if (supress_confirmations()) {
+ dbusmenu_menuitem_property_set(mi, "label", _("Shutdown"));
+ } else {
+ dbusmenu_menuitem_property_set(mi, "label", _("Shutdown ..."));
+ }
dbusmenu_menuitem_child_append(root, mi);
g_signal_connect(G_OBJECT(mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(show_dialog), "shutdown");