package com.example.scoop.basics.scoop; import android.content.Context; import android.util.AttributeSet; import com.example.scoop.basics.rx.ViewSubscriptions; import com.example.scoop.basics.ui.Keyboard; import com.lyft.scoop.LayoutInflater; import com.lyft.scoop.RouteChange; import com.lyft.scoop.ScreenScooper; import com.lyft.scoop.UiContainer; import com.lyft.scoop.ViewControllerInflater; import com.lyft.scoop.dagger.DaggerInjector; import com.lyft.scoop.dagger.DaggerLayoutInflater; import com.lyft.scoop.dagger.DaggerViewControllerInflater; import javax.inject.Inject; import rx.functions.Action1; public class DialogUiContainer extends UiContainer { @Inject DialogRouter dialogRouter; @Inject ScreenScooper screenScooper; private ViewSubscriptions subscriptions = new ViewSubscriptions(); public DialogUiContainer(Context context, AttributeSet attrs) { super(context, attrs); if (isInEditMode()) { return; } DaggerInjector.fromView(this).inject(this); } @Override protected ViewControllerInflater getViewControllerInflater() { return new DaggerViewControllerInflater(); } @Override protected LayoutInflater getLayoutInflater() { return new DaggerLayoutInflater(); } @Override protected ScreenScooper getScreenScooper() { return screenScooper; } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); if (isInEditMode()) { return; } subscriptions.add(dialogRouter.observeDialogChange(), onDialogChanged); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); subscriptions.unsubscribe(); } private Action1<RouteChange> onDialogChanged = new Action1<RouteChange>() { @Override public void call(RouteChange routeChange) { goTo(routeChange); Keyboard.hideKeyboard(DialogUiContainer.this); } }; }