package com.mortarnav.presenter;
import android.os.Bundle;
import com.mortarnav.presenter.stackable.MyPopup2Stackable;
import com.mortarnav.presenter.stackable.MyPopupStackable;
import com.mortarnav.presenter.stackable.ReturnsResultStackable;
import com.mortarnav.presenter.stackable.SlidesStackable;
import com.mortarnav.presenter.stackable.SubnavStackable;
import com.mortarnav.stackable.HomeStackable;
import com.mortarnav.view.HomeView;
import java.util.Random;
import architect.NavigationChain;
import architect.NavigationStack;
import architect.Navigator;
import architect.ReceivesResult;
import architect.ViewTransitionDirection;
import mortar.ViewPresenter;
import timber.log.Timber;
/**
* @author Lukasz Piliszczuk - lukasz.pili@gmail.com
*/
public class HomePresenter extends ViewPresenter<HomeView> implements ReceivesResult<String> {
private static int count = 0;
private final String name;
private final int random;
public HomePresenter(String name) {
this.name = name;
random = new Random().nextInt(100);
}
@Override
protected void onLoad(Bundle savedInstanceState) {
getView().titleTextView.setText(name);
int r = savedInstanceState != null ? savedInstanceState.getInt("random") : random;
getView().subtitleTextView.setText("Random number: " + r);
}
@Override
protected void onSave(Bundle outState) {
outState.putInt("random", random);
}
@Override
public void onReceivedResult(String result) {
Timber.d("Receive result: %s", result);
// beware that this is called before onLoad() and getView() returns null here
}
public void nextHomeClick() {
Navigator.get(getView()).push(new HomeStackable("Home " + ++count));
}
public void subnavClick() {
// Navigator.get(getView()).chain(new NavigationChain().back().back());
Navigator.get(getView()).push(new SubnavStackable());
}
public void customViewClick() {
Timber.d("Click from custom view");
}
public void pagerClick() {
Navigator.get(getView()).push(new SlidesStackable());
}
public void showPopupClick() {
Navigator.get(getView()).show(new MyPopupStackable());
}
public void replaceNewHomeClick() {
Navigator.get(getView()).replace(new HomeStackable("Replaced!"));
}
public void showReturnsResultClick() {
Navigator.get(getView()).push(new ReturnsResultStackable());
}
public void backToRootClick() {
Navigator.get(getView()).backToRoot("Result test back to root");
// Navigator.get(getView()).chain(new NavigationChain()
// .backToRoot()
// .replace(new HomeStackable("REPLACED STACKABLE " + new Random().nextInt(10000))));
}
public void showTwoPopupsClick() {
Navigator.get(getView()).show(new MyPopup2Stackable(), new MyPopupStackable());
}
public void showPopupTwoClick() {
Navigator.get(getView()).show(new MyPopup2Stackable());
}
public void setNewStackClick() {
Navigator.get(getView()).set(new NavigationStack()
.put(new HomeStackable("NEW STACK 1"))
.put(new HomeStackable("NEW STACK 2"))
.put(new SlidesStackable()), ViewTransitionDirection.FORWARD);
}
}