156e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler/* 256e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler * Copyright (C) 2008 The Android Open Source Project 356e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler * 456e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler * Licensed under the Apache License, Version 2.0 (the "License"); 556e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler * you may not use this file except in compliance with the License. 656e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler * You may obtain a copy of the License at 756e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler * 856e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler * http://www.apache.org/licenses/LICENSE-2.0 956e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler * 1056e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler * Unless required by applicable law or agreed to in writing, software 1156e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler * distributed under the License is distributed on an "AS IS" BASIS, 1256e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1356e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler * See the License for the specific language governing permissions and 1456e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler * limitations under the License. 1556e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler */ 1656e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler 1756e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandlerpackage com.android.systemui.statusbar.policy; 1856e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler 1956e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandlerimport android.app.ActivityManager; 2056e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandlerimport android.content.Context; 2156e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandlerimport android.content.res.TypedArray; 2256e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandlerimport android.os.RemoteException; 2356e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandlerimport android.util.AttributeSet; 2456e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandlerimport android.util.Slog; 2556e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandlerimport android.view.View; 2656e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandlerimport android.widget.ImageView; 2756e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler 2856e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandlerimport com.android.systemui.R; 2956e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler 303b0543acf11ac4638ec5452acc4c1c6716c26880Daniel Sandlerpublic class CompatModeButton extends ImageView { 313b0543acf11ac4638ec5452acc4c1c6716c26880Daniel Sandler private static final boolean DEBUG = false; 3256e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler private static final String TAG = "StatusBar.CompatModeButton"; 3356e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler 3456e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler private ActivityManager mAM; 3556e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler 3656e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler public CompatModeButton(Context context, AttributeSet attrs) { 3756e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler this(context, attrs, 0); 3856e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler } 3956e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler 4056e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler public CompatModeButton(Context context, AttributeSet attrs, int defStyle) { 4156e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler super(context, attrs); 4256e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler 4356e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler setClickable(true); 4456e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler 4556e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler mAM = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 4656e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler 4756e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler refresh(); 4856e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler } 4956e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler 5056e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler public void refresh() { 5148a7651823030ed3c0f4c084b423430044425feaDianne Hackborn int mode = mAM.getFrontActivityScreenCompatMode(); 52e0f085d4b8f313179825f2b051cb403736a7d01aDianne Hackborn if (mode == ActivityManager.COMPAT_MODE_UNKNOWN) { 53e0f085d4b8f313179825f2b051cb403736a7d01aDianne Hackborn // If in an unknown state, don't change. 54e0f085d4b8f313179825f2b051cb403736a7d01aDianne Hackborn return; 55e0f085d4b8f313179825f2b051cb403736a7d01aDianne Hackborn } 563b0543acf11ac4638ec5452acc4c1c6716c26880Daniel Sandler final boolean vis = (mode != ActivityManager.COMPAT_MODE_NEVER 573b0543acf11ac4638ec5452acc4c1c6716c26880Daniel Sandler && mode != ActivityManager.COMPAT_MODE_ALWAYS); 583b0543acf11ac4638ec5452acc4c1c6716c26880Daniel Sandler if (DEBUG) Slog.d(TAG, "compat mode is " + mode + "; icon will " + (vis ? "show" : "hide")); 593b0543acf11ac4638ec5452acc4c1c6716c26880Daniel Sandler setVisibility(vis ? View.VISIBLE : View.GONE); 6056e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler } 6156e6dbd8b16f5bb0b58bad6dee824034783f4ddfDaniel Sandler} 62