diff --git a/res/layout/account_folder_list_child.xml b/res/layout/account_folder_list_child.xml
new file mode 100644
index 000000000..eecf11f98
--- /dev/null
+++ b/res/layout/account_folder_list_child.xml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/menu/accounts_context.xml b/res/menu/account_folder_list_context.xml
similarity index 87%
rename from res/menu/accounts_context.xml
rename to res/menu/account_folder_list_context.xml
index f950791aa..9ec024acc 100644
--- a/res/menu/accounts_context.xml
+++ b/res/menu/account_folder_list_context.xml
@@ -15,10 +15,12 @@
-->
diff --git a/res/menu/accounts_option.xml b/res/menu/account_folder_list_option.xml
similarity index 59%
rename from res/menu/accounts_option.xml
rename to res/menu/account_folder_list_option.xml
index 37a0f2364..2fcc13451 100644
--- a/res/menu/accounts_option.xml
+++ b/res/menu/account_folder_list_option.xml
@@ -15,27 +15,24 @@
-->
diff --git a/src/com/android/email/activity/AccountFolderList.java b/src/com/android/email/activity/AccountFolderList.java
index 45528c840..db743317c 100644
--- a/src/com/android/email/activity/AccountFolderList.java
+++ b/src/com/android/email/activity/AccountFolderList.java
@@ -16,11 +16,12 @@
package com.android.email.activity;
+import com.android.email.Controller;
import com.android.email.Email;
-import com.android.email.MessagingController;
import com.android.email.R;
import com.android.email.activity.setup.AccountSettings;
import com.android.email.activity.setup.AccountSetupBasics;
+import com.android.email.mail.MessagingException;
import com.android.email.mail.Store;
import com.android.email.provider.EmailContent;
import com.android.email.provider.EmailContent.Account;
@@ -37,6 +38,7 @@ import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
+import android.os.Handler;
import android.view.ContextMenu;
import android.view.KeyEvent;
import android.view.LayoutInflater;
@@ -48,14 +50,12 @@ import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.CursorTreeAdapter;
-import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;
-import android.widget.AdapterView.AdapterContextMenuInfo;
-import android.widget.AdapterView.OnItemClickListener;
+import android.widget.Toast;
+import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
-public class AccountFolderList extends ExpandableListActivity
- implements OnItemClickListener, OnClickListener {
+public class AccountFolderList extends ExpandableListActivity implements OnClickListener {
private static final int DIALOG_REMOVE_ACCOUNT = 1;
/**
* Key codes used to open a debug settings screen.
@@ -66,26 +66,18 @@ public class AccountFolderList extends ExpandableListActivity
};
private int mSecretKeyCodeIndex = 0;
-
+
private static final String ICICLE_SELECTED_ACCOUNT = "com.android.email.selectedAccount";
private EmailContent.Account mSelectedContextAccount;
-
- ExpandableListView mListView;
- LoadAccountsTask mAsyncTask;
- /**
- * Support for list adapter
- */
- private final static String[] sFromColumns = new String[] {
- EmailContent.AccountColumns.DISPLAY_NAME,
- EmailContent.AccountColumns.EMAIL_ADDRESS,
- EmailContent.RECORD_ID
- };
- private final int[] sToIds = new int[] {
- R.id.description,
- R.id.email,
- R.id.new_message_count
- };
+ ExpandableListView mListView;
+ AccountsAdapter mListAdapter;
+
+ LoadAccountsTask mLoadAccountsTask;
+ LoadMailboxesTask mLoadMailboxesTask;
+
+ private MessageListHandler mHandler = new MessageListHandler();
+ private ControllerResults mControllerCallback = new ControllerResults();
/**
* Start the Accounts list activity. Uses the CLEAR_TOP flag which means that other stacked
@@ -102,7 +94,6 @@ public class AccountFolderList extends ExpandableListActivity
super.onCreate(icicle);
setContentView(R.layout.account_folder_list);
mListView = getExpandableListView();
- mListView.setOnItemClickListener(this);
mListView.setItemsCanFocus(false);
mListView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_INSET);
mListView.setLongClickable(true);
@@ -114,7 +105,7 @@ public class AccountFolderList extends ExpandableListActivity
mSelectedContextAccount = (Account) icicle.getParcelable(ICICLE_SELECTED_ACCOUNT);
}
- mAsyncTask = (LoadAccountsTask) new LoadAccountsTask().execute();
+ mLoadAccountsTask = (LoadAccountsTask) new LoadAccountsTask().execute();
}
@Override
@@ -125,6 +116,12 @@ public class AccountFolderList extends ExpandableListActivity
}
}
+ @Override
+ public void onPause() {
+ super.onPause();
+ Controller.getInstance(getApplication()).removeResultCallback(mControllerCallback);
+ }
+
@Override
public void onResume() {
super.onResume();
@@ -132,15 +129,26 @@ public class AccountFolderList extends ExpandableListActivity
NotificationManager notifMgr = (NotificationManager)
getSystemService(Context.NOTIFICATION_SERVICE);
notifMgr.cancel(1);
+
+ Controller.getInstance(getApplication()).addResultCallback(mControllerCallback);
+
+ // TODO: What updates do we need to auto-trigger, now that we have mailboxes in view?
}
@Override
protected void onDestroy() {
super.onDestroy();
- if (mAsyncTask != null && mAsyncTask.getStatus() != LoadAccountsTask.Status.FINISHED) {
- mAsyncTask.cancel(true);
- mAsyncTask = null;
+ if (mLoadMailboxesTask != null &&
+ mLoadMailboxesTask.getStatus() != LoadMailboxesTask.Status.FINISHED) {
+ mLoadMailboxesTask.cancel(true);
+ mLoadMailboxesTask = null;
+ }
+
+ if (mLoadAccountsTask != null &&
+ mLoadAccountsTask.getStatus() != LoadAccountsTask.Status.FINISHED) {
+ mLoadAccountsTask.cancel(true);
+ mLoadAccountsTask = null;
}
}
@@ -148,17 +156,33 @@ public class AccountFolderList extends ExpandableListActivity
public void onGroupExpand(int groupPosition) {
super.onGroupExpand(groupPosition);
- // This is a temporary hack, until I implement the child cursors
- AccountsAdapter adapter = (AccountsAdapter) mListView.getExpandableListAdapter();
- if (adapter != null) {
- Cursor groupCursor = adapter.getGroup(groupPosition);
- long mailboxKey = groupCursor.getLong(EmailContent.Mailbox.CONTENT_ID_COLUMN);
- FolderMessageList.actionHandleAccount(this, mailboxKey);
+ // If we don't have a cursor yet, create one
+ Cursor childCursor = mListAdapter.getChild(groupPosition, 0);
+ if (childCursor == null) {
+ // Kill any previous unfinished task
+ if (mLoadMailboxesTask != null &&
+ mLoadMailboxesTask.getStatus() != LoadMailboxesTask.Status.FINISHED) {
+ mLoadMailboxesTask.cancel(true);
+ mLoadMailboxesTask = null;
+ }
+
+ // Now start a new task to create a non-empty cursor
+ Cursor groupCursor = mListAdapter.getCursor();
+ long accountKey = groupCursor.getLong(EmailContent.Account.CONTENT_ID_COLUMN);
+ mLoadMailboxesTask = new LoadMailboxesTask(accountKey, groupPosition);
+ mLoadMailboxesTask.execute();
}
}
+ @Override
+ public boolean onChildClick(ExpandableListView parent, View v, int groupPosition,
+ int childPosition, long id) {
+ onOpenFolder(groupPosition, childPosition);
+ return true; // "handled"
+ }
+
/**
- * Async task to handle the cursor query out of the UI thread
+ * Async task to handle the accounts query outside of the UI thread
*/
private class LoadAccountsTask extends AsyncTask {
@@ -173,8 +197,8 @@ public class AccountFolderList extends ExpandableListActivity
@Override
protected void onPostExecute(Cursor theCursor) {
- AccountsAdapter adapter = new AccountsAdapter(theCursor, AccountFolderList.this);
- mListView.setAdapter(adapter);
+ mListAdapter = new AccountsAdapter(theCursor, AccountFolderList.this);
+ mListView.setAdapter(mListAdapter);
// This is deferred until after the first fetch, so it won't flicker
// while we're waiting to find out if we have any accounts
@@ -182,6 +206,45 @@ public class AccountFolderList extends ExpandableListActivity
}
}
+ /**
+ * Async task to handle the mailboxes query outside of the UI thread
+ */
+ private class LoadMailboxesTask extends AsyncTask {
+
+ private long mAccountId;
+ private int mGroupNumber;
+
+ public LoadMailboxesTask(long accountId, int groupNumber) {
+ mAccountId = accountId;
+ mGroupNumber = groupNumber;
+ }
+
+ @Override
+ protected Cursor doInBackground(Void... params) {
+ // TODO use a custom projection and don't have to sample all of these columns
+ return AccountFolderList.this.managedQuery(
+ EmailContent.Mailbox.CONTENT_URI,
+ EmailContent.Mailbox.CONTENT_PROJECTION,
+ EmailContent.MailboxColumns.ACCOUNT_KEY + "=?",
+ new String[] { String.valueOf(mAccountId) },
+ EmailContent.MailboxColumns.TYPE);
+ }
+
+ @Override
+ protected void onPostExecute(Cursor theCursor) {
+ // TODO: There is a race condition here - what if the result came back after
+ // the positions shifted? We need to use something other than "groupNumber"
+ // to set the correct adapter & cursor.
+ AccountFolderList.this.mListAdapter.setChildrenCursor(mGroupNumber, theCursor);
+
+ // If there are zero folders, this is probably a brand-new account - schedule a
+ // top-level refresh
+ if (theCursor.getCount() == 0) {
+ onRefresh(mAccountId);
+ }
+ }
+ }
+
private void onAddNewAccount() {
AccountSetupBasics.actionNewAccount(this);
}
@@ -190,8 +253,22 @@ public class AccountFolderList extends ExpandableListActivity
AccountSettings.actionSettings(this, accountId);
}
- private void onRefresh() {
- MessagingController.getInstance(getApplication()).checkMail(this, null, null);
+ /**
+ * Refresh one or all accounts
+ * @param accountId A specific id to refresh folders only, or -1 to refresh everything
+ */
+ private void onRefresh(long accountId) {
+ if (accountId == -1) {
+ // TODO implement a suitable "Refresh all accounts" / "check mail" comment in Controller
+ // TODO this is temp
+ Toast.makeText(this,
+ "Please longpress an account to refresh it", Toast.LENGTH_LONG).show();
+ } else {
+ EmailContent.Account account =
+ EmailContent.Account.restoreAccountWithId(this, accountId);
+ Controller.getInstance(getApplication()).updateMailboxList(
+ account, mControllerCallback);
+ }
}
private void onCompose() {
@@ -203,10 +280,6 @@ public class AccountFolderList extends ExpandableListActivity
}
}
- private void onOpenAccount(long accountId) {
- FolderMessageList.actionHandleAccount(this, accountId);
- }
-
public void onClick(View view) {
if (view.getId() == R.id.add_new_account) {
onAddNewAccount();
@@ -227,6 +300,17 @@ public class AccountFolderList extends ExpandableListActivity
return super.onCreateDialog(id);
}
+ /**
+ * Open a folder. This may be a "real" folder or composite, depending on which group.
+ * @param groupPosition The group # (account)
+ * @param childPosition The child # (folder)
+ */
+ private void onOpenFolder(int groupPosition, int childPosition) {
+ Cursor childCursor = mListAdapter.getChild(groupPosition, childPosition);
+ long mailboxKey = childCursor.getLong(EmailContent.Mailbox.CONTENT_ID_COLUMN);
+ MessageList.actionHandleAccount(this, mailboxKey, null, null);
+ }
+
private Dialog createRemoveAccountDialog() {
return new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_dialog_alert)
@@ -263,27 +347,29 @@ public class AccountFolderList extends ExpandableListActivity
@Override
public boolean onContextItemSelected(MenuItem item) {
- AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo)item.getMenuInfo();
- Cursor c = (Cursor) mListView.getItemAtPosition(menuInfo.position);
- long accountId = c.getLong(Account.CONTENT_ID_COLUMN);
- switch (item.getItemId()) {
- case R.id.delete_account:
- onDeleteAccount(accountId);
- break;
- case R.id.edit_account:
- onEditAccount(accountId);
- break;
- case R.id.open:
- onOpenAccount(accountId);
- break;
- }
- return true;
- }
+ ExpandableListContextMenuInfo menuInfo = (ExpandableListContextMenuInfo)item.getMenuInfo();
+ int type = ExpandableListView.getPackedPositionType(menuInfo.packedPosition);
- public void onItemClick(AdapterView parent, View view, int position, long id) {
- Cursor c = (Cursor) mListView.getItemAtPosition(position);
- long accountId = c.getLong(Account.CONTENT_ID_COLUMN);
- onOpenAccount(accountId);
+ if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
+ int group = ExpandableListView.getPackedPositionGroup(menuInfo.packedPosition);
+ Cursor c = (Cursor) mListView.getItemAtPosition(group);
+ long accountId = c.getLong(Account.CONTENT_ID_COLUMN);
+ switch (item.getItemId()) {
+ case R.id.delete_account:
+ onDeleteAccount(accountId);
+ break;
+ case R.id.edit_account:
+ onEditAccount(accountId);
+ break;
+ case R.id.refresh_account:
+ onRefresh(accountId);
+ break;
+ }
+ return true;
+ } else {
+ // TODO child context menus (per mailbox)
+ return false;
+ }
}
@Override
@@ -293,7 +379,7 @@ public class AccountFolderList extends ExpandableListActivity
onAddNewAccount();
break;
case R.id.check_mail:
- onRefresh();
+ onRefresh(-1);
break;
case R.id.compose:
onCompose();
@@ -311,15 +397,21 @@ public class AccountFolderList extends ExpandableListActivity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
- getMenuInflater().inflate(R.menu.accounts_option, menu);
+ getMenuInflater().inflate(R.menu.account_folder_list_option, menu);
return true;
}
@Override
- public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
- super.onCreateContextMenu(menu, v, menuInfo);
- menu.setHeaderTitle(R.string.accounts_context_menu_title);
- getMenuInflater().inflate(R.menu.accounts_context, menu);
+ public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo info) {
+ super.onCreateContextMenu(menu, v, info);
+ ExpandableListContextMenuInfo menuInfo = (ExpandableListContextMenuInfo) info;
+ int type = ExpandableListView.getPackedPositionType(menuInfo.packedPosition);
+ if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) {
+ menu.setHeaderTitle(R.string.accounts_context_menu_title);
+ getMenuInflater().inflate(R.menu.account_folder_list_context, menu);
+ } else {
+ // TODO child context menus (per mailbox)
+ }
}
@Override
@@ -336,6 +428,50 @@ public class AccountFolderList extends ExpandableListActivity
return super.onKeyDown(keyCode, event);
}
+ /**
+ * Handler for UI-thread operations (when called from callbacks or any other threads)
+ */
+ class MessageListHandler extends Handler {
+ private static final int MSG_PROGRESS = 1;
+
+ @Override
+ public void handleMessage(android.os.Message msg) {
+ switch (msg.what) {
+ case MSG_PROGRESS:
+ setProgressBarIndeterminateVisibility(msg.arg1 != 0);
+ break;
+ default:
+ super.handleMessage(msg);
+ }
+ }
+
+ /**
+ * Call from any thread to start/stop progress indicator(s)
+ * @param progress true to start, false to stop
+ */
+ public void progress(boolean progress) {
+ android.os.Message msg = android.os.Message.obtain();
+ msg.what = MSG_PROGRESS;
+ msg.arg1 = progress ? 1 : 0;
+ sendMessage(msg);
+ }
+ }
+
+ /**
+ * Callback for async Controller results. This is all a placeholder until we figure out the
+ * final way to do this.
+ */
+ private class ControllerResults implements Controller.Result {
+ public void updateMailboxListCallback(MessagingException result, long accountKey) {
+ mHandler.progress(false);
+ }
+
+ public void updateMailboxCallback(MessagingException result, long accountKey,
+ long mailboxKey, int totalMessagesInMailbox, int numNewMessages) {
+ mHandler.progress(false);
+ }
+ }
+
private static class AccountsAdapter extends CursorTreeAdapter {
Context mContext;
@@ -350,8 +486,27 @@ public class AccountFolderList extends ExpandableListActivity
@Override
protected void bindChildView(View view, Context context, Cursor cursor, boolean isLastChild)
{
- // TODO Auto-generated method stub
-
+ String text = cursor.getString(EmailContent.Mailbox.CONTENT_DISPLAY_NAME_COLUMN);
+ if (text != null) {
+ TextView nameView = (TextView) view.findViewById(R.id.folder_name);
+ nameView.setText(text);
+ }
+
+ // TODO get/trach live folder status
+ text = null;
+ TextView statusView = (TextView) view.findViewById(R.id.folder_status);
+ if (text != null) {
+ statusView.setText(text);
+ statusView.setVisibility(View.VISIBLE);
+ } else {
+ statusView.setVisibility(View.GONE);
+ }
+
+ text = cursor.getString(EmailContent.Mailbox.CONTENT_UNREAD_COUNT_COLUMN);
+ if (text != null) {
+ TextView countView = (TextView) view.findViewById(R.id.new_message_count);
+ countView.setText(text);
+ }
}
@Override
@@ -369,12 +524,14 @@ public class AccountFolderList extends ExpandableListActivity
emailView.setText(text);
}
+ // TODO get unread count from Account
+ int unreadMessageCount = 0;
TextView countView = (TextView) view.findViewById(R.id.new_message_count);
- int unreadMessageCount = 0; // TODO get unread count from Account
- if (unreadMessageCount <= 0) {
- countView.setVisibility(View.GONE);
- } else {
+ if (unreadMessageCount > 0) {
countView.setText(String.valueOf(unreadMessageCount));
+ countView.setVisibility(View.VISIBLE);
+ } else {
+ countView.setVisibility(View.GONE);
}
}
@@ -398,8 +555,7 @@ public class AccountFolderList extends ExpandableListActivity
@Override
protected View newChildView(Context context, Cursor cursor, boolean isLastChild,
ViewGroup parent) {
- // TODO Auto-generated method stub
- return null;
+ return mInflater.inflate(R.layout.account_folder_list_child, parent, false);
}
@Override
diff --git a/src/com/android/email/activity/FolderMessageList.java b/src/com/android/email/activity/FolderMessageList.java
index 8db3bc040..fed9b23f6 100644
--- a/src/com/android/email/activity/FolderMessageList.java
+++ b/src/com/android/email/activity/FolderMessageList.java
@@ -418,6 +418,7 @@ public class FolderMessageList extends ExpandableListActivity {
* @param context
* @param id
*/
+ @Deprecated
public static void actionHandleAccount(Context context, long id) {
actionHandleAccount(context, id, null);
}
@@ -428,6 +429,7 @@ public class FolderMessageList extends ExpandableListActivity {
* @param id
* @param initialFolder The folder to open, or null for none
*/
+ @Deprecated
public static void actionHandleAccount(Context context, long id, String initialFolder) {
Intent intent = new Intent(context, FolderMessageList.class);
intent.putExtra(EXTRA_ACCOUNT_ID, id);
@@ -437,6 +439,7 @@ public class FolderMessageList extends ExpandableListActivity {
context.startActivity(intent);
}
+ @Deprecated
public static Intent actionHandleAccountIntent(Context context, long id, String initialFolder) {
Intent intent = new Intent(context, FolderMessageList.class);
intent.putExtra(EXTRA_ACCOUNT_ID, id);
@@ -456,6 +459,7 @@ public class FolderMessageList extends ExpandableListActivity {
* @param initialFolder If non-null, can set the folder name to open (typically Email.INBOX)
* @return an Intent which can be used to view that account
*/
+ @Deprecated
public static Intent actionHandleAccountUriIntent(Context context, long id,
String initialFolder) {
Intent i = actionHandleAccountIntent(context, id, initialFolder);
diff --git a/src/com/android/email/activity/MessageList.java b/src/com/android/email/activity/MessageList.java
index afeaedbcd..159f46d31 100644
--- a/src/com/android/email/activity/MessageList.java
+++ b/src/com/android/email/activity/MessageList.java
@@ -61,6 +61,8 @@ import java.util.Set;
public class MessageList extends ListActivity implements OnItemClickListener, OnClickListener {
// Intent extras (internal to this activity)
+ private static final String EXTRA_ACCOUNT_ID = "com.android.email.activity._ACCOUNT_ID";
+ private static final String EXTRA_MAILBOX_TYPE = "com.android.email.activity.MAILBOX_TYPE";
private static final String EXTRA_MAILBOX_ID = "com.android.email.activity.MAILBOX_ID";
private static final String EXTRA_ACCOUNT_NAME = "com.android.email.activity.ACCOUNT_NAME";
private static final String EXTRA_MAILBOX_NAME = "com.android.email.activity.MAILBOX_NAME";
@@ -99,6 +101,36 @@ public class MessageList extends ListActivity implements OnItemClickListener, On
context.startActivity(intent);
}
+ /**
+ * Open a specific mailbox by account & type
+ *
+ * @param context The caller's context (for generating an intent)
+ * @param accountId The account to open
+ * @param mailboxType the type of mailbox to open (e.g. @see EmailContent.Mailbox.TYPE_INBOX)
+ */
+ public static void actionHandleAccount(Context context, long accountId, int mailboxType) {
+ Intent intent = new Intent(context, MessageList.class);
+ intent.putExtra(EXTRA_ACCOUNT_ID, accountId);
+ intent.putExtra(EXTRA_MAILBOX_TYPE, mailboxType);
+ context.startActivity(intent);
+ }
+
+ /**
+ * Return an intent to open a specific mailbox by account & type. It will also clear
+ * notifications.
+ *
+ * @param context The caller's context (for generating an intent)
+ * @param accountId The account to open
+ * @param mailboxType the type of mailbox to open (e.g. @see EmailContent.Mailbox.TYPE_INBOX)
+ */
+ public static Intent actionHandleAccountIntent(Context context, long accountId,
+ int mailboxType) {
+ Intent intent = new Intent(context, MessageList.class);
+ intent.putExtra(EXTRA_ACCOUNT_ID, accountId);
+ intent.putExtra(EXTRA_MAILBOX_TYPE, mailboxType);
+ return intent;
+ }
+
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -123,10 +155,30 @@ public class MessageList extends ListActivity implements OnItemClickListener, On
mListAdapter = new MessageListAdapter(this);
setListAdapter(mListAdapter);
- // TODO set title to "account > mailbox (#unread)"
-
// TODO extend this to properly deal with multiple mailboxes, cursor, etc.
mMailboxId = getIntent().getLongExtra(EXTRA_MAILBOX_ID, -1);
+ if (mMailboxId == -1) {
+ // Try account/type mode
+ long accountId = getIntent().getLongExtra(EXTRA_ACCOUNT_ID, -1);
+ int mailboxType = getIntent().getIntExtra(EXTRA_MAILBOX_TYPE, -1);
+ Cursor c = null;
+ try {
+ c = getContentResolver().query(EmailContent.Mailbox.CONTENT_URI,
+ EmailContent.Mailbox.CONTENT_PROJECTION,
+ EmailContent.MailboxColumns.ACCOUNT_KEY + "=? AND " +
+ EmailContent.MailboxColumns.TYPE + "=?",
+ new String[] { Long.toString(accountId), Integer.toString(mailboxType) },
+ null);
+ if (c.moveToFirst()) {
+ mMailboxId = c.getLong(EmailContent.Mailbox.CONTENT_ID_COLUMN);
+ }
+ } finally {
+ if (c != null) c.close();
+ }
+
+ }
+
+ // TODO set title to "account > mailbox (#unread)"
mLoadMessagesTask = (LoadMessagesTask) new LoadMessagesTask(mMailboxId).execute();
}
@@ -300,7 +352,7 @@ public class MessageList extends ListActivity implements OnItemClickListener, On
// TODO this should be a call to the controller, since it may possibly kick off
// more than just a DB update. Also, the DB update shouldn't be in the UI thread
- // as it is here.
+ // as it is here. Also, it needs to update the read/unread count in the mailbox?
ContentValues cv = new ContentValues();
cv.put(EmailContent.MessageColumns.FLAG_READ, isRead);
Uri uri = ContentUris.withAppendedId(
diff --git a/src/com/android/email/activity/Welcome.java b/src/com/android/email/activity/Welcome.java
index 50f67b2df..4bda75bdd 100644
--- a/src/com/android/email/activity/Welcome.java
+++ b/src/com/android/email/activity/Welcome.java
@@ -16,11 +16,8 @@
package com.android.email.activity;
-import com.android.email.Email;
-import com.android.email.provider.EmailContent;
import com.android.email.provider.EmailContent;
import com.android.exchange.SyncManager;
-//import com.android.exchange.SyncManager;
import android.app.Activity;
import android.content.Intent;
@@ -62,8 +59,8 @@ public class Welcome extends Activity {
null, null, null);
if (c.getCount() == 1) {
c.moveToFirst();
- long id = c.getLong(EmailContent.Account.CONTENT_ID_COLUMN);
- FolderMessageList.actionHandleAccount(this, id, Email.INBOX);
+ long accountId = c.getLong(EmailContent.Account.CONTENT_ID_COLUMN);
+ MessageList.actionHandleAccount(this, accountId, EmailContent.Mailbox.TYPE_INBOX);
finish();
return;
}
diff --git a/src/com/android/email/activity/setup/AccountSetupNames.java b/src/com/android/email/activity/setup/AccountSetupNames.java
index b54031926..c6c14db38 100644
--- a/src/com/android/email/activity/setup/AccountSetupNames.java
+++ b/src/com/android/email/activity/setup/AccountSetupNames.java
@@ -16,10 +16,9 @@
package com.android.email.activity.setup;
-import com.android.email.Email;
import com.android.email.R;
import com.android.email.Utility;
-import com.android.email.activity.FolderMessageList;
+import com.android.email.activity.MessageList;
import com.android.email.provider.EmailContent;
import android.app.Activity;
@@ -106,7 +105,7 @@ public class AccountSetupNames extends Activity implements OnClickListener {
}
mAccount.setName(mName.getText().toString());
mAccount.saveOrUpdate(this);
- FolderMessageList.actionHandleAccount(this, mAccount.mId, Email.INBOX);
+ MessageList.actionHandleAccount(this, mAccount.mId, EmailContent.Mailbox.TYPE_INBOX);
finish();
}
diff --git a/src/com/android/email/service/MailService.java b/src/com/android/email/service/MailService.java
index 1dc1f6526..9958e3447 100644
--- a/src/com/android/email/service/MailService.java
+++ b/src/com/android/email/service/MailService.java
@@ -22,7 +22,7 @@ import com.android.email.MessagingController;
import com.android.email.MessagingListener;
import com.android.email.R;
import com.android.email.activity.AccountFolderList;
-import com.android.email.activity.FolderMessageList;
+import com.android.email.activity.MessageList;
import com.android.email.mail.MessagingException;
import com.android.email.mail.Store;
import com.android.email.mail.store.LocalStore;
@@ -282,8 +282,8 @@ public class MailService extends Service {
} else {
EmailContent.Account account1 = accountsWithNewMail.keySet().iterator().next();
int totalNewMails = accountsWithNewMail.get(account1);
- Intent i = FolderMessageList.actionHandleAccountIntent(context,
- account1.mId, Email.INBOX);
+ Intent i = MessageList.actionHandleAccountIntent(context,
+ account1.mId, EmailContent.Mailbox.TYPE_INBOX);
PendingIntent pi = PendingIntent.getActivity(context, 0, i, 0);
notif.setLatestEventInfo(context, getString(R.string.notification_new_title),
getResources().
diff --git a/tests/src/com/android/email/activity/FolderMessageListUnitTests.java b/tests/src/com/android/email/activity/FolderMessageListUnitTests.java
index 888cf5db1..978c15515 100644
--- a/tests/src/com/android/email/activity/FolderMessageListUnitTests.java
+++ b/tests/src/com/android/email/activity/FolderMessageListUnitTests.java
@@ -52,66 +52,66 @@ public class FolderMessageListUnitTests extends AndroidTestCase {
super.tearDown();
}
- /**
- * Test of actionHandleAccount() variants. Make sure they generate correct intents and
- * then call startActivity() with them.
- */
- public void testActionHandleAccount() {
- // Create a dummy account
- createTestAccount();
-
- // Create a mock context to catch the startActivity calls
- MyContext mockContext = new MyContext(getContext());
-
- // First, try with no initial folder
- FolderMessageList.actionHandleAccount(mockContext, mAccountId);
- Intent i = mockContext.startActivityIntent;
- assertNotNull(i);
- checkIntent(i, null, mAccount, null);
-
- // Next try with initial folder specified
- FolderMessageList.actionHandleAccount(mockContext, mAccountId, "test-folder-name");
- i = mockContext.startActivityIntent;
- assertNotNull(i);
- checkIntent(i, null, mAccount, "test-folder-name");
- }
+// /**
+// * Test of actionHandleAccount() variants. Make sure they generate correct intents and
+// * then call startActivity() with them.
+// */
+// public void testActionHandleAccount() {
+// // Create a dummy account
+// createTestAccount();
+//
+// // Create a mock context to catch the startActivity calls
+// MyContext mockContext = new MyContext(getContext());
+//
+// // First, try with no initial folder
+// FolderMessageList.actionHandleAccount(mockContext, mAccountId);
+// Intent i = mockContext.startActivityIntent;
+// assertNotNull(i);
+// checkIntent(i, null, mAccount, null);
+//
+// // Next try with initial folder specified
+// FolderMessageList.actionHandleAccount(mockContext, mAccountId, "test-folder-name");
+// i = mockContext.startActivityIntent;
+// assertNotNull(i);
+// checkIntent(i, null, mAccount, "test-folder-name");
+// }
/**
* Test of actionHandleAccountIntent(). Make sure it generates correct intents.
*/
- public void testActionHandleAccountIntent() {
- // Create a dummy account
- createTestAccount();
-
- // First try with no initial folder
- Intent result = FolderMessageList.actionHandleAccountIntent(
- getContext(), mAccountId, null);
- checkIntent(result, null, mAccount, null);
-
- // now try with a specified initial folder
- result = FolderMessageList.actionHandleAccountIntent(
- getContext(), mAccountId, "test-folder-name");
- checkIntent(result, null, mAccount, "test-folder-name");
- }
+// public void testActionHandleAccountIntent() {
+// // Create a dummy account
+// createTestAccount();
+//
+// // First try with no initial folder
+// Intent result = FolderMessageList.actionHandleAccountIntent(
+// getContext(), mAccountId, null);
+// checkIntent(result, null, mAccount, null);
+//
+// // now try with a specified initial folder
+// result = FolderMessageList.actionHandleAccountIntent(
+// getContext(), mAccountId, "test-folder-name");
+// checkIntent(result, null, mAccount, "test-folder-name");
+// }
/**
* Test of actionHandleAccountUriIntent(). Make sure it generates correct intents.
*/
- public void testActionHandleAccountUriIntent() {
- // Create a dummy account
- createTestAccount();
- Uri uri = ContentUris.withAppendedId(EmailContent.Account.CONTENT_URI, mAccountId);
-
- // First try with no initial folder
- Intent result = FolderMessageList.actionHandleAccountUriIntent(
- getContext(), mAccountId, null);
- checkIntent(result, uri, null, null);
-
- // now try with a specified initial folder
- result = FolderMessageList.actionHandleAccountUriIntent(
- getContext(), mAccountId, "test-folder-name");
- checkIntent(result, uri, null, "test-folder-name");
- }
+// public void testActionHandleAccountUriIntent() {
+// // Create a dummy account
+// createTestAccount();
+// Uri uri = ContentUris.withAppendedId(EmailContent.Account.CONTENT_URI, mAccountId);
+//
+// // First try with no initial folder
+// Intent result = FolderMessageList.actionHandleAccountUriIntent(
+// getContext(), mAccountId, null);
+// checkIntent(result, uri, null, null);
+//
+// // now try with a specified initial folder
+// result = FolderMessageList.actionHandleAccountUriIntent(
+// getContext(), mAccountId, "test-folder-name");
+// checkIntent(result, uri, null, "test-folder-name");
+// }
/**
* Check the values in a generated intent