aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/gui
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2008-12-08 19:01:38 +0800
committerMilan Crha <mcrha@src.gnome.org>2008-12-08 19:01:38 +0800
commit4eed8ee19e71b199239dc12e936e9b3e650eb2fc (patch)
treea3b9c8175f14ce0b84944c2d9d66da34868b5355 /addressbook/gui
parent0694086ab958a0ab21448c5afca1e29091686ed6 (diff)
downloadgsoc2013-evolution-4eed8ee19e71b199239dc12e936e9b3e650eb2fc.tar.gz
gsoc2013-evolution-4eed8ee19e71b199239dc12e936e9b3e650eb2fc.tar.zst
gsoc2013-evolution-4eed8ee19e71b199239dc12e936e9b3e650eb2fc.zip
** Fix for bug #270376
2008-12-08 Milan Crha <mcrha@redhat.com> ** Fix for bug #270376 * gui/contact-editor/e-contact-editor.c: (im_service []), (non_string_fields[]): * gui/widgets/eab-contact-display.c: (render_contact): Support Skype field in a contact. * gui/contact-editor/e-contact-editor-im.c: Changes here too, but file doesn't seem to be used. svn path=/trunk/; revision=36849
Diffstat (limited to 'addressbook/gui')
-rw-r--r--addressbook/gui/contact-editor/e-contact-editor-im.c59
-rw-r--r--addressbook/gui/contact-editor/e-contact-editor.c4
-rw-r--r--addressbook/gui/widgets/eab-contact-display.c2
3 files changed, 54 insertions, 11 deletions
diff --git a/addressbook/gui/contact-editor/e-contact-editor-im.c b/addressbook/gui/contact-editor/e-contact-editor-im.c
index 7facb68b45..cc4fcc5d05 100644
--- a/addressbook/gui/contact-editor/e-contact-editor-im.c
+++ b/addressbook/gui/contact-editor/e-contact-editor-im.c
@@ -47,8 +47,8 @@ enum {
PROP_EDITABLE
};
-#define FIRST_IM_TYPE E_CONTACT_IM_AIM
-#define LAST_IM_TYPE E_CONTACT_IM_ICQ
+/*#define FIRST_IM_TYPE E_CONTACT_IM_AIM
+#define LAST_IM_TYPE E_CONTACT_IM_ICQ*/
static const char *im_labels[] = {
N_("AOL Instant Messenger"),
@@ -57,7 +57,8 @@ static const char *im_labels[] = {
N_("Yahoo Messenger"),
N_("Gadu-Gadu Messenger"),
N_("MSN Messenger"),
- N_("ICQ")
+ N_("ICQ"),
+ N_("Skype")
};
static const char *im_images[] = {
@@ -67,9 +68,47 @@ static const char *im_images[] = {
"im-yahoo",
"im-gadugadu",
"im-msn",
- "im-icq"
+ "im-icq",
+ "stock_people"
};
+/**
+ * Decodes from service (E_CONTACT_IM_ value to the index in the above
+ * fields and back, depending on the second parameter.
+ * @param val Value to decode
+ * @param val_is_service TRUE, if val is E_CONTACT_IM_ value, otherwise it's an index number.
+ **/
+static int
+decode_service (int val, gboolean val_is_service)
+{
+ static const int fields[] = {
+ E_CONTACT_IM_AIM,
+ E_CONTACT_IM_GROUPWISE,
+ E_CONTACT_IM_JABBER,
+ E_CONTACT_IM_YAHOO,
+ E_CONTACT_IM_GADUGADU,
+ E_CONTACT_IM_MSN,
+ E_CONTACT_IM_ICQ,
+ E_CONTACT_IM_SKYPE
+ };
+
+ int i, sz = G_N_ELEMENTS (fields);
+ if (val_is_service) {
+ for (i = 0; i < sz; i++) {
+ if (val == fields[i])
+ break;
+ }
+ if (i >= sz)
+ i = 0;
+ } else if (val >= 0 && val < sz) {
+ i = fields [val];
+ } else {
+ i = fields [0];
+ }
+
+ return i;
+}
+
GType
e_contact_editor_im_get_type (void)
{
@@ -111,9 +150,9 @@ e_contact_editor_im_class_init (EContactEditorImClass *klass)
g_param_spec_int ("service",
_("Service"),
/*_( */"XXX blurb" /*)*/,
- FIRST_IM_TYPE,
- LAST_IM_TYPE,
- FIRST_IM_TYPE,
+ E_CONTACT_IM_AIM,
+ E_CONTACT_IM_SKYPE,
+ E_CONTACT_IM_AIM,
G_PARAM_READWRITE));
g_object_class_install_property (object_class, PROP_LOCATION,
@@ -141,7 +180,7 @@ e_contact_editor_im_class_init (EContactEditorImClass *klass)
static void
service_changed_cb(GtkWidget *optmenu, EContactEditorIm *editor)
{
- editor->service = gtk_option_menu_get_history(GTK_OPTION_MENU(optmenu)) + FIRST_IM_TYPE;
+ editor->service = decode_service (gtk_option_menu_get_history(GTK_OPTION_MENU(optmenu)), FALSE);
}
static void
@@ -254,7 +293,7 @@ e_contact_editor_im_init (EContactEditorIm *e_contact_editor_im)
gtk_window_set_resizable(GTK_WINDOW(e_contact_editor_im), TRUE);
- e_contact_editor_im->service = FIRST_IM_TYPE;
+ e_contact_editor_im->service = decode_service (0, FALSE);
e_contact_editor_im->location = g_strdup("HOME");
e_contact_editor_im->username = NULL;
@@ -440,7 +479,7 @@ fill_in_info(EContactEditorIm *editor)
optmenu = glade_xml_get_widget(editor->gui, "optmenu-service");
if (optmenu != NULL)
- gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), editor->service - FIRST_IM_TYPE);
+ gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), decode_service (editor->service, TRUE));
optmenu = glade_xml_get_widget(editor->gui, "optmenu-location");
diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c
index c4f9d7e743..0fad7abb29 100644
--- a/addressbook/gui/contact-editor/e-contact-editor.c
+++ b/addressbook/gui/contact-editor/e-contact-editor.c
@@ -179,7 +179,8 @@ im_service [] =
{ E_CONTACT_IM_GADUGADU, N_ ("Gadu-Gadu") },
{ E_CONTACT_IM_MSN, N_ ("MSN") },
{ E_CONTACT_IM_ICQ, N_ ("ICQ") },
- { E_CONTACT_IM_GROUPWISE, N_ ("GroupWise") }
+ { E_CONTACT_IM_GROUPWISE, N_ ("GroupWise") },
+ { E_CONTACT_IM_SKYPE, N_ ("Skype") }
};
/* Defaults from the table above */
@@ -3053,6 +3054,7 @@ static const EContactField non_string_fields [] = {
E_CONTACT_IM_GADUGADU,
E_CONTACT_IM_MSN,
E_CONTACT_IM_ICQ,
+ E_CONTACT_IM_SKYPE,
E_CONTACT_PHOTO,
E_CONTACT_LOGO,
E_CONTACT_X509_CERT,
diff --git a/addressbook/gui/widgets/eab-contact-display.c b/addressbook/gui/widgets/eab-contact-display.c
index 6ee38d41c9..f8a15a06fa 100644
--- a/addressbook/gui/widgets/eab-contact-display.c
+++ b/addressbook/gui/widgets/eab-contact-display.c
@@ -72,6 +72,7 @@ common_location [] =
#define MSN_ICON "im-msn"
#define YAHOO_ICON "im-yahoo"
#define GADUGADU_ICON "im-gadugadu"
+#define SKYPE_ICON "stock_people"
#define VIDEOCONF_ICON "stock_video-conferencing"
#define MAX_COMPACT_IMAGE_DIMENSION 48
@@ -618,6 +619,7 @@ render_contact (GtkHTMLStream *html_stream, EContact *contact)
accum_multival_attribute (accum, contact, _("MSN"), E_CONTACT_IM_MSN, MSN_ICON, 0);
accum_multival_attribute (accum, contact, _("Yahoo"), E_CONTACT_IM_YAHOO, YAHOO_ICON, 0);
accum_multival_attribute (accum, contact, _("Gadu-Gadu"), E_CONTACT_IM_GADUGADU, GADUGADU_ICON, 0);
+ accum_multival_attribute (accum, contact, _("Skype"), E_CONTACT_IM_SKYPE, SKYPE_ICON, 0);
if (accum->len > 0)
gtk_html_stream_printf (html_stream, "%s", accum->str);