Loading res/values/strings.xml +13 −0 Original line number Diff line number Diff line Loading @@ -13813,4 +13813,17 @@ <string name="dream_preview_button_title">Preview screensaver</string> <!-- Button to customize the screensaver [CHAR LIMIT=20] --> <string name="customize_button_title">Customize</string> <!-- Dialog body text used to explain a reboot is required after enabling freeform support for it to work [CHAR LIMIT=none] --> <string name="reboot_dialog_enable_freeform_support">A reboot is required to enable freeform support.</string> <!-- Dialog body text used to explain a reboot is required after forcing desktop mode on secondary dislays. [CHAR LIMIT=none] --> <string name="reboot_dialog_force_desktop_mode">A reboot is required to force desktop mode on secondary displays.</string> <!-- Text on the dialog button to reboot the device now [CHAR LIMIT=50] --> <string name="reboot_dialog_reboot_now">Reboot now</string> <!-- Text on the dialog button to reboot the device later [CHAR LIMIT=50] --> <string name="reboot_dialog_reboot_later">Reboot later</string> </resources> src/com/android/settings/development/DesktopModePreferenceController.java +19 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.settings.development; import static android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS; import android.content.Context; import android.content.Intent; import android.os.Build; import android.provider.Settings; Loading @@ -26,11 +27,13 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.SwitchPreference; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.development.DeveloperOptionsPreferenceController; public class DesktopModePreferenceController extends DeveloperOptionsPreferenceController implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin { implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin, RebootConfirmationDialogHost { private static final String FORCE_DESKTOP_MODE_KEY = "force_desktop_mode_on_external_displays"; Loading @@ -39,8 +42,12 @@ public class DesktopModePreferenceController extends DeveloperOptionsPreferenceC @VisibleForTesting static final int SETTING_VALUE_ON = 1; public DesktopModePreferenceController(Context context) { private final DevelopmentSettingsDashboardFragment mFragment; public DesktopModePreferenceController( Context context, DevelopmentSettingsDashboardFragment fragment) { super(context); mFragment = fragment; } @Override Loading @@ -54,6 +61,10 @@ public class DesktopModePreferenceController extends DeveloperOptionsPreferenceC Settings.Global.putInt(mContext.getContentResolver(), DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF); if (isEnabled) { RebootConfirmationDialogFragment.show( mFragment, R.string.reboot_dialog_force_desktop_mode, this); } return true; } Loading @@ -72,6 +83,12 @@ public class DesktopModePreferenceController extends DeveloperOptionsPreferenceC ((SwitchPreference) mPreference).setChecked(false); } @Override public void onRebootConfirmed() { final Intent intent = new Intent(Intent.ACTION_REBOOT); mContext.startActivity(intent); } @VisibleForTesting String getBuildType() { return Build.TYPE; Loading src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java +2 −2 Original line number Diff line number Diff line Loading @@ -553,8 +553,8 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra controllers.add(new NotificationChannelWarningsPreferenceController(context)); controllers.add(new AllowAppsOnExternalPreferenceController(context)); controllers.add(new ResizableActivityPreferenceController(context)); controllers.add(new FreeformWindowsPreferenceController(context)); controllers.add(new DesktopModePreferenceController(context)); controllers.add(new FreeformWindowsPreferenceController(context, fragment)); controllers.add(new DesktopModePreferenceController(context, fragment)); controllers.add(new NonResizableMultiWindowPreferenceController(context)); controllers.add(new ShortcutManagerThrottlingPreferenceController(context)); controllers.add(new EnableGnssRawMeasFullTrackingPreferenceController(context)); Loading src/com/android/settings/development/FreeformWindowsPreferenceController.java +19 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.development; import android.content.Context; import android.content.Intent; import android.os.Build; import android.provider.Settings; Loading @@ -24,11 +25,13 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.SwitchPreference; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.development.DeveloperOptionsPreferenceController; public class FreeformWindowsPreferenceController extends DeveloperOptionsPreferenceController implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin { implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin, RebootConfirmationDialogHost { private static final String ENABLE_FREEFORM_SUPPORT_KEY = "enable_freeform_support"; Loading @@ -37,8 +40,12 @@ public class FreeformWindowsPreferenceController extends DeveloperOptionsPrefere @VisibleForTesting static final int SETTING_VALUE_ON = 1; public FreeformWindowsPreferenceController(Context context) { private final DevelopmentSettingsDashboardFragment mFragment; public FreeformWindowsPreferenceController( Context context, DevelopmentSettingsDashboardFragment fragment) { super(context); mFragment = fragment; } @Override Loading @@ -52,6 +59,10 @@ public class FreeformWindowsPreferenceController extends DeveloperOptionsPrefere Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF); if (isEnabled) { RebootConfirmationDialogFragment.show( mFragment, R.string.reboot_dialog_enable_freeform_support, this); } return true; } Loading @@ -70,6 +81,12 @@ public class FreeformWindowsPreferenceController extends DeveloperOptionsPrefere ((SwitchPreference) mPreference).setChecked(false); } @Override public void onRebootConfirmed() { final Intent intent = new Intent(Intent.ACTION_REBOOT); mContext.startActivity(intent); } @VisibleForTesting String getBuildType() { return Build.TYPE; Loading src/com/android/settings/development/RebootConfirmationDialogFragment.java 0 → 100644 +77 −0 Original line number Diff line number Diff line /* * 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.development; import android.app.Dialog; import android.app.settings.SettingsEnums; import android.content.DialogInterface; import android.os.Bundle; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; /** * Dialog fragment for reboot confirmation when enabling certain features. */ public class RebootConfirmationDialogFragment extends InstrumentedDialogFragment implements DialogInterface.OnClickListener { private static final String TAG = "FreeformPrefRebootDlg"; private final int mMessageId; private final RebootConfirmationDialogHost mHost; /** * Show an instance of this dialog. */ public static void show(Fragment fragment, int messageId, RebootConfirmationDialogHost host) { final FragmentManager manager = fragment.getActivity().getSupportFragmentManager(); if (manager.findFragmentByTag(TAG) == null) { final RebootConfirmationDialogFragment dialog = new RebootConfirmationDialogFragment(messageId, host); dialog.show(manager, TAG); } } private RebootConfirmationDialogFragment(int messageId, RebootConfirmationDialogHost host) { mMessageId = messageId; mHost = host; } @Override public int getMetricsCategory() { return SettingsEnums.REBOOT_CONFIRMATION_DIALOG; } @Override public Dialog onCreateDialog(Bundle savedInstances) { return new AlertDialog.Builder(getActivity()) .setMessage(mMessageId) .setPositiveButton(R.string.reboot_dialog_reboot_now, this) .setNegativeButton(R.string.reboot_dialog_reboot_later, null) .create(); } @Override public void onClick(DialogInterface dialog, int which) { mHost.onRebootConfirmed(); } } Loading
res/values/strings.xml +13 −0 Original line number Diff line number Diff line Loading @@ -13813,4 +13813,17 @@ <string name="dream_preview_button_title">Preview screensaver</string> <!-- Button to customize the screensaver [CHAR LIMIT=20] --> <string name="customize_button_title">Customize</string> <!-- Dialog body text used to explain a reboot is required after enabling freeform support for it to work [CHAR LIMIT=none] --> <string name="reboot_dialog_enable_freeform_support">A reboot is required to enable freeform support.</string> <!-- Dialog body text used to explain a reboot is required after forcing desktop mode on secondary dislays. [CHAR LIMIT=none] --> <string name="reboot_dialog_force_desktop_mode">A reboot is required to force desktop mode on secondary displays.</string> <!-- Text on the dialog button to reboot the device now [CHAR LIMIT=50] --> <string name="reboot_dialog_reboot_now">Reboot now</string> <!-- Text on the dialog button to reboot the device later [CHAR LIMIT=50] --> <string name="reboot_dialog_reboot_later">Reboot later</string> </resources>
src/com/android/settings/development/DesktopModePreferenceController.java +19 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.settings.development; import static android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS; import android.content.Context; import android.content.Intent; import android.os.Build; import android.provider.Settings; Loading @@ -26,11 +27,13 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.SwitchPreference; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.development.DeveloperOptionsPreferenceController; public class DesktopModePreferenceController extends DeveloperOptionsPreferenceController implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin { implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin, RebootConfirmationDialogHost { private static final String FORCE_DESKTOP_MODE_KEY = "force_desktop_mode_on_external_displays"; Loading @@ -39,8 +42,12 @@ public class DesktopModePreferenceController extends DeveloperOptionsPreferenceC @VisibleForTesting static final int SETTING_VALUE_ON = 1; public DesktopModePreferenceController(Context context) { private final DevelopmentSettingsDashboardFragment mFragment; public DesktopModePreferenceController( Context context, DevelopmentSettingsDashboardFragment fragment) { super(context); mFragment = fragment; } @Override Loading @@ -54,6 +61,10 @@ public class DesktopModePreferenceController extends DeveloperOptionsPreferenceC Settings.Global.putInt(mContext.getContentResolver(), DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF); if (isEnabled) { RebootConfirmationDialogFragment.show( mFragment, R.string.reboot_dialog_force_desktop_mode, this); } return true; } Loading @@ -72,6 +83,12 @@ public class DesktopModePreferenceController extends DeveloperOptionsPreferenceC ((SwitchPreference) mPreference).setChecked(false); } @Override public void onRebootConfirmed() { final Intent intent = new Intent(Intent.ACTION_REBOOT); mContext.startActivity(intent); } @VisibleForTesting String getBuildType() { return Build.TYPE; Loading
src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java +2 −2 Original line number Diff line number Diff line Loading @@ -553,8 +553,8 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra controllers.add(new NotificationChannelWarningsPreferenceController(context)); controllers.add(new AllowAppsOnExternalPreferenceController(context)); controllers.add(new ResizableActivityPreferenceController(context)); controllers.add(new FreeformWindowsPreferenceController(context)); controllers.add(new DesktopModePreferenceController(context)); controllers.add(new FreeformWindowsPreferenceController(context, fragment)); controllers.add(new DesktopModePreferenceController(context, fragment)); controllers.add(new NonResizableMultiWindowPreferenceController(context)); controllers.add(new ShortcutManagerThrottlingPreferenceController(context)); controllers.add(new EnableGnssRawMeasFullTrackingPreferenceController(context)); Loading
src/com/android/settings/development/FreeformWindowsPreferenceController.java +19 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.settings.development; import android.content.Context; import android.content.Intent; import android.os.Build; import android.provider.Settings; Loading @@ -24,11 +25,13 @@ import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.SwitchPreference; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.development.DeveloperOptionsPreferenceController; public class FreeformWindowsPreferenceController extends DeveloperOptionsPreferenceController implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin { implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin, RebootConfirmationDialogHost { private static final String ENABLE_FREEFORM_SUPPORT_KEY = "enable_freeform_support"; Loading @@ -37,8 +40,12 @@ public class FreeformWindowsPreferenceController extends DeveloperOptionsPrefere @VisibleForTesting static final int SETTING_VALUE_ON = 1; public FreeformWindowsPreferenceController(Context context) { private final DevelopmentSettingsDashboardFragment mFragment; public FreeformWindowsPreferenceController( Context context, DevelopmentSettingsDashboardFragment fragment) { super(context); mFragment = fragment; } @Override Loading @@ -52,6 +59,10 @@ public class FreeformWindowsPreferenceController extends DeveloperOptionsPrefere Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF); if (isEnabled) { RebootConfirmationDialogFragment.show( mFragment, R.string.reboot_dialog_enable_freeform_support, this); } return true; } Loading @@ -70,6 +81,12 @@ public class FreeformWindowsPreferenceController extends DeveloperOptionsPrefere ((SwitchPreference) mPreference).setChecked(false); } @Override public void onRebootConfirmed() { final Intent intent = new Intent(Intent.ACTION_REBOOT); mContext.startActivity(intent); } @VisibleForTesting String getBuildType() { return Build.TYPE; Loading
src/com/android/settings/development/RebootConfirmationDialogFragment.java 0 → 100644 +77 −0 Original line number Diff line number Diff line /* * 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.development; import android.app.Dialog; import android.app.settings.SettingsEnums; import android.content.DialogInterface; import android.os.Bundle; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; /** * Dialog fragment for reboot confirmation when enabling certain features. */ public class RebootConfirmationDialogFragment extends InstrumentedDialogFragment implements DialogInterface.OnClickListener { private static final String TAG = "FreeformPrefRebootDlg"; private final int mMessageId; private final RebootConfirmationDialogHost mHost; /** * Show an instance of this dialog. */ public static void show(Fragment fragment, int messageId, RebootConfirmationDialogHost host) { final FragmentManager manager = fragment.getActivity().getSupportFragmentManager(); if (manager.findFragmentByTag(TAG) == null) { final RebootConfirmationDialogFragment dialog = new RebootConfirmationDialogFragment(messageId, host); dialog.show(manager, TAG); } } private RebootConfirmationDialogFragment(int messageId, RebootConfirmationDialogHost host) { mMessageId = messageId; mHost = host; } @Override public int getMetricsCategory() { return SettingsEnums.REBOOT_CONFIRMATION_DIALOG; } @Override public Dialog onCreateDialog(Bundle savedInstances) { return new AlertDialog.Builder(getActivity()) .setMessage(mMessageId) .setPositiveButton(R.string.reboot_dialog_reboot_now, this) .setNegativeButton(R.string.reboot_dialog_reboot_later, null) .create(); } @Override public void onClick(DialogInterface dialog, int which) { mHost.onRebootConfirmed(); } }