2008-12-16 18:34:01 -05:00
|
|
|
package com.android.email.mail;
|
2008-11-01 17:32:06 -04:00
|
|
|
|
Complete merge of DAmail functionality into K9mail. Following
features are added to K9mail:
1) Show unread message count on each folder
2) Sum unread count of all shown folders in an account to the account display
3) Periodically check selected folders for new mail, not just Inbox
4) Don't refresh folder when opened (unless folder is empty)
5) Show date and time of last sync for each folder
6) Fix timer for automatic periodic sync (use wakelock to assure completion)
7) Optimize local folder queries (speeds up account and folder lists)
8) Show Loading... message in status bar indicating which folder is being synced
9) Eliminate redundant sync of new messages (performance enhancement)
10) Improve notification text for multiple accounts
11) Do not automatically sync folders more often than the account-specific period
12) Use user-configured date and time formats
13) Select which folders are shown, using configurable Classes
14) Select which folders are synced, using configurable Classes
15) Added context (long press) menu to folders, to provide for Refresh
and Folder Settings
16) Status light flashes purple when there are unread messages
17) Folder list more quickly eliminates display of deleted and out-of-Class folders.
18) Delete works
19) Mark all messages as read (in the folder context menu)
20) Notifications only for new unread messages
21) One minute synchronization frequency
22) Deleting an unread message decrements unread counter
23) Notifications work for POP3 accounts
24) Message deletes work for POP3 accounts
25) Explicit errors show in folder list
26) Stack traces saved to folder K9mail-errors
27) Clear pending actions (danger, for emergencies only!)
28) Delete policy in Account settings
29) DNS cache in InetAddress disabled
30) Trapped some crash-causing error conditions
31) Eliminate duplicate copies to Sent folder
32) Prevent crashes due to message listener concurrency
33) Empty Trash
34) Nuclear "Mark all messages as read" (marks all messages as read in
server-side folder, irrespective of which messages have been downloaded)
35) Forward (alternate) to allow forwarding email through other programs
36) Accept text/plain Intents to allow other programs to send email through K9mail
37) Displays Outbox sending status
38) Manual retry of outbox sending when "Refresh"ing Outbox
39) Folder error status is persisted
40) Ability to log to arbitrary file
Fixes K9 issues 11, 23, 24, 65, 69, 71, 79, 81, 82, 83, 87, 101, 104,
107, 120, 148, 154
2008-12-30 22:49:09 -05:00
|
|
|
import com.android.email.Preferences;
|
|
|
|
|
2008-11-01 17:32:06 -04:00
|
|
|
|
|
|
|
public abstract class Folder {
|
Complete merge of DAmail functionality into K9mail. Following
features are added to K9mail:
1) Show unread message count on each folder
2) Sum unread count of all shown folders in an account to the account display
3) Periodically check selected folders for new mail, not just Inbox
4) Don't refresh folder when opened (unless folder is empty)
5) Show date and time of last sync for each folder
6) Fix timer for automatic periodic sync (use wakelock to assure completion)
7) Optimize local folder queries (speeds up account and folder lists)
8) Show Loading... message in status bar indicating which folder is being synced
9) Eliminate redundant sync of new messages (performance enhancement)
10) Improve notification text for multiple accounts
11) Do not automatically sync folders more often than the account-specific period
12) Use user-configured date and time formats
13) Select which folders are shown, using configurable Classes
14) Select which folders are synced, using configurable Classes
15) Added context (long press) menu to folders, to provide for Refresh
and Folder Settings
16) Status light flashes purple when there are unread messages
17) Folder list more quickly eliminates display of deleted and out-of-Class folders.
18) Delete works
19) Mark all messages as read (in the folder context menu)
20) Notifications only for new unread messages
21) One minute synchronization frequency
22) Deleting an unread message decrements unread counter
23) Notifications work for POP3 accounts
24) Message deletes work for POP3 accounts
25) Explicit errors show in folder list
26) Stack traces saved to folder K9mail-errors
27) Clear pending actions (danger, for emergencies only!)
28) Delete policy in Account settings
29) DNS cache in InetAddress disabled
30) Trapped some crash-causing error conditions
31) Eliminate duplicate copies to Sent folder
32) Prevent crashes due to message listener concurrency
33) Empty Trash
34) Nuclear "Mark all messages as read" (marks all messages as read in
server-side folder, irrespective of which messages have been downloaded)
35) Forward (alternate) to allow forwarding email through other programs
36) Accept text/plain Intents to allow other programs to send email through K9mail
37) Displays Outbox sending status
38) Manual retry of outbox sending when "Refresh"ing Outbox
39) Folder error status is persisted
40) Ability to log to arbitrary file
Fixes K9 issues 11, 23, 24, 65, 69, 71, 79, 81, 82, 83, 87, 101, 104,
107, 120, 148, 154
2008-12-30 22:49:09 -05:00
|
|
|
private String status = null;
|
|
|
|
private long lastChecked = 0;
|
2008-11-01 17:32:06 -04:00
|
|
|
public enum OpenMode {
|
|
|
|
READ_WRITE, READ_ONLY,
|
|
|
|
}
|
Complete merge of DAmail functionality into K9mail. Following
features are added to K9mail:
1) Show unread message count on each folder
2) Sum unread count of all shown folders in an account to the account display
3) Periodically check selected folders for new mail, not just Inbox
4) Don't refresh folder when opened (unless folder is empty)
5) Show date and time of last sync for each folder
6) Fix timer for automatic periodic sync (use wakelock to assure completion)
7) Optimize local folder queries (speeds up account and folder lists)
8) Show Loading... message in status bar indicating which folder is being synced
9) Eliminate redundant sync of new messages (performance enhancement)
10) Improve notification text for multiple accounts
11) Do not automatically sync folders more often than the account-specific period
12) Use user-configured date and time formats
13) Select which folders are shown, using configurable Classes
14) Select which folders are synced, using configurable Classes
15) Added context (long press) menu to folders, to provide for Refresh
and Folder Settings
16) Status light flashes purple when there are unread messages
17) Folder list more quickly eliminates display of deleted and out-of-Class folders.
18) Delete works
19) Mark all messages as read (in the folder context menu)
20) Notifications only for new unread messages
21) One minute synchronization frequency
22) Deleting an unread message decrements unread counter
23) Notifications work for POP3 accounts
24) Message deletes work for POP3 accounts
25) Explicit errors show in folder list
26) Stack traces saved to folder K9mail-errors
27) Clear pending actions (danger, for emergencies only!)
28) Delete policy in Account settings
29) DNS cache in InetAddress disabled
30) Trapped some crash-causing error conditions
31) Eliminate duplicate copies to Sent folder
32) Prevent crashes due to message listener concurrency
33) Empty Trash
34) Nuclear "Mark all messages as read" (marks all messages as read in
server-side folder, irrespective of which messages have been downloaded)
35) Forward (alternate) to allow forwarding email through other programs
36) Accept text/plain Intents to allow other programs to send email through K9mail
37) Displays Outbox sending status
38) Manual retry of outbox sending when "Refresh"ing Outbox
39) Folder error status is persisted
40) Ability to log to arbitrary file
Fixes K9 issues 11, 23, 24, 65, 69, 71, 79, 81, 82, 83, 87, 101, 104,
107, 120, 148, 154
2008-12-30 22:49:09 -05:00
|
|
|
|
|
|
|
public enum FolderClass {
|
|
|
|
NONE, FIRST_CLASS, SECOND_CLASS;
|
|
|
|
}
|
|
|
|
|
2008-11-01 17:32:06 -04:00
|
|
|
public enum FolderType {
|
|
|
|
HOLDS_FOLDERS, HOLDS_MESSAGES,
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Forces an open of the MailProvider. If the provider is already open this
|
|
|
|
* function returns without doing anything.
|
|
|
|
*
|
|
|
|
* @param mode READ_ONLY or READ_WRITE
|
|
|
|
*/
|
|
|
|
public abstract void open(OpenMode mode) throws MessagingException;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Forces a close of the MailProvider. Any further access will attempt to
|
|
|
|
* reopen the MailProvider.
|
|
|
|
*
|
|
|
|
* @param expunge If true all deleted messages will be expunged.
|
|
|
|
*/
|
|
|
|
public abstract void close(boolean expunge) throws MessagingException;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return True if further commands are not expected to have to open the
|
|
|
|
* connection.
|
|
|
|
*/
|
|
|
|
public abstract boolean isOpen();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the mode the folder was opened with. This may be different than the mode the open
|
|
|
|
* was requested with.
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
public abstract OpenMode getMode() throws MessagingException;
|
|
|
|
|
|
|
|
public abstract boolean create(FolderType type) throws MessagingException;
|
|
|
|
|
2008-12-11 00:25:59 -05:00
|
|
|
/**
|
|
|
|
* Create a new folder with a specified display limit. Not abstract to allow
|
|
|
|
* remote folders to not override or worry about this call if they don't care to.
|
|
|
|
*/
|
|
|
|
public boolean create(FolderType type, int displayLimit) throws MessagingException {
|
|
|
|
return create(type);
|
|
|
|
}
|
|
|
|
|
2008-11-01 17:32:06 -04:00
|
|
|
public abstract boolean exists() throws MessagingException;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @return A count of the messages in the selected folder.
|
|
|
|
*/
|
|
|
|
public abstract int getMessageCount() throws MessagingException;
|
|
|
|
|
|
|
|
public abstract int getUnreadMessageCount() throws MessagingException;
|
|
|
|
|
|
|
|
public abstract Message getMessage(String uid) throws MessagingException;
|
|
|
|
|
|
|
|
public abstract Message[] getMessages(int start, int end, MessageRetrievalListener listener)
|
|
|
|
throws MessagingException;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fetches the given list of messages. The specified listener is notified as
|
|
|
|
* each fetch completes. Messages are downloaded as (as) lightweight (as
|
|
|
|
* possible) objects to be filled in with later requests. In most cases this
|
|
|
|
* means that only the UID is downloaded.
|
|
|
|
*
|
|
|
|
* @param uids
|
|
|
|
* @param listener
|
|
|
|
*/
|
|
|
|
public abstract Message[] getMessages(MessageRetrievalListener listener)
|
|
|
|
throws MessagingException;
|
|
|
|
|
|
|
|
public abstract Message[] getMessages(String[] uids, MessageRetrievalListener listener)
|
|
|
|
throws MessagingException;
|
|
|
|
|
|
|
|
public abstract void appendMessages(Message[] messages) throws MessagingException;
|
|
|
|
|
|
|
|
public abstract void copyMessages(Message[] msgs, Folder folder) throws MessagingException;
|
|
|
|
|
|
|
|
public abstract void setFlags(Message[] messages, Flag[] flags, boolean value)
|
|
|
|
throws MessagingException;
|
Complete merge of DAmail functionality into K9mail. Following
features are added to K9mail:
1) Show unread message count on each folder
2) Sum unread count of all shown folders in an account to the account display
3) Periodically check selected folders for new mail, not just Inbox
4) Don't refresh folder when opened (unless folder is empty)
5) Show date and time of last sync for each folder
6) Fix timer for automatic periodic sync (use wakelock to assure completion)
7) Optimize local folder queries (speeds up account and folder lists)
8) Show Loading... message in status bar indicating which folder is being synced
9) Eliminate redundant sync of new messages (performance enhancement)
10) Improve notification text for multiple accounts
11) Do not automatically sync folders more often than the account-specific period
12) Use user-configured date and time formats
13) Select which folders are shown, using configurable Classes
14) Select which folders are synced, using configurable Classes
15) Added context (long press) menu to folders, to provide for Refresh
and Folder Settings
16) Status light flashes purple when there are unread messages
17) Folder list more quickly eliminates display of deleted and out-of-Class folders.
18) Delete works
19) Mark all messages as read (in the folder context menu)
20) Notifications only for new unread messages
21) One minute synchronization frequency
22) Deleting an unread message decrements unread counter
23) Notifications work for POP3 accounts
24) Message deletes work for POP3 accounts
25) Explicit errors show in folder list
26) Stack traces saved to folder K9mail-errors
27) Clear pending actions (danger, for emergencies only!)
28) Delete policy in Account settings
29) DNS cache in InetAddress disabled
30) Trapped some crash-causing error conditions
31) Eliminate duplicate copies to Sent folder
32) Prevent crashes due to message listener concurrency
33) Empty Trash
34) Nuclear "Mark all messages as read" (marks all messages as read in
server-side folder, irrespective of which messages have been downloaded)
35) Forward (alternate) to allow forwarding email through other programs
36) Accept text/plain Intents to allow other programs to send email through K9mail
37) Displays Outbox sending status
38) Manual retry of outbox sending when "Refresh"ing Outbox
39) Folder error status is persisted
40) Ability to log to arbitrary file
Fixes K9 issues 11, 23, 24, 65, 69, 71, 79, 81, 82, 83, 87, 101, 104,
107, 120, 148, 154
2008-12-30 22:49:09 -05:00
|
|
|
|
|
|
|
public abstract void setFlags(Flag[] flags, boolean value) throws MessagingException;
|
|
|
|
|
|
|
|
public abstract String getUidFromMessageId(Message message) throws MessagingException;
|
2008-11-01 17:32:06 -04:00
|
|
|
|
|
|
|
public abstract Message[] expunge() throws MessagingException;
|
|
|
|
|
|
|
|
public abstract void fetch(Message[] messages, FetchProfile fp,
|
|
|
|
MessageRetrievalListener listener) throws MessagingException;
|
|
|
|
|
|
|
|
public abstract void delete(boolean recurse) throws MessagingException;
|
|
|
|
|
|
|
|
public abstract String getName();
|
|
|
|
|
|
|
|
public abstract Flag[] getPermanentFlags() throws MessagingException;
|
|
|
|
|
2008-12-14 01:18:24 -05:00
|
|
|
public boolean supportsFetchingFlags() {
|
|
|
|
return true;
|
|
|
|
}//isFlagSupported
|
|
|
|
|
2008-11-01 17:32:06 -04:00
|
|
|
@Override
|
|
|
|
public String toString() {
|
|
|
|
return getName();
|
|
|
|
}
|
Complete merge of DAmail functionality into K9mail. Following
features are added to K9mail:
1) Show unread message count on each folder
2) Sum unread count of all shown folders in an account to the account display
3) Periodically check selected folders for new mail, not just Inbox
4) Don't refresh folder when opened (unless folder is empty)
5) Show date and time of last sync for each folder
6) Fix timer for automatic periodic sync (use wakelock to assure completion)
7) Optimize local folder queries (speeds up account and folder lists)
8) Show Loading... message in status bar indicating which folder is being synced
9) Eliminate redundant sync of new messages (performance enhancement)
10) Improve notification text for multiple accounts
11) Do not automatically sync folders more often than the account-specific period
12) Use user-configured date and time formats
13) Select which folders are shown, using configurable Classes
14) Select which folders are synced, using configurable Classes
15) Added context (long press) menu to folders, to provide for Refresh
and Folder Settings
16) Status light flashes purple when there are unread messages
17) Folder list more quickly eliminates display of deleted and out-of-Class folders.
18) Delete works
19) Mark all messages as read (in the folder context menu)
20) Notifications only for new unread messages
21) One minute synchronization frequency
22) Deleting an unread message decrements unread counter
23) Notifications work for POP3 accounts
24) Message deletes work for POP3 accounts
25) Explicit errors show in folder list
26) Stack traces saved to folder K9mail-errors
27) Clear pending actions (danger, for emergencies only!)
28) Delete policy in Account settings
29) DNS cache in InetAddress disabled
30) Trapped some crash-causing error conditions
31) Eliminate duplicate copies to Sent folder
32) Prevent crashes due to message listener concurrency
33) Empty Trash
34) Nuclear "Mark all messages as read" (marks all messages as read in
server-side folder, irrespective of which messages have been downloaded)
35) Forward (alternate) to allow forwarding email through other programs
36) Accept text/plain Intents to allow other programs to send email through K9mail
37) Displays Outbox sending status
38) Manual retry of outbox sending when "Refresh"ing Outbox
39) Folder error status is persisted
40) Ability to log to arbitrary file
Fixes K9 issues 11, 23, 24, 65, 69, 71, 79, 81, 82, 83, 87, 101, 104,
107, 120, 148, 154
2008-12-30 22:49:09 -05:00
|
|
|
|
|
|
|
public long getLastChecked()
|
|
|
|
{
|
|
|
|
return lastChecked;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setLastChecked(long lastChecked) throws MessagingException
|
|
|
|
{
|
|
|
|
this.lastChecked = lastChecked;
|
|
|
|
}
|
|
|
|
|
|
|
|
public FolderClass getDisplayClass()
|
|
|
|
{
|
|
|
|
return FolderClass.NONE;
|
|
|
|
}
|
|
|
|
|
|
|
|
public FolderClass getSyncClass()
|
|
|
|
{
|
|
|
|
return getDisplayClass();
|
|
|
|
}
|
|
|
|
|
|
|
|
public void refresh(Preferences preferences) throws MessagingException
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getStatus()
|
|
|
|
{
|
|
|
|
return status;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setStatus(String status) throws MessagingException
|
|
|
|
{
|
|
|
|
this.status = status;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-11-01 17:32:06 -04:00
|
|
|
}
|