17df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette/* 27df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette * Copyright (C) 2011 The Android Open Source Project 37df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette * 47df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette * Licensed under the Apache License, Version 2.0 (the "License"); 57df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette * you may not use this file except in compliance with the License. 67df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette * You may obtain a copy of the License at 77df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette * 87df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette * http://www.apache.org/licenses/LICENSE-2.0 97df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette * 107df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette * Unless required by applicable law or agreed to in writing, software 117df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette * distributed under the License is distributed on an "AS IS" BASIS, 127df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette * See the License for the specific language governing permissions and 147df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette * limitations under the License. 157df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette */ 167df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette 177df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverettepackage com.android.server.am; 187df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette 197df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viveretteimport com.android.internal.R; 207df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette 217df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viveretteimport android.app.AlertDialog; 227df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viveretteimport android.content.Context; 237df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viveretteimport android.content.pm.ApplicationInfo; 247df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viveretteimport android.content.pm.PackageManager; 257df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viveretteimport android.view.Window; 267df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viveretteimport android.view.WindowManager; 277df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viveretteimport android.widget.CheckBox; 287df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette 297df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverettepublic class UnsupportedDisplaySizeDialog { 307df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette private final AlertDialog mDialog; 317df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette private final String mPackageName; 327df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette 337df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette public UnsupportedDisplaySizeDialog(final ActivityManagerService service, Context context, 347df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette ApplicationInfo appInfo) { 357df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette mPackageName = appInfo.packageName; 367df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette 377df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette final PackageManager pm = context.getPackageManager(); 387df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette final CharSequence label = appInfo.loadSafeLabel(pm); 397df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette final CharSequence message = context.getString( 407df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette R.string.unsupported_display_size_message, label); 417df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette 427df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette mDialog = new AlertDialog.Builder(context) 437df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette .setPositiveButton(R.string.ok, null) 447df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette .setMessage(message) 457df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette .setView(R.layout.unsupported_display_size_dialog_content) 467df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette .create(); 477df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette 487df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette // Ensure the content view is prepared. 497df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette mDialog.create(); 507df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette 517df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette final Window window = mDialog.getWindow(); 527df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette window.setType(WindowManager.LayoutParams.TYPE_PHONE); 537df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette 547df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette // DO NOT MODIFY. Used by CTS to verify the dialog is displayed. 557df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette window.getAttributes().setTitle("UnsupportedDisplaySizeDialog"); 567df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette 577df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette final CheckBox alwaysShow = (CheckBox) mDialog.findViewById(R.id.ask_checkbox); 587df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette alwaysShow.setChecked(true); 597df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette alwaysShow.setOnCheckedChangeListener((buttonView, isChecked) -> { 607df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette synchronized (service) { 617df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette service.mCompatModePackages.setPackageNotifyUnsupportedZoomLocked( 627df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette mPackageName, isChecked); 637df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette } 647df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette }); 657df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette } 667df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette 677df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette public String getPackageName() { 687df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette return mPackageName; 697df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette } 707df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette 717df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette public void show() { 727df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette mDialog.show(); 737df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette } 747df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette 757df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette public void dismiss() { 767df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette mDialog.dismiss(); 777df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette } 787df9b45bfe3cc6a6b3f33be008bb69a31b15999fAlan Viverette} 79