static GObject* seahorse_gpgme_subkey_constructor (GType type, guint n_props, GObjectConstructParam *props) { GObject *obj = G_OBJECT_CLASS (seahorse_gpgme_subkey_parent_class)->constructor (type, n_props, props); SeahorseGpgmeSubkey *self = NULL; if (obj) { self = SEAHORSE_GPGME_SUBKEY (obj); g_return_val_if_fail (self->pv->pubkey, NULL); } return obj; }
static void seahorse_gpgme_subkey_finalize (GObject *gobject) { SeahorseGpgmeSubkey *self = SEAHORSE_GPGME_SUBKEY (gobject); /* Unref the key */ if (self->pv->pubkey) gpgme_key_unref (self->pv->pubkey); self->pv->pubkey = NULL; self->pv->subkey = NULL; G_OBJECT_CLASS (seahorse_gpgme_subkey_parent_class)->finalize (gobject); }
static void seahorse_gpgme_subkey_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { SeahorseGpgmeSubkey *self = SEAHORSE_GPGME_SUBKEY (object); switch (prop_id) { case PROP_PUBKEY: g_value_set_boxed (value, seahorse_gpgme_subkey_get_pubkey (self)); break; case PROP_SUBKEY: g_value_set_pointer (value, seahorse_gpgme_subkey_get_subkey (self)); break; } }
G_MODULE_EXPORT void on_gpgme_expire_ok_clicked (GtkButton *button, gpointer user_data) { SeahorseWidget *swidget = SEAHORSE_WIDGET (user_data); GtkWidget *widget; SeahorseGpgmeSubkey *subkey; gpgme_error_t err; time_t expiry = 0; struct tm when; subkey = SEAHORSE_GPGME_SUBKEY (g_object_get_data (G_OBJECT (swidget), "subkey")); widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "expire")); if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) { memset (&when, 0, sizeof (when)); widget = GTK_WIDGET (seahorse_widget_get_widget (swidget, "calendar")); gtk_calendar_get_date (GTK_CALENDAR (widget), (guint*)&(when.tm_year), (guint*)&(when.tm_mon), (guint*)&(when.tm_mday)); when.tm_year -= 1900; expiry = mktime (&when); if (expiry <= time (NULL)) { seahorse_util_show_error (widget, _("Invalid expiry date"), _("The expiry date must be in the future")); return; } } widget = seahorse_widget_get_widget (swidget, "all-controls"); gtk_widget_set_sensitive (widget, FALSE); g_object_ref (swidget); g_object_ref (subkey); if (expiry != (time_t)seahorse_pgp_subkey_get_expires (SEAHORSE_PGP_SUBKEY (subkey))) { err = seahorse_gpgme_key_op_set_expires (subkey, expiry); if (!GPG_IS_OK (err)) seahorse_gpgme_handle_error (err, _("Couldn't change expiry date")); } g_object_unref (subkey); g_object_unref (swidget); seahorse_widget_destroy (swidget); }
static void seahorse_gpgme_subkey_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { SeahorseGpgmeSubkey *self = SEAHORSE_GPGME_SUBKEY (object); switch (prop_id) { case PROP_PUBKEY: g_return_if_fail (!self->pv->pubkey); self->pv->pubkey = g_value_get_boxed (value); if (self->pv->pubkey) gpgme_key_ref (self->pv->pubkey); break; case PROP_SUBKEY: seahorse_gpgme_subkey_set_subkey (self, g_value_get_pointer (value)); break; } }