136cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn/* 236cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn * Copyright (C) 2011 The Android Open Source Project 336cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn * 436cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License"); 536cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn * you may not use this file except in compliance with the License. 636cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn * You may obtain a copy of the License at 736cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn * 836cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn * http://www.apache.org/licenses/LICENSE-2.0 936cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn * 1036cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn * Unless required by applicable law or agreed to in writing, software 1136cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS, 1236cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1336cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn * See the License for the specific language governing permissions and 1436cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn * limitations under the License. 1536cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn */ 1636cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn 1736cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackbornpackage com.android.server.am; 1836cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn 1936cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackbornimport android.app.ActivityManager; 2036cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackbornimport android.app.Dialog; 2136cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackbornimport android.content.Context; 2236cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackbornimport android.content.pm.ApplicationInfo; 2336cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackbornimport android.view.Gravity; 2436cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackbornimport android.view.View; 2536cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackbornimport android.view.Window; 2636cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackbornimport android.view.WindowManager; 2736cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackbornimport android.widget.CheckBox; 2836cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackbornimport android.widget.CompoundButton; 2936cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackbornimport android.widget.Switch; 3036cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn 31be4e6aaa0252dd7da28b7aa85beba982538efa46Dianne Hackbornpublic final class CompatModeDialog extends Dialog { 3236cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn final ActivityManagerService mService; 3336cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn final ApplicationInfo mAppInfo; 3436cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn 3536cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn final Switch mCompatEnabled; 3636cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn final CheckBox mAlwaysShow; 3736cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn final View mHint; 3836cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn 3936cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn public CompatModeDialog(ActivityManagerService service, Context context, 4036cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn ApplicationInfo appInfo) { 4136cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn super(context, com.android.internal.R.style.Theme_Holo_Dialog_MinWidth); 4236cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn setCancelable(true); 4336cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn setCanceledOnTouchOutside(true); 4436cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn getWindow().requestFeature(Window.FEATURE_NO_TITLE); 4536cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn getWindow().setType(WindowManager.LayoutParams.TYPE_PHONE); 4636cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn getWindow().setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL); 4736cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn mService = service; 4836cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn mAppInfo = appInfo; 4936cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn 5036cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn setContentView(com.android.internal.R.layout.am_compat_mode_dialog); 5136cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn mCompatEnabled = (Switch)findViewById(com.android.internal.R.id.compat_checkbox); 5236cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn mCompatEnabled.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 5336cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn @Override 5436cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 5536cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn synchronized (mService) { 5636cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn mService.mCompatModePackages.setPackageScreenCompatModeLocked( 5736cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn mAppInfo.packageName, 5836cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn mCompatEnabled.isChecked() ? ActivityManager.COMPAT_MODE_ENABLED 5936cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn : ActivityManager.COMPAT_MODE_DISABLED); 6036cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn updateControls(); 6136cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn } 6236cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn } 6336cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn }); 6436cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn mAlwaysShow = (CheckBox)findViewById(com.android.internal.R.id.ask_checkbox); 6536cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn mAlwaysShow.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 6636cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn @Override 6736cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 6836cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn synchronized (mService) { 6936cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn mService.mCompatModePackages.setPackageAskCompatModeLocked( 7036cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn mAppInfo.packageName, mAlwaysShow.isChecked()); 7136cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn updateControls(); 7236cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn } 7336cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn } 7436cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn }); 7536cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn mHint = findViewById(com.android.internal.R.id.reask_hint); 7636cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn 7736cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn updateControls(); 7836cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn } 7936cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn 8036cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn void updateControls() { 8136cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn synchronized (mService) { 8236cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn int mode = mService.mCompatModePackages.computeCompatModeLocked(mAppInfo); 8336cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn mCompatEnabled.setChecked(mode == ActivityManager.COMPAT_MODE_ENABLED); 8436cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn boolean ask = mService.mCompatModePackages.getPackageAskCompatModeLocked( 8536cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn mAppInfo.packageName); 8636cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn mAlwaysShow.setChecked(ask); 8736cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn mHint.setVisibility(ask ? View.INVISIBLE : View.VISIBLE); 8836cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn } 8936cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn } 9036cd41f8efa6f6a683d3353d309ff548295af9e9Dianne Hackborn} 91