Hello. I'm Christian Hammond, from the Gaim project. I'm working on one of the gaim<->evolution bounties, and have a couple of patches for your review and, hopefully, acceptance into CVS. The first patch adds the ability to set data types of E_CONTACT_FIELD_TYPE_LIST in evolution-data-server. The second patch adds fields to the Contact Editor window in evolution so that a person's AIM, ICQ, Yahoo, MSN, and Jabber accounts can be set. Let me know if you'd like me to make any changes. Thank you. Christian -- Christian Hammond <> The GNUpdate Project chipx86 gnupdate org <> http://www.gnupdate.org/ A seminar on time travel will be held two weeks ago.
Index: addressbook/libebook/e-contact.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/addressbook/libebook/e-contact.c,v
retrieving revision 1.3
diff -u -r1.3 e-contact.c
--- addressbook/libebook/e-contact.c 10 Nov 2003 17:18:56 -0000 1.3
+++ addressbook/libebook/e-contact.c 23 Nov 2003 22:53:26 -0000
@@ -761,6 +761,25 @@
info->struct_setter (contact, attr, data);
}
+ else if (info->t & E_CONTACT_FIELD_TYPE_LIST) {
+ EVCardAttribute *attr;
+ GList *values, *l;
+
+ attr = e_contact_get_first_attr (contact, info->vcard_field_name);
+
+ if (attr) {
+ e_vcard_attribute_remove_values (attr);
+ }
+ else {
+ attr = e_vcard_attribute_new (NULL, info->vcard_field_name);
+ e_vcard_add_attribute (E_VCARD (contact), attr);
+ }
+
+ values = g_value_get_pointer (value);
+
+ for (l = values; l != NULL; l = l->next)
+ e_vcard_attribute_add_value (attr, l->data);
+ }
else {
g_warning ("unhandled attribute `%s'", info->vcard_field_name);
}
Index: addressbook/gui/contact-editor/contact-editor.glade
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/contact-editor/contact-editor.glade,v
retrieving revision 1.41
diff -u -r1.41 contact-editor.glade
--- addressbook/gui/contact-editor/contact-editor.glade 21 Oct 2003 18:48:44 -0000 1.41
+++ addressbook/gui/contact-editor/contact-editor.glade 23 Nov 2003 22:51:36 -0000
@@ -328,7 +328,7 @@
<widget class="GtkTable" id="table-contact-editor-general">
<property name="border_width">6</property>
<property name="visible">True</property>
- <property name="n_rows">14</property>
+ <property name="n_rows">15</property>
<property name="n_columns">8</property>
<property name="homogeneous">False</property>
<property name="row_spacing">6</property>
@@ -466,8 +466,8 @@
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
@@ -591,8 +591,8 @@
<packing>
<property name="left_attach">4</property>
<property name="right_attach">8</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
<property name="y_padding">2</property>
<property name="y_options"></property>
</packing>
@@ -716,8 +716,8 @@
<packing>
<property name="left_attach">3</property>
<property name="right_attach">4</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
<property name="y_options"></property>
</packing>
</child>
@@ -729,8 +729,8 @@
<packing>
<property name="left_attach">0</property>
<property name="right_attach">4</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
<property name="y_padding">2</property>
<property name="y_options"></property>
</packing>
@@ -804,8 +804,8 @@
<packing>
<property name="left_attach">0</property>
<property name="right_attach">4</property>
- <property name="top_attach">7</property>
- <property name="bottom_attach">8</property>
+ <property name="top_attach">8</property>
+ <property name="bottom_attach">9</property>
<property name="y_padding">2</property>
<property name="y_options">fill</property>
</packing>
@@ -835,8 +835,8 @@
<packing>
<property name="left_attach">3</property>
<property name="right_attach">4</property>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
<property name="x_options">expand|shrink|fill</property>
<property name="y_options">shrink|fill</property>
</packing>
@@ -872,8 +872,8 @@
<packing>
<property name="left_attach">6</property>
<property name="right_attach">7</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
@@ -1027,8 +1027,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
@@ -1058,8 +1058,8 @@
<packing>
<property name="left_attach">5</property>
<property name="right_attach">6</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">7</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
@@ -1088,8 +1088,8 @@
<packing>
<property name="left_attach">7</property>
<property name="right_attach">8</property>
- <property name="top_attach">9</property>
- <property name="bottom_attach">10</property>
+ <property name="top_attach">10</property>
+ <property name="bottom_attach">11</property>
<property name="y_options">fill</property>
</packing>
</child>
@@ -1101,8 +1101,8 @@
<packing>
<property name="left_attach">0</property>
<property name="right_attach">4</property>
- <property name="top_attach">11</property>
- <property name="bottom_attach">12</property>
+ <property name="top_attach">12</property>
+ <property name="bottom_attach">13</property>
<property name="y_padding">2</property>
<property name="y_options">fill</property>
</packing>
@@ -1115,8 +1115,8 @@
<packing>
<property name="left_attach">4</property>
<property name="right_attach">8</property>
- <property name="top_attach">11</property>
- <property name="bottom_attach">12</property>
+ <property name="top_attach">12</property>
+ <property name="bottom_attach">13</property>
<property name="y_options">fill</property>
</packing>
</child>
@@ -1153,46 +1153,6 @@
</child>
<child>
- <widget class="Custom" id="custom1">
- <property name="visible">True</property>
- <property name="creation_function">e_create_image_widget</property>
- <property name="string1">malehead.png</property>
- <property name="string2"></property>
- <property name="int1">0</property>
- <property name="int2">0</property>
- <property name="last_modification_time">Thu, 18 May 2000 12:19:47 GMT</property>
- </widget>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">fill</property>
- <property name="y_options">fill</property>
- </packing>
- </child>
-
- <child>
- <widget class="Custom" id="custom2">
- <property name="visible">True</property>
- <property name="creation_function">e_create_image_widget</property>
- <property name="string1">cellphone.png</property>
- <property name="string2"></property>
- <property name="int1">0</property>
- <property name="int2">0</property>
- <property name="last_modification_time">Thu, 18 May 2000 12:20:02 GMT</property>
- </widget>
- <packing>
- <property name="left_attach">4</property>
- <property name="right_attach">5</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">fill</property>
- <property name="y_options">fill</property>
- </packing>
- </child>
-
- <child>
<widget class="Custom" id="custom3">
<property name="visible">True</property>
<property name="creation_function">e_create_image_widget</property>
@@ -1205,8 +1165,8 @@
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">7</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">8</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
@@ -1225,8 +1185,8 @@
<packing>
<property name="left_attach">4</property>
<property name="right_attach">5</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">10</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">11</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
@@ -1245,8 +1205,8 @@
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
- <property name="top_attach">8</property>
- <property name="bottom_attach">10</property>
+ <property name="top_attach">9</property>
+ <property name="bottom_attach">11</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
@@ -1288,8 +1248,8 @@
<packing>
<property name="left_attach">5</property>
<property name="right_attach">7</property>
- <property name="top_attach">6</property>
- <property name="bottom_attach">7</property>
+ <property name="top_attach">7</property>
+ <property name="bottom_attach">8</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
@@ -1338,8 +1298,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">3</property>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
+ <property name="top_attach">9</property>
+ <property name="bottom_attach">10</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
@@ -1366,8 +1326,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">3</property>
- <property name="top_attach">12</property>
- <property name="bottom_attach">13</property>
+ <property name="top_attach">13</property>
+ <property name="bottom_attach">14</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
@@ -1386,8 +1346,8 @@
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
- <property name="top_attach">12</property>
- <property name="bottom_attach">14</property>
+ <property name="top_attach">13</property>
+ <property name="bottom_attach">15</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
@@ -1418,8 +1378,8 @@
<packing>
<property name="left_attach">3</property>
<property name="right_attach">4</property>
- <property name="top_attach">12</property>
- <property name="bottom_attach">13</property>
+ <property name="top_attach">13</property>
+ <property name="bottom_attach">14</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
@@ -1455,8 +1415,8 @@
<packing>
<property name="left_attach">7</property>
<property name="right_attach">8</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">9</property>
+ <property name="top_attach">6</property>
+ <property name="bottom_attach">10</property>
<property name="y_options">fill</property>
</packing>
</child>
@@ -1472,8 +1432,8 @@
<packing>
<property name="left_attach">3</property>
<property name="right_attach">4</property>
- <property name="top_attach">8</property>
- <property name="bottom_attach">9</property>
+ <property name="top_attach">9</property>
+ <property name="bottom_attach">10</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
@@ -1497,8 +1457,8 @@
<packing>
<property name="left_attach">1</property>
<property name="right_attach">3</property>
- <property name="top_attach">9</property>
- <property name="bottom_attach">10</property>
+ <property name="top_attach">10</property>
+ <property name="bottom_attach">11</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
@@ -1515,12 +1475,124 @@
<packing>
<property name="left_attach">3</property>
<property name="right_attach">4</property>
- <property name="top_attach">9</property>
- <property name="bottom_attach">10</property>
+ <property name="top_attach">10</property>
+ <property name="bottom_attach">11</property>
+ <property name="x_options">fill</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="Custom" id="custom2">
+ <property name="visible">True</property>
+ <property name="creation_function">e_create_image_widget</property>
+ <property name="string1">cellphone.png</property>
+ <property name="string2"></property>
+ <property name="int1">0</property>
+ <property name="int2">0</property>
+ <property name="last_modification_time">Thu, 18 May 2000 12:20:02 GMT</property>
+ </widget>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="right_attach">5</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">5</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
+
+ <child>
+ <widget class="Custom" id="custom1">
+ <property name="visible">True</property>
+ <property name="creation_function">e_create_image_widget</property>
+ <property name="string1">malehead.png</property>
+ <property name="string2"></property>
+ <property name="int1">0</property>
+ <property name="int2">0</property>
+ <property name="last_modification_time">Thu, 18 May 2000 12:19:47 GMT</property>
+ </widget>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="right_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">fill</property>
+ <property name="y_options">fill</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label-im1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">A_IM account:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">1</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="left_attach">5</property>
+ <property name="right_attach">6</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button-im1">
+ <property name="visible">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+
+ <child>
+ <widget class="GtkArrow" id="arrow7">
+ <property name="visible">True</property>
+ <property name="arrow_type">GTK_ARROW_DOWN</property>
+ <property name="shadow_type">GTK_SHADOW_OUT</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">6</property>
+ <property name="right_attach">7</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options">fill</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="entry-im1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char" translatable="yes">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">7</property>
+ <property name="right_attach">8</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="y_options"></property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="tab_expand">False</property>
Index: addressbook/gui/contact-editor/e-contact-editor.c
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/contact-editor/e-contact-editor.c,v
retrieving revision 1.153
diff -u -r1.153 e-contact-editor.c
--- addressbook/gui/contact-editor/e-contact-editor.c 21 Oct 2003 18:48:45 -0000 1.153
+++ addressbook/gui/contact-editor/e-contact-editor.c 23 Nov 2003 22:51:37 -0000
@@ -76,6 +76,7 @@
static void e_contact_editor_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
static void e_contact_editor_dispose (GObject *object);
+static void _im_arrow_pressed (GtkWidget *widget, GdkEventButton *button, EContactEditor *editor);
static void _email_arrow_pressed (GtkWidget *widget, GdkEventButton *button, EContactEditor *editor);
static void _phone_arrow_pressed (GtkWidget *widget, GdkEventButton *button, EContactEditor *editor);
static void _address_arrow_pressed (GtkWidget *widget, GdkEventButton *button, EContactEditor *editor);
@@ -136,6 +137,22 @@
E_CONTACT_PHONE_TTYTDD,
};
+static EContactField ims[] = {
+ E_CONTACT_IM_AIM,
+ E_CONTACT_IM_JABBER,
+ E_CONTACT_IM_YAHOO,
+ E_CONTACT_IM_MSN,
+ E_CONTACT_IM_ICQ
+};
+
+static const char *im_labels[] = {
+ N_("AIM account"),
+ N_("Jabber account"),
+ N_("Yahoo account"),
+ N_("MSN account"),
+ N_("ICQ account")
+};
+
static EContactField emails[] = {
E_CONTACT_EMAIL_1,
E_CONTACT_EMAIL_2,
@@ -279,6 +296,7 @@
connect_arrow_button_signal(editor, "button-phone3", G_CALLBACK (_phone_arrow_pressed));
connect_arrow_button_signal(editor, "button-phone4", G_CALLBACK (_phone_arrow_pressed));
connect_arrow_button_signal(editor, "button-address", G_CALLBACK (_address_arrow_pressed));
+ connect_arrow_button_signal(editor, "button-im1", G_CALLBACK (_im_arrow_pressed));
connect_arrow_button_signal(editor, "button-email1", G_CALLBACK (_email_arrow_pressed));
}
@@ -319,6 +337,21 @@
}
static void
+im_entry_changed (GtkWidget *widget, EContactEditor *editor)
+{
+ GtkEntry *entry = GTK_ENTRY(widget);
+ GList *l;
+
+ l = g_list_append(NULL, (char*)gtk_entry_get_text(entry));
+
+ e_contact_set(editor->contact, editor->im_choice, l);
+
+ g_list_free(l);
+
+ widget_changed (widget, editor);
+}
+
+static void
email_entry_changed (GtkWidget *widget, EContactEditor *editor)
{
GtkEntry *entry = GTK_ENTRY(widget);
@@ -633,6 +666,15 @@
}
static void
+set_entry_changed_signal_im(EContactEditor *editor, char *id)
+{
+ GtkWidget *widget = glade_xml_get_widget(editor->gui, id);
+ if (widget && GTK_IS_ENTRY(widget))
+ g_signal_connect(widget, "changed",
+ G_CALLBACK (im_entry_changed), editor);
+}
+
+static void
set_entry_changed_signal_email(EContactEditor *editor, char *id)
{
GtkWidget *widget = glade_xml_get_widget(editor->gui, id);
@@ -684,6 +726,8 @@
set_entry_changed_signal_phone(editor, "entry-phone3");
set_entry_changed_signal_phone(editor, "entry-phone4");
+ set_entry_changed_signal_im(editor, "entry-im1");
+
set_entry_changed_signal_email(editor, "entry-email1");
widget = glade_xml_get_widget(editor->gui, "text-address");
@@ -1254,6 +1298,7 @@
list = add_to_tab_order(list, gui, "entry-phone2");
list = add_to_tab_order(list, gui, "entry-phone3");
list = add_to_tab_order(list, gui, "entry-phone4");
+ list = add_to_tab_order(list, gui, "entry-im1");
list = add_to_tab_order(list, gui, "entry-email1");
list = add_to_tab_order(list, gui, "alignment-htmlmail");
@@ -1278,6 +1323,7 @@
char *icon_path;
e_contact_editor->email_info = NULL;
+ e_contact_editor->im_info = NULL;
e_contact_editor->phone_info = NULL;
e_contact_editor->address_info = NULL;
e_contact_editor->email_popup = NULL;
@@ -1289,6 +1335,7 @@
e_contact_editor->name = e_contact_name_new();
e_contact_editor->company = g_strdup("");
+ e_contact_editor->im_choice = E_CONTACT_IM_AIM;
e_contact_editor->email_choice = E_CONTACT_EMAIL_1;
e_contact_editor->phone_choice[0] = E_CONTACT_PHONE_BUSINESS;
e_contact_editor->phone_choice[1] = E_CONTACT_PHONE_HOME;
@@ -1401,6 +1448,14 @@
g_list_free(e_contact_editor->email_list);
e_contact_editor->email_list = NULL;
}
+ if (e_contact_editor->im_info) {
+ g_free(e_contact_editor->im_info);
+ e_contact_editor->im_info = NULL;
+ }
+ if (e_contact_editor->im_popup) {
+ g_object_unref(e_contact_editor->im_popup);
+ e_contact_editor->im_popup = NULL;
+ }
if (e_contact_editor->email_info) {
g_free(e_contact_editor->email_info);
e_contact_editor->email_info = NULL;
@@ -1750,6 +1805,27 @@
}
static void
+e_contact_editor_build_im_ui (EContactEditor *editor)
+{
+ int i;
+
+ if (editor->im_list == NULL) {
+ for (i = 0; i < G_N_ELEMENTS (ims); i++)
+ editor->im_list = g_list_append(editor->im_list, g_strdup(im_labels[i]));
+ }
+ if (editor->im_info == NULL) {
+ e_contact_editor_build_ui_info(editor->im_list, &editor->im_info);
+
+ if ( editor->im_popup )
+ g_object_unref(editor->im_popup);
+
+ editor->im_popup = gnome_popup_menu_new(editor->im_info);
+ g_object_ref (editor->im_popup);
+ gtk_object_sink (GTK_OBJECT (editor->im_popup));
+ }
+}
+
+static void
e_contact_editor_build_email_ui (EContactEditor *editor)
{
int i;
@@ -1844,6 +1920,37 @@
}
static void
+_im_arrow_pressed (GtkWidget *widget, GdkEventButton *button, EContactEditor *editor)
+{
+ int i;
+ int result;
+
+ e_contact_editor_build_im_ui (editor);
+
+ for(i = 0; i < G_N_ELEMENTS (ims); i++) {
+ GList *list = e_contact_get(editor->contact, ims[i]);
+ gboolean checked;
+ checked = (list != NULL);
+
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(editor->im_info[i].widget),
+ checked);
+ }
+
+ result = _arrow_pressed (widget, button, editor, editor->im_popup, &editor->im_list, &editor->im_info, "label-im1");
+
+ if (result != -1) {
+ GtkWidget *entry = glade_xml_get_widget (editor->gui, "entry-im1");
+ editor->im_choice = ims[result];
+
+ set_fields (editor);
+
+ /* make sure the buttons/entry is/are sensitive */
+ enable_widget (glade_xml_get_widget (editor->gui, "label-im1"), TRUE);
+ enable_widget (entry, editor->editable);
+ }
+}
+
+static void
_email_arrow_pressed (GtkWidget *widget, GdkEventButton *button, EContactEditor *editor)
{
int i;
@@ -1937,6 +2044,8 @@
const char *oldstring = gtk_entry_get_text(entry);
if (!string)
string = "";
+ printf("oldstring = '%s'\n", oldstring);
+ printf("string = '%s'\n", string);
if (strcmp(string, oldstring)) {
g_signal_handlers_block_matched (entry,
G_SIGNAL_MATCH_DATA,
@@ -1976,7 +2085,17 @@
entry = glade_xml_get_widget(editor->gui, "entry-phone4");
if (entry && GTK_IS_ENTRY(entry))
set_phone_field(editor, entry, e_contact_get_const(editor->contact, editor->phone_choice[3]));
-
+
+ entry = glade_xml_get_widget(editor->gui, "entry-im1");
+ if (entry && GTK_IS_ENTRY(entry)) {
+ GList *values = e_contact_get(editor->contact, editor->im_choice);
+
+ if (values && values->data)
+ set_field(editor, GTK_ENTRY(entry), values->data);
+ else
+ set_field(editor, GTK_ENTRY(entry), NULL);
+ }
+
entry = glade_xml_get_widget(editor->gui, "entry-email1");
if (entry && GTK_IS_ENTRY(entry))
set_field(editor, GTK_ENTRY(entry), e_contact_get_const(editor->contact, editor->email_choice));
@@ -2185,10 +2304,15 @@
g_hash_table_insert (dropdown_hash,
(char*)e_contact_field_name(phones[i]),
editor->phone_info[i].widget);
+ e_contact_editor_build_im_ui (editor);
+ for (i = 0; i < G_N_ELEMENTS (ims); i ++)
+ g_hash_table_insert (dropdown_hash,
+ (char*)e_contact_field_name(ims[i]),
+ editor->im_info[i].widget);
e_contact_editor_build_email_ui (editor);
for (i = 0; i < G_N_ELEMENTS (emails); i ++)
g_hash_table_insert (dropdown_hash,
- (char*)e_contact_field_name(phones[i]),
+ (char*)e_contact_field_name(emails[i]),
editor->email_info[i].widget);
#if notyet
e_contact_editor_build_address_ui (editor);
@@ -2212,6 +2336,8 @@
enable_widget (glade_xml_get_widget (editor->gui, widget_name), FALSE);
g_free (widget_name);
}
+ enable_widget (glade_xml_get_widget (editor->gui, "label-im1"), FALSE);
+ enable_widget (glade_xml_get_widget (editor->gui, "entry-im1"), FALSE);
enable_widget (glade_xml_get_widget (editor->gui, "label-email1"), FALSE);
enable_widget (glade_xml_get_widget (editor->gui, "entry-email1"), FALSE);
enable_widget (glade_xml_get_widget (editor->gui, "checkbutton-htmlmail"), FALSE);
@@ -2260,6 +2386,10 @@
enable_widget (glade_xml_get_widget (editor->gui, "checkbutton-mailingaddress"), editor->editable);
enable_widget (glade_xml_get_widget (editor->gui, "text-address"), editor->editable);
}
+ else if (!strcmp (field, e_contact_field_name (editor->im_choice))) {
+ enable_widget (glade_xml_get_widget (editor->gui, "label-im1"), TRUE);
+ enable_widget (glade_xml_get_widget (editor->gui, "entry-im1"), TRUE);
+ }
else for (i = 0; i < 4; i ++) {
if (!strcmp (field, e_contact_field_name (editor->phone_choice[i]))) {
widget_name = g_strdup_printf ("label-phone%d", i+1);
@@ -2325,6 +2455,11 @@
g_free (entry);
}
+ /* handle the im dropdown entry */
+ entry = "entry-im1";
+ enable_widget (glade_xml_get_widget(editor->gui, entry),
+ editor->editable);
+
/* handle the email dropdown entry */
entry = "entry-email1";
enable_widget (glade_xml_get_widget(editor->gui, entry),
Index: addressbook/gui/contact-editor/e-contact-editor.h
===================================================================
RCS file: /cvs/gnome/evolution/addressbook/gui/contact-editor/e-contact-editor.h,v
retrieving revision 1.36
diff -u -r1.36 e-contact-editor.h
--- addressbook/gui/contact-editor/e-contact-editor.h 7 Nov 2003 05:51:33 -0000 1.36
+++ addressbook/gui/contact-editor/e-contact-editor.h 23 Nov 2003 22:51:37 -0000
@@ -62,12 +62,15 @@
GladeXML *gui;
GtkWidget *app;
+ GnomeUIInfo *im_info;
GnomeUIInfo *email_info;
GnomeUIInfo *phone_info;
GnomeUIInfo *address_info;
+ GtkWidget *im_popup;
GtkWidget *email_popup;
GtkWidget *phone_popup;
GtkWidget *address_popup;
+ GList *im_list;
GList *email_list;
GList *phone_list;
GList *address_list;
@@ -75,6 +78,7 @@
EContactName *name;
char *company;
+ EContactField im_choice;
EContactField email_choice;
EContactField phone_choice[4];
EContactField address_choice;
Attachment:
pgpA1WOfxyDlO.pgp
Description: PGP signature