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

Commit 2b305844 authored by David van Tonder's avatar David van Tonder Committed by Gerrit Code Review
Browse files

Merge "Make navigation bar ready for per-user configuration." into cm-10.1

parents 163009b8 c2d2a695
Loading
Loading
Loading
Loading
+44 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2010, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
**     http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/key_icon"
        android:layout_width="80dip"
        android:layout_height="match_parent"
        android:padding="4dip"
        android:scaleType="centerInside"/>

    <TextView
        android:id="@+id/key_text"
        android:layout_width="0dip"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:minHeight="?android:attr/listPreferredItemHeightSmall"
        android:textAppearance="?android:attr/textAppearanceListItemSmall"
        android:textColor="?android:attr/textColorAlertDialogListItem"
        android:gravity="center_vertical"
        android:paddingEnd="16dip"
        android:ellipsize="marquee"/>

</LinearLayout>
+5 −0
Original line number Diff line number Diff line
@@ -97,6 +97,11 @@ public class NavigationButtons {
            sideResource = sR;
            this.key = key;
        }

        @Override
        public String toString() {
            return "ButtonInfo[" + key + "]";
        }
    }

    // Available buttons string constants
+270 −313

File changed.

Preview size limit exceeded, changes collapsed.

+54 −38
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Message;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.util.AttributeSet;
import android.util.Slog;
import android.view.animation.AccelerateInterpolator;
@@ -54,6 +55,7 @@ import com.android.systemui.statusbar.DelegateViewHelper;
import com.android.systemui.statusbar.NavigationButtons;
import com.android.systemui.statusbar.NavigationButtons.ButtonInfo;
import com.android.systemui.statusbar.policy.DeadZone;
import com.android.systemui.statusbar.policy.KeyButtonView;

public class NavigationBarView extends LinearLayout implements BaseStatusBar.NavigationBarCallback {
    final static boolean DEBUG = false;
@@ -67,7 +69,7 @@ public class NavigationBarView extends LinearLayout implements BaseStatusBar.Nav
    final static boolean ANIMATE_HIDE_TRANSITION = false; // turned off because it introduces unsightly delay when videos goes to full screen
    final static String NAVBAR_EDIT = "android.intent.action.NAVBAR_EDIT";

    private static boolean EDIT_MODE;
    private boolean mInEditMode;
    private NavbarEditor mEditBar;
    private NavBarReceiver mNavBarReceiver;
    private OnClickListener mRecentsClickListener;
@@ -146,25 +148,38 @@ public class NavigationBarView extends LinearLayout implements BaseStatusBar.Nav

    private H mHandler = new H();

    public static boolean getEditMode() {
        return EDIT_MODE;
    public boolean isInEditMode() {
        return mInEditMode;
    }

    protected void setListener(OnClickListener RecentsClickListener, OnTouchListener RecentsPreloadListener, OnTouchListener HomeSearchActionListener) {
        mRecentsClickListener = RecentsClickListener;
        mRecentsPreloadListener = RecentsPreloadListener;
        mHomeSearchActionListener = HomeSearchActionListener;
    /* package */ void setListeners(OnClickListener recentsClickListener,
            OnTouchListener recentsPreloadListener, OnTouchListener homeSearchActionListener) {
        mRecentsClickListener = recentsClickListener;
        mRecentsPreloadListener = recentsPreloadListener;
        mHomeSearchActionListener = homeSearchActionListener;
    }

    protected void toggleButtonListener(boolean enable) {
    private void removeButtonListeners() {
        ViewGroup container = (ViewGroup) mCurrentView.findViewById(R.id.container);
        int viewCount = container.getChildCount();
        for (int i = 0; i < viewCount; i++) {
            View button = container.getChildAt(i);
            if (button instanceof KeyButtonView) {
                button.setOnClickListener(null);
                button.setOnTouchListener(null);
            }
        }
    }

    protected void updateButtonListeners() {
        View recentView = mCurrentView.findViewWithTag(NavigationButtons.RECENT);
        if (recentView != null) {
            recentView.setOnClickListener(enable ? mRecentsClickListener : null);
            recentView.setOnTouchListener(enable ? mRecentsPreloadListener : null);
            recentView.setOnClickListener(mRecentsClickListener);
            recentView.setOnTouchListener(mRecentsPreloadListener);
        }
        View homeView = mCurrentView.findViewWithTag(NavigationButtons.HOME);
        if (homeView != null) {
            homeView.setOnTouchListener(enable ? mHomeSearchActionListener : null);
            homeView.setOnTouchListener(mHomeSearchActionListener);
        }
    }

@@ -198,7 +213,8 @@ public class NavigationBarView extends LinearLayout implements BaseStatusBar.Nav
        updateResources();

        mNavBarReceiver = new NavBarReceiver();
        mContext.registerReceiver(mNavBarReceiver, new IntentFilter(NAVBAR_EDIT));
        mContext.registerReceiverAsUser(mNavBarReceiver, UserHandle.ALL,
                new IntentFilter(NAVBAR_EDIT), null, null);
    }

    protected void updateResources() {
@@ -214,29 +230,27 @@ public class NavigationBarView extends LinearLayout implements BaseStatusBar.Nav
        public void onReceive(Context context, Intent intent) {
            boolean edit = intent.getBooleanExtra("edit", false);
            boolean save = intent.getBooleanExtra("save", false);
            if (edit != EDIT_MODE) {
                EDIT_MODE = edit;
                if (EDIT_MODE) {
                    toggleButtonListener(false);
                    mEditBar.setupListeners();
                    mEditBar.updateKeys();
            if (edit != mInEditMode) {
                mInEditMode = edit;
                if (edit) {
                    removeButtonListeners();
                    mEditBar.setEditMode(true);
                } else {
                    mEditBar.dismissDialog();
                    if (save) {
                        mEditBar.saveKeys();
                    }
                    mEditBar.reInflate();
                    mEditBar = new NavbarEditor((ViewGroup) mCurrentView.findViewById(R.id.container), mVertical);
                    mEditBar.updateKeys();
                    toggleButtonListener(true);
                    if (save) {
                        mEditBar.updateLowLights(mCurrentView);
                    mEditBar.setEditMode(false);
                    updateSettings();
                }
                    ((ViewGroup) mCurrentView.findViewById(R.id.mid_nav_buttons)).setLayoutTransition(
                            new LayoutTransition());
            }
        }
    }

    public void updateSettings() {
        mEditBar.updateKeys();
        removeButtonListeners();
        updateButtonListeners();
        setDisabledFlags(mDisabledFlags, true /* force */);
    }

    public void notifyScreenOn(boolean screenOn) {
@@ -448,10 +462,8 @@ public class NavigationBarView extends LinearLayout implements BaseStatusBar.Nav
        } else {
            mVertical = getWidth() > 0 && getHeight() > getWidth();
        }
        mEditBar = new NavbarEditor((ViewGroup) mCurrentView.findViewById(R.id.container), mVertical);
        mEditBar.updateKeys();
        mEditBar.updateLowLights(mCurrentView);
        toggleButtonListener(true);
        mEditBar = new NavbarEditor(mCurrentView, mVertical);
        updateSettings();

        mDeadZone = (DeadZone) mCurrentView.findViewById(R.id.deadzone);

@@ -470,12 +482,16 @@ public class NavigationBarView extends LinearLayout implements BaseStatusBar.Nav
    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        super.onLayout(changed, l, t, r, b);
        ViewGroup mid_nav = (ViewGroup) mCurrentView.findViewById(R.id.mid_nav_buttons);
        View vViews[] = new View[mid_nav.getChildCount()];
        for (int cc = 0;cc < mid_nav.getChildCount(); cc++) {
            vViews[cc] = mid_nav.getChildAt(cc);

        ViewGroup midNavButtons = (ViewGroup) mCurrentView.findViewById(R.id.mid_nav_buttons);
        int count = midNavButtons.getChildCount();
        View buttons[] = new View[count];

        for (int i = 0; i < count; i++) {
            buttons[i] = midNavButtons.getChildAt(i);
        }
        mDelegateHelper.setInitialTouchRegion(vViews);

        mDelegateHelper.setInitialTouchRegion(buttons);
    }

    @Override
+7 −2
Original line number Diff line number Diff line
@@ -924,7 +924,8 @@ public class PhoneStatusBar extends BaseStatusBar {

    private void prepareNavigationBarView() {
        mNavigationBarView.reorient();
        mNavigationBarView.setListener(mRecentsClickListener,mRecentsPreloadOnTouchListener, mHomeSearchActionListener);
        mNavigationBarView.setListeners(mRecentsClickListener,
                mRecentsPreloadOnTouchListener, mHomeSearchActionListener);
        updateSearchPanel();
    }

@@ -2707,6 +2708,9 @@ public class PhoneStatusBar extends BaseStatusBar {
        if (mClock != null) {
            mClock.updateSettings();
        }
        if (mNavigationBarView != null) {
            mNavigationBarView.updateSettings();
        }
        super.userSwitched(newUserId);
    }

@@ -2927,7 +2931,8 @@ public class PhoneStatusBar extends BaseStatusBar {
    @Override
    protected boolean shouldDisableNavbarGestures() {
        return !isDeviceProvisioned()
                || mExpandedVisible || NavigationBarView.getEditMode()
                || mExpandedVisible
                || (mNavigationBarView != null && mNavigationBarView.isInEditMode())
                || (mDisabled & StatusBarManager.DISABLE_SEARCH) != 0;
    }

Loading