package net.bible.android.control;
import net.bible.android.common.resource.AndroidResourceProvider;
import net.bible.android.common.resource.ResourceProvider;
import net.bible.android.control.download.DownloadControl;
import net.bible.android.control.download.DownloadQueue;
import net.bible.android.control.email.Emailer;
import net.bible.android.control.email.EmailerImpl;
import net.bible.android.control.event.ABEventBus;
import net.bible.android.control.event.EventManager;
import net.bible.android.control.page.window.ActiveWindowPageManagerProvider;
import net.bible.android.control.page.window.WindowControl;
import net.bible.service.download.RepoFactory;
import net.bible.service.font.FontControl;
import net.bible.service.sword.SwordDocumentFacade;
import java.util.concurrent.Executors;
import dagger.Module;
import dagger.Provides;
/**
* Dagger module to create application scoped dependencies
*
* @author Martin Denham [mjdenham at gmail dot com]
* @see gnu.lgpl.License for license details.<br>
* The copyright to this program is held by it's author.
*/
@Module
public class ApplicationModule {
@Provides
@ApplicationScope
public DownloadControl provideDownloadControl(SwordDocumentFacade swordDocumentFacade, RepoFactory repoFactory) {
return new DownloadControl(new DownloadQueue(Executors.newSingleThreadExecutor(), repoFactory), repoFactory, FontControl.getInstance(), swordDocumentFacade);
}
@Provides
@ApplicationScope
public ActiveWindowPageManagerProvider provideActiveWindowPageManagerProvider(WindowControl windowControl) {
return windowControl;
}
@Provides
@ApplicationScope
public ResourceProvider provideResourceProvider(AndroidResourceProvider androidResourceProvider) {
return androidResourceProvider;
}
@Provides
@ApplicationScope
public EventManager eventManagerProvider() {
return ABEventBus.getDefault();
}
@Provides
@ApplicationScope
public Emailer emailer(EmailerImpl emailerImpl) {
return emailerImpl;
}
}