When replying or fowarding an HTML message, we now send both plain text and
HTML bodies as a multi-part mime message. We take special care to ensure the
message bodies are in their own multi-part block and do not interfere with
any additional attachments to the message.
bug 3060920
Backport-Of: I2fc3cb4e1f65bcc28486a62731b44b0ee0a99719
Change-Id: I89ec2795b55ceb7472a8ee3db2dc8f50cf537d9c
If the account supports smart-forward. The old code assumed
attachments are not removable if the account supports smart-forward,
which is not true. Locally-added attachments should still be removable.
Bug 3505684
Change-Id: Ie6703551800c617dd224957a098311f0c279b3f1
* There are three pieces to this CL (sorry):
1) Move and/or rename some constants into emailcommon
2) Move Utility to emailcommon, moving the few UI
related utilities back into Email (FolderProperties
and UiUtilities)
3) Remove all references to resources from emailcommon
* The three pieces relate in that, between them, they allow
the emailcommon static library to compile cleanly
Bug: 3442973
Change-Id: Ic5e3abaa2a1b36999e0b6653c6c2134ea1bd544f
* No code was harmed, er, changed in the making of this CL
* All that's happened is that code that is needed by both Email and
Exchange have been moved into emailcommon
* This required import changes to many files, which explains the
length of the CL
Change-Id: I4e12455ba057a4a8054fdbd0b578c73afa411c8a
If there are no email accounts defined, the widget should show a single string
that allows the user to create a new account. Whenever there are changes to
the defined accounts, the widget(s) will update their headers to ensure they
are only displaying valid information.
bug 3296594
Change-Id: I156c20cfc90692174297a2aededd85775e0ea196
- Now tapping these To/Cc/Bcc/Subject labels moves the focus to
the corresponding edittext.
- Tapping the bottom part of the screen moves the focus to the
main EditText.
- Also use paddings instead of margins for the main EditText, to
expand the hitarea.
Bug 3366831
Bug 3367100
Change-Id: I9b5d18dcc9d7802bfcbd0160befcb008c784d9f7
If you do so, MessageCompose won't be able to restore an account, so it'll
use null account...
Bug 3324472
Change-Id: Ic0e615b31e21246e41f6f2c709a8422bef230040
The problem was that setIncludeQuotedText() always set mDraftNeedsSaving,
but it shouldn't be done when loading content.
(Do it only when it's toggled by the user.)
Bug 3162882
Change-Id: I6308376020f5be6d1a15b7865f8c7e02cf875eb9
- Set "Viewing FILENAME" as title.
- Home icon now has "back" arrow. Closes the activity when clicked.
Bug 3221312
Change-Id: I689499e10704d3c5d206df4aa12e21db9687c4c5
- Make the home icon on action bar clickable, and show the back arrow with it.
- When clicked, it'll navigate you back to the main screen.
Bug 3138037
Change-Id: Ice783e6b594347bd73b94e71d29a61ad4f5ef972
The layout is not final, but it's closer to the wireframe.
- All dimensions and colors are not final. I just made them up.
- The "+cc/bcc" and "add attachment" buttons are in the wrong position.
I'll wait for the pixel perfect before addressing them.
Bug 3138037
Change-Id: I72fc7557c28e72df08a3751c3c93acfb35749d68
Change how we show/hide CC/BCC. The new way will work for the tab UI too,
where we show the labels to these fields as well.
Also hide the "+Cc/Bcc" button when they're visible.
Bug 3138037
Bug 3192841
Change-Id: Ic78b3200c418430c8eade3ca1238b0d0f1ee4731
1. This CL implements the most common case, which is pressing the discard
button on MessageCompose.
2. This CL doesn't change the discard on message list, which is much trickier.
(We need to check the message type of all messages in the selection,
as selection can contain any number of any kind of messges in "All Starred")
Bug 3072556
Change-Id: Ib270cae726f8fd5abf7e0e7dfc34ce97019d5301
Basic changes for the new UI. At this point we don't know what the new phone
UI will look like, so I didn't bother trying to preserve the old behavior on
the phone UI. The changes will affect both the phone UI and the tablet UI.
- Send, Save Draft, and Discard are now action bar commands.
- Add CC/BCC and Add Attachment are now regular buttons.
- Activity title changed to "Compose"
- Some string changes per new wireframe
Further changes (actual layout changes for the latest wireframe) should be made
only for the xlarge layout.
Change-Id: I68c9c37dfdca6736b1e35053e7f196800fcfce2e
While monkey is active, any clicks on "send" will be mapped to "save".
Drafts will pile up, but nothing will get out.
Bug: 2799956
Change-Id: I300d50001b43c8b61062143f9a0ac914aa2deaca
* new checkbox in debug fragment
* saved value in prefs so it's sticky
* each Activity calls a helper to enable/disable per that flag
Change-Id: I1af1ae9f401bc746cc97da00dfb0e06407b79d46
When removing the original, need to clear FLAG_TYPE_REPLY and FLAG_TYPE_FORWARD
flags too.
Bug 3125167
Change-Id: I64be98bc10b5e1a0b9242c1c528ed96bb0a24fc1
Added the "Include text" checkbox according to the latest mock.
Before:
- We removed original message when the user pressed X.
Now:
- We save the original message all the way till the draft is sent.
- The "Include text" check state is saved in the db. (to Message.mFlags)
Bug 3072414
Change-Id: Ie7bcca23bb6a02d676700027b0b6cb94b6627236
The UI changes a bit - there is no separator
between the local contacts and directories.
Will bring the separator back if asked, but
most likely simply as a thick line.
Change-Id: Idfc990deff41b30d63bd8289731694e3d9a00fb6
Merge commit '99df4d53b620fae871fd45aaf9b8f110cb4d4288'
* commit '99df4d53b620fae871fd45aaf9b8f110cb4d4288':
Block oversize attachments from being sent
- Changed the default theme to Light.Holo
- MessageCompose now has ActionBar.
- Removed unnecessary MessageCompose menu items.
- Also removed "Add Account" menu from MessageListXL.
(Use the + button on account settings)
- Fixed "calender response section invisible" bug.
Bug 2926517
Change-Id: Id27632ec82dad158f43b0903dbc2cb219188400d
* Attachments that come in with a file:// URI do not support the complete
set of OpenableColumns columns. To handle this better:
1. Obtain the openable values in two separate queries, in case one or
the other is supported (but not both).
2. If the size is not reported but it is a file:// URI, attempt to
measure it directly.
3. If the size cannot be obtained, do not upload the attachment
Bug: 2948965
Change-Id: Ic5160d39efd65eaca40ceba0dd93c3b035d2871e
* Create AttachmentDownloadService to manage all attachment downloads
1) User requested
2) Required for email forwarding
3) Opportunistic downloads to enhance offline use
* New attachment related UI (pending UX approval, of course)
1) MessageView (attachment actions, progress bar, etc.)
2) MessageCompose (attachments for forwarded messages)
3) Associated toasts, notifications, etc.
TODO:
* Unit tests
* Cache Management (separate CL)
Change-Id: I7864a5fb1c3f4f2be68d98341a971edc6cbacfe1
Added RefreshManager, which is responsible for getting refresh requests
from UI and keeping track of what is being refreshed.
Conceptually it's a part of Controller, but extracted for easier testing.
- Now sendPendingMessagesForAllAccounts() is owned by RefreshManager
rather than Controller.
- Also updateMailboxRefreshTime/mailboxRequiresRefresh have been moved
in from the Email class.
- Now MessagingException implements a method to return an error message
for the UI.
The refresh button on 2-pane doesn't work as intended yet, because the
spec is a bit too complicated (as described in the TODO in
MessageListXLFragmentManager.onRefhres()).
This change touches many file mostly because it cleans up a lot
of code duplication.
Change-Id: I058ab745ccff10f6e574f6ec4569c84ac4a3e10e
* Add this to processSourceMessage in the reply/forward cases
* Add unit tests for reply and forward case
Bug: 2734321
Change-Id: I6be8383fe5f217a4bda8e669cb69f439bc8e96b6
- Controller.Result is now a class rather than an interface,
so subclasses don't have to implement empty methods.
- Replaced Threads with AsyncTasks, which is more light weighted
because it uses pooled threads.
- Removed the Result argument from Controller's methods.
These argumetns weren't used, except in serviceCheckMail.
Regarding serviceCheckMail, the new code behave differenly from the old code.
If there's already listeners registered when it's colled, they wouldn't get
called in the old code, but they will in the new code.
But I think this difference is okay because that's how it works for
POP/IMAP accounts.
Change-Id: I37a857ce7c089c1a411cb7f1fcfcb72c9f5fd2a6
AccountFolderList, MessageCompose and MailboxList.
Also,
- ControllerResultUiThreadWrapper now takes a Handler instead of an Activity.
So that it can be used from a Service as well.
- ControllerResultUiThreadWrapper.getWrappee() to get the wrapped object.
We'll eventually need this.
- I'll work on MessageList too, but the might be relatively
large, so I'll do that in a separate CL
Change-Id: I281d88d5af1834248ec3f7463f0df3f5635149be
This resolves cases like this: You are in the inbox of an Exchange
account. You click home, settings, accounts & sync, and you delete
the account. Now re-enter the Email app. You'll be left in a strangely
empty inbox, for an account that no longer exists.
* Set a flag any time the reconciler deletes an account
* Check that flag in onResume of any activity that depends on the account
list and could be left in an "empty" state if account(s) are deleted.
* The Activities in which we check it are:
* AccountFolderList
* AccountSettings
* MailboxList
* MessageCompose
* MessageList
* MessageView
* Clear the flag any time we come in through Welcome, which will dispatch
to other activities properly based on the number of accounts found.
Bug: 2563998
Change-Id: I00fc542581c2bed92d744a4c2e48a88f83737f11
It's unfortunate but some of the fields we cleared in I34451000 are accessed
in BG threads or after the activity is destroyed. We could add != null checks
everywhere, but it'll be a mess. I also think it's safer to simply remove
the "= null" lines.
On the other hand, clearing AsyncTasks are relatively safer because they are
kept only so that we can cancel them afterwards, so I kept them. But let me
know if you want to revert the original CL.
Bug 2570603
Change-Id: I04a10dd7382bfcceb686c3e9af92f8949caf619e
Provider:
* Move UI (e.g. separator) out of provider, create it entirely in adapter
* Remove timestamp based disambiguation (TODO throttling some other way)
* Add cursor "extras" to report total # of results on server
UI:
* Rewrite background-foreground threading to be more efficient and
signal changes back to UI by calling notifyDataSetChanged())
* Separator strings per Rich's UI (not using real strings yet)
* Remove link back to AutoCompleteTextView
NOTE: There's a bug in ACTV that is causing the window size not to
change properly on notifyDataSetChanged(). Framework team to investigate.
Bug: 2249514
Change-Id: I183b200dcdaa268f0612d2de6442db28e1491d40
* Provides GAL autocomplete in email address fields in message composition.
General TODO list:
UI: Implement divider in adapter, not in GAL provider
UI: Use listview_separator for divider
UI: Clean up strings, move all to resources
UI: Only have one GAL lookup in flight at any time
UI: Unit tests
GAL: Use side channel for status, not a row
GAL: Shorten timeout for interactive GAL lookup
GAL: Make watchdogs work
GAL: Figure out why some calls never return (conn pool exhaustion?)
GAL: Unit tests
Bug: 2249514
Change-Id: I513e25628bc2f5ed0920e0ee509cd598b1817b3a