package view_inspector.ui.menu; import android.animation.ObjectAnimator; import android.content.Context; import android.view.ContextThemeWrapper; import android.view.View; import android.view.WindowManager; import android.widget.CompoundButton; import android.widget.LinearLayout; import android.widget.Switch; import com.f2prateek.rx.preferences.Preference; import javax.inject.Inject; import view_inspector.R; import view_inspector.ViewInspector; import view_inspector.dagger.qualifier.ProbeMeasures; import view_inspector.dagger.qualifier.ShowMeasureCount; import view_inspector.probe.ViewInspectorInterceptor; import view_inspector.ui.ViewInspectorToolbar; import view_inspector.ui.dialog.BaseDialog; import view_inspector.ui.dialog.ProfileSettingDialog; import view_inspector.ui.dialog.SetViewRootDialog; public class EventMenu extends BaseMenu implements SetViewRootDialog.ViewRootSelectListener { private final LinearLayout mSubmenuLayout; private final Context mContext; private final Switch mProbeMeasureSwitch; @Inject @ProbeMeasures Preference<Boolean> probeMeasures; @Inject @ShowMeasureCount Preference<Boolean> showMeasureCount; @Inject ViewInspectorInterceptor interceptor; @Inject ViewInspectorToolbar toolbar; @Inject WindowManager windowManager; @SuppressWarnings("ConstantConditions") public EventMenu(final Context context) { super(context); ViewInspector.runtimeComponentMap.get(context).inject(this); mContext = context; inflate(context, R.layout.view_inspector_event_menu, this); mSubmenuLayout = (LinearLayout) findViewById(R.id.submenu); if (probeMeasures.get()) { showSubMenu(); } mProbeMeasureSwitch = (Switch) findViewById(R.id.probe_measure_switch); mProbeMeasureSwitch.setChecked(probeMeasures.get()); mProbeMeasureSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { probeMeasures.set(isChecked); if (isChecked) { showSubMenu(); } else { mSubmenuLayout.setVisibility(GONE); } } }); Switch showMeasureCountSwitch = (Switch) findViewById(R.id.show_measure_count); showMeasureCountSwitch.setChecked(showMeasureCount.get()); showMeasureCountSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { showMeasureCount.set(isChecked); } }); LinearLayout setViewRoot = (LinearLayout) findViewById(R.id.view_root_layout); setViewRoot.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { new SetViewRootDialog( new ContextThemeWrapper(mContext, BaseDialog.getDialogTheme(mContext)), EventMenu.this).show(); } }); View profilingViewTree = findViewById(R.id.profile_view_tree); profilingViewTree.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { new ProfileSettingDialog( new ContextThemeWrapper(mContext, BaseDialog.getDialogTheme(mContext))).show(); } }); } @Override public void onViewRootSelected(View view) { interceptor.setViewRoot(view); mProbeMeasureSwitch.setChecked(true); } private void showSubMenu() { mSubmenuLayout.setVisibility(VISIBLE); ObjectAnimator animator = ObjectAnimator.ofFloat(mSubmenuLayout, "alpha", 0f, 1f); animator.setDuration(500).start(); } }