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 extends PreferenceFragmentCompat> getNetworkProviderSettingsClass() {
+ return NetworkProviderSettings.class;
+ }
+}