mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 03:08:19 +00:00
Merge changes from topics "presubmit-am-08ca1fad1fe94bf3ace5a708c5584d55", "presubmit-am-3c6c58a0fa374b92b1a5f8d5f5788871", "presubmit-am-6939eac1469540108813bd4ed4c60a9b" into tm-dev
* changes: Have taskbar all apps extend ActivityAllAppsContainerView. Refactor ActivityAllAppsContainerView to depend on ActivityContext. Refactor allapps.search package to depend on ActivityContext.
This commit is contained in:
committed by
Android (Google) Code Review
commit
98214d072c
@@ -51,6 +51,12 @@
|
||||
<include layout="@layout/all_apps_personal_work_tabs" />
|
||||
</com.android.launcher3.allapps.FloatingHeaderView>
|
||||
|
||||
<com.android.launcher3.taskbar.allapps.TaskbarAllAppsFallbackSearchContainer
|
||||
android:id="@+id/search_container_all_apps"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<include layout="@layout/all_apps_fast_scroller" />
|
||||
</com.android.launcher3.taskbar.allapps.TaskbarAllAppsContainerView>
|
||||
</com.android.launcher3.taskbar.allapps.TaskbarAllAppsSlideInView>
|
||||
|
||||
@@ -23,14 +23,14 @@ import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.DeviceProfile.DeviceProfileListenable;
|
||||
import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener;
|
||||
import com.android.launcher3.util.Themes;
|
||||
import com.android.launcher3.views.ActivityContext;
|
||||
import com.android.launcher3.views.AppLauncher;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
// TODO(b/218912746): Share more behavior to avoid all apps context depending directly on taskbar.
|
||||
/** Base for common behavior between taskbar window contexts. */
|
||||
public abstract class BaseTaskbarContext extends ContextThemeWrapper implements ActivityContext,
|
||||
public abstract class BaseTaskbarContext extends ContextThemeWrapper implements AppLauncher,
|
||||
DeviceProfileListenable {
|
||||
|
||||
protected final LayoutInflater mLayoutInflater;
|
||||
|
||||
@@ -17,22 +17,17 @@ package com.android.launcher3.taskbar.allapps;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.WindowInsets;
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.launcher3.allapps.ActivityAllAppsContainerView;
|
||||
import com.android.launcher3.allapps.AllAppsGridAdapter;
|
||||
import com.android.launcher3.allapps.AlphabeticalAppsList;
|
||||
import com.android.launcher3.allapps.BaseAdapterProvider;
|
||||
import com.android.launcher3.allapps.BaseAllAppsAdapter;
|
||||
import com.android.launcher3.allapps.BaseAllAppsContainerView;
|
||||
import com.android.launcher3.allapps.search.SearchAdapterProvider;
|
||||
|
||||
/** All apps container accessible from taskbar. */
|
||||
public class TaskbarAllAppsContainerView extends BaseAllAppsContainerView<TaskbarAllAppsContext> {
|
||||
public class TaskbarAllAppsContainerView extends
|
||||
ActivityAllAppsContainerView<TaskbarAllAppsContext> {
|
||||
|
||||
public TaskbarAllAppsContainerView(Context context, AttributeSet attrs) {
|
||||
this(context, attrs, 0);
|
||||
@@ -42,41 +37,6 @@ public class TaskbarAllAppsContainerView extends BaseAllAppsContainerView<Taskba
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SearchAdapterProvider<?> createMainAdapterProvider() {
|
||||
// Taskbar all apps does not yet support search, so this implementation is minimal.
|
||||
return new SearchAdapterProvider<TaskbarAllAppsContext>(mActivityContext) {
|
||||
@Override
|
||||
public boolean launchHighlightedItem() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getHighlightedItem() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView.ItemDecoration getDecorator() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isViewSupported(int viewType) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindView(AllAppsGridAdapter.ViewHolder holder, int position) { }
|
||||
|
||||
@Override
|
||||
public AllAppsGridAdapter.ViewHolder onCreateViewHolder(LayoutInflater layoutInflater,
|
||||
ViewGroup parent, int viewType) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public WindowInsets onApplyWindowInsets(WindowInsets insets) {
|
||||
setInsets(insets.getInsets(WindowInsets.Type.systemBars()).toRect());
|
||||
|
||||
@@ -32,6 +32,9 @@ import com.android.launcher3.AbstractFloatingView;
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.allapps.ActivityAllAppsContainerView;
|
||||
import com.android.launcher3.allapps.search.DefaultSearchAdapterProvider;
|
||||
import com.android.launcher3.allapps.search.SearchAdapterProvider;
|
||||
import com.android.launcher3.dot.DotInfo;
|
||||
import com.android.launcher3.model.data.ItemInfo;
|
||||
import com.android.launcher3.popup.PopupDataProvider;
|
||||
@@ -154,6 +157,12 @@ class TaskbarAllAppsContext extends BaseTaskbarContext {
|
||||
@Override
|
||||
public void onPopupVisibilityChanged(boolean isVisible) {}
|
||||
|
||||
@Override
|
||||
public SearchAdapterProvider<?> createSearchAdapterProvider(
|
||||
ActivityAllAppsContainerView<?> appsView) {
|
||||
return new DefaultSearchAdapterProvider(this);
|
||||
}
|
||||
|
||||
/** Root drag layer for this context. */
|
||||
private static class TaskbarAllAppsDragLayer extends
|
||||
BaseDragLayer<TaskbarAllAppsContext> implements OnComputeInsetsListener {
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright (C) 2022 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.taskbar.allapps;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.launcher3.ExtendedEditText;
|
||||
import com.android.launcher3.allapps.ActivityAllAppsContainerView;
|
||||
import com.android.launcher3.allapps.SearchUiManager;
|
||||
|
||||
/** Empty search container for Taskbar All Apps used as a fallback if search is not supported. */
|
||||
public class TaskbarAllAppsFallbackSearchContainer extends View implements SearchUiManager {
|
||||
public TaskbarAllAppsFallbackSearchContainer(Context context, AttributeSet attrs) {
|
||||
this(context, attrs, 0);
|
||||
}
|
||||
|
||||
public TaskbarAllAppsFallbackSearchContainer(
|
||||
Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initializeSearch(ActivityAllAppsContainerView<?> containerView) {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resetSearch() {
|
||||
// Do nothing.
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public ExtendedEditText getEditText() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -216,6 +216,7 @@ public abstract class BaseDraggingActivity extends BaseActivity
|
||||
* Creates and returns {@link SearchAdapterProvider} for build variant specific search result
|
||||
* views
|
||||
*/
|
||||
@Override
|
||||
public SearchAdapterProvider<?> createSearchAdapterProvider(
|
||||
ActivityAllAppsContainerView<?> allApps) {
|
||||
return new DefaultSearchAdapterProvider(this);
|
||||
|
||||
@@ -26,12 +26,13 @@ import android.widget.RelativeLayout;
|
||||
import androidx.core.graphics.ColorUtils;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.launcher3.BaseDraggingActivity;
|
||||
import com.android.launcher3.DeviceProfile.DeviceProfileListenable;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.allapps.search.SearchAdapterProvider;
|
||||
import com.android.launcher3.config.FeatureFlags;
|
||||
import com.android.launcher3.util.PackageManagerHelper;
|
||||
import com.android.launcher3.views.AppLauncher;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -40,8 +41,8 @@ import java.util.Objects;
|
||||
*
|
||||
* @param <T> Type of context inflating all apps.
|
||||
*/
|
||||
public class ActivityAllAppsContainerView<T extends BaseDraggingActivity> extends
|
||||
BaseAllAppsContainerView<T> {
|
||||
public class ActivityAllAppsContainerView<T extends Context & AppLauncher
|
||||
& DeviceProfileListenable> extends BaseAllAppsContainerView<T> {
|
||||
|
||||
protected SearchUiManager mSearchUiManager;
|
||||
/**
|
||||
@@ -103,13 +104,8 @@ public class ActivityAllAppsContainerView<T extends BaseDraggingActivity> extend
|
||||
}
|
||||
}
|
||||
|
||||
/** Handles selection on focused view and returns {@code true} on success. */
|
||||
public boolean launchHighlightedItem() {
|
||||
return getMainAdapterProvider().launchHighlightedItem();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SearchAdapterProvider<?> createMainAdapterProvider() {
|
||||
protected final SearchAdapterProvider<?> createMainAdapterProvider() {
|
||||
return mActivityContext.createSearchAdapterProvider(this);
|
||||
}
|
||||
|
||||
|
||||
@@ -29,14 +29,13 @@ import android.view.inputmethod.EditorInfo;
|
||||
import android.widget.TextView;
|
||||
import android.widget.TextView.OnEditorActionListener;
|
||||
|
||||
import com.android.launcher3.BaseDraggingActivity;
|
||||
import com.android.launcher3.ExtendedEditText;
|
||||
import com.android.launcher3.Launcher;
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.allapps.BaseAllAppsAdapter.AdapterItem;
|
||||
import com.android.launcher3.config.FeatureFlags;
|
||||
import com.android.launcher3.search.SearchAlgorithm;
|
||||
import com.android.launcher3.search.SearchCallback;
|
||||
import com.android.launcher3.views.ActivityContext;
|
||||
|
||||
/**
|
||||
* An interface to a search box that AllApps can command.
|
||||
@@ -45,7 +44,7 @@ public class AllAppsSearchBarController
|
||||
implements TextWatcher, OnEditorActionListener, ExtendedEditText.OnBackKeyListener,
|
||||
OnFocusChangeListener {
|
||||
|
||||
protected BaseDraggingActivity mLauncher;
|
||||
protected ActivityContext mLauncher;
|
||||
protected SearchCallback<AdapterItem> mCallback;
|
||||
protected ExtendedEditText mInput;
|
||||
protected String mQuery;
|
||||
@@ -62,7 +61,7 @@ public class AllAppsSearchBarController
|
||||
*/
|
||||
public final void initialize(
|
||||
SearchAlgorithm<AdapterItem> searchAlgorithm, ExtendedEditText input,
|
||||
BaseDraggingActivity launcher, SearchCallback<AdapterItem> callback) {
|
||||
ActivityContext launcher, SearchCallback<AdapterItem> callback) {
|
||||
mCallback = callback;
|
||||
mLauncher = launcher;
|
||||
|
||||
@@ -125,7 +124,7 @@ public class AllAppsSearchBarController
|
||||
mLauncher.getStatsLogManager().logger()
|
||||
.log(LAUNCHER_ALLAPPS_FOCUSED_ITEM_SELECTED_WITH_IME);
|
||||
// selectFocusedView should return SearchTargetEvent that is passed onto onClick
|
||||
return Launcher.getLauncher(mLauncher).getAppsView().launchHighlightedItem();
|
||||
return mLauncher.getAppsView().getMainAdapterProvider().launchHighlightedItem();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -32,7 +32,6 @@ import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup.MarginLayoutParams;
|
||||
|
||||
import com.android.launcher3.BaseDraggingActivity;
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.ExtendedEditText;
|
||||
import com.android.launcher3.Insettable;
|
||||
@@ -43,6 +42,7 @@ import com.android.launcher3.allapps.AlphabeticalAppsList;
|
||||
import com.android.launcher3.allapps.BaseAllAppsAdapter.AdapterItem;
|
||||
import com.android.launcher3.allapps.SearchUiManager;
|
||||
import com.android.launcher3.search.SearchCallback;
|
||||
import com.android.launcher3.views.ActivityContext;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@@ -53,7 +53,7 @@ public class AppsSearchContainerLayout extends ExtendedEditText
|
||||
implements SearchUiManager, SearchCallback<AdapterItem>,
|
||||
AllAppsStore.OnUpdateListener, Insettable {
|
||||
|
||||
private final BaseDraggingActivity mLauncher;
|
||||
private final ActivityContext mLauncher;
|
||||
private final AllAppsSearchBarController mSearchBarController;
|
||||
private final SpannableStringBuilder mSearchQueryBuilder;
|
||||
|
||||
@@ -74,7 +74,7 @@ public class AppsSearchContainerLayout extends ExtendedEditText
|
||||
public AppsSearchContainerLayout(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
|
||||
mLauncher = BaseDraggingActivity.fromContext(context);
|
||||
mLauncher = ActivityContext.lookupContext(context);
|
||||
mSearchBarController = new AllAppsSearchBarController();
|
||||
|
||||
mSearchQueryBuilder = new SpannableStringBuilder();
|
||||
@@ -134,7 +134,7 @@ public class AppsSearchContainerLayout extends ExtendedEditText
|
||||
mApps = appsView.getApps();
|
||||
mAppsView = appsView;
|
||||
mSearchBarController.initialize(
|
||||
new DefaultAppSearchAlgorithm(mLauncher),
|
||||
new DefaultAppSearchAlgorithm(getContext()),
|
||||
this, mLauncher, this);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,20 +23,20 @@ import android.view.ViewGroup;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.launcher3.BaseDraggingActivity;
|
||||
import com.android.launcher3.BubbleTextView;
|
||||
import com.android.launcher3.allapps.AllAppsGridAdapter;
|
||||
import com.android.launcher3.model.data.ItemInfo;
|
||||
import com.android.launcher3.views.AppLauncher;
|
||||
|
||||
/**
|
||||
* Provides views for local search results
|
||||
* Provides views for local search results.
|
||||
*/
|
||||
public class DefaultSearchAdapterProvider extends SearchAdapterProvider<BaseDraggingActivity> {
|
||||
public class DefaultSearchAdapterProvider extends SearchAdapterProvider<AppLauncher> {
|
||||
|
||||
private final RecyclerView.ItemDecoration mDecoration;
|
||||
private View mHighlightedView;
|
||||
|
||||
public DefaultSearchAdapterProvider(BaseDraggingActivity launcher) {
|
||||
public DefaultSearchAdapterProvider(AppLauncher launcher) {
|
||||
super(launcher);
|
||||
mDecoration = new RecyclerView.ItemDecoration() {
|
||||
@Override
|
||||
|
||||
@@ -25,7 +25,8 @@ import android.view.View.AccessibilityDelegate;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.allapps.BaseAllAppsContainerView;
|
||||
import com.android.launcher3.allapps.ActivityAllAppsContainerView;
|
||||
import com.android.launcher3.allapps.search.SearchAdapterProvider;
|
||||
import com.android.launcher3.dot.DotInfo;
|
||||
import com.android.launcher3.dragndrop.DragController;
|
||||
import com.android.launcher3.folder.FolderIcon;
|
||||
@@ -99,7 +100,7 @@ public interface ActivityContext {
|
||||
/**
|
||||
* The all apps container, if it exists in this context.
|
||||
*/
|
||||
default BaseAllAppsContainerView<?> getAppsView() {
|
||||
default ActivityAllAppsContainerView<?> getAppsView() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -190,4 +191,14 @@ public interface ActivityContext {
|
||||
default StringCache getStringCache() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates and returns {@link SearchAdapterProvider} for build variant specific search result
|
||||
* views.
|
||||
*/
|
||||
@Nullable
|
||||
default SearchAdapterProvider<?> createSearchAdapterProvider(
|
||||
ActivityAllAppsContainerView<?> appsView) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user