2016-06-05 01:40:35 +02:00
|
|
|
package info.nightscout.androidaps;
|
|
|
|
|
|
|
|
import android.app.Application;
|
2016-06-24 17:16:17 +02:00
|
|
|
import android.content.res.Resources;
|
2016-07-18 20:19:55 +02:00
|
|
|
import android.support.annotation.Nullable;
|
2016-06-05 01:40:35 +02:00
|
|
|
|
2016-06-24 17:48:11 +02:00
|
|
|
import com.crashlytics.android.Crashlytics;
|
2016-06-05 01:40:35 +02:00
|
|
|
import com.j256.ormlite.android.apptools.OpenHelperManager;
|
|
|
|
import com.squareup.otto.Bus;
|
|
|
|
import com.squareup.otto.ThreadEnforcer;
|
|
|
|
|
2016-07-18 20:19:55 +02:00
|
|
|
import info.nightscout.androidaps.interfaces.PluginBase;
|
|
|
|
import info.nightscout.androidaps.plugins.Careportal.CareportalFragment;
|
|
|
|
import info.nightscout.androidaps.plugins.DanaR.DanaRFragment;
|
|
|
|
import info.nightscout.androidaps.plugins.Loop.LoopFragment;
|
|
|
|
import info.nightscout.androidaps.plugins.LowSuspend.LowSuspendFragment;
|
|
|
|
import info.nightscout.androidaps.plugins.MM640g.MM640gFragment;
|
|
|
|
import info.nightscout.androidaps.plugins.NSProfileViewer.NSProfileViewerFragment;
|
|
|
|
import info.nightscout.androidaps.plugins.Objectives.ObjectivesFragment;
|
|
|
|
import info.nightscout.androidaps.plugins.OpenAPSMA.OpenAPSMAFragment;
|
|
|
|
import info.nightscout.androidaps.plugins.Overview.OverviewFragment;
|
|
|
|
import info.nightscout.androidaps.plugins.SafetyFragment.SafetyFragment;
|
|
|
|
import info.nightscout.androidaps.plugins.SimpleProfile.SimpleProfileFragment;
|
|
|
|
import info.nightscout.androidaps.plugins.SmsCommunicator.SmsCommunicatorFragment;
|
|
|
|
import info.nightscout.androidaps.plugins.SourceNSClient.SourceNSClientFragment;
|
|
|
|
import info.nightscout.androidaps.plugins.SourceXdrip.SourceXdripFragment;
|
|
|
|
import info.nightscout.androidaps.plugins.TempBasals.TempBasalsFragment;
|
|
|
|
import info.nightscout.androidaps.plugins.Treatments.TreatmentsFragment;
|
|
|
|
import info.nightscout.androidaps.plugins.VirtualPump.VirtualPumpFragment;
|
2016-06-24 17:48:11 +02:00
|
|
|
import io.fabric.sdk.android.Fabric;
|
2016-06-05 01:40:35 +02:00
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
2016-07-18 20:19:55 +02:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Iterator;
|
|
|
|
|
2016-06-05 01:40:35 +02:00
|
|
|
import info.nightscout.androidaps.db.DatabaseHelper;
|
2016-06-21 23:24:54 +02:00
|
|
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderFragment;
|
2016-06-05 01:40:35 +02:00
|
|
|
|
|
|
|
|
|
|
|
public class MainApp extends Application {
|
|
|
|
private static Logger log = LoggerFactory.getLogger(MainApp.class);
|
|
|
|
|
|
|
|
private static Bus sBus;
|
|
|
|
private static MainApp sInstance;
|
2016-07-07 10:34:20 +02:00
|
|
|
public static Resources sResources;
|
2016-06-05 01:40:35 +02:00
|
|
|
|
2016-07-07 10:34:20 +02:00
|
|
|
private static DatabaseHelper sDatabaseHelper = null;
|
|
|
|
private static ConfigBuilderFragment sConfigBuilder = null;
|
2016-06-05 01:40:35 +02:00
|
|
|
|
2016-07-18 20:19:55 +02:00
|
|
|
private static ArrayList<PluginBase> pluginsList = null;
|
|
|
|
|
2016-06-05 01:40:35 +02:00
|
|
|
@Override
|
|
|
|
public void onCreate() {
|
|
|
|
super.onCreate();
|
2016-06-24 17:48:11 +02:00
|
|
|
Fabric.with(this, new Crashlytics());
|
2016-06-05 01:40:35 +02:00
|
|
|
|
|
|
|
sBus = new Bus(ThreadEnforcer.ANY);
|
|
|
|
sInstance = this;
|
2016-07-07 10:34:20 +02:00
|
|
|
sResources = getResources();
|
2016-07-18 20:19:55 +02:00
|
|
|
|
|
|
|
if (pluginsList == null) {
|
|
|
|
pluginsList = new ArrayList<PluginBase>();
|
|
|
|
// Register all tabs in app here
|
|
|
|
pluginsList.add(OverviewFragment.newInstance());
|
|
|
|
if (Config.DANAR) pluginsList.add(DanaRFragment.newInstance());
|
|
|
|
if (Config.MM640G) pluginsList.add(MM640gFragment.newInstance());
|
|
|
|
pluginsList.add(VirtualPumpFragment.newInstance());
|
|
|
|
if (Config.CAREPORTALENABLED) pluginsList.add(CareportalFragment.newInstance());
|
|
|
|
if (Config.LOOPENABLED) pluginsList.add(LoopFragment.newInstance());
|
|
|
|
if (Config.LOWSUSPEDENABLED) pluginsList.add(LowSuspendFragment.newInstance());
|
|
|
|
if (Config.OPENAPSMAENABLED) pluginsList.add(OpenAPSMAFragment.newInstance());
|
|
|
|
pluginsList.add(NSProfileViewerFragment.newInstance());
|
|
|
|
pluginsList.add(SimpleProfileFragment.newInstance());
|
|
|
|
pluginsList.add(TreatmentsFragment.newInstance());
|
|
|
|
pluginsList.add(TempBasalsFragment.newInstance());
|
|
|
|
pluginsList.add(SafetyFragment.newInstance());
|
|
|
|
if (Config.OBJECTIVESENABLED) pluginsList.add(ObjectivesFragment.newInstance());
|
|
|
|
pluginsList.add(SourceXdripFragment.newInstance());
|
|
|
|
pluginsList.add(SourceNSClientFragment.newInstance());
|
|
|
|
if (Config.SMSCOMMUNICATORENABLED) pluginsList.add(SmsCommunicatorFragment.newInstance());
|
|
|
|
pluginsList.add(sConfigBuilder = ConfigBuilderFragment.newInstance());
|
|
|
|
|
|
|
|
MainApp.getConfigBuilder().initialize();
|
|
|
|
}
|
2016-06-05 01:40:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public static Bus bus() {
|
|
|
|
return sBus;
|
|
|
|
}
|
|
|
|
public static MainApp instance() {
|
|
|
|
return sInstance;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static DatabaseHelper getDbHelper() {
|
2016-07-07 10:34:20 +02:00
|
|
|
if (sDatabaseHelper == null) {
|
|
|
|
sDatabaseHelper = OpenHelperManager.getHelper(sInstance, DatabaseHelper.class);
|
2016-06-05 01:40:35 +02:00
|
|
|
}
|
2016-07-07 10:34:20 +02:00
|
|
|
return sDatabaseHelper;
|
2016-06-05 01:40:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public static void closeDbHelper() {
|
2016-07-07 10:34:20 +02:00
|
|
|
if (sDatabaseHelper != null) {
|
|
|
|
sDatabaseHelper.close();
|
|
|
|
sDatabaseHelper = null;
|
2016-06-05 01:40:35 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-06-21 23:24:54 +02:00
|
|
|
public static void setConfigBuilder(ConfigBuilderFragment cb) {
|
2016-07-07 10:34:20 +02:00
|
|
|
sConfigBuilder = cb;
|
2016-06-21 23:24:54 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public static ConfigBuilderFragment getConfigBuilder() {
|
2016-07-07 10:34:20 +02:00
|
|
|
return sConfigBuilder;
|
2016-06-21 23:24:54 +02:00
|
|
|
}
|
|
|
|
|
2016-07-18 20:19:55 +02:00
|
|
|
public static ArrayList<PluginBase> getPluginsList() {
|
|
|
|
return pluginsList;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static ArrayList<PluginBase> getSpecificPluginsList(int type) {
|
|
|
|
ArrayList<PluginBase> newList = new ArrayList<PluginBase>();
|
|
|
|
|
|
|
|
if (pluginsList != null) {
|
|
|
|
Iterator<PluginBase> it = pluginsList.iterator();
|
|
|
|
while (it.hasNext()) {
|
|
|
|
PluginBase p = it.next();
|
|
|
|
if (p.getType() == type)
|
|
|
|
newList.add(p);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
log.error("pluginsList=null");
|
|
|
|
}
|
|
|
|
return newList;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static ArrayList<PluginBase> getSpecificPluginsListByInterface(Class interfaceClass) {
|
|
|
|
ArrayList<PluginBase> newList = new ArrayList<PluginBase>();
|
|
|
|
|
|
|
|
if (pluginsList != null) {
|
|
|
|
Iterator<PluginBase> it = pluginsList.iterator();
|
|
|
|
while (it.hasNext()) {
|
|
|
|
PluginBase p = it.next();
|
|
|
|
if (p.getClass() != ConfigBuilderFragment.class && interfaceClass.isAssignableFrom(p.getClass()))
|
|
|
|
newList.add(p);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
log.error("pluginsList=null");
|
|
|
|
}
|
|
|
|
return newList;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Nullable
|
|
|
|
public static PluginBase getSpecificPlugin(Class pluginClass) {
|
|
|
|
if (pluginsList != null) {
|
|
|
|
Iterator<PluginBase> it = pluginsList.iterator();
|
|
|
|
while (it.hasNext()) {
|
|
|
|
PluginBase p = it.next();
|
|
|
|
if (p.getClass() == pluginClass)
|
|
|
|
return p;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
log.error("pluginsList=null");
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2016-06-05 01:40:35 +02:00
|
|
|
@Override
|
|
|
|
public void onTerminate() {
|
|
|
|
super.onTerminate();
|
2016-07-07 10:34:20 +02:00
|
|
|
sDatabaseHelper.close();
|
2016-06-05 01:40:35 +02:00
|
|
|
}
|
|
|
|
}
|