package com.mortarnav.presenter;
import android.os.Bundle;
import com.mortarnav.DaggerScope;
import com.mortarnav.MainActivity;
import com.mortarnav.Parceler;
import com.mortarnav.presenter.stackable.SubnavPageStackable;
import com.mortarnav.view.SubnavView;
import javax.inject.Inject;
import architect.Navigator;
import architect.TransitionsMapping;
import architect.commons.transition.LateralViewTransition;
import architect.robot.AutoStackable;
import autodagger.AutoComponent;
import mortar.MortarScope;
import mortar.ViewPresenter;
import timber.log.Timber;
/**
* @author Lukasz Piliszczuk - lukasz.pili@gmail.com
*/
@AutoStackable(
component = @AutoComponent(dependencies = MainActivity.class),
pathWithView = SubnavView.class
)
@DaggerScope(SubnavPresenter.class)
public class SubnavPresenter extends ViewPresenter<SubnavView> {
private Navigator navigator;
@Inject
public SubnavPresenter() {
}
@Override
protected void onLoad(Bundle savedInstanceState) {
navigator = Navigator.find(getView().getContext());
if (navigator == null) {
Timber.d("create navigator");
navigator = Navigator.create(MortarScope.getScope(getView().getContext()), new Parceler());
navigator.transitions().register(new TransitionsMapping().byDefault(new LateralViewTransition()));
}
navigator.delegate().onCreate(null, savedInstanceState, getView().navigatorView, new SubnavPageStackable("INITIAL"));
navigator.delegate().onStart();
}
@Override
protected void onSave(Bundle outState) {
navigator.delegate().onSaveInstanceState(outState);
}
@Override
public void dropView(SubnavView view) {
navigator.delegate().onStop();
navigator.delegate().onDestroy();
navigator = null;
super.dropView(view);
}
public boolean backPressed() {
return navigator.delegate().onBackPressed();
}
}