}
holder.icon.setImageDrawable(icon);
holder.title.setText(tile.getTitle(mContext));
- if (!TextUtils.isEmpty(tile.summary)) {
- holder.summary.setText(tile.summary);
+ final CharSequence summary = tile.getSummary(mContext);
+ if (!TextUtils.isEmpty(summary)) {
+ holder.summary.setText(summary);
holder.summary.setVisibility(View.VISIBLE);
} else {
holder.summary.setVisibility(View.GONE);
// Only check id and summary for dashboard tile
return localTile.getId() == targetTile.getId()
- && TextUtils.equals(localTile.summary, targetTile.summary);
+ && TextUtils.equals(
+ localTile.getSummaryReference(),
+ targetTile.getSummaryReference());
case TYPE_SUGGESTION_CONTAINER:
case TYPE_CONDITION_CONTAINER:
// Fall through to default
}
private void bindSummary(Preference preference, Tile tile) {
- if (tile.summary != null) {
- preference.setSummary(tile.summary);
+ final CharSequence summary = tile.getSummary(mContext);
+ if (summary != null) {
+ preference.setSummary(summary);
} else if (tile.getMetaData() != null
&& tile.getMetaData().containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) {
// Set a placeholder summary before starting to fetch real summary, this is necessary
ThreadUtils.postOnBackgroundThread(() -> {
final Map<String, IContentProvider> providerMap = new ArrayMap<>();
final String uri = tile.getMetaData().getString(META_DATA_PREFERENCE_SUMMARY_URI);
- final String summary = TileUtils.getTextFromUri(
+ final String summaryFromUri = TileUtils.getTextFromUri(
mContext, uri, providerMap, META_DATA_PREFERENCE_SUMMARY);
- ThreadUtils.postOnMainThread(() -> preference.setSummary(summary));
+ ThreadUtils.postOnMainThread(() -> preference.setSummary(summaryFromUri));
});
} else {
preference.setSummary(R.string.summary_placeholder);
final Preference pref = getPreferenceScreen().findPreference(key);
if (pref == null) {
Log.d(getLogTag(), String.format(
- "Can't find pref by key %s, skipping update summary %s/%s",
- key, tile.getDescription(), tile.summary));
+ "Can't find pref by key %s, skipping update summary %s",
+ key, tile.getDescription()));
return;
}
- pref.setSummary(tile.summary);
+ pref.setSummary(tile.getSummary(pref.getContext()));
}
@Override
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
+import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
Log.d(TAG, "setSummary " + tile.getDescription() + " - " + summary);
}
- updateSummaryIfNeeded(tile, summary);
+ updateSummaryIfNeeded(mActivity.getApplicationContext(), tile, summary);
});
}
@VisibleForTesting
- void updateSummaryIfNeeded(Tile tile, CharSequence summary) {
- if (TextUtils.equals(tile.summary, summary)) {
+ void updateSummaryIfNeeded(Context context, Tile tile, CharSequence summary) {
+ if (TextUtils.equals(tile.getSummary(context), summary)) {
if (DEBUG) {
Log.d(TAG, "Summary doesn't change, skipping summary update for "
+ tile.getDescription());
return;
}
mSummaryTextMap.put(mDashboardFeatureProvider.getDashboardKeyForTile(tile), summary);
- tile.summary = summary;
+ tile.overrideSummary(summary);
if (mSummaryConsumer != null) {
mSummaryConsumer.notifySummaryChanged(tile);
} else {
for (Tile tile : category.getTiles()) {
final String key = mDashboardFeatureProvider.getDashboardKeyForTile(tile);
if (mSummaryTextMap.containsKey(key)) {
- tile.summary = mSummaryTextMap.get(key);
+ tile.overrideSummary(mSummaryTextMap.get(key));
}
}
}
import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_ORDER;
import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT;
+import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY;
import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_TITLE;
import static com.android.settingslib.drawer.TileUtils.PROFILE_ALL;
import static com.android.settingslib.drawer.TileUtils.PROFILE_PRIMARY;
mActivityInfo.name = "class";
mActivityInfo.metaData = new Bundle();
mActivityInfo.metaData.putInt(META_DATA_PREFERENCE_TITLE, R.string.settings_label);
+ mActivityInfo.metaData.putInt(META_DATA_PREFERENCE_SUMMARY,
+ R.string.about_settings_summary);
doReturn(mPackageManager).when(mContext).getPackageManager();
when(mPackageManager.resolveActivity(any(Intent.class), anyInt()))
.thenReturn(new ResolveInfo());
final Preference preference = new Preference(RuntimeEnvironment.application);
final Tile tile = spy(new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE));
mActivityInfo.metaData.putInt(META_DATA_KEY_ORDER, 10);
- tile.summary = "summary";
doReturn(Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565)))
.when(tile).getIcon(any(Context.class));
mActivityInfo.metaData.putString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS, "HI");
preference, tile, "123", Preference.DEFAULT_ORDER);
assertThat(preference.getTitle()).isEqualTo(mContext.getText(R.string.settings_label));
- assertThat(preference.getSummary()).isEqualTo(tile.summary);
+ assertThat(preference.getSummary())
+ .isEqualTo(mContext.getText(R.string.about_settings_summary));
assertThat(preference.getIcon()).isNotNull();
assertThat(preference.getFragment()).isEqualTo(
mActivityInfo.metaData.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS));
@Test
public void bindPreference_noSummary_shouldSetSummaryToPlaceholder() {
final Preference preference = new Preference(RuntimeEnvironment.application);
+ mActivityInfo.metaData.remove(META_DATA_PREFERENCE_SUMMARY);
+
final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
+
mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.VIEW_UNKNOWN,
preference, tile, null /*key */, Preference.DEFAULT_ORDER);
}
@Test
- public void bindPreference_hasSummary_shouldSetSummary() {
- final Preference preference = new Preference(RuntimeEnvironment.application);
- final Tile tile = new Tile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE);
- tile.summary = "test";
- mImpl.bindPreferenceToTile(mActivity, mForceRoundedIcon, MetricsEvent.VIEW_UNKNOWN,
- preference, tile, null /*key */, Preference.DEFAULT_ORDER);
-
- assertThat(preference.getSummary()).isEqualTo(tile.summary);
- }
-
- @Test
@Config(shadows = {ShadowTileUtils.class, ShadowThreadUtils.class})
public void bindPreference_hasSummaryUri_shouldLoadSummaryFromContentProvider() {
final Preference preference = new Preference(RuntimeEnvironment.application);
import static org.mockito.Mockito.when;
import android.app.Activity;
+import android.content.Context;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
private static final String SUMMARY_1 = "summary1";
private static final String SUMMARY_2 = "summary2";
+ private Context mContext;
private SummaryLoader mSummaryLoader;
private boolean mCallbackInvoked;
private Tile mTile;
@Before
public void SetUp() {
MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.application;
mFeatureFactory = FakeFeatureFactory.setupForTest();
final ActivityInfo activityInfo = new ActivityInfo();
activityInfo.packageName = "pkg";
activityInfo.name = "class";
mTile = new Tile(activityInfo, CategoryKey.CATEGORY_HOMEPAGE);
- mTile.summary = SUMMARY_1;
+ mTile.overrideSummary(SUMMARY_1);
mCallbackInvoked = false;
final Activity activity = Robolectric.buildActivity(Activity.class).get();
@Test
public void testUpdateSummaryIfNeeded_SummaryIdentical_NoCallback() {
- mSummaryLoader.updateSummaryIfNeeded(mTile, SUMMARY_1);
+ mSummaryLoader.updateSummaryIfNeeded(mContext, mTile, SUMMARY_1);
assertThat(mCallbackInvoked).isFalse();
}
@Test
public void testUpdateSummaryIfNeeded_SummaryChanged_HasCallback() {
- mSummaryLoader.updateSummaryIfNeeded(mTile, SUMMARY_2);
+ mSummaryLoader.updateSummaryIfNeeded(mContext, mTile, SUMMARY_2);
assertThat(mCallbackInvoked).isTrue();
}
when(mFeatureFactory.dashboardFeatureProvider.getDashboardKeyForTile(tile))
.thenReturn(tile.getKey(RuntimeEnvironment.application));
- mSummaryLoader.updateSummaryIfNeeded(tile, testSummary);
- tile.summary = null;
+ mSummaryLoader.updateSummaryIfNeeded(mContext, tile, testSummary);
+ tile.overrideSummary(null);
mSummaryLoader.updateSummaryToCache(category);
- assertThat(tile.summary).isEqualTo(testSummary);
+ assertThat(tile.getSummary(mContext)).isEqualTo(testSummary);
}
}