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

Commit 17809772 authored by Adam Powell's avatar Adam Powell
Browse files

Fix bug 2859423 - action bar: need a way to choose item in spinner

Change-Id: Idf9c222e5d8f27b4339a6df7d14f3f10dcb4be2c
parent 9511ab83
Loading
Loading
Loading
Loading
+37 −9
Original line number Diff line number Diff line
@@ -19514,6 +19514,17 @@
 visibility="public"
>
</method>
<method name="getSelectedNavigationItem"
 return="int"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
</method>
<method name="getSubtitle"
 return="java.lang.CharSequence"
 abstract="true"
@@ -19601,7 +19612,7 @@
<parameter name="tab" type="android.app.ActionBar.Tab">
</parameter>
</method>
<method name="selectTabAt"
<method name="setBackgroundDrawable"
 return="void"
 abstract="true"
 native="false"
@@ -19611,10 +19622,10 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="position" type="int">
<parameter name="d" type="android.graphics.drawable.Drawable">
</parameter>
</method>
<method name="setBackgroundDrawable"
<method name="setCustomNavigationMode"
 return="void"
 abstract="true"
 native="false"
@@ -19624,10 +19635,10 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="d" type="android.graphics.drawable.Drawable">
<parameter name="view" type="android.view.View">
</parameter>
</method>
<method name="setCustomNavigationMode"
<method name="setDisplayOptions"
 return="void"
 abstract="true"
 native="false"
@@ -19637,7 +19648,7 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="view" type="android.view.View">
<parameter name="options" type="int">
</parameter>
</method>
<method name="setDisplayOptions"
@@ -19652,8 +19663,10 @@
>
<parameter name="options" type="int">
</parameter>
<parameter name="mask" type="int">
</parameter>
</method>
<method name="setDisplayOptions"
<method name="setDropdownNavigationMode"
 return="void"
 abstract="true"
 native="false"
@@ -19663,9 +19676,9 @@
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="options" type="int">
<parameter name="adapter" type="android.widget.SpinnerAdapter">
</parameter>
<parameter name="mask" type="int">
<parameter name="callback" type="android.app.ActionBar.NavigationCallback">
</parameter>
</method>
<method name="setDropdownNavigationMode"
@@ -19682,6 +19695,21 @@
</parameter>
<parameter name="callback" type="android.app.ActionBar.NavigationCallback">
</parameter>
<parameter name="defaultSelectedPosition" type="int">
</parameter>
</method>
<method name="setSelectedNavigationItem"
 return="void"
 abstract="true"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="position" type="int">
</parameter>
</method>
<method name="setStandardNavigationMode"
 return="void"
+29 −7
Original line number Diff line number Diff line
@@ -92,6 +92,35 @@ public abstract class ActionBar {
    public abstract void setDropdownNavigationMode(SpinnerAdapter adapter,
            NavigationCallback callback);

    /**
     * Set the action bar into dropdown navigation mode and supply an adapter that will
     * provide views for navigation choices.
     *
     * @param adapter An adapter that will provide views both to display the current
     *                navigation selection and populate views within the dropdown
     *                navigation menu.
     * @param callback A NavigationCallback that will receive events when the user
     *                 selects a navigation item.
     * @param defaultSelectedPosition Position within the provided adapter that should be
     *                                selected from the outset.
     */
    public abstract void setDropdownNavigationMode(SpinnerAdapter adapter,
            NavigationCallback callback, int defaultSelectedPosition);

    /**
     * Set the selected navigation item in dropdown or tabbed navigation modes.
     *
     * @param position Position of the item to select.
     */
    public abstract void setSelectedNavigationItem(int position);

    /**
     * Get the position of the selected navigation item in dropdown or tabbed navigation modes.
     *
     * @return Position of the selected item.
     */
    public abstract int getSelectedNavigationItem();

    /**
     * Set the action bar into standard navigation mode, supplying a title and subtitle.
     * 
@@ -288,13 +317,6 @@ public abstract class ActionBar {
     */
    public abstract void selectTab(Tab tab);

    /**
     * Select the tab at <code>position</code>
     *
     * @param position Position of the tab to select
     */
    public abstract void selectTabAt(int position);

    /**
     * Callback interface for ActionBar navigation events. 
     */
+34 −7
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.internal.app;

import com.android.internal.view.menu.MenuBuilder;
import com.android.internal.view.menu.MenuItemImpl;
import com.android.internal.view.menu.MenuPopupHelper;
import com.android.internal.view.menu.SubMenuBuilder;
import com.android.internal.widget.ActionBarContextView;
@@ -114,10 +113,18 @@ public class ActionBarImpl extends ActionBar {
    }

    public void setDropdownNavigationMode(SpinnerAdapter adapter, NavigationCallback callback) {
        setDropdownNavigationMode(adapter, callback, -1);
    }

    public void setDropdownNavigationMode(SpinnerAdapter adapter, NavigationCallback callback,
            int defaultSelectedPosition) {
        cleanupTabs();
        mActionView.setCallback(callback);
        mActionView.setNavigationMode(NAVIGATION_MODE_DROPDOWN_LIST);
        mActionView.setDropdownAdapter(adapter);
        if (defaultSelectedPosition >= 0) {
            mActionView.setDropdownSelectedPosition(defaultSelectedPosition);
        }
        mActionView.setCallback(callback);
    }

    public void setStandardNavigationMode() {
@@ -139,6 +146,31 @@ public class ActionBarImpl extends ActionBar {
        mActionView.setCallback(null);
    }

    public void setSelectedNavigationItem(int position) {
        switch (mActionView.getNavigationMode()) {
        case NAVIGATION_MODE_TABS:
            selectTab(mTabs.get(position));
            break;
        case NAVIGATION_MODE_DROPDOWN_LIST:
            mActionView.setDropdownSelectedPosition(position);
            break;
        default:
            throw new IllegalStateException(
                    "setSelectedNavigationItem not valid for current navigation mode");
        }
    }

    public int getSelectedNavigationItem() {
        switch (mActionView.getNavigationMode()) {
        case NAVIGATION_MODE_TABS:
            return mSelectedTab.getPosition();
        case NAVIGATION_MODE_DROPDOWN_LIST:
            return mActionView.getDropdownSelectedPosition();
        default:
            return -1;
        }
    }

    private void cleanupTabs() {
        if (mSelectedTab != null) {
            selectTab(null);
@@ -330,11 +362,6 @@ public class ActionBarImpl extends ActionBar {
        trans.commit();
    }

    @Override
    public void selectTabAt(int position) {
        selectTab(mTabs.get(position));
    }

    /**
     * @hide 
     */
+9 −1
Original line number Diff line number Diff line
@@ -344,6 +344,14 @@ public class ActionBarView extends ViewGroup {
        mSpinner.setAdapter(adapter);
    }

    public void setDropdownSelectedPosition(int position) {
        mSpinner.setSelection(position);
    }

    public int getDropdownSelectedPosition() {
        return mSpinner.getSelectedItemPosition();
    }

    public View getCustomNavigationView() {
        return mCustomNavView;
    }