iterator to address a Market FC:
java.util.ConcurrentModificationException
at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:573)
at com.fsck.k9.mail.internet.MimeHeader.getHeader(MimeHeader.java:87)
at
com.fsck.k9.mail.internet.MimeHeader.getFirstHeader(MimeHeader.java:51)
at
com.fsck.k9.mail.internet.MimeMessage.getFirstHeader(MimeMessage.java:437)
at
com.fsck.k9.mail.internet.MimeMessage.getContentType(MimeMessage.java:130)
at
com.fsck.k9.mail.internet.MimeMessage.getMimeType(MimeMessage.java:159)
at
com.fsck.k9.mail.internet.MimeUtility.findFirstPartByMimeType(MimeUtility.java:971)
at com.fsck.k9.crypto.Apg.isEncrypted(Apg.java:464)
at
com.fsck.k9.activity.MessageView.updateDecryptLayout(MessageView.java:2702)
at
com.fsck.k9.activity.MessageView$Listener$6.run(MessageView.java:2466)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:144)
at android.app.ActivityThread.main(ActivityThread.java:4937)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
UiThread:
Fixes a common error from the market:
android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRoot.checkThread(ViewRoot.java:2802)
at android.view.ViewRoot.invalidateChild(ViewRoot.java:607)
at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:633)
at android.view.ViewGroup.invalidateChild(ViewGroup.java:2505)
at android.view.View.invalidate(View.java:5139)
at android.view.View.setFlags(View.java:4502)
at android.view.View.setVisibility(View.java:3030)
at
com.fsck.k9.activity.MessageList.hideBatchButtons(MessageList.java:2883)
at
com.fsck.k9.activity.MessageList.toggleBatchButtons(MessageList.java:2906)
at com.fsck.k9.activity.MessageList.access$500(MessageList.java:77)
at
com.fsck.k9.activity.MessageList$MessageListAdapter.pruneDirtyMessages(MessageList.java:2302)
at com.fsck.k9.activity.MessageList$1.run(MessageList.java:811)
where you're unlikely to even have access to them the first time you
walk through into the "Folders" preferences.
At the same time, move toward using a list preference widget, rather
than a custom activity.
- extracted handling of external intents to a new method
- only allow mailto URI for ACTION_VIEW and ACTION_SENDTO (as documented by AOSP)
- allow additional recipients via "to" parameter in mailto URI
- removed check for allowed MIME type when adding attachments since we're accepting all MIME types anyway
- show CC and BCC text fields when one of those recipient types was set by the intent
- use MIME type specified in intent for attachments (if present and doesn't contain a "*")
* mail-on-sd: (40 commits)
Added more comments to explain how the locking mecanism works for LocalStore
Fixed wrong method being called during experimental provider initialization (since provider isn't enabled, that didn't harm)
Add more comments about how the various StorageProviders work and how they're enabled
find src/com/fsck/ -name \*.java|xargs astyle --style=ansi --mode=java --indent-switches --indent=spaces=4 --convert-tabs
French localization for storage related settings
Remove unused SD card strings (replaced with storage indirection)
Merge mail-on-sd branch from trunk
Reset mail service on storage mount (even if no account uses the storage, to be improved)
find src/com/fsck/ -name \*.java|xargs astyle --style=ansi --mode=java --indent-switches --indent=spaces=4 --convert-tabs
Migraion -> Migration
move the Storage location preference into preferences rather than the wizard.
Made LocalStore log less verbose Added @Override compile checks
Added ACTION_SHUTDOWN broadcast receiver to properly initiate shutdown sequence (not yet implemented) and cancel any scheduled Intent
Be more consistent about which SQLiteDatabase variable is used (from instance variable to argument variable) to make code more refactoring-friendly (class is already big, code extraction should be easier if not referencing the instance variable).
Added transaction timing logging
Factorised storage lock/transaction handling code for regular operations.
Use DB transactions to batch modifications (makes code more robust / could improve performances)
Merge mail-on-sd branch from trunk
Update issue 888 Added DB close on unmount / DB open on mount
Update issue 888 Back to account list when underlying storage not available/unmounting in MessageView / MessageList
...
- Ported to the ColorPickerDialog API
- Translated the API and Internals from Indonesian to English
- Moved to use K-9 strings rather than custom strings.
In an ideal world, we should use ambilwarna as an android library
project, like it was intended.
updates on a thread rather than on the main ui thread. it results
in the list blinking with old data, but that's still a better user
experience than "frozen"
because a long SQL query takes more time before starting to return
results, K-9 was increasingly slow on large folders.
Doing two searches may take marginally more time but starts getting
results back to the UI much faster.
This doesn't work on initial sync, since the comparisons fail and you're
left with duplicates in the displayed mailbox
This reverts commit fa1c88bec348d0132acc60a320626bf0ca1170ec.
the list, use a less painful equality check than iteration.
This works because messageInfoHolders compare to each other using the
same key as message they contain.
Message retrieval:
- Use the given projection for the cursor result instead of always using a predefined projection. Extraction logic is now in dedicated classes for easy extension.
- Added BaseColumns._ID & BaseColumns._COUNT columns.
- Deprecated "id" column since it's not a reliable identifier (it's an incremential value generated at query() time)
- Moved ListPreference helper functions from FontSizeSettings to K9PreferenceActivity
- Used helper functions in Prefs
- Reordered preferences in Prefs to match the order in global_preferences.xml (display order)
- Removed the contact names cache (memory leak)
- Changed Contacts.searchByAddress() to Contacts.getNameForAddress(). Cursor is now immediately closed.
- Only try to resolve contact names when "Global settings" -> "Show contact name" is checked
- Never resolve contact names if number of recipients exceeds a threshold
Don't export the formatted date through the content provider: now exported as the raw Epoch value - date formatting is a UI concern. That makes MessageInfoHolder lighter.
Added semaphore to prevent third party content resolver from exhausting K-9 resources: it won't allow more than 1 cursor to be active at the same time. Concurrent threads (other content resolver invocations) will be suspended until the previous cursor gets released.
- Don't instantiate an empty Address array just to throw it away (less gabarge collection)
- Use a StringBuilder rather than a StringBuffer (faster as it isn't synchronized)
Status: Fixed
Extracted Intent.ACTION_SENDTO handling in a separate block to extract data from URI (as opposed to ACTION_SEND which uses Intent extras to pass data)
Removed dependency from K9 to MessageProvider (and added ability for components to register themselve for being notified when K9 instance is ready)
Moved Intent broadcast code from MessageProvider to K9
Made query() easily extensible using strategy pattern, the discriminant still being the Uri path
Fixed severe design flaw where the message provider would accumulate messages, causing an OutOfMemoryError even when the message provider isn't explicitely invoked.
query() is now synchronized with message retrieval
Added an option whether the registered name color is change or not
Avoid "Connection error" when MessageView is opened. The contacts.getName() might return null.
deleting by message_id. I believe this was our last serious leak in
our flash storage
deleting message headers was....just wrong. we've fixed other similar
bugs inherited from android 1.0 before.
Extracted notification related settings in separate class (see Issue 2268)
Update issue 371
Status: Fixed
Added ability to disable LED notification for new messages
updates on the UI thread rather than the sync thread. This is a huge
performance boost (based on simple empirical testing) for initial syncs
as we now do more work as we add messages to message lists
When selecting one of the five vibrate patterns or the number of repetitions, we should demonstrate to the user what the vibrate pattern feels like. (Thanks to achen.code)
use the ListPreference instead of the EditTextPreference to set vibrate times.
Respect "Return to list after delete" after pressing on "Archive", "Move", or "Spam" button.
TODO: Change strings to reflect this change (e.g. "Return to list after move/delete")
* ideal-screenreader:
The IDEAL Group have joined the K-9 dogwalkers and submitted their code to be part of K-9!
Initial import of the Ideal K-9 branch which adds support for screenreaders.
themselves up for download.
To do so, we need to start storing the original content-id and
content-disposition for attachments - this includes a database upgrade.
Based on a patch from @achen.code
Our previous implementation of UID FETCH didn't ever take into account
maximum command line lengths. When fetching, say 800 messages from a
GMail IMAP server, we could easily overflow the max line length leading
to a fetch that didn't get all the messages we wanted to and was
truncated before the description of which fields we want. That caused
K-9 to fetch complete messages, exhaust memory and ultimately fail,
even when we were just trying to get message lengths.
An equivalent fix needs to be made to seach by UID.
all of our mail syncing code. This led to very choppy UI experience.
This change doesn't entirely fix message load lag, but the _worst case_
I see is now better than the best case I saw last week.
Added option to automatically show images in message view (always, if sender is in contacts, never).
Patch by paulkilroy (thanks!)
Includes bugfix for the "Show pictures" on orientation change code introduced earlier.
was loading the "loading..." file into the WebView. Since it doesn't
take that long to load the real content, replacing the "Loading..." file
with "blank the view" seems to actually feel a heck of a lot faster.
alias resolver to the core java nio version with a better charset
database;
rather than falling back to not showing the user a failing message, fall
back to showing the user the message as ascii -- it makes it possible
to get _something_ out of an unknown-charset message, rather than just a
"ha ha. no." error.
A race condition made the outgoing certificate being compared to the old
incoming mHost,
throwing an exception with an untrusted certificate dialogue to accept
or decline.
into the messagelist is now much, much faster. Intentionally loading the
whole mailbox before we let the user interact with the list is
increasingly painful. A 250 message mailbox takes 2+ seconds to "unlock"
on a modern phone.
Consequently, this commit switches us _back_ to progressive loading of
mailboxes from the synchronous version.
Based on user feedback, we may or may not keep this for the production
release.
* remotes/issue814:
Changed the appearance of the ChooseAccount activity to better match the look of the account list.
svn:eol-style set to LF (UNIX style)
Update issue 814 Status: Started Cc: +fiouzy Reuse of res/layout/accounts_item.xml to match account list Automatically expand/scroll to Intent-presented account
- Patch provided by fiouzy (ability to choose identity from other accounts) - Modifications in MessageCompose by cketti (use MessageReference to replace mFolder and mSourceMessageUid)
Created branch for issue 814 (Feature to select account to send from in compose screen)
list, don't "bother" sorting the messagelist again before opening the
message, it adds a _bit_ of slowness when we don't need it and
we'll sort again when we get back to the message list.
Update issue 662
We tried out the long press for a bit and deemed it too sensitive for general usage. It can cause problems with gestures and such, so I removed it again. I hope using the option menu is not too much overhead.
If you want to include it in your custom build or anything, then r 1976 and r1977 should be enough.
every folder for each message downloaded in a session, factor the
"unread messages" count out into the calling code. It's slightly less
clean, but a pretty huge performance gain.
Fixes issue 1443
Update issue 662
Added the long press initiation of text selection. I also noticed we'll have to make sure text selection is not recognized as a gesture (or at least ignored as gesture).
for sorting. This will prevent spam with ...less true dates from pushing
messages to the top of your list. Additionally, when downloading
messages from the server, they'll actually appear in the order they were
received - the existing behaviour really screwed up users who were
trying to triage mail as it came in.
The standard ScrollView causes problems when selecting text (and the message is long enough so scrolling is possible). The newly introduced ToggleScrollView can be set to disable scrolling via touch gestures thus making copying multi-line text sections possible.
Fixes issue 662
Should query whether saving the draft message or discarding when back button was pressed.
Suppress to save the draft message automatically when attaching any file.
Correct thread safety on some member variables when doing null checks.
Explicitly check for mMessageCount == -1 and stop=true in idling loop.
However, the original error message "Message count = -1 for folder"
will still arise in some circumstances and is a valid error to
report.
Implements new setting "Sync remote deletions" which is checked by
default. When unchecked, K-9 Mail will no longer remove messages from
local storage just because the message was removed from the server.
This functionality works for all account types. Messages will still
be removed from the local store in order to stay within the limit
imposed by the "Number of messages to display" setting.
If the message isn't worth showing immediately, it is not worth
saving!
(Don't save a message unless we get at least a non-null subject and
non-null sender during first pass sync.)
Provide for only showing folders that are subscribed on the server
(IMAP only)
Also:
Change default for Notification behavior to the old way. Make going
to the search for unread messages off by default.
Fix up some hiding of labels, etc. on the incoming server settings.
Check for message suppression in search results.
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.
Computing the account size is pretty slow for big accounts, and making
this functionality optional should be considered.
Also, displays the number of flagged messages ("stars") in each
account in the Accounts list and each folder in the FolderList. Needs
better presentation of the flagged message counts, but this works as a
proof-of-concept and gets the data structures built.
Look for + as acknowledgement that we're in IDLE mode, not "idling"
string.
Also, to help with battery life:
1) Give up trying to IDLE after 10 failures.
2) Increase retry delays
Not done, yet, but available for developers to use.
Definite things to be done in the short term:
1) Allow user to hide canned searches in Accounts Activity
2) Make newly arrived mail immediately appear in search results.
Possible improvements:
3) User-definable searches
4) Make newly deleted mail immediately disappear search results.
5) Make message with flag changes immediately appear/disappear from
search results.
6) Show search result size in Accounts Activity.
Fixes Issue 1126
Apply skisters2's patch for the POP notifications. Also, add another
setRingNotified at the beginning of each poll to make sure the account
is in the right state.
Allow user to turn off gesture-based control.
Also, consolidate so that gestures could be used by other subclasses
of K9Activity. Probably should be made usable to K9ListActivity, too,
by making MyGestureDetector its own class and make it used by
K9Activity and K9ListActivity, and have the Activities implement a
callback interface for onNext and onPrevious.
Provides for the user to elect to have certain folders displayed first
in the FolderList. Folders so elected are displayed in alphabetical
order first, then folders not so elected are displayed alphabetical
order.
No special handling is done for Inbox any more, except that it is in
"top group" by default, to preserve current behavior until the user
changes the settings.
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.
Provides for menu items to quickly change the mode of displayed
folders. Also, reorganizes the menu to have an Advanced sub-menu,
like Accounts page has.
Desparately needs a new icon for the Folders menu item.
physical keyboards, though, and should be modified to only re-setup
pushers. Current implementation causes a wasteful reschedule of
polling.
Also gets the help Toast for the folder up-to-date after the
FolderList/MessageList split.
force-closes and inconsistent data on activity reuse. Also, removing
broken/unused code to preserve activity state across invocations.
across invocations.
Don't show messages that are already deleted on the server when we
first download them.
Also, correct item 1 from my comments on r1355. No longer notify for
mails I sent when I selected not to be notified for mails I sent.
* Add an explicit configuration option for stars
* Replace now-outdated "left handed" widgets config option, now that
select widgets are always on the left.
* since the multi-modality of the message list was now only a "toggle
stars" option, kill that, as it was lots of code and rather redundant
always-available select action. For the moment, this means
that widgets_on_left does nothing at all. based on feedback, I may kill
the preference and multi-mode behaviour entirely in favor of "show stars?"
(and possibly "show stars on left"
Stars, "checkboxes" and color bars updated to actually fit in wide mode.
Fixes Issue 806
Make sure to close opened folders in finally blocks in
MessagingController.
Don't make another connection when deleting or copying a
message. (Nicely speeds up copy and delete, as well.)
Another connection is still created for creating a folder while
copying or deleting (a pretty rare event), and the IMAP IDLE
connections are not re-used for user initiated activity.
Automatically build jar file for external applications.
Create convenience functions in K9RemoteControl so that external
applications do not need to know the details of handling the Intents
and broadcasts.
Send a permission string in the broadcasts so that unauthorized
applications cannot intercept communication to authorized
applications, such as K-9 Mail.
to accept control from other Android applications. Allows for
changing both Account-level and global settings. Account-level
settings can be applied to a single Account or to all Accounts.
The file class file derived from src/com/fsck/k9/K9RemoteControl.java
will be bundled into a JAR file for use by external applications.
This facility will be used for:
Issue 215
Issue 730
Issue 864
Issue 884
global config option rather than a per-account one. (But with a new
implementation.) - As we now have views that show messages across
accounts, this needed to become a global)
MessagingController was calling the MessagingListener twice for
deleted messages. By the time the second call was made, some
Activities already had removed the message holder, so a null holder
was being put on the list.
This change should prevent the double calls, and adds protection
against have the MessageList MessagingListener called with a message
that is no longer in the MessageList.
Also, some logical cleanups.
push technology. This provide a layer of safety in case of
misconfiguration (accidentally setting too many folders to push using
classes), which can bog down the device till it is unusable. On a G1,
25 folders is a very large load. Fixes Issue 871.
Also, move some pending commands to the background to make way for
more important user interface activity.
On each IMAP account, the expunge behavior can be set to expunge
messages in a folder as soon as a move or delete is performed on the
folder ("immediately"), each time the folder is polled, or only when
executed manually.
In the Message List, there is now an Expunge action in the option
menu.
In the Folder List, there is now an Expunge action in the context
menu (long-press on the folder).
For IMAP accounts, it is also possible to disable the copying of deleted messages to the
Trash folder, by setting the Trash folder to -NONE-.
Fixes Issue 536.
Separately, in WebDAV accounts, the user can now choose the
server-side equivalents of the special folders, just like for IMAP.
count, scoped for the Activity, the in-progress operation, the account
on which the operation is in progress, the folder for the operation,
when appropriate, and the progress of the operation, when it applies
to multiple items. For the MessageList, also use the determinate
progress bar to show progress for synchronization of the folder being
displayed.
Fixes Issue 924.
Also, a minor change that might help with Issue 913, by putting the
insertion of the pending command into a background thread.
from SQLite at once. The hope is that this will improve perceived
performance on large folders by starting message display sooner.
In the case of a background sync while we're loading, we _may_ end up
doing more work than necessary, since we implement paging by "date
received"
flag/unflag, mark as read/unread and delete. Also provides explicit
mode changing, and select/deselect all. Move and copy are partially
implemented, but disabled.
Desperately needs a new icon.
The "Sort by..." menu now toggles ascending/descending when the
currently selected sort mode is clicked.
Also, an ineffective change to setting the title in the Message List.
A bit more work is in order on that.
Tested to not break unix logfiles ;)
Comment #7 on issue 819 by jessev: Hide empty CC: lines in Message View
http://code.google.com/p/k9mail/issues/detail?id=819
My intent is to default to showing Subject. Date and From or To (depending on whether you're the sender) with a button/widget/hyperlink/something to fold down and show more detail.
--
You received this message because you are listed in the owner or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:
http://code.google.com/hosting/settings
Dec 1 19:15:48 mar-adentro kernel: [ 4291.016228] usb 1-6: reset high speed USB device using ehci_hcd and address 4
Dec 1 19:15:48 mar-adentro kernel: [ 4291.308225] usb 2-5: reset high speed USB device using ehci_hcd and address 2
Dec 1 19:15:48 mar-adentro kernel: [ 4291.552221] usb 3-1: reset full speed USB device using uhci_hcd and address 2
Dec 1 19:15:48 mar-adentro kernel: [ 4292.136224] usb 5-1: reset full speed USB device using uhci_hcd and address 2
Dec 1 19:15:48 mar-adentro kernel: [ 4292.425282] usb 3-1.1: reset full speed USB device using uhci_hcd and address 3
Dec 1 19:15:48 mar-adentro kernel: [ 4292.613282] usb 3-1.2: reset full speed USB device using uhci_hcd and address 4
Dec 1 19:15:48 mar-adentro kernel: [ 4292.780373] Restarting tasks ... done.
Dec 1 19:15:48 mar-adentro kernel: [ 4292.784292] usb 3-1.3: USB disconnect, address 7
Dec 1 19:15:49 mar-adentro kernel: [ 4293.230042] ADDRCONF(NETDEV_UP): eth0: link is not ready
Dec 1 19:15:49 mar-adentro kernel: [ 4293.987736] usb 3-1.3: new full speed USB device using uhci_hcd and address 8
Dec 1 19:15:50 mar-adentro kernel: [ 4294.141687] usb 3-1.3: configuration #1 chosen from 1 choice
Dec 1 19:15:54 mar-adentro pulseaudio[1548]: ratelimit.c: 82 events suppressed
Dec 1 19:16:06 mar-adentro kernel: [ 4310.825436] Registered led device: iwl-phy0::radio
Dec 1 19:16:06 mar-adentro kernel: [ 4310.825459] Registered led device: iwl-phy0::assoc
Dec 1 19:16:06 mar-adentro kernel: [ 4310.825479] Registered led device: iwl-phy0::RX
Dec 1 19:16:06 mar-adentro kernel: [ 4310.825500] Registered led device: iwl-phy0::TX
Dec 1 19:16:06 mar-adentro kernel: [ 4310.879827] ADDRCONF(NETDEV_UP): wlan0: link is not ready
Dec 1 19:16:20 mar-adentro kernel: [ 4324.261675] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
Dec 1 19:16:22 mar-adentro kernel: [ 4326.254795] padlock: VIA PadLock not detected.
Dec 1 19:44:22 mar-adentro kernel: [ 6006.712166] usb 2-4: new high speed USB device using ehci_hcd and address 5
Dec 1 19:44:22 mar-adentro kernel: [ 6006.865987] usb 2-4: configuration #1 chosen from 1 choice
Dec 1 19:44:22 mar-adentro kernel: [ 6006.869856] scsi7 : SCSI emulation for USB Mass Storage devices
Dec 1 19:44:27 mar-adentro kernel: [ 6011.871419] scsi 7:0:0:0: Direct-Access HTC Android Phone 0100 PQ: 0 ANSI: 2
Dec 1 19:44:27 mar-adentro kernel: [ 6011.873138] sd 7:0:0:0: Attached scsi generic sg2 type 0
Dec 1 19:44:27 mar-adentro kernel: [ 6011.906600] sd 7:0:0:0: [sdb] Attached SCSI removable disk
Dec 1 19:44:34 mar-adentro kernel: [ 6018.102244] sd 7:0:0:0: [sdb] 3862528 512-byte logical blocks: (1.97 GB/1.84 GiB)
Dec 1 19:44:34 mar-adentro kernel: [ 6018.110282] sdb: sdb1
Dec 1 20:00:57 mar-adentro pulseaudio[1548]: ratelimit.c: 1 events suppressed
Dec 1 20:28:13 mar-adentro pulseaudio[1548]: ratelimit.c: 2 events suppressed
LocalStore.purgeToVisibleLimit only to work on undeleted messages.
Convert LocalStore.clear() to use the new DELETED column.
Make markAllAsRead only work on undeleted messages.
Message List batch ops wired to bulk flagging.
Manage batch button state when messages are deleted (from outside
agents) while in batch mode.
Remove throws clause from Folder.close() to make it easier to close
folders where necessary.
Eliminate some cruft from MessageList
Consolidate unreadMessageCount fetching in notifyAccount
Fixes Issue 734
On reconnection, IMAP IDLE folders will now fetch up to the most
recent 10 message that arrived while a IDLE connection was not
available.
Fixes Issue 232
A serving of NAMESPACE-based auto-configuration on the side. If the
IMAP prefix is empty, and the IMAP server supports NAMESPACE, use the
IMAP prefix supplied by NAMESPACE. Also, if the user manually puts
the separator as the last character in the prefix, don't append the
separator.
Also:
Improved reliability of IMAP IDLE incoming message and flag state
change handling. Reduction (but not elimination) of multiple
connections under startup conditions.
1) Actual message sync on MessagingController uses same connection as
IDLE for faster and more efficient push operation. Uses fewer
connections to the server.
2) More aggressive handling of untagged responses should more reliably
get flag changes and new messages when many events happen at once.
3) Simplification of new mail notification
4) Push mail now respects the folder visible limit
5) When multiple untagged FETCH responses arrive en bloc, the actual
message flags and UIDs are fetched with a single request
Fixes Issue 394
Fixes Issue 763
Completely new Services architecture providing proper Service
lifecycle management.
Long running tasks in MailService are executed in a separate thread,
but the service is not stopped until the tasks are complete.
SleepService for providing synchronous sleeps with proper WakeLock
integration.
Mail polling logic moved from MailService to PollService
PushService to keep application from being killed while push is
running.
Improved logging of IMAP protocol, including logging folder name,
thread and connection hashcode.
Don't put a failed connection back into the IMAP mConnections
storage.
IMAP IDLE uses new SleepService for delaying between failed connection
attempts (allows phone to sleep and provides better reliability)
Use a ThreadLocal for ImapPusher wakelocks
Component enablement/disablement in Email is done only when components
are out of phase with desired state. (Issue 188)
. Added content-type detection using file name extension
. This adds better integration with OI File Manager which implements the ACTION_GET_CONTENT intent
Fixes Issue 133
Really, just displays a Toast and allows K-9 to continue in some
situations that otherwise cause a crash. Will hopefully allow users
of Android 2.0 to use K-9, but may just provide better info about what
is going wrong.
Fixes Issue 577
K-9 has earned its Canine Good Citizen.
K-9 now respects the Android-global Background data preference, by
default. However, there is an override, allowing K-9 to ignore the
global preference, by either always running around and synchronizing
in the background, or staying put and not synchronizing.
A user can now elect to turn off mail synchronization across all
accounts in either the K-9 Preferences page by setting Background
synchronization to Never, or leaving that value as "When 'Background
data' is checked" and deselecting the Android-global Background data
preference.
1) Automatically add / separators if not supplied by user. Fixes
Issue 290
2) Enable Move and Copy.
3) Enable setting a message to unread state.
4) Set authentication header for downloading and sending messages, so
that those functions work with sites using Basic authentication.
5) Don't swallow log Exceptions. Instead, allow Exceptions to
percolate up to higher levels so that they can be logged into
K9mail-errors.
6) Provide appendMessages function, so that Drafts get stored on the
server.
7) Enable server-side message deletion, using user-selected Trash
folder.
because a user that has auto-open set to a particular folder might
never get to the actual folder list which contains the option menu
containing Account Settings. (There's been one comment in the Market
pertaining to this.)
This commit contains the entirety of the changes performed in the
issue4-1.X branch from revision 718 through revision 851. Because the
issue4-1.X branch was up-to-date with trunk revision 847 at revision
849, the source of this commit was not an "svn merge". Instead, it is
merely a copy of all changed files from the issue4-1.X branch to my
trunk working copy and a straight commit.
Also:
Issue 551
Issue 628
Issue 650
Issue 654
Issue 656
Issue 682
Issue 696
Improve reliability of message viewing and composing while still using
MessagingController worker queues
svn merge -x -w -c 761 ../issue4-1.X/ .
Put loading a message from the LocalStore into a ThreadPool executor,
like was done previously in MessageView. Remote loading still goes
through the work queue.
Note: No putting 'Account Settints' and 'Accounts' menu option on MessageList as it does not belong there
TODO: Add more menu options: Mark All As Read, Folder Settings, etc...
Note: No putting 'Account Settints' and 'Accounts' menu option on MessageList as it does not belong there
TODO: Add more menu options: Mark All As Read, Folder Settings, etc...
Issue 30
Provide support for multiple identities. Identities can be managed in
the Account Settings. While composing a message, an identity can be
chosen for sending. Identity information and signature edits are
saved in a header field, so that they survive being synced to the
server and back.
Provide support for editing the quoted text, either for replies or
forwards. The quoted text is immediately editable, in a separate
editor from the main body. When saved in a draft, the two are
contatenated, but the length of the main body is saved with the
identity information, and is used to split the two parts again, when
opening the draft.
. Imported JARs for classes not exposed in teh sdk anymore
. Imported src code from Android core for for classes not exposed in the sdk anymore
. Updated MessageView implementation of UrlInterceptHandler modified in sdk 1.5 (pls review)
First stab at a folderlist that doesn't know or care about messages
r62973@17h: jesse | 2009-05-07 10:50:11 -0400
A very broken first stab at a message list that only knows about one folder.
r62974@17h: jesse | 2009-05-07 10:50:44 -0400
When you go from an account list to an individual account, open a folderlist, not an fml
r62975@17h: jesse | 2009-05-07 10:51:24 -0400
Update Welcome activity to open an ml instead of an fml
r62976@17h: jesse | 2009-05-07 10:51:59 -0400
When setting up accounts is over, open an fl instead of an fml
r62977@17h: jesse | 2009-05-07 10:52:51 -0400
Update MessageView to use folderinfoholders and messageinfoholders from the 'correct' classes.
r62978@17h: jesse | 2009-05-07 10:59:07 -0400
MailService now notifies the fl instead of the fml. Not sure if it should also notify the ml. - will require testing
r62979@17h: jesse | 2009-05-07 11:01:09 -0400
Switch MessagingController's notifications from notifying the FML to notifying an ML
r62980@17h: jesse | 2009-05-07 11:25:22 -0400
Update AndroidManifest to know about the new world order
r62981@17h: jesse | 2009-05-07 11:26:11 -0400
Try to follow the android sdk docs for intent creation
r62982@17h: jesse | 2009-05-07 11:28:30 -0400
reset MessageList for another try at the conversion
r62983@17h: jesse | 2009-05-07 11:47:33 -0400
This version doesn't crash and has a working 'folder' layer. now to clean up the message list layer
r62984@17h: jesse | 2009-05-07 15:18:04 -0400
move step 1
r62985@17h: jesse | 2009-05-07 15:18:37 -0400
move step 1
r62986@17h: jesse | 2009-05-07 15:22:47 -0400
rename step 1
r62987@17h: jesse | 2009-05-07 17:38:02 -0400
checkpoint to move
r62988@17h: jesse | 2009-05-07 17:40:01 -0400
checkpointing a state with a working folder list and a message list that doesn't explode
r62989@17h: jesse | 2009-05-07 17:40:26 -0400
Remove debugging cruft from Welcome
r62990@17h: jesse | 2009-05-07 22:00:12 -0400
Basic functionality works.
r62991@17h: jesse | 2009-05-08 04:19:52 -0400
added a tool to build a K-9 "Beta"
r62992@17h: jesse | 2009-05-08 04:20:03 -0400
remove a disused file
r62993@17h: jesse | 2009-05-09 06:07:02 -0400
upgrading build infrastructure for the 1.5 sdk
r62994@17h: jesse | 2009-05-09 06:22:02 -0400
further refine onOpenMessage, removing more folder assumptions
r62995@17h: jesse | 2009-05-09 20:07:20 -0400
Make the Welcome activity open the autoexpandfolder rather than INBOX
r62996@17h: jesse | 2009-05-09 20:14:10 -0400
MessageList now stores the Folder name it was working with across pause-reload
r62997@17h: jesse | 2009-05-09 20:14:26 -0400
Removing dead code from FolderList
r63060@17h: jesse | 2009-05-10 00:07:33 -0400
Replace the old message list refreshing code which cleared and rebuilt the list from scratch with code which updates or deletes existing messages.
Add "go back to folder list" code
r63061@17h: jesse | 2009-05-10 00:07:50 -0400
fix message list menus for new world order
r63062@17h: jesse | 2009-05-10 00:08:11 -0400
Remove message list options from folder list menus
r63063@17h: jesse | 2009-05-10 00:10:02 -0400
remove more message list options from the folder list
r63064@17h: jesse | 2009-05-10 00:10:19 -0400
fix build.xml for the new android world order
r63065@17h: jesse | 2009-05-10 00:39:23 -0400
reformatted in advance of bug tracing
r63066@17h: jesse | 2009-05-10 05:53:28 -0400
fix our 'close' behavior to not leave extra activities around
clean up more vestigal code
r63067@17h: jesse | 2009-05-10 18:44:25 -0400
Improve "back button / accounts" workflow from FolderList -> AccountList
r63068@17h: jesse | 2009-05-10 19:11:47 -0400
* Add required code for the 'k9beta' build
r63069@17h: jesse | 2009-05-10 19:12:05 -0400
Make the folder list white backgrounded.
r63070@17h: jesse | 2009-05-10 19:12:26 -0400
* Include our required libraries in build.xml
r63071@17h: jesse | 2009-05-10 19:13:07 -0400
Added directories for our built code and our generated code
r63072@17h: jesse | 2009-05-10 19:13:36 -0400
Added a "back" button image
r63073@17h: jesse | 2009-05-10 20:13:50 -0400
Switch next/prev buttons to triangles for I18N and eventual "more easy-to-hit buttons" win
r63074@17h: jesse | 2009-05-10 20:17:18 -0400
Tidy Accounts.java for some perf hacking.
r63081@17h: jesse | 2009-05-10 22:13:33 -0400
First pass reformatting of the MessagingController
r63082@17h: jesse | 2009-05-10 23:50:28 -0400
MessageList now correctly updates when a background sync happens
r63083@17h: jesse | 2009-05-10 23:50:53 -0400
Tidying FolderList
r63084@17h: jesse | 2009-05-10 23:51:09 -0400
tidy
r63085@17h: jesse | 2009-05-10 23:51:27 -0400
tidy
r63086@17h: jesse | 2009-05-11 00:17:06 -0400
Properly update unread counts in the FolderList after sync
r63087@17h: jesse | 2009-05-11 01:38:14 -0400
Minor refactoring for readability. replace a boolean with a constant.
r63090@17h: jesse | 2009-05-11 02:58:31 -0400
now that the foreground of message lists is light, we don't need the light messagebox
r63091@17h: jesse | 2009-05-11 17:15:02 -0400
Added a string for "back to folder list"
r63092@17h: jesse | 2009-05-11 17:15:24 -0400
Added a message list header with a back button
r63093@17h: jesse | 2009-05-11 17:15:54 -0400
Remove the "folder list" button from the options menu. no sense duplicating it
r63094@17h: jesse | 2009-05-11 17:17:06 -0400
Refactored views, adding our replacement scrollable header
r63184@17h: jesse | 2009-05-12 07:07:15 -0400
fix weird bug where message lists could show a header element for a child
r63185@17h: jesse | 2009-05-12 07:08:12 -0400
Add new-style headers to folder lists. reimplement "get folder by name" to not use a bloody for loop
r63211@17h: jesse | 2009-05-12 18:37:48 -0400
Restore the former glory of the "load more messages" widget. it still needs an overhaul
r63296@17h: jesse | 2009-05-12 23:23:21 -0400
Get the indeterminate progress bar to show up again when you click "get more messages"
r63297@17h: jesse | 2009-05-13 02:40:39 -0400
Fixed off-by-one errors in click and keybindings for messagelist
r63298@17h: jesse | 2009-05-13 06:04:01 -0400
Put the folder title in the name of the folderSettings popup
r63299@17h: jesse | 2009-05-13 06:04:49 -0400
Reformatting. Removing debug logging
r63300@17h: jesse | 2009-05-13 06:05:32 -0400
Fixing "wrong item selected" bugs in the FolderList
r63328@17h: jesse | 2009-05-13 13:20:00 -0400
Update MessageView for 1.5
r63329@17h: jesse | 2009-05-13 13:50:29 -0400
A couple fixes to "picking the right item"
Titles on the message context menu
r63330@17h: jesse | 2009-05-13 13:58:37 -0400
Added an "open" context menu item to the folder list
r63347@17h: jesse | 2009-05-13 18:00:02 -0400
Try to get folderlists to sort in a stable way, so they jump around less in the ui
r63349@17h: jesse | 2009-05-13 20:37:19 -0400
Switch to using non-message-passing based notifications for redisplay of message lists, cut down redisplay frequency to not overload the display
r63432@17h: jesse | 2009-05-16 13:38:49 -0400
Android 1.5 no longer gives us apache.commons.codec by default and apache.commons.logging by default. Import them so we have em.
There's probably something smarter to do here.
r63438@17h: jesse | 2009-05-16 14:12:06 -0400
removed dead code
r63439@17h: jesse | 2009-05-16 14:30:57 -0400
Minor tidy
r63440@17h: jesse | 2009-05-16 14:39:34 -0400
First pass implementation making MessageList streamy for faster startup
r63441@17h: jesse | 2009-05-16 21:57:41 -0400
There's no reason for the FolderList to list local messages
r63442@17h: jesse | 2009-05-16 21:58:57 -0400
Switch to actually refreshing the message list after each item is loaded
r63450@17h: jesse | 2009-05-16 22:34:18 -0400
Default to pulling items out of the LocalStore by date, descending. (since that's the uneditable default ordering)
This makes our messages come out of the store in the order the user should see them
r63451@17h: jesse | 2009-05-16 22:34:44 -0400
Set some new defaults for the FolderList
r63452@17h: jesse | 2009-05-16 22:35:43 -0400
set some new message list item defaults
r63456@17h: jesse | 2009-05-17 12:56:10 -0400
It's not clear that Pop and WebDav actually set us an InternalDate. I'd rather use that so that spam doesn't topsort. But I also want this to _work_
r63457@17h: jesse | 2009-05-17 12:56:47 -0400
actually check to make sure we have a message to remove before removing it.
r63458@17h: jesse | 2009-05-17 13:10:07 -0400
Flip "security type" to before the port number, since changing security type is the thing more users are likely to know/care about and resets port number
r63469@17h: jesse | 2009-05-17 18:42:39 -0400
Provisional fix for "see the FoldeRList twice" bug
r63471@17h: jesse | 2009-05-17 20:47:41 -0400
Remove title bar from the message view
r63544@17h: jesse | 2009-05-20 23:53:38 -0400
folderlist tidying before i dig into the jumpy ordering bug
r63545@17h: jesse | 2009-05-20 23:56:00 -0400
Killing dead variables
r63546@17h: jesse | 2009-05-21 00:58:36 -0400
make the whole title section clicky
r63556@17h: jesse | 2009-05-21 01:48:13 -0400
Fix where we go when someone deletes a message
r63558@17h: jesse | 2009-05-21 22:44:46 -0400
Working toward switchable themes
r63563@17h: jesse | 2009-05-21 23:53:09 -0400
Make the MessageList's colors actually just inherit from the theme, rather than hardcoding black
r63567@17h: jesse | 2009-05-22 10:14:13 -0400
Kill a now-redundant comment
r63571@17h: jesse | 2009-05-22 19:43:30 -0400
further theme-independence work
r63572@17h: jesse | 2009-05-22 19:55:23 -0400
gete -> get (typo fix)
r63573@17h: jesse | 2009-05-22 22:48:49 -0400
First cut of a global prefs system as well as a theme preference. not that it works yet
r63577@17h: jesse | 2009-05-24 14:49:52 -0400
Once a user has actually put in valid user credentials, start syncing mail and folders in the background instantly.
This gives us a much better "new startup" experience
r63578@17h: jesse | 2009-05-24 14:55:00 -0400
MessageList doesn't need FolderUpdateWorker
r63579@17h: jesse | 2009-05-24 17:57:15 -0400
Fix "get message by uid"
Switch to showing messages 10 by 10, rather than 1 by 1 for huge loadtime performance improvements
r63587@17h: jesse | 2009-05-24 19:19:56 -0400
Cut down LocalMessage creation to not generate a MessageId or date formatter.
r63589@17h: jesse | 2009-05-24 22:22:32 -0400
Switch to null-escaping email address boundaries, rather than a VERY expensive URL-encoding
r63590@17h: jesse | 2009-05-24 22:23:21 -0400
Clean up our "auto-refresh the list when adding messages after a sync"
r63593@17h: jesse | 2009-05-24 22:53:45 -0400
replace isDateToday with a "rolling 18 hour window" variant that's more likely to give the user a useful answer and is 30x faster.
r63595@17h: jesse | 2009-05-24 23:54:14 -0400
When instantiating messges from the LocalStore, there's no need to clear headers before setting them, nor is there a need to set a generated message id
r63596@17h: jesse | 2009-05-24 23:54:39 -0400
make an overridable setGeneratedMessageId
r63597@17h: jesse | 2009-05-24 23:54:55 -0400
Remove new lies from comments
r63598@17h: jesse | 2009-05-24 23:55:35 -0400
Replace insanely expensive message header "name" part quoting with something consistent and cheap that does its work on the way INTO the database
r63605@17h: jesse | 2009-05-25 17:28:24 -0400
bring back the 1.1 sdk build.xml
r63606@17h: jesse | 2009-05-25 22:32:11 -0400
Actually enable switchable themese and compilation on 1.1
r63692@17h: jesse | 2009-05-29 23:55:17 -0400
Switch back to having titles for folder and message lists.
Restore auto-open-folder functionality
r63694@17h: jesse | 2009-05-30 18:50:39 -0400
Remove several off-by-one errors introduced by yesterday's return to android titlebars
r63696@17h: jesse | 2009-05-30 23:45:03 -0400
use convertView properly for performance and memory imrpovement in FolderList and MessageList
r63698@17h: jesse | 2009-05-31 19:42:59 -0400
Switch to using background shading to indicate "not yet fetched"
r63701@17h: jesse | 2009-05-31 21:28:47 -0400
Remving code we don't actually need these bits of apache commons on 1.1
. HTMLized version of plain text email is not loaded up as a MIME part of the message anymore. We use a custom seperate variable in the text body class.
. Free up memory as we go in MessagingController.synchronizeMailboxSynchronous()
. IMAP: We only do a partial fetch of the text body of large messages during background sync. This allow for faster syncs and avoid expensive parsing that lead to OutOfMemoryError
When no accounts are set for automatic sync, the MailService is
stopped. When the MailService is stopped, the Android platform is
given greater leeway in killing the entire K9 process in order to free
system resources.
Fix POP3 deletes. Verizon uses - in their POP3 UIDs, and K9 was
assuming that only Local UIDs have -. Removed that assumption. Also,
after issuing DELE on POP3 connection, need to also issue a QUIT. The
delete code in MessagingController now closes the folder after
deleting a message, which will slow down IMAP deletes, but also
conserve connections, so is probably a net benefit.
synchronization could happen if an Exception was thrown while parsing
an untagged response without using executeSimpleCommand. For
instance, while doing a fetch. Once synchronization was lost, later
commands would fail in surprising ways. One manifestation of such
failures was spontaneously emptying of folders when search results
were not returned properly. The new code makes sure to only accept OK
responses with the tag of the command, and discards the untagged
responses from previous command.
Issue 252
394: Replace code change lost with move of DAmail MailService.java to
K-9. Eliminate the stopSelfs. Without the stopSelfs, the Service
remains active and the Android platform is far less likely to kill the
process, although not absolutely forbidden from doing so. Better will
be to implement the full BroadcastReceiver methodology referred to in
Issue 394, which would allow replacing the stopSelfs, which would make
K-9 a better good citizen.
252: Fix logic for raising and canceling notifications based on number
of new unread messages and total unread messages.
Issue 201
Issue 224
Issue 342
Handle untagged EXISTS messages at any time. Should increase
synchronization speed and accuracy.
Handle IMAP servers that send a NIL where a literal is normally.
Avoids failure to sync when folder contains certain messages.
Throw Exception if folder message count is less than 0, avoiding
accidentally emptying a folder.
Issue 192
Do not remove markers for deleted messages, even if the corresponding
remote message is not returned by the remote store. The remote
message may not be returned simply because the query did not encompass
it on this run. If the account's delete policy is set to "Do not
delete from server", or the delete hasn't succeeded before a folder
refresh, a message for which the deleted marker has been removed can
errorneously reappear.
This will lead to the local store eventually having a large number of
deleted message markers. In the long term, we'll need a way to manage
and possibly automatically remove them.
Merged from branch issue143 @ revision 426:
Complete replacement for SharedPreferences. Uses SQLite database
stored in application's databases folder.
Will load from legacy preferences if DB-backed preferences are empty.
Editor conforms to atomic commit contract.
Hardening of POP3 and SMTP communication:
SMTP: Decrement failure counter when no possible message send
occurred. This way, K-9 will only stop attempting to send messages
for which a possible successful send occurred, but K-9 could not
detect. Any message that is known to have completely failed to send
will be reattempted indefinitely.
POP3: Some reworking of Exception handling. Also, if it is not
possible to get a "message number" for the UID of the message that is
being deleted, conclude that the message has already been deleted on
the server. Mark this as a permanent error, so that it gets removed
from the pending actions queue.
MessagingController: Look for the permanentFailure flag on the
MessagingException, and if a pending action raised a permanent
failure, remove the pending action from the queue so that it will not
be re-attempted nor block later requests.
Significant hardening of the email sending process.
A given message in the Outbox is only attempted to be sent 5 times.
Once the threshold is reached, the message is flagged. asses through
the Outbox skip flagged messages. The message can be tried again by
manually unflagging. When any messages are flagged during a pass
through the Outbox, K-9 raises a notification with a fast flashing red
LED, alerting the user to the failure to send. A note is also placed
in the K9mail-errors.
The read timeout on SMTP connections has been changed to 300000ms (5
minutes)
The send attempt counter is kept in memory, not stored with the
message, so a phone or application restart will clear the counters,
but not the flagged state. As the intent of this revision is to avoid
runaway message sending, this is deemed to be acceptable for now.
The moving of messages from the Outbox to the Sent folder has been
changed to an atomic move.
Extra error checking has been added to the SMTP communication code.
The flashing LED may be excessive.
Provide preference for which folder is automatically expanded when
entering the Folder/Message list.
Can be set to -NONE-, so that no folder is automatically expanded.
Defaults to Inbox, which is like the default behavior of the core
Android Email.
Fails to move the automatically opened folder to the top of the
screen. This needs more work.
The already selected folder should be highlighted (or otherwise
indicated) in the ChooseFolder Activity. This needs more work.
Accounts: Option menu->Check mail = check mail in all
folders of all accounts
Accounts: Context (long-press on account) menu->Check mail = check mail
in all folders of this account
Folder/Message List: Option menu->Check mail = check mail in all
folders of this account
Folder/Message List: Contet (long-press on folder) menu->Check mail = check mail in this
folder*
*All "Check mail" options, except for the long-press on an individual
folder, respect the normal synchronization class settings.
Eliminate all Refresh menu items.
Add progress indicators to Accounts activity. Indeterminite progress
indicator while email checking is in progress. Determinite progress
indicator while fetching unread counts.
dumbfile on Feb 28, 2009.
One change of my own, putting the actual folders name outside the
parentheses, and the functional/special name inside the parentheses.
Copy now copied body (but attachments might not work right).
Move is now reliable (needed to open the destination folder), and
leaves a placeHolder message behind in the source folder so that
messages are not resynced.
3.
Each remote Store (IMAP, POP3, WebDAV) can provide indications to the
higher level classes as to whether copy and move are implemented.
Currently, copy and move are only provided by ImapStore.java. When
the facilities are not available, the user interface suppresses the
menu options.
The available destination folders can be configured using folder
classes.
Copy results in null message bodies in the destination copy of the
message until the next sync. This is a problem that occurred with
deletes previously, and is likely a fault with the copyMessages method
of LocalStore.java.
Utilizes a modified version of the ChooseFolder.java Activity that
debuachedsloth contributed in a patch attached to Issue 285 on 16 Feb
2008.
All messages in all folders that were sent from the email address
associated with the account display the recipient, preceeded by To:,
instead of the sender.
Puts quotes around username and password for IMAP authentication.
Also, if authentication fails, closes the connection so that it will
be retried. Otherwise, there is no way to fix the problem, say, by
changing the password in the Incoming Settings.
ConcurrentHashMap seems to serialize as a HashMap. Not sure why or
how.
This change has re-enabled the saving of the unread counts during an
orientation change, giving somewhat fast response. If it fails again,
just comment out the block of code.
Provide two options for each Account:
Compact (which VACUUMs the accounts and prunes recreatable
attachments)
Clear all data (danger!) (which wipes all messages and attachments in
the account, except placeholder deleted messages)
Displays a Toast when the Compact or Clear is queued, and another
Toast with the shrinkage results.
(Also, a small change to increase probability of seeing messages after
a sync, by setting the needsRefresh on all folders when a sync is done.)
orientation change (onResume) until I figure out the
ClassCastException
Will slow down display of unread message counts, but they will show up
after a slight delay.
thread.
Push unread message counting into the background.
Should increase startup performance and reduce black-screens-of-death
that some Market "commentators" report.
Also, updates the per-account unread message count when email account
is finished synchronizing.
Note: Notifications are displayed after all accounts are sync'ed but are delayed to be 1sec. apart
TODO: Display notifications at the end of each individual sync
folders are sorted first by subject, then by date. Subject sorting is
case insensitive and disregards leading re:, fw: and fwd: prefixes.
Threading can be toggled via the T hotkey or the option menu.
The icons could use improvement.
Threading state is maintained during a run of K-9, among all
accounts.
Re-enable instant deletes in MessageView
Deleted message suppression should be generalized into a flag cache,
serving Seen, Flagged, and Answered flags, as well.
Copy message to Trash still needs work, so that no duplicates are ever
visible and server-sync is more clean. This will be especially
important, as the same code will be needed for the future "message
copy/move" facility.
Account settings) for scrolling the navigation buttons with the
message, or keeping the buttons on screen. Scrolling mode can be
automatically switched based on availability of keyboard. (Issue 197
and Issue 194)
Add ability to flag/unflag message from options menu
1) Eliminate the top row Next Message and Previous Message
2) In the bottom buttons for portrait mode, replace Reply and Forward
with Prev and Next
Justification: if you're going to be replying or forwarding, you're
about to embark on a lot of typing, anyway. Having to hit Menu
isn't an undue burden.
3) Prev goes to the adjacent *older* message, next goes to the
adjacent *newer* message
4) In the bottom buttons for landscape mode, added Prev and Next as the
outer buttons
5) Add Account option for hiding the bottom buttons when the keyboard
is available.
Also, temporarily (hopefully!) reverted the instant delete from the
MessageView because it isn't working right. The method here is slower
but safer.
date/time formats. With this change, K-9 can run on original master
or cupcake versions for the platform.
This seems like an excessive amount of code. Perhaps there is a
public API that accomplishes this work. Alternatively, the code in
MessageView.java and FolderMessageList.java should be consolidated
into a utility class used by both of the classes needing this
functionality.
Patches were handling uppercase MIME types were submitted by gwillen
in K-9 issue 94 (MimeBodyPart.java and MimeMessage.java)
and
Josh Guilfoyle as part of Android patch 1539 (MimeUtility.java)
Sorry for missing the attribution on the original commit
a red/bold subject. Can be done in the FolderMessageList using the
hotkey G (toggle) or by long-pressing the message to bring up the
message context menu. Can be done while viewing an individual message
by using the hotkey G (toggle). To-do: add a Flag/Unflag option to a
menu in the individual message view.
Add sending the Answered flag to the IMAP server when replying to a
message. This is currently done as soon as the reply is started.
Perhaps it would be better to wait until the reply is sent, but that
would require keeping additional state with the draft. Messages to
which the user has replied are indicated with a white arrow next to
the subject.
To-do: In the MessageView, provide visual indication of Flagged and
Answered states.
approach should guarantee that the syncing never stalls just because a
single attempt exceeds the (currently 10 minute) WakeLock timeout. At
the sync frequency, K-9 will wakeup again and refresh the WakeLock for
another go at syncing. This should make synchronization much more
reliable in the face of slow or unavailable connections, in particular
ones which hit the socket read timeouts.
Also, fixed the audible notifications so that the ringtone selected
is always for one of the accounts with new unread mail.
Developers now have the option to turn on a fast-flashing LED during
synchronization in order to observe whether synchronization is
happening while the handset is apparently asleep. I think this option
would be aggravating to non-developer users. See
Email.NOTIFICATION_LED_WHILE_SYNCING
Issue 175
Issue 170
folders
Automatically clean up deleted messages in Outbox (make deleted
messages destroyed); don't try to send deleted messages, destroy
messages in outbox when deleting. (Yep, the first and third items are
redundant, but will automatically clean up damaged outboxes)
Added support for default mailbox path setting if we can't automatically determine what it is.
Fixed a bug exposed by changes relating to a fix for non-relative email paths being returned.
to send the proper delete requests (delete, mark read, nothing).
Otherwise, this code will delete on the server any message deleted on
the handset, no matter option the user selects.
MessageView
Deleting a message in Trash deletes it for real (permanently)
All message operations are allowed on messages in the Outbox. Special
handling for deleting, so that the message is copied to Trash, then
copied asynchronously to the remote Trash.
Add some more items to the hotkey help
Fixed "loading more messages" to use the cleaner String.format way of doing things, and changed the corresponding entries in strings.xml.
Deleted the now-unused build_number.xml file.
Accounts are now set:
Folder display mode = All except 2nd Class
Folder sync mode = Only 1st Class
Only the Inbox is set for:
Folder sync class = 1st Class
All other folders have class set to None for sync and display
Also restored an optimization on opening local folders that I
removed. It is now optimistic, and in the normal case does not have
to make an explicit existence check
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