aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addressbook/ChangeLog7
-rw-r--r--addressbook/conduit/address-conduit.c118
2 files changed, 64 insertions, 61 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index d8e5d1de3e..089cccab42 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,10 @@
+2001-11-04 JP Rosevear <jpr@ximian.com>
+
+ * conduit/address-conduit.c: Use ordering of the pilot's phone
+ label list to find fields we sync in order to avoid strcmp'ing the
+ pilot's labels rendering phone syncing usable only for english
+ language pilots
+
2001-11-03 Chris Toshok <toshok@ximian.com>
[ Fixes Ximian bug #14410 ]
diff --git a/addressbook/conduit/address-conduit.c b/addressbook/conduit/address-conduit.c
index 16a6a14e98..d0f07b22dd 100644
--- a/addressbook/conduit/address-conduit.c
+++ b/addressbook/conduit/address-conduit.c
@@ -84,6 +84,16 @@ typedef struct
CardObjectChangeType type;
} CardObjectChange;
+enum {
+ LABEL_WORK,
+ LABEL_HOME,
+ LABEL_FAX,
+ LABEL_OTHER,
+ LABEL_EMAIL,
+ LABEL_MAIN,
+ LABEL_PAGER,
+ LABEL_MOBILE
+};
static ECardSimpleField priority [] = {
E_CARD_SIMPLE_FIELD_PHONE_BUSINESS,
@@ -103,22 +113,22 @@ static ECardSimpleField priority [] = {
E_CARD_SIMPLE_FIELD_LAST
};
-static char *priority_label [] = {
- "Work",
- "Home",
- "Fax",
- "E-mail",
- "Pager",
- "Mobile",
- "Work",
- "Home",
- "Fax",
- "E-mail",
- "Other",
- "Main",
- "Fax",
- "E-Mail",
- NULL
+static int priority_label [] = {
+ LABEL_WORK,
+ LABEL_HOME,
+ LABEL_FAX,
+ LABEL_EMAIL,
+ LABEL_PAGER,
+ LABEL_MOBILE,
+ LABEL_WORK,
+ LABEL_HOME,
+ LABEL_FAX,
+ LABEL_EMAIL,
+ LABEL_OTHER,
+ LABEL_MAIN,
+ LABEL_FAX,
+ LABEL_EMAIL,
+ -1
};
/* Debug routines */
@@ -354,19 +364,6 @@ next_changed_item (EAddrConduitContext *ctxt, GList *changes)
return NULL;
}
-static int
-get_label (EAddrConduitContext *ctxt, const char *label)
-{
- int i;
-
- for (i = 0; i < 8; i++) {
- if (!strcmp (ctxt->ai.phoneLabels[i], label))
- return i;
- }
-
- return 0;
-}
-
static ECardSimpleField
get_next_mail (ECardSimpleField *field)
{
@@ -509,65 +506,65 @@ is_syncable (EAddrConduitContext *ctxt, EAddrLocalRecord *local)
&next_other, &next_main, &next_pager, &next_mobile);
for (i = entryPhone1; i <= entryPhone5 && syncable; i++) {
- char *phonelabel = ctxt->ai.phoneLabels[local->addr->phoneLabel[i - entryPhone1]];
+ int phonelabel = local->addr->phoneLabel[i - entryPhone1];
const char *phone_str = local->addr->entry[i];
gboolean empty = !(phone_str && *phone_str);
if (empty)
continue;
- for ( ; priority_label[l] != NULL; l++)
- if (!strcmp (phonelabel, priority_label[l]))
+ for ( ; priority_label[l] != -1; l++)
+ if (phonelabel == priority_label[l])
break;
- if (priority_label[l] == NULL) {
+ if (priority_label[l] == -1) {
syncable = FALSE;
continue;
}
- if (!strcmp (phonelabel, "E-mail")) {
+ if (phonelabel == LABEL_EMAIL) {
if (is_next_done (next_mail) || next_mail != priority[l]) {
syncable = FALSE;
break;
}
next_mail = get_next_mail (&next_mail);
- } else if (!strcmp (phonelabel, "Home")) {
+ } else if (phonelabel == LABEL_HOME) {
if (is_next_done (next_home) || next_home != priority[l]) {
syncable = FALSE;
break;
}
next_home = get_next_home (&next_home);
- } else if (!strcmp (phonelabel, "Work")) {
+ } else if (phonelabel == LABEL_WORK) {
if (is_next_done (next_work) || next_work != priority[l]) {
syncable = FALSE;
break;
}
next_work = get_next_work (&next_work);
- } else if (!strcmp (phonelabel, "Fax")) {
+ } else if (phonelabel == LABEL_FAX) {
if (is_next_done (next_fax) || next_fax != priority[l]) {
syncable = FALSE;
break;
}
next_fax = get_next_fax (&next_fax);
- } else if (!strcmp (phonelabel, "Other")) {
+ } else if (phonelabel == LABEL_OTHER) {
if (is_next_done (next_other) || next_other != priority[l]) {
syncable = FALSE;
break;
}
next_other = get_next_other (&next_other);
- } else if (!strcmp (phonelabel, "Main")) {
+ } else if (phonelabel == LABEL_MAIN) {
if (is_next_done (next_main) || next_main != priority[l]) {
syncable = FALSE;
break;
}
next_main = get_next_main (&next_main);
- } else if (!strcmp (phonelabel, "Pager")) {
+ } else if (phonelabel == LABEL_PAGER) {
if (is_next_done (next_pager) || next_pager != priority[l]) {
syncable = FALSE;
break;
}
next_pager = get_next_pager (&next_pager);
- } else if (!strcmp (phonelabel, "Mobile")) {
+ } else if (phonelabel == LABEL_MOBILE) {
if (is_next_done (next_mobile) || next_mobile != priority[l]) {
syncable = FALSE;
break;
@@ -741,8 +738,7 @@ local_record_from_ecard (EAddrLocalRecord *local, ECard *ecard, EAddrConduitCont
if (phone_str && *phone_str) {
clear_entry_text (*local->addr, phone);
local->addr->entry[phone] = e_pilot_utf8_to_pchar (phone_str);
- local->addr->phoneLabel[phone - entryPhone1] =
- get_label (ctxt, priority_label[i]);
+ local->addr->phoneLabel[phone - entryPhone1] = priority_label[i];
phone++;
}
}
@@ -759,31 +755,31 @@ local_record_from_ecard (EAddrLocalRecord *local, ECard *ecard, EAddrConduitCont
/* Not completely syncable, so do the best we can */
for (i = entryPhone1; i <= entryPhone5; i++) {
- char *phonelabel = ctxt->ai.phoneLabels[local->addr->phoneLabel[i - entryPhone1]];
+ int phonelabel = local->addr->phoneLabel[i - entryPhone1];
const char *phone_str = NULL;
- if (!strcmp (phonelabel, "E-mail") && !is_next_done (next_mail)) {
+ if (phonelabel == LABEL_EMAIL && !is_next_done (next_mail)) {
phone_str = e_card_simple_get_const (simple, next_mail);
next_mail = get_next_mail (&next_mail);
- } else if (!strcmp (phonelabel, "Home") && !is_next_done (next_home)) {
+ } else if (phonelabel == LABEL_HOME && !is_next_done (next_home)) {
phone_str = e_card_simple_get_const (simple, next_home);
next_home = get_next_home (&next_home);
- } else if (!strcmp (phonelabel, "Work") && !is_next_done (next_work)) {
+ } else if (phonelabel == LABEL_WORK && !is_next_done (next_work)) {
phone_str = e_card_simple_get_const (simple, next_work);
next_work = get_next_work (&next_work);
- } else if (!strcmp (phonelabel, "Fax") && !is_next_done (next_fax)) {
+ } else if (phonelabel == LABEL_FAX && !is_next_done (next_fax)) {
phone_str = e_card_simple_get_const (simple, next_fax);
next_fax = get_next_fax (&next_fax);
- } else if (!strcmp (phonelabel, "Other") && !is_next_done (next_other)) {
+ } else if (phonelabel == LABEL_OTHER && !is_next_done (next_other)) {
phone_str = e_card_simple_get_const (simple, next_other);
next_other = get_next_other (&next_other);
- } else if (!strcmp (phonelabel, "Main") && !is_next_done (next_main)) {
+ } else if (phonelabel == LABEL_MAIN && !is_next_done (next_main)) {
phone_str = e_card_simple_get_const (simple, next_main);
next_main = get_next_main (&next_main);
- } else if (!strcmp (phonelabel, "Pager") && !is_next_done (next_pager)) {
+ } else if (phonelabel == LABEL_PAGER && !is_next_done (next_pager)) {
phone_str = e_card_simple_get_const (simple, next_pager);
next_pager = get_next_pager (&next_pager);
- } else if (!strcmp (phonelabel, "Mobile") && !is_next_done (next_mobile)) {
+ } else if (phonelabel == LABEL_MOBILE && !is_next_done (next_mobile)) {
phone_str = e_card_simple_get_const (simple, next_mobile);
next_mobile = get_next_mobile (&next_mobile);
}
@@ -905,31 +901,31 @@ ecard_from_remote_record(EAddrConduitContext *ctxt,
&next_other, &next_main, &next_pager, &next_mobile);
for (i = entryPhone1; i <= entryPhone5; i++) {
- char *phonelabel = ctxt->ai.phoneLabels[address.phoneLabel[i - entryPhone1]];
+ int phonelabel = address.phoneLabel[i - entryPhone1];
char *phonenum = get_entry_text (address, i);
- if (!strcmp (phonelabel, "E-mail") && !is_next_done (next_mail)) {
+ if (phonelabel == LABEL_EMAIL && !is_next_done (next_mail)) {
e_card_simple_set (simple, next_mail, phonenum);
next_mail = get_next_mail (&next_mail);
- } else if (!strcmp (phonelabel, "Home") && !is_next_done (next_home)) {
+ } else if (phonelabel == LABEL_HOME && !is_next_done (next_home)) {
e_card_simple_set (simple, next_home, phonenum);
next_home = get_next_home (&next_home);
- } else if (!strcmp (phonelabel, "Work") && !is_next_done (next_work)) {
+ } else if (phonelabel == LABEL_WORK && !is_next_done (next_work)) {
e_card_simple_set (simple, next_work, phonenum);
next_work = get_next_work (&next_work);
- } else if (!strcmp (phonelabel, "Fax") && !is_next_done (next_fax)) {
+ } else if (phonelabel == LABEL_FAX && !is_next_done (next_fax)) {
e_card_simple_set (simple, next_fax, phonenum);
next_fax = get_next_fax (&next_fax);
- } else if (!strcmp (phonelabel, "Other") && !is_next_done (next_other)) {
+ } else if (phonelabel == LABEL_OTHER && !is_next_done (next_other)) {
e_card_simple_set (simple, next_other, phonenum);
next_other = get_next_other (&next_other);
- } else if (!strcmp (phonelabel, "Main") && !is_next_done (next_main)) {
+ } else if (phonelabel == LABEL_MAIN && !is_next_done (next_main)) {
e_card_simple_set (simple, next_main, phonenum);
next_main = get_next_main (&next_main);
- } else if (!strcmp (phonelabel, "Pager") && !is_next_done (next_pager)) {
+ } else if (phonelabel == LABEL_PAGER && !is_next_done (next_pager)) {
e_card_simple_set (simple, next_pager, phonenum);
next_pager = get_next_pager (&next_pager);
- } else if (!strcmp (phonelabel, "Mobile") && !is_next_done (next_mobile)) {
+ } else if (phonelabel == LABEL_MOBILE && !is_next_done (next_mobile)) {
e_card_simple_set (simple, next_mobile, phonenum);
next_mobile = get_next_mobile (&next_mobile);
}