-*- text -*-
TODO list for Mahogany
$Id: TODO,v 1.453 2001/11/27 16:41:12 vadz Exp $

*** please do not use this file anymore but add new bugs
    to the bugtracker at http://mahogany.sourceforge.net/bugz/

    just continue to remove bugs from this list as they are 
    fixed.

************ HeaderInfo reorganization

score/colour setting per message basis: grep for USE_HEADER_SCORE/COLOUR

************ bugs

************ optimize

HeaderInfo::GetFromOrTo() is called *all* the time and is awfully slow as it
uses Message::CompareAddresses() which calls rfc822_parse_adrlist() twice.
We *must* cache the result - the problem is how to update this cache?

************ possible cclient improvements (from reading PINE sources)

1. filtering speed improved a lot but we still do 2 trips to server because
   we do "FETCH BODYSTRUCTURE" to just get "From" &c - this is not
   needed as we have both of them anyhow already in HeaderInfo!

   in fact, we should save ENVELOP when we get it in mail_fetch_overview!

2. mail_fetch_overview_x() could be made obsolete by using SET_IMAPEXTRAHEADERS
   to tell cclient to fetch "Newsgroup" header too

3. must install SET_BLOCKNOTIFY handler (it's not clear when exactly is it
   called and with which args, so have to test it first, but it might be a
   good place to show the busy cursor and such...)

************ architecture changes

Very high priority:

High priority:

1. split compose classes like the message view ones into the purely GUI
   module and all the rest

2. multi threading: it's impossible to have deterministic response time
   with c-client otherwise (it uses blocking DNS lookup, mail_open may
   take arbitrarily long time with slow server, ...)

Low priority:

1. add support for hooks instead of/expanding Python callbacks

************ THREADING PROBLEMS:

(I am keeping a list of threading problems here, which I will use for
keeping track of them. No need to pass it all through the
bugtracker. KB)

TRUE?
The threads in ASMailFolderCC don't really need to lock anything, 
as the MailFolderCC.cpp code should take care of that itself.


*** VZ: this is my notepad, don't add anything here, it's only for myself

1. add listbox for ReplaceFromAdr in the options dlg
2. trailing ",0" in wxPTreeCtrl should probably be discarded?
3. Subfolders dialog must
 a) disable itself until the folder retrieval is finished
 b) show the progress dialog?
*** end of VZ section

*********************************************************************
*** BUGS
*********************************************************************
*SEV PF WHO	DESCRIPTION
*********************************************************************

9	KB	wxLayout:
		- delete in empty line (works at home...)
		- add blinking cursor
		- add HTML import
		- selection can get confused, when selecting with
		  pagedown beyond end of text
		MessageView:
		- undo
		 - should show cursor only on demand
		 - shouldn't preview messages unless configured to do so
                   (currently does preview on delete)

	KB	properties/access shows wrong help

	KB	wxMessageView: message/rfc822 display via MessageCC(string)

1	KB	SendMessageCC should not use profile but get settings
		told, so sending from queue can use original settings
		from folder - at least don't use profile at sending
		time, but before

9	VZ	deleting groups from an ADB book messes up the book and
		deletes other non-selected groups and entries, too

9	VZ/KB	deleting entry from an ADB book can cause leak of

8	VZ	ADB fails to expand "CRAC" to the entries of a group
		with that name "CRAC", because another entry has
		"crac" in its mail address. Should present the dialog
		and offer a choice instead of just picking the first.
		VZ: can't reproduce, any example?

8	VZ	AdbImort dialog under Windows lacks UpdateUI somewhere

	VZ	templates need "First Name" field
	VZ	icons in icons-dialog are scaled --> ugly

	VZ	Clicking on "header dialog/More button" produces
		"headers for folder "xpm" in the dialog when called
		from toplevel window.

6	VZ	All Folder create dialog pages have no HelpIDs set.
3		URL highlighting in headers is missing (e.g. X-Url)

------------------ not release critical:

		Printing multiple messages should only use one config
		dialog.

3		Add routine to write large headers.

6 gtk   RR      The force-reopen checkbox doesn't display its
		tooltip. Does this work under MSW? A wxGTK bug?
		VZ: yes, it's a wxGTK bug.



*********************************************************************
*** PROJECTS
*********************************************************************
* PRI	WHO	DESCRIPTION
*********************************************************************

8		filters import

7	VZ	Config and wxWin support for different character sets

9	KB	add xface button to composeview

		configure "From" format

		optional thin-cursor for message editor

5		highlight messages in listing in different colours
		based on filters?

8	KB	line-wrap in compose view before sending

		Option to start up iconified.

7	KB	write more on tutorial bit in Manual.lyx

4	VZ	configure fields and their order when exporting with
		AdbExportText

5		add more buttons to folderview, such as
		next/previous/goto_next_unread/catch up

5	?	Add DND for MIME content from composeView/messageView
                to file managers

6	KB	completion of filtering rules/scoring code
6	KB	implement listing of folders on remote
		servers/subscription API
4	CB	GPG/PGP support

4		improve key bindings for message editor, page up/down
		whole page

2	VZ	printing from ADB
3	VZ	"GoTo"  the entry should expand the branch which contains it
3	VZ	LDIF format import
3	VZ	UseCount field and sorting using it when there is more than one
		match in AdbExpand()

from 32bitsonline review:
4		add option to hide messages marked as deleted

2		Add code to collect split-up mime content from
		multiple messages and decode it.

4		reply unquoted, too

********************* possible additions to *************************
?		idea after seeing a standalone program on freshmeat which does
		this: what if we supported retrieving mail from Web based email
		services (hotmail, yahoo, ...)?
		NAMG...total crap, I'd like it to work though
*********************************************************************
*** TESTS
*********************************************************************
* PRI	WHO	DESCRIPTION
*********************************************************************
5	KB	make MailFolder timer react to options change
5	KB	for NNTP only count unread/new messages
7		test MH folders
9	KB	Modify mail_fetch_overview() to work backwards.

9	KB	Group-reply should use old To: field, too if not
		identical to ourselves
5	KB	properties dialog forgets IMAP mailbox name
5	KB	check handling of missing hostnames,
5	KB	network page
5	KB	folder properties for advanced user
5	KB	POP/IMAP server/localhost default values

3	VZ	dialog to edit message headers in composeview,
5	KB	if message is quoted-printable unquote it before
                saving to file (how stupid!) same for encbinary
				.... working on it right now

4	VZ	test ADB importing more

5	KB	Could you have a look at the setting of the default
		columns sizes in wxFolderView.cpp, please?

		VZ: I fixed a buglet in your code and it seems to work ok now.
		    Although it's not exactly elegant, it seems to do what you
		    want (personally, I would prefer if it inherited from the
		    root folder, why "New Mail"?). Please test it and tell me
		    more if it doesn't do what you want.

6	VZ	folder properties assert when trying to create a
		subfolder under INBOX - sort of fixed because folders can't be
		created under INBOX (or any other non group folder) any more.
5	KB	(optionally, but on by default) expunge deleted messages when
		the folder is closed - as noticed in 32bitonline comparison,
		otherwise it's a nuisance.
9		first time message retrieval can happen twice, so all
		new messages appear twice in NewMail
		- selections: do not exchange end/start while
		  selecting but only at end, so moving selection
		  across start behaves correctly
		- selecting with keyboard uses mouse cursor as
		  starting position :-)
		- selection with cursor a bit funny



KB:
I have started marking code with
//FIXME WXCOMPATIBILITY
if it is likely to depend on a post-release wxWindows version. Such
code should be protected with a suitable #ifdef which should be
removed later when wxWindows has been updated.

VZ: wouldn't an ifdef alone be enough (you can already grep for it...)?

*********************************************************************
*** GENERAL TODO
*********************************************************************

- support for working offline (will need wxWin API modifications?)
- subscription management for NNTP/IMAP/newsspool
- DND with KDE/Gnome filemanagers (now supported by wxGTK)
- there should be no [Expand] button in "Post news message" window,
  or may be there should be [choose newsgroup] one instead.
- eventually add a Drafts folder and toggable Online/Offline mode

- TUTORIAL, how to keep multiple folders open

- more configurability for news
- do we really need to scan /var/lib/news/active?
- add address auto collection to compose view
- some html mail import/filtering of tags (easy, quick and dirty)
- Problem: mail uids and nums are long, WXARRAYINT.Count() is int,
  content is int.
- do not redraw messageview if the message is the one currently being
  shown (DONE, better:)
  -- option to keep wxLayoutList around for reuse?
- when inserting filetype of unknown MIME type, prompt for it
- speed up copy mail to folder by cusing c-client functionality
- wxComposeView: if replying, only mark message as answered if reply
  got sent --> difficult/ after ASMailFolder is there
- update c-client patch several changes in smpt.c/rfc822.c
- obtain a full IMAP tree as part of subscription management
- move to scandoc instead of doc++??
- add calendar tool/plugin
- if exists, use /etc/M.conf or /etc/Mahogany.conf instead of
  prefix/Mahogany/M.conf.
- merge in settings from some remote location, possibly using ftp/http

- when inserting filetype of unknown MIME type, prompt for it,
  possibly have a MIME types editor (similar to netscape's?)

 - easy: add support for email-to-fax gateway at www.tpc.int and
   their coverpage
 - document scripts in extra/scripts
 - somehow allow different configs for different hosts, maybe a
   [M/HOSTNAME/Profiles] section overriding [M/Profiles]?
 - toggle readonly status of mailboxes?

- ADB:
  + add "add current address to ADB" to compose view
  + should be updated when new entries are created (can't be deleted from
    elsewhere for now...), add an event for this
  - fix remaining BBDB/ADB problems (low priority)

- use wxURL to retrieve remote configuration files and import them,
  maybe even retrieve files to use as folders or address books`?

- add "Send Digest"
- add "Send bug report"

- add !(command) expansion to wxConfig, i.e.
  VAR=!(hostname):me would execute "hostname" and return "hydra.medieval.de:me"

- "Syntax highlighting" for replies

  + implement "internal clipboard" for
    - cut-&-paste
    - drag-&-drop

- UI things
  + we should somehow merge the toolbars into the main frame toolbar if it
    shows the folder view, for example
  + session management --> should be done on wxWindows level

- news reader functions
  + get the list of newsgroup and allow to choose from them
  + "catch up" command
  + filtering of cross posted articles - would be very nice if this could be
    also used to filter the copies of received mail messages (i.e. if a
    message is sent to the mailing list and cc'd to me I'd like to read it
    only once)
  + "killfile" features and a special "quick kill" (TM) feature which would kill
    all articles of the author of the selected one

- Use configure to check for utilities, like help browser. "ReConfigure" menu.

- Edit-CC, CC messages to others but edit the individual copies before sending

- "Power Search": search all (even compressed?) folders for a keyword
  and when found, open the folder and display the message.

- Export and import of addressbook in text format.
  I'd like a feature to select fields from the addressbook and write
  them, e.g. semicolon separated as a list to a file, so one could
  parse them in scripts or whatever else.

- message integrity verification support
  + PGP
  + MD5 (see RFC-1544 for details)

- REMOTE-CONTROL: add support for popping window open and reading a folder of one's choice
  (for being controlled from xbiff like programs)
  idea: listen() on a socket and write socket number to a file ~/.M/socket
  Relatively simple.

- LDAP -- possibly using python ldap module or OpenLDAP.

- automatic (but optional) mail compactification (to save disk space)?
  -> this could be done using scripts?

- creation of separate index files for mail folders

- compressed mail folders / possibly together with index files


vi: set si ts=8 sw=8 noet nolist tw=80:
