This is a TODO file. Open issues are unmarked, partly resolved issues
are marked with a *, ignored issues get an -, and resolved issues a +
(or they are completely removed from the list). Check the ChangeLog
for details on how an issue is resolved, since resolved issues are
 periodically purged from this list.

2008-10-29 round of bug triage...
=================================
- https://bugs.kde.org/show_bug.cgi?id=96886 - fix device detection code broken with multi-threaded code.
- https://bugs.kde.org/show_bug.cgi?id=109437 - make database backup/retrieval save to a temp file first and then rename it to Backup directory if transfer was successful.


Essential
=========
3b) Implement reset to last sync and ignore conflict resolution options in
    vcal conduits (bug #59221)
4a) Config troubles: Start kpilotDaemon and then kpilot. Configure a conduit
    in kpilot, then do a sync (which writes something to the  config, e.g.
    run the docconduit). Now configure another conduit in kpilot. The config
    file will be changed again, but the changes from the sync are lost (i.e.
    after a sync, kpilot needs to reload the config). (seems connected to bug #56115)
*4b) Conduits should not use the backup databases, otherwise a backup run will
    screw up the conduit's mechanism to detect changes. (bug #59219)
4c) Need to find a better way to detect runs without a conduit, and switch to
    full sync in that case to prevent data loss.
4d) Need to find a good way to avoid a mess when implementing new features
    (e.g. after implementing the correct category sync, how do I ensure that
    no category settings are lost?)
5)  After the special sync is done, ask if the next sync should again be the
    same special sync, a fast or a hot sync. (wish #59218)


Important (hight priority)
============================
6a) The abook conduit currently only syncs one email address and one
    phone number of each type. I need to find a way to sync two email
    addresses to and from the handheld. (Bug #56364)
7)  Check the first-time syncing behavior of all the conduits.
15) Add force-first-time to the KNotes conduit.
17) Include a calendar viewer, or get rid of the internal viewers
    altogether.
19) GJJ: Replace newlines in TODO summaries (not allowed in libkcal),
    also do the same for phone numbers etc. (bug #56379)
19b)Make the doc conduit use the new global settings instead of its own 


Medium (nice to have, but not essential)
========================================
18) VCal conduit: events going over midnight need to be split up
    on the handheld (bug #59223)
20) GJJ: Check all debug output, what should be put in the log (i.e.
    be visible to the user) and what is just debug output to track
    down problems.
21) GJJ: Hunt down and kill printfs. Hunt down bad i18n.
26) ABook conduit: sync with preferred address (not home or work address)
27) Update the conduit programming howto (some changes in the database
    and record classes)
31) GJJ: Extend all conduits to allow arbitrary URLs instead of local
    files.
32) JPilot conduit: fix the configure.in.in checks for gtk/glibc
    (although the conduit isn't even remotely finished)
32a)Find a replacement for the NULL conduit (skip databases when
    doing a backup)


Unimportant (lowest priority)
=============================
33) JPilot conduit: Implement the conduit as an external GTK application,
    that is embedded into kpilot using qxembed
34) JJ: Add tooltips to all controls in all conduit configure dialogs
35) Do not store the RecordID with the vcalendar entry, but in the kpilot
    config
37) JJ: Show the sync log as a KPassivePopup
39) Make an application that just has a LogWidget and KPilot's dcop
    interface (and registration!) so that you can follow the daemon's
    log output without starting KPilot at all.
40) Allow the todo conduit to use the manana database (see jpilot)
41) Allow the memo conduit to use the pedit32 database (see jpilot)
42) Use pdf2text application to also install pdb files with the palmdoc
    conduit.






FINISHED TODO jobs
==================

+(1)  VCal conduit: Currently using the ResourceCalendar (standard
    calendar) doesn't work for some (unknown) reason. Every sync
    happens with the filename given in the setup dialog. Probably
    very easy to fix.
+(2) 4d) Need to find a good way to avoid a mess when implementing new features
    (e.g. after implementing the correct category sync, how do I ensure that
    no category settings are lost?)
+(3a) Implement the CopyToPC and CopyToHH directions in the addressbook conduit (bug #59220)
5)  After the special sync is done, ask if the next sync should again be the
    same special sync, a fast or a hot sync. (wish #59218)

 Redesign the config dialog of kpilot (get rid of deprecated
    options, include conflict resolution, etc.)
+(3)  Fix all conduits to use the new global options: conflict resolution,
    emergency sync, sync mode etc.
+(4)  VCal conduit: Fields not supported on the handheld are erased
    in the calendar (e.g. categories). I need to get the Event
    before I copy all fields over, and only overwrite the fields
    from the handheld, so the others remain unchanged.
	 RESOLUTION: Found out that this is not true any longer, and everything
	 works just fine!
+(5)  AvantGo conduit: fix the configure.in.in checks for libmal
+(6)  ABook conduit: fix the first sync setting
+(8)  Find out what's the reason of the "Invalid unique ID" crashes in
    the calendar conduits (and the addresssbook conduit) (bug #51216)
-(9)  GJJ: PalmDOC conduit: kpalmdoc is run as a modal dialog, not as
    a standalone dialog (e.g. create a link  on the desktop to
    kpalmdoc and start kpalmdoc from there. You can't access the
    desktop until you quit kpalmdoc)
    RESOLUTION: This is a general KDE Bug!!!!
-(10) GJJ: Add a flag to the log{Error,Message} functions to prevent
    the addition of the trailing <br> and the date to each output
    (e.g. to put all output from the AvantGo conduit in one line,
    instead of one separate line for each .)
    RESOLUTION: This is not possible in a QTextEdit in LogText mode.
    However, I got rid of the pseudoo-progressbar, so this i no longer
    needed.
+(11) Merge between HEAD and BRANCH (again).
+(12) ABook conduit: Check all fields for differences before asking
    for conflict resolution. (i.e. don't ask for conflict resolution
    of single fields, just for the whole record) (bug #59222)
+(13) ABook conduit: custom field sync doesn't work with birthdate
    (how do I convert a date to a string and back in an arbitrary
    format???) (Bug #50871)
+(14) ABook conduit: Fix categories sync
    RESOLUTION: Fixed for the abook and the todo conduit
+(16) Remove the edit capabilities from the built-in viewers. (fixes bug #54765)
    Or write a SyncAction childclass that merges  the changes from the internal
    editors to the databases on the handheld before the sync takes place
		RESOLUTION: Implemented the InternalEditorAction that syncs these modifications
+(19a)Implement the internal editor sync
+(19a)When syncing, also backup the databases (if option is set)
+(19b)Add all codecs that are supported by Qt, automatically fill the
    combobox in the config dialog. Change the combobox to an editable
	 Combobox so that the user can also give other encodings (if he
	 installed the corresponding plugins).
+(22) Update README, TODO, NEWS, AUTHORS in HEAD.
+(23) GJJ: Move the conduit configuration dialog (for the umpteenth time)
    to a list of QCheckBoxes, like noatun's plain playlist or
    kdebugdialog
+(24) PalmDOC conduit: choosing the bookmark type of the pdb->txt
    conversion is not yet implemented. Only create .bm file, if there
    are bookmarks in the text.
-(25) ABook conduit: sync with multiple email addresses (space-separated
    list received from handheld)
		RESOLUTION: Duplicate of 6a)
+(28) GJJ: The question asked when kpilot and the pilot's usernames don't
    match isn't very intuitive. It should be changed to a yes/no/cancel
    with "Use KPilot name" "Use Pilot name" "Cancel". This is in
    interactiveSync.cc.
-(29) Fix the NULL conduit's tooltip - OR - make it actually do what the
    current tooltip says.
    RESOLUTION: The NULL conduit is no longer needed at all, so I disabled
    it completely
-(30) GJJ: Create good icons for the kpalmdoc converter application.
+(38) Should interactiveSync and syncStack be moved to lib/ ?





Specific JOBS
=============

***
*** PilotLocalDatabase fixups
***

The PilotLocalDatabase class is really ugly and clunky -- and far worse,
it has a hard-coded limit of 10000 records per database. This may have hurt
us once or twice already (consider that a Visor w/ 16Mb could *easily*
hold 10000 addresses). It needs careful reworking.

I think using a Q(Ptr)List is the way to go here -- well, maybe a QVector
would work as well; that depends on whether QVectors resize well. The tricky
part is implementing the "current record pointer" with the same behavior
as the current fCurrentRecord member, since conduits may depend on it.


***
*** Popmail Conduit & IOSlaves
***

The popmail conduit duplicates a lot of code found elsewhere -- it does
SMTP sending and POP3 retrieval of mail messages. That should really be
left to IOSlaves, which are better debugged. Using tickle() will be
necessary while waiting for responses from the slaves, since you must keep
the pilot awake. (This opens the door to multi-threading conduits, with
possibly an asynchronous "pre-sync" action).

