Hookup ui for marking a conversation important/ not important.
Change-Id: Ic699aa172adccb335d67978abf4c0bd95d958a61
diff --git a/gmail_src/com/android/mail/providers/proto/boot/GmailAccountService.java b/gmail_src/com/android/mail/providers/proto/boot/GmailAccountService.java
index bd0aff7..a5041fa 100644
--- a/gmail_src/com/android/mail/providers/proto/boot/GmailAccountService.java
+++ b/gmail_src/com/android/mail/providers/proto/boot/GmailAccountService.java
@@ -151,7 +151,8 @@
AccountCapabilities.THREADED_CONVERSATIONS |
AccountCapabilities.MULTIPLE_FOLDERS_PER_CONV |
AccountCapabilities.UNDO |
- AccountCapabilities.HELP_CONTENT);
+ AccountCapabilities.HELP_CONTENT |
+ AccountCapabilities.MARK_IMPORTANT);
final AccountCacheProvider.CachedAccount cachedAccount =
new AccountCacheProvider.CachedAccount(gmailAccountId,
account.name,
diff --git a/src/com/android/mail/browse/SelectedConversationsActionMenu.java b/src/com/android/mail/browse/SelectedConversationsActionMenu.java
index 62102de..0695965 100644
--- a/src/com/android/mail/browse/SelectedConversationsActionMenu.java
+++ b/src/com/android/mail/browse/SelectedConversationsActionMenu.java
@@ -149,6 +149,12 @@
case R.id.change_folder:
showChangeFoldersDialog();
break;
+ case R.id.mark_important:
+ markConversationsImportant(true);
+ break;
+ case R.id.mark_not_important:
+ markConversationsImportant(false);
+ break;
default:
handled = false;
break;
@@ -165,6 +171,16 @@
mListAdapter.notifyDataSetChanged();
}
+ private void markConversationsImportant(boolean important) {
+ Collection<Conversation> conversations = mSelectionSet.values();
+ int priority = important ? UIProvider.ConversationPriority.HIGH
+ : UIProvider.ConversationPriority.LOW;
+ Conversation.updateInt(mContext, conversations, ConversationColumns.PRIORITY, priority);
+ mSelectionSet.clear();
+ // Redraw with changes
+ mListAdapter.notifyDataSetChanged();
+ }
+
private void starConversations(boolean star) {
Collection<Conversation> conversations = mSelectionSet.values();
if (conversations.size() > 0) {
@@ -247,6 +263,8 @@
Collection<Conversation> conversations = mSelectionSet.values();
boolean showStar = false;
boolean showMarkUnread = false;
+ boolean showMarkImportant = false;
+
for (Conversation conversation : conversations) {
if (!conversation.starred) {
showStar = true;
@@ -254,7 +272,10 @@
if (conversation.read) {
showMarkUnread = true;
}
- if (showMarkUnread && showStar) {
+ if (!conversation.isImportant()) {
+ showMarkImportant = true;
+ }
+ if (showStar && showMarkUnread && showMarkImportant) {
break;
}
}
@@ -274,6 +295,13 @@
mFolder.supportsCapability(FolderCapabilities.ARCHIVE));
final MenuItem mute = menu.findItem(R.id.mute);
mute.setVisible(mAccount.supportsCapability(UIProvider.AccountCapabilities.MUTE));
+ final MenuItem markImportant = menu.findItem(R.id.mark_important);
+ markImportant.setVisible(showMarkImportant
+ && mAccount.supportsCapability(UIProvider.AccountCapabilities.MARK_IMPORTANT));
+ final MenuItem markNotImportant = menu.findItem(R.id.mark_not_important);
+ markNotImportant.setVisible(!showMarkImportant
+ && mAccount.supportsCapability(UIProvider.AccountCapabilities.MARK_IMPORTANT));
+
return true;
}
diff --git a/src/com/android/mail/providers/Conversation.java b/src/com/android/mail/providers/Conversation.java
index 4376b6a..0138a9d 100644
--- a/src/com/android/mail/providers/Conversation.java
+++ b/src/com/android/mail/providers/Conversation.java
@@ -145,9 +145,35 @@
}
}
+ /**
+ * Get if this conversation is marked as high priority.
+ */
+ public boolean isImportant() {
+ return priority == UIProvider.ConversationPriority.HIGH;
+ }
+
// Below are methods that update Conversation data (update/delete)
/**
+ * Update an integer column for a single conversation (see updateBoolean below)
+ */
+ public int updateInt(Context context, String columnName, int value) {
+ ArrayList<Conversation> conversations = new ArrayList<Conversation>();
+ conversations.add(this);
+ return updateInt(context, conversations, columnName, value);
+ }
+
+ /**
+ * Update an integer column for a group of conversations (see updateValues below)
+ */
+ public static int updateInt(Context context, Collection<Conversation> conversations,
+ String columnName, int value) {
+ ContentValues cv = new ContentValues();
+ cv.put(columnName, value);
+ return updateValues(context, conversations, cv);
+ }
+
+ /**
* Update a boolean column for a single conversation (see updateBoolean below)
*/
public int updateBoolean(Context context, String columnName, boolean value) {
diff --git a/src/com/android/mail/providers/UIProvider.java b/src/com/android/mail/providers/UIProvider.java
index 2331ddc..cccafce 100644
--- a/src/com/android/mail/providers/UIProvider.java
+++ b/src/com/android/mail/providers/UIProvider.java
@@ -193,6 +193,10 @@
* Whether the account provides help content.
*/
public static final int HELP_CONTENT = 0x4000;
+ /**
+ * Whether the account provides a mechanism for marking conversations as important.
+ */
+ public static final int MARK_IMPORTANT = 0x8000;
}
public static final class AccountColumns {