diff --git a/res/drawable-sw600dp/ic_settings_about_device_filled.xml b/res/drawable-sw600dp/ic_settings_about_device_filled.xml
new file mode 100644
index 00000000000..33ec5fe3f79
--- /dev/null
+++ b/res/drawable-sw600dp/ic_settings_about_device_filled.xml
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/res/drawable/homepage_highlighted_item_background_v2.xml b/res/drawable/homepage_highlighted_item_background_v2.xml
new file mode 100644
index 00000000000..7aa489527a0
--- /dev/null
+++ b/res/drawable/homepage_highlighted_item_background_v2.xml
@@ -0,0 +1,29 @@
+
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/drawable/homepage_selectable_item_background_v2.xml b/res/drawable/homepage_selectable_item_background_v2.xml
new file mode 100644
index 00000000000..d2f79ff9bf6
--- /dev/null
+++ b/res/drawable/homepage_selectable_item_background_v2.xml
@@ -0,0 +1,29 @@
+
+
+
+ -
+
+
+
+
+
+
diff --git a/res/drawable/ic_apps_filled.xml b/res/drawable/ic_apps_filled.xml
new file mode 100644
index 00000000000..5f86a92e013
--- /dev/null
+++ b/res/drawable/ic_apps_filled.xml
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/res/drawable/ic_devices_other_filled.xml b/res/drawable/ic_devices_other_filled.xml
new file mode 100644
index 00000000000..a2ded48c57f
--- /dev/null
+++ b/res/drawable/ic_devices_other_filled.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/drawable/ic_help_filled.xml b/res/drawable/ic_help_filled.xml
new file mode 100644
index 00000000000..79cbb0b131f
--- /dev/null
+++ b/res/drawable/ic_help_filled.xml
@@ -0,0 +1,26 @@
+
+
+
+
diff --git a/res/drawable/ic_notifications_filled.xml b/res/drawable/ic_notifications_filled.xml
new file mode 100644
index 00000000000..3f539132f22
--- /dev/null
+++ b/res/drawable/ic_notifications_filled.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
diff --git a/res/drawable/ic_settings_about_device_filled.xml b/res/drawable/ic_settings_about_device_filled.xml
new file mode 100644
index 00000000000..fb6b2be5884
--- /dev/null
+++ b/res/drawable/ic_settings_about_device_filled.xml
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/res/drawable/ic_settings_accessibility_filled.xml b/res/drawable/ic_settings_accessibility_filled.xml
new file mode 100644
index 00000000000..24a5304be8f
--- /dev/null
+++ b/res/drawable/ic_settings_accessibility_filled.xml
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/res/drawable/ic_settings_battery_filled.xml b/res/drawable/ic_settings_battery_filled.xml
new file mode 100644
index 00000000000..122fb0a40f8
--- /dev/null
+++ b/res/drawable/ic_settings_battery_filled.xml
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/res/drawable/ic_settings_display_filled.xml b/res/drawable/ic_settings_display_filled.xml
new file mode 100644
index 00000000000..ef61cbbb3d2
--- /dev/null
+++ b/res/drawable/ic_settings_display_filled.xml
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/res/drawable/ic_settings_emergency_filled.xml b/res/drawable/ic_settings_emergency_filled.xml
new file mode 100644
index 00000000000..af58127fac3
--- /dev/null
+++ b/res/drawable/ic_settings_emergency_filled.xml
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/res/drawable/ic_settings_location_filled.xml b/res/drawable/ic_settings_location_filled.xml
new file mode 100644
index 00000000000..264952122ad
--- /dev/null
+++ b/res/drawable/ic_settings_location_filled.xml
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/res/drawable/ic_settings_passwords_filled.xml b/res/drawable/ic_settings_passwords_filled.xml
new file mode 100644
index 00000000000..eee77afbf21
--- /dev/null
+++ b/res/drawable/ic_settings_passwords_filled.xml
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/res/drawable/ic_settings_privacy_filled.xml b/res/drawable/ic_settings_privacy_filled.xml
new file mode 100644
index 00000000000..95127351a72
--- /dev/null
+++ b/res/drawable/ic_settings_privacy_filled.xml
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/res/drawable/ic_settings_safety_center_filled.xml b/res/drawable/ic_settings_safety_center_filled.xml
new file mode 100644
index 00000000000..8b6bb6c314a
--- /dev/null
+++ b/res/drawable/ic_settings_safety_center_filled.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
diff --git a/res/drawable/ic_settings_security_filled.xml b/res/drawable/ic_settings_security_filled.xml
new file mode 100644
index 00000000000..fa2a42b6192
--- /dev/null
+++ b/res/drawable/ic_settings_security_filled.xml
@@ -0,0 +1,25 @@
+
+
+
+
\ No newline at end of file
diff --git a/res/drawable/ic_settings_system_dashboard_filled.xml b/res/drawable/ic_settings_system_dashboard_filled.xml
new file mode 100644
index 00000000000..aa2756ebaa0
--- /dev/null
+++ b/res/drawable/ic_settings_system_dashboard_filled.xml
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/res/drawable/ic_settings_wallpaper_filled.xml b/res/drawable/ic_settings_wallpaper_filled.xml
new file mode 100644
index 00000000000..cbcc3b2d5f6
--- /dev/null
+++ b/res/drawable/ic_settings_wallpaper_filled.xml
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/res/drawable/ic_settings_wireless_filled.xml b/res/drawable/ic_settings_wireless_filled.xml
new file mode 100644
index 00000000000..ec85a8b8146
--- /dev/null
+++ b/res/drawable/ic_settings_wireless_filled.xml
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/res/drawable/ic_storage_filled.xml b/res/drawable/ic_storage_filled.xml
new file mode 100644
index 00000000000..2fa3c74a2a9
--- /dev/null
+++ b/res/drawable/ic_storage_filled.xml
@@ -0,0 +1,25 @@
+
+
+
+
diff --git a/res/drawable/ic_volume_up_filled.xml b/res/drawable/ic_volume_up_filled.xml
new file mode 100644
index 00000000000..da3a867c501
--- /dev/null
+++ b/res/drawable/ic_volume_up_filled.xml
@@ -0,0 +1,26 @@
+
+
+
+
diff --git a/res/layout/homepage_preference_v2.xml b/res/layout/homepage_preference_v2.xml
new file mode 100644
index 00000000000..4d441d36842
--- /dev/null
+++ b/res/layout/homepage_preference_v2.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/layout/search_bar_unified_version.xml b/res/layout/search_bar_unified_version.xml
new file mode 100644
index 00000000000..eec8406af7d
--- /dev/null
+++ b/res/layout/search_bar_unified_version.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
diff --git a/res/layout/settings_homepage_app_bar_unified_layout.xml b/res/layout/settings_homepage_app_bar_unified_layout.xml
new file mode 100644
index 00000000000..3e254186822
--- /dev/null
+++ b/res/layout/settings_homepage_app_bar_unified_layout.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
diff --git a/res/layout/settings_homepage_container_v2.xml b/res/layout/settings_homepage_container_v2.xml
new file mode 100644
index 00000000000..73b8f21cebf
--- /dev/null
+++ b/res/layout/settings_homepage_container_v2.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/values/config.xml b/res/values/config.xml
index 6d9d784cb84..4d3a23348e4 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -257,7 +257,7 @@
true
- true
+ false
false
diff --git a/res/xml/top_level_settings_v2.xml b/res/xml/top_level_settings_v2.xml
new file mode 100644
index 00000000000..9cd8dbe1d70
--- /dev/null
+++ b/res/xml/top_level_settings_v2.xml
@@ -0,0 +1,241 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/com/android/settings/core/RoundCornerPreferenceAdapter.java b/src/com/android/settings/core/RoundCornerPreferenceAdapter.java
new file mode 100644
index 00000000000..e5f3763a641
--- /dev/null
+++ b/src/com/android/settings/core/RoundCornerPreferenceAdapter.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2024 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.
+ */
+
+package com.android.settings.core;
+
+import android.os.Handler;
+import android.os.Looper;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceGroupAdapter;
+import androidx.preference.PreferenceViewHolder;
+
+import com.android.settingslib.widget.theme.R;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class RoundCornerPreferenceAdapter extends PreferenceGroupAdapter {
+
+ private static final int ROUND_CORNER_CENTER = 1;
+ private static final int ROUND_CORNER_TOP = 1 << 1;
+ private static final int ROUND_CORNER_BOTTOM = 1 << 2;
+
+ private final PreferenceGroup mPreferenceGroup;
+
+ private List mRoundCornerMappingList;
+
+ private final Handler mHandler;
+
+ private final Runnable mSyncRunnable = new Runnable() {
+ @Override
+ public void run() {
+ updatePreferences();
+ }
+ };
+
+ public RoundCornerPreferenceAdapter(@NonNull PreferenceGroup preferenceGroup) {
+ super(preferenceGroup);
+ mPreferenceGroup = preferenceGroup;
+ mHandler = new Handler(Looper.getMainLooper());
+ updatePreferences();
+ }
+
+ @Override
+ public void onPreferenceHierarchyChange(@NonNull Preference preference) {
+ super.onPreferenceHierarchyChange(preference);
+ mHandler.removeCallbacks(mSyncRunnable);
+ mHandler.post(mSyncRunnable);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull PreferenceViewHolder holder, int position) {
+ super.onBindViewHolder(holder, position);
+ updateBackground(holder, position);
+ }
+
+ @SuppressWarnings("WeakerAccess") /* synthetic access */
+ private void updatePreferences() {
+ mRoundCornerMappingList = new ArrayList<>();
+ mappingPreferenceGroup(mRoundCornerMappingList, mPreferenceGroup);
+ }
+ private void mappingPreferenceGroup(List visibleList, PreferenceGroup group) {
+ int groupSize = group.getPreferenceCount();
+ int firstVisible = 0;
+ int lastVisible = 0;
+ for (int i = 0; i < groupSize; i++) {
+ Preference pref = group.getPreference(i);
+ if (!pref.isVisible()) {
+ continue;
+ }
+
+ //the first visible preference.
+ Preference firstVisiblePref = group.getPreference(firstVisible);
+ if (!firstVisiblePref.isVisible()) {
+ firstVisible = i;
+ }
+
+ int value = 0;
+ if (group instanceof PreferenceCategory) {
+ if (pref instanceof PreferenceCategory) {
+ visibleList.add(value);
+ mappingPreferenceGroup(visibleList, (PreferenceCategory) pref);
+ } else {
+ if (i == firstVisible) {
+ value |= ROUND_CORNER_TOP;
+ }
+
+ value |= ROUND_CORNER_BOTTOM;
+ if (i > lastVisible) {
+ // the last
+ int lastIndex = visibleList.size() - 1;
+ int newValue = visibleList.get(lastIndex) & ~ROUND_CORNER_BOTTOM;
+ visibleList.set(lastIndex, newValue);
+ lastVisible = i;
+ }
+
+ value |= ROUND_CORNER_CENTER;
+ visibleList.add(value);
+ }
+ } else {
+ visibleList.add(value);
+ if (pref instanceof PreferenceCategory) {
+ mappingPreferenceGroup(visibleList, (PreferenceCategory) pref);
+ }
+ }
+ }
+ }
+
+ /** handle roundCorner background */
+ private void updateBackground(PreferenceViewHolder holder, int position) {
+ int CornerType = mRoundCornerMappingList.get(position);
+
+ if ((CornerType & ROUND_CORNER_CENTER) == 0) {
+ return;
+ }
+
+ View v = holder.itemView;
+ if (((CornerType & ROUND_CORNER_TOP) != 0) && ((CornerType & ROUND_CORNER_BOTTOM) == 0)) {
+ // the first
+ v.setBackgroundResource(R.drawable.settingslib_round_background_top);
+ } else if (((CornerType & ROUND_CORNER_BOTTOM) != 0)
+ && ((CornerType & ROUND_CORNER_TOP) == 0)) {
+ // the last
+ v.setBackgroundResource(R.drawable.settingslib_round_background_bottom);
+ } else if (((CornerType & ROUND_CORNER_TOP) != 0)
+ && ((CornerType & ROUND_CORNER_BOTTOM) != 0)) {
+ // the only one preference
+ v.setBackgroundResource(R.drawable.settingslib_round_background);
+ } else {
+ // in the center
+ v.setBackgroundResource(R.drawable.settingslib_round_background_center);
+ }
+ }
+}
diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
index b95d927414a..ffc97dc722c 100644
--- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
+++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
@@ -444,7 +444,9 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
}
if (TextUtils.equals(tile.getCategory(), CategoryKey.CATEGORY_HOMEPAGE)) {
iconDrawable.setTint(Utils.getHomepageIconColor(preference.getContext()));
- } else if (forceRoundedIcon && !TextUtils.equals(mContext.getPackageName(), iconPackage)) {
+ }
+
+ if (forceRoundedIcon && !TextUtils.equals(mContext.getPackageName(), iconPackage)) {
iconDrawable = new AdaptiveIcon(mContext, iconDrawable,
R.dimen.dashboard_tile_foreground_image_inset);
((AdaptiveIcon) iconDrawable).setBackgroundColor(mContext, tile);
diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java
index 566136d887f..e2557ed54ce 100644
--- a/src/com/android/settings/homepage/SettingsHomepageActivity.java
+++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java
@@ -73,6 +73,7 @@ import com.android.settings.activityembedding.ActivityEmbeddingUtils;
import com.android.settings.activityembedding.EmbeddedDeepLinkUtils;
import com.android.settings.core.CategoryMixin;
import com.android.settings.core.FeatureFlags;
+import com.android.settings.flags.Flags;
import com.android.settings.homepage.contextualcards.ContextualCardsFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.safetycenter.SafetyCenterManagerWrapper;
@@ -160,8 +161,12 @@ public class SettingsHomepageActivity extends FragmentActivity implements
if (mAllowUpdateSuggestion) {
Log.i(TAG, "showHomepageWithSuggestion: " + showSuggestion);
mAllowUpdateSuggestion = false;
- mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE);
- mTwoPaneSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE);
+ if (Flags.homepageRevamp()) {
+ mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE);
+ } else {
+ mSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE);
+ mTwoPaneSuggestionView.setVisibility(showSuggestion ? View.VISIBLE : View.GONE);
+ }
}
if (mHomepageView == null) {
@@ -245,7 +250,10 @@ public class SettingsHomepageActivity extends FragmentActivity implements
}
setupEdgeToEdge();
- setContentView(R.layout.settings_homepage_container);
+ setContentView(
+ Flags.homepageRevamp()
+ ? R.layout.settings_homepage_container_v2
+ : R.layout.settings_homepage_container);
mIsTwoPane = ActivityEmbeddingUtils.isAlreadyEmbedded(this);
@@ -397,19 +405,31 @@ public class SettingsHomepageActivity extends FragmentActivity implements
}
private void initSearchBarView() {
- final Toolbar toolbar = findViewById(R.id.search_action_bar);
- FeatureFactory.getFeatureFactory().getSearchFeatureProvider()
- .initSearchToolbar(this /* activity */, toolbar, SettingsEnums.SETTINGS_HOMEPAGE);
-
- if (mIsEmbeddingActivityEnabled) {
- final Toolbar toolbarTwoPaneVersion = findViewById(R.id.search_action_bar_two_pane);
+ if (Flags.homepageRevamp()) {
+ Toolbar toolbar = findViewById(R.id.search_action_bar_unified);
FeatureFactory.getFeatureFactory().getSearchFeatureProvider()
- .initSearchToolbar(this /* activity */, toolbarTwoPaneVersion,
+ .initSearchToolbar(this /* activity */, toolbar,
SettingsEnums.SETTINGS_HOMEPAGE);
+ } else {
+ final Toolbar toolbar = findViewById(R.id.search_action_bar);
+ FeatureFactory.getFeatureFactory().getSearchFeatureProvider()
+ .initSearchToolbar(this /* activity */, toolbar,
+ SettingsEnums.SETTINGS_HOMEPAGE);
+
+ if (mIsEmbeddingActivityEnabled) {
+ final Toolbar toolbarTwoPaneVersion = findViewById(R.id.search_action_bar_two_pane);
+ FeatureFactory.getFeatureFactory().getSearchFeatureProvider()
+ .initSearchToolbar(this /* activity */, toolbarTwoPaneVersion,
+ SettingsEnums.SETTINGS_HOMEPAGE);
+ }
}
}
private void initAvatarView() {
+ if (Flags.homepageRevamp()) {
+ return;
+ }
+
final ImageView avatarView = findViewById(R.id.account_avatar);
final ImageView avatarTwoPaneView = findViewById(R.id.account_avatar_two_pane_version);
if (AvatarViewMixin.isAvatarSupported(this)) {
@@ -458,8 +478,12 @@ public class SettingsHomepageActivity extends FragmentActivity implements
return;
}
- mSuggestionView = findViewById(R.id.suggestion_content);
- mTwoPaneSuggestionView = findViewById(R.id.two_pane_suggestion_content);
+ if (Flags.homepageRevamp()) {
+ mSuggestionView = findViewById(R.id.unified_suggestion_content);
+ } else {
+ mSuggestionView = findViewById(R.id.suggestion_content);
+ mTwoPaneSuggestionView = findViewById(R.id.two_pane_suggestion_content);
+ }
mHomepageView = findViewById(R.id.settings_homepage_container);
// Hide the homepage for preparing the suggestion. If scrolling is needed, the list views
// should be initialized in the invisible homepage view to prevent a scroll flicker.
@@ -467,11 +491,16 @@ public class SettingsHomepageActivity extends FragmentActivity implements
// Schedule a timer to show the homepage and hide the suggestion on timeout.
mHomepageView.postDelayed(() -> showHomepageWithSuggestion(false),
HOMEPAGE_LOADING_TIMEOUT_MS);
- showFragment(new SuggestionFragCreator(fragmentClass, /* isTwoPaneLayout= */ false),
- R.id.suggestion_content);
- if (mIsEmbeddingActivityEnabled) {
- showFragment(new SuggestionFragCreator(fragmentClass, /* isTwoPaneLayout= */ true),
- R.id.two_pane_suggestion_content);
+ if (Flags.homepageRevamp()) {
+ showFragment(new SuggestionFragCreator(fragmentClass, true),
+ R.id.unified_suggestion_content);
+ } else {
+ showFragment(new SuggestionFragCreator(fragmentClass, /* isTwoPaneLayout= */ false),
+ R.id.suggestion_content);
+ if (mIsEmbeddingActivityEnabled) {
+ showFragment(new SuggestionFragCreator(fragmentClass, /* isTwoPaneLayout= */ true),
+ R.id.two_pane_suggestion_content);
+ }
}
}
@@ -736,7 +765,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements
}
private void updateHomepageAppBar() {
- if (!mIsEmbeddingActivityEnabled) {
+ if (Flags.homepageRevamp() || !mIsEmbeddingActivityEnabled) {
return;
}
updateAppBarMinHeight();
@@ -752,7 +781,7 @@ public class SettingsHomepageActivity extends FragmentActivity implements
}
private void updateHomepagePaddings() {
- if (!mIsEmbeddingActivityEnabled) {
+ if (Flags.homepageRevamp() || !mIsEmbeddingActivityEnabled) {
return;
}
if (mIsTwoPane) {
@@ -766,6 +795,9 @@ public class SettingsHomepageActivity extends FragmentActivity implements
}
private void updateAppBarMinHeight() {
+ if (Flags.homepageRevamp()) {
+ return;
+ }
final int searchBarHeight = getResources().getDimensionPixelSize(R.dimen.search_bar_height);
final int margin = getResources().getDimensionPixelSize(
mIsEmbeddingActivityEnabled && mIsTwoPane
diff --git a/src/com/android/settings/homepage/TopLevelSettings.java b/src/com/android/settings/homepage/TopLevelSettings.java
index d1fa7601322..66428611a5b 100644
--- a/src/com/android/settings/homepage/TopLevelSettings.java
+++ b/src/com/android/settings/homepage/TopLevelSettings.java
@@ -42,8 +42,10 @@ import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
import com.android.settings.activityembedding.ActivityEmbeddingUtils;
+import com.android.settings.core.RoundCornerPreferenceAdapter;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.flags.Flags;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.support.SupportPreferenceController;
@@ -84,7 +86,7 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi
@Override
protected int getPreferenceScreenResId() {
- return R.xml.top_level_settings;
+ return Flags.homepageRevamp() ? R.xml.top_level_settings_v2 : R.xml.top_level_settings;
}
@Override
@@ -331,10 +333,14 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi
@Override
protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
- if (!mIsEmbeddingActivityEnabled || !(getActivity() instanceof SettingsHomepageActivity)) {
- return super.onCreateAdapter(preferenceScreen);
+ if (mIsEmbeddingActivityEnabled && (getActivity() instanceof SettingsHomepageActivity)) {
+ return mHighlightMixin.onCreateAdapter(this, preferenceScreen, mScrollNeeded);
}
- return mHighlightMixin.onCreateAdapter(this, preferenceScreen, mScrollNeeded);
+
+ if (Flags.homepageRevamp()) {
+ return new RoundCornerPreferenceAdapter(preferenceScreen);
+ }
+ return super.onCreateAdapter(preferenceScreen);
}
@Override
@@ -376,7 +382,10 @@ public class TopLevelSettings extends DashboardFragment implements SplitLayoutLi
}
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
- new BaseSearchIndexProvider(R.xml.top_level_settings) {
+ new BaseSearchIndexProvider(
+ Flags.homepageRevamp()
+ ? R.xml.top_level_settings_v2
+ : R.xml.top_level_settings) {
@Override
protected boolean isPageSearchEnabled(Context context) {
diff --git a/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java b/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java
index 8084a4811d6..4ba12056630 100644
--- a/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java
+++ b/src/com/android/settings/widget/HighlightableTopLevelPreferenceAdapter.java
@@ -34,6 +34,7 @@ import androidx.window.embedding.ActivityEmbeddingController;
import com.android.settings.R;
import com.android.settings.Utils;
+import com.android.settings.flags.Flags;
import com.android.settings.homepage.SettingsHomepageActivity;
/**
@@ -46,9 +47,13 @@ public class HighlightableTopLevelPreferenceAdapter extends PreferenceGroupAdapt
static final long DELAY_HIGHLIGHT_DURATION_MILLIS = 100L;
private static final int RES_NORMAL_BACKGROUND =
- R.drawable.homepage_selectable_item_background;
+ Flags.homepageRevamp()
+ ? R.drawable.homepage_selectable_item_background_v2
+ : R.drawable.homepage_selectable_item_background;
private static final int RES_HIGHLIGHTED_BACKGROUND =
- R.drawable.homepage_highlighted_item_background;
+ Flags.homepageRevamp()
+ ? R.drawable.homepage_highlighted_item_background_v2
+ : R.drawable.homepage_highlighted_item_background;
private final int mTitleColorNormal;
private final int mTitleColorHighlight;
diff --git a/src/com/android/settings/widget/HomepagePreferenceLayoutHelper.java b/src/com/android/settings/widget/HomepagePreferenceLayoutHelper.java
index 6242e23000c..2251180e5f6 100644
--- a/src/com/android/settings/widget/HomepagePreferenceLayoutHelper.java
+++ b/src/com/android/settings/widget/HomepagePreferenceLayoutHelper.java
@@ -22,6 +22,7 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceViewHolder;
import com.android.settings.R;
+import com.android.settings.flags.Flags;
/** Helper for homepage preference to manage layout. */
public class HomepagePreferenceLayoutHelper {
@@ -39,7 +40,10 @@ public class HomepagePreferenceLayoutHelper {
}
public HomepagePreferenceLayoutHelper(Preference preference) {
- preference.setLayoutResource(R.layout.homepage_preference);
+ preference.setLayoutResource(
+ Flags.homepageRevamp()
+ ? R.layout.homepage_preference_v2
+ : R.layout.homepage_preference);
}
/** Sets whether the icon should be visible */
diff --git a/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java b/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java
index 44f44aa8589..36c48e3cdd7 100644
--- a/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/TopLevelSettingsTest.java
@@ -16,8 +16,6 @@
package com.android.settings.homepage;
-import static com.google.common.truth.Truth.assertThat;
-
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.doReturn;
@@ -59,11 +57,6 @@ public class TopLevelSettingsTest {
mSettings.onAttach(mContext);
}
- @Test
- public void shouldForceRoundedIcon_true() {
- assertThat(mSettings.shouldForceRoundedIcon()).isTrue();
- }
-
@Test
public void onCreatePreferences_shouldTintPreferenceIcon() {
final Preference preference = new Preference(mContext);