Currently set home & lock wallpaper show as circles
Let both currently set home & lock screen wallpapers will be shown as circles in wallpaper selecting page.
Bug: 186486890
Test: manual
Change-Id: I76be6ac99bf6df7cf6e8a433cd670cd8859eedfd
diff --git a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java
index 2277a99..9fff1f3 100755
--- a/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java
+++ b/src/com/android/wallpaper/picker/individual/IndividualPickerFragment.java
@@ -31,6 +31,8 @@
import android.os.Bundle;
import android.os.Handler;
import android.service.wallpaper.WallpaperService;
+import android.text.TextUtils;
+import android.util.ArraySet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MenuItem;
@@ -99,6 +101,7 @@
import java.util.List;
import java.util.Optional;
import java.util.Random;
+import java.util.Set;
/**
* Displays the Main UI for picking an individual wallpaper image.
@@ -294,6 +297,7 @@
private WallpaperManager mWallpaperManager;
private int mWallpaperDestination;
private WallpaperSelectedListener mWallpaperSelectedListener;
+ private Set<String> mAppliedWallpaperIds;
public static IndividualPickerFragment newInstance(String collectionId) {
Bundle args = new Bundle();
@@ -509,6 +513,8 @@
}
}
+ mAppliedWallpaperIds = getAppliedWallpaperIds();
+
mImageGrid = (RecyclerView) view.findViewById(R.id.wallpaper_grid);
if (mFormFactor == FormFactorChecker.FORM_FACTOR_DESKTOP) {
int gridPaddingPx = getResources().getDimensionPixelSize(R.dimen.grid_padding_desktop);
@@ -1095,6 +1101,28 @@
}
}
+ private Set<String> getAppliedWallpaperIds() {
+ WallpaperPreferences prefs =
+ InjectorProvider.getInjector().getPreferences(getContext());
+ android.app.WallpaperInfo wallpaperInfo = mWallpaperManager.getWallpaperInfo();
+ Set<String> appliedWallpaperIds = new ArraySet<>();
+
+ String homeWallpaperId = wallpaperInfo != null ? wallpaperInfo.getServiceName()
+ : prefs.getHomeWallpaperRemoteId();
+ if (!TextUtils.isEmpty(homeWallpaperId)) {
+ appliedWallpaperIds.add(homeWallpaperId);
+ }
+
+ boolean isLockWallpaperApplied =
+ mWallpaperManager.getWallpaperId(WallpaperManager.FLAG_LOCK) >= 0;
+ String lockWallpaperId = prefs.getLockWallpaperRemoteId();
+ if (isLockWallpaperApplied && !TextUtils.isEmpty(lockWallpaperId)) {
+ appliedWallpaperIds.add(lockWallpaperId);
+ }
+
+ return appliedWallpaperIds;
+ }
+
private void showCheckMarkAndBorderForAppliedWallpaper(boolean show) {
updateAppliedStatus(mAppliedWallpaperInfo, show);
if (mSelectedWallpaperInfo == null) {
@@ -1377,8 +1405,7 @@
? position - 1 : position;
WallpaperInfo wallpaper = mWallpapers.get(wallpaperIndex);
((IndividualHolder) holder).bindWallpaper(wallpaper);
- String appliedWallpaperId = getAppliedWallpaperId();
- boolean isWallpaperApplied = wallpaper.getWallpaperId().equals(appliedWallpaperId);
+ boolean isWallpaperApplied = mAppliedWallpaperIds.contains(wallpaper.getWallpaperId());
boolean isWallpaperSelected = wallpaper.equals(mSelectedWallpaperInfo);
boolean hasUserSelectedWallpaper = mSelectedWallpaperInfo != null;