diff --git a/AndroidManifest.xml b/AndroidManifest.xml index a1d8d8a9193..fe150c77fc6 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -516,6 +516,17 @@ android:value="true" /> + + + + + + + + + + + + + diff --git a/src/com/android/settings/network/NetworkProviderSettings.java b/src/com/android/settings/network/NetworkProviderSettings.java index 3f9d4955a37..1a9ec062a5b 100644 --- a/src/com/android/settings/network/NetworkProviderSettings.java +++ b/src/com/android/settings/network/NetworkProviderSettings.java @@ -29,6 +29,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.drawable.Drawable; import android.location.LocationManager; import android.net.EthernetManager; import android.net.NetworkTemplate; @@ -46,10 +47,12 @@ import android.util.EventLog; import android.util.Log; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; +import android.view.ViewGroup; import android.widget.Toast; import androidx.annotation.NonNull; @@ -65,6 +68,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.android.settings.AirplaneModeEnabler; import com.android.settings.R; +import com.android.settings.accessibility.AccessibilitySetupWizardUtils; import com.android.settings.core.SubSettingLauncher; import com.android.settings.dashboard.RestrictedDashboardFragment; import com.android.settings.datausage.DataUsagePreference; @@ -104,6 +108,10 @@ import com.android.wifitrackerlib.WifiEntry; import com.android.wifitrackerlib.WifiEntry.ConnectCallback; import com.android.wifitrackerlib.WifiPickerTracker; +import com.google.android.setupcompat.template.FooterButtonStyleUtils; +import com.google.android.setupcompat.util.WizardManagerHelper; +import com.google.android.setupdesign.GlifPreferenceLayout; + import java.util.Collection; import java.util.List; import java.util.Optional; @@ -178,6 +186,8 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment // Enable the Next button when a Wi-Fi network is connected. private boolean mEnableNextOnConnection; + private boolean mIsInSetupWizard; + // This string extra specifies a network to open the connect dialog on, so the user can enter // network credentials. This is used by quick settings for secured networks, among other // things. @@ -290,6 +300,18 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment return; } + if (mIsInSetupWizard) { + GlifPreferenceLayout layout = (GlifPreferenceLayout) view; + final Drawable icon = getContext().getDrawable(R.drawable.ic_network_setup); + final String title = getContext().getString(R.string.provider_internet_settings); + AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(getContext(), layout, + title, "" /* description */, icon); + FooterButtonStyleUtils.applyPrimaryButtonPartnerResource(activity, getNextButton(), + true); + + return; + } + setPinnedHeaderView(com.android.settingslib.widget.progressbar.R.layout.progress_header); setProgressBarVisible(false); @@ -366,6 +388,8 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment fixConnectivityItem.setVisible(!mIsGuest && (!isAirplaneModeOn || isWifiEnabled)); } }; + final Intent intent = this.getIntent(); + mIsInSetupWizard = WizardManagerHelper.isAnySetupWizard(intent); } private void updateUserType() { @@ -380,6 +404,17 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment return TAG; } + @Override + public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent, + Bundle savedInstanceState) { + if (mIsInSetupWizard) { + GlifPreferenceLayout layout = (GlifPreferenceLayout) parent; + return layout.onCreateRecyclerView(inflater, parent, savedInstanceState); + } else { + return super.onCreateRecyclerView(inflater, parent, savedInstanceState); + } + } + @Override protected int getPreferenceScreenResId() { return R.xml.network_provider_settings; @@ -518,6 +553,11 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment } }; + if (mIsInSetupWizard) { + mConfigureWifiSettingsPreference.setVisible(false); + mDataUsagePreference.setVisible(false); + } + if (savedInstanceState != null) { mDialogMode = savedInstanceState.getInt(SAVE_DIALOG_MODE); mDialogWifiEntryKey = savedInstanceState.getString(SAVE_DIALOG_WIFIENTRY_KEY); @@ -1057,7 +1097,9 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment if (mClickedConnect) { mClickedConnect = false; - scrollToPreference(connectedWifiPreferenceCategory); + if (!mIsInSetupWizard) { + scrollToPreference(connectedWifiPreferenceCategory); + } } } } else { @@ -1221,10 +1263,12 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment @VisibleForTesting void setAdditionalSettingsSummaries() { - mConfigureWifiSettingsPreference.setSummary(getString( - isWifiWakeupEnabled() - ? R.string.wifi_configure_settings_preference_summary_wakeup_on - : R.string.wifi_configure_settings_preference_summary_wakeup_off)); + if (!mIsInSetupWizard) { + mConfigureWifiSettingsPreference.setSummary(getString( + isWifiWakeupEnabled() + ? R.string.wifi_configure_settings_preference_summary_wakeup_on + : R.string.wifi_configure_settings_preference_summary_wakeup_off)); + } final int numSavedNetworks = mWifiPickerTracker == null ? 0 : mWifiPickerTracker.getNumSavedNetworks(); @@ -1272,7 +1316,9 @@ public class NetworkProviderSettings extends RestrictedDashboardFragment } protected void setProgressBarVisible(boolean visible) { - showPinnedHeader(visible); + if (!mIsInSetupWizard) { + showPinnedHeader(visible); + } } @VisibleForTesting diff --git a/src/com/android/settings/network/NetworkSetupActivity.java b/src/com/android/settings/network/NetworkSetupActivity.java new file mode 100644 index 00000000000..3b5fb829315 --- /dev/null +++ b/src/com/android/settings/network/NetworkSetupActivity.java @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * Copyright (C) 2021-2024 The LineageOS 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.network; + +import android.content.Intent; +import android.content.res.Resources; +import android.os.Bundle; + +import androidx.preference.PreferenceFragmentCompat; + +import com.android.settings.ButtonBarHandler; +import com.android.settings.network.NetworkProviderSettings; +import com.android.settings.R; +import com.android.settings.SettingsActivity; +import com.android.settings.SetupWizardUtils; +import com.android.settings.wifi.p2p.WifiP2pSettings; +import com.android.settings.wifi.savedaccesspoints2.SavedAccessPointsWifiSettings2; + +import com.google.android.setupdesign.util.ThemeHelper; + +public class NetworkSetupActivity extends SettingsActivity implements ButtonBarHandler { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setTheme(SetupWizardUtils.getTheme(this, getIntent())); + setTheme(R.style.SettingsPreferenceTheme_SetupWizard); + ThemeHelper.trySetDynamicColor(this); + findViewById(R.id.content_parent).setFitsSystemWindows(false); + } + + @Override + public Intent getIntent() { + Intent modIntent = new Intent(super.getIntent()); + if (!modIntent.hasExtra(EXTRA_SHOW_FRAGMENT)) { + modIntent.putExtra(EXTRA_SHOW_FRAGMENT, getNetworkProviderSettingsClass().getName()); + modIntent.putExtra(EXTRA_SHOW_FRAGMENT_TITLE_RESID, + R.string.provider_internet_settings); + } + return modIntent; + } + + @Override + protected boolean isValidFragment(String fragmentName) { + final boolean isSavedAccessPointsWifiSettings = + SavedAccessPointsWifiSettings2.class.getName().equals(fragmentName); + + if (NetworkProviderSettings.class.getName().equals(fragmentName) + || WifiP2pSettings.class.getName().equals(fragmentName) + || isSavedAccessPointsWifiSettings) { + return true; + } + return false; + } + + /* package */ Class getNetworkProviderSettingsClass() { + return NetworkProviderSettings.class; + } +}