With the recent changes to hierarchical folders, the move-to dialog is
quite unusable if you have multiple child folders with the same name.
While waiting for UX to decide on the exact display, make a few quick
changes to display the fully-qualified pathname instead of just the
child folder name.
Change-Id: Id5c1cc98364fbf7a82a05ac30e944507c7d16320
Create a new instance of the mailbox list fragment when navigating through
nested folders. (drill-in / going back to the root mailboxes.)
Also the fragment manager now has two public methdos for navigation that
are called by the activity. They will be the common interface for
the tablet UI manager (i.e. MessageListXLFragmentManager) and the
phone UI manager.
- openAccount(accountId)
Open the default view for the account. Used when switching accounts.
- open(long accountId, long mailboxId, long messageId)
Opne a particular view. Used when, for example, opening a message from the
widget.
Known issue:
- This breaks drag&drop through nested folder navigation.
This is because a new mailbox list fragment created during D&D doesn't
get the "drag started" event.
Change-Id: I69c14b71b4f681f8ab57f3ddd2cff9744a832076
We now create folder hierarcies for IMAP. This also includes a nifty SQL
statement that will get your existing database into shape.
Change-Id: If07a0632e9b250cf0c33c3e16bfba5816beab94c
- some proguard flags were stale
- some deprecated methods were legitimately stripped - kill the tests
for them
Bug: 4330508
Change-Id: I6d5c46c99d002895377f32b203844e9a6dcf0074
The Fragment can get detached from the activity prior to performing an
operation, so for now, use the context reference that the fragment has
instead.
In the long run, we should avoid referencing the application context,
but a restructuring of ActivityHelper may help instead.
Bug: 4332451
Change-Id: Ieabff8ec0cc363f7d2eebd3ed47c230df9959886
This introduces an in-memory cache of file paths for an attachment so
that we can install from a filepath instead of a content URI.
The cache also allows us to prevent duplicated files made if the user
hits save multiple times (the save button is disabled).
Bug: 3338997
Change-Id: I56651a55eef2f1a3f24b6d936c37736c4fc3d295
The logic is simplified by creating database rows for new mailboxes down
in Imapstore. This means that the difference between local and remote folder
lists are mailboxes that need to be deleted.
Note -- this is still not the final CL. We probably update the database too
frequently and the column values aren't updated to support nested folders.
Change-Id: Ifbe4e0cf74ba81e5b6156b452ab72c56c35235ab
There's no need to create a URI just to rip in appart again. Additionally, to
support additional changes (i.e. to use Mailbox instead of Folder in the
MessageController), we need to store the actual Account.
NOTE -- This change only affects IMAP and POP3. SMTP will come in a follow-on CL
Change-Id: I400036a17271c99272fd9c603547dcd713b50b9d
This now uses an XML layout that gets inflated and computed after a
layout pass. The drawing simply uses the coordinates stored after the
layout.
This makes it a lot easier to maintain the different views and allows us
to simply provide different XML files for different modes/views, isntead
of trying to hand tweak Java layout code.
Some TODOs - clean up the "paints" and optimize the layout/drawing
computation
Change-Id: I784919f726bd4d80aba8744a8f047fcfe79ad93a
The phone code has gone stale and ignored auto advance policies - this
fixes it, though that code is likely to get merged anyways.
Makes it so that auto-advancing to the end of the list pops back out to
the message list
Bug: 4302999
Change-Id: I609747c0a19672b8aa56d2c0ab57533823899e47
We can now drill down into nested folders during drag-n-drop. Simply hover over
a collapsed folder for 750ms and it will auto-expand.
Change-Id: Ia9b42dd87e19c2ebdf8675c761cb1453bb26d158
ListStateSaver did nothing more than hold a Parcelable, and was a
Parcelable itself. The abstraction may have been useful at some point,
but that time seems to have passed.
Change-Id: I2f1f45828782ab44aa8935aa50b825e07845a2a5
- adds a compile time dependency to the guava library
- changes to use @VisibleForTesting in places to ensure it works
Change-Id: I2c5c4f9861234fec3613da011185e5c11f228466
We were handling the subfolder icon strangely. Sometimes it was shown in the
folder_icon view and sometimes in the folder_expanded_icon view. Now the
folder_icon view is used exclusively for system folders (such as inbox, etc...)
and folder_expanded_icon is always used for the expanded/collapsed icon.
Change-Id: Ifff9a44cc792497a469c2408337dafd431f6dfc3
Batch operations that occur when the current message selection is
contained within the affected messages will now force the selection to
advance according to the auto advance policy to the next unselected
conversation.
Bug: 3409809
Bug: 3405864
Change-Id: Ibe75f32b9263ef6f3fb2314a07e63980f437f988
If a mailbox doesn't have any sub-mailboxes, only allow selecting them to view
any contained messages. Do not update the mailbox list.
Change-Id: I6f469bf20a57dc440885402084c21ff184f13dff
The layout requires different indentation. Although the exact layout may
change, we will likely always need to differentiate between the different
mailbox types.
Change-Id: Ia2ff84b552873f92fa45563b2dc0868c29bec3e3
mPreviousMeetingResponse is tied to the current response state, so it
should be reset too when we clear the response checkboxes.
Bug 4132763
Change-Id: If816706f47f8500441330882fb4f372b31465ff5
When selecting a nested folder, the currently selected folder should be listed
along with "All Folders" and sub-folders
Change-Id: I7c6f726a0355a13d3e7b59aa4707bd92473283b4
All focus changes to the message body content was pushing the selection
to the end, which is wrong if state restoration happens, and is just
non-standard behavior if the user explicitly taps on a particular spot
on the text view. Make this slightly less aggressive.
Misc other changes in compose view.
Bug: 3076256
Change-Id: I9edb9c3c4edb5ddec12207f4136f3ca73cabf89d
* Just in MessageListXL for now, as with search
* This allows us to test functionality within EAS, and confirm that
it's all working w/ unbundled Exchange (API 1)
Change-Id: I4f062ae871a28d2b57a23a269d6ec65903181d26
There's no need to use a different loader ID for each mailbox. Just use
one loader ID to keep things simple.
Change-Id: I46cf0a9ad48c8e0badf72ee73e2d5edadda66912
Exchange accounts support nested folders, so, we need to use the selection
that excludes any mailboxes with IDs greater than 0. Otherwise, we see all
mailboxes on the account.
Change-Id: If8c2085458176e8bd87013e3b598bd7740c652b2
currently only really works for exchange accounts. legacy accounts (imap
or pop) do not build a folder heirarchy.
Change-Id: Idb7c622b64a599a0776233a076359869f4ab4a4f
- All layouts are still temporary, but at least they're usable now.
- Removed reply/forward button from the bottom panel.
There're buttons in the layout.
- Switched to getView().
- removed the unnecessary LinearLayout from the xlarge layout.
- removed some backgrounds that'll probably not be used.
Change-Id: I3aa27c63ab139ae30e5714ac3d9a1eadce74b0e8
The roles between MessageListXLFragmentManager and MessageListXL was confusing
and not well defined. Now, the activity (MessageListXL) is responsible for
managing the application "chrome" (such as the action bar) and
MessageListXLFragmentManager is responsible for managing the content area.
Change-Id: I9a36d962bae5263f17fc7dccf133a6711229821c
Only pass along the things we need. For the message dialog, we were passing
in an Activity that was not needed. In the ActivityHelper, we were passing
in an Activity when all we needed was a Context.
Change-Id: I9a93ae07ff2bbdce9466c7e991410c87fb610673
the callback method name was not appropriate in all situations. This has been
renamed to just "onBind()" and will still be invoked whenever data is bound to
the adapter. also, create an empty callback that can be used if the adapter
doesn't need to be informed when a bind occurs.
Change-Id: Ifaa4aea3a59734557651270330ca9439e3ea4ab4
... assuming we're going to use the holo light on the phone as well.
Now the text on MailboxList is clearly visible.
Also updated/added some comments.
Change-Id: I280db2b82cbd1627c78a305dd31bbf1b1bb34d1d
There are currently two places where we use a mailbox list -- in the main
view and in the "move to" dialog. We've replaced the single, modally
configured adapter with two specialized subclasses.
Change-Id: I5dfd5ccd435fefbab4b7647c2bd7a14818f73bf3
There are two ways globals can be specified. There can be only one global
character ['*'] and/or multiple wildcard characters ['?']. The global
will match zero or more characters. The wildcard will match any character.
bug 4090086
Change-Id: I07e3edebd1fe989094c68cf047ce5bc9fb91aba0
... for Welcome and EmailWidget. So that now it's safe for onDestroy()
to be called while a task is running. (onDestroy cancels it.)
Change-Id: I660b471465170e1d1d0ce153571fb924ae703d7d
Added two new functions:
- UiUtilities.getView()
is a fail-fast version of findViewById(). Crashes when there's no view
- setVisibilitySafe()
same as View.setVisibility, but doesn't crash even if a view doesn't exist
Let's try to avoid the use of findViewById(), and instead use getView(), *right
after* the layout is inflated, so that we'll always fail-fast if a layout
doesn't have a required view. (Rather than getting a NPE only when the view
is really accessed, which can be in a code path which is rarely executed--e.g.
only when there's a protocol error.)
Let's only use findViewById() only when we're sure no all the variants of a
layout have the view in question and leave a comment to make it clear it's on
purpose.
(UiUtilities has been moved from com.android.email to
com.android.email.activity)
Change-Id: I36e0bab65a989f5d34cf636f13e1eaee084547af
After the account is created, don't allow editing the user name. We want to
prevent this as the user name is core to the account and changing the user
name is tantamount to creating a new account.
bug 3502279
Change-Id: I1d89710fd48aca67ba13abea5bdbdc1d87941618
We now allow a single global character ['*'] to be specified somewhere in
the domain attribute. Additionally, we will replace the string "$domain"
with the matched domain in all attributes -- user name, password and URIs.
bug 4090086
Change-Id: I46a637ed364c1a079e1230fa22393a1bac059b1f
- Menu now works
- Removed a lot of unnecessary/soon-to-be-unnecessary code.
Especially,
- multi-selection panel is now replaced with CAB
- SetTitleTask will be replaced with a loader
- Removed the option menu xml for magic mailboxes
(The regular one should work for them as well)
Bug 4184142
Change-Id: I52adff6d711232d536b6f00367a240e1faeea14b
If an IMAP server supports the UIDPLUS capability, it can return the new UID
as part of the response to the "UID COPY" command. However, if the server does
not support UIDPLUS, we perform a SEARCH to try to determine the new message
UID.
This is the second of a couple modifications.
bug 4092301
Change-Id: I1f548b63becfec8733cb8ba9a3fe6ff4be6fdd83
We were always loading from the network for HTML messages. Now we don't
load from the network until the user clicks the "display images" button.
Change-Id: I1838b6cb09d49a2b521baa12a80239107391534f
When copying messages between mailboxes using standard IMAP, we must perform
a QUERY or FETCH in order to determine the new message UID. However, if the
server supports the UIDPLUS capability, the server will return the new UID
as part of the response to the "UID COPY" command.
This is the first of a couple modifications. We still need to fallback to a
less efficient QUERY/FETCH if the server does not support UIDPLUS.
bug 4092301
Change-Id: I9279f7fd70daf85adba3b3e202c12d67ddf91f22