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