Loading res/layout/phone_contact_tile_list.xml +1 −1 Original line number Original line Diff line number Diff line Loading @@ -39,7 +39,7 @@ android:id="@+id/contact_tile_list_empty" android:id="@+id/contact_tile_list_empty" android:layout_width="match_parent" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:gravity="center" android:layout_marginTop="@dimen/empty_message_top_margin" android:layout_marginTop="@dimen/empty_message_top_margin" android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary" android:textAppearance="?android:attr/textAppearanceLarge"/> android:textAppearance="?android:attr/textAppearanceLarge"/> Loading res/menu/dialtacts_options.xml +1 −1 Original line number Original line Diff line number Diff line Loading @@ -46,7 +46,7 @@ TODO: look for better idea. --> TODO: look for better idea. --> <item <item android:id="@+id/fake_menu_item" android:id="@+id/empty_right_menu_item" android:actionLayout="@layout/empty2" android:actionLayout="@layout/empty2" android:showAsAction="ifRoom" /> android:showAsAction="ifRoom" /> </menu> </menu> src/com/android/contacts/activities/DialtactsActivity.java +108 −60 Original line number Original line Diff line number Diff line Loading @@ -936,79 +936,127 @@ public class DialtactsActivity extends TransactionSafeActivity public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.dialtacts_options, menu); inflater.inflate(R.menu.dialtacts_options, menu); // set up intents and onClick listeners final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings); final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar); final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option); final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact); callSettingsMenuItem.setIntent(DialtactsActivity.getCallSettingsIntent()); searchMenuItem.setOnMenuItemClickListener(mSearchMenuItemClickListener); filterOptionMenuItem.setOnMenuItemClickListener(mFilterOptionsMenuItemClickListener); addContactOptionMenuItem.setIntent( new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI)); return true; return true; } } @Override @Override public boolean onPrepareOptionsMenu(Menu menu) { public boolean onPrepareOptionsMenu(Menu menu) { if (mInSearchUi) { prepareOptionsMenuInSearchMode(menu); } else { // get reference to the currently selected tab final Tab tab = getActionBar().getSelectedTab(); if (tab != null) { switch(tab.getPosition()) { case TAB_INDEX_DIALER: prepareOptionsMenuForDialerTab(menu); break; case TAB_INDEX_CALL_LOG: prepareOptionsMenuForCallLogTab(menu); break; case TAB_INDEX_FAVORITES: prepareOptionsMenuForFavoritesTab(menu); break; } } } return true; } private void prepareOptionsMenuInSearchMode(Menu menu) { // get references to menu items final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar); final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar); final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option); final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option); final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact); final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact); final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings); final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings); final Tab tab = getActionBar().getSelectedTab(); final MenuItem emptyRightMenuItem = menu.findItem(R.id.empty_right_menu_item); final MenuItem fakeMenuItem = menu.findItem(R.id.fake_menu_item); if (mInSearchUi) { // prepare the menu items searchMenuItem.setVisible(false); searchMenuItem.setVisible(false); if (ViewConfiguration.get(this).hasPermanentMenuKey()) { filterOptionMenuItem.setVisible(ViewConfiguration.get(this).hasPermanentMenuKey()); filterOptionMenuItem.setVisible(true); filterOptionMenuItem.setOnMenuItemClickListener( mFilterOptionsMenuItemClickListener); } else { // Filter option menu should be not be shown as a overflow menu. filterOptionMenuItem.setVisible(false); } addContactOptionMenuItem.setVisible(false); addContactOptionMenuItem.setVisible(false); callSettingsMenuItem.setVisible(false); callSettingsMenuItem.setVisible(false); fakeMenuItem.setVisible(false); emptyRightMenuItem.setVisible(false); } else { } final boolean showCallSettingsMenu; if (tab != null && tab.getPosition() == TAB_INDEX_DIALER) { private void prepareOptionsMenuForDialerTab(Menu menu) { if (DEBUG) { if (DEBUG) { Log.d(TAG, "onPrepareOptionsMenu(dialer). swipe: " + mDuringSwipe Log.d(TAG, "onPrepareOptionsMenu(dialer). swipe: " + mDuringSwipe + ", user tab click: " + mUserTabClick); + ", user tab click: " + mUserTabClick); } } // get references to menu items final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar); final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option); final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact); final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings); final MenuItem emptyRightMenuItem = menu.findItem(R.id.empty_right_menu_item); // prepare the menu items filterOptionMenuItem.setVisible(false); addContactOptionMenuItem.setVisible(false); if (mDuringSwipe || mUserTabClick) { if (mDuringSwipe || mUserTabClick) { // During horizontal movement, we just show real ActionBar menu items. // During horizontal movement, the real ActionBar menu items are shown searchMenuItem.setVisible(true); searchMenuItem.setVisible(true); searchMenuItem.setOnMenuItemClickListener(mSearchMenuItemClickListener); callSettingsMenuItem.setVisible(true); showCallSettingsMenu = true; // When there is a permanent menu key, there is no overflow icon on the right of // the action bar which would force the search menu item (if it is visible) to the fakeMenuItem.setVisible(ViewConfiguration.get(this).hasPermanentMenuKey()); // left. This is the purpose of showing the emptyRightMenuItem. emptyRightMenuItem.setVisible(ViewConfiguration.get(this).hasPermanentMenuKey()); } else { } else { // This is when the user is looking at the dialer pad. In this case, the real // ActionBar is hidden and fake menu items are shown. searchMenuItem.setVisible(false); searchMenuItem.setVisible(false); // When permanent menu key is _not_ available, the call settings menu should be // If a permanent menu key is available, then we need to show the call settings item // available via DialpadFragment. // so that the call settings item can be invoked by the permanent menu key. showCallSettingsMenu = ViewConfiguration.get(this).hasPermanentMenuKey(); callSettingsMenuItem.setVisible(ViewConfiguration.get(this).hasPermanentMenuKey()); fakeMenuItem.setVisible(false); emptyRightMenuItem.setVisible(false); } } } else { searchMenuItem.setVisible(true); searchMenuItem.setOnMenuItemClickListener(mSearchMenuItemClickListener); showCallSettingsMenu = true; fakeMenuItem.setVisible(ViewConfiguration.get(this).hasPermanentMenuKey() && (tab != null && tab.getPosition() == TAB_INDEX_CALL_LOG)); } } if (tab != null && tab.getPosition() == TAB_INDEX_FAVORITES) { filterOptionMenuItem.setVisible(true); private void prepareOptionsMenuForCallLogTab(Menu menu) { filterOptionMenuItem.setOnMenuItemClickListener( // get references to menu items mFilterOptionsMenuItemClickListener); final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar); addContactOptionMenuItem.setVisible(true); final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option); addContactOptionMenuItem.setIntent( final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact); new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI)); final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings); } else { final MenuItem emptyRightMenuItem = menu.findItem(R.id.empty_right_menu_item); // prepare the menu items searchMenuItem.setVisible(true); filterOptionMenuItem.setVisible(false); filterOptionMenuItem.setVisible(false); addContactOptionMenuItem.setVisible(false); addContactOptionMenuItem.setVisible(false); } if (showCallSettingsMenu) { callSettingsMenuItem.setVisible(true); callSettingsMenuItem.setVisible(true); callSettingsMenuItem.setIntent(DialtactsActivity.getCallSettingsIntent()); emptyRightMenuItem.setVisible(ViewConfiguration.get(this).hasPermanentMenuKey()); } else { callSettingsMenuItem.setVisible(false); } } } return true; private void prepareOptionsMenuForFavoritesTab(Menu menu) { // get references to menu items final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar); final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option); final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact); final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings); final MenuItem emptyRightMenuItem = menu.findItem(R.id.empty_right_menu_item); // prepare the menu items searchMenuItem.setVisible(true); filterOptionMenuItem.setVisible(true); addContactOptionMenuItem.setVisible(true); callSettingsMenuItem.setVisible(true); emptyRightMenuItem.setVisible(false); } } @Override @Override Loading src/com/android/contacts/list/PhoneFavoriteMergedAdapter.java +7 −0 Original line number Original line Diff line number Diff line Loading @@ -76,6 +76,13 @@ public class PhoneFavoriteMergedAdapter extends BaseAdapter implements SectionIn mLoadingView = loadingView; mLoadingView = loadingView; } } @Override public boolean isEmpty() { // Cannot use the super's method here because we add extra rows in getCount() to account // for headers return mContactTileAdapter.getCount() + mContactEntryListAdapter.getCount() == 0; } @Override @Override public int getCount() { public int getCount() { final int contactTileAdapterCount = mContactTileAdapter.getCount(); final int contactTileAdapterCount = mContactTileAdapter.getCount(); Loading src/com/android/contacts/list/PhoneNumberPickerFragment.java +11 −0 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,8 @@ import com.android.contacts.list.ShortcutIntentBuilder.OnShortcutIntentCreatedLi import com.android.contacts.util.AccountFilterUtil; import com.android.contacts.util.AccountFilterUtil; import android.content.Intent; import android.content.Intent; import android.content.Loader; import android.database.Cursor; import android.net.Uri; import android.net.Uri; import android.os.Bundle; import android.os.Bundle; import android.util.Log; import android.util.Log; Loading @@ -28,6 +30,7 @@ import android.view.MenuItem; import android.view.View; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.ViewGroup; import android.widget.TextView; /** /** * Fragment containing a phone number list for picking. * Fragment containing a phone number list for picking. Loading Loading @@ -188,6 +191,14 @@ public class PhoneNumberPickerFragment extends ContactEntryListFragment<ContactE super.startLoading(); super.startLoading(); } } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { super.onLoadFinished(loader, data); // disable scroll bar if there is no data setVisibleScrollbarEnabled(data.getCount() > 0); } public void setUseCallableUri(boolean useCallableUri) { public void setUseCallableUri(boolean useCallableUri) { mUseCallableUri = useCallableUri; mUseCallableUri = useCallableUri; } } Loading Loading
res/layout/phone_contact_tile_list.xml +1 −1 Original line number Original line Diff line number Diff line Loading @@ -39,7 +39,7 @@ android:id="@+id/contact_tile_list_empty" android:id="@+id/contact_tile_list_empty" android:layout_width="match_parent" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:gravity="center" android:layout_marginTop="@dimen/empty_message_top_margin" android:layout_marginTop="@dimen/empty_message_top_margin" android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary" android:textAppearance="?android:attr/textAppearanceLarge"/> android:textAppearance="?android:attr/textAppearanceLarge"/> Loading
res/menu/dialtacts_options.xml +1 −1 Original line number Original line Diff line number Diff line Loading @@ -46,7 +46,7 @@ TODO: look for better idea. --> TODO: look for better idea. --> <item <item android:id="@+id/fake_menu_item" android:id="@+id/empty_right_menu_item" android:actionLayout="@layout/empty2" android:actionLayout="@layout/empty2" android:showAsAction="ifRoom" /> android:showAsAction="ifRoom" /> </menu> </menu>
src/com/android/contacts/activities/DialtactsActivity.java +108 −60 Original line number Original line Diff line number Diff line Loading @@ -936,79 +936,127 @@ public class DialtactsActivity extends TransactionSafeActivity public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.dialtacts_options, menu); inflater.inflate(R.menu.dialtacts_options, menu); // set up intents and onClick listeners final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings); final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar); final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option); final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact); callSettingsMenuItem.setIntent(DialtactsActivity.getCallSettingsIntent()); searchMenuItem.setOnMenuItemClickListener(mSearchMenuItemClickListener); filterOptionMenuItem.setOnMenuItemClickListener(mFilterOptionsMenuItemClickListener); addContactOptionMenuItem.setIntent( new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI)); return true; return true; } } @Override @Override public boolean onPrepareOptionsMenu(Menu menu) { public boolean onPrepareOptionsMenu(Menu menu) { if (mInSearchUi) { prepareOptionsMenuInSearchMode(menu); } else { // get reference to the currently selected tab final Tab tab = getActionBar().getSelectedTab(); if (tab != null) { switch(tab.getPosition()) { case TAB_INDEX_DIALER: prepareOptionsMenuForDialerTab(menu); break; case TAB_INDEX_CALL_LOG: prepareOptionsMenuForCallLogTab(menu); break; case TAB_INDEX_FAVORITES: prepareOptionsMenuForFavoritesTab(menu); break; } } } return true; } private void prepareOptionsMenuInSearchMode(Menu menu) { // get references to menu items final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar); final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar); final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option); final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option); final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact); final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact); final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings); final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings); final Tab tab = getActionBar().getSelectedTab(); final MenuItem emptyRightMenuItem = menu.findItem(R.id.empty_right_menu_item); final MenuItem fakeMenuItem = menu.findItem(R.id.fake_menu_item); if (mInSearchUi) { // prepare the menu items searchMenuItem.setVisible(false); searchMenuItem.setVisible(false); if (ViewConfiguration.get(this).hasPermanentMenuKey()) { filterOptionMenuItem.setVisible(ViewConfiguration.get(this).hasPermanentMenuKey()); filterOptionMenuItem.setVisible(true); filterOptionMenuItem.setOnMenuItemClickListener( mFilterOptionsMenuItemClickListener); } else { // Filter option menu should be not be shown as a overflow menu. filterOptionMenuItem.setVisible(false); } addContactOptionMenuItem.setVisible(false); addContactOptionMenuItem.setVisible(false); callSettingsMenuItem.setVisible(false); callSettingsMenuItem.setVisible(false); fakeMenuItem.setVisible(false); emptyRightMenuItem.setVisible(false); } else { } final boolean showCallSettingsMenu; if (tab != null && tab.getPosition() == TAB_INDEX_DIALER) { private void prepareOptionsMenuForDialerTab(Menu menu) { if (DEBUG) { if (DEBUG) { Log.d(TAG, "onPrepareOptionsMenu(dialer). swipe: " + mDuringSwipe Log.d(TAG, "onPrepareOptionsMenu(dialer). swipe: " + mDuringSwipe + ", user tab click: " + mUserTabClick); + ", user tab click: " + mUserTabClick); } } // get references to menu items final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar); final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option); final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact); final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings); final MenuItem emptyRightMenuItem = menu.findItem(R.id.empty_right_menu_item); // prepare the menu items filterOptionMenuItem.setVisible(false); addContactOptionMenuItem.setVisible(false); if (mDuringSwipe || mUserTabClick) { if (mDuringSwipe || mUserTabClick) { // During horizontal movement, we just show real ActionBar menu items. // During horizontal movement, the real ActionBar menu items are shown searchMenuItem.setVisible(true); searchMenuItem.setVisible(true); searchMenuItem.setOnMenuItemClickListener(mSearchMenuItemClickListener); callSettingsMenuItem.setVisible(true); showCallSettingsMenu = true; // When there is a permanent menu key, there is no overflow icon on the right of // the action bar which would force the search menu item (if it is visible) to the fakeMenuItem.setVisible(ViewConfiguration.get(this).hasPermanentMenuKey()); // left. This is the purpose of showing the emptyRightMenuItem. emptyRightMenuItem.setVisible(ViewConfiguration.get(this).hasPermanentMenuKey()); } else { } else { // This is when the user is looking at the dialer pad. In this case, the real // ActionBar is hidden and fake menu items are shown. searchMenuItem.setVisible(false); searchMenuItem.setVisible(false); // When permanent menu key is _not_ available, the call settings menu should be // If a permanent menu key is available, then we need to show the call settings item // available via DialpadFragment. // so that the call settings item can be invoked by the permanent menu key. showCallSettingsMenu = ViewConfiguration.get(this).hasPermanentMenuKey(); callSettingsMenuItem.setVisible(ViewConfiguration.get(this).hasPermanentMenuKey()); fakeMenuItem.setVisible(false); emptyRightMenuItem.setVisible(false); } } } else { searchMenuItem.setVisible(true); searchMenuItem.setOnMenuItemClickListener(mSearchMenuItemClickListener); showCallSettingsMenu = true; fakeMenuItem.setVisible(ViewConfiguration.get(this).hasPermanentMenuKey() && (tab != null && tab.getPosition() == TAB_INDEX_CALL_LOG)); } } if (tab != null && tab.getPosition() == TAB_INDEX_FAVORITES) { filterOptionMenuItem.setVisible(true); private void prepareOptionsMenuForCallLogTab(Menu menu) { filterOptionMenuItem.setOnMenuItemClickListener( // get references to menu items mFilterOptionsMenuItemClickListener); final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar); addContactOptionMenuItem.setVisible(true); final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option); addContactOptionMenuItem.setIntent( final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact); new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI)); final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings); } else { final MenuItem emptyRightMenuItem = menu.findItem(R.id.empty_right_menu_item); // prepare the menu items searchMenuItem.setVisible(true); filterOptionMenuItem.setVisible(false); filterOptionMenuItem.setVisible(false); addContactOptionMenuItem.setVisible(false); addContactOptionMenuItem.setVisible(false); } if (showCallSettingsMenu) { callSettingsMenuItem.setVisible(true); callSettingsMenuItem.setVisible(true); callSettingsMenuItem.setIntent(DialtactsActivity.getCallSettingsIntent()); emptyRightMenuItem.setVisible(ViewConfiguration.get(this).hasPermanentMenuKey()); } else { callSettingsMenuItem.setVisible(false); } } } return true; private void prepareOptionsMenuForFavoritesTab(Menu menu) { // get references to menu items final MenuItem searchMenuItem = menu.findItem(R.id.search_on_action_bar); final MenuItem filterOptionMenuItem = menu.findItem(R.id.filter_option); final MenuItem addContactOptionMenuItem = menu.findItem(R.id.add_contact); final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings); final MenuItem emptyRightMenuItem = menu.findItem(R.id.empty_right_menu_item); // prepare the menu items searchMenuItem.setVisible(true); filterOptionMenuItem.setVisible(true); addContactOptionMenuItem.setVisible(true); callSettingsMenuItem.setVisible(true); emptyRightMenuItem.setVisible(false); } } @Override @Override Loading
src/com/android/contacts/list/PhoneFavoriteMergedAdapter.java +7 −0 Original line number Original line Diff line number Diff line Loading @@ -76,6 +76,13 @@ public class PhoneFavoriteMergedAdapter extends BaseAdapter implements SectionIn mLoadingView = loadingView; mLoadingView = loadingView; } } @Override public boolean isEmpty() { // Cannot use the super's method here because we add extra rows in getCount() to account // for headers return mContactTileAdapter.getCount() + mContactEntryListAdapter.getCount() == 0; } @Override @Override public int getCount() { public int getCount() { final int contactTileAdapterCount = mContactTileAdapter.getCount(); final int contactTileAdapterCount = mContactTileAdapter.getCount(); Loading
src/com/android/contacts/list/PhoneNumberPickerFragment.java +11 −0 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,8 @@ import com.android.contacts.list.ShortcutIntentBuilder.OnShortcutIntentCreatedLi import com.android.contacts.util.AccountFilterUtil; import com.android.contacts.util.AccountFilterUtil; import android.content.Intent; import android.content.Intent; import android.content.Loader; import android.database.Cursor; import android.net.Uri; import android.net.Uri; import android.os.Bundle; import android.os.Bundle; import android.util.Log; import android.util.Log; Loading @@ -28,6 +30,7 @@ import android.view.MenuItem; import android.view.View; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.ViewGroup; import android.widget.TextView; /** /** * Fragment containing a phone number list for picking. * Fragment containing a phone number list for picking. Loading Loading @@ -188,6 +191,14 @@ public class PhoneNumberPickerFragment extends ContactEntryListFragment<ContactE super.startLoading(); super.startLoading(); } } @Override public void onLoadFinished(Loader<Cursor> loader, Cursor data) { super.onLoadFinished(loader, data); // disable scroll bar if there is no data setVisibleScrollbarEnabled(data.getCount() > 0); } public void setUseCallableUri(boolean useCallableUri) { public void setUseCallableUri(boolean useCallableUri) { mUseCallableUri = useCallableUri; mUseCallableUri = useCallableUri; } } Loading