Merge "People: Enable split action bar on 1-pane"
diff --git a/res/menu/actions.xml b/res/menu/actions.xml
index 7bd3765..fd2b967 100644
--- a/res/menu/actions.xml
+++ b/res/menu/actions.xml
@@ -17,17 +17,20 @@
<item
android:id="@+id/menu_search"
android:icon="@android:drawable/ic_menu_search"
- android:title="@string/menu_search" />
+ android:title="@string/menu_search"
+ android:showAsAction="ifRoom" />
<item
android:id="@+id/menu_add_contact"
android:icon="@drawable/ic_menu_add_contact_holo_light"
- 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_menu_display_all_holo_light"
- android:title="@string/menu_new_group_action_bar" />
+ android:title="@string/menu_new_group_action_bar"
+ android:showAsAction="ifRoom" />
<item
android:id="@+id/menu_contacts_filter"
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 01f0e62..8fdccfc 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -161,7 +161,7 @@
<attr name="call_log_list_item_height" format="dimension" />
</declare-styleable>
- <style name="PeopleTheme" parent="android:Theme.Holo.Light">
+ <style name="PeopleTheme" parent="android:Theme.Holo.Light.SplitActionBarWhenNarrow">
<item name="list_item_height">?android:attr/listPreferredItemHeight</item>
<item name="activated_background">@drawable/list_item_activated_background</item>
<item name="section_header_background">@drawable/list_title_holo</item>
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 74f05c2..907a5fd 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -145,6 +145,10 @@
private int mProviderStatus = -1;
private boolean mOptionsMenuContactsAvailable;
+ /** true if the search menu item exists */
+ private boolean mOptionsMenuSearchExists;
+ /** true if the search menu item is currently visible */
+ private boolean mOptionsMenuSearchVisible;
/**
* Showing a list of Contacts. Also used for showing search results in search mode.
@@ -479,10 +483,12 @@
case START_SEARCH_MODE:
clearSearch();
updateFragmentsVisibility();
+ invalidateOptionsMenuIfNeeded();
break;
case STOP_SEARCH_MODE:
clearSearch();
updateFragmentsVisibility();
+ invalidateOptionsMenuIfNeeded();
break;
case CHANGE_SEARCH_QUERY:
loadSearch(mActionBarAdapter.getQueryString());
@@ -1057,35 +1063,20 @@
}
@Override
- public boolean onCreatePanelMenu(int featureId, Menu menu) {
- // No menu if contacts are unavailable
- if (!areContactsAvailable()) {
- return false;
- }
-
- return super.onCreatePanelMenu(featureId, menu);
- }
-
- @Override
- public boolean onPreparePanel(int featureId, View view, Menu menu) {
- // No menu if contacts are unavailable
- if (!areContactsAvailable()) {
- return false;
- }
-
- return super.onPreparePanel(featureId, view, menu);
- }
-
- @Override
public boolean onCreateOptionsMenu(Menu menu) {
- if (!areContactsAvailable()) {
- return false;
- }
+// STOPSHIP Un-comment it once b/5027071 is fixed.
+// if (!areContactsAvailable()) {
+// If contacts aren't available, hide all menu items.
+// return false;
+// }
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.actions, menu);
+ mOptionsMenuSearchExists = menu.findItem(R.id.menu_search) != null;
+ mOptionsMenuSearchVisible = mOptionsMenuSearchExists;
+
// 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.
@@ -1116,6 +1107,10 @@
return true;
}
+ if (mOptionsMenuSearchVisible != shouldMakeSearchMenuVisible()) {
+ return true;
+ }
+
if (mAllFragment != null && mAllFragment.isOptionsMenuChanged()) {
return true;
}
@@ -1132,12 +1127,21 @@
return false;
}
+ /** @return true if the search menu item should be visible */
+ private boolean shouldMakeSearchMenuVisible() {
+ return mOptionsMenuSearchExists && !mActionBarAdapter.isSearchMode();
+ }
+
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
mOptionsMenuContactsAvailable = areContactsAvailable();
if (!mOptionsMenuContactsAvailable) {
+ // STOPSHIP Remove makeAllMenuItemsVisible()when STOPSHIP in onCreateOptionsMenu() is
+ // fixed.
+ makeAllMenuItemsVisible(menu, false);
return false;
}
+ makeAllMenuItemsVisible(menu, true);
final MenuItem searchMenu = menu.findItem(R.id.menu_search);
final MenuItem addContactMenu = menu.findItem(R.id.menu_add_contact);
@@ -1149,9 +1153,6 @@
if (mActionBarAdapter.isSearchMode()) {
addContactMenu.setVisible(false);
addGroupMenu.setVisible(false);
- if (searchMenu != null) {
- searchMenu.setVisible(false); // Don't show the search menu in search mode.
- }
} else {
switch (mActionBarAdapter.getCurrentTab()) {
case FAVORITES:
@@ -1168,6 +1169,12 @@
}
}
+ if (searchMenu != null) {
+ // Don't show the search menu in search mode.
+ mOptionsMenuSearchVisible = shouldMakeSearchMenuVisible();
+ searchMenu.setVisible(mOptionsMenuSearchVisible);
+ }
+
MenuItem settings = menu.findItem(R.id.menu_settings);
if (settings != null) {
settings.setVisible(!ContactsPreferenceActivity.isEmpty(this));
@@ -1176,6 +1183,13 @@
return true;
}
+ private void makeAllMenuItemsVisible(Menu menu, boolean visible) {
+ final int itemCount = menu.size();
+ for (int i = 0; i < itemCount; i++) {
+ menu.getItem(i).setVisible(visible);
+ }
+ }
+
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {