From 01ce755753a05caddef2bb59b6396cf20592e3e6 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Tue, 23 Jan 2018 13:52:48 -0800 Subject: [PATCH] Removing unused app discovery support Change-Id: I670be29851b232caa5c05624ae37ae5e92a8b65f --- res/drawable/ic_star_rating.xml | 27 ----- res/layout/all_apps_discovery_item.xml | 102 ------------------ .../all_apps_discovery_loading_divider.xml | 40 ------- .../launcher3/allapps/AllAppsGridAdapter.java | 32 +----- .../allapps/AllAppsRecyclerView.java | 8 +- .../allapps/AlphabeticalAppsList.java | 87 +-------------- .../search/AllAppsSearchBarController.java | 14 --- .../search/AppsSearchContainerLayout.java | 11 -- .../android/launcher3/config/BaseFlags.java | 2 - .../discovery/AppDiscoveryAppInfo.java | 74 ------------- .../launcher3/discovery/AppDiscoveryItem.java | 64 ----------- .../discovery/AppDiscoveryItemView.java | 97 ----------------- .../discovery/AppDiscoveryUpdateState.java | 21 ---- .../launcher3/discovery/RatingView.java | 94 ---------------- 14 files changed, 8 insertions(+), 665 deletions(-) delete mode 100644 res/drawable/ic_star_rating.xml delete mode 100644 res/layout/all_apps_discovery_item.xml delete mode 100644 res/layout/all_apps_discovery_loading_divider.xml delete mode 100644 src/com/android/launcher3/discovery/AppDiscoveryAppInfo.java delete mode 100644 src/com/android/launcher3/discovery/AppDiscoveryItem.java delete mode 100644 src/com/android/launcher3/discovery/AppDiscoveryItemView.java delete mode 100644 src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java delete mode 100644 src/com/android/launcher3/discovery/RatingView.java diff --git a/res/drawable/ic_star_rating.xml b/res/drawable/ic_star_rating.xml deleted file mode 100644 index 4e34fa33e8..0000000000 --- a/res/drawable/ic_star_rating.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/res/layout/all_apps_discovery_item.xml b/res/layout/all_apps_discovery_item.xml deleted file mode 100644 index 728283fc11..0000000000 --- a/res/layout/all_apps_discovery_item.xml +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/res/layout/all_apps_discovery_loading_divider.xml b/res/layout/all_apps_discovery_loading_divider.xml deleted file mode 100644 index 005847c541..0000000000 --- a/res/layout/all_apps_discovery_loading_divider.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java index 769f9ba084..2103106f2b 100644 --- a/src/com/android/launcher3/allapps/AllAppsGridAdapter.java +++ b/src/com/android/launcher3/allapps/AllAppsGridAdapter.java @@ -43,8 +43,6 @@ import com.android.launcher3.allapps.AlphabeticalAppsList.AdapterItem; import com.android.launcher3.anim.SpringAnimationHandler; import com.android.launcher3.compat.UserManagerCompat; import com.android.launcher3.config.FeatureFlags; -import com.android.launcher3.discovery.AppDiscoveryAppInfo; -import com.android.launcher3.discovery.AppDiscoveryItemView; import com.android.launcher3.util.PackageManagerHelper; import java.util.List; @@ -72,17 +70,13 @@ public class AllAppsGridAdapter extends RecyclerView.Adapter> mPredictedAppComponents = new ArrayList<>(); // The set of predicted apps resolved from the component names and the current set of apps private final List mPredictedApps = new ArrayList<>(); - private final List mDiscoveredApps = new ArrayList<>(); // Is it the work profile app list. private final boolean mIsWork; @@ -293,10 +269,6 @@ public class AlphabeticalAppsList { return (mSearchResults != null) && mFilteredApps.isEmpty(); } - boolean shouldShowEmptySearch() { - return hasNoFilteredResults() && !isAppDiscoveryRunning() && mDiscoveredApps.isEmpty(); - } - /** * Sets the sorted list of filtered components. */ @@ -310,20 +282,6 @@ public class AlphabeticalAppsList { return false; } - public void onAppDiscoverySearchUpdate(@Nullable AppDiscoveryItem app, - @NonNull AppDiscoveryUpdateState state) { - mAppDiscoveryUpdateState = state; - switch (state) { - case START: - mDiscoveredApps.clear(); - break; - case UPDATE: - mDiscoveredApps.add(new AppDiscoveryAppInfo(app)); - break; - } - updateAdapterItems(); - } - private List processPredictedAppComponents(List> components) { if (mComponentToAppMap.isEmpty()) { // Apps have not been bound yet. @@ -540,32 +498,13 @@ public class AlphabeticalAppsList { } if (hasFilter()) { - if (isAppDiscoveryRunning() || mDiscoveredApps.size() > 0) { - mAdapterItems.add(AdapterItem.asLoadingDivider(position++)); - // Append all app discovery results - for (int i = 0; i < mDiscoveredApps.size(); i++) { - AppDiscoveryAppInfo appDiscoveryAppInfo = mDiscoveredApps.get(i); - if (appDiscoveryAppInfo.isRecent) { - // already handled in getFilteredAppInfos() - continue; - } - AdapterItem item = AdapterItem.asDiscoveryItem(position++, - "", appDiscoveryAppInfo, appIndex++); - mAdapterItems.add(item); - } - - if (!isAppDiscoveryRunning()) { - mAdapterItems.add(AdapterItem.asMarketSearch(position++)); - } + // Append the search market item + if (hasNoFilteredResults()) { + mAdapterItems.add(AdapterItem.asEmptySearch(position++)); } else { - // Append the search market item - if (hasNoFilteredResults()) { - mAdapterItems.add(AdapterItem.asEmptySearch(position++)); - } else { - mAdapterItems.add(AdapterItem.asAllAppsDivider(position++)); - } - mAdapterItems.add(AdapterItem.asMarketSearch(position++)); + mAdapterItems.add(AdapterItem.asAllAppsDivider(position++)); } + mAdapterItems.add(AdapterItem.asMarketSearch(position++)); } if (mNumAppsPerRow != 0) { @@ -635,11 +574,6 @@ public class AlphabeticalAppsList { == PackageManager.PERMISSION_GRANTED); } - public boolean isAppDiscoveryRunning() { - return mAppDiscoveryUpdateState == AppDiscoveryUpdateState.START - || mAppDiscoveryUpdateState == AppDiscoveryUpdateState.UPDATE; - } - private List getFiltersAppInfos() { if (mSearchResults == null) { return mApps; @@ -651,17 +585,6 @@ public class AlphabeticalAppsList { result.add(match); } } - - // adding recently used instant apps - if (mDiscoveredApps.size() > 0) { - for (int i = 0; i < mDiscoveredApps.size(); i++) { - AppDiscoveryAppInfo discoveryAppInfo = mDiscoveredApps.get(i); - if (discoveryAppInfo.isRecent) { - result.add(discoveryAppInfo); - } - } - Collections.sort(result, mAppNameComparator); - } return result; } diff --git a/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java b/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java index bf03a0ee1a..e83904fe86 100644 --- a/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java +++ b/src/com/android/launcher3/allapps/search/AllAppsSearchBarController.java @@ -28,8 +28,6 @@ import android.widget.TextView.OnEditorActionListener; import com.android.launcher3.ExtendedEditText; import com.android.launcher3.Launcher; import com.android.launcher3.Utilities; -import com.android.launcher3.discovery.AppDiscoveryItem; -import com.android.launcher3.discovery.AppDiscoveryUpdateState; import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.PackageManagerHelper; @@ -164,18 +162,6 @@ public class AllAppsSearchBarController * Called when the search results should be cleared. */ void clearSearchResult(); - - /** - * Called when the app discovery is providing an update of search, which can either be - * START for starting a new discovery, - * UPDATE for providing a new search result, can be called multiple times, - * END for indicating the end of results. - * - * @param app result item if UPDATE, else null - * @param app the update state, START, UPDATE or END - */ - void onAppDiscoverySearchUpdate(@Nullable AppDiscoveryItem app, - @NonNull AppDiscoveryUpdateState state); } } \ No newline at end of file diff --git a/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java b/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java index ed41f133a2..6f07eebc6c 100644 --- a/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java +++ b/src/com/android/launcher3/allapps/search/AppsSearchContainerLayout.java @@ -39,8 +39,6 @@ import com.android.launcher3.R; import com.android.launcher3.allapps.AllAppsContainerView; import com.android.launcher3.allapps.AlphabeticalAppsList; import com.android.launcher3.allapps.SearchUiManager; -import com.android.launcher3.discovery.AppDiscoveryItem; -import com.android.launcher3.discovery.AppDiscoveryUpdateState; import com.android.launcher3.graphics.TintedDrawableSpan; import com.android.launcher3.util.ComponentKey; @@ -187,15 +185,6 @@ public class AppsSearchContainerLayout extends FrameLayout mAppsView.onClearSearchResult(); } - @Override - public void onAppDiscoverySearchUpdate( - @Nullable AppDiscoveryItem app, @NonNull AppDiscoveryUpdateState state) { - if (!mLauncher.isDestroyed()) { - mApps.onAppDiscoverySearchUpdate(app, state); - notifyResultChanged(); - } - } - private void notifyResultChanged() { mElevationController.reset(); mAppsView.onSearchResultsChanged(); diff --git a/src/com/android/launcher3/config/BaseFlags.java b/src/com/android/launcher3/config/BaseFlags.java index 2d0e6303b1..059b04e27a 100644 --- a/src/com/android/launcher3/config/BaseFlags.java +++ b/src/com/android/launcher3/config/BaseFlags.java @@ -44,8 +44,6 @@ abstract class BaseFlags { public static final boolean QSB_ON_FIRST_SCREEN = true; // When enabled the all-apps icon is not added to the hotseat. public static final boolean NO_ALL_APPS_ICON = true; - // When enabled, app discovery will be enabled if service is implemented - public static final boolean DISCOVERY_ENABLED = false; // When true, custom widgets are loaded using CustomWidgetParser. public static final boolean ENABLE_CUSTOM_WIDGETS = false; diff --git a/src/com/android/launcher3/discovery/AppDiscoveryAppInfo.java b/src/com/android/launcher3/discovery/AppDiscoveryAppInfo.java deleted file mode 100644 index 26e5066bda..0000000000 --- a/src/com/android/launcher3/discovery/AppDiscoveryAppInfo.java +++ /dev/null @@ -1,74 +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.discovery; - -import android.content.ComponentName; -import android.content.Intent; -import android.graphics.Color; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; - -import com.android.launcher3.AppInfo; -import com.android.launcher3.LauncherSettings; -import com.android.launcher3.ShortcutInfo; -import com.android.launcher3.graphics.ColorExtractor; - -public class AppDiscoveryAppInfo extends AppInfo { - - public final boolean showAsDiscoveryItem; - public final boolean isInstantApp; - public final boolean isRecent; - public final float rating; - public final long reviewCount; - public final @NonNull String publisher; - public final @NonNull Intent installIntent; - public final @NonNull Intent launchIntent; - public final @Nullable String priceFormatted; - - public AppDiscoveryAppInfo(AppDiscoveryItem item) { - this.intent = item.isInstantApp ? item.launchIntent : item.installIntent; - this.title = item.title; - this.iconBitmap = item.bitmap; - this.iconColor = iconBitmap == null ? Color.TRANSPARENT : - ColorExtractor.findDominantColorByHue(item.bitmap); - this.usingLowResIcon = false; - this.isInstantApp = item.isInstantApp; - this.isRecent = item.isRecent; - this.rating = item.starRating; - this.showAsDiscoveryItem = true; - this.publisher = item.publisher != null ? item.publisher : ""; - this.priceFormatted = item.price; - this.componentName = new ComponentName(item.packageName, ""); - this.installIntent = item.installIntent; - this.launchIntent = item.launchIntent; - this.reviewCount = item.reviewCount; - this.itemType = LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT; - } - - @Override - public ShortcutInfo makeShortcut() { - if (!isDragAndDropSupported()) { - throw new RuntimeException("DnD is currently not supported for discovered store apps"); - } - return super.makeShortcut(); - } - - public boolean isDragAndDropSupported() { - return isInstantApp; - } - -} diff --git a/src/com/android/launcher3/discovery/AppDiscoveryItem.java b/src/com/android/launcher3/discovery/AppDiscoveryItem.java deleted file mode 100644 index 2e48b25e06..0000000000 --- a/src/com/android/launcher3/discovery/AppDiscoveryItem.java +++ /dev/null @@ -1,64 +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.discovery; - -import android.content.Intent; -import android.graphics.Bitmap; - -/** - * This class represents the model for a discovered app via app discovery. - * It holds all information for one result retrieved from an app discovery service. - */ -public class AppDiscoveryItem { - - public final String packageName; - public final boolean isInstantApp; - public final boolean isRecent; - public final float starRating; - public final long reviewCount; - public final Intent launchIntent; - public final Intent installIntent; - public final CharSequence title; - public final String publisher; - public final String price; - public final Bitmap bitmap; - - public AppDiscoveryItem(String packageName, - boolean isInstantApp, - boolean isRecent, - float starRating, - long reviewCount, - CharSequence title, - String publisher, - Bitmap bitmap, - String price, - Intent launchIntent, - Intent installIntent) { - this.packageName = packageName; - this.isInstantApp = isInstantApp; - this.isRecent = isRecent; - this.starRating = starRating; - this.reviewCount = reviewCount; - this.launchIntent = launchIntent; - this.installIntent = installIntent; - this.title = title; - this.publisher = publisher; - this.price = price; - this.bitmap = bitmap; - } - -} diff --git a/src/com/android/launcher3/discovery/AppDiscoveryItemView.java b/src/com/android/launcher3/discovery/AppDiscoveryItemView.java deleted file mode 100644 index 809d7249db..0000000000 --- a/src/com/android/launcher3/discovery/AppDiscoveryItemView.java +++ /dev/null @@ -1,97 +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.discovery; - -import android.content.Context; -import android.support.annotation.NonNull; -import android.util.AttributeSet; -import android.view.View; -import android.widget.ImageView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import com.android.launcher3.R; - -import java.text.DecimalFormat; -import java.text.NumberFormat; - -public class AppDiscoveryItemView extends RelativeLayout { - - private static boolean SHOW_REVIEW_COUNT = false; - - private ImageView mImage; - private TextView mTitle; - private TextView mRatingText; - private RatingView mRatingView; - private TextView mReviewCount; - private TextView mPrice; - private OnLongClickListener mOnLongClickListener; - - public AppDiscoveryItemView(Context context) { - this(context, null); - } - - public AppDiscoveryItemView(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public AppDiscoveryItemView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - } - - @Override - protected void onFinishInflate() { - super.onFinishInflate(); - this.mImage = (ImageView) findViewById(R.id.image); - this.mTitle = (TextView) findViewById(R.id.title); - this.mRatingText = (TextView) findViewById(R.id.rating); - this.mRatingView = (RatingView) findViewById(R.id.rating_view); - this.mPrice = (TextView) findViewById(R.id.price); - this.mReviewCount = (TextView) findViewById(R.id.review_count); - } - - public void init(OnClickListener clickListener, - AccessibilityDelegate accessibilityDelegate, - OnLongClickListener onLongClickListener) { - setOnClickListener(clickListener); - mImage.setOnClickListener(clickListener); - setAccessibilityDelegate(accessibilityDelegate); - mOnLongClickListener = onLongClickListener; - } - - public void apply(@NonNull AppDiscoveryAppInfo info) { - setTag(info); - mImage.setTag(info); - mImage.setImageBitmap(info.iconBitmap); - mImage.setOnLongClickListener(info.isDragAndDropSupported() ? mOnLongClickListener : null); - mTitle.setText(info.title); - mPrice.setText(info.priceFormatted != null ? info.priceFormatted : ""); - mReviewCount.setVisibility(SHOW_REVIEW_COUNT ? View.VISIBLE : View.GONE); - if (info.rating >= 0) { - mRatingText.setText(new DecimalFormat("#.0").format(info.rating)); - mRatingView.setRating(info.rating); - mRatingView.setVisibility(View.VISIBLE); - String reviewCountFormatted = NumberFormat.getInstance().format(info.reviewCount); - mReviewCount.setText("(" + reviewCountFormatted + ")"); - } else { - // if we don't have a rating - mRatingView.setVisibility(View.GONE); - mRatingText.setText(""); - mReviewCount.setText(""); - } - } -} diff --git a/src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java b/src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java deleted file mode 100644 index 0700a1023f..0000000000 --- a/src/com/android/launcher3/discovery/AppDiscoveryUpdateState.java +++ /dev/null @@ -1,21 +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.discovery; - -public enum AppDiscoveryUpdateState { - START, UPDATE, END -} diff --git a/src/com/android/launcher3/discovery/RatingView.java b/src/com/android/launcher3/discovery/RatingView.java deleted file mode 100644 index 8fe63d6ba3..0000000000 --- a/src/com/android/launcher3/discovery/RatingView.java +++ /dev/null @@ -1,94 +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.discovery; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.drawable.ClipDrawable; -import android.graphics.drawable.Drawable; -import android.util.AttributeSet; -import android.view.Gravity; -import android.view.View; - -import com.android.launcher3.R; - -/** - * A simple rating view that shows stars with a rating from 0-5. - */ -public class RatingView extends View { - - private static final float WIDTH_FACTOR = 0.9f; - private static final int MAX_LEVEL = 10000; - private static final int MAX_STARS = 5; - - private final Drawable mStarDrawable; - private final int mColorGray; - private final int mColorHighlight; - - private float rating; - - public RatingView(Context context) { - this(context, null); - } - - public RatingView(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public RatingView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - mStarDrawable = getResources().getDrawable(R.drawable.ic_star_rating, null); - mColorGray = 0x1E000000; - mColorHighlight = 0x8A000000; - } - - public void setRating(float rating) { - this.rating = Math.min(Math.max(rating, 0), MAX_STARS); - } - - @Override - protected void onDraw(Canvas canvas) { - drawStars(canvas, MAX_STARS, mColorGray); - drawStars(canvas, rating, mColorHighlight); - } - - private void drawStars(Canvas canvas, float stars, int color) { - int fullWidth = getLayoutParams().width; - int cellWidth = fullWidth / MAX_STARS; - int starWidth = (int) (cellWidth * WIDTH_FACTOR); - int padding = cellWidth - starWidth; - int fullStars = (int) stars; - float partialStarFactor = stars - fullStars; - - for (int i = 0; i < fullStars; i++) { - int x = i * cellWidth + padding; - Drawable star = mStarDrawable.getConstantState().newDrawable().mutate(); - star.setTint(color); - star.setBounds(x, padding, x + starWidth, padding + starWidth); - star.draw(canvas); - } - if (partialStarFactor > 0f) { - int x = fullStars * cellWidth + padding; - ClipDrawable star = new ClipDrawable(mStarDrawable, - Gravity.LEFT, ClipDrawable.HORIZONTAL); - star.setTint(color); - star.setLevel((int) (MAX_LEVEL * partialStarFactor)); - star.setBounds(x, padding, x + starWidth, padding + starWidth); - star.draw(canvas); - } - } -}