package com.bootstrap.di;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.graphics.Typeface;
import android.os.Handler;
import android.os.Looper;
import android.preference.PreferenceManager;
import android.support.v4.app.NotificationManagerCompat;
import android.util.DisplayMetrics;
import android.view.inputmethod.InputMethodManager;
import android.widget.Font;
import org.greenrobot.eventbus.EventBus;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
@Module
public final class CoreModule {
private final Application application;
public CoreModule(final Application application) {
this.application = application;
}
@Provides @Singleton public Context provideContext() {
return application;
}
@Provides @Singleton public Resources provideResources(final Context context) {
return context.getResources();
}
@Provides @Singleton public DisplayMetrics provideDisplayMetrics(final Context context) {
return context.getResources().getDisplayMetrics();
}
@Provides @Singleton public NotificationManagerCompat provideNotificationManager(final Context context) {
return NotificationManagerCompat.from(context);
}
@Provides @Singleton public SharedPreferences provideSharedPreferences(final Context context) {
return PreferenceManager.getDefaultSharedPreferences(context);
}
@Provides @Singleton public Handler provideHandler() {
return new Handler(Looper.getMainLooper());
}
@Provides @Singleton public EventBus provideEventBus() {
return EventBus.getDefault();
}
@Provides @Singleton public Typeface provideRegularFont() {
return Typeface.createFromAsset(application.getAssets(), "Roboto-Regular.ttf");
}
@Provides @Singleton @Font("medium") public Typeface provideMediumFont() {
return Typeface.createFromAsset(application.getAssets(), "Roboto-Medium.ttf");
}
@Provides @Singleton public InputMethodManager provideInputMethodManager() {
return (InputMethodManager) application.getSystemService(Context.INPUT_METHOD_SERVICE);
}
}