diff options
author | Jason Monk <jmonk@google.com> | 2015-06-07 09:58:30 -0400 |
---|---|---|
committer | Jason Monk <jmonk@google.com> | 2015-06-08 10:08:06 -0400 |
commit | 16ada3df306f3efcfc748fcd23e78cbe6375efa6 (patch) | |
tree | f98ba25594d15e315e17329928e8c243a21c93f3 /packages/SystemUI/src/com | |
parent | 6236a820a25d81f996c2de1477c1357d1fe2540b (diff) | |
download | frameworks_base-16ada3df306f3efcfc748fcd23e78cbe6375efa6.zip frameworks_base-16ada3df306f3efcfc748fcd23e78cbe6375efa6.tar.gz frameworks_base-16ada3df306f3efcfc748fcd23e78cbe6375efa6.tar.bz2 |
Add demo mode to tuner
Allows turning on/off and setting to specific mode for screen shots.
Change-Id: Iee95aff17189dea7a77c493e9b396b9f21052ee8
Diffstat (limited to 'packages/SystemUI/src/com')
3 files changed, 189 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/DemoMode.java b/packages/SystemUI/src/com/android/systemui/DemoMode.java index 9c206e2..d406f5b 100644 --- a/packages/SystemUI/src/com/android/systemui/DemoMode.java +++ b/packages/SystemUI/src/com/android/systemui/DemoMode.java @@ -24,6 +24,8 @@ public interface DemoMode { public static final String ACTION_DEMO = "com.android.systemui.demo"; + public static final String EXTRA_COMMAND = "command"; + public static final String COMMAND_ENTER = "enter"; public static final String COMMAND_EXIT = "exit"; public static final String COMMAND_CLOCK = "clock"; diff --git a/packages/SystemUI/src/com/android/systemui/tuner/DemoModeFragment.java b/packages/SystemUI/src/com/android/systemui/tuner/DemoModeFragment.java new file mode 100644 index 0000000..d9f0598 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/tuner/DemoModeFragment.java @@ -0,0 +1,175 @@ +/* + * Copyright (C) 2015 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.systemui.tuner; + +import android.content.ContentResolver; +import android.content.Context; +import android.content.Intent; +import android.database.ContentObserver; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.preference.Preference; +import android.preference.Preference.OnPreferenceChangeListener; +import android.preference.PreferenceFragment; +import android.preference.PreferenceScreen; +import android.preference.SwitchPreference; +import android.provider.Settings; + +import com.android.systemui.DemoMode; +import com.android.systemui.R; + +public class DemoModeFragment extends PreferenceFragment implements OnPreferenceChangeListener { + + private static final String DEMO_MODE_ALLOWED = "sysui_demo_allowed"; + private static final String DEMO_MODE_ON = "sysui_tuner_demo_on"; + + private static final String[] STATUS_ICONS = { + "volume", + "bluetooth", + "location", + "alarm", + "zen", + "sync", + "tty", + "eri", + "mute", + "speakerphone", + "managed_profile", + }; + + private SwitchPreference mEnabledSwitch; + private SwitchPreference mOnSwitch; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + Context context = getContext(); + mEnabledSwitch = new SwitchPreference(context); + mEnabledSwitch.setTitle(R.string.enable_demo_mode); + mEnabledSwitch.setOnPreferenceChangeListener(this); + mOnSwitch = new SwitchPreference(context); + mOnSwitch.setTitle(R.string.show_demo_mode); + mOnSwitch.setEnabled(false); + mOnSwitch.setOnPreferenceChangeListener(this); + + PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(context); + screen.addPreference(mEnabledSwitch); + screen.addPreference(mOnSwitch); + setPreferenceScreen(screen); + + updateDemoModeEnabled(); + updateDemoModeOn(); + ContentResolver contentResolver = getContext().getContentResolver(); + contentResolver.registerContentObserver(Settings.Global.getUriFor(DEMO_MODE_ALLOWED), false, + mDemoModeObserver); + contentResolver.registerContentObserver(Settings.Global.getUriFor(DEMO_MODE_ON), false, + mDemoModeObserver); + } + + @Override + public void onDestroy() { + getContext().getContentResolver().unregisterContentObserver(mDemoModeObserver); + super.onDestroy(); + } + + private void updateDemoModeEnabled() { + boolean enabled = Settings.Global.getInt(getContext().getContentResolver(), + DEMO_MODE_ALLOWED, 0) != 0; + mEnabledSwitch.setChecked(enabled); + mOnSwitch.setEnabled(enabled); + } + + private void updateDemoModeOn() { + boolean enabled = Settings.Global.getInt(getContext().getContentResolver(), + DEMO_MODE_ON, 0) != 0; + mOnSwitch.setChecked(enabled); + } + + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + if (preference == mEnabledSwitch) { + setGlobal(DEMO_MODE_ALLOWED, newValue == Boolean.TRUE ? 1 : 0); + } else if (preference == mOnSwitch) { + if (newValue == Boolean.TRUE) { + startDemoMode(); + } else { + stopDemoMode(); + } + } else { + return false; + } + return true; + } + + private void startDemoMode() { + Intent intent = new Intent(DemoMode.ACTION_DEMO); + + intent.putExtra(DemoMode.EXTRA_COMMAND, DemoMode.COMMAND_ENTER); + getContext().sendBroadcast(intent); + + intent.putExtra(DemoMode.EXTRA_COMMAND, DemoMode.COMMAND_CLOCK); + intent.putExtra("hhmm", "0520"); + getContext().sendBroadcast(intent); + + intent.putExtra(DemoMode.EXTRA_COMMAND, DemoMode.COMMAND_NETWORK); + intent.putExtra("wifi", "show"); + intent.putExtra("mobile", "show"); + intent.putExtra("sims", "1"); + intent.putExtra("nosim", "false"); + intent.putExtra("fully", "true"); + intent.putExtra("level", "4"); + intent.putExtra("datatypel", ""); + getContext().sendBroadcast(intent); + + intent.putExtra(DemoMode.EXTRA_COMMAND, DemoMode.COMMAND_BATTERY); + intent.putExtra("level", "100"); + intent.putExtra("plugged", "false"); + getContext().sendBroadcast(intent); + + intent.putExtra(DemoMode.EXTRA_COMMAND, DemoMode.COMMAND_STATUS); + for (String icon : STATUS_ICONS) { + intent.putExtra(icon, "hide"); + } + getContext().sendBroadcast(intent); + + intent.putExtra(DemoMode.EXTRA_COMMAND, DemoMode.COMMAND_NOTIFICATIONS); + intent.putExtra("visible", "false"); + getContext().sendBroadcast(intent); + + setGlobal(DEMO_MODE_ON, 1); + } + + private void stopDemoMode() { + Intent intent = new Intent(DemoMode.ACTION_DEMO); + intent.putExtra(DemoMode.EXTRA_COMMAND, DemoMode.COMMAND_EXIT); + getContext().sendBroadcast(intent); + setGlobal(DEMO_MODE_ON, 0); + } + + private void setGlobal(String key, int value) { + Settings.Global.putInt(getContext().getContentResolver(), key, value); + } + + private final ContentObserver mDemoModeObserver = + new ContentObserver(new Handler(Looper.getMainLooper())) { + public void onChange(boolean selfChange) { + updateDemoModeEnabled(); + updateDemoModeOn(); + }; + }; +} diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java index 7ac7306..4a8c2e4 100644 --- a/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java +++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java @@ -38,6 +38,7 @@ import com.android.systemui.tuner.TunerService.Tunable; public class TunerFragment extends PreferenceFragment { private static final String KEY_QS_TUNER = "qs_tuner"; + private static final String KEY_DEMO_MODE = "demo_mode"; private static final String KEY_BATTERY_PCT = "battery_pct"; private final SettingObserver mSettingObserver = new SettingObserver(); @@ -58,7 +59,17 @@ public class TunerFragment extends PreferenceFragment { ft.replace(android.R.id.content, new QsTuner(), "QsTuner"); ft.addToBackStack(null); ft.commit(); - return false; + return true; + } + }); + findPreference(KEY_DEMO_MODE).setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + FragmentTransaction ft = getFragmentManager().beginTransaction(); + ft.replace(android.R.id.content, new DemoModeFragment(), "DemoMode"); + ft.addToBackStack(null); + ft.commit(); + return true; } }); mBatteryPct = (SwitchPreference) findPreference(KEY_BATTERY_PCT); |