From f03f79b145efbc41063699b5f4b1b895c4a55297 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Mon, 4 Apr 2022 11:26:55 +0800 Subject: [PATCH 1/3] Fix cannot add language Fix: 227972634 Test: manual Change-Id: I3382879e51238be55687072eeb07bb553dafc952 --- .../LocalePickerWithRegionActivity.java | 34 ++----------------- 1 file changed, 2 insertions(+), 32 deletions(-) diff --git a/src/com/android/settings/localepicker/LocalePickerWithRegionActivity.java b/src/com/android/settings/localepicker/LocalePickerWithRegionActivity.java index 70f738395be..bcc55e3a2db 100644 --- a/src/com/android/settings/localepicker/LocalePickerWithRegionActivity.java +++ b/src/com/android/settings/localepicker/LocalePickerWithRegionActivity.java @@ -17,11 +17,8 @@ package com.android.settings.localepicker; import android.app.FragmentTransaction; -import android.app.LocaleManager; import android.content.Intent; import android.os.Bundle; -import android.os.LocaleList; -import android.util.Log; import android.view.MenuItem; import com.android.internal.app.LocalePickerWithRegion; @@ -34,7 +31,6 @@ public class LocalePickerWithRegionActivity extends SettingsBaseActivity implements LocalePickerWithRegion.LocaleSelectedListener { private static final String PARENT_FRAGMENT_NAME = "localeListEditor"; - private static final String TAG = "Calvin"; @Override public void onCreate(Bundle savedInstanceState) { @@ -51,25 +47,6 @@ public class LocalePickerWithRegionActivity extends SettingsBaseActivity .commit(); } - public void setAppDefaultLocale(String languageTag) { - if (languageTag.isEmpty()) { - Log.w(TAG, "[setAppDefaultLocale] No language tag."); - return; - } - setAppDefaultLocale(LocaleList.forLanguageTags(languageTag)); - } - - /** Sets per app's default language to system. */ - public void setAppDefaultLocale(LocaleList localeList) { - LocaleManager mLocaleManager = getSystemService(LocaleManager.class); - if (mLocaleManager == null) { - Log.w(TAG, "LocaleManager is null, and cannot set the app locale up."); - return; - } - mLocaleManager.setApplicationLocales("com.android.vending", localeList); - } - - @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { @@ -81,16 +58,9 @@ public class LocalePickerWithRegionActivity extends SettingsBaseActivity @Override public void onLocaleSelected(LocaleStore.LocaleInfo locale) { - /*final Intent intent = new Intent(); + final Intent intent = new Intent(); intent.putExtra(LocaleListEditor.INTENT_LOCALE_KEY, locale); - setResult(RESULT_OK, intent);*/ - if(locale != null) { - Log.d("Calvin", "onLocaleSelected " + locale.getLocale().toLanguageTag()); - setAppDefaultLocale(locale.getLocale().toLanguageTag()); - } else { - Log.d("Calvin", "onLocaleSelected null"); - setAppDefaultLocale(""); - } + setResult(RESULT_OK, intent); finish(); } From bab799899d63278df9699688ad68d055536feaeb Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Thu, 24 Mar 2022 16:53:25 +0800 Subject: [PATCH 2/3] Fix Flicker for ZenCustomRuleSettingsBase Fix the following flicker on pages under: Notifications -> Do Not Disturb -> Schedules -> [One Schedule] 1. Do Not Disturb behavior 2. (1) -> Create custom settings for this schedule 3. (2) -> Calls 4. (2) -> Messages 5. (2) -> Display options for hidden notifications 6. (4) -> custom Fix: 226523115 Test: On Pixel Phone Change-Id: Ief9963091847d58654f26851616563ae910716a5 --- ...ractZenCustomRulePreferenceController.java | 15 ++---- .../zen/ZenCustomRuleSettingsBase.java | 47 +++++++++++++------ ...lePrioritySendersPreferenceController.java | 5 +- .../zen/ZenRuleCustomPrefContrTestBase.java | 4 +- .../zen/ZenRulePreferenceControllerTest.java | 2 +- .../zen/ZenRuleCustomPrefContrTestBase.java | 2 +- 6 files changed, 42 insertions(+), 33 deletions(-) diff --git a/src/com/android/settings/notification/zen/AbstractZenCustomRulePreferenceController.java b/src/com/android/settings/notification/zen/AbstractZenCustomRulePreferenceController.java index bf700804634..f6997c6f433 100644 --- a/src/com/android/settings/notification/zen/AbstractZenCustomRulePreferenceController.java +++ b/src/com/android/settings/notification/zen/AbstractZenCustomRulePreferenceController.java @@ -19,9 +19,6 @@ package com.android.settings.notification.zen; import android.app.AutomaticZenRule; import android.content.Context; import android.os.Bundle; -import android.util.Slog; - -import androidx.preference.Preference; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.core.lifecycle.Lifecycle; @@ -37,23 +34,19 @@ abstract class AbstractZenCustomRulePreferenceController extends super(context, key, lifecycle); } - @Override - public void updateState(Preference preference) { - if (mId != null) { - mRule = mBackend.getAutomaticZenRule(mId); - } - } - @Override public boolean isAvailable() { return mRule != null; } - public void onResume(AutomaticZenRule rule, String id) { + public void setIdAndRule(String id, AutomaticZenRule rule) { mId = id; mRule = rule; } + public void onResume() { + } + Bundle createBundle() { Bundle bundle = new Bundle(); bundle.putString(ZenCustomRuleSettings.RULE_ID, mId); diff --git a/src/com/android/settings/notification/zen/ZenCustomRuleSettingsBase.java b/src/com/android/settings/notification/zen/ZenCustomRuleSettingsBase.java index 28a3046b608..b417e032915 100644 --- a/src/com/android/settings/notification/zen/ZenCustomRuleSettingsBase.java +++ b/src/com/android/settings/notification/zen/ZenCustomRuleSettingsBase.java @@ -37,10 +37,11 @@ abstract class ZenCustomRuleSettingsBase extends ZenModeSettingsBase { String mId; AutomaticZenRule mRule; List mControllers = new ArrayList<>(); + private boolean mIsFirstLaunch = true; /** * @return null if no preference category exists - */ + */ abstract String getPreferenceCategoryKey(); @Override @@ -49,7 +50,7 @@ abstract class ZenCustomRuleSettingsBase extends ZenModeSettingsBase { Bundle bundle = getArguments(); if (bundle != null && bundle.containsKey(RULE_ID)) { mId = bundle.getString(RULE_ID); - mRule = mBackend.getAutomaticZenRule(mId); + updateRule(); } else { Log.d(TAG, "Rule id required to set custom dnd rule config settings"); this.finish(); @@ -57,13 +58,32 @@ abstract class ZenCustomRuleSettingsBase extends ZenModeSettingsBase { } @Override - public void onZenModeConfigChanged() { - super.onZenModeConfigChanged(); + public void onResume() { + super.onResume(); updatePreferences(); } - public void updatePreferences() { + @Override + public void onZenModeConfigChanged() { + super.onZenModeConfigChanged(); + updatePreferences(); + updatePreferenceStates(); + } + + private void updateRule() { mRule = mBackend.getAutomaticZenRule(mId); + for (AbstractPreferenceController controller : mControllers) { + AbstractZenCustomRulePreferenceController zenRuleController = + (AbstractZenCustomRulePreferenceController) controller; + zenRuleController.setIdAndRule(mId, mRule); + } + } + + public void updatePreferences() { + if (!mIsFirstLaunch) { + updateRule(); + } + final PreferenceScreen screen = getPreferenceScreen(); String categoryKey = getPreferenceCategoryKey(); if (categoryKey != null) { @@ -78,10 +98,15 @@ abstract class ZenCustomRuleSettingsBase extends ZenModeSettingsBase { for (AbstractPreferenceController controller : mControllers) { AbstractZenCustomRulePreferenceController zenRuleController = (AbstractZenCustomRulePreferenceController) controller; - zenRuleController.onResume(mRule, mId); - zenRuleController.displayPreference(screen); - updatePreference(zenRuleController); + zenRuleController.onResume(); + if (!mIsFirstLaunch) { + // In first launch, displayPreference() is already called in DashboardFragment's + // onCreate(). + zenRuleController.displayPreference(screen); + } } + + mIsFirstLaunch = false; } @Override @@ -89,12 +114,6 @@ abstract class ZenCustomRuleSettingsBase extends ZenModeSettingsBase { return R.string.help_uri_interruptions; } - @Override - public void onResume() { - super.onResume(); - updatePreferences(); - } - Bundle createZenRuleBundle() { Bundle bundle = new Bundle(); bundle.putString(RULE_ID, mId); diff --git a/src/com/android/settings/notification/zen/ZenRulePrioritySendersPreferenceController.java b/src/com/android/settings/notification/zen/ZenRulePrioritySendersPreferenceController.java index cee496ee8b0..8f5e0e10bb3 100644 --- a/src/com/android/settings/notification/zen/ZenRulePrioritySendersPreferenceController.java +++ b/src/com/android/settings/notification/zen/ZenRulePrioritySendersPreferenceController.java @@ -18,7 +18,6 @@ package com.android.settings.notification.zen; import static com.android.settings.notification.zen.ZenPrioritySendersHelper.UNKNOWN; -import android.app.AutomaticZenRule; import android.content.Context; import android.os.AsyncTask; import android.service.notification.ZenPolicy; @@ -79,8 +78,8 @@ public class ZenRulePrioritySendersPreferenceController } @Override - public void onResume(AutomaticZenRule rule, String id) { - super.onResume(rule, id); + public void onResume() { + super.onResume(); if (mIsMessages) { updateChannelCounts(); } diff --git a/tests/robotests/src/com/android/settings/notification/zen/ZenRuleCustomPrefContrTestBase.java b/tests/robotests/src/com/android/settings/notification/zen/ZenRuleCustomPrefContrTestBase.java index 8c9cfc0d91f..339ba8e2e79 100644 --- a/tests/robotests/src/com/android/settings/notification/zen/ZenRuleCustomPrefContrTestBase.java +++ b/tests/robotests/src/com/android/settings/notification/zen/ZenRuleCustomPrefContrTestBase.java @@ -20,8 +20,6 @@ import android.app.AutomaticZenRule; import android.app.NotificationManager; import android.service.notification.ZenPolicy; -import com.android.settings.notification.zen.AbstractZenCustomRulePreferenceController; - import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; @@ -37,6 +35,6 @@ abstract class ZenRuleCustomPrefContrTestBase { void updateControllerZenPolicy(ZenPolicy policy) { mRule.setZenPolicy(policy); - getController().onResume(mRule, RULE_ID); + getController().setIdAndRule(RULE_ID, mRule); } } diff --git a/tests/robotests/src/com/android/settings/notification/zen/ZenRulePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/zen/ZenRulePreferenceControllerTest.java index 10eae066f2d..514b4f696a2 100644 --- a/tests/robotests/src/com/android/settings/notification/zen/ZenRulePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/zen/ZenRulePreferenceControllerTest.java @@ -78,7 +78,7 @@ public class ZenRulePreferenceControllerTest { assertTrue(mController.mRule == null); assertTrue(mController.mId == null); - mController.onResume(rule, id); + mController.setIdAndRule(id, rule); assertEquals(mController.mId, id); assertEquals(mController.mRule, rule); diff --git a/tests/unit/src/com/android/settings/notification/zen/ZenRuleCustomPrefContrTestBase.java b/tests/unit/src/com/android/settings/notification/zen/ZenRuleCustomPrefContrTestBase.java index 53ad7c5995e..c26394389b3 100644 --- a/tests/unit/src/com/android/settings/notification/zen/ZenRuleCustomPrefContrTestBase.java +++ b/tests/unit/src/com/android/settings/notification/zen/ZenRuleCustomPrefContrTestBase.java @@ -35,6 +35,6 @@ abstract class ZenRuleCustomPrefContrTestBase { void updateControllerZenPolicy(ZenPolicy policy) { mRule.setZenPolicy(policy); - getController().onResume(mRule, RULE_ID); + getController().setIdAndRule(RULE_ID, mRule); } } From f7a95e4b5d4829bafc833366d67cda22e2f3162e Mon Sep 17 00:00:00 2001 From: Lucas Silva Date: Mon, 4 Apr 2022 16:20:53 -0400 Subject: [PATCH 3/3] Fix bug where not all views are getting disabled alpha applied. This ensures that we apply the alpha recursively to all views when the item is disabled/enabled. Bug: 226573932 Test: locally on device Change-Id: I28ee1a21227706d01a6e4f6284871bf78af983f5 --- res/color/dream_card_color_state_list.xml | 2 -- res/color/dream_card_text_color_state_list.xml | 2 -- src/com/android/settings/dream/DreamAdapter.java | 13 ++++--------- 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/res/color/dream_card_color_state_list.xml b/res/color/dream_card_color_state_list.xml index 0799dc6fab0..b0c86bba121 100644 --- a/res/color/dream_card_color_state_list.xml +++ b/res/color/dream_card_color_state_list.xml @@ -17,8 +17,6 @@ - \ No newline at end of file diff --git a/res/color/dream_card_text_color_state_list.xml b/res/color/dream_card_text_color_state_list.xml index 2ca7a0fc915..438855fd233 100644 --- a/res/color/dream_card_text_color_state_list.xml +++ b/res/color/dream_card_text_color_state_list.xml @@ -17,8 +17,6 @@ - \ No newline at end of file diff --git a/src/com/android/settings/dream/DreamAdapter.java b/src/com/android/settings/dream/DreamAdapter.java index 27c32dfbe79..ea64e8dd1d8 100644 --- a/src/com/android/settings/dream/DreamAdapter.java +++ b/src/com/android/settings/dream/DreamAdapter.java @@ -50,14 +50,13 @@ public class DreamAdapter extends RecyclerView.Adapter * View holder for each {@link IDreamItem}. */ private class DreamViewHolder extends RecyclerView.ViewHolder { - private static final int VALUE_ENABLED_ALPHA = 255; private final TextView mTitleView; private final TextView mSummaryView; private final ImageView mPreviewView; private final ImageView mPreviewPlaceholderView; private final Button mCustomizeButton; private final Context mContext; - private final int mDisabledAlphaValue; + private final float mDisabledAlphaValue; DreamViewHolder(View view, Context context) { super(view); @@ -67,7 +66,7 @@ public class DreamAdapter extends RecyclerView.Adapter mTitleView = view.findViewById(R.id.title_text); mSummaryView = view.findViewById(R.id.summary_text); mCustomizeButton = view.findViewById(R.id.customize_button); - mDisabledAlphaValue = (int) (ColorUtil.getDisabledAlpha(context) * VALUE_ENABLED_ALPHA); + mDisabledAlphaValue = ColorUtil.getDisabledAlpha(context); } /** @@ -93,7 +92,6 @@ public class DreamAdapter extends RecyclerView.Adapter mPreviewView.setImageDrawable(null); mPreviewPlaceholderView.setVisibility(View.VISIBLE); } - mPreviewView.setImageAlpha(getAlpha()); final Drawable icon = item.isActive() ? mContext.getDrawable(R.drawable.ic_dream_check_circle) @@ -105,7 +103,6 @@ public class DreamAdapter extends RecyclerView.Adapter final int iconSize = mContext.getResources().getDimensionPixelSize( R.dimen.dream_item_icon_size); icon.setBounds(0, 0, iconSize, iconSize); - icon.setAlpha(getAlpha()); mTitleView.setCompoundDrawablesRelative(icon, null, null, null); if (item.isActive()) { @@ -130,10 +127,6 @@ public class DreamAdapter extends RecyclerView.Adapter setEnabledStateOnViews(itemView, mEnabled); } - private int getAlpha() { - return mEnabled ? VALUE_ENABLED_ALPHA : mDisabledAlphaValue; - } - /** * Makes sure the view (and any children) get the enabled state changed. */ @@ -145,6 +138,8 @@ public class DreamAdapter extends RecyclerView.Adapter for (int i = vg.getChildCount() - 1; i >= 0; i--) { setEnabledStateOnViews(vg.getChildAt(i), enabled); } + } else { + v.setAlpha(enabled ? 1 : mDisabledAlphaValue); } } }