The commit that introduced those notifications also introduced a rather
... interesting design pattern: The CertificateValidationException
notified the user of its pure existance - it's no longer a 'message'
only, but defines policy. As this is more than unusual, replace this
pattern by the MessagingController treating
CertificateValidationException specially when accessing remote folders.
Also make clear which account failed when constructing the notification.
The previous code worked fine on Android 4.2. But the lifecycle on older
Android versions (tested with 2.2) seems to be slightly different. This
should fix the problem.
- show thread as starred if at least one message in it is starred
- use arrival date of last message as thread arrival date
- use sum of message attachment counts in thread as thread attachment
count
- show thread as answered/forwarded if all messages in thread were
answered/forwarded
* zjw/folder_search:
Provide message search capability from the folder list.
Eliminate unused code.
Switch to using the action bar for folder searches.
Use a more appropriate title when diplaying folder search results.
Switch to using the action bar for folder searches.
Provide new action bar "find folder" icons
Create action buttons to search for folders.
Readjust settings version number based on current master
Control wrapping of folder names programmatically only
Permit the folder list item to expand vertically.
Create new preference option for wrapping folder names in folder list view.
Issue 1911: Permit folder names to wrap on multiple lines in folder list view so users can see the entire name.
* zjw/progress_indicators:
Provide a progress indicator while loading remote search results.
Remove the progress bar from the message list footer.
Provide progress indicator for searches.
Conflicts:
src/com/fsck/k9/activity/MessageList.java
Through shortcuts, widgets, etc. users can start the app using another
activity than Accounts. We still want to display the database upgrade
screen in such cases.
Eliminate the old-style search dialog box. A similar change
was previously made when searching from the folder list. This
change is applicable when searching while choosing a
folder (e.g. a destination folder for a copy operation).
Searches can be slow, so users need an indicator. The indicator is
also used when opening a message list or when refreshing it, or when
loading more messages.
This also removes some unused code.
With this fix, a CertPathValidatorException or CertificateException will
create a "Certificate error: Check your server settings" notification
in the status bar. When the user clicks on the notification, they are
taken to the appropriate server settings screen where they can review their
settings and can accept a different server certificate.
This removes the default settings (ellipsized, single line) from the layout
xml file and implements them programmatically. This fixes the problem where:
You are viewing a folder list while wrapping is currently on, then you go into settings
and turn wrapping off, after which you are back at the folder list, but the
list is still wrapped.
Test case:
- Have two accounts A and B
- Get a mail on A
- Get a mail on B
- Click on the notification for A
Result:
You end up seeing the message from B instead of A
The reason for that is that we need to register separate PendingIntents
for each account.
Both items are commonly used even by the average user (and likely both
are used more commonly than 'clear local messages'), so it makes
sense to provide them in the context menu as well as the action bar.
- If a message contained in the inbox list is deleted or read while
there are messages in the overflow list, restore the newest message
from the overflow list so there are always 5 messages in the inbox
list in that case.
- Use explicit methods instead of method overriding.
LocalMessage already has a content preview in it; reuse that.
Remove unneeded MimeMessage#getPreview() method now that we don't need
to generate a preview anymore.
Merge branch 'jb-notifications' of https://github.com/maniac103/k-9
* 'jb-notifications' of https://github.com/maniac103/k-9:
Strip off signatures from preview.
Reset list of unseen messages when the user clears the notification.
In the new-style notification, directly go to message if new message count is 1.
Cancel notification when viewing message by clicking on notification.
Directly go to message when clicking on a single-message notification.
Fix message overflow.
Incorporate review comments.
Some fixes to notification behaviour.
Add German translation for message delete notification action.
Add delete action to notification.
Update summarized notification if a message is deleted or read remotely.
Fixed deprecation warnings.
Simplify code and beautify pre-jellybean notifications by using bold sender span for those.
Respect "Show contact names" option when determining sender for notification.
Fix marking messages as read from notification.
Add German translation for new strings.
Add actions to notifications.
First stab at new notifications.
Remove own Notification.Builder abstraction.
Update android support library to latest version.
- Make notification high priority if any previewed message is flagged
- Fix message ordering
- Go to folder list instead of folder of newest message if there are
multiple messages in the notification
MessagingController.setFlag(Account, List<Long>, Flag, boolean, boolean)
expects database IDs, while Message.getId() returns UIDs. Fix the
operation by using a variant that expects UIDs.
- If there's only a single message in the notification, add 'Reply' and
'Read' (marks as read) buttons.
- If there's more than one message pending, add only 'Read'.
- disable pull-to-refresh while showing the "Loading..." view
- move initialization code from onResume() to initializePullToRefresh()
and call it from onCreateView()
With the introduction of the action bar there is no longer a separate
button bar for refile actions. So it's no longer necessary to hide the
buttons to save screen space.
Currently only the Accounts activity uses the new count.
While working on this I realized that the unread/flagged search for
accounts currently looks for unread/flagged messages in all folders, not
all displayable folders without special folders (Trash, Spam, Outbox,
Sent, Drafts) like we used to.
Also, the "All messages" search currently doesn't limit the search to
searchable folders like it is supposed to.
This changes the interface to MessagingController and the way flags are
updated in the database. Now messages aren't changed one by one but in
batches of 500. This should give better performance, but breaks the
unread and flagged count. I'm not very sad about this, because now we
can move towards only displaying the number of unread/flagged messages
in the local database.