[oe-commits] org.oe.dev gpe-contacts svn: Implement proper handling of VCARD categories.

pfalcon commit openembedded-commits at lists.openembedded.org
Mon Jan 21 01:56:29 UTC 2008


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.

Author: pfalcon at openembedded.org
Branch: org.openembedded.dev
Revision: 6a123114c50d24ba777fd796259528ed55d645bd
ViewMTN: http://monotone.openembedded.org/revision/info/6a123114c50d24ba777fd796259528ed55d645bd
Files:
1
packages/gpe-contacts/files
packages/libgpepimc/files
packages/gpe-contacts/files/handle-import-categories.patch
packages/libgpepimc/files/get-category-by-name.patch
packages/gpe-contacts/gpe-contacts_svn.bb
packages/libgpepimc/libgpepimc_0.9.bb
Diffs:

#
# mt diff -r56c59086f09a27c23ec13244a35460a196922919 -r6a123114c50d24ba777fd796259528ed55d645bd
#
# 
# 
# add_dir "packages/gpe-contacts/files"
# 
# add_dir "packages/libgpepimc/files"
# 
# add_file "packages/gpe-contacts/files/handle-import-categories.patch"
#  content [c64efe2a043c2b41dac1d1aded8e7d69c7cc8528]
# 
# add_file "packages/libgpepimc/files/get-category-by-name.patch"
#  content [d1a31ddcfed22cdcf7a609bdb6b81300611e8c2c]
# 
# patch "packages/gpe-contacts/gpe-contacts_svn.bb"
#  from [fce4a7d681a33b62b5c0ce62b142b59bec7eaa50]
#    to [a43616c3527acc4434a090426860fe4d28311f99]
# 
# patch "packages/libgpepimc/libgpepimc_0.9.bb"
#  from [7a9ea4146dd6f4a2a77c670d63ee19ae625c8107]
#    to [df80a88655b33f7d534bb803af92c928ccd72552]
# 
============================================================
--- packages/gpe-contacts/files/handle-import-categories.patch	c64efe2a043c2b41dac1d1aded8e7d69c7cc8528
+++ packages/gpe-contacts/files/handle-import-categories.patch	c64efe2a043c2b41dac1d1aded8e7d69c7cc8528
@@ -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);
+     
============================================================
--- packages/libgpepimc/files/get-category-by-name.patch	d1a31ddcfed22cdcf7a609bdb6b81300611e8c2c
+++ packages/libgpepimc/files/get-category-by-name.patch	d1a31ddcfed22cdcf7a609bdb6b81300611e8c2c
@@ -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 */
============================================================
--- packages/gpe-contacts/gpe-contacts_svn.bb	fce4a7d681a33b62b5c0ce62b142b59bec7eaa50
+++ packages/gpe-contacts/gpe-contacts_svn.bb	a43616c3527acc4434a090426860fe4d28311f99
@@ -1,14 +1,15 @@ PV = "0.47+svnr${SRCREV}"
 DESCRIPTION = "GPE contacts manager"
 SECTION = "gpe"
 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}"
 
============================================================
--- packages/libgpepimc/libgpepimc_0.9.bb	7a9ea4146dd6f4a2a77c670d63ee19ae625c8107
+++ packages/libgpepimc/libgpepimc_0.9.bb	df80a88655b33f7d534bb803af92c928ccd72552
@@ -1 +1,4 @@ require libgpepimc.inc
 require libgpepimc.inc
+PR = "r1"
+
+SRC_URI += " file://get-category-by-name.patch;patch=1"






More information about the Openembedded-commits mailing list