/**
* The MIT License (MIT)
* Copyright (c) 2012 David Carver
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
* OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
* OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package us.nineworlds.serenity.injection.modules;
import javax.inject.Singleton;
import us.nineworlds.plex.rest.PlexappFactory;
import us.nineworlds.plex.rest.config.IConfiguration;
import us.nineworlds.serenity.AndroidTV;
import us.nineworlds.serenity.GDMReceiver;
import us.nineworlds.serenity.GalleryOnItemSelectedListener;
import us.nineworlds.serenity.MainActivity;
import us.nineworlds.serenity.MainMenuDrawerOnItemClickedListener;
import us.nineworlds.serenity.MainMenuTextViewAdapter;
import us.nineworlds.serenity.SerenityApplication;
import us.nineworlds.serenity.StartupBroadcastReceiver;
import us.nineworlds.serenity.core.OkHttpStack;
import us.nineworlds.serenity.core.OnDeckRecommendations;
import us.nineworlds.serenity.core.RecommendationBuilder;
import us.nineworlds.serenity.core.SerenityRecommendationContentProvider;
import us.nineworlds.serenity.core.ServerConfig;
import us.nineworlds.serenity.core.imageloader.OKHttpImageLoader;
import us.nineworlds.serenity.core.imageloader.SerenityImageLoader;
import us.nineworlds.serenity.core.model.impl.CategoryMediaContainer;
import us.nineworlds.serenity.core.model.impl.EpisodeMediaContainer;
import us.nineworlds.serenity.core.model.impl.MenuMediaContainer;
import us.nineworlds.serenity.core.model.impl.MovieMediaContainer;
import us.nineworlds.serenity.core.model.impl.SeasonsMediaContainer;
import us.nineworlds.serenity.core.model.impl.SecondaryCategoryMediaContainer;
import us.nineworlds.serenity.core.model.impl.SeriesMediaContainer;
import us.nineworlds.serenity.core.model.impl.SubtitleMediaContainer;
import us.nineworlds.serenity.core.model.impl.TVCategoryMediaContainer;
import us.nineworlds.serenity.core.services.CategoryRetrievalIntentService;
import us.nineworlds.serenity.core.services.CompletedVideoRequest;
import us.nineworlds.serenity.core.services.MovieSearchIntentService;
import us.nineworlds.serenity.core.services.MoviesRetrievalIntentService;
import us.nineworlds.serenity.core.services.MusicAlbumRetrievalIntentService;
import us.nineworlds.serenity.core.services.MusicRetrievalIntentService;
import us.nineworlds.serenity.core.services.OnDeckRecommendationIntentService;
import us.nineworlds.serenity.core.services.RecommendAsyncTask;
import us.nineworlds.serenity.core.services.SecondaryCategoryRetrievalIntentService;
import us.nineworlds.serenity.core.services.TVShowCategoryRetrievalIntentService;
import us.nineworlds.serenity.core.services.UnWatchVideoAsyncTask;
import us.nineworlds.serenity.core.services.UpdateProgressRequest;
import us.nineworlds.serenity.core.services.WatchedVideoAsyncTask;
import us.nineworlds.serenity.core.util.AndroidHelper;
import us.nineworlds.serenity.fragments.EpisodeVideoGalleryFragment;
import us.nineworlds.serenity.fragments.MovieSearchGalleryFragment;
import us.nineworlds.serenity.fragments.MovieVideoGalleryFragment;
import us.nineworlds.serenity.fragments.VideoGridFragment;
import us.nineworlds.serenity.handlers.AutoConfigureHandlerRunnable;
import us.nineworlds.serenity.injection.ApplicationContext;
import us.nineworlds.serenity.ui.adapters.MenuDrawerAdapter;
import us.nineworlds.serenity.ui.browser.movie.MovieBrowserActivity;
import us.nineworlds.serenity.ui.browser.movie.MovieCategorySpinnerOnItemSelectedListener;
import us.nineworlds.serenity.ui.browser.movie.MovieGridPosterOnItemSelectedListener;
import us.nineworlds.serenity.ui.browser.movie.MovieMenuDrawerOnItemClickedListener;
import us.nineworlds.serenity.ui.browser.movie.MoviePosterImageAdapter;
import us.nineworlds.serenity.ui.browser.movie.MoviePosterOnItemSelectedListener;
import us.nineworlds.serenity.ui.browser.movie.SecondaryCategorySpinnerOnItemSelectedListener;
import us.nineworlds.serenity.ui.browser.music.MusicPosterGalleryAdapter;
import us.nineworlds.serenity.ui.browser.music.MusicPosterGalleryOnItemSelectedListener;
import us.nineworlds.serenity.ui.browser.music.MusicPosterGridViewAdapter;
import us.nineworlds.serenity.ui.browser.music.albums.MusicAlbumsCoverAdapter;
import us.nineworlds.serenity.ui.browser.music.tracks.AudioTrackPlaybackListener;
import us.nineworlds.serenity.ui.browser.music.tracks.MusicTracksActivity;
import us.nineworlds.serenity.ui.browser.music.tracks.TracksAdapter;
import us.nineworlds.serenity.ui.browser.music.tracks.TracksOnItemSelectedListener;
import us.nineworlds.serenity.ui.browser.tv.FindUnwatchedAsyncTask;
import us.nineworlds.serenity.ui.browser.tv.TVCategorySpinnerOnItemSelectedListener;
import us.nineworlds.serenity.ui.browser.tv.TVSecondaryCategorySpinnerOnItemSelectedListener;
import us.nineworlds.serenity.ui.browser.tv.TVShowBannerImageGalleryAdapter;
import us.nineworlds.serenity.ui.browser.tv.TVShowBrowserActivity;
import us.nineworlds.serenity.ui.browser.tv.TVShowGalleryOnItemSelectedListener;
import us.nineworlds.serenity.ui.browser.tv.TVShowGridOnItemSelectedListener;
import us.nineworlds.serenity.ui.browser.tv.TVShowGridOnKeyListener;
import us.nineworlds.serenity.ui.browser.tv.TVShowMenuDrawerOnItemClickedListener;
import us.nineworlds.serenity.ui.browser.tv.TVShowPosterImageGalleryAdapter;
import us.nineworlds.serenity.ui.browser.tv.episodes.EpisodeBrowserActivity;
import us.nineworlds.serenity.ui.browser.tv.episodes.EpisodeBrowserOnLongClickListener;
import us.nineworlds.serenity.ui.browser.tv.episodes.EpisodeMenuDrawerOnItemClickedListener;
import us.nineworlds.serenity.ui.browser.tv.episodes.EpisodePosterImageGalleryAdapter;
import us.nineworlds.serenity.ui.browser.tv.episodes.EpisodePosterOnItemSelectedListener;
import us.nineworlds.serenity.ui.browser.tv.seasons.SeasonOnItemLongClickListener;
import us.nineworlds.serenity.ui.browser.tv.seasons.SeasonsEpisodePosterImageGalleryAdapter;
import us.nineworlds.serenity.ui.browser.tv.seasons.TVShowSeasonBrowserActivity;
import us.nineworlds.serenity.ui.browser.tv.seasons.TVShowSeasonImageGalleryAdapter;
import us.nineworlds.serenity.ui.browser.tv.seasons.TVShowSeasonMenuDrawerOnItemClickedListener;
import us.nineworlds.serenity.ui.browser.tv.seasons.TVShowSeasonOnItemSelectedListener;
import us.nineworlds.serenity.ui.leanback.search.CardPresenter;
import us.nineworlds.serenity.ui.leanback.search.MovieSearchFragment;
import us.nineworlds.serenity.ui.listeners.GalleryVideoOnItemClickListener;
import us.nineworlds.serenity.ui.listeners.GalleryVideoOnItemLongClickListener;
import us.nineworlds.serenity.ui.listeners.GridVideoOnItemClickListener;
import us.nineworlds.serenity.ui.listeners.GridVideoOnItemLongClickListener;
import us.nineworlds.serenity.ui.listeners.SubtitleSpinnerOnItemSelectedListener;
import us.nineworlds.serenity.ui.preferences.SerenityPreferenceActivity;
import us.nineworlds.serenity.ui.search.SearchAdapter;
import us.nineworlds.serenity.ui.search.SearchableActivity;
import us.nineworlds.serenity.ui.util.ExternalPlayerResultHandler;
import us.nineworlds.serenity.ui.util.ImageInfographicUtils;
import us.nineworlds.serenity.ui.util.PlayerResultHandler;
import us.nineworlds.serenity.ui.util.VideoPlayerIntentUtils;
import us.nineworlds.serenity.ui.util.VideoQueueHelper;
import us.nineworlds.serenity.ui.video.player.MediaController;
import us.nineworlds.serenity.ui.video.player.RecommendationPlayerActivity;
import us.nineworlds.serenity.ui.video.player.SerenitySurfaceViewVideoActivity;
import us.nineworlds.serenity.ui.video.player.VideoPlayerKeyCodeHandler;
import us.nineworlds.serenity.ui.video.player.VideoPlayerPrepareListener;
import us.nineworlds.serenity.volley.LibraryResponseListener;
import us.nineworlds.serenity.volley.MovieCategoryResponseListener;
import us.nineworlds.serenity.volley.TVCategoryResponseListener;
import us.nineworlds.serenity.volley.VolleyUtils;
import us.nineworlds.serenity.widgets.SerenityGallery;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.media.MediaPlayer;
import android.preference.PreferenceManager;
import dagger.Module;
import dagger.Provides;
@Module(includes = SerenityModule.class, injects = { GDMReceiver.class,
OnDeckRecommendations.class, MusicTracksActivity.class,
GalleryVideoOnItemLongClickListener.class,
GridVideoOnItemLongClickListener.class, MediaController.class,
SerenityGallery.class, MainActivity.class, SerenityApplication.class,
StartupBroadcastReceiver.class, RecommendationPlayerActivity.class,
EpisodeBrowserActivity.class, SearchableActivity.class,
MovieBrowserActivity.class, TVShowBrowserActivity.class,
TVShowSeasonBrowserActivity.class, AutoConfigureHandlerRunnable.class,
EpisodeMenuDrawerOnItemClickedListener.class,
ImageInfographicUtils.class, LibraryResponseListener.class,
MainMenuDrawerOnItemClickedListener.class,
MovieGridPosterOnItemSelectedListener.class,
MovieMenuDrawerOnItemClickedListener.class,
MusicPosterGalleryOnItemSelectedListener.class,
PlayerResultHandler.class, ExternalPlayerResultHandler.class,
SeasonOnItemLongClickListener.class, MenuMediaContainer.class,
MovieMediaContainer.class, SeriesMediaContainer.class,
SubtitleMediaContainer.class, EpisodeMediaContainer.class,
SeasonsMediaContainer.class, GalleryVideoOnItemClickListener.class,
GridVideoOnItemClickListener.class,
GalleryVideoOnItemLongClickListener.class,
EpisodeBrowserOnLongClickListener.class,
GridVideoOnItemLongClickListener.class,
EpisodePosterOnItemSelectedListener.class,
MoviePosterOnItemSelectedListener.class, SerenityImageLoader.class,
TracksOnItemSelectedListener.class,
TVShowGalleryOnItemSelectedListener.class,
TVShowGridOnItemSelectedListener.class, TVShowGridOnKeyListener.class,
TVShowMenuDrawerOnItemClickedListener.class,
TVShowSeasonMenuDrawerOnItemClickedListener.class,
TVShowSeasonOnItemSelectedListener.class, VideoPlayerIntentUtils.class,
VideoPlayerPrepareListener.class, CategoryRetrievalIntentService.class,
TVShowCategoryRetrievalIntentService.class,
MoviesRetrievalIntentService.class, MovieSearchIntentService.class,
MusicAlbumRetrievalIntentService.class,
MusicRetrievalIntentService.class,
SecondaryCategoryRetrievalIntentService.class,
MainMenuTextViewAdapter.class, EpisodePosterImageGalleryAdapter.class,
SeasonsEpisodePosterImageGalleryAdapter.class,
MoviePosterImageAdapter.class, SearchAdapter.class,
TVShowBannerImageGalleryAdapter.class, MenuDrawerAdapter.class,
MusicAlbumsCoverAdapter.class, MusicPosterGalleryAdapter.class,
MusicPosterGridViewAdapter.class,
TVShowSeasonImageGalleryAdapter.class,
OnDeckRecommendationIntentService.class, CompletedVideoRequest.class,
FindUnwatchedAsyncTask.class, TracksAdapter.class,
UnWatchVideoAsyncTask.class, UpdateProgressRequest.class,
WatchedVideoAsyncTask.class, GalleryOnItemSelectedListener.class,
SerenityImageLoader.class, SerenityPreferenceActivity.class,
AndroidTV.class, RecommendAsyncTask.class, RecommendationBuilder.class,
TVShowPosterImageGalleryAdapter.class, VideoPlayerKeyCodeHandler.class,
SerenitySurfaceViewVideoActivity.class, OkHttpStack.class,
SerenityRecommendationContentProvider.class, OKHttpImageLoader.class,
AndroidHelper.class,
SecondaryCategorySpinnerOnItemSelectedListener.class,
MovieCategorySpinnerOnItemSelectedListener.class,
TVCategorySpinnerOnItemSelectedListener.class,
TVSecondaryCategorySpinnerOnItemSelectedListener.class,
VolleyUtils.class, MovieVideoGalleryFragment.class,
VideoGridFragment.class, EpisodeBrowserActivity.class,
EpisodeVideoGalleryFragment.class, MenuMediaContainer.class,
MovieSearchGalleryFragment.class, CardPresenter.class,
MovieSearchFragment.class, MovieCategoryResponseListener.class,
CategoryMediaContainer.class, SecondaryCategoryMediaContainer.class,
TVCategoryResponseListener.class, TVCategoryMediaContainer.class,
AudioTrackPlaybackListener.class, ServerConfig.class,
SubtitleSpinnerOnItemSelectedListener.class, VideoQueueHelper.class }, library = true)
public class AndroidModule {
private final Context applicationContext;
public AndroidModule(Application application) {
applicationContext = application.getApplicationContext();
}
@Provides
@Singleton
PlexappFactory providesPlexFactory() {
IConfiguration serverConfig = ServerConfig
.getInstance(applicationContext);
return PlexappFactory.getInstance(serverConfig);
}
@Provides
@ApplicationContext
Context providesApplicationContext() {
return applicationContext;
}
@Provides
@Singleton
SharedPreferences providesSharedPreferences() {
return PreferenceManager
.getDefaultSharedPreferences(applicationContext);
}
@Provides
@Singleton
AndroidHelper providesAndroidHelper() {
return new AndroidHelper();
}
@Provides
@Singleton
Resources providesResources() {
return applicationContext.getResources();
}
@Provides
MediaPlayer providesMediaPlayer() {
return new MediaPlayer();
}
@Provides
@Singleton
VolleyUtils providesVolleyUtils() {
return new VolleyUtils();
}
}