some dagger code
This commit is contained in:
parent
9bd24ffdbe
commit
f2aa21ce82
7 changed files with 219 additions and 3 deletions
|
@ -13,6 +13,7 @@ buildscript {
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
apply plugin: 'kotlin-android-extensions'
|
apply plugin: 'kotlin-android-extensions'
|
||||||
|
apply plugin: 'kotlin-kapt'
|
||||||
apply plugin: 'com.google.gms.google-services'
|
apply plugin: 'com.google.gms.google-services'
|
||||||
apply plugin: 'io.fabric'
|
apply plugin: 'io.fabric'
|
||||||
apply plugin: 'jacoco-android'
|
apply plugin: 'jacoco-android'
|
||||||
|
@ -208,6 +209,10 @@ android {
|
||||||
}
|
}
|
||||||
|
|
||||||
useLibrary "org.apache.http.legacy"
|
useLibrary "org.apache.http.legacy"
|
||||||
|
|
||||||
|
configurations.all {
|
||||||
|
resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
|
@ -312,6 +317,19 @@ dependencies {
|
||||||
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
|
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
|
||||||
androidTestImplementation 'androidx.test:rules:1.3.0-alpha03'
|
androidTestImplementation 'androidx.test:rules:1.3.0-alpha03'
|
||||||
androidTestImplementation 'com.google.code.findbugs:jsr305:3.0.2'
|
androidTestImplementation 'com.google.code.findbugs:jsr305:3.0.2'
|
||||||
|
|
||||||
|
/* Dagger2 - We are going to use dagger.android which includes
|
||||||
|
* support for Activity and fragment injection so we need to include
|
||||||
|
* the following dependencies */
|
||||||
|
implementation 'com.google.dagger:dagger-android:2.25.2'
|
||||||
|
implementation 'com.google.dagger:dagger-android-support:2.25.2'
|
||||||
|
annotationProcessor 'com.google.dagger:dagger-compiler:2.25.2'
|
||||||
|
annotationProcessor 'com.google.dagger:dagger-android-processor:2.25.2'
|
||||||
|
kapt 'com.google.dagger:dagger-android-processor:2.25.2'
|
||||||
|
|
||||||
|
/* Dagger2 - default dependency */
|
||||||
|
kapt 'com.google.dagger:dagger-compiler:2.25.2'
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,7 @@ import com.joanzapata.iconify.fonts.FontAwesomeModule;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import dagger.android.AndroidInjection;
|
||||||
import info.nightscout.androidaps.activities.HistoryBrowseActivity;
|
import info.nightscout.androidaps.activities.HistoryBrowseActivity;
|
||||||
import info.nightscout.androidaps.activities.NoSplashAppCompatActivity;
|
import info.nightscout.androidaps.activities.NoSplashAppCompatActivity;
|
||||||
import info.nightscout.androidaps.activities.PreferencesActivity;
|
import info.nightscout.androidaps.activities.PreferencesActivity;
|
||||||
|
@ -73,6 +74,7 @@ public class MainActivity extends NoSplashAppCompatActivity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
AndroidInjection.inject(this);
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
Iconify.with(new FontAwesomeModule());
|
Iconify.with(new FontAwesomeModule());
|
||||||
|
|
|
@ -21,8 +21,11 @@ import org.slf4j.LoggerFactory;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import dagger.android.AndroidInjector;
|
||||||
|
import dagger.android.HasAndroidInjector;
|
||||||
import info.nightscout.androidaps.data.ConstraintChecker;
|
import info.nightscout.androidaps.data.ConstraintChecker;
|
||||||
import info.nightscout.androidaps.db.DatabaseHelper;
|
import info.nightscout.androidaps.db.DatabaseHelper;
|
||||||
|
import info.nightscout.androidaps.dependencyInjection.DaggerAppComponent;
|
||||||
import info.nightscout.androidaps.interfaces.PluginBase;
|
import info.nightscout.androidaps.interfaces.PluginBase;
|
||||||
import info.nightscout.androidaps.interfaces.PluginType;
|
import info.nightscout.androidaps.interfaces.PluginType;
|
||||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||||
|
@ -51,8 +54,6 @@ import info.nightscout.androidaps.plugins.general.nsclient.receivers.DBAccessRec
|
||||||
import info.nightscout.androidaps.plugins.general.overview.OverviewPlugin;
|
import info.nightscout.androidaps.plugins.general.overview.OverviewPlugin;
|
||||||
import info.nightscout.androidaps.plugins.general.persistentNotification.PersistentNotificationPlugin;
|
import info.nightscout.androidaps.plugins.general.persistentNotification.PersistentNotificationPlugin;
|
||||||
import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicatorPlugin;
|
import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicatorPlugin;
|
||||||
import info.nightscout.androidaps.plugins.source.RandomBgPlugin;
|
|
||||||
import info.nightscout.androidaps.utils.ActivityMonitor;
|
|
||||||
import info.nightscout.androidaps.plugins.general.wear.WearPlugin;
|
import info.nightscout.androidaps.plugins.general.wear.WearPlugin;
|
||||||
import info.nightscout.androidaps.plugins.general.xdripStatusline.StatuslinePlugin;
|
import info.nightscout.androidaps.plugins.general.xdripStatusline.StatuslinePlugin;
|
||||||
import info.nightscout.androidaps.plugins.insulin.InsulinOrefFreePeakPlugin;
|
import info.nightscout.androidaps.plugins.insulin.InsulinOrefFreePeakPlugin;
|
||||||
|
@ -74,6 +75,7 @@ import info.nightscout.androidaps.plugins.sensitivity.SensitivityAAPSPlugin;
|
||||||
import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref0Plugin;
|
import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref0Plugin;
|
||||||
import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin;
|
import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin;
|
||||||
import info.nightscout.androidaps.plugins.sensitivity.SensitivityWeightedAveragePlugin;
|
import info.nightscout.androidaps.plugins.sensitivity.SensitivityWeightedAveragePlugin;
|
||||||
|
import info.nightscout.androidaps.plugins.source.RandomBgPlugin;
|
||||||
import info.nightscout.androidaps.plugins.source.SourceDexcomPlugin;
|
import info.nightscout.androidaps.plugins.source.SourceDexcomPlugin;
|
||||||
import info.nightscout.androidaps.plugins.source.SourceEversensePlugin;
|
import info.nightscout.androidaps.plugins.source.SourceEversensePlugin;
|
||||||
import info.nightscout.androidaps.plugins.source.SourceGlimpPlugin;
|
import info.nightscout.androidaps.plugins.source.SourceGlimpPlugin;
|
||||||
|
@ -88,6 +90,7 @@ import info.nightscout.androidaps.receivers.KeepAliveReceiver;
|
||||||
import info.nightscout.androidaps.receivers.NSAlarmReceiver;
|
import info.nightscout.androidaps.receivers.NSAlarmReceiver;
|
||||||
import info.nightscout.androidaps.receivers.TimeDateOrTZChangeReceiver;
|
import info.nightscout.androidaps.receivers.TimeDateOrTZChangeReceiver;
|
||||||
import info.nightscout.androidaps.services.Intents;
|
import info.nightscout.androidaps.services.Intents;
|
||||||
|
import info.nightscout.androidaps.utils.ActivityMonitor;
|
||||||
import info.nightscout.androidaps.utils.FabricPrivacy;
|
import info.nightscout.androidaps.utils.FabricPrivacy;
|
||||||
import info.nightscout.androidaps.utils.LocaleHelper;
|
import info.nightscout.androidaps.utils.LocaleHelper;
|
||||||
import io.fabric.sdk.android.Fabric;
|
import io.fabric.sdk.android.Fabric;
|
||||||
|
@ -95,7 +98,7 @@ import io.fabric.sdk.android.Fabric;
|
||||||
import static info.nightscout.androidaps.plugins.constraints.versionChecker.VersionCheckerUtilsKt.triggerCheckVersion;
|
import static info.nightscout.androidaps.plugins.constraints.versionChecker.VersionCheckerUtilsKt.triggerCheckVersion;
|
||||||
|
|
||||||
|
|
||||||
public class MainApp extends Application {
|
public class MainApp extends Application implements HasAndroidInjector {
|
||||||
private static Logger log = LoggerFactory.getLogger(L.CORE);
|
private static Logger log = LoggerFactory.getLogger(L.CORE);
|
||||||
private static KeepAliveReceiver keepAliveReceiver;
|
private static KeepAliveReceiver keepAliveReceiver;
|
||||||
|
|
||||||
|
@ -120,9 +123,19 @@ public class MainApp extends Application {
|
||||||
public static boolean devBranch;
|
public static boolean devBranch;
|
||||||
public static boolean engineeringMode;
|
public static boolean engineeringMode;
|
||||||
|
|
||||||
|
AndroidInjector<Object> activityInjector;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AndroidInjector<Object> androidInjector() {
|
||||||
|
return activityInjector;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
|
// Dagger injection
|
||||||
|
DaggerAppComponent.create().inject(this);
|
||||||
|
|
||||||
log.debug("onCreate");
|
log.debug("onCreate");
|
||||||
sInstance = this;
|
sInstance = this;
|
||||||
sResources = getResources();
|
sResources = getResources();
|
||||||
|
@ -442,4 +455,5 @@ public class MainApp extends Application {
|
||||||
float scale = sResources.getDisplayMetrics().density;
|
float scale = sResources.getDisplayMetrics().density;
|
||||||
return (int) (dp * scale + 0.5f);
|
return (int) (dp * scale + 0.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
package info.nightscout.androidaps.dependencyInjection
|
||||||
|
|
||||||
|
import dagger.Module
|
||||||
|
import dagger.android.ContributesAndroidInjector
|
||||||
|
import info.nightscout.androidaps.MainActivity
|
||||||
|
|
||||||
|
@Module
|
||||||
|
abstract class ActivitiesModule {
|
||||||
|
@ContributesAndroidInjector
|
||||||
|
abstract fun contributeMainActivity(): MainActivity
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
package info.nightscout.androidaps.dependencyInjection
|
||||||
|
|
||||||
|
import dagger.Component
|
||||||
|
import dagger.android.AndroidInjectionModule
|
||||||
|
import info.nightscout.androidaps.MainApp
|
||||||
|
|
||||||
|
|
||||||
|
@Component(
|
||||||
|
modules = [
|
||||||
|
AndroidInjectionModule::class,
|
||||||
|
ActivitiesModule::class,
|
||||||
|
AppModule::class
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
interface AppComponent {
|
||||||
|
fun inject(mainApp: MainApp)
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package info.nightscout.androidaps.dependencyInjection
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
import android.preference.PreferenceManager
|
||||||
|
import dagger.Module
|
||||||
|
import dagger.Provides
|
||||||
|
import info.nightscout.androidaps.MainApp
|
||||||
|
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||||
|
import javax.inject.Singleton
|
||||||
|
|
||||||
|
|
||||||
|
@Module
|
||||||
|
class AppModule(private val application: MainApp) {
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
fun provideApplication(): MainApp {
|
||||||
|
return application
|
||||||
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
fun provideContext(): Context {
|
||||||
|
return application.applicationContext
|
||||||
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
fun provideSharedPreferences(): SP {
|
||||||
|
return SP(PreferenceManager.getDefaultSharedPreferences(provideContext()))
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,122 @@
|
||||||
|
package info.nightscout.androidaps.utils.sharedPreferences
|
||||||
|
|
||||||
|
import android.content.SharedPreferences
|
||||||
|
import info.nightscout.androidaps.MainApp
|
||||||
|
import info.nightscout.androidaps.utils.SafeParse
|
||||||
|
import javax.inject.Inject
|
||||||
|
import javax.inject.Singleton
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by mike on 17.02.2017.
|
||||||
|
*/
|
||||||
|
@Singleton
|
||||||
|
class SP @Inject internal constructor(private val sharedPreferences: SharedPreferences) {
|
||||||
|
|
||||||
|
fun getAll(): Map<String, *> = sharedPreferences.all
|
||||||
|
|
||||||
|
fun clear() = sharedPreferences.edit().clear().apply()
|
||||||
|
|
||||||
|
fun contains(key: String): Boolean = sharedPreferences.contains(key)
|
||||||
|
|
||||||
|
fun contains(resourceId: Int): Boolean = sharedPreferences.contains(MainApp.gs(resourceId))
|
||||||
|
|
||||||
|
fun remove(resourceID: Int) =
|
||||||
|
sharedPreferences.edit().remove(MainApp.gs(resourceID)).apply()
|
||||||
|
|
||||||
|
fun remove(key: String) =
|
||||||
|
sharedPreferences.edit().remove(key).apply()
|
||||||
|
|
||||||
|
fun getString(resourceID: Int, defaultValue: String): String =
|
||||||
|
sharedPreferences.getString(MainApp.gs(resourceID), defaultValue)
|
||||||
|
|
||||||
|
fun getString(key: String, defaultValue: String): String =
|
||||||
|
sharedPreferences.getString(key, defaultValue)
|
||||||
|
|
||||||
|
fun getBoolean(resourceID: Int, defaultValue: Boolean): Boolean {
|
||||||
|
return try {
|
||||||
|
sharedPreferences.getBoolean(MainApp.gs(resourceID), defaultValue)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
defaultValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getBoolean(key: String, defaultValue: Boolean): Boolean {
|
||||||
|
return try {
|
||||||
|
sharedPreferences.getBoolean(key, defaultValue)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
defaultValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getDouble(resourceID: Int, defaultValue: Double): Double =
|
||||||
|
SafeParse.stringToDouble(sharedPreferences.getString(MainApp.gs(resourceID), defaultValue.toString()))
|
||||||
|
|
||||||
|
fun getDouble(key: String, defaultValue: Double): Double =
|
||||||
|
SafeParse.stringToDouble(sharedPreferences.getString(key, defaultValue.toString()))
|
||||||
|
|
||||||
|
fun getInt(resourceID: Int, defaultValue: Int): Int {
|
||||||
|
return try {
|
||||||
|
sharedPreferences.getInt(MainApp.gs(resourceID), defaultValue)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
SafeParse.stringToInt(sharedPreferences.getString(MainApp.gs(resourceID), defaultValue.toString()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getInt(key: String, defaultValue: Int): Int {
|
||||||
|
return try {
|
||||||
|
sharedPreferences.getInt(key, defaultValue)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
SafeParse.stringToInt(sharedPreferences.getString(key, defaultValue.toString()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getLong(resourceID: Int, defaultValue: Long): Long {
|
||||||
|
return try {
|
||||||
|
sharedPreferences.getLong(MainApp.gs(resourceID), defaultValue)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
SafeParse.stringToLong(sharedPreferences.getString(MainApp.gs(resourceID), defaultValue.toString()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getLong(key: String, defaultValue: Long): Long {
|
||||||
|
return try {
|
||||||
|
sharedPreferences.getLong(key, defaultValue)
|
||||||
|
} catch (e: Exception) {
|
||||||
|
SafeParse.stringToLong(sharedPreferences.getString(key, defaultValue.toString()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun putBoolean(key: String, value: Boolean) = sharedPreferences.edit().putBoolean(key, value).apply()
|
||||||
|
|
||||||
|
fun putBoolean(resourceID: Int, value: Boolean) =
|
||||||
|
sharedPreferences.edit().putBoolean(MainApp.gs(resourceID), value).apply()
|
||||||
|
|
||||||
|
|
||||||
|
fun putDouble(key: String, value: Double) =
|
||||||
|
sharedPreferences.edit().putString(key, java.lang.Double.toString(value)).apply()
|
||||||
|
|
||||||
|
|
||||||
|
fun putLong(key: String, value: Long) =
|
||||||
|
sharedPreferences.edit().putLong(key, value).apply()
|
||||||
|
|
||||||
|
fun putLong(resourceID: Int, value: Long) =
|
||||||
|
sharedPreferences.edit().putLong(MainApp.gs(resourceID), value).apply()
|
||||||
|
|
||||||
|
fun putInt(key: String, value: Int) =
|
||||||
|
sharedPreferences.edit().putInt(key, value).apply()
|
||||||
|
|
||||||
|
fun putInt(resourceID: Int, value: Int) =
|
||||||
|
sharedPreferences.edit().putInt(MainApp.gs(resourceID), value).apply()
|
||||||
|
|
||||||
|
fun incInt(resourceID: Int) {
|
||||||
|
val value = getInt(resourceID, 0) + 1
|
||||||
|
sharedPreferences.edit().putInt(MainApp.gs(resourceID), value).apply()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun putString(resourceID: Int, value: String) =
|
||||||
|
sharedPreferences.edit().putString(MainApp.gs(resourceID), value).apply()
|
||||||
|
|
||||||
|
fun putString(key: String, value: String) =
|
||||||
|
sharedPreferences.edit().putString(key, value).apply()
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue