Skins
This commit is contained in:
parent
75251e3870
commit
027bc64f0f
12 changed files with 171 additions and 63 deletions
|
@ -67,7 +67,8 @@ import javax.inject.Singleton
|
|||
PreferencesModule::class,
|
||||
OverviewModule::class,
|
||||
DataClassesModule::class,
|
||||
SMSModule::class
|
||||
SMSModule::class,
|
||||
UIModule::class
|
||||
]
|
||||
)
|
||||
interface AppComponent : AndroidInjector<MainApp> {
|
||||
|
|
|
@ -6,63 +6,18 @@ import dagger.Binds
|
|||
import dagger.Lazy
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.android.ContributesAndroidInjector
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.Config
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.data.Profile
|
||||
import info.nightscout.androidaps.data.ProfileStore
|
||||
import info.nightscout.androidaps.data.PumpEnactResult
|
||||
import info.nightscout.androidaps.db.BgReading
|
||||
import info.nightscout.androidaps.db.CareportalEvent
|
||||
import info.nightscout.androidaps.db.ProfileSwitch
|
||||
import info.nightscout.androidaps.db.TemporaryBasal
|
||||
import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
||||
import info.nightscout.androidaps.interfaces.CommandQueueProvider
|
||||
import info.nightscout.androidaps.interfaces.PluginBase
|
||||
import info.nightscout.androidaps.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.logging.AAPSLoggerProduction
|
||||
import info.nightscout.androidaps.plugins.aps.loop.APSResult
|
||||
import info.nightscout.androidaps.plugins.aps.openAPSAMA.DetermineBasalResultAMA
|
||||
import info.nightscout.androidaps.plugins.aps.logger.LoggerCallback
|
||||
import info.nightscout.androidaps.plugins.aps.openAPSSMB.DetermineBasalAdapterSMBJS
|
||||
import info.nightscout.androidaps.plugins.aps.openAPSSMB.DetermineBasalResultSMB
|
||||
import info.nightscout.androidaps.plugins.configBuilder.PluginStore
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctionImplementation
|
||||
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.*
|
||||
import info.nightscout.androidaps.plugins.general.automation.AutomationEvent
|
||||
import info.nightscout.androidaps.plugins.general.automation.actions.*
|
||||
import info.nightscout.androidaps.plugins.general.automation.elements.*
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.*
|
||||
import info.nightscout.androidaps.plugins.general.overview.graphData.GraphData
|
||||
import info.nightscout.androidaps.plugins.general.maintenance.ImportExportPrefs
|
||||
import info.nightscout.androidaps.plugins.general.maintenance.formats.ClassicPrefsFormat
|
||||
import info.nightscout.androidaps.plugins.general.maintenance.formats.EncryptedPrefsFormat
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
|
||||
import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationWithAction
|
||||
import info.nightscout.androidaps.plugins.general.smsCommunicator.AuthRequest
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensData
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobOref1Thread
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobThread
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkCommunicationManager
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RFSpy
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLinkBLE
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.command.SendAndListen
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.command.SetPreamble
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RadioPacket
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RadioResponse
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.*
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.comm.MedtronicCommunicationManager
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.comm.ui.MedtronicUITask
|
||||
import info.nightscout.androidaps.plugins.treatments.Treatment
|
||||
import info.nightscout.androidaps.queue.CommandQueue
|
||||
import info.nightscout.androidaps.queue.commands.*
|
||||
import info.nightscout.androidaps.setupwizard.SWEventListener
|
||||
import info.nightscout.androidaps.setupwizard.SWScreen
|
||||
import info.nightscout.androidaps.setupwizard.elements.*
|
||||
import info.nightscout.androidaps.utils.CryptoUtil
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelperImplementation
|
||||
|
@ -70,11 +25,13 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP
|
|||
import info.nightscout.androidaps.utils.sharedPreferences.SPImplementation
|
||||
import info.nightscout.androidaps.utils.storage.FileStorage
|
||||
import info.nightscout.androidaps.utils.storage.Storage
|
||||
import info.nightscout.androidaps.utils.wizard.BolusWizard
|
||||
import info.nightscout.androidaps.utils.wizard.QuickWizardEntry
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module(includes = [AppModule.AppBindings::class, PluginsModule::class])
|
||||
@Module(includes = [
|
||||
AppModule.AppBindings::class,
|
||||
PluginsModule::class,
|
||||
SkinsModule::class
|
||||
])
|
||||
open class AppModule {
|
||||
|
||||
@Provides
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
package info.nightscout.androidaps.dependencyInjection
|
||||
|
||||
import dagger.Binds
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
import dagger.multibindings.IntKey
|
||||
import dagger.multibindings.IntoMap
|
||||
import info.nightscout.androidaps.skins.SkinButtonsOn
|
||||
import info.nightscout.androidaps.skins.SkinClassic
|
||||
import info.nightscout.androidaps.skins.SkinInterface
|
||||
import javax.inject.Qualifier
|
||||
|
||||
@Module
|
||||
open class SkinsModule {
|
||||
|
||||
@Provides
|
||||
@Skin
|
||||
@IntoMap
|
||||
@IntKey(0)
|
||||
fun bindsSkinClassic(skinClassic: SkinClassic): SkinInterface = skinClassic
|
||||
|
||||
@Provides
|
||||
@Skin
|
||||
@IntoMap
|
||||
@IntKey(10)
|
||||
fun bindsSkinButtonsOn(skinButtonsOn: SkinButtonsOn): SkinInterface = skinButtonsOn
|
||||
|
||||
@Qualifier
|
||||
annotation class Skin
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package info.nightscout.androidaps.dependencyInjection
|
||||
|
||||
import dagger.Module
|
||||
import dagger.android.ContributesAndroidInjector
|
||||
import info.nightscout.androidaps.plugins.aps.loop.APSResult
|
||||
import info.nightscout.androidaps.plugins.aps.openAPSAMA.DetermineBasalResultAMA
|
||||
import info.nightscout.androidaps.plugins.aps.openAPSSMB.DetermineBasalAdapterSMBJS
|
||||
import info.nightscout.androidaps.plugins.aps.openAPSSMB.DetermineBasalResultSMB
|
||||
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.*
|
||||
import info.nightscout.androidaps.plugins.general.overview.graphData.GraphData
|
||||
import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationWithAction
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensData
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobOref1Thread
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobThread
|
||||
import info.nightscout.androidaps.skins.SkinListPreference
|
||||
|
||||
@Module
|
||||
@Suppress("unused")
|
||||
abstract class UIModule {
|
||||
@ContributesAndroidInjector abstract fun skinListPreferenceInjector(): SkinListPreference
|
||||
}
|
|
@ -57,6 +57,7 @@ import info.nightscout.androidaps.plugins.source.DexcomPlugin
|
|||
import info.nightscout.androidaps.plugins.source.XdripPlugin
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
|
||||
import info.nightscout.androidaps.queue.CommandQueue
|
||||
import info.nightscout.androidaps.skins.SkinProvider
|
||||
import info.nightscout.androidaps.utils.*
|
||||
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
|
||||
import info.nightscout.androidaps.utils.buildHelper.BuildHelper
|
||||
|
@ -131,6 +132,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
@Inject lateinit var protectionCheck: ProtectionCheck
|
||||
@Inject lateinit var fabricPrivacy: FabricPrivacy
|
||||
@Inject lateinit var overviewMenus: OverviewMenus
|
||||
@Inject lateinit var skinProvider: SkinProvider
|
||||
|
||||
private val disposable = CompositeDisposable()
|
||||
|
||||
|
@ -161,19 +163,7 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
smallHeight = screenHeight <= Constants.SMALL_HEIGHT
|
||||
val landscape = screenHeight < screenWidth
|
||||
|
||||
return when {
|
||||
resourceHelper.gb(R.bool.isTablet) && Config.NSCLIENT ->
|
||||
inflater.inflate(R.layout.overview_fragment_nsclient_tablet, container, false)
|
||||
|
||||
Config.NSCLIENT ->
|
||||
inflater.inflate(R.layout.overview_fragment_nsclient, container, false)
|
||||
|
||||
smallHeight || landscape ->
|
||||
inflater.inflate(R.layout.overview_fragment_landscape, container, false)
|
||||
|
||||
else ->
|
||||
inflater.inflate(R.layout.overview_fragment, container, false)
|
||||
}
|
||||
return inflater.inflate(skinProvider.activeSkin().overviewLayout(landscape, resourceHelper.gb(R.bool.isTablet), smallHeight), container, false)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
package info.nightscout.androidaps.skins
|
||||
|
||||
import info.nightscout.androidaps.Config
|
||||
import info.nightscout.androidaps.R
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
class SkinButtonsOn @Inject constructor() : SkinInterface {
|
||||
|
||||
override val description: Int get() = R.string.buttonson_desrciption
|
||||
|
||||
override fun overviewLayout(isLandscape: Boolean, isTablet: Boolean, isSmallHeight: Boolean): Int =
|
||||
when {
|
||||
Config.NSCLIENT && isTablet -> R.layout.overview_fragment_nsclient_tablet
|
||||
Config.NSCLIENT -> R.layout.overview_fragment_nsclient
|
||||
else -> R.layout.overview_fragment
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package info.nightscout.androidaps.skins
|
||||
|
||||
import info.nightscout.androidaps.Config
|
||||
import info.nightscout.androidaps.R
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
class SkinClassic @Inject constructor(): SkinInterface {
|
||||
|
||||
override val description: Int get() = R.string.classic_desrciption
|
||||
|
||||
override fun overviewLayout(isLandscape: Boolean, isTablet: Boolean, isSmallHeight: Boolean): Int =
|
||||
when {
|
||||
Config.NSCLIENT && isTablet -> R.layout.overview_fragment_nsclient_tablet
|
||||
Config.NSCLIENT -> R.layout.overview_fragment_nsclient
|
||||
isSmallHeight || isLandscape -> R.layout.overview_fragment_landscape
|
||||
else -> R.layout.overview_fragment
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package info.nightscout.androidaps.skins
|
||||
|
||||
import androidx.annotation.LayoutRes
|
||||
import androidx.annotation.StringRes
|
||||
|
||||
interface SkinInterface {
|
||||
@get:StringRes val description : Int
|
||||
|
||||
@LayoutRes fun overviewLayout(isLandscape : Boolean, isTablet : Boolean, isSmallHeight : Boolean): Int
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package info.nightscout.androidaps.skins
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import androidx.preference.ListPreference
|
||||
import dagger.android.HasAndroidInjector
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
||||
class SkinListPreference(context: Context, attrs: AttributeSet?)
|
||||
: ListPreference(context, attrs) {
|
||||
|
||||
@Inject lateinit var skinProvider: SkinProvider
|
||||
|
||||
constructor(context: Context) : this(context, null)
|
||||
|
||||
init {
|
||||
(context.applicationContext as HasAndroidInjector).androidInjector().inject(this)
|
||||
val entries = Vector<CharSequence>()
|
||||
val values = Vector<CharSequence>()
|
||||
|
||||
for (skin in skinProvider.list) {
|
||||
values.addElement(skin.javaClass.name)
|
||||
entries.addElement(context.getString(skin.description))
|
||||
}
|
||||
entryValues = values.toTypedArray()
|
||||
setEntries(entries.toTypedArray())
|
||||
}
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
package info.nightscout.androidaps.skins
|
||||
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.dependencyInjection.SkinsModule
|
||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||
import okhttp3.internal.toImmutableMap
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Singleton
|
||||
class SkinProvider @Inject constructor(
|
||||
val sp: SP,
|
||||
@SkinsModule.Skin val allSkins: Map<@JvmSuppressWildcards Int, @JvmSuppressWildcards SkinInterface>
|
||||
) {
|
||||
|
||||
fun activeSkin(): SkinInterface =
|
||||
list.firstOrNull { it.javaClass.name == sp.getString(R.string.key_skin, "") }
|
||||
?: list.first()
|
||||
|
||||
val list: List<SkinInterface>
|
||||
get() = allSkins.toImmutableMap().toList().sortedBy { it.first }.map { it.second }
|
||||
}
|
|
@ -1827,4 +1827,8 @@
|
|||
<string name="key_statuslights_copy_ns" translatable="false">statuslights_copy_ns</string>
|
||||
<string name="copyexistingvalues">Copy NS settings (if exists)?</string>
|
||||
<string name="key_statuslights_overview_advanced" translatable="false">statuslights_overview_advanced</string>
|
||||
<string name="classic_desrciption">Original skin</string>
|
||||
<string name="buttonson_desrciption">Buttons are always displayed on bottom of screen</string>
|
||||
<string name="key_skin" translatable="false">skin</string>
|
||||
<string name="skin">Skin</string>
|
||||
</resources>
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
android:key="@string/key_language"
|
||||
android:title="@string/language" />
|
||||
|
||||
|
||||
<EditTextPreference
|
||||
android:inputType="textPersonName"
|
||||
android:key="@string/key_patient_name"
|
||||
|
@ -74,6 +73,10 @@
|
|||
|
||||
</PreferenceCategory>
|
||||
|
||||
<info.nightscout.androidaps.skins.SkinListPreference
|
||||
android:key="@string/key_skin"
|
||||
android:title="@string/skin" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
</androidx.preference.PreferenceScreen>
|
Loading…
Reference in a new issue