// Path: app/src/main/java/com/livingstoneapp/interactors/IPackageInteractor.java
// public interface IPackageInteractor {
//     Observable<ArrayList<InstalledPackageHeader>> getInstalledPackages(boolean refresh);
//     Observable<String> getAppNameFromPackage(String packageName);
//     Observable<AppInfo> getApplicationInfo(String packageName);
//     Observable<ArrayList<FeatureInfoInternal>> getRequestedFeatures(String packageName);
// 
// }
// 
// Path: app/src/main/java/com/livingstoneapp/presenters/IPackageListActivityPresenter.java
// public interface IPackageListActivityPresenter {
//     void setView(IPackageListView view);
//     void clearView();
//     void setTwoPane();
//     void init();
//     void loadPackages(boolean refresh);
//     void packageSelected(InstalledPackageHeader header);
// 
// 
// 
// }
// 
// Path: app/src/main/java/com/livingstoneapp/presenters/PackageListActivityPresenterImpl.java
// public class PackageListActivityPresenterImpl implements IPackageListActivityPresenter {
// 
//     private IPackageListView mView;
//     private boolean mIsTwoPane = false;
//     private IPackageInteractor mPackageInteractor;
// 
// 
//     @Inject
//     public PackageListActivityPresenterImpl(IPackageInteractor interactor) {
//         mPackageInteractor = interactor;
//     }
// 
//     @Override
//     public void setView(IPackageListView view) {
//         mView = view;
//     }
// 
//     @Override
//     public void clearView() {
//         mView = null;
//     }
// 
//     @Override
//     public void setTwoPane() {
//         mIsTwoPane = true;
//     }
// 
//     @Override
//     public void init() {
//         mView.init();
//     }
// 
//     @Override
//     public void loadPackages(boolean refresh) {
//         if (mView != null) {
//             mView.hideContentView();
//             mView.showWaitDialog();
// 
//             mPackageInteractor.getInstalledPackages(refresh)
//                     .subscribeOn(Schedulers.io())
//                     .observeOn(AndroidSchedulers.mainThread())
//                     .subscribe(
//                             items -> {
//                                 if (mView != null) {
//                                     if (items.size() > 0) {
//                                         mView.setInstalledPackages(items);
//                                         mView.hideWaitDialog();
//                                         mView.showContentView();
//                                     } else {
//                                         mView.hideWaitDialog();
//                                         mView.setError("No Packages");
//                                     }
//                                 }
//                             },
//                             error -> {
//                                 if (mView != null) {
//                                     mView.setError(error.getMessage());
//                                     mView.hideWaitDialog();
//                                 }
//                             });
//         }
//     }
// 
//     @Override
//     public void packageSelected(InstalledPackageHeader header) {
//         if (mView != null) {
//             if (mIsTwoPane) {
//                 mView.setDetailFragment(header);
//             } else {
//                 mView.startDetailActivity(header);
//             }
//         }
//     }
// 
// 
// }


import dagger.Module;
import dagger.Provides;
import com.livingstoneapp.interactors.IPackageInteractor;
import com.livingstoneapp.presenters.IPackageListActivityPresenter;
import com.livingstoneapp.presenters.PackageListActivityPresenterImpl;
package com.livingstoneapp.dagger;


/**
 * Created by renier on 2/2/2016.
 */
@Module
public class PackageListActivityModule {
    public PackageListActivityModule(boolean provideMocks) {

    }

    @Provides
    IPackageListActivityPresenter providesMainActivityPresenter(IPackageInteractor interactor) {
// Path: app/src/main/java/com/livingstoneapp/interactors/IPackageInteractor.java
// public interface IPackageInteractor {
//     Observable<ArrayList<InstalledPackageHeader>> getInstalledPackages(boolean refresh);
//     Observable<String> getAppNameFromPackage(String packageName);
//     Observable<AppInfo> getApplicationInfo(String packageName);
//     Observable<ArrayList<FeatureInfoInternal>> getRequestedFeatures(String packageName);
// 
// }
// 
// Path: app/src/main/java/com/livingstoneapp/presenters/IPackageListActivityPresenter.java
// public interface IPackageListActivityPresenter {
//     void setView(IPackageListView view);
//     void clearView();
//     void setTwoPane();
//     void init();
//     void loadPackages(boolean refresh);
//     void packageSelected(InstalledPackageHeader header);
// 
// 
// 
// }
// 
// Path: app/src/main/java/com/livingstoneapp/presenters/PackageListActivityPresenterImpl.java
// public class PackageListActivityPresenterImpl implements IPackageListActivityPresenter {
// 
//     private IPackageListView mView;
//     private boolean mIsTwoPane = false;
//     private IPackageInteractor mPackageInteractor;
// 
// 
//     @Inject
//     public PackageListActivityPresenterImpl(IPackageInteractor interactor) {
//         mPackageInteractor = interactor;
//     }
// 
//     @Override
//     public void setView(IPackageListView view) {
//         mView = view;
//     }
// 
//     @Override
//     public void clearView() {
//         mView = null;
//     }
// 
//     @Override
//     public void setTwoPane() {
//         mIsTwoPane = true;
//     }
// 
//     @Override
//     public void init() {
//         mView.init();
//     }
// 
//     @Override
//     public void loadPackages(boolean refresh) {
//         if (mView != null) {
//             mView.hideContentView();
//             mView.showWaitDialog();
// 
//             mPackageInteractor.getInstalledPackages(refresh)
//                     .subscribeOn(Schedulers.io())
//                     .observeOn(AndroidSchedulers.mainThread())
//                     .subscribe(
//                             items -> {
//                                 if (mView != null) {
//                                     if (items.size() > 0) {
//                                         mView.setInstalledPackages(items);
//                                         mView.hideWaitDialog();
//                                         mView.showContentView();
//                                     } else {
//                                         mView.hideWaitDialog();
//                                         mView.setError("No Packages");
//                                     }
//                                 }
//                             },
//                             error -> {
//                                 if (mView != null) {
//                                     mView.setError(error.getMessage());
//                                     mView.hideWaitDialog();
//                                 }
//                             });
//         }
//     }
// 
//     @Override
//     public void packageSelected(InstalledPackageHeader header) {
//         if (mView != null) {
//             if (mIsTwoPane) {
//                 mView.setDetailFragment(header);
//             } else {
//                 mView.startDetailActivity(header);
//             }
//         }
//     }
// 
// 
// }


// Path: app/src/release/java/za/co/flatrocksolutions/installedpackagelister/dagger/PackageListActivityModule.java
import dagger.Module;
import dagger.Provides;
import com.livingstoneapp.interactors.IPackageInteractor;
import com.livingstoneapp.presenters.IPackageListActivityPresenter;
import com.livingstoneapp.presenters.PackageListActivityPresenterImpl;

package com.livingstoneapp.dagger;


/**
 * Created by renier on 2/2/2016.
 */
@Module
public class PackageListActivityModule {
    public PackageListActivityModule(boolean provideMocks) {

    }

    @Provides
    IPackageListActivityPresenter providesMainActivityPresenter(IPackageInteractor interactor) {
        return new PackageListActivityPresenterImpl(interactor);