1 package com.android.settings.fuelgauge;
3 import android.app.Activity;
4 import android.app.AlertDialog;
5 import android.app.Dialog;
6 import android.content.Context;
7 import android.content.DialogInterface;
8 import android.os.Bundle;
9 import android.support.annotation.IntDef;
10 import android.support.annotation.VisibleForTesting;
12 import com.android.internal.logging.nano.MetricsProto;
13 import com.android.settings.R;
14 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
16 import java.lang.annotation.Retention;
17 import java.lang.annotation.RetentionPolicy;
20 * Fragment to show the dialog for uninstall or forcestop. This fragment uses function in
21 * target fragment to handle the dialog button click.
23 public class ButtonActionDialogFragment extends InstrumentedDialogFragment implements
24 DialogInterface.OnClickListener {
27 * Interface to handle the dialog click
29 interface AppButtonsDialogListener {
30 void handleDialogClick(int type);
33 @Retention(RetentionPolicy.SOURCE)
36 DialogType.SPECIAL_DISABLE,
39 public @interface DialogType {
41 int SPECIAL_DISABLE = 1;
45 private static final String ARG_ID = "id";
49 public static ButtonActionDialogFragment newInstance(@DialogType int id) {
50 ButtonActionDialogFragment dialogFragment = new ButtonActionDialogFragment();
51 Bundle args = new Bundle(1);
52 args.putInt(ARG_ID, id);
53 dialogFragment.setArguments(args);
55 return dialogFragment;
59 public int getMetricsCategory() {
60 //TODO(35810915): update the metrics label because for now this fragment will be shown
62 return MetricsProto.MetricsEvent.DIALOG_APP_INFO_ACTION;
66 public Dialog onCreateDialog(Bundle savedInstanceState) {
67 final Bundle bundle = getArguments();
68 mId = bundle.getInt(ARG_ID);
69 Dialog dialog = createDialog(mId);
71 throw new IllegalArgumentException("unknown id " + mId);
77 public void onClick(DialogInterface dialog, int which) {
78 final AppButtonsDialogListener lsn =
79 (AppButtonsDialogListener) getTargetFragment();
80 lsn.handleDialogClick(mId);
83 private AlertDialog createDialog(int id) {
84 final Context context = getContext();
86 case DialogType.DISABLE:
87 case DialogType.SPECIAL_DISABLE:
88 return new AlertDialog.Builder(context)
89 .setMessage(R.string.app_disable_dlg_text)
90 .setPositiveButton(R.string.app_disable_dlg_positive, this)
91 .setNegativeButton(R.string.dlg_cancel, null)
93 case DialogType.FORCE_STOP:
94 return new AlertDialog.Builder(context)
95 .setTitle(R.string.force_stop_dlg_title)
96 .setMessage(R.string.force_stop_dlg_text)
97 .setPositiveButton(R.string.dlg_ok, this)
98 .setNegativeButton(R.string.dlg_cancel, null)