summaryrefslogtreecommitdiff
path: root/packages
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 /packages
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.
Diffstat (limited to 'packages')
-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"