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

Commit cb5bb989 authored by y's avatar y
Browse files

[Work] Fix duplicate work button issue

Bug: 195623679
Test: manual
Change-Id: I882c5f7a196e07fa0dab3a2f27437abd233ec782
parent c8295216
Loading
Loading
Loading
Loading
+11 −9
Original line number Original line Diff line number Diff line
@@ -454,7 +454,6 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo
        mAllAppsStore.unregisterIconContainer(mAH[AdapterHolder.WORK].recyclerView);
        mAllAppsStore.unregisterIconContainer(mAH[AdapterHolder.WORK].recyclerView);


        if (mUsingTabs) {
        if (mUsingTabs) {
            setupWorkToggle();
            mAH[AdapterHolder.MAIN].setup(mViewPager.getChildAt(0), mPersonalMatcher);
            mAH[AdapterHolder.MAIN].setup(mViewPager.getChildAt(0), mPersonalMatcher);
            mAH[AdapterHolder.WORK].setup(mViewPager.getChildAt(1), mWorkMatcher);
            mAH[AdapterHolder.WORK].setup(mViewPager.getChildAt(1), mWorkMatcher);
            mAH[AdapterHolder.WORK].recyclerView.setId(R.id.apps_list_view_work);
            mAH[AdapterHolder.WORK].recyclerView.setId(R.id.apps_list_view_work);
@@ -485,6 +484,7 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo
    }
    }


    private void setupWorkToggle() {
    private void setupWorkToggle() {
        removeWorkToggle();
        if (Utilities.ATLEAST_P) {
        if (Utilities.ATLEAST_P) {
            mWorkModeSwitch = (WorkModeSwitch) mLauncher.getLayoutInflater().inflate(
            mWorkModeSwitch = (WorkModeSwitch) mLauncher.getLayoutInflater().inflate(
                    R.layout.work_mode_fab, this, false);
                    R.layout.work_mode_fab, this, false);
@@ -497,6 +497,14 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo
        }
        }
    }
    }


    private void removeWorkToggle() {
        if (mWorkModeSwitch == null) return;
        if (mWorkModeSwitch.getParent() == this) {
            this.removeView(mWorkModeSwitch);
        }
        mWorkModeSwitch = null;
    }

    private void replaceRVContainer(boolean showTabs) {
    private void replaceRVContainer(boolean showTabs) {
        for (int i = 0; i < mAH.length; i++) {
        for (int i = 0; i < mAH.length; i++) {
            if (mAH[i].recyclerView != null) {
            if (mAH[i].recyclerView != null) {
@@ -517,8 +525,10 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo
            mViewPager = (AllAppsPagedView) newView;
            mViewPager = (AllAppsPagedView) newView;
            mViewPager.initParentViews(this);
            mViewPager.initParentViews(this);
            mViewPager.getPageIndicator().setOnActivePageChangedListener(this);
            mViewPager.getPageIndicator().setOnActivePageChangedListener(this);
            setupWorkToggle();
        } else {
        } else {
            mViewPager = null;
            mViewPager = null;
            removeWorkToggle();
        }
        }
    }
    }


@@ -537,14 +547,6 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo
            mWorkModeSwitch.setWorkTabVisible(currentActivePage == AdapterHolder.WORK
            mWorkModeSwitch.setWorkTabVisible(currentActivePage == AdapterHolder.WORK
                    && mAllAppsStore.hasModelFlag(
                    && mAllAppsStore.hasModelFlag(
                    FLAG_HAS_SHORTCUT_PERMISSION | FLAG_QUIET_MODE_CHANGE_PERMISSION));
                    FLAG_HAS_SHORTCUT_PERMISSION | FLAG_QUIET_MODE_CHANGE_PERMISSION));

            if (currentActivePage == AdapterHolder.WORK) {
                if (mWorkModeSwitch.getParent() == null) {
                    addView(mWorkModeSwitch);
                }
            } else {
                removeView(mWorkModeSwitch);
            }
        }
        }
    }
    }


+6 −6
Original line number Original line Diff line number Diff line
@@ -51,6 +51,7 @@ public class WorkModeSwitch extends Button implements Insettable, View.OnClickLi


    @Nullable
    @Nullable
    private KeyboardInsetAnimationCallback mKeyboardInsetAnimationCallback;
    private KeyboardInsetAnimationCallback mKeyboardInsetAnimationCallback;
    private boolean mWorkTabVisible;


    public WorkModeSwitch(Context context) {
    public WorkModeSwitch(Context context) {
        this(context, null, 0);
        this(context, null, 0);
@@ -91,11 +92,10 @@ public class WorkModeSwitch extends Button implements Insettable, View.OnClickLi
     */
     */
    public void setWorkTabVisible(boolean workTabVisible) {
    public void setWorkTabVisible(boolean workTabVisible) {
        clearAnimation();
        clearAnimation();
        if (workTabVisible) {
        mWorkTabVisible = workTabVisible;
        if (workTabVisible && mWorkEnabled) {
            setEnabled(true);
            setEnabled(true);
            if (mWorkEnabled) {
            setVisibility(VISIBLE);
            setVisibility(VISIBLE);
            }
            setAlpha(0);
            setAlpha(0);
            animate().alpha(1).start();
            animate().alpha(1).start();
        } else {
        } else {
@@ -105,7 +105,7 @@ public class WorkModeSwitch extends Button implements Insettable, View.OnClickLi


    @Override
    @Override
    public void onClick(View view) {
    public void onClick(View view) {
        if (Utilities.ATLEAST_P) {
        if (Utilities.ATLEAST_P && mWorkTabVisible) {
            setEnabled(false);
            setEnabled(false);
            Launcher.fromContext(getContext()).getStatsLogManager().logger().log(
            Launcher.fromContext(getContext()).getStatsLogManager().logger().log(
                    LAUNCHER_TURN_OFF_WORK_APPS_TAP);
                    LAUNCHER_TURN_OFF_WORK_APPS_TAP);
@@ -137,7 +137,7 @@ public class WorkModeSwitch extends Button implements Insettable, View.OnClickLi


    @Override
    @Override
    public WindowInsets onApplyWindowInsets(WindowInsets insets) {
    public WindowInsets onApplyWindowInsets(WindowInsets insets) {
        if (Utilities.ATLEAST_R) {
        if (Utilities.ATLEAST_R && mWorkTabVisible) {
            setTranslationY(0);
            setTranslationY(0);
            if (insets.isVisible(WindowInsets.Type.ime())) {
            if (insets.isVisible(WindowInsets.Type.ime())) {
                Insets keyboardInsets = insets.getInsets(WindowInsets.Type.ime());
                Insets keyboardInsets = insets.getInsets(WindowInsets.Type.ime());