Merge "Batch add and remove group members in group editor"
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/GroupMetaDataLoader.java b/src/com/android/contacts/GroupMetaDataLoader.java
index 8533bb6..f11217c 100644
--- a/src/com/android/contacts/GroupMetaDataLoader.java
+++ b/src/com/android/contacts/GroupMetaDataLoader.java
@@ -35,6 +35,8 @@
Groups.FAVORITES,
Groups.GROUP_IS_READ_ONLY,
Groups.DELETED,
+ Groups.ACTION,
+ Groups.ACTION_URI,
};
public final static int ACCOUNT_NAME = 0;
@@ -45,6 +47,8 @@
public final static int FAVORITES = 5;
public final static int IS_READ_ONLY = 6;
public final static int DELETED = 7;
+ public final static int ACTION = 8;
+ public final static int ACTION_URI = 9;
public GroupMetaDataLoader(Context context, Uri groupUri) {
super(context, ensureIsGroupUri(groupUri), COLUMNS, Groups.ACCOUNT_TYPE + " NOT NULL AND "
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 74f05c2..500ad1e 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -479,10 +479,12 @@
case START_SEARCH_MODE:
clearSearch();
updateFragmentsVisibility();
+ invalidateOptionsMenu();
break;
case STOP_SEARCH_MODE:
clearSearch();
updateFragmentsVisibility();
+ invalidateOptionsMenu();
break;
case CHANGE_SEARCH_QUERY:
loadSearch(mActionBarAdapter.getQueryString());
@@ -515,6 +517,7 @@
mTabPager.setCurrentItem(tab.ordinal(), false /* no smooth scroll */);
}
}
+ invalidateOptionsMenu();
return;
}
@@ -570,6 +573,7 @@
ft.commit();
fragmentManager.executePendingTransactions();
}
+ invalidateOptionsMenu();
}
private class TabPagerListener implements ViewPager.OnPageChangeListener {
@@ -586,6 +590,7 @@
// Make sure not in the search mode, in which case position != TabState.ordinal().
if (!mTabPagerAdapter.isSearchMode()) {
mActionBarAdapter.setCurrentTab(TabState.fromInt(position), false);
+ invalidateOptionsMenu();
}
}
}
@@ -1057,30 +1062,12 @@
}
@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();
@@ -1136,8 +1123,12 @@
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 +1140,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 +1156,11 @@
}
}
+ if (searchMenu != null) {
+ // Don't show the search menu in search mode.
+ searchMenu.setVisible(!mActionBarAdapter.isSearchMode());
+ }
+
MenuItem settings = menu.findItem(R.id.menu_settings);
if (settings != null) {
settings.setVisible(!ContactsPreferenceActivity.isEmpty(this));
@@ -1176,6 +1169,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()) {
diff --git a/src/com/android/contacts/group/GroupDetailFragment.java b/src/com/android/contacts/group/GroupDetailFragment.java
index f58d99a..c5f6ef4 100644
--- a/src/com/android/contacts/group/GroupDetailFragment.java
+++ b/src/com/android/contacts/group/GroupDetailFragment.java
@@ -35,6 +35,7 @@
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -248,6 +249,11 @@
mGroupId = cursor.getLong(GroupMetaDataLoader.GROUP_ID);
mGroupName = cursor.getString(GroupMetaDataLoader.TITLE);
updateTitle(mGroupName);
+
+ // TODO: Replace by real button
+ final String action = cursor.getString(GroupMetaDataLoader.ACTION);
+ final String actionUri = cursor.getString(GroupMetaDataLoader.ACTION_URI);
+ Log.d(TAG, "Group open action: " + action + ", uri: " + actionUri);
}
}