diff options
-rw-r--r-- | addressbook/ChangeLog | 9 | ||||
-rw-r--r-- | addressbook/conduit/address-conduit-config.h | 2 | ||||
-rw-r--r-- | addressbook/conduit/address-conduit.c | 85 |
3 files changed, 43 insertions, 53 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog index c975ddf870..d0d04d85ab 100644 --- a/addressbook/ChangeLog +++ b/addressbook/ChangeLog @@ -1,5 +1,14 @@ 2001-10-29 JP Rosevear <jpr@ximian.com> + * conduit/address-conduit.c (is_syncable): fix bug that allowed + for phone's not to be in priority order and the item to still be + syncable + + * conduit/address-conduit-config.h + (addrconduit_load_configuration): get management by id + +2001-10-29 JP Rosevear <jpr@ximian.com> + * conduit/address-conduit.c (is_syncable): a card also needs to have its phone nums in priority order to be "syncable" diff --git a/addressbook/conduit/address-conduit-config.h b/addressbook/conduit/address-conduit-config.h index 973bc4fd10..4042eff423 100644 --- a/addressbook/conduit/address-conduit-config.h +++ b/addressbook/conduit/address-conduit-config.h @@ -52,7 +52,7 @@ addrconduit_load_configuration (EAddrConduitCfg **c, guint32 pilot_id) g_assert (*c != NULL); (*c)->pilot_id = pilot_id; - management = gnome_pilot_conduit_management_new ("EAddress", GNOME_PILOT_CONDUIT_MGMT_NAME); + management = gnome_pilot_conduit_management_new ("e_address_conduit", GNOME_PILOT_CONDUIT_MGMT_ID); config = gnome_pilot_conduit_config_new (management, pilot_id); if (!gnome_pilot_conduit_config_is_enabled (config, &(*c)->sync_type)) (*c)->sync_type = GnomePilotConduitSyncTypeNotSet; diff --git a/addressbook/conduit/address-conduit.c b/addressbook/conduit/address-conduit.c index 1cff3c234f..016c5495a9 100644 --- a/addressbook/conduit/address-conduit.c +++ b/addressbook/conduit/address-conduit.c @@ -502,97 +502,78 @@ is_syncable (EAddrConduitContext *ctxt, EAddrLocalRecord *local) ECardSimpleField next_mail, next_home, next_work, next_fax; ECardSimpleField next_other, next_main, next_pager, next_mobile; gboolean syncable = TRUE; - int i, l = 0, lastphone = entryPhone5; + int i, l = 0; - /* See if the fields are in priority order */ - for ( ; lastphone >= entryPhone1; lastphone--) { - const char *phone_str = local->addr->entry[lastphone]; - - if (phone_str && *phone_str) - break; - } - - /* if they are all blank */ - if (lastphone < entryPhone1) - return TRUE; - - /* See if the fields are in priority order */ - for (i = entryPhone1; i <= lastphone && priority_label[l] != NULL; i++) { - char *phonelabel = ctxt->ai.phoneLabels[local->addr->phoneLabel[i - entryPhone1]]; - - for ( ; priority_label[l] != NULL; l++) - if (!strcmp (phonelabel, priority_label[l])) - break; - } - - if (priority_label[l] == NULL) - return FALSE; - - /* See if there are fields we can't sync */ + /* See if there are fields we can't sync or not in priority order */ get_next_init (&next_mail, &next_home, &next_work, &next_fax, &next_other, &next_main, &next_pager, &next_mobile); - for (i = entryPhone1; i <= entryPhone5; i++) { + for (i = entryPhone1; i <= entryPhone5 && syncable; i++) { char *phonelabel = ctxt->ai.phoneLabels[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])) + break; + + if (priority_label[l] == NULL) { + syncable = FALSE; + continue; + } if (!strcmp (phonelabel, "E-mail")) { - if (is_next_done (next_mail)) { + if (is_next_done (next_mail) || next_mail != priority[l]) { syncable = FALSE; break; } - if (phone_str && *phone_str) - next_mail = get_next_mail (&next_mail); + next_mail = get_next_mail (&next_mail); } else if (!strcmp (phonelabel, "Home")) { - if (is_next_done (next_home)) { + if (is_next_done (next_home) || next_home != priority[l]) { syncable = FALSE; break; } - if (phone_str && *phone_str) - next_home = get_next_home (&next_home); + next_home = get_next_home (&next_home); } else if (!strcmp (phonelabel, "Work")) { - if (is_next_done (next_work)) { + if (is_next_done (next_work) || next_work != priority[l]) { syncable = FALSE; break; } - if (phone_str && *phone_str) - next_work = get_next_work (&next_work); + next_work = get_next_work (&next_work); } else if (!strcmp (phonelabel, "Fax")) { - if (is_next_done (next_fax)) { + if (is_next_done (next_fax) || next_fax != priority[l]) { syncable = FALSE; break; } - if (phone_str && *phone_str) - next_fax = get_next_fax (&next_fax); + next_fax = get_next_fax (&next_fax); } else if (!strcmp (phonelabel, "Other")) { - if (is_next_done (next_other)) { + if (is_next_done (next_other) || next_other != priority[l]) { syncable = FALSE; break; } - if (phone_str && *phone_str) - next_other = get_next_other (&next_other); + next_other = get_next_other (&next_other); } else if (!strcmp (phonelabel, "Main")) { - if (is_next_done (next_main)) { + if (is_next_done (next_main) || next_main != priority[l]) { syncable = FALSE; break; } - if (phone_str && *phone_str) - next_main = get_next_main (&next_main); + next_main = get_next_main (&next_main); } else if (!strcmp (phonelabel, "Pager")) { - if (is_next_done (next_pager)) { + if (is_next_done (next_pager) || next_pager != priority[l]) { syncable = FALSE; break; } - if (phone_str && *phone_str) - next_pager = get_next_pager (&next_pager); + next_pager = get_next_pager (&next_pager); } else if (!strcmp (phonelabel, "Mobile")) { - if (is_next_done (next_mobile)) { + if (is_next_done (next_mobile) || next_mobile != priority[l]) { syncable = FALSE; break; } - if (phone_str && *phone_str) - next_mobile = get_next_mobile (&next_mobile); - } + next_mobile = get_next_mobile (&next_mobile); + } } return syncable; |