diff options
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); |