[krb5-auth-dialog] Update the main window's ticket list when the ccache changes
- From: Guido GÃnther <guidog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [krb5-auth-dialog] Update the main window's ticket list when the ccache changes
- Date: Sun, 4 Sep 2011 18:15:12 +0000 (UTC)
commit 53dfb8407380dd82d32f80c5deed39da1f982cfa
Author: Guido GÃnther <agx sigxcpu org>
Date: Sun Sep 4 18:47:32 2011 +0200
Update the main window's ticket list when the ccache changes
Introduce a krb-ccache-changed signal for that.
src/ka-applet-priv.h | 4 +++-
src/ka-applet.c | 12 +++++++++---
src/ka-dbus.c | 2 +-
src/ka-dialog.c | 7 ++++---
src/ka-main-window.c | 14 +++++++++++++-
src/ka-main-window.h | 4 +++-
6 files changed, 33 insertions(+), 10 deletions(-)
---
diff --git a/src/ka-applet-priv.h b/src/ka-applet-priv.h
index bd55996..d571230 100644
--- a/src/ka-applet-priv.h
+++ b/src/ka-applet-priv.h
@@ -34,11 +34,13 @@
G_BEGIN_DECLS
#define KA_NAME _("Kerberos Authentication")
+
/* signals emitted by KaApplet */
- typedef enum {
+typedef enum {
KA_SIGNAL_ACQUIRED_TGT, /* New TGT acquired */
KA_SIGNAL_RENEWED_TGT, /* TGT got renewed */
KA_SIGNAL_EXPIRED_TGT, /* TGT expired or ticket cache got destroyed */
+ KA_CCACHE_CHANGED, /* The credential cache changed */
KA_SIGNAL_COUNT
} KaAppletSignalNumber;
diff --git a/src/ka-applet.c b/src/ka-applet.c
index b6216d3..89148a3 100644
--- a/src/ka-applet.c
+++ b/src/ka-applet.c
@@ -56,6 +56,7 @@ const gchar *ka_signal_names[KA_SIGNAL_COUNT] = {
"krb-tgt-acquired",
"krb-tgt-renewed",
"krb-tgt-expired",
+ "krb-ccache-changed",
};
@@ -318,8 +319,7 @@ ka_applet_class_init (KaAppletClass *klass)
G_PARAM_CONSTRUCT | G_PARAM_READWRITE);
g_object_class_install_property (object_class,
KA_PROP_TGT_RENEWABLE, pspec);
-
- for (i = 0; i < KA_SIGNAL_COUNT; i++) {
+ for (i=0; i < KA_SIGNAL_COUNT-1; i++) {
guint signalId;
signalId = g_signal_new (ka_signal_names[i], G_OBJECT_CLASS_TYPE (klass),
@@ -329,6 +329,12 @@ ka_applet_class_init (KaAppletClass *klass)
G_TYPE_STRING, G_TYPE_UINT);
klass->signals[i] = signalId;
}
+ klass->signals[KA_CCACHE_CHANGED] = g_signal_new (
+ ka_signal_names[KA_CCACHE_CHANGED],
+ G_OBJECT_CLASS_TYPE (klass),
+ G_SIGNAL_RUN_LAST, 0, NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
}
@@ -1028,7 +1034,7 @@ ka_applet_create ()
applet->priv->gconf = ka_gconf_init (applet);
g_return_val_if_fail (applet->priv->gconf != NULL, NULL);
- ka_main_window_create (applet->priv->uixml);
+ ka_main_window_create (applet, applet->priv->uixml);
applet->priv->loader = ka_plugin_loader_create (applet);
g_return_val_if_fail (applet->priv->loader != NULL, NULL);
diff --git a/src/ka-dbus.c b/src/ka-dbus.c
index a79f85f..7d5831e 100644
--- a/src/ka-dbus.c
+++ b/src/ka-dbus.c
@@ -156,7 +156,7 @@ ka_dbus_connect_signals(KaApplet *applet)
{
int i;
- for (i = 0; i < KA_SIGNAL_COUNT; i++) {
+ for (i = 0; i < KA_SIGNAL_COUNT-1; i++) {
g_signal_connect (applet, ka_signal_names[i],
G_CALLBACK (ka_dbus_signal_cb),
(gpointer)ka_signal_names[i]);
diff --git a/src/ka-dialog.c b/src/ka-dialog.c
index 72c346b..3cadc49 100644
--- a/src/ka-dialog.c
+++ b/src/ka-dialog.c
@@ -677,9 +677,9 @@ ka_unparse_name ()
static void
-ccache_changed_cb (GFileMonitor * monitor G_GNUC_UNUSED,
- GFile * file,
- GFile * other_file G_GNUC_UNUSED,
+ccache_changed_cb (GFileMonitor *monitor G_GNUC_UNUSED,
+ GFile *file,
+ GFile *other_file G_GNUC_UNUSED,
GFileMonitorEvent event_type, gpointer data)
{
KaApplet *applet = KA_APPLET (data);
@@ -691,6 +691,7 @@ ccache_changed_cb (GFileMonitor * monitor G_GNUC_UNUSED,
case G_FILE_MONITOR_EVENT_CHANGED:
KA_DEBUG ("%s changed", ccache_name);
credentials_expiring ((gpointer) applet);
+ g_signal_emit_by_name(applet, "krb-ccache-changed");
break;
default:
KA_DEBUG ("%s unhandled event: %d", ccache_name, event_type);
diff --git a/src/ka-main-window.c b/src/ka-main-window.c
index ee259c8..a27f0ef 100644
--- a/src/ka-main-window.c
+++ b/src/ka-main-window.c
@@ -31,8 +31,16 @@
static GtkListStore *tickets;
static GtkWidget *main_window;
+static void
+ccache_changed_cb (KaApplet* applet G_GNUC_UNUSED,
+ gpointer user_data G_GNUC_UNUSED)
+{
+ KA_DEBUG("Refreshing ticket list");
+ ka_get_service_tickets (tickets);
+}
+
GtkWidget *
-ka_main_window_create (GtkBuilder *xml)
+ka_main_window_create (KaApplet *applet, GtkBuilder *xml)
{
GtkCellRenderer *text_renderer, *toggle_renderer;
GtkTreeView *tickets_view;
@@ -90,6 +98,10 @@ ka_main_window_create (GtkBuilder *xml)
"active",
RENEWABLE_COLUMN,
NULL);
+
+ g_signal_connect (applet, "krb-ccache-changed",
+ G_CALLBACK(ccache_changed_cb),
+ NULL);
return main_window;
}
diff --git a/src/ka-main-window.h b/src/ka-main-window.h
index 5f8cdd7..6ae2262 100644
--- a/src/ka-main-window.h
+++ b/src/ka-main-window.h
@@ -21,6 +21,8 @@
#ifndef KA_TICKETS_H
#define KA_TICKETS_H
+#include "ka-applet.h"
+
enum ticket_columns {
PRINCIPAL_COLUMN,
START_TIME_COLUMN,
@@ -32,7 +34,7 @@ enum ticket_columns {
};
-GtkWidget *ka_main_window_create (GtkBuilder *xml);
+GtkWidget *ka_main_window_create (KaApplet *applet, GtkBuilder *xml);
void ka_main_window_show (void);
void ka_main_window_hide (void);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]