Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 552aa6f5 authored by Maurice Chu's avatar Maurice Chu Committed by Android (Google) Code Review
Browse files

Merge "Hide scrollbar in search mode when no contacts in Phone" into jb-dev

parents b7a1ef20 747cfd0a
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -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"/>
+1 −1
Original line number Original line Diff line number Diff line
@@ -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>
+108 −60
Original line number Original line Diff line number Diff line
@@ -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
+7 −0
Original line number Original line Diff line number Diff line
@@ -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();
+11 −0
Original line number Original line Diff line number Diff line
@@ -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;
@@ -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.
@@ -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;
    }
    }