270
edits
Line 177: | Line 177: | ||
=== Task List for Feature 2 === | === Task List for Feature 2 === | ||
==== Existing Implementation ==== | |||
Decision table for IMAP message operations. Current State (6th June 2008): | Decision table for IMAP message operations. Current State (6th June 2008): | ||
Line 202: | Line 205: | ||
*<sup>1</sup> If and only if the destination folder is already selected (having connection to the server) | *<sup>1</sup> If and only if the destination folder is already selected (having connection to the server) | ||
*<sup>2</sup> Do not remove if the operation is COPY | *<sup>2</sup> Do not remove if the operation is COPY | ||
{|border=1 | {|border=1 | ||
Line 220: | Line 222: | ||
|- | |- | ||
|} | |} | ||
{|border=1 | {|border=1 | ||
| <b>Tagging an IMAP message</b> || <center>1</center> || <center>2</center> || <center>3</center> || <center>4</center> | | <b>Tagging an IMAP message</b> || <center>1</center> || <center>2</center> || <center>3</center> || <center>4</center> | ||
Line 233: | Line 234: | ||
| Store the flag on || <center>server</center> || <center>local db</center> || <center>server</center> || <center>local db</center> | | Store the flag on || <center>server</center> || <center>local db</center> || <center>server</center> || <center>local db</center> | ||
|} | |} | ||
{|border=1 | {|border=1 | ||
| <b>Selecting an IMAP folder</b> || <center>1</center> || <center>2</center> || <center>3</center> || <center>4</center> | | <b>Selecting an IMAP folder</b> || <center>1</center> || <center>2</center> || <center>3</center> || <center>4</center> | ||
Line 255: | Line 255: | ||
|} | |} | ||
<sup>1</sup> If and only if the selected folder is the source folder of the pending offline operation | <sup>1</sup> If and only if the selected folder is the source folder of the pending offline operation | ||
==== Implementation Plan ==== | |||
* Background preemptive message downloading: | |||
** AutoSyncOfflineStores parameter is used in nsImapMailFolder.cpp (nsImapMailFolder::HeaderFetchCompleted method) to provide automatic message download. We are going to leverage this functionality. | |||
** Implement a queue to provide with a strategy based fetch mechanism that also supports partial fetching | |||
* Sync'ing with the server should be handled on background: | |||
** Pending offline operations should be played back regularly. This mechanism is already implemented as the part of the first feature. | |||
** IDLE message should be handled silently | |||
** Message key changes should be handled silently (without generating UI events but not changing the execution flow) | |||
* Error mechanism should be changed. Currently all imap errors are handled in imapserver. This code should be re-factored in order to make it work with new UI elements. | |||
* UI element implementation: Waiting for design to be finished. | |||
==== Resourcing ==== | |||
* Dale is working on IMAP partial fetch | |||
* Emre is working on queueu mechanism | |||
* David is consulted on integration, design and implementation issues. He also works on RFC 4551. | |||
* No assignment for UI-side implementation yet. | |||
==== Estimation ==== | |||
Feature complete June 22th. Part of 3.0a2. | |||
==== Risk ==== | |||
* Changes in event mechanism: Move, Delete, Copy event handling | |||
* Problems in database message key synchronization | |||
* Error handling problems | |||
* UI might not be ready by the deadline | |||
[TBD] | |||
==== Decisions to make==== | ==== Decisions to make==== |
edits