Listen to category changes in preference fragment.
Bug: 31781480 Test: make RunSettingsRoboTests Change-Id: I702e524eb3a9e40b653e112dba80d620be3bc9bb
This commit is contained in:
@@ -51,4 +51,9 @@ public interface DashboardFeatureProvider {
|
||||
* group 200, and so on.
|
||||
*/
|
||||
int getPriorityGroup(Tile tile);
|
||||
|
||||
/**
|
||||
* Returns an unique string key for the tile.
|
||||
*/
|
||||
String getDashboardKeyForTile(Tile tile);
|
||||
}
|
||||
|
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settings.dashboard;
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
|
||||
import com.android.settingslib.drawer.CategoryKey;
|
||||
@@ -30,6 +31,8 @@ import java.util.List;
|
||||
*/
|
||||
public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
||||
|
||||
private static final String DASHBOARD_TILE_PREF_KEY_PREFIX = "dashboard_tile_pref_";
|
||||
|
||||
protected final Context mContext;
|
||||
|
||||
private final CategoryManager mCategoryManager;
|
||||
@@ -63,4 +66,15 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
||||
public int getPriorityGroup(Tile tile) {
|
||||
return tile.priority / 100;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDashboardKeyForTile(Tile tile) {
|
||||
if (tile == null || tile.intent == null) {
|
||||
return null;
|
||||
}
|
||||
final StringBuilder sb = new StringBuilder(DASHBOARD_TILE_PREF_KEY_PREFIX);
|
||||
final ComponentName component = tile.intent.getComponent();
|
||||
sb.append(component.getClassName());
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
|
@@ -15,11 +15,14 @@
|
||||
*/
|
||||
package com.android.settings.system;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserManager;
|
||||
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;
|
||||
@@ -27,12 +30,17 @@ import com.android.settings.dashboard.DashboardFeatureProvider;
|
||||
import com.android.settings.dashboard.DashboardTilePreference;
|
||||
import com.android.settings.deviceinfo.SystemUpdatePreferenceController;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
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.List;
|
||||
|
||||
public class SystemDashboardFragment extends SettingsPreferenceFragment {
|
||||
public class SystemDashboardFragment extends SettingsPreferenceFragment
|
||||
implements SettingsDrawerActivity.CategoryListener, Indexable {
|
||||
|
||||
private static final String TAG = "SystemDashboardFrag";
|
||||
|
||||
private DashboardFeatureProvider mDashboardFeatureProvider;
|
||||
private SystemUpdatePreferenceController mSystemUpdatePreferenceController;
|
||||
@@ -51,12 +59,19 @@ public class SystemDashboardFragment extends SettingsPreferenceFragment {
|
||||
new SystemUpdatePreferenceController(context, UserManager.get(context));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
super.onStart();
|
||||
final Activity activity = getActivity();
|
||||
if (activity instanceof SettingsDrawerActivity) {
|
||||
((SettingsDrawerActivity) activity).addCategoryListener(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||
super.onCreatePreferences(savedInstanceState, rootKey);
|
||||
addPreferencesFromResource(R.xml.system_dashboard_fragment);
|
||||
mSystemUpdatePreferenceController.displayPreference(getPreferenceScreen());
|
||||
addDashboardCategoryAsPreference();
|
||||
refreshAllPreferences();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -66,17 +81,46 @@ public class SystemDashboardFragment extends SettingsPreferenceFragment {
|
||||
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();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds dynamic tiles for system category onto PreferenceScreen.
|
||||
* Refresh preference items using system category dashboard items.
|
||||
*/
|
||||
private void addDashboardCategoryAsPreference() {
|
||||
private void refreshAllPreferences() {
|
||||
PreferenceScreen screen = getPreferenceScreen();
|
||||
if (screen != null) {
|
||||
screen.removeAll();
|
||||
}
|
||||
|
||||
final Context context = getContext();
|
||||
final PreferenceScreen screen = getPreferenceScreen();
|
||||
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 DashboardTilePreference pref = new DashboardTilePreference(context);
|
||||
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));
|
||||
@@ -91,5 +135,4 @@ public class SystemDashboardFragment extends SettingsPreferenceFragment {
|
||||
screen.addPreference(pref);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user