Merge "Update summary correctly in Settings dashboard." into nyc-mr1-dev

This commit is contained in:
TreeHugger Robot
2016-08-04 00:18:43 +00:00
committed by Android (Google) Code Review
2 changed files with 41 additions and 19 deletions

View File

@@ -15,7 +15,6 @@
*/ */
package com.android.settings.dashboard; package com.android.settings.dashboard;
import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
@@ -110,21 +109,6 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
return mSuggestions; return mSuggestions;
} }
public Tile getTile(ComponentName component) {
if (mCategories == null) {
return null;
}
for (int i = 0; i < mCategories.size(); i++) {
for (int j = 0; j < mCategories.get(i).tiles.size(); j++) {
Tile tile = mCategories.get(i).tiles.get(j);
if (component.equals(tile.intent.getComponent())) {
return tile;
}
}
}
return null;
}
public void setCategoriesAndSuggestions(List<DashboardCategory> categories, public void setCategoriesAndSuggestions(List<DashboardCategory> categories,
List<Tile> suggestions) { List<Tile> suggestions) {
mSuggestions = suggestions; mSuggestions = suggestions;

View File

@@ -28,8 +28,10 @@ import android.os.Process;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.ArraySet; import android.util.ArraySet;
import android.util.Log; import android.util.Log;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
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.lang.reflect.Field; import java.lang.reflect.Field;
@@ -87,9 +89,24 @@ public class SummaryLoader {
public void run() { public void run() {
// Since tiles are not always cached (like on locale change for instance), // Since tiles are not always cached (like on locale change for instance),
// we need to always get the latest one. // we need to always get the latest one.
Tile tile = mAdapter.getTile(component); if (!(mActivity instanceof SettingsDrawerActivity)) {
if (tile == null) return; if (DEBUG) {
if (DEBUG) Log.d(TAG, "setSummary " + tile.title + " - " + summary); Log.d(TAG, "Can't get category list.");
}
return;
}
final List<DashboardCategory> categories =
((SettingsDrawerActivity) mActivity).getDashboardCategories();
final Tile tile = getTileFromCategory(categories, component);
if (tile == null) {
if (DEBUG) {
Log.d(TAG, "Can't find tile for " + component);
}
return;
}
if (DEBUG) {
Log.d(TAG, "setSummary " + tile.title + " - " + summary);
}
tile.summary = summary; tile.summary = summary;
mAdapter.notifyChanged(tile); mAdapter.notifyChanged(tile);
} }
@@ -187,6 +204,27 @@ public class SummaryLoader {
} }
} }
private Tile getTileFromCategory(List<DashboardCategory> categories, ComponentName component) {
if (categories == null) {
if (DEBUG) {
Log.d(TAG, "Category is null, can't find tile");
}
return null;
}
final int categorySize = categories.size();
for (int i = 0; i < categorySize; i++) {
final DashboardCategory category = categories.get(i);
final int tileCount = category.tiles.size();
for (int j = 0; j < tileCount; j++) {
final Tile tile = category.tiles.get(j);
if (component.equals(tile.intent.getComponent())) {
return tile;
}
}
}
return null;
}
public interface SummaryProvider { public interface SummaryProvider {
void setListening(boolean listening); void setListening(boolean listening);
} }