package net.bible.android.view.activity;
import net.bible.android.control.ApplicationComponent;
import net.bible.android.view.activity.base.ActivityBase;
import net.bible.android.view.activity.bookmark.BookmarkLabels;
import net.bible.android.view.activity.bookmark.Bookmarks;
import net.bible.android.view.activity.bookmark.ManageLabels;
import net.bible.android.view.activity.comparetranslations.CompareTranslations;
import net.bible.android.view.activity.download.Download;
import net.bible.android.view.activity.download.DownloadStatus;
import net.bible.android.view.activity.download.ProgressStatus;
import net.bible.android.view.activity.footnoteandref.FootnoteAndRefActivity;
import net.bible.android.view.activity.help.Help;
import net.bible.android.view.activity.mynote.MyNotes;
import net.bible.android.view.activity.navigation.ChooseDictionaryWord;
import net.bible.android.view.activity.navigation.ChooseDocument;
import net.bible.android.view.activity.navigation.GridChoosePassageBook;
import net.bible.android.view.activity.navigation.GridChoosePassageChapter;
import net.bible.android.view.activity.navigation.GridChoosePassageVerse;
import net.bible.android.view.activity.navigation.History;
import net.bible.android.view.activity.navigation.genbookmap.ChooseKeyBase;
import net.bible.android.view.activity.readingplan.DailyReading;
import net.bible.android.view.activity.readingplan.DailyReadingList;
import net.bible.android.view.activity.readingplan.ReadingPlanSelectorList;
import net.bible.android.view.activity.search.Search;
import net.bible.android.view.activity.search.SearchIndex;
import net.bible.android.view.activity.search.SearchIndexProgressStatus;
import net.bible.android.view.activity.search.SearchResults;
import net.bible.android.view.activity.speak.Speak;
import dagger.Component;
/**
* Dagger Component to allow injection of dependencies into activities.
*
* @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.
*/
@ActivityScope
@Component(dependencies = {ApplicationComponent.class} )
public interface ActivityComponent {
// Activities that are permitted to be injected
// don't like this but inject is called from ActivityBase and the subclasses
void inject(ActivityBase activityBase);
void inject(StartupActivity startupActivity);
void inject(Bookmarks bookmarks);
void inject(BookmarkLabels bookmarkLabels);
void inject(ManageLabels manageLabels);
void inject(GridChoosePassageBook gridChoosePassageBook);
void inject(GridChoosePassageChapter gridChoosePassageChapter);
void inject(GridChoosePassageVerse gridChoosePassageVerse);
void inject(ChooseDictionaryWord chooseDictionaryWord);
void inject(ChooseKeyBase chooseKeyBase);
void inject(ChooseDocument chooseDocument);
void inject(Download download);
void inject(Speak speak);
void inject(DailyReading dailyReading);
void inject(DailyReadingList dailyReadingList);
void inject(ReadingPlanSelectorList readingPlanSelectorList);
void inject(SearchIndex searchIndex);
void inject(Search search);
void inject(SearchResults searchResults);
void inject(CompareTranslations compareTranslations);
void inject(FootnoteAndRefActivity footnoteAndRefActivity);
void inject(MyNotes myNotes);
void inject(History history);
void inject(Help help);
// progress status screens
void inject(SearchIndexProgressStatus searchIndexProgressStatus);
void inject(DownloadStatus downloadStatus);
void inject(ProgressStatus progressStatus);
}