summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Android.mk8
-rw-r--r--AndroidManifest.xml2
-rw-r--r--res/layout-v21/one_pane_activity.xml62
-rw-r--r--res/layout/mail_actionbar_searchview.xml2
-rw-r--r--res/layout/one_pane_activity.xml35
-rw-r--r--res/menu-sw600dp-land/conversation_actions.xml42
-rw-r--r--res/menu-sw600dp-land/conversation_list_search_results_actions.xml19
-rw-r--r--res/menu/compose_menu.xml20
-rw-r--r--res/menu/conversation_actions.xml22
-rw-r--r--res/menu/conversation_list_menu.xml21
-rw-r--r--res/menu/conversation_list_search_results_actions.xml7
-rw-r--r--res/menu/conversation_list_selection_actions_menu.xml36
-rw-r--r--res/values-land-v21/styles.xml23
-rw-r--r--res/values-land/styles.xml4
-rw-r--r--res/values-sw600dp-land/dimen.xml1
-rw-r--r--res/values-sw600dp-v21/styles.xml29
-rw-r--r--res/values-sw600dp/dimen.xml1
-rw-r--r--res/values-sw600dp/styles.xml15
-rw-r--r--res/values-sw720dp-land/dimen.xml20
-rw-r--r--res/values-v21/styles.xml58
-rw-r--r--res/values/dimen.xml1
-rw-r--r--res/values/styles.xml76
-rw-r--r--src/com/android/mail/browse/SelectedConversationsActionMenu.java8
-rw-r--r--src/com/android/mail/compose/ComposeActivity.java15
-rw-r--r--src/com/android/mail/ui/AbstractActivityController.java16
-rw-r--r--src/com/android/mail/ui/AbstractConversationViewFragment.java2
-rw-r--r--src/com/android/mail/ui/AbstractMailActivity.java4
-rw-r--r--src/com/android/mail/ui/ActionBarController.java29
-rw-r--r--src/com/android/mail/ui/FolderSelectionActivity.java9
-rw-r--r--src/com/android/mail/ui/MailActivity.java20
-rw-r--r--src/com/android/mail/ui/RestrictedActivity.java30
-rw-r--r--src/com/android/mail/ui/SearchActionBarController.java9
-rw-r--r--src/com/android/mail/ui/TwoPaneController.java4
33 files changed, 232 insertions, 418 deletions
diff --git a/Android.mk b/Android.mk
index 4775d688b..ef3693a5c 100644
--- a/Android.mk
+++ b/Android.mk
@@ -17,12 +17,13 @@ LOCAL_PATH:= $(call my-dir)
# Include res dir from chips
chips_dir := ../../../frameworks/opt/chips/res
-#Include res dir from photoviewer
+#Include res dir from libraries
+appcompat_dir := ../../../prebuilts/sdk/current/support/v7/appcompat/res
photo_dir := ../../../frameworks/opt/photoviewer/res ../../../frameworks/opt/photoviewer/activity/res
gridlayout_dir := ../../../prebuilts/sdk/current/support/v7/gridlayout/res
bitmap_dir := ../../../frameworks/opt/bitmap/res
datetimepicker_dir := ../../../frameworks/opt/datetimepicker/res
-res_dirs := res $(chips_dir) $(photo_dir) $(gridlayout_dir) $(bitmap_dir) $(datetimepicker_dir)
+res_dirs := res $(appcompat_dir) $(chips_dir) $(photo_dir) $(gridlayout_dir) $(bitmap_dir) $(datetimepicker_dir)
##################################################
# Build APK
@@ -36,6 +37,7 @@ LOCAL_STATIC_JAVA_LIBRARIES += libphotoviewer
LOCAL_STATIC_JAVA_LIBRARIES += guava
LOCAL_STATIC_JAVA_LIBRARIES += android-common
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
+LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-appcompat
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-gridlayout
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v13
LOCAL_STATIC_JAVA_LIBRARIES += android-opt-bitmap
@@ -48,7 +50,7 @@ LOCAL_SRC_FILES := $(call all-java-files-under, $(src_dirs)) \
$(call all-logtags-files-under, $(src_dirs))
LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dirs))
LOCAL_AAPT_FLAGS := --auto-add-overlay
-LOCAL_AAPT_FLAGS += --extra-packages com.android.ex.chips:com.android.ex.photo:android.support.v7.gridlayout:com.android.bitmap:com.android.datetimepicker
+LOCAL_AAPT_FLAGS += --extra-packages com.android.ex.chips:com.android.ex.photo:android.support.v7.appcompat:android.support.v7.gridlayout:com.android.bitmap:com.android.datetimepicker
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index f2b297620..a8dd8d764 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -43,7 +43,7 @@
android:label="@string/app_name"
android:name=".ui.MailActivity"
android:launchMode="singleTop"
- android:theme="@style/PlainUnifiedEmailTheme" >
+ android:theme="@style/MailActivityTheme" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
diff --git a/res/layout-v21/one_pane_activity.xml b/res/layout-v21/one_pane_activity.xml
deleted file mode 100644
index 14c931f18..000000000
--- a/res/layout-v21/one_pane_activity.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2014 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.
--->
-
-<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/drawer_container"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <!-- DrawerLayout current only supports one content view (b/8752191) -->
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
-
- <Toolbar
- android:id="@+id/action_bar"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- style="@style/ActionBarStyle" />
-
- <FrameLayout
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <FrameLayout
- android:id="@+id/content_pane"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
-
- <include layout="@layout/conversation_pager" />
-
- <include layout="@layout/floating_action_bar" />
-
- <com.android.mail.ui.ActionableToastBar
- android:id="@+id/toast_bar"
- style="@style/ToastBarStyle" />
-
- </FrameLayout>
-
- </LinearLayout>
-
- <!--A drawer for phones: a pull-out that gives the list of folders. -->
- <include layout="@layout/drawer_fragment"
- android:layout_width="@dimen/drawer_width"
- android:layout_height="match_parent"
- android:layout_gravity="start" />
-
-</android.support.v4.widget.DrawerLayout>
diff --git a/res/layout/mail_actionbar_searchview.xml b/res/layout/mail_actionbar_searchview.xml
index 572adab60..730f1708a 100644
--- a/res/layout/mail_actionbar_searchview.xml
+++ b/res/layout/mail_actionbar_searchview.xml
@@ -16,7 +16,7 @@
limitations under the License.
-->
-<android.widget.SearchView
+<android.support.v7.widget.SearchView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/search_layout"
android:gravity="center_vertical"
diff --git a/res/layout/one_pane_activity.xml b/res/layout/one_pane_activity.xml
index 9453feaef..4726508d0 100644
--- a/res/layout/one_pane_activity.xml
+++ b/res/layout/one_pane_activity.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- Copyright (C) 2012 The Android Open Source Project
+ Copyright (C) 2014 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.
@@ -21,25 +21,38 @@
android:layout_height="match_parent">
<!-- DrawerLayout current only supports one content view (b/8752191) -->
- <FrameLayout
+ <LinearLayout
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <android.support.v7.widget.Toolbar
+ android:id="@+id/mail_toolbar"
+ android:layout_width="match_parent"
+ android:layout_height="?attr/actionBarSize"
+ android:background="?attr/colorPrimary" />
<FrameLayout
- android:id="@+id/content_pane"
android:layout_width="match_parent"
- android:layout_height="match_parent" />
+ android:layout_height="match_parent">
+
+ <FrameLayout
+ android:id="@+id/content_pane"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" />
+
+ <include layout="@layout/conversation_pager" />
- <include layout="@layout/conversation_pager" />
+ <include layout="@layout/floating_actions" />
- <include layout="@layout/floating_actions" />
+ </FrameLayout>
- </FrameLayout>
+ </LinearLayout>
<!--A drawer for phones: a pull-out that gives the list of folders. -->
<include layout="@layout/drawer_fragment"
- android:layout_width="@dimen/drawer_width"
- android:layout_height="match_parent"
- android:layout_gravity="start" />
+ android:layout_width="@dimen/drawer_width"
+ android:layout_height="match_parent"
+ android:layout_gravity="start" />
</android.support.v4.widget.DrawerLayout>
diff --git a/res/menu-sw600dp-land/conversation_actions.xml b/res/menu-sw600dp-land/conversation_actions.xml
index 484d61fb9..c4b49b8d5 100644
--- a/res/menu-sw600dp-land/conversation_actions.xml
+++ b/res/menu-sw600dp-land/conversation_actions.xml
@@ -16,87 +16,91 @@
limitations under the License.
-->
<!-- Action bar items for the tablet when viewing a conversation in landscape mode. -->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/search"
android:title="@string/menu_search"
- android:showAsAction="always|collapseActionView"
+ app:showAsAction="always|collapseActionView"
android:icon="@drawable/ic_menu_search"
- android:actionLayout="@layout/mail_actionbar_searchview" />
+ app:actionLayout="@layout/mail_actionbar_searchview" />
<item
android:id="@+id/archive"
android:title="@string/archive"
- android:showAsAction="always"
+ app: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="always"
+ app:showAsAction="always"
android:icon="@drawable/ic_remove_label_wht_24dp"
android:alphabeticShortcut="@string/trigger_y_char"
android:visible="false" />
+
<!-- Depends on FolderCapabilities.DELETE -->
<item
android:id="@+id/delete"
android:title="@string/delete"
- android:showAsAction="always"
+ app: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="always"
+ app:showAsAction="always"
android:icon="@drawable/ic_delete_wht_24dp"
android:visible="false" />
<!-- Depends on the user viewing a outbox label and the setting supports delete -->
<item
android:id="@+id/discard_outbox"
android:title="@string/discard_failed"
- android:showAsAction="always"
+ app: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="always"
+ app:showAsAction="always"
android:icon="@drawable/ic_markunread_wht_24dp" />
<item
android:id="@+id/move_to"
android:title="@string/menu_move_to"
- android:showAsAction="never"
+ app:showAsAction="never"
android:icon="@drawable/ic_menu_move_to_holo_light" />
<!-- Always available -->
<item
android:id="@+id/change_folders"
android:title="@string/menu_change_folders"
- android:showAsAction="never"
+ app:showAsAction="never"
android:icon="@drawable/ic_change_labels_wht_24dp" />
<item
android:id="@+id/move_to_inbox"
- android:showAsAction="never"
+ app:showAsAction="never"
android:title="@string/menu_move_to_inbox"
android:icon="@drawable/ic_move_to_inbox_wht_24dp" />
<item
android:id="@+id/mark_important"
- android:showAsAction="never"
+ app:showAsAction="never"
android:title="@string/mark_important" />
<item
android:id="@+id/mark_not_important"
android:title="@string/mark_not_important"
- android:showAsAction="never" />
+ app:showAsAction="never" />
<item
android:id="@+id/mute"
android:title="@string/mute"
- android:showAsAction="never" />
+ app:showAsAction="never" />
<item android:id="@+id/print_all"
android:title="@string/print_all"
@@ -105,25 +109,25 @@
<item
android:id="@+id/show_original"
android:title="@string/menu_show_original"
- android:showAsAction="never"/>
+ app:showAsAction="never"/>
<item
android:id="@+id/report_spam"
android:title="@string/report_spam"
- android:showAsAction="never"/>
+ app:showAsAction="never"/>
<!-- Depends on AccountCapabilities.REPORT_SPAM -->
<item
android:id="@+id/mark_not_spam"
android:title="@string/mark_not_spam"
- android:showAsAction="never"
+ app:showAsAction="never"
android:visible="false" />
<!-- Depends on AccountCapabilities.REPORT_PHISHING -->
<item
android:id="@+id/report_phishing"
android:title="@string/report_phishing"
- android:showAsAction="never"
+ app:showAsAction="never"
android:visible="false" />
<!-- These invisible menu items are used to enable keyboard shortcuts -->
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 58f979cb9..08bbb5491 100644
--- a/res/menu-sw600dp-land/conversation_list_search_results_actions.xml
+++ b/res/menu-sw600dp-land/conversation_list_search_results_actions.xml
@@ -15,46 +15,47 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/search"
android:title="@string/menu_search"
- android:showAsAction="always|collapseActionView"
+ app:showAsAction="always|collapseActionView"
android:icon="@drawable/ic_menu_search"
- android:actionLayout="@layout/mail_actionbar_searchview" />
+ app:actionLayout="@layout/mail_actionbar_searchview" />
<item
android:id="@+id/delete"
android:title="@string/delete"
- android:showAsAction="always"
+ app:showAsAction="always"
android:icon="@drawable/ic_delete_wht_24dp" />
<item
android:id="@+id/inside_conversation_unread"
android:title="@string/mark_read"
- android:showAsAction="always"
+ app:showAsAction="always"
android:icon="@drawable/ic_markunread_wht_24dp" />
<item
android:id="@+id/change_folders"
android:title="@string/menu_change_folders"
- android:showAsAction="never"
+ app:showAsAction="never"
android:icon="@drawable/ic_change_labels_wht_24dp" />
<item
android:id="@+id/mark_important"
android:title="@string/mark_important"
- android:showAsAction="never" />
+ app:showAsAction="never" />
<item
android:id="@+id/mark_not_important"
android:title="@string/mark_not_important"
- android:showAsAction="never" />
+ app:showAsAction="never" />
<item
android:id="@+id/report_spam"
android:title="@string/report_spam"
- android:showAsAction="never" />
+ app:showAsAction="never" />
<!-- This invisible menu items are used to enable keyboard shortcuts -->
<item
diff --git a/res/menu/compose_menu.xml b/res/menu/compose_menu.xml
index adfa9999d..693afdcb0 100644
--- a/res/menu/compose_menu.xml
+++ b/res/menu/compose_menu.xml
@@ -15,7 +15,8 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
<!--
Nested menu on action bar allows the user to tap on the menu item to see an overflow
@@ -24,20 +25,20 @@
<item android:id="@+id/add_attachment"
android:icon="@drawable/ic_attach_file_wht_24dp"
android:title="@string/add_file_attachment"
- android:showAsAction="always">
+ app:showAsAction="always">
<menu>
<item android:id="@+id/add_file_attachment"
android:title="@string/add_file_attachment"
- android:showAsAction="never" />
+ app:showAsAction="never" />
<item android:id="@+id/add_photo_attachment"
android:title="@string/add_photo_attachment"
- android:showAsAction="never" />
+ app:showAsAction="never" />
<item android:id="@+id/attach_from_service_stub1"
android:title="@string/attach_from_service_stub1"
- android:showAsAction="never"
+ app:showAsAction="never"
android:visible="false" />
</menu>
@@ -46,23 +47,22 @@
<item android:id="@+id/send"
android:icon="@drawable/ic_send_wht_24dp"
android:title="@string/send"
- android:showAsAction="always" />
+ app:showAsAction="always" />
<item android:id="@+id/save"
android:title="@string/save_draft"
- android:showAsAction="never" />
+ app:showAsAction="never" />
<item android:id="@+id/discard"
android:title="@string/discard"
- android:showAsAction="never" />
+ app:showAsAction="never" />
<item android:id="@+id/settings"
android:title="@string/menu_settings"
- android:showAsAction="never" />
+ app:showAsAction="never" />
<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/menu/conversation_actions.xml b/res/menu/conversation_actions.xml
index 6c23bbda6..28057bfd2 100644
--- a/res/menu/conversation_actions.xml
+++ b/res/menu/conversation_actions.xml
@@ -17,19 +17,20 @@
-->
<!-- Action bar items for the tablet when viewing a conversation -->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/archive"
android:title="@string/archive"
- android:showAsAction="always"
+ app: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="always"
+ app:showAsAction="always"
android:icon="@drawable/ic_remove_label_wht_24dp"
android:alphabeticShortcut="@string/trigger_y_char"
android:visible="false" />
@@ -38,20 +39,21 @@
<item
android:id="@+id/delete"
android:title="@string/delete"
- android:showAsAction="always"
+ app: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="always"
+ app:showAsAction="always"
android:icon="@drawable/ic_delete_wht_24dp"
android:visible="false" />
<!-- Depends on the user viewing a outbox label and the setting supports delete -->
<item
android:id="@+id/discard_outbox"
android:title="@string/discard_failed"
- android:showAsAction="always"
+ app:showAsAction="always"
android:icon="@drawable/ic_delete_wht_24dp"
android:visible="false" />
@@ -59,26 +61,26 @@
<item
android:id="@+id/inside_conversation_unread"
android:title="@string/mark_unread"
- android:showAsAction="always"
+ app:showAsAction="always"
android:icon="@drawable/ic_markunread_wht_24dp" />
<!-- Always available -->
<item
android:id="@+id/move_to"
android:title="@string/menu_move_to"
- android:showAsAction="never"
+ app:showAsAction="never"
android:icon="@drawable/ic_menu_move_to_holo_light" />
<!-- Always available -->
<item
android:id="@+id/change_folders"
android:title="@string/menu_change_folders"
- android:showAsAction="never"
+ app:showAsAction="never"
android:icon="@drawable/ic_change_labels_wht_24dp" />
<item
android:id="@+id/move_to_inbox"
- android:showAsAction="never"
+ app:showAsAction="never"
android:title="@string/menu_move_to_inbox"
android:icon="@drawable/ic_move_to_inbox_wht_24dp"/>
diff --git a/res/menu/conversation_list_menu.xml b/res/menu/conversation_list_menu.xml
index 10e17a348..05568bc0d 100644
--- a/res/menu/conversation_list_menu.xml
+++ b/res/menu/conversation_list_menu.xml
@@ -16,24 +16,27 @@
limitations under the License.
-->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- 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="always|withText" />
+ <item
+ android:id="@+id/empty_trash"
+ android:title="@string/empty_trash"
+ app:showAsAction="always|withText" />
<!-- 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="always|withText" />
+ <item
+ android:id="@+id/empty_spam"
+ android:title="@string/empty_spam"
+ app:showAsAction="always|withText" />
<!-- 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="ifRoom|collapseActionView"
+ app:showAsAction="ifRoom|collapseActionView"
android:icon="@drawable/ic_menu_search"
- android:actionLayout="@layout/mail_actionbar_searchview" />
+ app:actionLayout="@layout/mail_actionbar_searchview" />
<!-- These invisible menu item are used to enable keyboard shortcuts -->
<item
diff --git a/res/menu/conversation_list_search_results_actions.xml b/res/menu/conversation_list_search_results_actions.xml
index 2935d6387..6708c8366 100644
--- a/res/menu/conversation_list_search_results_actions.xml
+++ b/res/menu/conversation_list_search_results_actions.xml
@@ -16,13 +16,14 @@
limitations under the License.
-->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/search"
android:title="@string/menu_search"
- android:showAsAction="ifRoom|collapseActionView"
+ app:showAsAction="ifRoom|collapseActionView"
android:icon="@drawable/ic_menu_search"
- android:actionLayout="@layout/mail_actionbar_searchview" />
+ app:actionLayout="@layout/mail_actionbar_searchview" />
<!-- This invisible menu item is used to map CTRL-C to the compose action -->
<item
diff --git a/res/menu/conversation_list_selection_actions_menu.xml b/res/menu/conversation_list_selection_actions_menu.xml
index 13b578588..a8866ea27 100644
--- a/res/menu/conversation_list_selection_actions_menu.xml
+++ b/res/menu/conversation_list_selection_actions_menu.xml
@@ -18,18 +18,19 @@
<!-- 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">
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/archive"
android:title="@string/archive"
- android:showAsAction="always"
+ app: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="always"
+ app:showAsAction="always"
android:icon="@drawable/ic_remove_label_wht_24dp"
android:alphabeticShortcut="@string/trigger_y_char"
android:visible="false" />
@@ -38,13 +39,14 @@
<item
android:id="@+id/delete"
android:title="@string/delete"
- android:showAsAction="always"
+ app: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="always"
+ app:showAsAction="always"
android:icon="@drawable/ic_delete_wht_24dp"
android:visible="false" />
<!-- Depends on the user viewing a outbox label and the setting supports delete -->
@@ -59,30 +61,30 @@
<item
android:id="@+id/read"
android:title="@string/mark_read"
- android:showAsAction="always"
+ app:showAsAction="always"
android:icon="@drawable/ic_menu_mark_read_holo_light" />
<item
android:id="@+id/unread"
android:title="@string/mark_unread"
- android:showAsAction="always"
+ app:showAsAction="always"
android:icon="@drawable/ic_markunread_wht_24dp" />
<item
android:id="@+id/move_to"
android:title="@string/menu_move_to"
- android:showAsAction="never"
+ app:showAsAction="never"
android:icon="@drawable/ic_menu_move_to_holo_light" />
<item
android:id="@+id/change_folders"
- android:showAsAction="never"
+ app:showAsAction="never"
android:title="@string/menu_change_folders"
android:icon="@drawable/ic_change_labels_wht_24dp" />
<item
android:id="@+id/move_to_inbox"
- android:showAsAction="never"
+ app:showAsAction="never"
android:title="@string/menu_move_to_inbox"
android:icon="@drawable/ic_move_to_inbox_wht_24dp" />
@@ -92,38 +94,38 @@
<item android:id="@+id/remove_star"
android:title="@string/remove_star"
- android:showAsAction="never" />
+ app:showAsAction="never" />
<item
android:id="@+id/mark_important"
android:title="@string/mark_important"
- android:showAsAction="never" />
+ app:showAsAction="never" />
<item
android:id="@+id/mark_not_important"
android:title="@string/mark_not_important"
- android:showAsAction="never" />
+ app:showAsAction="never" />
<!-- Availability based on account -->
<item
android:id="@+id/mute"
android:title="@string/mute"
- android:showAsAction="never" />
+ app:showAsAction="never" />
<!-- Availability based on account -->
<item
android:id="@+id/report_spam"
android:title="@string/report_spam"
- android:showAsAction="never" />
+ app:showAsAction="never" />
<!-- Availability based on account -->
<item
android:id="@+id/mark_not_spam"
android:title="@string/mark_not_spam"
- android:showAsAction="never" />
+ app:showAsAction="never" />
<!-- Availability based on account -->
<item
android:id="@+id/report_phishing"
android:title="@string/report_phishing"
- android:showAsAction="never" />
+ app:showAsAction="never" />
</menu>
diff --git a/res/values-land-v21/styles.xml b/res/values-land-v21/styles.xml
deleted file mode 100644
index 23c8b38d0..000000000
--- a/res/values-land-v21/styles.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2014 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.
--->
-<resources>
- <!-- Spinner primary text is smaller than usual due to extra vertical padding in spinner asset -->
- <style name="AccountSpinnerAnchorTextPrimary" parent="@android:style/TextAppearance.Material.Widget.ActionBar.Title">
- <item name="android:textSize">14dp</item>
- </style>
-</resources>
diff --git a/res/values-land/styles.xml b/res/values-land/styles.xml
index 127fbe0ea..6ea58082c 100644
--- a/res/values-land/styles.xml
+++ b/res/values-land/styles.xml
@@ -28,8 +28,4 @@
</style>
<!-- End compose styles -->
- <!-- Spinner primary text is smaller than usual due to extra vertical padding in spinner asset -->
- <style name="AccountSpinnerAnchorTextPrimary" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
- <item name="android:textSize">14dp</item>
- </style>
</resources>
diff --git a/res/values-sw600dp-land/dimen.xml b/res/values-sw600dp-land/dimen.xml
index cf97bdb3c..92359cbf0 100644
--- a/res/values-sw600dp-land/dimen.xml
+++ b/res/values-sw600dp-land/dimen.xml
@@ -17,5 +17,4 @@
-->
<resources>
<dimen name="search_view_width">500dip</dimen>
- <dimen name="spinner_frame_width">196dp</dimen>
</resources>
diff --git a/res/values-sw600dp-v21/styles.xml b/res/values-sw600dp-v21/styles.xml
deleted file mode 100644
index e9d2410e8..000000000
--- a/res/values-sw600dp-v21/styles.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2014 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.
--->
-<resources>
- <style name="PlainUnifiedEmailTheme" parent="@style/UnifiedEmailTheme">
- <item name="android:actionBarStyle">@style/PlainActionBarStyle</item>
- <item name="android:actionModeBackground">@color/action_mode_background</item>
- </style>
-
- <style name="AccountSpinnerAnchorTextPrimary" parent="@android:style/TextAppearance.Material.Widget.ActionBar.Title" />
-
- <style name="ShortcutWidgetTheme" parent="@android:style/Theme.Material.Light.Dialog.MinWidth">
- <item name="android:actionOverflowButtonStyle">@style/ActionBarOverflowButtonStyle</item>
- </style>
-</resources>
diff --git a/res/values-sw600dp/dimen.xml b/res/values-sw600dp/dimen.xml
index 19dc96877..fc8e74910 100644
--- a/res/values-sw600dp/dimen.xml
+++ b/res/values-sw600dp/dimen.xml
@@ -40,7 +40,6 @@
<dimen name="compose_content_start_padding">8dp</dimen>
<dimen name="compose_content_end_padding">8dp</dimen>
<dimen name="search_view_width">400dip</dimen>
- <dimen name="spinner_frame_width">170dp</dimen>
<dimen name="empty_view_text_width">380dip</dimen>
<dimen name="empty_view_text_size">28sp</dimen>
diff --git a/res/values-sw600dp/styles.xml b/res/values-sw600dp/styles.xml
index 0eebce8c4..d17311202 100644
--- a/res/values-sw600dp/styles.xml
+++ b/res/values-sw600dp/styles.xml
@@ -16,17 +16,14 @@
limitations under the License.
-->
<resources>
- <style name="AccountSpinnerAnchorTextPrimary" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
- </style>
- <style name="AccountSpinnerStyle">
- <item name="android:layout_width">@dimen/spinner_frame_width</item>
- </style>
+ <style name="MailActivityTheme" parent="@style/UnifiedEmailTheme.Appcompat" />
- <style name="ShortcutWidgetTheme" parent="@android:style/Theme.Holo.Light.Dialog.MinWidth">
- <item name="android:actionOverflowButtonStyle">@style/ActionBarOverflowButtonStyle</item>
- <item name="android:homeAsUpIndicator">@drawable/ic_arrow_back_wht_24dp</item>
- </style>
+ <!-- todo - comment out when theme exists -->
+ <!--<style name="ShortcutWidgetTheme" parent="@style/Theme.Appcompat.Light.Dialog.MinWidth">-->
+ <!--<item name="actionOverflowButtonStyle">@style/ActionBarOverflowButtonStyle</item>-->
+ <!--<item name="homeAsUpIndicator">@drawable/ic_arrow_back_wht_24dp</item>-->
+ <!--</style>-->
<style name="VacationResponderTheme" parent="@style/UnifiedEmailTheme">
<item name="android:windowBackground">@color/vacation_responder_background</item>
diff --git a/res/values-sw720dp-land/dimen.xml b/res/values-sw720dp-land/dimen.xml
deleted file mode 100644
index 3358b08be..000000000
--- a/res/values-sw720dp-land/dimen.xml
+++ /dev/null
@@ -1,20 +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.
--->
-<resources>
- <dimen name="spinner_frame_width">260dip</dimen>
-</resources> \ No newline at end of file
diff --git a/res/values-v21/styles.xml b/res/values-v21/styles.xml
index b642ffa42..814fd5cac 100644
--- a/res/values-v21/styles.xml
+++ b/res/values-v21/styles.xml
@@ -27,72 +27,22 @@
<item name="android:colorAccent">@color/accent_blue</item>
</style>
- <style name="PlainUnifiedEmailTheme" parent="@style/UnifiedEmailTheme">
- <item name="android:actionBarStyle">@style/PlainActionBarStyle</item>
- <item name="android:actionModeBackground">@color/action_mode_background</item>
- <item name="android:windowNoTitle">true</item>
- <item name="android:windowActionBar">false</item>
- </style>
-
- <style name="ComposeTheme" parent="@style/ComposeThemeBase">
- <!-- ActionBar color -->
- <item name="android:colorPrimary">@color/actionbar_color</item>
- <!-- Used by the StatusBar and NavBar (currently broken?) -->
- <item name="android:colorPrimaryDark">@color/statusbar_color</item>
- <item name="android:colorAccent">@color/accent_blue</item>
- <item name="android:actionModeBackground">@color/action_mode_background</item>
- </style>
-
- <style name="OverflowButtonStyle" parent="@android:style/Widget.Material.Light.ActionButton.Overflow" >
- <item name="android:src">@drawable/ic_overflow_24dp</item>
- </style>
-
- <style name="ActionBarStyle" parent="@android:style/Widget.Material.Light.ActionBar.Solid" >
- <item name="android:background">?android:attr/colorPrimary</item>
- </style>
-
- <style name="WaitFragmentTitleBase" parent="@android:style/Widget.Material.TextView" />
+ <style name="WaitFragmentTitleBase" parent="android:Widget.Material.TextView" />
<style name="AbstractNewMessageButtonStyleBase"
parent="@android:style/Widget.Material.Light.Button">
</style>
- <style name="CustomActionButtonBase" parent="android:style/Widget.Material.Light.ActionButton" />
-
<style name="ComposeFieldLayoutBase" />
- <style name="AccountSpinnerAnchorTextPrimary" parent="@android:style/TextAppearance.Material.Widget.ActionBar.Title" />
+ <style name="ConversationListFadeBase" parent="android:Widget.Material.Light.ListView" />
- <style name="ConversationListFadeBase" parent="@android:style/Widget.Material.Light.ListView" />
-
- <style name="MinTimeProgressViewStyle" parent="@android:style/Widget.Material.Light.ProgressBar" />
+ <style name="MinTimeProgressViewStyle" parent="android:Widget.Material.Light.ProgressBar" />
<style name="MinTimeProgressDialogStyleBase" parent="@android:style/Theme.Material.Light.Dialog" />
<style name="MessageButtonStyleBase" parent="android:Widget.Material.Button.Borderless" />
- <style name="WidgetTitle" parent="@android:style/TextAppearance.Material.Widget.ActionBar.Title.Inverse">
- <item name="android:singleLine">true</item>
- </style>
-
- <style name="WidgetSubtitle" parent="@android:style/TextAppearance.Material.Widget.ActionBar.Subtitle.Inverse">
- <item name="android:singleLine">true</item>
- </style>
-
- <style name="ShortcutWidgetTheme" parent="@android:style/Theme.Material.Light.DialogWhenLarge">
- <item name="android:actionOverflowButtonStyle">@style/ActionBarOverflowButtonStyle</item>
- <!-- ActionBar color -->
- <item name="android:colorPrimary">@color/actionbar_color</item>
- <!-- Used by the StatusBar and NavBar (currently broken?) -->
- <item name="android:colorPrimaryDark">@color/statusbar_color</item>
- <item name="android:colorAccent">@color/accent_blue</item>
- <item name="android:actionModeBackground">@color/action_mode_background</item>
- </style>
-
- <style name="ComposeThemeBase" parent="@style/UnifiedEmailTheme">
- <item name="android:homeAsUpIndicator">@drawable/ic_close_wht_24dp</item>
- </style>
-
<style name="AbstractVacationResponderDateSpinnerBase"
- parent="android:style/Widget.Material.Light.Spinner" />
+ parent="android:Widget.Material.Light.Spinner" />
</resources>
diff --git a/res/values/dimen.xml b/res/values/dimen.xml
index 4fe2a880f..b82799931 100644
--- a/res/values/dimen.xml
+++ b/res/values/dimen.xml
@@ -71,7 +71,6 @@
<dimen name="message_header_contact_photo_margin">16dp</dimen>
<dimen name="message_header_inner_side_padding">16dp</dimen>
<dimen name="attachment_toast_yoffset">-100dip</dimen>
- <dimen name="spinner_frame_width">196dip</dimen>
<dimen name="floating_action_bar_margin">16dp</dimen>
<dimen name="snack_bar_margin_horizontal">24dp</dimen>
<dimen name="snack_bar_margin_vertical">14dp</dimen>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index ef9e0b6aa..d82a3618b 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -15,7 +15,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<resources xmlns:tools="http://schemas.android.com/tools">
+<resources xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- Compose Styles -->
<style name="RecipientEditTextViewStyle" parent="@style/RecipientEditTextView">
<item name="android:layout_gravity">center_vertical</item>
@@ -197,12 +197,8 @@
<item name="android:paddingRight">6dp</item>
</style>
- <!-- No change in the default case. -->
- <style name="AccountSpinnerAnchorTextPrimary" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
- </style>
-
<!-- Browse list item styles -->
- <style name="ConversationListFadeBase" parent="@android:style/Widget.Holo.Light.ListView" />
+ <style name="ConversationListFadeBase" parent="android:Widget.Holo.Light.ListView" />
<style name="ConversationListFade" parent="@style/ConversationListFadeBase">
<item name="android:divider">@android:color/transparent</item>
<item name="android:dividerHeight">0dip</item>
@@ -353,7 +349,7 @@
<item name="android:textIsSelectable">true</item>
</style>
- <style name="MessageButtonStyleBase" parent="android:Widget.Holo.Button.Borderless" />
+ <style name="MessageButtonStyleBase" parent="@android:style/Widget.Holo.Button.Borderless" />
<style name="MessageHeaderActionButtonStyle" parent="@style/MessageButtonStyleBase">
<item name="android:layout_width">@dimen/message_header_action_button_width</item>
@@ -422,11 +418,11 @@
</style>
<!-- Widget styles -->
- <style name="WidgetTitle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title.Inverse">
+ <style name="WidgetTitle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse">
<item name="android:singleLine">true</item>
</style>
- <style name="WidgetSubtitle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Subtitle.Inverse">
+ <style name="WidgetSubtitle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle.Inverse">
<item name="android:singleLine">true</item>
</style>
@@ -439,44 +435,32 @@
<item name="android:layout_marginTop">16dip</item>
</style>
- <style name="ShortcutWidgetTheme" parent="@android:style/Theme.Holo.Light.DialogWhenLarge">
- <item name="android:actionOverflowButtonStyle">@style/ActionBarOverflowButtonStyle</item>
- <item name="android:actionBarStyle">@style/ActionBarStyle</item>
- <item name="android:actionModeBackground">@color/action_mode_background</item>
- <item name="android:homeAsUpIndicator">@drawable/ic_arrow_back_wht_24dp</item>
- </style>
-
- <style name="ComposeThemeBase" parent="@android:style/Theme.Holo.Light.DarkActionBar">
- <item name="android:homeAsUpIndicator">@drawable/ic_close_wht_24dp</item>
- </style>
+ <style name="ShortcutWidgetTheme" parent="@style/UnifiedEmailTheme.Appcompat" />
- <style name="ComposeTheme" parent="@style/ComposeThemeBase">
- <item name="android:actionOverflowButtonStyle">@style/ActionBarOverflowButtonStyle</item>
+ <style name="ComposeTheme" parent="@style/UnifiedEmailTheme.Appcompat">
<item name="android:colorBackground">@android:color/white</item>
<item name="android:colorBackgroundCacheHint">@android:color/white</item>
<item name="android:windowBackground">@android:color/white</item>
- <item name="android:actionBarStyle">@style/ActionBarStyle</item>
- <item name="android:actionModeBackground">@color/action_mode_background</item>
</style>
<style name="InvisibleShortcutWidgetTheme" parent="@style/ShortcutWidgetTheme">
<item name="android:windowNoDisplay">true</item>
</style>
- <style name="PlainActionBarStyle" parent="ActionBarStyle">
- <item name="android:displayOptions" />
+ <style name="OverflowButtonStyle" parent="@style/Widget.AppCompat.ActionButton.Overflow">
+ <item name="android:src">@drawable/ic_overflow_24dp</item>
</style>
- <style name="ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
- <item name="android:background">@color/actionbar_color</item>
+ <style name="ActionBarOverflowButtonStyle" parent="@android:style/Widget.Holo.ActionButton.Overflow">
+ <item name="android:src">@drawable/ic_menu_moreoverflow_mtrl_alpha</item>
</style>
- <style name="OverflowButtonStyle" parent="@android:style/Widget.Holo.ActionButton.Overflow">
- <item name="android:src">@drawable/ic_overflow_24dp</item>
+ <style name="ActionBarOverflowButtonStyle.Appcompat" parent="@style/Widget.AppCompat.ActionButton.Overflow">
+ <item name="android:src">@drawable/ic_menu_moreoverflow_mtrl_alpha</item>
</style>
- <style name="ActionBarOverflowButtonStyle" parent="@android:style/Widget.Holo.ActionButton.Overflow">
- <item name="android:src">@drawable/ic_menu_moreoverflow_mtrl_alpha</item>
+ <style name="ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
+ <item name="android:background">@color/actionbar_color</item>
</style>
<style name="UnifiedEmailTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
@@ -487,11 +471,24 @@
<item name="android:listViewWhiteStyle">@android:style/Widget.Holo.Light.ListView</item>
</style>
- <style name="PlainUnifiedEmailTheme" parent="@style/UnifiedEmailTheme">
- <item name="android:actionBarStyle">@style/PlainActionBarStyle</item>
- <item name="android:actionModeBackground">@color/action_mode_background</item>
+
+ <style name="UnifiedEmailTheme.Appcompat" parent="@style/Theme.AppCompat.Light.DarkActionBar">
+ <item name="actionModeBackground">@color/action_mode_background</item>
+ <item name="actionOverflowButtonStyle">@style/ActionBarOverflowButtonStyle.Appcompat</item>
+ <item name="colorPrimary">@color/actionbar_color</item>
+ <!-- Used by the StatusBar and NavBar (currently broken?) -->
+ <item name="colorPrimaryDark">@color/statusbar_color</item>
+ <item name="colorAccent">@color/accent_blue</item>
+ <item name="homeAsUpIndicator">@drawable/ic_arrow_back_wht_24dp</item>
+ </style>
+
+ <style name="UnifiedEmailTheme.Appcompat.Toolbar" parent="@style/UnifiedEmailTheme.Appcompat">
+ <item name="android:windowNoTitle">true</item>
+ <item name="windowActionBar">false</item>
</style>
+ <style name="MailActivityTheme" parent="@style/UnifiedEmailTheme.Appcompat.Toolbar" />
+
<style name="VacationResponderTheme" parent="@style/UnifiedEmailTheme">
</style>
@@ -510,12 +507,7 @@
<style name="NotificationSecondaryText">
</style>
- <style name="TwoPaneConversationList">
- </style>
-
- <style name="AccountSpinnerStyle">
- <item name="android:layout_width">wrap_content</item>
- </style>
+ <style name="TwoPaneConversationList" />
<style name="AttachmentButtonStyle">
<item name="android:clickable">true</item>
@@ -708,7 +700,7 @@
<item name="android:layout_alignParentRight">true</item>
</style>
- <style name="CustomActionButtonBase" parent="android:style/Widget.Holo.Light.ActionButton" />
+ <style name="CustomActionButtonBase" parent="@style/Widget.AppCompat.Light.ActionButton" />
<style name="CustomActionButton" parent="@style/CustomActionButtonBase">
<item name="android:layout_height">match_parent</item>
@@ -741,7 +733,7 @@
</style>
<style name="AbstractVacationResponderDateSpinnerBase"
- parent="android:style/Widget.Holo.Light.Spinner" />
+ parent="android:Widget.Holo.Light.Spinner" />
<style name="AbstractVacationResponderDateSpinner"
parent="@style/AbstractVacationResponderDateSpinnerBase">
diff --git a/src/com/android/mail/browse/SelectedConversationsActionMenu.java b/src/com/android/mail/browse/SelectedConversationsActionMenu.java
index cb3baa7f1..380fe428a 100644
--- a/src/com/android/mail/browse/SelectedConversationsActionMenu.java
+++ b/src/com/android/mail/browse/SelectedConversationsActionMenu.java
@@ -20,7 +20,7 @@ package com.android.mail.browse;
import android.content.Context;
import android.net.Uri;
import android.os.AsyncTask;
-import android.view.ActionMode;
+import android.support.v7.view.ActionMode;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -83,8 +83,6 @@ public class SelectedConversationsActionMenu implements ActionMode.Callback,
private boolean mActivated = false;
- private Menu mMenu;
-
/** Object that can update conversation state on our behalf. */
private final ConversationUpdater mUpdater;
@@ -351,7 +349,6 @@ public class SelectedConversationsActionMenu implements ActionMode.Callback,
final MenuInflater inflater = mActivity.getMenuInflater();
inflater.inflate(R.menu.conversation_list_selection_actions_menu, menu);
mActionMode = mode;
- mMenu = menu;
return true;
}
@@ -495,7 +492,6 @@ public class SelectedConversationsActionMenu implements ActionMode.Callback,
// selection state.
mActivity.getListHandler().commitDestructiveActions(true);
}
- mMenu = null;
}
@Override
@@ -534,7 +530,7 @@ public class SelectedConversationsActionMenu implements ActionMode.Callback,
mListController.onCabModeEntered();
mActivated = true;
if (mActionMode == null) {
- mActivity.startActionMode(this);
+ mActivity.startSupportActionMode(this);
}
}
diff --git a/src/com/android/mail/compose/ComposeActivity.java b/src/com/android/mail/compose/ComposeActivity.java
index 0472f7a5d..cf50fbc87 100644
--- a/src/com/android/mail/compose/ComposeActivity.java
+++ b/src/com/android/mail/compose/ComposeActivity.java
@@ -18,8 +18,6 @@ package com.android.mail.compose;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
-import android.app.ActionBar;
-import android.app.ActionBar.OnNavigationListener;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.AlertDialog;
@@ -49,6 +47,8 @@ import android.os.HandlerThread;
import android.os.ParcelFileDescriptor;
import android.provider.BaseColumns;
import android.support.v4.app.RemoteInput;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.ActionBarActivity;
import android.text.Editable;
import android.text.Html;
import android.text.SpanWatcher;
@@ -130,7 +130,8 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
-public class ComposeActivity extends Activity implements OnClickListener, OnNavigationListener,
+public class ComposeActivity extends ActionBarActivity
+ implements OnClickListener, ActionBar.OnNavigationListener,
RespondInlineListener, TextWatcher,
AttachmentAddedOrDeletedListener, OnAccountChangedListener,
LoaderManager.LoaderCallbacks<Cursor>, TextView.OnEditorActionListener,
@@ -482,7 +483,7 @@ public class ComposeActivity extends Activity implements OnClickListener, OnNavi
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.compose);
- final ActionBar actionBar = getActionBar();
+ final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
// Hide the app icon.
actionBar.setIcon(null);
@@ -1057,7 +1058,7 @@ public class ComposeActivity extends Activity implements OnClickListener, OnNavi
private int getMode() {
int mode = ComposeActivity.COMPOSE;
- ActionBar actionBar = getActionBar();
+ final ActionBar actionBar = getSupportActionBar();
if (actionBar != null
&& actionBar.getNavigationMode() == ActionBar.NAVIGATION_MODE_LIST) {
mode = actionBar.getSelectedNavigationIndex();
@@ -1411,7 +1412,7 @@ public class ComposeActivity extends Activity implements OnClickListener, OnNavi
private void initActionBar() {
LogUtils.d(LOG_TAG, "initializing action bar in ComposeActivity");
- ActionBar actionBar = getActionBar();
+ final ActionBar actionBar = getSupportActionBar();
if (actionBar == null) {
return;
}
@@ -2250,7 +2251,7 @@ public class ComposeActivity extends Activity implements OnClickListener, OnNavi
// Subtract status bar and action bar height from y-coord.
final Rect rect = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
- final int deltaY = coords[1] - getActionBar().getHeight() - rect.top;
+ final int deltaY = coords[1] - getSupportActionBar().getHeight() - rect.top;
// Only scroll down
if (deltaY > 0) {
diff --git a/src/com/android/mail/ui/AbstractActivityController.java b/src/com/android/mail/ui/AbstractActivityController.java
index 3417ea3b7..d3f4ea04d 100644
--- a/src/com/android/mail/ui/AbstractActivityController.java
+++ b/src/com/android/mail/ui/AbstractActivityController.java
@@ -18,7 +18,6 @@
package com.android.mail.ui;
import android.animation.ValueAnimator;
-import android.app.ActionBar;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
@@ -50,6 +49,7 @@ import android.os.SystemClock;
import android.provider.SearchRecentSuggestions;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
+import android.support.v7.app.ActionBar;
import android.view.DragEvent;
import android.view.Gravity;
import android.view.KeyEvent;
@@ -605,7 +605,7 @@ public abstract class AbstractActivityController implements ActivityController,
* TwoPaneController so they cannot override this behavior.
*/
private void initializeActionBar() {
- final ActionBar actionBar = mActivity.getActionBar();
+ final ActionBar actionBar = mActivity.getSupportActionBar();
if (actionBar == null) {
return;
}
@@ -626,7 +626,7 @@ public abstract class AbstractActivityController implements ActivityController,
* Attach the action bar to the activity.
*/
private void attachActionBar() {
- final ActionBar actionBar = mActivity.getActionBar();
+ final ActionBar actionBar = mActivity.getSupportActionBar();
if (actionBar != null) {
// Show a title
final int mask = ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME;
@@ -1288,7 +1288,7 @@ public abstract class AbstractActivityController implements ActivityController,
mDrawerToggle.setDrawerIndicatorEnabled(isDrawerEnabled());
} else {
- final ActionBar ab = mActivity.getActionBar();
+ final ActionBar ab = mActivity.getSupportActionBar();
ab.setHomeAsUpIndicator(R.drawable.ic_drawer);
ab.setHomeActionContentDescription(R.string.drawer_open);
ab.setDisplayHomeAsUpEnabled(true);
@@ -4365,21 +4365,21 @@ public abstract class AbstractActivityController implements ActivityController,
if (mDrawerState == DrawerLayout.STATE_SETTLING) {
if (mHideMenuItems && slideOffset < 0.15f && mOldSlideOffset > slideOffset) {
mHideMenuItems = false;
- mActivity.invalidateOptionsMenu();
+ mActivity.supportInvalidateOptionsMenu();
maybeEnableCabMode();
} else if (!mHideMenuItems && slideOffset > 0.f && mOldSlideOffset < slideOffset) {
mHideMenuItems = true;
- mActivity.invalidateOptionsMenu();
+ mActivity.supportInvalidateOptionsMenu();
disableCabMode();
}
} else {
if (mHideMenuItems && Float.compare(slideOffset, 0.f) == 0) {
mHideMenuItems = false;
- mActivity.invalidateOptionsMenu();
+ mActivity.supportInvalidateOptionsMenu();
maybeEnableCabMode();
} else if (!mHideMenuItems && slideOffset > 0.f) {
mHideMenuItems = true;
- mActivity.invalidateOptionsMenu();
+ mActivity.supportInvalidateOptionsMenu();
disableCabMode();
}
}
diff --git a/src/com/android/mail/ui/AbstractConversationViewFragment.java b/src/com/android/mail/ui/AbstractConversationViewFragment.java
index 924064df9..f2122f1c9 100644
--- a/src/com/android/mail/ui/AbstractConversationViewFragment.java
+++ b/src/com/android/mail/ui/AbstractConversationViewFragment.java
@@ -668,7 +668,7 @@ public abstract class AbstractConversationViewFragment extends Fragment implemen
mHandler.post(new FragmentRunnable("invalidateOptionsMenu", this) {
@Override
public void go() {
- mActivity.invalidateOptionsMenu();
+ mActivity.supportInvalidateOptionsMenu();
}
});
}
diff --git a/src/com/android/mail/ui/AbstractMailActivity.java b/src/com/android/mail/ui/AbstractMailActivity.java
index 3982e73d0..3e336a0d0 100644
--- a/src/com/android/mail/ui/AbstractMailActivity.java
+++ b/src/com/android/mail/ui/AbstractMailActivity.java
@@ -17,10 +17,10 @@
package com.android.mail.ui;
-import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.StrictMode;
+import android.support.v7.app.ActionBarActivity;
/**
* <p>
@@ -34,7 +34,7 @@ import android.os.StrictMode;
* <p>In the Gmail codebase, this was called GmailBaseActivity</p>
*
*/
-public abstract class AbstractMailActivity extends Activity implements RestrictedActivity {
+public abstract class AbstractMailActivity extends ActionBarActivity implements RestrictedActivity {
private final UiHandler mUiHandler = new UiHandler();
diff --git a/src/com/android/mail/ui/ActionBarController.java b/src/com/android/mail/ui/ActionBarController.java
index b1bb2fcaf..05bfe1152 100644
--- a/src/com/android/mail/ui/ActionBarController.java
+++ b/src/com/android/mail/ui/ActionBarController.java
@@ -17,7 +17,6 @@
package com.android.mail.ui;
-import android.app.ActionBar;
import android.app.SearchManager;
import android.app.SearchableInfo;
import android.content.ContentResolver;
@@ -26,12 +25,14 @@ import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
+import android.support.v4.view.MenuItemCompat;
+import android.support.v7.app.ActionBar;
+import android.support.v7.widget.SearchView;
+import android.support.v7.widget.SearchView.OnQueryTextListener;
+import android.support.v7.widget.SearchView.OnSuggestionListener;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
-import android.widget.SearchView;
-import android.widget.SearchView.OnQueryTextListener;
-import android.widget.SearchView.OnSuggestionListener;
import com.android.mail.ConversationListContext;
import com.android.mail.R;
@@ -53,7 +54,7 @@ import com.android.mail.utils.Utils;
* Controller to manage the various states of the {@link android.app.ActionBar}.
*/
public class ActionBarController implements ViewMode.ModeChangeListener,
- OnQueryTextListener, OnSuggestionListener, MenuItem.OnActionExpandListener {
+ OnQueryTextListener, OnSuggestionListener, MenuItemCompat.OnActionExpandListener {
private final Context mContext;
@@ -65,7 +66,6 @@ public class ActionBarController implements ViewMode.ModeChangeListener,
*/
private ViewMode mViewModeController;
- private MenuItem mSearch;
/**
* The account currently being shown
*/
@@ -76,6 +76,7 @@ public class ActionBarController implements ViewMode.ModeChangeListener,
private Folder mFolder;
private SearchView mSearchWidget;
+ private MenuItem mSearch;
private MenuItem mEmptyTrashItem;
private MenuItem mEmptySpamItem;
@@ -118,7 +119,7 @@ public class ActionBarController implements ViewMode.ModeChangeListener,
public void expandSearch() {
if (mSearch != null) {
- mSearch.expandActionView();
+ MenuItemCompat.expandActionView(mSearch);
}
}
@@ -127,7 +128,7 @@ public class ActionBarController implements ViewMode.ModeChangeListener,
*/
public void collapseSearch() {
if (mSearch != null) {
- mSearch.collapseActionView();
+ MenuItemCompat.collapseActionView(mSearch);
}
}
@@ -144,8 +145,8 @@ public class ActionBarController implements ViewMode.ModeChangeListener,
mSearch = menu.findItem(R.id.search);
if (mSearch != null) {
- mSearchWidget = (SearchView) mSearch.getActionView();
- mSearch.setOnActionExpandListener(this);
+ mSearchWidget = (SearchView) MenuItemCompat.getActionView(mSearch);
+ MenuItemCompat.setOnActionExpandListener(mSearch, this);
SearchManager searchManager = (SearchManager) mActivity.getActivityContext()
.getSystemService(Context.SEARCH_SERVICE);
if (searchManager != null && mSearchWidget != null) {
@@ -229,7 +230,7 @@ public class ActionBarController implements ViewMode.ModeChangeListener,
@Override
public void onViewModeChanged(int newMode) {
- mActivity.invalidateOptionsMenu();
+ mActivity.supportInvalidateOptionsMenu();
// Check if we are either on a phone, or in Conversation mode on tablet. For these, the
// recent folders is enabled.
switch (getMode()) {
@@ -368,7 +369,7 @@ public class ActionBarController implements ViewMode.ModeChangeListener,
// Remove the back button but continue showing an icon.
final int mask = ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_HOME;
mActionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME, mask);
- mActivity.getActionBar().setHomeButtonEnabled(false);
+ mActionBar.setHomeButtonEnabled(false);
}
public void setBackButton() {
@@ -378,13 +379,13 @@ public class ActionBarController implements ViewMode.ModeChangeListener,
// Show home as up, and show an icon.
final int mask = ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_HOME;
mActionBar.setDisplayOptions(mask, mask);
- mActivity.getActionBar().setHomeButtonEnabled(true);
+ mActionBar.setHomeButtonEnabled(true);
}
@Override
public boolean onQueryTextSubmit(String query) {
if (mSearch != null) {
- mSearch.collapseActionView();
+ MenuItemCompat.collapseActionView(mSearch);
mSearchWidget.setQuery("", false);
}
mController.executeSearch(query.trim());
diff --git a/src/com/android/mail/ui/FolderSelectionActivity.java b/src/com/android/mail/ui/FolderSelectionActivity.java
index 781f44ef9..93594b5ed 100644
--- a/src/com/android/mail/ui/FolderSelectionActivity.java
+++ b/src/com/android/mail/ui/FolderSelectionActivity.java
@@ -16,8 +16,6 @@
package com.android.mail.ui;
-import android.app.ActionBar;
-import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.appwidget.AppWidgetManager;
@@ -28,6 +26,7 @@ import android.content.Intent;
import android.database.DataSetObservable;
import android.database.DataSetObserver;
import android.os.Bundle;
+import android.support.v7.app.ActionBarActivity;
import android.view.DragEvent;
import android.view.View;
import android.view.View.OnClickListener;
@@ -52,7 +51,7 @@ import java.util.ArrayList;
/**
* This activity displays the list of available folders for the current account.
*/
-public class FolderSelectionActivity extends Activity implements OnClickListener,
+public class FolderSelectionActivity extends ActionBarActivity implements OnClickListener,
DialogInterface.OnClickListener, FolderChangeListener, ControllableActivity,
FolderSelector {
public static final String EXTRA_ACCOUNT_SHORTCUT = "account-shortcut";
@@ -166,10 +165,6 @@ public class FolderSelectionActivity extends Activity implements OnClickListener
LogUtils.wtf(LOG_TAG, "unexpected intent: %s", intent);
}
if (mConfigureShortcut || mConfigureWidget) {
- ActionBar actionBar = getActionBar();
- if (actionBar != null) {
- actionBar.setIcon(R.mipmap.ic_launcher_shortcut_folder);
- }
mMode = CONFIGURE;
} else {
mMode = VIEW;
diff --git a/src/com/android/mail/ui/MailActivity.java b/src/com/android/mail/ui/MailActivity.java
index 42b6f7a8e..0c102241b 100644
--- a/src/com/android/mail/ui/MailActivity.java
+++ b/src/com/android/mail/ui/MailActivity.java
@@ -17,7 +17,6 @@
package com.android.mail.ui;
-import android.app.ActionBar;
import android.app.Dialog;
import android.app.LoaderManager;
import android.content.ContentResolver;
@@ -29,13 +28,14 @@ import android.nfc.NdefRecord;
import android.nfc.NfcAdapter;
import android.nfc.NfcEvent;
import android.os.Bundle;
+import android.support.v7.app.ActionBar;
+import android.support.v7.widget.Toolbar;
import android.view.DragEvent;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.accessibility.AccessibilityManager;
-import android.widget.Toolbar;
import com.android.bitmap.BitmapCache;
import com.android.bitmap.UnrefedBitmapCache;
@@ -170,17 +170,15 @@ public class MailActivity extends AbstractMailActivity implements ControllableAc
setContentView(mController.getContentViewResource());
- if (Utils.isRunningLOrLater()) {
- final Toolbar toolbar = (Toolbar) findViewById(R.id.action_bar);
- // Toolbar is currently only used on phone layout, so this is expected to be null
- // on tablets
- if (toolbar != null) {
- setActionBar(toolbar);
- toolbar.setNavigationOnClickListener(mController.getNavigationViewClickListener());
- }
+ final Toolbar toolbar = (Toolbar) findViewById(R.id.mail_toolbar);
+ // Toolbar is currently only used on phone layout, so this is expected to be null
+ // on tablets
+ if (toolbar != null) {
+ setSupportActionBar(toolbar);
+ toolbar.setNavigationOnClickListener(mController.getNavigationViewClickListener());
}
- final ActionBar actionBar = getActionBar();
+ final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
// Hide the app icon.
actionBar.setIcon(android.R.color.transparent);
diff --git a/src/com/android/mail/ui/RestrictedActivity.java b/src/com/android/mail/ui/RestrictedActivity.java
index 3b6f5952e..ed91b7b53 100644
--- a/src/com/android/mail/ui/RestrictedActivity.java
+++ b/src/com/android/mail/ui/RestrictedActivity.java
@@ -17,8 +17,6 @@
package com.android.mail.ui;
-import android.app.ActionBar;
-import android.app.Activity;
import android.app.Application;
import android.app.FragmentManager;
import android.app.LoaderManager;
@@ -27,7 +25,8 @@ import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
-import android.view.ActionMode;
+import android.support.v7.app.ActionBar;
+import android.support.v7.view.ActionMode;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
@@ -36,8 +35,10 @@ import android.view.Window;
// Should not rely on any mail-specific packages.
/**
- * {@link RestrictedActivity} gives access to a subset of {@link Activity} methods. These methods
- * match the signatures from {@link Activity}.
+ * {@link RestrictedActivity} gives access to a subset of
+ * {@link android.support.v7.app.ActionBarActivity} methods.
+ * These methods match the signatures from
+ * {@link android.support.v7.app.ActionBarActivity}.
*/
public interface RestrictedActivity {
/*
@@ -56,9 +57,9 @@ public interface RestrictedActivity {
void finish();
/**
- * @see android.app.Activity#getActionBar()
+ * @see android.support.v7.app.ActionBarActivity#getSupportActionBar()
*/
- ActionBar getActionBar();
+ ActionBar getSupportActionBar();
/**
* @see android.app.Activity#getApplication()
@@ -101,9 +102,9 @@ public interface RestrictedActivity {
Window getWindow();
/**
- * @see android.app.Activity#invalidateOptionsMenu()
+ * @see android.support.v7.app.ActionBarActivity#supportInvalidateOptionsMenu()
*/
- void invalidateOptionsMenu();
+ void supportInvalidateOptionsMenu();
/**
* @see android.app.Activity#isChangingConfigurations()
@@ -146,9 +147,9 @@ public interface RestrictedActivity {
void showDialog(int id);
/**
- * @see android.app.Activity#startActionMode(android.view.ActionMode.Callback)
+ * @see android.support.v7.app.ActionBarActivity#startSupportActionMode(ActionMode.Callback)
*/
- ActionMode startActionMode(ActionMode.Callback callback);
+ ActionMode startSupportActionMode(ActionMode.Callback callback);
/**
* @see android.app.Activity#startActivityForResult(Intent, int)
@@ -181,15 +182,10 @@ public interface RestrictedActivity {
Context getActivityContext();
/**
- * @see Activity#onOptionsItemSelected(MenuItem)
+ * @see android.app.Activity#onOptionsItemSelected(MenuItem)
*/
boolean onOptionsItemSelected(MenuItem item);
- /**
- * @see Activity#hasWindowFocus()
- */
- public boolean hasWindowFocus();
-
void setPendingToastOperation(ToastBarOperation op);
ToastBarOperation getPendingToastOperation();
diff --git a/src/com/android/mail/ui/SearchActionBarController.java b/src/com/android/mail/ui/SearchActionBarController.java
index ca6090697..97f1fbedc 100644
--- a/src/com/android/mail/ui/SearchActionBarController.java
+++ b/src/com/android/mail/ui/SearchActionBarController.java
@@ -18,10 +18,11 @@
package com.android.mail.ui;
import android.content.Context;
+import android.support.v4.view.MenuItemCompat;
+import android.support.v7.widget.SearchView;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
-import android.widget.SearchView;
import com.android.mail.ConversationListContext;
import com.android.mail.utils.Utils;
@@ -78,7 +79,7 @@ public class SearchActionBarController extends ActionBarController {
// the IME and the suggestions don't get in the way.
final MenuItem search = getSearch();
if (search != null) {
- final SearchView searchWidget = (SearchView) search.getActionView();
+ final SearchView searchWidget = (SearchView) MenuItemCompat.getActionView(search);
searchWidget.clearFocus();
}
}
@@ -89,10 +90,10 @@ public class SearchActionBarController extends ActionBarController {
private void setSearchQueryTerm() {
final MenuItem search = getSearch();
if (search != null) {
- search.expandActionView();
+ MenuItemCompat.expandActionView(search);
final String query = mActivity.getIntent().getStringExtra(
ConversationListContext.EXTRA_SEARCH_QUERY);
- final SearchView searchWidget = (SearchView) search.getActionView();
+ final SearchView searchWidget = (SearchView) MenuItemCompat.getActionView(search);
if (!TextUtils.isEmpty(query)) {
searchWidget.setQuery(query, false);
}
diff --git a/src/com/android/mail/ui/TwoPaneController.java b/src/com/android/mail/ui/TwoPaneController.java
index 4f52610c1..573d2d30d 100644
--- a/src/com/android/mail/ui/TwoPaneController.java
+++ b/src/com/android/mail/ui/TwoPaneController.java
@@ -17,7 +17,6 @@
package com.android.mail.ui;
-import android.app.ActionBar;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
@@ -25,6 +24,7 @@ import android.app.FragmentTransaction;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.LayoutRes;
+import android.support.v7.app.ActionBar;
import android.view.View;
import android.widget.ListView;
@@ -290,7 +290,7 @@ public final class TwoPaneController extends AbstractActivityController implemen
@Override
public void resetActionBarIcon() {
- final ActionBar ab = mActivity.getActionBar();
+ final ActionBar ab = mActivity.getSupportActionBar();
final boolean isChildFolder = getFolder() != null && !Utils.isEmpty(getFolder().parent);
if (isConversationOnlyMode() || isChildFolder) {
ab.setHomeAsUpIndicator(R.drawable.ic_arrow_back_wht_24dp);