AndroidAPS/app/src/main/java/info/nightscout/androidaps/MainApp.java

211 lines
8.2 KiB
Java
Raw Normal View History

2016-06-05 01:40:35 +02:00
package info.nightscout.androidaps;
import android.app.Application;
2016-12-16 02:00:53 +01:00
import android.content.Intent;
import android.content.res.Resources;
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-08-05 23:54:03 +02:00
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import info.nightscout.androidaps.db.DatabaseHelper;
import info.nightscout.androidaps.interfaces.PluginBase;
2016-11-05 15:46:11 +01:00
import info.nightscout.androidaps.plugins.Actions.ActionsFragment;
import info.nightscout.androidaps.plugins.Careportal.CareportalFragment;
2016-11-12 17:32:32 +01:00
import info.nightscout.androidaps.plugins.CircadianPercentageProfile.CircadianPercentageProfileFragment;
2016-08-05 23:54:03 +02:00
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderFragment;
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.DanaR.DanaRFragment;
2016-11-29 20:52:40 +01:00
import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanFragment;
2016-12-31 15:06:45 +01:00
import info.nightscout.androidaps.plugins.LocalProfile.LocalProfileFragment;
import info.nightscout.androidaps.plugins.Loop.LoopFragment;
2016-12-27 23:35:50 +01:00
import info.nightscout.androidaps.plugins.MDI.MDIFragment;
2016-12-24 23:53:17 +01:00
import info.nightscout.androidaps.plugins.NSProfile.NSProfileFragment;
import info.nightscout.androidaps.plugins.Objectives.ObjectivesFragment;
2017-01-03 21:15:40 +01:00
import info.nightscout.androidaps.plugins.OpenAPSAMA.OpenAPSAMAFragment;
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;
2016-12-28 14:57:11 +01:00
import info.nightscout.androidaps.plugins.SourceMM640g.SourceMM640gFragment;
import info.nightscout.androidaps.plugins.SourceNSClient.SourceNSClientFragment;
import info.nightscout.androidaps.plugins.SourceXdrip.SourceXdripFragment;
import info.nightscout.androidaps.plugins.TempBasals.TempBasalsFragment;
2017-01-13 21:14:04 +01:00
import info.nightscout.androidaps.plugins.TempTargetRange.TempTargetRangeFragment;
import info.nightscout.androidaps.plugins.Treatments.TreatmentsFragment;
import info.nightscout.androidaps.plugins.VirtualPump.VirtualPumpFragment;
import info.nightscout.androidaps.plugins.Wear.WearFragment;
2016-12-28 00:03:08 +01:00
import info.nightscout.androidaps.plugins.persistentnotification.PersistentNotificationPlugin;
2016-12-16 02:00:53 +01:00
import info.nightscout.androidaps.receivers.KeepAliveReceiver;
2016-06-24 17:48:11 +02:00
import io.fabric.sdk.android.Fabric;
2016-06-05 01:40:35 +02:00
2016-08-05 23:54:03 +02:00
public class MainApp extends Application {
2016-06-05 01:40:35 +02:00
private static Logger log = LoggerFactory.getLogger(MainApp.class);
2016-12-16 02:00:53 +01:00
private static KeepAliveReceiver keepAliveReceiver;
2016-06-05 01:40:35 +02:00
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;
2016-08-05 23:54:03 +02:00
private static ConfigBuilderPlugin sConfigBuilder = null;
2016-06-05 01:40:35 +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());
Crashlytics.setString("BUILDVERSION", BuildConfig.BUILDVERSION);
log.info("Version: " + BuildConfig.VERSION_NAME);
log.info("BuildVersion: " + BuildConfig.BUILDVERSION);
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();
if (pluginsList == null) {
2016-08-05 23:54:03 +02:00
pluginsList = new ArrayList<>();
// Register all tabs in app here
2016-08-05 23:54:03 +02:00
pluginsList.add(OverviewFragment.getPlugin());
2016-11-05 15:46:11 +01:00
pluginsList.add(ActionsFragment.getPlugin());
2016-08-05 23:54:03 +02:00
if (Config.DANAR) pluginsList.add(DanaRFragment.getPlugin());
2016-12-21 14:48:36 +01:00
if (Config.DANARKOREAN) pluginsList.add(DanaRKoreanFragment.getPlugin());
2016-08-05 23:54:03 +02:00
if (Config.CAREPORTALENABLED) pluginsList.add(CareportalFragment.getPlugin());
2016-12-27 23:35:50 +01:00
pluginsList.add(MDIFragment.getPlugin());
pluginsList.add(VirtualPumpFragment.getPlugin());
2016-08-05 23:54:03 +02:00
if (Config.LOOPENABLED) pluginsList.add(LoopFragment.getPlugin());
2017-01-03 21:01:01 +01:00
if (Config.OPENAPSENABLED) pluginsList.add(OpenAPSMAFragment.getPlugin());
2017-01-03 21:15:40 +01:00
if (Config.OPENAPSENABLED) pluginsList.add(OpenAPSAMAFragment.getPlugin());
2016-12-24 23:53:17 +01:00
pluginsList.add(NSProfileFragment.getPlugin());
2016-08-05 23:54:03 +02:00
pluginsList.add(SimpleProfileFragment.getPlugin());
2016-12-31 15:06:45 +01:00
pluginsList.add(LocalProfileFragment.getPlugin());
2016-11-12 17:32:32 +01:00
pluginsList.add(CircadianPercentageProfileFragment.getPlugin());
2017-01-16 23:54:46 +01:00
pluginsList.add(TempTargetRangeFragment.getPlugin());
2016-08-05 23:54:03 +02:00
pluginsList.add(TreatmentsFragment.getPlugin());
pluginsList.add(TempBasalsFragment.getPlugin());
pluginsList.add(SafetyFragment.getPlugin());
if (Config.APS) pluginsList.add(ObjectivesFragment.getPlugin());
pluginsList.add(SourceXdripFragment.getPlugin());
pluginsList.add(SourceNSClientFragment.getPlugin());
2016-12-28 14:57:11 +01:00
pluginsList.add(SourceMM640gFragment.getPlugin());
2016-08-05 23:54:03 +02:00
if (Config.SMSCOMMUNICATORENABLED)
pluginsList.add(SmsCommunicatorFragment.getPlugin());
2016-11-26 05:31:23 +01:00
if (Config.WEAR) pluginsList.add(WearFragment.getPlugin(this));
2016-12-28 00:03:08 +01:00
pluginsList.add(new PersistentNotificationPlugin(this));
2016-08-05 23:54:03 +02:00
pluginsList.add(sConfigBuilder = ConfigBuilderFragment.getPlugin());
MainApp.getConfigBuilder().initialize();
}
2016-11-10 16:42:59 +01:00
MainApp.getConfigBuilder().uploadAppStart();
2016-12-16 02:00:53 +01:00
startKeepAliveService();
}
private void startKeepAliveService() {
if (keepAliveReceiver == null) {
keepAliveReceiver = new KeepAliveReceiver();
if (Config.DANAR) {
startService(new Intent(this, info.nightscout.androidaps.plugins.DanaR.Services.ExecutionService.class));
startService(new Intent(this, info.nightscout.androidaps.plugins.DanaRKorean.Services.ExecutionService.class));
}
keepAliveReceiver.setAlarm(this);
}
}
public void stopKeepAliveService(){
if(keepAliveReceiver!=null)
keepAliveReceiver.cancelAlarm(this);
2016-06-05 01:40:35 +02:00
}
public static Bus bus() {
return sBus;
}
2016-08-05 23:54:03 +02:00
2016-06-05 01:40:35 +02:00
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-08-05 23:54:03 +02:00
public static ConfigBuilderPlugin getConfigBuilder() {
2016-07-07 10:34:20 +02:00
return sConfigBuilder;
}
public static ArrayList<PluginBase> getPluginsList() {
return pluginsList;
}
public static ArrayList<PluginBase> getSpecificPluginsList(int type) {
2016-08-05 23:54:03 +02:00
ArrayList<PluginBase> newList = new ArrayList<>();
if (pluginsList != null) {
2016-08-05 23:54:03 +02:00
for (PluginBase p : pluginsList) {
if (p.getType() == type)
newList.add(p);
}
} else {
log.error("pluginsList=null");
}
return newList;
}
public static ArrayList<PluginBase> getSpecificPluginsListByInterface(Class interfaceClass) {
2016-08-05 23:54:03 +02:00
ArrayList<PluginBase> newList = new ArrayList<>();
if (pluginsList != null) {
2016-08-05 23:54:03 +02:00
for (PluginBase p : pluginsList) {
if (p.getClass() != ConfigBuilderPlugin.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) {
2016-08-05 23:54:03 +02:00
for (PluginBase p : pluginsList) {
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
}
2016-12-16 02:00:53 +01:00
}