Pi’s Blog

My blog about Thunderbird and GSoC 2008

gContactSync Updates

Google Contacts API Update

Google announced a new version, 0.3, of their contacts data API yesterday.  It adds a significant amount of flexibility, several new fields, and enhances existing fields.  Some of the major changes include:

  • Structured Postal Addresses – It is now possible to keep the structured address fields that Thunderbird has without converting them.
  • A birthday field – I am currently working on enhancing the birthday field that will be present in Thunderbird 3, so the birthday values will be synchronized by default.  If you use Thunderbird 2 the values will still be stored and displayed once you upgraded to 3.
  • Website fields with various types (list)
  • More phone number types
  • A nickname field

It doesn’t look like all of the changes are available in Gmail yet, but you can see a few of them here.

Version 0.3

I am going to start working on Version 0.3 sometime this week which will use the new API and hopefully include some of the most frequently requested enhancements.  For those of you familiar with Bugzilla, I have a bug tracking my changes.  I am going to focus heavily on Thunderbird 3 starting with version 0.3 and may drop support for 2 with future versions.  If you are opposed to this please let me know and I will reconsider.

Here are some potential features.    Please keep in mind that I have a full time internship that involves programming and am starting an online class soon, so I may have to delay some of these.  The links are to bugs where I will track my progress.

  • Code refactoring.  This isn’t the most popular feature request, but I would like to like to reorganize the existing code with the new API and these enhancements in mind.
  • Contact photos.  I am working on contact photos in Thunderbird 3 and have a modified version of gContactSync 0.2.4 that will download photos from Google when adding contacts for the first time.  Due to time constraints, 0.3 may be limited to downloading photos only in TB 3.
  • Synchronizing all fields that only Thunderbird has and allow for customization of that data.
  • Adding a new ‘Relation’ field.  This describes the relationship between you and the contact (brother, sister, mother, father, child, coworker, etc.).  I haven’t found an existing request for Thunderbird in Bugzilla, so maybe I could add it in Thunderbird rather than just gContactSync.
  • Several more types of phone numbers. (list)
  • Website field types, and possibly more fields.
  • More advanced synchronization with a more intuitive wizard (pick an account, then all groups w/ mailing lists, one group, or no groups/all contacts, plus a few options).  Syncing individual groups with address books instead of mailing lists would prevent nearly all error reports that I get.
  • A button or context menu to synchronize only one directory.

Version 0.2

There have been a few new versions of gContactSync 0.2.  It is currently up to version 0.2.3 that handles mailing list bugs a bit more gracefully.  Download.

Since the development of 0.3 is going to take some time, I am going to slow down development of 0.2 and let it get translated to more languages.

Locales

  • ZaZy was kind enough to translate gContactSync to Italian (it).  Updates to the locale will be in 0.2.4
  • A Russian (ru-RU) translation is being worked on courtesy of Glk63 on BabelZilla.
  • A French (fr-FR) translation is in progress by afroxav.  Another translation was done by LaGrange.

Lessons Learned

  1. Mailing lists are evil.  Just kidding, but they can be broken easily rending them (and their parent address book) useless.  The cause of nearly every error report I have received so far is directly related to mailing lists.
  2. The nobody<id>@nowhere.invalid workaround helps but it is still possible to break mailing lists with this workaround.
  3. People would like to see gContactSync in their native language.
  4. People have good ideas and valuable suggestions.  I have received a lot of feedback and requests.  While I don’t have the time to implement every suggestion, I can at least try to add the more popular suggestions
  5. Creating a forum was a good idea.

Helping with Development

If you know a bit about JavaScript, XML, XUL, and/or CSS or even if you would like to learn I wouldn’t mind letting others fix bugs or enhance gContactSync.  The code has a decent amount of comments and I generated some JsDoc of 0.2.

Or if you are good with icons and could make at least a sync button image I’m sure everyone would appreciate it.

June 10, 2009 Posted by | GSOC, thunderbird | , , | 2 Comments

gContactSync 0.2.2 Released

Download

You can find the download on addons.mozilla.org (recommended) or mozdev.org.

Current Features

  • All the features of 0.1
    • Synchronizes an address book in Thunderbird with contacts from a Google Account (Gmail)
    • Customizable
    • Groups in Gmail are synchronized with mailing lists in Thunderbird
  • Duplicates (multiple contacts with the same e-mail address) are allowed
  • Much faster synchronization than 0.1
  • Only US English (en-US) for now, but more translations coming soon
  • Customization of how addresses are synchronized
  • Can synchronize just one group (My Contacts), all groups (including My Contacts, Family, Friends, & Coworkers), or all contacts and no groups
  • A new fetch-only mode where Thunderbird only receives updates and never sends updates to or deletes contacts from Google.

Changes since 0.2.0

  • Added some workarounds for mailing list bugs in Thunderbird (easily the number 1 cause of problems with gContactSync)
  • Added a FAQs page on the wiki and a link in the gContactSync menu
  • Improved logging (to help me with troubleshooting)
  • Fixed the Advanced tab of the Preferences dialog
  • Improved the first/last name parsing for contacts from Gmail

Where to look for help

You can use the following resources for help or suggestions for gContactSync:

JSDoc

I am working on improving the documentation for any interested developers.  You can find it here, and it will probably change and improve in the near future.  If you are interested in helping please let me know.  It is open source, so you are free to use it as long as you follow the license.

May 23, 2009 Posted by | GSOC, thunderbird | | Leave a comment

gContactSync 0.2.0 on AMO

I finally added gContactSync 0.2.0 to addons.mozilla.org.  I also placed it on BabelZilla so I should be able to add more locales (translations).  Since it is new and hasn’t been reviewed yet, it is still listed as “Experimental”.

Current Features

  • All the features of 0.1
    • Synchronizes an address book in Thunderbird with contacts from a Google Account (Gmail)
    • Customizable
    • Groups in Gmail are synchronized with mailing lists in Thunderbird
  • Duplicates (multiple contacts with the same e-mail address) are allowed
  • Much faster synchronization than 0.1
  • Only US English (en-US) until I finish adding features and strings
  • Customization of how addresses are synchronized
  • Can synchronize just one group (My Contacts), all groups (including My Contacts, Family, Friends, & Coworkers), or all contacts and no groups
  • A new fetch-only mode where Thunderbird only receives updates and never sends updates to or deletes contacts from Google.

Bugfixes & Enhancements since 0.1.x

Bugs in italics are new since 0.2.0b3

  • Bug 20925 Log the preferences
  • Bug 20907 onDrop needs to set dummy e-mails if the target is a mailing list
  • Bug 20681 Handle expired tokens
  • Bug 20655 Login dialogs should specify and validate an e-mail address
  • Bug 20549 Add a hidden preference to disable dummy e-mail address
  • Bug 20119 Improve the first login dialog
  • Bug 20891 gContactSync ignores the name in the first login dialog
  • Bug 20888 Change untyped phone number labels in the card view
  • Bug 20833 Add a preference to disable the new phone number labels in abResultsTreeCols
  • Bug 20865 Allow synchronizing only one group (My Contacts)
  • Bug 20864 The group XML feed is displayed in the verbose log twice
  • Bug 20771 Allow name parsing
  • Bug 20779 Add a preference to disable auto-delete
  • Bug 20853 Too much recursion when the log directory is deleted
  • Bug 20852 Illegal rel value due to dummy e-mail address
  • Bug 20658 Add version info to the log
  • Bug 20739 Add links to the support forum & wiki in the menu
  • Bug 20757 Allow read/fetch of Google Contacts only
  • Bug 20546 – Search is broken in gContactSync 0.2
  • Bug 20644 – Localize all strings in options.xul
  • Bug 20656 – Error: gAddressBookBundle is undefined
  • Bug 20527 – Avoid HTTP Request errors when the Address Book window is closed
  • Bug 20509 – Add Seamonkey support
  • Bug 20508 – Consider adding overlay.css to customizeToolbar.xul
  • Bug 20487 – Add shortcut to preferences in the Address Book
  • Bug 20486 – Improve Address Preferences
  • Bug 20352 – Update gContactSync to use Contacts Data API 2
  • Bug 20148 – Default groups dont appear in Thunderbird
  • Bug 19786 – Support for Google’s ‘Most Contacted’ & ‘Suggested Contacts’

Feedback

I would love to hear your feedback, whether positive or negative (if polite ;)).  My new preferred method of feedback is through the forum, which will hopefully help me stop forgetting to reply to e-mail and let others add their opinions to feedback.  Please send logs with the error report form or via e-mail and do not put them on the forum.

I am working on updating the wiki with articles on how to use and troubleshoot gContactSync.

I will be adding some polls here and would appreciate any feedback.

Tutorials

Flash tutorials are coming soon…  I’ll write another blog post when they are ready.

May 9, 2009 Posted by | GSOC, thunderbird | , , , | Leave a comment

gContactSync 0.2.0b3 Released

I have released gContactSync 0.2.0b3, and you can download it here.  This version adds the ability to synchronize just the My Contacts group along with a few GUI and logging changes.

Current Features

  • All the features of 0.1
    • Synchronizes an address book in Thunderbird with contacts from a Google Account (Gmail)
    • Customizable
    • Groups in Gmail are synchronized with mailing lists in Thunderbird
  • Duplicates (multiple contacts with the same e-mail address) are allowed
  • Much faster synchronization than 0.1
  • Only US English (en-US) until I finish adding features and strings
  • Customization of how addresses are synchronized
  • Can synchronize just one group (My Contacts), all groups (including My Contacts, Family, Friends, & Coworkers), or all contacts and no groups
  • A new fetch-only mode where Thunderbird only receives updates and never sends updates to or deletes contacts from Google.

Synchronizing only My Contacts

Switching from synchronizing all contacts or all groups + all contacts to only one group (My Contacts by default) has a few steps and should be done through the Preferences dialog only to avoid a lot of complications.

When switching, the preferences dialog will:
– Remove all mailing lists from synchronized address books
– Remove all contact from synchronized address books
– Reset the last sync date to 0 for all synced address books

This should not delete anything from Google (but did once before I fixed a bug), but you really should backup all contacts before switching.

I did test this process several times, but there may be bugs, so please let me know if there are any problems, and backup your contacts first. I’ll open new bug reports and leave this closed.

What Features are left for 0.2.0?

I will release at least one more version, 0.2.0rc1, before 0.2.0 with some GUI changes and possibly some bug fixes.  At this point, I think all of the features that will be in 0.2.0 are present

Bugfixes & Enhancements since 0.1.x

Bugs in italics are new since 0.2.0b2r2

  • Bug 20891 gContactSync ignores the name in the first login dialog
  • Bug 20888 Change untyped phone number labels in the card view
  • Bug 20833 Add a preference to disable the new phone number labels in abResultsTreeCols
  • Bug 20865 Allow synchronizing only one group (My Contacts)
  • Bug 20864 The group XML feed is displayed in the verbose log twice
  • Bug 20771 Allow name parsing
  • Bug 20779 Add a preference to disable auto-delete
  • Bug 20853 Too much recursion when the log directory is deleted
  • Bug 20852 Illegal rel value due to dummy e-mail address
  • Bug 20658 Add version info to the log
  • Bug 20739 Add links to the support forum & wiki in the menu
  • Bug 20757 Allow read/fetch of Google Contacts only
  • Bug 20546 – Search is broken in gContactSync 0.2
  • Bug 20644 – Localize all strings in options.xul
  • Bug 20656 – Error: gAddressBookBundle is undefined
  • Bug 20527 – Avoid HTTP Request errors when the Address Book window is closed
  • Bug 20509 – Add Seamonkey support
  • Bug 20508 – Consider adding overlay.css to customizeToolbar.xul
  • Bug 20487 – Add shortcut to preferences in the Address Book
  • Bug 20486 – Improve Address Preferences
  • Bug 20352 – Update gContactSync to use Contacts Data API 2
  • Bug 20148 – Default groups dont appear in Thunderbird
  • Bug 19786 – Support for Google’s ‘Most Contacted’ & ‘Suggested Contacts’

Feedback

I would love to hear your feedback, whether positive or negative (if polite ;) ).  My new preferred method of feedback is through the forum, which will hopefully help me stop forgetting to reply to e-mail and let others add their opinions to feedback.  Please send logs with the error report form or via e-mail and do not put them on the forum.

I am working on updating the wiki with articles on how to use and troubleshoot gContactSync.

I will be adding some polls here and would appreciate any feedback.

Tutorials for 0.2.0

I will probably create some flash tutorials like the original one I had.  This time I will probably host them on YouTube to prevent my website from getting blasted again.

May 1, 2009 Posted by | GSOC, thunderbird | , , | 2 Comments

gContactSync 0.2.0b2r2 Released

I have released gContactSync 0.2.0b2r2, and you can download it here.  The only changes are a few bug fixes, some logging improvements, support for Thunderbird 3.1a1pre, and a new link to the error reporting form in the gContactSync menu.  I recommend upgrading if possible, but if you already have 0.2.0b2r1 it isn’t too urgent.

Current Features

  • All the features of 0.1
    • Synchronizes an address book in Thunderbird with contacts from a Google Account (Gmail)
    • Customizable
    • Groups in Gmail are synchronized with mailing lists in Thunderbird
  • Duplicates (multiple contacts with the same e-mail address) are allowed
  • Much faster synchronization than 0.1
  • Only US English (en-US) until I finish adding features and strings
  • Customization of how addresses are synchronized
  • Default groups are enabled (Family, Friends, Coworkers) as mailing lists in Thunderbird
  • A new fetch-only mode where Thunderbird only receives updates and never sends updates to or deletes contacts from Google.

What Features are left for 0.2.0?

0.2.0 will probably have an option to just synchronize the My Contacts group since it contains the most important contacts and is all some devices, like the iPhone/iPod touch, synchronize.  It will also help avoid the usual problems with mailing lists.  I may also make some UI changes before 0.2.0.

Bugfixes & Enhancements since 0.1.x

Bugs in italics are new since 0.2.0b2r1

  • Bug 20779 Add a preference to disable auto-delete
  • Bug 20853 Too much recursion when the log directory is deleted
  • Bug 20852 Illegal rel value due to dummy e-mail address
  • Bug 20658 Add version info to the log
  • Bug 20739 Add links to the support forum & wiki in the menu
  • Bug 20757 Allow read/fetch of Google Contacts only
  • Bug 20546 – Search is broken in gContactSync 0.2
  • Bug 20644 – Localize all strings in options.xul
  • Bug 20656 – Error: gAddressBookBundle is undefined
  • Bug 20527 – Avoid HTTP Request errors when the Address Book window is closed
  • Bug 20509 – Add Seamonkey support
  • Bug 20508 – Consider adding overlay.css to customizeToolbar.xul
  • Bug 20487 – Add shortcut to preferences in the Address Book
  • Bug 20486 – Improve Address Preferences
  • Bug 20352 – Update gContactSync to use Contacts Data API 2
  • Bug 20148 – Default groups dont appear in Thunderbird
  • Bug 19786 – Support for Google’s ‘Most Contacted’ & ‘Suggested Contacts’

Sync Button Details

Newest instructions.

Quite a few users have reporting seeing a strange and ugly icon for the Sync button:

Toolbar buttons

It should look like this for now:

abcard-large

If you still see the incorrect icons there is a workaround that should fix it:

  1. In the Address Book window, go to gContactSync -> Preferences
  2. Check Force the Sync toolbar button image.
  3. Click OK/Close
  4. Close the Address Book window and open it again.

If those instructions still do not work, please let me know.

Feedback

I would love to hear your feedback, whether positive or negative (if polite ;)).  My new preferred method of feedback is through the forum, which will hopefully help me stop forgetting to reply to e-mail and let others add their opinions to feedback.  Please send logs with the error report form or via e-mail and do not put them on the forum.

I am working on updating the wiki with articles on how to use and troubleshoot gContactSync.

I will be adding some polls here and would appreciate any feedback.

Tutorials for 0.2.0

I will probably create some flash tutorials like the original one I had.  This time I will probably host them on YouTube to prevent my website from getting blasted again.

April 24, 2009 Posted by | GSOC, thunderbird | , | Leave a comment

Duplicate contacts in Thunderbird 3

As the author of a synchronization extension for Thunderbird 2 and 3, I get a lot of questions about duplicate contacts.  Duplicates are more common than ever  with the explosive popularity of mobile devices.

There is a fairly popular Duplicate Contact Manager Extension on AMO, but it hasn’t been updated recently, won’t work in Thunderbird 3, and comments mention some bugs, possibly including one that was present in gContactSync 0.2.0a1.

I have not found a way to contact the author, Marian Steinbach, to offer my assistance with updating it for Thunderbird 3.  It looks like the Google Group doesn’t have much activity.

I can reuse a good chunk of code from gContactSync which would allow it to work in Thunderbird 2 or 3, but I would most likely package it as a new extension to not force everyone to install gContactSync just to remove duplicate contacts.  I had some primitive duplicate detection code in 0.1.x, but it was inefficient and only checked e-mail addresses since that’s what Google used to identify duplicates.

So, I have three questions.

  1. Would there be enough interest to warrant new duplicate contacts extension?
  2. Would anyone else like to work with me to develop one?  I already have plenty of code for working with contacts and the address book; it would just need an intuitive, customizable front-end and an efficient way to find duplicates.  I’m just a bit busy with work, gContactSync, online classes, and a possibly emerging social life.
  3. Does anyone have a way of contacting the original developer?

April 6, 2009 Posted by | GSOC, thunderbird | , , | 8 Comments

gContactSync 0.2.0a2

About

gContactSync 0.2 takes advantage of Google’s updated and improved API for obtaining and modifying contacts.  Duplicates are allowed which, combined with a rewrite of the synchronization code, provides a significantly faster synchronization process.  The longest delay now seems to be receiving the contacts from Google.  There may be some room for improvement there, but I do not want to make too many changes yet until I make sure that the ones I made did not introduce any bugs.

The new API exposes the system groups, which include  My Contacts, Family, Friends, and Coworkers.  All contacts from the account, including Suggested Contacts are in the synchronized address book.  There is a mailing list for each of the pre-defined system groups and each custom group.

You can download it here, but I rewrote the most important code and there may be bugs I haven’t found in it yet.  I would only advise those who have hundreds or thousands of contacts and receive the “Unresponsive Script” warning to try it.  Please read the upgrade instructions below.

NOTE: Google allows contacts without e-mail addresses, but Thunderbird will break if a contact without an e-mail address is manually added to a mailing list as explained in Bug 20153.  If you encounter that bug in 0.1.x please let me know because it is somewhat difficult to fix and all attempts to synchronize after it breaks will fail.  To avoid this, 0.2 adds an email address “nobody@nowhere.invalid” to any contact without one.  However, only unique e-mail addresses are allowed in mailing lists, so only one contact with an empty e-mail address is allowed per group/mailing list is allowed until o.2.0b1.  The other contacts will appear in the address book only.

Current Features

  • All the features of 0.1
  • Duplicates (multiple contacts with the same e-mail address) are allowed
  • Much faster synchronization
  • Only US English (en-US) until I finish adding features and strings
  • Customization of how addresses are synchronized
  • Default groups are enabled (Family, Friends, Coworkers) as mailing lists in Thunderbird

Requirements

  • Thunderbird 2.0 or Thunderbird 3.0 (a1pre through the trunk build b3pre) or Seamonkey 2.0 only (not 1.1.x)
  • A Google account or Google-hosted account
  • An Internet connection faster than dialup (DSL, cable, satellite, etc)

Planned Features

  • More locales
  • Maybe addons.mozilla.org?
  • Let me know what else you would like, but I can’t promise anything

Upgrade instructions to 0.2.0

  • In the address book, synchronize contacts one last time.
  • Rename the synchronized address book(s), this is just so you have a backup of your contacts.
  • In the main window, go to Tools -> Add-ons -> gContactSync -> Options/Preferences
  • In the Accounts tab, select one account at a time in remove them.
  • Install the new version and restart Thunderbird.  There is no need to remove the previous version first.
  • Open the Address Book window and fill in the information for your first account.

Bugfixes/enhancements from 0.1.x

  • Bug 20527 – Avoid HTTP Request errors when the Address Book window is closed
  • Bug 20509 – Add Seamonkey support
  • Bug 20508 – Consider adding overlay.css to customizeToolbar.xul
  • Bug 20487 – Add shortcut to preferences in the Address Book
  • Bug 20486 – Improve Address Preferences
  • Bug 20352 – Update gContactSync to use Contacts Data API 2
  • Bug 20148 – Default groups dont appear in Thunderbird
  • Bug 19786 – Support for Google’s ‘Most Contacted’ & ‘Suggested Contacts’

Known Bugs:

  • Bug 20153 – Partial fix only – Groups containing contacts without email addresses break in Thunderbird

February 8, 2009 Posted by | GSOC, thunderbird | , , , , | Leave a comment

gContactSync Versions 0.1.3 & 0.2.0a1

Version 0.1.3

Basic Features

  • Synchronizes contacts between Google Mail and Mozilla Thunderbird (2 or 3, including Thunderbird 3.0b1 and the trunk build [3.0b2pre] as it is today)
  • Can synchronize several accounts with their own address books
  • Adds attributes and “types” for phone numbers and screennames to Thunderbird
  • Customizable with a preferences dialog
  • en-US and es-ES locales

Bugfixes

  • 20188 Card Dialog overlay is broken on trunk builds
  • 20169 Extra attributes should be disabled for read-only cards
  • 20152 ‘TypeError: iter.first is not a function’ in Thunderbird 3
  • 20145 Error: document.getElementById(“syncExtended”) is null – options.js Line: 49
  • 20389 Values with only spaces should be treated as empty

Known Bugs

  • 20153 Groups containing contacts without email addresses break in Thunderbird.  Please be careful if you have any contacts without e-mail addresses.  Until 0.2.0, please do not put them in a group other than the pre-defined groups by Google (My Contacts, Family, Friends, & Coworkers)

Download

Version 0.2

Google has released an updated and improved API for obtaining and modifying contacts that will be used in version 0.2 of gContactSync.

You can download it here, but I rewrote the most important code and there may be bugs I haven’t found in it yet.  I would only advise those who have hundreds or thousands of contacts and receive the “Unresponsive Script” warning to try it.  It has a fix for Bug 20153 if you encounter that.

Current Features

  • All the features of 0.1
  • Duplicates (multiple contacts with the same e-mail address) are allowed
  • Much faster synchronization
  • Only US English (en-US) until I finish adding features and strings

Planned Features

  • More locales
  • Customization of how addresses are synchronized
  • Default groups are enabled (Family, Friends, Coworkers) as mailing lists in Thunderbird
  • My Contacts and suggested contacts are now separated to an extent.  All contacts will appear in the main address book, and each group (My Contacts, Family, Friends, Coworkers, and any custom group) has a corresponding mailing list in Thunderbird.
  • Let me know what else you would like, but I can’t promise anything
  • Maybe addons.mozilla.org?

Upgrade instructions to 0.2.0

  • In the address book, synchronize contacts one last time.
  • Rename the synchronized address book(s), this is just so you have a backup of your contacts.
  • In the main window, go to Tools -> Add-ons -> gContactSync -> Options/Preferences
  • In the Accounts tab, select one account at a time in remove them.
  • Install the new version and restart Thunderbird.  There is no need to remove the previous version first.
  • Open the Address Book window and fill in the information for your first account.

January 18, 2009 Posted by | GSOC, thunderbird | 2 Comments

Birthday Field for Thunderbird’s Address Book

While working on my extension and reading discussions in #maildev, I noticed Bug 13595 – Add Birthday Fields to Address Book is still marked as NEW but has a high priority and a lot of votes in Bugzilla.  With the datepicker XUL element now available and some knowledge of the address book from working on my extension, adding a birthday field should be simple, but I have a few questions about how exactly this should appear.  This post isn’t a promise to fix this since school starts very soon and I’m trying to graduate in 3 years (1 year left after this year), but I’d like to at least get things started so somebody else can finish things up, if I am unable to do so myself.

Question #1: Which type of datepicker should be used?

There are three valid types for the datepicker element

  1. Normal – This just shows a small box that lets one type or increment/decrement the date shown with the arrows
  2. Grid – This shows a calendar and lets one click arrows to change the month (and year) and select a day from the calendar.
  3. Popup – It shows the same box as Normal, but also allows one to chose the date from a calendar like Grid does.

Notes: the two gContactSync tabs are from my extension and the Other tab isn’t necessarily going to be used; it just had the most extra room, and not all three types will be present, obviously.

Question #2 Which tab (for now)?

I know that the new/edit card dialogs might change, but which tab is best until then?  Where should it be located in the tab?

Question #3 What if the user doesn’t change the date?  How can a date be removed?

If the user doesn’t change the date, we probably do not want to save the birthday info.  Right now it only saves the date if it was changed, but there is not a way to remove the date for now.

Question #4 Store the BirthMonth as a number from 0-11 (like JavaScript does) or 1-12?

I tested LDIF import/export of the birthday information, but I remembered that JavaScript treats the month as a number from 0-11 and that is how I store the month.  Storing it as an integer from 0-11 is easiest since it is accessed through JavaScript (and shown from 1-12).

Progress

I have created an initial patch that uses a popup datepicker in the Other tab that only sets the card’s BirthDay, BirthMonth, and BirthYear if the datepicker has been updated.  It also adds the birthday to the card view in the format generated by Date.toLocaleDate()

I added BirthDay and BirthMonth to the attribute map in mailnews.js so it will export the birthday information (BirthYear is already present).  CSV and tab imports and exports BirthDay, BirthMonth and BirthYear already.

You can see my current WIP here.

August 17, 2008 Posted by | thunderbird | , , | 4 Comments

Update

Contact Conversion Rewrite

I finally finished rewriting the code to convert contacts as it was overly complicated and some code was duplicated a few times.  Along the way I was greeted with an error message I’ve never seen:

Error: XML descendants internal method called on incompatible Object
The cause: I put two periods where only one was needed..

Copying/Moving Cards

I previously mentioned that copying or moving a card would make it lose the attributes added by this extension, but this is now fixed.  It does slow down copying and, more noticably, moving cards, so there is a new preference to disable this.

Miscellaneous Bug Fixes

I’ve been searching for bugs to fix and found a few.  Not all of the preferences worked, but I think they should be fixed now.  The Home section of the card view was sometimes visible when none of the relevant attributes were present, as well, due to a mistake I made in the overlay.

Bug 448165

While working on overriding the method to copy/move cards, I crashed Thunderbird by calling the deleteSelectedCards method of the address book view when no cards were selected.  After using gdb to look at the backtrace, I found that calling nsIAbMDBDirectory::DeleteCards crashes if null is passed to it.  I wrote a unit test and patch, but I am installing FreeBSD and compiling Gnome and it’s dependencies on my slow laptop (on which I test patches in Windows), so I have not tested the patch or test in Windows yet.

Removing the Auth Token

I have now added and tested a button to remove the auth token on the first tab of the extension preferences.  If you ever wish to remove the extension, I suggest you remove the auth token.  Additionally, if you are getting authentication errors, remove the auth token, close the Address Book if it was open, and re-open the Address Book to sign in again.

July 27, 2008 Posted by | GSOC, thunderbird | , , , , , , | 1 Comment