Bug 96263 - Trouble importing apple addressbook vcard into kaddressbook
Summary: Trouble importing apple addressbook vcard into kaddressbook
Status: RESOLVED UNMAINTAINED
Alias: None
Product: kab3
Classification: Miscellaneous
Component: general (show other bugs)
Version: 3.3
Platform: unspecified Linux
: NOR wishlist
Target Milestone: ---
Assignee: Tobias Koenig
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-01-04 00:57 UTC by Sitsofe Wheeler
Modified: 2009-08-05 16:21 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments
Vcard exported from Apple Addressbook (44.00 KB, text/x-vcard)
2005-01-04 00:58 UTC, Sitsofe Wheeler
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Sitsofe Wheeler 2005-01-04 00:57:55 UTC
Version:           3.3 (using KDE 3.2.3, Mandrake Linux Cooker i586 - Cooker)
Compiler:          gcc version 3.4.1 (Mandrakelinux 10.1 3.4.1-4mdk)
OS:                Linux (i686) release 2.6.8.1-12mdk

Description:
Importing an Apple Addressbook Vcard results in many fields remaining empty.

How to reproduce:
1. Download the attached Vcard and save it locally.
2. Start kontact-addressbook.sh
3. Go to File -> Import -> Import Vcard...
4. Browse to the downloaded vcard and click OK

Expected behaviour:
(I shall focus on what is missing rather than what is correct because the list is long)
Company to be in the Organisation field
Home address to be filled in
Work address to be filled in
othersphone to be selectable from one of the drop downs at the top right
Other Email to be visible in the Edit Email Addresses window
Department to be in the Department field
Job Title to be in the Profession field
Photo to be added and visible

Actual results:
(again I am only focussing on what appears to be wrong)
Company;Department is in the Organisation field
Home address is missing
Work address is missing
othersphone is not findable
Other Email is not findable
The Department field is empty
Profession is empty
Photo is not visible

Additional Information:
I have a small collection of vcards that I am using to test Vcard interop between several addressbook programs. Please let me know if it would be helpful to provide them...
Comment 1 Sitsofe Wheeler 2005-01-04 00:58:46 UTC
Created attachment 8907 [details]
Vcard exported from Apple Addressbook
Comment 2 Tobias Koenig 2005-01-04 01:49:55 UTC
Hi,

I changed it to a whishlist item, because this vCard uses a special vCard feature called grouping which isn't implemented in our vCard parser yet.

To the other issues:
  1) department and profession are non standardized fields which every
  addressbook application handles differently, adding hacks for it doesn't
  make much sense and leads to ugly code

  2) the photo entry is invalid, concerning the vCard standard (RFC2426) it
     must contain a type field
Comment 3 Sitsofe Wheeler 2005-01-04 23:00:08 UTC
I've just been reading RFC2426 and I have failed to find the section that says a photo must have a type field. From reading of the grammar (http://zvon.org/tmRFC/RFC2426/Output/index.html ) my understanding is that it is completely optional because of this:
   contentline  = [group "."] name *(";" param ) ":" value CRLF
* means 0 or more and since the parameters can be any order there need not be a type field (although that BASE64 bit looks suspicious). 
Comment 4 Tobias Koenig 2005-01-08 02:33:46 UTC
CVS commit by tokoe: 

Parse images from Apples MacOSX addressbook correctly.

BUG:96263


  M +5 -3      vcardtool.cpp   1.11
  M +3 -0      vcardparser/vcardparser.cpp   1.16


--- kdelibs/kabc/vcardtool.cpp  #1.10:1.11
@@ -623,7 +623,9 @@ Picture VCardTool::parsePicture( const V
 
   QStringList params = line.parameterList();
-  if ( params.findIndex( "encoding" ) != -1 )
-    pic.setData( line.value().asByteArray() );
-  else if ( params.findIndex( "value" ) != -1 ) {
+  if ( params.findIndex( "encoding" ) != -1 ) {
+    QImage img;
+    img.loadFromData( line.value().asByteArray() );
+    pic.setData( img );
+  } else if ( params.findIndex( "value" ) != -1 ) {
     if ( line.parameter( "value" ).lower() == "uri" )
       pic.setUrl( line.value().asString() );

--- kdelibs/kabc/vcardparser/vcardparser.cpp  #1.15:1.16
@@ -77,4 +77,7 @@ VCard::List VCardParser::parseVCards( co
                 pair[0] = "encoding";
                 pair[1] = "quoted-printable";
+              } else if ( pair[0].lower() == "base64" ) {
+                pair[0] = "encoding";
+                pair[1] = "base64";
               } else {
                 pair.prepend( "type" );


Comment 5 Sitsofe Wheeler 2005-01-09 22:18:24 UTC
Woah there! First up thanks for the photo fix. However you mentioned making lack of grouping support a wishlist proposal... Do you want me to spin that off into a different bug?
Comment 6 Tobias Koenig 2005-01-10 09:44:07 UTC
On Sun, Jan 09, 2005 at 09:18:25PM -0000, Sitsofe Wheeler wrote:
Hi,

> Woah there! First up thanks for the photo fix. However you mentioned making
> lack of grouping support a wishlist proposal... Do you want me to spin that
> off into a different bug?
That's fixed in the meantime as well.

Ciao,
Tobias
Comment 7 Tobias Koenig 2009-08-05 16:21:05 UTC
The development of the old KAddressBook will be discontinued for KDE 4.4.
Since the new application has the same name, but a completly new code base we close all bug reports against the old version and ask the submitters to resend there reports against the new product.