package de.westnordost.streetcomplete; import android.app.Application; import android.content.Context; import android.content.SharedPreferences; import android.content.res.Resources; import android.preference.PreferenceManager; import javax.inject.Singleton; import dagger.Module; import dagger.Provides; import de.westnordost.streetcomplete.data.QuestController; import de.westnordost.streetcomplete.data.QuestTypes; import de.westnordost.streetcomplete.data.changesets.OpenChangesetsDao; import de.westnordost.streetcomplete.data.download.MobileDataAutoDownloadStrategy; import de.westnordost.streetcomplete.data.download.WifiAutoDownloadStrategy; import de.westnordost.streetcomplete.data.meta.CurrentCountry; import de.westnordost.streetcomplete.data.osm.persist.ElementGeometryDao; import de.westnordost.streetcomplete.data.osm.persist.MergedElementDao; import de.westnordost.streetcomplete.data.osm.persist.OsmQuestDao; import de.westnordost.streetcomplete.data.osmnotes.CreateNoteDao; import de.westnordost.streetcomplete.data.osmnotes.OsmNoteQuestDao; import de.westnordost.streetcomplete.data.tiles.DownloadedTilesDao; import de.westnordost.streetcomplete.location.LocationRequestFragment; import de.westnordost.streetcomplete.tools.CrashReportExceptionHandler; import de.westnordost.streetcomplete.util.KryoSerializer; import de.westnordost.streetcomplete.util.Serializer; @Module public class ApplicationModule { private final Application application; public ApplicationModule(Application application) { this.application = application; } @Provides public Context appContext() { return application; } @Provides public Application application() { return application; } @Provides public SharedPreferences preferences() { return PreferenceManager.getDefaultSharedPreferences(application); } @Provides public PerApplicationStartPrefs perApplicationStartPrefs() { return ((StreetCompleteApplication)application).getPerApplicationStartPrefs(); } @Provides public Resources resources() { return application.getResources(); } @Provides public static CurrentCountry localeMetadata(Context appContext) { return new CurrentCountry(appContext); } @Provides public QuestController questController( OsmQuestDao osmQuestDB, MergedElementDao osmElementDB, ElementGeometryDao geometryDB, OsmNoteQuestDao osmNoteQuestDB, CreateNoteDao createNoteDB, OpenChangesetsDao manageChangesetsDB) { return new QuestController( osmQuestDB, osmElementDB, geometryDB, osmNoteQuestDB, createNoteDB, manageChangesetsDB, appContext()); } @Provides public static MobileDataAutoDownloadStrategy mobileDataAutoDownloadStrategy( OsmQuestDao osmQuestDB, DownloadedTilesDao downloadedTilesDao, QuestTypes questTypes, SharedPreferences preferences ) { return new MobileDataAutoDownloadStrategy(osmQuestDB, downloadedTilesDao, questTypes, preferences); } @Provides public static WifiAutoDownloadStrategy wifiAutoDownloadStrategy( OsmQuestDao osmQuestDB, DownloadedTilesDao downloadedTilesDao, QuestTypes questTypes, SharedPreferences preferences ) { return new WifiAutoDownloadStrategy(osmQuestDB, downloadedTilesDao, questTypes, preferences); } @Provides public static LocationRequestFragment locationRequestComponent() { return new LocationRequestFragment(); } @Provides @Singleton public static CrashReportExceptionHandler serializer(Context ctx) { return new CrashReportExceptionHandler(ctx); } }