Override homepage tile positions for silky home
Create configs to record the packages and orders of homepage tiles and then according to these data to override homepage tile positions. Bug: 168166015 Test: visual with turning on/off silky home Change-Id: I3fcb54ac531a124101084bb40064b5a7227bf311
This commit is contained in:
@@ -473,4 +473,10 @@
|
|||||||
|
|
||||||
<!-- Authority of advanced device battery prediction -->
|
<!-- Authority of advanced device battery prediction -->
|
||||||
<string name="config_battery_prediction_authority" translatable="false"></string>
|
<string name="config_battery_prediction_authority" translatable="false"></string>
|
||||||
|
|
||||||
|
<!-- Packages for overriding tile positions on the homepage -->
|
||||||
|
<string-array name="config_homepage_tile_packages" translatable="false"/>
|
||||||
|
|
||||||
|
<!-- Orders for overriding tile positions on the homepage -->
|
||||||
|
<integer-array name="config_homepage_tile_orders"/>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -184,6 +184,9 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
|||||||
pref.setOrder(order + baseOrder);
|
pref.setOrder(order + baseOrder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
overrideTilePosition(tile, pref);
|
||||||
|
|
||||||
return outObservers.isEmpty() ? null : outObservers;
|
return outObservers.isEmpty() ? null : outObservers;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -457,4 +460,25 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
|||||||
}
|
}
|
||||||
return eligibleUsers;
|
return eligibleUsers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void overrideTilePosition(Tile tile, Preference pref) {
|
||||||
|
if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SILKY_HOME)
|
||||||
|
&& TextUtils.equals(tile.getCategory(), CategoryKey.CATEGORY_HOMEPAGE)) {
|
||||||
|
final String[] homepageTilePackages = mContext.getResources().getStringArray(
|
||||||
|
R.array.config_homepage_tile_packages);
|
||||||
|
final int[] homepageTileOrders = mContext.getResources().getIntArray(
|
||||||
|
R.array.config_homepage_tile_orders);
|
||||||
|
if (homepageTilePackages.length == 0
|
||||||
|
|| homepageTilePackages.length != homepageTileOrders.length) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < homepageTilePackages.length; i++) {
|
||||||
|
if (TextUtils.equals(tile.getPackageName(), homepageTilePackages[i])) {
|
||||||
|
pref.setOrder(homepageTileOrders[i]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -100,4 +100,14 @@
|
|||||||
|
|
||||||
<!-- Uri to query non-public Slice Uris. -->
|
<!-- Uri to query non-public Slice Uris. -->
|
||||||
<string name="config_non_public_slice_query_uri" translatable="false">content://com.android.settings.slices/test</string>
|
<string name="config_non_public_slice_query_uri" translatable="false">content://com.android.settings.slices/test</string>
|
||||||
|
|
||||||
|
<!-- Packages for overriding tile positions on the homepage -->
|
||||||
|
<string-array name="config_homepage_tile_packages" translatable="false">
|
||||||
|
<item>com.android.settings</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<!-- Orders for overriding tile positions on the homepage -->
|
||||||
|
<integer-array name="config_homepage_tile_orders">
|
||||||
|
<item>100</item>
|
||||||
|
</integer-array>
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -707,4 +707,18 @@ public class DashboardFeatureProviderImplTest {
|
|||||||
assertThat(preference.getSummary()).isEqualTo(
|
assertThat(preference.getSummary()).isEqualTo(
|
||||||
mContext.getText(R.string.about_settings_summary));
|
mContext.getText(R.string.about_settings_summary));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Config(qualifiers = "mcc999")
|
||||||
|
public void bindPreference_specificHomepageTile_shouldOverridePosition() {
|
||||||
|
FeatureFlagUtils.setEnabled(mContext, FeatureFlags.SILKY_HOME, true);
|
||||||
|
final Preference preference = new Preference(RuntimeEnvironment.application);
|
||||||
|
final Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
|
||||||
|
|
||||||
|
mImpl.bindPreferenceToTileAndGetObservers(mActivity, mForceRoundedIcon,
|
||||||
|
MetricsEvent.VIEW_UNKNOWN, preference, tile, null /*key */,
|
||||||
|
Preference.DEFAULT_ORDER);
|
||||||
|
|
||||||
|
assertThat(preference.getOrder()).isEqualTo(100);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user