Adding listener support for color extraction changes
Changing the apps-search layout to use theme attribute instead of hard
coded layout id
Bug: 37616877
Change-Id: Iae601758303f83a2774635f0d88f74d99fc643c3
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index c96c2a7..25995dd 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -212,6 +212,8 @@
private static int NEW_APPS_ANIMATION_INACTIVE_TIMEOUT_SECONDS = 5;
@Thunk static int NEW_APPS_ANIMATION_DELAY = 500;
+ private final ExtractedColors mExtractedColors = new ExtractedColors();
+
@Thunk Workspace mWorkspace;
private View mLauncherView;
@Thunk DragLayer mDragLayer;
@@ -260,7 +262,6 @@
private LauncherModel mModel;
private ModelWriter mModelWriter;
private IconCache mIconCache;
- private ExtractedColors mExtractedColors;
private LauncherAccessibilityDelegate mAccessibilityDelegate;
private Handler mHandler = new Handler();
private boolean mIsResumeFromActionScreenOff;
@@ -392,11 +393,10 @@
// LauncherModel load.
mPaused = false;
- mLauncherView = getLayoutInflater().inflate(R.layout.launcher, null);
+ mLauncherView = LayoutInflater.from(this).inflate(R.layout.launcher, null);
setupViews();
mDeviceProfile.layout(this, false /* notifyListeners */);
- mExtractedColors = new ExtractedColors();
loadExtractedColorsAndColorItems();
mPopupDataProvider = new PopupDataProvider(this);
@@ -465,12 +465,7 @@
@Override
public void onExtractedColorsChanged() {
loadExtractedColorsAndColorItems();
- if (mAllAppsController != null) {
- mAllAppsController.onExtractedColorsChanged();
- }
- if (mLauncherCallbacks != null) {
- mLauncherCallbacks.onExtractedColorsChanged();
- }
+ mExtractedColors.notifyChange();
}
public ExtractedColors getExtractedColors() {
diff --git a/src/com/android/launcher3/LauncherCallbacks.java b/src/com/android/launcher3/LauncherCallbacks.java
index ea4aeb9..d66b14c 100644
--- a/src/com/android/launcher3/LauncherCallbacks.java
+++ b/src/com/android/launcher3/LauncherCallbacks.java
@@ -97,6 +97,4 @@
int getSearchBarHeight();
boolean shouldShowDiscoveryBounce();
-
- void onExtractedColorsChanged();
}
diff --git a/src/com/android/launcher3/allapps/AllAppsTransitionController.java b/src/com/android/launcher3/allapps/AllAppsTransitionController.java
index 121ce4c..9c1854a 100644
--- a/src/com/android/launcher3/allapps/AllAppsTransitionController.java
+++ b/src/com/android/launcher3/allapps/AllAppsTransitionController.java
@@ -42,7 +42,7 @@
* closer to top or closer to the page indicator.
*/
public class AllAppsTransitionController implements TouchController, VerticalPullDetector.Listener,
- View.OnLayoutChangeListener {
+ View.OnLayoutChangeListener, ExtractedColors.OnChangeListener {
private static final String TAG = "AllAppsTrans";
private static final boolean DBG = false;
@@ -107,6 +107,7 @@
mEvaluator = new ArgbEvaluator();
mAllAppsBackgroundColor = Themes.getAttrColor(l, android.R.attr.colorPrimary);
+ mLauncher.getExtractedColors().addOnChangeListener(this);
}
@Override
@@ -288,6 +289,7 @@
mScrimView.setProgress(progress);
}
+ @Override
public void onExtractedColorsChanged() {
if (FeatureFlags.LAUNCHER3_GRADIENT_ALL_APPS) {
if (mGradientView != null) {
diff --git a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
index f291a80..0474419 100644
--- a/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
+++ b/src/com/android/launcher3/allapps/AlphabeticalAppsList.java
@@ -195,6 +195,8 @@
private int mNumPredictedAppsPerRow;
private int mNumAppRowsInAdapter;
+ private boolean mHasSearchDivider = true;
+
public AlphabeticalAppsList(Context context) {
mLauncher = Launcher.getLauncher(context);
mIndexer = new AlphabeticIndexCompat(context);
@@ -343,6 +345,10 @@
onAppsUpdated();
}
+ public void disableSearchDivider() {
+ mHasSearchDivider = false;
+ }
+
/**
* Updates internals when the set of apps are updated.
*/
@@ -429,8 +435,10 @@
}
}
- // Add the search divider
- mAdapterItems.add(AdapterItem.asSearchDivider(position++));
+ if (mHasSearchDivider) {
+ // Add the search divider
+ mAdapterItems.add(AdapterItem.asSearchDivider(position++));
+ }
// Process the predicted app components
mPredictedApps.clear();
diff --git a/src/com/android/launcher3/dynamicui/ExtractedColors.java b/src/com/android/launcher3/dynamicui/ExtractedColors.java
index 3c4aba1..108a21f 100644
--- a/src/com/android/launcher3/dynamicui/ExtractedColors.java
+++ b/src/com/android/launcher3/dynamicui/ExtractedColors.java
@@ -26,6 +26,7 @@
import com.android.launcher3.Utilities;
import com.android.launcher3.config.FeatureFlags;
+import java.util.ArrayList;
import java.util.Arrays;
/**
@@ -80,6 +81,7 @@
private static final String COLOR_SEPARATOR = ",";
+ private final ArrayList<OnChangeListener> mListeners = new ArrayList<>();
private final int[] mColors;
public ExtractedColors() {
@@ -171,4 +173,22 @@
setColorAtIndex(idx, wallpaperPalette == null
? DEFAULT_VALUES[idx] : wallpaperPalette.getVibrantColor(DEFAULT_VALUES[idx]));
}
+
+ public void addOnChangeListener(OnChangeListener listener) {
+ mListeners.add(listener);
+ }
+
+ public void notifyChange() {
+ for (OnChangeListener listener : mListeners) {
+ listener.onExtractedColorsChanged();
+ }
+ }
+
+ /**
+ * Interface for listening for extracted color changes
+ */
+ public interface OnChangeListener {
+
+ void onExtractedColorsChanged();
+ }
}
diff --git a/src/com/android/launcher3/testing/LauncherExtension.java b/src/com/android/launcher3/testing/LauncherExtension.java
index 36df22c..8d43518 100644
--- a/src/com/android/launcher3/testing/LauncherExtension.java
+++ b/src/com/android/launcher3/testing/LauncherExtension.java
@@ -219,8 +219,5 @@
public boolean shouldShowDiscoveryBounce() {
return false;
}
-
- @Override
- public void onExtractedColorsChanged() { }
}
}