package com.mortarnav.stackable; import android.content.Context; import android.view.View; import android.view.ViewGroup; import com.mortarnav.DaggerScope; import com.mortarnav.MainActivityComponent; import com.mortarnav.deps.WithActivityDependencies; import com.mortarnav.presenter.HomePresenter; import com.mortarnav.view.HomeAdditionalCustomView; import com.mortarnav.view.HomeView; import org.parceler.Parcel; import org.parceler.ParcelConstructor; import architect.StackablePath; import architect.robot.DaggerService; import dagger.Provides; import mortar.MortarScope; /** * Manually created StackablePath * You should rather use @AutoStackable if you can * * @author Lukasz Piliszczuk - lukasz.pili@gmail.com */ @Parcel(parcelsIndex = false) public class HomeStackable implements StackablePath { String name; @ParcelConstructor public HomeStackable(String name) { this.name = name; } @Override public View createView(Context context, ViewGroup parent) { return new HomeView(context); } @Override public void configureScope(MortarScope.Builder builder, MortarScope parentScope) { builder.withService(DaggerService.SERVICE_NAME, DaggerHomeStackable_Component.builder() .mainActivityComponent(parentScope.<MainActivityComponent>getService(DaggerService.SERVICE_NAME)) .module(new Module()) .build()); } @dagger.Module public class Module { @Provides @DaggerScope(Component.class) public HomePresenter providesPresenter() { return new HomePresenter(name); } } @dagger.Component(dependencies = MainActivityComponent.class, modules = Module.class) @DaggerScope(Component.class) public interface Component extends WithActivityDependencies { void inject(HomeView view); void inject(HomeAdditionalCustomView view); } }