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

Commit b3381de2 authored by Yanting Yang's avatar Yanting Yang
Browse files

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
parent bfcb1dc2
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -473,4 +473,10 @@

    <!-- Authority of advanced device battery prediction -->
    <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>
+24 −0
Original line number Diff line number Diff line
@@ -184,6 +184,9 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
                pref.setOrder(order + baseOrder);
            }
        }

        overrideTilePosition(tile, pref);

        return outObservers.isEmpty() ? null : outObservers;
    }

@@ -457,4 +460,25 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
        }
        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;
                }
            }
        }
    }
}
+10 −0
Original line number Diff line number Diff line
@@ -100,4 +100,14 @@

    <!-- Uri to query non-public Slice Uris. -->
    <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>
+14 −0
Original line number Diff line number Diff line
@@ -707,4 +707,18 @@ public class DashboardFeatureProviderImplTest {
        assertThat(preference.getSummary()).isEqualTo(
                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);
    }
}