summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Sokolovsky <pmiscml@gmail.com>2008-01-21 02:00:12 +0000
committerPaul Sokolovsky <pmiscml@gmail.com>2008-01-21 02:00:12 +0000
commit08895188aa65145deff6c491c5129ec416d3e6aa (patch)
treec97c0fce0718a11a39733c5bfa973cf0b0935b7c
parenta4ee61a679f06dde608ce54de4aaae00086125ac (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.
-rw-r--r--packages/gpe-contacts/files/.mtn2git_empty0
-rw-r--r--packages/gpe-contacts/files/handle-import-categories.patch39
-rw-r--r--packages/gpe-contacts/gpe-contacts_svn.bb3
-rw-r--r--packages/libgpepimc/files/.mtn2git_empty0
-rw-r--r--packages/libgpepimc/files/get-category-by-name.patch45
-rw-r--r--packages/libgpepimc/libgpepimc_0.9.bb3
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"