seahorse r2744 - in trunk: . gkr
- From: nnielsen svn gnome org
- To: svn-commits-list gnome org
- Subject: seahorse r2744 - in trunk: . gkr
- Date: Mon, 2 Feb 2009 02:58:44 +0000 (UTC)
Author: nnielsen
Date: Mon Feb 2 02:58:44 2009
New Revision: 2744
URL: http://svn.gnome.org/viewvc/seahorse?rev=2744&view=rev
Log:
Retrieve default key name and set default keyring flag on keyrings.
Modified:
trunk/ChangeLog
trunk/gkr/seahorse-gkr-keyring.c
trunk/gkr/seahorse-gkr-keyring.h
trunk/gkr/seahorse-gkr-source.c
Modified: trunk/gkr/seahorse-gkr-keyring.c
==============================================================================
--- trunk/gkr/seahorse-gkr-keyring.c (original)
+++ trunk/gkr/seahorse-gkr-keyring.c Mon Feb 2 02:58:44 2009
@@ -269,11 +269,13 @@
PROP_SOURCE_TAG,
PROP_SOURCE_LOCATION,
PROP_KEYRING_NAME,
- PROP_KEYRING_INFO
+ PROP_KEYRING_INFO,
+ PROP_IS_DEFAULT
};
struct _SeahorseGkrKeyringPrivate {
gchar *keyring_name;
+ gboolean is_default;
gpointer req_info;
GnomeKeyringInfo *keyring_info;
@@ -457,6 +459,9 @@
case PROP_KEYRING_INFO:
seahorse_gkr_keyring_set_info (self, g_value_get_boxed (value));
break;
+ case PROP_IS_DEFAULT:
+ seahorse_gkr_keyring_set_is_default (self, g_value_get_boolean (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
break;
@@ -482,6 +487,9 @@
case PROP_KEYRING_INFO:
g_value_set_boxed (value, seahorse_gkr_keyring_get_info (self));
break;
+ case PROP_IS_DEFAULT:
+ g_value_set_boolean (value, seahorse_gkr_keyring_get_is_default (self));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
break;
@@ -517,6 +525,10 @@
g_object_class_install_property (gobject_class, PROP_KEYRING_INFO,
g_param_spec_boxed ("keyring-info", "Gnome Keyring Info", "Info about keyring.",
boxed_type_keyring_info (), G_PARAM_READWRITE));
+
+ g_object_class_install_property (gobject_class, PROP_IS_DEFAULT,
+ g_param_spec_boolean ("is-default", "Is default", "Is the default keyring.",
+ FALSE, G_PARAM_READWRITE));
}
static void
@@ -570,3 +582,18 @@
g_object_notify (obj, "keyring-info");
g_object_thaw_notify (obj);
}
+
+gboolean
+seahorse_gkr_keyring_get_is_default (SeahorseGkrKeyring *self)
+{
+ g_return_val_if_fail (SEAHORSE_IS_GKR_KEYRING (self), FALSE);
+ return self->pv->is_default;
+}
+
+void
+seahorse_gkr_keyring_set_is_default (SeahorseGkrKeyring *self, gboolean is_default)
+{
+ g_return_if_fail (SEAHORSE_IS_GKR_KEYRING (self));
+ self->pv->is_default = is_default;
+ g_object_notify (G_OBJECT (self), "is-default");
+}
Modified: trunk/gkr/seahorse-gkr-keyring.h
==============================================================================
--- trunk/gkr/seahorse-gkr-keyring.h (original)
+++ trunk/gkr/seahorse-gkr-keyring.h Mon Feb 2 02:58:44 2009
@@ -59,4 +59,9 @@
void seahorse_gkr_keyring_set_info (SeahorseGkrKeyring *self,
GnomeKeyringInfo *info);
+gboolean seahorse_gkr_keyring_get_is_default (SeahorseGkrKeyring *self);
+
+void seahorse_gkr_keyring_set_is_default (SeahorseGkrKeyring *self,
+ gboolean is_default);
+
#endif /* __SEAHORSE_GKR_KEYRING_H__ */
Modified: trunk/gkr/seahorse-gkr-source.c
==============================================================================
--- trunk/gkr/seahorse-gkr-source.c (original)
+++ trunk/gkr/seahorse-gkr-source.c Mon Feb 2 02:58:44 2009
@@ -262,6 +262,54 @@
}
/* -----------------------------------------------------------------------------
+ * INTERNAL
+ */
+
+static void
+update_each_default_keyring (SeahorseObject *object, gpointer user_data)
+{
+ const gchar *default_name = user_data;
+ const gchar *keyring_name;
+ gboolean is_default;
+
+ keyring_name = seahorse_gkr_keyring_get_name (SEAHORSE_GKR_KEYRING (object));
+ g_return_if_fail (keyring_name);
+
+ /* Remember default keyring could be null in strange circumstances */
+ is_default = default_name && g_str_equal (keyring_name, default_name);
+ g_object_set (object, "is-default", is_default, NULL);
+}
+
+static void
+on_get_default_keyring (GnomeKeyringResult result, const gchar *default_name, gpointer user_data)
+{
+ SeahorseGkrSource *self = user_data;
+ SeahorseObjectPredicate pred;
+
+ g_return_if_fail (SEAHORSE_IS_GKR_SOURCE (self));
+
+ if (result != GNOME_KEYRING_RESULT_OK) {
+ if (result != GNOME_KEYRING_RESULT_CANCELLED)
+ g_warning ("couldn't get default keyring name: %s", gnome_keyring_result_to_message (result));
+ return;
+ }
+
+ seahorse_object_predicate_clear (&pred);
+ pred.source = SEAHORSE_SOURCE (self);
+ pred.type = SEAHORSE_TYPE_GKR_KEYRING;
+ seahorse_context_for_objects_full (NULL, &pred, update_each_default_keyring, (gpointer)default_name);
+}
+
+static void
+on_list_operation_done (SeahorseOperation *op, gpointer userdata)
+{
+ SeahorseGkrSource *self = userdata;
+ g_return_if_fail (SEAHORSE_IS_GKR_SOURCE (self));
+
+ gnome_keyring_get_default_keyring (on_get_default_keyring, g_object_ref (self), g_object_unref);
+}
+
+/* -----------------------------------------------------------------------------
* OBJECT
*/
@@ -295,13 +343,6 @@
}
-static SeahorseOperation*
-seahorse_gkr_source_load (SeahorseSource *src)
-{
- SeahorseGkrSource *self = SEAHORSE_GKR_SOURCE (src);
- return start_list_operation (self);
-}
-
static void
seahorse_gkr_source_class_init (SeahorseGkrSourceClass *klass)
{
@@ -323,6 +364,20 @@
seahorse_registry_register_type (NULL, SEAHORSE_TYPE_GKR_SOURCE, "source", "local", SEAHORSE_GKR_STR, NULL);
}
+static SeahorseOperation*
+seahorse_gkr_source_load (SeahorseSource *src)
+{
+ SeahorseGkrSource *self = SEAHORSE_GKR_SOURCE (src);
+ SeahorseOperation *op = start_list_operation (self);
+
+ g_return_val_if_fail (op, NULL);
+
+ /* Hook into the results of the above operation, and look for default */
+ seahorse_operation_watch (op, on_list_operation_done, src, NULL, NULL);
+
+ return op;
+}
+
static void
seahorse_source_iface (SeahorseSourceIface *iface)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]