Merge "Make portrait action bar icons consistent with landscape." into jb-dev
diff --git a/res/menu-sw580dp-w720dp/people_options.xml b/res/menu-sw580dp-w720dp/people_options.xml
deleted file mode 100644
index cb65cc8..0000000
--- a/res/menu-sw580dp-w720dp/people_options.xml
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:id="@+id/menu_search"
- android:icon="@drawable/ic_ab_search_holo_dark"
- android:title="@string/menu_search"
- android:showAsAction="always" />
-
- <item
- android:id="@+id/menu_add_contact"
- android:icon="@drawable/ic_add_contact_holo_dark"
- android:title="@string/menu_new_contact_action_bar"
- android:showAsAction="always" />
-
- <item
- android:id="@+id/menu_custom_add_group"
- android:icon="@drawable/ic_add_group_holo_dark"
- android:title="@string/menu_new_group_action_bar"
- android:showAsAction="always" />
-
- <item
- android:id="@+id/menu_contacts_filter"
- android:orderInCategory="1"
- android:title="@string/menu_contacts_filter" />
-
- <item
- android:id="@+id/menu_import_export"
- android:orderInCategory="2"
- android:title="@string/menu_import_export" />
-
- <item
- android:id="@+id/menu_clear_frequents"
- android:orderInCategory="3"
- android:title="@string/menu_clear_frequents" />
-
- <item
- android:id="@+id/menu_accounts"
- android:orderInCategory="4"
- android:title="@string/menu_accounts" />
-
- <item
- android:id="@+id/menu_settings"
- android:orderInCategory="5"
- android:title="@string/menu_settings" />
-
- <item
- android:id="@+id/menu_help"
- android:orderInCategory="6"
- android:title="@string/menu_help" />
-</menu>
diff --git a/res/menu-sw580dp-w720dp/view_contact.xml b/res/menu-sw580dp-w720dp/view_contact.xml
deleted file mode 100644
index ead176c..0000000
--- a/res/menu-sw580dp-w720dp/view_contact.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2009 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:id="@+id/menu_edit"
- android:icon="@drawable/ic_menu_compose_holo_dark"
- android:title="@string/menu_editContact"
- android:alphabeticShortcut="e"
- android:showAsAction="always" />
-
- <item
- android:id="@+id/menu_share"
- android:title="@string/menu_share"
- android:alphabeticShortcut="s" />
-
- <item
- android:id="@+id/menu_delete"
- android:title="@string/menu_deleteContact" />
-
- <item
- android:id="@+id/menu_create_contact_shortcut"
- android:title="@string/menu_create_contact_shortcut" />
-
-</menu>
diff --git a/res/menu-sw580dp-w720dp/view_group.xml b/res/menu-sw580dp-w720dp/view_group.xml
deleted file mode 100644
index 3836c0f..0000000
--- a/res/menu-sw580dp-w720dp/view_group.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item
- android:id="@+id/menu_edit_group"
- android:icon="@drawable/ic_menu_compose_holo_dark"
- android:title="@string/menu_editGroup"
- android:alphabeticShortcut="e"
- android:showAsAction="always" />
-
- <item
- android:id="@+id/menu_delete_group"
- android:title="@string/menu_deleteGroup" />
-</menu>
diff --git a/res/menu-sw580dp/people_options.xml b/res/menu-sw580dp/people_options.xml
index 42c4749..5d05752 100644
--- a/res/menu-sw580dp/people_options.xml
+++ b/res/menu-sw580dp/people_options.xml
@@ -23,12 +23,14 @@
<item
android:id="@+id/menu_add_contact"
android:icon="@drawable/ic_add_contact_holo_dark"
- android:title="@string/menu_new_contact_action_bar" />
+ android:title="@string/menu_new_contact_action_bar"
+ android:showAsAction="ifRoom" />
<item
android:id="@+id/menu_add_group"
android:icon="@drawable/ic_add_group_holo_dark"
- android:title="@string/menu_new_group_action_bar" />
+ android:title="@string/menu_new_group_action_bar"
+ android:showAsAction="ifRoom" />
<!-- Added orderInCategory to keep the following buttons at the end of the menu
Buttons will be added in the order added/inflated. Ordered buttons will be added
diff --git a/res/menu-sw580dp/view_contact.xml b/res/menu-sw580dp/view_contact.xml
index 516a2ae..a2ff00d 100644
--- a/res/menu-sw580dp/view_contact.xml
+++ b/res/menu-sw580dp/view_contact.xml
@@ -19,7 +19,8 @@
android:id="@+id/menu_edit"
android:icon="@drawable/ic_menu_compose_holo_dark"
android:title="@string/menu_editContact"
- android:alphabeticShortcut="e" />
+ android:alphabeticShortcut="e"
+ android:showAsAction="always"/>
<item
android:id="@+id/menu_share"
diff --git a/res/menu-sw580dp/view_group.xml b/res/menu-sw580dp/view_group.xml
index d01c167..3836c0f 100644
--- a/res/menu-sw580dp/view_group.xml
+++ b/res/menu-sw580dp/view_group.xml
@@ -19,7 +19,8 @@
android:id="@+id/menu_edit_group"
android:icon="@drawable/ic_menu_compose_holo_dark"
android:title="@string/menu_editGroup"
- android:alphabeticShortcut="e" />
+ android:alphabeticShortcut="e"
+ android:showAsAction="always" />
<item
android:id="@+id/menu_delete_group"
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 075c59f..d1b493f 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -50,19 +50,16 @@
import com.android.contacts.list.OnContactsUnavailableActionListener;
import com.android.contacts.list.ProviderStatusWatcher;
import com.android.contacts.list.ProviderStatusWatcher.ProviderStatusListener;
-import com.android.contacts.model.AccountTypeManager;
import com.android.contacts.model.AccountWithDataSet;
import com.android.contacts.preference.ContactsPreferenceActivity;
import com.android.contacts.preference.DisplayOptionsPreferenceFragment;
import com.android.contacts.util.AccountFilterUtil;
import com.android.contacts.util.AccountPromptUtils;
-import com.android.contacts.util.AccountsListAdapter;
-import com.android.contacts.util.HelpUtils;
-import com.android.contacts.util.UriUtils;
-import com.android.contacts.util.AccountsListAdapter.AccountListFilter;
import com.android.contacts.util.Constants;
import com.android.contacts.util.DialogManager;
+import com.android.contacts.util.HelpUtils;
import com.android.contacts.util.PhoneCapabilityTester;
+import com.android.contacts.util.UriUtils;
import com.android.contacts.widget.TransitionAnimationView;
import android.app.Fragment;
@@ -79,7 +76,6 @@
import android.preference.PreferenceActivity;
import android.provider.ContactsContract;
import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Intents;
import android.provider.ContactsContract.ProviderStatus;
import android.provider.ContactsContract.QuickContact;
import android.provider.Settings;
@@ -94,15 +90,10 @@
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
-import android.view.View.OnClickListener;
import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.ListPopupWindow;
import android.widget.Toast;
import java.util.ArrayList;
-import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
/**
@@ -167,8 +158,6 @@
private TransitionAnimationView mContactDetailsView;
private TransitionAnimationView mGroupDetailsView;
- private View mAddGroupImageView;
-
/** ViewPager for swipe, used only on the phone (i.e. one-pane mode) */
private ViewPager mTabPager;
private TabPagerAdapter mTabPagerAdapter;
@@ -771,6 +760,21 @@
}
private class TabPagerListener implements ViewPager.OnPageChangeListener {
+
+ // This package-protected constructor is here because of a possible compiler bug.
+ // PeopleActivity$1.class should be generated due to the private outer/inner class access
+ // needed here. But for some reason, PeopleActivity$1.class is missing.
+ // Since $1 class is needed as a jvm work around to get access to the inner class,
+ // changing the constructor to package-protected or public will solve the problem.
+ // To verify whether $1 class is needed, javap PeopleActivity$TabPagerListener and look for
+ // references to PeopleActivity$1.
+ //
+ // When the constructor is private and PeopleActivity$1.class is missing, proguard will
+ // correctly catch this and throw warnings and error out the build on user/userdebug builds.
+ //
+ // All private inner classes below also need this fix.
+ TabPagerListener() {}
+
@Override
public void onPageScrollStateChanged(int state) {
}
@@ -1056,6 +1060,7 @@
}
private final class ContactBrowserActionListener implements OnContactBrowserActionListener {
+ ContactBrowserActionListener() {}
@Override
public void onSelectionChange() {
@@ -1149,6 +1154,8 @@
}
private class ContactDetailLoaderFragmentListener implements ContactLoaderFragmentListener {
+ ContactDetailLoaderFragmentListener() {}
+
@Override
public void onContactNotFound() {
// Nothing needs to be done here
@@ -1217,6 +1224,7 @@
private class ContactsUnavailableFragmentListener
implements OnContactsUnavailableActionListener {
+ ContactsUnavailableFragmentListener() {}
@Override
public void onCreateNewContactAction() {
@@ -1245,6 +1253,8 @@
private final class StrequentContactListFragmentListener
implements ContactTileListFragment.Listener {
+ StrequentContactListFragmentListener() {}
+
@Override
public void onContactSelected(Uri contactUri, Rect targetRect) {
if (PhoneCapabilityTester.isUsingTwoPanes(PeopleActivity.this)) {
@@ -1263,6 +1273,8 @@
private final class GroupBrowserActionListener implements OnGroupBrowserActionListener {
+ GroupBrowserActionListener() {}
+
@Override
public void onViewGroupAction(Uri groupUri) {
if (PhoneCapabilityTester.isUsingTwoPanes(PeopleActivity.this)) {
@@ -1276,6 +1288,9 @@
}
private class GroupDetailFragmentListener implements GroupDetailFragment.Listener {
+
+ GroupDetailFragmentListener() {}
+
@Override
public void onGroupSizeUpdated(String size) {
// Nothing needs to be done here because the size will be displayed in the detail
@@ -1332,22 +1347,6 @@
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.people_options, menu);
- // On narrow screens we specify a NEW group button in the {@link ActionBar}, so that
- // it can be in the overflow menu. On wide screens, we use a custom view because we need
- // its location for anchoring the account-selector popup.
- final MenuItem addGroup = menu.findItem(R.id.menu_custom_add_group);
- if (addGroup != null) {
- mAddGroupImageView = getLayoutInflater().inflate(
- R.layout.add_group_menu_item, null, false);
- mAddGroupImageView.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- createNewGroupWithAccountDisambiguation();
- }
- });
- addGroup.setActionView(mAddGroupImageView);
- }
-
if (DEBUG_TRANSITIONS && mContactDetailLoaderFragment != null) {
final MenuItem toggleSocial =
menu.add(mContactDetailLoaderFragment.getLoadStreamItems() ? "less" : "more");
@@ -1404,9 +1403,6 @@
final MenuItem contactsFilterMenu = menu.findItem(R.id.menu_contacts_filter);
MenuItem addGroupMenu = menu.findItem(R.id.menu_add_group);
- if (addGroupMenu == null) {
- addGroupMenu = menu.findItem(R.id.menu_custom_add_group);
- }
final MenuItem clearFrequentsMenu = menu.findItem(R.id.menu_clear_frequents);
final MenuItem helpMenu = menu.findItem(R.id.menu_help);
@@ -1518,7 +1514,8 @@
// to this activity to display the new contact.
if (PhoneCapabilityTester.isUsingTwoPanes(this)) {
intent.putExtra(
- ContactEditorActivity.INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED, true);
+ ContactEditorActivity.INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED,
+ true);
startActivityForResult(intent, SUBACTIVITY_NEW_CONTACT);
} else {
// Otherwise, on 1-pane UI, we need the editor to launch the view contact
@@ -1528,7 +1525,7 @@
return true;
}
case R.id.menu_add_group: {
- createNewGroupWithAccountDisambiguation();
+ createNewGroup();
return true;
}
case R.id.menu_import_export: {
@@ -1552,40 +1549,10 @@
return false;
}
- private void createNewGroupWithAccountDisambiguation() {
- final List<AccountWithDataSet> accounts =
- AccountTypeManager.getInstance(this).getAccounts(true);
- if (accounts.size() <= 1 || mAddGroupImageView == null) {
- // No account to choose or no control to anchor the popup-menu to
- // ==> just go straight to the editor which will disambig if necessary
- final Intent intent = new Intent(this, GroupEditorActivity.class);
- intent.setAction(Intent.ACTION_INSERT);
- startActivityForResult(intent, SUBACTIVITY_NEW_GROUP);
- return;
- }
-
- final ListPopupWindow popup = new ListPopupWindow(this, null);
- popup.setWidth(getResources().getDimensionPixelSize(R.dimen.account_selector_popup_width));
- popup.setAnchorView(mAddGroupImageView);
- // Create a list adapter with all writeable accounts (assume that the writeable accounts all
- // allow group creation).
- final AccountsListAdapter adapter = new AccountsListAdapter(this,
- AccountListFilter.ACCOUNTS_GROUP_WRITABLE);
- popup.setAdapter(adapter);
- popup.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- popup.dismiss();
- AccountWithDataSet account = adapter.getItem(position);
- final Intent intent = new Intent(PeopleActivity.this, GroupEditorActivity.class);
- intent.setAction(Intent.ACTION_INSERT);
- intent.putExtra(Intents.Insert.ACCOUNT, account);
- intent.putExtra(Intents.Insert.DATA_SET, account.dataSet);
- startActivityForResult(intent, SUBACTIVITY_NEW_GROUP);
- }
- });
- popup.setModal(true);
- popup.show();
+ private void createNewGroup() {
+ final Intent intent = new Intent(this, GroupEditorActivity.class);
+ intent.setAction(Intent.ACTION_INSERT);
+ startActivityForResult(intent, SUBACTIVITY_NEW_GROUP);
}
@Override