summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Ivascu <ivascu.gabriel59@gmail.com>2017-05-24 01:29:19 +0300
committerMichael Catanzaro <mcatanzaro@igalia.com>2017-08-06 09:27:30 -0500
commit4e37cb12e172b7e8b4b911806735e891569bae7f (patch)
treee92d856a3dc9e2db4fd16b599774717cc7fd2662
parenta3048548b374cc2ecf553301584fcd4af0c34280 (diff)
downloadepiphany-4e37cb12e172b7e8b4b911806735e891569bae7f.tar.gz
passwords-dialog: Make the password manager an object property
-rw-r--r--src/passwords-dialog.c69
1 files changed, 61 insertions, 8 deletions
diff --git a/src/passwords-dialog.c b/src/passwords-dialog.c
index 3023dc2f6..ad5fb73dc 100644
--- a/src/passwords-dialog.c
+++ b/src/passwords-dialog.c
@@ -62,11 +62,57 @@ struct _EphyPasswordsDialog {
G_DEFINE_TYPE (EphyPasswordsDialog, ephy_passwords_dialog, GTK_TYPE_DIALOG)
+enum {
+ PROP_0,
+ PROP_PASSWORD_MANAGER,
+ LAST_PROP
+};
+
+static GParamSpec *obj_properties[LAST_PROP];
+
+static void
+ephy_passwords_dialog_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ EphyPasswordsDialog *dialog = EPHY_PASSWORDS_DIALOG (object);
+
+ switch (prop_id) {
+ case PROP_PASSWORD_MANAGER:
+ g_clear_object (&dialog->manager);
+ dialog->manager = g_object_ref (g_value_get_object (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+ephy_passwords_dialog_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ EphyPasswordsDialog *dialog = EPHY_PASSWORDS_DIALOG (object);
+
+ switch (prop_id) {
+ case PROP_PASSWORD_MANAGER:
+ g_value_set_object (value, dialog->manager);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ }
+}
+
static void
ephy_passwords_dialog_dispose (GObject *object)
{
EphyPasswordsDialog *dialog = EPHY_PASSWORDS_DIALOG (object);
+ g_clear_object (&dialog->manager);
+
g_free (dialog->search_text);
dialog->search_text = NULL;
@@ -313,8 +359,19 @@ ephy_passwords_dialog_class_init (EphyPasswordsDialogClass *klass)
GObjectClass *object_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+ object_class->set_property = ephy_passwords_dialog_set_property;
+ object_class->get_property = ephy_passwords_dialog_get_property;
object_class->dispose = ephy_passwords_dialog_dispose;
+ obj_properties[PROP_PASSWORD_MANAGER] =
+ g_param_spec_object ("password-manager",
+ "Password manager",
+ "Password Manager",
+ EPHY_TYPE_PASSWORD_MANAGER,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
+
+ g_object_class_install_properties (object_class, LAST_PROP, obj_properties);
+
gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/epiphany/gtk/passwords-dialog.ui");
@@ -462,12 +519,8 @@ ephy_passwords_dialog_init (EphyPasswordsDialog *dialog)
EphyPasswordsDialog *
ephy_passwords_dialog_new (EphyPasswordManager *manager)
{
- EphyPasswordsDialog *dialog;
-
- dialog = EPHY_PASSWORDS_DIALOG (g_object_new (EPHY_TYPE_PASSWORDS_DIALOG,
- "use-header-bar", TRUE,
- NULL));
- dialog->manager = manager;
-
- return dialog;
+ return EPHY_PASSWORDS_DIALOG (g_object_new (EPHY_TYPE_PASSWORDS_DIALOG,
+ "password-manager", manager,
+ "use-header-bar", TRUE,
+ NULL));
}