package com.frogermcs.androiddevmetrics.internal.ui.dialog; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.v4.app.DialogFragment; import com.frogermcs.androiddevmetrics.aspect.ActivityLifecycleAnalyzer; import com.frogermcs.androiddevmetrics.internal.ActivityMetricDescription; import com.frogermcs.androiddevmetrics.internal.MethodsTracingManager; /** * Created by Miroslaw Stanek on 17.03.2016. */ public class ActivitiesMethodsPickerDialog extends DialogFragment { public static final String TAG = "ActivitiesMethodsPickerDialog"; private static final String ARG_ACTIVITY_NAME = "ARG_ACTIVITY_NAME"; private static final String ARG_IMPLEMENTED_METHODS = "ARG_IMPLEMENTED_METHODS"; String[] items; boolean[] enabledItems; private String activityName; public static ActivitiesMethodsPickerDialog newInstance(ActivityMetricDescription activityMetricDescription) { ActivitiesMethodsPickerDialog dialog = new ActivitiesMethodsPickerDialog(); Bundle args = new Bundle(); args.putString(ARG_ACTIVITY_NAME, activityMetricDescription.activityName); args.putStringArray(ARG_IMPLEMENTED_METHODS, activityMetricDescription.getImplementedMethods()); dialog.setArguments(args); return dialog; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); activityName = getArguments().getString(ARG_ACTIVITY_NAME); items = getArguments().getStringArray(ARG_IMPLEMENTED_METHODS); enabledItems = new boolean[]{ MethodsTracingManager.getInstance().shouldTraceMethod(activityName, ActivityLifecycleAnalyzer.METHOD_ON_CREATE), MethodsTracingManager.getInstance().shouldTraceMethod(activityName, ActivityLifecycleAnalyzer.METHOD_ON_START), MethodsTracingManager.getInstance().shouldTraceMethod(activityName, ActivityLifecycleAnalyzer.METHOD_ON_RESUME) }; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle("Pick methods (implemented only)") .setMultiChoiceItems(items, enabledItems, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { enabledItems[which] = isChecked; if (isChecked) { MethodsTracingManager.getInstance().scheduleMethodTracing(activityName, items[which]); } else { MethodsTracingManager.getInstance().disableMethodTracing(activityName, items[which]); } } }) .setPositiveButton("OK", null); return builder.create(); } }