summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafal Michalski <michalski.raf@gmail.com>2010-09-28 11:07:48 +0200
committerJohan Hedberg <johan.hedberg@nokia.com>2010-09-28 14:22:47 +0300
commit6321b4c94e06cc25124b54390ef4476cf0ba428c (patch)
tree0e82e5a826bbecb3ff253bc2afb19ee85cf24204
parent330b674f34f38ac40a7781043a9f4af8158cdbf4 (diff)
downloadobexd-6321b4c94e06cc25124b54390ef4476cf0ba428c.tar.gz
Fix problem with double number in call log
Previously after downloading call log there was two times the same number for call binded with phonebook - one HOME/WORK type and second OTHER type in downloaded vCard structure. Now there is only one number with proper type (HOME or WORK).
-rw-r--r--plugins/phonebook-tracker.c18
-rw-r--r--plugins/vcard.c1
2 files changed, 16 insertions, 3 deletions
diff --git a/plugins/phonebook-tracker.c b/plugins/phonebook-tracker.c
index ab874e5..2d94bc6 100644
--- a/plugins/phonebook-tracker.c
+++ b/plugins/phonebook-tracker.c
@@ -774,10 +774,24 @@ static struct phonebook_contact *find_contact(GSList *contacts, const char *id)
static struct phonebook_number *find_phone(GSList *numbers, const char *phone,
int type)
{
- GSList *l;
+ GSList *l = numbers;
struct phonebook_number *pb_num;
- for (l = numbers; l; l = l->next) {
+ if (g_slist_length(l) == 1 && (pb_num = l->data) &&
+ g_strcmp0(pb_num->tel, phone) == 0) {
+
+ if ((type == TEL_TYPE_HOME || type == TEL_TYPE_WORK) &&
+ pb_num->type == TEL_TYPE_OTHER) {
+ pb_num->type = type;
+ return pb_num;
+ }
+
+ if (type == TEL_TYPE_OTHER && (pb_num->type == TEL_TYPE_HOME ||
+ pb_num->type == TEL_TYPE_WORK))
+ return pb_num;
+ }
+
+ for (; l; l = l->next) {
pb_num = l->data;
/* Returning phonebook number if phone values and type values
* are equal */
diff --git a/plugins/vcard.c b/plugins/vcard.c
index c720954..41f9fbd 100644
--- a/plugins/vcard.c
+++ b/plugins/vcard.c
@@ -452,7 +452,6 @@ static void vcard_printf_datetime(GString *vcards,
static void vcard_printf_end(GString *vcards)
{
vcard_printf(vcards, "END:VCARD");
- vcard_printf(vcards, "");
}
void phonebook_add_contact(GString *vcards, struct phonebook_contact *contact,