Loading src/com/android/settings/dashboard/DashboardFeatureProvider.java +5 −0 Original line number Diff line number Diff line Loading @@ -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); } src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +14 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.settings.dashboard; import android.content.ComponentName; import android.content.Context; import com.android.settingslib.drawer.CategoryKey; Loading @@ -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; Loading Loading @@ -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(); } } src/com/android/settings/system/SystemDashboardFragment.java +53 −10 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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 Loading @@ -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)); Loading @@ -91,5 +135,4 @@ public class SystemDashboardFragment extends SettingsPreferenceFragment { screen.addPreference(pref); } } } Loading
src/com/android/settings/dashboard/DashboardFeatureProvider.java +5 −0 Original line number Diff line number Diff line Loading @@ -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); }
src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +14 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.settings.dashboard; import android.content.ComponentName; import android.content.Context; import com.android.settingslib.drawer.CategoryKey; Loading @@ -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; Loading Loading @@ -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(); } }
src/com/android/settings/system/SystemDashboardFragment.java +53 −10 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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 Loading @@ -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)); Loading @@ -91,5 +135,4 @@ public class SystemDashboardFragment extends SettingsPreferenceFragment { screen.addPreference(pref); } } }