From 3eb4cb41ae2ed42772439f16e16dfdba4dc51d69 Mon Sep 17 00:00:00 2001 From: Lucas Silva Date: Thu, 10 Feb 2022 15:38:52 +0000 Subject: [PATCH] Move Dream OOBE activity to SettingsGoogle This will only be used on pixel devices. Bug: 217555049 Test: locally on device Change-Id: Ica7cddae8b8b8693a83da95d25a8d0827aed0945 --- AndroidManifest.xml | 18 -- res/layout/dream_setup_layout.xml | 39 ---- .../dream/AutoFitGridLayoutManager.java | 4 +- .../android/settings/dream/DreamAdapter.java | 4 +- .../settings/dream/DreamSetupActivity.java | 177 ------------------ .../android/settings/dream/IDreamItem.java | 5 +- 6 files changed, 8 insertions(+), 239 deletions(-) delete mode 100644 res/layout/dream_setup_layout.xml delete mode 100644 src/com/android/settings/dream/DreamSetupActivity.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index fcd6cc07273..6857927ad98 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -2920,24 +2920,6 @@ android:value="true" /> - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/com/android/settings/dream/AutoFitGridLayoutManager.java b/src/com/android/settings/dream/AutoFitGridLayoutManager.java index 0e5d3e1bbd5..7de0eaead72 100644 --- a/src/com/android/settings/dream/AutoFitGridLayoutManager.java +++ b/src/com/android/settings/dream/AutoFitGridLayoutManager.java @@ -24,10 +24,10 @@ import androidx.recyclerview.widget.RecyclerView; import com.android.settings.R; /** Grid layout manager that calculates the number of columns for the screen size. */ -final class AutoFitGridLayoutManager extends GridLayoutManager { +public final class AutoFitGridLayoutManager extends GridLayoutManager { private final float mColumnWidth; - AutoFitGridLayoutManager(Context context) { + public AutoFitGridLayoutManager(Context context) { super(context, /* spanCount= */ 1); this.mColumnWidth = context .getResources() diff --git a/src/com/android/settings/dream/DreamAdapter.java b/src/com/android/settings/dream/DreamAdapter.java index e6745464ed2..8d0e9d5d297 100644 --- a/src/com/android/settings/dream/DreamAdapter.java +++ b/src/com/android/settings/dream/DreamAdapter.java @@ -37,7 +37,7 @@ import java.util.List; /** * RecyclerView adapter which displays list of items for the user to select. */ -class DreamAdapter extends RecyclerView.Adapter { +public class DreamAdapter extends RecyclerView.Adapter { private final List mItemList; private int mLastSelectedPos = -1; @@ -103,7 +103,7 @@ class DreamAdapter extends RecyclerView.Adapter { } } - DreamAdapter(List itemList) { + public DreamAdapter(List itemList) { mItemList = itemList; } diff --git a/src/com/android/settings/dream/DreamSetupActivity.java b/src/com/android/settings/dream/DreamSetupActivity.java deleted file mode 100644 index 6a126713686..00000000000 --- a/src/com/android/settings/dream/DreamSetupActivity.java +++ /dev/null @@ -1,177 +0,0 @@ -/* - * 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.settings.dream; - -import android.app.settings.SettingsEnums; -import android.content.Intent; -import android.graphics.drawable.Drawable; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.recyclerview.widget.RecyclerView; - -import com.android.settings.R; -import com.android.settings.SettingsActivity; -import com.android.settings.SettingsPreferenceFragment; -import com.android.settingslib.dream.DreamBackend; - -import com.google.android.setupcompat.template.FooterBarMixin; -import com.google.android.setupcompat.template.FooterButton; -import com.google.android.setupcompat.util.WizardManagerHelper; -import com.google.android.setupdesign.GlifLayout; -import com.google.android.setupdesign.util.ThemeHelper; -import com.google.android.setupdesign.util.ThemeResolver; - -import java.util.List; -import java.util.stream.Collectors; - -/** - * The setup activity for dreams which is displayed during setup wizard. - */ -public class DreamSetupActivity extends SettingsActivity { - @Override - public Intent getIntent() { - Intent modIntent = new Intent(super.getIntent()); - modIntent.putExtra(EXTRA_SHOW_FRAGMENT, DreamSetupFragment.class.getName()); - return modIntent; - } - - @Override - protected boolean isValidFragment(String fragmentName) { - return DreamSetupFragment.class.getName().equals(fragmentName); - } - - @Override - protected void onCreate(Bundle savedInstance) { - setTheme(ThemeResolver.getDefault().resolve(getIntent())); - ThemeHelper.trySetDynamicColor(this); - super.onCreate(savedInstance); - } - - @Override - protected boolean isToolbarEnabled() { - return false; - } - - /** - * Fragment used to control the active dream. - */ - public static class DreamSetupFragment extends SettingsPreferenceFragment { - private DreamBackend mBackend; - private DreamBackend.DreamInfo mActiveDream; - private FooterButton mFooterButton; - - @Override - public int getMetricsCategory() { - return SettingsEnums.DREAM; - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - return inflater.inflate(R.layout.dream_setup_layout, container, false); - } - - @Override - public void onViewCreated(View view, Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - - mBackend = DreamBackend.getInstance(getContext()); - final List dreamInfos = mBackend.getDreamInfos(); - mActiveDream = dreamInfos.stream().filter(d -> d.isActive).findFirst().orElse(null); - DreamAdapter dreamAdapter = new DreamAdapter(dreamInfos.stream() - .map(DreamItem::new) - .collect(Collectors.toList())); - - final RecyclerView recyclerView = view.findViewById(R.id.dream_setup_list); - recyclerView.setLayoutManager(new AutoFitGridLayoutManager(getContext())); - recyclerView.setHasFixedSize(true); - recyclerView.setAdapter(dreamAdapter); - - final GlifLayout layout = view.findViewById(R.id.setup_wizard_layout); - final FooterBarMixin mixin = layout.getMixin(FooterBarMixin.class); - mFooterButton = new FooterButton.Builder(getContext()) - .setListener(this::onPrimaryButtonClicked) - .setButtonType(FooterButton.ButtonType.NEXT) - .setTheme(R.style.SudGlifButton_Primary) - .build(); - updateFooterButtonText(); - mixin.setPrimaryButton(mFooterButton); - } - - private void updateFooterButtonText() { - final int res = canCustomizeDream() ? R.string.wizard_next : R.string.wizard_finish; - mFooterButton.setText(getContext().getString(res)); - } - - private boolean canCustomizeDream() { - return mActiveDream != null && mActiveDream.settingsComponentName != null; - } - - private void onPrimaryButtonClicked(View view) { - if (canCustomizeDream()) { - final Intent intent = new Intent().setComponent(mActiveDream.settingsComponentName); - WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent); - startActivity(intent); - } - - // Use RESULT_CANCELED here so that the user may go back and change this if they wish. - setResult(RESULT_CANCELED); - finish(); - } - - private class DreamItem implements IDreamItem { - private final DreamBackend.DreamInfo mDreamInfo; - - private DreamItem(DreamBackend.DreamInfo dreamInfo) { - mDreamInfo = dreamInfo; - } - - @Override - public CharSequence getTitle() { - return mDreamInfo.caption; - } - - @Override - public Drawable getIcon() { - return mDreamInfo.icon; - } - - @Override - public void onItemClicked() { - mActiveDream = mDreamInfo; - mBackend.setActiveDream(mDreamInfo.componentName); - updateFooterButtonText(); - } - - @Override - public Drawable getPreviewImage() { - return mDreamInfo.previewImage; - } - - @Override - public boolean isActive() { - if (mActiveDream == null) { - return false; - } - return mDreamInfo.componentName.equals(mActiveDream.componentName); - } - } - } -} diff --git a/src/com/android/settings/dream/IDreamItem.java b/src/com/android/settings/dream/IDreamItem.java index 66528575eec..c462fe25502 100644 --- a/src/com/android/settings/dream/IDreamItem.java +++ b/src/com/android/settings/dream/IDreamItem.java @@ -18,7 +18,10 @@ package com.android.settings.dream; import android.graphics.drawable.Drawable; -interface IDreamItem { +/** + * Interface representing a dream item to be displayed. + */ +public interface IDreamItem { CharSequence getTitle(); Drawable getIcon();