Implement DEFLATE compression for IMAP communication, enabled by
default. User can disable compression for Wi-Fi, Mobile, or Other
networks, if it causes problems or if uncompressed communication is
faster, which is possible on Wi-Fi and wired networks, especially.
"Other" is to allow for the Android platform to introduce new
networking types without having to immediately change K-9 Mail.
However, as those arise, new network types should be added as explicit
types in K-9 Mail.
Fixes Issue 1278
Fixes Issue 119
Fixes Issue 1077
Fixes Issue 1238
Worked performed by danapple0 and cketti in
https://k9mail.googlecode.com/svn/k9mail/branches/issue1116
Add support for most batch ops (except move and copy) in search
results. Add support for batch move and copy on real folders.
Increase efficiency of bulk IMAP moves and copies by doing as multiple
UID operations.
Eliminated serialization of Account objects.
Provide up-references in useful places to make all future code cleaner
and more efficient.
Fixed a bunch of draft handling
Merged from issue1116 branch, except for Account.java, which was
copied wholesale. Account.java was manually merged in issue1116
branch at r1489
svn merge -r 1459:1489 https://k9mail.googlecode.com/svn/k9mail/branches/issue1116 .
cp ../issue1116/src/com/fsck/k9/Account.java src/com/fsck/k9/Account.java
As a side effect of this fix sending mail could be slightly faster now due to less packets being sent.
Big thanks to Kevin Newland of Michigan Technological University for organizing a test account.
Fixes issue 799
Handle CAPABILITY response in following cases:
1) When sent as part of the banner, no longer sends explicit
CAPABILITY command
2) When sent as an UNTAGGED response to LOGIN, updates stored
capabilities.
3) When sent as part of the TAGGED response to LOGIN, updates stored
capabilities.
Due to odd implementation of the CRAM-MD5 authentication, the
capability updates will not happen as part of the CRAM-MD5
authentication.
a) is already known if the server supports the NAMESPACE capability.
b) is included in the prefix anyway (=also known if namespace was set manually).
c) isn't needed when selecting a mailbox because we currently don't support folder hierarchy. So the delimeter is included in the folder name.
Fixes issue 1217
At cketti's suggestion, change the methodology for counting
server-side unread messages on an IMAP server from STATUS (UNSEEN) to
SEARCH UNSEEN NOT DELETED. STATUS (UNSEEN) does not ignore DELETED
but unexpunged messages and leads to incorrect results.
http://www.mail-archive.com/c-client@u.washington.edu/msg00929.htmlhttp://www.mail-archive.com/c-client@u.washington.edu/msg00931.html
This variant only checks for unread messages in the last 300 messages
in the folder, so will be wrong if there are unread messages earlier
in the folder. However, it'll be more often correct than the old
version for the marjority of users.
Also, change the opening of folders for IMAP IDLE purposes to
read-only using EXAMINE instead of SELECT.
of the last successful periodic mail and computes the next start time
as an offset from that successful finish. The ramifications of this
new method is that changing polling interval on an account does not
force delaying all accounts to poll next in the future by the new
interval. Instead, K-9 Mail now adjusts the next poll time based on
what the next poll time should be based on the last poll finish and
the new interval.
Example 1: In the old way, if the old polling interval was 1 hour, and
the next poll was 50 minutes away (10 minutes have passed), and you
changed the interval to 15 minutes, the poll would happen 15 minutes
from now. In the new way, the next poll will happen only 5 minutes
from now, which is 15 minutes since the last poll.
Example 2: In the old way, if the old polling interval was 1 hour, and
the next poll was 10 minutes away (50 minutes have passed), and you
changed the interval to 30 minutes, the poll would happen 30 minutes
from now. The next poll would then happen actually 80 minutes after
the previous poll completed. In the new way, it'll actually happen
immediately, because the time for the next poll, based on the new
schedule, has already passed.
Similar scenarios happen when a loss of network connectivity
occurs. In the old way, polling would resume using the restoration of
connectivity as the starting point. Each time network connectivity
was lost and restored, the next poll would be further delayed. *If
connectivity was lost and restored frequently, a poll might never
happen!* In the new way, the next poll is rescheduled based on the
time of the last successful poll, so will be rescheduled just like it
was before the loss of connectivity. If the time has already been
passed, the poll will happen immediately.
Provide for setting Sent folder to -NONE- which suppresses actually
saving sent mail in any folder.
Also, eliminate logging which folders are not configured for pushing.
It was just too much logging.
Only reschedule polling and setup pushing when necessary due to
particular setting changes. Makes the K-9 Mail UI much more
responsive to setting changes that do not affect polling and pushing.
The poll schedule is deliberately only rescheduled when the period is
decreased. An increase in period will still allow the next scheduled
check to happen as originally scheduled.
Fixes Issue 1034
Refresh Account from Preferences, so that it'll have a fresh copy of
all information. Failure to do this caused the AccountSettings
Activity to show stale information when invoked repeatedly from the
same prior Activity.