Fixes Issue 1664
Issue 1643: Some servers respond with an untagged EXISTS to every
NOOP. This change parses through all untagged responses in a loop
until no more are being generated, avoiding calling internalOpen each
time.
Issue 1664: I have never personally seen this error, and the log looks
like a thread safety problem. mMessageCount is being set in one
thread (the IDLE thread) but not properly visible in another thread
(the check mail thread). mMessageCount and other ImapFolder private
variables are now volatile in hopes of correcting this problem.
Enhance K-9 Mail to be more tolerant of non-compliant IMAP servers.
Do not require a space following the + in command continuation
requests. The rest of the token parser will swalow the space if it is
actually there but we don't really need it.
delimeter, but only if the server does not support NAMESPACE. Since
we've encountered non-compliant servers that freak out at the LIST
command, enclose in a try/catch structure so that failures do not
totally prevent IMAP communication.
- Created "controller" and "mail.filter" package
- Moved a lot of classes to new/other packages
- Removed unused classes: NoSuchProviderException, MessageDateComparator
Simplify WakeLocks use by pushing.
Correct fault in IMAP IDLE WakeLock usage. The ThreadLocal in
MessagingControllerPushReceiver meant that the WakeLock acquired when
the DONE was sent was not being released when entering back into IDLE
state.
Consolidate the account notification so that all Activities use the
methods in MessagingController.
Utilize cketti's AutoSyncHelper in order to provide a way to make K-9
Mail obey the global Auto-sync setting. K-9 Mail doesn't obey the
Auto-sync setting by default because K-9 Mail isn't listed as one of
the listed applications.
Fixes Issue 1577
Issue 1551:
Some IMAP servers send untagged EXPUNGEs to IDLEing
clients without ever haven't sent an untagged FETCH. The untagged
EXPUNGEs are harder to deal with because they don't have a UID. So,
if the user has elected to have the IDLE connection start with a poll,
we can maintain a map of message sequence numbers to UIDs that we can
use to figure out which message to delete. To mitigate the risk of
the map falling out of date, we do a UID SEARCH UID before removing
the local copy of the message, just to make sure the message is really
gone from the server. If we detect an error, do another poll to
resync the map.
Issue 1577:
Restore the removal of notifications for an account when the account's
unread message count goes to 0.
Fixes Issue 1562
Issue 1474:
Provide new facility to totally wipe all data for an account but leave
settings intact. This is useful because sometimes storage is so full
that SQLite cannot perform the usual VACUUM or message deletion.
Add confirmation dialogs to destructive Clear and Recreate operations.
Remove destructive Clear from FolderList so as not to have to
duplicate the confirmation dialogs.
Issue 1562:
Suppress notifications when new messages arrive in Trash, Sent or
Drafts special folders.
Fixes Issue 772
Fixes Issue 852
Issue 300: Handle incoming IMAP tokens in a case-insensitive manner
Issue 772: Add Yahoo workaround
Issue 852: Add configurable IMAP IDLE refresh frequency in Incoming
server settings
Also:
Add configuration option for whether push system executes a poll on
each connect.
Move the configuration for the maximum number of push folders to the
Incoming server Settings.
Fixes Issue 1105
Fixes Issue 1395
Fixes Issue 1421
Fixes Issue 1426
When the remote store is incapable of returning an unread message count (POP)
or a flagged message count (POP, WebDAV), count the number of local
messages with the desired atributes.
Keep search results in sync with newly arrived or deleted messages.
Intentionally does not remove messages from search results due to
flag (flagged/starred or read/unread) state changes, because that
would be awkward while manipulating messages in search results.
When connected to a server that does not automatically send an
untagged UIDNEXT with the responses to SELECT, explicitly SEARCH for
the currently highest UID in the folder on the server and then add 1
to it to get the UIDNEXT.
searchable folders, and the various search strategies.
Integration takes precedence over searchability. The Integrated Inbox
doesn't care about folder searchability. Nor does an unread or flag
search on specific folders.
Searches on specific accounts always go for displayable folders. That
might need to change so that searches on specific accounts can be on
DISPLAYABLE or ALL, but never NEVER. But in the current approach,
account-specific searches are done from the Accounts Activity, which
has an unread counter based on displayable non-special folders, so the
present implementation is the most logical for now.
interfering with "unread" searches on POP3 accounts.
Flags really should be normalized in the database to eliminate the use
of LIKE while searching by Flags.
Pass around simple Serializable MessageReference objects containing
account UUID, folder name and message UID so that MessageView can
traverse lists of messages which span folders and accounts.
Fixes ClassCastException.
Also:
Envelope and star in Accounts Activity are now both "hot". Tapping
the main part of the search opens the full search; tapping the
envelope opens the search only for unread messages; tapping the star
opens the search but only for starred messages.
The envelope and star are a bit small to reliably tap. Both options
should be available via long-press, also.
Methodology will be extended to real accounts, as well.
Fixes Issue 1431
Present flagged message count inside a star, matching the visual
presentation on individual messages.
Provide display of unread and flagged message counts for canned
searches.
Perhaps the message counts for searches and account size display
should be defeatable for improved speed.