// Path: app/src/main/java/leonardo2204/com/br/flowtests/di/module/FirstScreenModule.java
// @Module
// public class FirstScreenModule {
// 
//     @Provides
//     @DaggerScope(FirstScreenComponent.class)
//     public GetContacts providesGetContacts(ContactsRepository contactsRepository, ThreadExecutor threadExecutor, PostExecutionThread postExecutionThread) {
//         return new GetContacts(contactsRepository, threadExecutor, postExecutionThread);
//     }
// 
//     @Provides
//     @DaggerScope(FirstScreenComponent.class)
//     public FirstScreenPresenter providesFirstScreenPresenter(GetContacts getContacts, ActionBarOwner actionBarOwner) {
//         return new FirstScreenPresenter(getContacts, actionBarOwner);
//     }
// }
// 
// Path: app/src/main/java/leonardo2204/com/br/flowtests/view/FirstView.java
// public class FirstView extends FrameLayout {
// 
//     @Bind(R.id.contacts_rv)
//     public RecyclerView contacts_rv;
//     @Inject
//     protected FirstScreenPresenter presenter;
//     //    @Inject
// //    protected NavigationPresenter navigationPresenter;
//     LinearLayoutManager linearLayoutManager;
//     boolean mustHaveNumber;
// 
//     public FirstView(Context context) {
//         super(context);
//         inject(context);
//     }
// 
//     public FirstView(Context context, AttributeSet attrs) {
//         super(context, attrs);
//         inject(context);
//     }
// 
//     public FirstView(Context context, AttributeSet attrs, int defStyleAttr) {
//         super(context, attrs, defStyleAttr);
//         inject(context);
//     }
// 
//     private void inject(Context context) {
//         MortarScope scope = Flow.getService(Flow.getKey(this).getClass().getName(), context);
//         ((FirstScreenComponent)scope.getService(DaggerService.SERVICE_NAME)).inject(this);
//         //DaggerService.<FirstScreenComponent>getDaggerComponent(context).inject(this);
//     }
// 
//     @Override
//     protected Parcelable onSaveInstanceState() {
//         Parcelable parcelable = super.onSaveInstanceState();
// 
//         SavedState ss = new SavedState(parcelable);
//         ss.mustHaveNumber = this.mustHaveNumber;
// 
//         return ss;
//     }
// 
//     @Override
//     protected void onRestoreInstanceState(Parcelable state) {
//         if (!(state instanceof SavedState)) {
//             super.onRestoreInstanceState(state);
//             return;
//         }
// 
//         SavedState ss = (SavedState) state;
//         super.onRestoreInstanceState(ss.getSuperState());
// 
//         this.mustHaveNumber = ss.mustHaveNumber;
//     }
// 
//     @Override
//     protected void onAttachedToWindow() {
//         super.onAttachedToWindow();
//         //toolbarPresenter.takeView(toolbar);
//         //navigationPresenter.takeView(navigationView);
//         presenter.takeView(this);
//         presenter.fetchContacts(mustHaveNumber);
//     }
// 
//     @Override
//     protected void onDetachedFromWindow() {
//         //toolbarPresenter.dropView(toolbar);
//         //navigationPresenter.dropView(navigationView);
//         presenter.dropView(this);
//         super.onDetachedFromWindow();
//     }
// 
//     @Override
//     protected void onFinishInflate() {
//         super.onFinishInflate();
//         ButterKnife.bind(this);
//         setupUI();
//     }
// 
//     private void setupUI() {
//         this.setFitsSystemWindows(true);
//         linearLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
//         this.contacts_rv.setLayoutManager(linearLayoutManager);
//         // ViewCompat.setElevation(toolbar, 5f);
// 
//     }
// 
//     public void setMustHaveNumber(boolean mustHaveNumber) {
//         this.mustHaveNumber = mustHaveNumber;
//     }
// 
//     public interface ContactListener {
//         void onClick(Contact contact);
//     }
// 
//     static class SavedState extends BaseSavedState {
// 
//         public static final Parcelable.Creator<SavedState> CREATOR =
//                 new Creator<SavedState>() {
//                     @Override
//                     public SavedState createFromParcel(Parcel source) {
//                         return new SavedState(source);
//                     }
// 
//                     @Override
//                     public SavedState[] newArray(int size) {
//                         return new SavedState[size];
//                     }
//                 };
//         boolean mustHaveNumber;
// 
//         public SavedState(Parcel source) {
//             super(source);
//             this.mustHaveNumber = source.readInt() == 1;
//         }
// 
//         public SavedState(Parcelable superState) {
//             super(superState);
//         }
// 
//         @Override
//         public void writeToParcel(Parcel out, int flags) {
//             super.writeToParcel(out, flags);
//             out.writeInt(this.mustHaveNumber ? 1 : 0);
//         }
//     }
// 
// }


import dagger.Component;
import leonardo2204.com.br.flowtests.di.module.FirstScreenModule;
import leonardo2204.com.br.flowtests.di.scope.DaggerScope;
import leonardo2204.com.br.flowtests.view.FirstView;
package leonardo2204.com.br.flowtests.di.component;


/**
 * Created by Leonardo on 05/03/2016.
 */
@DaggerScope(FirstScreenComponent.class)
@Component(dependencies = ActivityComponent.class, modules = FirstScreenModule.class)
public interface FirstScreenComponent extends AppComponent {
// Path: app/src/main/java/leonardo2204/com/br/flowtests/di/module/FirstScreenModule.java
// @Module
// public class FirstScreenModule {
// 
//     @Provides
//     @DaggerScope(FirstScreenComponent.class)
//     public GetContacts providesGetContacts(ContactsRepository contactsRepository, ThreadExecutor threadExecutor, PostExecutionThread postExecutionThread) {
//         return new GetContacts(contactsRepository, threadExecutor, postExecutionThread);
//     }
// 
//     @Provides
//     @DaggerScope(FirstScreenComponent.class)
//     public FirstScreenPresenter providesFirstScreenPresenter(GetContacts getContacts, ActionBarOwner actionBarOwner) {
//         return new FirstScreenPresenter(getContacts, actionBarOwner);
//     }
// }
// 
// Path: app/src/main/java/leonardo2204/com/br/flowtests/view/FirstView.java
// public class FirstView extends FrameLayout {
// 
//     @Bind(R.id.contacts_rv)
//     public RecyclerView contacts_rv;
//     @Inject
//     protected FirstScreenPresenter presenter;
//     //    @Inject
// //    protected NavigationPresenter navigationPresenter;
//     LinearLayoutManager linearLayoutManager;
//     boolean mustHaveNumber;
// 
//     public FirstView(Context context) {
//         super(context);
//         inject(context);
//     }
// 
//     public FirstView(Context context, AttributeSet attrs) {
//         super(context, attrs);
//         inject(context);
//     }
// 
//     public FirstView(Context context, AttributeSet attrs, int defStyleAttr) {
//         super(context, attrs, defStyleAttr);
//         inject(context);
//     }
// 
//     private void inject(Context context) {
//         MortarScope scope = Flow.getService(Flow.getKey(this).getClass().getName(), context);
//         ((FirstScreenComponent)scope.getService(DaggerService.SERVICE_NAME)).inject(this);
//         //DaggerService.<FirstScreenComponent>getDaggerComponent(context).inject(this);
//     }
// 
//     @Override
//     protected Parcelable onSaveInstanceState() {
//         Parcelable parcelable = super.onSaveInstanceState();
// 
//         SavedState ss = new SavedState(parcelable);
//         ss.mustHaveNumber = this.mustHaveNumber;
// 
//         return ss;
//     }
// 
//     @Override
//     protected void onRestoreInstanceState(Parcelable state) {
//         if (!(state instanceof SavedState)) {
//             super.onRestoreInstanceState(state);
//             return;
//         }
// 
//         SavedState ss = (SavedState) state;
//         super.onRestoreInstanceState(ss.getSuperState());
// 
//         this.mustHaveNumber = ss.mustHaveNumber;
//     }
// 
//     @Override
//     protected void onAttachedToWindow() {
//         super.onAttachedToWindow();
//         //toolbarPresenter.takeView(toolbar);
//         //navigationPresenter.takeView(navigationView);
//         presenter.takeView(this);
//         presenter.fetchContacts(mustHaveNumber);
//     }
// 
//     @Override
//     protected void onDetachedFromWindow() {
//         //toolbarPresenter.dropView(toolbar);
//         //navigationPresenter.dropView(navigationView);
//         presenter.dropView(this);
//         super.onDetachedFromWindow();
//     }
// 
//     @Override
//     protected void onFinishInflate() {
//         super.onFinishInflate();
//         ButterKnife.bind(this);
//         setupUI();
//     }
// 
//     private void setupUI() {
//         this.setFitsSystemWindows(true);
//         linearLayoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
//         this.contacts_rv.setLayoutManager(linearLayoutManager);
//         // ViewCompat.setElevation(toolbar, 5f);
// 
//     }
// 
//     public void setMustHaveNumber(boolean mustHaveNumber) {
//         this.mustHaveNumber = mustHaveNumber;
//     }
// 
//     public interface ContactListener {
//         void onClick(Contact contact);
//     }
// 
//     static class SavedState extends BaseSavedState {
// 
//         public static final Parcelable.Creator<SavedState> CREATOR =
//                 new Creator<SavedState>() {
//                     @Override
//                     public SavedState createFromParcel(Parcel source) {
//                         return new SavedState(source);
//                     }
// 
//                     @Override
//                     public SavedState[] newArray(int size) {
//                         return new SavedState[size];
//                     }
//                 };
//         boolean mustHaveNumber;
// 
//         public SavedState(Parcel source) {
//             super(source);
//             this.mustHaveNumber = source.readInt() == 1;
//         }
// 
//         public SavedState(Parcelable superState) {
//             super(superState);
//         }
// 
//         @Override
//         public void writeToParcel(Parcel out, int flags) {
//             super.writeToParcel(out, flags);
//             out.writeInt(this.mustHaveNumber ? 1 : 0);
//         }
//     }
// 
// }


// Path: app/src/main/java/leonardo2204/com/br/flowtests/di/component/FirstScreenComponent.java
import dagger.Component;
import leonardo2204.com.br.flowtests.di.module.FirstScreenModule;
import leonardo2204.com.br.flowtests.di.scope.DaggerScope;
import leonardo2204.com.br.flowtests.view.FirstView;

package leonardo2204.com.br.flowtests.di.component;


/**
 * Created by Leonardo on 05/03/2016.
 */
@DaggerScope(FirstScreenComponent.class)
@Component(dependencies = ActivityComponent.class, modules = FirstScreenModule.class)
public interface FirstScreenComponent extends AppComponent {
    void inject(FirstView firstView);