diff options
Diffstat (limited to 'addressbook/gui')
-rw-r--r-- | addressbook/gui/contact-editor/e-contact-editor-fullname.c | 266 |
1 files changed, 124 insertions, 142 deletions
diff --git a/addressbook/gui/contact-editor/e-contact-editor-fullname.c b/addressbook/gui/contact-editor/e-contact-editor-fullname.c index 4f1df719ca..2f752e1229 100644 --- a/addressbook/gui/contact-editor/e-contact-editor-fullname.c +++ b/addressbook/gui/contact-editor/e-contact-editor-fullname.c @@ -28,17 +28,9 @@ #include "e-contact-editor-fullname.h" -static void e_contact_editor_fullname_init (EContactEditorFullname *card); -static void e_contact_editor_fullname_class_init (EContactEditorFullnameClass *klass); -static void e_contact_editor_fullname_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); -static void e_contact_editor_fullname_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); -static void e_contact_editor_fullname_dispose (GObject *object); - static void fill_in_info(EContactEditorFullname *editor); static void extract_info(EContactEditorFullname *editor); -static GtkDialogClass *parent_class = NULL; - /* The arguments we take */ enum { PROP_0, @@ -46,55 +38,145 @@ enum { PROP_EDITABLE }; -GType -e_contact_editor_fullname_get_type (void) +G_DEFINE_TYPE ( + EContactEditorFullname, + e_contact_editor_fullname, + GTK_TYPE_DIALOG) + +static void +e_contact_editor_fullname_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) { - static GType contact_editor_fullname_type = 0; - - if (!contact_editor_fullname_type) { - static const GTypeInfo contact_editor_fullname_info = { - sizeof (EContactEditorFullnameClass), - NULL, /* base_init */ - NULL, /* base_finalize */ - (GClassInitFunc) e_contact_editor_fullname_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (EContactEditorFullname), - 0, /* n_preallocs */ - (GInstanceInitFunc) e_contact_editor_fullname_init, - }; + EContactEditorFullname *e_contact_editor_fullname; + + e_contact_editor_fullname = E_CONTACT_EDITOR_FULLNAME (object); + + switch (property_id) { + case PROP_NAME: + e_contact_name_free(e_contact_editor_fullname->name); - contact_editor_fullname_type = g_type_register_static (GTK_TYPE_DIALOG, "EContactEditorFullname", &contact_editor_fullname_info, 0); + if (g_value_get_pointer (value) != NULL) { + e_contact_editor_fullname->name = e_contact_name_copy(g_value_get_pointer (value)); + fill_in_info(e_contact_editor_fullname); + } + else { + e_contact_editor_fullname->name = NULL; + } + break; + case PROP_EDITABLE: { + gint i; + const gchar *widget_names[] = { + "comboentry-title", + "comboentry-suffix", + "entry-first", + "entry-middle", + "entry-last", + "label-title", + "label-suffix", + "label-first", + "label-middle", + "label-last", + NULL + }; + e_contact_editor_fullname->editable = g_value_get_boolean (value) ? TRUE : FALSE; + for (i = 0; widget_names[i] != NULL; i++) { + GtkWidget *w = e_builder_get_widget ( + e_contact_editor_fullname->builder, + widget_names[i]); + if (GTK_IS_ENTRY (w)) { + gtk_editable_set_editable (GTK_EDITABLE (w), + e_contact_editor_fullname->editable); + } + else if (GTK_IS_COMBO_BOX_ENTRY (w)) { + gtk_editable_set_editable (GTK_EDITABLE (gtk_bin_get_child (GTK_BIN (w))), + e_contact_editor_fullname->editable); + gtk_widget_set_sensitive (w, e_contact_editor_fullname->editable); + } + else if (GTK_IS_LABEL (w)) { + gtk_widget_set_sensitive (w, e_contact_editor_fullname->editable); + } + } + break; } + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void +e_contact_editor_fullname_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) +{ + EContactEditorFullname *e_contact_editor_fullname; - return contact_editor_fullname_type; + e_contact_editor_fullname = E_CONTACT_EDITOR_FULLNAME (object); + + switch (property_id) { + case PROP_NAME: + extract_info(e_contact_editor_fullname); + g_value_set_pointer (value, e_contact_name_copy(e_contact_editor_fullname->name)); + break; + case PROP_EDITABLE: + g_value_set_boolean (value, e_contact_editor_fullname->editable ? TRUE : FALSE); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } } static void -e_contact_editor_fullname_class_init (EContactEditorFullnameClass *klass) +e_contact_editor_fullname_dispose (GObject *object) { - GObjectClass *object_class; + EContactEditorFullname *e_contact_editor_fullname = E_CONTACT_EDITOR_FULLNAME(object); + + if (e_contact_editor_fullname->builder) { + g_object_unref(e_contact_editor_fullname->builder); + e_contact_editor_fullname->builder = NULL; + } - object_class = G_OBJECT_CLASS (klass); + if (e_contact_editor_fullname->name) { + e_contact_name_free(e_contact_editor_fullname->name); + e_contact_editor_fullname->name = NULL; + } - parent_class = g_type_class_ref (GTK_TYPE_DIALOG); + /* Chain up to parent's dispose() method. */ + G_OBJECT_CLASS (e_contact_editor_fullname_parent_class)->dispose (object); +} +static void +e_contact_editor_fullname_class_init (EContactEditorFullnameClass *class) +{ + GObjectClass *object_class; + + object_class = G_OBJECT_CLASS (class); object_class->set_property = e_contact_editor_fullname_set_property; object_class->get_property = e_contact_editor_fullname_get_property; object_class->dispose = e_contact_editor_fullname_dispose; - g_object_class_install_property (object_class, PROP_NAME, - g_param_spec_pointer ("name", - "Name", - NULL, - G_PARAM_READWRITE)); - - g_object_class_install_property (object_class, PROP_EDITABLE, - g_param_spec_boolean ("editable", - "Editable", - NULL, - FALSE, - G_PARAM_READWRITE)); + g_object_class_install_property ( + object_class, + PROP_NAME, + g_param_spec_pointer ( + "name", + "Name", + NULL, + G_PARAM_READWRITE)); + + g_object_class_install_property ( + object_class, + PROP_EDITABLE, + g_param_spec_boolean ( + "editable", + "Editable", + NULL, + FALSE, + G_PARAM_READWRITE)); } static void @@ -151,25 +233,6 @@ e_contact_editor_fullname_init (EContactEditorFullname *e_contact_editor_fullnam gtk_combo_box_entry_set_text_column (GTK_COMBO_BOX_ENTRY (widget), 0); } -static void -e_contact_editor_fullname_dispose (GObject *object) -{ - EContactEditorFullname *e_contact_editor_fullname = E_CONTACT_EDITOR_FULLNAME(object); - - if (e_contact_editor_fullname->builder) { - g_object_unref(e_contact_editor_fullname->builder); - e_contact_editor_fullname->builder = NULL; - } - - if (e_contact_editor_fullname->name) { - e_contact_name_free(e_contact_editor_fullname->name); - e_contact_editor_fullname->name = NULL; - } - - if (G_OBJECT_CLASS (parent_class)->dispose) - (* G_OBJECT_CLASS (parent_class)->dispose) (object); -} - GtkWidget* e_contact_editor_fullname_new (const EContactName *name) { @@ -182,87 +245,6 @@ e_contact_editor_fullname_new (const EContactName *name) } static void -e_contact_editor_fullname_set_property (GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) -{ - EContactEditorFullname *e_contact_editor_fullname; - - e_contact_editor_fullname = E_CONTACT_EDITOR_FULLNAME (object); - - switch (prop_id) { - case PROP_NAME: - e_contact_name_free(e_contact_editor_fullname->name); - - if (g_value_get_pointer (value) != NULL) { - e_contact_editor_fullname->name = e_contact_name_copy(g_value_get_pointer (value)); - fill_in_info(e_contact_editor_fullname); - } - else { - e_contact_editor_fullname->name = NULL; - } - break; - case PROP_EDITABLE: { - gint i; - const gchar *widget_names[] = { - "comboentry-title", - "comboentry-suffix", - "entry-first", - "entry-middle", - "entry-last", - "label-title", - "label-suffix", - "label-first", - "label-middle", - "label-last", - NULL - }; - e_contact_editor_fullname->editable = g_value_get_boolean (value) ? TRUE : FALSE; - for (i = 0; widget_names[i] != NULL; i++) { - GtkWidget *w = e_builder_get_widget(e_contact_editor_fullname->builder, widget_names[i]); - if (GTK_IS_ENTRY (w)) { - gtk_editable_set_editable (GTK_EDITABLE (w), - e_contact_editor_fullname->editable); - } - else if (GTK_IS_COMBO_BOX_ENTRY (w)) { - gtk_editable_set_editable (GTK_EDITABLE (gtk_bin_get_child (GTK_BIN (w))), - e_contact_editor_fullname->editable); - gtk_widget_set_sensitive (w, e_contact_editor_fullname->editable); - } - else if (GTK_IS_LABEL (w)) { - gtk_widget_set_sensitive (w, e_contact_editor_fullname->editable); - } - } - break; - } - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void -e_contact_editor_fullname_get_property (GObject *object, guint prop_id, - GValue *value, GParamSpec *pspec) -{ - EContactEditorFullname *e_contact_editor_fullname; - - e_contact_editor_fullname = E_CONTACT_EDITOR_FULLNAME (object); - - switch (prop_id) { - case PROP_NAME: - extract_info(e_contact_editor_fullname); - g_value_set_pointer (value, e_contact_name_copy(e_contact_editor_fullname->name)); - break; - case PROP_EDITABLE: - g_value_set_boolean (value, e_contact_editor_fullname->editable ? TRUE : FALSE); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); - break; - } -} - -static void fill_in_field (EContactEditorFullname *editor, const gchar *field, const gchar *string) |