package view_inspector.ui.dialog; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.util.TypedValue; import android.view.ContextThemeWrapper; import com.f2prateek.rx.preferences.Preference; import javax.inject.Inject; import view_inspector.R; import view_inspector.ViewInspector; import view_inspector.dagger.qualifier.BypassInterceptor; import view_inspector.ui.ViewInspectorToolbar; import view_inspector.ui.menu.BaseMenu; public class BaseDialog extends AlertDialog { @Inject @BypassInterceptor Preference<Boolean> bypassInterceptor; @Inject ViewInspectorToolbar toolbar; BaseMenu mMenu; public BaseDialog(Context context) { super(context); ViewInspector.runtimeComponentMap.get(((ContextThemeWrapper) context).getBaseContext()) .inject(this); setCancelable(true); setCanceledOnTouchOutside(true); setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { restoreOpenedMenu(); } }); } @Override public void onAttachedToWindow() { bypassInterceptor.set(true); mMenu = toolbar.getMenu(); toolbar.closeToolbar(); super.onAttachedToWindow(); } @Override public void onDetachedFromWindow() { bypassInterceptor.set(false); super.onDetachedFromWindow(); } protected void restoreOpenedMenu() { toolbar.toggleToolbar(); if (mMenu != null) toolbar.openMenu(mMenu); } public static int getDialogTheme(Context context) { TypedValue outValue = new TypedValue(); context.getTheme().resolveAttribute(R.attr.isLightTheme, outValue, true); return outValue.data != 0 ? R.style.DialogThemeLight : R.style.DialogTheme; } }