summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorScott Kennedy <skennedy@google.com>2013-03-20 15:07:39 -0700
committerScott Kennedy <skennedy@google.com>2013-03-20 18:18:03 -0700
commit67aa9e5162a15fb8b46b4113ac627cd20668f095 (patch)
tree7cb0084354530aa169c24d874b09a8b04b1c9567 /src/com
parent0f58cbf6acfc656f962129ae97dfe2e2c62c4002 (diff)
downloadandroid_packages_apps_UnifiedEmail-67aa9e5162a15fb8b46b4113ac627cd20668f095.tar.gz
android_packages_apps_UnifiedEmail-67aa9e5162a15fb8b46b4113ac627cd20668f095.tar.bz2
android_packages_apps_UnifiedEmail-67aa9e5162a15fb8b46b4113ac627cd20668f095.zip
Exclude all inbox labels when we're viewing an inbox
Bug: 8426563 Change-Id: Ib9256fcdb658cb3df9b67485f7768f75bb8b6539
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/mail/browse/ConversationItemView.java16
-rw-r--r--src/com/android/mail/browse/ConversationViewHeader.java3
-rw-r--r--src/com/android/mail/providers/Conversation.java7
-rw-r--r--src/com/android/mail/ui/FolderDisplayer.java9
-rw-r--r--src/com/android/mail/ui/FolderSelectionActivity.java2
-rw-r--r--src/com/android/mail/widget/BaseWidgetProvider.java25
-rw-r--r--src/com/android/mail/widget/WidgetConversationViewBuilder.java10
-rw-r--r--src/com/android/mail/widget/WidgetService.java36
8 files changed, 74 insertions, 34 deletions
diff --git a/src/com/android/mail/browse/ConversationItemView.java b/src/com/android/mail/browse/ConversationItemView.java
index 516561058..bcc4129e0 100644
--- a/src/com/android/mail/browse/ConversationItemView.java
+++ b/src/com/android/mail/browse/ConversationItemView.java
@@ -69,6 +69,7 @@ import com.android.mail.providers.Conversation;
import com.android.mail.providers.Folder;
import com.android.mail.providers.UIProvider;
import com.android.mail.providers.UIProvider.ConversationColumns;
+import com.android.mail.providers.UIProvider.FolderType;
import com.android.mail.ui.AnimatedAdapter;
import com.android.mail.ui.ControllableActivity;
import com.android.mail.ui.ConversationSelectionSet;
@@ -213,8 +214,9 @@ public class ConversationItemView extends View implements SwipeableItemView, Tog
}
@Override
- public void loadConversationFolders(Conversation conv, final Uri ignoreFolderUri) {
- super.loadConversationFolders(conv, ignoreFolderUri);
+ public void loadConversationFolders(Conversation conv, final Uri ignoreFolderUri,
+ final int ignoreFolderType) {
+ super.loadConversationFolders(conv, ignoreFolderUri, ignoreFolderType);
mFoldersCount = mFoldersSortedSet.size();
mHasMoreFolders = mFoldersCount > MAX_DISPLAYED_FOLDERS_COUNT;
@@ -569,8 +571,16 @@ public class ConversationItemView extends View implements SwipeableItemView, Tog
} else {
mHeader.folderDisplayer.reset();
}
+
+ final int ignoreFolderType;
+ if (mDisplayedFolder.isInbox()) {
+ ignoreFolderType = FolderType.INBOX;
+ } else {
+ ignoreFolderType = -1;
+ }
+
mHeader.folderDisplayer.loadConversationFolders(mHeader.conversation,
- mDisplayedFolder.uri);
+ mDisplayedFolder.uri, ignoreFolderType);
}
if (mSelectedConversationSet != null) {
diff --git a/src/com/android/mail/browse/ConversationViewHeader.java b/src/com/android/mail/browse/ConversationViewHeader.java
index 3b34965de..d89343ac4 100644
--- a/src/com/android/mail/browse/ConversationViewHeader.java
+++ b/src/com/android/mail/browse/ConversationViewHeader.java
@@ -157,7 +157,8 @@ public class ConversationViewHeader extends RelativeLayout implements OnClickLis
0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
}
- mFolderDisplayer.loadConversationFolders(conv, null /* ignoreFolder */);
+ mFolderDisplayer.loadConversationFolders(conv, null /* ignoreFolder */,
+ -1 /* ignoreFolderType */);
mFolderDisplayer.appendFolderSpans(sb);
mFoldersView.setText(sb);
diff --git a/src/com/android/mail/providers/Conversation.java b/src/com/android/mail/providers/Conversation.java
index f978d006c..e125f9078 100644
--- a/src/com/android/mail/providers/Conversation.java
+++ b/src/com/android/mail/providers/Conversation.java
@@ -458,7 +458,8 @@ public class Conversation implements Parcelable {
cachedDisplayableFolders = null;
}
- public ArrayList<Folder> getRawFoldersForDisplay(final Uri ignoreFolderUri) {
+ public ArrayList<Folder> getRawFoldersForDisplay(final Uri ignoreFolderUri,
+ final int ignoreFolderType) {
if (cachedDisplayableFolders == null) {
cachedDisplayableFolders = new ArrayList<Folder>();
for (Folder folder : rawFolders.folders) {
@@ -466,6 +467,10 @@ public class Conversation implements Parcelable {
if (ignoreFolderUri != null && ignoreFolderUri.equals(folder.uri)) {
continue;
}
+ // Skip the ignoreFolderType
+ if (ignoreFolderType >= 0 && folder.isType(ignoreFolderType)) {
+ continue;
+ }
cachedDisplayableFolders.add(folder);
}
}
diff --git a/src/com/android/mail/ui/FolderDisplayer.java b/src/com/android/mail/ui/FolderDisplayer.java
index 05cfebe6c..4c4a68ccb 100644
--- a/src/com/android/mail/ui/FolderDisplayer.java
+++ b/src/com/android/mail/ui/FolderDisplayer.java
@@ -26,6 +26,7 @@ import android.net.Uri;
import com.android.mail.R;
import com.android.mail.providers.Conversation;
import com.android.mail.providers.Folder;
+import com.android.mail.providers.UIProvider.FolderType;
import java.util.SortedSet;
@@ -53,11 +54,13 @@ public class FolderDisplayer {
* Configure the FolderDisplayer object by parsing the rawFolders string.
*
* @param foldersString string containing serialized folders to display.
- * @param ignoreFolder (optional) folder to omit from the displayed set
+ * @param ignoreFolderUri (optional) folder to omit from the displayed set
+ * @param ignoreFolderType -1, or the {@link FolderType} to omit from the displayed set
*/
- public void loadConversationFolders(Conversation conv, final Uri ignoreFolderUri) {
+ public void loadConversationFolders(Conversation conv, final Uri ignoreFolderUri,
+ final int ignoreFolderType) {
mFoldersSortedSet.clear();
- mFoldersSortedSet.addAll(conv.getRawFoldersForDisplay(ignoreFolderUri));
+ mFoldersSortedSet.addAll(conv.getRawFoldersForDisplay(ignoreFolderUri, ignoreFolderType));
}
/**
diff --git a/src/com/android/mail/ui/FolderSelectionActivity.java b/src/com/android/mail/ui/FolderSelectionActivity.java
index 3bee9b03b..e5c34aa3e 100644
--- a/src/com/android/mail/ui/FolderSelectionActivity.java
+++ b/src/com/android/mail/ui/FolderSelectionActivity.java
@@ -155,7 +155,7 @@ public class FolderSelectionActivity extends Activity implements OnClickListener
* Create a widget for the specified account and folder
*/
protected void createWidget(int id, Account account, Folder selectedFolder) {
- WidgetProvider.updateWidget(this, id, account, selectedFolder.uri,
+ WidgetProvider.updateWidget(this, id, account, selectedFolder.type, selectedFolder.uri,
selectedFolder.conversationListUri, selectedFolder.name);
final Intent result = new Intent();
result.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id);
diff --git a/src/com/android/mail/widget/BaseWidgetProvider.java b/src/com/android/mail/widget/BaseWidgetProvider.java
index d3f3364cd..fe8c8e896 100644
--- a/src/com/android/mail/widget/BaseWidgetProvider.java
+++ b/src/com/android/mail/widget/BaseWidgetProvider.java
@@ -36,6 +36,7 @@ import com.android.mail.preferences.MailPrefs;
import com.android.mail.providers.Account;
import com.android.mail.providers.Folder;
import com.android.mail.providers.UIProvider;
+import com.android.mail.providers.UIProvider.FolderType;
import com.android.mail.ui.MailboxSelectionActivity;
import com.android.mail.utils.AccountUtils;
import com.android.mail.utils.LogTag;
@@ -48,6 +49,7 @@ import java.util.Set;
public abstract class BaseWidgetProvider extends AppWidgetProvider {
public static final String EXTRA_ACCOUNT = "account";
+ public static final String EXTRA_FOLDER_TYPE = "folder-type";
public static final String EXTRA_FOLDER_URI = "folder-uri";
public static final String EXTRA_FOLDER_CONVERSATION_LIST_URI = "folder-conversation-list-uri";
public static final String EXTRA_FOLDER_DISPLAY_NAME = "folder-display-name";
@@ -121,13 +123,14 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider {
if (ACTION_UPDATE_WIDGET.equals(action)) {
final int widgetId = intent.getIntExtra(EXTRA_WIDGET_ID, -1);
final Account account = Account.newinstance(intent.getStringExtra(EXTRA_ACCOUNT));
+ final int folderType = intent.getIntExtra(EXTRA_FOLDER_TYPE, FolderType.DEFAULT);
final Uri folderUri = intent.getParcelableExtra(EXTRA_FOLDER_URI);
final Uri folderConversationListUri =
intent.getParcelableExtra(EXTRA_FOLDER_CONVERSATION_LIST_URI);
final String folderDisplayName = intent.getStringExtra(EXTRA_FOLDER_DISPLAY_NAME);
if (widgetId != -1 && account != null && folderUri != null) {
- updateWidgetInternal(context, widgetId, account, folderUri,
+ updateWidgetInternal(context, widgetId, account, folderType, folderUri,
folderConversationListUri, folderDisplayName);
}
} else if (Utils.ACTION_NOTIFY_DATASET_CHANGED.equals(action)) {
@@ -242,7 +245,8 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider {
}
}
- updateWidgetInternal(mContext, mAppWidgetIds[i], account, folderUri,
+ updateWidgetInternal(mContext, mAppWidgetIds[i], account,
+ folder == null ? FolderType.DEFAULT : folder.type, folderUri,
folder == null ? null : folder.conversationListUri, folder == null ? null
: folder.name);
}
@@ -276,7 +280,7 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider {
* Update the widget appWidgetId with the given account and folder
*/
public static void updateWidget(Context context, int appWidgetId, Account account,
- final Uri folderUri, final Uri folderConversationListUri,
+ final int folderType, final Uri folderUri, final Uri folderConversationListUri,
final String folderDisplayName) {
if (account == null || folderUri == null) {
LogUtils.e(LOG_TAG,
@@ -288,7 +292,8 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider {
updateWidgetIntent.setType(account.mimeType);
updateWidgetIntent.putExtra(EXTRA_WIDGET_ID, appWidgetId);
updateWidgetIntent.putExtra(EXTRA_ACCOUNT, account.serialize());
- updateWidgetIntent.putExtra(EXTRA_FOLDER_URI, folderUri);;
+ updateWidgetIntent.putExtra(EXTRA_FOLDER_TYPE, folderType);
+ updateWidgetIntent.putExtra(EXTRA_FOLDER_URI, folderUri);
updateWidgetIntent.putExtra(EXTRA_FOLDER_CONVERSATION_LIST_URI, folderConversationListUri);
updateWidgetIntent.putExtra(EXTRA_FOLDER_DISPLAY_NAME, folderDisplayName);
@@ -296,7 +301,7 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider {
}
protected void updateWidgetInternal(Context context, int appWidgetId, Account account,
- final Uri folderUri, final Uri folderConversationListUri,
+ final int folderType, final Uri folderUri, final Uri folderConversationListUri,
final String folderDisplayName) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget);
final boolean isAccountValid = isAccountValid(context, account);
@@ -323,8 +328,9 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider {
remoteViews.setOnClickPendingIntent(R.id.widget_configuration, clickIntent);
} else {
// Set folder to a space here to avoid flicker.
- configureValidAccountWidget(context, remoteViews, appWidgetId, account, folderUri,
- folderConversationListUri, folderDisplayName == null ? " " : folderDisplayName);
+ configureValidAccountWidget(context, remoteViews, appWidgetId, account, folderType,
+ folderUri, folderConversationListUri,
+ folderDisplayName == null ? " " : folderDisplayName);
}
AppWidgetManager.getInstance(context).updateAppWidget(appWidgetId, remoteViews);
@@ -343,10 +349,11 @@ public abstract class BaseWidgetProvider extends AppWidgetProvider {
}
protected void configureValidAccountWidget(Context context, RemoteViews remoteViews,
- int appWidgetId, Account account, final Uri folderUri,
+ int appWidgetId, Account account, final int folderType, final Uri folderUri,
final Uri folderConversationListUri, String folderDisplayName) {
WidgetService.configureValidAccountWidget(context, remoteViews, appWidgetId, account,
- folderUri, folderConversationListUri, folderDisplayName, WidgetService.class);
+ folderType, folderUri, folderConversationListUri, folderDisplayName,
+ WidgetService.class);
}
private final void migrateAllLegacyWidgetInformation(Context context) {
diff --git a/src/com/android/mail/widget/WidgetConversationViewBuilder.java b/src/com/android/mail/widget/WidgetConversationViewBuilder.java
index 4a4ae64ac..45c4cd990 100644
--- a/src/com/android/mail/widget/WidgetConversationViewBuilder.java
+++ b/src/com/android/mail/widget/WidgetConversationViewBuilder.java
@@ -66,8 +66,9 @@ public class WidgetConversationViewBuilder {
* Load Conversation Labels
*/
@Override
- public void loadConversationFolders(Conversation conv, final Uri ignoreFolderUri) {
- super.loadConversationFolders(conv, ignoreFolderUri);
+ public void loadConversationFolders(Conversation conv, final Uri ignoreFolderUri,
+ final int ignoreFolderType) {
+ super.loadConversationFolders(conv, ignoreFolderUri, ignoreFolderType);
}
private static int getFolderViewId(int position) {
@@ -146,7 +147,8 @@ public class WidgetConversationViewBuilder {
* Return the full View
*/
public RemoteViews getStyledView(CharSequence date, Conversation conversation,
- final Uri folderUri, SpannableStringBuilder senders, String filteredSubject) {
+ final Uri folderUri, final int ignoreFolderType, SpannableStringBuilder senders,
+ String filteredSubject) {
final boolean isUnread = !conversation.read;
String snippet = conversation.getSnippet();
@@ -194,7 +196,7 @@ public class WidgetConversationViewBuilder {
}
if (mContext.getResources().getBoolean(R.bool.display_folder_colors_in_widget)) {
mFolderDisplayer = new WidgetFolderDisplayer(mContext);
- mFolderDisplayer.loadConversationFolders(conversation, folderUri);
+ mFolderDisplayer.loadConversationFolders(conversation, folderUri, ignoreFolderType);
mFolderDisplayer.displayFolders(remoteViews);
}
diff --git a/src/com/android/mail/widget/WidgetService.java b/src/com/android/mail/widget/WidgetService.java
index 3db1dcf66..d234d2f4c 100644
--- a/src/com/android/mail/widget/WidgetService.java
+++ b/src/com/android/mail/widget/WidgetService.java
@@ -45,6 +45,7 @@ import com.android.mail.providers.Account;
import com.android.mail.providers.Conversation;
import com.android.mail.providers.UIProvider;
import com.android.mail.providers.UIProvider.ConversationListQueryParameters;
+import com.android.mail.providers.UIProvider.FolderType;
import com.android.mail.utils.AccountUtils;
import com.android.mail.utils.DelayedTaskHandler;
import com.android.mail.utils.LogTag;
@@ -67,17 +68,17 @@ public class WidgetService extends RemoteViewsService {
}
protected void configureValidAccountWidget(Context context, RemoteViews remoteViews,
- int appWidgetId, Account account, final Uri folderUri,
+ int appWidgetId, Account account, final int folderType, final Uri folderUri,
final Uri folderConversationListUri, String folderName) {
- configureValidAccountWidget(context, remoteViews, appWidgetId, account, folderUri,
- folderConversationListUri, folderName, WidgetService.class);
+ configureValidAccountWidget(context, remoteViews, appWidgetId, account, folderType,
+ folderUri, folderConversationListUri, folderName, WidgetService.class);
}
/**
* Modifies the remoteView for the given account and folder.
*/
public static void configureValidAccountWidget(Context context, RemoteViews remoteViews,
- int appWidgetId, Account account, final Uri folderUri,
+ int appWidgetId, Account account, final int folderType, final Uri folderUri,
final Uri folderConversationListUri, String folderDisplayName, Class<?> widgetService) {
remoteViews.setViewVisibility(R.id.widget_folder, View.VISIBLE);
@@ -105,11 +106,11 @@ public class WidgetService extends RemoteViewsService {
remoteViews.setEmptyView(R.id.conversation_list, R.id.empty_conversation_list);
WidgetService.configureValidWidgetIntents(context, remoteViews, appWidgetId, account,
- folderUri, folderConversationListUri, folderDisplayName, widgetService);
+ folderType, folderUri, folderConversationListUri, folderDisplayName, widgetService);
}
public static void configureValidWidgetIntents(Context context, RemoteViews remoteViews,
- int appWidgetId, Account account, final Uri folderUri,
+ int appWidgetId, Account account, final int folderType, final Uri folderUri,
final Uri folderConversationListUri, final String folderDisplayName,
Class<?> serviceClass) {
remoteViews.setViewVisibility(R.id.widget_configuration, View.GONE);
@@ -119,6 +120,7 @@ public class WidgetService extends RemoteViewsService {
final Intent intent = new Intent(context, serviceClass);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
intent.putExtra(BaseWidgetProvider.EXTRA_ACCOUNT, account.serialize());
+ intent.putExtra(BaseWidgetProvider.EXTRA_FOLDER_TYPE, folderType);
intent.putExtra(BaseWidgetProvider.EXTRA_FOLDER_URI, folderUri);
intent.putExtra(BaseWidgetProvider.EXTRA_FOLDER_CONVERSATION_LIST_URI,
folderConversationListUri);
@@ -199,6 +201,7 @@ public class WidgetService extends RemoteViewsService {
private final Context mContext;
private final int mAppWidgetId;
private final Account mAccount;
+ private final int mFolderType;
private final Uri mFolderUri;
private final Uri mFolderConversationListUri;
private final String mFolderDisplayName;
@@ -221,6 +224,7 @@ public class WidgetService extends RemoteViewsService {
mAppWidgetId = intent.getIntExtra(
AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
mAccount = Account.newinstance(intent.getStringExtra(WidgetProvider.EXTRA_ACCOUNT));
+ mFolderType = intent.getIntExtra(WidgetProvider.EXTRA_FOLDER_TYPE, FolderType.DEFAULT);
mFolderUri = intent.getParcelableExtra(WidgetProvider.EXTRA_FOLDER_URI);
mFolderConversationListUri =
intent.getParcelableExtra(WidgetProvider.EXTRA_FOLDER_CONVERSATION_LIST_URI);
@@ -239,8 +243,8 @@ public class WidgetService extends RemoteViewsService {
// If the account of this widget has been removed, we want to update the widget to
// "Tap to configure" mode.
if (!mService.isWidgetConfigured(mContext, mAppWidgetId, mAccount)) {
- BaseWidgetProvider.updateWidget(mContext, mAppWidgetId, mAccount, mFolderUri,
- mFolderConversationListUri, mFolderDisplayName);
+ BaseWidgetProvider.updateWidget(mContext, mAppWidgetId, mAccount, mFolderType,
+ mFolderUri, mFolderConversationListUri, mFolderDisplayName);
}
mFolderInformationShown = false;
@@ -380,10 +384,17 @@ public class WidgetService extends RemoteViewsService {
CharSequence date = DateUtils.getRelativeTimeSpanString(mContext,
conversation.dateMs);
+ final int ignoreFolderType;
+ if ((mFolderType & FolderType.INBOX) != 0) {
+ ignoreFolderType = FolderType.INBOX;
+ } else {
+ ignoreFolderType = -1;
+ }
+
// Load up our remote view.
- RemoteViews remoteViews =
- mWidgetConversationViewBuilder.getStyledView(date, conversation,
- mFolderUri, senderBuilder, filterTag(conversation.subject));
+ RemoteViews remoteViews = mWidgetConversationViewBuilder.getStyledView(date,
+ conversation, mFolderUri, ignoreFolderType, senderBuilder,
+ filterTag(conversation.subject));
// On click intent.
remoteViews.setOnClickFillInIntent(R.id.widget_conversation,
@@ -500,7 +511,8 @@ public class WidgetService extends RemoteViewsService {
// widget update. This causes the folder name to be shown as blank if the state
// of the widget is restored.
mService.configureValidAccountWidget(mContext, remoteViews, mAppWidgetId,
- mAccount, mFolderUri, mFolderConversationListUri, folderName);
+ mAccount, mFolderType, mFolderUri, mFolderConversationListUri,
+ folderName);
appWidgetManager.updateAppWidget(mAppWidgetId, remoteViews);
mFolderInformationShown = true;
}