diff options
author | Paul Sokolovsky <pmiscml@gmail.com> | 2008-01-21 02:00:12 +0000 |
---|---|---|
committer | Paul Sokolovsky <pmiscml@gmail.com> | 2008-01-21 02:00:12 +0000 |
commit | 08895188aa65145deff6c491c5129ec416d3e6aa (patch) | |
tree | c97c0fce0718a11a39733c5bfa973cf0b0935b7c /packages | |
parent | a4ee61a679f06dde608ce54de4aaae00086125ac (diff) |
gpe-contacts svn: Implement proper handling of VCARD categories.
* VCARD's CATEGORIES field used to be stuffed into contact's CATEGORY
field as is, which is not what gpe-contacts expect.
* So now, try to look up each of VCARD's categories (adding new accessor
to libgpepimc was required), if it doesn't exist, create it, and finally
put category ID into contact's CATEGORY field.
Diffstat (limited to 'packages')
-rw-r--r-- | packages/gpe-contacts/files/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/gpe-contacts/files/handle-import-categories.patch | 39 | ||||
-rw-r--r-- | packages/gpe-contacts/gpe-contacts_svn.bb | 3 | ||||
-rw-r--r-- | packages/libgpepimc/files/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/libgpepimc/files/get-category-by-name.patch | 45 | ||||
-rw-r--r-- | packages/libgpepimc/libgpepimc_0.9.bb | 3 |
6 files changed, 89 insertions, 1 deletions
diff --git a/packages/gpe-contacts/files/.mtn2git_empty b/packages/gpe-contacts/files/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/gpe-contacts/files/.mtn2git_empty diff --git a/packages/gpe-contacts/files/handle-import-categories.patch b/packages/gpe-contacts/files/handle-import-categories.patch new file mode 100644 index 0000000000..f64b1f6bbf --- /dev/null +++ b/packages/gpe-contacts/files/handle-import-categories.patch @@ -0,0 +1,39 @@ +diff -r abc014466432 import-vcard.c +--- a/import-vcard.c Mon Jan 21 01:55:53 2008 +0200 ++++ b/import-vcard.c Mon Jan 21 02:31:28 2008 +0200 +@@ -77,6 +77,35 @@ do_import_vcard (MIMEDirVCard *card) + { + gpe_tag_pair *t = i->data; + ++ if (!strcasecmp(t->tag, "CATEGORY")) ++ { ++ char *p, *e; ++ int cat_id; ++ ++ for (p = t->value; p; p = e) ++ { ++ while (*p == ' ') ++ p++; ++ e = strchr(p, ','); ++ if (e) ++ *e++ = 0; ++ cat_id = gpe_pim_category_id(p); ++ if (!cat_id) ++ { ++ if (!gpe_pim_category_new (p, &cat_id)) ++ { ++ gpe_error_box ("Unable to create category for imported item"); ++ sqlite_close (db); ++ return -2; ++ } ++ } ++ sqlite_exec_printf (db, "insert into contacts values ('%d', 'CATEGORY', '%d')", NULL, NULL, NULL, ++ id, cat_id); ++ } ++ ++ } ++ ++ + sqlite_exec_printf (db, "insert into contacts values ('%d', '%q', '%q')", NULL, NULL, NULL, + id, t->tag, t->value); + diff --git a/packages/gpe-contacts/gpe-contacts_svn.bb b/packages/gpe-contacts/gpe-contacts_svn.bb index c3ef1eb26b..9a626572a5 100644 --- a/packages/gpe-contacts/gpe-contacts_svn.bb +++ b/packages/gpe-contacts/gpe-contacts_svn.bb @@ -4,11 +4,12 @@ LICENSE = "GPL" DEPENDS = "libcontactsdb libgpewidget libgpepimc libdisplaymigration libgpevtype dbus" RDEPENDS = "gpe-icons" PV = "0.47+svnr${SRCREV}" -PR = "r1" +PR = "r2" inherit autotools gpe SRC_URI = "${GPE_SVN}" +SRC_URI += "file://handle-import-categories.patch;patch=1" S = "${WORKDIR}/${PN}" diff --git a/packages/libgpepimc/files/.mtn2git_empty b/packages/libgpepimc/files/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/libgpepimc/files/.mtn2git_empty diff --git a/packages/libgpepimc/files/get-category-by-name.patch b/packages/libgpepimc/files/get-category-by-name.patch new file mode 100644 index 0000000000..a733f40ccf --- /dev/null +++ b/packages/libgpepimc/files/get-category-by-name.patch @@ -0,0 +1,45 @@ +diff -r 90e7a26811fe db.c +--- a/db.c Mon Jan 21 02:03:38 2008 +0200 ++++ b/db.c Mon Jan 21 02:08:31 2008 +0200 +@@ -182,6 +182,30 @@ gpe_pim_category_name (gint id) + } + + /** ++ * gpe_pim_category_id: ++ * @name: Category name ++ * ++ * Get the category ID by name. ++ * ++ * Returns: Category ID or 0 if doesn't exist. ++ */ ++gint ++gpe_pim_category_id (const gchar *name) ++{ ++ GSList *iter; ++ ++ for (iter = categories; iter; iter = iter->next) ++ { ++ struct gpe_pim_category *c = iter->data; ++ ++ if (!strcasecmp(c->name, name)) ++ return c->id; ++ } ++ ++ return 0; ++} ++ ++/** + * gpe_pim_category_colour: + * @id: Category id + * +diff -r 90e7a26811fe gpe/pim-categories.h +--- a/gpe/pim-categories.h Mon Jan 21 02:03:38 2008 +0200 ++++ b/gpe/pim-categories.h Mon Jan 21 02:08:31 2008 +0200 +@@ -36,6 +36,7 @@ extern GSList *gpe_pim_categories_list ( + + extern gboolean gpe_pim_category_new (const gchar *title, gint *id); + extern const gchar *gpe_pim_category_name (gint id); ++extern gint gpe_pim_category_id (const gchar *name); + extern gboolean gpe_pim_category_rename (gint id, gchar *new_name); + + /* colour functions */ diff --git a/packages/libgpepimc/libgpepimc_0.9.bb b/packages/libgpepimc/libgpepimc_0.9.bb index 57b7b22191..e8c4664cf8 100644 --- a/packages/libgpepimc/libgpepimc_0.9.bb +++ b/packages/libgpepimc/libgpepimc_0.9.bb @@ -1 +1,4 @@ require libgpepimc.inc +PR = "r1" + +SRC_URI += " file://get-category-by-name.patch;patch=1" |