
libGefax
----------

This is my first attempt to write a library and (simple) widgets.

About the Address Book
-----------------------

*Credits
	- All of the library has been built by me (Daryl Gray), however, many design idears and code idears
		come from gnome-card & Evolution. Thats the idear of Free sofware?
	- So credit where its due. When you find a similarity please give a thought for the original designer/programmer

*Why build it?
	- It's a pity that gnome-card was not built with a backend/frontend with the
	  backend built as a library so any application could use it. That would be awesome
	  Maybe the Authors have better plans?
	- Anyway, although my implimentation is probably very amaterish, I believe
	  that it can be built on to provide an advanced address book for any application.
	- File filters can easily be added to provide importing/exporting address books
	- If you are interested in using this library - Please Contact me. We may be better
	  off taking this out of libGefax and building a new (more suitably named) library. If that were to happen I
	  will gladly go through the code and add many more comments as they are scarce (and I know it like the back of my hand)

*How it works
	- The address book is simply a GList of LibGefaxContact's as defined in address-book.h
	- Each Contact has a unique Key (integer) that is assigned when you add a contact with lib_gefax_add_contact
	- The < possible key is 1
	- This key is used by many of the functions which call lib_gefax_get_contact_by_key
	- This method (I believe) greatly simplifies your application as you only need to reference an int for each contact
		when deleting and editing contacts.
	- The contact-dialog will edit or add a contact.
	- You MUST use the callback to update your address book (GList) when the dialog box is closed. If you
		do not, your address book will point to NULL and you have a huge leak. (If you can fix this, Please do)
	- If you use the available functions every thing should be OK.
	- Read the comments above functions in address-book.h for more information.

*Important ToDo
	- Backup files before overwriting when saving files (similar to gnome-card)
	- Complete the dialog to edit categories similar to Evolution's implementation
	- Decrease the amount of memory allocated when calling lib_gefax_contact_new (Some contacts will not use all allocated mem)
	- Increase save speed (seems to be much slower than reading)
	- Correct Decoding / Encoding of Base64 data (Namely Logo)
	- Go through and find any code repetition and put it in a common file (Much can be done here)
	- Code efficiency improvements and eliminate amaterish Hacks (Not too bad I hope)
	- Fix any bugs

*Wish List
	- Handle different character sets (I have no Idear)
	- More file type filters eg. import mozilla address book etc
	- Widget to view logo's (basically the same (Base64) data as in an E-Mail msg's?) Balsa's code may help here if so
	- Canvas based widget to view a single contact