KPilot Developer's notes for august 2nd 2001
============================================

Vacation good. Bugs bad. Received a wonderful patch in the mail from
Martin Junius, which proves once again that he's really dedicated to
making KPilot look good and work well. Martin's patch "pushes the envelope"
udirng the freeze, so it may not get in into KDE 2.2.

2001-08-01  Adriaan de Groot

* kpilot/pilotDaemon.cc
  (PilotSystemTray) Fix for bug #29764 -- I'd forgotten to initialize some 
  pointers in the constuctor again.
* conduits/abbrowser/abbrowser-conduit.cc
  (main) Workaround for bug #28104 allowing abbrowser to start from the conduit.
* conduits/abbrowser/Makefile.am
  Minuscule change enabling --enable-final builds here.

2001-07-23  Martin Junius  <mj@m-j-s.net>

* kpilot/addressEditor.cc (MakeField, MakeFieldL): removed i18n(),
  now done in initLayout().
  (initLayout): use i18n() for label strings passed to
  MakeField. This is IMHO a cleaner approach than using I18N_NOOP()
  as before.
  (phoneLabelText): new function, get text for phone label,
  basically fAppInfo->phoneLabels[] featuring some sanity checking.
  (fillFields): use phoneLabelText().
  (initLayout): dito.
  (initLayout): argument addressInfo removed, no longer needed.

2001-07-21  Martin Junius  <mj@m-j-s.net>

* kpilot/addressEditor.cc (initLayout): use m_phoneLabel[] for
  display phone labels because this change from entry to entry and
  cannot be set to fixed texts.
  (fillFields): update phone labels for editor dialog.
  (initLayout): reworked and hopefully ;-) improved spacing.

* kpilot/addressWidget.cc (setupWidget): replaced QMultiLineEdit
  with QTextView for address info widget.
  (slotShowAddress): function totally rewritten to use QTextView
  and the Qt pseudo-XHTML code for formatted display of the
  address entry. The sequence and formatting is more or less what
  my Palm IIIxe does.

KPilot Developer's notes for june 15th 2001
===========================================

The 2.2b1 tarballs are packaged real soon now. Whee!
This marks the release of KPilot 4.2.3 (KDE 2.2, third
subpackage release (alpha1, alpha2, beta1)). This version
scheme makes it much easier to keep track of what was
released when.

Many bugs were fixed after Cornelius sent a message
asking about the KPilot code; the abbrowser conduit 
has been renamed the KAddressBook conduit (it's still in
conduits/abbrowser), some little stuff in the vcal conduit
was fixed, much dead code was removed from KPilot and
some code was simplified.

Cornelius' mail also somehow pushed me into reading the
KDE-PIM server suggestions. I'm sure you've noticed how
much mail *that* has caused.

KPilot Developer's notes for june 5th 2001
==========================================

[ade]: Well, I'm back from my conference -- which was pretty neat -- and lo!
In my mailbox are many patches to be applied. Thanks guys. This keeps
KPilot moving forward even when all of the "regular" developers are
doing silly things (like moving).

2001-06-05  Palle Girgensohn

* */Makefile.am
  I had to tweak some Makefiles to get kpilot working on FreeBSD.
  KPilot must include LIBPISOCK_PATH in its INCLUDES setup.
  [Newer CVS versions already did, but I would like to note my 
  appreciation for sent-in patches that aid in portability -- ade]

2001-06-02  Philipp Hullmann

* conduits/vcalconduit/*.{h,cc}
  This is a new version of my large todoconduit/vcalconduit patch,
  hopefully more suitable for human consumption than the previous one. It
  mostly splits the large sync functions into smaller pieces, simplifies the
  code for recurring events a lot, and moves some more code to vcalBase.

* kpilot/pilot*Entry.cc
  ... and one more patch to PilotDateEntry and PilotTodoEntry: replace 
  notes of length 0 with empty ones.

2001-05-23  Philipp Hullmann

* kpilot/pilot{Date,Todo}Entry.{h,cc}
  Many fixes realted to accidental freeing of unallocated memory
  and some pointer ugliness. Fixes rare crashes on machines where
  malloc() doesn't zero the memory.

2001-05-25  Adriaan de Groot

* *.cc, options.h
  Simplified the debugging code, no more #ifdef DEBUG if (debug_level &)
  stuff, just straightforward DEBUGXXX statements which get optimized
  aay for free when debugging is turned off.


KPilot Developer's notes for may 14th 2001
==========================================

Not a lot of movement on the coding front for me [ade]; I
did remember mothers' day though. Changes relevant to KPilot:

* abbrowser has moved into kdebase, so the abbrowser conduit will
  now be available to everyone, not just those that also compile
  all of kdepim.

2001-05-08  Marko Gronroos

* conduits/popmail/*
  Totally revamped the mail conduits with a new, well designed
  setup. This solves most of the smtp and sendmail problems
  we've been having.


KPilot Developer's notes for may 7th 2001
=========================================

It's been great to receive patches from all over the place in the
past two weeks. What has been fixed is listed below; I have the nasty
feeling that one set of patches has slipped through the cracks. If
you've sent me a patch in the past two weeks and don't find yourself
listed here, please let me know.

2001-04-27  Adriaan de Groot <adridg@cs.kun.nl>

* I actually worked on the docs. Stephan Kulow's meinproc 
  HTMLizer was wonderfully useful here. The docs aren't 
  completely up-to-date yet, but they're moving.

2001-04-28  Martin Junius  <mj@m-j-s.net>

* kpilot/kpilot.cc 
  (initMenu): use KToggleAction and setExclusiveGroup for view menu.
  (addComponentPage): same here for the other components.
  (initMenu): setChecked for view_kpilot action.

2001-05-07  Philipp Hullmann

* conduits/vcalconduit/todo-conduit.cc 
  (): fixed missing due-date bugs





KPilot Developer's notes for april 26th 2001
============================================

Ahh, spring is in the air; the time when a young man's mind turns
to nights of C++ hacking. This has been a great few weeks for open-
source collaboration. I've had useful and helpful mail from Philipp
Hullmann, Martin Junius, and Marko Gronoos (maybe more -- if i've 
forgotten you please complain privately) with patches, hints, and
offers of help. Thanks guys!

* Fixed the non-initialization of the conduitCombo pointer by
  removing it completely. (Thanks Martin!) At compile-time you can
  choose between XML and traditional UI style. [19-4]
* Greg's abbrowser conduit is (almost) ready for the prime-time! [23-4]
* Fixed bug where absent executables could hang the conduit
  setup dialog. [23-4]
* Fixed small UI bug where toggling toolbar didn't resize the contents
  of the main KPilot window. [23-4]
* Removed unnecessary connection to (serial) pilot database when
  conduits are started in --info or --setup mode. [23-4]
* Discovered many i18n bugs in the sendmail conduit. Ouch. Some fixed. [23-4]
* In a flash, implemented sending-via-KMail in the sendmail conduit.
  This is utterly untested and possibly hazardous. I'd appreciate it
  if some people used a test account for KMail and tried it out. 
  I will too, soon. [23-4]
* Looked for the right place to force KPilot conduits to use the KPilot
  .po file. The TLs are now OK. Thanks to Marko for prodding me to sort
  this bug out (conduit in Finnish is "siirtokanava"). [24-4]
* Added QToolTips and buddies to the NULL conduit setup. [24-4]
* Fixed a bug in the KMail sending if you use a different outbox 
  from "outbox". [26-4]
* Made KPilotLink::addSyncLogEntry marginally more useful -- this
  is to work towards a read log window. As a side effect (which 
  obscures what I've done a little) I've reformatted kpilotlink.h
  according to the coding style guide, and added docs. [26-4]

Todo:

* Found out why the vcal and todo conduits are so slow -- they
  really do read in the whole Pilot database through the serial
  line *twice* each sync. This needs fixing. [19-4]
* Add QToolTips to the remaining conduits. [24-4]
* Add "buddies" to relevant entry fields (usually QLineEdits). [24-4]
* Remove all the UI stuff from KPilotLink and put it somewhere sensible. [26-4]
* Split KPilotLink into the client and server ends. [26-4]

The following list is stuff from the ChangeLog that was once on
the Todo list; I'm repeating it here because it was time we went
through it again to see how things stand. I've added comments in
[ ] after each.

* Split KPilotLink into its separate functionalities: config management,
  local database management, and link from daemon to conduits. [partly
  done, but kpilotlink still serves both ends of a client-server link]
* Make KPilot and KPilotDaemon communicate only through DCOP. [bad idea -
  causes extra overhead, and the kpilotlink protocol is pretty good]
* Add an extra message concerning NULL user on hotsync.
* Make the progress bar show something during a conduit sync.
* Should just use the KPilotLink::config object to store all kinds
  of user settings instead of copying them from the config file to
  local variables, since this is just asking for inconsistency.
  [dunno -- as long as KPilot is the app for configuring what the
  daemon does, we just have to get KPilot to tell the daemon to re-
  read the config file when something changes.]
* Clean up more of the butt-ugly parts of the code base [less of this now!]
* KPilot is an i18n nightmare [less of this now!]
* The password dialog in the popmail conduit is probably a very bad idea
  I think kdesud should come into play here. [not looked into]
* The messages need validation - Pilot vs pilot, HotSync vs whatever
* Actually *doing* a fast sync for Heiko
* More and better information in the progress bar
* KPilot should display the sync log as well, just like the Pilot
  does. This is useful for reporting the result of a sync to the
  user (who then doesn't need to look at the Pilot)
* I noticed Thomas Zander has submitted an official wishlist item:
  DateBk3 (the new date book format in PalmOS3.5) support. I think
  I'll get back to him on that when Mirko pans out with the free
  hardware goodies from Palm :)

KPilot Developer's notes for april 19th 2001
============================================

* Martin Junius has contributed an XML GUI framework for KPilot, so
  it now finally uses the "modern" way of doing GUIs. This *does*
  mean it's time for yet-another set of screenshots for the docs
  and yet-another set of menus for users to get used to. [14-4]
* Disposed of reported bug: bad category selection. [15-4]
* Moved the todo-conduit into the vcalconduit directory. This makes
  building much simpler. [15-4]
* Fixed up more #include shenanigans for --enable-final. (Don't 
  forget the #ifndef conventions from HOWTO-CODE.txt!) KPilot now
  builds without warnings with --enable-final --disable-debug. [15-4]

Things to do:

* Fixup the documentation.
* Add QToolTips to the conduits setups, KPilot's setup, and the conduit setup.
  This is already partially done, but someone else needs to finish this off.
* Make KPilot installation and run easier -- JPilot seems to work out-of-the
  box on systems where KPilot doesn't.
* Look into bugs #23385 (crash in VCalConduit), #20318 (munged 8-bit chars)
  and #24291 (doubled appointments). 

KPilot Developer's notes for april 8th 2001
===========================================

It seems like only yesterday that KDE 2.1.1 was out, and we're already
in KDE 2.2b1. Thoreau said "Simplify, Simplify". Anyway, this week's
feature creep:

* Bugfix for infinite loop when changing categories. [1-4]
* Some xpms could profitably be removed, since we use pngs now. [1-4]
* I normalized some more header-file #ifdef / #defines. [1-4]
* Incorporated patches from Aaron Seigo. [1-4]
* The todo conduit didn't compile due to changes in vcalBase. [1-4]
* The vcal conduit's test mode has been expanded. [1-4]
* KPilot's version number has been upped (again) to 4.2.1 for the
  KDE 2.2a1 release; I hope we can up the revision number with every
  release of KDE 2.2 move on to KPilot 4.3 with KDE 2.3. [9-4]
* Messed around with some of the icons and images. [9-4]


KPilot Developer's notes for march 24th 2001
============================================

KDE 2.1.1! With bugfixes and translation fixes! So only some of the
bugfixes listed under march 10th have made it into there. On the
western front though, we have:

* Chris Molnar has started work on DB integration for the expense conduit,
  so that you can actually do something useful with it. The CSV export seems
  to be done, too. Thanks Chris!
* Greg Stern has pretty much finished the abbrowser conduit (which a *lot*
  of people have wanted for a long time). It hasn't been committed yet, but
  will be soon.
* The memo viewer has been very slightly beautified.
* Some work for bugs #22112 and #21908, fixing deficiencies in the todo-
  conduit and in selecting categories under other locales. This isn't 
  done yet, though -- some attempts have been checking into CVS for testing.


KPilot Developer's notes for march 10th 2001
============================================

This weeks "cleanup" action is to normalize the #ifdef thingies in
the header files so that they follow some kind of plan. And then reduce
the number of #includes actually included by adding #ifdefs areound most
of them, to prevent redundant #includes. This is a pain, but some say
it's worth it in compile time. (See Documentation/HOWTO-CODE.txt for info).

* Removed yet another silly struct tm issue. [4-3]
* Added FileInstaller to KPilotDaemon. [4-3]
* Added DCOP to KPilot. Files dropped on daemon show up in KPilot. [4-3]
* Added a #define KPILOT_VERSION to unify all the version strings. [5-3]
* Added Documentation/HOWTO-CODE.txt for the source code conventions. [5-3]
* Fixed a bunch of Solaris compile issues. [5-3]
* Factored out a bunch of generic vcal code from the vcal conduit into
  a new base class VCalBaseConduit; the todo conduit also inherits from
  there. [10-3]
* Yet another stab at the "latin1 chars munged in KOrganizer" bug. [10-3]

The double-sync problem still exists though, which is bad. I suspect that
some extra bytes are left waiting in the serial port queue after slotEndSync
but I haven't got that sorted out yet.

The web-site has been updated, finally, which means you can finally check
for new releases and info there again:

	http://www.slac.com/~pilone/kpilot_home/
	
And, I've started to use KDevelop 1.4 for maintaining KPilot. I'm still
making the transition from vi / make / 4 konsole windows, but so far I've
been mostly pleased by the effect it has.

Bugs that are still open in the bug database: (Dan? you bored?)

* Todo conduit doesn't take due dates into account
* Double sync
* Address edit window doesn't follow addressDB custom fields & layout

Things to think about:

* Usability. I've swept all the menu items into one "File" menu that
  contains two configure wrenches, 4 actions, and a quit button. I'm
  wondering whether this is the right way to go or whether separate
  "file", "sync" and "conduit" menu items would be better.



KPilot Developer's notes for march 4th 2001
===========================================

So after "the big cleanup" I've continued doing cleanup code in smaller
chunks with more commits, mostly for reasons of bug-tracking. Dates in []
indicate when the fix or change was committed.

* Removed a really stupid crash from KPilotConfig::fixed().		[23-2]
* The internal conduits' names weren't reported properly anymore. This
  is a binary and source incompatible change. 				[23-2]
* Extra debugging while starting the listener process. 			[26-2]
* Changed exit(-1) to exit(3) in the daemon. 				[26-2]
* Use Qt layout classes in fileInstallWidget. 				[26-2]
* Removed some null-conduit comments from the KNotes conduit.		[26-2]
* Removed some #include <getopt.h> for Solaris. Cleaned up other
  includes as well, just a little.					[26-2]
* Started a change to KActions.						[ 1-3]
* Added a new FileInstaller for use in the daemon and the widget.	[ 1-3]
  It's currently only used by the widget.
* Added listItems.{h,cc} in response to bug #21392; changed address
  and memo widgets to use them.						[ 4-3]

KPilot Developer's notes for february 19th 2001
===============================================

Yay! KDE 2.1 is out. Which means we can commit all kinds of changes
to KPilot again, not just well-thought-out bugfixes. That means that
we can get to work on cleaning up the code base again.

* Split all the config-file stuff out of KPilotLink into a new class
  KPilotConfig. Fixed all the resulting include dependencies.
* The function fixed() in KPilotInstaller obviously belongs to KPilotConfig.
* The {address,memo,fileInstall} widgets all had unnecessary dependencies
  on KPilotInstaller. Removed. KPilotInstaller now adds the widgets it
  creates itself.
* Removed as many dependencies on kpilot.h and kpilotlink.h as possible.
* Removed a bunch of char[] buffer stupidities from pilotLocalDatabase &c.
* Removed the database open and close functions from kpilotlink.

All the sensible fixes, like those listed under feb. 4th, will come later.

KPilot Developer's notes for february 4th 2001
==============================================

Nick Papadonis spent hours tracking down the vcal conduit crash and
we found at least one bug in kpilotlink. It's been removed and I
hope this quashes all the vcal crashes. Other than that there's simply 
not much we *can* do with the message and feature freeze and all.
This is why the todo-immediately-after-freeze list exists:

* Split KPilotLink into its separate functionalities: config management,
  local database management, and link from daemon to conduits.
* Make KPilot and KPilotDaemon communicate only through DCOP.
* Add an extra message concerning NULL user on hotsync.
* Sort out all the icon issues.
* Make the progress bar show something during a conduit sync.



KPilot Developer's notes for january 6th 2001
=============================================

Happy Millennium. I ([ade]) am off on a two-week vacation to
Calgary, so no KPilot news from me till (almost) february. 

There have been several troublesome bugreports this week,
ranging from "all the conduits crash" to "daemon dies on
hotsync." That don't make me happy at all.


Done this week:

* Built POSE, the Palm Emulator, so this may help in testing
  stuff for the OS versions that I don't actually have.
  POSE is a real $#*%^ to build, but I can now actually use my
  PalmV on-screen (with a PalmIII skin, which is kinda weird).
* Replaced the addressEditor widget with something less stone-age.
* Added a nifty feature so that you can edit one address in two
  windows and they keep semi-in-sync. abbrowser doesn't have this
  (which means abbrowser has a bug :( ).
* #&$%#$ conduitApp doesn't turn the GUI on by default, so recent
  vcal crashes can be blamed on trying to create a KMessageBox without
  a GUI :( Changed the default values.
* Tried fixing some ugly icons. I'm no artist though.
* Teeny-tiny layout change in Address page of setup dialog.
* If you try to add records to the address book before you've done
  a HotSync / Backup KPilot has an empty AddressDB and doesn't deal
  with the address very well. Added a sorry() there.
* Added a doTest() to vcal-conduit.
* More cleanups in the debugging code. There's still a weird mix of
  code controlled by --debug and kdebugdialog style stuff. Functions
  kdWarning() and kdError() should be given __FUNCTION__ as their
  << argument, while kdDebug() should get fname as first argument.
  This will make all the debugs optimize away painlessly while keeping
  the warnings and error messages. Since messages may change status some
  time there's now a #define TEST_DEBUG that makes fname a weird object
  that can only be passed to kndbgstreams. So sensible combinations are:
  	production:	NDEBUG defined, DEBUG undefined, TEST_DEBUG undefined
  	test nodebug:	NDEBUG defined, DEBUG undefined, TEST_DEBUG defined
  	testing:	NDEBUG undefined, DEBUG defined, TEST_DEBUG defined
* Actually KPilotLink::doFullBackup wasn't all that bad. Still, all the
  code needs going-over for i18n yuckiness. doFullRestore() was worse;
  also fixed up directory yuckiness.
	  Note to self: text for user is i18n()ed, kdDebug() &c. is in 
	  english ('cause Dan or I have to read it :) )
* Finished integrating Heiko's patches. I believe that both HotSync and
  FastSync now do what the ought to do.
* Started adding a DCOP interface to the daemon.
  

Other stuff:

* It's a HotSync and a Pilot. I'll change strings in the source as
  I come across them. As for conjugations: I HotSynced, it HotSyncs.

Todo:

* Should just use the KPilotLink::config object to store all kinds
  of user settings instead of copying them from the config file to
  local variables, since this is just asking for inconsistency.
* Close bug 16457.html in some way.
* More vcal work
* Clean up more of the butt-ugly parts of the code base (less of this now!)
* Tell the KOrganizer docs people about KPilot
* KPilot is an i18n nightmare
  - The const char *s in the pilot databases can be addressed most
    easily, I think.
  - get rid of most of the strcpy, strcat, etc. But not all!
    We're stuck with pilot-link, after all.
* The password dialog in the popmail conduit is probably a very bad idea
  I think kdesud should come into play here. Anyway, a KMail conduit would
  be much cooler and safer. Sigh.


Things-to-be-considered:

* Splitting kpilotlink up into its various functionalities


KPilot Developer's notes for december 30th 2000
===============================================

Ho ho ho. Merry Christmas. Happy new year. Last week started out 
with Thomas Zander reporting that he *still* has the totally bizzarre 
and inexplicable crash in KPilot that he's had ever since KPilot was 
ported to KDE2 (+).  That pretty much colors this week's work. The rest 
of the week was used for the KNotes conduit. After a pleasant exchange 
of ideas with Wynn Wilkes (of KNotes) we got a DCOP interface working and
this make the KNotes conduit more useful. Talked to Greg about the
kab conduit and he's enthusiastic about the possibilities there,
we hope to have a framework in CVS soon.

Done:

* Claimed some debug areas (5510,5511,5512).
* KNotes rereads the notes dir after a sync, so new notes (which
  have come from Pilot memos) appear there.
* KNotes conduit --test now displays all the notes (on screen) that
  knotes shares with the pilot. This is a test (!) of the DCOP stuff,
  mostly.
* KNotes conduit now has a checksum function (md5) to reduce the
  number of notes that has to be copied between KNotes and the
  Pilot.
* Applied Dag Nygren's vcal patches so that repeating events now
  show up in KOrganizer properly.
* Fixed the button-enabling in the address app
* Added more debugging output for Thomas.
* Added more debugging output for Nick.

Todo:

* More vcal work
* Clean up more of the butt-ugly parts of the code base
* Tell the KOrganizer docs people about KPilot
* KPilot is an i18n nightmare
  - The const char *s in the pilot databases can be addressed most
    easily, I think.
  - KPilotLink::doFullBackup should cause i18n people to run away
  - get rid of most of the strcpy, strcat, etc. But not all!
    We're stuck with pilot-link, after all.
* The messages need validation - Pilot vs pilot, HotSync vs whatever
* The password dialog in the popmail conduit is probably a very bad idea

+ Thomas' crash produces the following (partial) backtrace:

#4  0x408960b7 in read_png_image () from /usr/kde2/source/qt-copy/lib/libqt.so.2
#5  0x40838dd9 in QImageIO::read () from /usr/kde2/source/qt-copy/lib/libqt.so.2
#6  0x40836cf1 in QImage::load () from /usr/kde2/source/qt-copy/lib/libqt.so.2
#7  0x408305b2 in QImage::QImage () from /usr/kde2/source/qt-copy/lib/libqt.so.2
#8  0x40483fcf in KIconLoader::loadIcon () from /usr/kde2/lib/libkdecore.so.3
#9  0x805a166 in KPilotInstaller::initIcons ()

  which is weird since the only possible png image being read is the 
  quit icon, which is standard in KDE2. Maybe some weird combo of options?

KPilot Developer's notes for december 18th 2000
===============================================

It looks like kdepim and KPilot aren't going to make the 2.1 release.
Darn. This does give us more time to deal with docs and bugfixes.
Every time I get something done though I find I've discovered two
new things to do :(. I hope Lukas will help out with a lot of the
i18n stuff though.

Done:

* Moved all the (english) docs to the correct place.
* More doc fixes: use &kpilot; and &pilot; properly, added screen shots for
  various conduit setups. The docs still aren't complete but they're a 
  darn sight better than they were.
* Modal dialogs need exec() instead of show()
* Changes in kdelibs caused some dialogs to hang in slotCancel()
* Changes in includes means we have to include kdebug.h ourselves
* Get rid of cerr and use kdDebug or kdWarning or kdError as appropriate.
  There are still a very few cerrs left in places where we can't rely on
  kdDebug().
* Added #ifdef DEBUG to the debug sections of code. So KPilot now compiles
  without debugging stuff. I realise now that I should have stuck to the
  KDE kdDebug() guidelines, but, um, I didn't know they existed when the
  port from KDE1 to KDE2 started. Darn.

ToDo:

* More vcal work
* Clean up more of the butt-ugly parts of the code base
* Detect memo-too-large in knotes conduit
* Try to reduce number of updates in knotes conduit
* Figure out a nice DCOP interface with Wynn (KNotes)
* Finally take a look at kab or whatever for the address book conduit. 
  Should probably talk to Greg about this one too.
* Tell the KOrganizer docs people about KPilot
* Fix the button-enabling in the address app
* KPilot is an i18n nightmare
  - The const char *s in the pilot databases can be addressed most
    easily, I think.
  - KPilotLink::doFullBackup should cause i18n people to run away
  - get rid of most of the strcpy, strcat, etc. But not all!
    We're stuck with pilot-link, after all.
* The messages need validation - Pilot vs pilot, HotSync vs whatever
* The password dialog in the popmail conduit is probably a very bad idea


KPilot Developer's notes for december 10th 2000
===============================================

Lots of internal stuff going on:

* The sense of the debugging flags was the wrong way around,
  so using --debug 4 gave you all the UI debugging messages
  as opposed to just the major and minor ones. This is what
  you get from suggesting debug 1023 all the time.
* BaseConduit had some weird debugging output -- not controlled
  by --debug -- so patched that up. And there was ugliness in the
  icon loading function. This changes the interface to BaseConduit
  slightly, 3rd party conduit authors beware.
* Finally fixed up the Makefile.ams for the standard conduits so
  that they run properly (without setting LD_LIBRARY_PATH).

Visible changes:

* Fixed up the documentation, the screenshots, the descriptions of the 
  conduits, etc. etc. It's still not complete but at least it matches
  what happens when you run KPilot.

Still on the todo-list:

* Really fix the vcal conduit. I've patched some things up and once
  again I hope it works, but since I can't reproduce the error I'm
  a little stuck here.

Still on the wish-list:

* Actually *doing* a fast sync for Heiko
* More and better information in the progress bar
* The PilotMemo class is butt-ugly and filled with weird C-string
  manipulations.
* KPilot should display the sync log as well, just like the Pilot
  does. This is useful for reporting the result of a sync to the
  user (who then doesn't need to look at the Pilot)
* I noticed Thomas Zander has submitted an official wishlist item:
  DateBk3 (the new date book format in PalmOS3.5) support. I think
  I'll get back to him on that when Mirko pans out with the free
  hardware goodies from Palm :)


KPilot Developer's notes for december 2nd 2000
===============================================

Almost Sinterklaas, so I'd like to wish all the KPilot users in
.nl a Happy Sinterklaas en Weg met de Kerstman. 

UI Changes:

* Added Heiko's Fast-Sync icon .. but it's ugly and hard to
  distinguish from the regular icon. This needs fixing by an artist.
* Added an ugly restore icon as well.
* Added an undocumented config-file option. You can now add the
  following line to kpilotrc in the null group if you really want to:

	ToolbarIcons=list

  where list is a comma-separated list of icons to appear on the
  KPilot toolbar. You can choose from HotSync,FastSync,Backup and
  Restore. The standard setting is:

	ToolbarIcons=HotSync,Backup

  That's not a lot but it should keep Heiko happy for a while and
  it reminds us that we should move towards a more modern method
  of setting up the UI -- or not?
* Tried to fix some UI weirdneses like:
	- Delete Memo button enabled when no memo selected
  but QListBox has the nasty habit of always having *something*
  selected, even if you can't see what it is.

  Now I know that the internal conduits -- memoWidget and addressWidget
  will probably die out soon when we have a real working kab2 conduit
  as well as a KNotes conduit, but till then it's nice to have something
  that at least obeys basic UI design rules.
* The following bugs in QListBox and QListView made me ditch the old
  two column layout with movement buttons for something else. Let me
  know which one you prefer.
	- There is some *bizzarre* behavior in the handling of 
	  conduits being selected: select the top item in
	  the left column, the top item in the right column
	  (um, so install a conduit first) and then the top
	  item in the left column again.
  The new layout allows you to drag conduits from one state (available)
  to another (active). Click on a conduit to set it up -- you may have
  to doubleclick depending on you KDE settings.


Internal Changes:

* Conduits that crash no longer hang KPilot and the entire sync.
* Made a lot of static const int members of various classes 
  enum values instead, and added a function write() to CStatusMessages
  for a clean way to write status messages to the link.
* Replaced several if else if ... constructions with switch() 
* Added a sensibleTitle() and shortTitle() to PilotMemo for use 
  by the KNotes conduit (and maybe others)

Documentation:

* Spent a little time on the (english) documentation and brought a few
  parts of it back up-to-date. It needs up-to-date URL's, probably we
  should move the mailing list to kde-pim@kde.org, and we need new 
  screenshots.

Wishlist:

* More and better information in the progress bar
* The PilotMemo class is butt-ugly and filled with weird C-string
  manipulations.
* KPilot should display the sync log as well, just like the Pilot
  does. This is useful for reporting the result of a sync to the
  user (who then doesn't need to look at the Pilot)

KPilot Developer's notes for november 25th 2000
===============================================

Spent most of the week at a conference, but managed to get
the KNotes conduit almost fully functional. New memos (KNotes)
are copied to the desktop (Pilot). Memos changed on the pilot
are changed on the desktop. However, not all deleted memos are
deleted on the other side, nor are modified memos copied
from the desktop to the Pilot.

I don't know what the desired action for KPilot is in the
cases of deleted memos. Any suggestions? There's now a config
option in the KNotes conduit setup, but maybe that should be
subsumed by the global Local Overrides Pilot setting. Anyway,
if a memo is deleted on the Pilot the corresponding KNote is
deleted as well.

If KNotes is running and the KNotes conduit makes changes,
these aren't picked up by KNotes. There are also some
obvious race conditions caused by the conduit writing KNotes
config files. This basically means that we need to talk to 
the KNotes maintainer to resolve these coordination problems.

As for the code, I wrote this:
	class KNotesOptions : public setupDialog { Q_OBJECT
	protected: static const QString KNotesGroup; };
[with better layout, of course] But there's a static QString
there, and I read somewhere that Static Objects Are Evil (tm).
I could use a const char * there, since it's just the name of
a group in the config file, but what's the consensus on things
like this?

I did handle some more of Heiko's patches. From last week's list:
	- Some phone number magic I don't understand yet
	- Some changes in the address import function
	- getShowPhone() -- don't understand that yet either
	- Fix bad repeat-n-times handling in vcal-conduit
This leaves just the Fast Sync capability still unimplemented.

Given the release schedule that has been discussed recently
(and we really do want to have KPilot in KDE 2.1, so as to add
a nifty feature to the desktop as a whole) I think feature creep
should be abandoned for the time being and we should try to
fix as many bugs in what we have before the release (around the
middle of december, IIRC). This means testing, lots of it. So
people, take the plunge, give it a try, compile the latest kdepim
CVS stuff with KPilot in it and then complain when your Pilot
catches fire, OK? O yeah .. when you *do* give it a try, make
sure you do something like:

	$ export LD_LIBRARY_PATH=$QTDIR/lib:
	$ kpilot --debug 1023

To make sure none of the conduits crashes with library loading 
problems and with all the debugging messages turned on.


KPilot Developer's notes for november 19th 2000
===============================================

Fixes:

* Added most of Heiko's patches to the vcal-conduit
* Added convention to conduits --info handling: return "<none>" for
  no databases. Handled in conduitSetup as well.
* Made some minor changes to the info page presented in dialogs
  (generally the setup dialog of a conduit) so that it gracefully
  handles weird settings and handles its own resizing properly.
* Added some const-qualifiers to various char *s
* Add a "kill daemon on exit" feature -- there was already some code
  for this, but not complete.
* Changed all the boolean config entries to booleans as opposed to
  0-or-1 ints.
* Removed all the "const char * id defined but not used" warnings
* Added some extra robustness in PilotDaemon::setupConnections
* Made the daemon obey the "show in system tray" setting -- this was
  broken during the first port to KDE2
* Handle reconfiguration through the settings dialog properly -- 
  at least KPilot picks up the changes to "Kill Daemon on Exit"
* (re)Added --test option to conduits, though not all of them
  will support actual tests.
* KNotes conduit is now functional in the sense that notes you write
  on your desktop are in fact copied to the Pilot. 

Some general comments:

* Suggestion: call the desktop files for conduits
	conduit-pilot-appname.desktop
  and the conduit executables themselves
  	conduit-pilot-Appname
  This at least gives conduits some consistent naming scheme and
  the addition of -pilot leaves some namespace for conduits for
  other PDA's.

  Well, actually this naming scheme isn't much good. But we *do*
  need to think about how to handle sync-programs for various
  PDA's in a nice fashion -- I can imagine having a Nokia phone,
  a Psion and a Pilot and wanting to sync them all.

Still on the todo-list:

* Fix bad repeat-n-times handling in vcal-conduit
* Dealing with the rest of Heiko's patches
	- Some phone number magic I don't understand yet
	- Some changes in the address import function
	- Fast-sync capability (this is different from SyncLast)
	- getShowPhone() -- don't understand that yet either
* More and better information in the progress bar
* The PilotMemo class is butt-ugly and filled with weird C-string
  manipulations.


KPilot Developer's notes for november 14th 2000
===============================================

Lots of things have changed in the class hierarchy.

* Jorg's bug in the memo-import function was handled OK in addressWidget,
  but it seemed clumsy to deal with the same problem in two different
  places. Moved findSelectedCategory() to PilotComponent. Added some
  other convenience functions there for the category combo box.

* The getConfig() change was very poorly done, sorry about that.
  Added some (semi-) bizarre debugging functions into options.{h,cc}
  that are #ifdeffed out.

* Ditched all the #ifdef KDE2 stuff and dropped the KDE1 backport.

* Added a .desktop file for the NULL conduit (with some translations
  of my own)

* Added Qt2 layout code to the address and memo widgets so that they 
  become easier to i18n() (ie. they display properly when the string
  lengths change).

* Adopted some of Heiko's patches:
	- New feature ForceFirst causes every conduit to behave 
	  as if FirstTime=true every time (this is off by default,
	  which matches previous behavior)
	- New feature SyncLastPC causes a slow sync if the Pilot
	  is synced with a different PC than the last time it
	  was synced (this is on by default, matching old behavior)
	- "fixed" font in address and memo editor replaced by the
	  user's system preference
	- In some cases the title (first name+last name or something
	  similar) in an address was empty. This now gives the title 
	  [unknown]
	- Similar for memos

Let's sum up the current wishlist:

* KNotes conduit
* Dealing with the rest of Heiko's patches
	- Proper multi-day appointments in the vcal conduit
	- Some phone number magic I don't understand yet
	- Some changes in the address import function
	- Fast-sync capability (this is different from SyncLast)
	- getShowPhone() -- don't understand that yet either
  These patches are quite useful but it takes a lot of work to
  unsnarl them, which is why they're taking so long.



Developer's notes for november 9th 2000
=======================================

What's new? Lots of little bugs found by code review, some new (trivial?)
features. KPilot 4 is in Mandrake cooker so it receives a little more 
attention now than before.

* Jorg Habenicht found a bug in the memo-import function. It causes
  array-bounds overruns. The same bug was present in many other parts
  of the memo widget. I think I got them all.

* Added some robustness checking in the daemon to cover weird cases
  like running conduits by hand.

* Added better handling of the "first time" dialog in the vcal conduit.

* The NULL-conduit now has an extra configuration field "Databases" which
  you can attach it to. This allows you to do a bogus conduit sync with
  a database (almost equivalent to putting it in the "backup only" entry
  of the global KPilot settings, except you run the external conduit.

* Made KPilotLink::getConfig return a reference instead of a pointer, to
  avoid new()ing and delete()ing the config data structure all the time.
  I hope this increases consistency as well. This has caused lots of
  little type changes throughout the conduit system, so third-party
  conduit authors beware :) -- all the changes cause compile failures though.

* Jorg brought in a patch so that KPilot uses the pilot-link environment
  variables to set initial values.


Some wishlist-style items:

* The memo and address internal conduits are (a) ugly and (b) impossible
  to i18n properly, because they have hard-coded sizes. Need to spend some
  time cleaning that up.

* Really, it's time to write a conduit that syncs with KNotes. It's
  not that hard, but KNotes has some silly bugs that need fixing first :(

* A patch to introduce a notion of "fast sync" has been produced for 
  KPilot 3.2.1 -- we're now looking into how to integrate that into
  the KPilot 4.x series. The idea is you only run a sync on the databases
  you have a conduit for.

Developer's notes for october 29th 2000
=======================================

* Thomas Zander pointed out that KPilot doesn't write a config file
  the first time it is run, leading it to *still* believe it's the
  first time it's run the next time. Fixed.

* In PilotDaemon::setupConnections() things have been reorganized so that
  a failure on opening the Pilot device will not allow KPilot to start.

* Added an undocumented Debug= entry to conduit's configuration, to
  ease debugging. Conduits will have to read this themselves.

* Added a "Run KPilot" menu item to the daemon.

And there's some really strange behavior that I've noticed: when I run
the setup for an external conduit -- which is a separate process --
KPilot always "jumps in front" of that conduits setup dialog when I 
give KPilot the focus. This is very irritating.

Bugs noted still remaining:

* Much weirdness in conduit startup (mode must be set before running
  the conduit's constructor, but mode wasn't set till after) has been 
  looked at but not repaired.

* The vcal-conduit had trouble running a sync the first time (you really
  should do a backup instead). We're working on this one.

  

Developer's notes for october 26th 2000
=======================================

OK, I admit it:

	code,commit,announce,test

is the *wrong* way to do things. I made some mistakes in the code that
looks up conduits in the .desktop files, so conduits *still* won't run
with this morning's commits. This has been fixed now, and the conduits
run. Of course, vcalconduit just SIGSEGV'ed on me, so ...

This brings me to a couple of wishlist items for KPilot:

* A "Cancel" button. I just clicked on Backup when I was aiming for
  HotSync, and there's nothing I can do about it.

* A timeout when running conduits so that badly behaved conduits don't
  hang up the KPilot system.

Some other minor issues have been fixed as well:

* Boatloads of compiler warnings in the included .xpm files
* Some i18n stuff

And new questions raised for people who know the code (I'm thinking
Preston or Cornelius may be able to explain):

* vcal-conduit.cc line 522, what's the purpose of voStatus there?               



Developer's notes for october 23rd 2000
=======================================

It's been a week where I couldn't bring myself to tackle
really big problems, like an address-book conduit for
kab or pine. So I sat back and polished things, wandered
through the code finding little bugs (if I was an OpenBSD
kinda guy I'd call it a proactive code audit). This has
led to:

A whole slew of minor fixes:

* Updated Help menu in main menu bar
* Removed superfluous about tab in kpilot setup dialog
* Fixed config-doesn't-change bug
* Disable autostart-daemon option if .desktop file unavailable
* Added quit icon into file menu
* Added hotsync and backup icons into file menu
* Cleaned up include files in conduitSetup.h
* Cleaned up dialog code in conduitSetup.cc for KDE2 compliance
* Fixed conduits-not-running-during-sync bug in kpilotlink.cc
* Fixed a minor Qt2 incompatibility in messageDialog.cc
* Fixed some i18n issues in kpilotlink.cc
* Replaced sprintf stuff with QString operations in kpilotlink.cc
* Added hot-sync to file menu for consistency (it's in the toolbar)
* Added logic in showTitlePage in kpilot.cc to reduce flicker

Some remaining issues:

* The icon for "About KPilot" in the help menu is the wrong one
* We still need pretty icons for various things (like external conduits)

Some questions:

* Is there a memory leak with the config file in kpilotOptions.cc?
* Do we really want to be new() and delete()ing the config file so
  often? Perhaps getConfig() should do some caching.
* Should we add icons for the other menu items?
* Is there an entry iterator in KConfig so that you can iterate over
  entries in a certain group (and possibly delete them?)

Some philosophical stuff:

* Maybe it's time to ditch the internal conduits altogether and work
  on external conduits for kab and knotes? Although that would still
  leave the file installer. Maybe a splash of the kpilot logo and then
  an icon view of what has been dropped into the file installer?



As far as I can tell KPilot 4 now has the same functionality and bugs
as KPilot 3.2.1 did (with some polishing). So you still have to be
careful with KOrganizer. But I think the framework is sufficiently 
OK to make it worthwhile to really write some conduits for various
KDE 2 apps. Like a kab conduit and a knotes conduit.
