static void add_key (SeahorseHKPSource *ssrc, SeahorsePgpKey *key) { SeahorseObject *prev; GQuark keyid; keyid = seahorse_pgp_key_canonize_id (seahorse_pgp_key_get_keyid (key)); prev = seahorse_context_get_object (SCTX_APP (), SEAHORSE_SOURCE (ssrc), keyid); if (prev != NULL) { g_return_if_fail (SEAHORSE_IS_PGP_KEY (prev)); seahorse_pgp_key_set_uids (SEAHORSE_PGP_KEY (prev), seahorse_pgp_key_get_uids (key)); seahorse_pgp_key_set_subkeys (SEAHORSE_PGP_KEY (prev), seahorse_pgp_key_get_subkeys (key)); return; } /* Add to context */ seahorse_object_set_source (SEAHORSE_OBJECT (key), SEAHORSE_SOURCE (ssrc)); seahorse_context_add_object (SCTX_APP (), SEAHORSE_OBJECT (key)); }
/** * seahorse_object_set_property: * @obj: Object to set the property in * @prop_id: the property to set * @value: the value to set * @pspec: To be used for warnings. #GParamSpec * * Sets a property in this object * */ static void seahorse_object_set_property (GObject *obj, guint prop_id, const GValue *value, GParamSpec *pspec) { SeahorseObject *self = SEAHORSE_OBJECT (obj); SeahorseLocation loc; SeahorseUsage usage; guint flags; GQuark quark; switch (prop_id) { case PROP_CONTEXT: if (self->pv->context) g_object_remove_weak_pointer (G_OBJECT (self->pv->context), (gpointer*)&self->pv->context); self->pv->context = SEAHORSE_CONTEXT (g_value_get_object (value)); if (self->pv->context != NULL) g_object_add_weak_pointer (G_OBJECT (self->pv->context), (gpointer*)&self->pv->context); g_object_notify (G_OBJECT (self), "context"); break; case PROP_SOURCE: seahorse_object_set_source (self, SEAHORSE_SOURCE (g_value_get_object (value))); break; case PROP_PREFERRED: seahorse_object_set_preferred (self, SEAHORSE_OBJECT (g_value_get_object (value))); break; case PROP_PARENT: seahorse_object_set_parent (self, SEAHORSE_OBJECT (g_value_get_object (value))); break; case PROP_ID: quark = g_value_get_uint (value); if (quark != self->pv->id) { self->pv->id = quark; g_object_freeze_notify (obj); g_object_notify (obj, "id"); recalculate_id (self); g_object_thaw_notify (obj); } break; case PROP_TAG: quark = g_value_get_uint (value); if (quark != self->pv->tag) { self->pv->tag = quark; self->pv->tag_explicit = TRUE; g_object_notify (obj, "tag"); } break; case PROP_LABEL: if (set_string_storage (g_value_get_string (value), &self->pv->label)) { g_object_freeze_notify (obj); g_object_notify (obj, "label"); recalculate_label (self); g_object_thaw_notify (obj); } break; case PROP_NICKNAME: if (set_string_storage (g_value_get_string (value), &self->pv->nickname)) { self->pv->nickname_explicit = TRUE; g_object_notify (obj, "nickname"); } break; case PROP_MARKUP: if (set_string_storage (g_value_get_string (value), &self->pv->markup)) { self->pv->markup_explicit = TRUE; g_object_notify (obj, "markup"); } break; case PROP_DESCRIPTION: if (set_string_storage (g_value_get_string (value), &self->pv->description)) { self->pv->description_explicit = TRUE; g_object_notify (obj, "description"); } break; case PROP_ICON: if (set_string_storage (g_value_get_string (value), &self->pv->icon)) g_object_notify (obj, "icon"); break; case PROP_IDENTIFIER: if (set_string_storage (g_value_get_string (value), &self->pv->identifier)) { self->pv->identifier_explicit = TRUE; g_object_notify (obj, "identifier"); } break; case PROP_LOCATION: loc = g_value_get_enum (value); if (loc != self->pv->location) { self->pv->location = loc; g_object_notify (obj, "location"); } break; case PROP_USAGE: usage = g_value_get_enum (value); if (usage != self->pv->usage) { self->pv->usage = usage; g_object_freeze_notify (obj); g_object_notify (obj, "usage"); recalculate_usage (self); g_object_thaw_notify (obj); } break; case PROP_FLAGS: flags = g_value_get_uint (value); flags &= ~SEAHORSE_FLAG_DELETABLE; if (flags != self->pv->flags) { self->pv->flags = flags; g_object_notify (obj, "flags"); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec); break; } }