/* * Copyright (C) 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. */ package com.android.server.am; import android.app.ActivityManager; import android.app.Dialog; import android.content.Context; import android.content.pm.ApplicationInfo; import android.view.Gravity; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.Switch; public class CompatModeDialog extends Dialog { final ActivityManagerService mService; final ApplicationInfo mAppInfo; final Switch mCompatEnabled; final CheckBox mAlwaysShow; final View mHint; public CompatModeDialog(ActivityManagerService service, Context context, ApplicationInfo appInfo) { super(context, com.android.internal.R.style.Theme_Holo_Dialog_MinWidth); setCancelable(true); setCanceledOnTouchOutside(true); getWindow().requestFeature(Window.FEATURE_NO_TITLE); getWindow().setType(WindowManager.LayoutParams.TYPE_PHONE); getWindow().setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL); mService = service; mAppInfo = appInfo; setContentView(com.android.internal.R.layout.am_compat_mode_dialog); mCompatEnabled = (Switch)findViewById(com.android.internal.R.id.compat_checkbox); mCompatEnabled.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { synchronized (mService) { mService.mCompatModePackages.setPackageScreenCompatModeLocked( mAppInfo.packageName, mCompatEnabled.isChecked() ? ActivityManager.COMPAT_MODE_ENABLED : ActivityManager.COMPAT_MODE_DISABLED); updateControls(); } } }); mAlwaysShow = (CheckBox)findViewById(com.android.internal.R.id.ask_checkbox); mAlwaysShow.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { synchronized (mService) { mService.mCompatModePackages.setPackageAskCompatModeLocked( mAppInfo.packageName, mAlwaysShow.isChecked()); updateControls(); } } }); mHint = findViewById(com.android.internal.R.id.reask_hint); updateControls(); } void updateControls() { synchronized (mService) { int mode = mService.mCompatModePackages.computeCompatModeLocked(mAppInfo); mCompatEnabled.setChecked(mode == ActivityManager.COMPAT_MODE_ENABLED); boolean ask = mService.mCompatModePackages.getPackageAskCompatModeLocked( mAppInfo.packageName); mAlwaysShow.setChecked(ask); mHint.setVisibility(ask ? View.INVISIBLE : View.VISIBLE); } } }