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.
|
* group 200, and so on.
|
||||||
*/
|
*/
|
||||||
int getPriorityGroup(Tile tile);
|
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;
|
package com.android.settings.dashboard;
|
||||||
|
|
||||||
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import com.android.settingslib.drawer.CategoryKey;
|
import com.android.settingslib.drawer.CategoryKey;
|
||||||
@@ -30,6 +31,8 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
||||||
|
|
||||||
|
private static final String DASHBOARD_TILE_PREF_KEY_PREFIX = "dashboard_tile_pref_";
|
||||||
|
|
||||||
protected final Context mContext;
|
protected final Context mContext;
|
||||||
|
|
||||||
private final CategoryManager mCategoryManager;
|
private final CategoryManager mCategoryManager;
|
||||||
@@ -63,4 +66,15 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
|||||||
public int getPriorityGroup(Tile tile) {
|
public int getPriorityGroup(Tile tile) {
|
||||||
return tile.priority / 100;
|
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;
|
package com.android.settings.system;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.support.v7.preference.PreferenceScreen;
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsPreferenceFragment;
|
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.dashboard.DashboardTilePreference;
|
||||||
import com.android.settings.deviceinfo.SystemUpdatePreferenceController;
|
import com.android.settings.deviceinfo.SystemUpdatePreferenceController;
|
||||||
import com.android.settings.overlay.FeatureFactory;
|
import com.android.settings.overlay.FeatureFactory;
|
||||||
|
import com.android.settings.search.Indexable;
|
||||||
import com.android.settingslib.drawer.DashboardCategory;
|
import com.android.settingslib.drawer.DashboardCategory;
|
||||||
|
import com.android.settingslib.drawer.SettingsDrawerActivity;
|
||||||
import com.android.settingslib.drawer.Tile;
|
import com.android.settingslib.drawer.Tile;
|
||||||
|
|
||||||
import java.util.List;
|
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 DashboardFeatureProvider mDashboardFeatureProvider;
|
||||||
private SystemUpdatePreferenceController mSystemUpdatePreferenceController;
|
private SystemUpdatePreferenceController mSystemUpdatePreferenceController;
|
||||||
@@ -51,12 +59,19 @@ public class SystemDashboardFragment extends SettingsPreferenceFragment {
|
|||||||
new SystemUpdatePreferenceController(context, UserManager.get(context));
|
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
|
@Override
|
||||||
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||||
super.onCreatePreferences(savedInstanceState, rootKey);
|
super.onCreatePreferences(savedInstanceState, rootKey);
|
||||||
addPreferencesFromResource(R.xml.system_dashboard_fragment);
|
refreshAllPreferences();
|
||||||
mSystemUpdatePreferenceController.displayPreference(getPreferenceScreen());
|
|
||||||
addDashboardCategoryAsPreference();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -66,17 +81,46 @@ public class SystemDashboardFragment extends SettingsPreferenceFragment {
|
|||||||
return handled || super.onPreferenceTreeClick(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();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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 Context context = getContext();
|
||||||
final PreferenceScreen screen = getPreferenceScreen();
|
|
||||||
final DashboardCategory category = mDashboardFeatureProvider.getTilesForSystemCategory();
|
final DashboardCategory category = mDashboardFeatureProvider.getTilesForSystemCategory();
|
||||||
final List<Tile> tiles = category.tiles;
|
final List<Tile> tiles = category.tiles;
|
||||||
|
|
||||||
|
addPreferencesFromResource(R.xml.system_dashboard_fragment);
|
||||||
|
screen = getPreferenceScreen();
|
||||||
|
mSystemUpdatePreferenceController.displayPreference(getPreferenceScreen());
|
||||||
|
|
||||||
for (Tile tile : tiles) {
|
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.setTitle(tile.title);
|
||||||
|
pref.setKey(key);
|
||||||
pref.setSummary(tile.summary);
|
pref.setSummary(tile.summary);
|
||||||
if (tile.icon != null) {
|
if (tile.icon != null) {
|
||||||
pref.setIcon(tile.icon.loadDrawable(context));
|
pref.setIcon(tile.icon.loadDrawable(context));
|
||||||
@@ -91,5 +135,4 @@ public class SystemDashboardFragment extends SettingsPreferenceFragment {
|
|||||||
screen.addPreference(pref);
|
screen.addPreference(pref);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user