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

Commit a96a2d8d authored by Fan Zhang's avatar Fan Zhang
Browse files

Use DashboardFeatureProvider to load homepage tiles.

Adding support to homepage category.

Test: SettingsRoboTests for regression. Will write tests for new feature
soon once we are set on the data structure.
Bug: 31781480

Change-Id: I25fa367fecb643f17e23f0182df7585bf1fcdd02
parent 43d4c41c
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -2275,6 +2275,8 @@
            </intent-filter>
            <meta-data android:name="com.android.settings.category"
                android:value="com.android.settings.category.device" />
            <meta-data android:name="com.android.settings.iacategory"
                       android:value="com.android.settings.category.homepage" />
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                android:value="com.android.settings.fuelgauge.PowerUsageSummary" />
        </activity>
@@ -3030,6 +3032,22 @@
                       android:value="com.android.settings.deletionhelper.AutomaticStorageManagerSettings" />
        </activity>

        <!-- Information architecture host activities -->
        <activity
            android:name=".Settings$SupportActivity"
            android:label="@string/page_tab_title_support"
            android:icon="@drawable/ic_help_24dp">
            <intent-filter android:priority="-1">
                <action android:name="com.android.settings.action.SETTINGS" />
            </intent-filter>
            <meta-data android:name="com.android.settings.iacategory"
                       android:value="com.android.settings.category.homepage" />
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                       android:value="com.android.settings.dashboard.SupportFragment"/>
            <meta-data android:name="com.android.settings.summary"
                       android:resource="@string/help_label" />
        </activity>

        <service
            android:name=".SettingsDumpService"
            android:exported="true"
+4 −0
Original line number Diff line number Diff line
@@ -159,4 +159,8 @@ public class Settings extends SettingsActivity {
    public static class DeviceSettings extends SettingsActivity { /* empty */ }
    public static class PersonalSettings extends SettingsActivity { /* empty */ }
    public static class SystemSettings extends SettingsActivity { /* empty */ }

    // Top level categories for new IA
    public static class SupportActivity extends SettingsActivity {}

}
+34 −7
Original line number Diff line number Diff line
@@ -55,6 +55,7 @@ import com.android.settings.Settings.WifiSettingsActivity;
import com.android.settings.accessibility.AccessibilitySettings;
import com.android.settings.accessibility.AccessibilitySettingsForSetupWizard;
import com.android.settings.accessibility.CaptionPropertiesFragment;
import com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment;
import com.android.settings.accounts.AccountSettings;
import com.android.settings.accounts.AccountSyncSettings;
import com.android.settings.accounts.ChooseAccountActivity;
@@ -74,7 +75,10 @@ import com.android.settings.applications.WriteSettingsDetails;
import com.android.settings.bluetooth.BluetoothSettings;
import com.android.settings.core.instrumentation.SharedPreferencesLogger;
import com.android.settings.dashboard.DashboardContainerFragment;
import com.android.settings.dashboard.DashboardFeatureProvider;
import com.android.settings.dashboard.DashboardSummary;
import com.android.settings.dashboard.SearchResultsSummary;
import com.android.settings.dashboard.SupportFragment;
import com.android.settings.datausage.DataUsageSummary;
import com.android.settings.deletionhelper.AutomaticStorageManagerSettings;
import com.android.settings.deviceinfo.ImeiInformation;
@@ -113,6 +117,7 @@ import com.android.settings.notification.ZenModePrioritySettings;
import com.android.settings.notification.ZenModeScheduleRuleSettings;
import com.android.settings.notification.ZenModeSettings;
import com.android.settings.notification.ZenModeVisualInterruptionSettings;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.print.PrintJobSettingsFragment;
import com.android.settings.print.PrintSettingsFragment;
import com.android.settings.qstile.DevelopmentTiles;
@@ -294,7 +299,7 @@ public class SettingsActivity extends SettingsDrawerActivity
            AccessibilitySettings.class.getName(),
            AccessibilitySettingsForSetupWizard.class.getName(),
            CaptionPropertiesFragment.class.getName(),
            com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment.class.getName(),
            ToggleDaltonizerPreferenceFragment.class.getName(),
            TextToSpeechSettings.class.getName(),
            StorageSettings.class.getName(),
            PrivateVolumeForget.class.getName(),
@@ -357,7 +362,8 @@ public class SettingsActivity extends SettingsDrawerActivity
            MasterClear.class.getName(),
            NightDisplaySettings.class.getName(),
            ManageDomainUrls.class.getName(),
            AutomaticStorageManagerSettings.class.getName()
            AutomaticStorageManagerSettings.class.getName(),
            SupportFragment.class.getName()
    };


@@ -424,6 +430,7 @@ public class SettingsActivity extends SettingsDrawerActivity

    private boolean mNeedToRevertToInitialFragment = false;

    private DashboardFeatureProvider mDashboardFeatureProvider;
    private Intent mResultIntentData;
    private ComponentName mCurrentSuggestion;

@@ -533,7 +540,8 @@ public class SettingsActivity extends SettingsDrawerActivity
    protected void onCreate(Bundle savedState) {
        super.onCreate(savedState);
        long startTime = System.currentTimeMillis();

        mDashboardFeatureProvider =
                FeatureFactory.getFactory(this).getDashboardFeatureProvider(this);
        // Should happen before any call to getIntent()
        getMetaData();

@@ -643,11 +651,15 @@ public class SettingsActivity extends SettingsDrawerActivity
                final Bundle args = new Bundle();
                final String extraName = DashboardContainerFragment.EXTRA_SELECT_SETTINGS_TAB;
                args.putString(extraName, intent.getStringExtra(extraName));

                if (isDashboardFeatureEnabled()) {
                    switchToFragment(DashboardSummary.class.getName(), args, false, false,
                            mInitialTitleResId, mInitialTitle, false);
                } else {
                    switchToFragment(DashboardContainerFragment.class.getName(), args, false, false,
                            mInitialTitleResId, mInitialTitle, false);
                }
            }
        }

        mActionBar = getActionBar();
        if (mActionBar != null) {
@@ -1114,7 +1126,13 @@ public class SettingsActivity extends SettingsDrawerActivity

        if (UserHandle.MU_ENABLED && !isAdmin) {
            // When on restricted users, disable all extra categories (but only the settings ones).
            List<DashboardCategory> categories = getDashboardCategories();
            List<DashboardCategory> categories;
            if (isDashboardFeatureEnabled()) {
                categories = mDashboardFeatureProvider.getAllCategories();
            } else {
                categories = getDashboardCategories();
            }

            for (DashboardCategory category : categories) {
                for (Tile tile : category.tiles) {
                    ComponentName component = tile.intent.getComponent();
@@ -1165,6 +1183,15 @@ public class SettingsActivity extends SettingsDrawerActivity
        }
    }

    @Override
    protected boolean isDashboardFeatureEnabled() {
        if (mDashboardFeatureProvider == null) {
            mDashboardFeatureProvider =
                    FeatureFactory.getFactory(this).getDashboardFeatureProvider(this);
        }
        return mDashboardFeatureProvider.isEnabled();
    }

    // give subclasses access to the Next button
    public boolean hasNextButton() {
        return mNextButton != null;
+17 −2
Original line number Diff line number Diff line
@@ -15,12 +15,27 @@
 */
package com.android.settings.dashboard;

import android.content.Context;
import com.android.settingslib.drawer.DashboardCategory;

import java.util.List;

/**
 * FeatureProvider for dashboard (aka settings homepage).
 */
public interface DashboardFeatureProvider {

    boolean shouldUseNewIALayout(Context context);
    /**
     * Whether or not this feature is enabled.
     */
    boolean isEnabled();

    /**
     * Get tiles (wrapped in {@link DashboardCategory}) for homepage.
     */
    DashboardCategory getTilesForHomepage();

    /**
     * Get all tiles, grouped by category.
     */
    List<DashboardCategory> getAllCategories();
}
+25 −1
Original line number Diff line number Diff line
@@ -18,14 +18,38 @@ package com.android.settings.dashboard;

import android.content.Context;

import com.android.settingslib.drawer.CategoryKey;
import com.android.settingslib.drawer.CategoryManager;
import com.android.settingslib.drawer.DashboardCategory;

import java.util.List;

/**
 * Impl for {@code DashboardFeatureProvider}.
 */
public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {

    protected final Context mContext;

    private final CategoryManager mCategoryManager;

    public DashboardFeatureProviderImpl(Context context) {
        mContext = context;
        mCategoryManager = CategoryManager.get();
    }

    @Override
    public boolean shouldUseNewIALayout(Context context) {
    public boolean isEnabled() {
        return false;
    }

    @Override
    public DashboardCategory getTilesForHomepage() {
        return mCategoryManager.getTilesByCategory(mContext, CategoryKey.CATEGORY_HOMEPAGE);
    }

    @Override
    public List<DashboardCategory> getAllCategories() {
        return mCategoryManager.getCategories(mContext);
    }
}
Loading