Add storage dashborad page.

Refactor shared dashboard page display logic between storage and
system page.

Bug: 31800690
Test: RunSettingsRoboTests

Change-Id: I7eb86f590b79ab871bdb383fb2f5326790beb193
This commit is contained in:
Fan Zhang
2016-10-04 13:21:06 -07:00
parent 27991718e5
commit bb6d2608e9
13 changed files with 377 additions and 93 deletions

View File

@@ -15,40 +15,30 @@
*/
package com.android.settings.system;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.UserManager;
import android.provider.SearchIndexableResource;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import android.text.TextUtils;
import android.util.Log;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.dashboard.DashboardFeatureProvider;
import com.android.settings.dashboard.DashboardTilePreference;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.deviceinfo.SystemUpdatePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settingslib.drawer.DashboardCategory;
import com.android.settingslib.drawer.SettingsDrawerActivity;
import com.android.settingslib.drawer.Tile;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class SystemDashboardFragment extends SettingsPreferenceFragment
public class SystemDashboardFragment extends DashboardFragment
implements SettingsDrawerActivity.CategoryListener, Indexable {
private static final String TAG = "SystemDashboardFrag";
private DashboardFeatureProvider mDashboardFeatureProvider;
private SystemUpdatePreferenceController mSystemUpdatePreferenceController;
@Override
public int getMetricsCategory() {
return SYSTEM_CATEGORY_FRAGMENT;
@@ -57,19 +47,8 @@ public class SystemDashboardFragment extends SettingsPreferenceFragment
@Override
public void onAttach(Context context) {
super.onAttach(context);
mDashboardFeatureProvider =
FeatureFactory.getFactory(context).getDashboardFeatureProvider(context);
mSystemUpdatePreferenceController =
new SystemUpdatePreferenceController(context, UserManager.get(context));
}
@Override
public void onStart() {
super.onStart();
final Activity activity = getActivity();
if (activity instanceof SettingsDrawerActivity) {
((SettingsDrawerActivity) activity).addCategoryListener(this);
}
addPreferenceController(
new SystemUpdatePreferenceController(context, UserManager.get(context)));
}
@Override
@@ -78,22 +57,6 @@ public class SystemDashboardFragment extends SettingsPreferenceFragment
refreshAllPreferences();
}
@Override
public boolean onPreferenceTreeClick(Preference preference) {
final boolean handled =
mSystemUpdatePreferenceController.handlePreferenceTreeClick(preference);
return handled || super.onPreferenceTreeClick(preference);
}
@Override
public void onStop() {
super.onStop();
final Activity activity = getActivity();
if (activity instanceof SettingsDrawerActivity) {
((SettingsDrawerActivity) activity).remCategoryListener(this);
}
}
@Override
public void onCategoriesChanged() {
refreshAllPreferences();
@@ -108,36 +71,13 @@ public class SystemDashboardFragment extends SettingsPreferenceFragment
screen.removeAll();
}
final Context context = getContext();
final DashboardCategory category = mDashboardFeatureProvider.getTilesForSystemCategory();
final List<Tile> tiles = category.tiles;
addPreferencesFromResource(R.xml.system_dashboard_fragment);
screen = getPreferenceScreen();
mSystemUpdatePreferenceController.displayPreference(getPreferenceScreen());
for (Tile tile : tiles) {
final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile);
if (TextUtils.isEmpty(key)) {
Log.d(TAG, "tile does not contain a key, skipping " + tile);
continue;
}
final Preference pref = new DashboardTilePreference(context);
pref.setTitle(tile.title);
pref.setKey(key);
pref.setSummary(tile.summary);
if (tile.icon != null) {
pref.setIcon(tile.icon.loadDrawable(context));
}
if (tile.intent != null) {
pref.setIntent(tile.intent);
}
// Use negated priority for order, because tile priority is based on intent-filter
// (larger value has higher priority). However pref order defines smaller value has
// higher priority.
pref.setOrder(-tile.priority);
screen.addPreference(pref);
}
getPreferenceController(SystemUpdatePreferenceController.class)
.displayPreference(getPreferenceScreen());
displayTilesAsPreference(TAG, getPreferenceScreen(),
mDashboardFeatureProvider.getTilesForSystemCategory());
}
/**