diff options
author | Wale Ogunwale <ogunwale@google.com> | 2015-03-03 21:28:46 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-03-03 21:28:47 +0000 |
commit | b3e2fedb5f19dbff9185cb641c3edabb37a28526 (patch) | |
tree | e818f0ed320c0ce785a31bfe93e61fe0bf3f0394 | |
parent | e27fbc557f2d05feea845dea79d86f811f1da9c2 (diff) | |
parent | 4c9d667bc2044a5d5d0d0616425906f75b42a8e0 (diff) | |
download | packages_apps_Settings-b3e2fedb5f19dbff9185cb641c3edabb37a28526.zip packages_apps_Settings-b3e2fedb5f19dbff9185cb641c3edabb37a28526.tar.gz packages_apps_Settings-b3e2fedb5f19dbff9185cb641c3edabb37a28526.tar.bz2 |
Merge "Added Developer Options settings for multi-window mode."
-rw-r--r-- | res/values/strings.xml | 8 | ||||
-rw-r--r-- | res/xml/development_prefs.xml | 5 | ||||
-rw-r--r-- | src/com/android/settings/DevelopmentSettings.java | 69 |
3 files changed, 74 insertions, 8 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index 38a146d..01fa8da 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -4787,6 +4787,14 @@ <!-- UI debug setting: simulate secondary display devices using overlays [CHAR LIMIT=25] --> <string name="overlay_display_devices_title">Simulate secondary displays</string> + <!-- UI debug setting: enable/disable debug multi-window ui [CHAR LIMIT=25] --> + <string name="enable_multi_window">Multi-window mode</string> + <!-- setting Checkbox summary whether to enable debug multi-window ui [CHAR_LIMIT=50] --> + <string name="enable_multi_window_summary">Multiple activities on screen at the same time.</string> + <string name="confirm_enable_multi_window_title">Enable multi-window mode?</string> + <!-- Warning dialog message to confirm user wishes to enable experimental multi-window mode feature --> + <string name="confirm_enable_multi_window_text">WARNING: This is a highly experimental feature that allows multiple activities on-screen at the same time through the Recent apps UI. Some apps may crash or not function correctly when used with this feature.</string> + <!-- Preference category for application debugging development settings. [CHAR LIMIT=25] --> <string name="debug_applications_category">Apps</string> diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml index 44a502d..71351c4 100644 --- a/res/xml/development_prefs.xml +++ b/res/xml/development_prefs.xml @@ -200,6 +200,11 @@ android:entries="@array/overlay_display_devices_entries" android:entryValues="@array/overlay_display_devices_values" /> + <SwitchPreference + android:key="enable_multi_window" + android:title="@string/enable_multi_window" + android:summary="@string/enable_multi_window_summary"/> + </PreferenceCategory> <PreferenceCategory android:key="debug_hw_drawing_category" diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java index dd7f5df..a4002ab 100644 --- a/src/com/android/settings/DevelopmentSettings.java +++ b/src/com/android/settings/DevelopmentSettings.java @@ -138,8 +138,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private static final String TRANSITION_ANIMATION_SCALE_KEY = "transition_animation_scale"; private static final String ANIMATOR_DURATION_SCALE_KEY = "animator_duration_scale"; private static final String OVERLAY_DISPLAY_DEVICES_KEY = "overlay_display_devices"; + private static final String ENABLE_MULTI_WINDOW_KEY = "enable_multi_window"; private static final String DEBUG_DEBUGGING_CATEGORY_KEY = "debug_debugging_category"; - private static final String DEBUG_APPLICATIONS_CATEGORY_KEY = "debug_applications_category"; private static final String WIFI_DISPLAY_CERTIFICATION_KEY = "wifi_display_certification"; private static final String WIFI_VERBOSE_LOGGING_KEY = "wifi_verbose_logging"; private static final String WIFI_AGGRESSIVE_HANDOVER_KEY = "wifi_aggressive_handover"; @@ -160,8 +160,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private static final String PROCESS_STATS = "proc_stats"; - private static final String TAG_CONFIRM_ENFORCE = "confirm_enforce"; - private static final String PACKAGE_MIME_TYPE = "application/vnd.android.package-archive"; private static final String TERMINAL_APP_PACKAGE = "com.android.terminal"; @@ -174,6 +172,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private static String DEFAULT_LOG_RING_BUFFER_SIZE_IN_BYTES = "262144"; // 256K + private static final String MULTI_WINDOW_SYSTEM_PROPERTY = "persist.sys.debug.multi_window"; private IWindowManager mWindowManager; private IBackupManager mBackupManager; private DevicePolicyManager mDpm; @@ -211,6 +210,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private SwitchPreference mShowTouches; private SwitchPreference mShowScreenUpdates; private SwitchPreference mDisableOverlays; + private SwitchPreference mEnableMultiWindow; private SwitchPreference mShowCpuUsage; private SwitchPreference mForceHardwareUi; private SwitchPreference mForceMsaa; @@ -277,7 +277,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment final PreferenceGroup debugDebuggingCategory = (PreferenceGroup) findPreference(DEBUG_DEBUGGING_CATEGORY_KEY); - mEnableAdb = findAndInitSwitchPref(ENABLE_ADB); mClearAdbKeys = findPreference(CLEAR_ADB_KEYS); if (!SystemProperties.getBoolean("ro.adb.secure", false)) { @@ -351,6 +350,18 @@ public class DevelopmentSettings extends SettingsPreferenceFragment mTransitionAnimationScale = addListPreference(TRANSITION_ANIMATION_SCALE_KEY); mAnimatorDurationScale = addListPreference(ANIMATOR_DURATION_SCALE_KEY); mOverlayDisplayDevices = addListPreference(OVERLAY_DISPLAY_DEVICES_KEY); + mEnableMultiWindow = findAndInitSwitchPref(ENABLE_MULTI_WINDOW_KEY); + if (!showEnableMultiWindowPreference()) { + final PreferenceGroup drawingGroup = + (PreferenceGroup)findPreference("debug_drawing_category"); + if (drawingGroup != null) { + drawingGroup.removePreference(mEnableMultiWindow); + } else { + mEnableMultiWindow.setEnabled(false); + } + removePreference(mEnableMultiWindow); + mEnableMultiWindow = null; + } mOpenGLTraces = addListPreference(OPENGL_TRACES_KEY); mSimulateColorSpace = addListPreference(SIMULATE_COLOR_SPACE); mUseAwesomePlayer = findAndInitSwitchPref(USE_AWESOMEPLAYER_KEY); @@ -428,6 +439,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private void removePreference(Preference preference) { getPreferenceScreen().removePreference(preference); mAllPrefs.remove(preference); + mResetSwitchPrefs.remove(preference); } private void setPrefsEnabledState(boolean enabled) { @@ -550,6 +562,10 @@ public class DevelopmentSettings extends SettingsPreferenceFragment updateDebugLayoutOptions(); updateAnimationScaleOptions(); updateOverlayDisplayDevicesOptions(); + if (mEnableMultiWindow != null) { + updateSwitchPreference(mEnableMultiWindow, + SystemProperties.getBoolean(MULTI_WINDOW_SYSTEM_PROPERTY, false)); + } updateOpenGLTracesOptions(); updateImmediatelyDestroyActivitiesOptions(); updateAppProcessLimitOptions(); @@ -712,6 +728,15 @@ public class DevelopmentSettings extends SettingsPreferenceFragment return !SystemProperties.get(PERSISTENT_DATA_BLOCK_PROP).equals(""); } + private boolean showEnableMultiWindowPreference() { + return !"user".equals(Build.TYPE); + } + + private void setEnableMultiWindow(boolean value) { + SystemProperties.set(MULTI_WINDOW_SYSTEM_PROPERTY, String.valueOf(value)); + pokeSystemProperties(); + } + private void updateBugreportOptions() { if ("user".equals(Build.TYPE)) { final ContentResolver resolver = getActivity().getContentResolver(); @@ -762,7 +787,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment } private void updatePointerLocationOptions() { - updateSwitchPreference(mPointerLocation, Settings.System.getInt(getActivity().getContentResolver(), + updateSwitchPreference(mPointerLocation, + Settings.System.getInt(getActivity().getContentResolver(), Settings.System.POINTER_LOCATION, 0) != 0); } @@ -772,7 +798,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment } private void updateShowTouchesOptions() { - updateSwitchPreference(mShowTouches, Settings.System.getInt(getActivity().getContentResolver(), + updateSwitchPreference(mShowTouches, + Settings.System.getInt(getActivity().getContentResolver(), Settings.System.SHOW_TOUCHES, 0) != 0); } @@ -1041,7 +1068,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment } private void updateForceRtlOptions() { - updateSwitchPreference(mForceRtlLayout, Settings.Global.getInt(getActivity().getContentResolver(), + updateSwitchPreference(mForceRtlLayout, + Settings.Global.getInt(getActivity().getContentResolver(), Settings.Global.DEVELOPMENT_FORCE_RTL, 0) != 0); } @@ -1178,7 +1206,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment } private void updateCpuUsageOptions() { - updateSwitchPreference(mShowCpuUsage, Settings.Global.getInt(getActivity().getContentResolver(), + updateSwitchPreference(mShowCpuUsage, + Settings.Global.getInt(getActivity().getContentResolver(), Settings.Global.SHOW_PROCESSES, 0) != 0); } @@ -1352,6 +1381,24 @@ public class DevelopmentSettings extends SettingsPreferenceFragment .show(); } + private void confirmEnableMultiWindowMode() { + DialogInterface.OnClickListener onConfirmListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + setEnableMultiWindow((which == DialogInterface.BUTTON_POSITIVE) ? true : false); + updateAllOptions(); + } + }; + + new AlertDialog.Builder(getActivity()) + .setTitle(R.string.confirm_enable_multi_window_title) + .setMessage(R.string.confirm_enable_multi_window_text) + .setPositiveButton(R.string.enable_text, onConfirmListener) + .setNegativeButton(android.R.string.cancel, onConfirmListener) + .create() + .show(); + } + @Override public void onSwitchChanged(Switch switchView, boolean isChecked) { if (switchView != mSwitchBar.getSwitch()) { @@ -1479,6 +1526,12 @@ public class DevelopmentSettings extends SettingsPreferenceFragment writeShowUpdatesOption(); } else if (preference == mDisableOverlays) { writeDisableOverlaysOption(); + } else if (preference == mEnableMultiWindow) { + if (mEnableMultiWindow.isChecked()) { + confirmEnableMultiWindowMode(); + } else { + setEnableMultiWindow(false); + } } else if (preference == mShowCpuUsage) { writeCpuUsageOptions(); } else if (preference == mImmediatelyDestroyActivities) { |