Merge branch 'dev' into objectives
This commit is contained in:
commit
52c6d762f5
202 changed files with 5662 additions and 1858 deletions
|
@ -120,7 +120,7 @@ android {
|
|||
targetSdkVersion 28
|
||||
multiDexEnabled true
|
||||
versionCode 1500
|
||||
version "2.7.2-dev"
|
||||
version "2.7.3-dev"
|
||||
buildConfigField "String", "VERSION", '"' + version + '"'
|
||||
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
|
||||
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'
|
||||
|
@ -135,6 +135,9 @@ android {
|
|||
kotlinOptions {
|
||||
jvmTarget = '1.8'
|
||||
}
|
||||
buildFeatures {
|
||||
viewBinding true
|
||||
}
|
||||
lintOptions {
|
||||
checkReleaseBuilds false
|
||||
disable 'MissingTranslation'
|
||||
|
@ -243,7 +246,7 @@ dependencies {
|
|||
|
||||
testImplementation "junit:junit:$junit_version"
|
||||
testImplementation 'org.json:json:20200518'
|
||||
testImplementation "org.mockito:mockito-core:2.8.47"
|
||||
testImplementation "org.mockito:mockito-core:${mockitoVersion}"
|
||||
testImplementation "org.powermock:powermock-api-mockito2:${powermockVersion}"
|
||||
testImplementation "org.powermock:powermock-module-junit4-rule-agent:${powermockVersion}"
|
||||
testImplementation "org.powermock:powermock-module-junit4-rule:${powermockVersion}"
|
||||
|
|
|
@ -95,6 +95,7 @@ class MainActivity : NoSplashAppCompatActivity() {
|
|||
|
||||
private lateinit var actionBarDrawerToggle: ActionBarDrawerToggle
|
||||
private var pluginPreferencesMenuItem: MenuItem? = null
|
||||
private var menu: Menu? = null
|
||||
|
||||
val callForPrefFile = registerForActivityResult(PrefsFileContract()) {
|
||||
it?.let {
|
||||
|
@ -122,6 +123,7 @@ class MainActivity : NoSplashAppCompatActivity() {
|
|||
override fun onPageScrollStateChanged(state: Int) {}
|
||||
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
|
||||
override fun onPageSelected(position: Int) {
|
||||
setPluginPreferenceMenuName()
|
||||
checkPluginPreferences(main_pager)
|
||||
}
|
||||
})
|
||||
|
@ -200,6 +202,12 @@ class MainActivity : NoSplashAppCompatActivity() {
|
|||
if (p.isEnabled() && p.hasFragment() && !p.isFragmentVisible() && !p.pluginDescription.neverVisible) {
|
||||
val menuItem = menu.add(p.name)
|
||||
menuItem.isCheckable = true
|
||||
if(p.menuIcon != -1) {
|
||||
menuItem.setIcon(p.menuIcon)
|
||||
} else
|
||||
{
|
||||
menuItem.setIcon(R.drawable.ic_settings)
|
||||
}
|
||||
menuItem.setOnMenuItemClickListener {
|
||||
val intent = Intent(this, SingleFragmentActivity::class.java)
|
||||
intent.putExtra("plugin", activePlugin.getPluginsList().indexOf(p))
|
||||
|
@ -266,9 +274,16 @@ class MainActivity : NoSplashAppCompatActivity() {
|
|||
return super.dispatchTouchEvent(event)
|
||||
}
|
||||
|
||||
private fun setPluginPreferenceMenuName() {
|
||||
val plugin = (main_pager.adapter as TabPageAdapter).getPluginAt(main_pager.currentItem)
|
||||
this.menu?.findItem(R.id.nav_plugin_preferences)?.title = resourceHelper.gs(R.string.nav_preferences_plugin, plugin.name)
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||
this.menu = menu
|
||||
menuInflater.inflate(R.menu.menu_main, menu)
|
||||
pluginPreferencesMenuItem = menu.findItem(R.id.nav_plugin_preferences)
|
||||
setPluginPreferenceMenuName()
|
||||
checkPluginPreferences(main_pager)
|
||||
return true
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ import info.nightscout.androidaps.plugins.general.maintenance.activities.PrefImp
|
|||
import info.nightscout.androidaps.plugins.general.openhumans.OpenHumansLoginActivity
|
||||
import info.nightscout.androidaps.plugins.general.overview.activities.QuickWizardListActivity
|
||||
import info.nightscout.androidaps.plugins.general.smsCommunicator.activities.SmsCommunicatorOtpActivity
|
||||
import info.nightscout.androidaps.plugins.pump.common.dialog.RileyLinkBLEScanActivity
|
||||
import info.nightscout.androidaps.plugins.pump.common.dialog.RileyLinkBLEConfigActivity
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.dialog.RileyLinkStatusActivity
|
||||
import info.nightscout.androidaps.plugins.pump.insight.activities.InsightAlertActivity
|
||||
import info.nightscout.androidaps.plugins.pump.insight.activities.InsightPairingActivity
|
||||
|
@ -33,7 +33,7 @@ abstract class ActivitiesModule {
|
|||
@ContributesAndroidInjector abstract fun contributesQuickWizardListActivity(): QuickWizardListActivity
|
||||
@ContributesAndroidInjector abstract fun contributesRequestDexcomPermissionActivity(): RequestDexcomPermissionActivity
|
||||
@ContributesAndroidInjector abstract fun contributesRileyLinkStatusActivity(): RileyLinkStatusActivity
|
||||
@ContributesAndroidInjector abstract fun contributesRileyLinkBLEScanActivity(): RileyLinkBLEScanActivity
|
||||
@ContributesAndroidInjector abstract fun contributesRileyLinkBLEConfigActivity(): RileyLinkBLEConfigActivity
|
||||
@ContributesAndroidInjector abstract fun contributesSetupWizardActivity(): SetupWizardActivity
|
||||
@ContributesAndroidInjector abstract fun contributesSingleFragmentActivity(): SingleFragmentActivity
|
||||
@ContributesAndroidInjector abstract fun contributesSmsCommunicatorOtpActivity(): SmsCommunicatorOtpActivity
|
||||
|
|
|
@ -39,6 +39,7 @@ abstract class AutomationModule {
|
|||
@ContributesAndroidInjector abstract fun actionLoopResumeInjector(): ActionLoopResume
|
||||
@ContributesAndroidInjector abstract fun actionLoopSuspendInjector(): ActionLoopSuspend
|
||||
@ContributesAndroidInjector abstract fun actionNotificationInjector(): ActionNotification
|
||||
@ContributesAndroidInjector abstract fun actionAlarmInjector(): ActionAlarm
|
||||
@ContributesAndroidInjector abstract fun actionProfileSwitchInjector(): ActionProfileSwitch
|
||||
@ContributesAndroidInjector abstract fun actionProfileSwitchPercentInjector(): ActionProfileSwitchPercent
|
||||
@ContributesAndroidInjector abstract fun actionSendSMSInjector(): ActionSendSMS
|
||||
|
|
|
@ -109,6 +109,7 @@ abstract class FragmentsModule {
|
|||
@ContributesAndroidInjector abstract fun contributesChooseActionDialog(): ChooseActionDialog
|
||||
@ContributesAndroidInjector abstract fun contributesChooseTriggerDialog(): ChooseTriggerDialog
|
||||
@ContributesAndroidInjector abstract fun contributesInsulinDialog(): InsulinDialog
|
||||
@ContributesAndroidInjector abstract fun contributesLoopDialog(): LoopDialog
|
||||
@ContributesAndroidInjector abstract fun contributesObjectivesExamDialog(): ObjectivesExamDialog
|
||||
@ContributesAndroidInjector abstract fun contributesProfileSwitchDialog(): ProfileSwitchDialog
|
||||
@ContributesAndroidInjector abstract fun contributesTempBasalDialog(): TempBasalDialog
|
||||
|
|
|
@ -0,0 +1,374 @@
|
|||
package info.nightscout.androidaps.dialogs
|
||||
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.Window
|
||||
import android.view.WindowManager
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import dagger.android.support.DaggerDialogFragment
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.activities.ErrorHelperActivity
|
||||
import info.nightscout.androidaps.databinding.DialogLoopBinding
|
||||
import info.nightscout.androidaps.events.EventPreferenceChange
|
||||
import info.nightscout.androidaps.events.EventRefreshOverview
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.androidaps.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
|
||||
import info.nightscout.androidaps.plugins.aps.loop.events.EventNewOpenLoopNotification
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
|
||||
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin
|
||||
import info.nightscout.androidaps.queue.Callback
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
import info.nightscout.androidaps.utils.ToastUtils
|
||||
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
|
||||
import info.nightscout.androidaps.utils.extensions.toVisibility
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.CompositeDisposable
|
||||
import javax.inject.Inject
|
||||
|
||||
class LoopDialog : DaggerDialogFragment() {
|
||||
|
||||
@Inject lateinit var aapsLogger: AAPSLogger
|
||||
@Inject lateinit var mainApp: MainApp
|
||||
@Inject lateinit var sp: SP
|
||||
@Inject lateinit var rxBus: RxBusWrapper
|
||||
@Inject lateinit var fabricPrivacy: FabricPrivacy
|
||||
@Inject lateinit var resourceHelper: ResourceHelper
|
||||
@Inject lateinit var profileFunction: ProfileFunction
|
||||
@Inject lateinit var loopPlugin: LoopPlugin
|
||||
@Inject lateinit var objectivesPlugin: ObjectivesPlugin
|
||||
@Inject lateinit var activePlugin: ActivePluginProvider
|
||||
@Inject lateinit var constraintChecker: ConstraintChecker
|
||||
@Inject lateinit var commandQueue: CommandQueueProvider
|
||||
@Inject lateinit var configBuilderPlugin: ConfigBuilderPlugin
|
||||
|
||||
private var disposable: CompositeDisposable = CompositeDisposable()
|
||||
|
||||
private var showOkCancel: Boolean = true
|
||||
private var _binding: DialogLoopBinding? = null
|
||||
|
||||
// This property is only valid between onCreateView and
|
||||
// onDestroyView.
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
}
|
||||
|
||||
override fun onSaveInstanceState(savedInstanceState: Bundle) {
|
||||
super.onSaveInstanceState(savedInstanceState)
|
||||
savedInstanceState.putInt("showOkCancel", if (showOkCancel) 1 else 0)
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?): View {
|
||||
// load data from bundle
|
||||
(savedInstanceState ?: arguments)?.let { bundle ->
|
||||
showOkCancel = bundle.getInt("showOkCancel", 1) == 1
|
||||
}
|
||||
dialog?.window?.requestFeature(Window.FEATURE_NO_TITLE)
|
||||
dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
|
||||
isCancelable = true
|
||||
dialog?.setCanceledOnTouchOutside(false)
|
||||
|
||||
_binding = DialogLoopBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
updateGUI("LoopDialogOnViewCreated")
|
||||
|
||||
binding.overviewCloseloop.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
|
||||
binding.overviewLgsloop.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
|
||||
binding.overviewOpenloop.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
|
||||
binding.overviewDisable.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
|
||||
binding.overviewEnable.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
|
||||
binding.overviewResume.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
|
||||
binding.overviewReconnect.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
|
||||
binding.overviewSuspend1h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
|
||||
binding.overviewSuspend2h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
|
||||
binding.overviewSuspend3h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
|
||||
binding.overviewSuspend10h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
|
||||
binding.overviewDisconnect15m.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
|
||||
binding.overviewDisconnect30m.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
|
||||
binding.overviewDisconnect1h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
|
||||
binding.overviewDisconnect2h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
|
||||
binding.overviewDisconnect3h.setOnClickListener { if (showOkCancel) onClickOkCancelEnabled(it) else onClick(it); dismiss() }
|
||||
|
||||
// cancel button
|
||||
binding.cancel.setOnClickListener { dismiss() }
|
||||
|
||||
// bus
|
||||
disposable.add(rxBus
|
||||
.toObservable(EventNewOpenLoopNotification::class.java)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({
|
||||
activity?.runOnUiThread { updateGUI("EventNewOpenLoopNotification") }
|
||||
}, fabricPrivacy::logException)
|
||||
)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
disposable.clear()
|
||||
_binding = null
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun updateGUI(from: String) {
|
||||
if (_binding == null) return
|
||||
aapsLogger.debug("UpdateGUI from $from")
|
||||
val pumpDescription: PumpDescription = activePlugin.activePump.pumpDescription
|
||||
val closedLoopAllowed = objectivesPlugin.isClosedLoopAllowed(Constraint(true))
|
||||
val lgsEnabled = objectivesPlugin.isLgsAllowed(Constraint(true))
|
||||
val apsMode = sp.getString(R.string.key_aps_mode, "open")
|
||||
if (profileFunction.isProfileValid("LoopDialogUpdateGUI")) {
|
||||
if (loopPlugin.isEnabled(PluginType.LOOP)) {
|
||||
when {
|
||||
closedLoopAllowed.value() -> {
|
||||
binding.overviewCloseloop.visibility = (apsMode != "closed").toVisibility()
|
||||
binding.overviewLgsloop.visibility = (apsMode != "lgs").toVisibility()
|
||||
binding.overviewOpenloop.visibility = (apsMode != "open").toVisibility()
|
||||
}
|
||||
|
||||
lgsEnabled.value() -> {
|
||||
binding.overviewCloseloop.visibility = View.GONE
|
||||
binding.overviewLgsloop.visibility = (apsMode != "lgs").toVisibility()
|
||||
binding.overviewOpenloop.visibility = (apsMode != "open").toVisibility()
|
||||
}
|
||||
|
||||
else -> {
|
||||
binding.overviewCloseloop.visibility = View.GONE
|
||||
binding.overviewLgsloop.visibility = View.GONE
|
||||
binding.overviewOpenloop.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
binding.overviewEnable.visibility = View.GONE
|
||||
binding.overviewDisable.visibility = View.VISIBLE
|
||||
if (!loopPlugin.isSuspended) {
|
||||
binding.overviewSuspendHeader.text = resourceHelper.gs(R.string.suspendloop)
|
||||
binding.overviewResume.visibility = View.GONE
|
||||
binding.overviewSuspendButtons.visibility = View.VISIBLE
|
||||
binding.overviewSuspend.visibility = View.VISIBLE
|
||||
} else {
|
||||
if (!loopPlugin.isDisconnected) {
|
||||
binding.overviewSuspendHeader.text = resourceHelper.gs(R.string.resumeloop)
|
||||
binding.overviewResume.visibility = View.VISIBLE
|
||||
binding.overviewSuspendButtons.visibility = View.GONE
|
||||
binding.overviewSuspend.visibility = View.VISIBLE
|
||||
} else
|
||||
binding.overviewSuspend.visibility = View.GONE
|
||||
}
|
||||
} else {
|
||||
binding.overviewEnable.visibility = View.VISIBLE
|
||||
binding.overviewDisable.visibility = View.GONE
|
||||
binding.overviewSuspend.visibility = View.GONE
|
||||
}
|
||||
if (!loopPlugin.isDisconnected) {
|
||||
binding.overviewPumpHeader.text = resourceHelper.gs(R.string.disconnectpump)
|
||||
binding.overviewDisconnect15m.visibility = pumpDescription.tempDurationStep15mAllowed.toVisibility()
|
||||
binding.overviewDisconnect30m.visibility = pumpDescription.tempDurationStep30mAllowed.toVisibility()
|
||||
binding.overviewDisconnectButtons.visibility = View.VISIBLE
|
||||
binding.overviewReconnect.visibility = View.GONE
|
||||
} else {
|
||||
binding.overviewPumpHeader.text = resourceHelper.gs(R.string.reconnect)
|
||||
binding.overviewDisconnectButtons.visibility = View.GONE
|
||||
binding.overviewReconnect.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
val profile = profileFunction.getProfile()
|
||||
val profileStore = activePlugin.activeProfileInterface.profile
|
||||
|
||||
if (profile == null || profileStore == null) {
|
||||
ToastUtils.showToastInUiThread(mainApp, resourceHelper.gs(R.string.noprofile))
|
||||
dismiss()
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun onClickOkCancelEnabled(v: View): Boolean {
|
||||
var description = ""
|
||||
when (v.id) {
|
||||
R.id.overview_closeloop -> description = resourceHelper.gs(R.string.closedloop)
|
||||
R.id.overview_lgsloop -> description = resourceHelper.gs(R.string.lowglucosesuspend)
|
||||
R.id.overview_openloop -> description = resourceHelper.gs(R.string.openloop)
|
||||
R.id.overview_disable -> description = resourceHelper.gs(R.string.disableloop)
|
||||
R.id.overview_enable -> description = resourceHelper.gs(R.string.enableloop)
|
||||
R.id.overview_resume -> description = resourceHelper.gs(R.string.resume)
|
||||
R.id.overview_reconnect -> description = resourceHelper.gs(R.string.reconnect)
|
||||
R.id.overview_suspend_1h -> description = resourceHelper.gs(R.string.suspendloopfor1h)
|
||||
R.id.overview_suspend_2h -> description = resourceHelper.gs(R.string.suspendloopfor2h)
|
||||
R.id.overview_suspend_3h -> description = resourceHelper.gs(R.string.suspendloopfor3h)
|
||||
R.id.overview_suspend_10h -> description = resourceHelper.gs(R.string.suspendloopfor10h)
|
||||
R.id.overview_disconnect_15m -> description = resourceHelper.gs(R.string.disconnectpumpfor15m)
|
||||
R.id.overview_disconnect_30m -> description = resourceHelper.gs(R.string.disconnectpumpfor30m)
|
||||
R.id.overview_disconnect_1h -> description = resourceHelper.gs(R.string.disconnectpumpfor1h)
|
||||
R.id.overview_disconnect_2h -> description = resourceHelper.gs(R.string.disconnectpumpfor2h)
|
||||
R.id.overview_disconnect_3h -> description = resourceHelper.gs(R.string.disconnectpumpfor3h)
|
||||
}
|
||||
activity?.let { activity ->
|
||||
OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.confirm), description, Runnable {
|
||||
onClick(v)
|
||||
})
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
fun onClick(v: View): Boolean {
|
||||
val profile = profileFunction.getProfile() ?: return true
|
||||
when (v.id) {
|
||||
R.id.overview_closeloop -> {
|
||||
sp.putString(R.string.key_aps_mode, "closed")
|
||||
rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.closedloop)))
|
||||
return true
|
||||
}
|
||||
|
||||
R.id.overview_lgsloop -> {
|
||||
sp.putString(R.string.key_aps_mode, "lgs")
|
||||
rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.lowglucosesuspend)))
|
||||
return true
|
||||
}
|
||||
|
||||
R.id.overview_openloop -> {
|
||||
sp.putString(R.string.key_aps_mode, "open")
|
||||
rxBus.send(EventPreferenceChange(resourceHelper.gs(R.string.lowglucosesuspend)))
|
||||
return true
|
||||
}
|
||||
|
||||
R.id.overview_disable -> {
|
||||
aapsLogger.debug("USER ENTRY: LOOP DISABLED")
|
||||
loopPlugin.setPluginEnabled(PluginType.LOOP, false)
|
||||
loopPlugin.setFragmentVisible(PluginType.LOOP, false)
|
||||
configBuilderPlugin.storeSettings("DisablingLoop")
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
commandQueue.cancelTempBasal(true, object : Callback() {
|
||||
override fun run() {
|
||||
if (!result.success) {
|
||||
ToastUtils.showToastInUiThread(context, resourceHelper.gs(R.string.tempbasaldeliveryerror))
|
||||
}
|
||||
}
|
||||
})
|
||||
loopPlugin.createOfflineEvent(24 * 60) // upload 24h, we don't know real duration
|
||||
return true
|
||||
}
|
||||
|
||||
R.id.overview_enable -> {
|
||||
aapsLogger.debug("USER ENTRY: LOOP ENABLED")
|
||||
loopPlugin.setPluginEnabled(PluginType.LOOP, true)
|
||||
loopPlugin.setFragmentVisible(PluginType.LOOP, true)
|
||||
configBuilderPlugin.storeSettings("EnablingLoop")
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
loopPlugin.createOfflineEvent(0)
|
||||
return true
|
||||
}
|
||||
|
||||
R.id.overview_resume, R.id.overview_reconnect -> {
|
||||
aapsLogger.debug("USER ENTRY: RESUME")
|
||||
loopPlugin.suspendTo(0L)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
commandQueue.cancelTempBasal(true, object : Callback() {
|
||||
override fun run() {
|
||||
if (!result.success) {
|
||||
val i = Intent(context, ErrorHelperActivity::class.java)
|
||||
i.putExtra("soundid", R.raw.boluserror)
|
||||
i.putExtra("status", result.comment)
|
||||
i.putExtra("title", resourceHelper.gs(R.string.tempbasaldeliveryerror))
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
context?.startActivity(i)
|
||||
}
|
||||
}
|
||||
})
|
||||
sp.putBoolean(R.string.key_objectiveusereconnect, true)
|
||||
loopPlugin.createOfflineEvent(0)
|
||||
return true
|
||||
}
|
||||
|
||||
R.id.overview_suspend_1h -> {
|
||||
aapsLogger.debug("USER ENTRY: SUSPEND 1h")
|
||||
loopPlugin.suspendLoop(60)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
R.id.overview_suspend_2h -> {
|
||||
aapsLogger.debug("USER ENTRY: SUSPEND 2h")
|
||||
loopPlugin.suspendLoop(120)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
R.id.overview_suspend_3h -> {
|
||||
aapsLogger.debug("USER ENTRY: SUSPEND 3h")
|
||||
loopPlugin.suspendLoop(180)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
R.id.overview_suspend_10h -> {
|
||||
aapsLogger.debug("USER ENTRY: SUSPEND 10h")
|
||||
loopPlugin.suspendLoop(600)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
R.id.overview_disconnect_15m -> {
|
||||
aapsLogger.debug("USER ENTRY: DISCONNECT 15m")
|
||||
loopPlugin.disconnectPump(15, profile)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
R.id.overview_disconnect_30m -> {
|
||||
aapsLogger.debug("USER ENTRY: DISCONNECT 30m")
|
||||
loopPlugin.disconnectPump(30, profile)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
R.id.overview_disconnect_1h -> {
|
||||
aapsLogger.debug("USER ENTRY: DISCONNECT 1h")
|
||||
loopPlugin.disconnectPump(60, profile)
|
||||
sp.putBoolean(R.string.key_objectiveusedisconnect, true)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
R.id.overview_disconnect_2h -> {
|
||||
aapsLogger.debug("USER ENTRY: DISCONNECT 2h")
|
||||
loopPlugin.disconnectPump(120, profile)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
R.id.overview_disconnect_3h -> {
|
||||
aapsLogger.debug("USER ENTRY: DISCONNECT 3h")
|
||||
loopPlugin.disconnectPump(180, profile)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
override fun show(manager: FragmentManager, tag: String?) {
|
||||
try {
|
||||
manager.beginTransaction().let {
|
||||
it.add(this, tag)
|
||||
it.commitAllowingStateLoss()
|
||||
}
|
||||
} catch (e: IllegalStateException) {
|
||||
aapsLogger.debug(e.localizedMessage)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -13,6 +13,7 @@ import info.nightscout.androidaps.R
|
|||
import info.nightscout.androidaps.data.Profile
|
||||
import info.nightscout.androidaps.db.Source
|
||||
import info.nightscout.androidaps.db.TempTarget
|
||||
import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
|
||||
|
@ -32,6 +33,9 @@ class TempTargetDialog : DialogFragmentWithDate() {
|
|||
@Inject lateinit var profileFunction: ProfileFunction
|
||||
@Inject lateinit var defaultValueHelper: DefaultValueHelper
|
||||
@Inject lateinit var treatmentsPlugin: TreatmentsPlugin
|
||||
@Inject lateinit var activePlugin: ActivePluginProvider
|
||||
|
||||
lateinit var reasonList: List<String>
|
||||
|
||||
override fun onSaveInstanceState(savedInstanceState: Bundle) {
|
||||
super.onSaveInstanceState(savedInstanceState)
|
||||
|
@ -64,52 +68,64 @@ class TempTargetDialog : DialogFragmentWithDate() {
|
|||
|
||||
val units = profileFunction.getUnits()
|
||||
overview_temptarget_units.text = if (units == Constants.MMOL) resourceHelper.gs(R.string.mmol) else resourceHelper.gs(R.string.mgdl)
|
||||
|
||||
// temp target
|
||||
context?.let { context ->
|
||||
val reasonList: List<String> = Lists.newArrayList(
|
||||
if (activePlugin.activeTreatments.tempTargetFromHistory != null)
|
||||
overview_temptarget_cancel?.visibility = View.VISIBLE
|
||||
else
|
||||
overview_temptarget_cancel?.visibility = View.GONE
|
||||
|
||||
reasonList = Lists.newArrayList(
|
||||
resourceHelper.gs(R.string.manual),
|
||||
resourceHelper.gs(R.string.cancel),
|
||||
resourceHelper.gs(R.string.eatingsoon),
|
||||
resourceHelper.gs(R.string.activity),
|
||||
resourceHelper.gs(R.string.hypo)
|
||||
)
|
||||
val adapterReason = ArrayAdapter(context, R.layout.spinner_centered, reasonList)
|
||||
overview_temptarget_reason.adapter = adapterReason
|
||||
overview_temptarget_reason.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
||||
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
|
||||
val defaultDuration: Double
|
||||
val defaultTarget: Double
|
||||
when (reasonList[position]) {
|
||||
resourceHelper.gs(R.string.eatingsoon) -> {
|
||||
defaultDuration = defaultValueHelper.determineEatingSoonTTDuration().toDouble()
|
||||
defaultTarget = defaultValueHelper.determineEatingSoonTT()
|
||||
|
||||
overview_temptarget_cancel?.setOnClickListener { shortClick(it) }
|
||||
overview_temptarget_eating_soon?.setOnClickListener { shortClick(it) }
|
||||
overview_temptarget_activity?.setOnClickListener { shortClick(it) }
|
||||
overview_temptarget_hypo?.setOnClickListener { shortClick(it) }
|
||||
|
||||
overview_temptarget_eating_soon?.setOnLongClickListener {
|
||||
longClick(it)
|
||||
return@setOnLongClickListener true
|
||||
}
|
||||
overview_temptarget_activity?.setOnLongClickListener {
|
||||
longClick(it)
|
||||
return@setOnLongClickListener true
|
||||
}
|
||||
overview_temptarget_hypo?.setOnLongClickListener {
|
||||
longClick(it)
|
||||
return@setOnLongClickListener true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.activity) -> {
|
||||
defaultDuration = defaultValueHelper.determineActivityTTDuration().toDouble()
|
||||
defaultTarget = defaultValueHelper.determineActivityTT()
|
||||
private fun shortClick(v:View){
|
||||
v.performLongClick()
|
||||
if (submit()) dismiss()
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.hypo) -> {
|
||||
defaultDuration = defaultValueHelper.determineHypoTTDuration().toDouble()
|
||||
defaultTarget = defaultValueHelper.determineHypoTT()
|
||||
private fun longClick(v:View) {
|
||||
when (v.id) {
|
||||
R.id.overview_temptarget_eating_soon -> {
|
||||
overview_temptarget_temptarget.value = defaultValueHelper.determineEatingSoonTT()
|
||||
overview_temptarget_duration.value = defaultValueHelper.determineEatingSoonTTDuration().toDouble()
|
||||
overview_temptarget_reason.setSelection(reasonList.indexOf( resourceHelper.gs(R.string.eatingsoon)))
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.cancel) -> {
|
||||
defaultDuration = 0.0
|
||||
defaultTarget = 0.0
|
||||
R.id.overview_temptarget_activity -> {
|
||||
overview_temptarget_temptarget.value = defaultValueHelper.determineActivityTT()
|
||||
overview_temptarget_duration.value = defaultValueHelper.determineActivityTTDuration().toDouble()
|
||||
overview_temptarget_reason.setSelection(reasonList.indexOf(resourceHelper.gs(R.string.activity)))
|
||||
}
|
||||
|
||||
else -> {
|
||||
defaultDuration = overview_temptarget_duration.value
|
||||
defaultTarget = overview_temptarget_temptarget.value
|
||||
}
|
||||
}
|
||||
overview_temptarget_temptarget.value = defaultTarget
|
||||
overview_temptarget_duration.value = defaultDuration
|
||||
}
|
||||
|
||||
override fun onNothingSelected(parent: AdapterView<*>?) {}
|
||||
R.id.overview_temptarget_hypo -> {
|
||||
overview_temptarget_temptarget.value = defaultValueHelper.determineHypoTT()
|
||||
overview_temptarget_duration.value = defaultValueHelper.determineHypoTTDuration().toDouble()
|
||||
overview_temptarget_reason.setSelection(reasonList.indexOf(resourceHelper.gs(R.string.hypo)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ import info.nightscout.androidaps.Constants
|
|||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.data.Profile
|
||||
import info.nightscout.androidaps.databinding.DialogWizardBinding
|
||||
import info.nightscout.androidaps.db.BgReading
|
||||
import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
||||
import info.nightscout.androidaps.interfaces.Constraint
|
||||
|
@ -39,7 +40,6 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP
|
|||
import info.nightscout.androidaps.utils.wizard.BolusWizard
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.CompositeDisposable
|
||||
import kotlinx.android.synthetic.main.dialog_wizard.*
|
||||
import java.text.DecimalFormat
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
@ -72,8 +72,23 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
}
|
||||
}
|
||||
|
||||
private val timeTextWatcher = object : TextWatcher {
|
||||
override fun afterTextChanged(s: Editable) {}
|
||||
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
|
||||
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
|
||||
calculateInsulin()
|
||||
binding.alarm.isChecked = binding.carbTimeInput.value > 0
|
||||
}
|
||||
}
|
||||
|
||||
private var disposable: CompositeDisposable = CompositeDisposable()
|
||||
|
||||
private var _binding: DialogWizardBinding? = null
|
||||
|
||||
// This property is only valid between onCreateView and
|
||||
// onDestroyView.
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override fun onStart() {
|
||||
super.onStart()
|
||||
dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
|
@ -81,49 +96,50 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
|
||||
override fun onSaveInstanceState(savedInstanceState: Bundle) {
|
||||
super.onSaveInstanceState(savedInstanceState)
|
||||
savedInstanceState.putDouble("treatments_wizard_bg_input", treatments_wizard_bg_input.value)
|
||||
savedInstanceState.putDouble("treatments_wizard_carbs_input", treatments_wizard_carbs_input.value)
|
||||
savedInstanceState.putDouble("treatments_wizard_correction_input", treatments_wizard_correction_input.value)
|
||||
savedInstanceState.putDouble("treatments_wizard_carb_time_input", treatments_wizard_carb_time_input.value)
|
||||
savedInstanceState.putDouble("bg_input", binding.bgInput.value)
|
||||
savedInstanceState.putDouble("carbs_input", binding.carbsInput.value)
|
||||
savedInstanceState.putDouble("correction_input", binding.correctionInput.value)
|
||||
savedInstanceState.putDouble("carb_time_input", binding.carbTimeInput.value)
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?): View? {
|
||||
savedInstanceState: Bundle?): View {
|
||||
dialog?.window?.requestFeature(Window.FEATURE_NO_TITLE)
|
||||
dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
|
||||
isCancelable = true
|
||||
dialog?.setCanceledOnTouchOutside(false)
|
||||
|
||||
return inflater.inflate(R.layout.dialog_wizard, container, false)
|
||||
_binding = DialogWizardBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
loadCheckedStates()
|
||||
processCobCheckBox()
|
||||
treatments_wizard_sbcheckbox.visibility = sp.getBoolean(R.string.key_usesuperbolus, false).toVisibility()
|
||||
treatments_wizard_notes_layout.visibility = sp.getBoolean(R.string.key_show_notes_entry_dialogs, false).toVisibility()
|
||||
binding.sbcheckbox.visibility = sp.getBoolean(R.string.key_usesuperbolus, false).toVisibility()
|
||||
binding.notesLayout.visibility = sp.getBoolean(R.string.key_show_notes_entry_dialogs, false).toVisibility()
|
||||
|
||||
val maxCarbs = constraintChecker.getMaxCarbsAllowed().value()
|
||||
val maxCorrection = constraintChecker.getMaxBolusAllowed().value()
|
||||
|
||||
if (profileFunction.getUnits() == Constants.MGDL)
|
||||
treatments_wizard_bg_input.setParams(savedInstanceState?.getDouble("treatments_wizard_bg_input")
|
||||
?: 0.0, 0.0, 500.0, 1.0, DecimalFormat("0"), false, ok, textWatcher)
|
||||
binding.bgInput.setParams(savedInstanceState?.getDouble("bg_input")
|
||||
?: 0.0, 0.0, 500.0, 1.0, DecimalFormat("0"), false, binding.ok, timeTextWatcher)
|
||||
else
|
||||
treatments_wizard_bg_input.setParams(savedInstanceState?.getDouble("treatments_wizard_bg_input")
|
||||
?: 0.0, 0.0, 30.0, 0.1, DecimalFormat("0.0"), false, ok, textWatcher)
|
||||
treatments_wizard_carbs_input.setParams(savedInstanceState?.getDouble("treatments_wizard_carbs_input")
|
||||
?: 0.0, 0.0, maxCarbs.toDouble(), 1.0, DecimalFormat("0"), false, ok, textWatcher)
|
||||
binding.bgInput.setParams(savedInstanceState?.getDouble("bg_input")
|
||||
?: 0.0, 0.0, 30.0, 0.1, DecimalFormat("0.0"), false, binding.ok, textWatcher)
|
||||
binding.carbsInput.setParams(savedInstanceState?.getDouble("carbs_input")
|
||||
?: 0.0, 0.0, maxCarbs.toDouble(), 1.0, DecimalFormat("0"), false, binding.ok, textWatcher)
|
||||
val bolusStep = activePlugin.activePump.pumpDescription.bolusStep
|
||||
treatments_wizard_correction_input.setParams(savedInstanceState?.getDouble("treatments_wizard_correction_input")
|
||||
?: 0.0, -maxCorrection, maxCorrection, bolusStep, DecimalFormatter.pumpSupportedBolusFormat(activePlugin.activePump), false, ok, textWatcher)
|
||||
treatments_wizard_carb_time_input.setParams(savedInstanceState?.getDouble("treatments_wizard_carb_time_input")
|
||||
?: 0.0, -60.0, 60.0, 5.0, DecimalFormat("0"), false, ok, textWatcher)
|
||||
binding.correctionInput.setParams(savedInstanceState?.getDouble("correction_input")
|
||||
?: 0.0, -maxCorrection, maxCorrection, bolusStep, DecimalFormatter.pumpSupportedBolusFormat(activePlugin.activePump), false, binding.ok, textWatcher)
|
||||
binding.carbTimeInput.setParams(savedInstanceState?.getDouble("carb_time_input")
|
||||
?: 0.0, -60.0, 60.0, 5.0, DecimalFormat("0"), false, binding.ok, timeTextWatcher)
|
||||
initDialog()
|
||||
|
||||
treatments_wizard_percent_used.text = resourceHelper.gs(R.string.format_percent, sp.getInt(R.string.key_boluswizard_percentage, 100))
|
||||
binding.percentUsed.text = resourceHelper.gs(R.string.format_percent, sp.getInt(R.string.key_boluswizard_percentage, 100))
|
||||
// ok button
|
||||
ok.setOnClickListener {
|
||||
binding.ok.setOnClickListener {
|
||||
if (okClicked) {
|
||||
aapsLogger.debug(LTag.UI, "guarding: ok already clicked")
|
||||
} else {
|
||||
|
@ -136,37 +152,37 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
dismiss()
|
||||
}
|
||||
// cancel button
|
||||
cancel.setOnClickListener { dismiss() }
|
||||
binding.cancel.setOnClickListener { dismiss() }
|
||||
// checkboxes
|
||||
treatments_wizard_bgcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
|
||||
treatments_wizard_ttcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
|
||||
treatments_wizard_cobcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
|
||||
treatments_wizard_basaliobcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
|
||||
treatments_wizard_bolusiobcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
|
||||
treatments_wizard_bgtrendcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
|
||||
treatments_wizard_sbcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
|
||||
binding.bgcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
|
||||
binding.ttcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
|
||||
binding.cobcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
|
||||
binding.basaliobcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
|
||||
binding.bolusiobcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
|
||||
binding.bgtrendcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
|
||||
binding.sbcheckbox.setOnCheckedChangeListener(::onCheckedChanged)
|
||||
|
||||
val showCalc = sp.getBoolean(resourceHelper.gs(R.string.key_wizard_calculation_visible), false)
|
||||
treatments_wizard_delimiter.visibility = showCalc.toVisibility()
|
||||
treatments_wizard_resulttable.visibility = showCalc.toVisibility()
|
||||
treatments_wizard_calculationcheckbox.isChecked = showCalc
|
||||
treatments_wizard_calculationcheckbox.setOnCheckedChangeListener { _, isChecked ->
|
||||
val showCalc = sp.getBoolean(R.string.key_wizard_calculation_visible, false)
|
||||
binding.delimiter.visibility = showCalc.toVisibility()
|
||||
binding.resulttable.visibility = showCalc.toVisibility()
|
||||
binding.calculationcheckbox.isChecked = showCalc
|
||||
binding.calculationcheckbox.setOnCheckedChangeListener { _, isChecked ->
|
||||
run {
|
||||
sp.putBoolean(resourceHelper.gs(R.string.key_wizard_calculation_visible), isChecked)
|
||||
treatments_wizard_delimiter.visibility = isChecked.toVisibility()
|
||||
treatments_wizard_resulttable.visibility = isChecked.toVisibility()
|
||||
binding.delimiter.visibility = isChecked.toVisibility()
|
||||
binding.resulttable.visibility = isChecked.toVisibility()
|
||||
}
|
||||
}
|
||||
// profile spinner
|
||||
treatments_wizard_profile.onItemSelectedListener = object : OnItemSelectedListener {
|
||||
binding.profile.onItemSelectedListener = object : OnItemSelectedListener {
|
||||
override fun onNothingSelected(parent: AdapterView<*>?) {
|
||||
ToastUtils.showToastInUiThread(mainApp, resourceHelper.gs(R.string.noprofileselected))
|
||||
ok.visibility = View.GONE
|
||||
binding.ok.visibility = View.GONE
|
||||
}
|
||||
|
||||
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
|
||||
calculateInsulin()
|
||||
ok.visibility = View.VISIBLE
|
||||
binding.ok.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
// bus
|
||||
|
@ -183,36 +199,37 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
disposable.clear()
|
||||
_binding = null
|
||||
}
|
||||
|
||||
private fun onCheckedChanged(buttonView: CompoundButton, @Suppress("UNUSED_PARAMETER") state: Boolean) {
|
||||
saveCheckedStates()
|
||||
treatments_wizard_ttcheckbox.isEnabled = treatments_wizard_bgcheckbox.isChecked && treatmentsPlugin.tempTargetFromHistory != null
|
||||
if (buttonView.id == treatments_wizard_cobcheckbox.id)
|
||||
binding.ttcheckbox.isEnabled = binding.bgcheckbox.isChecked && treatmentsPlugin.tempTargetFromHistory != null
|
||||
if (buttonView.id == binding.cobcheckbox.id)
|
||||
processCobCheckBox()
|
||||
calculateInsulin()
|
||||
}
|
||||
|
||||
private fun processCobCheckBox() {
|
||||
if (treatments_wizard_cobcheckbox.isChecked) {
|
||||
treatments_wizard_bolusiobcheckbox.isEnabled = false
|
||||
treatments_wizard_basaliobcheckbox.isEnabled = false
|
||||
treatments_wizard_bolusiobcheckbox.isChecked = true
|
||||
treatments_wizard_basaliobcheckbox.isChecked = true
|
||||
if (binding.cobcheckbox.isChecked) {
|
||||
binding.bolusiobcheckbox.isEnabled = false
|
||||
binding.basaliobcheckbox.isEnabled = false
|
||||
binding.bolusiobcheckbox.isChecked = true
|
||||
binding.basaliobcheckbox.isChecked = true
|
||||
} else {
|
||||
treatments_wizard_bolusiobcheckbox.isEnabled = true
|
||||
treatments_wizard_basaliobcheckbox.isEnabled = true
|
||||
binding.bolusiobcheckbox.isEnabled = true
|
||||
binding.basaliobcheckbox.isEnabled = true
|
||||
}
|
||||
}
|
||||
|
||||
private fun saveCheckedStates() {
|
||||
sp.putBoolean(resourceHelper.gs(R.string.key_wizard_include_cob), treatments_wizard_cobcheckbox.isChecked)
|
||||
sp.putBoolean(resourceHelper.gs(R.string.key_wizard_include_trend_bg), treatments_wizard_bgtrendcheckbox.isChecked)
|
||||
sp.putBoolean(R.string.key_wizard_include_cob, binding.cobcheckbox.isChecked)
|
||||
sp.putBoolean(R.string.key_wizard_include_trend_bg, binding.bgtrendcheckbox.isChecked)
|
||||
}
|
||||
|
||||
private fun loadCheckedStates() {
|
||||
treatments_wizard_bgtrendcheckbox.isChecked = sp.getBoolean(resourceHelper.gs(R.string.key_wizard_include_trend_bg), false)
|
||||
treatments_wizard_cobcheckbox.isChecked = sp.getBoolean(resourceHelper.gs(R.string.key_wizard_include_cob), false)
|
||||
binding.bgtrendcheckbox.isChecked = sp.getBoolean(R.string.key_wizard_include_trend_bg, false)
|
||||
binding.cobcheckbox.isChecked = sp.getBoolean(R.string.key_wizard_include_cob, false)
|
||||
}
|
||||
|
||||
private fun initDialog() {
|
||||
|
@ -230,25 +247,25 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
profileList.add(0, resourceHelper.gs(R.string.active))
|
||||
context?.let { context ->
|
||||
val adapter = ArrayAdapter(context, R.layout.spinner_centered, profileList)
|
||||
treatments_wizard_profile.adapter = adapter
|
||||
binding.profile.adapter = adapter
|
||||
} ?: return
|
||||
|
||||
val units = profileFunction.getUnits()
|
||||
treatments_wizard_bgunits.text = units
|
||||
binding.bgunits.text = units
|
||||
if (units == Constants.MGDL)
|
||||
treatments_wizard_bg_input.setStep(1.0)
|
||||
binding.bgInput.setStep(1.0)
|
||||
else
|
||||
treatments_wizard_bg_input.setStep(0.1)
|
||||
binding.bgInput.setStep(0.1)
|
||||
|
||||
// Set BG if not old
|
||||
val lastBg = iobCobCalculatorPlugin.actualBg()
|
||||
|
||||
if (lastBg != null) {
|
||||
treatments_wizard_bg_input.value = lastBg.valueToUnits(units)
|
||||
binding.bgInput.value = lastBg.valueToUnits(units)
|
||||
} else {
|
||||
treatments_wizard_bg_input.value = 0.0
|
||||
binding.bgInput.value = 0.0
|
||||
}
|
||||
treatments_wizard_ttcheckbox.isEnabled = treatmentsPlugin.tempTargetFromHistory != null
|
||||
binding.ttcheckbox.isEnabled = treatmentsPlugin.tempTargetFromHistory != null
|
||||
|
||||
// IOB calculation
|
||||
treatmentsPlugin.updateTotalIOBTreatments()
|
||||
|
@ -256,19 +273,19 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
treatmentsPlugin.updateTotalIOBTempBasals()
|
||||
val basalIob = treatmentsPlugin.lastCalculationTempBasals.round()
|
||||
|
||||
treatments_wizard_bolusiobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, -bolusIob.iob)
|
||||
treatments_wizard_basaliobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, -basalIob.basaliob)
|
||||
binding.bolusiobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, -bolusIob.iob)
|
||||
binding.basaliobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, -basalIob.basaliob)
|
||||
|
||||
calculateInsulin()
|
||||
|
||||
treatments_wizard_percent_used.visibility = (sp.getInt(R.string.key_boluswizard_percentage, 100) != 100).toVisibility()
|
||||
binding.percentUsed.visibility = (sp.getInt(R.string.key_boluswizard_percentage, 100) != 100).toVisibility()
|
||||
}
|
||||
|
||||
private fun calculateInsulin() {
|
||||
val profileStore = activePlugin.activeProfileInterface.profile
|
||||
if (treatments_wizard_profile?.selectedItem == null || profileStore == null)
|
||||
if (binding.profile.selectedItem == null || profileStore == null)
|
||||
return // not initialized yet
|
||||
var profileName = treatments_wizard_profile.selectedItem.toString()
|
||||
var profileName = binding.profile.selectedItem.toString()
|
||||
val specificProfile: Profile?
|
||||
if (profileName == resourceHelper.gs(R.string.active)) {
|
||||
specificProfile = profileFunction.getProfile()
|
||||
|
@ -279,82 +296,83 @@ class WizardDialog : DaggerDialogFragment() {
|
|||
if (specificProfile == null) return
|
||||
|
||||
// Entered values
|
||||
var bg = SafeParse.stringToDouble(treatments_wizard_bg_input.text)
|
||||
val carbs = SafeParse.stringToInt(treatments_wizard_carbs_input.text)
|
||||
val correction = SafeParse.stringToDouble(treatments_wizard_correction_input.text)
|
||||
var bg = SafeParse.stringToDouble(binding.bgInput.text)
|
||||
val carbs = SafeParse.stringToInt(binding.carbsInput.text)
|
||||
val correction = SafeParse.stringToDouble(binding.correctionInput.text)
|
||||
val carbsAfterConstraint = constraintChecker.applyCarbsConstraints(Constraint(carbs)).value()
|
||||
if (abs(carbs - carbsAfterConstraint) > 0.01) {
|
||||
treatments_wizard_carbs_input.value = 0.0
|
||||
binding.carbsInput.value = 0.0
|
||||
ToastUtils.showToastInUiThread(mainApp, resourceHelper.gs(R.string.carbsconstraintapplied))
|
||||
return
|
||||
}
|
||||
|
||||
bg = if (treatments_wizard_bgcheckbox.isChecked) bg else 0.0
|
||||
val tempTarget = if (treatments_wizard_ttcheckbox.isChecked) treatmentsPlugin.tempTargetFromHistory else null
|
||||
bg = if (binding.bgcheckbox.isChecked) bg else 0.0
|
||||
val tempTarget = if (binding.ttcheckbox.isChecked) treatmentsPlugin.tempTargetFromHistory else null
|
||||
|
||||
// COB
|
||||
var cob = 0.0
|
||||
if (treatments_wizard_cobcheckbox.isChecked) {
|
||||
if (binding.cobcheckbox.isChecked) {
|
||||
val cobInfo = iobCobCalculatorPlugin.getCobInfo(false, "Wizard COB")
|
||||
cobInfo.displayCob?.let { cob = it }
|
||||
}
|
||||
|
||||
val carbTime = SafeParse.stringToInt(treatments_wizard_carb_time_input.text)
|
||||
val carbTime = SafeParse.stringToInt(binding.carbTimeInput.text)
|
||||
|
||||
wizard = BolusWizard(mainApp).doCalc(specificProfile, profileName, tempTarget, carbsAfterConstraint, cob, bg, correction,
|
||||
sp.getInt(R.string.key_boluswizard_percentage, 100).toDouble(),
|
||||
treatments_wizard_bgcheckbox.isChecked,
|
||||
treatments_wizard_cobcheckbox.isChecked,
|
||||
treatments_wizard_bolusiobcheckbox.isChecked,
|
||||
treatments_wizard_basaliobcheckbox.isChecked,
|
||||
treatments_wizard_sbcheckbox.isChecked,
|
||||
treatments_wizard_ttcheckbox.isChecked,
|
||||
treatments_wizard_bgtrendcheckbox.isChecked,
|
||||
treatment_wizard_notes.text.toString(), carbTime)
|
||||
binding.bgcheckbox.isChecked,
|
||||
binding.cobcheckbox.isChecked,
|
||||
binding.bolusiobcheckbox.isChecked,
|
||||
binding.basaliobcheckbox.isChecked,
|
||||
binding.sbcheckbox.isChecked,
|
||||
binding.ttcheckbox.isChecked,
|
||||
binding.bgtrendcheckbox.isChecked,
|
||||
binding.alarm.isChecked,
|
||||
binding.notes.text.toString(), carbTime)
|
||||
|
||||
wizard?.let { wizard ->
|
||||
treatments_wizard_bg.text = String.format(resourceHelper.gs(R.string.format_bg_isf), BgReading().value(Profile.toMgdl(bg, profileFunction.getUnits())).valueToUnitsToString(profileFunction.getUnits()), wizard.sens)
|
||||
treatments_wizard_bginsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromBG)
|
||||
binding.bg.text = String.format(resourceHelper.gs(R.string.format_bg_isf), BgReading().value(Profile.toMgdl(bg, profileFunction.getUnits())).valueToUnitsToString(profileFunction.getUnits()), wizard.sens)
|
||||
binding.bginsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromBG)
|
||||
|
||||
treatments_wizard_carbs.text = String.format(resourceHelper.gs(R.string.format_carbs_ic), carbs.toDouble(), wizard.ic)
|
||||
treatments_wizard_carbsinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromCarbs)
|
||||
binding.carbs.text = String.format(resourceHelper.gs(R.string.format_carbs_ic), carbs.toDouble(), wizard.ic)
|
||||
binding.carbsinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromCarbs)
|
||||
|
||||
treatments_wizard_bolusiobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromBolusIOB)
|
||||
treatments_wizard_basaliobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromBasalsIOB)
|
||||
binding.bolusiobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromBolusIOB)
|
||||
binding.basaliobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromBasalIOB)
|
||||
|
||||
treatments_wizard_correctioninsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromCorrection)
|
||||
binding.correctioninsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromCorrection)
|
||||
|
||||
// Superbolus
|
||||
treatments_wizard_sb.text = if (treatments_wizard_sbcheckbox.isChecked) resourceHelper.gs(R.string.twohours) else ""
|
||||
treatments_wizard_sbinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromSuperBolus)
|
||||
binding.sb.text = if (binding.sbcheckbox.isChecked) resourceHelper.gs(R.string.twohours) else ""
|
||||
binding.sbinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromSuperBolus)
|
||||
|
||||
// Trend
|
||||
if (treatments_wizard_bgtrendcheckbox.isChecked && wizard.glucoseStatus != null) {
|
||||
treatments_wizard_bgtrend.text = ((if (wizard.trend > 0) "+" else "")
|
||||
if (binding.bgtrendcheckbox.isChecked && wizard.glucoseStatus != null) {
|
||||
binding.bgtrend.text = ((if (wizard.trend > 0) "+" else "")
|
||||
+ Profile.toUnitsString(wizard.trend * 3, wizard.trend * 3 / Constants.MMOLL_TO_MGDL, profileFunction.getUnits())
|
||||
+ " " + profileFunction.getUnits())
|
||||
} else {
|
||||
treatments_wizard_bgtrend.text = ""
|
||||
binding.bgtrend.text = ""
|
||||
}
|
||||
treatments_wizard_bgtrendinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromTrend)
|
||||
binding.bgtrendinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromTrend)
|
||||
|
||||
// COB
|
||||
if (treatments_wizard_cobcheckbox.isChecked) {
|
||||
treatments_wizard_cob.text = String.format(resourceHelper.gs(R.string.format_cob_ic), cob, wizard.ic)
|
||||
treatments_wizard_cobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromCOB)
|
||||
if (binding.cobcheckbox.isChecked) {
|
||||
binding.cob.text = String.format(resourceHelper.gs(R.string.format_cob_ic), cob, wizard.ic)
|
||||
binding.cobinsulin.text = resourceHelper.gs(R.string.formatinsulinunits, wizard.insulinFromCOB)
|
||||
} else {
|
||||
treatments_wizard_cob.text = ""
|
||||
treatments_wizard_cobinsulin.text = ""
|
||||
binding.cob.text = ""
|
||||
binding.cobinsulin.text = ""
|
||||
}
|
||||
|
||||
if (wizard.calculatedTotalInsulin > 0.0 || carbsAfterConstraint > 0.0) {
|
||||
val insulinText = if (wizard.calculatedTotalInsulin > 0.0) resourceHelper.gs(R.string.formatinsulinunits, wizard.calculatedTotalInsulin) else ""
|
||||
val carbsText = if (carbsAfterConstraint > 0.0) resourceHelper.gs(R.string.format_carbs, carbsAfterConstraint) else ""
|
||||
treatments_wizard_total.text = resourceHelper.gs(R.string.result_insulin_carbs, insulinText, carbsText)
|
||||
ok.visibility = View.VISIBLE
|
||||
binding.total.text = resourceHelper.gs(R.string.result_insulin_carbs, insulinText, carbsText)
|
||||
binding.ok.visibility = View.VISIBLE
|
||||
} else {
|
||||
treatments_wizard_total.text = resourceHelper.gs(R.string.missing_carbs, wizard.carbsEquivalent.toInt())
|
||||
ok.visibility = View.INVISIBLE
|
||||
binding.total.text = resourceHelper.gs(R.string.missing_carbs, wizard.carbsEquivalent.toInt())
|
||||
binding.ok.visibility = View.INVISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -145,6 +145,7 @@ public class LoopPlugin extends PluginBase implements LoopInterface {
|
|||
super(new PluginDescription()
|
||||
.mainType(PluginType.LOOP)
|
||||
.fragmentClass(LoopFragment.class.getName())
|
||||
.pluginIcon(R.drawable.ic_loop_closed_white)
|
||||
.pluginName(R.string.loop)
|
||||
.shortName(R.string.loop_shortname)
|
||||
.preferencesId(R.xml.pref_loop)
|
||||
|
|
|
@ -80,6 +80,7 @@ public class OpenAPSAMAPlugin extends PluginBase implements APSInterface {
|
|||
super(new PluginDescription()
|
||||
.mainType(PluginType.APS)
|
||||
.fragmentClass(OpenAPSAMAFragment.class.getName())
|
||||
.pluginIcon(R.drawable.ic_generic_icon)
|
||||
.pluginName(R.string.openapsama)
|
||||
.shortName(R.string.oaps_shortname)
|
||||
.preferencesId(R.xml.pref_openapsama)
|
||||
|
|
|
@ -267,8 +267,8 @@ public class DetermineBasalAdapterSMBJS {
|
|||
mProfile.put("low_temptarget_lowers_sensitivity", false);
|
||||
|
||||
|
||||
mProfile.put("sensitivity_raises_target", sp.getBoolean(resourceHelper.gs(R.string.key_sensitivity_raises_target),SMBDefaults.sensitivity_raises_target));
|
||||
mProfile.put("resistance_lowers_target", sp.getBoolean(resourceHelper.gs(R.string.key_resistance_lowers_target),SMBDefaults.resistance_lowers_target));
|
||||
mProfile.put("sensitivity_raises_target", sp.getBoolean(R.string.key_sensitivity_raises_target,SMBDefaults.sensitivity_raises_target));
|
||||
mProfile.put("resistance_lowers_target", sp.getBoolean(R.string.key_resistance_lowers_target,SMBDefaults.resistance_lowers_target));
|
||||
mProfile.put("adv_target_adjustments", SMBDefaults.adv_target_adjustments);
|
||||
mProfile.put("exercise_mode", SMBDefaults.exercise_mode);
|
||||
mProfile.put("half_basal_exercise_target", SMBDefaults.half_basal_exercise_target);
|
||||
|
@ -284,7 +284,7 @@ public class DetermineBasalAdapterSMBJS {
|
|||
mProfile.put("enableUAM", uamAllowed);
|
||||
mProfile.put("A52_risk_enable", SMBDefaults.A52_risk_enable);
|
||||
|
||||
boolean smbEnabled = sp.getBoolean(resourceHelper.gs(R.string.key_use_smb), false);
|
||||
boolean smbEnabled = sp.getBoolean(R.string.key_use_smb, false);
|
||||
mProfile.put("SMBInterval", sp.getInt(R.string.key_smbinterval, SMBDefaults.SMBInterval));
|
||||
mProfile.put("enableSMB_with_COB", smbEnabled && sp.getBoolean(R.string.key_enableSMB_with_COB, false));
|
||||
mProfile.put("enableSMB_with_temptarget", smbEnabled && sp.getBoolean(R.string.key_enableSMB_with_temptarget, false));
|
||||
|
|
|
@ -88,6 +88,7 @@ public class OpenAPSSMBPlugin extends PluginBase implements APSInterface, Constr
|
|||
super(new PluginDescription()
|
||||
.mainType(PluginType.APS)
|
||||
.fragmentClass(OpenAPSSMBFragment.class.getName())
|
||||
.pluginIcon(R.drawable.ic_generic_icon)
|
||||
.pluginName(R.string.openapssmb)
|
||||
.shortName(R.string.smb_shortname)
|
||||
.preferencesId(R.xml.pref_openapssmb)
|
||||
|
|
|
@ -32,6 +32,7 @@ class ConfigBuilderPlugin @Inject constructor(
|
|||
.showInList(true)
|
||||
.alwaysEnabled(true)
|
||||
.alwaysVisible(false)
|
||||
.pluginIcon(R.drawable.ic_cogs)
|
||||
.pluginName(R.string.configbuilder)
|
||||
.shortName(R.string.configbuilder_shortname)
|
||||
.description(R.string.description_config_builder),
|
||||
|
|
|
@ -32,6 +32,7 @@ class ObjectivesPlugin @Inject constructor(
|
|||
.fragmentClass(ObjectivesFragment::class.qualifiedName)
|
||||
.alwaysEnabled(config.APS)
|
||||
.showInList(config.APS)
|
||||
.pluginIcon(R.drawable.ic_graduation)
|
||||
.pluginName(R.string.objectives)
|
||||
.shortName(R.string.objectives_shortname)
|
||||
.description(R.string.description_objectives),
|
||||
|
@ -162,6 +163,12 @@ class ObjectivesPlugin @Inject constructor(
|
|||
return value
|
||||
}
|
||||
|
||||
fun isLgsAllowed(value: Constraint<Boolean>): Constraint<Boolean> {
|
||||
if (!objectives[MAXBASAL_OBJECTIVE].isStarted)
|
||||
value.set(aapsLogger, false, String.format(resourceHelper.gs(R.string.objectivenotstarted), MAXBASAL_OBJECTIVE + 1), this)
|
||||
return value
|
||||
}
|
||||
|
||||
override fun isClosedLoopAllowed(value: Constraint<Boolean>): Constraint<Boolean> {
|
||||
if (!objectives[MAXIOB_ZERO_CL_OBJECTIVE].isStarted)
|
||||
value.set(aapsLogger, false, String.format(resourceHelper.gs(R.string.objectivenotstarted), MAXIOB_ZERO_CL_OBJECTIVE + 1), this)
|
||||
|
|
|
@ -22,6 +22,7 @@ class ActionsPlugin @Inject constructor(
|
|||
.fragmentClass(ActionsFragment::class.qualifiedName)
|
||||
.enableByDefault(config.APS || config.PUMPCONTROL)
|
||||
.visibleByDefault(config.APS || config.PUMPCONTROL)
|
||||
.pluginIcon(R.drawable.ic_action)
|
||||
.pluginName(R.string.actions)
|
||||
.shortName(R.string.actions_shortname)
|
||||
.description(R.string.description_actions),
|
||||
|
|
|
@ -15,12 +15,18 @@ import java.util.*
|
|||
import javax.inject.Inject
|
||||
|
||||
class AutomationEvent(private val injector: HasAndroidInjector) {
|
||||
|
||||
@Inject lateinit var aapsLogger: AAPSLogger
|
||||
|
||||
var title: String? = null
|
||||
var isEnabled = true
|
||||
var systemAction: Boolean = false // true = generated by AAPS, false = entered by user
|
||||
var readOnly: Boolean = false // removing, editing disabled
|
||||
var autoRemove: Boolean = false // auto-remove once used
|
||||
|
||||
var trigger: Trigger = TriggerConnector(injector)
|
||||
val actions: MutableList<Action> = ArrayList()
|
||||
var title: String? = null
|
||||
var isEnabled = true
|
||||
|
||||
var lastRun: Long = 0
|
||||
|
||||
init {
|
||||
|
@ -43,6 +49,9 @@ class AutomationEvent(private val injector: HasAndroidInjector) {
|
|||
return JSONObject()
|
||||
.put("title", title)
|
||||
.put("enabled", isEnabled)
|
||||
.put("systemAction", systemAction)
|
||||
.put("readOnly", readOnly)
|
||||
.put("autoRemove", autoRemove)
|
||||
.put("trigger", trigger.toJSON())
|
||||
.put("actions", array)
|
||||
.toString()
|
||||
|
@ -52,6 +61,9 @@ class AutomationEvent(private val injector: HasAndroidInjector) {
|
|||
val d = JSONObject(data)
|
||||
title = d.optString("title", "")
|
||||
isEnabled = d.optBoolean("enabled", true)
|
||||
systemAction = d.optBoolean("systemAction", false)
|
||||
readOnly = d.optBoolean("readOnly", false)
|
||||
autoRemove = d.optBoolean("autoRemove", false)
|
||||
trigger = TriggerDummy(injector).instantiate(JSONObject(d.getString("trigger")))
|
||||
?: TriggerConnector(injector)
|
||||
val array = d.getJSONArray("actions")
|
||||
|
|
|
@ -9,18 +9,17 @@ import android.view.LayoutInflater
|
|||
import android.view.MotionEvent
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.CheckBox
|
||||
import android.widget.ImageView
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.RelativeLayout
|
||||
import android.widget.TextView
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import dagger.android.HasAndroidInjector
|
||||
import dagger.android.support.DaggerFragment
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.databinding.AutomationEventItemBinding
|
||||
import info.nightscout.androidaps.databinding.AutomationFragmentBinding
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.plugins.general.automation.dialogs.EditEventDialog
|
||||
import info.nightscout.androidaps.plugins.general.automation.dragHelpers.ItemTouchHelperAdapter
|
||||
|
@ -34,42 +33,50 @@ import info.nightscout.androidaps.utils.FabricPrivacy
|
|||
import info.nightscout.androidaps.utils.HtmlHelper
|
||||
import info.nightscout.androidaps.utils.alertDialogs.OKDialog.showConfirmation
|
||||
import info.nightscout.androidaps.utils.extensions.plusAssign
|
||||
import info.nightscout.androidaps.utils.extensions.toVisibility
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.CompositeDisposable
|
||||
import kotlinx.android.synthetic.main.automation_fragment.*
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
||||
class AutomationFragment : DaggerFragment(), OnStartDragListener {
|
||||
|
||||
@Inject lateinit var resourceHelper: ResourceHelper
|
||||
@Inject lateinit var rxBus: RxBusWrapper
|
||||
@Inject lateinit var fabricPrivacy: FabricPrivacy
|
||||
@Inject lateinit var automationPlugin: AutomationPlugin
|
||||
@Inject lateinit var mainApp : MainApp
|
||||
@Inject lateinit var injector: HasAndroidInjector
|
||||
|
||||
private var disposable: CompositeDisposable = CompositeDisposable()
|
||||
private lateinit var eventListAdapter: EventListAdapter
|
||||
|
||||
private var itemTouchHelper: ItemTouchHelper? = null
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
return inflater.inflate(R.layout.automation_fragment, container, false)
|
||||
private var _binding: AutomationFragmentBinding? = null
|
||||
|
||||
// This property is only valid between onCreateView and
|
||||
// onDestroyView.
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||
_binding = AutomationFragmentBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
eventListAdapter = EventListAdapter()
|
||||
automation_eventListView.layoutManager = LinearLayoutManager(context)
|
||||
automation_eventListView.adapter = eventListAdapter
|
||||
binding.eventListView.layoutManager = LinearLayoutManager(context)
|
||||
binding.eventListView.adapter = eventListAdapter
|
||||
|
||||
automation_logView.movementMethod = ScrollingMovementMethod()
|
||||
binding.logView.movementMethod = ScrollingMovementMethod()
|
||||
|
||||
automation_fabAddEvent.setOnClickListener {
|
||||
binding.fabAddEvent.setOnClickListener {
|
||||
val dialog = EditEventDialog()
|
||||
val args = Bundle()
|
||||
args.putString("event", AutomationEvent(mainApp).toJSON())
|
||||
args.putString("event", AutomationEvent(injector).toJSON())
|
||||
args.putInt("position", -1) // New event
|
||||
dialog.arguments = args
|
||||
dialog.show(childFragmentManager, "EditEventDialog")
|
||||
|
@ -77,7 +84,7 @@ class AutomationFragment : DaggerFragment(), OnStartDragListener {
|
|||
|
||||
val callback: ItemTouchHelper.Callback = SimpleItemTouchHelperCallback(eventListAdapter)
|
||||
itemTouchHelper = ItemTouchHelper(callback)
|
||||
itemTouchHelper?.attachToRecyclerView(automation_eventListView)
|
||||
itemTouchHelper?.attachToRecyclerView(binding.eventListView)
|
||||
|
||||
}
|
||||
|
||||
|
@ -105,13 +112,20 @@ class AutomationFragment : DaggerFragment(), OnStartDragListener {
|
|||
disposable.clear()
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
_binding = null
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
private fun updateGui() {
|
||||
if (_binding == null) return
|
||||
eventListAdapter.notifyDataSetChanged()
|
||||
val sb = StringBuilder()
|
||||
for (l in automationPlugin.executionLog.reversed())
|
||||
sb.append(l).append("<br>")
|
||||
automation_logView?.text = HtmlHelper.fromHtml(sb.toString())
|
||||
binding.logView.text = HtmlHelper.fromHtml(sb.toString())
|
||||
}
|
||||
|
||||
override fun onStartDrag(viewHolder: RecyclerView.ViewHolder) {
|
||||
|
@ -132,6 +146,7 @@ class AutomationFragment : DaggerFragment(), OnStartDragListener {
|
|||
}
|
||||
|
||||
inner class EventListAdapter : RecyclerView.Adapter<EventListAdapter.ViewHolder>(), ItemTouchHelperAdapter {
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
val v = LayoutInflater.from(parent.context).inflate(R.layout.automation_event_item, parent, false)
|
||||
return ViewHolder(v, parent.context)
|
||||
|
@ -146,37 +161,38 @@ class AutomationFragment : DaggerFragment(), OnStartDragListener {
|
|||
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||
val event = automationPlugin.automationEvents[position]
|
||||
holder.eventTitle.text = event.title
|
||||
holder.enabled.isChecked = event.isEnabled
|
||||
holder.iconLayout.removeAllViews()
|
||||
val event = automationPlugin.at(position)
|
||||
holder.binding.eventTitle.text = event.title
|
||||
holder.binding.enabled.isChecked = event.isEnabled
|
||||
holder.binding.enabled.isEnabled = !event.readOnly
|
||||
holder.binding.iconLayout.removeAllViews()
|
||||
// trigger icons
|
||||
val triggerIcons = HashSet<Int>()
|
||||
fillIconSet(event.trigger as TriggerConnector, triggerIcons)
|
||||
for (res in triggerIcons) {
|
||||
addImage(res, holder.context, holder.iconLayout)
|
||||
addImage(res, holder.context, holder.binding.iconLayout)
|
||||
}
|
||||
// arrow icon
|
||||
val iv = ImageView(holder.context)
|
||||
iv.setImageResource(R.drawable.ic_arrow_forward_white_24dp)
|
||||
iv.layoutParams = LinearLayout.LayoutParams(resourceHelper.dpToPx(24), resourceHelper.dpToPx(24))
|
||||
iv.setPadding(resourceHelper.dpToPx(4), 0, resourceHelper.dpToPx(4), 0)
|
||||
holder.iconLayout.addView(iv)
|
||||
holder.binding.iconLayout.addView(iv)
|
||||
// action icons
|
||||
val actionIcons = HashSet<Int>()
|
||||
for (action in event.actions) {
|
||||
actionIcons.add(action.icon())
|
||||
}
|
||||
for (res in actionIcons) {
|
||||
addImage(res, holder.context, holder.iconLayout)
|
||||
addImage(res, holder.context, holder.binding.iconLayout)
|
||||
}
|
||||
// enabled event
|
||||
holder.enabled.setOnClickListener {
|
||||
event.isEnabled = holder.enabled.isChecked
|
||||
holder.binding.enabled.setOnClickListener {
|
||||
event.isEnabled = holder.binding.enabled.isChecked
|
||||
rxBus.send(EventAutomationDataChanged())
|
||||
}
|
||||
// edit event
|
||||
holder.rootLayout.setOnClickListener {
|
||||
holder.binding.rootLayout.setOnClickListener {
|
||||
val dialog = EditEventDialog()
|
||||
val args = Bundle()
|
||||
args.putString("event", event.toJSON())
|
||||
|
@ -185,7 +201,7 @@ class AutomationFragment : DaggerFragment(), OnStartDragListener {
|
|||
dialog.show(childFragmentManager, "EditEventDialog")
|
||||
}
|
||||
// Start a drag whenever the handle view it touched
|
||||
holder.iconSort.setOnTouchListener { v: View, motionEvent: MotionEvent ->
|
||||
holder.binding.iconSort.setOnTouchListener { v: View, motionEvent: MotionEvent ->
|
||||
if (motionEvent.action == MotionEvent.ACTION_DOWN) {
|
||||
this@AutomationFragment.onStartDrag(holder)
|
||||
return@setOnTouchListener true
|
||||
|
@ -193,46 +209,41 @@ class AutomationFragment : DaggerFragment(), OnStartDragListener {
|
|||
v.onTouchEvent(motionEvent)
|
||||
}
|
||||
// remove event
|
||||
holder.iconTrash.setOnClickListener {
|
||||
showConfirmation(requireContext(), resourceHelper.gs(R.string.removerecord) + " " + automationPlugin.automationEvents[position].title,
|
||||
holder.binding.iconTrash.setOnClickListener {
|
||||
showConfirmation(requireContext(), resourceHelper.gs(R.string.removerecord) + " " + automationPlugin.at(position).title,
|
||||
Runnable {
|
||||
automationPlugin.automationEvents.removeAt(position)
|
||||
automationPlugin.removeAt(position)
|
||||
notifyItemRemoved(position)
|
||||
rxBus.send(EventAutomationDataChanged())
|
||||
}, Runnable {
|
||||
rxBus.send(EventAutomationUpdateGui())
|
||||
}, Runnable { rxBus.send(EventAutomationUpdateGui())
|
||||
})
|
||||
}
|
||||
holder.binding.iconTrash.visibility = (!event.readOnly).toVisibility()
|
||||
holder.binding.aapsLogo.visibility = (event.systemAction).toVisibility()
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int = automationPlugin.automationEvents.size
|
||||
override fun getItemCount(): Int = automationPlugin.size()
|
||||
|
||||
override fun onItemMove(fromPosition: Int, toPosition: Int): Boolean {
|
||||
Collections.swap(automationPlugin.automationEvents, fromPosition, toPosition)
|
||||
automationPlugin.swap(fromPosition, toPosition)
|
||||
notifyItemMoved(fromPosition, toPosition)
|
||||
rxBus.send(EventAutomationDataChanged())
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onItemDismiss(position: Int) {
|
||||
activity?.let { activity ->
|
||||
showConfirmation(activity, resourceHelper.gs(R.string.removerecord) + " " + automationPlugin.automationEvents[position].title,
|
||||
showConfirmation(activity, resourceHelper.gs(R.string.removerecord) + " " + automationPlugin.at(position).title,
|
||||
Runnable {
|
||||
automationPlugin.automationEvents.removeAt(position)
|
||||
automationPlugin.removeAt(position)
|
||||
notifyItemRemoved(position)
|
||||
rxBus.send(EventAutomationDataChanged())
|
||||
rxBus.send(EventAutomationUpdateGui())
|
||||
}, Runnable { rxBus.send(EventAutomationUpdateGui()) })
|
||||
}
|
||||
}
|
||||
|
||||
inner class ViewHolder(view: View, val context: Context) : RecyclerView.ViewHolder(view), ItemTouchHelperViewHolder {
|
||||
val rootLayout: RelativeLayout = view.findViewById(R.id.rootLayout)
|
||||
val iconLayout: LinearLayout = view.findViewById(R.id.iconLayout)
|
||||
val eventTitle: TextView = view.findViewById(R.id.viewEventTitle)
|
||||
val iconTrash: ImageView = view.findViewById(R.id.iconTrash)
|
||||
val iconSort: ImageView = view.findViewById(R.id.iconSort)
|
||||
val enabled: CheckBox = view.findViewById(R.id.automation_enabled)
|
||||
|
||||
val binding = AutomationEventItemBinding.bind(view)
|
||||
|
||||
override fun onItemSelected() = itemView.setBackgroundColor(Color.LTGRAY)
|
||||
|
||||
|
|
|
@ -39,8 +39,10 @@ import io.reactivex.schedulers.Schedulers
|
|||
import org.json.JSONArray
|
||||
import org.json.JSONException
|
||||
import org.json.JSONObject
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
@Singleton
|
||||
class AutomationPlugin @Inject constructor(
|
||||
|
@ -57,6 +59,7 @@ class AutomationPlugin @Inject constructor(
|
|||
) : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.GENERAL)
|
||||
.fragmentClass(AutomationFragment::class.qualifiedName)
|
||||
.pluginIcon(R.drawable.ic_automation)
|
||||
.pluginName(R.string.automation)
|
||||
.shortName(R.string.automation_short)
|
||||
.preferencesId(R.xml.pref_automation)
|
||||
|
@ -68,7 +71,7 @@ class AutomationPlugin @Inject constructor(
|
|||
|
||||
private val keyAutomationEvents = "AUTOMATION_EVENTS"
|
||||
|
||||
val automationEvents = ArrayList<AutomationEvent>()
|
||||
private val automationEvents = ArrayList<AutomationEvent>()
|
||||
var executionLog: MutableList<String> = ArrayList()
|
||||
var btConnects: MutableList<EventBTChange> = ArrayList()
|
||||
|
||||
|
@ -76,6 +79,7 @@ class AutomationPlugin @Inject constructor(
|
|||
private lateinit var refreshLoop: Runnable
|
||||
|
||||
companion object {
|
||||
|
||||
const val event = "{\"title\":\"Low\",\"enabled\":true,\"trigger\":\"{\\\"type\\\":\\\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector\\\",\\\"data\\\":{\\\"connectorType\\\":\\\"AND\\\",\\\"triggerList\\\":[\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerBg\\\\\\\",\\\\\\\"data\\\\\\\":{\\\\\\\"bg\\\\\\\":4,\\\\\\\"comparator\\\\\\\":\\\\\\\"IS_LESSER\\\\\\\",\\\\\\\"units\\\\\\\":\\\\\\\"mmol\\\\\\\"}}\\\",\\\"{\\\\\\\"type\\\\\\\":\\\\\\\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerDelta\\\\\\\",\\\\\\\"data\\\\\\\":{\\\\\\\"value\\\\\\\":-0.1,\\\\\\\"units\\\\\\\":\\\\\\\"mmol\\\\\\\",\\\\\\\"deltaType\\\\\\\":\\\\\\\"DELTA\\\\\\\",\\\\\\\"comparator\\\\\\\":\\\\\\\"IS_LESSER\\\\\\\"}}\\\"]}}\",\"actions\":[\"{\\\"type\\\":\\\"info.nightscout.androidaps.plugins.general.automation.actions.ActionStartTempTarget\\\",\\\"data\\\":{\\\"value\\\":8,\\\"units\\\":\\\"mmol\\\",\\\"durationInMinutes\\\":60}}\"]}"
|
||||
}
|
||||
|
||||
|
@ -183,20 +187,22 @@ class AutomationPlugin @Inject constructor(
|
|||
|
||||
@Synchronized
|
||||
private fun processActions() {
|
||||
var userEventsEnabled = true
|
||||
if (loopPlugin.isSuspended || !loopPlugin.isEnabled()) {
|
||||
aapsLogger.debug(LTag.AUTOMATION, "Loop deactivated")
|
||||
executionLog.add(resourceHelper.gs(R.string.smscommunicator_loopisdisabled))
|
||||
return
|
||||
userEventsEnabled = false
|
||||
}
|
||||
val enabled = constraintChecker.isAutomationEnabled()
|
||||
if (!enabled.value()) {
|
||||
executionLog.add(enabled.getMostLimitedReasons(aapsLogger))
|
||||
return
|
||||
userEventsEnabled = false
|
||||
}
|
||||
|
||||
aapsLogger.debug(LTag.AUTOMATION, "processActions")
|
||||
for (event in automationEvents) {
|
||||
if (event.isEnabled && event.shouldRun() && event.trigger.shouldRun() && event.getPreconditions().shouldRun()) {
|
||||
if (event.systemAction || userEventsEnabled) {
|
||||
val actions = event.actions
|
||||
for (action in actions) {
|
||||
action.doAction(object : Callback() {
|
||||
|
@ -219,6 +225,8 @@ class AutomationPlugin @Inject constructor(
|
|||
}
|
||||
SystemClock.sleep(1100)
|
||||
event.lastRun = DateUtil.now()
|
||||
if (event.autoRemove) automationEvents.remove(event)
|
||||
}
|
||||
}
|
||||
}
|
||||
// we cannot detect connected BT devices
|
||||
|
@ -230,6 +238,38 @@ class AutomationPlugin @Inject constructor(
|
|||
storeToSP() // save last run time
|
||||
}
|
||||
|
||||
fun add(event: AutomationEvent) {
|
||||
automationEvents.add(event)
|
||||
rxBus.send(EventAutomationDataChanged())
|
||||
}
|
||||
|
||||
fun addIfNotExists(event: AutomationEvent) {
|
||||
for (e in automationEvents) {
|
||||
if (event.title == e.title) return
|
||||
}
|
||||
automationEvents.add(event)
|
||||
rxBus.send(EventAutomationDataChanged())
|
||||
}
|
||||
|
||||
fun set(event: AutomationEvent, index: Int) {
|
||||
automationEvents[index] = event
|
||||
rxBus.send(EventAutomationDataChanged())
|
||||
}
|
||||
|
||||
fun removeAt(index: Int) {
|
||||
automationEvents.removeAt(index)
|
||||
rxBus.send(EventAutomationDataChanged())
|
||||
}
|
||||
|
||||
fun at(index: Int) = automationEvents[index]
|
||||
|
||||
fun size() = automationEvents.size
|
||||
|
||||
fun swap(fromPosition: Int, toPosition: Int) {
|
||||
Collections.swap(automationEvents, fromPosition, toPosition)
|
||||
rxBus.send(EventAutomationDataChanged())
|
||||
}
|
||||
|
||||
fun getActionDummyObjects(): List<Action> {
|
||||
return listOf(
|
||||
//ActionLoopDisable(injector),
|
||||
|
@ -239,6 +279,7 @@ class AutomationPlugin @Inject constructor(
|
|||
ActionStartTempTarget(injector),
|
||||
ActionStopTempTarget(injector),
|
||||
ActionNotification(injector),
|
||||
ActionAlarm(injector),
|
||||
ActionProfileSwitchPercent(injector),
|
||||
ActionProfileSwitch(injector),
|
||||
ActionSendSMS(injector)
|
||||
|
|
|
@ -0,0 +1,75 @@
|
|||
package info.nightscout.androidaps.plugins.general.automation.actions
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.widget.LinearLayout
|
||||
import androidx.annotation.DrawableRes
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.activities.ErrorHelperActivity
|
||||
import info.nightscout.androidaps.activities.PreferencesActivity
|
||||
import info.nightscout.androidaps.data.PumpEnactResult
|
||||
import info.nightscout.androidaps.events.EventRefreshOverview
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.plugins.general.automation.elements.InputString
|
||||
import info.nightscout.androidaps.plugins.general.automation.elements.LabelWithElement
|
||||
import info.nightscout.androidaps.plugins.general.automation.elements.LayoutBuilder
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
|
||||
import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationUserMessage
|
||||
import info.nightscout.androidaps.queue.Callback
|
||||
import info.nightscout.androidaps.utils.JsonHelper
|
||||
import info.nightscout.androidaps.utils.alertDialogs.WarningDialog
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import org.json.JSONObject
|
||||
import javax.inject.Inject
|
||||
|
||||
class ActionAlarm(injector: HasAndroidInjector) : Action(injector) {
|
||||
|
||||
@Inject lateinit var resourceHelper: ResourceHelper
|
||||
@Inject lateinit var rxBus: RxBusWrapper
|
||||
@Inject lateinit var nsUpload: NSUpload
|
||||
@Inject lateinit var context: Context
|
||||
|
||||
var text = InputString(injector)
|
||||
|
||||
constructor(injector: HasAndroidInjector, text: String) : this(injector) {
|
||||
this.text = InputString(injector, text)
|
||||
}
|
||||
override fun friendlyName(): Int = R.string.alarm
|
||||
override fun shortDescription(): String = resourceHelper.gs(R.string.alarm_message, text.value)
|
||||
@DrawableRes override fun icon(): Int = R.drawable.ic_access_alarm_24dp
|
||||
|
||||
override fun doAction(callback: Callback) {
|
||||
val i = Intent(context, ErrorHelperActivity::class.java)
|
||||
i.putExtra("soundid", R.raw.modern_alarm)
|
||||
i.putExtra("status", text.value)
|
||||
i.putExtra("title", resourceHelper.gs(R.string.alarm))
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
context.startActivity(i)
|
||||
|
||||
callback.result(PumpEnactResult(injector).success(true).comment(R.string.ok))?.run()
|
||||
}
|
||||
|
||||
override fun toJSON(): String {
|
||||
val data = JSONObject().put("text", text.value)
|
||||
return JSONObject()
|
||||
.put("type", this.javaClass.name)
|
||||
.put("data", data)
|
||||
.toString()
|
||||
}
|
||||
|
||||
override fun fromJSON(data: String): Action {
|
||||
val o = JSONObject(data)
|
||||
text.value = JsonHelper.safeGetString(o, "text", "")
|
||||
return this
|
||||
}
|
||||
|
||||
override fun hasDialog(): Boolean = true
|
||||
|
||||
override fun generateDialog(root: LinearLayout) {
|
||||
LayoutBuilder()
|
||||
.add(LabelWithElement(injector, resourceHelper.gs(R.string.alarm_short), "", text))
|
||||
.build(root)
|
||||
}
|
||||
}
|
|
@ -6,24 +6,30 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import android.widget.RadioButton
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.databinding.AutomationDialogChooseActionBinding
|
||||
import info.nightscout.androidaps.dialogs.DialogFragmentWithDate
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin
|
||||
import info.nightscout.androidaps.plugins.general.automation.actions.Action
|
||||
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationAddAction
|
||||
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationUpdateGui
|
||||
import kotlinx.android.synthetic.main.automation_dialog_choose_action.*
|
||||
import javax.inject.Inject
|
||||
import kotlin.reflect.full.primaryConstructor
|
||||
|
||||
class ChooseActionDialog : DialogFragmentWithDate() {
|
||||
|
||||
@Inject lateinit var automationPlugin: AutomationPlugin
|
||||
@Inject lateinit var rxBus: RxBusWrapper
|
||||
@Inject lateinit var mainApp: MainApp
|
||||
|
||||
private var checkedIndex = -1
|
||||
|
||||
private var _binding: AutomationDialogChooseActionBinding? = null
|
||||
|
||||
// This property is only valid between onCreateView and
|
||||
// onDestroyView.
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?): View? {
|
||||
// restore checked radio button
|
||||
|
@ -32,7 +38,8 @@ class ChooseActionDialog : DialogFragmentWithDate() {
|
|||
}
|
||||
|
||||
onCreateViewGeneral()
|
||||
return inflater.inflate(R.layout.automation_dialog_choose_action, container, false)
|
||||
_binding = AutomationDialogChooseActionBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
|
@ -42,11 +49,16 @@ class ChooseActionDialog : DialogFragmentWithDate() {
|
|||
val radioButton = RadioButton(context)
|
||||
radioButton.setText(a.friendlyName())
|
||||
radioButton.tag = a.javaClass.name
|
||||
automation_radioGroup.addView(radioButton)
|
||||
binding.radioGroup.addView(radioButton)
|
||||
}
|
||||
|
||||
if (checkedIndex != -1)
|
||||
(automation_radioGroup.getChildAt(checkedIndex) as RadioButton).isChecked = true
|
||||
(binding.radioGroup.getChildAt(checkedIndex) as RadioButton).isChecked = true
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
_binding = null
|
||||
}
|
||||
|
||||
override fun submit(): Boolean {
|
||||
|
@ -70,16 +82,16 @@ class ChooseActionDialog : DialogFragmentWithDate() {
|
|||
}
|
||||
|
||||
private fun getActionClass(): String? {
|
||||
val radioButtonID = automation_radioGroup.checkedRadioButtonId
|
||||
val radioButton = automation_radioGroup.findViewById<RadioButton>(radioButtonID)
|
||||
val radioButtonID = binding.radioGroup.checkedRadioButtonId
|
||||
val radioButton = binding.radioGroup.findViewById<RadioButton>(radioButtonID)
|
||||
return radioButton?.let {
|
||||
it.tag as String
|
||||
}
|
||||
}
|
||||
|
||||
private fun determineCheckedIndex(): Int {
|
||||
for (i in 0 until automation_radioGroup.childCount) {
|
||||
if ((automation_radioGroup.getChildAt(i) as RadioButton).isChecked)
|
||||
for (i in 0 until binding.radioGroup.childCount) {
|
||||
if ((binding.radioGroup.getChildAt(i) as RadioButton).isChecked)
|
||||
return i
|
||||
}
|
||||
return -1
|
||||
|
|
|
@ -6,34 +6,42 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import android.widget.RadioButton
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.databinding.AutomationDialogChooseTriggerBinding
|
||||
import info.nightscout.androidaps.dialogs.DialogFragmentWithDate
|
||||
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.Trigger
|
||||
import kotlinx.android.synthetic.main.automation_dialog_choose_trigger.*
|
||||
import javax.inject.Inject
|
||||
import kotlin.reflect.full.primaryConstructor
|
||||
|
||||
class ChooseTriggerDialog : DialogFragmentWithDate() {
|
||||
|
||||
@Inject lateinit var automationPlugin: AutomationPlugin
|
||||
@Inject lateinit var mainApp: MainApp
|
||||
|
||||
private var checkedIndex = -1
|
||||
private var clickListener: OnClickListener? = null
|
||||
|
||||
private var _binding: AutomationDialogChooseTriggerBinding? = null
|
||||
|
||||
// This property is only valid between onCreateView and
|
||||
// onDestroyView.
|
||||
private val binding get() = _binding!!
|
||||
|
||||
interface OnClickListener {
|
||||
|
||||
fun onClick(newTriggerObject: Trigger)
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?): View? {
|
||||
savedInstanceState: Bundle?): View {
|
||||
// restore checked radio button
|
||||
savedInstanceState?.let { bundle ->
|
||||
checkedIndex = bundle.getInt("checkedIndex")
|
||||
}
|
||||
|
||||
onCreateViewGeneral()
|
||||
return inflater.inflate(R.layout.automation_dialog_choose_trigger, container, false)
|
||||
_binding = AutomationDialogChooseTriggerBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
|
@ -43,11 +51,16 @@ class ChooseTriggerDialog : DialogFragmentWithDate() {
|
|||
val radioButton = RadioButton(context)
|
||||
radioButton.setText(t.friendlyName())
|
||||
radioButton.tag = t.javaClass.name
|
||||
automation_chooseTriggerRadioGroup.addView(radioButton)
|
||||
binding.chooseTriggerRadioGroup.addView(radioButton)
|
||||
}
|
||||
|
||||
if (checkedIndex != -1)
|
||||
(automation_chooseTriggerRadioGroup.getChildAt(checkedIndex) as RadioButton).isChecked = true
|
||||
(binding.chooseTriggerRadioGroup.getChildAt(checkedIndex) as RadioButton).isChecked = true
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
_binding = null
|
||||
}
|
||||
|
||||
override fun submit(): Boolean {
|
||||
|
@ -74,16 +87,16 @@ class ChooseTriggerDialog : DialogFragmentWithDate() {
|
|||
}
|
||||
|
||||
private fun getTriggerClass(): String? {
|
||||
val radioButtonID = automation_chooseTriggerRadioGroup.checkedRadioButtonId
|
||||
val radioButton = automation_chooseTriggerRadioGroup.findViewById<RadioButton>(radioButtonID)
|
||||
val radioButtonID = binding.chooseTriggerRadioGroup.checkedRadioButtonId
|
||||
val radioButton = binding.chooseTriggerRadioGroup.findViewById<RadioButton>(radioButtonID)
|
||||
return radioButton?.let {
|
||||
it.tag as String
|
||||
}
|
||||
}
|
||||
|
||||
private fun determineCheckedIndex(): Int {
|
||||
for (i in 0 until automation_chooseTriggerRadioGroup.childCount) {
|
||||
if ((automation_chooseTriggerRadioGroup.getChildAt(i) as RadioButton).isChecked)
|
||||
for (i in 0 until binding.chooseTriggerRadioGroup.childCount) {
|
||||
if ((binding.chooseTriggerRadioGroup.getChildAt(i) as RadioButton).isChecked)
|
||||
return i
|
||||
}
|
||||
return -1
|
||||
|
|
|
@ -5,41 +5,48 @@ import android.view.LayoutInflater
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.databinding.AutomationDialogActionBinding
|
||||
import info.nightscout.androidaps.dialogs.DialogFragmentWithDate
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.plugins.general.automation.actions.Action
|
||||
import info.nightscout.androidaps.plugins.general.automation.actions.ActionDummy
|
||||
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationUpdateAction
|
||||
import kotlinx.android.synthetic.main.automation_dialog_action.*
|
||||
import org.json.JSONObject
|
||||
import javax.inject.Inject
|
||||
|
||||
class EditActionDialog : DialogFragmentWithDate() {
|
||||
|
||||
@Inject lateinit var rxBus: RxBusWrapper
|
||||
@Inject lateinit var mainApp: MainApp
|
||||
|
||||
private var action: Action? = null
|
||||
private var actionPosition: Int = -1
|
||||
|
||||
private var _binding: AutomationDialogActionBinding? = null
|
||||
|
||||
// This property is only valid between onCreateView and
|
||||
// onDestroyView.
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?): View? {
|
||||
savedInstanceState: Bundle?): View {
|
||||
// load data from bundle
|
||||
(savedInstanceState ?: arguments)?.let { bundle ->
|
||||
actionPosition = bundle.getInt("actionPosition", -1)
|
||||
bundle.getString("action")?.let { action = ActionDummy(mainApp).instantiate(JSONObject(it)) }
|
||||
}
|
||||
onCreateViewGeneral()
|
||||
return inflater.inflate(R.layout.automation_dialog_action, container, false)
|
||||
_binding = AutomationDialogActionBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
action?.let {
|
||||
automation_actionTitle.setText(it.friendlyName())
|
||||
automation_editActionLayout.removeAllViews()
|
||||
it.generateDialog(automation_editActionLayout)
|
||||
binding.actionTitle.setText(it.friendlyName())
|
||||
binding.editActionLayout.removeAllViews()
|
||||
it.generateDialog(binding.editActionLayout)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
|
|||
import androidx.recyclerview.widget.RecyclerView
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.databinding.AutomationDialogEventBinding
|
||||
import info.nightscout.androidaps.dialogs.DialogFragmentWithDate
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.plugins.general.automation.AutomationEvent
|
||||
|
@ -25,12 +26,13 @@ import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerCon
|
|||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
import info.nightscout.androidaps.utils.ToastUtils
|
||||
import info.nightscout.androidaps.utils.extensions.plusAssign
|
||||
import info.nightscout.androidaps.utils.extensions.toVisibility
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.CompositeDisposable
|
||||
import kotlinx.android.synthetic.main.automation_dialog_event.*
|
||||
import javax.inject.Inject
|
||||
|
||||
class EditEventDialog : DialogFragmentWithDate() {
|
||||
|
||||
@Inject lateinit var rxBus: RxBusWrapper
|
||||
@Inject lateinit var mainApp: MainApp
|
||||
@Inject lateinit var fabricPrivacy: FabricPrivacy
|
||||
|
@ -42,8 +44,14 @@ class EditEventDialog : DialogFragmentWithDate() {
|
|||
|
||||
private var disposable: CompositeDisposable = CompositeDisposable()
|
||||
|
||||
private var _binding: AutomationDialogEventBinding? = null
|
||||
|
||||
// This property is only valid between onCreateView and
|
||||
// onDestroyView.
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?): View? {
|
||||
savedInstanceState: Bundle?): View {
|
||||
event = AutomationEvent(mainApp)
|
||||
// load data from bundle
|
||||
(savedInstanceState ?: arguments)?.let { bundle ->
|
||||
|
@ -52,16 +60,21 @@ class EditEventDialog : DialogFragmentWithDate() {
|
|||
}
|
||||
|
||||
onCreateViewGeneral()
|
||||
return inflater.inflate(R.layout.automation_dialog_event, container, false)
|
||||
_binding = AutomationDialogEventBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
automation_inputEventTitle.setText(event.title)
|
||||
automation_triggerDescription.text = event.trigger.friendlyDescription()
|
||||
binding.okcancel.ok.visibility = (!event.readOnly).toVisibility()
|
||||
|
||||
automation_editTrigger.setOnClickListener {
|
||||
binding.inputEventTitle.setText(event.title)
|
||||
binding.inputEventTitle.isFocusable = false
|
||||
binding.triggerDescription.text = event.trigger.friendlyDescription()
|
||||
|
||||
binding.editTrigger.visibility = (!event.readOnly).toVisibility()
|
||||
binding.editTrigger.setOnClickListener {
|
||||
val args = Bundle()
|
||||
args.putString("trigger", event.trigger.toJSON())
|
||||
val dialog = EditTriggerDialog()
|
||||
|
@ -71,10 +84,11 @@ class EditEventDialog : DialogFragmentWithDate() {
|
|||
|
||||
// setup action list view
|
||||
actionListAdapter = ActionListAdapter()
|
||||
automation_actionListView.layoutManager = LinearLayoutManager(context)
|
||||
automation_actionListView.adapter = actionListAdapter
|
||||
binding.actionListView.layoutManager = LinearLayoutManager(context)
|
||||
binding.actionListView.adapter = actionListAdapter
|
||||
|
||||
automation_addAction.setOnClickListener { ChooseActionDialog().show(childFragmentManager, "ChooseActionDialog") }
|
||||
binding.addAction.visibility = (!event.readOnly).toVisibility()
|
||||
binding.addAction.setOnClickListener { ChooseActionDialog().show(childFragmentManager, "ChooseActionDialog") }
|
||||
|
||||
showPreconditions()
|
||||
|
||||
|
@ -84,36 +98,33 @@ class EditEventDialog : DialogFragmentWithDate() {
|
|||
.subscribe({
|
||||
actionListAdapter?.notifyDataSetChanged()
|
||||
showPreconditions()
|
||||
}, { fabricPrivacy.logException(it) }
|
||||
)
|
||||
}, fabricPrivacy::logException)
|
||||
disposable += rxBus
|
||||
.toObservable(EventAutomationAddAction::class.java)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({
|
||||
event.addAction(it.action)
|
||||
actionListAdapter?.notifyDataSetChanged()
|
||||
}, { fabricPrivacy.logException(it) }
|
||||
)
|
||||
}, fabricPrivacy::logException)
|
||||
disposable += rxBus
|
||||
.toObservable(EventAutomationUpdateTrigger::class.java)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({
|
||||
event.trigger = it.trigger
|
||||
automation_triggerDescription.text = event.trigger.friendlyDescription()
|
||||
}, { fabricPrivacy.logException(it) }
|
||||
)
|
||||
binding.triggerDescription.text = event.trigger.friendlyDescription()
|
||||
}, fabricPrivacy::logException)
|
||||
disposable += rxBus
|
||||
.toObservable(EventAutomationUpdateAction::class.java)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({
|
||||
event.actions[it.position] = it.action
|
||||
actionListAdapter?.notifyDataSetChanged()
|
||||
}, { fabricPrivacy.logException(it) })
|
||||
}, fabricPrivacy::logException)
|
||||
}
|
||||
|
||||
override fun submit(): Boolean {
|
||||
// check for title
|
||||
val title = automation_inputEventTitle?.text?.toString() ?: return false
|
||||
val title = binding.inputEventTitle.text?.toString() ?: return false
|
||||
if (title.isEmpty()) {
|
||||
ToastUtils.showToastInUiThread(context, R.string.automation_missing_task_name)
|
||||
return false
|
||||
|
@ -132,9 +143,9 @@ class EditEventDialog : DialogFragmentWithDate() {
|
|||
}
|
||||
// store
|
||||
if (position == -1)
|
||||
automationPlugin.automationEvents.add(event)
|
||||
automationPlugin.add(event)
|
||||
else
|
||||
automationPlugin.automationEvents[position] = event
|
||||
automationPlugin.set(event, position)
|
||||
|
||||
rxBus.send(EventAutomationDataChanged())
|
||||
return true
|
||||
|
@ -143,6 +154,7 @@ class EditEventDialog : DialogFragmentWithDate() {
|
|||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
disposable.clear()
|
||||
_binding = null
|
||||
}
|
||||
|
||||
override fun onSaveInstanceState(savedInstanceState: Bundle) {
|
||||
|
@ -154,12 +166,12 @@ class EditEventDialog : DialogFragmentWithDate() {
|
|||
private fun showPreconditions() {
|
||||
val forcedTriggers = event.getPreconditions()
|
||||
if (forcedTriggers.size() > 0) {
|
||||
automation_forcedTriggerDescription.visibility = View.VISIBLE
|
||||
automation_forcedTriggerDescriptionLabel.visibility = View.VISIBLE
|
||||
automation_forcedTriggerDescription.text = forcedTriggers.friendlyDescription()
|
||||
binding.forcedTriggerDescription.visibility = View.VISIBLE
|
||||
binding.forcedTriggerDescriptionLabel.visibility = View.VISIBLE
|
||||
binding.forcedTriggerDescription.text = forcedTriggers.friendlyDescription()
|
||||
} else {
|
||||
automation_forcedTriggerDescription.visibility = View.GONE
|
||||
automation_forcedTriggerDescriptionLabel.visibility = View.GONE
|
||||
binding.forcedTriggerDescription.visibility = View.GONE
|
||||
binding.forcedTriggerDescriptionLabel.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -180,6 +192,7 @@ class EditEventDialog : DialogFragmentWithDate() {
|
|||
inner class ViewHolder(val view: View) : RecyclerView.ViewHolder(view) {
|
||||
|
||||
fun bind(action: Action, recyclerView: RecyclerView.Adapter<ViewHolder>, position: Int) {
|
||||
if (!event.readOnly)
|
||||
view.findViewById<LinearLayout>(R.id.automation_layoutText).setOnClickListener {
|
||||
if (action.hasDialog()) {
|
||||
val args = Bundle()
|
||||
|
@ -190,11 +203,14 @@ class EditEventDialog : DialogFragmentWithDate() {
|
|||
dialog.show(childFragmentManager, "EditActionDialog")
|
||||
}
|
||||
}
|
||||
view.findViewById<ImageView>(R.id.automation_iconTrash).setOnClickListener {
|
||||
view.findViewById<ImageView>(R.id.automation_iconTrash).run {
|
||||
visibility = (!event.readOnly).toVisibility()
|
||||
setOnClickListener {
|
||||
event.actions.remove(action)
|
||||
recyclerView.notifyDataSetChanged()
|
||||
rxBus.send(EventAutomationUpdateGui())
|
||||
}
|
||||
}
|
||||
view.findViewById<ImageView>(R.id.automation_action_image).setImageResource(action.icon())
|
||||
view.findViewById<TextView>(R.id.automation_viewActionTitle).text = action.shortDescription()
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ import android.view.LayoutInflater
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.databinding.AutomationDialogEditTriggerBinding
|
||||
import info.nightscout.androidaps.dialogs.DialogFragmentWithDate
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationUpdateTrigger
|
||||
|
@ -19,11 +19,11 @@ import info.nightscout.androidaps.utils.FabricPrivacy
|
|||
import info.nightscout.androidaps.utils.extensions.plusAssign
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.CompositeDisposable
|
||||
import kotlinx.android.synthetic.main.automation_dialog_edit_trigger.*
|
||||
import org.json.JSONObject
|
||||
import javax.inject.Inject
|
||||
|
||||
class EditTriggerDialog : DialogFragmentWithDate() {
|
||||
|
||||
@Inject lateinit var rxBus: RxBusWrapper
|
||||
@Inject lateinit var mainApp: MainApp
|
||||
@Inject lateinit var fabricPrivacy: FabricPrivacy
|
||||
|
@ -32,15 +32,22 @@ class EditTriggerDialog : DialogFragmentWithDate() {
|
|||
|
||||
private var triggers: Trigger? = null
|
||||
|
||||
private var _binding: AutomationDialogEditTriggerBinding? = null
|
||||
|
||||
// This property is only valid between onCreateView and
|
||||
// onDestroyView.
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?): View? {
|
||||
savedInstanceState: Bundle?): View {
|
||||
// load data from bundle
|
||||
(savedInstanceState ?: arguments)?.let { bundle ->
|
||||
bundle.getString("trigger")?.let { triggers = TriggerDummy(mainApp).instantiate(JSONObject(it)) }
|
||||
}
|
||||
|
||||
onCreateViewGeneral()
|
||||
return inflater.inflate(R.layout.automation_dialog_edit_trigger, container, false)
|
||||
_binding = AutomationDialogEditTriggerBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
|
@ -50,16 +57,16 @@ class EditTriggerDialog : DialogFragmentWithDate() {
|
|||
.toObservable(EventTriggerChanged::class.java)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({
|
||||
automation_layoutTrigger.removeAllViews()
|
||||
triggers?.generateDialog(automation_layoutTrigger)
|
||||
binding.layoutTrigger.removeAllViews()
|
||||
triggers?.generateDialog(binding.layoutTrigger)
|
||||
}, { fabricPrivacy.logException(it) })
|
||||
disposable += rxBus
|
||||
.toObservable(EventTriggerRemove::class.java)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({
|
||||
findParent(triggers, it.trigger)?.list?.remove(it.trigger)
|
||||
automation_layoutTrigger.removeAllViews()
|
||||
triggers?.generateDialog(automation_layoutTrigger)
|
||||
binding.layoutTrigger.removeAllViews()
|
||||
triggers?.generateDialog(binding.layoutTrigger)
|
||||
}, { fabricPrivacy.logException(it) })
|
||||
|
||||
disposable += rxBus
|
||||
|
@ -67,17 +74,18 @@ class EditTriggerDialog : DialogFragmentWithDate() {
|
|||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({
|
||||
findParent(triggers, it.trigger)?.list?.add(it.trigger.duplicate())
|
||||
automation_layoutTrigger.removeAllViews()
|
||||
triggers?.generateDialog(automation_layoutTrigger)
|
||||
binding.layoutTrigger.removeAllViews()
|
||||
triggers?.generateDialog(binding.layoutTrigger)
|
||||
}, { fabricPrivacy.logException(it) })
|
||||
|
||||
// display root trigger
|
||||
triggers?.generateDialog(automation_layoutTrigger)
|
||||
triggers?.generateDialog(binding.layoutTrigger)
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
disposable.clear()
|
||||
_binding = null
|
||||
}
|
||||
|
||||
override fun submit(): Boolean {
|
||||
|
|
|
@ -35,6 +35,12 @@ class TriggerDelta(injector: HasAndroidInjector) : Trigger(injector) {
|
|||
else InputDelta(injector, 0.0, (-MGDL_MAX), MGDL_MAX, 1.0, DecimalFormat("1"), DeltaType.DELTA)
|
||||
}
|
||||
|
||||
constructor(injector: HasAndroidInjector, inputDelta: InputDelta, units: String, comparator: Comparator.Compare) : this(injector) {
|
||||
this.units = units
|
||||
this.delta = inputDelta
|
||||
this.comparator.value = comparator
|
||||
}
|
||||
|
||||
private constructor(injector: HasAndroidInjector, triggerDelta: TriggerDelta) : this(injector) {
|
||||
units = triggerDelta.units
|
||||
delta = InputDelta(injector, triggerDelta.delta)
|
||||
|
|
|
@ -18,6 +18,7 @@ class FoodPlugin @Inject constructor(
|
|||
) : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.GENERAL)
|
||||
.fragmentClass(FoodFragment::class.java.name)
|
||||
.pluginIcon(R.drawable.ic_food)
|
||||
.pluginName(R.string.food)
|
||||
.shortName(R.string.food_short)
|
||||
.description(R.string.description_food),
|
||||
|
|
|
@ -123,7 +123,7 @@ class ImportExportPrefs @Inject constructor(
|
|||
}
|
||||
|
||||
private fun prefsEncryptionIsDisabled() =
|
||||
buildHelper.isEngineeringMode() && !sp.getBoolean(resourceHelper.gs(R.string.key_maintenance_encrypt_exported_prefs), true)
|
||||
buildHelper.isEngineeringMode() && !sp.getBoolean(R.string.key_maintenance_encrypt_exported_prefs, true)
|
||||
|
||||
private fun askForMasterPass(activity: FragmentActivity, @StringRes canceledMsg: Int, then: ((password: String) -> Unit)) {
|
||||
passwordCheck.queryPassword(activity, R.string.master_password, R.string.key_master_password, { password ->
|
||||
|
|
|
@ -40,6 +40,7 @@ class MaintenancePlugin @Inject constructor(
|
|||
.fragmentClass(MaintenanceFragment::class.java.name)
|
||||
.alwaysVisible(false)
|
||||
.alwaysEnabled(true)
|
||||
.pluginIcon(R.drawable.ic_maintenance)
|
||||
.pluginName(R.string.maintenance)
|
||||
.shortName(R.string.maintenance_shortname)
|
||||
.preferencesId(R.xml.pref_maintenance)
|
||||
|
|
|
@ -90,6 +90,7 @@ public class NSClientPlugin extends PluginBase {
|
|||
super(new PluginDescription()
|
||||
.mainType(PluginType.GENERAL)
|
||||
.fragmentClass(NSClientFragment.class.getName())
|
||||
.pluginIcon(R.drawable.ic_nightscout_syncs)
|
||||
.pluginName(R.string.nsclientinternal)
|
||||
.shortName(R.string.nsclientinternal_shortname)
|
||||
.preferencesId(R.xml.pref_nsclientinternal)
|
||||
|
|
|
@ -59,6 +59,7 @@ class OpenHumansUploader @Inject constructor(
|
|||
) : PluginBase(
|
||||
PluginDescription()
|
||||
.mainType(PluginType.GENERAL)
|
||||
.pluginIcon(R.drawable.open_humans_white)
|
||||
.pluginName(R.string.open_humans)
|
||||
.shortName(R.string.open_humans_short)
|
||||
.description(R.string.donate_your_data_to_science)
|
||||
|
|
|
@ -11,10 +11,7 @@ import android.graphics.drawable.AnimationDrawable
|
|||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.util.DisplayMetrics
|
||||
import android.view.ContextMenu
|
||||
import android.view.ContextMenu.ContextMenuInfo
|
||||
import android.view.LayoutInflater
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.View.OnLongClickListener
|
||||
import android.view.ViewGroup
|
||||
|
@ -31,17 +28,9 @@ import info.nightscout.androidaps.Config
|
|||
import info.nightscout.androidaps.Constants
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.data.Profile
|
||||
import info.nightscout.androidaps.dialogs.CalibrationDialog
|
||||
import info.nightscout.androidaps.dialogs.CarbsDialog
|
||||
import info.nightscout.androidaps.dialogs.InsulinDialog
|
||||
import info.nightscout.androidaps.dialogs.TreatmentDialog
|
||||
import info.nightscout.androidaps.dialogs.WizardDialog
|
||||
import info.nightscout.androidaps.dialogs.*
|
||||
import info.nightscout.androidaps.events.*
|
||||
import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
||||
import info.nightscout.androidaps.interfaces.Constraint
|
||||
import info.nightscout.androidaps.interfaces.DatabaseHelperInterface
|
||||
import info.nightscout.androidaps.interfaces.PluginType
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.interfaces.*
|
||||
import info.nightscout.androidaps.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
|
||||
import info.nightscout.androidaps.plugins.aps.loop.events.EventNewOpenLoopNotification
|
||||
|
@ -76,36 +65,16 @@ import io.reactivex.android.schedulers.AndroidSchedulers
|
|||
import io.reactivex.disposables.CompositeDisposable
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import kotlinx.android.synthetic.main.overview_buttons_layout.*
|
||||
import kotlinx.android.synthetic.main.overview_buttons_layout.overview_carbsbutton
|
||||
import kotlinx.android.synthetic.main.overview_buttons_layout.overview_insulinbutton
|
||||
import kotlinx.android.synthetic.main.overview_buttons_layout.overview_quickwizardbutton
|
||||
import kotlinx.android.synthetic.main.overview_buttons_layout.overview_treatmentbutton
|
||||
import kotlinx.android.synthetic.main.overview_buttons_layout.overview_wizardbutton
|
||||
import kotlinx.android.synthetic.main.overview_fragment.overview_notifications
|
||||
import kotlinx.android.synthetic.main.overview_fragment_nsclient.*
|
||||
import kotlinx.android.synthetic.main.overview_graphs_layout.overview_bggraph
|
||||
import kotlinx.android.synthetic.main.overview_graphs_layout.overview_chartMenuButton
|
||||
import kotlinx.android.synthetic.main.overview_graphs_layout.overview_iobcalculationprogess
|
||||
import kotlinx.android.synthetic.main.overview_graphs_layout.overview_iobgraph
|
||||
import kotlinx.android.synthetic.main.overview_graphs_layout.*
|
||||
import kotlinx.android.synthetic.main.overview_info_layout.*
|
||||
import kotlinx.android.synthetic.main.overview_info_layout.overview_arrow
|
||||
import kotlinx.android.synthetic.main.overview_info_layout.overview_basebasal
|
||||
import kotlinx.android.synthetic.main.overview_info_layout.overview_bg
|
||||
import kotlinx.android.synthetic.main.overview_info_layout.overview_cob
|
||||
import kotlinx.android.synthetic.main.overview_info_layout.overview_extendedbolus
|
||||
import kotlinx.android.synthetic.main.overview_info_layout.overview_iob
|
||||
import kotlinx.android.synthetic.main.overview_info_layout.overview_sensitivity
|
||||
import kotlinx.android.synthetic.main.overview_info_layout.overview_time
|
||||
import kotlinx.android.synthetic.main.overview_info_layout.overview_timeagoshort
|
||||
import kotlinx.android.synthetic.main.overview_loop_pumpstatus_layout.*
|
||||
import kotlinx.android.synthetic.main.overview_statuslights_layout.*
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.util.*
|
||||
import java.util.concurrent.Executors
|
||||
import java.util.concurrent.ScheduledFuture
|
||||
import java.util.concurrent.TimeUnit
|
||||
import javax.inject.Inject
|
||||
import kotlin.collections.ArrayList
|
||||
import kotlin.math.abs
|
||||
|
@ -155,9 +124,6 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
private var loopHandler = Handler()
|
||||
private var refreshLoop: Runnable? = null
|
||||
|
||||
private val worker = Executors.newSingleThreadScheduledExecutor()
|
||||
private var scheduledUpdate: ScheduledFuture<*>? = null
|
||||
|
||||
private val secondaryGraphs = ArrayList<GraphView>()
|
||||
private val secondaryGraphsLabel = ArrayList<TextView>()
|
||||
|
||||
|
@ -214,6 +180,10 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
overviewMenus.setupChartMenu(overview_chartMenuButton)
|
||||
prepareGraphs()
|
||||
|
||||
overview_activeprofile?.setOnClickListener(this)
|
||||
overview_activeprofile?.setOnLongClickListener(this)
|
||||
overview_temptarget?.setOnClickListener(this)
|
||||
overview_temptarget?.setOnLongClickListener(this)
|
||||
overview_accepttempbutton?.setOnClickListener(this)
|
||||
overview_treatmentbutton?.setOnClickListener(this)
|
||||
overview_wizardbutton?.setOnClickListener(this)
|
||||
|
@ -223,15 +193,15 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
overview_carbsbutton?.setOnClickListener(this)
|
||||
overview_quickwizardbutton?.setOnClickListener(this)
|
||||
overview_quickwizardbutton?.setOnLongClickListener(this)
|
||||
overview_apsmode?.setOnClickListener(this)
|
||||
overview_apsmode?.setOnLongClickListener(this)
|
||||
overview_activeprofile?.setOnLongClickListener(this)
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
disposable.clear()
|
||||
loopHandler.removeCallbacksAndMessages(null)
|
||||
overview_apsmode_llayout?.let { unregisterForContextMenu(it) }
|
||||
overview_activeprofile?.let { unregisterForContextMenu(it) }
|
||||
overview_temptarget?.let { unregisterForContextMenu(it) }
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
|
@ -303,20 +273,9 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
}
|
||||
loopHandler.postDelayed(refreshLoop, 60 * 1000L)
|
||||
|
||||
overview_apsmode_llayout?.let { registerForContextMenu(overview_apsmode) }
|
||||
overview_activeprofile?.let { registerForContextMenu(it) }
|
||||
overview_temptarget?.let { registerForContextMenu(it) }
|
||||
updateGUI("onResume")
|
||||
}
|
||||
|
||||
override fun onCreateContextMenu(menu: ContextMenu, v: View, menuInfo: ContextMenuInfo?) {
|
||||
super.onCreateContextMenu(menu, v, menuInfo)
|
||||
overviewMenus.createContextMenu(menu, v)
|
||||
}
|
||||
|
||||
override fun onContextItemSelected(item: MenuItem): Boolean {
|
||||
return if (overviewMenus.onContextItemSelected(item, childFragmentManager)) true else super.onContextItemSelected(item)
|
||||
}
|
||||
|
||||
override fun onClick(v: View) {
|
||||
// try to fix https://fabric.io/nightscout3/android/apps/info.nightscout.androidaps/issues/5aca7a1536c7b23527eb4be7?time=last-seven-days
|
||||
|
@ -329,7 +288,15 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
R.id.overview_insulinbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { InsulinDialog().show(childFragmentManager, "Overview") })
|
||||
R.id.overview_quickwizardbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { onClickQuickWizard() })
|
||||
R.id.overview_carbsbutton -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { CarbsDialog().show(childFragmentManager, "Overview") })
|
||||
|
||||
R.id.overview_temptarget -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { TempTargetDialog().show(childFragmentManager, "Overview") })
|
||||
R.id.overview_activeprofile -> {
|
||||
val args = Bundle()
|
||||
args.putLong("time", DateUtil.now())
|
||||
args.putInt("mode", ProfileViewerDialog.Mode.RUNNING_PROFILE.ordinal)
|
||||
val pvd = ProfileViewerDialog()
|
||||
pvd.arguments = args
|
||||
pvd.show(childFragmentManager, "ProfileViewDialog")
|
||||
}
|
||||
R.id.overview_cgmbutton -> {
|
||||
if (xdripPlugin.isEnabled(PluginType.BGSOURCE))
|
||||
openCgmApp("com.eveningoutpost.dexdrip")
|
||||
|
@ -373,6 +340,14 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
R.id.overview_apsmode -> {
|
||||
val args = Bundle()
|
||||
args.putInt("showOkCancel", 1) // 1-> true
|
||||
val pvd = LoopDialog()
|
||||
pvd.arguments = args
|
||||
pvd.show(childFragmentManager, "Overview")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -397,6 +372,16 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
startActivity(Intent(v.context, QuickWizardListActivity::class.java))
|
||||
return true
|
||||
}
|
||||
R.id.overview_apsmode -> {
|
||||
val args = Bundle()
|
||||
args.putInt("showOkCancel", 0) // 0-> false
|
||||
val pvd = LoopDialog()
|
||||
pvd.arguments = args
|
||||
pvd.show(childFragmentManager, "Overview")
|
||||
}
|
||||
R.id.overview_temptarget -> v.performClick()
|
||||
R.id.overview_activeprofile -> activity?.let { activity -> protectionCheck.queryProtection(activity, ProtectionCheck.Protection.BOLUS, UIRunnable { ProfileSwitchDialog().show(childFragmentManager, "Overview") })}
|
||||
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
@ -522,21 +507,19 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
}
|
||||
}
|
||||
|
||||
var task: Runnable? = null
|
||||
|
||||
private fun scheduleUpdateGUI(from: String) {
|
||||
class UpdateRunnable : Runnable {
|
||||
|
||||
override fun run() {
|
||||
activity?.runOnUiThread {
|
||||
updateGUI(from)
|
||||
scheduledUpdate = null
|
||||
task = null
|
||||
}
|
||||
}
|
||||
}
|
||||
// prepare task for execution in 500 milliseconds
|
||||
// cancel waiting task to prevent multiple updates
|
||||
scheduledUpdate?.cancel(false)
|
||||
val task: Runnable = UpdateRunnable()
|
||||
scheduledUpdate = worker.schedule(task, 500, TimeUnit.MILLISECONDS)
|
||||
view?.removeCallbacks(task)
|
||||
task = UpdateRunnable()
|
||||
view?.postDelayed(task, 500)
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
|
@ -562,6 +545,14 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
val units = profileFunction.getUnits()
|
||||
val lowLine = defaultValueHelper.determineLowLine()
|
||||
val highLine = defaultValueHelper.determineHighLine()
|
||||
val lastRun = loopPlugin.lastRun
|
||||
val predictionsAvailable = if (config.APS) lastRun?.request?.hasPredictions == true else config.NSCLIENT
|
||||
|
||||
try {
|
||||
updateGraph(lastRun, predictionsAvailable, lowLine, highLine, pump, profile)
|
||||
} catch (e: IllegalStateException) {
|
||||
return // view no longer exists
|
||||
}
|
||||
|
||||
//Start with updating the BG as it is unaffected by loop.
|
||||
// **** BG value ****
|
||||
|
@ -664,8 +655,6 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
overview_apsmode_text?.visibility = View.GONE
|
||||
overview_time_llayout?.visibility = View.VISIBLE
|
||||
}
|
||||
val lastRun = loopPlugin.lastRun
|
||||
val predictionsAvailable = if (config.APS) lastRun?.request?.hasPredictions == true else config.NSCLIENT
|
||||
|
||||
// temp target
|
||||
val tempTarget = treatmentsPlugin.tempTargetFromHistory
|
||||
|
@ -803,8 +792,9 @@ class OverviewFragment : DaggerFragment(), View.OnClickListener, OnLongClickList
|
|||
iobCobCalculatorPlugin.getLastAutosensData("Overview")?.let { autosensData ->
|
||||
String.format(Locale.ENGLISH, "%.0f%%", autosensData.autosensResult.ratio * 100)
|
||||
} ?: ""
|
||||
}
|
||||
|
||||
// ****** GRAPH *******
|
||||
private fun updateGraph(lastRun: LoopInterface.LastRun?, predictionsAvailable: Boolean, lowLine: Double, highLine: Double, pump: PumpInterface, profile: Profile) {
|
||||
viewLifecycleOwner.lifecycleScope.launch(Dispatchers.Main) {
|
||||
overview_bggraph ?: return@launch
|
||||
val graphData = GraphData(injector, overview_bggraph, iobCobCalculatorPlugin, treatmentsPlugin)
|
||||
|
|
|
@ -1,43 +1,20 @@
|
|||
package info.nightscout.androidaps.plugins.general.overview
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.text.SpannableString
|
||||
import android.text.style.ForegroundColorSpan
|
||||
import android.view.ContextMenu
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.widget.ImageButton
|
||||
import androidx.annotation.ColorRes
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.appcompat.widget.PopupMenu
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import com.google.gson.Gson
|
||||
import info.nightscout.androidaps.Config
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.activities.ErrorHelperActivity
|
||||
import info.nightscout.androidaps.data.Profile
|
||||
import info.nightscout.androidaps.db.Source
|
||||
import info.nightscout.androidaps.db.TempTarget
|
||||
import info.nightscout.androidaps.dialogs.ProfileSwitchDialog
|
||||
import info.nightscout.androidaps.dialogs.ProfileViewerDialog
|
||||
import info.nightscout.androidaps.dialogs.TempTargetDialog
|
||||
import info.nightscout.androidaps.events.EventRefreshOverview
|
||||
import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
||||
import info.nightscout.androidaps.interfaces.CommandQueueProvider
|
||||
import info.nightscout.androidaps.interfaces.PluginType
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.interfaces.PumpDescription
|
||||
import info.nightscout.androidaps.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
|
||||
import info.nightscout.androidaps.queue.Callback
|
||||
import info.nightscout.androidaps.utils.DateUtil
|
||||
import info.nightscout.androidaps.utils.DefaultValueHelper
|
||||
import info.nightscout.androidaps.utils.ToastUtils
|
||||
import info.nightscout.androidaps.utils.buildHelper.BuildHelper
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||
|
@ -50,13 +27,7 @@ class OverviewMenus @Inject constructor(
|
|||
private val resourceHelper: ResourceHelper,
|
||||
private val sp: SP,
|
||||
private val rxBus: RxBusWrapper,
|
||||
private val context: Context,
|
||||
private val buildHelper: BuildHelper,
|
||||
private val defaultValueHelper: DefaultValueHelper,
|
||||
private val activePlugin: ActivePluginProvider,
|
||||
private val profileFunction: ProfileFunction,
|
||||
private val commandQueue: CommandQueueProvider,
|
||||
private val configBuilderPlugin: ConfigBuilderPlugin,
|
||||
private val loopPlugin: LoopPlugin,
|
||||
private val config: Config
|
||||
) {
|
||||
|
@ -175,247 +146,4 @@ class OverviewMenus @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
fun createContextMenu(menu: ContextMenu, v: View) {
|
||||
when (v.id) {
|
||||
R.id.overview_apsmode -> {
|
||||
val pumpDescription: PumpDescription = activePlugin.activePump.pumpDescription
|
||||
if (!profileFunction.isProfileValid("ContextMenuCreation")) return
|
||||
menu.setHeaderTitle(resourceHelper.gs(R.string.loop))
|
||||
if (loopPlugin.isEnabled(PluginType.LOOP)) {
|
||||
menu.add(resourceHelper.gs(R.string.disableloop))
|
||||
if (!loopPlugin.isSuspended) {
|
||||
menu.add(resourceHelper.gs(R.string.suspendloopfor1h))
|
||||
menu.add(resourceHelper.gs(R.string.suspendloopfor2h))
|
||||
menu.add(resourceHelper.gs(R.string.suspendloopfor3h))
|
||||
menu.add(resourceHelper.gs(R.string.suspendloopfor10h))
|
||||
} else {
|
||||
if (!loopPlugin.isDisconnected) {
|
||||
menu.add(resourceHelper.gs(R.string.resume))
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!loopPlugin.isEnabled(PluginType.LOOP)) {
|
||||
menu.add(resourceHelper.gs(R.string.enableloop))
|
||||
}
|
||||
if (!loopPlugin.isDisconnected) {
|
||||
showSuspendPump(menu, pumpDescription)
|
||||
} else {
|
||||
menu.add(resourceHelper.gs(R.string.reconnect))
|
||||
}
|
||||
}
|
||||
|
||||
R.id.overview_activeprofile -> {
|
||||
menu.setHeaderTitle(resourceHelper.gs(R.string.profile))
|
||||
menu.add(resourceHelper.gs(R.string.viewprofile))
|
||||
if (activePlugin.activeProfileInterface.profile != null) {
|
||||
menu.add(resourceHelper.gs(R.string.careportal_profileswitch))
|
||||
}
|
||||
}
|
||||
|
||||
R.id.overview_temptarget -> {
|
||||
menu.setHeaderTitle(resourceHelper.gs(R.string.careportal_temporarytarget))
|
||||
menu.add(resourceHelper.gs(R.string.custom))
|
||||
menu.add(resourceHelper.gs(R.string.eatingsoon))
|
||||
menu.add(resourceHelper.gs(R.string.activity))
|
||||
menu.add(resourceHelper.gs(R.string.hypo))
|
||||
if (activePlugin.activeTreatments.tempTargetFromHistory != null) {
|
||||
menu.add(resourceHelper.gs(R.string.cancel))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun showSuspendPump(menu: ContextMenu, pumpDescription: PumpDescription) {
|
||||
if (pumpDescription.tempDurationStep15mAllowed) menu.add(resourceHelper.gs(R.string.disconnectpumpfor15m))
|
||||
if (pumpDescription.tempDurationStep30mAllowed) menu.add(resourceHelper.gs(R.string.disconnectpumpfor30m))
|
||||
menu.add(resourceHelper.gs(R.string.disconnectpumpfor1h))
|
||||
menu.add(resourceHelper.gs(R.string.disconnectpumpfor2h))
|
||||
menu.add(resourceHelper.gs(R.string.disconnectpumpfor3h))
|
||||
}
|
||||
|
||||
fun onContextItemSelected(item: MenuItem, manager: FragmentManager): Boolean {
|
||||
val profile = profileFunction.getProfile() ?: return true
|
||||
when (item.title) {
|
||||
resourceHelper.gs(R.string.disableloop) -> {
|
||||
aapsLogger.debug("USER ENTRY: LOOP DISABLED")
|
||||
loopPlugin.setPluginEnabled(PluginType.LOOP, false)
|
||||
loopPlugin.setFragmentVisible(PluginType.LOOP, false)
|
||||
configBuilderPlugin.storeSettings("DisablingLoop")
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
commandQueue.cancelTempBasal(true, object : Callback() {
|
||||
override fun run() {
|
||||
if (!result.success) {
|
||||
ToastUtils.showToastInUiThread(context, resourceHelper.gs(R.string.tempbasaldeliveryerror))
|
||||
}
|
||||
}
|
||||
})
|
||||
loopPlugin.createOfflineEvent(24 * 60) // upload 24h, we don't know real duration
|
||||
return true
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.enableloop) -> {
|
||||
aapsLogger.debug("USER ENTRY: LOOP ENABLED")
|
||||
loopPlugin.setPluginEnabled(PluginType.LOOP, true)
|
||||
loopPlugin.setFragmentVisible(PluginType.LOOP, true)
|
||||
configBuilderPlugin.storeSettings("EnablingLoop")
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
loopPlugin.createOfflineEvent(0)
|
||||
return true
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.resume), resourceHelper.gs(R.string.reconnect) -> {
|
||||
aapsLogger.debug("USER ENTRY: RESUME")
|
||||
loopPlugin.suspendTo(0L)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
commandQueue.cancelTempBasal(true, object : Callback() {
|
||||
override fun run() {
|
||||
if (!result.success) {
|
||||
val i = Intent(context, ErrorHelperActivity::class.java)
|
||||
i.putExtra("soundid", R.raw.boluserror)
|
||||
i.putExtra("status", result.comment)
|
||||
i.putExtra("title", resourceHelper.gs(R.string.tempbasaldeliveryerror))
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
context.startActivity(i)
|
||||
}
|
||||
}
|
||||
})
|
||||
sp.putBoolean(R.string.key_objectiveusereconnect, true)
|
||||
loopPlugin.createOfflineEvent(0)
|
||||
return true
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.suspendloopfor1h) -> {
|
||||
aapsLogger.debug("USER ENTRY: SUSPEND 1h")
|
||||
loopPlugin.suspendLoop(60)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.suspendloopfor2h) -> {
|
||||
aapsLogger.debug("USER ENTRY: SUSPEND 2h")
|
||||
loopPlugin.suspendLoop(120)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.suspendloopfor3h) -> {
|
||||
aapsLogger.debug("USER ENTRY: SUSPEND 3h")
|
||||
loopPlugin.suspendLoop(180)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.suspendloopfor10h) -> {
|
||||
aapsLogger.debug("USER ENTRY: SUSPEND 10h")
|
||||
loopPlugin.suspendLoop(600)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.disconnectpumpfor15m) -> {
|
||||
aapsLogger.debug("USER ENTRY: DISCONNECT 15m")
|
||||
loopPlugin.disconnectPump(15, profile)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.disconnectpumpfor30m) -> {
|
||||
aapsLogger.debug("USER ENTRY: DISCONNECT 30m")
|
||||
loopPlugin.disconnectPump(30, profile)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.disconnectpumpfor1h) -> {
|
||||
aapsLogger.debug("USER ENTRY: DISCONNECT 1h")
|
||||
loopPlugin.disconnectPump(60, profile)
|
||||
sp.putBoolean(R.string.key_objectiveusedisconnect, true)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.disconnectpumpfor2h) -> {
|
||||
aapsLogger.debug("USER ENTRY: DISCONNECT 2h")
|
||||
loopPlugin.disconnectPump(120, profile)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.disconnectpumpfor3h) -> {
|
||||
aapsLogger.debug("USER ENTRY: DISCONNECT 3h")
|
||||
loopPlugin.disconnectPump(180, profile)
|
||||
rxBus.send(EventRefreshOverview("suspendmenu"))
|
||||
return true
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.careportal_profileswitch) -> {
|
||||
ProfileSwitchDialog().show(manager, "Overview")
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.viewprofile) -> {
|
||||
val args = Bundle()
|
||||
args.putLong("time", DateUtil.now())
|
||||
args.putInt("mode", ProfileViewerDialog.Mode.RUNNING_PROFILE.ordinal)
|
||||
val pvd = ProfileViewerDialog()
|
||||
pvd.arguments = args
|
||||
pvd.show(manager, "ProfileViewDialog")
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.eatingsoon) -> {
|
||||
aapsLogger.debug("USER ENTRY: TEMP TARGET EATING SOON")
|
||||
val target = Profile.toMgdl(defaultValueHelper.determineEatingSoonTT(), profileFunction.getUnits())
|
||||
val tempTarget = TempTarget()
|
||||
.date(System.currentTimeMillis())
|
||||
.duration(defaultValueHelper.determineEatingSoonTTDuration())
|
||||
.reason(resourceHelper.gs(R.string.eatingsoon))
|
||||
.source(Source.USER)
|
||||
.low(target)
|
||||
.high(target)
|
||||
activePlugin.activeTreatments.addToHistoryTempTarget(tempTarget)
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.activity) -> {
|
||||
aapsLogger.debug("USER ENTRY: TEMP TARGET ACTIVITY")
|
||||
val target = Profile.toMgdl(defaultValueHelper.determineActivityTT(), profileFunction.getUnits())
|
||||
val tempTarget = TempTarget()
|
||||
.date(DateUtil.now())
|
||||
.duration(defaultValueHelper.determineActivityTTDuration())
|
||||
.reason(resourceHelper.gs(R.string.activity))
|
||||
.source(Source.USER)
|
||||
.low(target)
|
||||
.high(target)
|
||||
activePlugin.activeTreatments.addToHistoryTempTarget(tempTarget)
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.hypo) -> {
|
||||
aapsLogger.debug("USER ENTRY: TEMP TARGET HYPO")
|
||||
val target = Profile.toMgdl(defaultValueHelper.determineHypoTT(), profileFunction.getUnits())
|
||||
val tempTarget = TempTarget()
|
||||
.date(DateUtil.now())
|
||||
.duration(defaultValueHelper.determineHypoTTDuration())
|
||||
.reason(resourceHelper.gs(R.string.hypo))
|
||||
.source(Source.USER)
|
||||
.low(target)
|
||||
.high(target)
|
||||
activePlugin.activeTreatments.addToHistoryTempTarget(tempTarget)
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.custom) -> {
|
||||
TempTargetDialog().show(manager, "Overview")
|
||||
}
|
||||
|
||||
resourceHelper.gs(R.string.cancel) -> {
|
||||
aapsLogger.debug("USER ENTRY: TEMP TARGET CANCEL")
|
||||
val tempTarget = TempTarget()
|
||||
.source(Source.USER)
|
||||
.date(DateUtil.now())
|
||||
.duration(0)
|
||||
.low(0.0)
|
||||
.high(0.0)
|
||||
activePlugin.activeTreatments.addToHistoryTempTarget(tempTarget)
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
}
|
|
@ -41,6 +41,7 @@ class OverviewPlugin @Inject constructor(
|
|||
.fragmentClass(OverviewFragment::class.qualifiedName)
|
||||
.alwaysVisible(true)
|
||||
.alwaysEnabled(true)
|
||||
.pluginIcon(R.drawable.ic_home)
|
||||
.pluginName(R.string.overview)
|
||||
.shortName(R.string.overview_shortname)
|
||||
.preferencesId(R.xml.pref_overview)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package info.nightscout.androidaps.plugins.general.overview
|
||||
|
||||
import android.graphics.Color
|
||||
import android.widget.TextView
|
||||
import androidx.annotation.StringRes
|
||||
import info.nightscout.androidaps.Config
|
||||
|
@ -8,6 +9,8 @@ import info.nightscout.androidaps.R
|
|||
import info.nightscout.androidaps.db.CareportalEvent
|
||||
import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
||||
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin
|
||||
import info.nightscout.androidaps.plugins.pump.omnipod.driver.definition.OmnipodConstants
|
||||
import info.nightscout.androidaps.utils.DecimalFormatter
|
||||
import info.nightscout.androidaps.utils.WarnColors
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
|
@ -33,17 +36,29 @@ class StatusLightHandler @Inject constructor(
|
|||
handleAge(careportal_canulaage, CareportalEvent.SITECHANGE, R.string.key_statuslights_cage_warning, 48.0, R.string.key_statuslights_cage_critical, 72.0)
|
||||
handleAge(careportal_insulinage, CareportalEvent.INSULINCHANGE, R.string.key_statuslights_iage_warning, 72.0, R.string.key_statuslights_iage_critical, 144.0)
|
||||
handleAge(careportal_sensorage, CareportalEvent.SENSORCHANGE, R.string.key_statuslights_sage_warning, 216.0, R.string.key_statuslights_sage_critical, 240.0)
|
||||
if (pump.pumpDescription.isBatteryReplaceable) {
|
||||
handleAge(careportal_pbage, CareportalEvent.PUMPBATTERYCHANGE, R.string.key_statuslights_bage_warning, 216.0, R.string.key_statuslights_bage_critical, 240.0)
|
||||
}
|
||||
if (!config.NSCLIENT) {
|
||||
if (pump.model() == PumpType.Insulet_Omnipod) {
|
||||
handleOmnipodReservoirLevel(careportal_reservoirlevel, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel, "U")
|
||||
} else {
|
||||
handleLevel(careportal_reservoirlevel, R.string.key_statuslights_res_critical, 10.0, R.string.key_statuslights_res_warning, 80.0, pump.reservoirLevel, "U")
|
||||
}
|
||||
if (bgSource.sensorBatteryLevel != -1)
|
||||
handleLevel(careportal_sensorbatterylevel, R.string.key_statuslights_sbat_critical, 5.0, R.string.key_statuslights_sbat_warning, 20.0, bgSource.sensorBatteryLevel.toDouble(), "%")
|
||||
else
|
||||
careportal_sensorbatterylevel?.text = ""
|
||||
}
|
||||
if (!config.NSCLIENT && pump.model() != PumpType.AccuChekCombo)
|
||||
|
||||
if (!config.NSCLIENT) {
|
||||
if (pump.model() == PumpType.Insulet_Omnipod && pump is OmnipodPumpPlugin) { // instanceof check is needed because at startup, pump can still be VirtualPumpPlugin and that will cause a crash because of the class cast below
|
||||
handleOmnipodBatteryLevel(careportal_batterylevel, R.string.key_statuslights_bat_critical, 26.0, R.string.key_statuslights_bat_warning, 51.0, pump.batteryLevel.toDouble(), "%", (pump as OmnipodPumpPlugin).isUseRileyLinkBatteryLevel)
|
||||
} else if (pump.model() != PumpType.AccuChekCombo) {
|
||||
handleLevel(careportal_batterylevel, R.string.key_statuslights_bat_critical, 26.0, R.string.key_statuslights_bat_warning, 51.0, pump.batteryLevel.toDouble(), "%")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleAge(view: TextView?, eventName: String, @StringRes warnSettings: Int, defaultWarnThreshold: Double, @StringRes urgentSettings: Int, defaultUrgentThreshold: Double) {
|
||||
val warn = sp.getDouble(warnSettings, defaultWarnThreshold)
|
||||
|
@ -64,4 +79,24 @@ class StatusLightHandler @Inject constructor(
|
|||
view?.text = " " + DecimalFormatter.to0Decimal(level) + units
|
||||
warnColors.setColorInverse(view, level, resWarn, resUrgent)
|
||||
}
|
||||
|
||||
// Omnipod only reports reservoir level when it's 50 units or less, so we display "50+U" for any value > 50
|
||||
private fun handleOmnipodReservoirLevel(view: TextView?, criticalSetting: Int, criticalDefaultValue: Double, warnSetting: Int, warnDefaultValue: Double, level: Double, units: String) {
|
||||
if (level > OmnipodConstants.MAX_RESERVOIR_READING) {
|
||||
@Suppress("SetTextI18n")
|
||||
view?.text = " 50+$units"
|
||||
view?.setTextColor(Color.WHITE)
|
||||
} else {
|
||||
handleLevel(view, criticalSetting, criticalDefaultValue, warnSetting, warnDefaultValue, level, units)
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleOmnipodBatteryLevel(view: TextView?, criticalSetting: Int, criticalDefaultValue: Double, warnSetting: Int, warnDefaultValue: Double, level: Double, units: String, useRileyLinkBatteryLevel: Boolean) {
|
||||
if (useRileyLinkBatteryLevel) {
|
||||
handleLevel(view, criticalSetting, criticalDefaultValue, warnSetting, warnDefaultValue, level, units)
|
||||
} else {
|
||||
view?.text = resourceHelper.gs(R.string.notavailable)
|
||||
view?.setTextColor(Color.WHITE)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -66,6 +66,7 @@ class SmsCommunicatorPlugin @Inject constructor(
|
|||
) : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.GENERAL)
|
||||
.fragmentClass(SmsCommunicatorFragment::class.java.name)
|
||||
.pluginIcon(R.drawable.ic_sms)
|
||||
.pluginName(R.string.smscommunicator)
|
||||
.shortName(R.string.smscommunicator_shortname)
|
||||
.preferencesId(R.xml.pref_smscommunicator)
|
||||
|
|
|
@ -195,7 +195,7 @@ class ActionStringHandler @Inject constructor(
|
|||
val formatInt = DecimalFormat("0")
|
||||
val bolusWizard = BolusWizard(injector).doCalc(profile, profileName, activePlugin.activeTreatments.tempTargetFromHistory,
|
||||
carbsAfterConstraints, cobInfo.displayCob!!, bgReading!!.valueToUnits(profileFunction.getUnits()),
|
||||
0.0, percentage.toDouble(), useBG, useCOB, useBolusIOB, useBasalIOB, false, useTT, useTrend)
|
||||
0.0, percentage.toDouble(), useBG, useCOB, useBolusIOB, useBasalIOB, false, useTT, useTrend, false)
|
||||
if (Math.abs(bolusWizard.insulinAfterConstraints - bolusWizard.calculatedTotalInsulin) >= 0.01) {
|
||||
sendError("Insulin constraint violation!" +
|
||||
"\nCannot deliver " + format.format(bolusWizard.calculatedTotalInsulin) + "!")
|
||||
|
@ -215,7 +215,7 @@ class ActionStringHandler @Inject constructor(
|
|||
if (useCOB) rMessage += "\nFrom" + formatInt.format(cobInfo.displayCob) + "g COB : " + format.format(bolusWizard.insulinFromCOB) + "U"
|
||||
if (useBG) rMessage += "\nFrom BG: " + format.format(bolusWizard.insulinFromBG) + "U"
|
||||
if (useBolusIOB) rMessage += "\nBolus IOB: " + format.format(bolusWizard.insulinFromBolusIOB) + "U"
|
||||
if (useBasalIOB) rMessage += "\nBasal IOB: " + format.format(bolusWizard.insulinFromBasalsIOB) + "U"
|
||||
if (useBasalIOB) rMessage += "\nBasal IOB: " + format.format(bolusWizard.insulinFromBasalIOB) + "U"
|
||||
if (useTrend) rMessage += "\nFrom 15' trend: " + format.format(bolusWizard.insulinFromTrend) + "U"
|
||||
if (percentage != 100) {
|
||||
rMessage += "\nPercentage: " + format.format(bolusWizard.totalBeforePercentageAdjustment) + "U * " + percentage + "% -> ~" + format.format(bolusWizard.calculatedTotalInsulin) + "U"
|
||||
|
|
|
@ -39,6 +39,7 @@ class WearPlugin @Inject constructor(
|
|||
) : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.GENERAL)
|
||||
.fragmentClass(WearFragment::class.java.name)
|
||||
.pluginIcon(R.drawable.ic_watch)
|
||||
.pluginName(R.string.wear)
|
||||
.shortName(R.string.wear_shortname)
|
||||
.preferencesId(R.xml.pref_wear)
|
||||
|
|
|
@ -291,7 +291,7 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
|
|||
return;
|
||||
}
|
||||
|
||||
executeTask(new SendToDataLayerThread(WEARABLE_DATA_PATH, googleApiClient), dataMap);
|
||||
(new SendToDataLayerThread(WEARABLE_DATA_PATH, googleApiClient)).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, dataMap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -402,7 +402,7 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
|
|||
}
|
||||
}
|
||||
entries.putDataMapArrayList("entries", dataMaps);
|
||||
executeTask(new SendToDataLayerThread(WEARABLE_DATA_PATH, googleApiClient), entries);
|
||||
(new SendToDataLayerThread(WEARABLE_DATA_PATH, googleApiClient)).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, entries);
|
||||
}
|
||||
sendPreferences();
|
||||
sendBasals();
|
||||
|
@ -553,8 +553,7 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
|
|||
dm.putDataMapArrayList("temps", temps);
|
||||
dm.putDataMapArrayList("boluses", boluses);
|
||||
dm.putDataMapArrayList("predictions", predictions);
|
||||
|
||||
executeTask(new SendToDataLayerThread(BASAL_DATA_PATH, googleApiClient), dm);
|
||||
(new SendToDataLayerThread(BASAL_DATA_PATH, googleApiClient)).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, dm);
|
||||
}
|
||||
|
||||
private DataMap tempDatamap(long startTime, double startBasal, long to, double toBasal, double amount) {
|
||||
|
@ -601,7 +600,6 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
|
|||
dataMapRequest.getDataMap().putLong("timestamp", System.currentTimeMillis());
|
||||
dataMapRequest.getDataMap().putString("openSettings", "openSettings");
|
||||
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
|
||||
debugData("sendNotification", putDataRequest);
|
||||
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
|
||||
} else {
|
||||
Log.e("OpenSettings", "No connection to wearable available!");
|
||||
|
@ -617,7 +615,6 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
|
|||
dataMapRequest.getDataMap().putString("progressstatus", status);
|
||||
dataMapRequest.getDataMap().putInt("progresspercent", progresspercent);
|
||||
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
|
||||
debugData("sendBolusProgress", putDataRequest);
|
||||
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
|
||||
} else {
|
||||
Log.e("BolusProgress", "No connection to wearable available!");
|
||||
|
@ -637,7 +634,6 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
|
|||
aapsLogger.debug(LTag.WEAR, "Requesting confirmation from wear: " + actionstring);
|
||||
|
||||
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
|
||||
debugData("sendActionConfirmationRequest", putDataRequest);
|
||||
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
|
||||
} else {
|
||||
Log.e("confirmationRequest", "No connection to wearable available!");
|
||||
|
@ -657,7 +653,6 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
|
|||
aapsLogger.debug(LTag.WEAR, "Requesting confirmation from wear: " + actionstring);
|
||||
|
||||
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
|
||||
debugData("sendChangeConfirmationRequest", putDataRequest);
|
||||
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
|
||||
} else {
|
||||
Log.e("changeConfirmRequest", "No connection to wearable available!");
|
||||
|
@ -675,7 +670,6 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
|
|||
aapsLogger.debug(LTag.WEAR, "Canceling notification on wear: " + actionstring);
|
||||
|
||||
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
|
||||
debugData("sendCancelNotificationRequest", putDataRequest);
|
||||
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
|
||||
} else {
|
||||
Log.e("cancelNotificationReq", "No connection to wearable available!");
|
||||
|
@ -701,8 +695,6 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
|
|||
currentBasal = generateBasalString();
|
||||
|
||||
//bgi
|
||||
|
||||
|
||||
double bgi = -(bolusIob.activity + basalIob.activity) * 5 * Profile.fromMgdlToUnits(profile.getIsfMgdl(), profileFunction.getUnits());
|
||||
bgiString = "" + ((bgi >= 0) ? "+" : "") + DecimalFormatter.to1Decimal(bgi);
|
||||
|
||||
|
@ -740,7 +732,6 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
|
|||
dataMapRequest.getDataMap().putBoolean("showBgi", sp.getBoolean(R.string.key_wear_showbgi, false));
|
||||
dataMapRequest.getDataMap().putInt("batteryLevel", (phoneBattery >= 30) ? 1 : 0);
|
||||
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
|
||||
debugData("sendStatus", putDataRequest);
|
||||
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
|
||||
} else {
|
||||
Log.e("SendStatus", "No connection to wearable available!");
|
||||
|
@ -757,29 +748,12 @@ public class WatchUpdaterService extends WearableListenerService implements Goog
|
|||
dataMapRequest.getDataMap().putLong("timestamp", System.currentTimeMillis());
|
||||
dataMapRequest.getDataMap().putBoolean("wearcontrol", wearcontrol);
|
||||
PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
|
||||
debugData("sendPreferences", putDataRequest);
|
||||
Wearable.DataApi.putDataItem(googleApiClient, putDataRequest);
|
||||
} else {
|
||||
Log.e("SendStatus", "No connection to wearable available!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void debugData(String source, Object data) {
|
||||
// Log.d(TAG, "WR: " + source + " " + data);
|
||||
}
|
||||
|
||||
@SuppressWarnings("UNCHECKED")
|
||||
private void executeTask(AsyncTask task, DataMap... parameters) {
|
||||
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, parameters);
|
||||
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
|
||||
// task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
// } else {
|
||||
// task.execute();
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
@NonNull
|
||||
private String generateStatusString(Profile profile, String currentBasal, String iobSum, String iobDetail, String bgiString) {
|
||||
|
||||
|
|
|
@ -43,6 +43,7 @@ class StatusLinePlugin @Inject constructor(
|
|||
) : PluginBase(
|
||||
PluginDescription()
|
||||
.mainType(PluginType.GENERAL)
|
||||
.pluginIcon((R.drawable.ic_blooddrop_48))
|
||||
.pluginName(R.string.xdripstatus)
|
||||
.shortName(R.string.xdripstatus_shortname)
|
||||
.neverVisible(true)
|
||||
|
|
|
@ -31,6 +31,7 @@ class InsulinLyumjevPlugin @Inject constructor(
|
|||
|
||||
init {
|
||||
pluginDescription
|
||||
.pluginIcon(R.drawable.ic_insulin)
|
||||
.pluginName(R.string.lyumjev)
|
||||
.description(R.string.description_insulin_lyumjev)
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@ abstract class InsulinOrefBasePlugin(
|
|||
) : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.INSULIN)
|
||||
.fragmentClass(InsulinFragment::class.java.name)
|
||||
.pluginIcon(R.drawable.ic_insulin)
|
||||
.shortName(R.string.insulin_shortname)
|
||||
.visibleByDefault(false),
|
||||
aapsLogger, resourceHelper, injector
|
||||
|
|
|
@ -49,6 +49,7 @@ class InsulinOrefFreePeakPlugin @Inject constructor(
|
|||
|
||||
init {
|
||||
pluginDescription
|
||||
.pluginIcon(R.drawable.ic_insulin)
|
||||
.pluginName(R.string.free_peak_oref)
|
||||
.preferencesId(R.xml.pref_insulinoreffreepeak)
|
||||
.description(R.string.description_insulin_free_peak)
|
||||
|
|
|
@ -37,6 +37,7 @@ class LocalProfilePlugin @Inject constructor(
|
|||
.mainType(PluginType.PROFILE)
|
||||
.fragmentClass(LocalProfileFragment::class.java.name)
|
||||
.enableByDefault(true)
|
||||
.pluginIcon(R.drawable.ic_local_profile)
|
||||
.pluginName(R.string.localprofile)
|
||||
.shortName(R.string.localprofile_shortname)
|
||||
.description(R.string.description_profile_local)
|
||||
|
|
|
@ -32,6 +32,7 @@ class NSProfilePlugin @Inject constructor(
|
|||
) : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.PROFILE)
|
||||
.fragmentClass(NSProfileFragment::class.java.name)
|
||||
.pluginIcon(R.drawable.ic_nightscout_profile)
|
||||
.pluginName(R.string.nsprofile)
|
||||
.shortName(R.string.profileviewer_shortname)
|
||||
.alwaysEnabled(config.NSCLIENT)
|
||||
|
|
|
@ -147,7 +147,7 @@ public class ComboPlugin extends PumpPluginBase implements PumpInterface, Constr
|
|||
super(new PluginDescription()
|
||||
.mainType(PluginType.PUMP)
|
||||
.fragmentClass(ComboFragment.class.getName())
|
||||
.pluginIcon(R.drawable.ic_combo)
|
||||
.pluginIcon(R.drawable.ic_combo_128)
|
||||
.pluginName(R.string.combopump)
|
||||
.shortName(R.string.combopump_shortname)
|
||||
.description(R.string.description_pump_combo),
|
||||
|
@ -338,7 +338,7 @@ public class ComboPlugin extends PumpPluginBase implements PumpInterface, Constr
|
|||
* Runs pump initialization if needed and reads the pump state from the main screen.
|
||||
*/
|
||||
@Override
|
||||
public synchronized void getPumpStatus() {
|
||||
public synchronized void getPumpStatus(String reason) {
|
||||
getAapsLogger().debug(LTag.PUMP, "getPumpStatus called");
|
||||
if (!pump.initialized) {
|
||||
initializePump();
|
||||
|
|
|
@ -219,7 +219,7 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface,
|
|||
DateUtil dateUtil
|
||||
) {
|
||||
super(new PluginDescription()
|
||||
.pluginIcon(R.drawable.ic_insight)
|
||||
.pluginIcon(R.drawable.ic_insight_128)
|
||||
.pluginName(R.string.insight_local)
|
||||
.shortName(R.string.insightpump_shortname)
|
||||
.mainType(PluginType.PUMP)
|
||||
|
@ -370,7 +370,7 @@ public class LocalInsightPlugin extends PumpPluginBase implements PumpInterface,
|
|||
}
|
||||
|
||||
@Override
|
||||
public void getPumpStatus() {
|
||||
public void getPumpStatus(String reason) {
|
||||
try {
|
||||
tbrOverNotificationBlock = ParameterBlockUtil.readParameterBlock(connectionService, Service.CONFIGURATION, TBROverNotificationBlock.class);
|
||||
readHistory();
|
||||
|
|
|
@ -57,6 +57,7 @@ public class MDIPlugin extends PumpPluginBase implements PumpInterface {
|
|||
) {
|
||||
super(new PluginDescription()
|
||||
.mainType(PluginType.PUMP)
|
||||
.pluginIcon(R.drawable.ic_ict)
|
||||
.pluginName(R.string.mdi)
|
||||
.description(R.string.description_pump_mdi),
|
||||
injector, aapsLogger, resourceHelper, commandQueue
|
||||
|
@ -132,7 +133,7 @@ public class MDIPlugin extends PumpPluginBase implements PumpInterface {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void getPumpStatus() {
|
||||
public void getPumpStatus(String reason) {
|
||||
}
|
||||
|
||||
@NonNull @Override
|
||||
|
|
|
@ -58,6 +58,7 @@ class VirtualPumpPlugin @Inject constructor(
|
|||
) : PumpPluginBase(PluginDescription()
|
||||
.mainType(PluginType.PUMP)
|
||||
.fragmentClass(VirtualPumpFragment::class.java.name)
|
||||
.pluginIcon(R.drawable.ic_virtual_pump)
|
||||
.pluginName(R.string.virtualpump)
|
||||
.shortName(R.string.virtualpump_shortname)
|
||||
.preferencesId(R.xml.pref_virtualpump)
|
||||
|
@ -178,7 +179,7 @@ class VirtualPumpPlugin @Inject constructor(
|
|||
|
||||
override fun disconnect(reason: String) {}
|
||||
override fun stopConnecting() {}
|
||||
override fun getPumpStatus() {
|
||||
override fun getPumpStatus(reason: String?) {
|
||||
lastDataTime = System.currentTimeMillis()
|
||||
}
|
||||
|
||||
|
|
|
@ -56,6 +56,7 @@ public class SensitivityAAPSPlugin extends AbstractSensitivityPlugin {
|
|||
) {
|
||||
super(new PluginDescription()
|
||||
.mainType(PluginType.SENSITIVITY)
|
||||
.pluginIcon(R.drawable.ic_generic_icon)
|
||||
.pluginName(R.string.sensitivityaaps)
|
||||
.shortName(R.string.sensitivity_shortname)
|
||||
.preferencesId(R.xml.pref_absorption_aaps)
|
||||
|
|
|
@ -55,6 +55,7 @@ public class SensitivityOref1Plugin extends AbstractSensitivityPlugin {
|
|||
) {
|
||||
super(new PluginDescription()
|
||||
.mainType(PluginType.SENSITIVITY)
|
||||
.pluginIcon(R.drawable.ic_generic_icon)
|
||||
.pluginName(R.string.sensitivityoref1)
|
||||
.shortName(R.string.sensitivity_shortname)
|
||||
.enableByDefault(true)
|
||||
|
|
|
@ -51,6 +51,7 @@ public class SensitivityWeightedAveragePlugin extends AbstractSensitivityPlugin
|
|||
) {
|
||||
super(new PluginDescription()
|
||||
.mainType(PluginType.SENSITIVITY)
|
||||
.pluginIcon(R.drawable.ic_generic_icon)
|
||||
.pluginName(R.string.sensitivityweightedaverage)
|
||||
.shortName(R.string.sensitivity_shortname)
|
||||
.preferencesId(R.xml.pref_absorption_aaps)
|
||||
|
|
|
@ -38,6 +38,7 @@ class DexcomPlugin @Inject constructor(
|
|||
) : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.BGSOURCE)
|
||||
.fragmentClass(BGSourceFragment::class.java.name)
|
||||
.pluginIcon(R.drawable.ic_dexcom_g6)
|
||||
.pluginName(R.string.dexcom_app_patched)
|
||||
.shortName(R.string.dexcom_short)
|
||||
.preferencesId(R.xml.pref_bgsourcedexcom)
|
||||
|
|
|
@ -34,6 +34,7 @@ class EversensePlugin @Inject constructor(
|
|||
) : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.BGSOURCE)
|
||||
.fragmentClass(BGSourceFragment::class.java.name)
|
||||
.pluginIcon(R.drawable.ic_eversense)
|
||||
.pluginName(R.string.eversense)
|
||||
.shortName(R.string.eversense_shortname)
|
||||
.preferencesId(R.xml.pref_bgsource)
|
||||
|
|
|
@ -24,6 +24,7 @@ class GlimpPlugin @Inject constructor(
|
|||
) : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.BGSOURCE)
|
||||
.fragmentClass(BGSourceFragment::class.java.name)
|
||||
.pluginIcon(R.drawable.ic_glimp)
|
||||
.pluginName(R.string.Glimp)
|
||||
.preferencesId(R.xml.pref_bgsource)
|
||||
.description(R.string.description_source_glimp),
|
||||
|
|
|
@ -25,6 +25,7 @@ class MM640gPlugin @Inject constructor(
|
|||
) : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.BGSOURCE)
|
||||
.fragmentClass(BGSourceFragment::class.java.name)
|
||||
.pluginIcon(R.drawable.ic_generic_cgm)
|
||||
.pluginName(R.string.MM640g)
|
||||
.description(R.string.description_source_mm640g),
|
||||
aapsLogger, resourceHelper, injector
|
||||
|
|
|
@ -32,6 +32,7 @@ class NSClientSourcePlugin @Inject constructor(
|
|||
) : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.BGSOURCE)
|
||||
.fragmentClass(BGSourceFragment::class.java.name)
|
||||
.pluginIcon(R.drawable.ic_nsclient_bg)
|
||||
.pluginName(R.string.nsclientbg)
|
||||
.description(R.string.description_source_ns_client),
|
||||
aapsLogger, resourceHelper, injector
|
||||
|
|
|
@ -31,6 +31,7 @@ class PoctechPlugin @Inject constructor(
|
|||
) : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.BGSOURCE)
|
||||
.fragmentClass(BGSourceFragment::class.java.name)
|
||||
.pluginIcon(R.drawable.ic_poctech)
|
||||
.pluginName(R.string.poctech)
|
||||
.preferencesId(R.xml.pref_bgsource)
|
||||
.description(R.string.description_source_poctech),
|
||||
|
|
|
@ -40,6 +40,7 @@ class RandomBgPlugin @Inject constructor(
|
|||
) : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.BGSOURCE)
|
||||
.fragmentClass(BGSourceFragment::class.java.name)
|
||||
.pluginIcon(R.drawable.ic_dice)
|
||||
.pluginName(R.string.randombg)
|
||||
.shortName(R.string.randombg_short)
|
||||
.preferencesId(R.xml.pref_bgsource)
|
||||
|
|
|
@ -27,6 +27,7 @@ class TomatoPlugin @Inject constructor(
|
|||
) : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.BGSOURCE)
|
||||
.fragmentClass(BGSourceFragment::class.java.name)
|
||||
.pluginIcon(R.drawable.ic_sensor)
|
||||
.pluginName(R.string.tomato)
|
||||
.preferencesId(R.xml.pref_bgsource)
|
||||
.shortName(R.string.tomato_short)
|
||||
|
|
|
@ -25,6 +25,7 @@ class XdripPlugin @Inject constructor(
|
|||
) : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.BGSOURCE)
|
||||
.fragmentClass(BGSourceFragment::class.java.name)
|
||||
.pluginIcon((R.drawable.ic_blooddrop_48))
|
||||
.pluginName(R.string.xdrip)
|
||||
.description(R.string.description_source_xdrip),
|
||||
aapsLogger, resourceHelper, injector
|
||||
|
|
|
@ -111,6 +111,7 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
super(new PluginDescription()
|
||||
.mainType(PluginType.TREATMENT)
|
||||
.fragmentClass(TreatmentsFragment.class.getName())
|
||||
.pluginIcon(R.drawable.ic_treatments)
|
||||
.pluginName(R.string.treatments)
|
||||
.shortName(R.string.treatments_shortname)
|
||||
.alwaysEnabled(true)
|
||||
|
|
|
@ -11,7 +11,7 @@ import javax.inject.Inject
|
|||
|
||||
class CommandReadStatus(
|
||||
injector: HasAndroidInjector,
|
||||
private val reason: String,
|
||||
val reason: String,
|
||||
callback: Callback?
|
||||
) : Command(injector, CommandType.READSTATUS, callback) {
|
||||
|
||||
|
@ -19,7 +19,7 @@ class CommandReadStatus(
|
|||
@Inject lateinit var localAlertUtils: LocalAlertUtils
|
||||
|
||||
override fun execute() {
|
||||
activePlugin.activePump.getPumpStatus()
|
||||
activePlugin.activePump.getPumpStatus(reason)
|
||||
localAlertUtils.notifyPumpStatusRead()
|
||||
aapsLogger.debug(LTag.PUMPQUEUE, "CommandReadStatus executed. Reason: $reason")
|
||||
val pump = activePlugin.activePump
|
||||
|
|
|
@ -77,7 +77,7 @@ class KeepAliveReceiver : DaggerBroadcastReceiver() {
|
|||
aapsLogger.debug(LTag.CORE, "KeepAlive scheduled")
|
||||
SystemClock.sleep(5000) // wait for app initialization
|
||||
localAlertUtils.shortenSnoozeInterval()
|
||||
localAlertUtils.presnoozeAlarms()
|
||||
localAlertUtils.preSnoozeAlarms()
|
||||
val am = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
|
||||
val i = Intent(context, KeepAliveReceiver::class.java)
|
||||
val pi = PendingIntent.getBroadcast(context, 0, i, 0)
|
||||
|
|
|
@ -5,19 +5,21 @@ import info.nightscout.androidaps.Constants
|
|||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.db.BgReading
|
||||
import info.nightscout.androidaps.interfaces.ActivePluginProvider
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.logging.AAPSLogger
|
||||
import info.nightscout.androidaps.logging.LTag
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.interfaces.ProfileFunction
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
|
||||
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
|
||||
import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicatorPlugin
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
import kotlin.math.min
|
||||
|
||||
/**
|
||||
* Created by adrian on 17/12/17.
|
||||
|
@ -31,48 +33,49 @@ class LocalAlertUtils @Inject constructor(
|
|||
private val activePlugin: ActivePluginProvider,
|
||||
private val profileFunction: ProfileFunction,
|
||||
private val iobCobCalculatorPlugin: IobCobCalculatorPlugin,
|
||||
private val smsCommunicatorPlugin: SmsCommunicatorPlugin,
|
||||
private val config: Config,
|
||||
private val nsUpload: NSUpload,
|
||||
private val dateUtil: DateUtil
|
||||
) {
|
||||
|
||||
fun missedReadingsThreshold(): Long {
|
||||
return T.mins(sp.getInt(resourceHelper.gs(R.string.key_missed_bg_readings_threshold_minutes), Constants.DEFAULT_MISSED_BG_READINGS_THRESHOLD_MINUTES).toLong()).msecs()
|
||||
private fun missedReadingsThreshold(): Long {
|
||||
return T.mins(sp.getInt(R.string.key_missed_bg_readings_threshold_minutes, Constants.DEFAULT_MISSED_BG_READINGS_THRESHOLD_MINUTES).toLong()).msecs()
|
||||
}
|
||||
|
||||
fun pumpUnreachableThreshold(): Long {
|
||||
return T.mins(sp.getInt(resourceHelper.gs(R.string.key_pump_unreachable_threshold_minutes), Constants.DEFAULT_PUMP_UNREACHABLE_THRESHOLD_MINUTES).toLong()).msecs()
|
||||
private fun pumpUnreachableThreshold(): Long {
|
||||
return T.mins(sp.getInt(R.string.key_pump_unreachable_threshold_minutes, Constants.DEFAULT_PUMP_UNREACHABLE_THRESHOLD_MINUTES).toLong()).msecs()
|
||||
}
|
||||
|
||||
fun checkPumpUnreachableAlarm(lastConnection: Long, isStatusOutdated: Boolean, isDisconnected: Boolean) {
|
||||
val alarmTimeoutExpired = isAlarmTimeoutExpired(lastConnection, pumpUnreachableThreshold())
|
||||
val nextAlarmOccurrenceReached = sp.getLong("nextPumpDisconnectedAlarm", 0L) < System.currentTimeMillis()
|
||||
if (config.APS && sp.getBoolean(resourceHelper.gs(R.string.key_enable_pump_unreachable_alert), true)
|
||||
&& isStatusOutdated && alarmTimeoutExpired && nextAlarmOccurrenceReached && !isDisconnected) {
|
||||
if (config.APS && isStatusOutdated && alarmTimeoutExpired && nextAlarmOccurrenceReached && !isDisconnected) {
|
||||
if (sp.getBoolean(R.string.key_enable_pump_unreachable_alert, true)) {
|
||||
aapsLogger.debug(LTag.CORE, "Generating pump unreachable alarm. lastConnection: " + dateUtil.dateAndTimeString(lastConnection) + " isStatusOutdated: " + isStatusOutdated)
|
||||
val n = Notification(Notification.PUMP_UNREACHABLE, resourceHelper.gs(R.string.pump_unreachable), Notification.URGENT)
|
||||
n.soundId = R.raw.alarm
|
||||
sp.putLong("nextPumpDisconnectedAlarm", System.currentTimeMillis() + pumpUnreachableThreshold())
|
||||
rxBus.send(EventNewNotification(n))
|
||||
if (sp.getBoolean(R.string.key_ns_create_announcements_from_errors, true)) {
|
||||
nsUpload.uploadError(n.text)
|
||||
rxBus.send(EventNewNotification(Notification(Notification.PUMP_UNREACHABLE, resourceHelper.gs(R.string.pump_unreachable), Notification.URGENT).also { it.soundId = R.raw.alarm }))
|
||||
if (sp.getBoolean(R.string.key_ns_create_announcements_from_errors, true))
|
||||
nsUpload.uploadError(resourceHelper.gs(R.string.pump_unreachable))
|
||||
}
|
||||
if (sp.getBoolean(R.string.key_smscommunicator_report_pump_ureachable, true))
|
||||
smsCommunicatorPlugin.sendNotificationToAllNumbers(resourceHelper.gs(R.string.pump_unreachable))
|
||||
}
|
||||
if (!isStatusOutdated && !alarmTimeoutExpired) rxBus.send(EventDismissNotification(Notification.PUMP_UNREACHABLE))
|
||||
}
|
||||
|
||||
private fun isAlarmTimeoutExpired(lastConnection: Long, unreachableThreshold: Long): Boolean {
|
||||
if (activePlugin.activePump.pumpDescription.hasCustomUnreachableAlertCheck) {
|
||||
return activePlugin.activePump.isUnreachableAlertTimeoutExceeded(unreachableThreshold)
|
||||
return if (activePlugin.activePump.pumpDescription.hasCustomUnreachableAlertCheck) {
|
||||
activePlugin.activePump.isUnreachableAlertTimeoutExceeded(unreachableThreshold)
|
||||
} else {
|
||||
return lastConnection + pumpUnreachableThreshold() < System.currentTimeMillis()
|
||||
lastConnection + pumpUnreachableThreshold() < System.currentTimeMillis()
|
||||
}
|
||||
}
|
||||
|
||||
/*Presnoozes the alarms with 5 minutes if no snooze exists.
|
||||
/*Pre-snoozes the alarms with 5 minutes if no snooze exists.
|
||||
* Call only at startup!
|
||||
*/
|
||||
fun presnoozeAlarms() {
|
||||
fun preSnoozeAlarms() {
|
||||
if (sp.getLong("nextMissedReadingsAlarm", 0L) < System.currentTimeMillis()) {
|
||||
sp.putLong("nextMissedReadingsAlarm", System.currentTimeMillis() + 5 * 60 * 1000)
|
||||
}
|
||||
|
@ -83,10 +86,10 @@ class LocalAlertUtils @Inject constructor(
|
|||
|
||||
fun shortenSnoozeInterval() { //shortens alarm times in case of setting changes or future data
|
||||
var nextMissedReadingsAlarm = sp.getLong("nextMissedReadingsAlarm", 0L)
|
||||
nextMissedReadingsAlarm = Math.min(System.currentTimeMillis() + missedReadingsThreshold(), nextMissedReadingsAlarm)
|
||||
nextMissedReadingsAlarm = min(System.currentTimeMillis() + missedReadingsThreshold(), nextMissedReadingsAlarm)
|
||||
sp.putLong("nextMissedReadingsAlarm", nextMissedReadingsAlarm)
|
||||
var nextPumpDisconnectedAlarm = sp.getLong("nextPumpDisconnectedAlarm", 0L)
|
||||
nextPumpDisconnectedAlarm = Math.min(System.currentTimeMillis() + pumpUnreachableThreshold(), nextPumpDisconnectedAlarm)
|
||||
nextPumpDisconnectedAlarm = min(System.currentTimeMillis() + pumpUnreachableThreshold(), nextPumpDisconnectedAlarm)
|
||||
sp.putLong("nextPumpDisconnectedAlarm", nextPumpDisconnectedAlarm)
|
||||
}
|
||||
|
||||
|
@ -104,7 +107,7 @@ class LocalAlertUtils @Inject constructor(
|
|||
|
||||
fun checkStaleBGAlert() {
|
||||
val bgReading: BgReading? = iobCobCalculatorPlugin.lastBg()
|
||||
if (sp.getBoolean(resourceHelper.gs(R.string.key_enable_missed_bg_readings_alert), false)
|
||||
if (sp.getBoolean(R.string.key_enable_missed_bg_readings_alert, false)
|
||||
&& bgReading != null && bgReading.date + missedReadingsThreshold() < System.currentTimeMillis() && sp.getLong("nextMissedReadingsAlarm", 0L) < System.currentTimeMillis()) {
|
||||
val n = Notification(Notification.BG_READINGS_MISSED, resourceHelper.gs(R.string.missed_bg_readings), Notification.URGENT)
|
||||
n.soundId = R.raw.alarm
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.text.Spanned
|
|||
import com.google.common.base.Joiner
|
||||
import dagger.android.HasAndroidInjector
|
||||
import info.nightscout.androidaps.Config
|
||||
import info.nightscout.androidaps.Constants
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.activities.ErrorHelperActivity
|
||||
import info.nightscout.androidaps.data.DetailedBolusInfo
|
||||
|
@ -20,6 +21,15 @@ import info.nightscout.androidaps.logging.LTag
|
|||
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
|
||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
|
||||
import info.nightscout.androidaps.plugins.general.automation.AutomationEvent
|
||||
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin
|
||||
import info.nightscout.androidaps.plugins.general.automation.actions.ActionAlarm
|
||||
import info.nightscout.androidaps.plugins.general.automation.elements.Comparator
|
||||
import info.nightscout.androidaps.plugins.general.automation.elements.InputDelta
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerBg
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerDelta
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerTime
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
|
||||
import info.nightscout.androidaps.queue.Callback
|
||||
|
@ -30,8 +40,10 @@ import info.nightscout.androidaps.utils.T
|
|||
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
|
||||
import info.nightscout.androidaps.utils.extensions.formatColor
|
||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||
import org.json.JSONException
|
||||
import org.json.JSONObject
|
||||
import java.text.DecimalFormat
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
import kotlin.math.abs
|
||||
|
@ -43,13 +55,15 @@ class BolusWizard @Inject constructor(
|
|||
@Inject lateinit var aapsLogger: AAPSLogger
|
||||
@Inject lateinit var resourceHelper: ResourceHelper
|
||||
@Inject lateinit var rxBus: RxBusWrapper
|
||||
@Inject lateinit var sp: SP
|
||||
@Inject lateinit var profileFunction: ProfileFunction
|
||||
@Inject lateinit var constraintChecker: ConstraintChecker
|
||||
@Inject lateinit var context: Context
|
||||
@Inject lateinit var activePlugin: ActivePluginProvider
|
||||
@Inject lateinit var commandQueue: CommandQueueProvider
|
||||
@Inject lateinit var loopPlugin: LoopPlugin
|
||||
@Inject lateinit var iobCobCalculatorPlugin: IobCobCalculatorPlugin
|
||||
@Inject lateinit var automationPlugin: AutomationPlugin
|
||||
@Inject lateinit var dateUtil: DateUtil
|
||||
@Inject lateinit var config: Config
|
||||
|
||||
init {
|
||||
|
@ -72,7 +86,7 @@ class BolusWizard @Inject constructor(
|
|||
private set
|
||||
var insulinFromBolusIOB = 0.0
|
||||
private set
|
||||
var insulinFromBasalsIOB = 0.0
|
||||
var insulinFromBasalIOB = 0.0
|
||||
private set
|
||||
var insulinFromCorrection = 0.0
|
||||
private set
|
||||
|
@ -104,7 +118,7 @@ class BolusWizard @Inject constructor(
|
|||
var carbs: Int = 0
|
||||
var cob: Double = 0.0
|
||||
var bg: Double = 0.0
|
||||
var correction: Double = 0.0
|
||||
private var correction: Double = 0.0
|
||||
private var percentageCorrection: Double = 0.0
|
||||
private var useBg: Boolean = false
|
||||
private var useCob: Boolean = false
|
||||
|
@ -113,8 +127,9 @@ class BolusWizard @Inject constructor(
|
|||
private var useSuperBolus: Boolean = false
|
||||
private var useTT: Boolean = false
|
||||
private var useTrend: Boolean = false
|
||||
private var useAlarm = false
|
||||
var notes: String = ""
|
||||
var carbTime: Int = 0
|
||||
private var carbTime: Int = 0
|
||||
|
||||
@JvmOverloads
|
||||
fun doCalc(profile: Profile,
|
||||
|
@ -132,6 +147,7 @@ class BolusWizard @Inject constructor(
|
|||
useSuperBolus: Boolean,
|
||||
useTT: Boolean,
|
||||
useTrend: Boolean,
|
||||
useAlarm: Boolean,
|
||||
notes: String = "",
|
||||
carbTime: Int = 0
|
||||
): BolusWizard {
|
||||
|
@ -151,6 +167,7 @@ class BolusWizard @Inject constructor(
|
|||
this.useSuperBolus = useSuperBolus
|
||||
this.useTT = useTT
|
||||
this.useTrend = useTrend
|
||||
this.useAlarm = useAlarm
|
||||
this.notes = notes
|
||||
this.carbTime = carbTime
|
||||
|
||||
|
@ -193,7 +210,7 @@ class BolusWizard @Inject constructor(
|
|||
val basalIob = activePlugin.activeTreatments.lastCalculationTempBasals.round()
|
||||
|
||||
insulinFromBolusIOB = if (includeBolusIOB) -bolusIob.iob else 0.0
|
||||
insulinFromBasalsIOB = if (includeBasalIOB) -basalIob.basaliob else 0.0
|
||||
insulinFromBasalIOB = if (includeBasalIOB) -basalIob.basaliob else 0.0
|
||||
|
||||
// Insulin from correction
|
||||
insulinFromCorrection = correction
|
||||
|
@ -207,7 +224,7 @@ class BolusWizard @Inject constructor(
|
|||
}
|
||||
|
||||
// Total
|
||||
calculatedTotalInsulin = insulinFromBG + insulinFromTrend + insulinFromCarbs + insulinFromBolusIOB + insulinFromBasalsIOB + insulinFromCorrection + insulinFromSuperBolus + insulinFromCOB
|
||||
calculatedTotalInsulin = insulinFromBG + insulinFromTrend + insulinFromCarbs + insulinFromBolusIOB + insulinFromBasalIOB + insulinFromCorrection + insulinFromSuperBolus + insulinFromCOB
|
||||
|
||||
// Percentage adjustment
|
||||
totalBeforePercentageAdjustment = calculatedTotalInsulin
|
||||
|
@ -229,6 +246,7 @@ class BolusWizard @Inject constructor(
|
|||
return this
|
||||
}
|
||||
|
||||
@Suppress("SpellCheckingInspection")
|
||||
private fun nsJSON(): JSONObject {
|
||||
val bolusCalcJSON = JSONObject()
|
||||
try {
|
||||
|
@ -239,9 +257,9 @@ class BolusWizard @Inject constructor(
|
|||
bolusCalcJSON.put("targetBGHigh", targetBGHigh)
|
||||
bolusCalcJSON.put("isf", sens)
|
||||
bolusCalcJSON.put("ic", ic)
|
||||
bolusCalcJSON.put("iob", -(insulinFromBolusIOB + insulinFromBasalsIOB))
|
||||
bolusCalcJSON.put("iob", -(insulinFromBolusIOB + insulinFromBasalIOB))
|
||||
bolusCalcJSON.put("bolusiob", insulinFromBolusIOB)
|
||||
bolusCalcJSON.put("basaliob", insulinFromBasalsIOB)
|
||||
bolusCalcJSON.put("basaliob", insulinFromBasalIOB)
|
||||
bolusCalcJSON.put("bolusiobused", includeBolusIOB)
|
||||
bolusCalcJSON.put("basaliobused", includeBasalIOB)
|
||||
bolusCalcJSON.put("bg", bg)
|
||||
|
@ -270,14 +288,14 @@ class BolusWizard @Inject constructor(
|
|||
return bolusCalcJSON
|
||||
}
|
||||
|
||||
private fun confirmMessageAfterConstraints(pump: PumpInterface): Spanned {
|
||||
private fun confirmMessageAfterConstraints(advisor: Boolean): Spanned {
|
||||
|
||||
val actions: LinkedList<String> = LinkedList()
|
||||
if (insulinAfterConstraints > 0) {
|
||||
val pct = if (percentageCorrection != 100.0) " (" + percentageCorrection.toInt() + "%)" else ""
|
||||
actions.add(resourceHelper.gs(R.string.bolus) + ": " + resourceHelper.gs(R.string.formatinsulinunits, insulinAfterConstraints).formatColor(resourceHelper, R.color.bolus) + pct)
|
||||
}
|
||||
if (carbs > 0) {
|
||||
if (carbs > 0 && !advisor) {
|
||||
var timeShift = ""
|
||||
if (carbTime > 0) {
|
||||
timeShift += " (+" + resourceHelper.gs(R.string.mins, carbTime) + ")"
|
||||
|
@ -287,23 +305,24 @@ class BolusWizard @Inject constructor(
|
|||
actions.add(resourceHelper.gs(R.string.carbs) + ": " + resourceHelper.gs(R.string.format_carbs, carbs).formatColor(resourceHelper, R.color.carbs) + timeShift)
|
||||
}
|
||||
if (insulinFromCOB > 0) {
|
||||
actions.add(resourceHelper.gs(R.string.cobvsiob) + ": " + resourceHelper.gs(R.string.formatsignedinsulinunits, insulinFromBolusIOB + insulinFromBasalsIOB + insulinFromCOB + insulinFromBG).formatColor(resourceHelper, R.color.cobAlert))
|
||||
actions.add(resourceHelper.gs(R.string.cobvsiob) + ": " + resourceHelper.gs(R.string.formatsignedinsulinunits, insulinFromBolusIOB + insulinFromBasalIOB + insulinFromCOB + insulinFromBG).formatColor(resourceHelper, R.color.cobAlert))
|
||||
val absorptionRate = iobCobCalculatorPlugin.slowAbsorptionPercentage(60)
|
||||
if (absorptionRate > .25)
|
||||
actions.add(resourceHelper.gs(R.string.slowabsorptiondetected, resourceHelper.gc(R.color.cobAlert), (absorptionRate * 100).toInt()))
|
||||
}
|
||||
if (abs(insulinAfterConstraints - calculatedTotalInsulin) > pump.pumpDescription.pumpType.determineCorrectBolusStepSize(insulinAfterConstraints))
|
||||
if (abs(insulinAfterConstraints - calculatedTotalInsulin) > activePlugin.activePump.pumpDescription.pumpType.determineCorrectBolusStepSize(insulinAfterConstraints))
|
||||
actions.add(resourceHelper.gs(R.string.bolusconstraintappliedwarn, calculatedTotalInsulin, insulinAfterConstraints).formatColor(resourceHelper, R.color.warning))
|
||||
if (config.NSCLIENT)
|
||||
if (config.NSCLIENT && insulinAfterConstraints > 0)
|
||||
actions.add(resourceHelper.gs(R.string.bolusrecordedonly).formatColor(resourceHelper, R.color.warning))
|
||||
if (useAlarm && !advisor && carbs > 0 && carbTime > 0)
|
||||
actions.add(resourceHelper.gs(R.string.alarminxmin, carbTime).formatColor(resourceHelper, R.color.info))
|
||||
if (advisor)
|
||||
actions.add(resourceHelper.gs(R.string.advisoralarm).formatColor(resourceHelper, R.color.info))
|
||||
|
||||
return HtmlHelper.fromHtml(Joiner.on("<br/>").join(actions))
|
||||
}
|
||||
|
||||
fun confirmAndExecute(context: Context) {
|
||||
val profile = profileFunction.getProfile() ?: return
|
||||
val pump = activePlugin.activePump
|
||||
|
||||
fun confirmAndExecute(ctx: Context) {
|
||||
if (calculatedTotalInsulin > 0.0 || carbs > 0.0) {
|
||||
if (accepted) {
|
||||
aapsLogger.debug(LTag.UI, "guarding: already accepted")
|
||||
|
@ -311,9 +330,56 @@ class BolusWizard @Inject constructor(
|
|||
}
|
||||
accepted = true
|
||||
|
||||
val confirmMessage = confirmMessageAfterConstraints(pump)
|
||||
if (sp.getBoolean(R.string.key_usebolusadvisor, false) && Profile.toMgdl(bg, profile.units) > 180 && carbs > 0 && carbTime >= 0)
|
||||
OKDialog.showYesNoCancel(ctx, resourceHelper.gs(R.string.bolusadvisor), resourceHelper.gs(R.string.bolusadvisormessage),
|
||||
{ bolusAdvisorProcessing(ctx) },
|
||||
{ commonProcessing(ctx) }
|
||||
)
|
||||
else
|
||||
commonProcessing(ctx)
|
||||
}
|
||||
}
|
||||
|
||||
OKDialog.showConfirmation(context, resourceHelper.gs(R.string.boluswizard), confirmMessage, Runnable {
|
||||
private fun bolusAdvisorProcessing(ctx: Context) {
|
||||
val confirmMessage = confirmMessageAfterConstraints(advisor = true)
|
||||
OKDialog.showConfirmation(ctx, resourceHelper.gs(R.string.boluswizard), confirmMessage, {
|
||||
DetailedBolusInfo().apply {
|
||||
eventType = CareportalEvent.CORRECTIONBOLUS
|
||||
insulin = insulinAfterConstraints
|
||||
carbs = 0.0
|
||||
context = ctx
|
||||
glucose = bg
|
||||
glucoseType = "Manual"
|
||||
carbTime = 0
|
||||
boluscalc = nsJSON()
|
||||
source = Source.USER
|
||||
notes = this@BolusWizard.notes
|
||||
aapsLogger.debug("USER ENTRY: BOLUS ADVISOR insulin $insulinAfterConstraints")
|
||||
if (insulin > 0) {
|
||||
commandQueue.bolus(this, object : Callback() {
|
||||
override fun run() {
|
||||
if (!result.success) {
|
||||
val i = Intent(ctx, ErrorHelperActivity::class.java)
|
||||
i.putExtra("soundid", R.raw.boluserror)
|
||||
i.putExtra("status", result.comment)
|
||||
i.putExtra("title", resourceHelper.gs(R.string.treatmentdeliveryerror))
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
ctx.startActivity(i)
|
||||
} else
|
||||
scheduleEatReminder()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun commonProcessing(ctx: Context) {
|
||||
val profile = profileFunction.getProfile() ?: return
|
||||
val pump = activePlugin.activePump
|
||||
|
||||
val confirmMessage = confirmMessageAfterConstraints(advisor = false)
|
||||
OKDialog.showConfirmation(ctx, resourceHelper.gs(R.string.boluswizard), confirmMessage, {
|
||||
if (insulinAfterConstraints > 0 || carbs > 0) {
|
||||
if (useSuperBolus) {
|
||||
aapsLogger.debug("USER ENTRY: SUPERBOLUS TBR")
|
||||
|
@ -326,12 +392,12 @@ class BolusWizard @Inject constructor(
|
|||
commandQueue.tempBasalAbsolute(0.0, 120, true, profile, object : Callback() {
|
||||
override fun run() {
|
||||
if (!result.success) {
|
||||
val i = Intent(context, ErrorHelperActivity::class.java)
|
||||
val i = Intent(ctx, ErrorHelperActivity::class.java)
|
||||
i.putExtra("soundid", R.raw.boluserror)
|
||||
i.putExtra("status", result.comment)
|
||||
i.putExtra("title", resourceHelper.gs(R.string.tempbasaldeliveryerror))
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
context.startActivity(i)
|
||||
ctx.startActivity(i)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
@ -340,47 +406,98 @@ class BolusWizard @Inject constructor(
|
|||
commandQueue.tempBasalPercent(0, 120, true, profile, object : Callback() {
|
||||
override fun run() {
|
||||
if (!result.success) {
|
||||
val i = Intent(context, ErrorHelperActivity::class.java)
|
||||
val i = Intent(ctx, ErrorHelperActivity::class.java)
|
||||
i.putExtra("soundid", R.raw.boluserror)
|
||||
i.putExtra("status", result.comment)
|
||||
i.putExtra("title", resourceHelper.gs(R.string.tempbasaldeliveryerror))
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
context.startActivity(i)
|
||||
ctx.startActivity(i)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
val detailedBolusInfo = DetailedBolusInfo()
|
||||
detailedBolusInfo.eventType = CareportalEvent.BOLUSWIZARD
|
||||
detailedBolusInfo.insulin = insulinAfterConstraints
|
||||
detailedBolusInfo.carbs = carbs.toDouble()
|
||||
detailedBolusInfo.context = context
|
||||
detailedBolusInfo.glucose = bg
|
||||
detailedBolusInfo.glucoseType = "Manual"
|
||||
detailedBolusInfo.carbTime = carbTime
|
||||
detailedBolusInfo.boluscalc = nsJSON()
|
||||
detailedBolusInfo.source = Source.USER
|
||||
detailedBolusInfo.notes = notes
|
||||
aapsLogger.debug("USER ENTRY: BOLUS insulin $insulinAfterConstraints carbs: $carbs")
|
||||
if (detailedBolusInfo.insulin > 0 || pump.pumpDescription.storesCarbInfo) {
|
||||
commandQueue.bolus(detailedBolusInfo, object : Callback() {
|
||||
DetailedBolusInfo().apply {
|
||||
eventType = CareportalEvent.BOLUSWIZARD
|
||||
insulin = insulinAfterConstraints
|
||||
carbs = this@BolusWizard.carbs.toDouble()
|
||||
context = ctx
|
||||
glucose = bg
|
||||
glucoseType = "Manual"
|
||||
carbTime = this@BolusWizard.carbTime
|
||||
boluscalc = nsJSON()
|
||||
source = Source.USER
|
||||
notes = this@BolusWizard.notes
|
||||
aapsLogger.debug("USER ENTRY: BOLUS WIZARD insulin $insulinAfterConstraints carbs: $carbs")
|
||||
if (insulin > 0 || pump.pumpDescription.storesCarbInfo) {
|
||||
commandQueue.bolus(this, object : Callback() {
|
||||
override fun run() {
|
||||
if (!result.success) {
|
||||
val i = Intent(context, ErrorHelperActivity::class.java)
|
||||
val i = Intent(ctx, ErrorHelperActivity::class.java)
|
||||
i.putExtra("soundid", R.raw.boluserror)
|
||||
i.putExtra("status", result.comment)
|
||||
i.putExtra("title", resourceHelper.gs(R.string.treatmentdeliveryerror))
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
context.startActivity(i)
|
||||
ctx.startActivity(i)
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
activePlugin.activeTreatments.addToHistoryTreatment(detailedBolusInfo, false)
|
||||
activePlugin.activeTreatments.addToHistoryTreatment(this, false)
|
||||
}
|
||||
}
|
||||
if (useAlarm && carbs > 0 && carbTime > 0) {
|
||||
scheduleReminder(dateUtil._now() + T.mins(carbTime.toLong()).msecs())
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun scheduleEatReminder() {
|
||||
val event = AutomationEvent(injector).apply {
|
||||
title = resourceHelper.gs(R.string.bolusadvisor)
|
||||
readOnly = true
|
||||
systemAction = true
|
||||
autoRemove = true
|
||||
trigger = TriggerConnector(injector, TriggerConnector.Type.OR).apply {
|
||||
|
||||
// Bg under 180 mgdl and dropping by 15 mgdl
|
||||
list.add(TriggerConnector(injector, TriggerConnector.Type.AND).apply {
|
||||
list.add(TriggerBg(injector, 180.0, Constants.MGDL, Comparator.Compare.IS_LESSER))
|
||||
list.add(TriggerDelta(injector, InputDelta(injector, -15.0, -360.0, 360.0, 1.0, DecimalFormat("0"), InputDelta.DeltaType.DELTA), Constants.MGDL, Comparator.Compare.IS_EQUAL_OR_LESSER))
|
||||
list.add(TriggerDelta(injector, InputDelta(injector, -8.0, -360.0, 360.0, 1.0, DecimalFormat("0"), InputDelta.DeltaType.SHORT_AVERAGE), Constants.MGDL, Comparator.Compare.IS_EQUAL_OR_LESSER))
|
||||
})
|
||||
// Bg under 160 mgdl and dropping by 9 mgdl
|
||||
list.add(TriggerConnector(injector, TriggerConnector.Type.AND).apply {
|
||||
list.add(TriggerBg(injector, 160.0, Constants.MGDL, Comparator.Compare.IS_LESSER))
|
||||
list.add(TriggerDelta(injector, InputDelta(injector, -9.0, -360.0, 360.0, 1.0, DecimalFormat("0"), InputDelta.DeltaType.DELTA), Constants.MGDL, Comparator.Compare.IS_EQUAL_OR_LESSER))
|
||||
list.add(TriggerDelta(injector, InputDelta(injector, -5.0, -360.0, 360.0, 1.0, DecimalFormat("0"), InputDelta.DeltaType.SHORT_AVERAGE), Constants.MGDL, Comparator.Compare.IS_EQUAL_OR_LESSER))
|
||||
})
|
||||
// Bg under 145 mgdl and dropping
|
||||
list.add(TriggerConnector(injector, TriggerConnector.Type.AND).apply {
|
||||
list.add(TriggerBg(injector, 145.0, Constants.MGDL, Comparator.Compare.IS_LESSER))
|
||||
list.add(TriggerDelta(injector, InputDelta(injector, 0.0, -360.0, 360.0, 1.0, DecimalFormat("0"), InputDelta.DeltaType.DELTA), Constants.MGDL, Comparator.Compare.IS_EQUAL_OR_LESSER))
|
||||
list.add(TriggerDelta(injector, InputDelta(injector, 0.0, -360.0, 360.0, 1.0, DecimalFormat("0"), InputDelta.DeltaType.SHORT_AVERAGE), Constants.MGDL, Comparator.Compare.IS_EQUAL_OR_LESSER))
|
||||
})
|
||||
}
|
||||
actions.add(ActionAlarm(injector, resourceHelper.gs(R.string.time_to_eat)))
|
||||
}
|
||||
|
||||
automationPlugin.addIfNotExists(event)
|
||||
}
|
||||
|
||||
private fun scheduleReminder(time: Long) {
|
||||
val event = AutomationEvent(injector).apply {
|
||||
title = resourceHelper.gs(R.string.timetoeat)
|
||||
readOnly = true
|
||||
systemAction = true
|
||||
autoRemove = true
|
||||
trigger = TriggerConnector(injector, TriggerConnector.Type.AND).apply {
|
||||
list.add(TriggerTime(injector, time))
|
||||
}
|
||||
actions.add(ActionAlarm(injector, resourceHelper.gs(R.string.timetoeat)))
|
||||
}
|
||||
|
||||
automationPlugin.addIfNotExists(event)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -117,7 +117,7 @@ class QuickWizardEntry @Inject constructor(private val injector: HasAndroidInjec
|
|||
trend = true
|
||||
}
|
||||
val percentage = sp.getDouble(R.string.key_boluswizard_percentage, 100.0)
|
||||
return BolusWizard(injector).doCalc(profile, profileName, tempTarget, carbs(), cob, bg, 0.0, percentage, true, useCOB() == YES, bolusIOB, basalIOB, superBolus, useTempTarget() == YES, trend, "QuickWizard")
|
||||
return BolusWizard(injector).doCalc(profile, profileName, tempTarget, carbs(), cob, bg, 0.0, percentage, true, useCOB() == YES, bolusIOB, basalIOB, superBolus, useTempTarget() == YES, trend, false, "QuickWizard")
|
||||
}
|
||||
|
||||
fun buttonText(): String = safeGetString(storage, "buttonText", "")
|
||||
|
|
15
app/src/main/res/drawable/ic_action.xml
Normal file
15
app/src/main/res/drawable/ic_action.xml
Normal file
|
@ -0,0 +1,15 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M14.27,6C13.72,6.95 14.05,8.18 15,8.73c0.95,0.55 2.18,0.22 2.73,-0.73c0.55,-0.95 0.22,-2.18 -0.73,-2.73C16.05,4.72 14.82,5.05 14.27,6z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M15.84,10.41c0,0 -1.63,-0.94 -2.6,-1.5c-2.38,-1.38 -3.2,-4.44 -1.82,-6.82l-1.73,-1C8.1,3.83 8.6,7.21 10.66,9.4l-5.15,8.92l1.73,1l1.5,-2.6l1.73,1l-3,5.2l1.73,1l6.29,-10.89c1.14,1.55 1.33,3.69 0.31,5.46l1.73,1C19.13,16.74 18.81,12.91 15.84,10.41z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12.75,3.8c0.72,0.41 1.63,0.17 2.05,-0.55c0.41,-0.72 0.17,-1.63 -0.55,-2.05c-0.72,-0.41 -1.63,-0.17 -2.05,0.55C11.79,2.47 12.03,3.39 12.75,3.8z"/>
|
||||
</vector>
|
9
app/src/main/res/drawable/ic_automation.xml
Normal file
9
app/src/main/res/drawable/ic_automation.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M17,12c-2.76,0 -5,2.24 -5,5s2.24,5 5,5c2.76,0 5,-2.24 5,-5S19.76,12 17,12zM18.65,19.35l-2.15,-2.15V14h1v2.79l1.85,1.85L18.65,19.35zM18,3h-3.18C14.4,1.84 13.3,1 12,1S9.6,1.84 9.18,3H6C4.9,3 4,3.9 4,5v15c0,1.1 0.9,2 2,2h6.11c-0.59,-0.57 -1.07,-1.25 -1.42,-2H6V5h2v3h8V5h2v5.08c0.71,0.1 1.38,0.31 2,0.6V5C20,3.9 19.1,3 18,3zM12,5c-0.55,0 -1,-0.45 -1,-1c0,-0.55 0.45,-1 1,-1c0.55,0 1,0.45 1,1C13,4.55 12.55,5 12,5z"/>
|
||||
</vector>
|
4
app/src/main/res/drawable/ic_cogs.xml
Normal file
4
app/src/main/res/drawable/ic_cogs.xml
Normal file
|
@ -0,0 +1,4 @@
|
|||
<vector android:height="28.8dp" android:viewportHeight="512"
|
||||
android:viewportWidth="640" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M512.1,191l-8.2,14.3c-3,5.3 -9.4,7.5 -15.1,5.4 -11.8,-4.4 -22.6,-10.7 -32.1,-18.6 -4.6,-3.8 -5.8,-10.5 -2.8,-15.7l8.2,-14.3c-6.9,-8 -12.3,-17.3 -15.9,-27.4h-16.5c-6,0 -11.2,-4.3 -12.2,-10.3 -2,-12 -2.1,-24.6 0,-37.1 1,-6 6.2,-10.4 12.2,-10.4h16.5c3.6,-10.1 9,-19.4 15.9,-27.4l-8.2,-14.3c-3,-5.2 -1.9,-11.9 2.8,-15.7 9.5,-7.9 20.4,-14.2 32.1,-18.6 5.7,-2.1 12.1,0.1 15.1,5.4l8.2,14.3c10.5,-1.9 21.2,-1.9 31.7,0L552,6.3c3,-5.3 9.4,-7.5 15.1,-5.4 11.8,4.4 22.6,10.7 32.1,18.6 4.6,3.8 5.8,10.5 2.8,15.7l-8.2,14.3c6.9,8 12.3,17.3 15.9,27.4h16.5c6,0 11.2,4.3 12.2,10.3 2,12 2.1,24.6 0,37.1 -1,6 -6.2,10.4 -12.2,10.4h-16.5c-3.6,10.1 -9,19.4 -15.9,27.4l8.2,14.3c3,5.2 1.9,11.9 -2.8,15.7 -9.5,7.9 -20.4,14.2 -32.1,18.6 -5.7,2.1 -12.1,-0.1 -15.1,-5.4l-8.2,-14.3c-10.4,1.9 -21.2,1.9 -31.7,0zM501.6,132.2c38.5,29.6 82.4,-14.3 52.8,-52.8 -38.5,-29.7 -82.4,14.3 -52.8,52.8zM386.3,286.1l33.7,16.8c10.1,5.8 14.5,18.1 10.5,29.1 -8.9,24.2 -26.4,46.4 -42.6,65.8 -7.4,8.9 -20.2,11.1 -30.3,5.3l-29.1,-16.8c-16,13.7 -34.6,24.6 -54.9,31.7v33.6c0,11.6 -8.3,21.6 -19.7,23.6 -24.6,4.2 -50.4,4.4 -75.9,0 -11.5,-2 -20,-11.9 -20,-23.6L158,418c-20.3,-7.2 -38.9,-18 -54.9,-31.7L74,403c-10,5.8 -22.9,3.6 -30.3,-5.3 -16.2,-19.4 -33.3,-41.6 -42.2,-65.7 -4,-10.9 0.4,-23.2 10.5,-29.1l33.3,-16.8c-3.9,-20.9 -3.9,-42.4 0,-63.4L12,205.8c-10.1,-5.8 -14.6,-18.1 -10.5,-29 8.9,-24.2 26,-46.4 42.2,-65.8 7.4,-8.9 20.2,-11.1 30.3,-5.3l29.1,16.8c16,-13.7 34.6,-24.6 54.9,-31.7L158,57.1c0,-11.5 8.2,-21.5 19.6,-23.5 24.6,-4.2 50.5,-4.4 76,-0.1 11.5,2 20,11.9 20,23.6v33.6c20.3,7.2 38.9,18 54.9,31.7l29.1,-16.8c10,-5.8 22.9,-3.6 30.3,5.3 16.2,19.4 33.2,41.6 42.1,65.8 4,10.9 0.1,23.2 -10,29.1l-33.7,16.8c3.9,21 3.9,42.5 0,63.5zM268.7,307.2c59.2,-77 -28.7,-164.9 -105.7,-105.7 -59.2,77 28.7,164.9 105.7,105.7zM512.1,489.9l-8.2,14.3c-3,5.3 -9.4,7.5 -15.1,5.4 -11.8,-4.4 -22.6,-10.7 -32.1,-18.6 -4.6,-3.8 -5.8,-10.5 -2.8,-15.7l8.2,-14.3c-6.9,-8 -12.3,-17.3 -15.9,-27.4h-16.5c-6,0 -11.2,-4.3 -12.2,-10.3 -2,-12 -2.1,-24.6 0,-37.1 1,-6 6.2,-10.4 12.2,-10.4h16.5c3.6,-10.1 9,-19.4 15.9,-27.4l-8.2,-14.3c-3,-5.2 -1.9,-11.9 2.8,-15.7 9.5,-7.9 20.4,-14.2 32.1,-18.6 5.7,-2.1 12.1,0.1 15.1,5.4l8.2,14.3c10.5,-1.9 21.2,-1.9 31.7,0l8.2,-14.3c3,-5.3 9.4,-7.5 15.1,-5.4 11.8,4.4 22.6,10.7 32.1,18.6 4.6,3.8 5.8,10.5 2.8,15.7l-8.2,14.3c6.9,8 12.3,17.3 15.9,27.4h16.5c6,0 11.2,4.3 12.2,10.3 2,12 2.1,24.6 0,37.1 -1,6 -6.2,10.4 -12.2,10.4h-16.5c-3.6,10.1 -9,19.4 -15.9,27.4l8.2,14.3c3,5.2 1.9,11.9 -2.8,15.7 -9.5,7.9 -20.4,14.2 -32.1,18.6 -5.7,2.1 -12.1,-0.1 -15.1,-5.4l-8.2,-14.3c-10.4,1.9 -21.2,1.9 -31.7,0zM501.6,431c38.5,29.6 82.4,-14.3 52.8,-52.8 -38.5,-29.6 -82.4,14.3 -52.8,52.8z"/>
|
||||
</vector>
|
351
app/src/main/res/drawable/ic_combo_128.xml
Normal file
351
app/src/main/res/drawable/ic_combo_128.xml
Normal file
|
@ -0,0 +1,351 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="128dp"
|
||||
android:height="128dp"
|
||||
android:viewportWidth="128"
|
||||
android:viewportHeight="128">
|
||||
<path
|
||||
android:pathData="M113.898,66.344c-7.93,-26.481 -5.677,-41.886 -40.369,-41.247l-65.537,0c-0.867,0 -1.571,0.698 -1.571,1.557l0,74.712c0,0.859 0.704,1.556 1.571,1.556c36.066,-0.023 75.9,-0.798 107.146,-0.503c-0.418,-12.709 1.843,-25.782 -1.24,-36.075Z"
|
||||
android:fillColor="#464646"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M114.573,100.359h1.097v1.941h-1.097z"
|
||||
android:fillAlpha="0.53"/>
|
||||
<path
|
||||
android:pathData="M70.056,25.097h28.828v3.52h-28.828z"
|
||||
android:fillColor="#464646"/>
|
||||
<path
|
||||
android:pathData="M102.018,27.166c-0.461,-1.487 -2.043,-2.32 -3.53,-1.859l-5.39,1.671c-1.487,0.461 -2.32,2.043 -1.859,3.53l10.656,34.366c0.461,1.487 2.043,2.32 3.53,1.859l5.39,-1.671c1.487,-0.461 2.32,-2.043 1.859,-3.531l-10.656,-34.365Z"
|
||||
android:fillColor="#464646"/>
|
||||
<path
|
||||
android:pathData="M112.737,64.061l-1.788,-7.113l1.84,0.672l1.251,4.979l-1.303,1.462Z"
|
||||
android:fillColor="#464646"/>
|
||||
<path
|
||||
android:pathData="M107.177,44.068l-2.247,-7.017l2.055,0.502l1.573,4.912l-1.381,1.603Z"
|
||||
android:fillColor="#464646"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M102.602,30.807l0.374,-0.113l11.273,37.448l-0.374,0.113l-11.273,-37.448Z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M6.421,29.673h82.127v0.326h-82.127z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M87.862,29.589l0.834,0.144c10.443,6.398 19.498,15.777 21.21,28.643c-2.181,-13.177 -11.537,-22.238 -22.044,-28.787Z"/>
|
||||
<path
|
||||
android:pathData="M6.365,25.42l-2.055,-0c-1.973,-0 -3.575,1.602 -3.575,3.575l-0,71.14c-0,1.538 1.249,2.787 2.787,2.787l2.843,0l0,-77.502Z"
|
||||
android:fillColor="#464646"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M6.365,25.768h0.391v76.691h-0.391z"/>
|
||||
<path
|
||||
android:pathData="M6.504,30.076h0.978v60.878h-0.978z"
|
||||
android:fillColor="#6b6b6b"
|
||||
android:fillAlpha="0.46"/>
|
||||
<path
|
||||
android:pathData="M127.265,79.943c0,-1.717 -1.433,-3.112 -3.198,-3.112l-9.596,0l0.238,25.644l9.358,-0.695c1.765,0 3.198,-1.394 3.198,-3.111l0,-18.726Z"
|
||||
android:fillColor="#464646"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M115.924,77.208c-0,-0.175 -0.142,-0.317 -0.317,-0.317l-0.633,0c-0.174,0 -0.316,0.142 -0.316,0.317l-0,24.874c-0,0.174 0.142,0.316 0.316,0.316l0.633,0c0.175,0 0.317,-0.142 0.317,-0.316l-0,-24.874Z"/>
|
||||
<path
|
||||
android:pathData="M126.595,78.424c-0,-0.355 -0.288,-0.643 -0.643,-0.643l-7.814,0c-0.355,0 -0.643,0.288 -0.643,0.643l0,1.285c0,0.354 0.288,0.642 0.643,0.642l7.814,0c0.355,0 0.643,-0.288 0.643,-0.642l-0,-1.285Z"
|
||||
android:fillColor="#545050"/>
|
||||
<path
|
||||
android:pathData="M127.265,85.924c0,-0.486 -0.394,-0.88 -0.88,-0.88l-8.24,0c-0.486,0 -0.88,0.394 -0.88,0.88l-0,1.76c-0,0.486 0.394,0.88 0.88,0.88l8.24,-0c0.486,-0 0.88,-0.394 0.88,-0.88l0,-1.76Z"
|
||||
android:fillColor="#545050"/>
|
||||
<path
|
||||
android:pathData="M127.042,94.598c-0,-0.432 -0.351,-0.783 -0.783,-0.783l-8.492,0c-0.431,0 -0.782,0.351 -0.782,0.783l0,1.564c0,0.432 0.351,0.782 0.782,0.782l8.492,0c0.432,0 0.783,-0.35 0.783,-0.782l-0,-1.564Z"
|
||||
android:fillColor="#545050"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M106.361,63.068c-5.795,-17.929 -8.872,-28.147 -28.485,-28.666c-19.345,-0.512 -38.936,-0.433 -58.626,-0.23c-5.576,-0 -10.103,4.304 -10.103,9.606c-0.416,11.818 -0.448,23.636 0.057,35.454c0.174,8.616 4.733,14.667 15.405,14.733c22.929,0.142 47.889,-0.14 71.767,0.043c10.83,0.083 15.793,-3.823 13.55,-14.372l-3.565,-16.568Z"/>
|
||||
<path
|
||||
android:pathData="M105.082,64.63c-5.404,-16.658 -6.593,-28.412 -27.702,-28.957c-18.682,-0.426 -37.855,-0.44 -56.759,-0.249c-5.353,-0 -9.7,4.037 -9.7,9.009c-0.474,11.246 -0.651,22.323 0,33.57c0.536,9.24 4.552,14.212 15.509,14.168l65.81,-0.166c13.051,0.416 18.198,-0.758 15.926,-13.834l-3.084,-13.541Z"
|
||||
android:fillColor="#cacaca"/>
|
||||
<path
|
||||
android:pathData="M101.857,63.805c-5.05,-14.655 -6.161,-24.996 -25.887,-25.475c-17.458,-0.374 -35.376,-0.387 -53.041,-0.219c-5.003,-0 -9.065,3.551 -9.065,7.925l-0.171,29.595c-0.102,7.797 3.799,12.956 14.491,12.69l61.672,-0.434c12.197,0.367 17.006,-0.666 14.884,-12.17l-2.883,-11.912Z"
|
||||
android:fillColor="#3c3c3c"/>
|
||||
<path
|
||||
android:pathData="M38.884,46.406l0.031,-0.137c0.084,-0.007 0.149,-0.031 0.196,-0.072c0.048,-0.041 0.081,-0.098 0.101,-0.17c0.019,-0.073 0.029,-0.168 0.029,-0.287c-0,-0.072 -0.003,-0.151 -0.009,-0.237l-0.019,-0.359l-1.225,0l-0.153,0.273c-0.073,0.128 -0.126,0.238 -0.159,0.33c-0.034,0.092 -0.05,0.173 -0.05,0.244c-0,0.156 0.093,0.248 0.281,0.278l-0.031,0.137l-1.139,-0l0.031,-0.137c0.057,-0.007 0.112,-0.03 0.163,-0.068c0.051,-0.038 0.105,-0.096 0.163,-0.173c0.057,-0.077 0.138,-0.204 0.242,-0.383l1.785,-3.085l0.421,-0l0.2,3.105c0.009,0.146 0.026,0.261 0.05,0.344c0.024,0.082 0.057,0.144 0.099,0.184c0.042,0.039 0.103,0.065 0.182,0.076l-0.03,0.137l-1.159,-0ZM38.113,44.902l1.089,-0l-0.048,-0.897c-0.005,-0.122 -0.01,-0.276 -0.013,-0.459c-0.004,-0.184 -0.006,-0.317 -0.006,-0.399l-0.031,0l-0.991,1.755Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M43.44,42.702l-0.167,0.754l-0.267,0c-0.015,-0.228 -0.065,-0.393 -0.149,-0.494c-0.085,-0.101 -0.221,-0.152 -0.408,-0.152c-0.156,0 -0.303,0.046 -0.44,0.138c-0.137,0.092 -0.267,0.225 -0.39,0.398c-0.122,0.174 -0.229,0.377 -0.32,0.61c-0.091,0.233 -0.161,0.471 -0.209,0.713c-0.048,0.243 -0.072,0.461 -0.072,0.656c-0,0.303 0.049,0.525 0.149,0.667c0.099,0.142 0.254,0.213 0.466,0.213c0.139,0 0.261,-0.021 0.365,-0.063c0.104,-0.041 0.201,-0.112 0.292,-0.211c0.091,-0.1 0.181,-0.238 0.27,-0.417l0.268,0l-0.17,0.791c-0.19,0.052 -0.372,0.089 -0.549,0.112c-0.176,0.022 -0.357,0.033 -0.543,0.033c-0.23,0 -0.426,-0.048 -0.587,-0.143c-0.162,-0.096 -0.284,-0.234 -0.365,-0.415c-0.082,-0.181 -0.123,-0.399 -0.123,-0.653c0,-0.134 0.009,-0.264 0.028,-0.39c0.022,-0.156 0.058,-0.326 0.106,-0.51c0.061,-0.228 0.138,-0.436 0.231,-0.624c0.1,-0.198 0.214,-0.374 0.343,-0.526c0.12,-0.141 0.251,-0.259 0.392,-0.354c0.13,-0.087 0.27,-0.155 0.421,-0.203c0.15,-0.048 0.31,-0.072 0.479,-0.072c0.169,-0 0.325,0.01 0.469,0.03c0.144,0.021 0.304,0.058 0.48,0.112Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M46.434,42.702l-0.167,0.754l-0.267,0c-0.015,-0.228 -0.065,-0.393 -0.149,-0.494c-0.085,-0.101 -0.221,-0.152 -0.408,-0.152c-0.156,0 -0.303,0.046 -0.44,0.138c-0.138,0.092 -0.268,0.225 -0.39,0.398c-0.123,0.174 -0.23,0.377 -0.321,0.61c-0.091,0.233 -0.16,0.471 -0.208,0.713c-0.049,0.243 -0.073,0.461 -0.073,0.656c0,0.303 0.05,0.525 0.149,0.667c0.099,0.142 0.255,0.213 0.467,0.213c0.139,0 0.26,-0.021 0.364,-0.063c0.104,-0.041 0.202,-0.112 0.293,-0.211c0.091,-0.1 0.181,-0.238 0.27,-0.417l0.267,0l-0.17,0.791c-0.189,0.052 -0.372,0.089 -0.548,0.112c-0.177,0.022 -0.358,0.033 -0.543,0.033c-0.23,0 -0.426,-0.048 -0.588,-0.143c-0.161,-0.096 -0.283,-0.234 -0.365,-0.415c-0.081,-0.181 -0.122,-0.399 -0.122,-0.653c-0,-0.134 0.009,-0.264 0.028,-0.39c0.022,-0.156 0.057,-0.326 0.106,-0.51c0.061,-0.228 0.138,-0.436 0.231,-0.624c0.1,-0.198 0.214,-0.374 0.342,-0.526c0.121,-0.141 0.252,-0.259 0.393,-0.354c0.13,-0.087 0.27,-0.155 0.42,-0.203c0.151,-0.048 0.31,-0.072 0.479,-0.072c0.169,-0 0.326,0.01 0.47,0.03c0.143,0.021 0.304,0.058 0.48,0.112Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M46.938,42.741l0.031,-0.137l1.119,0l-0.031,0.137c-0.07,0.015 -0.121,0.031 -0.151,0.05c-0.031,0.018 -0.059,0.046 -0.084,0.083c-0.025,0.038 -0.05,0.096 -0.075,0.174c-0.025,0.079 -0.057,0.208 -0.096,0.386l-0.348,1.56c-0.024,0.105 -0.043,0.206 -0.057,0.302c-0.014,0.095 -0.021,0.194 -0.021,0.296c-0,0.203 0.049,0.356 0.149,0.46c0.099,0.104 0.249,0.156 0.45,0.156c0.189,-0 0.347,-0.039 0.473,-0.117c0.126,-0.078 0.227,-0.19 0.304,-0.337c0.076,-0.147 0.14,-0.337 0.192,-0.571l0.387,-1.752c0.018,-0.083 0.033,-0.165 0.044,-0.245c0.011,-0.079 0.017,-0.147 0.017,-0.203c0,-0.087 -0.022,-0.148 -0.067,-0.182c-0.044,-0.035 -0.113,-0.055 -0.206,-0.06l0.031,-0.137l1.058,0l-0.031,0.137c-0.068,0.015 -0.119,0.032 -0.151,0.051c-0.033,0.02 -0.062,0.048 -0.087,0.085c-0.025,0.037 -0.049,0.096 -0.074,0.176c-0.024,0.08 -0.055,0.207 -0.094,0.381l-0.362,1.668c-0.073,0.333 -0.175,0.597 -0.307,0.794c-0.131,0.197 -0.296,0.339 -0.494,0.426c-0.198,0.087 -0.439,0.131 -0.725,0.131c-0.322,-0 -0.568,-0.078 -0.738,-0.233c-0.171,-0.155 -0.257,-0.381 -0.257,-0.678c0,-0.104 0.011,-0.223 0.033,-0.358c0.021,-0.134 0.051,-0.286 0.09,-0.455l0.29,-1.298c0.022,-0.098 0.038,-0.186 0.048,-0.263c0.011,-0.077 0.016,-0.139 0.016,-0.185c-0,-0.083 -0.022,-0.143 -0.064,-0.18c-0.043,-0.036 -0.114,-0.057 -0.212,-0.062Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M51.321,45.155l-1.217,0l0.092,-0.431l1.217,-0l-0.092,0.431Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M54.936,42.702l-0.167,0.754l-0.268,0c-0.014,-0.228 -0.064,-0.393 -0.149,-0.494c-0.084,-0.101 -0.22,-0.152 -0.407,-0.152c-0.156,0 -0.303,0.046 -0.44,0.138c-0.138,0.092 -0.268,0.225 -0.39,0.398c-0.123,0.174 -0.23,0.377 -0.321,0.61c-0.091,0.233 -0.16,0.471 -0.208,0.713c-0.049,0.243 -0.073,0.461 -0.073,0.656c0,0.303 0.05,0.525 0.149,0.667c0.099,0.142 0.255,0.213 0.467,0.213c0.139,0 0.26,-0.021 0.364,-0.063c0.104,-0.041 0.202,-0.112 0.293,-0.211c0.091,-0.1 0.181,-0.238 0.27,-0.417l0.267,0l-0.17,0.791c-0.189,0.052 -0.372,0.089 -0.548,0.112c-0.177,0.022 -0.358,0.033 -0.543,0.033c-0.23,0 -0.426,-0.048 -0.588,-0.143c-0.161,-0.096 -0.283,-0.234 -0.365,-0.415c-0.081,-0.181 -0.122,-0.399 -0.122,-0.653c-0,-0.134 0.009,-0.264 0.028,-0.39c0.022,-0.156 0.057,-0.326 0.105,-0.51c0.062,-0.228 0.139,-0.436 0.232,-0.624c0.1,-0.198 0.214,-0.374 0.342,-0.526c0.121,-0.141 0.252,-0.259 0.393,-0.354c0.13,-0.087 0.27,-0.155 0.42,-0.203c0.151,-0.048 0.31,-0.072 0.479,-0.072c0.169,-0 0.326,0.01 0.47,0.03c0.143,0.021 0.304,0.058 0.48,0.112Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M57.754,45.595c-0.024,0.11 -0.04,0.197 -0.047,0.261c-0.008,0.064 -0.011,0.122 -0.011,0.174c-0,0.083 0.021,0.142 0.062,0.176c0.042,0.035 0.112,0.056 0.211,0.063l-0.031,0.137l-1.114,-0l0.031,-0.137c0.07,-0.011 0.123,-0.029 0.158,-0.054c0.036,-0.025 0.065,-0.06 0.089,-0.105c0.025,-0.044 0.047,-0.098 0.067,-0.163c0.021,-0.064 0.051,-0.188 0.092,-0.371l0.229,-1.033l-1.496,-0l-0.231,1.052c-0.015,0.069 -0.026,0.125 -0.035,0.169c-0.008,0.043 -0.014,0.086 -0.018,0.128c-0.004,0.042 -0.005,0.087 -0.005,0.138c-0,0.079 0.018,0.137 0.055,0.172c0.037,0.036 0.11,0.058 0.217,0.067l-0.03,0.137l-1.114,-0l0.03,-0.137c0.071,-0.011 0.124,-0.029 0.159,-0.054c0.036,-0.025 0.065,-0.06 0.089,-0.105c0.024,-0.044 0.047,-0.098 0.067,-0.163c0.021,-0.064 0.051,-0.188 0.092,-0.371l0.473,-2.145c0.017,-0.076 0.032,-0.157 0.044,-0.243c0.012,-0.087 0.018,-0.155 0.018,-0.205c-0,-0.087 -0.023,-0.148 -0.067,-0.182c-0.045,-0.035 -0.113,-0.055 -0.206,-0.06l0.03,-0.137l1.114,0l-0.03,0.137c-0.071,0.015 -0.121,0.031 -0.152,0.05c-0.031,0.018 -0.058,0.046 -0.084,0.083c-0.025,0.038 -0.05,0.096 -0.075,0.174c-0.025,0.079 -0.057,0.208 -0.096,0.386l-0.189,0.852l1.495,0l0.19,-0.855c0.016,-0.076 0.031,-0.157 0.043,-0.243c0.012,-0.087 0.018,-0.155 0.018,-0.205c-0,-0.087 -0.022,-0.148 -0.067,-0.182c-0.045,-0.035 -0.113,-0.055 -0.206,-0.06l0.031,-0.137l1.114,0l-0.031,0.137c-0.063,0.015 -0.108,0.029 -0.134,0.042c-0.026,0.013 -0.049,0.03 -0.071,0.052c-0.021,0.023 -0.042,0.055 -0.061,0.097c-0.02,0.041 -0.04,0.103 -0.063,0.183c-0.022,0.081 -0.048,0.187 -0.078,0.319l-0.476,2.161Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M61.94,42.604l-0.193,0.855l-0.267,0c-0.005,-0.133 -0.016,-0.238 -0.03,-0.313c-0.015,-0.075 -0.032,-0.131 -0.051,-0.167c-0.018,-0.036 -0.04,-0.063 -0.064,-0.081c-0.024,-0.018 -0.054,-0.03 -0.09,-0.037c-0.036,-0.008 -0.088,-0.012 -0.155,-0.012l-0.908,0l-0.317,1.46l0.532,-0c0.082,-0 0.15,-0.012 0.205,-0.034c0.054,-0.022 0.105,-0.061 0.151,-0.115c0.047,-0.055 0.099,-0.139 0.156,-0.252l0.254,-0l-0.251,1.069l-0.237,-0c0,-0.102 -0.003,-0.177 -0.011,-0.226c-0.007,-0.048 -0.017,-0.084 -0.029,-0.107c-0.012,-0.023 -0.027,-0.041 -0.046,-0.054c-0.019,-0.013 -0.043,-0.022 -0.072,-0.028c-0.03,-0.006 -0.079,-0.008 -0.148,-0.008l-0.557,-0l-0.356,1.606l0.824,0c0.082,0 0.151,-0.006 0.207,-0.018c0.057,-0.012 0.109,-0.033 0.155,-0.062c0.046,-0.03 0.091,-0.068 0.134,-0.116c0.042,-0.047 0.086,-0.108 0.132,-0.182c0.045,-0.074 0.107,-0.188 0.185,-0.34l0.27,0l-0.245,0.964l-2.47,-0l0.031,-0.137c0.07,-0.011 0.123,-0.029 0.158,-0.054c0.036,-0.025 0.065,-0.06 0.09,-0.105c0.024,-0.044 0.046,-0.098 0.066,-0.163c0.021,-0.064 0.051,-0.188 0.092,-0.371l0.474,-2.145c0.04,-0.185 0.061,-0.335 0.061,-0.448c-0,-0.087 -0.022,-0.148 -0.067,-0.182c-0.044,-0.035 -0.113,-0.055 -0.206,-0.06l0.031,-0.137l2.562,0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M63.098,44.323l0.092,-0c0.078,-0 0.149,-0.013 0.213,-0.039c0.064,-0.026 0.139,-0.074 0.224,-0.142c0.086,-0.069 0.222,-0.195 0.408,-0.379c0.187,-0.184 0.32,-0.324 0.398,-0.419c0.079,-0.096 0.137,-0.179 0.173,-0.248c0.036,-0.07 0.054,-0.133 0.054,-0.191c0,-0.046 -0.018,-0.084 -0.055,-0.113c-0.037,-0.028 -0.09,-0.046 -0.159,-0.051l0.031,-0.137l1.194,0l-0.03,0.137c-0.075,0.011 -0.159,0.049 -0.252,0.115c-0.094,0.066 -0.238,0.195 -0.431,0.386l-1.08,1.053l0.593,1.425c0.05,0.121 0.091,0.21 0.121,0.266c0.031,0.057 0.064,0.104 0.099,0.142c0.035,0.039 0.075,0.069 0.12,0.092c0.044,0.024 0.098,0.04 0.161,0.049l-0.03,0.137l-1.075,-0l0.03,-0.137c0.101,-0.009 0.151,-0.054 0.151,-0.134c-0,-0.024 -0.003,-0.049 -0.007,-0.075c-0.005,-0.026 -0.015,-0.064 -0.031,-0.114c-0.016,-0.05 -0.037,-0.11 -0.065,-0.181l-0.362,-0.886c-0.043,-0.105 -0.08,-0.18 -0.112,-0.222c-0.031,-0.043 -0.065,-0.073 -0.1,-0.089c-0.035,-0.017 -0.09,-0.025 -0.164,-0.025l-0.156,-0l-0.231,1.052c-0.024,0.112 -0.04,0.199 -0.048,0.263c-0.007,0.064 -0.011,0.121 -0.011,0.172c0,0.083 0.021,0.142 0.063,0.176c0.042,0.035 0.112,0.056 0.21,0.063l-0.031,0.137l-1.113,-0l0.03,-0.137c0.071,-0.011 0.124,-0.029 0.159,-0.054c0.035,-0.025 0.065,-0.06 0.089,-0.105c0.024,-0.044 0.046,-0.098 0.067,-0.163c0.02,-0.064 0.051,-0.188 0.092,-0.371l0.473,-2.145c0.019,-0.085 0.034,-0.167 0.045,-0.246c0.011,-0.079 0.016,-0.146 0.016,-0.202c0,-0.087 -0.022,-0.148 -0.066,-0.182c-0.045,-0.035 -0.114,-0.055 -0.206,-0.06l0.03,-0.137l1.114,0l-0.031,0.137c-0.07,0.015 -0.121,0.031 -0.151,0.05c-0.031,0.018 -0.059,0.046 -0.084,0.083c-0.025,0.038 -0.05,0.096 -0.075,0.174c-0.025,0.079 -0.057,0.208 -0.096,0.386l-0.198,0.889Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M67.283,45.363c-0.003,0.023 -0.004,0.044 -0.005,0.064c-0.001,0.021 -0.002,0.041 -0.002,0.062c0,0.105 0.014,0.195 0.043,0.269c0.028,0.074 0.068,0.134 0.121,0.18c0.052,0.047 0.115,0.08 0.189,0.101c0.074,0.021 0.157,0.032 0.249,0.032c0.092,-0 0.179,-0.013 0.261,-0.039c0.083,-0.025 0.156,-0.063 0.218,-0.114c0.063,-0.052 0.113,-0.115 0.15,-0.191c0.037,-0.075 0.056,-0.163 0.056,-0.262c-0,-0.063 -0.009,-0.121 -0.026,-0.173c-0.017,-0.053 -0.041,-0.101 -0.071,-0.145c-0.03,-0.044 -0.066,-0.085 -0.107,-0.122c-0.042,-0.037 -0.087,-0.072 -0.135,-0.105c-0.049,-0.033 -0.1,-0.065 -0.154,-0.095c-0.054,-0.03 -0.109,-0.06 -0.164,-0.091c-0.059,-0.032 -0.117,-0.064 -0.175,-0.097c-0.058,-0.034 -0.114,-0.07 -0.167,-0.108c-0.053,-0.038 -0.102,-0.079 -0.147,-0.123c-0.046,-0.044 -0.085,-0.093 -0.118,-0.147c-0.033,-0.054 -0.059,-0.113 -0.078,-0.178c-0.019,-0.065 -0.028,-0.137 -0.028,-0.216c-0,-0.098 0.012,-0.19 0.037,-0.275c0.025,-0.085 0.06,-0.163 0.105,-0.234c0.045,-0.071 0.099,-0.134 0.162,-0.19c0.063,-0.056 0.131,-0.103 0.206,-0.141c0.075,-0.039 0.155,-0.068 0.239,-0.088c0.085,-0.02 0.172,-0.03 0.262,-0.03c0.04,0 0.084,0.003 0.13,0.008c0.047,0.005 0.093,0.013 0.14,0.023c0.046,0.01 0.09,0.022 0.133,0.037c0.042,0.014 0.079,0.031 0.112,0.049c0.032,0.019 0.058,0.039 0.078,0.061c0.019,0.023 0.029,0.046 0.029,0.071c-0,0.027 -0.001,0.061 -0.001,0.101c-0.001,0.041 -0.003,0.087 -0.004,0.138c-0.001,0.052 -0.003,0.108 -0.006,0.169c-0.003,0.06 -0.006,0.125 -0.01,0.193l-0.141,-0.007c0.003,-0.034 0.005,-0.066 0.005,-0.097c-0,-0.091 -0.014,-0.172 -0.041,-0.242c-0.028,-0.071 -0.066,-0.129 -0.116,-0.176c-0.05,-0.047 -0.11,-0.082 -0.18,-0.106c-0.07,-0.023 -0.148,-0.035 -0.233,-0.035c-0.085,-0 -0.165,0.014 -0.239,0.042c-0.074,0.029 -0.137,0.068 -0.191,0.119c-0.054,0.05 -0.096,0.11 -0.127,0.18c-0.031,0.07 -0.046,0.146 -0.046,0.23c0,0.067 0.009,0.129 0.027,0.184c0.017,0.055 0.042,0.106 0.073,0.153c0.031,0.046 0.068,0.088 0.11,0.126c0.043,0.038 0.09,0.074 0.14,0.108c0.05,0.034 0.103,0.066 0.158,0.097c0.056,0.031 0.112,0.061 0.169,0.092c0.058,0.031 0.117,0.062 0.175,0.095c0.058,0.032 0.113,0.067 0.166,0.103c0.053,0.037 0.102,0.077 0.147,0.12c0.045,0.043 0.084,0.091 0.117,0.143c0.033,0.053 0.059,0.111 0.078,0.174c0.019,0.063 0.028,0.133 0.028,0.21c0,0.127 -0.017,0.24 -0.052,0.338c-0.035,0.099 -0.081,0.184 -0.14,0.257c-0.058,0.073 -0.125,0.135 -0.201,0.185c-0.076,0.05 -0.154,0.09 -0.236,0.121c-0.082,0.031 -0.163,0.053 -0.245,0.066c-0.082,0.014 -0.157,0.02 -0.227,0.02c-0.092,0 -0.178,-0.006 -0.259,-0.019c-0.081,-0.012 -0.152,-0.029 -0.212,-0.049c-0.061,-0.02 -0.109,-0.044 -0.144,-0.07c-0.035,-0.027 -0.052,-0.054 -0.052,-0.082c0,-0.062 0.002,-0.151 0.006,-0.267c0.004,-0.116 0.011,-0.254 0.021,-0.414l0.14,0.007Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M68.953,44.325c0.104,-0.032 0.192,-0.057 0.266,-0.077c0.073,-0.019 0.134,-0.035 0.184,-0.046c0.05,-0.011 0.089,-0.019 0.117,-0.023c0.028,-0.004 0.049,-0.006 0.063,-0.006c0.024,-0 0.045,0.003 0.066,0.01c0.02,0.007 0.038,0.019 0.053,0.036c0.016,0.017 0.028,0.039 0.036,0.067c0.008,0.029 0.012,0.064 0.012,0.105c0,0.014 -0,0.042 -0.002,0.083c-0.001,0.04 -0.004,0.097 -0.007,0.169c-0.004,0.072 -0.009,0.16 -0.015,0.264c-0.006,0.105 -0.014,0.228 -0.023,0.369l0.017,0.001c0.072,-0.18 0.15,-0.339 0.234,-0.478c0.084,-0.139 0.17,-0.256 0.257,-0.35c0.086,-0.095 0.173,-0.167 0.259,-0.216c0.087,-0.048 0.169,-0.073 0.247,-0.073c0.063,0 0.119,0.012 0.167,0.036c0.048,0.024 0.09,0.055 0.126,0.095c0.036,0.039 0.066,0.084 0.09,0.136c0.024,0.051 0.043,0.105 0.058,0.161c0.015,0.057 0.026,0.114 0.032,0.171c0.007,0.058 0.01,0.111 0.01,0.162c-0,0.136 -0.014,0.264 -0.042,0.382c-0.028,0.119 -0.066,0.228 -0.114,0.327c-0.048,0.099 -0.105,0.187 -0.171,0.265c-0.066,0.078 -0.137,0.144 -0.214,0.197c-0.077,0.054 -0.157,0.094 -0.241,0.123c-0.084,0.028 -0.168,0.042 -0.253,0.042c-0.09,0 -0.177,-0.016 -0.263,-0.048c-0.085,-0.033 -0.165,-0.087 -0.241,-0.162c-0.01,0.233 -0.02,0.474 -0.03,0.722c-0.01,0.248 -0.016,0.508 -0.017,0.778l-0.292,0.033l-0.03,-0.001c0.014,-0.174 0.027,-0.356 0.039,-0.547c0.012,-0.191 0.024,-0.382 0.034,-0.574c0.01,-0.192 0.019,-0.382 0.028,-0.568c0.008,-0.186 0.015,-0.36 0.021,-0.524c0.005,-0.163 0.009,-0.312 0.013,-0.445c0.003,-0.133 0.005,-0.243 0.005,-0.33c-0,-0.036 -0.002,-0.067 -0.006,-0.093c-0.004,-0.026 -0.011,-0.049 -0.022,-0.066c-0.01,-0.018 -0.026,-0.031 -0.046,-0.04c-0.021,-0.009 -0.048,-0.013 -0.081,-0.013c-0.034,-0 -0.076,0.004 -0.125,0.011c-0.049,0.007 -0.109,0.02 -0.178,0.038l-0.021,-0.103ZM69.674,45.895c0.079,0.067 0.157,0.116 0.236,0.148c0.078,0.031 0.157,0.047 0.236,0.047c0.104,0 0.2,-0.022 0.287,-0.066c0.088,-0.044 0.164,-0.11 0.227,-0.197c0.064,-0.087 0.114,-0.195 0.149,-0.324c0.036,-0.128 0.054,-0.277 0.054,-0.447c-0,-0.063 -0.005,-0.128 -0.015,-0.195c-0.009,-0.067 -0.025,-0.128 -0.046,-0.182c-0.02,-0.054 -0.048,-0.099 -0.082,-0.134c-0.034,-0.034 -0.075,-0.052 -0.123,-0.052c-0.057,0 -0.113,0.015 -0.168,0.044c-0.056,0.029 -0.11,0.069 -0.163,0.118c-0.052,0.05 -0.102,0.108 -0.151,0.175c-0.048,0.067 -0.093,0.138 -0.136,0.212c-0.043,0.075 -0.082,0.152 -0.117,0.232c-0.035,0.079 -0.066,0.156 -0.093,0.231c-0.026,0.076 -0.048,0.147 -0.064,0.213c-0.016,0.067 -0.026,0.126 -0.031,0.177Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M71.959,43.594c-0.033,-0 -0.061,-0.007 -0.087,-0.021c-0.025,-0.013 -0.046,-0.031 -0.064,-0.052c-0.017,-0.022 -0.031,-0.047 -0.04,-0.076c-0.009,-0.028 -0.014,-0.057 -0.014,-0.087c0,-0.041 0.007,-0.078 0.021,-0.11c0.014,-0.032 0.032,-0.059 0.054,-0.081c0.023,-0.022 0.047,-0.038 0.074,-0.049c0.027,-0.011 0.053,-0.016 0.079,-0.016c0.032,0 0.06,0.006 0.085,0.018c0.025,0.011 0.047,0.027 0.065,0.048c0.018,0.02 0.032,0.043 0.042,0.07c0.01,0.026 0.015,0.055 0.015,0.085c-0,0.033 -0.006,0.065 -0.017,0.097c-0.011,0.032 -0.027,0.061 -0.047,0.087c-0.02,0.026 -0.044,0.047 -0.072,0.063c-0.029,0.016 -0.06,0.024 -0.094,0.024ZM72.08,44.223c-0.016,0.106 -0.029,0.212 -0.04,0.318c-0.012,0.106 -0.021,0.209 -0.028,0.309c-0.007,0.099 -0.012,0.193 -0.015,0.282c-0.003,0.088 -0.005,0.168 -0.005,0.24c0,0.096 0.002,0.179 0.004,0.248c0.003,0.069 0.008,0.128 0.014,0.175c0.007,0.047 0.015,0.085 0.025,0.113c0.009,0.029 0.022,0.051 0.036,0.066c0.014,0.015 0.031,0.025 0.05,0.03c0.019,0.004 0.041,0.007 0.065,0.007c0.044,-0 0.092,-0.007 0.144,-0.02c0.051,-0.014 0.104,-0.033 0.157,-0.057l0.026,0.073c-0.033,0.027 -0.075,0.054 -0.126,0.082c-0.051,0.028 -0.104,0.053 -0.159,0.076c-0.056,0.024 -0.111,0.042 -0.164,0.057c-0.053,0.014 -0.1,0.021 -0.139,0.021c-0.026,0 -0.049,-0.002 -0.071,-0.006c-0.021,-0.004 -0.04,-0.015 -0.057,-0.031c-0.018,-0.017 -0.033,-0.042 -0.046,-0.074c-0.014,-0.033 -0.025,-0.077 -0.034,-0.132c-0.009,-0.056 -0.015,-0.126 -0.02,-0.209c-0.005,-0.084 -0.007,-0.185 -0.007,-0.304c0,-0.069 0.001,-0.148 0.002,-0.236c0.002,-0.087 0.004,-0.182 0.006,-0.282c0.003,-0.101 0.007,-0.207 0.012,-0.319c0.004,-0.112 0.01,-0.227 0.018,-0.346c0.002,-0.026 0.008,-0.047 0.021,-0.064c0.012,-0.016 0.026,-0.028 0.044,-0.037c0.018,-0.009 0.037,-0.015 0.057,-0.018c0.019,-0.004 0.038,-0.005 0.055,-0.005c0.062,-0 0.12,0.014 0.175,0.043Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M72.837,46.218l-0.022,-0.001c0.008,-0.088 0.015,-0.184 0.021,-0.288c0.007,-0.104 0.013,-0.21 0.018,-0.317c0.006,-0.107 0.011,-0.214 0.015,-0.319c0.004,-0.105 0.008,-0.204 0.011,-0.295c0.003,-0.092 0.005,-0.174 0.007,-0.246c0.001,-0.072 0.002,-0.129 0.002,-0.171c-0,-0.035 -0.001,-0.064 -0.004,-0.089c-0.003,-0.025 -0.009,-0.046 -0.019,-0.063c-0.01,-0.017 -0.024,-0.029 -0.043,-0.037c-0.018,-0.008 -0.043,-0.012 -0.075,-0.012c-0.015,0 -0.032,0.001 -0.048,0.003c-0.017,0.002 -0.036,0.005 -0.056,0.008c-0.021,0.004 -0.044,0.009 -0.069,0.015c-0.026,0.006 -0.055,0.013 -0.088,0.022l-0.021,-0.101c0.154,-0.055 0.279,-0.095 0.374,-0.117c0.096,-0.023 0.16,-0.034 0.194,-0.034c0.061,-0 0.105,0.018 0.131,0.053c0.027,0.036 0.04,0.089 0.04,0.16c-0,0.006 -0.001,0.025 -0.003,0.057c-0.002,0.031 -0.004,0.072 -0.007,0.123c-0.004,0.051 -0.008,0.109 -0.012,0.176c-0.005,0.067 -0.01,0.139 -0.016,0.215c-0.006,0.077 -0.013,0.157 -0.02,0.24c-0.008,0.083 -0.016,0.166 -0.024,0.248l0.014,0.002c0.044,-0.182 0.095,-0.352 0.151,-0.509c0.056,-0.158 0.119,-0.294 0.189,-0.41c0.07,-0.116 0.147,-0.208 0.231,-0.274c0.084,-0.066 0.176,-0.099 0.277,-0.099c0.035,-0 0.068,0.005 0.099,0.016c0.03,0.011 0.057,0.027 0.079,0.047c0.022,0.02 0.04,0.044 0.053,0.071c0.013,0.027 0.019,0.057 0.019,0.09c0,0.041 -0.009,0.082 -0.027,0.12c-0.018,0.039 -0.046,0.073 -0.085,0.102l-0.012,0c-0.039,-0.032 -0.075,-0.055 -0.11,-0.07c-0.035,-0.014 -0.072,-0.021 -0.111,-0.021c-0.042,-0 -0.082,0.007 -0.121,0.023c-0.039,0.016 -0.075,0.039 -0.107,0.068c-0.053,0.049 -0.102,0.113 -0.148,0.192c-0.045,0.079 -0.087,0.167 -0.125,0.264c-0.037,0.096 -0.071,0.198 -0.101,0.304c-0.03,0.106 -0.056,0.21 -0.078,0.311c-0.022,0.1 -0.04,0.195 -0.053,0.284c-0.013,0.088 -0.023,0.163 -0.029,0.223l-0.291,0.036Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M74.737,43.594c-0.033,-0 -0.062,-0.007 -0.087,-0.021c-0.025,-0.013 -0.046,-0.031 -0.064,-0.052c-0.017,-0.022 -0.031,-0.047 -0.04,-0.076c-0.009,-0.028 -0.014,-0.057 -0.014,-0.087c-0,-0.041 0.007,-0.078 0.021,-0.11c0.014,-0.032 0.032,-0.059 0.054,-0.081c0.022,-0.022 0.047,-0.038 0.074,-0.049c0.027,-0.011 0.053,-0.016 0.079,-0.016c0.032,0 0.06,0.006 0.085,0.018c0.025,0.011 0.047,0.027 0.065,0.048c0.018,0.02 0.032,0.043 0.042,0.07c0.01,0.026 0.014,0.055 0.014,0.085c0,0.033 -0.005,0.065 -0.016,0.097c-0.011,0.032 -0.027,0.061 -0.047,0.087c-0.02,0.026 -0.044,0.047 -0.072,0.063c-0.029,0.016 -0.06,0.024 -0.094,0.024ZM74.858,44.223c-0.016,0.106 -0.029,0.212 -0.041,0.318c-0.011,0.106 -0.02,0.209 -0.027,0.309c-0.007,0.099 -0.012,0.193 -0.015,0.282c-0.003,0.088 -0.005,0.168 -0.005,0.24c0,0.096 0.001,0.179 0.004,0.248c0.003,0.069 0.008,0.128 0.014,0.175c0.007,0.047 0.015,0.085 0.025,0.113c0.009,0.029 0.021,0.051 0.036,0.066c0.014,0.015 0.031,0.025 0.05,0.03c0.019,0.004 0.04,0.007 0.065,0.007c0.044,-0 0.092,-0.007 0.144,-0.02c0.051,-0.014 0.103,-0.033 0.156,-0.057l0.027,0.073c-0.034,0.027 -0.076,0.054 -0.126,0.082c-0.051,0.028 -0.104,0.053 -0.16,0.076c-0.055,0.024 -0.11,0.042 -0.163,0.057c-0.054,0.014 -0.1,0.021 -0.139,0.021c-0.026,0 -0.049,-0.002 -0.071,-0.006c-0.021,-0.004 -0.04,-0.015 -0.058,-0.031c-0.017,-0.017 -0.032,-0.042 -0.046,-0.074c-0.013,-0.033 -0.024,-0.077 -0.033,-0.132c-0.009,-0.056 -0.015,-0.126 -0.02,-0.209c-0.005,-0.084 -0.007,-0.185 -0.007,-0.304c-0,-0.069 0.001,-0.148 0.002,-0.236c0.001,-0.087 0.003,-0.182 0.006,-0.282c0.003,-0.101 0.007,-0.207 0.011,-0.319c0.005,-0.112 0.011,-0.227 0.018,-0.346c0.002,-0.026 0.009,-0.047 0.021,-0.064c0.012,-0.016 0.027,-0.028 0.045,-0.037c0.018,-0.009 0.036,-0.015 0.056,-0.018c0.02,-0.004 0.039,-0.005 0.055,-0.005c0.063,-0 0.121,0.014 0.176,0.043Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M76.123,43.172c-0.039,0.176 -0.071,0.358 -0.098,0.546c-0.026,0.188 -0.049,0.374 -0.067,0.557c0.043,0.001 0.086,0.003 0.127,0.004c0.041,0.001 0.08,0.002 0.116,0.002c0.035,0.001 0.068,0.002 0.097,0.002l0.073,-0c0.085,-0 0.154,-0.005 0.208,-0.015c0.004,0.015 0.008,0.03 0.011,0.043c0.003,0.013 0.004,0.025 0.004,0.036c0,0.041 -0.017,0.067 -0.051,0.079c-0.034,0.012 -0.083,0.018 -0.147,0.018c-0.061,0 -0.129,-0.003 -0.205,-0.011c-0.076,-0.007 -0.159,-0.014 -0.249,-0.021c-0.01,0.1 -0.018,0.196 -0.025,0.291c-0.007,0.094 -0.013,0.183 -0.017,0.266c-0.004,0.084 -0.007,0.161 -0.009,0.233c-0.002,0.071 -0.003,0.134 -0.003,0.186c0,0.1 0.005,0.188 0.015,0.266c0.011,0.078 0.029,0.144 0.055,0.199c0.026,0.054 0.061,0.096 0.107,0.124c0.045,0.029 0.103,0.044 0.173,0.044c0.05,-0 0.106,-0.009 0.167,-0.027c0.062,-0.018 0.132,-0.046 0.211,-0.085c0.025,0.025 0.04,0.056 0.044,0.092c-0.058,0.038 -0.116,0.073 -0.175,0.104c-0.058,0.031 -0.116,0.058 -0.172,0.08c-0.057,0.022 -0.112,0.039 -0.164,0.051c-0.053,0.012 -0.104,0.018 -0.151,0.018c-0.062,0 -0.119,-0.011 -0.17,-0.034c-0.052,-0.022 -0.097,-0.063 -0.134,-0.121c-0.038,-0.058 -0.067,-0.136 -0.088,-0.234c-0.021,-0.099 -0.031,-0.223 -0.031,-0.374c-0,-0.084 0.001,-0.171 0.004,-0.261c0.003,-0.089 0.007,-0.18 0.011,-0.272c0.005,-0.092 0.011,-0.184 0.018,-0.276c0.008,-0.091 0.016,-0.182 0.025,-0.271c-0.073,0.001 -0.141,0.004 -0.204,0.009c-0.062,0.005 -0.116,0.013 -0.16,0.024c-0.003,-0.005 -0.005,-0.012 -0.005,-0.019c0,-0.02 0.01,-0.038 0.029,-0.055c0.019,-0.017 0.045,-0.033 0.079,-0.047c0.034,-0.014 0.075,-0.025 0.122,-0.035c0.047,-0.009 0.099,-0.015 0.156,-0.019c0.021,-0.194 0.044,-0.377 0.068,-0.55c0.024,-0.173 0.049,-0.327 0.073,-0.462c0.004,-0.024 0.013,-0.044 0.025,-0.06c0.013,-0.016 0.028,-0.029 0.044,-0.038c0.017,-0.009 0.035,-0.016 0.055,-0.019c0.019,-0.004 0.038,-0.006 0.057,-0.006c0.03,0 0.058,0.003 0.083,0.01c0.024,0.006 0.047,0.016 0.068,0.028Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M79.373,42.907c0.122,0 0.234,0.011 0.338,0.034c0.103,0.022 0.193,0.049 0.268,0.082c0.075,0.032 0.134,0.067 0.177,0.104c0.043,0.037 0.064,0.071 0.064,0.102c-0,0.064 -0.002,0.147 -0.007,0.249c-0.005,0.102 -0.011,0.226 -0.018,0.37l-0.121,-0.004l0.002,-0.074c-0,-0.064 -0.008,-0.125 -0.021,-0.183c-0.014,-0.058 -0.038,-0.113 -0.073,-0.166c-0.037,-0.053 -0.082,-0.1 -0.133,-0.141c-0.052,-0.041 -0.108,-0.075 -0.169,-0.103c-0.062,-0.028 -0.127,-0.049 -0.197,-0.063c-0.069,-0.014 -0.14,-0.022 -0.213,-0.022c-0.124,0 -0.237,0.02 -0.339,0.058c-0.101,0.039 -0.192,0.092 -0.272,0.16c-0.08,0.068 -0.149,0.149 -0.208,0.243c-0.059,0.093 -0.108,0.194 -0.146,0.304c-0.039,0.109 -0.068,0.224 -0.087,0.345c-0.019,0.121 -0.028,0.243 -0.028,0.366c-0,0.146 0.012,0.283 0.036,0.412c0.024,0.129 0.058,0.248 0.103,0.357c0.045,0.109 0.098,0.206 0.162,0.292c0.063,0.087 0.133,0.16 0.212,0.22c0.078,0.059 0.163,0.105 0.255,0.137c0.091,0.031 0.187,0.047 0.289,0.047c0.07,0 0.143,-0.008 0.218,-0.023c0.074,-0.015 0.15,-0.039 0.227,-0.072c0.077,-0.033 0.155,-0.075 0.233,-0.126c0.079,-0.05 0.157,-0.111 0.235,-0.181c0.007,0.003 0.016,0.008 0.026,0.014c0.01,0.005 0.019,0.011 0.027,0.018c0.008,0.007 0.015,0.015 0.022,0.023c0.006,0.009 0.009,0.017 0.009,0.025c-0,0.006 -0.004,0.014 -0.012,0.024c-0.091,0.1 -0.182,0.184 -0.275,0.252c-0.093,0.068 -0.186,0.123 -0.28,0.164c-0.094,0.042 -0.188,0.072 -0.284,0.09c-0.095,0.018 -0.19,0.027 -0.284,0.027c-0.126,0 -0.245,-0.017 -0.359,-0.052c-0.114,-0.035 -0.219,-0.085 -0.317,-0.149c-0.097,-0.065 -0.185,-0.144 -0.264,-0.236c-0.079,-0.093 -0.146,-0.197 -0.202,-0.312c-0.056,-0.115 -0.099,-0.24 -0.129,-0.375c-0.03,-0.135 -0.045,-0.278 -0.045,-0.428c-0,-0.145 0.015,-0.29 0.044,-0.437c0.029,-0.146 0.073,-0.286 0.131,-0.419c0.058,-0.134 0.131,-0.259 0.218,-0.375c0.088,-0.116 0.19,-0.217 0.307,-0.303c0.117,-0.086 0.249,-0.153 0.396,-0.202c0.146,-0.048 0.308,-0.073 0.484,-0.073Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M80.532,45.381c-0,-0.093 0.01,-0.188 0.029,-0.285c0.02,-0.097 0.048,-0.19 0.086,-0.281c0.038,-0.09 0.086,-0.175 0.142,-0.254c0.056,-0.08 0.121,-0.149 0.194,-0.209c0.073,-0.059 0.155,-0.106 0.245,-0.14c0.09,-0.035 0.188,-0.052 0.294,-0.052c0.119,0 0.224,0.025 0.315,0.076c0.092,0.05 0.168,0.116 0.231,0.198c0.062,0.082 0.109,0.176 0.141,0.28c0.032,0.105 0.048,0.213 0.048,0.322c-0,0.094 -0.01,0.189 -0.029,0.286c-0.02,0.096 -0.049,0.19 -0.087,0.28c-0.039,0.091 -0.086,0.176 -0.142,0.255c-0.056,0.079 -0.121,0.149 -0.195,0.208c-0.073,0.06 -0.155,0.106 -0.245,0.141c-0.09,0.034 -0.188,0.051 -0.293,0.051c-0.119,0 -0.224,-0.025 -0.316,-0.075c-0.091,-0.05 -0.168,-0.116 -0.23,-0.198c-0.061,-0.082 -0.108,-0.176 -0.14,-0.281c-0.032,-0.105 -0.048,-0.212 -0.048,-0.322ZM80.865,45.249c-0,0.063 0.004,0.127 0.014,0.192c0.01,0.065 0.025,0.128 0.045,0.188c0.021,0.061 0.046,0.117 0.076,0.169c0.03,0.053 0.066,0.099 0.108,0.138c0.041,0.039 0.087,0.069 0.139,0.092c0.051,0.022 0.108,0.033 0.17,0.033c0.068,-0 0.128,-0.015 0.179,-0.044c0.052,-0.029 0.096,-0.068 0.134,-0.116c0.038,-0.048 0.069,-0.104 0.093,-0.166c0.025,-0.062 0.045,-0.126 0.059,-0.193c0.015,-0.066 0.026,-0.132 0.032,-0.197c0.006,-0.065 0.009,-0.125 0.009,-0.179c-0,-0.064 -0.005,-0.129 -0.015,-0.193c-0.01,-0.065 -0.025,-0.127 -0.045,-0.187c-0.021,-0.06 -0.046,-0.116 -0.076,-0.168c-0.03,-0.053 -0.066,-0.098 -0.107,-0.137c-0.041,-0.038 -0.088,-0.069 -0.139,-0.091c-0.052,-0.022 -0.109,-0.033 -0.171,-0.033c-0.068,-0 -0.127,0.014 -0.179,0.043c-0.051,0.029 -0.096,0.067 -0.134,0.115c-0.037,0.049 -0.068,0.104 -0.093,0.166c-0.024,0.062 -0.044,0.126 -0.059,0.192c-0.015,0.066 -0.025,0.132 -0.031,0.197c-0.006,0.066 -0.009,0.125 -0.009,0.179Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M82.392,44.332c0.066,-0.024 0.129,-0.045 0.19,-0.064c0.061,-0.019 0.117,-0.035 0.168,-0.049c0.051,-0.014 0.096,-0.025 0.135,-0.032c0.039,-0.008 0.07,-0.011 0.092,-0.011c0.054,-0 0.096,0.016 0.126,0.048c0.03,0.032 0.045,0.087 0.045,0.165c0,0.018 -0.002,0.058 -0.005,0.119c-0.004,0.061 -0.01,0.137 -0.016,0.229c-0.007,0.092 -0.016,0.197 -0.026,0.314c-0.01,0.118 -0.022,0.244 -0.035,0.376l0.008,0.002c0.065,-0.236 0.134,-0.434 0.208,-0.594c0.073,-0.16 0.148,-0.289 0.224,-0.388c0.076,-0.098 0.153,-0.169 0.23,-0.211c0.077,-0.042 0.151,-0.063 0.224,-0.063c0.064,-0 0.118,0.016 0.163,0.047c0.044,0.032 0.081,0.073 0.108,0.124c0.028,0.051 0.049,0.109 0.062,0.173c0.013,0.065 0.019,0.131 0.019,0.197c0,0.059 -0.002,0.121 -0.005,0.186c-0.004,0.066 -0.009,0.13 -0.014,0.194c-0.006,0.064 -0.012,0.124 -0.018,0.181c-0.006,0.057 -0.011,0.107 -0.016,0.15l0.009,0.001c0.065,-0.239 0.134,-0.44 0.208,-0.602c0.074,-0.162 0.149,-0.292 0.225,-0.391c0.077,-0.098 0.154,-0.168 0.231,-0.211c0.077,-0.042 0.152,-0.063 0.224,-0.063c0.046,-0 0.091,0.01 0.135,0.029c0.044,0.02 0.082,0.051 0.116,0.094c0.034,0.043 0.061,0.099 0.082,0.167c0.02,0.067 0.03,0.149 0.03,0.245c0,0.027 -0.001,0.063 -0.005,0.11c-0.003,0.047 -0.007,0.099 -0.011,0.157c-0.005,0.058 -0.01,0.119 -0.016,0.183c-0.006,0.065 -0.012,0.128 -0.016,0.19c-0.005,0.062 -0.009,0.121 -0.012,0.178c-0.003,0.056 -0.005,0.104 -0.005,0.145c-0,0.073 0.003,0.131 0.009,0.177c0.006,0.045 0.016,0.081 0.03,0.108c0.014,0.026 0.032,0.044 0.056,0.054c0.023,0.01 0.051,0.015 0.085,0.015c0.048,-0 0.098,-0.007 0.15,-0.02c0.052,-0.014 0.104,-0.033 0.157,-0.057l0.027,0.073c-0.034,0.027 -0.076,0.054 -0.127,0.082c-0.051,0.028 -0.105,0.053 -0.161,0.076c-0.056,0.024 -0.112,0.042 -0.168,0.057c-0.055,0.014 -0.105,0.021 -0.147,0.021c-0.05,0 -0.09,-0.013 -0.119,-0.04c-0.028,-0.027 -0.05,-0.064 -0.064,-0.11c-0.015,-0.046 -0.024,-0.101 -0.028,-0.163c-0.004,-0.062 -0.006,-0.129 -0.006,-0.2c-0,-0.087 0.003,-0.177 0.009,-0.272c0.006,-0.095 0.012,-0.185 0.02,-0.27c0.007,-0.085 0.014,-0.163 0.02,-0.232c0.006,-0.069 0.009,-0.121 0.009,-0.157c0,-0.101 -0.018,-0.177 -0.054,-0.227c-0.035,-0.051 -0.084,-0.076 -0.145,-0.076c-0.047,-0 -0.098,0.022 -0.151,0.067c-0.054,0.045 -0.107,0.107 -0.16,0.186c-0.054,0.079 -0.105,0.172 -0.155,0.279c-0.049,0.108 -0.094,0.224 -0.134,0.349c-0.04,0.126 -0.074,0.257 -0.101,0.394c-0.028,0.137 -0.045,0.274 -0.054,0.411l-0.291,0.036l-0.022,-0.001c0.01,-0.195 0.02,-0.368 0.029,-0.518c0.008,-0.15 0.016,-0.282 0.023,-0.394c0.007,-0.112 0.013,-0.208 0.017,-0.286c0.004,-0.078 0.006,-0.142 0.006,-0.193c0,-0.104 -0.018,-0.183 -0.053,-0.235c-0.036,-0.053 -0.082,-0.08 -0.138,-0.08c-0.049,0 -0.101,0.022 -0.155,0.066c-0.054,0.044 -0.108,0.105 -0.161,0.183c-0.053,0.078 -0.103,0.171 -0.152,0.277c-0.049,0.106 -0.093,0.221 -0.132,0.344c-0.04,0.124 -0.073,0.254 -0.099,0.39c-0.027,0.137 -0.044,0.274 -0.052,0.411l-0.292,0.036l-0.022,-0.001c0.008,-0.088 0.015,-0.184 0.021,-0.288c0.007,-0.104 0.013,-0.21 0.018,-0.317c0.006,-0.107 0.011,-0.214 0.015,-0.319c0.004,-0.105 0.008,-0.204 0.011,-0.295c0.003,-0.092 0.006,-0.174 0.007,-0.246c0.001,-0.072 0.002,-0.129 0.002,-0.171c0,-0.038 -0.003,-0.07 -0.008,-0.096c-0.006,-0.026 -0.014,-0.047 -0.026,-0.062c-0.012,-0.016 -0.026,-0.026 -0.044,-0.033c-0.018,-0.006 -0.038,-0.01 -0.063,-0.01c-0.033,0 -0.073,0.005 -0.119,0.014c-0.047,0.01 -0.1,0.022 -0.159,0.038l-0.021,-0.1Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M86.789,42.445c-0.017,0.148 -0.035,0.302 -0.053,0.459c-0.017,0.158 -0.034,0.318 -0.051,0.479c-0.016,0.162 -0.032,0.324 -0.047,0.488c-0.015,0.163 -0.029,0.324 -0.042,0.484c-0.012,0.159 -0.023,0.315 -0.032,0.467c-0.01,0.153 -0.017,0.3 -0.023,0.44l0.016,0.001c0.073,-0.18 0.152,-0.339 0.236,-0.476c0.085,-0.137 0.171,-0.253 0.258,-0.345c0.087,-0.093 0.174,-0.163 0.26,-0.211c0.086,-0.047 0.167,-0.071 0.243,-0.071c0.064,0 0.12,0.012 0.169,0.036c0.05,0.024 0.092,0.055 0.129,0.095c0.036,0.039 0.066,0.084 0.09,0.136c0.024,0.051 0.044,0.105 0.059,0.161c0.014,0.057 0.025,0.114 0.031,0.171c0.006,0.058 0.009,0.111 0.009,0.162c-0,0.138 -0.014,0.267 -0.041,0.387c-0.027,0.121 -0.065,0.23 -0.114,0.329c-0.048,0.099 -0.105,0.187 -0.171,0.264c-0.066,0.077 -0.137,0.142 -0.214,0.195c-0.077,0.053 -0.159,0.093 -0.244,0.12c-0.085,0.028 -0.171,0.041 -0.258,0.041c-0.057,0 -0.115,-0.006 -0.173,-0.019c-0.058,-0.013 -0.115,-0.033 -0.17,-0.06c-0.055,-0.027 -0.107,-0.062 -0.156,-0.104c-0.05,-0.042 -0.094,-0.092 -0.133,-0.15c-0.032,0.082 -0.065,0.149 -0.099,0.201c-0.033,0.052 -0.064,0.094 -0.093,0.125l-0.072,-0.018c0.051,-0.142 0.088,-0.312 0.113,-0.511c0.024,-0.2 0.042,-0.425 0.055,-0.677c0.005,-0.107 0.011,-0.23 0.018,-0.367c0.007,-0.137 0.014,-0.282 0.021,-0.435c0.008,-0.152 0.016,-0.307 0.024,-0.467c0.008,-0.159 0.017,-0.314 0.025,-0.464c0.008,-0.15 0.016,-0.293 0.024,-0.428c0.007,-0.134 0.014,-0.253 0.021,-0.357c0,-0.023 0.007,-0.042 0.02,-0.058c0.013,-0.016 0.03,-0.029 0.049,-0.039c0.02,-0.01 0.042,-0.017 0.066,-0.022c0.025,-0.004 0.049,-0.007 0.073,-0.007c0.057,0 0.116,0.015 0.177,0.045ZM87.701,45.056c0,-0.063 -0.005,-0.128 -0.014,-0.195c-0.01,-0.067 -0.025,-0.128 -0.046,-0.182c-0.021,-0.054 -0.049,-0.099 -0.083,-0.134c-0.033,-0.034 -0.074,-0.052 -0.123,-0.052c-0.056,0 -0.112,0.014 -0.168,0.043c-0.055,0.028 -0.108,0.066 -0.16,0.114c-0.051,0.048 -0.101,0.103 -0.148,0.165c-0.047,0.063 -0.092,0.129 -0.133,0.197c-0.041,0.069 -0.078,0.139 -0.111,0.209c-0.033,0.07 -0.062,0.136 -0.085,0.199c-0.024,0.064 -0.042,0.121 -0.055,0.172c-0.013,0.052 -0.02,0.093 -0.02,0.124c0.014,0.057 0.036,0.109 0.065,0.156c0.029,0.047 0.065,0.087 0.106,0.12c0.041,0.033 0.087,0.058 0.138,0.076c0.05,0.018 0.104,0.026 0.161,0.026c0.092,0 0.18,-0.023 0.262,-0.07c0.082,-0.047 0.154,-0.115 0.215,-0.204c0.061,-0.089 0.11,-0.198 0.146,-0.326c0.035,-0.129 0.053,-0.275 0.053,-0.438Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M88.365,45.381c0,-0.093 0.01,-0.188 0.03,-0.285c0.019,-0.097 0.048,-0.19 0.086,-0.281c0.038,-0.09 0.085,-0.175 0.141,-0.254c0.056,-0.08 0.121,-0.149 0.195,-0.209c0.073,-0.059 0.155,-0.106 0.245,-0.14c0.09,-0.035 0.188,-0.052 0.293,-0.052c0.119,0 0.224,0.025 0.316,0.076c0.091,0.05 0.168,0.116 0.23,0.198c0.062,0.082 0.11,0.176 0.142,0.28c0.032,0.105 0.048,0.213 0.048,0.322c-0,0.094 -0.01,0.189 -0.03,0.286c-0.019,0.096 -0.048,0.19 -0.087,0.28c-0.038,0.091 -0.086,0.176 -0.142,0.255c-0.056,0.079 -0.121,0.149 -0.194,0.208c-0.073,0.06 -0.155,0.106 -0.245,0.141c-0.09,0.034 -0.188,0.051 -0.294,0.051c-0.119,0 -0.224,-0.025 -0.315,-0.075c-0.092,-0.05 -0.168,-0.116 -0.23,-0.198c-0.062,-0.082 -0.109,-0.176 -0.141,-0.281c-0.032,-0.105 -0.048,-0.212 -0.048,-0.322ZM88.698,45.249c0,0.063 0.005,0.127 0.015,0.192c0.01,0.065 0.025,0.128 0.045,0.188c0.02,0.061 0.046,0.117 0.076,0.169c0.03,0.053 0.066,0.099 0.107,0.138c0.041,0.039 0.088,0.069 0.139,0.092c0.052,0.022 0.109,0.033 0.171,0.033c0.068,-0 0.127,-0.015 0.179,-0.044c0.051,-0.029 0.096,-0.068 0.134,-0.116c0.037,-0.048 0.068,-0.104 0.093,-0.166c0.024,-0.062 0.044,-0.126 0.059,-0.193c0.015,-0.066 0.025,-0.132 0.031,-0.197c0.006,-0.065 0.009,-0.125 0.009,-0.179c0,-0.064 -0.004,-0.129 -0.014,-0.193c-0.01,-0.065 -0.025,-0.127 -0.045,-0.187c-0.021,-0.06 -0.046,-0.116 -0.076,-0.168c-0.031,-0.053 -0.066,-0.098 -0.108,-0.137c-0.041,-0.038 -0.087,-0.069 -0.139,-0.091c-0.051,-0.022 -0.108,-0.033 -0.17,-0.033c-0.068,-0 -0.128,0.014 -0.179,0.043c-0.052,0.029 -0.096,0.067 -0.134,0.115c-0.038,0.049 -0.069,0.104 -0.093,0.166c-0.025,0.062 -0.045,0.126 -0.059,0.192c-0.015,0.066 -0.026,0.132 -0.032,0.197c-0.006,0.066 -0.009,0.125 -0.009,0.179Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M95.015,49.884l-55.056,0.169c1.178,8.3 3.964,16.599 8.096,24.899l53.267,-0.253c-0.468,-8.474 -2.202,-16.791 -6.307,-24.815Z"
|
||||
android:fillColor="#232121"/>
|
||||
<path
|
||||
android:pathData="M93.977,51.234l-52.33,0.148c1.119,7.266 3.768,14.532 7.695,21.798l50.629,-0.222c-0.445,-7.418 -2.093,-14.699 -5.994,-21.724Z"
|
||||
android:fillColor="#9c9c9c"/>
|
||||
<path
|
||||
android:pathData="M97.314,58.815c-0.621,-2.274 -1.511,-5.644 -2.909,-5.977l-46.282,0.338c-1.106,-0 -2.003,0.898 -2.003,2.005l-0.047,11.459c0.419,1.159 1.47,2.679 2.323,4.852l48.284,-0.085l0.634,-12.592Z"
|
||||
android:fillColor="#6c684d"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M76.495,59.591l-1.452,-1.453l-2.905,-0l-1.453,1.453l0,5.195l1.453,1.453l2.905,-0l1.452,-1.453l0,-5.195Z"
|
||||
android:fillAlpha="0.41"/>
|
||||
<path
|
||||
android:pathData="M75.213,60.492l-1.955,1.704l-0,-3.408l1.955,1.704Z"
|
||||
android:strokeWidth="0.75"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M75.213,63.838l-1.955,1.704l-0,-3.408l1.955,1.704Z"
|
||||
android:strokeWidth="0.75"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M73.565,62.092l-1.23,-1.519l-0.304,0.246l1.23,1.519l0.304,-0.246Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M73.35,61.884l-1.383,1.383l0.249,0.249l1.383,-1.383l-0.249,-0.249Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M23.509,45.515c5.889,-1.177 11.389,1.466 12.274,5.897c0.885,4.432 -3.178,8.984 -9.067,10.16c-5.889,1.177 -11.389,-1.466 -12.274,-5.897c-0.885,-4.432 3.177,-8.984 9.067,-10.16Z"
|
||||
android:fillColor="#232121"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M24.584,49.088c3.797,-0.759 7.262,0.534 7.731,2.886c0.47,2.351 -2.232,4.875 -6.03,5.634c-3.797,0.758 -7.262,-0.535 -7.731,-2.886c-0.47,-2.351 2.232,-4.876 6.03,-5.634Z"/>
|
||||
<path
|
||||
android:pathData="M24.622,49.749c3.246,-0.648 6.207,0.457 6.608,2.467c0.402,2.009 -1.907,4.167 -5.153,4.815c-3.246,0.649 -6.207,-0.456 -6.608,-2.466c-0.402,-2.01 1.908,-4.167 5.153,-4.816Z"
|
||||
android:fillColor="#232121"/>
|
||||
<path
|
||||
android:pathData="M29.181,59.053l1.85,5.241l-5.327,1.589l-1.849,-5.241l5.326,-1.589Z"
|
||||
android:fillColor="#222323"/>
|
||||
<path
|
||||
android:pathData="M27.729,62.818c5.889,-1.176 11.389,1.466 12.274,5.897c0.885,4.432 -3.178,8.984 -9.067,10.16c-5.889,1.177 -11.389,-1.466 -12.274,-5.897c-0.885,-4.431 3.178,-8.984 9.067,-10.16Z"
|
||||
android:fillColor="#232121"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M28.804,66.391c3.797,-0.759 7.262,0.534 7.731,2.886c0.47,2.351 -2.232,4.876 -6.029,5.634c-3.798,0.759 -7.262,-0.535 -7.732,-2.886c-0.47,-2.351 2.232,-4.876 6.03,-5.634Z"/>
|
||||
<path
|
||||
android:pathData="M28.921,66.974c3.246,-0.648 6.207,0.457 6.608,2.467c0.401,2.009 -1.908,4.167 -5.154,4.815c-3.245,0.649 -6.206,-0.456 -6.608,-2.466c-0.401,-2.01 1.908,-4.167 5.154,-4.816Z"
|
||||
android:fillColor="#232121"/>
|
||||
<path
|
||||
android:pathData="M32.568,68.842l-0.564,-0.619l-3.412,4.073l0.564,0.618l3.412,-4.072Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M27.874,69.634l-0.705,0.599l1.787,2.754l0.705,-0.6l-1.787,-2.753Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M17.265,41.908h2.626v3.967h-2.626z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M18.159,40.791h2.682v3.408h-2.682z"
|
||||
android:fillColor="#fff"
|
||||
android:fillAlpha="0.44"/>
|
||||
<path
|
||||
android:pathData="M24.091,50.931h2.682v3.408h-2.682z"
|
||||
android:fillColor="#fff"
|
||||
android:fillAlpha="0.44"/>
|
||||
<path
|
||||
android:pathData="M23.197,52.048h2.626v3.967h-2.626z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M22.12,79.345l-0.563,-0.619l-3.412,4.073l0.564,0.619l3.411,-4.073Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M17.427,80.137l-0.705,0.599l1.786,2.754l0.705,-0.599l-1.786,-2.754Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M101.406,83.862c0,-0.864 -0.702,-1.566 -1.566,-1.566l-61.353,-0c-0.865,-0 -1.567,0.702 -1.567,1.566l12.83,18.016l51.656,-0l0,-18.016Z"/>
|
||||
<path
|
||||
android:pathData="M99.971,84.945c0,-0.821 -0.659,-1.487 -1.471,-1.487l-57.598,-0c-0.812,-0 -1.471,0.666 -1.471,1.487l12.045,17.102l48.495,-0l0,-17.102Z"
|
||||
android:fillColor="#a7a9a6"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M99.971,84.945c0,-0.821 -0.666,-1.487 -1.487,-1.487l-28.414,-0l0,18.589l29.901,-0l0,-17.102Z"
|
||||
android:fillAlpha="0.41"/>
|
||||
<path
|
||||
android:pathData="M52.221,83.265l-13.866,0.174l13.004,18.644l0.9,0.002l-0.038,-18.82Z"
|
||||
android:fillColor="#443f29"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M52.093,101.965l-0,-18.589l4.649,4.647l0,9.294l-4.649,4.648Z"
|
||||
android:fillColor="#443f29"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:pathData="M56.742,90.954h3.476v3.433h-3.476z"
|
||||
android:fillColor="#443f29"
|
||||
android:fillAlpha="0.4"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M60.163,83.446h1.651v18.685h-1.651z"
|
||||
android:fillAlpha="0.55"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M68.376,83.446h1.695v18.685h-1.695z"
|
||||
android:fillAlpha="0.55"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M64.639,83.316h1.955v18.685h-1.955z"
|
||||
android:fillAlpha="0.55"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M78.598,94.921l-0,-0.27l1.823,0c-0.066,-0.065 -0.132,-0.15 -0.197,-0.255c-0.066,-0.106 -0.115,-0.2 -0.148,-0.284l0.277,-0c0.075,0.151 0.166,0.282 0.273,0.395c0.107,0.113 0.211,0.193 0.311,0.24l0,0.174l-2.339,-0Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M78.598,95.757l0.326,-0l-0,0.307l-0.326,0c-0.12,0 -0.217,-0.02 -0.29,-0.06c-0.074,-0.04 -0.131,-0.103 -0.171,-0.19l0.122,-0.075c0.027,0.057 0.066,0.099 0.117,0.126c0.052,0.027 0.125,0.042 0.222,0.045l-0,-0.153Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M79.208,96.464l0.026,0.283c-0.147,0.021 -0.257,0.07 -0.33,0.147c-0.074,0.076 -0.111,0.168 -0.111,0.276c0,0.13 0.052,0.24 0.156,0.33c0.104,0.09 0.242,0.134 0.413,0.134c0.164,0 0.292,-0.043 0.387,-0.129c0.094,-0.087 0.141,-0.2 0.141,-0.34c0,-0.086 -0.021,-0.165 -0.063,-0.235c-0.042,-0.07 -0.096,-0.125 -0.163,-0.165l0.035,-0.253l1.197,0.213l0,1.092l-0.273,0l-0,-0.876l-0.626,-0.119c0.097,0.132 0.146,0.271 0.146,0.415c-0,0.192 -0.071,0.354 -0.212,0.486c-0.141,0.132 -0.322,0.198 -0.543,0.198c-0.211,-0 -0.393,-0.058 -0.547,-0.174c-0.189,-0.141 -0.283,-0.333 -0.283,-0.577c0,-0.2 0.059,-0.363 0.178,-0.489c0.119,-0.127 0.276,-0.199 0.472,-0.217Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M84.532,95.094l-0,-0.322l2.054,-0c-0.074,-0.078 -0.148,-0.18 -0.222,-0.306c-0.074,-0.126 -0.129,-0.239 -0.166,-0.339l0.311,-0c0.085,0.18 0.188,0.338 0.309,0.473c0.12,0.135 0.237,0.23 0.351,0.286l-0,0.208l-2.637,0Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M58.766,93.922l0.035,0.261c-0.148,0.03 -0.254,0.081 -0.32,0.153c-0.065,0.072 -0.098,0.16 -0.098,0.263c0,0.123 0.043,0.227 0.128,0.311c0.085,0.085 0.191,0.127 0.316,0.127c0.12,0 0.219,-0.039 0.297,-0.117c0.078,-0.079 0.117,-0.178 0.117,-0.299c-0,-0.049 -0.01,-0.111 -0.029,-0.184l0.229,0.029c-0.002,0.017 -0.003,0.031 -0.003,0.042c-0,0.111 0.029,0.211 0.087,0.3c0.058,0.089 0.147,0.134 0.268,0.134c0.096,-0 0.175,-0.033 0.238,-0.098c0.063,-0.064 0.094,-0.148 0.094,-0.25c0,-0.102 -0.032,-0.187 -0.096,-0.254c-0.063,-0.068 -0.159,-0.111 -0.287,-0.131l0.047,-0.261c0.175,0.032 0.31,0.105 0.407,0.218c0.096,0.113 0.144,0.253 0.144,0.422c-0,0.116 -0.025,0.223 -0.075,0.32c-0.05,0.098 -0.118,0.173 -0.204,0.224c-0.086,0.052 -0.177,0.078 -0.274,0.078c-0.092,-0 -0.175,-0.025 -0.251,-0.074c-0.075,-0.049 -0.135,-0.122 -0.179,-0.219c-0.029,0.126 -0.09,0.223 -0.181,0.293c-0.091,0.069 -0.206,0.104 -0.343,0.104c-0.186,0 -0.343,-0.067 -0.472,-0.203c-0.129,-0.135 -0.194,-0.306 -0.194,-0.513c0,-0.187 0.056,-0.342 0.167,-0.465c0.111,-0.123 0.255,-0.194 0.432,-0.211Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M58.205,95.713l0.297,0l0,0.297l-0.297,0c-0.109,0 -0.197,-0.019 -0.265,-0.058c-0.067,-0.038 -0.119,-0.1 -0.155,-0.184l0.111,-0.072c0.024,0.055 0.06,0.095 0.107,0.121c0.047,0.027 0.114,0.041 0.202,0.044l0,-0.148Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M58.205,97.381l0,-0.261l1.663,-0c-0.059,-0.063 -0.119,-0.145 -0.179,-0.247c-0.06,-0.102 -0.105,-0.194 -0.135,-0.275l0.252,-0c0.069,0.146 0.152,0.273 0.25,0.383c0.097,0.109 0.192,0.186 0.284,0.232l-0,0.168l-2.135,-0Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M58.762,98.049l0.023,0.274c-0.133,0.021 -0.234,0.068 -0.301,0.142c-0.067,0.074 -0.101,0.163 -0.101,0.267c0,0.126 0.048,0.232 0.143,0.319c0.094,0.087 0.22,0.131 0.377,0.131c0.149,0 0.266,-0.042 0.352,-0.125c0.086,-0.084 0.129,-0.194 0.129,-0.329c0,-0.084 -0.019,-0.16 -0.057,-0.228c-0.038,-0.067 -0.088,-0.12 -0.149,-0.159l0.032,-0.245l1.092,0.206l0,1.057l-0.249,-0l-0,-0.848l-0.572,-0.115c0.089,0.128 0.134,0.262 0.134,0.402c-0,0.185 -0.065,0.342 -0.193,0.47c-0.129,0.127 -0.294,0.191 -0.496,0.191c-0.193,-0 -0.359,-0.056 -0.499,-0.168c-0.172,-0.137 -0.258,-0.323 -0.258,-0.559c-0,-0.193 0.054,-0.351 0.162,-0.473c0.109,-0.122 0.252,-0.192 0.431,-0.21Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M72.623,95.683l-0.275,-0l0,-1.537c0.069,-0.002 0.135,0.009 0.199,0.033c0.104,0.04 0.207,0.102 0.309,0.188c0.101,0.087 0.219,0.211 0.352,0.374c0.207,0.252 0.371,0.423 0.492,0.512c0.121,0.089 0.236,0.133 0.344,0.133c0.113,0 0.208,-0.04 0.286,-0.121c0.077,-0.081 0.116,-0.186 0.116,-0.316c0,-0.138 -0.041,-0.248 -0.123,-0.33c-0.083,-0.083 -0.197,-0.124 -0.343,-0.126l0.03,-0.293c0.219,0.02 0.386,0.096 0.501,0.227c0.114,0.131 0.172,0.307 0.172,0.528c-0,0.223 -0.062,0.399 -0.186,0.529c-0.124,0.131 -0.277,0.196 -0.46,0.196c-0.093,-0 -0.184,-0.019 -0.274,-0.058c-0.09,-0.038 -0.185,-0.101 -0.284,-0.189c-0.099,-0.088 -0.236,-0.235 -0.409,-0.44c-0.144,-0.171 -0.241,-0.281 -0.293,-0.33c-0.051,-0.049 -0.102,-0.089 -0.154,-0.12l-0,1.14Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M55.974,85.925h43.913v0.675h-43.913z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M61.086,86.551h0.548v5.866h-0.548z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M59.209,86.332h0.548v3.52h-0.548z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M78.263,86.449h0.548v3.52h-0.548z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M75.96,86.536h0.548v3.52h-0.548z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M73.483,86.579h0.548v5.866h-0.548z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M70.92,86.449h0.548v3.52h-0.548z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M68.448,86.261h0.548v3.52h-0.548z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M63.473,86.48h0.548v3.52h-0.548z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M65.945,86.355h0.548v3.52h-0.548z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M97.991,86.318h0.548v5.866h-0.548z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M95.514,86.579h0.548v3.52h-0.548z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M93.255,86.579h0.548v3.52h-0.548z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M90.778,86.666h0.548v3.52h-0.548z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M88.171,86.492h0.548v3.52h-0.548z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M85.824,86.536h0.548v5.866h-0.548z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M83.304,86.536h0.565v3.52h-0.565z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M80.865,86.548h0.548v3.52h-0.548z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M79.48,86.318h0.548v6.214h-0.548z"/>
|
||||
</vector>
|
9
app/src/main/res/drawable/ic_dice.xml
Normal file
9
app/src/main/res/drawable/ic_dice.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="640dp"
|
||||
android:height="512dp"
|
||||
android:viewportWidth="640"
|
||||
android:viewportHeight="512">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M592,192L473.26,192c12.69,29.59 7.12,65.2 -17,89.32L320,417.58L320,464c0,26.51 21.49,48 48,48h224c26.51,0 48,-21.49 48,-48L640,240c0,-26.51 -21.49,-48 -48,-48zM480,376c-13.25,0 -24,-10.75 -24,-24 0,-13.26 10.75,-24 24,-24s24,10.74 24,24c0,13.25 -10.75,24 -24,24zM433.63,189.3L258.7,14.37c-19.16,-19.16 -50.23,-19.16 -69.39,0L14.37,189.3c-19.16,19.16 -19.16,50.23 0,69.39L189.3,433.63c19.16,19.16 50.23,19.16 69.39,0L433.63,258.7c19.16,-19.17 19.16,-50.24 0,-69.4zM96,248c-13.25,0 -24,-10.75 -24,-24 0,-13.26 10.75,-24 24,-24s24,10.74 24,24c0,13.25 -10.75,24 -24,24zM224,376c-13.25,0 -24,-10.75 -24,-24 0,-13.26 10.75,-24 24,-24s24,10.74 24,24c0,13.25 -10.75,24 -24,24zM224,248c-13.25,0 -24,-10.75 -24,-24 0,-13.26 10.75,-24 24,-24s24,10.74 24,24c0,13.25 -10.75,24 -24,24zM224,120c-13.25,0 -24,-10.75 -24,-24 0,-13.26 10.75,-24 24,-24s24,10.74 24,24c0,13.25 -10.75,24 -24,24zM352,248c-13.25,0 -24,-10.75 -24,-24 0,-13.26 10.75,-24 24,-24s24,10.74 24,24c0,13.25 -10.75,24 -24,24z"/>
|
||||
</vector>
|
30
app/src/main/res/drawable/ic_eversense.xml
Normal file
30
app/src/main/res/drawable/ic_eversense.xml
Normal file
|
@ -0,0 +1,30 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="64dp"
|
||||
android:height="64dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M53.25,24.762c-0,-11.493 -9.331,-20.825 -20.825,-20.825l-0.85,0c-11.494,0 -20.825,9.332 -20.825,20.825l0,14.476c0,11.493 9.331,20.825 20.825,20.825l0.85,-0c11.494,-0 20.825,-9.332 20.825,-20.825l-0,-14.476Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M52.388,25.056c-0,-11.028 -8.953,-19.98 -19.98,-19.98l-0.816,-0c-11.027,-0 -19.98,8.952 -19.98,19.98l0,13.888c0,11.028 8.953,19.98 19.98,19.98l0.816,0c11.027,0 19.98,-8.952 19.98,-19.98l-0,-13.888Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startY="30.4518"
|
||||
android:startX="11.6122"
|
||||
android:endY="30.419544"
|
||||
android:endX="52.3879"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FFFFFFFF"/>
|
||||
<item android:offset="1" android:color="#FFB3B3B3"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M30.455,17.453h3.29v1.817h-3.29z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M27.423,51.66a4.467,4.306 0,1 0,8.934 0a4.467,4.306 0,1 0,-8.934 0z"/>
|
||||
</vector>
|
9
app/src/main/res/drawable/ic_food.xml
Normal file
9
app/src/main/res/drawable/ic_food.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M18.06,22.99h1.66c0.84,0 1.53,-0.64 1.63,-1.46L23,5.05h-5L18,1h-1.97v4.05h-4.97l0.3,2.34c1.71,0.47 3.31,1.32 4.27,2.26 1.44,1.42 2.43,2.89 2.43,5.29v8.05zM1,21.99L1,21h15.03v0.99c0,0.55 -0.45,1 -1.01,1L2.01,22.99c-0.56,0 -1.01,-0.45 -1.01,-1zM16.03,14.99c0,-8 -15.03,-8 -15.03,0h15.03zM1.02,17h15v2h-15z"/>
|
||||
</vector>
|
45
app/src/main/res/drawable/ic_generic_cgm.xml
Normal file
45
app/src/main/res/drawable/ic_generic_cgm.xml
Normal file
|
@ -0,0 +1,45 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="64dp"
|
||||
android:height="64dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M53.25,24.762c-0,-11.493 -9.331,-20.825 -20.825,-20.825l-0.85,0c-11.494,0 -20.825,9.332 -20.825,20.825l0,14.476c0,11.493 9.331,20.825 20.825,20.825l0.85,-0c11.494,-0 20.825,-9.332 20.825,-20.825l-0,-14.476Z"
|
||||
android:fillColor="@android:color/white"/>
|
||||
<path
|
||||
android:pathData="M52.388,25.056c-0,-11.028 -8.953,-19.98 -19.98,-19.98l-0.816,-0c-11.027,-0 -19.98,8.952 -19.98,19.98l0,13.888c0,11.028 8.953,19.98 19.98,19.98l0.816,0c11.027,0 19.98,-8.952 19.98,-19.98l-0,-13.888Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startY="30.4518"
|
||||
android:startX="11.6122"
|
||||
android:endY="30.419544"
|
||||
android:endX="52.3879"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FFFFFFFF"/>
|
||||
<item android:offset="1" android:color="#FFB3B3B3"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M30.455,17.453h3.29v1.817h-3.29z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M27.423,51.66a4.467,4.306 0,1 0,8.934 0a4.467,4.306 0,1 0,-8.934 0z"/>
|
||||
<path
|
||||
android:pathData="M32,32m-27.5,0a27.5,27.5 0,1 1,55 0a27.5,27.5 0,1 1,-55 0"
|
||||
android:fillColor="@android:color/white"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M21.824,34.228l1.704,0.498c-0.358,1.621 -1,2.857 -1.928,3.708c-0.929,0.851 -2.063,1.277 -3.404,1.277c-1.388,-0 -2.517,-0.327 -3.387,-0.982c-0.869,-0.654 -1.531,-1.602 -1.985,-2.843c-0.454,-1.241 -0.681,-2.574 -0.681,-3.998c0,-1.553 0.257,-2.908 0.769,-4.064c0.512,-1.156 1.242,-2.034 2.187,-2.635c0.946,-0.6 1.987,-0.9 3.123,-0.9c1.288,0 2.372,0.38 3.25,1.14c0.879,0.759 1.491,1.827 1.836,3.204l-1.678,0.458c-0.298,-1.085 -0.732,-1.875 -1.3,-2.371c-0.568,-0.495 -1.282,-0.742 -2.143,-0.742c-0.99,-0 -1.817,0.275 -2.482,0.824c-0.664,0.549 -1.131,1.287 -1.401,2.212c-0.269,0.926 -0.404,1.881 -0.404,2.864c0,1.268 0.16,2.375 0.479,3.321c0.319,0.946 0.815,1.653 1.489,2.121c0.673,0.468 1.402,0.702 2.187,0.702c0.955,0 1.763,-0.319 2.425,-0.956c0.661,-0.638 1.109,-1.584 1.344,-2.838Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M31.653,33.607l0,-1.749l5.455,-0.011l-0,5.534c-0.837,0.773 -1.701,1.355 -2.591,1.745c-0.89,0.39 -1.804,0.585 -2.741,0.585c-1.265,-0 -2.414,-0.314 -3.448,-0.941c-1.033,-0.627 -1.814,-1.535 -2.341,-2.721c-0.527,-1.187 -0.79,-2.513 -0.79,-3.978c-0,-1.451 0.262,-2.806 0.786,-4.064c0.524,-1.258 1.278,-2.192 2.262,-2.802c0.984,-0.611 2.117,-0.916 3.399,-0.916c0.931,0 1.773,0.175 2.526,0.524c0.752,0.349 1.342,0.836 1.77,1.46c0.427,0.624 0.752,1.438 0.975,2.441l-1.537,0.489c-0.194,-0.76 -0.434,-1.357 -0.721,-1.791c-0.287,-0.434 -0.697,-0.781 -1.23,-1.042c-0.532,-0.262 -1.124,-0.392 -1.774,-0.392c-0.779,-0 -1.452,0.137 -2.02,0.412c-0.568,0.275 -1.027,0.636 -1.375,1.083c-0.348,0.448 -0.619,0.939 -0.813,1.475c-0.328,0.923 -0.491,1.923 -0.491,3.001c-0,1.329 0.197,2.442 0.592,3.337c0.396,0.895 0.971,1.56 1.727,1.994c0.755,0.434 1.557,0.651 2.406,0.651c0.738,-0 1.459,-0.165 2.161,-0.494c0.703,-0.329 1.236,-0.68 1.599,-1.053l-0,-2.777l-3.786,0Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M39.568,39.456l-0,-14.912l2.565,-0l3.048,10.559c0.281,0.983 0.486,1.719 0.614,2.207c0.147,-0.542 0.375,-1.339 0.686,-2.39l3.083,-10.376l2.293,-0l-0,14.912l-1.643,0l-0,-12.481l-3.742,12.481l-1.537,0l-3.725,-12.695l0,12.695l-1.642,0Z"
|
||||
android:fillType="nonZero"/>
|
||||
</vector>
|
9
app/src/main/res/drawable/ic_generic_icon.xml
Normal file
9
app/src/main/res/drawable/ic_generic_icon.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="64dp"
|
||||
android:height="64dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M34.9527,3.6697C32.9895,3.458 31.0105,3.458 29.0473,3.6697L28.2608,9.24C26.4699,9.5448 24.7219,10.0669 23.0535,10.7961L19.4324,6.543C17.6686,7.4441 16.0037,8.5334 14.4648,9.7918L16.7622,14.9098C15.4176,16.1519 14.2242,17.5533 13.2085,19.0841L7.9023,17.4981C6.898,19.227 6.0756,21.0591 5.4492,22.9644L10.1018,26.006C9.6302,27.7901 9.3704,29.6257 9.3293,31.4731L4.0231,33.0573C4.0966,35.0648 4.3783,37.0588 4.8639,39.0057L10.3931,39.0057C10.9443,40.7654 11.7011,42.4527 12.6477,44.0287L9.0266,48.2817C10.1543,49.9301 11.4509,51.4518 12.8935,52.8233L17.5453,49.7808C18.9442,50.9578 20.477,51.9602 22.1113,52.7663L21.323,58.3357C23.148,59.102 25.0473,59.6692 26.9896,60.0293L29.2861,54.9105C31.0893,55.1312 32.9108,55.1312 34.7139,54.9105L37.0104,60.0293C38.9527,59.6692 40.852,59.102 42.677,58.3357L41.8888,52.7663C43.523,51.9602 45.0558,50.9578 46.4548,49.7808L51.1065,52.8233C52.5492,51.4518 53.8457,49.9301 54.9735,48.2817L51.3523,44.0287C52.299,42.4527 53.0557,40.7654 53.6069,39.0057L59.1361,39.0057C59.6217,37.0588 59.9034,35.0648 59.9769,33.0573L54.6707,31.4731C54.6296,29.6257 54.3698,27.7901 53.8982,26.006L58.5508,22.9644C57.9244,21.0591 57.102,19.227 56.0977,17.4981L50.7915,19.0841C49.7758,17.5533 48.5825,16.1519 47.2378,14.9098L49.5352,9.7918C47.9963,8.5334 46.3314,7.4441 44.5676,6.543L40.9465,10.7961C39.2781,10.0669 37.5301,9.5448 35.7392,9.24L34.9527,3.6697ZM32,18.61C39.2624,18.61 45.1582,24.61 45.1582,31.9997C45.1582,39.3902 39.2624,45.3893 32,45.3893C24.7376,45.3893 18.8418,39.3902 18.8418,31.9997C18.8418,24.61 24.7376,18.61 32,18.61Z"
|
||||
android:fillColor="@android:color/white"/>
|
||||
</vector>
|
87
app/src/main/res/drawable/ic_glimp.xml
Normal file
87
app/src/main/res/drawable/ic_glimp.xml
Normal file
|
@ -0,0 +1,87 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="64dp"
|
||||
android:height="64dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M60.558,17.9c-0,-7.782 -6.318,-14.1 -14.1,-14.1l-29.149,-0c-7.782,-0 -14.1,6.318 -14.1,14.1l0,28.2c0,7.782 6.318,14.1 14.1,14.1l29.149,0c7.782,0 14.1,-6.318 14.1,-14.1l-0,-28.2Z"
|
||||
android:strokeAlpha="0.96"
|
||||
android:strokeWidth="0.84"
|
||||
android:fillColor="?attr/text_color"
|
||||
android:strokeColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M11.708,14.729l0,-1.224l3.819,-0.008l-0,3.874c-0.586,0.541 -1.191,0.948 -1.814,1.221c-0.623,0.273 -1.263,0.41 -1.919,0.41c-0.885,-0 -1.69,-0.22 -2.413,-0.659c-0.724,-0.439 -1.27,-1.074 -1.639,-1.905c-0.369,-0.83 -0.553,-1.759 -0.553,-2.784c-0,-1.016 0.183,-1.964 0.55,-2.845c0.367,-0.88 0.895,-1.534 1.584,-1.961c0.688,-0.428 1.481,-0.641 2.379,-0.641c0.652,-0 1.241,0.122 1.768,0.366c0.527,0.245 0.94,0.586 1.239,1.022c0.299,0.437 0.527,1.007 0.682,1.709l-1.076,0.342c-0.135,-0.532 -0.303,-0.949 -0.504,-1.253c-0.201,-0.304 -0.488,-0.547 -0.861,-0.73c-0.373,-0.183 -0.787,-0.274 -1.242,-0.274c-0.545,-0 -1.016,0.096 -1.414,0.288c-0.398,0.192 -0.718,0.445 -0.962,0.759c-0.244,0.313 -0.434,0.657 -0.569,1.032c-0.23,0.646 -0.344,1.346 -0.344,2.101c-0,0.93 0.138,1.709 0.415,2.335c0.276,0.627 0.679,1.092 1.208,1.396c0.529,0.304 1.09,0.456 1.685,0.456c0.516,-0 1.02,-0.115 1.512,-0.346c0.492,-0.23 0.865,-0.476 1.119,-0.737l0,-1.944l-2.65,0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M17.119,8.385h1.107v10.439h-1.107z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M19.948,9.859l-0,-1.474l1.107,-0l-0,1.474l-1.107,-0ZM19.948,18.824l-0,-7.562l1.107,-0l-0,7.562l-1.107,-0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M22.739,18.824l0,-7.562l0.99,-0l0,1.061c0.205,-0.371 0.478,-0.669 0.818,-0.894c0.34,-0.226 0.728,-0.338 1.162,-0.338c0.484,-0 0.881,0.116 1.19,0.349c0.31,0.232 0.528,0.557 0.655,0.975c0.517,-0.883 1.189,-1.324 2.017,-1.324c0.648,-0 1.146,0.207 1.494,0.623c0.348,0.415 0.523,1.055 0.523,1.919l-0,5.191l-1.101,-0l0,-4.764c0,-0.513 -0.036,-0.882 -0.108,-1.107c-0.071,-0.226 -0.201,-0.407 -0.39,-0.545c-0.189,-0.138 -0.41,-0.207 -0.664,-0.207c-0.459,0 -0.84,0.177 -1.144,0.531c-0.303,0.354 -0.455,0.92 -0.455,1.698l0,4.394l-1.107,-0l0,-4.914c0,-0.569 -0.09,-0.996 -0.27,-1.281c-0.181,-0.285 -0.476,-0.428 -0.886,-0.428c-0.311,0 -0.599,0.095 -0.864,0.285c-0.264,0.19 -0.456,0.468 -0.574,0.833c-0.119,0.366 -0.179,0.893 -0.179,1.581l0,3.924l-1.107,-0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M33.229,21.722l0,-10.46l1.009,-0l-0,0.982c0.238,-0.384 0.506,-0.673 0.805,-0.865c0.3,-0.192 0.662,-0.288 1.089,-0.288c0.557,-0 1.049,0.166 1.475,0.498c0.427,0.332 0.749,0.801 0.966,1.406c0.217,0.606 0.326,1.269 0.326,1.991c-0,0.773 -0.12,1.47 -0.36,2.09c-0.24,0.619 -0.588,1.094 -1.045,1.424c-0.457,0.33 -0.938,0.495 -1.442,0.495c-0.369,-0 -0.7,-0.091 -0.993,-0.271c-0.293,-0.18 -0.534,-0.408 -0.723,-0.683l0,3.681l-1.107,-0ZM34.232,15.085c-0,0.974 0.17,1.693 0.51,2.158c0.34,0.465 0.752,0.698 1.236,0.698c0.492,-0 0.913,-0.241 1.264,-0.723c0.35,-0.482 0.525,-1.228 0.525,-2.239c0,-0.964 -0.171,-1.686 -0.513,-2.165c-0.342,-0.48 -0.751,-0.719 -1.227,-0.719c-0.471,-0 -0.888,0.255 -1.251,0.765c-0.363,0.51 -0.544,1.252 -0.544,2.225Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M60.791,44.863c-2.051,7.45 -8.207,10.671 -13.933,10.527c-11.925,-0.301 -19.428,-13.164 -14.134,-23.925c4.992,-10.148 11.928,-21.86 14.035,-21.371c3.527,0.817 10.434,13.456 13.616,19.793c0.148,0.294 0.286,0.588 0.416,0.885l-0,14.091ZM49.999,27.193c2.86,-1.142 8.606,5.779 7.075,12.223c-1.426,6.004 -7.227,12.586 -8.578,12.07c-3.53,-1.35 3.454,-9.987 3.776,-13.618c0.425,-4.784 -3.898,-10.026 -2.273,-10.675Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12.872,37.244c0,-0.377 -0.306,-0.683 -0.682,-0.683l-8.585,0l0,2.73l8.585,0c0.376,0 0.682,-0.306 0.682,-0.682l0,-1.365Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M16.23,37.057c0.175,-0.709 -0.264,-1.766 -0.52,-2.487c-0.876,-2.463 -1.147,-4.528 -2.246,-4.528c-1.1,-0 -1.588,2.103 -2.243,4.594c-0.216,0.819 -0.59,1.712 -0.416,2.421l5.425,0Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M33.746,39.539c-0.188,0.659 0.121,1.556 0.317,2.251c0.649,2.3 1.22,4.269 2.234,4.269c1.013,-0 1.464,-1.954 2.068,-4.269c0.198,-0.761 0.544,-1.592 0.383,-2.251l-5.002,0Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M25.479,46.028c-0.161,0.659 0.184,1.555 0.317,2.25c0.448,2.35 1.22,4.269 2.233,4.269c1.014,-0 1.465,-1.954 2.069,-4.269c0.198,-0.761 0.544,-1.591 0.382,-2.25l-5.001,-0Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M13.897,39.387c-0.019,0.67 0.344,1.417 0.55,2.088c0.697,2.27 1.742,4.511 2.361,4.057c0.791,-0.582 1.589,-2.3 1.883,-4.426c0.106,-0.769 0.453,-1.57 0.696,-2.136l-5.49,0.417Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M17.757,39.539l-2.302,-5.636l-2.757,0.921l1.872,7.182l3.187,-2.467Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M35.493,36.826c0.161,-0.659 -0.184,-1.556 -0.317,-2.25c-0.447,-2.351 -1.22,-4.269 -2.233,-4.269c-1.014,-0 -1.465,1.954 -2.069,4.269c-0.198,0.761 -0.544,1.591 -0.382,2.25l5.001,-0Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M24.043,31.2c0.161,-0.776 -0.184,-1.832 -0.317,-2.65c-0.447,-2.768 -1.22,-5.027 -2.233,-5.027c-1.014,-0 -1.464,2.301 -2.068,5.027c-0.199,0.896 -0.544,1.874 -0.383,2.65l5.001,0Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M22.914,30.24c0.14,-0.496 -0.38,-0.351 -0.876,-0.491l-1.797,-0.507c-0.496,-0.14 -1.012,0.149 -1.152,0.645l-3.511,12.439c-0.14,0.496 0.148,1.012 0.644,1.152l0.805,0.607c0.495,0.14 0.879,-0.249 1.019,-0.745l4.868,-13.1Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M34.397,36.329c0.14,-0.496 -0.38,-0.351 -0.876,-0.491l-1.797,-0.507c-0.496,-0.14 -1.012,0.149 -1.152,0.645l-3.512,12.439c-0.14,0.496 0.149,1.012 0.645,1.152l0.805,0.606c0.495,0.14 0.879,-0.248 1.019,-0.744l4.868,-13.1Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M25.767,48.159c0.196,0.635 0.53,0.152 1.022,0l1.784,-0.551c0.493,-0.152 0.733,-0.79 0.537,-1.425l-4.917,-15.924c-0.196,-0.635 -0.755,-1.027 -1.247,-0.875l-1.036,-0.173c-0.492,0.152 -0.563,0.818 -0.367,1.453l4.224,17.495Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/darker_gray"
|
||||
android:pathData="M33.81,41.055c0.103,0.291 0.118,0.011 0.604,-0.161l1.76,-0.623c0.486,-0.171 0.797,-0.547 0.693,-0.839l-2.585,-7.307c-0.103,-0.291 -0.581,-0.388 -1.067,-0.217l-0.958,0.107c-0.485,0.172 -0.639,0.53 -0.536,0.821l2.089,8.219Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="@android:color/darker_gray"
|
||||
android:pathData="M60.657,36.693l-22.108,0c-0.966,0 -1.751,0.785 -1.751,1.752l-0,0.681c-0,0.447 0.363,0.811 0.811,0.811l23.048,-0l0,-3.244Z"
|
||||
android:fillAlpha="0.96"/>
|
||||
</vector>
|
4
app/src/main/res/drawable/ic_graduation.xml
Normal file
4
app/src/main/res/drawable/ic_graduation.xml
Normal file
|
@ -0,0 +1,4 @@
|
|||
<vector android:height="28.8dp" android:viewportHeight="512"
|
||||
android:viewportWidth="640" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M622.34,153.2L343.4,67.5c-15.2,-4.67 -31.6,-4.67 -46.79,0L17.66,153.2c-23.54,7.23 -23.54,38.36 0,45.59l48.63,14.94c-10.67,13.19 -17.23,29.28 -17.88,46.9C38.78,266.15 32,276.11 32,288c0,10.78 5.68,19.85 13.86,25.65L20.33,428.53C18.11,438.52 25.71,448 35.94,448h56.11c10.24,0 17.84,-9.48 15.62,-19.47L82.14,313.65C90.32,307.85 96,298.78 96,288c0,-11.57 -6.47,-21.25 -15.66,-26.87 0.76,-15.02 8.44,-28.3 20.69,-36.72L296.6,284.5c9.06,2.78 26.44,6.25 46.79,0l278.95,-85.7c23.55,-7.24 23.55,-38.36 0,-45.6zM352.79,315.09c-28.53,8.76 -52.84,3.92 -65.59,0l-145.02,-44.55L128,384c0,35.35 85.96,64 192,64s192,-28.65 192,-64l-14.18,-113.47 -145.03,44.56z"/>
|
||||
</vector>
|
9
app/src/main/res/drawable/ic_home.xml
Normal file
9
app/src/main/res/drawable/ic_home.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z"/>
|
||||
</vector>
|
52
app/src/main/res/drawable/ic_ict.xml
Normal file
52
app/src/main/res/drawable/ic_ict.xml
Normal file
|
@ -0,0 +1,52 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="64dp"
|
||||
android:height="64dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M6.171,24.3397C3.8502,26.496 3.5322,29.698 5.4601,31.4917C7.3872,33.2847 10.8312,32.9912 13.152,30.835L6.171,24.3397ZM6.1447,24.3153L13.1257,30.8105L32.4135,12.8898L25.4325,6.3946L6.1447,24.3153Z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M27.8111,21.5928C28.4437,21.5932 28.9565,21.048 28.9569,20.3756C28.9573,19.7033 28.4444,19.1566 27.8126,19.1562C27.18,19.1558 26.6664,19.701 26.666,20.3742L27.8118,20.3749L27.8111,21.5928Z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M28.3077,20.9977C28.4591,20.8544 28.4651,20.615 28.3218,20.4636L27.8025,19.9148C27.6593,19.7634 27.4206,19.7567 27.2692,19.9L13.0015,33.3152C12.8501,33.4584 13.1194,33.5198 13.2627,33.6712L13.7819,34.22C13.9252,34.3715 14.1646,34.3788 14.316,34.2355L28.3077,20.9977Z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M12.8796,30.7117l1.4542,1.4634l-1.2991,1.2909l-1.4542,-1.4634z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M11.2926,57.0326L15.0819,53.5125L15.523,53.923L11.7337,57.4431L10.9249,57.7851L11.2926,57.0326Z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M16.3239,48.4068l4.6153,4.2949l-3.3673,3.1281l-4.6153,-4.2949z"
|
||||
android:strokeWidth="1.15"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M32.6362,32.3306l5.8109,5.4075l-16.8087,15.6146l-5.8109,-5.4075z"
|
||||
android:strokeWidth="0.68"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M30.0742,35.3171l2.3081,2.1478l-0.4207,0.3908l-2.3081,-2.1478z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M19.738,44.8949l2.3081,2.1478l-0.4207,0.3908l-2.3081,-2.1478z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M21.8556,42.9278l2.3081,2.1478l-0.4207,0.3908l-2.3081,-2.1478z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M23.955,40.9775l2.3081,2.1478l-0.4207,0.3908l-2.3081,-2.1478z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M26.0246,39.0549l2.3081,2.1478l-0.4207,0.3908l-2.3081,-2.1478z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M28.0977,37.1291l2.3081,2.1478l-0.4207,0.3908l-2.3081,-2.1478z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M50.4865,14.7282C53.0833,12.3159 56.7436,11.8079 58.6621,13.5932C60.5806,15.3785 60.0311,18.7813 57.4343,21.1936L38.5619,38.7252L31.6141,32.2598L50.4865,14.7282Z"
|
||||
android:fillColor="#ffffff"/>
|
||||
</vector>
|
422
app/src/main/res/drawable/ic_insight_128.xml
Normal file
422
app/src/main/res/drawable/ic_insight_128.xml
Normal file
|
@ -0,0 +1,422 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="128dp"
|
||||
android:height="128dp"
|
||||
android:viewportWidth="128"
|
||||
android:viewportHeight="128">
|
||||
<path
|
||||
android:pathData="M124.703,45.511c-1.189,-11.934 -8.458,-17.836 -19.136,-18.791c-27.785,-1.202 -55.39,-2.279 -84.289,0.703c-10.852,0.51 -19.086,7.207 -19.086,18.031c-0.033,5.986 -0.544,12.118 -0.556,17.598c-0.173,6.469 -0.009,13.074 0.614,19.864c-0.236,10.908 7.856,18.079 19.027,18.371c27.174,0.708 55.195,2.101 83.936,0.41c10.133,-0.597 18.342,-6.919 19.256,-18.545c0.491,-12.578 0.984,-25.22 0.234,-37.641Z"
|
||||
android:fillColor="#1f1e1c"/>
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M124.703,45.511c-1.189,-11.934 -8.458,-17.836 -19.136,-18.791c-27.785,-1.202 -55.39,-2.279 -84.289,0.703c-10.852,0.51 -19.086,7.207 -19.086,18.031c-0.033,5.986 -0.544,12.118 -0.556,17.598c-0.173,6.469 -0.009,13.074 0.614,19.864c-0.236,10.908 7.856,18.079 19.027,18.371c27.174,0.708 55.195,2.101 83.936,0.41c10.133,-0.597 18.342,-6.919 19.256,-18.545c0.491,-12.578 0.984,-25.22 0.234,-37.641Z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M112.873,28.353l-1.49,-0.352l-0,72.139l1.45,-0.397l0.04,-71.39Z"/>
|
||||
</group>
|
||||
<path
|
||||
android:pathData="M104.774,49.218c-0,-7.339 -5.958,-13.297 -13.297,-13.297l-67.927,0c-7.338,0 -13.296,5.958 -13.296,13.297l-0,31.707c-0,7.338 5.958,13.296 13.296,13.296l67.927,0c7.339,0 13.297,-5.958 13.297,-13.296l-0,-31.707Z"
|
||||
android:fillColor="#a29a9a"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M104.208,49.433c0,-7.235 -5.873,-13.108 -13.108,-13.108l-67.246,-0c-7.235,-0 -13.109,5.873 -13.109,13.108l0,31.26c0,7.234 5.874,13.108 13.109,13.108l67.246,-0c7.235,-0 13.108,-5.874 13.108,-13.108l0,-31.26Z"/>
|
||||
<path
|
||||
android:pathData="M25.744,47.631c0.013,-0.064 0.002,-0.111 -0.031,-0.141c-0.034,-0.03 -0.101,-0.052 -0.203,-0.065c-0.044,-0.009 -0.067,-0.035 -0.067,-0.076c0,-0.009 0.002,-0.02 0.005,-0.031c0.003,-0.011 0.006,-0.025 0.01,-0.04c0.095,0.009 0.189,0.016 0.281,0.021c0.092,0.005 0.178,0.007 0.258,0.007c0.067,0 0.148,-0.002 0.243,-0.007c0.096,-0.005 0.186,-0.012 0.272,-0.021c0.006,0.031 0.01,0.055 0.01,0.071c-0,0.045 -0.023,0.068 -0.067,0.072c-0.102,0.012 -0.174,0.035 -0.215,0.066c-0.041,0.032 -0.068,0.08 -0.081,0.144l-0.472,2.452c-0.013,0.064 -0.002,0.11 0.033,0.139c0.035,0.028 0.107,0.05 0.215,0.066c0.041,0.01 0.062,0.034 0.062,0.072c-0,0.019 -0.003,0.044 -0.01,0.076c-0.095,-0.009 -0.192,-0.016 -0.291,-0.021c-0.098,-0.005 -0.188,-0.007 -0.267,-0.007c-0.067,-0 -0.147,0.002 -0.241,0.007c-0.094,0.005 -0.184,0.012 -0.27,0.021c-0.006,-0.032 -0.009,-0.057 -0.009,-0.076c-0,-0.038 0.019,-0.061 0.057,-0.067c0.102,-0.016 0.175,-0.039 0.22,-0.069c0.044,-0.03 0.073,-0.077 0.085,-0.141l0.473,-2.452Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M28.22,48.967c0.019,-0.086 0.029,-0.158 0.029,-0.215c-0,-0.092 -0.045,-0.138 -0.134,-0.138c-0.047,-0 -0.106,0.026 -0.176,0.078c-0.07,0.053 -0.143,0.121 -0.22,0.205c-0.076,0.085 -0.152,0.179 -0.226,0.284c-0.075,0.105 -0.141,0.212 -0.198,0.32c-0.029,0.054 -0.057,0.114 -0.084,0.179c-0.027,0.065 -0.051,0.132 -0.071,0.2c-0.021,0.069 -0.037,0.136 -0.048,0.203c-0.011,0.067 -0.017,0.129 -0.017,0.186c0,0.045 0.005,0.088 0.014,0.129c-0.12,0.013 -0.246,0.037 -0.377,0.072c-0.025,-0.016 -0.038,-0.035 -0.038,-0.058c0,-0.006 0.002,-0.019 0.005,-0.04c0.003,-0.021 0.006,-0.038 0.01,-0.05c0.073,-0.369 0.13,-0.66 0.171,-0.873c0.042,-0.214 0.073,-0.375 0.093,-0.485c0.021,-0.109 0.034,-0.181 0.039,-0.214c0.004,-0.034 0.007,-0.054 0.007,-0.06c-0,-0.038 -0.013,-0.057 -0.038,-0.057c-0.013,-0 -0.032,0.005 -0.058,0.016l-0.157,0.067c-0.026,0.011 -0.045,0.017 -0.057,0.017c-0.016,-0 -0.03,-0.01 -0.041,-0.029c-0.011,-0.019 -0.02,-0.041 -0.026,-0.067c0.057,-0.035 0.125,-0.072 0.203,-0.112c0.078,-0.039 0.153,-0.076 0.226,-0.109c0.073,-0.034 0.137,-0.062 0.191,-0.084c0.054,-0.022 0.089,-0.033 0.105,-0.033c0.022,-0 0.041,0.005 0.057,0.016c0.016,0.011 0.024,0.03 0.024,0.055c0,0.01 -0.001,0.022 -0.002,0.036c-0.002,0.014 -0.004,0.029 -0.007,0.045l-0.172,0.831l0.019,-0c0.083,-0.14 0.169,-0.271 0.258,-0.392c0.089,-0.121 0.179,-0.225 0.269,-0.312c0.091,-0.088 0.182,-0.156 0.275,-0.205c0.092,-0.05 0.186,-0.074 0.281,-0.074c0.089,-0 0.16,0.022 0.212,0.066c0.053,0.045 0.079,0.118 0.079,0.22c0,0.038 -0.003,0.083 -0.009,0.134c-0.007,0.05 -0.015,0.101 -0.024,0.152l-0.244,1.145c-0.009,0.045 -0.014,0.075 -0.014,0.091c0,0.041 0.019,0.062 0.057,0.062c0.019,0 0.042,-0.006 0.067,-0.017c0.026,-0.011 0.05,-0.023 0.074,-0.038c0.024,-0.014 0.045,-0.027 0.065,-0.038c0.019,-0.011 0.035,-0.017 0.047,-0.017c0.032,0 0.054,0.032 0.067,0.096c-0.057,0.041 -0.116,0.08 -0.176,0.117c-0.061,0.036 -0.121,0.069 -0.179,0.097c-0.059,0.029 -0.114,0.052 -0.165,0.07c-0.051,0.017 -0.092,0.026 -0.124,0.026c-0.035,-0 -0.068,-0.007 -0.098,-0.022c-0.03,-0.014 -0.045,-0.048 -0.045,-0.102c-0,-0.01 0.001,-0.025 0.005,-0.045c0.003,-0.021 0.006,-0.039 0.009,-0.055l0.267,-1.274Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M30.358,48.823c-0.035,-0.003 -0.057,-0.011 -0.067,-0.026c-0.009,-0.014 -0.016,-0.031 -0.019,-0.05c-0.016,-0.095 -0.052,-0.169 -0.11,-0.222c-0.057,-0.052 -0.135,-0.078 -0.234,-0.078c-0.101,-0 -0.189,0.024 -0.262,0.074c-0.073,0.049 -0.11,0.12 -0.11,0.212c0,0.063 0.028,0.128 0.084,0.193c0.055,0.065 0.121,0.131 0.198,0.198c0.057,0.051 0.118,0.103 0.181,0.158c0.064,0.054 0.121,0.109 0.172,0.164c0.051,0.056 0.093,0.114 0.126,0.174c0.034,0.061 0.05,0.123 0.05,0.186c0,0.093 -0.02,0.179 -0.062,0.258c-0.041,0.08 -0.097,0.149 -0.169,0.208c-0.072,0.059 -0.156,0.105 -0.253,0.14c-0.097,0.035 -0.199,0.053 -0.308,0.053c-0.111,-0 -0.219,-0.01 -0.324,-0.029c-0.105,-0.019 -0.204,-0.049 -0.296,-0.09c0.026,-0.096 0.045,-0.184 0.06,-0.265c0.014,-0.081 0.024,-0.173 0.031,-0.275l0.047,0c0.077,0 0.115,0.027 0.115,0.082c-0.006,0.133 0.025,0.237 0.093,0.31c0.068,0.073 0.163,0.109 0.284,0.109c0.124,0 0.226,-0.032 0.305,-0.097c0.08,-0.066 0.12,-0.151 0.12,-0.256c-0,-0.047 -0.012,-0.093 -0.036,-0.138c-0.024,-0.045 -0.055,-0.087 -0.093,-0.126c-0.038,-0.04 -0.081,-0.08 -0.129,-0.12c-0.048,-0.04 -0.097,-0.08 -0.148,-0.121c-0.095,-0.08 -0.182,-0.163 -0.26,-0.251c-0.078,-0.087 -0.117,-0.188 -0.117,-0.303c0,-0.086 0.02,-0.165 0.06,-0.239c0.039,-0.073 0.094,-0.135 0.162,-0.188c0.068,-0.052 0.148,-0.094 0.239,-0.124c0.09,-0.03 0.186,-0.045 0.288,-0.045c0.185,-0 0.358,0.043 0.52,0.128c-0.016,0.048 -0.029,0.109 -0.04,0.182c-0.011,0.073 -0.02,0.146 -0.026,0.219l-0.072,-0.005Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M31.47,47.788c-0.061,0 -0.108,-0.018 -0.143,-0.055c-0.035,-0.036 -0.053,-0.085 -0.053,-0.145c0,-0.086 0.029,-0.163 0.088,-0.232c0.059,-0.068 0.13,-0.102 0.213,-0.102c0.063,-0 0.109,0.02 0.136,0.062c0.027,0.041 0.04,0.094 0.04,0.157c0,0.08 -0.027,0.152 -0.081,0.217c-0.054,0.065 -0.121,0.098 -0.2,0.098ZM31.226,50.016c-0.003,0.013 -0.006,0.03 -0.009,0.05c-0.003,0.021 -0.005,0.036 -0.005,0.046c0,0.038 0.019,0.057 0.057,0.057c0.023,0 0.046,-0.006 0.069,-0.017c0.024,-0.011 0.048,-0.023 0.072,-0.038c0.024,-0.014 0.045,-0.027 0.064,-0.038c0.02,-0.011 0.035,-0.017 0.048,-0.017c0.032,0 0.054,0.032 0.067,0.096c-0.054,0.041 -0.112,0.08 -0.174,0.117c-0.062,0.036 -0.122,0.069 -0.179,0.097c-0.057,0.029 -0.111,0.052 -0.162,0.07c-0.051,0.017 -0.093,0.026 -0.124,0.026c-0.035,-0 -0.069,-0.007 -0.101,-0.022c-0.031,-0.014 -0.047,-0.048 -0.047,-0.102c-0,-0.01 0.001,-0.026 0.004,-0.05c0.004,-0.024 0.007,-0.041 0.01,-0.05c0.07,-0.341 0.126,-0.612 0.167,-0.814c0.041,-0.202 0.072,-0.356 0.093,-0.463c0.021,-0.106 0.034,-0.177 0.041,-0.212c0.006,-0.035 0.009,-0.056 0.009,-0.062c0,-0.038 -0.014,-0.057 -0.043,-0.057c-0.013,-0 -0.032,0.005 -0.057,0.016c-0.026,0.011 -0.053,0.023 -0.081,0.034c-0.029,0.011 -0.055,0.022 -0.079,0.033c-0.024,0.011 -0.042,0.017 -0.055,0.017c-0.019,-0 -0.033,-0.01 -0.043,-0.029c-0.009,-0.019 -0.017,-0.041 -0.024,-0.067c0.058,-0.031 0.124,-0.067 0.201,-0.107c0.076,-0.04 0.15,-0.077 0.222,-0.112c0.071,-0.035 0.135,-0.064 0.191,-0.086c0.055,-0.022 0.093,-0.033 0.112,-0.033c0.054,-0 0.081,0.027 0.081,0.081c-0,0.022 -0.003,0.046 -0.01,0.071l-0.315,1.565Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M33.374,48.532c-0.039,-0.012 -0.083,-0.023 -0.134,-0.031c-0.051,-0.008 -0.099,-0.012 -0.143,-0.012c-0.137,0 -0.256,0.035 -0.358,0.105c-0.102,0.07 -0.187,0.166 -0.255,0.287c-0.069,0.121 -0.12,0.262 -0.153,0.424c-0.033,0.163 -0.05,0.336 -0.05,0.521c-0,0.117 0.016,0.202 0.048,0.255c0.031,0.052 0.079,0.079 0.143,0.079c0.057,-0 0.119,-0.03 0.186,-0.089c0.067,-0.059 0.134,-0.135 0.203,-0.229c0.068,-0.094 0.133,-0.199 0.195,-0.317c0.062,-0.118 0.117,-0.237 0.165,-0.358c0.048,-0.121 0.085,-0.237 0.112,-0.348c0.027,-0.112 0.041,-0.207 0.041,-0.287ZM31.87,51.085c0.045,0.096 0.113,0.176 0.206,0.241c0.092,0.065 0.192,0.098 0.3,0.098c0.134,-0 0.252,-0.055 0.353,-0.165c0.102,-0.109 0.175,-0.269 0.22,-0.479l0.234,-1.145l-0.019,-0c-0.134,0.28 -0.281,0.488 -0.442,0.625c-0.16,0.137 -0.314,0.205 -0.46,0.205c-0.048,-0 -0.096,-0.007 -0.143,-0.022c-0.048,-0.014 -0.089,-0.039 -0.124,-0.076c-0.035,-0.036 -0.064,-0.086 -0.086,-0.148c-0.023,-0.062 -0.034,-0.142 -0.034,-0.241c0,-0.257 0.039,-0.49 0.117,-0.699c0.078,-0.208 0.179,-0.385 0.303,-0.529c0.124,-0.145 0.262,-0.257 0.413,-0.334c0.151,-0.078 0.298,-0.117 0.441,-0.117c0.112,-0 0.214,0.004 0.308,0.014c0.094,0.009 0.204,0.027 0.332,0.052l-0.439,2.243c-0.035,0.181 -0.094,0.335 -0.177,0.46c-0.083,0.126 -0.175,0.23 -0.277,0.311c-0.101,0.081 -0.209,0.14 -0.322,0.176c-0.113,0.037 -0.217,0.055 -0.312,0.055c-0.239,0 -0.425,-0.032 -0.559,-0.095c0.023,-0.07 0.04,-0.131 0.053,-0.182c0.013,-0.051 0.024,-0.117 0.033,-0.2l0.081,-0.048Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M34.609,47.449c0,-0.016 -0.002,-0.032 -0.007,-0.047c-0.005,-0.016 -0.018,-0.024 -0.04,-0.024c-0.01,-0 -0.027,0.002 -0.05,0.007c-0.024,0.005 -0.049,0.009 -0.074,0.014c-0.026,0.005 -0.05,0.009 -0.072,0.012c-0.022,0.003 -0.038,0.005 -0.048,0.005c-0.044,-0 -0.067,-0.033 -0.067,-0.1c0.144,-0.038 0.276,-0.077 0.399,-0.117c0.122,-0.04 0.244,-0.084 0.365,-0.131c0.038,0.025 0.057,0.055 0.057,0.09c0,0.013 -0.001,0.026 -0.005,0.041c-0.003,0.014 -0.006,0.026 -0.009,0.036l-0.406,2.047l0.015,-0c0.085,-0.14 0.171,-0.271 0.257,-0.392c0.086,-0.121 0.174,-0.225 0.263,-0.312c0.089,-0.088 0.179,-0.156 0.272,-0.205c0.092,-0.05 0.184,-0.074 0.276,-0.074c0.093,-0 0.167,0.022 0.222,0.066c0.056,0.045 0.084,0.118 0.084,0.22c-0,0.038 -0.003,0.083 -0.01,0.134c-0.006,0.05 -0.014,0.101 -0.024,0.152l-0.243,1.145c-0.003,0.013 -0.006,0.029 -0.009,0.048c-0.004,0.019 -0.005,0.033 -0.005,0.043c-0,0.041 0.019,0.062 0.057,0.062c0.019,0 0.041,-0.006 0.067,-0.017c0.025,-0.011 0.05,-0.023 0.074,-0.038c0.024,-0.014 0.045,-0.027 0.064,-0.038c0.019,-0.011 0.035,-0.017 0.048,-0.017c0.032,0 0.054,0.032 0.067,0.096c-0.058,0.041 -0.116,0.08 -0.177,0.117c-0.06,0.036 -0.12,0.069 -0.179,0.097c-0.059,0.029 -0.113,0.052 -0.162,0.07c-0.049,0.017 -0.09,0.026 -0.122,0.026c-0.035,-0 -0.068,-0.007 -0.1,-0.022c-0.032,-0.014 -0.048,-0.048 -0.048,-0.102c0,-0.01 0.002,-0.026 0.005,-0.05c0.003,-0.024 0.007,-0.041 0.01,-0.05l0.267,-1.274c0.019,-0.089 0.029,-0.161 0.029,-0.215c-0,-0.092 -0.045,-0.138 -0.134,-0.138c-0.045,-0 -0.1,0.023 -0.167,0.071c-0.067,0.048 -0.138,0.112 -0.212,0.193c-0.075,0.081 -0.151,0.176 -0.227,0.284c-0.076,0.108 -0.148,0.221 -0.215,0.339c-0.028,0.054 -0.056,0.114 -0.083,0.179c-0.027,0.065 -0.05,0.133 -0.069,0.203c-0.02,0.07 -0.035,0.138 -0.046,0.205c-0.011,0.067 -0.016,0.127 -0.016,0.181c-0,0.045 0.004,0.088 0.014,0.129c-0.121,0.013 -0.247,0.037 -0.377,0.072c-0.029,-0.016 -0.043,-0.035 -0.043,-0.058c-0,-0.012 0.002,-0.027 0.005,-0.045c0.003,-0.017 0.006,-0.033 0.009,-0.045l0.463,-2.386c0.019,-0.092 0.033,-0.184 0.043,-0.274c0.01,-0.091 0.014,-0.162 0.014,-0.213Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M36.938,48.275c0.025,-0.121 0.038,-0.218 0.038,-0.291c0,-0.042 -0.005,-0.085 -0.014,-0.129c0.06,-0.01 0.124,-0.019 0.191,-0.029c0.066,-0.009 0.133,-0.024 0.2,-0.043c0.025,0.019 0.038,0.038 0.038,0.058c0,0.006 -0.001,0.019 -0.002,0.038c-0.002,0.019 -0.004,0.035 -0.007,0.047l-0.082,0.43l0.492,-0c-0.01,0.029 -0.019,0.064 -0.029,0.105c-0.009,0.041 -0.017,0.079 -0.024,0.114c-0.079,-0.012 -0.16,-0.022 -0.243,-0.028c-0.083,-0.007 -0.161,-0.011 -0.234,-0.015l-0.262,1.489c-0.01,0.048 -0.014,0.081 -0.014,0.1c-0,0.077 0.046,0.115 0.138,0.115c0.048,-0 0.091,-0.006 0.131,-0.017c0.04,-0.011 0.076,-0.024 0.108,-0.04c0.028,-0.013 0.053,-0.025 0.073,-0.036c0.021,-0.011 0.038,-0.017 0.051,-0.017c0.035,0 0.055,0.03 0.062,0.091c-0.099,0.076 -0.206,0.137 -0.322,0.181c-0.117,0.045 -0.226,0.067 -0.327,0.067c-0.115,-0 -0.196,-0.018 -0.244,-0.055c-0.047,-0.037 -0.071,-0.091 -0.071,-0.165c-0,-0.035 0.003,-0.068 0.009,-0.1l0.301,-1.627l-0.348,0c0.006,-0.054 0.016,-0.095 0.031,-0.122c0.014,-0.027 0.039,-0.04 0.074,-0.04l0.272,-0l0.014,-0.081Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M19.38,44.017l-0.213,-1.272l-0.688,1.272l0.901,-0ZM17.885,45.119c-0.026,0.051 -0.039,0.093 -0.039,0.125c0,0.044 0.025,0.076 0.074,0.096c0.049,0.02 0.125,0.037 0.227,0.052c0.065,0.011 0.098,0.038 0.098,0.082c-0,0.018 -0.004,0.045 -0.011,0.081c-0.109,-0.01 -0.21,-0.019 -0.303,-0.024c-0.093,-0.006 -0.19,-0.008 -0.292,-0.008c-0.073,-0 -0.148,0.002 -0.226,0.005c-0.079,0.004 -0.165,0.013 -0.26,0.027c-0.003,-0.014 -0.007,-0.029 -0.011,-0.043c-0.003,-0.015 -0.005,-0.027 -0.005,-0.038c0,-0.048 0.031,-0.077 0.093,-0.088c0.189,-0.032 0.311,-0.102 0.365,-0.207l1.747,-3.214c0.021,-0.036 0.049,-0.055 0.081,-0.055c0.011,0 0.022,0.002 0.033,0.006c0.011,0.003 0.02,0.007 0.027,0.011l0.584,3.236c0.011,0.065 0.044,0.114 0.099,0.147c0.054,0.033 0.125,0.056 0.212,0.071c0.048,0.007 0.079,0.018 0.093,0.033c0.015,0.014 0.022,0.032 0.022,0.054c-0,0.018 -0.004,0.046 -0.011,0.082c-0.102,-0.007 -0.199,-0.014 -0.292,-0.019c-0.093,-0.006 -0.188,-0.008 -0.286,-0.008c-0.215,-0 -0.428,0.011 -0.639,0.032c-0.011,-0.025 -0.016,-0.052 -0.016,-0.081c-0,-0.048 0.034,-0.077 0.103,-0.088c0.048,-0.007 0.099,-0.023 0.153,-0.049c0.055,-0.025 0.082,-0.065 0.082,-0.12l0,-0.033c0,-0.014 -0.002,-0.031 -0.005,-0.049l-0.164,-0.911l-1.048,0l-0.485,0.895Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M22.315,45.588c-0.287,0 -0.532,-0.038 -0.733,-0.114c-0.202,-0.077 -0.367,-0.181 -0.494,-0.314c-0.128,-0.133 -0.22,-0.288 -0.279,-0.464c-0.058,-0.176 -0.087,-0.366 -0.087,-0.57c0,-0.266 0.044,-0.53 0.131,-0.794c0.087,-0.264 0.218,-0.501 0.393,-0.712c0.175,-0.211 0.394,-0.382 0.657,-0.513c0.264,-0.131 0.574,-0.197 0.931,-0.197c0.182,0 0.357,0.015 0.526,0.044c0.17,0.029 0.332,0.069 0.489,0.12c-0.011,0.106 -0.017,0.209 -0.017,0.311c0,0.073 0.003,0.146 0.009,0.218c0.005,0.073 0.011,0.146 0.019,0.219c-0.026,0.018 -0.058,0.027 -0.099,0.027c-0.069,-0 -0.105,-0.027 -0.109,-0.082c-0.032,-0.24 -0.122,-0.407 -0.267,-0.502c-0.146,-0.095 -0.34,-0.142 -0.584,-0.142c-0.24,0 -0.455,0.052 -0.644,0.156c-0.189,0.103 -0.35,0.244 -0.483,0.423c-0.132,0.178 -0.233,0.386 -0.303,0.624c-0.069,0.239 -0.103,0.491 -0.103,0.756c-0,0.197 0.026,0.374 0.079,0.532c0.053,0.158 0.126,0.293 0.221,0.404c0.094,0.111 0.21,0.197 0.346,0.259c0.137,0.062 0.291,0.093 0.461,0.093c0.248,-0 0.443,-0.051 0.587,-0.153c0.144,-0.102 0.268,-0.265 0.374,-0.491c0.025,-0.058 0.069,-0.087 0.131,-0.087c0.022,-0 0.044,0.004 0.068,0.013c0.024,0.009 0.039,0.018 0.046,0.025c-0.054,0.116 -0.102,0.239 -0.144,0.368c-0.042,0.129 -0.085,0.274 -0.128,0.434c-0.08,0.015 -0.166,0.028 -0.257,0.041c-0.091,0.013 -0.182,0.025 -0.273,0.035c-0.091,0.011 -0.176,0.02 -0.256,0.025c-0.08,0.005 -0.149,0.008 -0.208,0.008Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M25.66,45.588c-0.287,0 -0.532,-0.038 -0.733,-0.114c-0.202,-0.077 -0.367,-0.181 -0.494,-0.314c-0.128,-0.133 -0.22,-0.288 -0.279,-0.464c-0.058,-0.176 -0.087,-0.366 -0.087,-0.57c0,-0.266 0.044,-0.53 0.131,-0.794c0.087,-0.264 0.218,-0.501 0.393,-0.712c0.175,-0.211 0.394,-0.382 0.657,-0.513c0.264,-0.131 0.574,-0.197 0.931,-0.197c0.182,0 0.357,0.015 0.526,0.044c0.17,0.029 0.332,0.069 0.489,0.12c-0.011,0.106 -0.017,0.209 -0.017,0.311c0,0.073 0.003,0.146 0.009,0.218c0.005,0.073 0.011,0.146 0.019,0.219c-0.026,0.018 -0.059,0.027 -0.099,0.027c-0.069,-0 -0.105,-0.027 -0.109,-0.082c-0.032,-0.24 -0.122,-0.407 -0.267,-0.502c-0.146,-0.095 -0.34,-0.142 -0.584,-0.142c-0.24,0 -0.455,0.052 -0.644,0.156c-0.189,0.103 -0.35,0.244 -0.483,0.423c-0.133,0.178 -0.233,0.386 -0.303,0.624c-0.069,0.239 -0.103,0.491 -0.103,0.756c-0,0.197 0.026,0.374 0.079,0.532c0.053,0.158 0.126,0.293 0.221,0.404c0.094,0.111 0.21,0.197 0.346,0.259c0.137,0.062 0.29,0.093 0.461,0.093c0.248,-0 0.443,-0.051 0.587,-0.153c0.144,-0.102 0.268,-0.265 0.374,-0.491c0.025,-0.058 0.069,-0.087 0.131,-0.087c0.022,-0 0.044,0.004 0.068,0.013c0.024,0.009 0.039,0.018 0.046,0.025c-0.054,0.116 -0.102,0.239 -0.144,0.368c-0.042,0.129 -0.085,0.274 -0.128,0.434c-0.08,0.015 -0.166,0.028 -0.257,0.041c-0.091,0.013 -0.182,0.025 -0.273,0.035c-0.091,0.011 -0.176,0.02 -0.256,0.025c-0.08,0.005 -0.149,0.008 -0.208,0.008Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M30.402,44.306c-0.032,0.182 -0.09,0.351 -0.172,0.507c-0.081,0.157 -0.185,0.292 -0.311,0.407c-0.125,0.114 -0.272,0.204 -0.439,0.27c-0.167,0.065 -0.356,0.098 -0.567,0.098c-0.208,0 -0.388,-0.033 -0.541,-0.101c-0.152,-0.067 -0.276,-0.158 -0.371,-0.273c-0.094,-0.114 -0.158,-0.25 -0.191,-0.406c-0.032,-0.157 -0.031,-0.326 0.006,-0.508l0.376,-1.948c0.015,-0.076 -0.006,-0.131 -0.062,-0.163c-0.057,-0.033 -0.125,-0.053 -0.205,-0.06c-0.055,-0.008 -0.082,-0.037 -0.082,-0.088c0,-0.025 0.006,-0.058 0.017,-0.098c0.218,0.022 0.418,0.033 0.6,0.033c0.076,-0 0.175,-0.003 0.297,-0.008c0.122,-0.006 0.232,-0.014 0.33,-0.025c0.004,0.018 0.007,0.035 0.008,0.049c0.002,0.015 0.003,0.027 0.003,0.038c0,0.022 -0.006,0.041 -0.019,0.058c-0.013,0.016 -0.034,0.026 -0.063,0.03c-0.094,0.014 -0.173,0.039 -0.237,0.073c-0.064,0.035 -0.103,0.087 -0.117,0.156l-0.361,1.861c-0.025,0.138 -0.031,0.272 -0.019,0.403c0.013,0.131 0.049,0.249 0.107,0.352c0.058,0.104 0.139,0.188 0.243,0.251c0.103,0.064 0.233,0.096 0.39,0.096c0.131,-0 0.257,-0.019 0.379,-0.057c0.122,-0.039 0.235,-0.1 0.338,-0.186c0.104,-0.085 0.194,-0.197 0.27,-0.336c0.077,-0.138 0.135,-0.309 0.175,-0.512l0.355,-1.861c0.014,-0.073 -0.004,-0.128 -0.055,-0.164c-0.051,-0.036 -0.123,-0.062 -0.218,-0.076c-0.044,-0.004 -0.066,-0.033 -0.066,-0.088c0,-0.011 0.001,-0.023 0.003,-0.038c0.002,-0.014 0.005,-0.031 0.008,-0.049c0.109,0.011 0.199,0.019 0.268,0.025c0.069,0.005 0.14,0.008 0.213,0.008c0.065,-0 0.137,-0.002 0.215,-0.006c0.078,-0.003 0.165,-0.011 0.259,-0.021c0.004,0.018 0.008,0.034 0.011,0.049c0.004,0.014 0.006,0.027 0.006,0.038c-0,0.047 -0.024,0.074 -0.071,0.082c-0.091,0.014 -0.166,0.04 -0.224,0.076c-0.058,0.036 -0.095,0.087 -0.109,0.153l-0.377,1.959Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M32.618,44.077c-0.015,0.116 -0.038,0.192 -0.071,0.229c-0.033,0.036 -0.082,0.054 -0.148,0.054l-1.08,0c0.015,-0.116 0.037,-0.192 0.068,-0.229c0.031,-0.036 0.081,-0.054 0.15,-0.054l1.081,-0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M34.784,45.588c-0.287,0 -0.532,-0.038 -0.734,-0.114c-0.202,-0.077 -0.366,-0.181 -0.494,-0.314c-0.127,-0.133 -0.22,-0.288 -0.278,-0.464c-0.058,-0.176 -0.087,-0.366 -0.087,-0.57c-0,-0.266 0.043,-0.53 0.131,-0.794c0.087,-0.264 0.218,-0.501 0.393,-0.712c0.174,-0.211 0.393,-0.382 0.657,-0.513c0.264,-0.131 0.574,-0.197 0.93,-0.197c0.182,0 0.358,0.015 0.527,0.044c0.169,0.029 0.332,0.069 0.488,0.12c-0.01,0.106 -0.016,0.209 -0.016,0.311c0,0.073 0.003,0.146 0.008,0.218c0.006,0.073 0.012,0.146 0.019,0.219c-0.025,0.018 -0.058,0.027 -0.098,0.027c-0.069,-0 -0.105,-0.027 -0.109,-0.082c-0.033,-0.24 -0.122,-0.407 -0.267,-0.502c-0.146,-0.095 -0.341,-0.142 -0.584,-0.142c-0.24,0 -0.455,0.052 -0.644,0.156c-0.189,0.103 -0.35,0.244 -0.483,0.423c-0.133,0.178 -0.234,0.386 -0.303,0.624c-0.069,0.239 -0.104,0.491 -0.104,0.756c0,0.197 0.027,0.374 0.08,0.532c0.052,0.158 0.126,0.293 0.221,0.404c0.094,0.111 0.21,0.197 0.346,0.259c0.136,0.062 0.29,0.093 0.461,0.093c0.247,-0 0.443,-0.051 0.587,-0.153c0.143,-0.102 0.268,-0.265 0.373,-0.491c0.026,-0.058 0.07,-0.087 0.131,-0.087c0.022,-0 0.045,0.004 0.069,0.013c0.023,0.009 0.039,0.018 0.046,0.025c-0.055,0.116 -0.103,0.239 -0.145,0.368c-0.041,0.129 -0.084,0.274 -0.128,0.434c-0.08,0.015 -0.165,0.028 -0.256,0.041c-0.091,0.013 -0.182,0.025 -0.273,0.035c-0.091,0.011 -0.177,0.02 -0.257,0.025c-0.08,0.005 -0.149,0.008 -0.207,0.008Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M39.368,42.352c0.014,-0.072 0.002,-0.126 -0.038,-0.161c-0.04,-0.034 -0.117,-0.061 -0.23,-0.079c-0.051,-0.011 -0.076,-0.036 -0.076,-0.076c-0,-0.011 0.002,-0.025 0.005,-0.041c0.004,-0.016 0.008,-0.032 0.011,-0.046c0.109,0.007 0.218,0.014 0.325,0.021c0.107,0.008 0.205,0.011 0.292,0.011c0.076,0 0.169,-0.002 0.278,-0.008c0.109,-0.005 0.213,-0.014 0.311,-0.024c0.008,0.029 0.011,0.058 0.011,0.087c0,0.044 -0.023,0.067 -0.071,0.071c-0.109,0.018 -0.19,0.045 -0.243,0.082c-0.052,0.036 -0.086,0.091 -0.101,0.163l-0.534,2.8c-0.015,0.072 0.001,0.125 0.046,0.158c0.046,0.033 0.123,0.058 0.232,0.076c0.047,0.011 0.071,0.038 0.071,0.082c-0,0.022 -0.004,0.051 -0.011,0.087c-0.105,-0.01 -0.216,-0.019 -0.33,-0.024c-0.115,-0.006 -0.217,-0.008 -0.308,-0.008c-0.073,-0 -0.166,0.002 -0.279,0.008c-0.112,0.005 -0.218,0.014 -0.316,0.024c-0.007,-0.036 -0.011,-0.065 -0.011,-0.087c-0,-0.047 0.022,-0.074 0.065,-0.082c0.128,-0.022 0.216,-0.048 0.265,-0.079c0.049,-0.031 0.081,-0.083 0.096,-0.155l0.256,-1.337l-1.55,-0l-0.256,1.337c-0.015,0.072 -0,0.125 0.043,0.158c0.044,0.033 0.126,0.058 0.246,0.076c0.047,0.004 0.071,0.031 0.071,0.082c-0,0.022 -0.004,0.051 -0.011,0.087c-0.109,-0.01 -0.222,-0.019 -0.338,-0.024c-0.117,-0.006 -0.22,-0.008 -0.311,-0.008c-0.073,-0 -0.162,0.002 -0.268,0.008c-0.105,0.005 -0.205,0.014 -0.3,0.024c-0.011,-0.025 -0.016,-0.054 -0.016,-0.087c-0,-0.047 0.023,-0.073 0.071,-0.076c0.116,-0.018 0.199,-0.045 0.248,-0.079c0.049,-0.035 0.081,-0.089 0.096,-0.161l0.54,-2.8c0.014,-0.072 0.002,-0.128 -0.036,-0.166c-0.038,-0.038 -0.115,-0.066 -0.232,-0.085c-0.051,-0.003 -0.076,-0.029 -0.076,-0.076c-0,-0.026 0.005,-0.053 0.016,-0.082c0.106,0.011 0.21,0.019 0.314,0.025c0.104,0.005 0.201,0.008 0.292,0.008c0.073,-0 0.168,-0.003 0.287,-0.008c0.118,-0.006 0.226,-0.014 0.324,-0.025c0.011,0.029 0.017,0.056 0.017,0.082c-0,0.044 -0.026,0.069 -0.077,0.076c-0.116,0.019 -0.202,0.047 -0.256,0.085c-0.055,0.038 -0.089,0.094 -0.104,0.166l-0.246,1.25l1.55,-0l0.246,-1.25Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M41.278,42.347c0.014,-0.073 -0.006,-0.126 -0.06,-0.158c-0.055,-0.033 -0.126,-0.055 -0.213,-0.066c-0.051,-0.011 -0.077,-0.042 -0.077,-0.093c0,-0.011 0.001,-0.023 0.003,-0.038c0.002,-0.014 0.005,-0.031 0.008,-0.049c0.109,0.011 0.22,0.019 0.333,0.025c0.113,0.005 0.218,0.008 0.317,0.008l1.031,-0c0.156,-0 0.266,-0.006 0.327,-0.017c0.062,-0.01 0.113,-0.016 0.153,-0.016c0.047,0 0.077,0.022 0.087,0.066c0.008,0.061 0.017,0.155 0.028,0.281c0.011,0.125 0.032,0.268 0.065,0.428c-0.014,0.007 -0.033,0.015 -0.054,0.025c-0.022,0.009 -0.042,0.013 -0.06,0.013c-0.048,0 -0.079,-0.022 -0.093,-0.065c-0.047,-0.186 -0.117,-0.317 -0.207,-0.393c-0.091,-0.077 -0.228,-0.115 -0.41,-0.115l-0.682,0l-0.273,1.424l0.748,0c0.08,0 0.138,-0.027 0.175,-0.081c0.036,-0.055 0.069,-0.13 0.098,-0.224c0.007,-0.018 0.017,-0.033 0.03,-0.044c0.012,-0.011 0.033,-0.016 0.062,-0.016c0.033,-0 0.068,0.007 0.104,0.022c-0.022,0.087 -0.041,0.166 -0.057,0.237c-0.016,0.071 -0.031,0.143 -0.044,0.216c-0.013,0.072 -0.023,0.149 -0.033,0.229c-0.009,0.08 -0.017,0.171 -0.024,0.273c-0.033,0.01 -0.066,0.016 -0.098,0.016c-0.033,-0 -0.056,-0.009 -0.069,-0.027c-0.012,-0.019 -0.017,-0.039 -0.013,-0.06c0.007,-0.084 -0,-0.16 -0.022,-0.23c-0.022,-0.069 -0.073,-0.103 -0.153,-0.103l-0.742,-0l-0.256,1.353c-0.011,0.058 -0.003,0.097 0.024,0.117c0.027,0.02 0.072,0.03 0.134,0.03l0.627,0c0.157,0 0.297,-0.04 0.421,-0.12c0.123,-0.08 0.252,-0.218 0.387,-0.414c0.015,-0.019 0.028,-0.032 0.041,-0.041c0.013,-0.009 0.03,-0.014 0.052,-0.014c0.022,0 0.043,0.005 0.065,0.016c0.022,0.011 0.042,0.026 0.06,0.044c-0.018,0.036 -0.036,0.075 -0.054,0.115c-0.018,0.032 -0.037,0.071 -0.055,0.114c-0.018,0.044 -0.036,0.088 -0.054,0.131c-0.03,0.073 -0.053,0.144 -0.071,0.213c-0.019,0.069 -0.037,0.118 -0.055,0.147c-0.018,0.029 -0.047,0.044 -0.087,0.044c-0.062,-0 -0.124,-0.005 -0.186,-0.014c-0.062,-0.009 -0.145,-0.013 -0.251,-0.013l-1.288,-0c-0.076,-0 -0.17,0.002 -0.281,0.008c-0.111,0.005 -0.215,0.014 -0.313,0.024c-0.004,-0.018 -0.007,-0.034 -0.009,-0.049c-0.001,-0.014 -0.002,-0.027 -0.002,-0.038c-0,-0.018 0.005,-0.036 0.016,-0.054c0.011,-0.019 0.031,-0.03 0.06,-0.033c0.113,-0.018 0.197,-0.046 0.251,-0.082c0.055,-0.036 0.087,-0.086 0.098,-0.147l0.541,-2.805Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M44.628,43.711l0.011,-0.076l1.342,-1.217c0.073,-0.062 0.109,-0.118 0.109,-0.169c0,-0.066 -0.065,-0.109 -0.196,-0.131c-0.051,-0.011 -0.076,-0.038 -0.076,-0.082c-0,-0.026 0.003,-0.057 0.011,-0.093c0.105,0.011 0.196,0.019 0.272,0.025c0.077,0.005 0.162,0.008 0.257,0.008c0.08,-0 0.158,-0.003 0.234,-0.008c0.077,-0.006 0.161,-0.014 0.251,-0.025c0.004,0.018 0.007,0.035 0.009,0.049c0.001,0.015 0.002,0.027 0.002,0.038c0,0.048 -0.023,0.077 -0.071,0.088c-0.083,0.018 -0.155,0.044 -0.215,0.079c-0.06,0.034 -0.116,0.075 -0.167,0.123l-1.342,1.222l1.021,1.642c0.032,0.051 0.077,0.096 0.133,0.134c0.057,0.038 0.125,0.065 0.205,0.079c0.029,0.007 0.047,0.017 0.054,0.027c0.008,0.011 0.011,0.024 0.011,0.039c0,0.025 -0.009,0.056 -0.027,0.092c-0.207,-0.021 -0.38,-0.032 -0.518,-0.032c-0.084,-0 -0.151,-0.025 -0.202,-0.074c-0.051,-0.049 -0.108,-0.121 -0.169,-0.215l-0.939,-1.523ZM44.301,42.347c0.007,-0.044 0.003,-0.079 -0.011,-0.107c-0.015,-0.027 -0.036,-0.049 -0.063,-0.065c-0.027,-0.016 -0.058,-0.028 -0.093,-0.035c-0.034,-0.008 -0.068,-0.013 -0.101,-0.017c-0.051,-0.007 -0.076,-0.036 -0.076,-0.087c-0,-0.011 0.002,-0.025 0.005,-0.041c0.004,-0.016 0.008,-0.034 0.011,-0.052c0.109,0.011 0.217,0.019 0.322,0.025c0.106,0.005 0.204,0.008 0.295,0.008c0.076,-0 0.172,-0.003 0.286,-0.008c0.115,-0.006 0.221,-0.014 0.32,-0.025c0.003,0.018 0.006,0.035 0.008,0.049c0.002,0.015 0.002,0.029 0.002,0.044c0,0.044 -0.025,0.071 -0.076,0.082c-0.095,0.014 -0.174,0.038 -0.237,0.071c-0.064,0.032 -0.103,0.085 -0.118,0.158l-0.54,2.805c-0.007,0.043 -0.005,0.079 0.006,0.106c0.011,0.027 0.03,0.05 0.057,0.068c0.027,0.018 0.059,0.032 0.095,0.041c0.037,0.009 0.075,0.016 0.115,0.019c0.044,0.008 0.065,0.035 0.065,0.082c0,0.011 -0,0.024 -0.002,0.038c-0.002,0.015 -0.005,0.031 -0.008,0.049c-0.11,-0.01 -0.218,-0.019 -0.325,-0.024c-0.107,-0.006 -0.207,-0.008 -0.298,-0.008c-0.076,-0 -0.171,0.002 -0.286,0.008c-0.115,0.005 -0.221,0.014 -0.319,0.024c-0.004,-0.018 -0.007,-0.034 -0.008,-0.049c-0.002,-0.014 -0.003,-0.027 -0.003,-0.038c-0,-0.047 0.022,-0.074 0.065,-0.082c0.099,-0.014 0.181,-0.039 0.249,-0.073c0.067,-0.035 0.108,-0.089 0.122,-0.161l0.541,-2.805Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M94.509,42.106c0,-0.434 -0.352,-0.787 -0.786,-0.787l-42.122,0c-0.434,0 -0.787,0.353 -0.787,0.787l0,7.861c0,0.434 0.353,0.787 0.787,0.787l42.122,-0c0.434,-0 0.786,-0.353 0.786,-0.787l0,-7.861Z"
|
||||
android:fillColor="#7d7474"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M50.62,42.583h4.465v7.397h-4.465z"/>
|
||||
<path
|
||||
android:pathData="M94.509,42.126c0,-0.445 -0.361,-0.807 -0.806,-0.807l-28.12,0l0,9.435l28.12,-0c0.445,-0 0.806,-0.362 0.806,-0.807l0,-7.821Z"
|
||||
android:fillColor="#2a2727"/>
|
||||
<path
|
||||
android:pathData="M65.583,41.319l-9.208,0c-0.67,0 -1.214,0.544 -1.214,1.214l-0,6.992c-0,0.671 0.544,1.215 1.214,1.215l9.208,-0l0,-9.421Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M59.633,41.319h2.276v9.434h-2.276z"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M63.295,41.319h2.276v9.434h-2.276z"/>
|
||||
<path
|
||||
android:pathData="M65.583,50.754l0,-9.435l3.481,3.335l0.01,3.239l-3.491,2.861Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M100.303,64.994c0,-4.183 -3.396,-7.579 -7.578,-7.579l-7.653,0c-4.183,0 -7.579,3.396 -7.579,7.579l0,13.846c0,4.183 3.396,7.578 7.579,7.578l7.653,0c4.182,0 7.578,-3.395 7.578,-7.578l0,-13.846Z"
|
||||
android:fillColor="#423f3f"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M100.002,65.149c-0,-4.06 -3.296,-7.356 -7.356,-7.356l-7.395,0c-4.06,0 -7.356,3.296 -7.356,7.356l0,13.397c0,4.06 3.296,7.356 7.356,7.356l7.395,0c4.06,0 7.356,-3.296 7.356,-7.356l-0,-13.397Z"/>
|
||||
<path
|
||||
android:pathData="M99.329,65.48c-0,-3.744 -3.039,-6.783 -6.783,-6.783l-7.222,0c-3.744,0 -6.783,3.039 -6.783,6.783l-0,12.866c-0,3.744 3.039,6.783 6.783,6.783l7.222,0c3.744,0 6.783,-3.039 6.783,-6.783l-0,-12.866Z"
|
||||
android:fillColor="#9d9292"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M98.815,65.674c0,-3.583 -2.909,-6.492 -6.491,-6.492l-6.776,0c-3.583,0 -6.492,2.909 -6.492,6.492l0,12.402c0,3.583 2.909,6.492 6.492,6.492l6.776,-0c3.582,-0 6.491,-2.909 6.491,-6.492l0,-12.402Z"/>
|
||||
<path
|
||||
android:pathData="M88.957,62.103l2,2.463l-4,-0l2,-2.463Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M89.135,82.366l-1.999,-2.464l3.999,0l-2,2.464Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M96.144,70.804c0,-1.753 -1.423,-3.176 -3.175,-3.176l-8.148,0c-1.753,0 -3.175,1.423 -3.175,3.176l-0,3.202c-0,1.753 1.422,3.176 3.175,3.176l8.148,-0c1.752,-0 3.175,-1.423 3.175,-3.176l0,-3.202Z"
|
||||
android:fillColor="#766d6d"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M93.86,70.396c0,-1.074 -0.872,-1.946 -1.946,-1.946l-5.992,-0c-1.075,-0 -1.947,0.872 -1.947,1.946l0,3.893c0,1.074 0.872,1.946 1.947,1.946l5.992,0c1.074,0 1.946,-0.872 1.946,-1.946l0,-3.893Z"/>
|
||||
<path
|
||||
android:pathData="M88.975,72.191m-1.528,0a1.528,1.528 0,1 1,3.056 0a1.528,1.528 0,1 1,-3.056 0"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M93.143,70.838c-0,-0.823 -0.668,-1.49 -1.49,-1.49l-5.409,-0c-0.823,-0 -1.49,0.667 -1.49,1.49l-0,2.98c-0,0.822 0.667,1.489 1.49,1.489l5.409,0c0.822,0 1.49,-0.667 1.49,-1.489l-0,-2.98Z"
|
||||
android:strokeWidth="1.25"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M43.182,84.176c0.783,-0 1.419,0.636 1.419,1.419c-0,0.783 -0.636,1.418 -1.419,1.418c-0.783,0 -1.419,-0.635 -1.419,-1.418c0,-0.783 0.636,-1.419 1.419,-1.419ZM43.182,84.394c0.662,0 1.2,0.538 1.2,1.201c0,0.662 -0.538,1.2 -1.2,1.2c-0.663,0 -1.201,-0.538 -1.201,-1.2c0,-0.663 0.538,-1.201 1.201,-1.201Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M37.26,85.484m-0.218,0a0.218,0.218 0,1 1,0.436 0a0.218,0.218 0,1 1,-0.436 0"
|
||||
android:strokeWidth="1.25"
|
||||
android:fillColor="#fff"
|
||||
android:strokeColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M38.811,85.483m-0.218,0a0.218,0.218 0,1 1,0.436 0a0.218,0.218 0,1 1,-0.436 0"
|
||||
android:strokeWidth="1.25"
|
||||
android:fillColor="#fff"
|
||||
android:strokeColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M40.483,85.508m-0.218,0a0.218,0.218 0,1 1,0.436 0a0.218,0.218 0,1 1,-0.436 0"
|
||||
android:strokeWidth="1.25"
|
||||
android:fillColor="#fff"
|
||||
android:strokeColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M45.499,85.595m-0.218,0a0.218,0.218 0,1 1,0.436 0a0.218,0.218 0,1 1,-0.436 0"
|
||||
android:strokeWidth="1.25"
|
||||
android:fillColor="#fff"
|
||||
android:strokeColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M47.136,85.574m-0.218,0a0.218,0.218 0,1 1,0.436 0a0.218,0.218 0,1 1,-0.436 0"
|
||||
android:strokeWidth="1.25"
|
||||
android:fillColor="#fff"
|
||||
android:strokeColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M48.784,85.595m-0.218,0a0.218,0.218 0,1 1,0.436 0a0.218,0.218 0,1 1,-0.436 0"
|
||||
android:strokeWidth="1.25"
|
||||
android:fillColor="#fff"
|
||||
android:strokeColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M42.527,85.42h1.31v0.306h-1.31z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M43.335,86.228l-0,-1.31l-0.306,0l-0,1.31l0.306,-0Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M45.624,87.875c0.059,-0.058 0.059,-0.153 0.001,-0.212l-1.039,-1.055c-0.058,-0.059 -0.153,-0.059 -0.212,-0.001l-0.214,0.21c-0.059,0.058 -0.059,0.153 -0.001,0.212l1.039,1.055c0.058,0.059 0.153,0.06 0.212,0.002l0.214,-0.211Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M72.033,60.303c0,-0.69 -0.56,-1.25 -1.25,-1.25l-54.973,0c-0.69,0 -1.249,0.56 -1.249,1.25l-0,19.437c-0,0.69 0.559,1.25 1.249,1.25l54.973,-0c0.69,-0 1.25,-0.56 1.25,-1.25l0,-19.437Z"
|
||||
android:fillColor="#484343"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M71.446,60.777c-0,-0.657 -0.534,-1.19 -1.191,-1.19l-53.929,-0c-0.657,-0 -1.191,0.533 -1.191,1.19l0,18.52c0,0.657 0.534,1.191 1.191,1.191l53.929,-0c0.657,-0 1.191,-0.534 1.191,-1.191l-0,-18.52Z"/>
|
||||
<path
|
||||
android:pathData="M70.661,77.866c0,-0.176 -0.143,-0.319 -0.319,-0.319l-54.245,-0c-0.176,-0 -0.319,0.143 -0.319,0.319l-0,1.55c-0,0.176 0.143,0.32 0.319,0.32l54.245,-0c0.176,-0 0.319,-0.144 0.319,-0.32l0,-1.55Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M70.224,78.163c-0,-0.118 -0.096,-0.214 -0.215,-0.214l-53.615,-0c-0.119,-0 -0.215,0.096 -0.215,0.214l0,1.039c0,0.118 0.096,0.214 0.215,0.214l53.615,0c0.119,0 0.215,-0.096 0.215,-0.214l-0,-1.039Z"
|
||||
android:fillColor="#23211f"/>
|
||||
<path
|
||||
android:pathData="M16.482,78.201h48.339v0.948h-48.339z"
|
||||
android:fillColor="#f37e31"/>
|
||||
<path
|
||||
android:pathData="M64.494,78.188h5.445v0.96h-5.445z"
|
||||
android:fillColor="#5c5454"/>
|
||||
<path
|
||||
android:pathData="M65.739,77.776l-0.907,0.912l0.282,0.284l0.907,-0.913l-0.282,-0.283Z"
|
||||
android:fillColor="#a79999"/>
|
||||
<path
|
||||
android:pathData="M65.114,78.393l0.907,0.913l-0.282,0.283l-0.907,-0.913l0.282,-0.283Z"
|
||||
android:fillColor="#a79999"/>
|
||||
<path
|
||||
android:pathData="M70.754,61.429l-1.892,1.074l0,-2.148l1.892,1.074Z"
|
||||
android:fillColor="#6aae47"/>
|
||||
<path
|
||||
android:pathData="M47.136,61.484c-0,-0.346 0.033,-0.625 0.099,-0.836c0.066,-0.212 0.164,-0.374 0.295,-0.489c0.13,-0.115 0.294,-0.172 0.492,-0.172c0.146,0 0.274,0.032 0.384,0.095c0.11,0.063 0.201,0.155 0.272,0.274c0.072,0.119 0.128,0.264 0.169,0.436c0.041,0.171 0.061,0.402 0.061,0.692c0,0.344 -0.033,0.621 -0.098,0.832c-0.066,0.211 -0.164,0.375 -0.294,0.49c-0.13,0.115 -0.295,0.173 -0.494,0.173c-0.262,-0 -0.468,-0.102 -0.617,-0.304c-0.179,-0.244 -0.269,-0.641 -0.269,-1.191ZM47.479,61.484c-0,0.481 0.052,0.801 0.156,0.96c0.105,0.159 0.234,0.239 0.387,0.239c0.153,-0 0.282,-0.08 0.387,-0.24c0.104,-0.16 0.156,-0.479 0.156,-0.959c0,-0.482 -0.052,-0.803 -0.156,-0.961c-0.105,-0.159 -0.235,-0.238 -0.391,-0.238c-0.153,-0 -0.275,0.07 -0.367,0.21c-0.115,0.178 -0.172,0.508 -0.172,0.989Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M49.249,62.155l0.334,-0.048c0.038,0.204 0.103,0.351 0.195,0.441c0.092,0.09 0.205,0.135 0.337,0.135c0.157,-0 0.289,-0.059 0.397,-0.176c0.109,-0.117 0.163,-0.262 0.163,-0.436c-0,-0.165 -0.05,-0.301 -0.15,-0.408c-0.101,-0.107 -0.228,-0.161 -0.382,-0.161c-0.063,-0 -0.142,0.013 -0.236,0.04l0.037,-0.316c0.023,0.003 0.04,0.004 0.054,0.004c0.142,0 0.27,-0.04 0.384,-0.12c0.113,-0.08 0.17,-0.203 0.17,-0.369c0,-0.132 -0.041,-0.242 -0.124,-0.328c-0.083,-0.087 -0.19,-0.13 -0.321,-0.13c-0.129,-0 -0.237,0.044 -0.324,0.132c-0.086,0.088 -0.142,0.22 -0.167,0.396l-0.333,-0.064c0.04,-0.242 0.133,-0.428 0.278,-0.561c0.144,-0.133 0.324,-0.199 0.539,-0.199c0.148,0 0.285,0.035 0.41,0.103c0.125,0.069 0.22,0.162 0.286,0.281c0.066,0.118 0.099,0.244 0.099,0.378c0,0.126 -0.031,0.241 -0.094,0.345c-0.063,0.104 -0.157,0.187 -0.28,0.248c0.16,0.04 0.285,0.123 0.374,0.249c0.089,0.126 0.134,0.283 0.134,0.472c-0,0.256 -0.087,0.473 -0.26,0.651c-0.173,0.178 -0.392,0.267 -0.656,0.267c-0.239,-0 -0.437,-0.077 -0.594,-0.23c-0.158,-0.153 -0.248,-0.352 -0.27,-0.596Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M52.365,62.097l0.325,-0.048c0.008,0.224 0.047,0.377 0.116,0.46c0.07,0.083 0.165,0.124 0.288,0.124c0.09,-0 0.168,-0.022 0.233,-0.067c0.066,-0.045 0.111,-0.105 0.136,-0.182c0.024,-0.076 0.037,-0.199 0.037,-0.367l-0,-2.018l0.359,0l0,1.997c0,0.245 -0.027,0.434 -0.082,0.569c-0.055,0.135 -0.142,0.237 -0.261,0.308c-0.12,0.07 -0.26,0.106 -0.42,0.106c-0.239,-0 -0.421,-0.074 -0.548,-0.222c-0.127,-0.148 -0.188,-0.368 -0.183,-0.66Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M55.689,62.667c-0.124,0.113 -0.243,0.193 -0.357,0.24c-0.114,0.046 -0.237,0.07 -0.368,0.07c-0.216,-0 -0.382,-0.057 -0.498,-0.171c-0.117,-0.114 -0.175,-0.26 -0.175,-0.437c0,-0.104 0.022,-0.199 0.066,-0.285c0.044,-0.086 0.101,-0.154 0.173,-0.206c0.071,-0.052 0.151,-0.092 0.24,-0.118c0.065,-0.019 0.164,-0.037 0.296,-0.054c0.27,-0.035 0.468,-0.076 0.595,-0.124c0.001,-0.049 0.002,-0.081 0.002,-0.094c0,-0.147 -0.031,-0.25 -0.094,-0.31c-0.086,-0.081 -0.212,-0.122 -0.38,-0.122c-0.157,0 -0.273,0.03 -0.348,0.089c-0.075,0.06 -0.13,0.164 -0.166,0.315l-0.326,-0.048c0.029,-0.151 0.078,-0.272 0.146,-0.365c0.068,-0.092 0.166,-0.164 0.295,-0.214c0.128,-0.049 0.277,-0.074 0.447,-0.074c0.168,-0 0.304,0.021 0.409,0.063c0.105,0.043 0.183,0.097 0.232,0.161c0.05,0.065 0.084,0.147 0.104,0.245c0.011,0.061 0.017,0.172 0.017,0.332l-0,0.479c-0,0.335 0.007,0.546 0.021,0.635c0.014,0.089 0.042,0.173 0.084,0.255l-0.348,-0c-0.035,-0.075 -0.057,-0.162 -0.067,-0.262ZM55.661,61.864c-0.121,0.053 -0.303,0.098 -0.545,0.135c-0.137,0.022 -0.234,0.046 -0.291,0.072c-0.057,0.027 -0.101,0.066 -0.131,0.117c-0.031,0.052 -0.047,0.109 -0.047,0.171c0,0.096 0.034,0.176 0.101,0.24c0.068,0.064 0.166,0.096 0.296,0.096c0.128,-0 0.243,-0.03 0.343,-0.091c0.1,-0.061 0.173,-0.144 0.22,-0.249c0.036,-0.081 0.054,-0.201 0.054,-0.359l0,-0.132Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M56.516,62.929l-0,-2.122l0.3,-0l0,0.301c0.145,-0.233 0.354,-0.349 0.627,-0.349c0.118,-0 0.227,0.023 0.327,0.068c0.099,0.046 0.174,0.107 0.223,0.181c0.05,0.075 0.084,0.164 0.104,0.266c0.012,0.067 0.019,0.183 0.019,0.35l-0,1.305l-0.334,-0l-0,-1.291c-0,-0.147 -0.013,-0.256 -0.039,-0.329c-0.026,-0.073 -0.072,-0.13 -0.138,-0.174c-0.066,-0.043 -0.144,-0.065 -0.233,-0.065c-0.142,0 -0.265,0.049 -0.368,0.146c-0.103,0.097 -0.155,0.282 -0.155,0.554l0,1.159l-0.333,-0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M61.343,62.583l-0,0.346l-1.796,-0c-0.003,-0.087 0.01,-0.17 0.039,-0.25c0.045,-0.132 0.118,-0.262 0.219,-0.39c0.101,-0.128 0.246,-0.276 0.437,-0.443c0.295,-0.261 0.495,-0.468 0.599,-0.621c0.103,-0.152 0.155,-0.297 0.155,-0.432c0,-0.143 -0.047,-0.263 -0.142,-0.361c-0.094,-0.098 -0.217,-0.147 -0.369,-0.147c-0.161,-0 -0.29,0.052 -0.386,0.156c-0.096,0.104 -0.145,0.248 -0.146,0.431l-0.343,-0.038c0.023,-0.275 0.111,-0.485 0.265,-0.63c0.153,-0.145 0.359,-0.217 0.617,-0.217c0.261,0 0.467,0.078 0.619,0.234c0.152,0.156 0.228,0.349 0.228,0.58c0,0.117 -0.022,0.232 -0.067,0.345c-0.044,0.113 -0.118,0.233 -0.221,0.358c-0.103,0.125 -0.275,0.297 -0.514,0.515c-0.201,0.182 -0.329,0.305 -0.386,0.369c-0.057,0.065 -0.104,0.13 -0.141,0.195l1.333,0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M61.701,61.484c-0,-0.346 0.033,-0.625 0.099,-0.836c0.066,-0.212 0.164,-0.374 0.295,-0.489c0.13,-0.115 0.294,-0.172 0.492,-0.172c0.146,0 0.273,0.032 0.383,0.095c0.11,0.063 0.201,0.155 0.273,0.274c0.072,0.119 0.128,0.264 0.169,0.436c0.04,0.171 0.061,0.402 0.061,0.692c-0,0.344 -0.033,0.621 -0.098,0.832c-0.066,0.211 -0.164,0.375 -0.294,0.49c-0.131,0.115 -0.295,0.173 -0.494,0.173c-0.262,-0 -0.468,-0.102 -0.618,-0.304c-0.179,-0.244 -0.268,-0.641 -0.268,-1.191ZM62.044,61.484c-0,0.481 0.052,0.801 0.156,0.96c0.105,0.159 0.233,0.239 0.387,0.239c0.153,-0 0.282,-0.08 0.386,-0.24c0.105,-0.16 0.157,-0.479 0.157,-0.959c-0,-0.482 -0.052,-0.803 -0.157,-0.961c-0.104,-0.159 -0.234,-0.238 -0.39,-0.238c-0.153,-0 -0.276,0.07 -0.367,0.21c-0.115,0.178 -0.172,0.508 -0.172,0.989Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M65.566,62.583l-0,0.346l-1.797,-0c-0.002,-0.087 0.011,-0.17 0.039,-0.25c0.046,-0.132 0.119,-0.262 0.22,-0.39c0.101,-0.128 0.246,-0.276 0.437,-0.443c0.295,-0.261 0.495,-0.468 0.598,-0.621c0.104,-0.152 0.156,-0.297 0.156,-0.432c0,-0.143 -0.047,-0.263 -0.142,-0.361c-0.094,-0.098 -0.218,-0.147 -0.37,-0.147c-0.16,-0 -0.289,0.052 -0.385,0.156c-0.097,0.104 -0.145,0.248 -0.147,0.431l-0.343,-0.038c0.024,-0.275 0.112,-0.485 0.266,-0.63c0.153,-0.145 0.359,-0.217 0.617,-0.217c0.261,0 0.467,0.078 0.619,0.234c0.152,0.156 0.228,0.349 0.228,0.58c-0,0.117 -0.022,0.232 -0.067,0.345c-0.044,0.113 -0.118,0.233 -0.221,0.358c-0.103,0.125 -0.275,0.297 -0.515,0.515c-0.2,0.182 -0.328,0.305 -0.385,0.369c-0.057,0.065 -0.104,0.13 -0.141,0.195l1.333,0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M65.923,61.484c0,-0.346 0.034,-0.625 0.1,-0.836c0.066,-0.212 0.164,-0.374 0.294,-0.489c0.131,-0.115 0.295,-0.172 0.493,-0.172c0.145,0 0.273,0.032 0.383,0.095c0.11,0.063 0.201,0.155 0.273,0.274c0.071,0.119 0.128,0.264 0.168,0.436c0.041,0.171 0.062,0.402 0.062,0.692c-0,0.344 -0.033,0.621 -0.099,0.832c-0.065,0.211 -0.163,0.375 -0.293,0.49c-0.131,0.115 -0.296,0.173 -0.494,0.173c-0.262,-0 -0.468,-0.102 -0.618,-0.304c-0.179,-0.244 -0.269,-0.641 -0.269,-1.191ZM66.266,61.484c0,0.481 0.053,0.801 0.157,0.96c0.104,0.159 0.233,0.239 0.387,0.239c0.153,-0 0.282,-0.08 0.386,-0.24c0.104,-0.16 0.157,-0.479 0.157,-0.959c-0,-0.482 -0.053,-0.803 -0.157,-0.961c-0.104,-0.159 -0.234,-0.238 -0.39,-0.238c-0.153,-0 -0.276,0.07 -0.367,0.21c-0.115,0.178 -0.173,0.508 -0.173,0.989Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M16.44,62.904l-0.364,0.001l-0,-2.19c-0.088,0.079 -0.203,0.158 -0.345,0.238c-0.142,0.079 -0.27,0.139 -0.384,0.179l0,-0.332c0.204,-0.092 0.382,-0.202 0.535,-0.331c0.152,-0.129 0.26,-0.254 0.323,-0.375l0.235,-0.001l0,2.811Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M17.373,61.52c-0,-0.331 0.036,-0.598 0.108,-0.8c0.072,-0.202 0.179,-0.358 0.322,-0.468c0.142,-0.11 0.321,-0.166 0.537,-0.166c0.159,-0.001 0.299,0.029 0.419,0.089c0.12,0.06 0.219,0.147 0.297,0.26c0.078,0.114 0.14,0.252 0.184,0.416c0.045,0.163 0.067,0.384 0.067,0.661c-0,0.329 -0.036,0.594 -0.107,0.796c-0.072,0.202 -0.179,0.358 -0.321,0.469c-0.142,0.111 -0.322,0.166 -0.539,0.167c-0.286,0.001 -0.511,-0.095 -0.674,-0.288c-0.195,-0.232 -0.293,-0.611 -0.293,-1.136ZM17.747,61.518c0,0.46 0.057,0.765 0.171,0.917c0.114,0.152 0.255,0.227 0.422,0.227c0.167,-0.001 0.308,-0.078 0.422,-0.231c0.114,-0.153 0.171,-0.459 0.171,-0.917c-0,-0.461 -0.057,-0.767 -0.171,-0.918c-0.114,-0.151 -0.256,-0.226 -0.426,-0.226c-0.167,0.001 -0.301,0.068 -0.401,0.202c-0.125,0.171 -0.188,0.487 -0.188,0.946Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M19.88,61.254l-0,-0.391l0.414,-0.002l0,0.392l-0.414,0.001ZM19.88,62.891l-0,-0.392l0.414,-0.001l0,0.391l-0.414,0.002Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M22.742,62.549l0,0.331l-1.96,0.007c-0.003,-0.083 0.011,-0.162 0.042,-0.239c0.05,-0.126 0.13,-0.25 0.24,-0.373c0.11,-0.123 0.269,-0.264 0.477,-0.426c0.322,-0.25 0.54,-0.449 0.653,-0.595c0.113,-0.146 0.17,-0.284 0.17,-0.414c0,-0.136 -0.052,-0.251 -0.155,-0.344c-0.103,-0.093 -0.237,-0.14 -0.403,-0.139c-0.176,0.001 -0.316,0.051 -0.421,0.151c-0.105,0.099 -0.159,0.237 -0.16,0.413l-0.374,-0.035c0.025,-0.264 0.122,-0.465 0.289,-0.604c0.167,-0.139 0.392,-0.208 0.674,-0.21c0.284,-0.001 0.51,0.073 0.675,0.221c0.166,0.149 0.249,0.333 0.249,0.553c0,0.112 -0.024,0.222 -0.072,0.331c-0.049,0.108 -0.13,0.222 -0.242,0.342c-0.113,0.121 -0.3,0.286 -0.562,0.495c-0.218,0.174 -0.358,0.292 -0.421,0.354c-0.062,0.062 -0.113,0.124 -0.153,0.187l1.454,-0.006Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M24.505,62.873l-0.365,0.001l0,-2.19c-0.087,0.08 -0.202,0.159 -0.345,0.238c-0.142,0.08 -0.27,0.14 -0.383,0.179l0,-0.332c0.204,-0.091 0.382,-0.201 0.534,-0.33c0.153,-0.129 0.261,-0.255 0.324,-0.376l0.235,-0.001l-0,2.811Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M43.306,61.012h0.317v0.854h-0.317z"
|
||||
android:fillColor="#999d97"/>
|
||||
<path
|
||||
android:pathData="M43.281,60.49l0,2.034l-3.593,0l-0,-2.034l3.593,-0ZM42.775,60.894l-2.519,0l-0,1.171l2.519,0l0,-1.171Z"
|
||||
android:fillColor="#999d97"/>
|
||||
<path
|
||||
android:pathData="M32.357,62.612h0.99v0.44h-0.99z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M34.304,61.954l-1.262,-0.643l-0.183,0.343l1.262,0.644l0.183,-0.344Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M32.852,61.654l-1.262,0.644l-0.183,-0.344l1.261,-0.643l0.184,0.343Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M32.636,60.352h0.446v2.7h-0.446z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M33.082,60.165c0,-0.062 -0.05,-0.112 -0.111,-0.112l-0.223,0c-0.062,0 -0.112,0.05 -0.112,0.112l-0,2.159c-0,0.062 0.05,0.112 0.112,0.112l0.223,-0c0.061,-0 0.111,-0.05 0.111,-0.112l0,-2.159Z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M35.628,66.114l0.468,-0l-0,2.017c-0,0.351 -0.04,0.629 -0.121,0.836c-0.08,0.206 -0.225,0.374 -0.435,0.503c-0.209,0.13 -0.484,0.194 -0.825,0.194c-0.331,0 -0.601,-0.056 -0.812,-0.169c-0.21,-0.112 -0.36,-0.276 -0.45,-0.489c-0.09,-0.214 -0.135,-0.505 -0.135,-0.875l-0,-2.017l0.467,-0l0,2.014c0,0.304 0.029,0.527 0.086,0.671c0.057,0.143 0.155,0.254 0.294,0.332c0.138,0.078 0.308,0.117 0.509,0.117c0.344,-0 0.589,-0.077 0.735,-0.231c0.146,-0.154 0.219,-0.45 0.219,-0.889l0,-2.014Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M36.493,69.664l1.024,-3.61l0.347,0l-1.021,3.61l-0.35,0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M38.189,69.605l0,-3.491l0.434,-0l0,1.252c0.203,-0.231 0.458,-0.347 0.766,-0.347c0.19,-0 0.355,0.037 0.494,0.111c0.14,0.073 0.24,0.175 0.3,0.306c0.06,0.13 0.091,0.319 0.091,0.566l-0,1.603l-0.434,-0l-0,-1.603c-0,-0.214 -0.047,-0.37 -0.141,-0.468c-0.094,-0.097 -0.227,-0.146 -0.399,-0.146c-0.128,-0 -0.249,0.033 -0.362,0.099c-0.114,0.066 -0.194,0.155 -0.243,0.268c-0.048,0.112 -0.072,0.268 -0.072,0.466l0,1.384l-0.434,-0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M42.035,69.605l-0,-3.255l1.093,-0c0.223,-0 0.401,0.033 0.536,0.099c0.134,0.065 0.24,0.167 0.316,0.304c0.076,0.137 0.114,0.28 0.114,0.429c0,0.14 -0.033,0.271 -0.101,0.393c-0.068,0.123 -0.17,0.222 -0.306,0.298c0.176,0.058 0.312,0.156 0.406,0.295c0.095,0.139 0.142,0.304 0.142,0.493c0,0.153 -0.028,0.294 -0.086,0.425c-0.058,0.131 -0.129,0.232 -0.214,0.303c-0.085,0.071 -0.191,0.125 -0.319,0.161c-0.128,0.037 -0.284,0.055 -0.47,0.055l-1.111,-0ZM42.42,67.717l0.631,0c0.171,0 0.293,-0.012 0.367,-0.037c0.098,-0.033 0.172,-0.087 0.222,-0.162c0.05,-0.076 0.075,-0.171 0.075,-0.285c-0,-0.108 -0.024,-0.203 -0.07,-0.285c-0.046,-0.082 -0.113,-0.138 -0.199,-0.169c-0.086,-0.03 -0.234,-0.045 -0.443,-0.045l-0.583,-0l0,0.983ZM42.42,69.221l0.726,-0c0.125,-0 0.212,-0.006 0.262,-0.016c0.089,-0.018 0.163,-0.047 0.223,-0.089c0.06,-0.041 0.109,-0.101 0.147,-0.181c0.039,-0.079 0.058,-0.17 0.058,-0.274c-0,-0.121 -0.028,-0.227 -0.084,-0.316c-0.055,-0.09 -0.132,-0.153 -0.231,-0.189c-0.099,-0.036 -0.241,-0.054 -0.427,-0.054l-0.674,-0l0,1.119Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M44.772,69.605l0,-3.255l1.293,-0c0.259,-0 0.457,0.029 0.592,0.087c0.135,0.059 0.243,0.162 0.324,0.31c0.081,0.148 0.121,0.312 0.121,0.491c0,0.231 -0.067,0.425 -0.2,0.584c-0.134,0.158 -0.341,0.259 -0.621,0.302c0.102,0.055 0.18,0.109 0.233,0.162c0.113,0.115 0.219,0.26 0.32,0.433l0.507,0.886l-0.485,-0l-0.386,-0.677c-0.113,-0.196 -0.205,-0.345 -0.278,-0.449c-0.073,-0.104 -0.138,-0.176 -0.196,-0.218c-0.058,-0.041 -0.116,-0.07 -0.176,-0.086c-0.044,-0.011 -0.115,-0.016 -0.215,-0.016l-0.447,0l-0,1.446l-0.386,-0ZM45.158,67.786l0.829,0c0.176,0 0.314,-0.02 0.414,-0.061c0.099,-0.04 0.175,-0.106 0.226,-0.195c0.052,-0.09 0.078,-0.187 0.078,-0.292c-0,-0.154 -0.05,-0.281 -0.15,-0.38c-0.1,-0.099 -0.258,-0.149 -0.475,-0.149l-0.922,0l-0,1.077Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M47.522,68.226h1.099v0.402h-1.099z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M49.063,69.605l-0,-3.255l1.099,-0c0.194,-0 0.341,0.01 0.443,0.031c0.144,0.026 0.264,0.077 0.36,0.152c0.097,0.075 0.175,0.179 0.234,0.314c0.059,0.135 0.088,0.283 0.088,0.444c0,0.277 -0.078,0.511 -0.236,0.703c-0.158,0.192 -0.443,0.287 -0.855,0.287l-0.748,0l0,1.324l-0.385,-0ZM49.448,67.897l0.754,0c0.249,0 0.426,-0.051 0.531,-0.155c0.104,-0.104 0.157,-0.25 0.157,-0.438c-0,-0.136 -0.031,-0.252 -0.093,-0.349c-0.061,-0.097 -0.142,-0.161 -0.243,-0.192c-0.065,-0.02 -0.185,-0.029 -0.36,-0.029l-0.746,-0l0,1.163Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M51.729,69.605l-0,-2.358l0.322,-0l-0,0.357c0.082,-0.167 0.158,-0.277 0.228,-0.331c0.069,-0.053 0.146,-0.08 0.229,-0.08c0.121,0 0.243,0.043 0.368,0.129l-0.123,0.371c-0.088,-0.058 -0.175,-0.087 -0.263,-0.087c-0.078,0 -0.148,0.027 -0.21,0.079c-0.063,0.053 -0.107,0.126 -0.134,0.219c-0.039,0.142 -0.059,0.298 -0.059,0.466l-0,1.235l-0.358,-0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M52.955,68.426c0,-0.437 0.109,-0.76 0.327,-0.971c0.181,-0.174 0.402,-0.262 0.664,-0.262c0.29,0 0.527,0.107 0.711,0.319c0.185,0.212 0.277,0.506 0.277,0.88c-0,0.304 -0.041,0.543 -0.123,0.717c-0.081,0.173 -0.2,0.309 -0.355,0.405c-0.156,0.096 -0.326,0.144 -0.51,0.144c-0.296,0 -0.535,-0.106 -0.717,-0.317c-0.182,-0.212 -0.274,-0.517 -0.274,-0.915ZM53.323,68.426c0,0.302 0.059,0.528 0.177,0.678c0.118,0.15 0.267,0.225 0.446,0.225c0.177,0 0.325,-0.075 0.443,-0.226c0.118,-0.151 0.177,-0.381 0.177,-0.691c-0,-0.291 -0.059,-0.512 -0.178,-0.662c-0.119,-0.151 -0.266,-0.226 -0.442,-0.226c-0.179,0 -0.328,0.075 -0.446,0.225c-0.118,0.149 -0.177,0.375 -0.177,0.677Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M55.449,69.605l-0,-2.05l-0.319,0l0,-0.308l0.319,-0l-0,-0.229c-0,-0.234 0.045,-0.413 0.135,-0.537c0.09,-0.125 0.232,-0.187 0.427,-0.187c0.131,0 0.253,0.017 0.364,0.051l-0.056,0.338c-0.07,-0.014 -0.134,-0.02 -0.192,-0.02c-0.124,-0 -0.208,0.027 -0.253,0.082c-0.045,0.055 -0.068,0.171 -0.068,0.349l0,0.153l0.41,-0l0,0.308l-0.41,0l0,2.05l-0.357,-0ZM56.486,66.809l0,-0.459l0.358,-0l0,0.459l-0.358,0ZM56.486,69.605l0,-2.358l0.358,-0l0,2.358l-0.358,-0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M57.381,66.35h0.358v3.255h-0.358z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M60.673,69.605l-0.357,-0l-0,-2.547c-0.087,0.092 -0.2,0.184 -0.339,0.275c-0.14,0.092 -0.266,0.161 -0.377,0.207l-0,-0.387c0.2,-0.105 0.375,-0.232 0.525,-0.381c0.149,-0.15 0.256,-0.295 0.318,-0.436l0.23,0l0,3.269Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M18.919,66.916h0.698v2.397h-0.698z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M18.106,66.873h1.512v0.698h-1.512z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M18.118,65.492h0.698v1.731h-0.698z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M15.93,67.321h0.698v1.961h-0.698z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M16.592,65.802h0.681v2.141h-0.681z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M16.592,65.492h1.861v0.62h-1.861z"
|
||||
android:fillColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M22.859,69.525l-0.539,0l0,-3.507c-0.129,0.127 -0.299,0.253 -0.509,0.38c-0.211,0.126 -0.4,0.221 -0.567,0.284l-0,-0.532c0.301,-0.145 0.564,-0.32 0.789,-0.526c0.226,-0.206 0.385,-0.406 0.479,-0.599l0.347,-0l-0,4.5Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M24.539,68.899h0.613v0.627h-0.613z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M25.942,68.342l0.538,-0.073c0.062,0.312 0.167,0.536 0.316,0.674c0.148,0.137 0.329,0.206 0.542,0.206c0.254,0 0.467,-0.089 0.642,-0.269c0.174,-0.179 0.261,-0.401 0.261,-0.666c0,-0.253 -0.08,-0.462 -0.242,-0.626c-0.161,-0.164 -0.367,-0.246 -0.616,-0.246c-0.101,0 -0.228,0.021 -0.38,0.061l0.06,-0.483c0.036,0.004 0.065,0.006 0.087,0.006c0.229,0 0.436,-0.061 0.619,-0.183c0.183,-0.122 0.275,-0.311 0.275,-0.566c0,-0.201 -0.067,-0.369 -0.2,-0.501c-0.134,-0.132 -0.306,-0.199 -0.518,-0.199c-0.209,0 -0.383,0.068 -0.523,0.202c-0.14,0.135 -0.229,0.336 -0.269,0.605l-0.538,-0.097c0.065,-0.369 0.215,-0.655 0.448,-0.858c0.233,-0.203 0.524,-0.304 0.87,-0.304c0.24,-0 0.46,0.052 0.661,0.157c0.202,0.105 0.356,0.248 0.462,0.43c0.107,0.181 0.16,0.374 0.16,0.578c0,0.193 -0.051,0.37 -0.152,0.529c-0.102,0.159 -0.252,0.285 -0.452,0.379c0.259,0.061 0.461,0.188 0.604,0.38c0.144,0.193 0.216,0.434 0.216,0.723c-0,0.392 -0.14,0.723 -0.419,0.996c-0.279,0.272 -0.632,0.408 -1.059,0.408c-0.384,-0 -0.704,-0.117 -0.958,-0.352c-0.254,-0.234 -0.399,-0.538 -0.435,-0.911Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M29.345,68.351l0.565,-0.049c0.042,0.282 0.139,0.493 0.292,0.635c0.152,0.141 0.336,0.212 0.551,0.212c0.26,0 0.479,-0.1 0.658,-0.299c0.18,-0.2 0.269,-0.465 0.269,-0.795c0,-0.314 -0.086,-0.562 -0.258,-0.743c-0.173,-0.182 -0.399,-0.272 -0.678,-0.272c-0.173,-0 -0.33,0.04 -0.469,0.12c-0.14,0.081 -0.249,0.185 -0.329,0.314l-0.505,-0.068l0.424,-2.302l2.18,0l0,0.526l-1.749,0l-0.236,1.205c0.263,-0.188 0.539,-0.282 0.828,-0.282c0.383,0 0.706,0.136 0.969,0.407c0.263,0.271 0.395,0.62 0.395,1.046c-0,0.405 -0.116,0.756 -0.347,1.051c-0.281,0.363 -0.665,0.545 -1.152,0.545c-0.398,-0 -0.724,-0.114 -0.976,-0.343c-0.252,-0.228 -0.396,-0.531 -0.432,-0.908Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M15.893,72.909h2.95v0.614h-2.95z"
|
||||
android:fillColor="#f37e31"/>
|
||||
<path
|
||||
android:pathData="M18.806,76.021h0.663v0.611h-0.663z"
|
||||
android:fillColor="#f37e31"/>
|
||||
<path
|
||||
android:pathData="M18.212,73.523h0.631v3.111h-0.631z"
|
||||
android:fillColor="#f37e31"/>
|
||||
<path
|
||||
android:pathData="M15.893,73.523h0.611v3.111h-0.611z"
|
||||
android:fillColor="#f37e31"/>
|
||||
<path
|
||||
android:pathData="M23.778,76.344l0,0.517l-2.795,0c-0.004,-0.13 0.016,-0.254 0.06,-0.374c0.071,-0.197 0.185,-0.391 0.342,-0.582c0.157,-0.192 0.383,-0.413 0.68,-0.664c0.459,-0.391 0.77,-0.7 0.931,-0.928c0.162,-0.228 0.243,-0.444 0.243,-0.647c-0,-0.214 -0.074,-0.393 -0.221,-0.54c-0.147,-0.146 -0.339,-0.22 -0.575,-0.22c-0.251,0 -0.451,0.078 -0.601,0.234c-0.15,0.155 -0.226,0.37 -0.228,0.645l-0.533,-0.057c0.036,-0.412 0.174,-0.726 0.412,-0.943c0.239,-0.216 0.559,-0.324 0.961,-0.324c0.406,0 0.727,0.117 0.964,0.35c0.236,0.233 0.355,0.522 0.355,0.867c-0,0.175 -0.035,0.347 -0.104,0.517c-0.07,0.169 -0.184,0.347 -0.345,0.535c-0.161,0.187 -0.428,0.444 -0.801,0.771c-0.311,0.271 -0.511,0.455 -0.6,0.551c-0.088,0.097 -0.161,0.194 -0.219,0.292l2.074,-0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M24.627,76.248h0.591v0.613h-0.591z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M25.98,75.704l0.519,-0.072c0.06,0.305 0.161,0.525 0.304,0.66c0.144,0.134 0.318,0.201 0.524,0.201c0.244,0 0.451,-0.087 0.619,-0.263c0.168,-0.175 0.252,-0.392 0.252,-0.651c0,-0.247 -0.078,-0.451 -0.233,-0.612c-0.156,-0.16 -0.354,-0.24 -0.595,-0.24c-0.098,-0 -0.22,0.02 -0.366,0.06l0.058,-0.473c0.034,0.004 0.062,0.006 0.083,0.006c0.221,0 0.421,-0.06 0.598,-0.179c0.176,-0.12 0.265,-0.304 0.265,-0.553c-0,-0.197 -0.064,-0.361 -0.193,-0.49c-0.129,-0.13 -0.296,-0.195 -0.499,-0.195c-0.202,0 -0.371,0.066 -0.505,0.198c-0.135,0.131 -0.222,0.329 -0.26,0.592l-0.519,-0.096c0.063,-0.361 0.207,-0.64 0.432,-0.839c0.225,-0.198 0.505,-0.297 0.84,-0.297c0.231,0 0.443,0.051 0.638,0.154c0.194,0.103 0.342,0.243 0.445,0.42c0.103,0.177 0.155,0.366 0.155,0.565c-0,0.189 -0.049,0.362 -0.147,0.517c-0.099,0.155 -0.244,0.279 -0.436,0.371c0.25,0.059 0.444,0.183 0.583,0.372c0.138,0.188 0.207,0.424 0.207,0.707c0,0.382 -0.134,0.707 -0.403,0.973c-0.27,0.266 -0.61,0.399 -1.022,0.399c-0.371,-0 -0.679,-0.115 -0.925,-0.344c-0.245,-0.229 -0.385,-0.526 -0.419,-0.891Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M29.263,75.713l0.545,-0.048c0.041,0.275 0.134,0.482 0.282,0.621c0.147,0.138 0.324,0.207 0.532,0.207c0.25,0 0.462,-0.097 0.635,-0.293c0.173,-0.195 0.259,-0.454 0.259,-0.777c0,-0.307 -0.083,-0.549 -0.249,-0.726c-0.167,-0.177 -0.384,-0.266 -0.654,-0.266c-0.167,-0 -0.318,0.039 -0.453,0.118c-0.134,0.079 -0.24,0.181 -0.317,0.306l-0.488,-0.065l0.41,-2.251l2.103,-0l0,0.514l-1.688,-0l-0.227,1.178c0.253,-0.184 0.52,-0.275 0.799,-0.275c0.369,-0 0.681,0.132 0.935,0.397c0.253,0.265 0.38,0.606 0.38,1.022c0,0.397 -0.111,0.74 -0.334,1.029c-0.272,0.354 -0.642,0.532 -1.111,0.532c-0.385,-0 -0.699,-0.112 -0.942,-0.335c-0.243,-0.223 -0.382,-0.519 -0.417,-0.888Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M35.535,72.479l0.56,-0l0,2.532c0,0.44 -0.048,0.79 -0.144,1.049c-0.096,0.259 -0.27,0.47 -0.521,0.632c-0.251,0.163 -0.58,0.244 -0.988,0.244c-0.396,-0 -0.72,-0.071 -0.972,-0.212c-0.252,-0.142 -0.432,-0.347 -0.54,-0.615c-0.108,-0.268 -0.162,-0.634 -0.162,-1.098l0,-2.532l0.56,-0l0,2.529c0,0.38 0.034,0.661 0.103,0.841c0.068,0.181 0.185,0.32 0.352,0.417c0.166,0.098 0.369,0.147 0.61,0.147c0.411,-0 0.705,-0.097 0.88,-0.29c0.175,-0.194 0.262,-0.565 0.262,-1.115l0,-2.529Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M56.616,76.861l-0.556,-0l0,-3.44c-0.134,0.124 -0.309,0.248 -0.526,0.372c-0.218,0.124 -0.413,0.217 -0.586,0.279l0,-0.522c0.311,-0.142 0.583,-0.314 0.816,-0.516c0.232,-0.202 0.397,-0.398 0.494,-0.588l0.358,0l0,4.415Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M60.962,76.342l0,0.519l-2.993,-0c-0.004,-0.13 0.018,-0.255 0.065,-0.375c0.076,-0.198 0.198,-0.393 0.366,-0.585c0.168,-0.192 0.41,-0.414 0.727,-0.666c0.492,-0.392 0.825,-0.702 0.998,-0.931c0.173,-0.229 0.259,-0.445 0.259,-0.649c0,-0.214 -0.078,-0.395 -0.236,-0.542c-0.157,-0.147 -0.363,-0.22 -0.616,-0.22c-0.268,-0 -0.482,0.078 -0.643,0.234c-0.16,0.156 -0.241,0.372 -0.244,0.648l-0.571,-0.057c0.039,-0.414 0.186,-0.73 0.442,-0.946c0.255,-0.217 0.598,-0.326 1.028,-0.326c0.435,0 0.779,0.117 1.032,0.351c0.253,0.234 0.38,0.524 0.38,0.87c-0,0.176 -0.037,0.349 -0.111,0.519c-0.074,0.17 -0.198,0.348 -0.369,0.536c-0.172,0.188 -0.458,0.446 -0.858,0.774c-0.333,0.272 -0.547,0.457 -0.642,0.554c-0.095,0.096 -0.173,0.194 -0.235,0.292l2.221,-0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M61.867,74.291l0,-0.615l0.633,-0l0,0.615l-0.633,-0ZM61.867,76.861l0,-0.615l0.633,-0l0,0.615l-0.633,-0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M63.316,74.692c-0,-0.519 0.055,-0.938 0.165,-1.255c0.11,-0.317 0.274,-0.561 0.491,-0.733c0.217,-0.172 0.491,-0.258 0.82,-0.258c0.243,0 0.456,0.048 0.639,0.143c0.184,0.095 0.335,0.231 0.455,0.41c0.119,0.179 0.213,0.397 0.281,0.654c0.068,0.257 0.102,0.604 0.102,1.039c-0,0.516 -0.055,0.933 -0.164,1.25c-0.109,0.316 -0.272,0.561 -0.49,0.734c-0.217,0.173 -0.491,0.26 -0.823,0.26c-0.436,-0 -0.779,-0.152 -1.028,-0.456c-0.299,-0.366 -0.448,-0.962 -0.448,-1.788ZM63.887,74.692c0,0.722 0.087,1.203 0.261,1.441c0.174,0.239 0.389,0.359 0.644,0.359c0.255,-0 0.47,-0.12 0.644,-0.36c0.174,-0.24 0.261,-0.72 0.261,-1.44c0,-0.723 -0.087,-1.204 -0.261,-1.442c-0.174,-0.238 -0.391,-0.357 -0.65,-0.357c-0.255,-0 -0.459,0.105 -0.612,0.315c-0.191,0.268 -0.287,0.763 -0.287,1.484Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M68.616,76.861l-0,-1.053l-1.964,0l-0,-0.495l2.066,-2.849l0.454,0l-0,2.849l0.612,0l-0,0.495l-0.612,0l-0,1.053l-0.556,-0ZM68.616,75.313l-0,-1.982l-1.418,1.982l1.418,0Z"
|
||||
android:fillColor="#fff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M50.221,74.7a1.692,1.702 0,1 0,3.384 0a1.692,1.702 0,1 0,-3.384 0z"
|
||||
android:fillColor="#aaa2a2"/>
|
||||
</vector>
|
8
app/src/main/res/drawable/ic_local_profile.xml
Normal file
8
app/src/main/res/drawable/ic_local_profile.xml
Normal file
|
@ -0,0 +1,8 @@
|
|||
<vector android:height="36dp" android:viewportHeight="64"
|
||||
android:viewportWidth="64" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M48.433,3.365l13.803,11.632l-27.606,0l13.803,-11.632Z"/>
|
||||
<path android:fillColor="@android:color/white" android:pathData="M45.253,14.997h6.586v3.428h-6.586z"/>
|
||||
<path android:fillColor="@android:color/white" android:pathData="M38.504,14.997h6.749v12.189h-6.749z"/>
|
||||
<path android:fillColor="@android:color/white" android:pathData="M51.84,14.997h6.747v12.189h-6.747z"/>
|
||||
<path android:fillColor="@android:color/white" android:fillType="nonZero" android:pathData="M38.504,50.81c0,4.133 -7.139,7.573 -16.04,7.729c-8.901,0.156 -16.579,-3.024 -17.251,-7.145c-0.672,-4.122 5.887,-7.802 14.737,-8.269c8.85,-0.467 17.024,2.435 18.364,6.521l0.19,1.164ZM31.825,33.192c-0,4.902 -4.06,8.982 -9.121,9.167c-5.061,0.185 -9.428,-3.587 -9.81,-8.475c-0.382,-4.888 3.348,-9.253 8.38,-9.807c5.033,-0.554 9.68,2.889 10.443,7.734l0.108,1.381Z"/>
|
||||
</vector>
|
9
app/src/main/res/drawable/ic_loop_closed_white.xml
Normal file
9
app/src/main/res/drawable/ic_loop_closed_white.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M24,9.343l-5.781,-3.968l-1.328,6.688l2.102,-1.757c0.014,0.056 0.03,0.111 0.043,0.168c0.116,0.512 0.183,1.042 0.183,1.589c0,3.952 -3.204,7.156 -7.156,7.156s-7.156,-3.204 -7.156,-7.156s3.204,-7.156 7.156,-7.156c1.072,0 2.085,0.242 2.998,0.665c0.325,0.151 0.639,0.321 0.936,0.517l0.002,-0.002l-0.352,-1.784l1.876,-0.538c-1.567,-1.033 -3.442,-1.639 -5.46,-1.639c-5.488,0 -9.938,4.449 -9.938,9.938S6.574,22 12.063,22S22,17.551 22,12.063c0,-0.759 -0.093,-1.496 -0.254,-2.206c-0.04,-0.176 -0.085,-0.35 -0.134,-0.523L24,9.343L24,9.343z"
|
||||
android:fillColor="#FFFFFF"/>
|
||||
</vector>
|
12
app/src/main/res/drawable/ic_loop_reconnect.xml
Normal file
12
app/src/main/res/drawable/ic_loop_reconnect.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M24,9.343l-5.781,-3.968l-1.328,6.688l2.102,-1.757c0.014,0.056 0.03,0.111 0.043,0.168c0.116,0.512 0.183,1.042 0.183,1.589c0,3.952 -3.204,7.156 -7.156,7.156c-3.952,0 -7.156,-3.204 -7.156,-7.156c0,-3.952 3.204,-7.156 7.156,-7.156c1.072,0 2.085,0.242 2.998,0.665c0.325,0.151 0.639,0.321 0.936,0.517l0.002,-0.002l-0.352,-1.784l1.876,-0.538c-1.567,-1.033 -3.442,-1.639 -5.46,-1.639c-5.488,0 -9.937,4.449 -9.937,9.938c0,5.488 4.449,9.937 9.937,9.937C17.551,22 22,17.551 22,12.063c0,-0.759 -0.093,-1.496 -0.254,-2.206c-0.04,-0.176 -0.085,-0.35 -0.134,-0.523L24,9.343L24,9.343z"
|
||||
android:fillColor="#939393"/>
|
||||
<path
|
||||
android:pathData="M14.868,22.154c0.794,0 1.49,-0.418 1.973,-1.054l-0.001,-3.926c-0.482,-0.634 -1.177,-1.052 -1.969,-1.052l-5.612,-0.001c-0.793,0 -1.487,0.416 -1.97,1.05l-0.004,3.926c0.482,0.636 1.178,1.055 1.972,1.055"
|
||||
android:fillColor="#939393"/>
|
||||
</vector>
|
12
app/src/main/res/drawable/ic_loop_resume.xml
Normal file
12
app/src/main/res/drawable/ic_loop_resume.xml
Normal file
|
@ -0,0 +1,12 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M24,9.343l-5.781,-3.968l-1.328,6.688l2.102,-1.757c0.014,0.056 0.03,0.111 0.043,0.168c0.116,0.512 0.183,1.042 0.183,1.589c0,3.952 -3.204,7.156 -7.156,7.156c-3.952,0 -7.156,-3.204 -7.156,-7.156c0,-3.952 3.204,-7.156 7.156,-7.156c1.072,0 2.085,0.242 2.998,0.665c0.325,0.151 0.639,0.321 0.936,0.517l0.002,-0.002l-0.352,-1.784l1.876,-0.538c-1.567,-1.033 -3.442,-1.639 -5.46,-1.639c-5.488,0 -9.937,4.449 -9.937,9.938c0,5.488 4.449,9.937 9.937,9.937C17.551,22 22,17.551 22,12.063c0,-0.759 -0.093,-1.496 -0.254,-2.206c-0.04,-0.176 -0.085,-0.35 -0.134,-0.523L24,9.343L24,9.343z"
|
||||
android:fillColor="#00C03E"/>
|
||||
<path
|
||||
android:pathData="M9.401,8.391l6.599,3.609l-6.599,3.609z"
|
||||
android:fillColor="#00C03E"/>
|
||||
</vector>
|
|
@ -1,9 +1,12 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
android:width="64dp"
|
||||
android:height="64dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M12.064,2.891c-2.006,-2.006 -4.997,-2.417 -7.414,-1.246l4.398,4.398L6.044,9.049L1.645,4.651c-1.171,2.417 -0.76,5.408 1.246,7.414c1.86,1.86 4.568,2.349 6.879,1.477l9.17,9.17c0.391,0.391 1.024,0.391 1.414,0l2.357,-2.357c0.391,-0.391 0.391,-1.024 0,-1.414l-9.17,-9.17C14.413,7.459 13.925,4.751 12.064,2.891z"
|
||||
android:fillColor="@color/white"/>
|
||||
android:pathData="M30.342,24.318c1.366,3.679 4.175,6.646 7.729,8.193c-0.101,0.988 -0.53,1.949 -1.287,2.705l-19.957,19.958c-1.746,1.746 -4.582,1.746 -6.329,-0l-3.26,-3.26c-1.746,-1.747 -1.746,-4.583 0,-6.329l19.958,-19.957c0.868,-0.869 2.007,-1.306 3.146,-1.31ZM16.307,44.823c1.159,0 2.1,0.932 2.1,2.079c-0,1.147 -0.941,2.078 -2.1,2.078c-1.159,0 -2.099,-0.931 -2.099,-2.078c-0,-1.147 0.94,-2.079 2.099,-2.079Z"
|
||||
android:fillColor="@android:color/white"/>
|
||||
<path
|
||||
android:pathData="M58.682,18.101c0.003,0.104 0.004,0.208 0.004,0.312c-0,7.953 -6.336,14.41 -14.14,14.41c-7.804,-0 -14.139,-6.457 -14.139,-14.41c-0,-7.952 6.335,-14.409 14.139,-14.409c3.386,0 6.495,1.215 8.93,3.241l-10.873,6.475l0,7.107l6.258,3.309l0.078,0.13l0.076,-0.048l0.091,0.048l0.024,-0.121l9.552,-6.044Z"
|
||||
android:fillColor="@android:color/white"/>
|
||||
</vector>
|
||||
|
|
10
app/src/main/res/drawable/ic_nightscout_profile.xml
Normal file
10
app/src/main/res/drawable/ic_nightscout_profile.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<vector android:height="36dp" android:viewportHeight="64"
|
||||
android:viewportWidth="64" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:fillType="nonZero" android:pathData="M38.504,50.81c0,4.133 -7.139,7.573 -16.04,7.729c-8.901,0.156 -16.579,-3.024 -17.251,-7.145c-0.672,-4.122 5.887,-7.802 14.737,-8.269c8.85,-0.467 17.024,2.435 18.364,6.521l0.19,1.164ZM31.825,33.192c-0,4.902 -4.06,8.982 -9.121,9.167c-5.061,0.185 -9.428,-3.587 -9.81,-8.475c-0.382,-4.888 3.348,-9.253 8.38,-9.807c5.033,-0.554 9.68,2.889 10.443,7.734l0.108,1.381Z"/>
|
||||
<path android:fillColor="#00000000"
|
||||
android:pathData="M48.482,34.89c1.19,0.985 11.298,-12.07 10.281,-19.108c-0.83,-5.741 -4.429,-10.197 -10.281,-10.324c-5.915,-0.129 -9.748,4.343 -10.28,10.324c-0.628,7.047 8.849,20.079 10.28,19.108Z"
|
||||
android:strokeColor="@android:color/white" android:strokeWidth="3.09"/>
|
||||
<path android:fillColor="@android:color/white" android:pathData="M53.696,23.303c-1.343,2.486 -3.174,4.943 -5.291,7.381l-1.973,-2.349c0.695,-1.242 1.452,-2.453 2.437,-3.549l4.827,-1.483ZM43.048,23.303l4.208,1.465l-1.84,2.322l-2.368,-3.787ZM49.099,16.153c-0,-1.762 1.426,-3.192 3.182,-3.192c1.756,0 3.182,1.43 3.182,3.192c0,0.526 -0.128,1.024 -0.353,1.461c0.065,0.669 -0.468,2.301 -1.44,3.533c-0.098,0.124 -0.194,0.239 -0.287,0.346c-0.331,0.912 -2.336,1.614 -4.756,1.614c-1.492,0 -2.827,-0.267 -3.708,-0.686c-0.023,-0.01 -0.046,-0.021 -0.069,-0.033c-0.393,-0.196 -0.689,-0.422 -0.86,-0.669c-0.063,-0.065 -0.126,-0.134 -0.189,-0.207c-1.263,-1.458 -2.105,-3.261 -2.117,-3.912c-0.221,-0.435 -0.346,-0.927 -0.346,-1.447c0,-1.762 1.426,-3.192 3.182,-3.192c1.757,0 3.183,1.43 3.183,3.192l-0,3.939c0.102,0.059 0.177,0.123 0.218,0.193l1.754,-0c0,-0 -0.597,-0 -0.597,-0l0,-4.132l0.021,-0ZM43.598,19.208c0.028,0.031 0.054,0.035 0.081,0.023c-0.027,-0.008 -0.054,-0.015 -0.081,-0.023ZM44.52,13.727c1.335,0 2.419,1.087 2.419,2.426c-0,1.338 -1.084,2.425 -2.419,2.425c-1.334,0 -2.418,-1.087 -2.418,-2.425c0,-1.339 1.084,-2.426 2.418,-2.426ZM52.281,13.727c1.335,0 2.418,1.087 2.418,2.426c0,1.338 -1.083,2.425 -2.418,2.425c-1.335,0 -2.419,-1.087 -2.419,-2.425c0,-1.339 1.084,-2.426 2.419,-2.426ZM44.52,14.997c0.635,0 1.151,0.518 1.151,1.156c0,0.637 -0.516,1.155 -1.151,1.155c-0.635,0 -1.15,-0.518 -1.15,-1.155c-0,-0.638 0.515,-1.156 1.15,-1.156ZM52.281,14.997c0.635,0 1.151,0.518 1.151,1.156c-0,0.637 -0.516,1.155 -1.151,1.155c-0.635,0 -1.151,-0.518 -1.151,-1.155c0,-0.638 0.516,-1.156 1.151,-1.156ZM44.743,9.796c0.845,-0.422 2.218,-0.696 3.766,-0.696c2.322,-0 4.249,0.617 4.596,1.423c0.319,0.337 0.568,0.719 0.77,1.103l-1.293,-0.029c-0.015,0.01 -0.03,0.019 -0.045,0.029l-1.756,0l-2.362,1.863l-2.363,-1.863l-1.574,0c-0.004,-0.002 -0.007,-0.004 -0.01,-0.006l-1.482,-0.009c0.378,-0.911 1.008,-1.501 1.741,-1.843l0.012,0.028Z"/>
|
||||
<path android:fillColor="#FF000000" android:pathData="M43.147,16.153a1.373,1.378 0,1 0,2.746 0a1.373,1.378 0,1 0,-2.746 0z"/>
|
||||
<path android:fillColor="#FF000000" android:pathData="M50.951,16.153a1.373,1.378 0,1 0,2.746 0a1.373,1.378 0,1 0,-2.746 0z"/>
|
||||
</vector>
|
11
app/src/main/res/drawable/ic_nightscout_syncs.xml
Normal file
11
app/src/main/res/drawable/ic_nightscout_syncs.xml
Normal file
|
@ -0,0 +1,11 @@
|
|||
<vector android:height="36dp" android:viewportHeight="64"
|
||||
android:viewportWidth="64" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M37.022,34.973c-1.299,2.381 -3.069,4.734 -5.117,7.069l-1.908,-2.25c0.672,-1.189 1.404,-2.349 2.357,-3.399l4.668,-1.42ZM26.725,34.973l4.069,1.404l-1.779,2.223l-2.29,-3.627ZM32.576,28.124c-0,-1.687 1.379,-3.056 3.077,-3.056c1.699,-0 3.077,1.369 3.077,3.056c0,0.505 -0.123,0.981 -0.341,1.401c0.063,0.64 -0.453,2.203 -1.393,3.383c-0.094,0.119 -0.187,0.229 -0.277,0.331c-0.32,0.874 -2.259,1.547 -4.599,1.547c-1.443,-0 -2.734,-0.256 -3.586,-0.657c-0.022,-0.011 -0.045,-0.021 -0.067,-0.033c-0.38,-0.187 -0.666,-0.404 -0.831,-0.64c-0.061,-0.062 -0.122,-0.128 -0.183,-0.198c-1.222,-1.397 -2.036,-3.124 -2.048,-3.748c-0.213,-0.416 -0.334,-0.887 -0.334,-1.386c0,-1.687 1.379,-3.056 3.077,-3.056c1.699,-0 3.078,1.369 3.078,3.056l-0,3.774c0.098,0.056 0.171,0.117 0.211,0.184l1.696,0c0,0 -0.577,0 -0.577,0l0,-3.958l0.02,0ZM27.257,31.051c0.026,0.029 0.052,0.033 0.077,0.022c-0.026,-0.007 -0.052,-0.015 -0.077,-0.022ZM28.148,25.801c1.291,0 2.339,1.041 2.339,2.323c0,1.283 -1.048,2.323 -2.339,2.323c-1.29,0 -2.338,-1.04 -2.338,-2.323c-0,-1.282 1.048,-2.323 2.338,-2.323ZM35.653,25.801c1.291,0 2.339,1.041 2.339,2.323c-0,1.283 -1.048,2.323 -2.339,2.323c-1.291,0 -2.339,-1.04 -2.339,-2.323c0,-1.282 1.048,-2.323 2.339,-2.323ZM28.148,27.018c0.615,-0 1.113,0.496 1.113,1.106c0,0.611 -0.498,1.107 -1.113,1.107c-0.614,0 -1.112,-0.496 -1.112,-1.107c-0,-0.61 0.498,-1.106 1.112,-1.106ZM35.653,27.018c0.614,-0 1.113,0.496 1.113,1.106c-0,0.611 -0.499,1.107 -1.113,1.107c-0.614,0 -1.113,-0.496 -1.113,-1.107c0,-0.61 0.499,-1.106 1.113,-1.106ZM28.363,22.036c0.818,-0.404 2.146,-0.667 3.643,-0.667c2.245,0 4.109,0.592 4.444,1.364c0.309,0.323 0.55,0.688 0.745,1.056l-1.251,-0.028c-0.014,0.01 -0.028,0.019 -0.043,0.028l-1.698,-0l-2.285,1.785l-2.285,-1.785l-1.522,-0c-0.003,-0.002 -0.006,-0.004 -0.009,-0.006l-1.433,-0.008c0.365,-0.873 0.974,-1.438 1.683,-1.765l0.011,0.026Z"/>
|
||||
<path android:fillColor="#FF000000" android:pathData="M27.035,28.124a1.113,1.107 0,1 0,2.226 0a1.113,1.107 0,1 0,-2.226 0z"/>
|
||||
<path android:fillColor="#FF000000" android:pathData="M34.54,28.124a1.113,1.107 0,1 0,2.226 0a1.113,1.107 0,1 0,-2.226 0z"/>
|
||||
<path android:fillColor="#00000000"
|
||||
android:pathData="M31.98,46.071c1.15,0.944 10.925,-11.56 9.942,-18.302c-0.803,-5.498 -4.283,-9.766 -9.942,-9.888c-5.72,-0.123 -9.427,4.16 -9.942,9.888c-0.607,6.75 8.558,19.231 9.942,18.302Z"
|
||||
android:strokeColor="@android:color/white" android:strokeWidth="3.09"/>
|
||||
<path android:fillColor="@android:color/white" android:fillType="nonZero" android:pathData="M55.254,57.66l-3.611,-4.832c6.807,-5.403 11.187,-13.847 11.187,-23.338c0,-11.854 -6.834,-22.076 -16.694,-26.778c-1.214,2.783 -2.793,6.403 -4.302,9.861c7.648,3.102 13.057,10.732 13.057,19.654c-0,6.253 -2.658,11.87 -6.88,15.74l-3.301,-4.416l-5.98,15.838l16.524,-1.729Z"/>
|
||||
<path android:fillColor="@android:color/white" android:fillType="nonZero" android:pathData="M8.537,4.469l3.613,4.832c-6.811,5.403 -11.195,13.847 -11.195,23.338c0,11.855 6.839,22.076 16.706,26.778c1.214,-2.783 2.794,-6.402 4.304,-9.861c-7.653,-3.102 -13.065,-10.732 -13.065,-19.653c0,-6.253 2.659,-11.871 6.885,-15.741l3.302,4.416l5.984,-15.838l-16.534,1.729Z"/>
|
||||
</vector>
|
17
app/src/main/res/drawable/ic_nsclient_bg.xml
Normal file
17
app/src/main/res/drawable/ic_nsclient_bg.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="64dp"
|
||||
android:height="64dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M26.974,28.633c2.447,-4.486 5.781,-8.918 9.638,-13.317l3.594,4.239c-1.265,2.24 -2.645,4.425 -4.439,6.402l-8.793,2.676ZM46.37,28.633l-7.664,-2.644l3.351,-4.189l4.313,6.833ZM35.349,41.533c-0,3.178 -2.597,5.758 -5.797,5.758c-3.199,-0 -5.796,-2.58 -5.796,-5.758c-0,-0.951 0.232,-1.848 0.643,-2.638c-0.118,-1.207 0.853,-4.15 2.623,-6.373c0.178,-0.224 0.353,-0.432 0.522,-0.624c0.604,-1.645 4.255,-2.912 8.664,-2.912c2.719,-0 5.149,0.482 6.755,1.237c0.042,0.019 0.084,0.039 0.126,0.061c0.715,0.352 1.254,0.761 1.565,1.206c0.115,0.118 0.23,0.242 0.345,0.374c2.301,2.631 3.834,5.883 3.857,7.058c0.402,0.784 0.629,1.671 0.629,2.611c0,3.178 -2.597,5.758 -5.796,5.758c-3.199,-0 -5.797,-2.58 -5.797,-5.758l0,-7.108c-0.186,-0.106 -0.322,-0.221 -0.397,-0.347l-3.196,-0c0,-0 1.087,-0 1.087,-0l-0,7.455l-0.037,-0ZM45.369,36.021c-0.051,-0.056 -0.098,-0.063 -0.147,-0.042c0.049,0.014 0.098,0.028 0.147,0.042ZM43.689,45.909c-2.432,-0 -4.406,-1.961 -4.406,-4.376c0,-2.415 1.974,-4.376 4.406,-4.376c2.431,0 4.405,1.961 4.405,4.376c0,2.415 -1.974,4.376 -4.405,4.376ZM29.552,45.909c-2.431,-0 -4.405,-1.961 -4.405,-4.376c-0,-2.415 1.974,-4.376 4.405,-4.376c2.432,0 4.406,1.961 4.406,4.376c-0,2.415 -1.974,4.376 -4.406,4.376ZM43.689,43.618c-1.157,-0 -2.096,-0.935 -2.096,-2.085c-0,-1.151 0.939,-2.085 2.096,-2.085c1.157,0 2.096,0.934 2.096,2.085c-0,1.15 -0.939,2.085 -2.096,2.085ZM29.552,43.618c-1.156,-0 -2.096,-0.935 -2.096,-2.085c0,-1.151 0.94,-2.085 2.096,-2.085c1.157,0 2.096,0.934 2.096,2.085c0,1.15 -0.939,2.085 -2.096,2.085ZM43.284,53.001c-1.541,0.761 -4.041,1.256 -6.862,1.256c-4.229,0 -7.739,-1.114 -8.37,-2.568c-0.582,-0.608 -1.036,-1.296 -1.404,-1.99l2.356,0.052c0.027,-0.017 0.054,-0.034 0.081,-0.052l3.199,0l4.304,-3.361l4.303,3.361l2.868,0c0.006,0.004 0.012,0.008 0.018,0.012l2.699,0.015c-0.688,1.644 -1.835,2.709 -3.171,3.325l-0.021,-0.05Z"
|
||||
android:fillColor="@android:color/white"/>
|
||||
<path
|
||||
android:pathData="M36.472,7.728c-2.167,-1.778 -20.58,21.776 -18.727,34.474c1.511,10.356 8.067,18.397 18.727,18.626c10.775,0.231 17.757,-7.836 18.727,-18.626c1.144,-12.715 -16.12,-36.225 -18.727,-34.474Z"
|
||||
android:strokeWidth="3.09"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#fff"/>
|
||||
<path
|
||||
android:pathData="M15.033,3.173c0.86,-0.187 3.831,4.041 5.767,7.976c1.97,4.005 -1.144,9.071 -5.767,9.169c-3.916,0.084 -8.031,-5.067 -5.515,-9.774c1.298,-2.429 4.076,-7.057 5.515,-7.371ZM13.751,9.511c-1.167,-0.437 -3.511,2.215 -2.886,4.685c0.582,2.301 2.948,4.824 3.5,4.626c1.44,-0.517 -1.41,-3.828 -1.541,-5.219c-0.174,-1.834 1.591,-3.843 0.927,-4.092Z"
|
||||
android:fillColor="@android:color/white"/>
|
||||
</vector>
|
85
app/src/main/res/drawable/ic_poctech.xml
Normal file
85
app/src/main/res/drawable/ic_poctech.xml
Normal file
|
@ -0,0 +1,85 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="64dp"
|
||||
android:height="64dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M51.787,23.533c-0.01,-10.925 -8.888,-19.787 -19.813,-19.777c-10.925,0.01 -19.787,8.889 -19.777,19.814l0.016,16.897c0.01,10.925 8.888,19.787 19.813,19.777c10.925,-0.01 19.787,-8.889 19.777,-19.814l-0.016,-16.897Z"
|
||||
android:fillColor="#ebeae3"/>
|
||||
<path
|
||||
android:pathData="M46.353,25.52c-0.007,-7.925 -6.447,-14.353 -14.372,-14.346c-7.925,0.008 -14.353,6.448 -14.346,14.373l0.015,16.092c0.006,6.181 5.029,11.195 11.21,11.19l6.318,-0.006c6.182,-0.006 11.196,-5.029 11.19,-11.211l-0.015,-16.092Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startY="31.4229"
|
||||
android:startX="17.6405"
|
||||
android:endY="30.819769"
|
||||
android:endX="58.322098"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FFFFFFFF"/>
|
||||
<item android:offset="1" android:color="#FFB3B3B3"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
<path
|
||||
android:pathData="M22.928,44.362l-0.021,-22.414c-0.004,-4.01 3.249,-7.27 7.26,-7.273l3.634,-0.004c4.011,-0.003 7.27,3.25 7.274,7.261l0.02,22.413c-0.638,2.068 -1.683,3.934 -3.208,5.56l-11.85,0.011c-1.578,-1.46 -2.517,-3.384 -3.119,-5.554l0.01,-0Z"
|
||||
android:strokeWidth="0.56"
|
||||
android:fillColor="#00000000"
|
||||
android:strokeColor="#000"/>
|
||||
<path
|
||||
android:fillColor="@android:color/black"
|
||||
android:pathData="M28.826,46.02l-2.759,0.002l-0.001,-0.899c-0,-0.158 0.008,-0.279 0.026,-0.362c0.022,-0.117 0.065,-0.216 0.129,-0.295c0.063,-0.079 0.152,-0.143 0.266,-0.191c0.114,-0.048 0.239,-0.073 0.376,-0.073c0.235,0 0.434,0.064 0.596,0.193c0.163,0.129 0.244,0.362 0.245,0.699l0,0.611l1.122,-0.001l0,0.316ZM27.378,45.706l-0,-0.616c-0,-0.204 -0.044,-0.349 -0.132,-0.434c-0.088,-0.086 -0.212,-0.129 -0.371,-0.129c-0.116,0.001 -0.214,0.026 -0.297,0.076c-0.082,0.051 -0.136,0.117 -0.162,0.2c-0.017,0.053 -0.025,0.151 -0.025,0.294l0.001,0.61l0.986,-0.001Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="@android:color/black"
|
||||
android:pathData="M27.48,43.896c-0.458,0.001 -0.816,-0.105 -1.076,-0.317c-0.259,-0.213 -0.389,-0.487 -0.389,-0.823c-0,-0.22 0.06,-0.418 0.182,-0.595c0.122,-0.177 0.291,-0.311 0.509,-0.404c0.217,-0.093 0.464,-0.14 0.74,-0.14c0.28,-0 0.531,0.048 0.752,0.146c0.221,0.097 0.388,0.235 0.502,0.414c0.114,0.179 0.171,0.371 0.171,0.578c-0,0.225 -0.063,0.425 -0.188,0.602c-0.125,0.177 -0.297,0.311 -0.514,0.402c-0.217,0.091 -0.446,0.137 -0.689,0.137ZM27.486,43.571c0.332,-0 0.594,-0.078 0.786,-0.232c0.191,-0.155 0.286,-0.349 0.286,-0.582c-0,-0.237 -0.097,-0.432 -0.29,-0.585c-0.194,-0.154 -0.468,-0.23 -0.823,-0.23c-0.225,0 -0.421,0.033 -0.588,0.099c-0.168,0.066 -0.298,0.162 -0.39,0.288c-0.092,0.127 -0.138,0.268 -0.138,0.425c0,0.224 0.089,0.416 0.267,0.576c0.178,0.161 0.474,0.241 0.89,0.241Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="@android:color/black"
|
||||
android:pathData="M27.853,39.51l0.092,-0.316c0.3,0.066 0.529,0.185 0.687,0.357c0.157,0.171 0.236,0.381 0.236,0.629c0.001,0.257 -0.06,0.466 -0.181,0.627c-0.121,0.161 -0.296,0.284 -0.526,0.368c-0.229,0.084 -0.476,0.127 -0.739,0.127c-0.288,0 -0.538,-0.047 -0.752,-0.142c-0.215,-0.094 -0.377,-0.229 -0.488,-0.404c-0.112,-0.175 -0.167,-0.368 -0.168,-0.578c0,-0.238 0.07,-0.439 0.211,-0.602c0.14,-0.162 0.338,-0.276 0.593,-0.34l0.085,0.311c-0.201,0.055 -0.347,0.135 -0.439,0.24c-0.091,0.106 -0.137,0.238 -0.137,0.397c0,0.183 0.051,0.336 0.153,0.459c0.102,0.123 0.238,0.21 0.41,0.259c0.171,0.05 0.348,0.075 0.53,0.075c0.234,-0.001 0.439,-0.03 0.614,-0.089c0.175,-0.06 0.306,-0.152 0.392,-0.276c0.087,-0.125 0.13,-0.26 0.13,-0.405c-0,-0.177 -0.059,-0.326 -0.177,-0.449c-0.118,-0.122 -0.294,-0.205 -0.526,-0.248Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="@android:color/black"
|
||||
android:pathData="M28.82,38.199l-2.434,0.002l0,0.785l-0.325,0l-0.002,-1.889l0.326,0l0,0.789l2.434,-0.003l0.001,0.316Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="@android:color/black"
|
||||
android:pathData="M28.174,36.055l0.043,-0.302c0.205,0.047 0.363,0.135 0.477,0.264c0.113,0.129 0.169,0.294 0.169,0.494c0.001,0.253 -0.089,0.453 -0.269,0.601c-0.18,0.148 -0.433,0.222 -0.758,0.223c-0.336,-0 -0.597,-0.075 -0.783,-0.224c-0.186,-0.149 -0.279,-0.343 -0.279,-0.582c-0,-0.231 0.09,-0.419 0.272,-0.566c0.182,-0.146 0.438,-0.22 0.768,-0.22c0.02,0 0.05,0.001 0.091,0.002l0.001,1.287c0.219,-0.011 0.387,-0.065 0.504,-0.161c0.117,-0.097 0.175,-0.217 0.175,-0.361c-0,-0.107 -0.033,-0.199 -0.098,-0.275c-0.066,-0.076 -0.17,-0.136 -0.313,-0.18ZM27.627,37.016l-0.001,-0.964c-0.168,0.013 -0.294,0.05 -0.378,0.111c-0.131,0.093 -0.196,0.214 -0.196,0.363c0,0.134 0.053,0.247 0.157,0.339c0.104,0.091 0.244,0.142 0.418,0.151Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="@android:color/black"
|
||||
android:pathData="M28.084,34.259l0.043,-0.288c0.23,0.031 0.41,0.112 0.54,0.241c0.13,0.129 0.195,0.288 0.195,0.477c0,0.236 -0.089,0.426 -0.268,0.57c-0.179,0.144 -0.435,0.216 -0.769,0.216c-0.216,0 -0.405,-0.031 -0.567,-0.092c-0.161,-0.062 -0.283,-0.156 -0.364,-0.282c-0.081,-0.126 -0.122,-0.263 -0.122,-0.412c0,-0.187 0.055,-0.341 0.164,-0.46c0.11,-0.119 0.266,-0.196 0.468,-0.23l0.051,0.285c-0.134,0.027 -0.235,0.075 -0.303,0.144c-0.067,0.069 -0.101,0.152 -0.101,0.249c-0,0.148 0.061,0.268 0.184,0.36c0.122,0.092 0.316,0.137 0.581,0.137c0.268,-0 0.463,-0.045 0.585,-0.134c0.122,-0.089 0.182,-0.205 0.182,-0.348c0,-0.115 -0.041,-0.21 -0.122,-0.287c-0.082,-0.077 -0.208,-0.126 -0.377,-0.146Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="@android:color/black"
|
||||
android:pathData="M28.816,33.72l-2.76,0.002l-0,-0.292l0.99,-0.001c-0.183,-0.136 -0.275,-0.309 -0.275,-0.517c-0,-0.128 0.029,-0.239 0.087,-0.333c0.058,-0.094 0.139,-0.162 0.242,-0.203c0.102,-0.04 0.252,-0.061 0.448,-0.061l1.267,-0.001l-0,0.292l-1.267,0.002c-0.17,-0 -0.293,0.032 -0.37,0.095c-0.077,0.063 -0.116,0.153 -0.116,0.269c0.001,0.087 0.027,0.168 0.079,0.245c0.052,0.076 0.123,0.13 0.212,0.163c0.089,0.032 0.212,0.048 0.369,0.048l1.094,-0.001l-0,0.293Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M27.844,29.206l0.092,-0.315c0.3,0.066 0.529,0.185 0.687,0.356c0.157,0.172 0.236,0.382 0.237,0.63c-0,0.257 -0.061,0.466 -0.182,0.627c-0.121,0.161 -0.296,0.283 -0.525,0.368c-0.23,0.084 -0.477,0.126 -0.74,0.126c-0.288,0.001 -0.538,-0.047 -0.752,-0.141c-0.214,-0.095 -0.377,-0.23 -0.488,-0.405c-0.112,-0.175 -0.167,-0.367 -0.167,-0.577c-0.001,-0.239 0.069,-0.439 0.21,-0.602c0.14,-0.163 0.338,-0.276 0.593,-0.34l0.085,0.31c-0.201,0.056 -0.347,0.136 -0.439,0.241c-0.091,0.105 -0.137,0.237 -0.137,0.397c0,0.183 0.051,0.336 0.153,0.459c0.102,0.123 0.238,0.209 0.41,0.259c0.171,0.05 0.348,0.074 0.53,0.074c0.234,-0 0.439,-0.03 0.614,-0.089c0.175,-0.059 0.306,-0.151 0.393,-0.276c0.086,-0.125 0.129,-0.26 0.129,-0.405c-0,-0.176 -0.059,-0.326 -0.177,-0.448c-0.118,-0.123 -0.294,-0.205 -0.526,-0.249Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="@android:color/black"
|
||||
android:pathData="M28.811,27.895l-2.434,0.002l0,0.786l-0.325,-0l-0.002,-1.889l0.326,-0l0,0.788l2.434,-0.002l0.001,0.315Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="@android:color/black"
|
||||
android:pathData="M27.982,26.833l-0.341,-0l-0.001,-0.899l0.341,-0l0.001,0.899Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M28.808,24.589l0,0.292l-2.159,0.002c0.078,0.07 0.156,0.163 0.234,0.277c0.077,0.114 0.136,0.217 0.175,0.308l-0.328,0c-0.089,-0.163 -0.197,-0.306 -0.324,-0.429c-0.127,-0.122 -0.25,-0.209 -0.369,-0.259l-0,-0.189l2.771,-0.002Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="@android:color/black"
|
||||
android:pathData="M27.446,23.84c-0.326,0.001 -0.589,-0.028 -0.788,-0.086c-0.199,-0.058 -0.352,-0.144 -0.46,-0.258c-0.108,-0.114 -0.162,-0.258 -0.163,-0.431c0,-0.128 0.03,-0.241 0.09,-0.337c0.059,-0.097 0.145,-0.176 0.257,-0.239c0.113,-0.063 0.249,-0.113 0.411,-0.149c0.161,-0.035 0.378,-0.054 0.652,-0.054c0.324,-0 0.585,0.028 0.784,0.086c0.199,0.057 0.353,0.143 0.461,0.257c0.109,0.114 0.163,0.259 0.164,0.433c-0,0.23 -0.095,0.41 -0.286,0.542c-0.23,0.157 -0.604,0.236 -1.122,0.236ZM27.446,23.54c0.453,-0.001 0.754,-0.047 0.904,-0.139c0.15,-0.091 0.225,-0.204 0.225,-0.339c-0,-0.134 -0.075,-0.247 -0.226,-0.338c-0.151,-0.092 -0.452,-0.137 -0.904,-0.137c-0.454,0 -0.756,0.046 -0.905,0.138c-0.15,0.092 -0.224,0.206 -0.224,0.343c0,0.134 0.066,0.241 0.198,0.321c0.168,0.101 0.479,0.151 0.932,0.151Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="@android:color/black"
|
||||
android:pathData="M27.445,21.989c-0.327,0 -0.589,-0.029 -0.788,-0.087c-0.199,-0.057 -0.353,-0.143 -0.461,-0.258c-0.108,-0.114 -0.162,-0.258 -0.162,-0.431c-0,-0.128 0.029,-0.24 0.089,-0.337c0.059,-0.096 0.145,-0.176 0.258,-0.239c0.112,-0.063 0.249,-0.112 0.41,-0.148c0.161,-0.036 0.379,-0.054 0.652,-0.054c0.324,-0.001 0.585,0.028 0.784,0.085c0.199,0.057 0.353,0.143 0.462,0.257c0.108,0.115 0.163,0.259 0.163,0.433c0,0.23 -0.095,0.411 -0.286,0.542c-0.229,0.157 -0.603,0.236 -1.121,0.237ZM27.444,21.688c0.453,-0 0.755,-0.046 0.905,-0.138c0.15,-0.092 0.225,-0.205 0.224,-0.339c0,-0.135 -0.075,-0.248 -0.226,-0.339c-0.15,-0.091 -0.452,-0.137 -0.904,-0.137c-0.454,0.001 -0.756,0.047 -0.905,0.139c-0.149,0.091 -0.224,0.205 -0.224,0.342c0,0.134 0.066,0.242 0.198,0.322c0.169,0.1 0.479,0.15 0.932,0.15Z"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:fillColor="@android:color/black"
|
||||
android:pathData="M27.307,19.687c-0.051,0.121 -0.125,0.211 -0.22,0.27c-0.095,0.059 -0.21,0.088 -0.343,0.088c-0.2,0 -0.369,-0.062 -0.506,-0.186c-0.137,-0.125 -0.206,-0.291 -0.206,-0.498c0,-0.208 0.07,-0.375 0.21,-0.502c0.14,-0.127 0.31,-0.191 0.511,-0.191c0.128,0 0.239,0.029 0.334,0.087c0.095,0.058 0.168,0.146 0.219,0.264c0.056,-0.147 0.145,-0.258 0.267,-0.334c0.123,-0.077 0.27,-0.115 0.441,-0.115c0.236,-0.001 0.434,0.071 0.595,0.215c0.161,0.144 0.241,0.334 0.241,0.569c0.001,0.235 -0.08,0.425 -0.241,0.569c-0.161,0.144 -0.362,0.217 -0.603,0.217c-0.18,0 -0.33,-0.039 -0.451,-0.118c-0.121,-0.078 -0.204,-0.19 -0.248,-0.335ZM26.733,19.746c0.13,-0 0.237,-0.037 0.32,-0.109c0.083,-0.073 0.124,-0.167 0.124,-0.283c-0,-0.113 -0.041,-0.205 -0.124,-0.277c-0.082,-0.072 -0.183,-0.108 -0.302,-0.108c-0.124,0 -0.229,0.037 -0.313,0.112c-0.085,0.074 -0.127,0.166 -0.127,0.277c-0,0.111 0.041,0.204 0.124,0.278c0.083,0.073 0.182,0.11 0.298,0.11ZM28.007,19.839c0.097,0 0.191,-0.02 0.281,-0.059c0.09,-0.04 0.16,-0.099 0.21,-0.177c0.049,-0.078 0.074,-0.162 0.074,-0.252c-0,-0.14 -0.052,-0.255 -0.157,-0.346c-0.104,-0.091 -0.236,-0.136 -0.397,-0.136c-0.163,-0 -0.298,0.047 -0.405,0.141c-0.106,0.093 -0.16,0.211 -0.159,0.352c-0,0.137 0.053,0.251 0.158,0.342c0.106,0.09 0.237,0.135 0.395,0.135Z"
|
||||
android:fillType="nonZero"/>
|
||||
</vector>
|
9
app/src/main/res/drawable/ic_sms.xml
Normal file
9
app/src/main/res/drawable/ic_sms.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M20,2L4,2c-1.1,0 -1.99,0.9 -1.99,2L2,22l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM9,11L7,11L7,9h2v2zM13,11h-2L11,9h2v2zM17,11h-2L15,9h2v2z"/>
|
||||
</vector>
|
18
app/src/main/res/drawable/ic_target_activity.xml
Normal file
18
app/src/main/res/drawable/ic_target_activity.xml
Normal file
|
@ -0,0 +1,18 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M18.253,15.869c1.19,0 2.158,-1.02 2.158,-2.274c0,-1.254 -0.968,-2.275 -2.158,-2.275c-1.19,0 -2.158,1.02 -2.158,2.275C16.095,14.849 17.063,15.869 18.253,15.869zM18.253,12.018c0.824,0 1.496,0.707 1.496,1.576c0,0.869 -0.671,1.576 -1.496,1.576s-1.496,-0.707 -1.496,-1.576C16.757,12.725 17.429,12.018 18.253,12.018z"
|
||||
android:fillColor="@color/exercise"/>
|
||||
<path
|
||||
android:pathData="M21.442,18.522c-0.03,-0.043 -0.745,-1.039 -1.801,-1.039c-0.785,0 -1.295,0.514 -1.746,0.969c-0.399,0.402 -0.744,0.75 -1.226,0.75h-0.001c-0.393,0 -0.714,-0.242 -1.034,-0.538l1.665,-1.325l-4.553,-6.356l-4.394,3.496c-0.259,0.242 -0.627,0.87 -0.164,1.515c0.214,0.298 0.463,0.387 0.635,0.41c0.409,0.053 0.738,-0.217 0.765,-0.24l2.759,-2.195l0.676,0.943l-3.964,3.153c-0.371,-0.351 -0.791,-0.637 -1.305,-0.637H7.753c-0.788,0 -1.457,0.64 -2.048,1.205c-0.352,0.337 -0.752,0.72 -0.973,0.72c-0.428,0 -0.982,-0.647 -1.142,-0.874c-0.109,-0.154 -0.316,-0.186 -0.464,-0.071c-0.147,0.115 -0.178,0.333 -0.069,0.488c0.083,0.119 0.837,1.155 1.674,1.155c0.477,0 0.913,-0.417 1.418,-0.9c0.502,-0.48 1.071,-1.024 1.603,-1.024h0c0.469,0 0.879,0.45 1.313,0.927c0.482,0.529 0.981,1.077 1.659,1.077c0.647,0 1.193,-0.472 1.722,-0.929c0.494,-0.427 1.005,-0.868 1.542,-0.868c0.321,0.001 0.622,0.293 0.97,0.631c0.453,0.439 0.965,0.936 1.71,0.936h0.001c0.748,0 1.245,-0.501 1.684,-0.943c0.413,-0.416 0.769,-0.776 1.287,-0.776c0.719,0 1.264,0.751 1.269,0.759c0.11,0.155 0.317,0.184 0.464,0.07C21.52,18.894 21.551,18.677 21.442,18.522zM12.027,18.661c-0.459,0.396 -0.892,0.771 -1.301,0.771c-0.395,-0.001 -0.777,-0.42 -1.181,-0.862c-0.002,-0.003 -0.005,-0.005 -0.007,-0.008l4.415,-3.512l-1.475,-2.059L9.18,15.614c-0.022,0.019 -0.161,0.12 -0.276,0.096c-0.024,-0.003 -0.097,-0.012 -0.186,-0.136c-0.195,-0.273 0.01,-0.509 0.055,-0.555l3.844,-3.058l3.754,5.241l-1.24,0.986c-0.332,-0.301 -0.69,-0.554 -1.143,-0.554C13.214,17.635 12.584,18.18 12.027,18.661z"
|
||||
android:fillColor="@color/exercise"/>
|
||||
<path
|
||||
android:pathData="M5.453,9.325c-0.003,0 -0.006,0 -0.01,0C5.031,9.317 4.661,8.827 4.43,7.979C4.261,7.361 4.108,6.716 3.96,6.092C3.867,5.701 3.774,5.31 3.677,4.924l-0.064,-0.26C3.394,3.77 3.168,2.847 2.577,2.743C2.509,2.731 2.463,2.665 2.475,2.595c0.012,-0.07 0.077,-0.114 0.146,-0.104c0.752,0.133 0.999,1.138 1.237,2.11l0.064,0.259c0.097,0.388 0.19,0.78 0.283,1.172c0.147,0.622 0.3,1.264 0.468,1.878C4.864,8.61 5.168,9.064 5.448,9.069c0.001,0 0.003,0 0.005,0c0.263,0 0.537,-0.394 0.753,-1.083C6.317,7.63 6.413,7.247 6.505,6.877l0.074,-0.293C6.66,6.262 6.737,5.935 6.815,5.609C6.973,4.94 7.137,4.248 7.336,3.608c0.221,-0.71 0.551,-1.103 0.928,-1.106c0.002,0 0.003,0 0.005,0c0.379,0 0.717,0.39 0.951,1.1c0.165,0.5 0.305,1.039 0.439,1.56l0.105,0.403c0.087,0.332 0.171,0.668 0.255,1.004c0.143,0.574 0.29,1.169 0.456,1.729c0.136,0.462 0.367,0.757 0.603,0.769c0.211,0.026 0.432,-0.218 0.6,-0.625c0.161,-0.391 0.309,-0.847 0.451,-1.393c0.198,-0.76 0.385,-1.53 0.572,-2.3c0.086,-0.355 0.173,-0.711 0.26,-1.065c0.167,-0.676 0.481,-1.066 0.961,-1.191c0.066,-0.017 0.136,0.024 0.154,0.092c0.017,0.068 -0.023,0.138 -0.091,0.156c-0.387,0.101 -0.634,0.421 -0.779,1.005c-0.087,0.354 -0.174,0.709 -0.26,1.064c-0.188,0.771 -0.375,1.543 -0.573,2.304c-0.145,0.557 -0.297,1.024 -0.462,1.426c-0.289,0.703 -0.651,0.793 -0.846,0.782c-0.35,-0.018 -0.661,-0.374 -0.832,-0.951c-0.167,-0.565 -0.315,-1.163 -0.459,-1.74c-0.083,-0.335 -0.166,-0.67 -0.253,-1.001L9.415,5.226C9.282,4.709 9.143,4.174 8.981,3.682c-0.192,-0.58 -0.458,-0.926 -0.712,-0.926c-0.001,0 -0.001,0 -0.002,0c-0.252,0.002 -0.51,0.349 -0.69,0.928C7.38,4.316 7.217,5.004 7.06,5.668C6.982,5.996 6.905,6.324 6.823,6.647L6.75,6.939C6.656,7.314 6.56,7.701 6.446,8.063C6.121,9.103 5.728,9.325 5.453,9.325z"
|
||||
android:fillColor="@color/inrange"/>
|
||||
<path
|
||||
android:pathData="M13.949,6.338h-2.831c-0.232,0 -0.421,-0.193 -0.421,-0.431V4.19H5.856l0,1.717c0,0.238 -0.188,0.431 -0.42,0.431h-2.84c-0.232,0 -0.42,-0.193 -0.42,-0.431c0,-0.238 0.188,-0.431 0.42,-0.431h2.42l0,-1.717c0,-0.238 0.188,-0.431 0.42,-0.431h5.682c0.232,0 0.421,0.193 0.421,0.431v1.717h2.411c0.232,0 0.421,0.193 0.421,0.431C14.37,6.145 14.181,6.338 13.949,6.338z"
|
||||
android:fillColor="@color/tempTargetConfirmation"/>
|
||||
</vector>
|
15
app/src/main/res/drawable/ic_target_cancel.xml
Normal file
15
app/src/main/res/drawable/ic_target_cancel.xml
Normal file
|
@ -0,0 +1,15 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M16.954,15.325l3.851,-3.85c0.314,-0.314 0.314,-0.821 0.001,-1.134c-0.315,-0.315 -0.82,-0.314 -1.134,-0.001l-3.851,3.851l-3.851,-3.851c-0.315,-0.313 -0.821,-0.314 -1.134,0.001c-0.313,0.313 -0.313,0.82 0.001,1.134l3.851,3.85l-3.851,3.851c-0.314,0.313 -0.314,0.82 -0.001,1.133c0.157,0.156 0.362,0.235 0.567,0.235s0.41,-0.078 0.567,-0.235l3.851,-3.85l3.851,3.85c0.157,0.156 0.362,0.235 0.567,0.235c0.205,0 0.411,-0.078 0.567,-0.235c0.313,-0.313 0.313,-0.82 -0.001,-1.133L16.954,15.325z"
|
||||
android:fillColor="@color/tempTargetConfirmation"/>
|
||||
<path
|
||||
android:pathData="M5.453,9.325c-0.003,0 -0.006,0 -0.01,0C5.031,9.317 4.661,8.827 4.43,7.979C4.261,7.361 4.108,6.716 3.96,6.092C3.867,5.701 3.774,5.31 3.677,4.924l-0.064,-0.26C3.394,3.77 3.168,2.847 2.577,2.743C2.509,2.731 2.463,2.665 2.475,2.595c0.012,-0.07 0.077,-0.114 0.146,-0.104c0.752,0.133 0.999,1.138 1.237,2.11l0.064,0.259c0.097,0.388 0.19,0.78 0.283,1.172c0.147,0.622 0.3,1.264 0.468,1.878C4.864,8.61 5.168,9.064 5.448,9.069c0.001,0 0.003,0 0.005,0c0.263,0 0.537,-0.394 0.753,-1.083C6.317,7.63 6.413,7.247 6.505,6.877l0.074,-0.293C6.66,6.262 6.737,5.935 6.815,5.609C6.973,4.94 7.137,4.248 7.336,3.608c0.221,-0.71 0.551,-1.103 0.928,-1.106c0.002,0 0.003,0 0.005,0c0.379,0 0.717,0.39 0.951,1.1c0.165,0.5 0.305,1.039 0.439,1.56l0.105,0.403c0.087,0.332 0.171,0.668 0.255,1.004c0.143,0.574 0.29,1.169 0.456,1.729c0.136,0.462 0.367,0.757 0.603,0.769c0.211,0.026 0.432,-0.218 0.6,-0.625c0.161,-0.391 0.309,-0.847 0.451,-1.393c0.198,-0.76 0.385,-1.53 0.572,-2.3c0.086,-0.355 0.173,-0.711 0.26,-1.065c0.167,-0.676 0.481,-1.066 0.961,-1.191c0.066,-0.017 0.136,0.024 0.154,0.092c0.017,0.068 -0.023,0.138 -0.091,0.156c-0.387,0.101 -0.634,0.421 -0.779,1.005c-0.087,0.354 -0.174,0.709 -0.26,1.064c-0.188,0.771 -0.375,1.543 -0.573,2.304c-0.145,0.557 -0.297,1.024 -0.462,1.426c-0.289,0.703 -0.651,0.793 -0.846,0.782c-0.35,-0.018 -0.661,-0.374 -0.832,-0.951c-0.167,-0.565 -0.315,-1.163 -0.459,-1.74c-0.083,-0.335 -0.166,-0.67 -0.253,-1.001L9.415,5.226C9.282,4.709 9.143,4.174 8.981,3.682c-0.192,-0.58 -0.458,-0.926 -0.712,-0.926c-0.001,0 -0.001,0 -0.002,0c-0.252,0.002 -0.51,0.349 -0.69,0.928C7.38,4.316 7.217,5.004 7.06,5.668C6.982,5.996 6.905,6.324 6.823,6.647L6.75,6.939C6.656,7.314 6.56,7.701 6.446,8.063C6.121,9.103 5.728,9.325 5.453,9.325z"
|
||||
android:fillColor="@color/inrange"/>
|
||||
<path
|
||||
android:pathData="M13.949,6.338H2.595c-0.232,0 -0.42,-0.193 -0.42,-0.431c0,-0.238 0.188,-0.431 0.42,-0.431h11.354c0.232,0 0.421,0.193 0.421,0.431C14.37,6.145 14.181,6.338 13.949,6.338z"
|
||||
android:fillColor="@color/tempTargetConfirmation"/>
|
||||
</vector>
|
21
app/src/main/res/drawable/ic_target_eatingsoon.xml
Normal file
21
app/src/main/res/drawable/ic_target_eatingsoon.xml
Normal file
|
@ -0,0 +1,21 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M21.107,18.396h-0.515c-0.23,-3.231 -2.587,-5.897 -5.66,-6.605c-0.089,-0.819 -0.777,-1.462 -1.62,-1.462c-0.843,0 -1.531,0.642 -1.62,1.462c-3.073,0.708 -5.429,3.374 -5.66,6.605H5.518c-0.221,0 -0.4,0.179 -0.4,0.4c0,0.221 0.179,0.4 0.4,0.4h15.59c0.221,0 0.4,-0.179 0.4,-0.4C21.507,18.575 21.328,18.396 21.107,18.396zM13.313,10.943c0.461,0 0.836,0.311 0.964,0.73c-0.317,-0.043 -0.637,-0.072 -0.964,-0.072c-0.327,0 -0.648,0.03 -0.965,0.072C12.477,11.254 12.852,10.943 13.313,10.943zM13.313,12.401c3.391,0 6.212,2.654 6.479,5.995H6.834C7.101,15.056 9.922,12.401 13.313,12.401z"
|
||||
android:fillColor="@color/carbs"/>
|
||||
<path
|
||||
android:pathData="M15.428,13.489c-0.588,-0.271 -1.415,-0.457 -2.268,-0.509c-0.221,-0.014 -0.411,0.154 -0.424,0.375c-0.014,0.221 0.154,0.411 0.375,0.424c0.746,0.046 1.487,0.209 1.981,0.437c0.047,0.021 0.095,0.033 0.143,0.036c0.16,0.01 0.317,-0.078 0.388,-0.232C15.717,13.82 15.629,13.582 15.428,13.489z"
|
||||
android:fillColor="@color/carbs"/>
|
||||
<path
|
||||
android:pathData="M8.051,17.801c-0.029,0.001 -0.061,-0.003 -0.095,-0.011c-0.188,-0.047 -0.304,-0.239 -0.257,-0.427c0.43,-1.726 1.665,-3.196 3.304,-3.933c0.043,-0.019 0.088,-0.029 0.135,-0.031c0.143,-0.004 0.273,0.078 0.331,0.208c0.039,0.086 0.042,0.182 0.008,0.271c-0.034,0.088 -0.099,0.158 -0.185,0.196c-1.444,0.649 -2.531,1.942 -2.909,3.458C8.346,17.687 8.209,17.797 8.051,17.801z"
|
||||
android:fillColor="@color/carbs"/>
|
||||
<path
|
||||
android:pathData="M5.453,9.325c-0.003,0 -0.006,0 -0.01,0C5.031,9.317 4.661,8.827 4.43,7.979C4.261,7.361 4.108,6.716 3.96,6.092C3.867,5.701 3.774,5.31 3.677,4.924l-0.064,-0.26C3.394,3.77 3.168,2.847 2.577,2.743C2.509,2.731 2.463,2.665 2.475,2.595c0.012,-0.07 0.077,-0.114 0.146,-0.104c0.752,0.133 0.999,1.138 1.237,2.11l0.064,0.259c0.097,0.388 0.19,0.78 0.283,1.172c0.147,0.622 0.3,1.264 0.468,1.878C4.864,8.61 5.168,9.064 5.448,9.069c0.001,0 0.003,0 0.005,0c0.263,0 0.537,-0.394 0.753,-1.083C6.317,7.63 6.413,7.247 6.505,6.877l0.074,-0.293C6.66,6.262 6.737,5.935 6.815,5.609C6.973,4.94 7.137,4.248 7.336,3.608c0.221,-0.71 0.551,-1.103 0.928,-1.106c0.002,0 0.003,0 0.005,0c0.379,0 0.717,0.39 0.951,1.1c0.165,0.5 0.305,1.039 0.439,1.56l0.105,0.403c0.087,0.332 0.171,0.668 0.255,1.004c0.143,0.574 0.29,1.169 0.456,1.729c0.136,0.462 0.367,0.757 0.603,0.769c0.211,0.026 0.432,-0.218 0.6,-0.625c0.161,-0.391 0.309,-0.847 0.451,-1.393c0.198,-0.76 0.385,-1.53 0.572,-2.3c0.086,-0.355 0.173,-0.711 0.26,-1.065c0.167,-0.676 0.481,-1.066 0.961,-1.191c0.066,-0.017 0.136,0.024 0.154,0.092c0.017,0.068 -0.023,0.138 -0.091,0.156c-0.387,0.101 -0.634,0.421 -0.779,1.005c-0.087,0.354 -0.174,0.709 -0.26,1.064c-0.188,0.771 -0.375,1.543 -0.573,2.304c-0.145,0.557 -0.297,1.024 -0.462,1.426c-0.289,0.703 -0.651,0.793 -0.846,0.782c-0.35,-0.018 -0.661,-0.374 -0.832,-0.951c-0.167,-0.565 -0.315,-1.163 -0.459,-1.74c-0.083,-0.335 -0.166,-0.67 -0.253,-1.001L9.415,5.226C9.282,4.709 9.143,4.174 8.981,3.682c-0.192,-0.58 -0.458,-0.926 -0.712,-0.926c-0.001,0 -0.001,0 -0.002,0c-0.252,0.002 -0.51,0.349 -0.69,0.928C7.38,4.316 7.217,5.004 7.06,5.668C6.982,5.996 6.905,6.324 6.823,6.647L6.75,6.939C6.656,7.314 6.56,7.701 6.446,8.063C6.121,9.103 5.728,9.325 5.453,9.325z"
|
||||
android:fillColor="@color/inrange"/>
|
||||
<path
|
||||
android:pathData="M11.122,8.486H5.436c-0.232,0 -0.42,-0.193 -0.42,-0.431l0,-1.717h-2.42c-0.232,0 -0.42,-0.193 -0.42,-0.431c0,-0.238 0.188,-0.431 0.42,-0.431h2.84c0.232,0 0.42,0.193 0.42,0.431l0,1.717h4.845V5.907c0,-0.238 0.188,-0.431 0.421,-0.431h2.827c0.232,0 0.421,0.193 0.421,0.431c0,0.238 -0.188,0.431 -0.421,0.431h-2.407v1.717C11.542,8.293 11.354,8.486 11.122,8.486z"
|
||||
android:fillColor="@color/tempTargetConfirmation"/>
|
||||
</vector>
|
21
app/src/main/res/drawable/ic_target_hypo.xml
Normal file
21
app/src/main/res/drawable/ic_target_hypo.xml
Normal file
|
@ -0,0 +1,21 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M8.822,17.137c-0.016,-0.28 0.022,-0.543 0.363,-0.583c0.313,-0.037 0.426,0.189 0.462,0.448c0.135,0.983 0.67,1.563 1.668,1.692c0.292,0.038 0.514,0.167 0.459,0.498c-0.051,0.305 -0.324,0.337 -0.568,0.336C10.03,19.526 8.835,18.321 8.822,17.137z"
|
||||
android:fillColor="@color/low"/>
|
||||
<path
|
||||
android:pathData="M15.21,16.109c-0.631,-2.484 -3.383,-6.32 -3.773,-6.32s-3.151,3.845 -3.779,6.324c-0.42,1.658 0.111,3.081 1.577,4.049c1.43,0.944 2.973,0.929 4.402,-0.013C15.106,19.18 15.634,17.779 15.21,16.109zM13.255,19.568c-0.603,0.397 -1.221,0.599 -1.835,0.599c-0.607,0 -1.213,-0.197 -1.802,-0.586c-1.206,-0.796 -1.639,-1.906 -1.287,-3.298c0.489,-1.929 2.895,-5.336 3.105,-5.336s2.609,3.403 3.1,5.333C14.889,17.668 14.458,18.774 13.255,19.568z"
|
||||
android:fillColor="@color/low"/>
|
||||
<path
|
||||
android:pathData="M19.522,16.771v-6.712h-1.423v6.712h-2.135l2.846,3.82l2.846,-3.82H19.522z"
|
||||
android:fillColor="@color/low"/>
|
||||
<path
|
||||
android:pathData="M5.453,9.325c-0.003,0 -0.006,0 -0.01,0C5.031,9.317 4.661,8.827 4.43,7.979C4.261,7.361 4.108,6.716 3.96,6.092C3.867,5.701 3.774,5.31 3.677,4.924l-0.064,-0.26C3.394,3.77 3.168,2.847 2.577,2.743C2.509,2.731 2.463,2.665 2.475,2.595c0.012,-0.07 0.077,-0.114 0.146,-0.104c0.752,0.133 0.999,1.138 1.237,2.11l0.064,0.259c0.097,0.388 0.19,0.78 0.283,1.172c0.147,0.622 0.3,1.264 0.468,1.878C4.864,8.61 5.168,9.064 5.448,9.069c0.001,0 0.003,0 0.005,0c0.263,0 0.537,-0.394 0.753,-1.083C6.317,7.63 6.413,7.247 6.505,6.877l0.074,-0.293C6.66,6.262 6.737,5.935 6.815,5.609C6.973,4.94 7.137,4.248 7.336,3.608c0.221,-0.71 0.551,-1.103 0.928,-1.106c0.002,0 0.003,0 0.005,0c0.379,0 0.717,0.39 0.951,1.1c0.165,0.5 0.305,1.039 0.439,1.56l0.105,0.403c0.087,0.332 0.171,0.668 0.255,1.004c0.143,0.574 0.29,1.169 0.456,1.729c0.136,0.462 0.367,0.757 0.603,0.769c0.211,0.026 0.432,-0.218 0.6,-0.625c0.161,-0.391 0.309,-0.847 0.451,-1.393c0.198,-0.76 0.385,-1.53 0.572,-2.3c0.086,-0.355 0.173,-0.711 0.26,-1.065c0.167,-0.676 0.481,-1.066 0.961,-1.191c0.066,-0.017 0.136,0.024 0.154,0.092c0.017,0.068 -0.023,0.138 -0.091,0.156c-0.387,0.101 -0.634,0.421 -0.779,1.005c-0.087,0.354 -0.174,0.709 -0.26,1.064c-0.188,0.771 -0.375,1.543 -0.573,2.304c-0.145,0.557 -0.297,1.024 -0.462,1.426c-0.289,0.703 -0.651,0.793 -0.846,0.782c-0.35,-0.018 -0.661,-0.374 -0.832,-0.951c-0.167,-0.565 -0.315,-1.163 -0.459,-1.74c-0.083,-0.335 -0.166,-0.67 -0.253,-1.001L9.415,5.226C9.282,4.709 9.143,4.174 8.981,3.682c-0.192,-0.58 -0.458,-0.926 -0.712,-0.926c-0.001,0 -0.001,0 -0.002,0c-0.252,0.002 -0.51,0.349 -0.69,0.928C7.38,4.316 7.217,5.004 7.06,5.668C6.982,5.996 6.905,6.324 6.823,6.647L6.75,6.939C6.656,7.314 6.56,7.701 6.446,8.063C6.121,9.103 5.728,9.325 5.453,9.325z"
|
||||
android:fillColor="@color/inrange"/>
|
||||
<path
|
||||
android:pathData="M13.949,6.338h-2.831c-0.232,0 -0.421,-0.193 -0.421,-0.431V4.19H5.856l0,1.717c0,0.238 -0.188,0.431 -0.42,0.431h-2.84c-0.232,0 -0.42,-0.193 -0.42,-0.431c0,-0.238 0.188,-0.431 0.42,-0.431h2.42l0,-1.717c0,-0.238 0.188,-0.431 0.42,-0.431h5.682c0.232,0 0.421,0.193 0.421,0.431v1.717h2.411c0.232,0 0.421,0.193 0.421,0.431C14.37,6.145 14.181,6.338 13.949,6.338z"
|
||||
android:fillColor="@color/tempTargetConfirmation"/>
|
||||
</vector>
|
15
app/src/main/res/drawable/ic_target_manual.xml
Normal file
15
app/src/main/res/drawable/ic_target_manual.xml
Normal file
|
@ -0,0 +1,15 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="48dp"
|
||||
android:height="48dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M16.438,8.901L9.729,15.61c-0.054,0.054 -0.09,0.122 -0.103,0.196L8.825,20.15c-0.022,0.121 0.016,0.245 0.103,0.332s0.211,0.126 0.332,0.103l4.343,-0.801c0.074,-0.014 0.143,-0.05 0.196,-0.103l6.709,-6.709c0.391,-0.391 0.39,-1.029 -0.002,-1.421l-2.648,-2.648C17.467,8.511 16.829,8.51 16.438,8.901zM12.907,18.755c0.085,0.085 0.116,0.211 0.08,0.326c-0.016,0.051 -0.044,0.096 -0.08,0.132c-0.046,0.046 -0.106,0.078 -0.173,0.09l-2.164,0.382c-0.215,-0.007 -0.428,-0.091 -0.592,-0.255c-0.164,-0.164 -0.248,-0.377 -0.255,-0.591l0.382,-2.164c0.021,-0.119 0.107,-0.216 0.222,-0.253c0.115,-0.036 0.241,-0.005 0.326,0.08L12.907,18.755zM19.949,12.025c0.124,0.124 0.124,0.324 0,0.447l-5.929,5.929c-0.124,0.124 -0.324,0.124 -0.447,0l-0.233,-0.233c-0.124,-0.124 -0.124,-0.324 0,-0.447l5.929,-5.929c0.124,-0.124 0.324,-0.124 0.447,0L19.949,12.025zM18.793,10.85c0.124,0.124 0.124,0.324 0,0.447l-5.929,5.929c-0.124,0.124 -0.324,0.124 -0.447,0l-0.233,-0.233c-0.124,-0.124 -0.124,-0.324 0,-0.447l5.929,-5.929c0.124,-0.124 0.324,-0.124 0.447,0L18.793,10.85zM17.637,9.675c0.124,0.124 0.124,0.324 0,0.447l-5.929,5.929c-0.124,0.124 -0.324,0.124 -0.447,0l-0.233,-0.233c-0.124,-0.124 -0.124,-0.324 0,-0.447l5.929,-5.929c0.124,-0.124 0.324,-0.124 0.447,0L17.637,9.675z"
|
||||
android:fillColor="@color/tempTargetConfirmation"/>
|
||||
<path
|
||||
android:pathData="M5.453,9.325c-0.003,0 -0.006,0 -0.01,0C5.031,9.317 4.661,8.827 4.43,7.979C4.261,7.361 4.108,6.716 3.96,6.092C3.867,5.701 3.774,5.31 3.677,4.924l-0.064,-0.26C3.394,3.77 3.168,2.847 2.577,2.743C2.509,2.731 2.463,2.665 2.475,2.595c0.012,-0.07 0.077,-0.114 0.146,-0.104c0.752,0.133 0.999,1.138 1.237,2.11l0.064,0.259c0.097,0.388 0.19,0.78 0.283,1.172c0.147,0.622 0.3,1.264 0.468,1.878C4.864,8.61 5.168,9.064 5.448,9.069c0.001,0 0.003,0 0.005,0c0.263,0 0.537,-0.394 0.753,-1.083C6.317,7.63 6.413,7.247 6.505,6.877l0.074,-0.293C6.66,6.262 6.737,5.935 6.815,5.609C6.973,4.94 7.137,4.248 7.336,3.608c0.221,-0.71 0.551,-1.103 0.928,-1.106c0.002,0 0.003,0 0.005,0c0.379,0 0.717,0.39 0.951,1.1c0.165,0.5 0.305,1.039 0.439,1.56l0.105,0.403c0.087,0.332 0.171,0.668 0.255,1.004c0.143,0.574 0.29,1.169 0.456,1.729c0.136,0.462 0.367,0.757 0.603,0.769c0.211,0.026 0.432,-0.218 0.6,-0.625c0.161,-0.391 0.309,-0.847 0.451,-1.393c0.198,-0.76 0.385,-1.53 0.572,-2.3c0.086,-0.355 0.173,-0.711 0.26,-1.065c0.167,-0.676 0.481,-1.066 0.961,-1.191c0.066,-0.017 0.136,0.024 0.154,0.092c0.017,0.068 -0.023,0.138 -0.091,0.156c-0.387,0.101 -0.634,0.421 -0.779,1.005c-0.087,0.354 -0.174,0.709 -0.26,1.064c-0.188,0.771 -0.375,1.543 -0.573,2.304c-0.145,0.557 -0.297,1.024 -0.462,1.426c-0.289,0.703 -0.651,0.793 -0.846,0.782c-0.35,-0.018 -0.661,-0.374 -0.832,-0.951c-0.167,-0.565 -0.315,-1.163 -0.459,-1.74c-0.083,-0.335 -0.166,-0.67 -0.253,-1.001L9.415,5.226C9.282,4.709 9.143,4.174 8.981,3.682c-0.192,-0.58 -0.458,-0.926 -0.712,-0.926c-0.001,0 -0.001,0 -0.002,0c-0.252,0.002 -0.51,0.349 -0.69,0.928C7.38,4.316 7.217,5.004 7.06,5.668C6.982,5.996 6.905,6.324 6.823,6.647L6.75,6.939C6.656,7.314 6.56,7.701 6.446,8.063C6.121,9.103 5.728,9.325 5.453,9.325z"
|
||||
android:fillColor="@color/inrange"/>
|
||||
<path
|
||||
android:pathData="M13.949,6.338h-2.831c-0.232,0 -0.421,-0.193 -0.421,-0.431V4.19H5.856l0,1.717c0,0.238 -0.188,0.431 -0.42,0.431h-2.84c-0.232,0 -0.42,-0.193 -0.42,-0.431c0,-0.238 0.188,-0.431 0.42,-0.431h2.42l0,-1.717c0,-0.238 0.188,-0.431 0.42,-0.431h5.682c0.232,0 0.421,0.193 0.421,0.431v1.717h2.411c0.232,0 0.421,0.193 0.421,0.431C14.37,6.145 14.181,6.338 13.949,6.338z"
|
||||
android:fillColor="@color/tempTargetConfirmation"/>
|
||||
</vector>
|
30
app/src/main/res/drawable/ic_treatments.xml
Normal file
30
app/src/main/res/drawable/ic_treatments.xml
Normal file
|
@ -0,0 +1,30 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="64dp"
|
||||
android:height="64dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M15.781,51.823l0,-37.292c0,-2.609 2.118,-4.727 4.727,-4.727l23.484,-0c2.609,-0 4.727,2.118 4.727,4.727l0,37.292c0,2.609 -2.118,4.727 -4.727,4.727l-23.484,-0c-2.609,-0 -4.727,-2.118 -4.727,-4.727ZM32.25,43.601l0.246,-0c6.347,-0 11.5,-5.152 11.5,-11.5c0,-6.347 -5.153,-11.5 -11.5,-11.5c-0.041,-0 -0.082,0.001 -0.123,0.001c-0.041,-0 -0.082,-0.001 -0.123,-0.001c-6.347,-0 -11.5,5.153 -11.5,11.5c0,6.348 5.153,11.5 11.5,11.5Z"
|
||||
android:fillColor="@android:color/white"/>
|
||||
<path
|
||||
android:pathData="M41.141,34.705l0,-5.207l-17.291,-0l0,5.207l17.291,-0Z"
|
||||
android:fillColor="@android:color/white"/>
|
||||
<path
|
||||
android:pathData="M29.894,40.747l5.207,-0.001l-0.002,-17.291l-5.207,0.001l0.002,17.291Z"
|
||||
android:fillColor="@android:color/white"/>
|
||||
<path
|
||||
android:pathData="M52.196,25.072l-0,-1.617l-3.037,0l0,1.617l3.037,0Z"
|
||||
android:fillColor="@android:color/white"/>
|
||||
<path
|
||||
android:pathData="M52.196,40.746l-0,-1.617l-3.037,0l0,1.617l3.037,0Z"
|
||||
android:fillColor="@android:color/white"/>
|
||||
<path
|
||||
android:pathData="M54.099,24.651c0,0.66 -1.612,1.852 -1.71,1.196c-0.116,-0.774 -1.047,-1.157 -1.711,-1.196c-0.941,-0.054 0.767,-1.195 1.711,-1.195c0.944,-0 1.71,0.536 1.71,1.195Z"
|
||||
android:fillColor="@android:color/white"/>
|
||||
<path
|
||||
android:pathData="M54.099,39.129l0,-14.056l-1.904,-0l0,14.056l1.904,-0Z"
|
||||
android:fillColor="@android:color/white"/>
|
||||
<path
|
||||
android:pathData="M54.099,39.484c0,0.697 -0.766,1.263 -1.71,1.263c-0.944,0 -2.611,-1.051 -1.711,-1.263c0.524,-0.124 1.639,-0.308 1.711,-1.263c0.051,-0.696 1.71,0.566 1.71,1.263Z"
|
||||
android:fillColor="@android:color/white"/>
|
||||
</vector>
|
17
app/src/main/res/drawable/ic_virtual_pump.xml
Normal file
17
app/src/main/res/drawable/ic_virtual_pump.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="64dp"
|
||||
android:height="64dp"
|
||||
android:viewportWidth="64"
|
||||
android:viewportHeight="64">
|
||||
<path
|
||||
android:pathData="M41,53.0926C41,57.6742 33.0897,61.4847 23.2273,61.657C13.3648,61.8319 4.8549,58.3075 4.1102,53.7391C3.3654,49.1734 10.635,45.0953 20.4399,44.5785C30.2476,44.0592 39.3051,47.2761 40.7891,51.8047L41,53.0926ZM33.599,33.571C33.599,39.0032 29.1004,43.5239 23.4929,43.7279C17.8826,43.9346 13.0472,39.7531 12.6228,34.3394C12.1984,28.9231 16.3328,24.0871 21.9075,23.4723C27.4849,22.8575 32.6352,26.6733 33.4785,32.042L33.599,33.571Z"
|
||||
android:fillColor="#ffffff"
|
||||
android:fillType="nonZero"/>
|
||||
<path
|
||||
android:pathData="M59.9421,12.9495C59.9421,7.0918 54.161,2.3354 47.0401,2.3354C39.9191,2.3354 34.138,7.0918 34.138,12.9495C34.138,15.849 35.5788,18.6213 38.1273,20.6243L34.138,28.8708L41.8559,22.6694C43.4901,23.259 45.2556,23.5637 47.0401,23.5637C54.161,23.5637 59.9421,18.8073 59.9421,12.9495Z"
|
||||
android:fillColor="#ffffff"
|
||||
android:fillAlpha="0.96"/>
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M39.0941,17.8588L39.0949,13.9134C39.0949,13.752 39.226,13.621 39.3873,13.6211L39.7008,13.6211C39.8546,13.6212 39.9806,13.74 39.9925,13.8905C40.0238,13.8875 40.0559,13.8859 40.0879,13.8859L41.0815,13.8861L41.0825,8.7741C41.0827,7.7211 41.8725,6.8662 42.8454,6.8664L53.1736,6.8685C54.1464,6.8687 54.9359,7.7238 54.9357,8.7769L54.9343,15.9526C54.9341,17.0056 54.1442,17.8605 53.1714,17.8603L42.8432,17.8582C42.7769,17.8582 42.7112,17.8542 42.6465,17.8466C42.5964,17.8542 42.5452,17.8582 42.4934,17.8582L40.0871,17.8577C40.0551,17.8577 40.0237,17.8564 39.9927,17.8534L39.9927,17.859C39.9927,18.0204 39.8613,18.1513 39.6999,18.1513L39.3864,18.1512C39.2251,18.1512 39.0941,18.0202 39.0941,17.8588ZM43.7517,9.1657L43.7507,14.2169L52.2649,14.2186L52.2659,9.1674L43.7517,9.1657ZM50.8092,15.1565L50.8088,16.7322L52.2646,15.9448L50.8092,15.1565ZM48.5703,15.9622C48.5703,15.956 48.5703,15.95 48.5703,15.9441C48.5704,15.4702 48.222,15.0857 47.7927,15.0856C47.363,15.0855 47.0145,15.4699 47.0144,15.9438L47.0144,15.9791C47.0143,16.4332 47.3627,16.8022 47.7923,16.8022C48.2217,16.8023 48.5702,16.4335 48.5703,15.9794C48.5703,15.9734 48.5703,15.9678 48.5703,15.9622ZM45.2062,15.1554L43.7504,15.9431L45.2059,16.7311L45.2062,15.1554Z"/>
|
||||
</vector>
|
9
app/src/main/res/drawable/ic_watch.xml
Normal file
9
app/src/main/res/drawable/ic_watch.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M20,12c0,-2.54 -1.19,-4.81 -3.04,-6.27L16,0H8l-0.95,5.73C5.19,7.19 4,9.45 4,12s1.19,4.81 3.05,6.27L8,24h8l0.96,-5.73C18.81,16.81 20,14.54 20,12zM6,12c0,-3.31 2.69,-6 6,-6s6,2.69 6,6 -2.69,6 -6,6 -6,-2.69 -6,-6z"/>
|
||||
</vector>
|
10
app/src/main/res/drawable/open_humans_white.xml
Normal file
10
app/src/main/res/drawable/open_humans_white.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector android:height="36dp" android:viewportHeight="120"
|
||||
android:viewportWidth="120" android:width="36dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="m59.75,62.316c5.179,-2.256 8.801,-7.417 8.801,-13.427 0,-8.086 -6.555,-14.641 -14.641,-14.641 -8.086,0 -14.641,6.555 -14.641,14.641 0,6.01 3.622,11.171 8.801,13.427 -7.849,1.589 -14.555,6.318 -18.76,12.817 5.968,6.896 14.774,11.272 24.589,11.272 9.821,0 18.633,-4.382 24.601,-11.286 -4.205,-6.491 -10.907,-11.215 -18.75,-12.803z"/>
|
||||
<path android:fillColor="@android:color/white" android:pathData="M21.689,33.33 L10.002,21.643c-5.155,7 -8.677,15.271 -10.002,24.25l16.523,0c0.968,-4.535 2.741,-8.776 5.166,-12.563z"/>
|
||||
<path android:fillColor="@android:color/white" android:pathData="m91.275,45.893l16.523,0C106.473,36.909 102.947,28.634 97.787,21.631L86.101,33.317c2.429,3.79 4.205,8.035 5.174,12.576z"/>
|
||||
<path android:fillColor="@android:color/white" android:pathData="M86.305,10.106C79.304,4.91 71.02,1.351 62.022,0l0,15.422l13.059,5.908z"/>
|
||||
<path android:fillColor="@android:color/white" android:pathData="M45.754,15.339L45.754,0.003c-8.995,1.354 -17.276,4.915 -24.274,10.113l10.963,10.963z"/>
|
||||
<path android:fillColor="@android:color/white" android:pathData="m26.558,80.554c-4.881,-5.002 -8.405,-11.333 -9.971,-18.394l-16.546,0c4.001,26.128 26.629,46.206 53.858,46.206 27.229,0 49.857,-20.077 53.858,-46.206l-16.546,0c-1.564,7.053 -5.082,13.378 -9.955,18.378 -6.946,7.127 -16.643,11.56 -27.357,11.56 -10.706,0 -20.396,-4.427 -27.341,-11.544z"/>
|
||||
</vector>
|
|
@ -50,9 +50,11 @@
|
|||
android:id="@+id/main_navigation_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
app:itemBackground="?selectableItemBackground"
|
||||
app:itemTextColor="#FFFFFF"
|
||||
android:layout_gravity="start" />
|
||||
app:itemBackground="?attr/selectableItemBackground"
|
||||
android:fitsSystemWindows="true"
|
||||
android:layout_gravity="start"
|
||||
app:itemIconTint="@android:color/white"
|
||||
app:itemTextColor="@android:color/white"/>
|
||||
</androidx.drawerlayout.widget.DrawerLayout>
|
||||
|
||||
</LinearLayout>
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue