Commit Graph

1679 Commits

Author SHA1 Message Date
Makoto Onuki
21efedb67f Rework/cleanup of "refresh".
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
2010-08-18 11:06:45 -07:00
Makoto Onuki
f513fbd8cb Implement UI event handlers.
Implemented
- The bottom buttons for MessageViwe
  Delete, Mark unread, Reply, Reply all, Forward.

- Buttons for exchange invitation
  View in Calender, "Yes", "No", "Maybe"

- Other MessageView events
  onUrlInMessageClicked()
  (Most other methods will probably be deprecated)

- Removed obsolete MailboxListFragment.Callback.onRefresh()

Fixes bug 2926517 minus "the background color of respond buttons
being black" part.

Change-Id: Ie58cbc9fde95a3e67d96846450f77ab58b175a55
2010-08-18 10:57:45 -07:00
Makoto Onuki
2127964d0f Implement "contextual" (selection) mode.
Now MessageListFragment itself takes care of the selection mode,
without help from activities.

Change-Id: Ia1a9942d0d3ca87b4f0938a3bf8172466f53b5d6
2010-08-17 13:22:36 -07:00
Makoto Onuki
a241d61ce8 Merge "Deal with fragment API change." 2010-08-16 14:12:35 -07:00
Makoto Onuki
6956533103 Deal with fragment API change.
- Use the class attribute instead of android:name in fragment tags.
- Use FragmentManager rather than openFragmentTransaction.

(There's a change on the PreferenceHeader tag too, but seems like we're
not using it.)

Bug 2922220

Change-Id: If604a97ac73b9ad7d84e453d36beb84bf31ff98f
2010-08-16 14:10:47 -07:00
Marc Blank
a83e4fdf14 Merge "Run AccountsUpdatedListener work in worker thread" 2010-08-16 11:16:49 -07:00
Marc Blank
a09459f6f4 Run AccountsUpdatedListener work in worker thread
Bug: 2922224
Change-Id: If7b61c4f41d901fd71d571450fa5fa7f3ff11535
2010-08-16 09:44:54 -07:00
Andrew Stadler
7b5c5cf2a9 Use new fragment API features for dialog fragments
* Use fragment arguments for dialog parameters
* Use target fragments to report ok/cancel

Change-Id: Id2a4cc91b1f589273b1000dca30e8c2feff6d32e
2010-08-15 23:00:08 -07:00
Makoto Onuki
8479032c12 Fix the bug in LoadBodyTask.
doInBackground() returned a string[] when error, but onPostExecute() expects
null.

Also added isCancelled() check, just in case.

Bug 2918930

Change-Id: Ie87ff2e2e5b7c3fd77a062944759d03f8f09d3d9
2010-08-13 15:47:50 -07:00
Makoto Onuki
2866a0a8d7 Merge "Properly unregister mock controllers" 2010-08-13 15:45:52 -07:00
Makoto Onuki
70bfdab6a3 Merge "Remove debug log from MailboxFinder." 2010-08-13 15:45:48 -07:00
Makoto Onuki
130686327a Merge "Reworking MessageListFragment." 2010-08-13 15:40:28 -07:00
Makoto Onuki
4be3bc1ec8 Properly unregister mock controllers
Some tests create mock controllers.  They register themselves to
MessagingController when instantiated, but never unregister.

Added a cleanup method, and call it for each instance.

(I was hoping it would spped up unit tests, but it didn't.  Still
it's a nice thing to do.)

Change-Id: Ia90f0380aef388d22f7cfcf6e9203e05444b3285
2010-08-13 15:28:23 -07:00
Makoto Onuki
b7d637232e Remove debug log from MailboxFinder.
It was temporarily added purely for debugging, and forgot to remove.

Change-Id: I7424465e12faf7f3344206ad9baac075a0b18b26
2010-08-13 13:18:31 -07:00
Makoto Onuki
ab3b066fb8 Merge "Handle multiple IMAP SEARCH results." 2010-08-13 11:20:35 -07:00
Makoto Onuki
187d033484 Reworking MessageListFragment.
- Now MessageListFragment uses loaders to load data.

- Now that we use Loader's auto-requery with throttling,
  removed the throttling timer from MessagesAdapter.

- Simplified footer mode.  (now only "no footer" or "load more")

- Removed saving/restoring list state code.
  These method don't really look like working, or at least
  not always working.  Now that UI's lifecycle is changing,
  we'd better redo it from scratch.

- Removed MessageListUnitTests.
  It only has tests for onSaveInstanceState/restore of the fragment,
  which I virtually disabled.

And minor clean-ups
- Moved the code to save/restore selected state from the fragment
  to Adapter.

Bug 2911766
Bug 2897500

Change-Id: I16c7aefecc5409c57fc5fc8c59b5c80d9b7fc164
2010-08-12 15:06:37 -07:00
Makoto Onuki
ccd4dbee8f Merge "Make use of the retaining-loader feature." 2010-08-12 11:31:55 -07:00
Makoto Onuki
79d4a2d9e1 Make use of the retaining-loader feature.
Don't use restartLoader().  Use initLoader() with stopLoader() when necessary.
This allows us to make use of LoaderManager's "retaining" feature.
i.e. We won't have to requery when the screen orientation changes.

Also, don't start loading in onStart().  Fragment manager seems to kick
exisiting loaders after onStart(), so you'll end up getting onLoadFinished()
twice.
(Looks like I got unluck with this--there was no strong reason to start loading
in onStart rather than onResume, but I think we can leave other fragments as-is
as long as they don't use loaders.)

Seems to be working.

Change-Id: Ib4f72098bd0fcbfce284ae6e16055d20ee410cf3
2010-08-12 11:31:14 -07:00
Marc Blank
b6ad4c252f Merge "Fix AttachmentProvider to work properly w/ EmailProvider" 2010-08-12 11:21:19 -07:00
Makoto Onuki
367ebd7fa5 Handle multiple IMAP SEARCH results.
Apparently IMAP servers may return multiple SEARCH responses for a
single SEARCH command, and we need to handle all of them.

Before the IMAP rework there was 3 methods that issued the SEARCH command.
Two of them ware doing it right, but the other wasn't, which was what
I copied from, unfortunately!

In case you're wondering, originally the test for this method was done through
upper methods, e.g. getMessage().

Bug 2911647

Change-Id: Ia50072944d5b01c1e59541c3a966067b13910cc4
2010-08-12 11:10:00 -07:00
Makoto Onuki
86dc43d492 Merge "Improve logging in MailboxFinder." 2010-08-12 10:04:21 -07:00
Marc Blank
1ec89e6290 Fix AttachmentProvider to work properly w/ EmailProvider
* Apps trying to open attachments using AttachmentProvider were
  seeing SecurityExceptions due to the fact that internal calls
  from AttachmentProvider to EmailProvider didn't have their
  calling identity saved/restored.
* Updated provider calls so that these calls use the Email
  process' identity.

Bug: 2908737
Change-Id: Ifb71ad834530c6232728e1aad31439991f8ed379
2010-08-11 17:31:45 -07:00
Makoto Onuki
cab0021179 Improve logging in MailboxFinder.
There's something weird going on when you add an Exchange account
and we try to look up the inbox.  Add log for investigation.

- Log class name
- Log normal path (MAILBOX_FOUND) as well if debug is enabled.
(Other paths are always logged.  These paths shouldn't be used often,
so I think it's okay.)

Change-Id: Iff5a28a1240896f8e2b991b891cbc696e7901f06
2010-08-11 17:01:26 -07:00
Andrew Stadler
641ae45358 Fragmentize Exchange setup
Change-Id: Ib331d9a7f7be7acbfe355d6a03d9ae07af0cc627
2010-08-11 16:07:26 -07:00
Makoto Onuki
41502f6ea8 Merge "Fix handling IOException in ImapStore" 2010-08-11 14:44:47 -07:00
Makoto Onuki
c14ff6ea45 Fix handling IOException in ImapStore
- mConnection.destroyResponses() should be protected with
  if (mConnection != null).
  When we get an IOException, we close the connection and null it out in
  ioExceptionHandler().  So mConnection can be null at any point after
  where ioExceptionHandler() first appears.

- ioExceptionHandler should close its parent ImapFolder only if the argument
  connection is mConnection.
  Methods like exists() may pass an ImapConnection which is not mConnection
  to ioExceptionHandler.  In which case we don't have to close the ImapFolder.

Bug 2898211

Change-Id: I8f9f45d91f596bb8da1a1575593e652d66deb643
2010-08-11 14:44:09 -07:00
Makoto Onuki
f395b75358 Merge "Make AccountBackupRestore/"delete account" robust." 2010-08-11 14:38:56 -07:00
Andrew Stadler
fdc506d670 Merge "Fragmentize outgoing settings (SMTP)" 2010-08-10 18:49:56 -07:00
Marc Blank
c4de16b4ff Allow multiple EmailServiceCallbacks in SyncManager
* This change will be needed with new Attachment download
  management

Change-Id: Ic18e16bd5adf9d77305ea5e029aa7a653cf5c2b0
2010-08-10 18:31:09 -07:00
Andrew Stadler
faaa115e1a Fragmentize outgoing settings (SMTP)
Also fix a small NPE in AccountSetupIncoming

Change-Id: I5728a10889a3f0f35d31962f4a13ccae4ec0393b
2010-08-10 17:45:57 -07:00
Andrew Stadler
1b156352f3 Fragmentize Incoming settings (IMAP/POP server)
Also, extract DuplicateAccountDialogFragment for reuse.

Change-Id: I042a158e264d949024347d477d6e9ec999c244d3
2010-08-10 14:28:20 -07:00
Makoto Onuki
6d8bfa67c4 Make AccountBackupRestore/"delete account" robust.
Fix for crashes caused by an incomplete account
which typically a crashed unit test leaves behind.

- "Delete account" now works for incomplete accounts
- AccountBackupRestore won't crash.

Change-Id: Ie235aa15cf9b970fd184c60f14406aa7353c6f00
2010-08-10 13:49:56 -07:00
Makoto Onuki
d632426c0a Support opening a draft on XL.
- When a draft is selected, use MessageCompose rather than MessageView.

Change-Id: I5e005a7916d7089cfbe9ed15cf51c901c26dd595
2010-08-10 11:20:37 -07:00
Makoto Onuki
76681d906a Implement "account settings"/"add account"
- Implemented "account settings".
- Added "add account" menu.  It's not clear how to get to the screen at
  this point, so just added a menu item for this for testing.

Change-Id: I78cfa54f2533917cc742b6ec027c2a0624cf0c1a
2010-08-10 11:08:36 -07:00
Makoto Onuki
b98f219cf0 Open 2 pane after adding an account.
- After adding an account, and when a shortcut to an account is clicked,
  launch Welcome instead of MessageList.
- Then welcome launches the appropriate activity.
  (MessageList or MessageListXL)

- Welcome no longer launches AccountFolderList, which will be gone
  according to the current plan.

Always going through Welcome makes sure that the account backup/restore
and the reconciler will always get kicked.

Change-Id: Ia57027eba16e98c5d8854e8d3c1d8773bcfbf1e5
2010-08-10 09:50:52 -07:00
Makoto Onuki
e6fcf73917 Merge "Fix crash when resuming MessageListXL." 2010-08-10 09:36:01 -07:00
Andrew Stadler
a75bab5504 Fragmentize AccountSetupBasics
Change-Id: I99eb4cd4f8aa80d25a01d720244ccee599cba1d8
2010-08-09 22:44:41 -07:00
Makoto Onuki
f48fe98b2a Fix crash when resuming MessageListXL.
It's related to the use of Activity.manageQuery().
This may be a regression in the framework, but it's annoying enough and
causing a problem with testing, let's just not use managedQuery().

Bug 2901309.

Change-Id: I8ae5b6ffe17979a094d5a23d49f42e8de04ed4f0
2010-08-09 15:38:56 -07:00
Andrew Stadler
e2d76d2243 Merge "Fragmentize AccountSettings" 2010-08-09 10:40:13 -07:00
Andrew Stadler
71cc035c55 Fragmentize AccountSettings
This is phase 1, which simply replaces the phone UX with a fragment-based
equivalent.  A subsequent CL will convert it to a large-format multi-pane
version.

Also fix a latent bug in the signatures of the Incoming & Outgoing
settings, both in the reflection code and in the proguard flags.

Change-Id: I86e857af8b9573c0d6070bb21053ce65bb7fe8a0
2010-08-09 10:36:50 -07:00
Makoto Onuki
edaa16f151 Merge "Improve SyncManager.getDeviceIdInternal()" 2010-08-09 10:26:37 -07:00
Makoto Onuki
408de8e4c5 Improve SyncManager.getDeviceIdInternal()
- Don't swallow exception information.
- If the file exists but can't read, try to remove it.
- Don't use createNewFile.  Just overwrite.

Bug 2898372

Change-Id: I7c0802f751a020c546aa07fa932b41ead31a8dc8
2010-08-09 10:25:41 -07:00
Makoto Onuki
533e0f5beb Add "change orientation" menu command.
Unfortunately software-keyboard is disabled on master for some reason,
so we can't use the R key hack any longer...

Change-Id: Ide73e11742e5de70fec45009eee20a1a74fcbfd1
2010-08-07 18:16:14 -07:00
Marc Blank
c263810b08 Clear password related policies in PolicySet when p/w not required
Bug: 2883736
Change-Id: I2c9c573aea9a4fef1699ff6339e8ef628d7f2269
2010-08-07 17:27:16 -07:00
Makoto Onuki
36bdeeb0e1 Add getFirstRowInt.
It's the int version of getFirstRowLong.

Because getFirstRowLong returns a Long as opposed to a long, and the return
value can be null, it's a pain to cast to Integer.  So added this variant.

Change-Id: I2a3190e49db480e6d594be4b1fcef9a71e56cb2f
2010-08-06 11:00:44 -07:00
Makoto Onuki
c2d0049167 Merge "Suppress warnings from mime4j by default." 2010-08-06 10:55:26 -07:00
Makoto Onuki
3cc02d3e68 Suppress warnings from mime4j by default.
It's now controlled by the debug setting.

Bug 2829962

Change-Id: I700c83e5a193d2f013fcca14092e4eed6a127f97
2010-08-06 10:54:47 -07:00
Makoto Onuki
b0ca30d4d1 Add action buttons to actionbar on MessageListXL
- Now able to compose a new message.

Change-Id: I53cd7cc6fe850063946824748e11ccde89d7decf
2010-08-06 10:48:14 -07:00
Makoto Onuki
fd8a2e8afb Automatically open Inbox when account is selected.
Change-Id: I3dc43d804d39b925ee62bebbf85911cb258aafd7
2010-08-06 10:44:45 -07:00
Makoto Onuki
9531931c7e Don't auto-requery account list.
Prevent CursorLoader's auto-reuqery.  Instead, refresh the loader
when adding/removing accounts.

Change-Id: I63091c23f8c06c32dd42669fdfbd9e783ff9eccb
2010-08-06 10:38:34 -07:00