diff options
| -rw-r--r-- | packages/SystemUI/res/drawable-nodpi/compat_mode_help_bg.png | bin | 0 -> 134055 bytes | |||
| -rw-r--r-- | packages/SystemUI/res/drawable/compat_mode_help_diagram.png | bin | 0 -> 27765 bytes | |||
| -rw-r--r-- | packages/SystemUI/res/drawable/compat_mode_help_icon.png | bin | 0 -> 9667 bytes | |||
| -rw-r--r-- | packages/SystemUI/res/layout-sw600dp/compat_mode_help.xml | 79 | ||||
| -rw-r--r-- | packages/SystemUI/res/values/strings.xml | 6 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/policy/Prefs.java | 2 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java | 39 |
7 files changed, 125 insertions, 1 deletions
diff --git a/packages/SystemUI/res/drawable-nodpi/compat_mode_help_bg.png b/packages/SystemUI/res/drawable-nodpi/compat_mode_help_bg.png Binary files differnew file mode 100644 index 000000000000..d1d32a470f0b --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/compat_mode_help_bg.png diff --git a/packages/SystemUI/res/drawable/compat_mode_help_diagram.png b/packages/SystemUI/res/drawable/compat_mode_help_diagram.png Binary files differnew file mode 100644 index 000000000000..e2122313bc55 --- /dev/null +++ b/packages/SystemUI/res/drawable/compat_mode_help_diagram.png diff --git a/packages/SystemUI/res/drawable/compat_mode_help_icon.png b/packages/SystemUI/res/drawable/compat_mode_help_icon.png Binary files differnew file mode 100644 index 000000000000..03bbef9c06a2 --- /dev/null +++ b/packages/SystemUI/res/drawable/compat_mode_help_icon.png diff --git a/packages/SystemUI/res/layout-sw600dp/compat_mode_help.xml b/packages/SystemUI/res/layout-sw600dp/compat_mode_help.xml new file mode 100644 index 000000000000..df3c5a3a402d --- /dev/null +++ b/packages/SystemUI/res/layout-sw600dp/compat_mode_help.xml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2011, 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. +*/ +--> + +<RelativeLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_height="match_parent" + android:layout_width="match_parent" + android:background="@drawable/compat_mode_help_bg" + > + <TextView + android:id="@+id/header" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="160dp" + android:layout_marginTop="80dp" + android:textSize="60sp" + android:maxLines="1" + android:shadowRadius="8" + android:shadowColor="#FF000000" + android:text="@string/compat_mode_help_header" + /> + <ImageView + android:id="@+id/diagram" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="160dp" + android:layout_marginTop="80dp" + android:layout_centerInParent="true" + android:src="@drawable/compat_mode_help_diagram" + /> + <TextView + android:id="@+id/explanation" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="80dp" + android:layout_marginRight="240dp" + android:layout_alignLeft="@id/header" + android:layout_alignParentBottom="true" + android:shadowRadius="4" + android:shadowColor="#FF000000" + android:textSize="28sp" + android:text="@string/compat_mode_help_body" + /> + <ImageView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginRight="80dp" + android:layout_alignBottom="@id/explanation" + android:layout_alignParentRight="true" + android:src="@drawable/compat_mode_help_icon" + /> + <Button + android:id="@+id/button" + android:layout_width="208dp" + android:layout_height="48dp" + android:layout_alignLeft="@id/header" + android:layout_alignParentBottom="true" + android:layout_marginBottom="10dp" + android:textSize="28sp" + android:text="@android:string/ok" + /> +</RelativeLayout> + diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 973a4b2849ed..8945da5828d9 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -150,4 +150,10 @@ <!-- Checkbox label for application compatibility mode OFF (normal mode on tablets). [CHAR LIMIT=25] --> <string name="compat_mode_off">Stretch to fill screen</string> + + <!-- Compatibility mode help screen: header text. [CHAR LIMIT=50] --> + <string name="compat_mode_help_header">Compatibility Zoom</string> + + <!-- Compatibility mode help screen: body text. [CHAR LIMIT=150] --> + <string name="compat_mode_help_body">When an app was designed for a smaller screen, a zoom control will appear by the clock.</string> </resources> diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Prefs.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Prefs.java index 05eafe866955..83e8c96f8064 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/Prefs.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/Prefs.java @@ -26,6 +26,8 @@ public class Prefs { public static final String DO_NOT_DISTURB_PREF = "do_not_disturb"; public static final boolean DO_NOT_DISTURB_DEFAULT = false; + public static final String SHOWN_COMPAT_MODE_HELP = "shown_compat_mode_help"; + public static SharedPreferences read(Context context) { return context.getSharedPreferences(Prefs.SHARED_PREFS_NAME, Context.MODE_PRIVATE); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java index d00625874d52..a7af30d83178 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import android.animation.LayoutTransition; import android.animation.ObjectAnimator; import android.app.ActivityManagerNative; +import android.app.Dialog; import android.app.PendingIntent; import android.app.Notification; import android.app.StatusBarManager; @@ -35,6 +36,7 @@ import android.inputmethodservice.InputMethodService; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.drawable.LayerDrawable; +import android.provider.Settings; import android.os.Handler; import android.os.IBinder; import android.os.Message; @@ -1006,8 +1008,43 @@ public class TabletStatusBar extends StatusBar implements // See above re: lights-out policy for legacy apps. if (windowVisible) setLightsOn(true); - // XXX: this is broken: http://b/4603422 mCompatModeButton.refresh(); + if (mCompatModeButton.getVisibility() == View.VISIBLE) { + if (! Prefs.read(mContext).getBoolean(Prefs.SHOWN_COMPAT_MODE_HELP, false)) { + showCompatibilityHelp(); + } + } + } + + private void showCompatibilityHelp() { + final View dlg = View.inflate(mContext, R.layout.compat_mode_help, null); + View button = dlg.findViewById(R.id.button); + + button.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + WindowManagerImpl.getDefault().removeView(dlg); + } + }); + + WindowManager.LayoutParams lp = mNotificationPanelParams = new WindowManager.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT, + WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG, + WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN + | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS + | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM, + PixelFormat.TRANSLUCENT); + lp.setTitle("CompatibilityModeDialog"); + lp.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED + | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING; + lp.windowAnimations = com.android.internal.R.style.Animation_ZoomButtons; // simple fade + + WindowManagerImpl.getDefault().addView(dlg, lp); + + SharedPreferences.Editor editor = Prefs.edit(mContext); + editor.putBoolean(Prefs.SHOWN_COMPAT_MODE_HELP, true); + editor.apply(); } public void setImeWindowStatus(IBinder token, int vis, int backDisposition) { |