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

Commit 076dcdfd authored by Brandon Dayauon's avatar Brandon Dayauon
Browse files

Fix custom buttons with translated string

The reason why the buttons aren't being updated with the translated string is because the cache the views get the string from is not updated/loaded with the new language.
Rather, the update happens after the view has been inflated. With this change, when the string cache updates in bindStringCache(), we update the UI right then.

bug: 280958663
test: Manual
Change-Id: I7a49ee401d5a5f3268cfaef1abee8153e913a8ce
parent fb261c42
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3048,6 +3048,7 @@ public class Launcher extends StatefulActivity<LauncherState>
    @Override
    public void bindStringCache(StringCache cache) {
        mStringCache = cache;
        mAppsView.updateWorkUI();
    }

    @Override
+27 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@
package com.android.launcher3.allapps;

import static com.android.launcher3.allapps.ActivityAllAppsContainerView.AdapterHolder.SEARCH;
import static com.android.launcher3.allapps.BaseAllAppsAdapter.VIEW_TYPE_WORK_DISABLED_CARD;
import static com.android.launcher3.allapps.BaseAllAppsAdapter.VIEW_TYPE_WORK_EDU_CARD;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_COUNT;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_TAP_ON_PERSONAL_TAB;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_ALLAPPS_TAP_ON_WORK_TAB;
@@ -77,6 +79,7 @@ import com.android.launcher3.keyboard.FocusedItemDecorator;
import com.android.launcher3.model.StringCache;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.testing.shared.TestProtocol;
import com.android.launcher3.util.Executors;
import com.android.launcher3.util.ItemInfoMatcher;
import com.android.launcher3.util.Themes;
import com.android.launcher3.views.ActivityContext;
@@ -1114,6 +1117,30 @@ public class ActivityAllAppsContainerView<T extends Context & ActivityContext>
        return view.getGlobalVisibleRect(new Rect());
    }

    /** Called in Launcher#bindStringCache() to update the UI when cache is updated. */
    public void updateWorkUI() {
        setDeviceManagementResources();
        if (mWorkManager.getWorkModeSwitch() != null) {
            mWorkManager.getWorkModeSwitch().updateStringFromCache();
        }
        inflateWorkCardsIfNeeded();
    }

    private void inflateWorkCardsIfNeeded() {
        AllAppsRecyclerView workRV = mAH.get(AdapterHolder.WORK).mRecyclerView;
        if (workRV != null) {
            for (int i = 0; i < workRV.getChildCount(); i++) {
                View currentView  = workRV.getChildAt(i);
                int currentItemViewType = workRV.getChildViewHolder(currentView).getItemViewType();
                if (currentItemViewType == VIEW_TYPE_WORK_EDU_CARD) {
                    ((WorkEduCard) currentView).updateStringFromCache();
                } else if (currentItemViewType == VIEW_TYPE_WORK_DISABLED_CARD) {
                    ((WorkPausedCard) currentView).updateStringFromCache();
                }
            }
        }
    }

    @VisibleForTesting
    public boolean isPersonalTabVisible() {
        return isDescendantViewVisible(R.id.tab_personal);
+9 −5
Original line number Diff line number Diff line
@@ -76,11 +76,7 @@ public class WorkEduCard extends FrameLayout implements
        super.onFinishInflate();
        findViewById(R.id.action_btn).setOnClickListener(this);

        StringCache cache = mActivityContext.getStringCache();
        if (cache != null) {
            TextView title = findViewById(R.id.work_apps_paused_title);
            title.setText(cache.workProfileEdu);
        }
        updateStringFromCache();
    }

    @Override
@@ -121,4 +117,12 @@ public class WorkEduCard extends FrameLayout implements
    public void setPosition(int position) {
        mPosition = position;
    }

    public void updateStringFromCache() {
        StringCache cache = mActivityContext.getStringCache();
        if (cache != null) {
            TextView title = findViewById(R.id.work_apps_paused_title);
            title.setText(cache.workProfileEdu);
        }
    }
}
+8 −4
Original line number Diff line number Diff line
@@ -92,10 +92,7 @@ public class WorkModeSwitch extends LinearLayout implements Insettable,
        }

        setInsets(mActivityContext.getDeviceProfile().getInsets());
        StringCache cache = mActivityContext.getStringCache();
        if (cache != null) {
            mTextView.setText(cache.workProfilePauseButton);
        }
        updateStringFromCache();

        getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING);
    }
@@ -213,4 +210,11 @@ public class WorkModeSwitch extends LinearLayout implements Insettable,
    public int getScrollThreshold() {
        return mScrollThreshold;
    }

    public void updateStringFromCache(){
        StringCache cache = mActivityContext.getStringCache();
        if (cache != null) {
            mTextView.setText(cache.workProfilePauseButton);
        }
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -57,6 +57,10 @@ public class WorkPausedCard extends LinearLayout implements View.OnClickListener
        mBtn = findViewById(R.id.enable_work_apps);
        mBtn.setOnClickListener(this);

        updateStringFromCache();
    }

    public void updateStringFromCache() {
        StringCache cache = mActivityContext.getStringCache();
        if (cache != null) {
            setWorkProfilePausedResources(cache);
Loading