diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2018-07-10 18:58:46 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2018-07-10 18:58:46 +0000 |
commit | 3437bba8659111e06a9fb690c8b099368d4a24c3 (patch) | |
tree | 07c29f50293916a675a8f68e36beeccaaaefe37d | |
parent | 7edf3d3f9ae83ac72ee73bc4ebb63aea18a2b7d7 (diff) | |
parent | 83fd25e3af387325eb99ddd05b4601af9ad3de03 (diff) | |
download | android_packages_apps_Trebuchet-3437bba8659111e06a9fb690c8b099368d4a24c3.tar.gz android_packages_apps_Trebuchet-3437bba8659111e06a9fb690c8b099368d4a24c3.tar.bz2 android_packages_apps_Trebuchet-3437bba8659111e06a9fb690c8b099368d4a24c3.zip |
Merge "Moving some abstract classes to interfaces, to better use java-8 features" into ub-launcher3-master
-rw-r--r-- | src/com/android/launcher3/IconCache.java | 19 | ||||
-rw-r--r-- | src/com/android/launcher3/InstallShortcutReceiver.java | 12 | ||||
-rw-r--r-- | src/com/android/launcher3/Launcher.java | 8 | ||||
-rw-r--r-- | src/com/android/launcher3/LauncherModel.java | 15 | ||||
-rw-r--r-- | src/com/android/launcher3/OverviewButtonClickListener.java | 51 | ||||
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 10 | ||||
-rw-r--r-- | src/com/android/launcher3/graphics/BitmapRenderer.java | 54 | ||||
-rw-r--r-- | src/com/android/launcher3/model/LoaderTask.java | 14 | ||||
-rw-r--r-- | src/com/android/launcher3/util/FloatRange.java | 39 | ||||
-rw-r--r-- | src/com/android/launcher3/util/ItemInfoMatcher.java | 84 | ||||
-rw-r--r-- | src/com/android/launcher3/util/Provider.java | 13 |
11 files changed, 67 insertions, 252 deletions
diff --git a/src/com/android/launcher3/IconCache.java b/src/com/android/launcher3/IconCache.java index c5ca183f7..f496600c7 100644 --- a/src/com/android/launcher3/IconCache.java +++ b/src/com/android/launcher3/IconCache.java @@ -478,7 +478,8 @@ public class IconCache { info.contentDescription = ""; info.usingLowResIcon = false; } else { - getTitleAndIcon(info, new ActivityInfoProvider(info.getIntent(), info.user), + Intent intent = info.getIntent(); + getTitleAndIcon(info, () -> mLauncherApps.resolveActivity(intent, info.user), true, useLowResIcon); } } @@ -869,22 +870,6 @@ public class IconCache { } } - private class ActivityInfoProvider extends Provider<LauncherActivityInfo> { - - private final Intent mIntent; - private final UserHandle mUser; - - public ActivityInfoProvider(Intent intent, UserHandle user) { - mIntent = intent; - mUser = user; - } - - @Override - public LauncherActivityInfo get() { - return mLauncherApps.resolveActivity(mIntent, mUser); - } - } - /** * Interface for receiving itemInfo with high-res icon. */ diff --git a/src/com/android/launcher3/InstallShortcutReceiver.java b/src/com/android/launcher3/InstallShortcutReceiver.java index fe8a841be..b9d45fb02 100644 --- a/src/com/android/launcher3/InstallShortcutReceiver.java +++ b/src/com/android/launcher3/InstallShortcutReceiver.java @@ -47,7 +47,6 @@ import com.android.launcher3.shortcuts.ShortcutInfoCompat; import com.android.launcher3.shortcuts.ShortcutKey; import com.android.launcher3.util.PackageManagerHelper; import com.android.launcher3.util.Preconditions; -import com.android.launcher3.util.Provider; import com.android.launcher3.util.Thunk; import org.json.JSONException; @@ -486,13 +485,10 @@ public class InstallShortcutReceiver extends BroadcastReceiver { if (Looper.myLooper() == LauncherModel.getWorkerLooper()) { app.getIconCache().getTitleAndIcon(si, activityInfo, false /* useLowResIcon */); } else { - app.getModel().updateAndBindShortcutInfo(new Provider<ShortcutInfo>() { - @Override - public ShortcutInfo get() { - app.getIconCache().getTitleAndIcon( - si, activityInfo, false /* useLowResIcon */); - return si; - } + app.getModel().updateAndBindShortcutInfo(() -> { + app.getIconCache().getTitleAndIcon( + si, activityInfo, false /* useLowResIcon */); + return si; }); } return Pair.create((ItemInfo) si, (Object) activityInfo); diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index c3c4f5e5e..9f16857b6 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -74,7 +74,6 @@ import android.view.animation.OvershootInterpolator; import android.widget.Toast; import com.android.launcher3.DropTarget.DragObject; -import com.android.launcher3.Workspace.ItemOperator; import com.android.launcher3.accessibility.LauncherAccessibilityDelegate; import com.android.launcher3.allapps.AllAppsContainerView; import com.android.launcher3.allapps.AllAppsTransitionController; @@ -1052,12 +1051,7 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns, } public FolderIcon findFolderIcon(final long folderIconId) { - return (FolderIcon) mWorkspace.getFirstMatch(new ItemOperator() { - @Override - public boolean evaluate(ItemInfo info, View view) { - return info != null && info.id == folderIconId; - } - }); + return (FolderIcon) mWorkspace.getHomescreenIconByItemId(folderIconId); } /** diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index 37538ae0d..19aa795fe 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -620,15 +620,12 @@ public class LauncherModel extends BroadcastReceiver } public void updateAndBindShortcutInfo(final ShortcutInfo si, final ShortcutInfoCompat info) { - updateAndBindShortcutInfo(new Provider<ShortcutInfo>() { - @Override - public ShortcutInfo get() { - si.updateFromDeepShortcutInfo(info, mApp.getContext()); - LauncherIcons li = LauncherIcons.obtain(mApp.getContext()); - li.createShortcutIcon(info).applyTo(si); - li.recycle(); - return si; - } + updateAndBindShortcutInfo(() -> { + si.updateFromDeepShortcutInfo(info, mApp.getContext()); + LauncherIcons li = LauncherIcons.obtain(mApp.getContext()); + li.createShortcutIcon(info).applyTo(si); + li.recycle(); + return si; }); } diff --git a/src/com/android/launcher3/OverviewButtonClickListener.java b/src/com/android/launcher3/OverviewButtonClickListener.java deleted file mode 100644 index dd670d2a7..000000000 --- a/src/com/android/launcher3/OverviewButtonClickListener.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.android.launcher3; - -import android.view.View; - -import com.android.launcher3.userevent.nano.LauncherLogProto.Action; - -/** - * A specialized listener for Overview buttons where both clicks and long clicks are logged - * handled the same via {@link #handleViewClick(View)}. - */ -public abstract class OverviewButtonClickListener implements View.OnClickListener, - View.OnLongClickListener { - - private int mControlType; /** ControlType enum as defined in {@link Action.Touch} */ - - public OverviewButtonClickListener(int controlType) { - mControlType = controlType; - } - - public void attachTo(View v) { - v.setOnClickListener(this); - v.setOnLongClickListener(this); - } - - @Override - public void onClick(View view) { - if (shouldPerformClick(view)) { - handleViewClick(view, Action.Touch.TAP); - } - } - - @Override - public boolean onLongClick(View view) { - if (shouldPerformClick(view)) { - handleViewClick(view, Action.Touch.LONGPRESS); - } - return true; - } - - private boolean shouldPerformClick(View view) { - return !Launcher.getLauncher(view.getContext()).getWorkspace().isSwitchingState(); - } - - private void handleViewClick(View view, int action) { - handleViewClick(view); - Launcher.getLauncher(view.getContext()).getUserEventDispatcher() - .logActionOnControl(action, mControlType); - } - - public abstract void handleViewClick(View view); -}
\ No newline at end of file diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index abba9c490..67bdd3bdd 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -3034,16 +3034,6 @@ public class Workspace extends PagedView<WorkspacePageIndicator> }); } - public View getViewForTag(final Object tag) { - return getFirstMatch(new ItemOperator() { - - @Override - public boolean evaluate(ItemInfo info, View v) { - return info == tag; - } - }); - } - public LauncherAppWidgetHostView getWidgetForAppWidgetId(final int appWidgetId) { return (LauncherAppWidgetHostView) getFirstMatch(new ItemOperator() { diff --git a/src/com/android/launcher3/graphics/BitmapRenderer.java b/src/com/android/launcher3/graphics/BitmapRenderer.java index 3d11c448a..2a7f20ea3 100644 --- a/src/com/android/launcher3/graphics/BitmapRenderer.java +++ b/src/com/android/launcher3/graphics/BitmapRenderer.java @@ -23,32 +23,30 @@ import android.os.Build; import com.android.launcher3.Utilities; -public class BitmapRenderer { - - public static final boolean USE_HARDWARE_BITMAP = Utilities.ATLEAST_P; - - public static Bitmap createSoftwareBitmap(int width, int height, Renderer renderer) { - Bitmap result = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - renderer.draw(new Canvas(result)); - return result; - } - - @TargetApi(Build.VERSION_CODES.P) - public static Bitmap createHardwareBitmap(int width, int height, Renderer renderer) { - if (!USE_HARDWARE_BITMAP) { - return createSoftwareBitmap(width, height, renderer); - } - - Picture picture = new Picture(); - renderer.draw(picture.beginRecording(width, height)); - picture.endRecording(); - return Bitmap.createBitmap(picture); - } - - /** - * Interface representing a bitmap draw operation. - */ - public interface Renderer { - void draw(Canvas out); - } +/** + * Interface representing a bitmap draw operation. + */ +public interface BitmapRenderer { + + boolean USE_HARDWARE_BITMAP = Utilities.ATLEAST_P; + + static Bitmap createSoftwareBitmap(int width, int height, BitmapRenderer renderer) { + Bitmap result = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); + renderer.draw(new Canvas(result)); + return result; + } + + @TargetApi(Build.VERSION_CODES.P) + static Bitmap createHardwareBitmap(int width, int height, BitmapRenderer renderer) { + if (!USE_HARDWARE_BITMAP) { + return createSoftwareBitmap(width, height, renderer); + } + + Picture picture = new Picture(); + renderer.draw(picture.beginRecording(width, height)); + picture.endRecording(); + return Bitmap.createBitmap(picture); + } + + void draw(Canvas out); } diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java index 06da843f7..e82c8f100 100644 --- a/src/com/android/launcher3/model/LoaderTask.java +++ b/src/com/android/launcher3/model/LoaderTask.java @@ -478,15 +478,11 @@ public class LoaderTask implements Runnable { } info = new ShortcutInfo(pinnedShortcut, context); final ShortcutInfo finalInfo = info; - Provider<Bitmap> fallbackIconProvider = new Provider<Bitmap>() { - @Override - public Bitmap get() { - // If the pinned deep shortcut is no longer published, - // use the last saved icon instead of the default. - return c.loadIcon(finalInfo) - ? finalInfo.iconBitmap : null; - } - }; + // If the pinned deep shortcut is no longer published, + // use the last saved icon instead of the default. + Provider<Bitmap> fallbackIconProvider = () -> + c.loadIcon(finalInfo) ? finalInfo.iconBitmap : null; + LauncherIcons li = LauncherIcons.obtain(context); li.createShortcutIcon(pinnedShortcut, true /* badged */, fallbackIconProvider).applyTo(info); diff --git a/src/com/android/launcher3/util/FloatRange.java b/src/com/android/launcher3/util/FloatRange.java deleted file mode 100644 index 12772f365..000000000 --- a/src/com/android/launcher3/util/FloatRange.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.launcher3.util; - -/** - * A mutable class for describing the range of two int values. - */ -public class FloatRange { - - public float start, end; - - public FloatRange() { } - - public FloatRange(float s, float e) { - set(s, e); - } - - public void set(float s, float e) { - start = s; - end = e; - } - - public boolean contains(float value) { - return value >= start && value <= end; - } -} diff --git a/src/com/android/launcher3/util/ItemInfoMatcher.java b/src/com/android/launcher3/util/ItemInfoMatcher.java index daedaef91..19cf6c1e5 100644 --- a/src/com/android/launcher3/util/ItemInfoMatcher.java +++ b/src/com/android/launcher3/util/ItemInfoMatcher.java @@ -18,7 +18,6 @@ package com.android.launcher3.util; import android.content.ComponentName; import android.os.UserHandle; -import android.util.SparseLongArray; import com.android.launcher3.FolderInfo; import com.android.launcher3.ItemInfo; @@ -32,14 +31,14 @@ import java.util.HashSet; /** * A utility class to check for {@link ItemInfo} */ -public abstract class ItemInfoMatcher { +public interface ItemInfoMatcher { - public abstract boolean matches(ItemInfo info, ComponentName cn); + boolean matches(ItemInfo info, ComponentName cn); /** * Filters {@param infos} to those satisfying the {@link #matches(ItemInfo, ComponentName)}. */ - public final HashSet<ItemInfo> filterItemInfos(Iterable<ItemInfo> infos) { + default HashSet<ItemInfo> filterItemInfos(Iterable<ItemInfo> infos) { HashSet<ItemInfo> filtered = new HashSet<>(); for (ItemInfo i : infos) { if (i instanceof ShortcutInfo) { @@ -70,88 +69,43 @@ public abstract class ItemInfoMatcher { /** * Returns a new matcher with returns true if either this or {@param matcher} returns true. */ - public ItemInfoMatcher or(final ItemInfoMatcher matcher) { - final ItemInfoMatcher that = this; - return new ItemInfoMatcher() { - @Override - public boolean matches(ItemInfo info, ComponentName cn) { - return that.matches(info, cn) || matcher.matches(info, cn); - } - }; + default ItemInfoMatcher or(ItemInfoMatcher matcher) { + return (info, cn) -> matches(info, cn) || matcher.matches(info, cn); } /** * Returns a new matcher with returns true if both this and {@param matcher} returns true. */ - public ItemInfoMatcher and(final ItemInfoMatcher matcher) { - final ItemInfoMatcher that = this; - return new ItemInfoMatcher() { - @Override - public boolean matches(ItemInfo info, ComponentName cn) { - return that.matches(info, cn) && matcher.matches(info, cn); - } - }; + default ItemInfoMatcher and(ItemInfoMatcher matcher) { + return (info, cn) -> matches(info, cn) && matcher.matches(info, cn); } /** * Returns a new matcher which returns the opposite boolean value of the provided * {@param matcher}. */ - public static ItemInfoMatcher not(final ItemInfoMatcher matcher) { - return new ItemInfoMatcher() { - @Override - public boolean matches(ItemInfo info, ComponentName cn) { - return !matcher.matches(info, cn); - } - }; + static ItemInfoMatcher not(ItemInfoMatcher matcher) { + return (info, cn) -> !matcher.matches(info, cn); } - public static ItemInfoMatcher ofUser(final UserHandle user) { - return new ItemInfoMatcher() { - @Override - public boolean matches(ItemInfo info, ComponentName cn) { - return info.user.equals(user); - } - }; + static ItemInfoMatcher ofUser(UserHandle user) { + return (info, cn) -> info.user.equals(user); } - public static ItemInfoMatcher ofComponents( - final HashSet<ComponentName> components, final UserHandle user) { - return new ItemInfoMatcher() { - @Override - public boolean matches(ItemInfo info, ComponentName cn) { - return components.contains(cn) && info.user.equals(user); - } - }; + static ItemInfoMatcher ofComponents(HashSet<ComponentName> components, UserHandle user) { + return (info, cn) -> components.contains(cn) && info.user.equals(user); } - public static ItemInfoMatcher ofPackages( - final HashSet<String> packageNames, final UserHandle user) { - return new ItemInfoMatcher() { - @Override - public boolean matches(ItemInfo info, ComponentName cn) { - return packageNames.contains(cn.getPackageName()) && info.user.equals(user); - } - }; + static ItemInfoMatcher ofPackages(HashSet<String> packageNames, UserHandle user) { + return (info, cn) -> packageNames.contains(cn.getPackageName()) && info.user.equals(user); } - public static ItemInfoMatcher ofShortcutKeys(final HashSet<ShortcutKey> keys) { - return new ItemInfoMatcher() { - @Override - public boolean matches(ItemInfo info, ComponentName cn) { - return info.itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT && + static ItemInfoMatcher ofShortcutKeys(HashSet<ShortcutKey> keys) { + return (info, cn) -> info.itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT && keys.contains(ShortcutKey.fromItemInfo(info)); - } - }; } - public static ItemInfoMatcher ofItemIds( - final LongArrayMap<Boolean> ids, final Boolean matchDefault) { - return new ItemInfoMatcher() { - @Override - public boolean matches(ItemInfo info, ComponentName cn) { - return ids.get(info.id, matchDefault); - } - }; + static ItemInfoMatcher ofItemIds(LongArrayMap<Boolean> ids, Boolean matchDefault) { + return (info, cn) -> ids.get(info.id, matchDefault); } } diff --git a/src/com/android/launcher3/util/Provider.java b/src/com/android/launcher3/util/Provider.java index 1cdd8d6aa..4a54c0f05 100644 --- a/src/com/android/launcher3/util/Provider.java +++ b/src/com/android/launcher3/util/Provider.java @@ -19,20 +19,15 @@ package com.android.launcher3.util; /** * Utility class to allow lazy initialization of objects. */ -public abstract class Provider<T> { +public interface Provider<T> { /** * Initializes and returns the object. This may contain expensive operations not suitable * to UI thread. */ - public abstract T get(); + T get(); - public static <T> Provider<T> of (final T value) { - return new Provider<T>() { - @Override - public T get() { - return value; - } - }; + static <T> Provider<T> of (T value) { + return() -> value; } } |