Merge remote-tracking branch 'Nightscout/dev' into Autotune/TuneWeekDaysClean
This commit is contained in:
commit
efeeb8a467
108 changed files with 745 additions and 317 deletions
|
@ -0,0 +1,3 @@
|
||||||
|
package info.nightscout.rx.events
|
||||||
|
|
||||||
|
class EventUpdateOverviewCalcProgress(val from: String) : Event()
|
|
@ -0,0 +1,3 @@
|
||||||
|
package info.nightscout.rx.events
|
||||||
|
|
||||||
|
class EventUpdateOverviewGraph(val from: String) : Event()
|
|
@ -0,0 +1,3 @@
|
||||||
|
package info.nightscout.rx.events
|
||||||
|
|
||||||
|
class EventUpdateOverviewIobCob(val from: String) : Event()
|
|
@ -0,0 +1,3 @@
|
||||||
|
package info.nightscout.rx.events
|
||||||
|
|
||||||
|
class EventUpdateOverviewSensitivity(val from: String) : Event()
|
|
@ -6,5 +6,4 @@ import dagger.Module
|
||||||
includes = [
|
includes = [
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
open class SharedModule {
|
open class SharedModule
|
||||||
}
|
|
|
@ -221,6 +221,7 @@ dependencies {
|
||||||
implementation project(':pump:omnipod-common')
|
implementation project(':pump:omnipod-common')
|
||||||
implementation project(':pump:omnipod-eros')
|
implementation project(':pump:omnipod-eros')
|
||||||
implementation project(':pump:omnipod-dash')
|
implementation project(':pump:omnipod-dash')
|
||||||
|
implementation project(':workflow')
|
||||||
|
|
||||||
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||||
|
|
||||||
|
|
|
@ -14,21 +14,21 @@ import dagger.android.HasAndroidInjector
|
||||||
import dagger.android.support.DaggerAppCompatActivity
|
import dagger.android.support.DaggerAppCompatActivity
|
||||||
import info.nightscout.androidaps.R
|
import info.nightscout.androidaps.R
|
||||||
import info.nightscout.androidaps.databinding.ActivityHistorybrowseBinding
|
import info.nightscout.androidaps.databinding.ActivityHistorybrowseBinding
|
||||||
|
import info.nightscout.core.events.EventIobCalculationProgress
|
||||||
import info.nightscout.core.utils.fabric.FabricPrivacy
|
import info.nightscout.core.utils.fabric.FabricPrivacy
|
||||||
import info.nightscout.core.workflow.CalculationWorkflow
|
import info.nightscout.core.workflow.CalculationWorkflow
|
||||||
import info.nightscout.interfaces.Config
|
import info.nightscout.interfaces.Config
|
||||||
|
import info.nightscout.interfaces.overview.OverviewMenus
|
||||||
import info.nightscout.interfaces.plugin.ActivePlugin
|
import info.nightscout.interfaces.plugin.ActivePlugin
|
||||||
import info.nightscout.interfaces.profile.DefaultValueHelper
|
import info.nightscout.interfaces.profile.DefaultValueHelper
|
||||||
import info.nightscout.plugins.general.overview.OverviewMenus
|
|
||||||
import info.nightscout.plugins.general.overview.events.EventUpdateOverviewGraph
|
|
||||||
import info.nightscout.plugins.general.overview.graphData.GraphData
|
import info.nightscout.plugins.general.overview.graphData.GraphData
|
||||||
import info.nightscout.plugins.iob.iobCobCalculator.events.EventIobCalculationProgress
|
|
||||||
import info.nightscout.rx.AapsSchedulers
|
import info.nightscout.rx.AapsSchedulers
|
||||||
import info.nightscout.rx.bus.RxBus
|
import info.nightscout.rx.bus.RxBus
|
||||||
import info.nightscout.rx.events.EventAutosensCalculationFinished
|
import info.nightscout.rx.events.EventAutosensCalculationFinished
|
||||||
import info.nightscout.rx.events.EventCustomCalculationFinished
|
import info.nightscout.rx.events.EventCustomCalculationFinished
|
||||||
import info.nightscout.rx.events.EventRefreshOverview
|
import info.nightscout.rx.events.EventRefreshOverview
|
||||||
import info.nightscout.rx.events.EventScale
|
import info.nightscout.rx.events.EventScale
|
||||||
|
import info.nightscout.rx.events.EventUpdateOverviewGraph
|
||||||
import info.nightscout.rx.logging.AAPSLogger
|
import info.nightscout.rx.logging.AAPSLogger
|
||||||
import info.nightscout.rx.logging.LTag
|
import info.nightscout.rx.logging.LTag
|
||||||
import info.nightscout.shared.extensions.toVisibility
|
import info.nightscout.shared.extensions.toVisibility
|
||||||
|
|
|
@ -35,6 +35,7 @@ import info.nightscout.rx.di.RxModule
|
||||||
import info.nightscout.shared.di.SharedModule
|
import info.nightscout.shared.di.SharedModule
|
||||||
import info.nightscout.shared.impl.di.SharedImplModule
|
import info.nightscout.shared.impl.di.SharedImplModule
|
||||||
import info.nightscout.ui.di.UiModule
|
import info.nightscout.ui.di.UiModule
|
||||||
|
import info.nightscout.workflow.di.WorkflowModule
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
package info.nightscout.androidaps.utils
|
|
||||||
|
|
|
@ -19,8 +19,6 @@ import info.nightscout.core.workflow.CalculationWorkflow.Companion.MAIN_CALCULAT
|
||||||
import info.nightscout.interfaces.iob.IobCobCalculator
|
import info.nightscout.interfaces.iob.IobCobCalculator
|
||||||
import info.nightscout.interfaces.plugin.ActivePlugin
|
import info.nightscout.interfaces.plugin.ActivePlugin
|
||||||
import info.nightscout.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
|
import info.nightscout.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
|
||||||
import info.nightscout.plugins.iob.iobCobCalculator.IobCobOref1Worker
|
|
||||||
import info.nightscout.plugins.iob.iobCobCalculator.IobCobOrefWorker
|
|
||||||
import info.nightscout.rx.AapsSchedulers
|
import info.nightscout.rx.AapsSchedulers
|
||||||
import info.nightscout.rx.bus.RxBus
|
import info.nightscout.rx.bus.RxBus
|
||||||
import info.nightscout.rx.events.Event
|
import info.nightscout.rx.events.Event
|
||||||
|
@ -33,6 +31,20 @@ import info.nightscout.rx.logging.AAPSLogger
|
||||||
import info.nightscout.rx.logging.LTag
|
import info.nightscout.rx.logging.LTag
|
||||||
import info.nightscout.shared.interfaces.ResourceHelper
|
import info.nightscout.shared.interfaces.ResourceHelper
|
||||||
import info.nightscout.shared.utils.DateUtil
|
import info.nightscout.shared.utils.DateUtil
|
||||||
|
import info.nightscout.workflow.DummyWorker
|
||||||
|
import info.nightscout.workflow.InvokeLoopWorker
|
||||||
|
import info.nightscout.workflow.LoadBgDataWorker
|
||||||
|
import info.nightscout.workflow.PrepareBasalDataWorker
|
||||||
|
import info.nightscout.workflow.PrepareBgDataWorker
|
||||||
|
import info.nightscout.workflow.PrepareBucketedDataWorker
|
||||||
|
import info.nightscout.workflow.PrepareIobAutosensGraphDataWorker
|
||||||
|
import info.nightscout.workflow.PreparePredictionsWorker
|
||||||
|
import info.nightscout.workflow.PrepareTemporaryTargetDataWorker
|
||||||
|
import info.nightscout.workflow.PrepareTreatmentsDataWorker
|
||||||
|
import info.nightscout.workflow.UpdateGraphWorker
|
||||||
|
import info.nightscout.workflow.UpdateIobCobSensWorker
|
||||||
|
import info.nightscout.workflow.iob.IobCobOref1Worker
|
||||||
|
import info.nightscout.workflow.iob.IobCobOrefWorker
|
||||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||||
import io.reactivex.rxjava3.kotlin.plusAssign
|
import io.reactivex.rxjava3.kotlin.plusAssign
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
|
@ -28,7 +28,7 @@ buildscript {
|
||||||
tink_version = '1.7.0'
|
tink_version = '1.7.0'
|
||||||
json_version = '20220320'
|
json_version = '20220320'
|
||||||
serialization_version = '1.4.1'
|
serialization_version = '1.4.1'
|
||||||
joda_version = '2.12.1'
|
joda_version = '2.12.1.1'
|
||||||
swipe_version = '1.1.0'
|
swipe_version = '1.1.0'
|
||||||
|
|
||||||
junit_version = '4.13.2'
|
junit_version = '4.13.2'
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package info.nightscout.plugins.iob.iobCobCalculator.events
|
package info.nightscout.core.events
|
||||||
|
|
||||||
import info.nightscout.core.workflow.CalculationWorkflow
|
import info.nightscout.core.workflow.CalculationWorkflow
|
||||||
import info.nightscout.rx.events.Event
|
import info.nightscout.rx.events.Event
|
|
@ -6,15 +6,26 @@
|
||||||
<string name="application_protection">Защита приложения</string>
|
<string name="application_protection">Защита приложения</string>
|
||||||
<string name="bolus_protection">Защита болюсов</string>
|
<string name="bolus_protection">Защита болюсов</string>
|
||||||
<string name="settings_password">Пароль параметров</string>
|
<string name="settings_password">Пароль параметров</string>
|
||||||
|
<string name="settings_pin">ПИН-код настроек</string>
|
||||||
<string name="application_password">Пароль приложения</string>
|
<string name="application_password">Пароль приложения</string>
|
||||||
|
<string name="application_pin">PIN-код приложения</string>
|
||||||
<string name="bolus_password">Пароль болюсов</string>
|
<string name="bolus_password">Пароль болюсов</string>
|
||||||
|
<string name="bolus_pin">Пин-код болюса</string>
|
||||||
|
<string name="protection_timeout_title">Тайм-аут удержания пароля и пин-кода [s]</string>
|
||||||
|
<string name="protection_timeout_summary">Время до ввода пароля или PIN-кода</string>
|
||||||
<string name="biometric">Биометрия</string>
|
<string name="biometric">Биометрия</string>
|
||||||
<string name="custom_password">Настраиваемый пароль</string>
|
<string name="custom_password">Настраиваемый пароль</string>
|
||||||
|
<string name="custom_pin">Настраиваемый пин-код</string>
|
||||||
<string name="noprotection">Без защиты</string>
|
<string name="noprotection">Без защиты</string>
|
||||||
<string name="unsecure_fallback_biometric">Небезопасный резервный вход</string>
|
<string name="unsecure_fallback_biometric">Небезопасный резервный вход</string>
|
||||||
<string name="unsecure_fallback_descriotion_biometric">Биометрической защите требуется главный пароль для безопасности.\n\n Установите главный пароль!</string>
|
<string name="unsecure_fallback_descriotion_biometric">Биометрической защите требуется главный пароль для безопасности.\n\n Установите главный пароль!</string>
|
||||||
<string name="password_set">Пароль задан!</string>
|
<string name="password_set">Пароль задан!</string>
|
||||||
|
<string name="pin_set">PIN-код установлен!</string>
|
||||||
<string name="password_not_set">Пароль не задан</string>
|
<string name="password_not_set">Пароль не задан</string>
|
||||||
|
<string name="pin_not_set">PIN-код не задан</string>
|
||||||
<string name="password_not_changed">Пароль не был изменён</string>
|
<string name="password_not_changed">Пароль не был изменён</string>
|
||||||
|
<string name="pin_not_changed">PIN-код не изменён</string>
|
||||||
|
<string name="pin_cleared">PIN-код очищен!</string>
|
||||||
<string name="password_hint">Введите пароль здесь</string>
|
<string name="password_hint">Введите пароль здесь</string>
|
||||||
|
<string name="pin_hint">Введите PIN-код здесь</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -97,9 +97,7 @@ public class GraphView extends View {
|
||||||
lastDown = 0;
|
lastDown = 0;
|
||||||
}
|
}
|
||||||
} else if (event.getAction() == MotionEvent.ACTION_UP) {
|
} else if (event.getAction() == MotionEvent.ACTION_UP) {
|
||||||
if (System.currentTimeMillis() - lastDown < 400) {
|
return System.currentTimeMillis() - lastDown < 400;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ public interface LabelFormatter {
|
||||||
* false if it is a value for the y axis
|
* false if it is a value for the y axis
|
||||||
* @return the formatted number as string
|
* @return the formatted number as string
|
||||||
*/
|
*/
|
||||||
public String formatLabel(double value, boolean isValueX);
|
String formatLabel(double value, boolean isValueX);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* will be called in order to have a
|
* will be called in order to have a
|
||||||
|
@ -50,5 +50,5 @@ public interface LabelFormatter {
|
||||||
*
|
*
|
||||||
* @param viewport the used viewport
|
* @param viewport the used viewport
|
||||||
*/
|
*/
|
||||||
public void setViewport(Viewport viewport);
|
void setViewport(Viewport viewport);
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,7 +78,7 @@ public class LegendRenderer {
|
||||||
/**
|
/**
|
||||||
* wrapped styles
|
* wrapped styles
|
||||||
*/
|
*/
|
||||||
private Styles mStyles;
|
private final Styles mStyles;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* reference to the graphview
|
* reference to the graphview
|
||||||
|
@ -94,7 +94,7 @@ public class LegendRenderer {
|
||||||
/**
|
/**
|
||||||
* paint for the drawing
|
* paint for the drawing
|
||||||
*/
|
*/
|
||||||
private Paint mPaint;
|
private final Paint mPaint;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cached legend width
|
* cached legend width
|
||||||
|
|
|
@ -53,7 +53,7 @@ public class SecondScale {
|
||||||
* For the current version this is always
|
* For the current version this is always
|
||||||
* true.
|
* true.
|
||||||
*/
|
*/
|
||||||
private boolean mYAxisBoundsManual = true;
|
private final boolean mYAxisBoundsManual = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* min y value for the y axis bounds
|
* min y value for the y axis bounds
|
||||||
|
|
|
@ -37,5 +37,5 @@ public interface ValueDependentColor<T extends DataPointInterface> {
|
||||||
* @return the color that the bar should be drawn with
|
* @return the color that the bar should be drawn with
|
||||||
* Generate the int via the android.graphics.Color class.
|
* Generate the int via the android.graphics.Color class.
|
||||||
*/
|
*/
|
||||||
public int get(T data);
|
int get(T data);
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ public class BarGraphSeries<E extends DataPointInterface> extends BaseSeries<E>
|
||||||
/**
|
/**
|
||||||
* paint to do drawing on canvas
|
* paint to do drawing on canvas
|
||||||
*/
|
*/
|
||||||
private Paint mPaint;
|
private final Paint mPaint;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* spacing between the bars in percentage.
|
* spacing between the bars in percentage.
|
||||||
|
@ -83,7 +83,7 @@ public class BarGraphSeries<E extends DataPointInterface> extends BaseSeries<E>
|
||||||
* stores the coordinates of the bars to
|
* stores the coordinates of the bars to
|
||||||
* trigger tap on series events.
|
* trigger tap on series events.
|
||||||
*/
|
*/
|
||||||
private Map<RectF, E> mDataPoints = new HashMap<RectF, E>();
|
private final Map<RectF, E> mDataPoints = new HashMap<RectF, E>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* creates bar series without any data
|
* creates bar series without any data
|
||||||
|
|
|
@ -25,6 +25,7 @@ import android.util.Log;
|
||||||
import com.jjoe64.graphview.GraphView;
|
import com.jjoe64.graphview.GraphView;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -61,7 +62,7 @@ public abstract class BaseSeries<E extends DataPointInterface> implements Series
|
||||||
*
|
*
|
||||||
* will be filled while drawing via {@link #registerDataPoint(float, float, DataPointInterface)}
|
* will be filled while drawing via {@link #registerDataPoint(float, float, DataPointInterface)}
|
||||||
*/
|
*/
|
||||||
private Map<PointF, E> mDataPoints = new HashMap<PointF, E>();
|
private final Map<PointF, E> mDataPoints = new HashMap<PointF, E>();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* title for this series that can be displayed
|
* title for this series that can be displayed
|
||||||
|
@ -84,7 +85,7 @@ public abstract class BaseSeries<E extends DataPointInterface> implements Series
|
||||||
* stores the graphviews where this series is used.
|
* stores the graphviews where this series is used.
|
||||||
* Can be more than one.
|
* Can be more than one.
|
||||||
*/
|
*/
|
||||||
private List<GraphView> mGraphViews;
|
private final List<GraphView> mGraphViews;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* creates series without data
|
* creates series without data
|
||||||
|
@ -101,9 +102,7 @@ public abstract class BaseSeries<E extends DataPointInterface> implements Series
|
||||||
*/
|
*/
|
||||||
public BaseSeries(E[] data) {
|
public BaseSeries(E[] data) {
|
||||||
mGraphViews = new ArrayList<GraphView>();
|
mGraphViews = new ArrayList<GraphView>();
|
||||||
for (E d : data) {
|
Collections.addAll(mData, data);
|
||||||
mData.add(d);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -168,7 +167,7 @@ public abstract class BaseSeries<E extends DataPointInterface> implements Series
|
||||||
return mData.iterator();
|
return mData.iterator();
|
||||||
} else {
|
} else {
|
||||||
return new Iterator<E>() {
|
return new Iterator<E>() {
|
||||||
Iterator<E> org = mData.iterator();
|
final Iterator<E> org = mData.iterator();
|
||||||
E nextValue = null;
|
E nextValue = null;
|
||||||
E nextNextValue = null;
|
E nextNextValue = null;
|
||||||
boolean plusOne = true;
|
boolean plusOne = true;
|
||||||
|
@ -350,9 +349,7 @@ public abstract class BaseSeries<E extends DataPointInterface> implements Series
|
||||||
*/
|
*/
|
||||||
public void resetData(E[] data) {
|
public void resetData(E[] data) {
|
||||||
mData.clear();
|
mData.clear();
|
||||||
for (E d : data) {
|
Collections.addAll(mData, data);
|
||||||
mData.add(d);
|
|
||||||
}
|
|
||||||
checkValueOrder(null);
|
checkValueOrder(null);
|
||||||
|
|
||||||
// update graphview
|
// update graphview
|
||||||
|
|
|
@ -33,8 +33,8 @@ import java.util.Date;
|
||||||
public class DataPoint implements DataPointInterface, Serializable {
|
public class DataPoint implements DataPointInterface, Serializable {
|
||||||
private static final long serialVersionUID=1428263322645L;
|
private static final long serialVersionUID=1428263322645L;
|
||||||
|
|
||||||
private double x;
|
private final double x;
|
||||||
private double y;
|
private final double y;
|
||||||
|
|
||||||
public DataPoint(double x, double y) {
|
public DataPoint(double x, double y) {
|
||||||
this.x=x;
|
this.x=x;
|
||||||
|
|
|
@ -32,10 +32,10 @@ public interface DataPointInterface {
|
||||||
/**
|
/**
|
||||||
* @return the x value
|
* @return the x value
|
||||||
*/
|
*/
|
||||||
public double getX();
|
double getX();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the y value
|
* @return the y value
|
||||||
*/
|
*/
|
||||||
public double getY();
|
double getY();
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ public class PointsGraphSeries<E extends DataPointInterface> extends BaseSeries<
|
||||||
* interface to implement a custom
|
* interface to implement a custom
|
||||||
* drawing for the data points.
|
* drawing for the data points.
|
||||||
*/
|
*/
|
||||||
public static interface CustomShape {
|
public interface CustomShape {
|
||||||
/**
|
/**
|
||||||
* called when drawing a single data point.
|
* called when drawing a single data point.
|
||||||
* use the x and y coordinates to render your
|
* use the x and y coordinates to render your
|
||||||
|
@ -201,10 +201,8 @@ public class PointsGraphSeries<E extends DataPointInterface> extends BaseSeries<
|
||||||
double orgY = y;
|
double orgY = y;
|
||||||
|
|
||||||
// overdraw
|
// overdraw
|
||||||
boolean overdraw = false;
|
boolean overdraw = x > graphWidth;
|
||||||
if (x > graphWidth) { // end right
|
// end right
|
||||||
overdraw = true;
|
|
||||||
}
|
|
||||||
if (y < 0) { // end bottom
|
if (y < 0) { // end bottom
|
||||||
overdraw = true;
|
overdraw = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,22 +42,22 @@ public interface Series<E extends DataPointInterface> {
|
||||||
/**
|
/**
|
||||||
* @return the lowest x-value of the data
|
* @return the lowest x-value of the data
|
||||||
*/
|
*/
|
||||||
public double getLowestValueX();
|
double getLowestValueX();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the highest x-value of the data
|
* @return the highest x-value of the data
|
||||||
*/
|
*/
|
||||||
public double getHighestValueX();
|
double getHighestValueX();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the lowest y-value of the data
|
* @return the lowest y-value of the data
|
||||||
*/
|
*/
|
||||||
public double getLowestValueY();
|
double getLowestValueY();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the highest y-value of the data
|
* @return the highest y-value of the data
|
||||||
*/
|
*/
|
||||||
public double getHighestValueY();
|
double getHighestValueY();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get the values for a specific range. It is
|
* get the values for a specific range. It is
|
||||||
|
@ -69,7 +69,7 @@ public interface Series<E extends DataPointInterface> {
|
||||||
* @return all datapoints between the from and until x-value
|
* @return all datapoints between the from and until x-value
|
||||||
* including the from and until data points.
|
* including the from and until data points.
|
||||||
*/
|
*/
|
||||||
public Iterator<E> getValues(double from, double until);
|
Iterator<E> getValues(double from, double until);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plots the series to the viewport.
|
* Plots the series to the viewport.
|
||||||
|
@ -82,25 +82,25 @@ public interface Series<E extends DataPointInterface> {
|
||||||
* @param canvas canvas to draw on
|
* @param canvas canvas to draw on
|
||||||
* @param isSecondScale true if the drawing is for the second scale
|
* @param isSecondScale true if the drawing is for the second scale
|
||||||
*/
|
*/
|
||||||
public void draw(GraphView graphView, Canvas canvas, boolean isSecondScale);
|
void draw(GraphView graphView, Canvas canvas, boolean isSecondScale);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the title of the series. Used in the legend
|
* @return the title of the series. Used in the legend
|
||||||
*/
|
*/
|
||||||
public String getTitle();
|
String getTitle();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the color of the series. Used in the legend and should
|
* @return the color of the series. Used in the legend and should
|
||||||
* be used for the plotted points or lines.
|
* be used for the plotted points or lines.
|
||||||
*/
|
*/
|
||||||
public int getColor();
|
int getColor();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* set a listener for tap on a data point.
|
* set a listener for tap on a data point.
|
||||||
*
|
*
|
||||||
* @param l listener
|
* @param l listener
|
||||||
*/
|
*/
|
||||||
public void setOnDataPointTapListener(OnDataPointTapListener l);
|
void setOnDataPointTapListener(OnDataPointTapListener l);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* called by the tap detector in order to trigger
|
* called by the tap detector in order to trigger
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
package info.nightscout.interfaces.overview
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.widget.ImageButton
|
||||||
|
|
||||||
|
interface OverviewMenus {
|
||||||
|
enum class CharType {
|
||||||
|
PRE,
|
||||||
|
TREAT,
|
||||||
|
BAS,
|
||||||
|
ABS,
|
||||||
|
IOB,
|
||||||
|
COB,
|
||||||
|
DEV,
|
||||||
|
BGI,
|
||||||
|
SEN,
|
||||||
|
ACT,
|
||||||
|
DEVSLOPE
|
||||||
|
}
|
||||||
|
|
||||||
|
val setting: List<Array<Boolean>>
|
||||||
|
fun loadGraphConfig()
|
||||||
|
fun setupChartMenu(context: Context, chartButton: ImageButton)
|
||||||
|
fun enabledTypes(graph: Int): String
|
||||||
|
fun isEnabledIn(type: CharType): Int
|
||||||
|
}
|
|
@ -1,4 +1,3 @@
|
||||||
package info.nightscout.interfaces.source
|
package info.nightscout.interfaces.source
|
||||||
|
|
||||||
interface DoingOwnUploadSource {
|
interface DoingOwnUploadSource
|
||||||
}
|
|
|
@ -29,6 +29,10 @@
|
||||||
<string name="superbolus">Superbolus</string>
|
<string name="superbolus">Superbolus</string>
|
||||||
<string name="pump_paused">Pompe suspendue</string>
|
<string name="pump_paused">Pompe suspendue</string>
|
||||||
<string name="and">Et</string>
|
<string name="and">Et</string>
|
||||||
|
<string name="patient_name_default" comment="This is default patient display name, when user does not provide real one">Patient</string>
|
||||||
|
<string name="result">Résultat</string>
|
||||||
|
<string name="settings">Paramètres</string>
|
||||||
|
<string name="statuslights">Voyants d\'état</string>
|
||||||
<string name="do_ns_upload_title">Remonter les Gly vers NS</string>
|
<string name="do_ns_upload_title">Remonter les Gly vers NS</string>
|
||||||
<string name="configbuilder_insulin">Insuline</string>
|
<string name="configbuilder_insulin">Insuline</string>
|
||||||
<string name="value_unavailable_short">n/d</string>
|
<string name="value_unavailable_short">n/d</string>
|
||||||
|
@ -41,6 +45,7 @@
|
||||||
<string name="mute5min">Muet pendant 5 minutes</string>
|
<string name="mute5min">Muet pendant 5 minutes</string>
|
||||||
<string name="mute">Muet</string>
|
<string name="mute">Muet</string>
|
||||||
<string name="success">Succès</string>
|
<string name="success">Succès</string>
|
||||||
|
<string name="advancedsettings_title">Paramètres Avancés</string>
|
||||||
<!-- Protection-->
|
<!-- Protection-->
|
||||||
<string name="unlock_settings">Déverrouiller les paramètres</string>
|
<string name="unlock_settings">Déverrouiller les paramètres</string>
|
||||||
<!-- Pumps -->
|
<!-- Pumps -->
|
||||||
|
@ -109,6 +114,7 @@
|
||||||
<string name="location_not_found_title">Localisation désactivée</string>
|
<string name="location_not_found_title">Localisation désactivée</string>
|
||||||
<string name="location_not_found_message">Afin que la recherche par Bluetooth puisse marcher sur les nouveaux appareils, la localisation doit être activée. AAPS ne trace pas votre position, sauf lorsque vous activez l\'option Message d\'Urgence.</string>
|
<string name="location_not_found_message">Afin que la recherche par Bluetooth puisse marcher sur les nouveaux appareils, la localisation doit être activée. AAPS ne trace pas votre position, sauf lorsque vous activez l\'option Message d\'Urgence.</string>
|
||||||
<!-- Preferences -->
|
<!-- Preferences -->
|
||||||
|
<string name="nav_plugin_preferences">Préférences du plugin</string>
|
||||||
<!-- SmsCommunicator -->
|
<!-- SmsCommunicator -->
|
||||||
<string name="smscommunicator_missingsmspermission">Autorisation SMS manquante</string>
|
<string name="smscommunicator_missingsmspermission">Autorisation SMS manquante</string>
|
||||||
<plurals name="days">
|
<plurals name="days">
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
<string name="mute5min">Отключить уведомления на 5 минут</string>
|
<string name="mute5min">Отключить уведомления на 5 минут</string>
|
||||||
<string name="mute">Отключить звук</string>
|
<string name="mute">Отключить звук</string>
|
||||||
<string name="success">Успешно</string>
|
<string name="success">Успешно</string>
|
||||||
|
<string name="advancedsettings_title">Дополнительные настройки</string>
|
||||||
<!-- Protection-->
|
<!-- Protection-->
|
||||||
<string name="unlock_settings">Разблокировать настройки</string>
|
<string name="unlock_settings">Разблокировать настройки</string>
|
||||||
<!-- Pumps -->
|
<!-- Pumps -->
|
||||||
|
|
|
@ -24,4 +24,5 @@
|
||||||
<string name="detailed_14_days">Podrobně 14 dní</string>
|
<string name="detailed_14_days">Podrobně 14 dní</string>
|
||||||
<string name="day_tir">Denní TIR</string>
|
<string name="day_tir">Denní TIR</string>
|
||||||
<string name="night_tir">Noční TIR</string>
|
<string name="night_tir">Noční TIR</string>
|
||||||
|
<string name="carbs_short" comment="max 6 characters">Sach</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -24,4 +24,5 @@
|
||||||
<string name="detailed_14_days">Détail de 14 jours</string>
|
<string name="detailed_14_days">Détail de 14 jours</string>
|
||||||
<string name="day_tir">TIR Jour</string>
|
<string name="day_tir">TIR Jour</string>
|
||||||
<string name="night_tir">TIR Nuit</string>
|
<string name="night_tir">TIR Nuit</string>
|
||||||
|
<string name="carbs_short" comment="max 6 characters">Gluc.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -68,7 +68,8 @@ public class InsightPairingActivity extends DaggerAppCompatActivity implements I
|
||||||
@Override
|
@Override
|
||||||
public void onServiceConnected(ComponentName name, IBinder binder) {
|
public void onServiceConnected(ComponentName name, IBinder binder) {
|
||||||
service = ((InsightConnectionService.LocalBinder) binder).getService();
|
service = ((InsightConnectionService.LocalBinder) binder).getService();
|
||||||
if (service.isPaired()) return;
|
if (service.isPaired()) {
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
service.requestConnection(InsightPairingActivity.this);
|
service.requestConnection(InsightPairingActivity.this);
|
||||||
service.registerStateCallback(InsightPairingActivity.this);
|
service.registerStateCallback(InsightPairingActivity.this);
|
||||||
|
|
|
@ -14,8 +14,8 @@
|
||||||
<string name="operating_mode">Mode de fonctionnement</string>
|
<string name="operating_mode">Mode de fonctionnement</string>
|
||||||
<string name="description_pump_insight_local">Intégration des pompes Accu-Chek Insight</string>
|
<string name="description_pump_insight_local">Intégration des pompes Accu-Chek Insight</string>
|
||||||
<string name="not_inserted">Non inséré</string>
|
<string name="not_inserted">Non inséré</string>
|
||||||
<string name="tdd_bolus">DTI Bolus</string>
|
<string name="tdd_bolus">DTQ Bolus</string>
|
||||||
<string name="tdd_basal">DTI Basale</string>
|
<string name="tdd_basal">DTQ Basale</string>
|
||||||
<string name="tbr_formatter">%1$d%% pour %2$d / %3$d min</string>
|
<string name="tbr_formatter">%1$d%% pour %2$d / %3$d min</string>
|
||||||
<string name="multiwave_bolus">Bolus mixte</string>
|
<string name="multiwave_bolus">Bolus mixte</string>
|
||||||
<string name="eb_formatter">%1$.2f / %2$.2f U pour %3$d min</string>
|
<string name="eb_formatter">%1$.2f / %2$.2f U pour %3$d min</string>
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
<string name="short_status_tbr">DBT : %1$d%% pour %2$d / %3$d min</string>
|
<string name="short_status_tbr">DBT : %1$d%% pour %2$d / %3$d min</string>
|
||||||
<string name="short_status_extended">Étendue : %1$.2f / %2$.2f U pour %3$d min</string>
|
<string name="short_status_extended">Étendue : %1$.2f / %2$.2f U pour %3$d min</string>
|
||||||
<string name="short_status_multiwave">Mixte : %1$.2f / %2$.2f U pour %3$d min</string>
|
<string name="short_status_multiwave">Mixte : %1$.2f / %2$.2f U pour %3$d min</string>
|
||||||
<string name="short_status_tdd">DTI : %1$.2f</string>
|
<string name="short_status_tdd">DTQ : %1$.2f</string>
|
||||||
<string name="short_status_reservoir">Réserv.: %1$.2f U</string>
|
<string name="short_status_reservoir">Réserv.: %1$.2f U</string>
|
||||||
<string name="short_status_battery">Batt.: %1$d%%</string>
|
<string name="short_status_battery">Batt.: %1$d%%</string>
|
||||||
<string name="release_software_version">Version du logiciel</string>
|
<string name="release_software_version">Version du logiciel</string>
|
||||||
|
|
|
@ -112,8 +112,22 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
||||||
<string name="maintenance">Maintenance</string>
|
<string name="maintenance">Maintenance</string>
|
||||||
<string name="maintenance_shortname">MAINT</string>
|
<string name="maintenance_shortname">MAINT</string>
|
||||||
<string name="description_maintenance">Fournir différentes fonctions de maintenance (ex : envoyer, supprimer le journal).</string>
|
<string name="description_maintenance">Fournir différentes fonctions de maintenance (ex : envoyer, supprimer le journal).</string>
|
||||||
|
<string name="database_cleanup">Nettoyer la base de données</string>
|
||||||
<string name="cleanup_db_confirm">Voulez-vous nettoyer la base de données ?\nCela supprimera les modifications suivies et les données historiques de plus de 3 mois.</string>
|
<string name="cleanup_db_confirm">Voulez-vous nettoyer la base de données ?\nCela supprimera les modifications suivies et les données historiques de plus de 3 mois.</string>
|
||||||
<string name="cleared_entries">Entrées effacées</string>
|
<string name="cleared_entries">Entrées effacées</string>
|
||||||
|
<string name="reset_db_confirm">Voulez-vous vraiment réinitialiser les bases de données ?</string>
|
||||||
|
<string name="maintenance_settings">Paramètres de maintenance</string>
|
||||||
|
<string name="maintenance_email">Destinataire de l\'email</string>
|
||||||
|
<string name="maintenance_amount">Nombre de journaux à envoyer</string>
|
||||||
|
<string name="send_all_logs">Envoyer les journaux par e-mail</string>
|
||||||
|
<string name="delete_logs">Supprimer les journaux</string>
|
||||||
|
<string name="configbuilder_nightscoutversion_label">Version Nightscout :</string>
|
||||||
|
<string name="engineering_mode_enabled">Mode ingénierie actif</string>
|
||||||
|
<string name="log_files">Fichiers journaux</string>
|
||||||
|
<string name="nav_logsettings">Paramètres journal</string>
|
||||||
|
<string name="miscellaneous">Divers</string>
|
||||||
|
<string name="nav_resetdb">Réinitialiser les Bases de Données</string>
|
||||||
|
<string name="resettodefaults">Rétablir les valeurs par défaut</string>
|
||||||
<!-- Maintenance -->
|
<!-- Maintenance -->
|
||||||
<string name="exported_ago" comment="at placeholder we add pluralized number of hours/minutes">exporté il y a %1$s</string>
|
<string name="exported_ago" comment="at placeholder we add pluralized number of hours/minutes">exporté il y a %1$s</string>
|
||||||
<string name="exported_at" comment="at placeholder we add export date">exporté à %1$s</string>
|
<string name="exported_at" comment="at placeholder we add export date">exporté à %1$s</string>
|
||||||
|
|
|
@ -1,15 +1,22 @@
|
||||||
package info.nightscout.plugins.di
|
package info.nightscout.plugins.di
|
||||||
|
|
||||||
|
import dagger.Binds
|
||||||
import dagger.Module
|
import dagger.Module
|
||||||
import dagger.android.ContributesAndroidInjector
|
import dagger.android.ContributesAndroidInjector
|
||||||
|
import info.nightscout.interfaces.overview.OverviewMenus
|
||||||
import info.nightscout.plugins.general.overview.OverviewFragment
|
import info.nightscout.plugins.general.overview.OverviewFragment
|
||||||
|
import info.nightscout.plugins.general.overview.OverviewMenusImpl
|
||||||
import info.nightscout.plugins.general.overview.activities.QuickWizardListActivity
|
import info.nightscout.plugins.general.overview.activities.QuickWizardListActivity
|
||||||
import info.nightscout.plugins.general.overview.dialogs.EditQuickWizardDialog
|
import info.nightscout.plugins.general.overview.dialogs.EditQuickWizardDialog
|
||||||
import info.nightscout.plugins.general.overview.graphData.GraphData
|
import info.nightscout.plugins.general.overview.graphData.GraphData
|
||||||
import info.nightscout.plugins.general.overview.notifications.DismissNotificationService
|
import info.nightscout.plugins.general.overview.notifications.DismissNotificationService
|
||||||
import info.nightscout.plugins.general.overview.notifications.NotificationWithAction
|
import info.nightscout.plugins.general.overview.notifications.NotificationWithAction
|
||||||
|
|
||||||
@Module
|
@Module(
|
||||||
|
includes = [
|
||||||
|
OverviewModule.Bindings::class
|
||||||
|
]
|
||||||
|
)
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
abstract class OverviewModule {
|
abstract class OverviewModule {
|
||||||
|
|
||||||
|
@ -19,4 +26,10 @@ abstract class OverviewModule {
|
||||||
@ContributesAndroidInjector abstract fun contributesOverviewFragment(): OverviewFragment
|
@ContributesAndroidInjector abstract fun contributesOverviewFragment(): OverviewFragment
|
||||||
@ContributesAndroidInjector abstract fun notificationWithActionInjector(): NotificationWithAction
|
@ContributesAndroidInjector abstract fun notificationWithActionInjector(): NotificationWithAction
|
||||||
@ContributesAndroidInjector abstract fun graphDataInjector(): GraphData
|
@ContributesAndroidInjector abstract fun graphDataInjector(): GraphData
|
||||||
|
|
||||||
|
@Module
|
||||||
|
interface Bindings {
|
||||||
|
|
||||||
|
@Binds fun bindOverviewMenus(overviewMenusImpl: OverviewMenusImpl): OverviewMenus
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -29,7 +29,7 @@ abstract class SourceModule {
|
||||||
@ContributesAndroidInjector abstract fun contributesBGSourceFragment(): BGSourceFragment
|
@ContributesAndroidInjector abstract fun contributesBGSourceFragment(): BGSourceFragment
|
||||||
|
|
||||||
@ContributesAndroidInjector abstract fun contributesNSProfileWorker(): ProfilePlugin.NSProfileWorker
|
@ContributesAndroidInjector abstract fun contributesNSProfileWorker(): ProfilePlugin.NSProfileWorker
|
||||||
@ContributesAndroidInjector abstract fun contributesNSClientSourceWorker(): info.nightscout.plugins.source.NSClientSourcePlugin.NSClientSourceWorker
|
@ContributesAndroidInjector abstract fun contributesNSClientSourceWorker(): NSClientSourcePlugin.NSClientSourceWorker
|
||||||
@ContributesAndroidInjector abstract fun contributesXdripWorker(): XdripPlugin.XdripWorker
|
@ContributesAndroidInjector abstract fun contributesXdripWorker(): XdripPlugin.XdripWorker
|
||||||
@ContributesAndroidInjector abstract fun contributesDexcomWorker(): DexcomPlugin.DexcomWorker
|
@ContributesAndroidInjector abstract fun contributesDexcomWorker(): DexcomPlugin.DexcomWorker
|
||||||
@ContributesAndroidInjector abstract fun contributesMM640gWorker(): MM640gPlugin.MM640gWorker
|
@ContributesAndroidInjector abstract fun contributesMM640gWorker(): MM640gPlugin.MM640gWorker
|
||||||
|
@ -43,6 +43,6 @@ abstract class SourceModule {
|
||||||
|
|
||||||
@Module
|
@Module
|
||||||
interface Bindings {
|
interface Bindings {
|
||||||
@Binds fun bindNSClientSource(nsClientSourcePlugin: info.nightscout.plugins.source.NSClientSourcePlugin): NSClientSource
|
@Binds fun bindNSClientSource(nsClientSourcePlugin: NSClientSourcePlugin): NSClientSource
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -29,9 +29,9 @@ import dagger.android.HasAndroidInjector
|
||||||
import dagger.android.support.DaggerFragment
|
import dagger.android.support.DaggerFragment
|
||||||
import info.nightscout.core.extensions.directionToIcon
|
import info.nightscout.core.extensions.directionToIcon
|
||||||
import info.nightscout.core.extensions.valueToUnitsString
|
import info.nightscout.core.extensions.valueToUnitsString
|
||||||
import info.nightscout.core.iob.iobCobCalculator.GlucoseStatusProvider
|
|
||||||
import info.nightscout.core.graph.OverviewData
|
import info.nightscout.core.graph.OverviewData
|
||||||
import info.nightscout.core.iob.displayText
|
import info.nightscout.core.iob.displayText
|
||||||
|
import info.nightscout.core.iob.iobCobCalculator.GlucoseStatusProvider
|
||||||
import info.nightscout.core.profile.ProfileSealed
|
import info.nightscout.core.profile.ProfileSealed
|
||||||
import info.nightscout.core.ui.UIRunnable
|
import info.nightscout.core.ui.UIRunnable
|
||||||
import info.nightscout.core.ui.dialogs.OKDialog
|
import info.nightscout.core.ui.dialogs.OKDialog
|
||||||
|
@ -56,6 +56,7 @@ import info.nightscout.interfaces.iob.IobCobCalculator
|
||||||
import info.nightscout.interfaces.logging.UserEntryLogger
|
import info.nightscout.interfaces.logging.UserEntryLogger
|
||||||
import info.nightscout.interfaces.nsclient.NSSettingsStatus
|
import info.nightscout.interfaces.nsclient.NSSettingsStatus
|
||||||
import info.nightscout.interfaces.nsclient.ProcessedDeviceStatusData
|
import info.nightscout.interfaces.nsclient.ProcessedDeviceStatusData
|
||||||
|
import info.nightscout.interfaces.overview.OverviewMenus
|
||||||
import info.nightscout.interfaces.plugin.ActivePlugin
|
import info.nightscout.interfaces.plugin.ActivePlugin
|
||||||
import info.nightscout.interfaces.plugin.PluginBase
|
import info.nightscout.interfaces.plugin.PluginBase
|
||||||
import info.nightscout.interfaces.profile.DefaultValueHelper
|
import info.nightscout.interfaces.profile.DefaultValueHelper
|
||||||
|
@ -70,10 +71,6 @@ import info.nightscout.plugins.R
|
||||||
import info.nightscout.plugins.aps.loop.events.EventNewOpenLoopNotification
|
import info.nightscout.plugins.aps.loop.events.EventNewOpenLoopNotification
|
||||||
import info.nightscout.plugins.databinding.OverviewFragmentBinding
|
import info.nightscout.plugins.databinding.OverviewFragmentBinding
|
||||||
import info.nightscout.plugins.general.overview.activities.QuickWizardListActivity
|
import info.nightscout.plugins.general.overview.activities.QuickWizardListActivity
|
||||||
import info.nightscout.plugins.general.overview.events.EventUpdateOverviewCalcProgress
|
|
||||||
import info.nightscout.plugins.general.overview.events.EventUpdateOverviewGraph
|
|
||||||
import info.nightscout.plugins.general.overview.events.EventUpdateOverviewIobCob
|
|
||||||
import info.nightscout.plugins.general.overview.events.EventUpdateOverviewSensitivity
|
|
||||||
import info.nightscout.plugins.general.overview.graphData.GraphData
|
import info.nightscout.plugins.general.overview.graphData.GraphData
|
||||||
import info.nightscout.plugins.general.overview.notifications.NotificationStore
|
import info.nightscout.plugins.general.overview.notifications.NotificationStore
|
||||||
import info.nightscout.plugins.general.overview.notifications.events.EventUpdateOverviewNotification
|
import info.nightscout.plugins.general.overview.notifications.events.EventUpdateOverviewNotification
|
||||||
|
@ -94,6 +91,10 @@ import info.nightscout.rx.events.EventRefreshOverview
|
||||||
import info.nightscout.rx.events.EventScale
|
import info.nightscout.rx.events.EventScale
|
||||||
import info.nightscout.rx.events.EventTempBasalChange
|
import info.nightscout.rx.events.EventTempBasalChange
|
||||||
import info.nightscout.rx.events.EventTempTargetChange
|
import info.nightscout.rx.events.EventTempTargetChange
|
||||||
|
import info.nightscout.rx.events.EventUpdateOverviewCalcProgress
|
||||||
|
import info.nightscout.rx.events.EventUpdateOverviewGraph
|
||||||
|
import info.nightscout.rx.events.EventUpdateOverviewIobCob
|
||||||
|
import info.nightscout.rx.events.EventUpdateOverviewSensitivity
|
||||||
import info.nightscout.rx.logging.AAPSLogger
|
import info.nightscout.rx.logging.AAPSLogger
|
||||||
import info.nightscout.rx.weardata.EventData
|
import info.nightscout.rx.weardata.EventData
|
||||||
import info.nightscout.shared.extensions.runOnUiThread
|
import info.nightscout.shared.extensions.runOnUiThread
|
||||||
|
|
|
@ -14,6 +14,7 @@ import com.google.gson.Gson
|
||||||
import info.nightscout.core.utils.fabric.FabricPrivacy
|
import info.nightscout.core.utils.fabric.FabricPrivacy
|
||||||
import info.nightscout.interfaces.Config
|
import info.nightscout.interfaces.Config
|
||||||
import info.nightscout.interfaces.aps.Loop
|
import info.nightscout.interfaces.aps.Loop
|
||||||
|
import info.nightscout.interfaces.overview.OverviewMenus
|
||||||
import info.nightscout.plugins.R
|
import info.nightscout.plugins.R
|
||||||
import info.nightscout.rx.bus.RxBus
|
import info.nightscout.rx.bus.RxBus
|
||||||
import info.nightscout.rx.events.EventRefreshOverview
|
import info.nightscout.rx.events.EventRefreshOverview
|
||||||
|
@ -25,7 +26,7 @@ import javax.inject.Inject
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
class OverviewMenus @Inject constructor(
|
class OverviewMenusImpl @Inject constructor(
|
||||||
private val aapsLogger: AAPSLogger,
|
private val aapsLogger: AAPSLogger,
|
||||||
private val rh: ResourceHelper,
|
private val rh: ResourceHelper,
|
||||||
private val sp: SP,
|
private val sp: SP,
|
||||||
|
@ -33,9 +34,9 @@ class OverviewMenus @Inject constructor(
|
||||||
private val config: Config,
|
private val config: Config,
|
||||||
private val loop: Loop,
|
private val loop: Loop,
|
||||||
private val fabricPrivacy: FabricPrivacy
|
private val fabricPrivacy: FabricPrivacy
|
||||||
) {
|
) : OverviewMenus {
|
||||||
|
|
||||||
enum class CharType(@StringRes val nameId: Int, @AttrRes val attrId: Int, @AttrRes val attrTextId: Int, val primary: Boolean, val secondary: Boolean, @StringRes val shortnameId: Int) {
|
enum class CharTypeData(@StringRes val nameId: Int, @AttrRes val attrId: Int, @AttrRes val attrTextId: Int, val primary: Boolean, val secondary: Boolean, @StringRes val shortnameId: Int) {
|
||||||
PRE(R.string.overview_show_predictions, R.attr.predictionColor, R.attr.menuTextColor, primary = true, secondary = false, shortnameId = R.string.prediction_shortname),
|
PRE(R.string.overview_show_predictions, R.attr.predictionColor, R.attr.menuTextColor, primary = true, secondary = false, shortnameId = R.string.prediction_shortname),
|
||||||
TREAT(R.string.overview_show_treatments, R.attr.cobColor, R.attr.menuTextColor, primary = true, secondary = false, shortnameId = R.string.treatments_shortname),
|
TREAT(R.string.overview_show_treatments, R.attr.cobColor, R.attr.menuTextColor, primary = true, secondary = false, shortnameId = R.string.treatments_shortname),
|
||||||
BAS(R.string.overview_show_basals, R.attr.basal, R.attr.menuTextColor, primary = true, secondary = false, shortnameId = R.string.basal_shortname),
|
BAS(R.string.overview_show_basals, R.attr.basal, R.attr.menuTextColor, primary = true, secondary = false, shortnameId = R.string.basal_shortname),
|
||||||
|
@ -55,9 +56,9 @@ class OverviewMenus @Inject constructor(
|
||||||
const val SCALE_ID = 1001
|
const val SCALE_ID = 1001
|
||||||
}
|
}
|
||||||
|
|
||||||
fun enabledTypes(graph: Int): String {
|
override fun enabledTypes(graph: Int): String {
|
||||||
val r = StringBuilder()
|
val r = StringBuilder()
|
||||||
for (type in CharType.values()) if (_setting[graph][type.ordinal]) {
|
for (type in CharTypeData.values()) if (_setting[graph][type.ordinal]) {
|
||||||
r.append(rh.gs(type.shortnameId))
|
r.append(rh.gs(type.shortnameId))
|
||||||
r.append(" ")
|
r.append(" ")
|
||||||
}
|
}
|
||||||
|
@ -66,7 +67,7 @@ class OverviewMenus @Inject constructor(
|
||||||
|
|
||||||
private var _setting: MutableList<Array<Boolean>> = ArrayList()
|
private var _setting: MutableList<Array<Boolean>> = ArrayList()
|
||||||
|
|
||||||
val setting: List<Array<Boolean>>
|
override val setting: List<Array<Boolean>>
|
||||||
@Synchronized get() = _setting.toMutableList() // implicitly does a list copy
|
@Synchronized get() = _setting.toMutableList() // implicitly does a list copy
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
|
@ -77,23 +78,23 @@ class OverviewMenus @Inject constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
fun loadGraphConfig() {
|
override fun loadGraphConfig() {
|
||||||
val sts = sp.getString(R.string.key_graph_config, "")
|
val sts = sp.getString(R.string.key_graph_config, "")
|
||||||
if (sts.isNotEmpty()) {
|
if (sts.isNotEmpty()) {
|
||||||
_setting = Gson().fromJson(sts, Array<Array<Boolean>>::class.java).toMutableList()
|
_setting = Gson().fromJson(sts, Array<Array<Boolean>>::class.java).toMutableList()
|
||||||
// reset when new CharType added
|
// reset when new CharType added
|
||||||
for (s in _setting)
|
for (s in _setting)
|
||||||
if (s.size != CharType.values().size) {
|
if (s.size != OverviewMenus.CharType.values().size) {
|
||||||
_setting = ArrayList()
|
_setting = ArrayList()
|
||||||
_setting.add(Array(CharType.values().size) { true })
|
_setting.add(Array(OverviewMenus.CharType.values().size) { true })
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_setting = ArrayList()
|
_setting = ArrayList()
|
||||||
_setting.add(Array(CharType.values().size) { true })
|
_setting.add(Array(OverviewMenus.CharType.values().size) { true })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setupChartMenu(context: Context, chartButton: ImageButton) {
|
override fun setupChartMenu(context: Context, chartButton: ImageButton) {
|
||||||
val settingsCopy = setting
|
val settingsCopy = setting
|
||||||
val numOfGraphs = settingsCopy.size // 1 main + x secondary
|
val numOfGraphs = settingsCopy.size // 1 main + x secondary
|
||||||
|
|
||||||
|
@ -120,12 +121,12 @@ class OverviewMenus @Inject constructor(
|
||||||
dividerItem.isCheckable = true
|
dividerItem.isCheckable = true
|
||||||
dividerItem.isChecked = true
|
dividerItem.isChecked = true
|
||||||
}
|
}
|
||||||
CharType.values().forEach { m ->
|
CharTypeData.values().forEach { m ->
|
||||||
if (g == 0 && !m.primary) return@forEach
|
if (g == 0 && !m.primary) return@forEach
|
||||||
if (g > 0 && !m.secondary) return@forEach
|
if (g > 0 && !m.secondary) return@forEach
|
||||||
var insert = true
|
var insert = true
|
||||||
if (m == CharType.PRE) insert = predictionsAvailable
|
if (m == CharTypeData.PRE) insert = predictionsAvailable
|
||||||
if (m == CharType.DEVSLOPE) insert = config.isDev()
|
if (m == CharTypeData.DEVSLOPE) insert = config.isDev()
|
||||||
if (used.contains(m.ordinal)) insert = false
|
if (used.contains(m.ordinal)) insert = false
|
||||||
for (g2 in g + 1 until numOfGraphs) {
|
for (g2 in g + 1 until numOfGraphs) {
|
||||||
if (settingsCopy[g2][m.ordinal]) insert = false
|
if (settingsCopy[g2][m.ordinal]) insert = false
|
||||||
|
@ -165,7 +166,7 @@ class OverviewMenus @Inject constructor(
|
||||||
|
|
||||||
it.itemId == numOfGraphs -> {
|
it.itemId == numOfGraphs -> {
|
||||||
// add new empty
|
// add new empty
|
||||||
_setting.add(Array(CharType.values().size) { false })
|
_setting.add(Array(CharTypeData.values().size) { false })
|
||||||
}
|
}
|
||||||
|
|
||||||
it.itemId < 100 -> {
|
it.itemId < 100 -> {
|
||||||
|
@ -194,7 +195,7 @@ class OverviewMenus @Inject constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun isEnabledIn(type: CharType): Int {
|
override fun isEnabledIn(type: OverviewMenus.CharType): Int {
|
||||||
val settingsCopy = setting
|
val settingsCopy = setting
|
||||||
val numOfGraphs = settingsCopy.size // 1 main + x secondary
|
val numOfGraphs = settingsCopy.size // 1 main + x secondary
|
||||||
for (g in 0 until numOfGraphs) if (settingsCopy[g][type.ordinal]) return g
|
for (g in 0 until numOfGraphs) if (settingsCopy[g][type.ordinal]) return g
|
|
@ -5,31 +5,32 @@ import androidx.annotation.StringRes
|
||||||
import androidx.preference.PreferenceFragmentCompat
|
import androidx.preference.PreferenceFragmentCompat
|
||||||
import androidx.preference.SwitchPreference
|
import androidx.preference.SwitchPreference
|
||||||
import dagger.android.HasAndroidInjector
|
import dagger.android.HasAndroidInjector
|
||||||
|
import info.nightscout.core.events.EventIobCalculationProgress
|
||||||
|
import info.nightscout.core.events.EventNewNotification
|
||||||
import info.nightscout.core.extensions.putDouble
|
import info.nightscout.core.extensions.putDouble
|
||||||
import info.nightscout.core.extensions.putInt
|
import info.nightscout.core.extensions.putInt
|
||||||
import info.nightscout.core.extensions.putString
|
import info.nightscout.core.extensions.putString
|
||||||
import info.nightscout.core.extensions.storeDouble
|
import info.nightscout.core.extensions.storeDouble
|
||||||
import info.nightscout.core.extensions.storeInt
|
import info.nightscout.core.extensions.storeInt
|
||||||
import info.nightscout.core.extensions.storeString
|
import info.nightscout.core.extensions.storeString
|
||||||
import info.nightscout.core.events.EventNewNotification
|
|
||||||
import info.nightscout.core.graph.OverviewData
|
import info.nightscout.core.graph.OverviewData
|
||||||
import info.nightscout.core.ui.dialogs.OKDialog
|
import info.nightscout.core.ui.dialogs.OKDialog
|
||||||
import info.nightscout.core.utils.fabric.FabricPrivacy
|
import info.nightscout.core.utils.fabric.FabricPrivacy
|
||||||
import info.nightscout.interfaces.Config
|
import info.nightscout.interfaces.Config
|
||||||
import info.nightscout.interfaces.Overview
|
import info.nightscout.interfaces.Overview
|
||||||
|
import info.nightscout.interfaces.overview.OverviewMenus
|
||||||
import info.nightscout.interfaces.plugin.PluginBase
|
import info.nightscout.interfaces.plugin.PluginBase
|
||||||
import info.nightscout.interfaces.plugin.PluginDescription
|
import info.nightscout.interfaces.plugin.PluginDescription
|
||||||
import info.nightscout.interfaces.plugin.PluginType
|
import info.nightscout.interfaces.plugin.PluginType
|
||||||
import info.nightscout.plugins.R
|
import info.nightscout.plugins.R
|
||||||
import info.nightscout.plugins.general.overview.events.EventUpdateOverviewCalcProgress
|
|
||||||
import info.nightscout.plugins.general.overview.notifications.NotificationStore
|
import info.nightscout.plugins.general.overview.notifications.NotificationStore
|
||||||
import info.nightscout.plugins.general.overview.notifications.NotificationWithAction
|
import info.nightscout.plugins.general.overview.notifications.NotificationWithAction
|
||||||
import info.nightscout.plugins.general.overview.notifications.events.EventUpdateOverviewNotification
|
import info.nightscout.plugins.general.overview.notifications.events.EventUpdateOverviewNotification
|
||||||
import info.nightscout.plugins.iob.iobCobCalculator.events.EventIobCalculationProgress
|
|
||||||
import info.nightscout.rx.AapsSchedulers
|
import info.nightscout.rx.AapsSchedulers
|
||||||
import info.nightscout.rx.bus.RxBus
|
import info.nightscout.rx.bus.RxBus
|
||||||
import info.nightscout.rx.events.EventDismissNotification
|
import info.nightscout.rx.events.EventDismissNotification
|
||||||
import info.nightscout.rx.events.EventPumpStatusChanged
|
import info.nightscout.rx.events.EventPumpStatusChanged
|
||||||
|
import info.nightscout.rx.events.EventUpdateOverviewCalcProgress
|
||||||
import info.nightscout.rx.logging.AAPSLogger
|
import info.nightscout.rx.logging.AAPSLogger
|
||||||
import info.nightscout.shared.interfaces.ResourceHelper
|
import info.nightscout.shared.interfaces.ResourceHelper
|
||||||
import info.nightscout.shared.sharedPreferences.SP
|
import info.nightscout.shared.sharedPreferences.SP
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
package info.nightscout.plugins.general.overview.events
|
|
||||||
|
|
||||||
import info.nightscout.rx.events.Event
|
|
||||||
|
|
||||||
class EventUpdateOverviewCalcProgress(val from: String) : Event()
|
|
|
@ -1,5 +0,0 @@
|
||||||
package info.nightscout.plugins.general.overview.events
|
|
||||||
|
|
||||||
import info.nightscout.rx.events.Event
|
|
||||||
|
|
||||||
class EventUpdateOverviewGraph(val from: String) : Event()
|
|
|
@ -1,5 +0,0 @@
|
||||||
package info.nightscout.plugins.general.overview.events
|
|
||||||
|
|
||||||
import info.nightscout.rx.events.Event
|
|
||||||
|
|
||||||
class EventUpdateOverviewIobCob(val from: String) : Event()
|
|
|
@ -1,5 +0,0 @@
|
||||||
package info.nightscout.plugins.general.overview.events
|
|
||||||
|
|
||||||
import info.nightscout.rx.events.Event
|
|
||||||
|
|
||||||
class EventUpdateOverviewSensitivity(val from: String) : Event()
|
|
|
@ -1,7 +1,35 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<!-- SMS Communicator & OTP Authenticator -->
|
<!-- SMS Communicator & OTP Authenticator -->
|
||||||
|
<string name="smscommunicator">SMS коммуникатор</string>
|
||||||
<string name="smscommunicator_shortname">SMS</string>
|
<string name="smscommunicator_shortname">SMS</string>
|
||||||
|
<string name="description_sms_communicator">Выполнить дистанционное управление AAPS при помощи команд SMS.</string>
|
||||||
|
<string name="smscommunicator_code_from_authenticator_for" comment="This is continuation of sentence: To [ACTION] reply with code">из приложения Authenticator для %1$s и дополните пином в конце</string>
|
||||||
|
<string name="smscommunicator_otp_pin">Дополнительный обязательный пин-код в конце маркера</string>
|
||||||
|
<string name="smscommunicator_otp_pin_summary">Дополнительные цифры, которые должны запоминаться и добавляться в конце каждого сгенерированного одноразового пароля</string>
|
||||||
|
<string name="smscommunicator_tab_otp_label">Настройка аутентификации</string>
|
||||||
|
<string name="smscommunicator_code_verify_label">Код для проверки:</string>
|
||||||
|
<string name="smscommunicator_code_verify_hint">OTP + ПИН-код</string>
|
||||||
|
<string name="smscommunicator_code_verify_info">Проверочный код состоит из 6 цифр, отображаемых приложением Authenticator (известным как OTP), за которым следует 3 или более цифр обязательного PIN-кода.</string>
|
||||||
|
<string name="smscommunicator_otp_reset_btn">Сбросить аутентификаторы</string>
|
||||||
|
<string name="smscommunicator_otp_reset_title">Сбросить ключ идентификации</string>
|
||||||
|
<string name="smscommunicator_otp_reset_prompt">Вы действительно хотите сбросить ключ аутентификации? Все сконфигурированные в настоящее время ключи станут недопустимы, и придется их настроить заново.</string>
|
||||||
|
<string name="smscommunicator_otp_reset_successful">Создан новый ключ аутентификации! Для идентификации используйте обновленный QRCode.</string>
|
||||||
|
<string name="smscommunicator_otp_export_title">Экспорт секретного кода OTP</string>
|
||||||
|
<string name="smscommunicator_otp_export_prompt">Вы действительно хотите скопировать пароль OTP в буфер обмена?\n\nЭто может потребоваться только в том случае, если у вашего приложения идентификации проблемы при сканировании QR кода, вы хотите ввести его вручную или настроить аппаратный маркер OTP с помощью специального приложения.</string>
|
||||||
|
<string name="smscommunicator_otp_export_successful">Секретный одноразовый код OTP (в формате Base32) экспортирован и скопирован в буфер обмена. Вставьте его в систему идентификации или аппаратный маркер OTP!</string>
|
||||||
|
<string name="smscommunicator_otp_step1_install_header">1. Установить Аутентификатор</string>
|
||||||
|
<string name="smscommunicator_otp_step2_provisioning_header">2. Сканируйте код для настройки OTP кодов AAPS</string>
|
||||||
|
<string name="smscommunicator_otp_step3_test_header">3. Проверьте одноразовый пароль</string>
|
||||||
|
<string name="smscommunicator_otp_reset_header">Сбросить авторизацию</string>
|
||||||
|
<string name="smscommunicator_otp_install_info">На каждом отслеживающем телефоне установите приложение Authenticator, поддерживающее маркеры TOTP RFC 6238. Популярные бесплатные приложения: \n Authy\n Google Authenticator\n LastPass Authenticator\n FreeOTP Authenticator</string>
|
||||||
|
<string name="smscommunicator_otp_reset_warning">После сброса аутентификатора вы делаете все созданные идентификаторы недействительными. Вам нужно будет снова создать их!</string>
|
||||||
|
<string name="sms_wrong_code">Неверный код. Команда отменена.</string>
|
||||||
|
<string name="sms_timeout_while_waiting">Время ожидания окончания предыдущего соединения с помпой истекло</string>
|
||||||
|
<string name="smscommunicator_allowednumbers">разрешенные телефонные номера</string>
|
||||||
|
<string name="smscommunicator_allowednumbers_summary">+ XXXXXXXXXX; + YYYYYYYYYY</string>
|
||||||
|
<string name="smscommunicator_bolus_reply_with_code">Для подачи болюса %1$.2fед ответьте кодом %2$s</string>
|
||||||
|
<string name="smscommunicator_meal_bolus_reply_with_code">Для подачи болюса %1$.2fед ответьте кодом %2$s</string>
|
||||||
<string name="smscommunicator_temptarget_with_code">Чтобы установить временную цель %1$s ответьте кодом %2$s</string>
|
<string name="smscommunicator_temptarget_with_code">Чтобы установить временную цель %1$s ответьте кодом %2$s</string>
|
||||||
<string name="smscommunicator_temptarget_cancel">Чтобы отменить временную цель ответьте кодом %1$s</string>
|
<string name="smscommunicator_temptarget_cancel">Чтобы отменить временную цель ответьте кодом %1$s</string>
|
||||||
<string name="smscommunicator_stops_ns_with_code">Чтобы отключить службу удаленных SMS-сообщений ответьте кодом %1$s.\n\n Имейте в виду, что вы сможете вновь активировать ее только с основного телефона AAPS.</string>
|
<string name="smscommunicator_stops_ns_with_code">Чтобы отключить службу удаленных SMS-сообщений ответьте кодом %1$s.\n\n Имейте в виду, что вы сможете вновь активировать ее только с основного телефона AAPS.</string>
|
||||||
|
@ -14,6 +42,8 @@
|
||||||
<string name="smscommunicator_bolus_delivered">Болюс %1$.2f ед. подан успешно</string>
|
<string name="smscommunicator_bolus_delivered">Болюс %1$.2f ед. подан успешно</string>
|
||||||
<string name="smscommunicator_meal_bolus_delivered">Болюс на еду %1$.2f ед. подан успешно</string>
|
<string name="smscommunicator_meal_bolus_delivered">Болюс на еду %1$.2f ед. подан успешно</string>
|
||||||
<string name="smscommunicator_meal_bolus_delivered_tt">Цель %1$s на %2$d минут</string>
|
<string name="smscommunicator_meal_bolus_delivered_tt">Цель %1$s на %2$d минут</string>
|
||||||
|
<string name="smscommunicator_tt_set">Цель %1$s на %2$d минут установлена успешно</string>
|
||||||
|
<string name="smscommunicator_tt_canceled">Временная цель успешно отменена</string>
|
||||||
<string name="smscommunicator_remote_commands_allowed">Разрешить команды через смс</string>
|
<string name="smscommunicator_remote_commands_allowed">Разрешить команды через смс</string>
|
||||||
<string name="smscommunicator_loop_has_been_disabled">Зцикл остановлен</string>
|
<string name="smscommunicator_loop_has_been_disabled">Зцикл остановлен</string>
|
||||||
<string name="smscommunicator_loop_has_been_enabled">Зцикл активирован</string>
|
<string name="smscommunicator_loop_has_been_enabled">Зцикл активирован</string>
|
||||||
|
@ -22,6 +52,7 @@
|
||||||
<string name="smscommunicator_pump_connect_fail">Ошибка подключения к помпе</string>
|
<string name="smscommunicator_pump_connect_fail">Ошибка подключения к помпе</string>
|
||||||
<string name="smscommunicator_pump_disconnect_with_code">Для разъединения с помпой на %1$d мин ответьте кодом %2$s</string>
|
<string name="smscommunicator_pump_disconnect_with_code">Для разъединения с помпой на %1$d мин ответьте кодом %2$s</string>
|
||||||
<string name="smscommunicator_pump_disconnected">Связь с помпой отключена</string>
|
<string name="smscommunicator_pump_disconnected">Связь с помпой отключена</string>
|
||||||
|
<string name="smscommunicator_reconnect">Связь с помпой возобновлена</string>
|
||||||
<string name="smscommunicator_remote_command_not_allowed">Удаленная команда не разрешена</string>
|
<string name="smscommunicator_remote_command_not_allowed">Удаленная команда не разрешена</string>
|
||||||
<string name="smscommunicator_remote_bolus_not_allowed">Удаленный болюс недоступен, повторите попытку позже.</string>
|
<string name="smscommunicator_remote_bolus_not_allowed">Удаленный болюс недоступен, повторите попытку позже.</string>
|
||||||
<string name="smscommunicator_basal_reply_with_code">Для начала подачи базала %1$.2f ед./ч на %2$d мин. ответьте кодом %3$s</string>
|
<string name="smscommunicator_basal_reply_with_code">Для начала подачи базала %1$.2f ед./ч на %2$d мин. ответьте кодом %3$s</string>
|
||||||
|
@ -47,24 +78,51 @@
|
||||||
<string name="smscommunicator_tempbasal_cancel_failed">Отмена врем базала не состоялась</string>
|
<string name="smscommunicator_tempbasal_cancel_failed">Отмена врем базала не состоялась</string>
|
||||||
<string name="smscommunicator_extended_cancel_failed">Сбой отмены пролонгированного болюса</string>
|
<string name="smscommunicator_extended_cancel_failed">Сбой отмены пролонгированного болюса</string>
|
||||||
<string name="smscommunicator_unknown_command">Неизвестная команда или неверный ответ</string>
|
<string name="smscommunicator_unknown_command">Неизвестная команда или неверный ответ</string>
|
||||||
|
<string name="smscommunicator_another_bolus_in_queue">В очереди есть еще один болюс. Повторите попытку позже.</string>
|
||||||
<string name="smscommunicator_wrong_duration">Неверное значение длительности</string>
|
<string name="smscommunicator_wrong_duration">Неверное значение длительности</string>
|
||||||
<string name="smscommunicator_loop_suspended">ЗЦикл остановлен</string>
|
<string name="smscommunicator_loop_suspended">ЗЦикл остановлен</string>
|
||||||
<string name="smscommunicator_loop_resumed">ЗЦикл возобновлен</string>
|
<string name="smscommunicator_loop_resumed">ЗЦикл возобновлен</string>
|
||||||
<string name="smscommunicator_invalid_phone_number">Неверный номер телефона для смс</string>
|
<string name="smscommunicator_invalid_phone_number">Неверный номер телефона для смс</string>
|
||||||
|
<string name="smscommunicator_calibration_sent">Калибровка отправлена. В xDrip+ должна быть включена возможность приема.</string>
|
||||||
<string name="smscommunicator_calibration_failed">xDrip + не получает калибровки</string>
|
<string name="smscommunicator_calibration_failed">xDrip + не получает калибровки</string>
|
||||||
<string name="smscommunicator_message_body">Недопустимое тело сообщения</string>
|
<string name="smscommunicator_message_body">Недопустимое тело сообщения</string>
|
||||||
<string name="smscommunicator_report_pump_unreachable_summary">Отправить SMS, если инициируется запись о недоступности помпы</string>
|
<string name="smscommunicator_report_pump_unreachable_summary">Отправить SMS, если инициируется запись о недоступности помпы</string>
|
||||||
<string name="smscommunicator_pump_unreachable">Сообщить о недоступности помпы</string>
|
<string name="smscommunicator_pump_unreachable">Сообщить о недоступности помпы</string>
|
||||||
|
<string name="wrong_format">Неверный формат</string>
|
||||||
|
<string name="sms_actual_bg">ГК:</string>
|
||||||
|
<string name="sms_last_bg">Предыдущая ГК:</string>
|
||||||
|
<string name="sms_delta">дельта:</string>
|
||||||
|
<string name="sms_iob">IOB: активный инсулин</string>
|
||||||
|
<string name="sms_bolus">болюс:</string>
|
||||||
|
<string name="sms_basal">базал: </string>
|
||||||
|
<string name="sms_min_ago">%1$dмин. назад</string>
|
||||||
|
<string name="sms_loop_suspended_for">Остановлен (на %1$d мин)</string>
|
||||||
|
<string name="sms_read_status_failed">Статус чтения: неудача</string>
|
||||||
|
<string name="sms_profile_switch_created">Переключатель профиля создан</string>
|
||||||
|
<string name="sms_wrong_tbr_duration">Длительность временного базала TBR должна быть кратной %1$d минутам и больше 0.</string>
|
||||||
|
<string name="a11y_otp_qr_code">QR код для создания одноразового пароля</string>
|
||||||
<!-- Insulin -->
|
<!-- Insulin -->
|
||||||
<string name="lyumjev">Lyumjev</string>
|
<string name="lyumjev">Lyumjev</string>
|
||||||
|
<string name="description_insulin_rapid">Предустановки для Humalog и Novorapid / Novolog</string>
|
||||||
|
<string name="description_insulin_ultra_rapid">Предустановки для Fiasp</string>
|
||||||
|
<string name="description_insulin_lyumjev">Предустановки для Lyumjev</string>
|
||||||
|
<string name="description_insulin_free_peak">Позволяет самостоятельно задавать пик активности инсулина - только для опытных пользователей</string>
|
||||||
|
<string name="insulin_shortname">ИНС</string>
|
||||||
|
<string name="insulin_oref_peak">Время пика активного инс IOB</string>
|
||||||
|
<string name="insulin_peak_time">Время пика [min]</string>
|
||||||
|
<string name="free_peak_oref">Свободный от пиков Oref</string>
|
||||||
|
<string name="rapid_acting_oref">Быстро действующий Oref</string>
|
||||||
<string name="ultra_rapid_oref">Сверхбыстрый Oref</string>
|
<string name="ultra_rapid_oref">Сверхбыстрый Oref</string>
|
||||||
|
<string name="dia_too_short">Значение времени действия инс %1$f слишком мало - применено %2$f!</string>
|
||||||
<string name="fast_acting_insulin_comment">Новорапид, Хумалог</string>
|
<string name="fast_acting_insulin_comment">Новорапид, Хумалог</string>
|
||||||
<string name="ultra_fast_acting_insulin_comment">Фиасп</string>
|
<string name="ultra_fast_acting_insulin_comment">Фиасп</string>
|
||||||
<!-- xDrip status line -->
|
<!-- xDrip status line -->
|
||||||
<!-- StatusLine -->
|
<!-- StatusLine -->
|
||||||
<string name="xdrip_status">Cтрока состояния xDrip (часы)</string>
|
<string name="xdrip_status">Cтрока состояния xDrip (часы)</string>
|
||||||
<string name="xdrip_status_shortname">Статус xDrip</string>
|
<string name="xdrip_status_shortname">Статус xDrip</string>
|
||||||
|
<string name="description_xdrip_status_line">Показать информацию о работе алгоритма ИПЖ на экране смарт-часов xDrip+.</string>
|
||||||
<string name="xdrip_status_detailed_iob_title">Показать IOB подробно</string>
|
<string name="xdrip_status_detailed_iob_title">Показать IOB подробно</string>
|
||||||
|
<string name="xdrip_status_detailed_iob_summary">Показать разбивку IOB на болюсный и базальный IOB на часах</string>
|
||||||
<string name="disabled_loop">Зцикл не работает</string>
|
<string name="disabled_loop">Зцикл не работает</string>
|
||||||
<string name="xdrip_status_show_bgi_title">Показать BGI</string>
|
<string name="xdrip_status_show_bgi_title">Показать BGI</string>
|
||||||
<string name="xdrip_status_show_bgi_summary">Добавить BGI в строку состояния</string>
|
<string name="xdrip_status_show_bgi_summary">Добавить BGI в строку состояния</string>
|
||||||
|
@ -72,21 +130,51 @@
|
||||||
<!-- Food-->
|
<!-- Food-->
|
||||||
<string name="food_short">Еда</string>
|
<string name="food_short">Еда</string>
|
||||||
<string name="description_food">Показывает заданные в Nightscout настройки для приема пищи</string>
|
<string name="description_food">Показывает заданные в Nightscout настройки для приема пищи</string>
|
||||||
|
<string name="filter">Фильтр</string>
|
||||||
|
<string name="food">Еда</string>
|
||||||
<string name="short_kilo_joul">кДж</string>
|
<string name="short_kilo_joul">кДж</string>
|
||||||
<string name="short_energy">Энергия</string>
|
<string name="short_energy">Энергия</string>
|
||||||
<string name="short_protein">Белки</string>
|
<string name="short_protein">Белки</string>
|
||||||
<string name="short_fat">Жиры</string>
|
<string name="short_fat">Жиры</string>
|
||||||
|
<string name="category">Категория</string>
|
||||||
|
<string name="subcategory">Подкатегория</string>
|
||||||
<string name="calculator_label">Калькулятор</string>
|
<string name="calculator_label">Калькулятор</string>
|
||||||
<!-- Theme switcher dark and light mode-->
|
<!-- Theme switcher dark and light mode-->
|
||||||
<string name="theme_switcher_summary">Выберите темную, светлую или системную тему</string>
|
<string name="theme_switcher_summary">Выберите темную, светлую или системную тему</string>
|
||||||
|
<string name="app_color_scheme">Цветовая схема приложения</string>
|
||||||
|
<string name="dark_theme">Тёмная тема</string>
|
||||||
|
<string name="light_theme">Светлая тема</string>
|
||||||
|
<string name="follow_system_theme">Использовать тему устройства</string>
|
||||||
<!-- Profile -->
|
<!-- Profile -->
|
||||||
<string name="localprofile">Профиль</string>
|
<string name="localprofile">Профиль</string>
|
||||||
|
<string name="localprofile_shortname">ЛП</string>
|
||||||
|
<string name="description_profile_local">Задайте профиль, доступный в автономном режиме.</string>
|
||||||
|
<string name="a11y_add_new_to_list">добавить новый в список</string>
|
||||||
<string name="do_you_want_switch_profile">Хотите переключить профиль и сбросить изменения, внесенные в текущий профиль?</string>
|
<string name="do_you_want_switch_profile">Хотите переключить профиль и сбросить изменения, внесенные в текущий профиль?</string>
|
||||||
<string name="save_or_reset_changes_first">Сначала сохраните или сбросьте текущие изменения</string>
|
<string name="save_or_reset_changes_first">Сначала сохраните или сбросьте текущие изменения</string>
|
||||||
<string name="delete_current_profile">Удалить текущий профиль?</string>
|
<string name="delete_current_profile">Удалить текущий профиль?</string>
|
||||||
|
<string name="units_colon">Единицы:</string>
|
||||||
|
<string name="missing_profile_name">Отсутствует название профиля</string>
|
||||||
|
<string name="error_in_ic_values">Ошибка в значении углеводного коэффициента IC</string>
|
||||||
|
<string name="error_in_basal_values">Ошибка в величине базала</string>
|
||||||
|
<string name="error_in_target_values">Ошибка в целевых значениях</string>
|
||||||
|
<string name="error_in_isf_values">Ошибка в значении фактора чувствительности к инсулину ISF</string>
|
||||||
<string name="profile_name_contains_dot">Имя профиля содержит точки.\nЭто не поддерживается NS.\nПрофиль не выгружен в NS.</string>
|
<string name="profile_name_contains_dot">Имя профиля содержит точки.\nЭто не поддерживается NS.\nПрофиль не выгружен в NS.</string>
|
||||||
|
<string name="invalid_profile_not_accepted">Неверный профиль %1$s не принят из NS</string>
|
||||||
|
<string name="view">Смотреть</string>
|
||||||
|
<string name="errors">Ошибки</string>
|
||||||
|
<string name="select_profile">Выберите профиль для изменения</string>
|
||||||
|
<string name="profile_name">Название профиля:</string>
|
||||||
|
<string name="a11y_add_new_profile">добавить новый профиль</string>
|
||||||
|
<string name="a11y_clone_profile">клонировать текущий профиль</string>
|
||||||
|
<string name="a11y_delete_current_profile">удалить текущий профиль</string>
|
||||||
|
<string name="dia_short">Время действия инсулина DIA</string>
|
||||||
|
<string name="target_short">ЦЕЛЬ</string>
|
||||||
|
<string name="basal_short">БАЗАЛ</string>
|
||||||
<!-- Objectives -->
|
<!-- Objectives -->
|
||||||
<string name="completed_well_done">Завершено, отлично!</string>
|
<string name="completed_well_done">Завершено, отлично!</string>
|
||||||
|
<string name="not_completed_yet">Не завершено</string>
|
||||||
|
<string name="time_elapsed">Прошло времени</string>
|
||||||
<string name="maxiobset">Максимум активного инсулина IOB установлен правильно</string>
|
<string name="maxiobset">Максимум активного инсулина IOB установлен правильно</string>
|
||||||
<string name="hasbgdata">ГК доступна из выбранного источника</string>
|
<string name="hasbgdata">ГК доступна из выбранного источника</string>
|
||||||
<string name="synchaswritepermission">Служба синхронизации имеет разрешение на запись</string>
|
<string name="synchaswritepermission">Служба синхронизации имеет разрешение на запись</string>
|
||||||
|
@ -245,6 +333,7 @@
|
||||||
<string name="overview_show_sensitivity">Чувствительность</string>
|
<string name="overview_show_sensitivity">Чувствительность</string>
|
||||||
<string name="overview_show_deviations">Отклонение</string>
|
<string name="overview_show_deviations">Отклонение</string>
|
||||||
<string name="overview_show_cob">Активные углеводы COB</string>
|
<string name="overview_show_cob">Активные углеводы COB</string>
|
||||||
|
<string name="overview_show_iob">Активный инсулин IOB</string>
|
||||||
<string name="overview_show_basals">Базал</string>
|
<string name="overview_show_basals">Базал</string>
|
||||||
<string name="overview_show_abs_insulin">Абсолютный инсулин</string>
|
<string name="overview_show_abs_insulin">Абсолютный инсулин</string>
|
||||||
<string name="prediction_shortname">ОЖИД</string>
|
<string name="prediction_shortname">ОЖИД</string>
|
||||||
|
|
|
@ -34,7 +34,7 @@ class ProfileElement(ps: EffectiveProfileSwitch, serialNumber: String, dateUtil:
|
||||||
|
|
||||||
init {
|
init {
|
||||||
type = "pumpSettings"
|
type = "pumpSettings"
|
||||||
val profile: Profile? = ProfileSealed.EPS(ps)
|
val profile: Profile = ProfileSealed.EPS(ps)
|
||||||
checkNotNull(profile)
|
checkNotNull(profile)
|
||||||
for (br in profile.getBasalValues())
|
for (br in profile.getBasalValues())
|
||||||
basalSchedules.Normal.add(BasalRate(br.timeAsSeconds * 1000, br.value))
|
basalSchedules.Normal.add(BasalRate(br.timeAsSeconds * 1000, br.value))
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package info.nightscout.pump.combo.ruffyscripter.history;
|
package info.nightscout.pump.combo.ruffyscripter.history;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
public class PumpAlert extends HistoryRecord {
|
public class PumpAlert extends HistoryRecord {
|
||||||
public final Integer warningCode;
|
public final Integer warningCode;
|
||||||
|
@ -23,11 +24,11 @@ public class PumpAlert extends HistoryRecord {
|
||||||
PumpAlert pumpAlert = (PumpAlert) o;
|
PumpAlert pumpAlert = (PumpAlert) o;
|
||||||
|
|
||||||
if (timestamp != pumpAlert.timestamp) return false;
|
if (timestamp != pumpAlert.timestamp) return false;
|
||||||
if (warningCode != null ? !warningCode.equals(pumpAlert.warningCode) : pumpAlert.warningCode != null)
|
if (!Objects.equals(warningCode, pumpAlert.warningCode))
|
||||||
return false;
|
return false;
|
||||||
if (errorCode != null ? !errorCode.equals(pumpAlert.errorCode) : pumpAlert.errorCode != null)
|
if (!Objects.equals(errorCode, pumpAlert.errorCode))
|
||||||
return false;
|
return false;
|
||||||
return message != null ? message.equals(pumpAlert.message) : pumpAlert.message == null;
|
return Objects.equals(message, pumpAlert.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -719,8 +719,7 @@ object ApplicationLayer {
|
||||||
command = extractAppLayerPacketCommand(tpLayerPacket),
|
command = extractAppLayerPacketCommand(tpLayerPacket),
|
||||||
version = tpLayerPacket.payload[VERSION_BYTE_OFFSET],
|
version = tpLayerPacket.payload[VERSION_BYTE_OFFSET],
|
||||||
payload = ArrayList<Byte>(tpLayerPacket.payload.subList(PAYLOAD_BYTES_OFFSET, tpLayerPacket.payload.size))
|
payload = ArrayList<Byte>(tpLayerPacket.payload.subList(PAYLOAD_BYTES_OFFSET, tpLayerPacket.payload.size))
|
||||||
) {
|
)
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Produces transport layer DATA packet info containing this application layer
|
* Produces transport layer DATA packet info containing this application layer
|
||||||
|
@ -1680,10 +1679,10 @@ object ApplicationLayer {
|
||||||
* This is preferred over directly using the [Packet] constructor.
|
* This is preferred over directly using the [Packet] constructor.
|
||||||
*/
|
*/
|
||||||
fun checkAndParseTransportLayerDataPacket(tpLayerPacket: TransportLayer.Packet):
|
fun checkAndParseTransportLayerDataPacket(tpLayerPacket: TransportLayer.Packet):
|
||||||
ApplicationLayer.Packet {
|
Packet {
|
||||||
try {
|
try {
|
||||||
logger(LogLevel.VERBOSE) { "Parsing DATA packet as application layer packet" }
|
logger(LogLevel.VERBOSE) { "Parsing DATA packet as application layer packet" }
|
||||||
val appLayerPacket = ApplicationLayer.Packet(tpLayerPacket)
|
val appLayerPacket = Packet(tpLayerPacket)
|
||||||
logger(LogLevel.VERBOSE) {
|
logger(LogLevel.VERBOSE) {
|
||||||
"This is an application layer packet with command ${appLayerPacket.command} and payload ${appLayerPacket.payload.toHexString()}"
|
"This is an application layer packet with command ${appLayerPacket.command} and payload ${appLayerPacket.payload.toHexString()}"
|
||||||
}
|
}
|
||||||
|
@ -1709,7 +1708,7 @@ object ApplicationLayer {
|
||||||
}
|
}
|
||||||
|
|
||||||
return appLayerPacket
|
return appLayerPacket
|
||||||
} catch (e: ApplicationLayer.InvalidCommandIDException) {
|
} catch (e: InvalidCommandIDException) {
|
||||||
logger(LogLevel.WARN) {
|
logger(LogLevel.WARN) {
|
||||||
"Got an application layer packet with invalid/unknown command ID 0x${e.commandID.toString(16)} " +
|
"Got an application layer packet with invalid/unknown command ID 0x${e.commandID.toString(16)} " +
|
||||||
"service ID ${e.serviceID.name} and payload (with ${e.payload.size} byte(s)) ${e.payload.toHexString()}" +
|
"service ID ${e.serviceID.name} and payload (with ${e.payload.size} byte(s)) ${e.payload.toHexString()}" +
|
||||||
|
@ -1719,7 +1718,7 @@ object ApplicationLayer {
|
||||||
} catch (e: ErrorCodeException) {
|
} catch (e: ErrorCodeException) {
|
||||||
// We already logged the error code, so just pass through the exception
|
// We already logged the error code, so just pass through the exception
|
||||||
throw e
|
throw e
|
||||||
} catch (e: ApplicationLayer.ExceptionBase) {
|
} catch (e: ExceptionBase) {
|
||||||
logger(LogLevel.ERROR) { "Could not parse DATA packet as application layer packet: $e" }
|
logger(LogLevel.ERROR) { "Could not parse DATA packet as application layer packet: $e" }
|
||||||
throw e
|
throw e
|
||||||
}
|
}
|
||||||
|
|
|
@ -134,7 +134,7 @@ class PumpIO(
|
||||||
// and [List<Byte>.toComboFrame] for details).
|
// and [List<Byte>.toComboFrame] for details).
|
||||||
private val framedComboIO = FramedComboIO(bluetoothDevice)
|
private val framedComboIO = FramedComboIO(bluetoothDevice)
|
||||||
|
|
||||||
private var initialMode: PumpIO.Mode? = null
|
private var initialMode: Mode? = null
|
||||||
|
|
||||||
private var transportLayerIO = TransportLayer.IO(
|
private var transportLayerIO = TransportLayer.IO(
|
||||||
pumpStateStore, bluetoothDevice.address, framedComboIO
|
pumpStateStore, bluetoothDevice.address, framedComboIO
|
||||||
|
|
|
@ -159,8 +159,8 @@ object TransportLayer {
|
||||||
|
|
||||||
// Utility function to be able to throw an exception in case of
|
// Utility function to be able to throw an exception in case of
|
||||||
// an invalid command ID in the Packet constructor below.
|
// an invalid command ID in the Packet constructor below.
|
||||||
private fun checkedGetCommand(value: Int, bytes: List<Byte>): TransportLayer.Command =
|
private fun checkedGetCommand(value: Int, bytes: List<Byte>): Command =
|
||||||
TransportLayer.Command.fromInt(value) ?: throw TransportLayer.InvalidCommandIDException(value, bytes)
|
Command.fromInt(value) ?: throw InvalidCommandIDException(value, bytes)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class containing Combo transport layer packet data.
|
* Class containing Combo transport layer packet data.
|
||||||
|
@ -835,7 +835,7 @@ object TransportLayer {
|
||||||
* @throws IncorrectPacketException if expectedCommand is non-null and
|
* @throws IncorrectPacketException if expectedCommand is non-null and
|
||||||
* the received packet's command does not match expectedCommand.
|
* the received packet's command does not match expectedCommand.
|
||||||
*/
|
*/
|
||||||
suspend fun receive(expectedCommand: Command? = null): TransportLayer.Packet {
|
suspend fun receive(expectedCommand: Command? = null): Packet {
|
||||||
// In here, we mainly listen to the packetReceiverChannel
|
// In here, we mainly listen to the packetReceiverChannel
|
||||||
// for incoming packets from the packet receiver coroutine.
|
// for incoming packets from the packet receiver coroutine.
|
||||||
// The actual reception takes place there. startInternal()
|
// The actual reception takes place there. startInternal()
|
||||||
|
|
|
@ -953,7 +953,7 @@ suspend fun navigateToRTScreen(
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
|
||||||
if (path?.isEmpty() ?: false)
|
if (path?.isEmpty() == true)
|
||||||
return currentParsedScreen
|
return currentParsedScreen
|
||||||
|
|
||||||
if (path == null) {
|
if (path == null) {
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
package="info.nightscout.androidaps.plugins.pump.combov2">
|
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||||
|
|
||||||
<application>
|
<application>
|
||||||
<activity
|
<activity
|
||||||
android:name="info.nightscout.pump.combov2.activities.ComboV2PairingActivity"
|
android:name=".activities.ComboV2PairingActivity"
|
||||||
android:exported="false"
|
android:exported="false"
|
||||||
android:theme="@style/AppTheme.NoActionBar" />
|
android:theme="@style/AppTheme.NoActionBar" />
|
||||||
</application>
|
</application>
|
||||||
|
|
|
@ -44,6 +44,7 @@ import info.nightscout.interfaces.queue.CommandQueue
|
||||||
import info.nightscout.interfaces.ui.UiInteraction
|
import info.nightscout.interfaces.ui.UiInteraction
|
||||||
import info.nightscout.interfaces.utils.DecimalFormatter
|
import info.nightscout.interfaces.utils.DecimalFormatter
|
||||||
import info.nightscout.interfaces.utils.TimeChangeType
|
import info.nightscout.interfaces.utils.TimeChangeType
|
||||||
|
import info.nightscout.pump.combov2.activities.ComboV2PairingActivity
|
||||||
import info.nightscout.rx.bus.RxBus
|
import info.nightscout.rx.bus.RxBus
|
||||||
import info.nightscout.rx.events.EventDismissNotification
|
import info.nightscout.rx.events.EventDismissNotification
|
||||||
import info.nightscout.rx.events.EventInitializationChanged
|
import info.nightscout.rx.events.EventInitializationChanged
|
||||||
|
@ -326,6 +327,8 @@ class ComboV2Plugin @Inject constructor (
|
||||||
val pairPref: Preference? = findPreference(rh.gs(R.string.key_combov2_pair_with_pump))
|
val pairPref: Preference? = findPreference(rh.gs(R.string.key_combov2_pair_with_pump))
|
||||||
val unpairPref: Preference? = findPreference(rh.gs(R.string.key_combov2_unpair_pump))
|
val unpairPref: Preference? = findPreference(rh.gs(R.string.key_combov2_unpair_pump))
|
||||||
|
|
||||||
|
pairPref?.intent = Intent(activity, ComboV2PairingActivity::class.java)
|
||||||
|
|
||||||
val isInitiallyPaired = pairedStateUIFlow.value
|
val isInitiallyPaired = pairedStateUIFlow.value
|
||||||
pairPref?.isEnabled = !isInitiallyPaired
|
pairPref?.isEnabled = !isInitiallyPaired
|
||||||
unpairPref?.isEnabled = isInitiallyPaired
|
unpairPref?.isEnabled = isInitiallyPaired
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
tools:context=".plugins.pump.combov2.activities.ComboV2PairingActivity">
|
tools:context=".activities.ComboV2PairingActivity">
|
||||||
|
|
||||||
<androidx.appcompat.widget.LinearLayoutCompat
|
<androidx.appcompat.widget.LinearLayoutCompat
|
||||||
android:id="@+id/header"
|
android:id="@+id/header"
|
||||||
|
|
|
@ -1,21 +1,123 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name="combov2_plugin_name">Accu-Chek Combo</string>
|
<string name="combov2_plugin_name">Accu-Chek Combo</string>
|
||||||
|
<string name="combov2_plugin_description">Nativní integrace pro pumpy Accu-Chek Combo</string>
|
||||||
|
<string name="combov2_could_not_connect">Nelze se připojit k pumpě</string>
|
||||||
|
<string name="combov2_not_paired">Není spárováno s pumpou</string>
|
||||||
|
<string name="combov2_pump_terminated_connection">Spojení ukončené pumpou</string>
|
||||||
|
<string name="combov2_warning">Varování Combo</string>
|
||||||
|
<string name="combov2_error">Chyba Combo</string>
|
||||||
|
<string name="combov2_warning_4">Zavolejte hotline pro aktualizaci</string>
|
||||||
|
<string name="combov2_warning_10">Chyba Bluetooth; opakujte párování</string>
|
||||||
|
<string name="combov2_error_1">Zásobník je prázdný</string>
|
||||||
<string name="combov2_error_2">Vybitá baterie</string>
|
<string name="combov2_error_2">Vybitá baterie</string>
|
||||||
<string name="combov2_error_4">Okluze</string>
|
<string name="combov2_error_4">Okluze</string>
|
||||||
|
<string name="combov2_error_5">Konec zálohy pumpy</string>
|
||||||
<string name="combov2_error_6">Porucha mechaniky</string>
|
<string name="combov2_error_6">Porucha mechaniky</string>
|
||||||
|
<string name="combov2_error_7">Chyba elektroniky</string>
|
||||||
|
<string name="combov2_error_8">Přerušení napájení</string>
|
||||||
|
<string name="combov2_error_9">Vypršela doba zápůjčky</string>
|
||||||
|
<string name="combov2_error_10">Chyba zásobníku</string>
|
||||||
|
<string name="combov2_error_11">Infuzní set není naplněný</string>
|
||||||
|
<string name="combov2_extended_bolus_not_supported">Rozšířený bolus není podporován</string>
|
||||||
|
<string name="combov2_title">Accu-Chek Combo v2</string>
|
||||||
|
<string name="combov2_pair_with_pump_title">Párovat s pumpou</string>
|
||||||
|
<string name="combov2_unpair_pump_title">Zrušit párování pumpy</string>
|
||||||
|
<string name="combov2_driver_state_label">Stav ovladače</string>
|
||||||
|
<string name="combov2_current_activity_label">Současná aktivita</string>
|
||||||
<string name="bluetooth_address">Bluetooth MAC adresa</string>
|
<string name="bluetooth_address">Bluetooth MAC adresa</string>
|
||||||
|
<string name="combov2_start_pairing">Začít párovat</string>
|
||||||
|
<string name="combov2_pairing_in_progress">Probíhá Combo párování</string>
|
||||||
|
<string name="combov2_pairing_start_steps">Kroky k provedení párování s Combo:\n\n
|
||||||
|
1. Na vaší pumpě přejděte do nastavení Bluetooth\n
|
||||||
|
2. Zkontrolujte, zda je zařízení již zobrazeno jako spárované. pokud ano, přejděte na obrazovku pumpy \"Odstranit zařízení\" a odstranit/zrušit párování tohoto zařízení\n
|
||||||
|
3. Přejděte na obrazovku pumpy \"Přidat zařízení\" a spárujte na pumpě\n
|
||||||
|
4. Klikněte na tlačítko \"Spustit párování\" níže pro zahájení párování v AndroidAPS\n</string>
|
||||||
|
<string name="combov2_steps_if_no_connection_during_pairing">Po nějaké době se na obrazovce pumpy zobrazí jméno telefonu; stiskněte KONTROLA pro potvrzení.\n\n
|
||||||
|
Po úspěšném dokončení párování, potvrďte dokončení párování na vaší pumpě a vráťte se na hlavní obrazovku pumpy dvojím stisknutím tlačítka KONEC.\n\n
|
||||||
|
Pokud po více než ~5 minutách není navázáno žádné spojení:\n\n
|
||||||
|
1. Stiskněte tlačítko Zpět nebo tlačítko \"Zrušit párování\"\n
|
||||||
|
2. Zrušte párování na Combo (současně stiskněte tlačítka „UP i MENU“ pro zrušení párování)\n
|
||||||
|
3. Zkuste znovu spárovat</string>
|
||||||
|
<string name="combov2_pin_entry_hint">0123456789</string>
|
||||||
|
<string name="combov2_enter_pin">Vložte PIN</string>
|
||||||
|
<string name="combov2_cancel_pairing">Zrušit párování</string>
|
||||||
|
<string name="combov2_pin_hint">10místný PIN</string>
|
||||||
|
<string name="combov2_pairing_finished_successfully">Úspěšně spárováno s Combo</string>
|
||||||
|
<string name="combov2_pairing_cancelled">Párování s Combo zrušeno uživatelem</string>
|
||||||
|
<string name="combov2_pairing_combo_scan_timeout_reached">Časový limit pro vyhledávání Combo dosažen</string>
|
||||||
|
<string name="combov2_pairing_failed_due_to_error">Párování se nezdařilo z důvodu chyby: %1$s</string>
|
||||||
|
<string name="combov2_pairing_aborted_unknown_reasons">Párování přerušeno z neznámých důvodů</string>
|
||||||
|
<string name="combov2_scanning_for_pump">Vyhledávání pumpy</string>
|
||||||
|
<string name="combov2_establishing_bt_connection">Navazování připojení Bluetooth (pokus č. %1$d)</string>
|
||||||
|
<string name="combov2_pairing_performing_handshake">Provádím navazování spojení s pumpou</string>
|
||||||
|
<string name="combov2_pairing_pump_requests_pin">Pumpa vyžaduje desetimístný kód PIN</string>
|
||||||
|
<string name="combov2_pairing_finishing">Dokončování párování</string>
|
||||||
|
<string name="combov2_no_connection_for_n_mins">Žádné spojení během %1$d min</string>
|
||||||
|
<string name="combov2_less_than_one_minute_ago">Před méně než minutou</string>
|
||||||
|
<string name="combov2_setting_current_pump_time">Nastavení aktuálního času pumpy</string>
|
||||||
|
<string name="combov2_setting_current_pump_date">Nastavení aktuálního data pumpy</string>
|
||||||
<string name="combov2_not_initialized">Není inicializován</string>
|
<string name="combov2_not_initialized">Není inicializován</string>
|
||||||
|
<string name="combov2_checking_pump">Kontrola pumpy</string>
|
||||||
<string name="combov2_ready">Připraven</string>
|
<string name="combov2_ready">Připraven</string>
|
||||||
<string name="combov2_suspended">Pozastaveno</string>
|
<string name="combov2_suspended">Pozastaveno</string>
|
||||||
|
<string name="combov2_pump_is_suspended">Pumpa pozastavena</string>
|
||||||
|
<string name="combov2_executing_command">Provádění příkazu</string>
|
||||||
|
<string name="combov2_getting_basal_profile_cmddesc">Načítám bazální profil</string>
|
||||||
<string name="combov2_setting_basal_profile_cmddesc">Nastavení bazálního profilu</string>
|
<string name="combov2_setting_basal_profile_cmddesc">Nastavení bazálního profilu</string>
|
||||||
|
<string name="combov2_setting_tbr_cmddesc">Nastavení %1$d%% dočasného bazálu na %2$d minut</string>
|
||||||
|
<string name="combov2_cancelling_tbr">Zrušení probíhajícího dočasného bazálu</string>
|
||||||
|
<string name="combov2_delivering_bolus_cmddesc">Podávání %1$.1f U</string>
|
||||||
|
<string name="combov2_fetching_tdd_history_cmddesc">Načítám CDD historii</string>
|
||||||
|
<string name="combov2_updating_pump_datetime_cmddesc">Aktualizace data a času v pumpě</string>
|
||||||
|
<string name="combov2_updating_pump_status_cmddesc">Nahrávám stav pumpy</string>
|
||||||
|
<string name="combov2_pairing_pin_failure">PIN nefungoval. Zkontrolujte, zda jste neudělali překlep. Pokud se to stále děje, zrušte a opakujte párování.</string>
|
||||||
|
<string name="combov2_discovery_duration">Délka hledání (v sekundách)</string>
|
||||||
|
<string name="combov2_verbose_logging">Povolit podrobné protokolování</string>
|
||||||
|
<string name="combov2_getting_basal_profile">Získávání bazálního profilu; čtení %1$d. faktoru</string>
|
||||||
|
<string name="combov2_setting_basal_profile">Nastavení bazálního profilu; zapisování %1$d. faktoru</string>
|
||||||
|
<string name="combov2_delivering_bolus">Podávání bolusu (podáno %1$.1f z %2$.1f U)</string>
|
||||||
|
<string name="combov2_cannot_deliver_pump_suspended">Nelze podat bolus - pumpa je pozastavena</string>
|
||||||
|
<string name="combov2_insufficient_insulin_in_reservoir">Nedostatečný inzulin v zásobníku</string>
|
||||||
<string name="combov2_bolus_cancelled">Bolus zrušen</string>
|
<string name="combov2_bolus_cancelled">Bolus zrušen</string>
|
||||||
<string name="combov2_bolus_delivery_failed">Provádění bolusu selhalo. Zdá se, že žádný bolus nebyl podán. Zkontrolujte pumpu a případně pošlete bolus znovu. Jako bezpečnostní opatření podání bolusu není opakováno.</string>
|
<string name="combov2_bolus_delivery_failed">Provádění bolusu selhalo. Zdá se, že žádný bolus nebyl podán. Zkontrolujte pumpu a případně pošlete bolus znovu. Jako bezpečnostní opatření podání bolusu není opakováno.</string>
|
||||||
|
<string name="combov2_bolus_not_delivered">Bolus nebyl podán</string>
|
||||||
|
<string name="combov2_cannot_access_pump_data">Nelze získat přístup k datům pumpy; pumpa musí být znovu spárována</string>
|
||||||
|
<string name="combov2_unaccounted_bolus_detected_cancelling_bolus">Zjištěny nečekané bolusy. Z bezpečnostních důvodů bolus zrušen.</string>
|
||||||
|
<string name="combov2_incorrect_active_basal_profile">Nesprávný aktivní bazální profil; profil 1 musí být aktivní, ne profil %1$d</string>
|
||||||
|
<string name="combov2_unrecognized_alert">Nerozpoznaná Combo výstraha</string>
|
||||||
|
<string name="combov2_combo_alert">Combo výstraha</string>
|
||||||
|
<string name="combov2_last_bolus">%1$.1f %2$s (%3$s)</string>
|
||||||
<string name="combov2_current_tbr">%1$d%% (zbývá %2$d min)</string>
|
<string name="combov2_current_tbr">%1$d%% (zbývá %2$d min)</string>
|
||||||
|
<string name="combov2_current_tbr_less_than_1min">%1$d%% (zbývá méně než 1 min)</string>
|
||||||
|
<string name="combov2_load_tdds_cancelled">Načítání CDD zrušeno</string>
|
||||||
|
<string name="combov2_retrieving_tdds_failed">Načítání CDD selhalo</string>
|
||||||
|
<string name="combov2_no_activity">{fa-bed}</string>
|
||||||
<string name="combov2_battery_low_warning">Slabá baterie v pumpě</string>
|
<string name="combov2_battery_low_warning">Slabá baterie v pumpě</string>
|
||||||
|
<string name="combov2_reservoir_low_warning">V zásobníku je málo inzulínu</string>
|
||||||
|
<string name="combov2_setting_tbr_succeeded">Nastavení dočasného bazálu bylo úspěšné</string>
|
||||||
|
<string name="combov2_setting_tbr_failed">Nastavení dočasného bazálu selhalo</string>
|
||||||
|
<string name="combov2_hit_unexpected_tbr_limit">Při úpravě dočasného bazálu došlo k neočekávanému limitu: vyžadováno %1$d%%, dosažen limit %1$d%%</string>
|
||||||
|
<string name="combov2_cannot_set_absolute_tbr_if_basal_zero">Nelze nastavit absolutní dočasný bazál, pokud je bazální dávka nulová</string>
|
||||||
|
<string name="combov2_pair_with_pump_summary">Párovat AndroidAPS a Android s momentálně nespárovanou pumpou Accu-Chek Combo</string>
|
||||||
|
<string name="combov2_unpair_pump_summary">Zrušit párování AndroidAPS a Androidu v současné době spárované Accu-Chek Combo</string>
|
||||||
|
<string name="combov2_unknown_tbr_detected">Neznámý dočasný bazál byl zjištěn a zastaven. Procentuální hodnota: %1$d%%; zbývající doba trvání: %2$s</string>
|
||||||
|
<string name="combov2_connection_error">Chyba připojení: %1$s</string>
|
||||||
<string name="combov2_short_status_last_connection">Poslední spoj: před %1$d min</string>
|
<string name="combov2_short_status_last_connection">Poslední spoj: před %1$d min</string>
|
||||||
|
<string name="combov2_short_status_alert">Výstraha: %s</string>
|
||||||
|
<string name="combov2_short_status_last_bolus">Poslední bolus: %1$sU @ %2$s</string>
|
||||||
<string name="combov2_short_status_temp_basal">Doč. bazál: %s</string>
|
<string name="combov2_short_status_temp_basal">Doč. bazál: %s</string>
|
||||||
<string name="combov2_short_status_reservoir">Zásobník: %dU</string>
|
<string name="combov2_short_status_reservoir">Zásobník: %dU</string>
|
||||||
<string name="combov2_short_status_battery_state_empty">prázdný</string>
|
<string name="combov2_short_status_battery_state_empty">prázdný</string>
|
||||||
<string name="combov2_short_status_battery_state_low">nízká</string>
|
<string name="combov2_short_status_battery_state_low">nízká</string>
|
||||||
|
<string name="combov2_short_status_battery_state_full">plná</string>
|
||||||
|
<string name="combov2_short_status_battery_state">Bat: %s</string>
|
||||||
|
<string name="combov2_automatic_reservoir_entry">Detekovat a vložit automaticky výmenu zásobníku</string>
|
||||||
|
<string name="combov2_automatic_battery_entry">Detekovat a vložit automaticky výmenu baterie</string>
|
||||||
|
<string name="combov2_note_reservoir_change">Výměna zásobníku inzulínu automaticky vložena ovladačem combov2</string>
|
||||||
|
<string name="combov2_note_battery_change">Výměna baterie automaticky vložena ovladačem combov2</string>
|
||||||
|
<string name="combov2_timezone_changed">Časové pásmo změněno</string>
|
||||||
|
<string name="combov2_datetime_changed">Datum a/nebo čas změněn</string>
|
||||||
|
<string name="combov2_dst_started">Začal letní čas (DST)</string>
|
||||||
|
<string name="combov2_dst_ended">Letní čas (DST) skončil</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -16,8 +16,9 @@
|
||||||
<string name="combov2_error_6">Erreur mécanique</string>
|
<string name="combov2_error_6">Erreur mécanique</string>
|
||||||
<string name="combov2_error_7">Erreur électronique</string>
|
<string name="combov2_error_7">Erreur électronique</string>
|
||||||
<string name="combov2_error_8">Coupure de l\'alimentation</string>
|
<string name="combov2_error_8">Coupure de l\'alimentation</string>
|
||||||
<string name="combov2_error_9">Fin de la pompe de prêt</string>
|
<string name="combov2_error_9">Fin de fonctionnement de la pompe de prêt</string>
|
||||||
<string name="combov2_error_10">Erreur de réservoir</string>
|
<string name="combov2_error_10">Erreur de réservoir</string>
|
||||||
|
<string name="combov2_error_11">Ensemble d\'infusion non amorcé</string>
|
||||||
<string name="combov2_extended_bolus_not_supported">Le bolus étendu n\'est pas pris en charge</string>
|
<string name="combov2_extended_bolus_not_supported">Le bolus étendu n\'est pas pris en charge</string>
|
||||||
<string name="combov2_title">Accu-Chek Combo v2</string>
|
<string name="combov2_title">Accu-Chek Combo v2</string>
|
||||||
<string name="combov2_pair_with_pump_title">Appairer la pompe</string>
|
<string name="combov2_pair_with_pump_title">Appairer la pompe</string>
|
||||||
|
@ -58,17 +59,59 @@
|
||||||
<string name="combov2_setting_tbr_cmddesc">Réglage du DBT %1$d%% pendant %2$d minutes</string>
|
<string name="combov2_setting_tbr_cmddesc">Réglage du DBT %1$d%% pendant %2$d minutes</string>
|
||||||
<string name="combov2_cancelling_tbr">Annulation du DBT en cours</string>
|
<string name="combov2_cancelling_tbr">Annulation du DBT en cours</string>
|
||||||
<string name="combov2_delivering_bolus_cmddesc">Injection de %1$.1fU de bolus en cours</string>
|
<string name="combov2_delivering_bolus_cmddesc">Injection de %1$.1fU de bolus en cours</string>
|
||||||
<string name="combov2_fetching_tdd_history_cmddesc">Récupération de l\'historique DTI</string>
|
<string name="combov2_fetching_tdd_history_cmddesc">Récupération de l\'historique DTQ</string>
|
||||||
<string name="combov2_updating_pump_datetime_cmddesc">Mise à jour date et heure de la pompe</string>
|
<string name="combov2_updating_pump_datetime_cmddesc">Mise à jour date et heure de la pompe</string>
|
||||||
<string name="combov2_updating_pump_status_cmddesc">Mise à jour de l\'état pompe</string>
|
<string name="combov2_updating_pump_status_cmddesc">Mise à jour de l\'état pompe</string>
|
||||||
|
<string name="combov2_pairing_pin_failure">Le code PIN n\'a pas fonctionné. Vérifiez s\'il y a eu une faute de frappe. Si cela persiste, annulez et recommencez l\'appairage.</string>
|
||||||
|
<string name="combov2_discovery_duration">Durée de recherche (en secondes)</string>
|
||||||
|
<string name="combov2_verbose_logging">Activer les informations log détaillées de la Combo</string>
|
||||||
|
<string name="combov2_getting_basal_profile">Récupération du profil basal, %1$d valeure(s) lue(s)</string>
|
||||||
|
<string name="combov2_setting_basal_profile">Paramétrage du profil basal, %1$d valeure(s) écrite(s)</string>
|
||||||
|
<string name="combov2_delivering_bolus">Injection du bolus (%1$.1f sur %2$.1f U injectés)</string>
|
||||||
|
<string name="combov2_cannot_deliver_pump_suspended">Impossible d\'injecter le traitement - la pompe est suspendue</string>
|
||||||
|
<string name="combov2_insufficient_insulin_in_reservoir">Insuline insuffisante dans le réservoir</string>
|
||||||
<string name="combov2_bolus_cancelled">Bolus annulé</string>
|
<string name="combov2_bolus_cancelled">Bolus annulé</string>
|
||||||
<string name="combov2_bolus_delivery_failed">Administration bolus échouée. Il semble qu’aucun bolus n’a été administré. Pour être sûr, veuillez vérifier la pompe pour éviter un double bolus ensuite refaire le bolus une nouvelle fois.</string>
|
<string name="combov2_bolus_delivery_failed">Administration bolus échouée. Il semble qu’aucun bolus n’a été administré. Pour être sûr, veuillez vérifier la pompe pour éviter un double bolus ensuite refaire le bolus une nouvelle fois.</string>
|
||||||
|
<string name="combov2_bolus_not_delivered">Bolus non injecté</string>
|
||||||
|
<string name="combov2_cannot_access_pump_data">Impossible d\'accéder aux données de la pompe, la pompe doit être à nouveau appairée</string>
|
||||||
|
<string name="combov2_unaccounted_bolus_detected_cancelling_bolus">Détection de bolus non comptabilisés. Annulation du bolus pour des raisons de sécurité.</string>
|
||||||
|
<string name="combov2_incorrect_active_basal_profile">Profil actif incorrect, le profil 1 doit être actif et non le profil %1$d</string>
|
||||||
|
<string name="combov2_unrecognized_alert">Alerte Combo inconnue</string>
|
||||||
|
<string name="combov2_combo_alert">Alerte Combo</string>
|
||||||
<string name="combov2_last_bolus">%1$.1f %2$s (%3$s)</string>
|
<string name="combov2_last_bolus">%1$.1f %2$s (%3$s)</string>
|
||||||
<string name="combov2_current_tbr">%1$d%% (%2$d min restantes)</string>
|
<string name="combov2_current_tbr">%1$d%% (%2$d min restantes)</string>
|
||||||
|
<string name="combov2_current_tbr_less_than_1min">%1$d%% (moins de 1 min restantes)</string>
|
||||||
|
<string name="combov2_load_tdds_cancelled">Chargement des DTQ annulé</string>
|
||||||
|
<string name="combov2_retrieving_tdds_failed">Échec de la récupération des DTQ</string>
|
||||||
|
<string name="combov2_no_activity">{fa-bed}</string>
|
||||||
|
<string name="combov2_battery_empty_indicator">{fa-battery-empty}</string>
|
||||||
|
<string name="combov2_battery_low_indicator">{fa-battery-quarter}</string>
|
||||||
|
<string name="combov2_battery_full_indicator">{fa-battery-full}</string>
|
||||||
<string name="combov2_battery_low_warning">Pile pompe faible</string>
|
<string name="combov2_battery_low_warning">Pile pompe faible</string>
|
||||||
|
<string name="combov2_reservoir_low_warning">Niveau réservoir pompe bas</string>
|
||||||
|
<string name="combov2_setting_tbr_succeeded">Paramétrage du DBT réussi</string>
|
||||||
|
<string name="combov2_setting_tbr_failed">Échec du réglage du DBT</string>
|
||||||
|
<string name="combov2_hit_unexpected_tbr_limit">Limite inattendue lors de l’ajustement du DBT: le pourcentage cible de %1$d%%, a dépassé la limite de %1$d%%</string>
|
||||||
|
<string name="combov2_cannot_set_absolute_tbr_if_basal_zero">Impossible de définir le DBT absolu si le débit de basal est zéro</string>
|
||||||
|
<string name="combov2_pair_with_pump_summary">Appairer AndroidAPS et Android avec une pompe Accu-Chek Combo non appariée</string>
|
||||||
|
<string name="combov2_unpair_pump_summary">Dissocier AndroidAPS et Android de la pompe Accu-Chek Combo actuelle</string>
|
||||||
|
<string name="combov2_unknown_tbr_detected">Un DBT inconnu a été détecté et arrêté, pourcentage: %1$d%%, durée restante: %2$s</string>
|
||||||
|
<string name="combov2_connection_error">Erreur de connexion: %1$s</string>
|
||||||
<string name="combov2_short_status_last_connection">Dernière connexion : il y a %1$d min</string>
|
<string name="combov2_short_status_last_connection">Dernière connexion : il y a %1$d min</string>
|
||||||
|
<string name="combov2_short_status_alert">Alerte: %s</string>
|
||||||
|
<string name="combov2_short_status_last_bolus">Dernier bolus: %1$sU @ %2$s</string>
|
||||||
<string name="combov2_short_status_temp_basal">Temps : %s</string>
|
<string name="combov2_short_status_temp_basal">Temps : %s</string>
|
||||||
<string name="combov2_short_status_reservoir">Réserve : %dU</string>
|
<string name="combov2_short_status_reservoir">Réserve : %dU</string>
|
||||||
<string name="combov2_short_status_battery_state_empty">vide</string>
|
<string name="combov2_short_status_battery_state_empty">vide</string>
|
||||||
<string name="combov2_short_status_battery_state_low">basse</string>
|
<string name="combov2_short_status_battery_state_low">basse</string>
|
||||||
|
<string name="combov2_short_status_battery_state_full">plein</string>
|
||||||
|
<string name="combov2_short_status_battery_state">Pile: %s</string>
|
||||||
|
<string name="combov2_automatic_reservoir_entry">Détection et enregistrement automatique du changement du réservoir</string>
|
||||||
|
<string name="combov2_automatic_battery_entry">Détection et enregistrement automatique du changement de pile</string>
|
||||||
|
<string name="combov2_note_reservoir_change">Changement de réservoir détecté automatiquement par le pilote ComboV2</string>
|
||||||
|
<string name="combov2_note_battery_change">Changement de pile détecté automatiquement par le pilote ComboV2</string>
|
||||||
|
<string name="combov2_timezone_changed">Fuseau horaire modifié</string>
|
||||||
|
<string name="combov2_datetime_changed">Date et/ou heure modifiée(s)</string>
|
||||||
|
<string name="combov2_dst_started">Changement d\'heure commencé</string>
|
||||||
|
<string name="combov2_dst_ended">Changement d\'heure terminée</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -1,23 +1,127 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name="combov2_plugin_name">Accu Chek Combo</string>
|
<string name="combov2_plugin_name">Accu Chek Combo</string>
|
||||||
|
<string name="combov2_plugin_description">Нативная интеграция с помпами Accu-Chek Combo</string>
|
||||||
|
<string name="combov2_could_not_connect">Не удалось подключиться к помпе</string>
|
||||||
|
<string name="combov2_not_paired">Нет сопряжения с помпой</string>
|
||||||
|
<string name="combov2_pump_terminated_connection">Помпа прекратила подключение</string>
|
||||||
|
<string name="combov2_warning">Предупреждение от Combo</string>
|
||||||
|
<string name="combov2_error">Ошибка Combo</string>
|
||||||
|
<string name="combov2_warning_4">Позвонить на Горячую линию для обновления</string>
|
||||||
|
<string name="combov2_warning_10">Сбой Bluetooth; повторить сопряжение</string>
|
||||||
|
<string name="combov2_error_1">Резервуар помпы пуст</string>
|
||||||
<string name="combov2_error_2">Батарея разряжена</string>
|
<string name="combov2_error_2">Батарея разряжена</string>
|
||||||
<string name="combov2_error_4">закупорка</string>
|
<string name="combov2_error_4">закупорка</string>
|
||||||
|
<string name="combov2_error_5">Завершение резервирования данных помпы</string>
|
||||||
<string name="combov2_error_6">Механическая ошибка</string>
|
<string name="combov2_error_6">Механическая ошибка</string>
|
||||||
|
<string name="combov2_error_7">Ошибка электроники</string>
|
||||||
|
<string name="combov2_error_8">Прерывание подачи электропитания</string>
|
||||||
|
<string name="combov2_error_9">Конец операции по сдаче</string>
|
||||||
|
<string name="combov2_error_10">Ошибка резервуара</string>
|
||||||
|
<string name="combov2_error_11">Инфузионный набор не заполнен</string>
|
||||||
|
<string name="combov2_extended_bolus_not_supported">Пролонгированный болюс не поддерживается</string>
|
||||||
|
<string name="combov2_title">Accu Chek Combo v2</string>
|
||||||
|
<string name="combov2_pair_with_pump_title">Сопряжение с помпой</string>
|
||||||
|
<string name="combov2_unpair_pump_title">Разорвать сопряжение с помпой</string>
|
||||||
|
<string name="combov2_driver_state_label">Статус драйвера помпы</string>
|
||||||
|
<string name="combov2_current_activity_label">Текущие действия</string>
|
||||||
<string name="bluetooth_address">Адрес Bluetooth</string>
|
<string name="bluetooth_address">Адрес Bluetooth</string>
|
||||||
<string name="combov2_start_pairing">Начните сопряжение</string>
|
<string name="combov2_start_pairing">Начните сопряжение</string>
|
||||||
|
<string name="combov2_pairing_in_progress">Идёт сопряжение с Combo</string>
|
||||||
|
<string name="combov2_pairing_start_steps">Для выполнения сопряжения с Combo:\n\n
|
||||||
|
1. На помпе перейдите в настройки Bluetooth\n
|
||||||
|
2. Проверьте, есть ли здесь ранее сопряженное устройство; если да, то перейдите на экран «Удалить устройство» и удалите его\n
|
||||||
|
3. Перейдите на экран помпы «Добавить устройство» и запустите процесс сопряжение\n
|
||||||
|
4. Нажмите на кнопку «Начать подключение» ниже, чтобы начать сопряжение в AndroidAPS\n</string>
|
||||||
|
<string name="combov2_steps_if_no_connection_during_pairing">Через некоторое время имя телефона отображается на экране насоса, нажмите кнопку-галочку CHECK для подтверждения.\n\n
|
||||||
|
При успешно завершенном подключении, подтвердите это на помпе и вернитесь в главное окно помпы дважды нажав кнопку CHECK.\n\n
|
||||||
|
Если соединение не установлено более чем через ~5 минут:\n\n
|
||||||
|
1. Нажмите кнопку \"Назад\" или кнопку \"Отменить сопряжение\"\n
|
||||||
|
2. Отмените сопряжение на Combo (нажав кнопку ВВЕРХ и кнопку МЕНЮ одновременно)\n
|
||||||
|
3. Повторите процедуру сопряжения заново</string>
|
||||||
|
<string name="combov2_pin_entry_hint">0123456789</string>
|
||||||
|
<string name="combov2_enter_pin">Введите PIN-код</string>
|
||||||
<string name="combov2_cancel_pairing">Отменить сопряжение</string>
|
<string name="combov2_cancel_pairing">Отменить сопряжение</string>
|
||||||
|
<string name="combov2_pin_hint">10-значный PIN-код</string>
|
||||||
|
<string name="combov2_pairing_finished_successfully">Сопряжение с Combo завершено успешно</string>
|
||||||
|
<string name="combov2_pairing_cancelled">Сопряжение с Combo отменено пользователем</string>
|
||||||
|
<string name="combov2_pairing_combo_scan_timeout_reached">Тайм-аут сканирования Combo</string>
|
||||||
|
<string name="combov2_pairing_failed_due_to_error">Сопряжение не состоялось из-за ошибки: %1$s</string>
|
||||||
|
<string name="combov2_pairing_aborted_unknown_reasons">Сопряжение прервано по неизвестной причине</string>
|
||||||
|
<string name="combov2_scanning_for_pump">Поиск помпы</string>
|
||||||
|
<string name="combov2_establishing_bt_connection">Установка Bluetooth-соединения (попытка № %1$d)</string>
|
||||||
|
<string name="combov2_pairing_performing_handshake">Cинхронизация связи с помпой</string>
|
||||||
|
<string name="combov2_pairing_pump_requests_pin">Помпа запрашивает 10-значный PIN-код</string>
|
||||||
|
<string name="combov2_pairing_finishing">Завершение сопряжения</string>
|
||||||
|
<string name="combov2_no_connection_for_n_mins">Нет соединения на протяжении %1$d минут</string>
|
||||||
|
<string name="combov2_less_than_one_minute_ago">Менее минуты назад</string>
|
||||||
|
<string name="combov2_setting_current_pump_time">Установка времени на помпе</string>
|
||||||
|
<string name="combov2_setting_current_pump_date">Установка даты на помпе</string>
|
||||||
<string name="combov2_not_initialized">Нет инициализации</string>
|
<string name="combov2_not_initialized">Нет инициализации</string>
|
||||||
|
<string name="combov2_checking_pump">Проверка помпы</string>
|
||||||
<string name="combov2_ready">Помпа готова</string>
|
<string name="combov2_ready">Помпа готова</string>
|
||||||
<string name="combov2_suspended">Помпа остановлена</string>
|
<string name="combov2_suspended">Помпа остановлена</string>
|
||||||
|
<string name="combov2_pump_is_suspended">Помпа остановлена</string>
|
||||||
|
<string name="combov2_executing_command">Выполнение команды</string>
|
||||||
|
<string name="combov2_getting_basal_profile_cmddesc">Получение базального профиля</string>
|
||||||
<string name="combov2_setting_basal_profile_cmddesc">Установка базального профиля</string>
|
<string name="combov2_setting_basal_profile_cmddesc">Установка базального профиля</string>
|
||||||
|
<string name="combov2_setting_tbr_cmddesc">Установка %1$d%% врем базала TBR на %2$d минут</string>
|
||||||
|
<string name="combov2_cancelling_tbr">Отмена текущего врем базала TBR</string>
|
||||||
|
<string name="combov2_delivering_bolus_cmddesc">Подается болюс %1$.1f ед</string>
|
||||||
|
<string name="combov2_fetching_tdd_history_cmddesc">Получение суточной истории дозировок TDD</string>
|
||||||
|
<string name="combov2_updating_pump_datetime_cmddesc">Обновление даты и времени помпы</string>
|
||||||
|
<string name="combov2_updating_pump_status_cmddesc">Обновление статуса помпы</string>
|
||||||
|
<string name="combov2_pairing_pin_failure">PIN-код не принят. Проверьте наличие опечаток. Если
|
||||||
|
ошибка повторится, отмените сопряжение и повторите процесс.</string>
|
||||||
|
<string name="combov2_discovery_duration">Время обнаружения (в секундах)</string>
|
||||||
|
<string name="combov2_verbose_logging">Включить подробное журналирование Combo</string>
|
||||||
|
<string name="combov2_getting_basal_profile">Получение базового профиля; %1$d фактор(ов) прочитано</string>
|
||||||
|
<string name="combov2_setting_basal_profile">Получение базового профиля; %1$d фактор(ов) прочитано</string>
|
||||||
|
<string name="combov2_delivering_bolus">Подача болюса (введено %1$.1f из %2$.1f ед.)</string>
|
||||||
|
<string name="combov2_cannot_deliver_pump_suspended">Болюс не подан - помпа остановлена</string>
|
||||||
|
<string name="combov2_insufficient_insulin_in_reservoir">Недостаточно инсулина в резервуаре</string>
|
||||||
<string name="combov2_bolus_cancelled">Болюс отменен</string>
|
<string name="combov2_bolus_cancelled">Болюс отменен</string>
|
||||||
<string name="combov2_bolus_delivery_failed">Подача болюса не состоялась. Чтобы удостовериться, проверьте помпу во избежание двойного болюса и повторите подачу. Для защиты от ложных срабатываний болюсы не повторяются автоматически.</string>
|
<string name="combov2_bolus_delivery_failed">Подача болюса не состоялась. Чтобы удостовериться, проверьте помпу во избежание двойного болюса и повторите подачу. Для защиты от ложных срабатываний болюсы не повторяются автоматически.</string>
|
||||||
|
<string name="combov2_bolus_not_delivered">Болюс не подан</string>
|
||||||
|
<string name="combov2_cannot_access_pump_data">Не удается получить данные с помпы; следует заново выполнить сопряжение</string>
|
||||||
|
<string name="combov2_unaccounted_bolus_detected_cancelling_bolus">Обнаружены неучтенные подачи болюса. Отмена болюса по соображениям безопасности.</string>
|
||||||
|
<string name="combov2_incorrect_active_basal_profile">Некорректный активный базальный профиль; должен быть активным профиль 1, а не %1$d</string>
|
||||||
|
<string name="combov2_unrecognized_alert">Неопознанное оповещение Combo</string>
|
||||||
|
<string name="combov2_combo_alert">Оповещение Combo</string>
|
||||||
|
<string name="combov2_last_bolus">%1$.1f%2$s(%3$s)</string>
|
||||||
<string name="combov2_current_tbr">%1$d%% (%2$d мин осталось)</string>
|
<string name="combov2_current_tbr">%1$d%% (%2$d мин осталось)</string>
|
||||||
|
<string name="combov2_current_tbr_less_than_1min">%1$d%% (осталось меньше 1 минуты)</string>
|
||||||
|
<string name="combov2_load_tdds_cancelled">Загрузка TDD отменена</string>
|
||||||
|
<string name="combov2_retrieving_tdds_failed">Не удалось получить TDD</string>
|
||||||
|
<string name="combov2_no_activity">{fa-bed}</string>
|
||||||
|
<string name="combov2_battery_empty_indicator">{fa-battery-empty}</string>
|
||||||
|
<string name="combov2_battery_low_indicator">{fa-battery-quarter}</string>
|
||||||
|
<string name="combov2_battery_full_indicator">{fa-battery-full}</string>
|
||||||
<string name="combov2_battery_low_warning">Низкий заряд батареи помпы</string>
|
<string name="combov2_battery_low_warning">Низкий заряд батареи помпы</string>
|
||||||
|
<string name="combov2_reservoir_low_warning">Низкий уровень инсулина в картридже помпы</string>
|
||||||
|
<string name="combov2_setting_tbr_succeeded">Настройки TBR выполнены</string>
|
||||||
|
<string name="combov2_setting_tbr_failed">Не удалось установить TBR</string>
|
||||||
|
<string name="combov2_hit_unexpected_tbr_limit">Непредвиденный предел, встретившийся при настройке TBR: целевой процент составил %1$d%%, а достиг предела %1$d%%</string>
|
||||||
|
<string name="combov2_cannot_set_absolute_tbr_if_basal_zero">Невозможно установить абсолютный TBR, если базовая скорость равна нулю</string>
|
||||||
|
<string name="combov2_pair_with_pump_summary">Выполнить сопряжение AndroidAPS и Android с помпой Accu-Chek Combo</string>
|
||||||
|
<string name="combov2_unpair_pump_summary">Отключить AndroidAPS и AndroidAPS от помпы Accu-Chek Combo</string>
|
||||||
|
<string name="combov2_unknown_tbr_detected">Обнаружена и остановлена неизвестная временная базальная скоростьTBR; в процентах: %1$d%%; оставшаяся продолжительность: %2$s</string>
|
||||||
|
<string name="combov2_connection_error">Ошибка соединения: %1$s</string>
|
||||||
<string name="combov2_short_status_last_connection">Предыдущее соединение: %1$d мин. назад</string>
|
<string name="combov2_short_status_last_connection">Предыдущее соединение: %1$d мин. назад</string>
|
||||||
|
<string name="combov2_short_status_alert">Предупреждение: %s</string>
|
||||||
|
<string name="combov2_short_status_last_bolus">Предыдущий болюс: %1$s ед. @ %2$s</string>
|
||||||
<string name="combov2_short_status_temp_basal">Временн %s</string>
|
<string name="combov2_short_status_temp_basal">Временн %s</string>
|
||||||
<string name="combov2_short_status_reservoir">Резервуар: %dед</string>
|
<string name="combov2_short_status_reservoir">Резервуар: %dед</string>
|
||||||
<string name="combov2_short_status_battery_state_empty">пусто</string>
|
<string name="combov2_short_status_battery_state_empty">пусто</string>
|
||||||
<string name="combov2_short_status_battery_state_low">низкая</string>
|
<string name="combov2_short_status_battery_state_low">низкая</string>
|
||||||
|
<string name="combov2_short_status_battery_state_full">заряжена полностью</string>
|
||||||
|
<string name="combov2_short_status_battery_state">Батарея: %s</string>
|
||||||
|
<string name="combov2_automatic_reservoir_entry">Автоматически определять и вносить запись о замене резервуара инсулина</string>
|
||||||
|
<string name="combov2_automatic_battery_entry">Автоматически определять и вносить запись о замене батареи</string>
|
||||||
|
<string name="combov2_note_reservoir_change">Запись о замене резервуара инсулина автоматически вносится драйвером combov2</string>
|
||||||
|
<string name="combov2_note_battery_change">Запись о замене батареи автоматически вносится драйвером combov2</string>
|
||||||
|
<string name="combov2_timezone_changed">Часовой пояс изменен</string>
|
||||||
|
<string name="combov2_datetime_changed">Дата и/или время изменены</string>
|
||||||
|
<string name="combov2_dst_started">Начато летнее/зимнее время (ДСТ)</string>
|
||||||
|
<string name="combov2_dst_ended">Летнее/зимнее время окончено (ДСТ)</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -12,9 +12,6 @@
|
||||||
android:title="@string/combov2_pair_with_pump_title"
|
android:title="@string/combov2_pair_with_pump_title"
|
||||||
android:summary="@string/combov2_pair_with_pump_summary"
|
android:summary="@string/combov2_pair_with_pump_summary"
|
||||||
android:shouldDisableView="true">
|
android:shouldDisableView="true">
|
||||||
<intent
|
|
||||||
android:targetClass="info.nightscout.pump.combov2.activities.ComboV2PairingActivity"
|
|
||||||
android:targetPackage="info.nightscout.androidaps" />
|
|
||||||
</Preference>
|
</Preference>
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
<string name="diaconn_g8_useextended_title">Utiliser les bolus étendus pour > 200%%</string>
|
<string name="diaconn_g8_useextended_title">Utiliser les bolus étendus pour > 200%%</string>
|
||||||
<string name="diaconn_g8_visualizeextendedaspercentage_title">Afficher le bolus étendu en %%</string>
|
<string name="diaconn_g8_visualizeextendedaspercentage_title">Afficher le bolus étendu en %%</string>
|
||||||
<string name="diaconn_g8_bluetooth_status">État Bluetooth</string>
|
<string name="diaconn_g8_bluetooth_status">État Bluetooth</string>
|
||||||
<string name="diagonn_g8_tdd_label">DTI</string>
|
<string name="diagonn_g8_tdd_label">DTQ</string>
|
||||||
<string name="bolus_step">Incrément Bolus</string>
|
<string name="bolus_step">Incrément Bolus</string>
|
||||||
<string name="basal_step">Incrément Basal</string>
|
<string name="basal_step">Incrément Basal</string>
|
||||||
<string name="pump_firmware_label">Firmware</string>
|
<string name="pump_firmware_label">Firmware</string>
|
||||||
|
|
|
@ -37,18 +37,14 @@ import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchConfig;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchLifecycleEvent;
|
import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchLifecycleEvent;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchState;
|
import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchState;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.vo.TempBasal;
|
import info.nightscout.androidaps.plugins.pump.eopatch.vo.TempBasal;
|
||||||
import info.nightscout.interfaces.plugin.ActivePlugin;
|
|
||||||
import info.nightscout.interfaces.profile.ProfileFunction;
|
|
||||||
import info.nightscout.interfaces.pump.DetailedBolusInfo;
|
import info.nightscout.interfaces.pump.DetailedBolusInfo;
|
||||||
import info.nightscout.interfaces.pump.PumpSync;
|
import info.nightscout.interfaces.pump.PumpSync;
|
||||||
import info.nightscout.interfaces.pump.defs.PumpType;
|
import info.nightscout.interfaces.pump.defs.PumpType;
|
||||||
import info.nightscout.interfaces.queue.CommandQueue;
|
|
||||||
import info.nightscout.rx.AapsSchedulers;
|
import info.nightscout.rx.AapsSchedulers;
|
||||||
import info.nightscout.rx.bus.RxBus;
|
import info.nightscout.rx.bus.RxBus;
|
||||||
import info.nightscout.rx.events.EventCustomActionsChanged;
|
import info.nightscout.rx.events.EventCustomActionsChanged;
|
||||||
import info.nightscout.rx.events.EventPumpStatusChanged;
|
import info.nightscout.rx.events.EventPumpStatusChanged;
|
||||||
import info.nightscout.rx.events.EventRefreshOverview;
|
import info.nightscout.rx.events.EventRefreshOverview;
|
||||||
import info.nightscout.rx.logging.AAPSLogger;
|
|
||||||
import info.nightscout.shared.interfaces.ResourceHelper;
|
import info.nightscout.shared.interfaces.ResourceHelper;
|
||||||
import info.nightscout.shared.sharedPreferences.SP;
|
import info.nightscout.shared.sharedPreferences.SP;
|
||||||
import info.nightscout.shared.utils.DateUtil;
|
import info.nightscout.shared.utils.DateUtil;
|
||||||
|
@ -63,10 +59,6 @@ public class PatchManager implements IPatchManager {
|
||||||
|
|
||||||
@Inject PatchManagerImpl patchManager;
|
@Inject PatchManagerImpl patchManager;
|
||||||
@Inject IPreferenceManager pm;
|
@Inject IPreferenceManager pm;
|
||||||
@Inject ProfileFunction profileFunction;
|
|
||||||
@Inject ActivePlugin activePlugin;
|
|
||||||
@Inject CommandQueue commandQueue;
|
|
||||||
@Inject AAPSLogger aapsLogger;
|
|
||||||
@Inject ResourceHelper resourceHelper;
|
@Inject ResourceHelper resourceHelper;
|
||||||
@Inject RxBus rxBus;
|
@Inject RxBus rxBus;
|
||||||
@Inject Context context;
|
@Inject Context context;
|
||||||
|
|
|
@ -54,7 +54,6 @@ import info.nightscout.androidaps.plugins.pump.eopatch.ble.task.StopComboBolusTa
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ble.task.StopExtBolusTask;
|
import info.nightscout.androidaps.plugins.pump.eopatch.ble.task.StopExtBolusTask;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ble.task.StopNowBolusTask;
|
import info.nightscout.androidaps.plugins.pump.eopatch.ble.task.StopNowBolusTask;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ble.task.StopTempBasalTask;
|
import info.nightscout.androidaps.plugins.pump.eopatch.ble.task.StopTempBasalTask;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ble.task.SyncBasalHistoryTask;
|
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ble.task.TaskBase;
|
import info.nightscout.androidaps.plugins.pump.eopatch.ble.task.TaskBase;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ble.task.TaskFunc;
|
import info.nightscout.androidaps.plugins.pump.eopatch.ble.task.TaskFunc;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.ble.task.UpdateConnectionTask;
|
import info.nightscout.androidaps.plugins.pump.eopatch.ble.task.UpdateConnectionTask;
|
||||||
|
@ -91,8 +90,6 @@ import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchConfig;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchState;
|
import info.nightscout.androidaps.plugins.pump.eopatch.vo.PatchState;
|
||||||
import info.nightscout.androidaps.plugins.pump.eopatch.vo.TempBasal;
|
import info.nightscout.androidaps.plugins.pump.eopatch.vo.TempBasal;
|
||||||
import info.nightscout.interfaces.pump.DetailedBolusInfo;
|
import info.nightscout.interfaces.pump.DetailedBolusInfo;
|
||||||
import info.nightscout.interfaces.pump.PumpSync;
|
|
||||||
import info.nightscout.interfaces.pump.defs.PumpType;
|
|
||||||
import info.nightscout.rx.AapsSchedulers;
|
import info.nightscout.rx.AapsSchedulers;
|
||||||
import info.nightscout.rx.logging.AAPSLogger;
|
import info.nightscout.rx.logging.AAPSLogger;
|
||||||
import info.nightscout.rx.logging.LTag;
|
import info.nightscout.rx.logging.LTag;
|
||||||
|
@ -111,7 +108,6 @@ public class PatchManagerImpl {
|
||||||
@Inject SP sp;
|
@Inject SP sp;
|
||||||
@Inject AAPSLogger aapsLogger;
|
@Inject AAPSLogger aapsLogger;
|
||||||
@Inject AapsSchedulers aapsSchedulers;
|
@Inject AapsSchedulers aapsSchedulers;
|
||||||
@Inject PumpSync pumpSync;
|
|
||||||
|
|
||||||
@Inject StartBondTask START_BOND;
|
@Inject StartBondTask START_BOND;
|
||||||
@Inject GetPatchInfoTask GET_PATCH_INFO;
|
@Inject GetPatchInfoTask GET_PATCH_INFO;
|
||||||
|
@ -562,9 +558,6 @@ public class PatchManagerImpl {
|
||||||
@Inject
|
@Inject
|
||||||
PatchStateManager patchStateManager;
|
PatchStateManager patchStateManager;
|
||||||
|
|
||||||
@Inject
|
|
||||||
SyncBasalHistoryTask syncBasalHistoryTask;
|
|
||||||
|
|
||||||
void onAlarmNotification(AlarmNotification notification) throws Throwable {
|
void onAlarmNotification(AlarmNotification notification) throws Throwable {
|
||||||
patchStateManager.updatePatchState(PatchState.create(notification.patchState, System.currentTimeMillis()));
|
patchStateManager.updatePatchState(PatchState.create(notification.patchState, System.currentTimeMillis()));
|
||||||
|
|
||||||
|
|
|
@ -80,10 +80,10 @@ public class PatchStateManager {
|
||||||
// Resume --> onBasalResume
|
// Resume --> onBasalResume
|
||||||
onBasalResumeState();
|
onBasalResumeState();
|
||||||
|
|
||||||
} else if (oldState.isNormalBasalAct() == false) {
|
} else if (!oldState.isNormalBasalAct()) {
|
||||||
// Start --> onBasalStarted
|
// Start --> onBasalStarted
|
||||||
}
|
}
|
||||||
} else if (oldState.isNormalBasalPaused() == false && newState.isNormalBasalPaused()) {
|
} else if (!oldState.isNormalBasalPaused() && newState.isNormalBasalPaused()) {
|
||||||
if (newState.isTempBasalAct()) {
|
if (newState.isTempBasalAct()) {
|
||||||
} else {
|
} else {
|
||||||
// pause
|
// pause
|
||||||
|
@ -93,25 +93,21 @@ public class PatchStateManager {
|
||||||
|
|
||||||
/* Temp Basal ------------------------------------------------------------------------------------------- */
|
/* Temp Basal ------------------------------------------------------------------------------------------- */
|
||||||
if (newState.isTempBasalAct()) {
|
if (newState.isTempBasalAct()) {
|
||||||
if (oldState.isTempBasalAct() == false) {
|
if (!oldState.isTempBasalAct()) {
|
||||||
// Start
|
// Start
|
||||||
onTempBasalStartState();
|
onTempBasalStartState();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean tempBasalStopped = false;
|
boolean tempBasalStopped = false;
|
||||||
boolean tempBasalFinished = false;
|
boolean tempBasalFinished = newState.isTempBasalDone() && !newState.isPatchInternalSuspended();
|
||||||
|
|
||||||
if (newState.isTempBasalDone() && !newState.isPatchInternalSuspended()) {
|
if (!oldState.isTempBasalDone()) {
|
||||||
tempBasalFinished = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (oldState.isTempBasalDone() == false) {
|
|
||||||
if (newState.isTempBasalDone()) {
|
if (newState.isTempBasalDone()) {
|
||||||
tempBasalStopped = true;
|
tempBasalStopped = true;
|
||||||
|
|
||||||
onTempBasalDoneState();
|
onTempBasalDoneState();
|
||||||
} else if (oldState.isTempBasalAct() && newState.isTempBasalAct() == false) {
|
} else if (oldState.isTempBasalAct() && !newState.isTempBasalAct()) {
|
||||||
tempBasalStopped = true;
|
tempBasalStopped = true;
|
||||||
|
|
||||||
onTempBasalCancelState();
|
onTempBasalCancelState();
|
||||||
|
@ -126,15 +122,15 @@ public class PatchStateManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newState.isTempBasalAct() == false && pm.getTempBasalManager().getStartedBasal() != null) {
|
if (!newState.isTempBasalAct() && pm.getTempBasalManager().getStartedBasal() != null) {
|
||||||
pm.getTempBasalManager().updateBasalStopped();
|
pm.getTempBasalManager().updateBasalStopped();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Now Bolus -------------------------------------------------------------------------------------------- */
|
/* Now Bolus -------------------------------------------------------------------------------------------- */
|
||||||
if (oldState.isNowBolusRegAct() == false && newState.isNowBolusRegAct() == true) {
|
if (!oldState.isNowBolusRegAct() && newState.isNowBolusRegAct()) {
|
||||||
// Start
|
// Start
|
||||||
} else if (oldState.isNowBolusDone() == false) {
|
} else if (!oldState.isNowBolusDone()) {
|
||||||
if (oldState.isNowBolusRegAct() && newState.isNowBolusRegAct() == false) {
|
if (oldState.isNowBolusRegAct() && !newState.isNowBolusRegAct()) {
|
||||||
// Cancel
|
// Cancel
|
||||||
} else if (newState.isNowBolusDone()) {
|
} else if (newState.isNowBolusDone()) {
|
||||||
// Done
|
// Done
|
||||||
|
@ -143,23 +139,23 @@ public class PatchStateManager {
|
||||||
|
|
||||||
BolusCurrent bolusCurrent = pm.getBolusCurrent();
|
BolusCurrent bolusCurrent = pm.getBolusCurrent();
|
||||||
|
|
||||||
if (newState.isNowBolusRegAct() == false && bolusCurrent.historyId(BolusType.NOW) > 0
|
if (!newState.isNowBolusRegAct() && bolusCurrent.historyId(BolusType.NOW) > 0
|
||||||
&& bolusCurrent.endTimeSynced(BolusType.NOW)) {
|
&& bolusCurrent.endTimeSynced(BolusType.NOW)) {
|
||||||
bolusCurrent.clearBolus(BolusType.NOW);
|
bolusCurrent.clearBolus(BolusType.NOW);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Extended Bolus --------------------------------------------------------------------------------------- */
|
/* Extended Bolus --------------------------------------------------------------------------------------- */
|
||||||
if (oldState.isExtBolusRegAct() == false && newState.isExtBolusRegAct() == true) {
|
if (!oldState.isExtBolusRegAct() && newState.isExtBolusRegAct()) {
|
||||||
// Start
|
// Start
|
||||||
} else if (oldState.isExtBolusDone() == false) {
|
} else if (!oldState.isExtBolusDone()) {
|
||||||
if (oldState.isExtBolusRegAct() && newState.isExtBolusRegAct() == false) {
|
if (oldState.isExtBolusRegAct() && !newState.isExtBolusRegAct()) {
|
||||||
// Cancel
|
// Cancel
|
||||||
} else if (newState.isExtBolusDone()) {
|
} else if (newState.isExtBolusDone()) {
|
||||||
// Done
|
// Done
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newState.isExtBolusRegAct() == false && bolusCurrent.historyId(BolusType.EXT) > 0
|
if (!newState.isExtBolusRegAct() && bolusCurrent.historyId(BolusType.EXT) > 0
|
||||||
&& bolusCurrent.endTimeSynced(BolusType.EXT)) {
|
&& bolusCurrent.endTimeSynced(BolusType.EXT)) {
|
||||||
bolusCurrent.clearBolus(BolusType.EXT);
|
bolusCurrent.clearBolus(BolusType.EXT);
|
||||||
}
|
}
|
||||||
|
@ -243,7 +239,7 @@ public class PatchStateManager {
|
||||||
if (normalBasal != null) {
|
if (normalBasal != null) {
|
||||||
pm.getNormalBasalManager().updateBasalStarted();
|
pm.getNormalBasalManager().updateBasalStarted();
|
||||||
normalBasal.updateNormalBasalIndex();
|
normalBasal.updateNormalBasalIndex();
|
||||||
pm.flushNormalBasalManager();;
|
pm.flushNormalBasalManager();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -101,7 +101,7 @@ public class SyncBasalHistoryTask extends TaskBase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public synchronized int updateInjected(float[] normal, float[] temp, int start, int end) {
|
public synchronized int updateInjected(float[] normal, float[] temp, int start, int end) {
|
||||||
if (pm.getPatchState().isPatchInternalSuspended() && pm.getPatchConfig().isInBasalPausedTime() == false) {
|
if (pm.getPatchState().isPatchInternalSuspended() && !pm.getPatchConfig().isInBasalPausedTime()) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ import io.reactivex.rxjava3.core.Single;
|
||||||
public class UpdateConnectionTask extends TaskBase {
|
public class UpdateConnectionTask extends TaskBase {
|
||||||
@Inject PatchStateManager patchStateManager;
|
@Inject PatchStateManager patchStateManager;
|
||||||
|
|
||||||
private UpdateConnection UPDATE_CONNECTION;
|
private final UpdateConnection UPDATE_CONNECTION;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public UpdateConnectionTask() {
|
public UpdateConnectionTask() {
|
||||||
|
|
|
@ -10,7 +10,7 @@ import kotlin.reflect.KClass
|
||||||
|
|
||||||
@MustBeDocumented
|
@MustBeDocumented
|
||||||
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)
|
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)
|
||||||
@kotlin.annotation.Retention(AnnotationRetention.RUNTIME)
|
@Retention(AnnotationRetention.RUNTIME)
|
||||||
@MapKey
|
@MapKey
|
||||||
internal annotation class ViewModelKey(val value: KClass<out ViewModel>)
|
internal annotation class ViewModelKey(val value: KClass<out ViewModel>)
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ import io.reactivex.rxjava3.subjects.BehaviorSubject
|
||||||
* BolusCurrent : 현재 패치에서 진행 중인 '볼루스의 정보'를 표현한 클래스.
|
* BolusCurrent : 현재 패치에서 진행 중인 '볼루스의 정보'를 표현한 클래스.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class BolusCurrent(): IPreference<BolusCurrent> {
|
class BolusCurrent : IPreference<BolusCurrent> {
|
||||||
@Transient
|
@Transient
|
||||||
private val subject: BehaviorSubject<BolusCurrent> = BehaviorSubject.create()
|
private val subject: BehaviorSubject<BolusCurrent> = BehaviorSubject.create()
|
||||||
|
|
||||||
|
|
|
@ -22,8 +22,7 @@ class PatchState: IPreference<PatchState> {
|
||||||
private val stateBytes: ByteArray
|
private val stateBytes: ByteArray
|
||||||
var updatedTimestamp: Long = 0
|
var updatedTimestamp: Long = 0
|
||||||
|
|
||||||
constructor(): this(ByteArray(SIZE), 0) {
|
constructor(): this(ByteArray(SIZE), 0)
|
||||||
}
|
|
||||||
|
|
||||||
constructor(stateBytes: ByteArray, updatedTimestamp: Long) {
|
constructor(stateBytes: ByteArray, updatedTimestamp: Long) {
|
||||||
this.stateBytes = stateBytes
|
this.stateBytes = stateBytes
|
||||||
|
|
|
@ -92,6 +92,7 @@
|
||||||
<string name="patch_communication_succeed_message">Подключено к Patch.</string>
|
<string name="patch_communication_succeed_message">Подключено к Patch.</string>
|
||||||
<string name="patch_cancel_pairing">Отменить сопряжение</string>
|
<string name="patch_cancel_pairing">Отменить сопряжение</string>
|
||||||
<string name="symbol_days">дней</string>
|
<string name="symbol_days">дней</string>
|
||||||
|
<string name="all_dose_unit">  ед</string>
|
||||||
<string name="insulin_suspend_msg1">После приостановки текущий болюс & Временный базал будет отменен. \n\nСкорость базала: %1$s ед/ч\nОсталось времени: %2$s\n& инсулина: %3$.2f U</string>
|
<string name="insulin_suspend_msg1">После приостановки текущий болюс & Временный базал будет отменен. \n\nСкорость базала: %1$s ед/ч\nОсталось времени: %2$s\n& инсулина: %3$.2f U</string>
|
||||||
<string name="insulin_suspend_msg2">После приостановки текущий болюс будет отменен. \n\n Осталось инсулина: %1$.2f U</string>
|
<string name="insulin_suspend_msg2">После приостановки текущий болюс будет отменен. \n\n Осталось инсулина: %1$.2f U</string>
|
||||||
<string name="insulin_suspend_msg3">После приостановки текущий Временный базал будет отменен.\n\n Скорость базала: %1$s ед/ч\n Осталось времени: %2$s</string>
|
<string name="insulin_suspend_msg3">После приостановки текущий Временный базал будет отменен.\n\n Скорость базала: %1$s ед/ч\n Осталось времени: %2$s</string>
|
||||||
|
|
|
@ -79,10 +79,8 @@ class MedtronicUITask {
|
||||||
|
|
||||||
MedtronicCommandType.SetTemporaryBasal -> {
|
MedtronicCommandType.SetTemporaryBasal -> {
|
||||||
val tbr = getTbrSettings()
|
val tbr = getTbrSettings()
|
||||||
if (tbr != null) {
|
|
||||||
result = communicationManager.setTemporaryBasal(tbr)
|
result = communicationManager.setTemporaryBasal(tbr)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
MedtronicCommandType.ReadTemporaryBasal -> {
|
MedtronicCommandType.ReadTemporaryBasal -> {
|
||||||
result = communicationManager.getTemporaryBasal()
|
result = communicationManager.getTemporaryBasal()
|
||||||
|
@ -128,7 +126,7 @@ class MedtronicUITask {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getTbrSettings(): TempBasalPair? {
|
private fun getTbrSettings(): TempBasalPair {
|
||||||
return TempBasalPair(getDoubleFromParameters(0)!!, //
|
return TempBasalPair(getDoubleFromParameters(0)!!, //
|
||||||
false, //
|
false, //
|
||||||
getIntegerFromParameters(1))
|
getIntegerFromParameters(1))
|
||||||
|
|
|
@ -13,7 +13,7 @@ import kotlin.reflect.KClass
|
||||||
annotation class OmnipodPluginQualifier
|
annotation class OmnipodPluginQualifier
|
||||||
|
|
||||||
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)
|
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER)
|
||||||
@kotlin.annotation.Retention(AnnotationRetention.RUNTIME)
|
@Retention(AnnotationRetention.RUNTIME)
|
||||||
@MapKey
|
@MapKey
|
||||||
annotation class ViewModelKey(val value: KClass<out ViewModel>)
|
annotation class ViewModelKey(val value: KClass<out ViewModel>)
|
||||||
|
|
||||||
|
|
|
@ -309,7 +309,7 @@ class OmnipodDashManagerImpl @Inject constructor(
|
||||||
.setUniqueId(podStateManager.uniqueId!!.toInt())
|
.setUniqueId(podStateManager.uniqueId!!.toInt())
|
||||||
.setSequenceNumber(podStateManager.messageSequenceNumber)
|
.setSequenceNumber(podStateManager.messageSequenceNumber)
|
||||||
.setNonce(NONCE)
|
.setNonce(NONCE)
|
||||||
.setNumberOfUnits(Round.roundTo(podStateManager.firstPrimeBolusVolume!! * PodConstants.POD_PULSE_BOLUS_UNITS, POD_PULSE_BOLUS_UNITS))
|
.setNumberOfUnits(Round.roundTo(podStateManager.firstPrimeBolusVolume!! * POD_PULSE_BOLUS_UNITS, POD_PULSE_BOLUS_UNITS))
|
||||||
.setDelayBetweenPulsesInEighthSeconds(podStateManager.primePulseRate!!.toByte())
|
.setDelayBetweenPulsesInEighthSeconds(podStateManager.primePulseRate!!.toByte())
|
||||||
.setProgramReminder(ProgramReminder(atStart = false, atEnd = false, atInterval = 0))
|
.setProgramReminder(ProgramReminder(atStart = false, atEnd = false, atInterval = 0))
|
||||||
.build(),
|
.build(),
|
||||||
|
@ -412,7 +412,7 @@ class OmnipodDashManagerImpl @Inject constructor(
|
||||||
)
|
)
|
||||||
observables.add(
|
observables.add(
|
||||||
observeSendProgramBolusCommand(
|
observeSendProgramBolusCommand(
|
||||||
Round.roundTo(podStateManager.secondPrimeBolusVolume!! * PodConstants.POD_PULSE_BOLUS_UNITS, PodConstants.POD_PULSE_BOLUS_UNITS),
|
Round.roundTo(podStateManager.secondPrimeBolusVolume!! * POD_PULSE_BOLUS_UNITS, POD_PULSE_BOLUS_UNITS),
|
||||||
podStateManager.primePulseRate!!.toByte(),
|
podStateManager.primePulseRate!!.toByte(),
|
||||||
confirmationBeeps = false,
|
confirmationBeeps = false,
|
||||||
completionBeeps = false
|
completionBeeps = false
|
||||||
|
|
|
@ -75,7 +75,6 @@ abstract class PumpPluginAbstract protected constructor(
|
||||||
protected var displayConnectionMessages = false
|
protected var displayConnectionMessages = false
|
||||||
|
|
||||||
var pumpType: PumpType = PumpType.GENERIC_AAPS
|
var pumpType: PumpType = PumpType.GENERIC_AAPS
|
||||||
get() = field
|
|
||||||
set(value) {
|
set(value) {
|
||||||
field = value
|
field = value
|
||||||
pumpDescription.fillFor(value)
|
pumpDescription.fillFor(value)
|
||||||
|
|
|
@ -9,6 +9,5 @@ public enum BasalProfileStatus {
|
||||||
NotInitialized, //
|
NotInitialized, //
|
||||||
ProfileOK, //
|
ProfileOK, //
|
||||||
ProfileChanged, //
|
ProfileChanged, //
|
||||||
;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,11 +65,11 @@ enum class PumpHistoryEntryGroup(val resourceId: Int, val pumpTypeGroupConfig: P
|
||||||
if (pumpTypeGroupConfig == PumpTypeGroupConfig.All) {
|
if (pumpTypeGroupConfig == PumpTypeGroupConfig.All) {
|
||||||
outList = translatedList!!.stream()
|
outList = translatedList!!.stream()
|
||||||
.filter { pre -> pre.pumpTypeGroupConfig == PumpTypeGroupConfig.All }
|
.filter { pre -> pre.pumpTypeGroupConfig == PumpTypeGroupConfig.All }
|
||||||
.toList();
|
.toList()
|
||||||
} else {
|
} else {
|
||||||
outList = translatedList!!.stream()
|
outList = translatedList!!.stream()
|
||||||
.filter { pre -> (pre.pumpTypeGroupConfig == PumpTypeGroupConfig.All || pre.pumpTypeGroupConfig == pumpTypeGroupConfig) }
|
.filter { pre -> (pre.pumpTypeGroupConfig == PumpTypeGroupConfig.All || pre.pumpTypeGroupConfig == pumpTypeGroupConfig) }
|
||||||
.toList();
|
.toList()
|
||||||
}
|
}
|
||||||
|
|
||||||
return outList
|
return outList
|
||||||
|
|
|
@ -28,22 +28,21 @@ enum class PumpUpdateFragmentType {
|
||||||
Custom_8
|
Custom_8
|
||||||
;
|
;
|
||||||
|
|
||||||
final var children: List<PumpUpdateFragmentType>? = null
|
var children: List<PumpUpdateFragmentType>? = null
|
||||||
|
|
||||||
constructor() {
|
constructor()
|
||||||
}
|
|
||||||
|
|
||||||
constructor(children: List<PumpUpdateFragmentType>) {
|
constructor(children: List<PumpUpdateFragmentType>) {
|
||||||
this.children = children;
|
this.children = children
|
||||||
}
|
}
|
||||||
|
|
||||||
fun isOptionIncluded(type: PumpUpdateFragmentType): Boolean {
|
fun isOptionIncluded(type: PumpUpdateFragmentType): Boolean {
|
||||||
if (this == type)
|
if (this == type)
|
||||||
return true
|
return true
|
||||||
else if (this.children != null && this.children!!.contains(type))
|
else if (this.children != null && this.children!!.contains(type))
|
||||||
return true;
|
return true
|
||||||
|
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,4 +1,3 @@
|
||||||
package info.nightscout.pump.common.driver.history
|
package info.nightscout.pump.common.driver.history
|
||||||
|
|
||||||
interface PumpDataConverter {
|
interface PumpDataConverter
|
||||||
}
|
|
|
@ -7,7 +7,7 @@ import java.util.GregorianCalendar
|
||||||
abstract class PumpHistoryDataProviderAbstract : PumpHistoryDataProvider {
|
abstract class PumpHistoryDataProviderAbstract : PumpHistoryDataProvider {
|
||||||
|
|
||||||
override fun getInitialData(): List<PumpHistoryEntry> {
|
override fun getInitialData(): List<PumpHistoryEntry> {
|
||||||
return getData(getInitialPeriod());
|
return getData(getInitialPeriod())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getSpinnerWidthInPixels(): Int {
|
override fun getSpinnerWidthInPixels(): Int {
|
||||||
|
|
|
@ -4,5 +4,4 @@ import info.nightscout.rx.events.Event
|
||||||
|
|
||||||
class EventPumpChanged(var serialNumber: String,
|
class EventPumpChanged(var serialNumber: String,
|
||||||
var connectionAddress: String,
|
var connectionAddress: String,
|
||||||
var parameters: MutableMap<String, Any>? = null) : Event() {
|
var parameters: MutableMap<String, Any>? = null) : Event()
|
||||||
}
|
|
|
@ -2,5 +2,4 @@ package info.nightscout.pump.common.events
|
||||||
|
|
||||||
import info.nightscout.rx.events.Event
|
import info.nightscout.rx.events.Event
|
||||||
|
|
||||||
class EventPumpConnectionParametersChanged : Event() {
|
class EventPumpConnectionParametersChanged : Event()
|
||||||
}
|
|
|
@ -77,7 +77,7 @@ data class PumpDbEntryCarbs(var date: Long,
|
||||||
var pumpId: Long? = null) {
|
var pumpId: Long? = null) {
|
||||||
|
|
||||||
constructor(detailedBolusInfo: DetailedBolusInfo,
|
constructor(detailedBolusInfo: DetailedBolusInfo,
|
||||||
creator: info.nightscout.pump.common.sync.PumpSyncEntriesCreator
|
creator: PumpSyncEntriesCreator
|
||||||
) : this(detailedBolusInfo.timestamp,
|
) : this(detailedBolusInfo.timestamp,
|
||||||
detailedBolusInfo.carbs,
|
detailedBolusInfo.carbs,
|
||||||
creator.model(),
|
creator.model(),
|
||||||
|
|
|
@ -110,7 +110,7 @@ class PumpSyncStorage @Inject constructor(
|
||||||
return pumpSyncStorageTBR
|
return pumpSyncStorageTBR
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addBolusWithTempId(detailedBolusInfo: DetailedBolusInfo, writeToInternalHistory: Boolean, creator: info.nightscout.pump.common.sync.PumpSyncEntriesCreator): Boolean {
|
fun addBolusWithTempId(detailedBolusInfo: DetailedBolusInfo, writeToInternalHistory: Boolean, creator: PumpSyncEntriesCreator): Boolean {
|
||||||
val temporaryId = creator.generateTempId(detailedBolusInfo.timestamp)
|
val temporaryId = creator.generateTempId(detailedBolusInfo.timestamp)
|
||||||
val result = pumpSync.addBolusWithTempId(
|
val result = pumpSync.addBolusWithTempId(
|
||||||
detailedBolusInfo.timestamp,
|
detailedBolusInfo.timestamp,
|
||||||
|
@ -157,7 +157,7 @@ class PumpSyncStorage @Inject constructor(
|
||||||
"carbs=${carbsDto.carbs}, pumpSerial=${carbsDto.serialNumber}] - Result: $result")
|
"carbs=${carbsDto.carbs}, pumpSerial=${carbsDto.serialNumber}] - Result: $result")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addTemporaryBasalRateWithTempId(temporaryBasal: PumpDbEntryTBR, writeToInternalHistory: Boolean, creator: info.nightscout.pump.common.sync.PumpSyncEntriesCreator): Boolean {
|
fun addTemporaryBasalRateWithTempId(temporaryBasal: PumpDbEntryTBR, writeToInternalHistory: Boolean, creator: PumpSyncEntriesCreator): Boolean {
|
||||||
val timeNow: Long = System.currentTimeMillis()
|
val timeNow: Long = System.currentTimeMillis()
|
||||||
val temporaryId = creator.generateTempId(timeNow)
|
val temporaryId = creator.generateTempId(timeNow)
|
||||||
|
|
||||||
|
|
|
@ -72,14 +72,6 @@ class PumpHistoryActivity : DaggerAppCompatActivity() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
|
||||||
super.onResume()
|
|
||||||
//filterHistory(selectedGroup)
|
|
||||||
//setHistoryTypeSpinner()
|
|
||||||
//aapsLogger.info(LTag.PUMP, "onResume")
|
|
||||||
//binding.pumpHistoryRoot.requestLayout()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun setHistoryTypeSpinner() {
|
private fun setHistoryTypeSpinner() {
|
||||||
manualChange = true
|
manualChange = true
|
||||||
for (i in typeListFull!!.indices) {
|
for (i in typeListFull!!.indices) {
|
||||||
|
@ -119,12 +111,12 @@ class PumpHistoryActivity : DaggerAppCompatActivity() {
|
||||||
binding.pumpHistoryText.text = historyDataProvider.getText(PumpHistoryText.PUMP_HISTORY)
|
binding.pumpHistoryText.text = historyDataProvider.getText(PumpHistoryText.PUMP_HISTORY)
|
||||||
|
|
||||||
binding.pumpHistoryType.adapter = spinnerAdapter
|
binding.pumpHistoryType.adapter = spinnerAdapter
|
||||||
binding.pumpHistoryType.getLayoutParams().width = fromDpToSize(historyDataProvider.getSpinnerWidthInPixels())
|
binding.pumpHistoryType.layoutParams.width = fromDpToSize(historyDataProvider.getSpinnerWidthInPixels())
|
||||||
binding.pumpHistoryType.requestLayout();
|
binding.pumpHistoryType.requestLayout()
|
||||||
binding.pumpHistoryType.setOnItemSelectedListener(object : AdapterView.OnItemSelectedListener {
|
binding.pumpHistoryType.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
|
||||||
override fun onItemSelected(parent: AdapterView<*>?, view: View, position: Int, id: Long) {
|
override fun onItemSelected(parent: AdapterView<*>?, view: View, position: Int, id: Long) {
|
||||||
if (manualChange) return
|
if (manualChange) return
|
||||||
val selected = binding.pumpHistoryType.getSelectedItem() as TypeList
|
val selected = binding.pumpHistoryType.selectedItem as TypeList
|
||||||
showingType = selected
|
showingType = selected
|
||||||
selectedGroup = selected.entryGroup
|
selectedGroup = selected.entryGroup
|
||||||
filterHistory(selectedGroup)
|
filterHistory(selectedGroup)
|
||||||
|
@ -138,7 +130,7 @@ class PumpHistoryActivity : DaggerAppCompatActivity() {
|
||||||
if (manualChange) return
|
if (manualChange) return
|
||||||
filterHistory(PumpHistoryEntryGroup.All)
|
filterHistory(PumpHistoryEntryGroup.All)
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
binding.pumpHistoryTypeText.requestLayout()
|
binding.pumpHistoryTypeText.requestLayout()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ object ProfileUtil {
|
||||||
return if (stringBuilder.length > 3) stringBuilder.substring(0, stringBuilder.length - 2) else stringBuilder.toString()
|
return if (stringBuilder.length > 3) stringBuilder.substring(0, stringBuilder.length - 2) else stringBuilder.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getBasalProfilesDisplayableAsStringOfArray(profile: Profile, pumpType: PumpType): String? {
|
fun getBasalProfilesDisplayableAsStringOfArray(profile: Profile, pumpType: PumpType): String {
|
||||||
val stringBuilder = java.lang.StringBuilder()
|
val stringBuilder = java.lang.StringBuilder()
|
||||||
// for (basalValue in profiles) {
|
// for (basalValue in profiles) {
|
||||||
// val basalValueValue = pumpType.determineCorrectBasalSize(basalValue.value)
|
// val basalValueValue = pumpType.determineCorrectBasalSize(basalValue.value)
|
||||||
|
|
|
@ -157,7 +157,7 @@ public abstract class RileyLinkCommunicationManager<T extends RLMessage> {
|
||||||
|
|
||||||
// FIXME wakeUp successful !!!!!!!!!!!!!!!!!!
|
// FIXME wakeUp successful !!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
nextWakeUpRequired = System.currentTimeMillis() + (receiverDeviceAwakeForMinutes * 60 * 1000);
|
nextWakeUpRequired = System.currentTimeMillis() + ((long) receiverDeviceAwakeForMinutes * 60 * 1000);
|
||||||
} else {
|
} else {
|
||||||
aapsLogger.debug(LTag.PUMPBTCOMM, "Last pump communication was recent, not waking pump.");
|
aapsLogger.debug(LTag.PUMPBTCOMM, "Last pump communication was recent, not waking pump.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,3 +40,4 @@ include ':pump:pump-common'
|
||||||
include ':pump:pump-core'
|
include ':pump:pump-core'
|
||||||
include ':pump:rileylink'
|
include ':pump:rileylink'
|
||||||
include ':plugins:sync'
|
include ':plugins:sync'
|
||||||
|
include ':workflow'
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
<!-- Activities-->
|
<!-- Activities-->
|
||||||
<string name="activity_monitor">Moniteur d\'activité</string>
|
<string name="activity_monitor">Moniteur d\'activité</string>
|
||||||
<string name="do_you_want_reset_stats">Voulez-vous réinitialiser les statistiques d\'activité ?</string>
|
<string name="do_you_want_reset_stats">Voulez-vous réinitialiser les statistiques d\'activité ?</string>
|
||||||
|
<string name="do_you_want_reset_tdd_stats">Voulez-vous réinitialiser les statistiques de DTQ ?</string>
|
||||||
<string name="statistics">Statistiques</string>
|
<string name="statistics">Statistiques</string>
|
||||||
<string name="calculation_in_progress">Calcul en cours</string>
|
<string name="calculation_in_progress">Calcul en cours</string>
|
||||||
<string name="invalid_age">Âge invalide</string>
|
<string name="invalid_age">Âge invalide</string>
|
||||||
|
@ -117,8 +118,8 @@
|
||||||
<string name="motol_default_profile">Profil par défaut</string>
|
<string name="motol_default_profile">Profil par défaut</string>
|
||||||
<string name="current_profile">Profil actuel</string>
|
<string name="current_profile">Profil actuel</string>
|
||||||
<string name="available_profile">Profils disponibles</string>
|
<string name="available_profile">Profils disponibles</string>
|
||||||
<string name="format_with_tdd">Âge: %1$d DTI: %2$.0f U</string>
|
<string name="format_with_tdd">Âge: %1$d DTQ: %2$.0f U</string>
|
||||||
<string name="format_with_tdd_and_pct">Âge: %1$d DTI: %2$.0f U %3$d%%</string>
|
<string name="format_with_tdd_and_pct">Âge: %1$d DTQ: %2$.0f U %3$d%%</string>
|
||||||
<string name="format_with_weight">Âge: %1$d Poids: %2$.0f kg</string>
|
<string name="format_with_weight">Âge: %1$d Poids: %2$.0f kg</string>
|
||||||
<string name="dpv_default_profile">Profil par défaut DPV</string>
|
<string name="dpv_default_profile">Profil par défaut DPV</string>
|
||||||
<string name="invalid_pct">% saisi invalide</string>
|
<string name="invalid_pct">% saisi invalide</string>
|
||||||
|
|
|
@ -102,6 +102,10 @@
|
||||||
<string name="careportal_remove_started_events">Удалить записи о начале работы AAPS</string>
|
<string name="careportal_remove_started_events">Удалить записи о начале работы AAPS</string>
|
||||||
<string name="hide_loop">Скрыть цикл</string>
|
<string name="hide_loop">Скрыть цикл</string>
|
||||||
<string name="show_loop">Показать цикл</string>
|
<string name="show_loop">Показать цикл</string>
|
||||||
|
<string name="user_entry">Запись пользователя</string>
|
||||||
|
<string name="clone_label">Клонировать</string>
|
||||||
|
<string name="show_loop_records">Показать записи цикла</string>
|
||||||
|
<string name="show_hide_records">Скрыть записи цикла</string>
|
||||||
<!-- ProfileHelperActivity -->
|
<!-- ProfileHelperActivity -->
|
||||||
<string name="profile1">Профиль 1</string>
|
<string name="profile1">Профиль 1</string>
|
||||||
<string name="profile2">Профиль 2</string>
|
<string name="profile2">Профиль 2</string>
|
||||||
|
|
|
@ -58,10 +58,6 @@ class DataLayerListenerServiceWear : WearableListenerService() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPeerConnected(p0: Node) {
|
|
||||||
super.onPeerConnected(p0)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCapabilityChanged(p0: CapabilityInfo) {
|
override fun onCapabilityChanged(p0: CapabilityInfo) {
|
||||||
super.onCapabilityChanged(p0)
|
super.onCapabilityChanged(p0)
|
||||||
handler.post { updateTranscriptionCapability() }
|
handler.post { updateTranscriptionCapability() }
|
||||||
|
|
|
@ -113,7 +113,7 @@
|
||||||
<string name="status_pump">Pompe</string>
|
<string name="status_pump">Pompe</string>
|
||||||
<string name="status_loop">Boucle</string>
|
<string name="status_loop">Boucle</string>
|
||||||
<string name="status_profile_switch">Changement de profil</string>
|
<string name="status_profile_switch">Changement de profil</string>
|
||||||
<string name="status_tdd">DTI</string>
|
<string name="status_tdd">DTQ</string>
|
||||||
<string name="activity_carb">GA</string>
|
<string name="activity_carb">GA</string>
|
||||||
<string name="activity_IOB">IA</string>
|
<string name="activity_IOB">IA</string>
|
||||||
<string name="activity_no_status">aucun statut</string>
|
<string name="activity_no_status">aucun statut</string>
|
||||||
|
|
1
workflow/.gitignore
vendored
Normal file
1
workflow/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/build
|
29
workflow/build.gradle
Normal file
29
workflow/build.gradle
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
plugins {
|
||||||
|
id 'com.android.library'
|
||||||
|
id 'kotlin-android'
|
||||||
|
id 'kotlin-kapt'
|
||||||
|
id 'kotlin-allopen'
|
||||||
|
id 'com.hiya.jacoco-android'
|
||||||
|
}
|
||||||
|
|
||||||
|
apply from: "${project.rootDir}/core/core-main/android_dependencies.gradle"
|
||||||
|
apply from: "${project.rootDir}/core/core-main/android_module_dependencies.gradle"
|
||||||
|
apply from: "${project.rootDir}/core/core-main/test_dependencies.gradle"
|
||||||
|
apply from: "${project.rootDir}/core/core-main/jacoco_global.gradle"
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace 'info.nightscout.workflow'
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation project(':core:libraries')
|
||||||
|
implementation project(':core:graphview')
|
||||||
|
implementation project(':app-wear-shared:shared')
|
||||||
|
implementation project(':database:entities')
|
||||||
|
implementation project(':database:impl')
|
||||||
|
implementation project(':core:core-main')
|
||||||
|
implementation project(':core:interfaces')
|
||||||
|
implementation project(':core:graph')
|
||||||
|
implementation project(':core:ui')
|
||||||
|
implementation project(':core:utils')
|
||||||
|
}
|
0
workflow/consumer-rules.pro
Normal file
0
workflow/consumer-rules.pro
Normal file
21
workflow/proguard-rules.pro
vendored
Normal file
21
workflow/proguard-rules.pro
vendored
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# Add project specific ProGuard rules here.
|
||||||
|
# You can control the set of applied configuration files using the
|
||||||
|
# proguardFiles setting in build.gradle.
|
||||||
|
#
|
||||||
|
# For more details, see
|
||||||
|
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||||
|
|
||||||
|
# If your project uses WebView with JS, uncomment the following
|
||||||
|
# and specify the fully qualified class name to the JavaScript interface
|
||||||
|
# class:
|
||||||
|
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||||
|
# public *;
|
||||||
|
#}
|
||||||
|
|
||||||
|
# Uncomment this to preserve the line number information for
|
||||||
|
# debugging stack traces.
|
||||||
|
#-keepattributes SourceFile,LineNumberTable
|
||||||
|
|
||||||
|
# If you keep the line number information, uncomment this to
|
||||||
|
# hide the original source file name.
|
||||||
|
#-renamesourcefileattribute SourceFile
|
4
workflow/src/main/AndroidManifest.xml
Normal file
4
workflow/src/main/AndroidManifest.xml
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest>
|
||||||
|
|
||||||
|
</manifest>
|
|
@ -1,4 +1,4 @@
|
||||||
package info.nightscout.androidaps.workflow
|
package info.nightscout.workflow
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.work.Worker
|
import androidx.work.Worker
|
|
@ -1,4 +1,4 @@
|
||||||
package info.nightscout.androidaps.workflow
|
package info.nightscout.workflow
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.work.Worker
|
import androidx.work.Worker
|
|
@ -1,4 +1,4 @@
|
||||||
package info.nightscout.androidaps.workflow
|
package info.nightscout.workflow
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.work.Worker
|
import androidx.work.Worker
|
|
@ -1,4 +1,4 @@
|
||||||
package info.nightscout.androidaps.workflow
|
package info.nightscout.workflow
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.DashPathEffect
|
import android.graphics.DashPathEffect
|
||||||
|
@ -8,14 +8,13 @@ import androidx.work.WorkerParameters
|
||||||
import androidx.work.workDataOf
|
import androidx.work.workDataOf
|
||||||
import com.jjoe64.graphview.series.LineGraphSeries
|
import com.jjoe64.graphview.series.LineGraphSeries
|
||||||
import dagger.android.HasAndroidInjector
|
import dagger.android.HasAndroidInjector
|
||||||
import info.nightscout.androidaps.R
|
import info.nightscout.core.events.EventIobCalculationProgress
|
||||||
import info.nightscout.core.graph.OverviewData
|
import info.nightscout.core.graph.OverviewData
|
||||||
import info.nightscout.core.graph.data.ScaledDataPoint
|
import info.nightscout.core.graph.data.ScaledDataPoint
|
||||||
import info.nightscout.core.utils.receivers.DataWorkerStorage
|
import info.nightscout.core.utils.receivers.DataWorkerStorage
|
||||||
import info.nightscout.core.workflow.CalculationWorkflow
|
import info.nightscout.core.workflow.CalculationWorkflow
|
||||||
import info.nightscout.interfaces.iob.IobCobCalculator
|
import info.nightscout.interfaces.iob.IobCobCalculator
|
||||||
import info.nightscout.interfaces.profile.ProfileFunction
|
import info.nightscout.interfaces.profile.ProfileFunction
|
||||||
import info.nightscout.plugins.iob.iobCobCalculator.events.EventIobCalculationProgress
|
|
||||||
import info.nightscout.rx.bus.RxBus
|
import info.nightscout.rx.bus.RxBus
|
||||||
import info.nightscout.shared.interfaces.ResourceHelper
|
import info.nightscout.shared.interfaces.ResourceHelper
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
|
@ -1,4 +1,4 @@
|
||||||
package info.nightscout.androidaps.workflow
|
package info.nightscout.workflow
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.work.Worker
|
import androidx.work.Worker
|
|
@ -1,4 +1,4 @@
|
||||||
package info.nightscout.androidaps.workflow
|
package info.nightscout.workflow
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.work.Worker
|
import androidx.work.Worker
|
|
@ -1,4 +1,4 @@
|
||||||
package info.nightscout.androidaps.workflow
|
package info.nightscout.workflow
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.DashPathEffect
|
import android.graphics.DashPathEffect
|
||||||
|
@ -9,8 +9,7 @@ import androidx.work.workDataOf
|
||||||
import com.jjoe64.graphview.series.BarGraphSeries
|
import com.jjoe64.graphview.series.BarGraphSeries
|
||||||
import com.jjoe64.graphview.series.LineGraphSeries
|
import com.jjoe64.graphview.series.LineGraphSeries
|
||||||
import dagger.android.HasAndroidInjector
|
import dagger.android.HasAndroidInjector
|
||||||
import info.nightscout.androidaps.R
|
import info.nightscout.core.events.EventIobCalculationProgress
|
||||||
import info.nightscout.core.iob.iobCobCalculator.data.AutosensDataObject
|
|
||||||
import info.nightscout.core.graph.OverviewData
|
import info.nightscout.core.graph.OverviewData
|
||||||
import info.nightscout.core.graph.data.DataPointWithLabelInterface
|
import info.nightscout.core.graph.data.DataPointWithLabelInterface
|
||||||
import info.nightscout.core.graph.data.DeviationDataPoint
|
import info.nightscout.core.graph.data.DeviationDataPoint
|
||||||
|
@ -20,6 +19,7 @@ import info.nightscout.core.graph.data.Scale
|
||||||
import info.nightscout.core.graph.data.ScaledDataPoint
|
import info.nightscout.core.graph.data.ScaledDataPoint
|
||||||
import info.nightscout.core.iob.combine
|
import info.nightscout.core.iob.combine
|
||||||
import info.nightscout.core.iob.copy
|
import info.nightscout.core.iob.copy
|
||||||
|
import info.nightscout.core.iob.iobCobCalculator.data.AutosensDataObject
|
||||||
import info.nightscout.core.utils.receivers.DataWorkerStorage
|
import info.nightscout.core.utils.receivers.DataWorkerStorage
|
||||||
import info.nightscout.core.workflow.CalculationWorkflow
|
import info.nightscout.core.workflow.CalculationWorkflow
|
||||||
import info.nightscout.database.ValueWrapper
|
import info.nightscout.database.ValueWrapper
|
||||||
|
@ -28,10 +28,9 @@ import info.nightscout.interfaces.aps.AutosensResult
|
||||||
import info.nightscout.interfaces.aps.SMBDefaults
|
import info.nightscout.interfaces.aps.SMBDefaults
|
||||||
import info.nightscout.interfaces.iob.IobCobCalculator
|
import info.nightscout.interfaces.iob.IobCobCalculator
|
||||||
import info.nightscout.interfaces.iob.IobTotal
|
import info.nightscout.interfaces.iob.IobTotal
|
||||||
|
import info.nightscout.interfaces.overview.OverviewMenus
|
||||||
import info.nightscout.interfaces.profile.ProfileFunction
|
import info.nightscout.interfaces.profile.ProfileFunction
|
||||||
import info.nightscout.interfaces.utils.DecimalFormatter
|
import info.nightscout.interfaces.utils.DecimalFormatter
|
||||||
import info.nightscout.plugins.general.overview.OverviewMenus
|
|
||||||
import info.nightscout.plugins.iob.iobCobCalculator.events.EventIobCalculationProgress
|
|
||||||
import info.nightscout.rx.bus.RxBus
|
import info.nightscout.rx.bus.RxBus
|
||||||
import info.nightscout.rx.logging.AAPSLogger
|
import info.nightscout.rx.logging.AAPSLogger
|
||||||
import info.nightscout.rx.logging.LTag
|
import info.nightscout.rx.logging.LTag
|
|
@ -1,4 +1,4 @@
|
||||||
package info.nightscout.androidaps.workflow
|
package info.nightscout.workflow
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.work.Worker
|
import androidx.work.Worker
|
||||||
|
@ -14,9 +14,9 @@ import info.nightscout.database.impl.AppRepository
|
||||||
import info.nightscout.interfaces.Config
|
import info.nightscout.interfaces.Config
|
||||||
import info.nightscout.interfaces.aps.Loop
|
import info.nightscout.interfaces.aps.Loop
|
||||||
import info.nightscout.interfaces.nsclient.ProcessedDeviceStatusData
|
import info.nightscout.interfaces.nsclient.ProcessedDeviceStatusData
|
||||||
|
import info.nightscout.interfaces.overview.OverviewMenus
|
||||||
import info.nightscout.interfaces.profile.DefaultValueHelper
|
import info.nightscout.interfaces.profile.DefaultValueHelper
|
||||||
import info.nightscout.interfaces.profile.ProfileFunction
|
import info.nightscout.interfaces.profile.ProfileFunction
|
||||||
import info.nightscout.plugins.general.overview.OverviewMenus
|
|
||||||
import info.nightscout.rx.bus.RxBus
|
import info.nightscout.rx.bus.RxBus
|
||||||
import info.nightscout.shared.interfaces.ResourceHelper
|
import info.nightscout.shared.interfaces.ResourceHelper
|
||||||
import info.nightscout.shared.utils.T
|
import info.nightscout.shared.utils.T
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue