package treehou.se.habit;
import android.app.Application;
import android.content.Context;
import android.support.multidex.MultiDex;
import android.support.v4.app.Fragment;
import android.util.Log;
import net.danlew.android.joda.JodaTimeAndroid;
import java.sql.Time;
import java.util.Random;
import javax.inject.Inject;
import javax.inject.Singleton;
import dagger.Component;
import treehou.se.habit.connector.TrustModifier;
import treehou.se.habit.core.db.model.OHRealm;
import treehou.se.habit.module.AndroidModule;
import treehou.se.habit.ui.menu.NavigationDrawerFragment;
import treehou.se.habit.ui.servers.ServersFragment;
import treehou.se.habit.ui.servers.sitemaps.SitemapSelectFragment;
import treehou.se.habit.ui.settings.subsettings.GeneralSettingsFragment;
import treehou.se.habit.ui.sitemaps.PageFragment;
import treehou.se.habit.ui.sitemaps.SitemapFragment;
import treehou.se.habit.ui.sitemaps.SitemapListFragment;
public class HabitApplication extends Application {
private static final String TAG = HabitApplication.class.getSimpleName();
@Singleton
@Component(modules = AndroidModule.class)
public interface ApplicationComponent {
void inject(HabitApplication application);
void inject(MainActivity homeActivity);
void inject(SitemapListFragment sitemapListFragment);
void inject(SitemapSelectFragment fragment);
void inject(SitemapFragment sitemapFragment);
void inject(GeneralSettingsFragment fragment);
void inject(ServersFragment serversFragment);
void inject(NavigationDrawerFragment drawerFragment);
void inject(Fragment drawerFragment);
void inject(PageFragment pageFragment);
}
protected ApplicationComponent component;
@Inject OHRealm ohRealm;
@Override
public void onCreate() {
super.onCreate();
JodaTimeAndroid.init(this);
if(component == null) {
component = createComponent();
}
component().inject(this);
ohRealm.setup(this);
// TODO Remove when support for self signed certificates
TrustModifier.NukeSSLCerts.nuke();
}
protected ApplicationComponent createComponent(){
Log.d(TAG, "Creating app component");
ApplicationComponent component = DaggerHabitApplication_ApplicationComponent.builder()
.androidModule(new AndroidModule(this))
.build();
return component;
}
public void setTestComponent(ApplicationComponent appComponent) {
component = appComponent;
}
public ApplicationComponent component() {
return component;
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
try {
MultiDex.install(this);
} catch (RuntimeException multiDexException) {
multiDexException.printStackTrace();
}
}
}