2016-06-05 01:40:35 +02:00
|
|
|
package info.nightscout.androidaps;
|
|
|
|
|
|
|
|
import android.app.Application;
|
2017-07-24 01:50:27 +02:00
|
|
|
import android.content.IntentFilter;
|
2016-06-24 17:16:17 +02:00
|
|
|
import android.content.res.Resources;
|
2017-09-06 20:00:36 +02:00
|
|
|
import android.os.SystemClock;
|
2016-07-18 20:19:55 +02:00
|
|
|
import android.support.annotation.Nullable;
|
2018-06-09 22:07:41 +02:00
|
|
|
import android.support.annotation.PluralsRes;
|
2017-07-24 01:50:27 +02:00
|
|
|
import android.support.v4.content.LocalBroadcastManager;
|
2016-06-05 01:40:35 +02:00
|
|
|
|
2016-06-24 17:48:11 +02:00
|
|
|
import com.crashlytics.android.Crashlytics;
|
2017-03-02 23:08:40 +01:00
|
|
|
import com.crashlytics.android.answers.Answers;
|
2016-06-05 01:40:35 +02:00
|
|
|
import com.j256.ormlite.android.apptools.OpenHelperManager;
|
|
|
|
import com.squareup.otto.Bus;
|
2017-10-14 17:24:01 +02:00
|
|
|
import com.squareup.otto.LoggingBus;
|
2016-06-05 01:40:35 +02:00
|
|
|
import com.squareup.otto.ThreadEnforcer;
|
|
|
|
|
2017-12-22 02:55:40 +01:00
|
|
|
import net.danlew.android.joda.JodaTimeAndroid;
|
|
|
|
|
2016-08-05 23:54:03 +02:00
|
|
|
import org.slf4j.Logger;
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
2018-03-05 22:30:48 +01:00
|
|
|
import java.io.File;
|
2016-08-05 23:54:03 +02:00
|
|
|
import java.util.ArrayList;
|
|
|
|
|
2018-03-19 18:21:02 +01:00
|
|
|
import info.nightscout.androidaps.data.ConstraintChecker;
|
2016-08-05 23:54:03 +02:00
|
|
|
import info.nightscout.androidaps.db.DatabaseHelper;
|
2016-07-18 20:19:55 +02:00
|
|
|
import info.nightscout.androidaps.interfaces.PluginBase;
|
2018-03-31 00:36:03 +02:00
|
|
|
import info.nightscout.androidaps.interfaces.PluginType;
|
|
|
|
import info.nightscout.androidaps.interfaces.PumpInterface;
|
2018-07-29 15:37:28 +02:00
|
|
|
import info.nightscout.androidaps.logging.L;
|
2016-11-05 15:46:11 +01:00
|
|
|
import info.nightscout.androidaps.plugins.Actions.ActionsFragment;
|
2017-11-01 20:43:59 +01:00
|
|
|
import info.nightscout.androidaps.plugins.Careportal.CareportalPlugin;
|
2017-05-23 23:56:53 +02:00
|
|
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
2017-10-06 16:39:59 +02:00
|
|
|
import info.nightscout.androidaps.plugins.ConstraintsObjectives.ObjectivesPlugin;
|
2017-06-24 13:22:50 +02:00
|
|
|
import info.nightscout.androidaps.plugins.ConstraintsSafety.SafetyPlugin;
|
2017-10-17 20:55:23 +02:00
|
|
|
import info.nightscout.androidaps.plugins.Food.FoodPlugin;
|
2017-08-31 22:00:45 +02:00
|
|
|
import info.nightscout.androidaps.plugins.Insulin.InsulinOrefFreePeakPlugin;
|
|
|
|
import info.nightscout.androidaps.plugins.Insulin.InsulinOrefRapidActingPlugin;
|
|
|
|
import info.nightscout.androidaps.plugins.Insulin.InsulinOrefUltraRapidActingPlugin;
|
2017-06-24 13:22:50 +02:00
|
|
|
import info.nightscout.androidaps.plugins.IobCobCalculator.IobCobCalculatorPlugin;
|
2018-07-28 22:45:40 +02:00
|
|
|
import info.nightscout.androidaps.plugins.Maintenance.MaintenancePlugin;
|
2017-10-06 16:39:59 +02:00
|
|
|
import info.nightscout.androidaps.plugins.Loop.LoopPlugin;
|
2018-03-23 22:44:37 +01:00
|
|
|
import info.nightscout.androidaps.plugins.NSClientInternal.NSClientPlugin;
|
2018-07-29 15:37:28 +02:00
|
|
|
import info.nightscout.androidaps.plugins.NSClientInternal.NSUpload;
|
2017-07-24 02:33:29 +02:00
|
|
|
import info.nightscout.androidaps.plugins.NSClientInternal.receivers.AckAlarmReceiver;
|
2018-08-15 22:09:13 +02:00
|
|
|
import info.nightscout.androidaps.plugins.NSClientInternal.receivers.DBAccessReceiver;
|
2017-10-06 16:39:59 +02:00
|
|
|
import info.nightscout.androidaps.plugins.OpenAPSAMA.OpenAPSAMAPlugin;
|
|
|
|
import info.nightscout.androidaps.plugins.OpenAPSMA.OpenAPSMAPlugin;
|
2017-10-07 21:33:22 +02:00
|
|
|
import info.nightscout.androidaps.plugins.OpenAPSSMB.OpenAPSSMBPlugin;
|
2017-10-06 16:39:59 +02:00
|
|
|
import info.nightscout.androidaps.plugins.Overview.OverviewPlugin;
|
2017-05-23 23:56:53 +02:00
|
|
|
import info.nightscout.androidaps.plugins.Persistentnotification.PersistentNotificationPlugin;
|
2018-01-21 13:37:38 +01:00
|
|
|
import info.nightscout.androidaps.plugins.ProfileLocal.LocalProfilePlugin;
|
2017-10-07 17:48:03 +02:00
|
|
|
import info.nightscout.androidaps.plugins.ProfileNS.NSProfilePlugin;
|
|
|
|
import info.nightscout.androidaps.plugins.ProfileSimple.SimpleProfilePlugin;
|
2017-10-17 12:20:12 +02:00
|
|
|
import info.nightscout.androidaps.plugins.PumpCombo.ComboPlugin;
|
2017-08-31 19:32:28 +02:00
|
|
|
import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin;
|
|
|
|
import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin;
|
2017-09-13 00:35:03 +02:00
|
|
|
import info.nightscout.androidaps.plugins.PumpDanaRS.DanaRSPlugin;
|
2017-08-31 19:32:28 +02:00
|
|
|
import info.nightscout.androidaps.plugins.PumpDanaRv2.DanaRv2Plugin;
|
2018-03-23 17:51:05 +01:00
|
|
|
import info.nightscout.androidaps.plugins.PumpInsight.InsightPlugin;
|
2017-06-24 13:22:50 +02:00
|
|
|
import info.nightscout.androidaps.plugins.PumpMDI.MDIPlugin;
|
2017-06-07 18:10:07 +02:00
|
|
|
import info.nightscout.androidaps.plugins.PumpVirtual.VirtualPumpPlugin;
|
2018-06-23 12:19:55 +02:00
|
|
|
import info.nightscout.androidaps.plugins.Sensitivity.SensitivityAAPSPlugin;
|
|
|
|
import info.nightscout.androidaps.plugins.Sensitivity.SensitivityOref0Plugin;
|
|
|
|
import info.nightscout.androidaps.plugins.Sensitivity.SensitivityOref1Plugin;
|
|
|
|
import info.nightscout.androidaps.plugins.Sensitivity.SensitivityWeightedAveragePlugin;
|
2017-10-07 17:48:03 +02:00
|
|
|
import info.nightscout.androidaps.plugins.SmsCommunicator.SmsCommunicatorPlugin;
|
2018-03-31 00:36:03 +02:00
|
|
|
import info.nightscout.androidaps.plugins.Source.SourceDexcomG5Plugin;
|
|
|
|
import info.nightscout.androidaps.plugins.Source.SourceGlimpPlugin;
|
|
|
|
import info.nightscout.androidaps.plugins.Source.SourceMM640gPlugin;
|
|
|
|
import info.nightscout.androidaps.plugins.Source.SourceNSClientPlugin;
|
2018-06-11 17:26:31 +02:00
|
|
|
import info.nightscout.androidaps.plugins.Source.SourcePoctechPlugin;
|
2018-03-31 00:36:03 +02:00
|
|
|
import info.nightscout.androidaps.plugins.Source.SourceXdripPlugin;
|
2017-10-07 17:48:03 +02:00
|
|
|
import info.nightscout.androidaps.plugins.Treatments.TreatmentsPlugin;
|
2017-11-01 20:43:59 +01:00
|
|
|
import info.nightscout.androidaps.plugins.Wear.WearPlugin;
|
2017-06-24 13:22:50 +02:00
|
|
|
import info.nightscout.androidaps.plugins.XDripStatusline.StatuslinePlugin;
|
2017-07-24 01:50:27 +02:00
|
|
|
import info.nightscout.androidaps.receivers.DataReceiver;
|
2016-12-16 02:00:53 +01:00
|
|
|
import info.nightscout.androidaps.receivers.KeepAliveReceiver;
|
2017-07-24 02:27:16 +02:00
|
|
|
import info.nightscout.androidaps.receivers.NSAlarmReceiver;
|
2018-07-29 15:37:28 +02:00
|
|
|
import info.nightscout.androidaps.services.Intents;
|
2018-02-22 13:30:36 +01:00
|
|
|
import info.nightscout.utils.FabricPrivacy;
|
2018-08-02 15:19:13 +02:00
|
|
|
import info.nightscout.androidaps.plugins.Maintenance.LoggerUtils;
|
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 {
|
2018-07-29 15:37:28 +02:00
|
|
|
private static Logger log = LoggerFactory.getLogger(L.CORE);
|
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;
|
2018-03-19 18:21:02 +01:00
|
|
|
private static ConstraintChecker sConstraintsChecker = null;
|
2016-06-05 01:40:35 +02:00
|
|
|
|
2016-07-18 20:19:55 +02:00
|
|
|
private static ArrayList<PluginBase> pluginsList = null;
|
|
|
|
|
2017-07-24 01:50:27 +02:00
|
|
|
private static DataReceiver dataReceiver = new DataReceiver();
|
2017-07-24 02:27:16 +02:00
|
|
|
private static NSAlarmReceiver alarmReciever = new NSAlarmReceiver();
|
2017-07-24 02:33:29 +02:00
|
|
|
private static AckAlarmReceiver ackAlarmReciever = new AckAlarmReceiver();
|
2018-08-15 22:09:13 +02:00
|
|
|
private static DBAccessReceiver dbAccessReciever = new DBAccessReceiver();
|
2017-07-24 01:50:27 +02:00
|
|
|
private LocalBroadcastManager lbm;
|
|
|
|
|
2018-03-05 22:30:48 +01:00
|
|
|
public static boolean devBranch;
|
|
|
|
public static boolean engineeringMode;
|
|
|
|
|
2016-06-05 01:40:35 +02:00
|
|
|
@Override
|
|
|
|
public void onCreate() {
|
|
|
|
super.onCreate();
|
2018-08-07 21:45:35 +02:00
|
|
|
log.debug("onCreate");
|
2018-02-22 13:30:36 +01:00
|
|
|
sInstance = this;
|
|
|
|
sResources = getResources();
|
2018-03-19 18:21:02 +01:00
|
|
|
sConstraintsChecker = new ConstraintChecker(this);
|
2018-03-31 00:36:03 +02:00
|
|
|
sDatabaseHelper = OpenHelperManager.getHelper(sInstance, DatabaseHelper.class);
|
2018-02-22 13:30:36 +01:00
|
|
|
|
|
|
|
try {
|
|
|
|
if (FabricPrivacy.fabricEnabled()) {
|
|
|
|
Fabric.with(this, new Crashlytics());
|
|
|
|
Fabric.with(this, new Answers());
|
|
|
|
Crashlytics.setString("BUILDVERSION", BuildConfig.BUILDVERSION);
|
|
|
|
}
|
|
|
|
} catch (Exception e) {
|
2018-07-29 15:37:28 +02:00
|
|
|
log.error("Error with Fabric init! " + e);
|
2018-02-22 13:30:36 +01:00
|
|
|
}
|
|
|
|
|
2017-12-22 02:55:40 +01:00
|
|
|
JodaTimeAndroid.init(this);
|
2018-02-22 13:30:36 +01:00
|
|
|
|
2016-11-08 19:10:25 +01:00
|
|
|
log.info("Version: " + BuildConfig.VERSION_NAME);
|
|
|
|
log.info("BuildVersion: " + BuildConfig.BUILDVERSION);
|
2016-06-05 01:40:35 +02:00
|
|
|
|
2018-07-23 20:58:20 +02:00
|
|
|
String extFilesDir = LoggerUtils.getLogDirectory();
|
2018-03-31 00:36:03 +02:00
|
|
|
File engineeringModeSemaphore = new File(extFilesDir, "engineering_mode");
|
2018-03-18 19:48:41 +01:00
|
|
|
|
|
|
|
engineeringMode = engineeringModeSemaphore.exists() && engineeringModeSemaphore.isFile();
|
|
|
|
devBranch = BuildConfig.VERSION.contains("dev");
|
|
|
|
|
2018-07-29 14:39:56 +02:00
|
|
|
sBus = L.isEnabled(L.EVENTS) ? new LoggingBus(ThreadEnforcer.ANY) : new Bus(ThreadEnforcer.ANY);
|
2017-10-14 15:24:41 +02:00
|
|
|
|
2017-07-24 01:50:27 +02:00
|
|
|
registerLocalBroadcastReceiver();
|
|
|
|
|
2016-07-18 20:19:55 +02:00
|
|
|
if (pluginsList == null) {
|
2016-08-05 23:54:03 +02:00
|
|
|
pluginsList = new ArrayList<>();
|
2016-07-18 20:19:55 +02:00
|
|
|
// Register all tabs in app here
|
2017-10-06 16:39:59 +02:00
|
|
|
pluginsList.add(OverviewPlugin.getPlugin());
|
2017-06-24 13:22:50 +02:00
|
|
|
pluginsList.add(IobCobCalculatorPlugin.getPlugin());
|
2017-02-23 20:00:33 +01:00
|
|
|
if (Config.ACTION) pluginsList.add(ActionsFragment.getPlugin());
|
2017-08-31 22:00:45 +02:00
|
|
|
pluginsList.add(InsulinOrefRapidActingPlugin.getPlugin());
|
|
|
|
pluginsList.add(InsulinOrefUltraRapidActingPlugin.getPlugin());
|
|
|
|
pluginsList.add(InsulinOrefFreePeakPlugin.getPlugin());
|
2017-06-24 11:04:09 +02:00
|
|
|
pluginsList.add(SensitivityOref0Plugin.getPlugin());
|
2017-06-30 11:56:36 +02:00
|
|
|
pluginsList.add(SensitivityAAPSPlugin.getPlugin());
|
2017-07-07 15:08:21 +02:00
|
|
|
pluginsList.add(SensitivityWeightedAveragePlugin.getPlugin());
|
2018-06-19 20:41:40 +02:00
|
|
|
pluginsList.add(SensitivityOref1Plugin.getPlugin());
|
2018-08-07 21:07:43 +02:00
|
|
|
if (Config.PUMPDRIVERS) pluginsList.add(DanaRPlugin.getPlugin());
|
|
|
|
if (Config.PUMPDRIVERS) pluginsList.add(DanaRKoreanPlugin.getPlugin());
|
|
|
|
if (Config.PUMPDRIVERS) pluginsList.add(DanaRv2Plugin.getPlugin());
|
|
|
|
if (Config.PUMPDRIVERS) pluginsList.add(DanaRSPlugin.getPlugin());
|
2017-11-01 20:43:59 +01:00
|
|
|
pluginsList.add(CareportalPlugin.getPlugin());
|
2018-08-07 21:07:43 +02:00
|
|
|
if (Config.PUMPDRIVERS && engineeringMode)
|
2018-03-31 00:36:03 +02:00
|
|
|
pluginsList.add(InsightPlugin.getPlugin()); // <-- Enable Insight plugin here
|
2018-08-07 21:07:43 +02:00
|
|
|
if (Config.PUMPDRIVERS) pluginsList.add(ComboPlugin.getPlugin());
|
2017-06-24 13:22:50 +02:00
|
|
|
if (Config.MDI) pluginsList.add(MDIPlugin.getPlugin());
|
2018-03-31 21:41:14 +02:00
|
|
|
pluginsList.add(VirtualPumpPlugin.getPlugin());
|
2017-11-01 20:43:59 +01:00
|
|
|
if (Config.APS) pluginsList.add(LoopPlugin.getPlugin());
|
|
|
|
if (Config.APS) pluginsList.add(OpenAPSMAPlugin.getPlugin());
|
|
|
|
if (Config.APS) pluginsList.add(OpenAPSAMAPlugin.getPlugin());
|
2017-11-01 20:50:14 +01:00
|
|
|
if (Config.APS) pluginsList.add(OpenAPSSMBPlugin.getPlugin());
|
2017-10-07 17:48:03 +02:00
|
|
|
pluginsList.add(NSProfilePlugin.getPlugin());
|
|
|
|
if (Config.OTHERPROFILES) pluginsList.add(SimpleProfilePlugin.getPlugin());
|
2018-01-21 13:37:38 +01:00
|
|
|
if (Config.OTHERPROFILES) pluginsList.add(LocalProfilePlugin.getPlugin());
|
2017-10-07 17:48:03 +02:00
|
|
|
pluginsList.add(TreatmentsPlugin.getPlugin());
|
2017-06-24 13:22:50 +02:00
|
|
|
if (Config.SAFETY) pluginsList.add(SafetyPlugin.getPlugin());
|
2017-10-06 16:39:59 +02:00
|
|
|
if (Config.APS) pluginsList.add(ObjectivesPlugin.getPlugin());
|
2018-08-14 16:06:02 +02:00
|
|
|
pluginsList.add(SourceXdripPlugin.getPlugin());
|
2018-08-07 21:45:35 +02:00
|
|
|
pluginsList.add(SourceNSClientPlugin.getPlugin());
|
2018-08-14 16:06:02 +02:00
|
|
|
pluginsList.add(SourceMM640gPlugin.getPlugin());
|
|
|
|
pluginsList.add(SourceGlimpPlugin.getPlugin());
|
|
|
|
pluginsList.add(SourceDexcomG5Plugin.getPlugin());
|
|
|
|
pluginsList.add(SourcePoctechPlugin.getPlugin());
|
2017-10-07 17:48:03 +02:00
|
|
|
if (Config.SMSCOMMUNICATORENABLED) pluginsList.add(SmsCommunicatorPlugin.getPlugin());
|
2017-10-17 20:55:23 +02:00
|
|
|
pluginsList.add(FoodPlugin.getPlugin());
|
2016-11-17 16:38:58 +01:00
|
|
|
|
2017-11-01 20:43:59 +01:00
|
|
|
pluginsList.add(WearPlugin.initPlugin(this));
|
|
|
|
pluginsList.add(StatuslinePlugin.initPlugin(this));
|
2018-06-17 23:33:32 +02:00
|
|
|
pluginsList.add(PersistentNotificationPlugin.getPlugin());
|
2018-03-23 22:44:37 +01:00
|
|
|
pluginsList.add(NSClientPlugin.getPlugin());
|
2018-07-28 22:45:40 +02:00
|
|
|
pluginsList.add(MaintenancePlugin.initPlugin(this));
|
2016-11-17 16:38:58 +01:00
|
|
|
|
2018-03-25 23:56:52 +02:00
|
|
|
pluginsList.add(sConfigBuilder = ConfigBuilderPlugin.getPlugin());
|
2016-07-18 20:19:55 +02:00
|
|
|
|
|
|
|
MainApp.getConfigBuilder().initialize();
|
|
|
|
}
|
2018-03-19 17:06:22 +01:00
|
|
|
|
2018-07-10 17:55:50 +02:00
|
|
|
NSUpload.uploadAppStart();
|
2017-08-23 13:28:07 +02:00
|
|
|
|
2018-03-31 00:36:03 +02:00
|
|
|
final PumpInterface pump = ConfigBuilderPlugin.getActivePump();
|
|
|
|
if (pump != null) {
|
|
|
|
new Thread(() -> {
|
2017-09-06 20:00:36 +02:00
|
|
|
SystemClock.sleep(5000);
|
2017-11-11 14:05:29 +01:00
|
|
|
ConfigBuilderPlugin.getCommandQueue().readStatus("Initialization", null);
|
2017-10-25 17:49:23 +02:00
|
|
|
startKeepAliveService();
|
2018-03-31 00:36:03 +02:00
|
|
|
}).start();
|
|
|
|
}
|
2017-07-24 01:50:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
private void registerLocalBroadcastReceiver() {
|
|
|
|
lbm = LocalBroadcastManager.getInstance(this);
|
|
|
|
lbm.registerReceiver(dataReceiver, new IntentFilter(Intents.ACTION_NEW_TREATMENT));
|
|
|
|
lbm.registerReceiver(dataReceiver, new IntentFilter(Intents.ACTION_CHANGED_TREATMENT));
|
|
|
|
lbm.registerReceiver(dataReceiver, new IntentFilter(Intents.ACTION_REMOVED_TREATMENT));
|
2017-10-17 20:55:23 +02:00
|
|
|
lbm.registerReceiver(dataReceiver, new IntentFilter(Intents.ACTION_NEW_FOOD));
|
|
|
|
lbm.registerReceiver(dataReceiver, new IntentFilter(Intents.ACTION_CHANGED_FOOD));
|
|
|
|
lbm.registerReceiver(dataReceiver, new IntentFilter(Intents.ACTION_REMOVED_FOOD));
|
2017-07-24 01:55:01 +02:00
|
|
|
lbm.registerReceiver(dataReceiver, new IntentFilter(Intents.ACTION_NEW_SGV));
|
2017-07-24 01:58:23 +02:00
|
|
|
lbm.registerReceiver(dataReceiver, new IntentFilter(Intents.ACTION_NEW_PROFILE));
|
2017-07-24 02:00:46 +02:00
|
|
|
lbm.registerReceiver(dataReceiver, new IntentFilter(Intents.ACTION_NEW_STATUS));
|
2017-07-24 02:02:54 +02:00
|
|
|
lbm.registerReceiver(dataReceiver, new IntentFilter(Intents.ACTION_NEW_MBG));
|
2017-07-24 02:06:05 +02:00
|
|
|
lbm.registerReceiver(dataReceiver, new IntentFilter(Intents.ACTION_NEW_DEVICESTATUS));
|
2017-07-24 02:09:26 +02:00
|
|
|
lbm.registerReceiver(dataReceiver, new IntentFilter(Intents.ACTION_NEW_CAL));
|
|
|
|
|
2017-07-24 02:27:16 +02:00
|
|
|
//register alarms
|
|
|
|
lbm.registerReceiver(alarmReciever, new IntentFilter(Intents.ACTION_ALARM));
|
|
|
|
lbm.registerReceiver(alarmReciever, new IntentFilter(Intents.ACTION_ANNOUNCEMENT));
|
|
|
|
lbm.registerReceiver(alarmReciever, new IntentFilter(Intents.ACTION_CLEAR_ALARM));
|
|
|
|
lbm.registerReceiver(alarmReciever, new IntentFilter(Intents.ACTION_URGENT_ALARM));
|
|
|
|
|
|
|
|
//register ack alarm
|
2017-07-24 02:33:29 +02:00
|
|
|
lbm.registerReceiver(ackAlarmReciever, new IntentFilter(Intents.ACTION_ACK_ALARM));
|
2018-08-15 22:09:13 +02:00
|
|
|
|
|
|
|
//register dbaccess
|
|
|
|
lbm.registerReceiver(dbAccessReciever, new IntentFilter(Intents.ACTION_DATABASE));
|
2016-12-16 02:00:53 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
private void startKeepAliveService() {
|
|
|
|
if (keepAliveReceiver == null) {
|
|
|
|
keepAliveReceiver = new KeepAliveReceiver();
|
|
|
|
keepAliveReceiver.setAlarm(this);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-04-25 16:37:27 +02:00
|
|
|
public void stopKeepAliveService() {
|
|
|
|
if (keepAliveReceiver != null)
|
2017-12-17 01:40:27 +01:00
|
|
|
KeepAliveReceiver.cancelAlarm(this);
|
2016-06-05 01:40:35 +02:00
|
|
|
}
|
|
|
|
|
2018-05-02 22:36:52 +02:00
|
|
|
public static void subscribe(Object subscriber) {
|
|
|
|
try {
|
|
|
|
bus().register(subscriber);
|
|
|
|
} catch (IllegalArgumentException e) {
|
|
|
|
// already registered
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public static void unsubscribe(Object subscriber) {
|
|
|
|
try {
|
|
|
|
bus().unregister(subscriber);
|
|
|
|
} catch (IllegalArgumentException e) {
|
|
|
|
// already unregistered
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-06-05 01:40:35 +02:00
|
|
|
public static Bus bus() {
|
|
|
|
return sBus;
|
|
|
|
}
|
2016-08-05 23:54:03 +02:00
|
|
|
|
2018-01-14 21:42:36 +01:00
|
|
|
public static String gs(int id) {
|
|
|
|
return sResources.getString(id);
|
|
|
|
}
|
|
|
|
|
2018-01-25 20:26:07 +01:00
|
|
|
public static String gs(int id, Object... args) {
|
|
|
|
return sResources.getString(id, args);
|
|
|
|
}
|
|
|
|
|
2018-06-09 22:07:41 +02:00
|
|
|
public static String gq(@PluralsRes int id, int quantity, Object... args) {
|
|
|
|
return sResources.getQuantityString(id, quantity, args);
|
|
|
|
}
|
|
|
|
|
2018-03-10 19:22:31 +01:00
|
|
|
public static int gc(int id) {
|
|
|
|
return sResources.getColor(id);
|
|
|
|
}
|
|
|
|
|
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
|
|
|
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;
|
2016-06-21 23:24:54 +02:00
|
|
|
}
|
|
|
|
|
2018-03-19 18:21:02 +01:00
|
|
|
public static ConstraintChecker getConstraintChecker() {
|
|
|
|
return sConstraintsChecker;
|
|
|
|
}
|
|
|
|
|
2016-07-18 20:19:55 +02:00
|
|
|
public static ArrayList<PluginBase> getPluginsList() {
|
|
|
|
return pluginsList;
|
|
|
|
}
|
|
|
|
|
2018-03-31 00:36:03 +02:00
|
|
|
public static ArrayList<PluginBase> getSpecificPluginsList(PluginType type) {
|
2016-08-05 23:54:03 +02:00
|
|
|
ArrayList<PluginBase> newList = new ArrayList<>();
|
2016-07-18 20:19:55 +02:00
|
|
|
|
|
|
|
if (pluginsList != null) {
|
2016-08-05 23:54:03 +02:00
|
|
|
for (PluginBase p : pluginsList) {
|
2016-07-18 20:19:55 +02:00
|
|
|
if (p.getType() == type)
|
|
|
|
newList.add(p);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
log.error("pluginsList=null");
|
|
|
|
}
|
|
|
|
return newList;
|
|
|
|
}
|
|
|
|
|
2018-03-31 00:36:03 +02:00
|
|
|
public static ArrayList<PluginBase> getSpecificPluginsVisibleInList(PluginType type) {
|
2017-04-29 16:59:44 +02:00
|
|
|
ArrayList<PluginBase> newList = new ArrayList<>();
|
|
|
|
|
|
|
|
if (pluginsList != null) {
|
|
|
|
for (PluginBase p : pluginsList) {
|
|
|
|
if (p.getType() == type)
|
|
|
|
if (p.showInList(type))
|
|
|
|
newList.add(p);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
log.error("pluginsList=null");
|
|
|
|
}
|
|
|
|
return newList;
|
|
|
|
}
|
|
|
|
|
2016-07-18 20:19:55 +02:00
|
|
|
public static ArrayList<PluginBase> getSpecificPluginsListByInterface(Class interfaceClass) {
|
2016-08-05 23:54:03 +02:00
|
|
|
ArrayList<PluginBase> newList = new ArrayList<>();
|
2016-07-18 20:19:55 +02:00
|
|
|
|
|
|
|
if (pluginsList != null) {
|
2016-08-05 23:54:03 +02:00
|
|
|
for (PluginBase p : pluginsList) {
|
|
|
|
if (p.getClass() != ConfigBuilderPlugin.class && interfaceClass.isAssignableFrom(p.getClass()))
|
2016-07-18 20:19:55 +02:00
|
|
|
newList.add(p);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
log.error("pluginsList=null");
|
|
|
|
}
|
|
|
|
return newList;
|
|
|
|
}
|
|
|
|
|
2018-03-31 00:36:03 +02:00
|
|
|
public static ArrayList<PluginBase> getSpecificPluginsVisibleInListByInterface(Class interfaceClass, PluginType type) {
|
2017-04-29 16:59:44 +02:00
|
|
|
ArrayList<PluginBase> newList = new ArrayList<>();
|
|
|
|
|
|
|
|
if (pluginsList != null) {
|
|
|
|
for (PluginBase p : pluginsList) {
|
|
|
|
if (p.getClass() != ConfigBuilderPlugin.class && interfaceClass.isAssignableFrom(p.getClass()))
|
|
|
|
if (p.showInList(type))
|
|
|
|
newList.add(p);
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
log.error("pluginsList=null");
|
|
|
|
}
|
|
|
|
return newList;
|
|
|
|
}
|
|
|
|
|
2016-07-18 20:19:55 +02:00
|
|
|
@Nullable
|
2017-08-19 03:22:43 +02:00
|
|
|
public static <T extends PluginBase> T getSpecificPlugin(Class<T> pluginClass) {
|
2016-07-18 20:19:55 +02:00
|
|
|
if (pluginsList != null) {
|
2016-08-05 23:54:03 +02:00
|
|
|
for (PluginBase p : pluginsList) {
|
2017-08-19 03:22:43 +02:00
|
|
|
if (pluginClass.isAssignableFrom(p.getClass()))
|
|
|
|
return (T) p;
|
2016-07-18 20:19:55 +02:00
|
|
|
}
|
|
|
|
} else {
|
|
|
|
log.error("pluginsList=null");
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2018-03-18 17:38:05 +01:00
|
|
|
public static boolean isEngineeringModeOrRelease() {
|
2018-08-07 21:07:43 +02:00
|
|
|
if (!Config.APS)
|
2018-03-24 17:09:56 +01:00
|
|
|
return true;
|
2018-03-17 21:23:45 +01:00
|
|
|
return engineeringMode || !devBranch;
|
|
|
|
}
|
|
|
|
|
2018-05-02 18:39:37 +02:00
|
|
|
public static boolean isDev() {
|
|
|
|
return devBranch;
|
|
|
|
}
|
|
|
|
|
2016-06-05 01:40:35 +02:00
|
|
|
@Override
|
|
|
|
public void onTerminate() {
|
2018-07-29 15:37:28 +02:00
|
|
|
if (L.isEnabled(L.CORE))
|
|
|
|
log.debug("onTerminate");
|
2016-06-05 01:40:35 +02:00
|
|
|
super.onTerminate();
|
2018-03-31 15:00:32 +02:00
|
|
|
if (sDatabaseHelper != null) {
|
|
|
|
sDatabaseHelper.close();
|
|
|
|
sDatabaseHelper = null;
|
|
|
|
}
|
2016-06-05 01:40:35 +02:00
|
|
|
}
|
2016-12-16 02:00:53 +01:00
|
|
|
}
|