diff options
author | Andrew Sapperstein <asapperstein@google.com> | 2014-07-22 18:17:53 -0700 |
---|---|---|
committer | Andrew Sapperstein <asapperstein@google.com> | 2014-07-23 20:33:53 -0700 |
commit | 3047a9f03d9febaf2aba1e5ea0827e0b740d1ab2 (patch) | |
tree | 87e898eceeade8cef576929df0cd23060ab801c3 | |
parent | cc6b6dd1f7677885a3fa2de30468978f246b7a02 (diff) | |
download | android_packages_apps_UnifiedEmail-3047a9f03d9febaf2aba1e5ea0827e0b740d1ab2.tar.gz android_packages_apps_UnifiedEmail-3047a9f03d9febaf2aba1e5ea0827e0b740d1ab2.tar.bz2 android_packages_apps_UnifiedEmail-3047a9f03d9febaf2aba1e5ea0827e0b740d1ab2.zip |
stable action items
b/16167419
Change-Id: I72c7c44f5728563da1fcbd39daa31ccd41845d8a
29 files changed, 87 insertions, 460 deletions
diff --git a/res/drawable-hdpi/ic_menu_refresh_holo_light.png b/res/drawable-hdpi/ic_menu_refresh_holo_light.png Binary files differdeleted file mode 100644 index 8591b6973..000000000 --- a/res/drawable-hdpi/ic_menu_refresh_holo_light.png +++ /dev/null diff --git a/res/drawable-mdpi/ic_menu_refresh_holo_light.png b/res/drawable-mdpi/ic_menu_refresh_holo_light.png Binary files differdeleted file mode 100644 index 362179827..000000000 --- a/res/drawable-mdpi/ic_menu_refresh_holo_light.png +++ /dev/null diff --git a/res/drawable-xhdpi/ic_menu_refresh_holo_light.png b/res/drawable-xhdpi/ic_menu_refresh_holo_light.png Binary files differdeleted file mode 100644 index 9b4a49d0a..000000000 --- a/res/drawable-xhdpi/ic_menu_refresh_holo_light.png +++ /dev/null diff --git a/res/drawable-xxhdpi/ic_menu_refresh_holo_light.png b/res/drawable-xxhdpi/ic_menu_refresh_holo_light.png Binary files differdeleted file mode 100644 index ea48c862f..000000000 --- a/res/drawable-xxhdpi/ic_menu_refresh_holo_light.png +++ /dev/null diff --git a/res/menu-sw600dp-land/conversation_actions.xml b/res/menu-sw600dp-land/conversation_actions.xml index 3f3326e9f..31e6e89f2 100644 --- a/res/menu-sw600dp-land/conversation_actions.xml +++ b/res/menu-sw600dp-land/conversation_actions.xml @@ -18,34 +18,22 @@ <!-- Action bar items for the tablet when viewing a conversation in landscape mode. --> <menu xmlns:android="http://schemas.android.com/apk/res/android"> - <!-- This invisible menu item is used to map CTRL-C to the compose action --> - <item - android:id="@+id/compose" - android:title="@string/menu_compose" - android:visible="false" - android:alphabeticShortcut="@string/trigger_compose_char" /> - <item android:id="@+id/search" android:title="@string/menu_search" android:showAsAction="always|collapseActionView" android:icon="@drawable/ic_menu_search" android:actionLayout="@layout/mail_actionbar_searchview" /> - <!-- Depends on AccountCapabilities.ARCHIVE and - FolderCapabilities.ARCHIVE. Only one of archive or - remove_folder are shown, and they have the same drawable, so - show the first one. - --> <item android:id="@+id/archive" android:title="@string/archive" - android:showAsAction="never" + android:showAsAction="always" android:icon="@drawable/ic_archive_wht_24dp" android:alphabeticShortcut="@string/trigger_y_char" /> <item android:id="@+id/remove_folder" android:title="@string/remove_folder" - android:showAsAction="never" + android:showAsAction="always" android:icon="@drawable/ic_remove_label" android:alphabeticShortcut="@string/trigger_y_char" android:visible="false" /> @@ -53,20 +41,20 @@ <item android:id="@+id/delete" android:title="@string/delete" - android:showAsAction="never" + android:showAsAction="always" android:icon="@drawable/ic_delete_wht_24dp" /> <!-- Depends on the user viewing a draft label, and the above menu item not being shown --> <item android:id="@+id/discard_drafts" android:title="@string/discard_drafts" - android:showAsAction="never" + android:showAsAction="always" android:icon="@drawable/ic_delete_wht_24dp" android:visible="false" /> <item android:id="@+id/inside_conversation_unread" android:title="@string/mark_unread" - android:showAsAction="never" + android:showAsAction="always" android:icon="@drawable/ic_markunread_wht_24dp" /> <item @@ -130,23 +118,16 @@ android:showAsAction="never" android:visible="false" /> + <!-- These invisible menu items are used to enable keyboard shortcuts --> + <item + android:id="@+id/compose" + android:title="@string/menu_compose" + android:visible="false" + android:alphabeticShortcut="@string/trigger_compose_char" /> + <item android:id="@+id/refresh" android:title="@string/refresh" - android:showAsAction="never" + android:visible="false" android:alphabeticShortcut="@string/trigger_refresh_char" /> - <!-- Available for Folders with SUPPORTS_SETTINGS capability --> - <item android:id="@+id/folder_options" - android:title="@string/menu_folder_options" - android:showAsAction="never" /> - - <item android:id="@+id/settings" - android:title="@string/menu_settings" - android:showAsAction="never" /> - - <item - android:id="@+id/help_info_menu_item" - android:title="@string/help_and_feedback" - android:showAsAction="never" /> - </menu> diff --git a/res/menu-sw600dp-land/conversation_list_search_results_actions.xml b/res/menu-sw600dp-land/conversation_list_search_results_actions.xml index 07b518674..64a9d0662 100644 --- a/res/menu-sw600dp-land/conversation_list_search_results_actions.xml +++ b/res/menu-sw600dp-land/conversation_list_search_results_actions.xml @@ -17,13 +17,6 @@ --> <menu xmlns:android="http://schemas.android.com/apk/res/android"> - <!-- This invisible menu item is used to map CTRL-C to the compose action --> - <item - android:id="@+id/compose" - android:title="@string/menu_compose" - android:visible="false" - android:alphabeticShortcut="@string/trigger_compose_char" /> - <item android:id="@+id/search" android:title="@string/menu_search" android:showAsAction="always|collapseActionView" @@ -33,21 +26,21 @@ <item android:id="@+id/delete" android:title="@string/delete" - android:showAsAction="ifRoom" + android:showAsAction="always" android:icon="@drawable/ic_delete_wht_24dp" /> - <!-- Always available --> + <item + android:id="@+id/inside_conversation_unread" + android:title="@string/mark_read" + android:showAsAction="always" + android:icon="@drawable/ic_markunread_wht_24dp" /> + <item android:id="@+id/change_folders" android:title="@string/menu_change_folders" android:showAsAction="never" android:icon="@drawable/ic_menu_folders_holo_light" /> - <item android:id="@+id/inside_conversation_unread" - android:title="@string/mark_read" - android:showAsAction="never" - android:icon="@drawable/ic_markunread_wht_24dp" /> - <item android:id="@+id/mark_important" android:title="@string/mark_important" @@ -63,18 +56,16 @@ android:title="@string/report_spam" android:showAsAction="never" /> + <!-- This invisible menu items are used to enable keyboard shortcuts --> + <item + android:id="@+id/compose" + android:title="@string/menu_compose" + android:visible="false" + android:alphabeticShortcut="@string/trigger_compose_char" /> + <item android:id="@+id/refresh" android:title="@string/refresh" - android:showAsAction="never" + android:visible="false" android:alphabeticShortcut="@string/trigger_refresh_char" /> - <item android:id="@+id/settings" - android:title="@string/menu_settings" - android:showAsAction="never" /> - - <item - android:id="@+id/help_info_menu_item" - android:showAsAction="never" - android:title="@string/help_and_feedback" /> - </menu> diff --git a/res/menu-sw600dp/conversation_list_menu.xml b/res/menu-sw600dp/conversation_list_menu.xml deleted file mode 100644 index c09f3ae79..000000000 --- a/res/menu-sw600dp/conversation_list_menu.xml +++ /dev/null @@ -1,64 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2012 Google Inc. - Licensed to The Android Open Source Project. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<menu xmlns:android="http://schemas.android.com/apk/res/android"> - - <!-- This invisible menu item is used to map CTRL-C to the compose action --> - <item - android:id="@+id/compose" - android:title="@string/menu_compose" - android:visible="false" - android:alphabeticShortcut="@string/trigger_compose_char" /> - - <!-- Available only for accounts with SERVER_SEARCH and in a folder - that supports FOLDER_SERVER_SEARCH --> - <item android:id="@+id/search" - android:title="@string/menu_search" - android:showAsAction="always|collapseActionView" - android:icon="@drawable/ic_menu_search" - android:actionLayout="@layout/mail_actionbar_searchview" /> - - <item android:id="@+id/refresh" - android:title="@string/refresh" - android:showAsAction="never" - android:alphabeticShortcut="@string/trigger_refresh_char" /> - - <!-- Available only in the trash folder, when the account supports emptying it --> - <item android:id="@+id/empty_trash" - android:title="@string/empty_trash" - android:showAsAction="never" /> - - <!-- Available only in the spam folder, when the account supports emptying it --> - <item android:id="@+id/empty_spam" - android:title="@string/empty_spam" - android:showAsAction="never" /> - - <!-- Available for Folders with SUPPORTS_SETTINGS capability --> - <item android:id="@+id/folder_options" - android:title="@string/menu_folder_options" - android:showAsAction="never" /> - - <item android:id="@+id/settings" - android:title="@string/menu_settings" - android:showAsAction="never" /> - - <!-- Available if the account specifies a help url --> - <item android:id="@+id/help_info_menu_item" - android:title="@string/help_and_feedback" - android:showAsAction="never" /> -</menu> diff --git a/res/menu/conversation_actions.xml b/res/menu/conversation_actions.xml index 94d5479b6..4f4871edd 100644 --- a/res/menu/conversation_actions.xml +++ b/res/menu/conversation_actions.xml @@ -18,21 +18,18 @@ <!-- Action bar items for the tablet when viewing a conversation --> <menu xmlns:android="http://schemas.android.com/apk/res/android"> - <!-- Depends on AccountCapabilities.ARCHIVE and - FolderCapabilities.ARCHIVE. Only one of archive or - remove_folder are shown, and they have the same drawable, so - show the first one. - --> + <item android:id="@+id/archive" android:title="@string/archive" - android:showAsAction="never" + android:showAsAction="always" android:icon="@drawable/ic_archive_wht_24dp" android:alphabeticShortcut="@string/trigger_y_char" /> + <item android:id="@+id/remove_folder" android:title="@string/remove_folder" - android:showAsAction="never" + android:showAsAction="always" android:icon="@drawable/ic_remove_label" android:alphabeticShortcut="@string/trigger_y_char" android:visible="false" /> @@ -41,13 +38,13 @@ <item android:id="@+id/delete" android:title="@string/delete" - android:showAsAction="never" + android:showAsAction="always" android:icon="@drawable/ic_delete_wht_24dp" /> <!-- Depends on the user viewing a draft label, and the above menu item not being shown --> <item android:id="@+id/discard_drafts" android:title="@string/discard_drafts" - android:showAsAction="never" + android:showAsAction="always" android:icon="@drawable/ic_delete_wht_24dp" android:visible="false" /> @@ -55,7 +52,7 @@ <item android:id="@+id/inside_conversation_unread" android:title="@string/mark_unread" - android:showAsAction="never" + android:showAsAction="always" android:icon="@drawable/ic_markunread_wht_24dp" /> <!-- Always available --> @@ -116,12 +113,4 @@ android:title="@string/report_phishing" android:visible="false" /> - <!-- Always available --> - <item android:id="@+id/settings" - android:title="@string/menu_settings" /> - - <!-- Always available --> - <item - android:id="@+id/help_info_menu_item" - android:title="@string/help_and_feedback" /> </menu> diff --git a/res/menu/conversation_list_menu.xml b/res/menu/conversation_list_menu.xml index e4c570bdf..5ffb84ff2 100644 --- a/res/menu/conversation_list_menu.xml +++ b/res/menu/conversation_list_menu.xml @@ -17,12 +17,6 @@ --> <menu xmlns:android="http://schemas.android.com/apk/res/android"> - <!-- This invisible menu item is used to map CTRL-C to the compose action --> - <item - android:id="@+id/compose" - android:title="@string/menu_compose" - android:visible="false" - android:alphabeticShortcut="@string/trigger_compose_char" /> <!-- Available only for accounts with SERVER_SEARCH and in a folder that supports FOLDER_SERVER_SEARCH --> @@ -43,27 +37,16 @@ android:showAsAction="never" android:icon="@drawable/ic_delete_wht_24dp" /> - <!-- Always available --> + <!-- These invisible menu item are used to enable keyboard shortcuts --> + <item + android:id="@+id/compose" + android:title="@string/menu_compose" + android:visible="false" + android:alphabeticShortcut="@string/trigger_compose_char" /> + <item android:id="@+id/refresh" android:title="@string/refresh" - android:showAsAction="never" - android:icon="@drawable/ic_menu_refresh_holo_light" + android:visible="false" android:alphabeticShortcut="@string/trigger_refresh_char" /> - <!-- Available for Folders with SUPPORTS_SETTINGS capability --> - <item android:id="@+id/folder_options" - android:title="@string/menu_folder_options" - android:showAsAction="never" /> - - <item android:id="@+id/settings" - android:title="@string/menu_settings" - android:showAsAction="never" /> - - <!-- Available if the account specifies a help url --> - <item - android:id="@+id/help_info_menu_item" - android:icon="@android:drawable/ic_menu_help" - android:showAsAction="never" - android:title="@string/help_and_feedback" /> - </menu> diff --git a/res/menu/conversation_list_search_results_actions.xml b/res/menu/conversation_list_search_results_actions.xml index bbc64c487..2935d6387 100644 --- a/res/menu/conversation_list_search_results_actions.xml +++ b/res/menu/conversation_list_search_results_actions.xml @@ -18,6 +18,12 @@ <menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:id="@+id/search" + android:title="@string/menu_search" + android:showAsAction="ifRoom|collapseActionView" + android:icon="@drawable/ic_menu_search" + android:actionLayout="@layout/mail_actionbar_searchview" /> + <!-- This invisible menu item is used to map CTRL-C to the compose action --> <item android:id="@+id/compose" @@ -25,26 +31,9 @@ android:visible="false" android:alphabeticShortcut="@string/trigger_compose_char" /> - <item android:id="@+id/search" - android:title="@string/menu_search" - android:showAsAction="ifRoom|collapseActionView" - android:icon="@drawable/ic_menu_search" - android:actionLayout="@layout/mail_actionbar_searchview" /> - <item android:id="@+id/refresh" android:title="@string/refresh" - android:showAsAction="never" - android:icon="@drawable/ic_menu_refresh_holo_light" + android:visible="false" android:alphabeticShortcut="@string/trigger_refresh_char" /> - <item android:id="@+id/settings" - android:title="@string/menu_settings" - android:showAsAction="never" /> - - <item - android:id="@+id/help_info_menu_item" - android:icon="@android:drawable/ic_menu_help" - android:showAsAction="never" - android:title="@string/help_and_feedback" /> - </menu> diff --git a/res/menu/conversation_list_selection_actions_menu.xml b/res/menu/conversation_list_selection_actions_menu.xml index f6766a459..5e0bd55d1 100644 --- a/res/menu/conversation_list_selection_actions_menu.xml +++ b/res/menu/conversation_list_selection_actions_menu.xml @@ -19,22 +19,17 @@ <!-- Menu for the action mode invoked when items are selected in the conversation list. Order is important! --> <menu xmlns:android="http://schemas.android.com/apk/res/android"> - <!-- Depends on AccountCapabilities.ARCHIVE and - FolderCapabilities.ARCHIVE. Only one of archive or - remove_folder are shown, and they have the same drawable, so - show the first one. - --> <item android:id="@+id/archive" android:title="@string/archive" - android:showAsAction="never" + android:showAsAction="always" android:icon="@drawable/ic_archive_wht_24dp" android:alphabeticShortcut="@string/trigger_y_char"/> <item android:id="@+id/remove_folder" android:title="@string/remove_folder" - android:showAsAction="never" + android:showAsAction="always" android:icon="@drawable/ic_remove_label" android:alphabeticShortcut="@string/trigger_y_char" android:visible="false" /> @@ -43,13 +38,13 @@ <item android:id="@+id/delete" android:title="@string/delete" - android:showAsAction="never" + android:showAsAction="always" android:icon="@drawable/ic_delete_wht_24dp"/> <!-- Depends on the user viewing a draft label, and the above menu item not being shown --> <item android:id="@+id/discard_drafts" android:title="@string/discard_drafts" - android:showAsAction="never" + android:showAsAction="always" android:icon="@drawable/ic_delete_wht_24dp" android:visible="false" /> @@ -57,13 +52,13 @@ <item android:id="@+id/read" android:title="@string/mark_read" - android:showAsAction="never" + android:showAsAction="always" android:icon="@drawable/ic_menu_mark_read_holo_light" /> <item android:id="@+id/unread" android:title="@string/mark_unread" - android:showAsAction="never" + android:showAsAction="always" android:icon="@drawable/ic_markunread_wht_24dp" /> <item diff --git a/res/menu/wait_mode_actions.xml b/res/menu/wait_mode_actions.xml index fc6f33f44..65314abe3 100644 --- a/res/menu/wait_mode_actions.xml +++ b/res/menu/wait_mode_actions.xml @@ -17,14 +17,10 @@ --> <menu xmlns:android="http://schemas.android.com/apk/res/android"> + <!-- Not visible so that it doesn't show but will still work for keyboard shortcuts --> <item android:id="@+id/refresh" android:title="@string/refresh" - android:icon="@drawable/ic_menu_refresh_holo_light" + android:visible="false" android:alphabeticShortcut="@string/trigger_refresh_char" /> - <item - android:id="@+id/help_info_menu_item" - android:icon="@android:drawable/ic_menu_help" - android:title="@string/help_and_feedback" /> - </menu> diff --git a/res/values-sw720dp/constants.xml b/res/values-sw720dp/constants.xml index 9ce62bd6b..1f0297b3f 100644 --- a/res/values-sw720dp/constants.xml +++ b/res/values-sw720dp/constants.xml @@ -18,9 +18,6 @@ <resources> <bool name="use_expansive_tablet_ui">true</bool> - <!-- Indicates whether the help and feedback items should be displayed in the drawer. --> - <bool name="show_help_and_feedback_in_drawer">false</bool> - <!-- Search results in portrait mode on 10" tablets should still show wide conversation list items. Note: this this value should be set with the same qualifiers where diff --git a/res/values-w360dp/constants.xml b/res/values-w360dp/constants.xml deleted file mode 100644 index b37acca5b..000000000 --- a/res/values-w360dp/constants.xml +++ /dev/null @@ -1,8 +0,0 @@ -<!-- Copyright 2013, Google Inc. --> -<resources> - <!-- Number of menu items to display in the ActionBar --> - <integer name="actionbar_max_items">3</integer> - - <!-- Number of menu items to hide from the ActionBar by subtracting from actionbar_max_items in non-cab mode --> - <integer name="actionbar_hidden_non_cab_items_no_physical_button">0</integer> -</resources> diff --git a/res/values-w592dp/constants.xml b/res/values-w592dp/constants.xml deleted file mode 100644 index e2b5ceca0..000000000 --- a/res/values-w592dp/constants.xml +++ /dev/null @@ -1,5 +0,0 @@ -<!-- Copyright 2013, Google Inc. --> -<resources> - <!-- Number of menu items to display in the ActionBar --> - <integer name="actionbar_max_items">4</integer> -</resources> diff --git a/res/values/constants.xml b/res/values/constants.xml index 0eb75de1f..ded9b00c5 100644 --- a/res/values/constants.xml +++ b/res/values/constants.xml @@ -99,12 +99,6 @@ <integer name="swipe_senders_length">25</integer> - <!-- Number of menu items to display in the ActionBar --> - <integer name="actionbar_max_items">3</integer> - - <!-- Number of menu items to hide from the ActionBar by subtracting from actionbar_max_items in non-cab mode --> - <integer name="actionbar_hidden_non_cab_items_no_physical_button">1</integer> - <!-- Duration of the animations for entering/exiting CAB mode --> <integer name="conv_item_view_cab_anim_duration">250</integer> @@ -119,9 +113,6 @@ <!-- Number of characters allowed for a vacation responder body. --> <integer name="vacation_responder_body_length">1024000</integer> - <!-- Indicates whether the help and feedback items should be displayed in the drawer. --> - <bool name="show_help_and_feedback_in_drawer">true</bool> - <!-- Indicates whether help URLs should be opened by a system browser outside the application or with a webview inside the application --> <bool name="openHelpWithBrowser">true</bool> </resources> diff --git a/res/values/ids.xml b/res/values/ids.xml index 0039aab60..7b7b23598 100644 --- a/res/values/ids.xml +++ b/res/values/ids.xml @@ -19,7 +19,6 @@ <item type="id" name="folder"/> <item type="id" name="personal_level"/> <item type="id" name="reply_state" /> - <item type="id" name="manage_folders_item"/> <item type="id" name="contact_image" /> <item type="id" name="move_folder" /> </resources> diff --git a/res/values/strings.xml b/res/values/strings.xml index 8d822747f..c3671dac7 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -164,8 +164,6 @@ </string> <!-- Menu item text to show the original version of an email conversation, before message manipulation [CHAR LIMIT=25] --> <string name="menu_show_original">Revert auto-sizing</string> - <!-- Menu item: options for this folder. When source text cannot be translated within the char limit, please translate the shorter "Folder options" instead. [CHAR LIMIT = 30] --> - <string name="menu_folder_options">Folder settings</string> <!-- Menu item: launch the Settings activity --> <string name="menu_settings">Settings</string> <!-- Menu item: search through the Gmail inbox --> diff --git a/src/com/android/mail/analytics/AnalyticsUtils.java b/src/com/android/mail/analytics/AnalyticsUtils.java index 7894feba7..6734d6ea6 100644 --- a/src/com/android/mail/analytics/AnalyticsUtils.java +++ b/src/com/android/mail/analytics/AnalyticsUtils.java @@ -65,14 +65,10 @@ public class AnalyticsUtils { s = "refresh"; } else if (id == R.id.settings) { s = "settings"; - } else if (id == R.id.folder_options) { - s = "folder_options"; } else if (id == R.id.help_info_menu_item) { s = "help"; } else if (id == R.id.feedback_menu_item) { s = "feedback"; - } else if (id == R.id.manage_folders_item) { - s = "manage_folders"; } else if (id == R.id.move_to) { s = "move_to"; } else if (id == R.id.change_folders) { diff --git a/src/com/android/mail/browse/ConversationViewAdapter.java b/src/com/android/mail/browse/ConversationViewAdapter.java index bc953de1d..f562dd554 100644 --- a/src/com/android/mail/browse/ConversationViewAdapter.java +++ b/src/com/android/mail/browse/ConversationViewAdapter.java @@ -86,7 +86,7 @@ public class ConversationViewAdapter extends BaseAdapter { private final List<ConversationOverlayItem> mItems; private final VeiledAddressMatcher mMatcher; - @Retention(RetentionPolicy.CLASS) + @Retention(RetentionPolicy.SOURCE) @IntDef({ VIEW_TYPE_CONVERSATION_HEADER, VIEW_TYPE_CONVERSATION_FOOTER, diff --git a/src/com/android/mail/browse/SelectedConversationsActionMenu.java b/src/com/android/mail/browse/SelectedConversationsActionMenu.java index 9c3f6e1fa..5fbd34089 100644 --- a/src/com/android/mail/browse/SelectedConversationsActionMenu.java +++ b/src/com/android/mail/browse/SelectedConversationsActionMenu.java @@ -47,7 +47,6 @@ import com.android.mail.ui.ConversationUpdater; import com.android.mail.ui.DestructiveAction; import com.android.mail.ui.FolderOperation; import com.android.mail.ui.FolderSelectionDialog; -import com.android.mail.ui.MailActionBarView; import com.android.mail.utils.LogTag; import com.android.mail.utils.LogUtils; import com.android.mail.utils.Utils; @@ -414,14 +413,10 @@ public class SelectedConversationsActionMenu implements ActionMode.Callback, mFolder.name)); } final MenuItem archive = menu.findItem(R.id.archive); - final boolean accountSupportsArchive = - mAccount.supportsCapability(UIProvider.AccountCapabilities.ARCHIVE); - boolean showArchive = accountSupportsArchive - && mFolder.supportsCapability(FolderCapabilities.ARCHIVE); - if (archive == null) { - showArchive = false; - } else { - archive.setVisible(showArchive); + if (archive != null) { + archive.setVisible( + mAccount.supportsCapability(UIProvider.AccountCapabilities.ARCHIVE) && + mFolder.supportsCapability(FolderCapabilities.ARCHIVE)); } final MenuItem spam = menu.findItem(R.id.report_spam); spam.setVisible(!showMarkNotSpam @@ -461,9 +456,6 @@ public class SelectedConversationsActionMenu implements ActionMode.Callback, discardDrafts.setVisible(showDiscardDrafts); } - MailActionBarView.reorderMenu(mContext, mAccount, menu, - mContext.getResources().getInteger(R.integer.actionbar_max_items)); - return true; } diff --git a/src/com/android/mail/preferences/FolderPreferences.java b/src/com/android/mail/preferences/FolderPreferences.java index 9a3be1694..fe007d609 100644 --- a/src/com/android/mail/preferences/FolderPreferences.java +++ b/src/com/android/mail/preferences/FolderPreferences.java @@ -15,9 +15,6 @@ */ package com.android.mail.preferences; -import com.google.android.mail.common.base.Strings; -import com.google.common.collect.ImmutableSet; - import android.content.ContentUris; import android.content.Context; import android.database.Cursor; @@ -30,6 +27,8 @@ import com.android.mail.providers.Folder; import com.android.mail.providers.UIProvider.AccountCapabilities; import com.android.mail.providers.UIProvider.FolderCapabilities; import com.android.mail.utils.NotificationActionUtils.NotificationActionType; +import com.google.android.mail.common.base.Strings; +import com.google.common.collect.ImmutableSet; import java.util.LinkedHashSet; import java.util.Set; diff --git a/src/com/android/mail/preferences/MailPrefs.java b/src/com/android/mail/preferences/MailPrefs.java index fa0121682..cb4eb01ae 100644 --- a/src/com/android/mail/preferences/MailPrefs.java +++ b/src/com/android/mail/preferences/MailPrefs.java @@ -19,6 +19,7 @@ package com.android.mail.preferences; import android.content.Context; import android.content.SharedPreferences; +import android.support.annotation.StringDef; import com.android.mail.R; import com.android.mail.providers.Account; @@ -29,6 +30,8 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.util.Collections; import java.util.List; import java.util.Set; @@ -137,6 +140,13 @@ public final class MailPrefs extends VersionedPrefs { public static final String DISABLED = "disabled"; } + @Retention(RetentionPolicy.SOURCE) + @StringDef({ + RemovalActions.ARCHIVE, + RemovalActions.ARCHIVE_AND_DELETE, + RemovalActions.DELETE + }) + public @interface RemovalActionTypes {} public static final class RemovalActions { public static final String ARCHIVE = "archive"; public static final String DELETE = "delete"; @@ -241,7 +251,7 @@ public final class MailPrefs extends VersionedPrefs { * Sets the removal action preference. * @param removalAction The preferred {@link RemovalActions}. */ - public void setRemovalAction(final String removalAction) { + public void setRemovalAction(final @RemovalActionTypes String removalAction) { getEditor().putString(PreferenceKeys.REMOVAL_ACTION, removalAction).apply(); notifyBackupPreferenceChanged(); } diff --git a/src/com/android/mail/ui/AbstractActivityController.java b/src/com/android/mail/ui/AbstractActivityController.java index 8ed9010f2..75eafbacd 100644 --- a/src/com/android/mail/ui/AbstractActivityController.java +++ b/src/com/android/mail/ui/AbstractActivityController.java @@ -1282,7 +1282,7 @@ public abstract class AbstractActivityController implements ActivityController, mFloatingComposeButton = mActivity.findViewById(R.id.compose_button); mFloatingComposeButton.setOnClickListener(this); - mDrawerToggle = new ActionBarDrawerToggle(mActivity, mDrawerContainer, + mDrawerToggle = new ActionBarDrawerToggle(mActivity, mDrawerContainer, false, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close); mDrawerContainer.setDrawerListener(mDrawerListener); mDrawerContainer.setDrawerShadow( @@ -1538,12 +1538,8 @@ public abstract class AbstractActivityController implements ActivityController, requestFolderRefresh(); } else if (id == R.id.settings) { Utils.showSettings(mActivity.getActivityContext(), mAccount); - } else if (id == R.id.folder_options) { - Utils.showFolderSettings(mActivity.getActivityContext(), mAccount, mFolder); } else if (id == R.id.help_info_menu_item) { mActivity.showHelp(mAccount, mViewMode.getMode()); - } else if (id == R.id.manage_folders_item) { - Utils.showManageFolder(mActivity.getActivityContext(), mAccount); } else if (id == R.id.move_to || id == R.id.change_folders) { final FolderSelectionDialog dialog = FolderSelectionDialog.getInstance(mAccount, Conversation.listOf(mCurrentConversation), isBatch, mFolder, diff --git a/src/com/android/mail/ui/FolderListFragment.java b/src/com/android/mail/ui/FolderListFragment.java index 2005719a2..94956fa7a 100644 --- a/src/com/android/mail/ui/FolderListFragment.java +++ b/src/com/android/mail/ui/FolderListFragment.java @@ -198,8 +198,6 @@ public class FolderListFragment extends ListFragment implements private final DrawerStateListener mDrawerListener = new DrawerStateListener(); - private boolean mShowFooter; - private BitmapCache mImagesCache; private ContactResolver mContactResolver; @@ -438,11 +436,6 @@ public class FolderListFragment extends ListFragment implements mInboxPresent = true; } - // only show the footer on drawered layouts, and definitely not in the folder selection - // activity - mShowFooter = !mIsFolderSelectionActivity - && getResources().getBoolean(R.bool.show_help_and_feedback_in_drawer); - return rootView; } @@ -1235,7 +1228,7 @@ public class FolderListFragment extends ListFragment implements private void update() { // if the parent activity shows a drawer, these items should participate in that drawer // (if it shows a *pane* they should *not* participate in that pane) - if (!mShowFooter) { + if (mIsFolderSelectionActivity) { return; } diff --git a/src/com/android/mail/ui/MailActionBarView.java b/src/com/android/mail/ui/MailActionBarView.java index a648f73ef..fcd64319f 100644 --- a/src/com/android/mail/ui/MailActionBarView.java +++ b/src/com/android/mail/ui/MailActionBarView.java @@ -36,7 +36,6 @@ import android.util.AttributeSet; import android.view.Menu; import android.view.MenuItem; import android.view.View; -import android.view.ViewConfiguration; import android.widget.LinearLayout; import android.widget.SearchView; import android.widget.SearchView.OnQueryTextListener; @@ -45,7 +44,6 @@ import android.widget.TextView; import com.android.mail.ConversationListContext; import com.android.mail.R; -import com.android.mail.preferences.MailPrefs; import com.android.mail.providers.Account; import com.android.mail.providers.AccountObserver; import com.android.mail.providers.Conversation; @@ -89,13 +87,10 @@ public class MailActionBarView extends LinearLayout implements ViewMode.ModeChan private Folder mFolder; private SearchView mSearchWidget; - private MenuItem mSettingsItem; - private MenuItem mHelpItem; - private MenuItem mFolderSettingsItem; private MenuItem mEmptyTrashItem; private MenuItem mEmptySpamItem; private boolean mUseLegacyTitle; - private View mLegacyTitleContainer; + private TextView mLegacyTitle; private TextView mLegacySubTitle; @@ -180,22 +175,22 @@ public class MailActionBarView extends LinearLayout implements ViewMode.ModeChan } private void initializeTitleViews() { - mLegacyTitleContainer = findViewById(R.id.legacy_title_container); - if (mLegacyTitleContainer != null) { + final View legacyTitleContainer = findViewById(R.id.legacy_title_container); + if (legacyTitleContainer != null) { // Determine if this device is running on MR1.1 or later final boolean runningMR11OrLater = actionBarSupportsNewMethods(mActionBar); if (runningMR11OrLater || !mController.isDrawerEnabled()) { // We don't need the legacy view, just hide it - mLegacyTitleContainer.setVisibility(View.GONE); + legacyTitleContainer.setVisibility(View.GONE); mUseLegacyTitle = false; } else { mUseLegacyTitle = true; // We need to show the legacy title/subtitle. Set the click listener - mLegacyTitleContainer.setOnClickListener(this); + legacyTitleContainer.setOnClickListener(this); - mLegacyTitle = (TextView)mLegacyTitleContainer.findViewById(R.id.legacy_title); + mLegacyTitle = (TextView) legacyTitleContainer.findViewById(R.id.legacy_title); mLegacySubTitle = - (TextView)mLegacyTitleContainer.findViewById(R.id.legacy_subtitle); + (TextView) legacyTitleContainer.findViewById(R.id.legacy_subtitle); } } } @@ -223,11 +218,8 @@ public class MailActionBarView extends LinearLayout implements ViewMode.ModeChan } public boolean onCreateOptionsMenu(Menu menu) { - mFolderSettingsItem = menu.findItem(R.id.folder_options); - mHelpItem = menu.findItem(R.id.help_info_menu_item); mEmptyTrashItem = menu.findItem(R.id.empty_trash); mEmptySpamItem = menu.findItem(R.id.empty_spam); - mSettingsItem = menu.findItem(R.id.settings); mSearch = menu.findItem(R.id.search); if (mSearch != null) { @@ -370,10 +362,6 @@ public class MailActionBarView extends LinearLayout implements ViewMode.ModeChan * conditions are properly set to the correct visibility */ public void validateVolatileMenuOptionVisibility() { - if (mFolderSettingsItem != null) { - mFolderSettingsItem.setVisible(mFolder != null - && mFolder.supportsCapability(FolderCapabilities.SUPPORTS_SETTINGS)); - } if (mEmptyTrashItem != null) { mEmptyTrashItem.setVisible(mAccount != null && mFolder != null && mAccount.supportsCapability(AccountCapabilities.EMPTY_TRASH) @@ -407,9 +395,6 @@ public class MailActionBarView extends LinearLayout implements ViewMode.ModeChan } validateVolatileMenuOptionVisibility(); - // Only show help in menu if it's not shown in drawer already, unless there's no drawer. - boolean showHelpAndSettingsInMenu = !mController.isDrawerEnabled(); - switch (getMode()) { case ViewMode.CONVERSATION: case ViewMode.SEARCH_RESULTS_CONVERSATION: @@ -418,17 +403,6 @@ public class MailActionBarView extends LinearLayout implements ViewMode.ModeChan // to show up during the time between the conversation is selected and the fragment // is added. setConversationModeOptions(menu); - // We want to use the user's preferred menu items here - final Resources resources = getResources(); - final int maxItems = resources.getInteger(R.integer.actionbar_max_items); - final int hiddenItems = resources.getInteger( - R.integer.actionbar_hidden_non_cab_items_no_physical_button); - final int totalItems = maxItems - - (ViewConfiguration.get(getContext()).hasPermanentMenuKey() - ? 0 : hiddenItems); - reorderMenu(getContext(), mAccount, menu, totalItems); - // Always enable help/settings in conversation mode. - showHelpAndSettingsInMenu = true; break; case ViewMode.CONVERSATION_LIST: // Show search if the account supports it @@ -438,130 +412,13 @@ public class MailActionBarView extends LinearLayout implements ViewMode.ModeChan // Hide compose and search Utils.setMenuItemVisibility(menu, R.id.compose, false); Utils.setMenuItemVisibility(menu, R.id.search, false); - // No drawer at this moment. - showHelpAndSettingsInMenu = true; break; } - if (mSettingsItem != null) { - mSettingsItem.setVisible(showHelpAndSettingsInMenu); - } - if (mHelpItem != null) { - mHelpItem.setVisible(showHelpAndSettingsInMenu - && mAccount != null - && mAccount.supportsCapability(AccountCapabilities.HELP_CONTENT)); - } - return false; } /** - * Reorders the specified {@link Menu}, taking into account the user's Archive/Delete - * preference. - */ - public static void reorderMenu(final Context context, final Account account, final Menu menu, - final int maxItems) { - final String removalAction = MailPrefs.get(context).getRemovalAction( - account.supportsCapability(AccountCapabilities.ARCHIVE)); - final boolean showArchive = MailPrefs.RemovalActions.ARCHIVE.equals(removalAction) || - MailPrefs.RemovalActions.ARCHIVE_AND_DELETE.equals(removalAction); - final boolean showDelete = MailPrefs.RemovalActions.DELETE.equals(removalAction) || - MailPrefs.RemovalActions.ARCHIVE_AND_DELETE.equals(removalAction); - - // Do a first pass to extract necessary information on what is safe to display - boolean archiveVisibleEnabled = false; - boolean deleteVisibleEnabled = false; - for (int i = 0; i < menu.size(); i++) { - final MenuItem menuItem = menu.getItem(i); - final int itemId = menuItem.getItemId(); - final boolean visible = menuItem.isVisible(); - final boolean enabled = menuItem.isEnabled(); - - if (itemId == R.id.archive || itemId == R.id.remove_folder) { - archiveVisibleEnabled |= (visible & enabled); - } else if (itemId == R.id.delete || itemId == R.id.discard_drafts) { - deleteVisibleEnabled |= (visible & enabled); - } - } - - int actionItems = 0; - MenuItem lastActionCandidate = null; - int totalVisibleItems = 0; - for (int i = 0; i < menu.size(); i++) { - final MenuItem menuItem = menu.getItem(i); - final int itemId = menuItem.getItemId(); - - // We only want to promote it if it's visible and has an icon - if (menuItem.isVisible() && menuItem.getIcon() != null) { - if (itemId == R.id.archive || itemId == R.id.remove_folder) { - /* - * If this is disabled, and we want to show both archive and delete, we will - * hide archive (rather than showing it disabled), and take up one of our - * spaces. If we only want to show archive, we'll hide it, but not take up - * a space. - */ - if (!menuItem.isEnabled() && showArchive) { - menuItem.setVisible(false); - - if (showDelete) { - actionItems++; - } - } else { - /* - * We show this if the following are all true: - * 1. The user wants to display archive, or delete is not visible - * 2. We have room for it - */ - if ((showArchive || !deleteVisibleEnabled) && actionItems < maxItems) { - menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); - actionItems++; - } - } - } else if (itemId == R.id.delete || itemId == R.id.discard_drafts) { - /* - * We show this if the following are all true: - * 1. The user wants to display delete, or archive is not visible - * 2. We have room for it - */ - if ((showDelete || !archiveVisibleEnabled) && actionItems < maxItems) { - menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); - actionItems++; - } - } else if (itemId == R.id.change_folders) { - final boolean showChangeFolder = account - .supportsCapability(AccountCapabilities.MULTIPLE_FOLDERS_PER_CONV); - menuItem.setVisible(showChangeFolder); - - if (showChangeFolder && actionItems < maxItems) { - menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); - actionItems++; - } - } else if (itemId == R.id.search) { - menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS - | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); - actionItems++; - } else { - if (actionItems < maxItems) { - menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); - actionItems++; - } else { - lastActionCandidate = menuItem; - } - } - if (menuItem.isVisible()) { - totalVisibleItems++; - } - } - } - if ((totalVisibleItems - actionItems == 1) && lastActionCandidate != null) { - // We have exactly one item that we haven't promoted to display in the actionBar. - // There's no reason to put it in the overflow, because it will fit in the actionBar - // if we just don't display the overflow. - lastActionCandidate.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); - } - } - - /** * Put the ActionBar in List navigation mode. */ private void showNavList() { @@ -869,15 +726,13 @@ public class MailActionBarView extends LinearLayout implements ViewMode.ModeChan } private static boolean actionBarSupportsNewMethods(ActionBar bar) { - // TODO(pwestbro) switch this to - // (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) when we switch to the - // latest SDK - if (Build.VERSION.SDK_INT > 17) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { return true; } if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN) { return false; } + // API 17 - why is this special? boolean supportsNewApi = false; try { if (bar != null) { @@ -896,10 +751,6 @@ public class MailActionBarView extends LinearLayout implements ViewMode.ModeChan } } - public ViewMode getViewModeController() { - return mViewModeController; - } - public void setViewModeController(ViewMode viewModeController) { mViewModeController = viewModeController; mViewModeController.addListener(this); diff --git a/src/com/android/mail/ui/SearchMailActionBarView.java b/src/com/android/mail/ui/SearchMailActionBarView.java index 08319babb..cf1ee0ab6 100644 --- a/src/com/android/mail/ui/SearchMailActionBarView.java +++ b/src/com/android/mail/ui/SearchMailActionBarView.java @@ -26,7 +26,6 @@ import android.widget.SearchView; import com.android.mail.ConversationListContext; import com.android.mail.utils.Utils; -import com.android.mail.R; /** * This class is used to show a custom actionbar for the search activity. This doesn't have any @@ -49,7 +48,6 @@ public class SearchMailActionBarView extends MailActionBarView { @Override public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); - Utils.setMenuItemVisibility(menu, R.id.manage_folders_item, false); switch (getMode()) { case ViewMode.SEARCH_RESULTS_LIST: setSearchQueryTerm(); diff --git a/src/com/android/mail/ui/TwoPaneController.java b/src/com/android/mail/ui/TwoPaneController.java index 656793cac..4139f0427 100644 --- a/src/com/android/mail/ui/TwoPaneController.java +++ b/src/com/android/mail/ui/TwoPaneController.java @@ -97,8 +97,6 @@ public final class TwoPaneController extends AbstractActivityController { if (action == R.id.settings || action == R.id.compose || action == R.id.help_info_menu_item - || action == R.id.manage_folders_item - || action == R.id.folder_options || action == R.id.feedback_menu_item) { return true; } diff --git a/src/com/android/mail/utils/Utils.java b/src/com/android/mail/utils/Utils.java index 4767fee9f..068b4db0e 100644 --- a/src/com/android/mail/utils/Utils.java +++ b/src/com/android/mail/utils/Utils.java @@ -620,44 +620,6 @@ public class Utils { } /** - * Show the settings screen for the supplied account. - */ - public static void showFolderSettings(Context context, Account account, Folder folder) { - if (account == null || folder == null) { - LogUtils.e(LOG_TAG, "Invalid attempt to show folder settings. account: %s folder: %s", - account, folder); - return; - } - final Intent settingsIntent = new Intent(Intent.ACTION_EDIT, - appendVersionQueryParameter(context, account.settingsIntentUri)); - - settingsIntent.setPackage(context.getPackageName()); - settingsIntent.putExtra(EditSettingsExtras.EXTRA_ACCOUNT, account); - settingsIntent.putExtra(EditSettingsExtras.EXTRA_FOLDER, folder); - settingsIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - - context.startActivity(settingsIntent); - } - - /** - * Show the settings screen for managing all folders. - */ - public static void showManageFolder(Context context, Account account) { - if (account == null) { - LogUtils.e(LOG_TAG, "Invalid attempt to the manage folders screen with null account"); - return; - } - final Intent settingsIntent = new Intent(Intent.ACTION_EDIT, account.settingsIntentUri); - - settingsIntent.setPackage(context.getPackageName()); - settingsIntent.putExtra(EditSettingsExtras.EXTRA_ACCOUNT, account); - settingsIntent.putExtra(EditSettingsExtras.EXTRA_MANAGE_FOLDERS, true); - settingsIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - - context.startActivity(settingsIntent); - } - - /** * Show the feedback screen for the supplied account. */ public static void sendFeedback(Activity activity, Account account, boolean reportingProblem) { |