Merge branch 'dev' into DanaRv2
This commit is contained in:
commit
5b25d28f42
|
@ -44,7 +44,7 @@ android {
|
|||
minSdkVersion 21
|
||||
targetSdkVersion 23
|
||||
versionCode 1400
|
||||
version "1.42"
|
||||
version "1.43"
|
||||
buildConfigField "String", "VERSION", '"' + version + '"'
|
||||
buildConfigField "String", "BUILDVERSION", generateGitBuild()
|
||||
}
|
||||
|
|
|
@ -54,6 +54,7 @@ import info.nightscout.androidaps.plugins.TempTargetRange.events.EventTempTarget
|
|||
import info.nightscout.androidaps.receivers.DataReceiver;
|
||||
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile;
|
||||
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSSgv;
|
||||
import info.nightscout.utils.SP;
|
||||
|
||||
|
||||
public class DataService extends IntentService {
|
||||
|
@ -98,8 +99,7 @@ public class DataService extends IntentService {
|
|||
|
||||
boolean isNSProfile = ConfigBuilderPlugin.getActiveProfile().getClass().equals(NSProfilePlugin.class);
|
||||
|
||||
SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
|
||||
boolean nsUploadOnly = SP.getBoolean("ns_upload_only", false);
|
||||
boolean nsUploadOnly = SP.getBoolean(R.string.key_ns_upload_only, false);
|
||||
|
||||
if (intent != null) {
|
||||
final String action = intent.getAction();
|
||||
|
@ -356,7 +356,7 @@ public class DataService extends IntentService {
|
|||
String activeProfile = bundles.getString("activeprofile");
|
||||
String profile = bundles.getString("profile");
|
||||
NSProfile nsProfile = new NSProfile(new JSONObject(profile), activeProfile);
|
||||
MainApp.bus().post(new EventNewBasalProfile(nsProfile));
|
||||
MainApp.bus().post(new EventNewBasalProfile(nsProfile, "NSClient"));
|
||||
|
||||
PumpInterface pump = MainApp.getConfigBuilder();
|
||||
if (pump != null) {
|
||||
|
|
|
@ -421,6 +421,16 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
|||
return new ArrayList<Treatment>();
|
||||
}
|
||||
|
||||
public void delete(TempBasal tempBasal) {
|
||||
try {
|
||||
getDaoTempBasals().delete(tempBasal);
|
||||
latestTreatmentChange = tempBasal.getTimeIndex();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
scheduleTreatmentChange();
|
||||
}
|
||||
|
||||
public List<TempTarget> getTemptargetsDataFromTime(long mills, boolean ascending) {
|
||||
try {
|
||||
Dao<TempTarget, Long> daoTempTargets = getDaoTempTargets();
|
||||
|
|
|
@ -7,8 +7,10 @@ import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile;
|
|||
*/
|
||||
public class EventNewBasalProfile {
|
||||
public NSProfile newNSProfile = null;
|
||||
public String from = "";
|
||||
|
||||
public EventNewBasalProfile(NSProfile newProfile) {
|
||||
public EventNewBasalProfile(NSProfile newProfile, String from) {
|
||||
newNSProfile = newProfile;
|
||||
this.from = from;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -618,7 +618,7 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick
|
|||
if (pump != null) {
|
||||
pump.setNewBasalProfile(nsProfile);
|
||||
log.debug("Setting new profile: " + profile);
|
||||
MainApp.bus().post(new EventNewBasalProfile(nsProfile));
|
||||
MainApp.bus().post(new EventNewBasalProfile(nsProfile, "NewNSTreatmentDialog"));
|
||||
} else {
|
||||
log.error("No active pump selected");
|
||||
}
|
||||
|
|
|
@ -928,6 +928,28 @@ public class ConfigBuilderPlugin implements PluginBase, PumpInterface, Constrain
|
|||
}
|
||||
}
|
||||
|
||||
public static void uploadOpenAPSOffline(double durationInMinutes) {
|
||||
try {
|
||||
Context context = MainApp.instance().getApplicationContext();
|
||||
JSONObject data = new JSONObject();
|
||||
data.put("eventType", "OpenAPS Offline");
|
||||
data.put("duration", durationInMinutes);
|
||||
data.put("created_at", DateUtil.toISOString(new Date()));
|
||||
data.put("enteredBy", MainApp.instance().getString(R.string.app_name));
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putString("action", "dbAdd");
|
||||
bundle.putString("collection", "treatments");
|
||||
bundle.putString("data", data.toString());
|
||||
Intent intent = new Intent(Intents.ACTION_DATABASE);
|
||||
intent.putExtras(bundle);
|
||||
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
|
||||
context.sendBroadcast(intent);
|
||||
DbLogger.dbAdd(intent, data.toString(), ConfigBuilderPlugin.class);
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void uploadTempBasalStartPercent(Integer percent, double durationInMinutes) {
|
||||
try {
|
||||
SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext());
|
||||
|
|
|
@ -156,7 +156,7 @@ public class IobCobCalculatorPlugin implements PluginBase {
|
|||
private void loadBgData() {
|
||||
//log.debug("Locking loadBgData");
|
||||
synchronized (dataLock) {
|
||||
onNewProfile(new EventNewBasalProfile(null));
|
||||
onNewProfile(new EventNewBasalProfile(null, "IobCobCalculator init"));
|
||||
bgReadings = MainApp.getDbHelper().getBgreadingsDataFromTime((long) (new Date().getTime() - 60 * 60 * 1000L * (24 + dia)), false);
|
||||
log.debug("BG data loaded. Size: " + bgReadings.size());
|
||||
}
|
||||
|
@ -545,6 +545,20 @@ public class IobCobCalculatorPlugin implements PluginBase {
|
|||
if (profile != null) {
|
||||
dia = profile.getDia();
|
||||
}
|
||||
if (ev.newNSProfile == null) { // on init no need of reset
|
||||
return;
|
||||
}
|
||||
synchronized (dataLock) {
|
||||
log.debug("Invalidating cached data because of new profile from " + ev.from + ". IOB: " + iobTable.size() + " Autosens: " + autosensDataTable.size() + " records");
|
||||
iobTable = new LongSparseArray<>();
|
||||
autosensDataTable = new LongSparseArray<>();
|
||||
}
|
||||
sHandler.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
calculateSensitivityData();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// When historical data is changed (comming from NS etc) finished calculations after this date must be invalidated
|
||||
|
|
|
@ -14,10 +14,12 @@ import org.slf4j.LoggerFactory;
|
|||
import java.util.Date;
|
||||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.interfaces.PluginBase;
|
||||
import info.nightscout.androidaps.plugins.NSClientInternal.NSClientInternalPlugin;
|
||||
import info.nightscout.androidaps.plugins.NSClientInternal.UploadQueue;
|
||||
import info.nightscout.androidaps.db.DbRequest;
|
||||
import info.nightscout.utils.SP;
|
||||
|
||||
public class DBAccessReceiver extends BroadcastReceiver {
|
||||
private static Logger log = LoggerFactory.getLogger(DBAccessReceiver.class);
|
||||
|
@ -32,6 +34,10 @@ public class DBAccessReceiver extends BroadcastReceiver {
|
|||
if (!nsClientInternalPlugin.isEnabled(PluginBase.GENERAL)) {
|
||||
return;
|
||||
}
|
||||
if (SP.getBoolean(R.string.key_ns_noupload, false)) {
|
||||
log.debug("Upload disabled. Message dropped");
|
||||
return;
|
||||
}
|
||||
wakeLock.acquire();
|
||||
try {
|
||||
Bundle bundles = intent.getExtras();
|
||||
|
|
|
@ -352,18 +352,20 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
|||
|
||||
@Override
|
||||
public boolean onContextItemSelected(MenuItem item) {
|
||||
final LoopPlugin activeloop = MainApp.getConfigBuilder().getActiveLoop();
|
||||
final LoopPlugin activeloop = ConfigBuilderPlugin.getActiveLoop();
|
||||
if (item.getTitle().equals(MainApp.sResources.getString(R.string.disableloop))) {
|
||||
activeloop.setFragmentEnabled(PluginBase.LOOP, false);
|
||||
activeloop.setFragmentVisible(PluginBase.LOOP, false);
|
||||
MainApp.getConfigBuilder().storeSettings();
|
||||
scheduleUpdateGUI("suspendmenu");
|
||||
ConfigBuilderPlugin.uploadOpenAPSOffline(60); // upload 60 min, we don;t know real duration
|
||||
return true;
|
||||
} else if (item.getTitle().equals(MainApp.sResources.getString(R.string.enableloop))) {
|
||||
activeloop.setFragmentEnabled(PluginBase.LOOP, true);
|
||||
activeloop.setFragmentVisible(PluginBase.LOOP, true);
|
||||
MainApp.getConfigBuilder().storeSettings();
|
||||
scheduleUpdateGUI("suspendmenu");
|
||||
ConfigBuilderPlugin.uploadOpenAPSOffline(0);
|
||||
return true;
|
||||
} else if (item.getTitle().equals(MainApp.sResources.getString(R.string.resume))) {
|
||||
activeloop.suspendTo(0L);
|
||||
|
@ -377,22 +379,27 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
|||
}
|
||||
}
|
||||
});
|
||||
ConfigBuilderPlugin.uploadOpenAPSOffline(0);
|
||||
return true;
|
||||
} else if (item.getTitle().equals(MainApp.sResources.getString(R.string.suspendloopfor1h))) {
|
||||
activeloop.suspendTo(new Date().getTime() + 60L * 60 * 1000);
|
||||
scheduleUpdateGUI("suspendmenu");
|
||||
ConfigBuilderPlugin.uploadOpenAPSOffline(60);
|
||||
return true;
|
||||
} else if (item.getTitle().equals(MainApp.sResources.getString(R.string.suspendloopfor2h))) {
|
||||
activeloop.suspendTo(new Date().getTime() + 2 * 60L * 60 * 1000);
|
||||
scheduleUpdateGUI("suspendmenu");
|
||||
ConfigBuilderPlugin.uploadOpenAPSOffline(120);
|
||||
return true;
|
||||
} else if (item.getTitle().equals(MainApp.sResources.getString(R.string.suspendloopfor3h))) {
|
||||
activeloop.suspendTo(new Date().getTime() + 3 * 60L * 60 * 1000);
|
||||
scheduleUpdateGUI("suspendmenu");
|
||||
ConfigBuilderPlugin.uploadOpenAPSOffline(180);
|
||||
return true;
|
||||
} else if (item.getTitle().equals(MainApp.sResources.getString(R.string.suspendloopfor10h))) {
|
||||
activeloop.suspendTo(new Date().getTime() + 10 * 60L * 60 * 1000);
|
||||
scheduleUpdateGUI("suspendmenu");
|
||||
ConfigBuilderPlugin.uploadOpenAPSOffline(600);
|
||||
return true;
|
||||
} else if (item.getTitle().equals(MainApp.sResources.getString(R.string.disconnectpumpfor30m))) {
|
||||
activeloop.suspendTo(new Date().getTime() + 30L * 60 * 1000);
|
||||
|
@ -406,6 +413,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
|||
}
|
||||
}
|
||||
});
|
||||
ConfigBuilderPlugin.uploadOpenAPSOffline(30);
|
||||
return true;
|
||||
} else if (item.getTitle().equals(MainApp.sResources.getString(R.string.disconnectpumpfor1h))) {
|
||||
activeloop.suspendTo(new Date().getTime() + 1 * 60L * 60 * 1000);
|
||||
|
@ -419,6 +427,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
|||
}
|
||||
}
|
||||
});
|
||||
ConfigBuilderPlugin.uploadOpenAPSOffline(60);
|
||||
return true;
|
||||
} else if (item.getTitle().equals(MainApp.sResources.getString(R.string.disconnectpumpfor2h))) {
|
||||
activeloop.suspendTo(new Date().getTime() + 2 * 60L * 60 * 1000);
|
||||
|
@ -432,6 +441,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
|||
}
|
||||
}
|
||||
});
|
||||
ConfigBuilderPlugin.uploadOpenAPSOffline(120);
|
||||
return true;
|
||||
} else if (item.getTitle().equals(MainApp.sResources.getString(R.string.disconnectpumpfor3h))) {
|
||||
activeloop.suspendTo(new Date().getTime() + 3 * 60L * 60 * 1000);
|
||||
|
@ -445,6 +455,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
|||
}
|
||||
}
|
||||
});
|
||||
ConfigBuilderPlugin.uploadOpenAPSOffline(180);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ import info.nightscout.androidaps.events.EventPreferenceChange;
|
|||
import info.nightscout.androidaps.events.EventRefreshGui;
|
||||
import info.nightscout.androidaps.interfaces.PluginBase;
|
||||
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin;
|
||||
import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin;
|
||||
import info.nightscout.androidaps.plugins.Loop.LoopPlugin;
|
||||
|
@ -42,6 +43,8 @@ import info.nightscout.utils.SP;
|
|||
import info.nightscout.utils.SafeParse;
|
||||
import info.nightscout.utils.XdripCalibrations;
|
||||
|
||||
import static info.nightscout.androidaps.R.string.profile;
|
||||
|
||||
/**
|
||||
* Created by mike on 05.08.2016.
|
||||
*/
|
||||
|
@ -51,11 +54,11 @@ public class SmsCommunicatorPlugin implements PluginBase {
|
|||
private static boolean fragmentEnabled = false;
|
||||
private static boolean fragmentVisible = true;
|
||||
|
||||
final long CONFIRM_TIMEOUT = 5 * 60 * 1000L;
|
||||
private final long CONFIRM_TIMEOUT = 5 * 60 * 1000L;
|
||||
|
||||
List<String> allowedNumbers = new ArrayList<String>();
|
||||
private List<String> allowedNumbers = new ArrayList<String>();
|
||||
|
||||
public class Sms {
|
||||
class Sms {
|
||||
String phoneNumber;
|
||||
String text;
|
||||
Date date;
|
||||
|
@ -69,21 +72,21 @@ public class SmsCommunicatorPlugin implements PluginBase {
|
|||
double calibrationRequested = 0d;
|
||||
int duration = 0;
|
||||
|
||||
public Sms(SmsMessage message) {
|
||||
Sms(SmsMessage message) {
|
||||
phoneNumber = message.getOriginatingAddress();
|
||||
text = message.getMessageBody();
|
||||
date = new Date(message.getTimestampMillis());
|
||||
received = true;
|
||||
}
|
||||
|
||||
public Sms(String phoneNumber, String text, Date date) {
|
||||
Sms(String phoneNumber, String text, Date date) {
|
||||
this.phoneNumber = phoneNumber;
|
||||
this.text = text;
|
||||
this.date = date;
|
||||
sent = true;
|
||||
}
|
||||
|
||||
public Sms(String phoneNumber, String text, Date date, String confirmCode) {
|
||||
Sms(String phoneNumber, String text, Date date, String confirmCode) {
|
||||
this.phoneNumber = phoneNumber;
|
||||
this.text = text;
|
||||
this.date = date;
|
||||
|
@ -96,12 +99,12 @@ public class SmsCommunicatorPlugin implements PluginBase {
|
|||
}
|
||||
}
|
||||
|
||||
Sms cancelTempBasalWaitingForConfirmation = null;
|
||||
Sms tempBasalWaitingForConfirmation = null;
|
||||
Sms bolusWaitingForConfirmation = null;
|
||||
Sms calibrationWaitingForConfirmation = null;
|
||||
Sms suspendWaitingForConfirmation = null;
|
||||
Date lastRemoteBolusTime = new Date(0);
|
||||
private Sms cancelTempBasalWaitingForConfirmation = null;
|
||||
private Sms tempBasalWaitingForConfirmation = null;
|
||||
private Sms bolusWaitingForConfirmation = null;
|
||||
private Sms calibrationWaitingForConfirmation = null;
|
||||
private Sms suspendWaitingForConfirmation = null;
|
||||
private Date lastRemoteBolusTime = new Date(0);
|
||||
|
||||
ArrayList<Sms> messages = new ArrayList<>();
|
||||
|
||||
|
@ -187,7 +190,7 @@ public class SmsCommunicatorPlugin implements PluginBase {
|
|||
}
|
||||
}
|
||||
|
||||
boolean isAllowedNumber(String number) {
|
||||
private boolean isAllowedNumber(String number) {
|
||||
for (String num : allowedNumbers) {
|
||||
if (num.equals(number)) return true;
|
||||
}
|
||||
|
@ -199,8 +202,8 @@ public class SmsCommunicatorPlugin implements PluginBase {
|
|||
|
||||
Object[] pdus = (Object[]) ev.bundle.get("pdus");
|
||||
// For every SMS message received
|
||||
for (int i = 0; i < pdus.length; i++) {
|
||||
SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]);
|
||||
for (Object pdu : pdus) {
|
||||
SmsMessage message = SmsMessage.createFromPdu((byte[]) pdu);
|
||||
processSms(new Sms(message));
|
||||
}
|
||||
}
|
||||
|
@ -233,25 +236,30 @@ public class SmsCommunicatorPlugin implements PluginBase {
|
|||
BgReading actualBG = GlucoseStatus.actualBg();
|
||||
BgReading lastBG = GlucoseStatus.lastBg();
|
||||
|
||||
NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile();
|
||||
String units = profile.getUnits();
|
||||
if (ConfigBuilderPlugin.getActiveProfile() == null || ConfigBuilderPlugin.getActiveProfile().getProfile() == null) {
|
||||
reply = MainApp.sResources.getString(R.string.noprofile);
|
||||
sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date()));
|
||||
return;
|
||||
}
|
||||
|
||||
Long agoMsec = new Date().getTime() - lastBG.timeIndex;
|
||||
int agoMin = (int) (agoMsec / 60d / 1000d);
|
||||
NSProfile profile = ConfigBuilderPlugin.getActiveProfile().getProfile();
|
||||
String units = profile.getUnits();
|
||||
|
||||
if (actualBG != null) {
|
||||
reply = MainApp.sResources.getString(R.string.sms_actualbg) + " " + actualBG.valueToUnitsToString(units) + ", ";
|
||||
} else if (lastBG != null) {
|
||||
Long agoMsec = new Date().getTime() - lastBG.timeIndex;
|
||||
int agoMin = (int) (agoMsec / 60d / 1000d);
|
||||
reply = MainApp.sResources.getString(R.string.sms_lastbg) + " " + lastBG.valueToUnitsToString(units) + " " + String.format(MainApp.sResources.getString(R.string.sms_minago), agoMin) + ", ";
|
||||
}
|
||||
GlucoseStatus glucoseStatus = GlucoseStatus.getGlucoseStatusData();
|
||||
if (glucoseStatus != null)
|
||||
reply += MainApp.sResources.getString(R.string.sms_delta) + " " + NSProfile.toUnitsString(glucoseStatus.delta, glucoseStatus.delta * Constants.MGDL_TO_MMOLL, units) + " " + units + ", ";
|
||||
|
||||
MainApp.getConfigBuilder().getActiveTreatments().updateTotalIOB();
|
||||
IobTotal bolusIob = MainApp.getConfigBuilder().getActiveTreatments().getLastCalculation().round();
|
||||
MainApp.getConfigBuilder().getActiveTempBasals().updateTotalIOB();
|
||||
IobTotal basalIob = MainApp.getConfigBuilder().getActiveTempBasals().getLastCalculation().round();
|
||||
ConfigBuilderPlugin.getActiveTreatments().updateTotalIOB();
|
||||
IobTotal bolusIob = ConfigBuilderPlugin.getActiveTreatments().getLastCalculation().round();
|
||||
ConfigBuilderPlugin.getActiveTempBasals().updateTotalIOB();
|
||||
IobTotal basalIob = ConfigBuilderPlugin.getActiveTempBasals().getLastCalculation().round();
|
||||
|
||||
reply += MainApp.sResources.getString(R.string.sms_iob) + " " + DecimalFormatter.to2Decimal(bolusIob.iob + basalIob.basaliob) + "U ("
|
||||
+ MainApp.sResources.getString(R.string.sms_bolus) + " " + DecimalFormatter.to2Decimal(bolusIob.iob) + "U "
|
||||
|
@ -303,10 +311,11 @@ public class SmsCommunicatorPlugin implements PluginBase {
|
|||
Answers.getInstance().logCustom(new CustomEvent("SMS_Loop_Status"));
|
||||
break;
|
||||
case "RESUME":
|
||||
final LoopPlugin activeloop = MainApp.getConfigBuilder().getActiveLoop();
|
||||
final LoopPlugin activeloop = ConfigBuilderPlugin.getActiveLoop();
|
||||
activeloop.suspendTo(0);
|
||||
MainApp.bus().post(new EventRefreshGui(false));
|
||||
reply = String.format(MainApp.sResources.getString(R.string.smscommunicator_loopresumed));
|
||||
ConfigBuilderPlugin.uploadOpenAPSOffline(0);
|
||||
reply = MainApp.sResources.getString(R.string.smscommunicator_loopresumed);
|
||||
sendSMSToAllNumbers(new Sms(receivedSms.phoneNumber, reply, new Date()));
|
||||
Answers.getInstance().logCustom(new CustomEvent("SMS_Loop_Resume"));
|
||||
break;
|
||||
|
@ -453,7 +462,7 @@ public class SmsCommunicatorPlugin implements PluginBase {
|
|||
PumpInterface pumpInterface = MainApp.getConfigBuilder();
|
||||
if (pumpInterface != null) {
|
||||
danaRPlugin = (DanaRPlugin) MainApp.getSpecificPlugin(DanaRPlugin.class);
|
||||
PumpEnactResult result = pumpInterface.deliverTreatment(MainApp.getConfigBuilder().getActiveInsulin(), bolusWaitingForConfirmation.bolusRequested, 0, null);
|
||||
PumpEnactResult result = pumpInterface.deliverTreatment(ConfigBuilderPlugin.getActiveInsulin(), bolusWaitingForConfirmation.bolusRequested, 0, null);
|
||||
if (result.success) {
|
||||
reply = String.format(MainApp.sResources.getString(R.string.smscommunicator_bolusdelivered), result.bolusDelivered);
|
||||
if (danaRPlugin != null)
|
||||
|
@ -494,7 +503,7 @@ public class SmsCommunicatorPlugin implements PluginBase {
|
|||
danaRPlugin = (DanaRPlugin) MainApp.getSpecificPlugin(DanaRPlugin.class);
|
||||
PumpEnactResult result = pumpInterface.cancelTempBasal();
|
||||
if (result.success) {
|
||||
reply = String.format(MainApp.sResources.getString(R.string.smscommunicator_tempbasalcanceled));
|
||||
reply = MainApp.sResources.getString(R.string.smscommunicator_tempbasalcanceled);
|
||||
if (danaRPlugin != null)
|
||||
reply += "\n" + danaRPlugin.shortStatus(true);
|
||||
sendSMSToAllNumbers(new Sms(receivedSms.phoneNumber, reply, new Date()));
|
||||
|
@ -510,7 +519,7 @@ public class SmsCommunicatorPlugin implements PluginBase {
|
|||
calibrationWaitingForConfirmation.processed = true;
|
||||
boolean result = XdripCalibrations.sendIntent(calibrationWaitingForConfirmation.calibrationRequested);
|
||||
if (result) {
|
||||
reply = String.format(MainApp.sResources.getString(R.string.smscommunicator_calibrationsent));
|
||||
reply = MainApp.sResources.getString(R.string.smscommunicator_calibrationsent);
|
||||
sendSMSToAllNumbers(new Sms(receivedSms.phoneNumber, reply, new Date()));
|
||||
} else {
|
||||
reply = MainApp.sResources.getString(R.string.smscommunicator_calibrationfailed);
|
||||
|
@ -519,10 +528,11 @@ public class SmsCommunicatorPlugin implements PluginBase {
|
|||
} else if (suspendWaitingForConfirmation != null && !suspendWaitingForConfirmation.processed &&
|
||||
suspendWaitingForConfirmation.confirmCode.equals(splited[0]) && new Date().getTime() - suspendWaitingForConfirmation.date.getTime() < CONFIRM_TIMEOUT) {
|
||||
suspendWaitingForConfirmation.processed = true;
|
||||
final LoopPlugin activeloop = MainApp.getConfigBuilder().getActiveLoop();
|
||||
final LoopPlugin activeloop = ConfigBuilderPlugin.getActiveLoop();
|
||||
activeloop.suspendTo(new Date().getTime() + suspendWaitingForConfirmation.duration * 60L * 1000);
|
||||
ConfigBuilderPlugin.uploadOpenAPSOffline(suspendWaitingForConfirmation.duration * 60);
|
||||
MainApp.bus().post(new EventRefreshGui(false));
|
||||
reply = String.format(MainApp.sResources.getString(R.string.smscommunicator_loopsuspended));
|
||||
reply = MainApp.sResources.getString(R.string.smscommunicator_loopsuspended);
|
||||
sendSMSToAllNumbers(new Sms(receivedSms.phoneNumber, reply, new Date()));
|
||||
} else {
|
||||
sendSMS(new Sms(receivedSms.phoneNumber, MainApp.sResources.getString(R.string.smscommunicator_unknowncommand), new Date()));
|
||||
|
@ -542,14 +552,14 @@ public class SmsCommunicatorPlugin implements PluginBase {
|
|||
}
|
||||
}
|
||||
|
||||
public void sendSMSToAllNumbers(Sms sms) {
|
||||
private void sendSMSToAllNumbers(Sms sms) {
|
||||
for (String number : allowedNumbers) {
|
||||
sms.phoneNumber = number;
|
||||
sendSMS(sms);
|
||||
}
|
||||
}
|
||||
|
||||
public void sendSMS(Sms sms) {
|
||||
private void sendSMS(Sms sms) {
|
||||
SmsManager smsManager = SmsManager.getDefault();
|
||||
sms.text = stripAccents(sms.text);
|
||||
if (sms.text.length() > 140) sms.text = sms.text.substring(0, 139);
|
||||
|
@ -584,7 +594,7 @@ public class SmsCommunicatorPlugin implements PluginBase {
|
|||
suspendWaitingForConfirmation = null;
|
||||
}
|
||||
|
||||
public static String stripAccents(String s) {
|
||||
private static String stripAccents(String s) {
|
||||
s = Normalizer.normalize(s, Normalizer.Form.NFD);
|
||||
s = s.replaceAll("[\\p{InCombiningDiacriticalMarks}]", "");
|
||||
return s;
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
package info.nightscout.androidaps.plugins.TempBasals;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.graphics.Paint;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.support.v7.widget.CardView;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
|
@ -13,6 +17,8 @@ import android.view.ViewGroup;
|
|||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.crashlytics.android.answers.Answers;
|
||||
import com.crashlytics.android.answers.CustomEvent;
|
||||
import com.squareup.otto.Subscribe;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
|
@ -44,7 +50,9 @@ public class TempBasalsFragment extends Fragment {
|
|||
|
||||
TextView tempBasalTotalView;
|
||||
|
||||
public static class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.TempBasalsViewHolder> {
|
||||
Context context;
|
||||
|
||||
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.TempBasalsViewHolder> {
|
||||
|
||||
List<TempBasal> tempBasalList;
|
||||
|
||||
|
@ -55,8 +63,7 @@ public class TempBasalsFragment extends Fragment {
|
|||
@Override
|
||||
public TempBasalsViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
|
||||
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.tempbasals_item, viewGroup, false);
|
||||
TempBasalsViewHolder tempBasalsViewHolder = new TempBasalsViewHolder(v);
|
||||
return tempBasalsViewHolder;
|
||||
return new TempBasalsViewHolder(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -89,6 +96,7 @@ public class TempBasalsFragment extends Fragment {
|
|||
holder.dateLinearLayout.setBackgroundColor(ContextCompat.getColor(MainApp.instance(), R.color.colorAffectingIOB));
|
||||
else
|
||||
holder.dateLinearLayout.setBackgroundColor(ContextCompat.getColor(MainApp.instance(), R.color.cardColorBackground));
|
||||
holder.remove.setTag(tempBasal);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -101,7 +109,7 @@ public class TempBasalsFragment extends Fragment {
|
|||
super.onAttachedToRecyclerView(recyclerView);
|
||||
}
|
||||
|
||||
public static class TempBasalsViewHolder extends RecyclerView.ViewHolder {
|
||||
public class TempBasalsViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
|
||||
CardView cv;
|
||||
TextView date;
|
||||
TextView duration;
|
||||
|
@ -113,6 +121,7 @@ public class TempBasalsFragment extends Fragment {
|
|||
TextView iob;
|
||||
TextView extendedFlag;
|
||||
LinearLayout dateLinearLayout;
|
||||
TextView remove;
|
||||
|
||||
TempBasalsViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
|
@ -127,6 +136,36 @@ public class TempBasalsFragment extends Fragment {
|
|||
iob = (TextView) itemView.findViewById(R.id.tempbasals_iob);
|
||||
extendedFlag = (TextView) itemView.findViewById(R.id.tempbasals_extendedflag);
|
||||
dateLinearLayout = (LinearLayout) itemView.findViewById(R.id.tempbasals_datelinearlayout);
|
||||
remove = (TextView) itemView.findViewById(R.id.tempbasals_remove);
|
||||
remove.setOnClickListener(this);
|
||||
remove.setPaintFlags(remove.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
final TempBasal tempBasal = (TempBasal) v.getTag();
|
||||
switch (v.getId()) {
|
||||
case R.id.tempbasals_remove:
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
builder.setTitle(MainApp.sResources.getString(R.string.confirmation));
|
||||
builder.setMessage(MainApp.sResources.getString(R.string.removerecord) + "\n" + DateUtil.dateAndTimeString(tempBasal.timeStart));
|
||||
builder.setPositiveButton(MainApp.sResources.getString(R.string.ok), new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
// TODO: handle this in NS too
|
||||
//final String _id = tempBasal._id;
|
||||
//if (_id != null && !_id.equals("")) {
|
||||
// MainApp.getConfigBuilder().removeCareportalEntryFromNS(_id);
|
||||
//}
|
||||
MainApp.getDbHelper().delete(tempBasal);
|
||||
tempBasalsPlugin.initializeData();
|
||||
updateGUI();
|
||||
Answers.getInstance().logCustom(new CustomEvent("RemoveTempBasal"));
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(MainApp.sResources.getString(R.string.cancel), null);
|
||||
builder.show();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -145,6 +184,9 @@ public class TempBasalsFragment extends Fragment {
|
|||
recyclerView.setAdapter(adapter);
|
||||
|
||||
tempBasalTotalView = (TextView) view.findViewById(R.id.tempbasals_totaltempiob);
|
||||
|
||||
context = getContext();
|
||||
|
||||
updateGUI();
|
||||
return view;
|
||||
}
|
||||
|
|
|
@ -112,7 +112,7 @@ public class TempBasalsPlugin implements PluginBase, TempBasalsInterface {
|
|||
return PluginBase.TEMPBASAL;
|
||||
}
|
||||
|
||||
private void initializeData() {
|
||||
public void initializeData() {
|
||||
double dia = 3;
|
||||
if (MainApp.getConfigBuilder().getActiveProfile() != null && MainApp.getConfigBuilder().getActiveProfile().getProfile() != null)
|
||||
dia = MainApp.getConfigBuilder().getActiveProfile().getProfile().getDia();
|
||||
|
|
|
@ -36,6 +36,7 @@ import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile;
|
|||
import info.nightscout.androidaps.plugins.TempTargetRange.events.EventTempTargetRangeChange;
|
||||
import info.nightscout.utils.DateUtil;
|
||||
import info.nightscout.utils.DecimalFormatter;
|
||||
import info.nightscout.utils.SP;
|
||||
import info.nightscout.utils.ToastUtils;
|
||||
|
||||
/**
|
||||
|
@ -194,8 +195,7 @@ public class TempTargetRangeFragment extends Fragment implements View.OnClickLis
|
|||
public void onClick(View view) {
|
||||
switch (view.getId()) {
|
||||
case R.id.temptargetrange_refreshfromnightscout:
|
||||
SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
boolean nsUploadOnly = SP.getBoolean("ns_upload_only", false);
|
||||
boolean nsUploadOnly = SP.getBoolean(R.string.key_ns_upload_only, false);
|
||||
if (nsUploadOnly) {
|
||||
ToastUtils.showToastInUiThread(getContext(), this.getContext().getString(R.string.ns_upload_only_enabled));
|
||||
} else {
|
||||
|
|
|
@ -38,9 +38,11 @@ import info.nightscout.androidaps.data.Iob;
|
|||
import info.nightscout.androidaps.db.Treatment;
|
||||
import info.nightscout.androidaps.events.EventTreatmentChange;
|
||||
import info.nightscout.androidaps.interfaces.InsulinInterface;
|
||||
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.androidaps.plugins.NSClientInternal.data.NSProfile;
|
||||
import info.nightscout.utils.DateUtil;
|
||||
import info.nightscout.utils.DecimalFormatter;
|
||||
import info.nightscout.utils.SP;
|
||||
import info.nightscout.utils.ToastUtils;
|
||||
|
||||
public class TreatmentsFragment extends Fragment implements View.OnClickListener {
|
||||
|
@ -72,16 +74,15 @@ public class TreatmentsFragment extends Fragment implements View.OnClickListener
|
|||
@Override
|
||||
public TreatmentsViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
|
||||
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.treatments_item, viewGroup, false);
|
||||
TreatmentsViewHolder treatmentsViewHolder = new TreatmentsViewHolder(v);
|
||||
return treatmentsViewHolder;
|
||||
return new TreatmentsViewHolder(v);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(TreatmentsViewHolder holder, int position) {
|
||||
if (MainApp.getConfigBuilder() == null || MainApp.getConfigBuilder().getActiveProfile() == null) // app not initialized yet
|
||||
if (MainApp.getConfigBuilder() == null || ConfigBuilderPlugin.getActiveProfile() == null) // app not initialized yet
|
||||
return;
|
||||
NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile();
|
||||
InsulinInterface insulinInterface = MainApp.getConfigBuilder().getActiveInsulin();
|
||||
NSProfile profile = ConfigBuilderPlugin.getActiveProfile().getProfile();
|
||||
InsulinInterface insulinInterface = ConfigBuilderPlugin.getActiveInsulin();
|
||||
if (profile == null || insulinInterface == null)
|
||||
return;
|
||||
holder.date.setText(DateUtil.dateAndTimeString(treatments.get(position).created_at));
|
||||
|
@ -137,7 +138,6 @@ public class TreatmentsFragment extends Fragment implements View.OnClickListener
|
|||
@Override
|
||||
public void onClick(View v) {
|
||||
final Treatment treatment = (Treatment) v.getTag();
|
||||
final Context finalContext = context;
|
||||
switch (v.getId()) {
|
||||
case R.id.treatments_remove:
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
|
@ -152,7 +152,7 @@ public class TreatmentsFragment extends Fragment implements View.OnClickListener
|
|||
MainApp.getDbHelper().delete(treatment);
|
||||
treatmentsPlugin.initializeData();
|
||||
updateGUI();
|
||||
Answers.getInstance().logCustom(new CustomEvent("RefreshTreatments"));
|
||||
Answers.getInstance().logCustom(new CustomEvent("RemoveTreatment"));
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(MainApp.sResources.getString(R.string.cancel), null);
|
||||
|
@ -192,8 +192,7 @@ public class TreatmentsFragment extends Fragment implements View.OnClickListener
|
|||
public void onClick(View view) {
|
||||
switch (view.getId()) {
|
||||
case R.id.treatments_reshreshfromnightscout:
|
||||
SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
boolean nsUploadOnly = SP.getBoolean("ns_upload_only", false);
|
||||
boolean nsUploadOnly = SP.getBoolean(R.string.key_ns_upload_only, false);
|
||||
if (nsUploadOnly) {
|
||||
ToastUtils.showToastInUiThread(getContext(), this.getContext().getString(R.string.ns_upload_only_enabled));
|
||||
} else {
|
||||
|
|
|
@ -44,10 +44,6 @@ public class StatuslinePlugin implements PluginBase {
|
|||
StatuslinePlugin(Context ctx) {
|
||||
this.ctx = ctx;
|
||||
this.mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
|
||||
|
||||
if (fragmentEnabled) {
|
||||
MainApp.bus().register(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -107,11 +103,15 @@ public class StatuslinePlugin implements PluginBase {
|
|||
this.fragmentEnabled = fragmentEnabled;
|
||||
|
||||
if (fragmentEnabled) {
|
||||
MainApp.bus().register(this);
|
||||
try {
|
||||
MainApp.bus().register(this);
|
||||
} catch (Exception e) {}
|
||||
sendStatus();
|
||||
}
|
||||
else{
|
||||
MainApp.bus().unregister(this);
|
||||
try {
|
||||
MainApp.bus().unregister(this);
|
||||
} catch (Exception e) {}
|
||||
sendStatus();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,145 @@
|
|||
package info.nightscout.utils;
|
||||
|
||||
import android.os.Handler;
|
||||
import android.os.HandlerThread;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.util.LongSparseArray;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by mike on 09.05.2017.
|
||||
*/
|
||||
|
||||
public class OverlappingIntervals {
|
||||
|
||||
private Handler sHandler = null;
|
||||
private HandlerThread sHandlerThread = null;
|
||||
private Object dataLock = new Object();
|
||||
|
||||
|
||||
public abstract class Interval {
|
||||
Long start = null;
|
||||
Long duration = null;
|
||||
Long cuttedEnd = null;
|
||||
|
||||
public Interval(long start, long duration) {
|
||||
this.start = start;
|
||||
this.duration = duration;
|
||||
}
|
||||
|
||||
long durationInMsec() {
|
||||
return duration;
|
||||
}
|
||||
|
||||
long start() {
|
||||
return start;
|
||||
}
|
||||
|
||||
// planned end time at time of creation
|
||||
long originalEnd() {
|
||||
return start + duration;
|
||||
}
|
||||
|
||||
// end time after cut
|
||||
long end() {
|
||||
if (cuttedEnd != null)
|
||||
return cuttedEnd;
|
||||
return originalEnd();
|
||||
}
|
||||
|
||||
void cutEndTo(long end) {
|
||||
cuttedEnd = end;
|
||||
}
|
||||
|
||||
boolean match(long time) {
|
||||
if (start() <= time && end() >= time)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean before(long time) {
|
||||
if (end() < time)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean after(long time) {
|
||||
if (start() > time)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private static LongSparseArray<Interval> rawData = new LongSparseArray<>(); // oldest at index 0
|
||||
|
||||
public OverlappingIntervals() {
|
||||
if (sHandlerThread == null) {
|
||||
sHandlerThread = new HandlerThread(OverlappingIntervals.class.getSimpleName());
|
||||
sHandlerThread.start();
|
||||
sHandler = new Handler(sHandlerThread.getLooper());
|
||||
}
|
||||
}
|
||||
|
||||
public OverlappingIntervals resetData() {
|
||||
rawData = new LongSparseArray<>();
|
||||
return this;
|
||||
}
|
||||
|
||||
public void add(Interval newInterval) {
|
||||
rawData.put(newInterval.start(), newInterval);
|
||||
merge();
|
||||
}
|
||||
|
||||
public void add(List<Interval> list) {
|
||||
for (Interval interval : list) {
|
||||
rawData.put(interval.start(), interval);
|
||||
}
|
||||
merge();
|
||||
}
|
||||
|
||||
private void merge() {
|
||||
for (int index = 0; index < rawData.size() - 1; index++) {
|
||||
Interval i = rawData.get(index);
|
||||
long startOfNewer = rawData.get(index + 1).start();
|
||||
if (i.originalEnd() > startOfNewer) {
|
||||
i.cutEndTo(startOfNewer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Interval getValueByInterval(long time) {
|
||||
int index = binarySearch(time);
|
||||
if (index >= 0) return rawData.get(index);
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<Interval> getList() {
|
||||
List<Interval> list = new ArrayList<>();
|
||||
for (int i = 0; i < rawData.size(); i++)
|
||||
list.add(rawData.valueAt(i));
|
||||
return list;
|
||||
}
|
||||
|
||||
private static int binarySearch(long value) {
|
||||
int lo = 0;
|
||||
int hi = rawData.size() - 1;
|
||||
|
||||
while (lo <= hi) {
|
||||
final int mid = (lo + hi) >>> 1;
|
||||
final Interval midVal = rawData.valueAt(mid);
|
||||
|
||||
if (midVal.before(value)) {
|
||||
lo = mid + 1;
|
||||
} else if (midVal.after(value)) {
|
||||
hi = mid - 1;
|
||||
} else if (midVal.match(value)) {
|
||||
return mid; // value found
|
||||
}
|
||||
}
|
||||
return ~lo; // value not present
|
||||
}
|
||||
|
||||
}
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_bgcheck"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_bgcheck"
|
||||
|
@ -29,6 +30,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_exercise"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_exercise"
|
||||
|
@ -39,6 +41,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_note"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_note"
|
||||
|
@ -49,6 +52,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_snackbolus"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_snackbolus"
|
||||
|
@ -59,6 +63,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_mealbolus"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_mealbolus"
|
||||
|
@ -69,6 +74,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_correctionbolus"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_correctionbolus"
|
||||
|
@ -79,6 +85,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_carbscorrection"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_carbscorrection"
|
||||
|
@ -89,6 +96,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_combobolus"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_combobolus"
|
||||
|
@ -99,6 +107,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_tempbasalstart"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_tempbasalstart"
|
||||
|
@ -109,6 +118,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_tempbasalend"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_tempbasalend"
|
||||
|
@ -119,6 +129,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_announcement"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_announcement"
|
||||
|
@ -129,6 +140,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_question"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_question"
|
||||
|
@ -139,6 +151,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_pumpsitechange"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_pumpsitechange"
|
||||
|
@ -149,6 +162,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_cgmsensorinsert"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_cgmsensorinsert"
|
||||
|
@ -159,6 +173,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_cgmsensorstart"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_cgmsensorstart"
|
||||
|
@ -169,6 +184,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_insulincartridgechange"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_insulincartridgechange"
|
||||
|
@ -179,6 +195,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_profileswitch"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_profileswitch"
|
||||
|
@ -189,6 +206,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_openapsoffline"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_openapsoffline"
|
||||
|
@ -199,6 +217,7 @@
|
|||
|
||||
<Button
|
||||
android:id="@+id/careportal_temporarytarget"
|
||||
style="@style/ButtonSmallFontStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="70dp"
|
||||
android:text="@string/careportal_temporarytarget"
|
||||
|
|
|
@ -23,96 +23,320 @@
|
|||
android:textStyle="bold"
|
||||
android:gravity="center_horizontal" />
|
||||
|
||||
<TextView
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/nsprofileview_activeprofile_label"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:layout_marginLeft="10dp" />
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/profileview_activeprofile"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="25dp" />
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="end"
|
||||
android:paddingRight="5dp"
|
||||
android:text="@string/nsprofileview_activeprofile_label"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/nsprofileview_units_label"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:layout_marginLeft="10dp" />
|
||||
<TextView
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:gravity="center_horizontal"
|
||||
android:paddingEnd="2dp"
|
||||
android:paddingStart="2dp"
|
||||
android:text=":"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/profileview_units"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="25dp" />
|
||||
<TextView
|
||||
android:id="@+id/profileview_activeprofile"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="start"
|
||||
android:paddingLeft="5dp"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/nsprofileview_dia_label"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:layout_marginLeft="10dp" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/profileview_dia"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="25dp" />
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="2dip"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginRight="20dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@color/listdelimiter" />
|
||||
|
||||
<TextView
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/nsprofileview_ic_label"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:layout_marginLeft="10dp" />
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/profileview_ic"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="25dp" />
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="end"
|
||||
android:paddingRight="5dp"
|
||||
android:text="@string/nsprofileview_units_label"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/nsprofileview_isf_label"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:layout_marginLeft="10dp" />
|
||||
<TextView
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:gravity="center_horizontal"
|
||||
android:paddingEnd="2dp"
|
||||
android:paddingStart="2dp"
|
||||
android:text=":"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/profileview_isf"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="25dp" />
|
||||
<TextView
|
||||
android:id="@+id/profileview_units"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="start"
|
||||
android:paddingLeft="5dp"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/nsprofileview_basal_label"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:layout_marginLeft="10dp" />
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/profileview_basal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="25dp" />
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="2dip"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginRight="20dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@color/listdelimiter" />
|
||||
|
||||
<TextView
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/nsprofileview_target_label"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:layout_marginLeft="10dp" />
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/profileview_target"
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="end"
|
||||
android:paddingRight="5dp"
|
||||
android:text="@string/nsprofileview_dia_label"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:gravity="center_horizontal"
|
||||
android:paddingEnd="2dp"
|
||||
android:paddingStart="2dp"
|
||||
android:text=":"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/profileview_dia"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="start"
|
||||
android:paddingLeft="5dp"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="2dip"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginRight="20dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@color/listdelimiter" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="15dp" />
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="end"
|
||||
android:paddingRight="5dp"
|
||||
android:text="@string/nsprofileview_ic_label"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:gravity="center_horizontal"
|
||||
android:paddingEnd="2dp"
|
||||
android:paddingStart="2dp"
|
||||
android:text=":"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/profileview_ic"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="start"
|
||||
android:paddingLeft="5dp"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="2dip"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginRight="20dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@color/listdelimiter" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="end"
|
||||
android:paddingRight="5dp"
|
||||
android:text="@string/nsprofileview_isf_label"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:gravity="center_horizontal"
|
||||
android:paddingEnd="2dp"
|
||||
android:paddingStart="2dp"
|
||||
android:text=":"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/profileview_isf"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="start"
|
||||
android:paddingLeft="5dp"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="2dip"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginRight="20dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@color/listdelimiter" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="end"
|
||||
android:paddingRight="5dp"
|
||||
android:text="@string/nsprofileview_basal_label"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:gravity="center_horizontal"
|
||||
android:paddingEnd="2dp"
|
||||
android:paddingStart="2dp"
|
||||
android:text=":"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/profileview_basal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="start"
|
||||
android:paddingLeft="5dp"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="2dip"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginRight="20dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@color/listdelimiter" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="end"
|
||||
android:paddingRight="5dp"
|
||||
android:text="@string/nsprofileview_target_label"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:gravity="center_horizontal"
|
||||
android:paddingEnd="2dp"
|
||||
android:paddingStart="2dp"
|
||||
android:text=":"
|
||||
android:textSize="14sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/profileview_target"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="start"
|
||||
android:paddingLeft="5dp"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="14sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="2dip"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginRight="20dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@color/listdelimiter" />
|
||||
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
|
|
|
@ -168,6 +168,15 @@
|
|||
android:text="0.12 U"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tempbasals_remove"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/overview_quickwizard_item_remove_button"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textColor="@android:color/holo_orange_light" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
@ -135,10 +135,11 @@
|
|||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:text="@string/overview_quickwizard_item_remove_button"
|
||||
android:id="@+id/treatments_remove"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/treatments_remove"
|
||||
android:layout_weight="1"
|
||||
android:text="@string/overview_quickwizard_item_remove_button"
|
||||
android:textAlignment="viewEnd"
|
||||
android:textColor="@android:color/holo_orange_light" />
|
||||
|
||||
|
|
|
@ -84,13 +84,13 @@
|
|||
<string name="noprofile">Не е зареден профил от NS</string>
|
||||
<string name="ns_sync_use_absolute_title">Използване на абсолютни стойности</string>
|
||||
<string name="nsclient">NSClient</string>
|
||||
<string name="nsprofileview_activeprofile_label">Активен профил:</string>
|
||||
<string name="nsprofileview_activeprofile_label">Активен профил</string>
|
||||
<string name="nsprofileview_basal_label">Базални стойности:</string>
|
||||
<string name="nsprofileview_dia_label">DIA (Време на действие на инсулина):</string>
|
||||
<string name="nsprofileview_ic_label">IC (Инсулин/въглехидр.):</string>
|
||||
<string name="noprofileset">НЕ Е ЗАДАДЕН ПРОФИЛ</string>
|
||||
<string name="nsprofileview_target_label">Целeва КЗ:</string>
|
||||
<string name="nsprofileview_units_label">Единици:</string>
|
||||
<string name="nsprofileview_units_label">Единици</string>
|
||||
<string name="objectives">Цели</string>
|
||||
<string name="objectives_button_start">Старт</string>
|
||||
<string name="objectives_button_verify">Проверка</string>
|
||||
|
|
|
@ -84,13 +84,13 @@
|
|||
<string name="noprofile">Dosud nebyl načten profil z NS</string>
|
||||
<string name="ns_sync_use_absolute_title">Vždy použít absolutní hodnoty bazálu</string>
|
||||
<string name="nsclient">NSClient</string>
|
||||
<string name="nsprofileview_activeprofile_label">Aktivní profil:</string>
|
||||
<string name="nsprofileview_basal_label">Bazál:</string>
|
||||
<string name="nsprofileview_dia_label">Trvání inzulínu:</string>
|
||||
<string name="nsprofileview_ic_label">Inzulínosacharidový poměr:</string>
|
||||
<string name="nsprofileview_activeprofile_label">Aktivní profil</string>
|
||||
<string name="nsprofileview_basal_label">Bazál</string>
|
||||
<string name="nsprofileview_dia_label">Doba působnosti inzulínu</string>
|
||||
<string name="nsprofileview_ic_label">Inzulínosacharidový poměr</string>
|
||||
<string name="noprofileset">ŽÁDNÝ PROFIL NENASTAVEN</string>
|
||||
<string name="nsprofileview_target_label">Cíl:</string>
|
||||
<string name="nsprofileview_units_label">Jednotky:</string>
|
||||
<string name="nsprofileview_target_label">Cíl</string>
|
||||
<string name="nsprofileview_units_label">Jednotky</string>
|
||||
<string name="objectives">Cíle</string>
|
||||
<string name="objectives_button_start">Začátek</string>
|
||||
<string name="objectives_button_verify">Kontrola</string>
|
||||
|
@ -395,24 +395,24 @@
|
|||
<string name="short_avgdelta">Krátkodobý průměr</string>
|
||||
<string name="temptargetrange">Dočasný cíl</string>
|
||||
<string name="temptargetrange_refreshfromnightscout">Obnovit dočasné cíle z NS</string>
|
||||
<string name="actions_shortname">" "</string>
|
||||
<string name="wear_shortname">" "</string>
|
||||
<string name="virtualpump_shortname">ViPu</string>
|
||||
<string name="treatments_shortname">Oš</string>
|
||||
<string name="temptargetrange_shortname">" "</string>
|
||||
<string name="tempbasals_shortname">" "</string>
|
||||
<string name="actions_shortname">"AKCE"</string>
|
||||
<string name="wear_shortname">"WEAR"</string>
|
||||
<string name="virtualpump_shortname">VPUM</string>
|
||||
<string name="treatments_shortname">OŠET</string>
|
||||
<string name="temptargetrange_shortname">"CROZ"</string>
|
||||
<string name="tempbasals_shortname">"DBAZ"</string>
|
||||
<string name="smscommunicator_shortname">SMS</string>
|
||||
<string name="simpleprofile_shortname">JP</string>
|
||||
<string name="profileviewer_shortname">" "</string>
|
||||
<string name="overview_shortname">Přehl</string>
|
||||
<string name="objectives_shortname">Cíle</string>
|
||||
<string name="oaps_shortname">" "</string>
|
||||
<string name="loop_shortname">Smyč</string>
|
||||
<string name="localprofile_shortname">LP</string>
|
||||
<string name="danarpump_shortname">Dana</string>
|
||||
<string name="configbuilder_shortname">Konf</string>
|
||||
<string name="simpleprofile_shortname">JPRO</string>
|
||||
<string name="profileviewer_shortname">"PROF"</string>
|
||||
<string name="overview_shortname">PŘEH</string>
|
||||
<string name="objectives_shortname">CÍLE</string>
|
||||
<string name="oaps_shortname">"OAPS"</string>
|
||||
<string name="loop_shortname">SMYČ</string>
|
||||
<string name="localprofile_shortname">MPRF</string>
|
||||
<string name="danarpump_shortname">DANA</string>
|
||||
<string name="configbuilder_shortname">KONF</string>
|
||||
<string name="circadian_percentage_profile_shortname">CPP</string>
|
||||
<string name="careportal_shortname">Péče</string>
|
||||
<string name="careportal_shortname">PÉČE</string>
|
||||
<string name="advancedsettings_title">Rozšířené nastavení</string>
|
||||
<string name="always_use_shortavg">Vždy používat krátkodobý průměrný rozdíl glykémií místo rozdílu posledních 2 hodnot</string>
|
||||
<string name="always_use_shortavg_summary">Výhodné, pokud data z xDripu obsahují velký šum</string>
|
||||
|
|
|
@ -63,13 +63,13 @@
|
|||
<string name="nav_backup">Backup</string>
|
||||
<string name="nav_preferences">Einstellungen</string>
|
||||
<string name="nsclient">NSClient</string>
|
||||
<string name="nsprofileview_activeprofile_label">Aktives Profil:</string>
|
||||
<string name="nsprofileview_activeprofile_label">Aktives Profil</string>
|
||||
<string name="nsprofileview_basal_label">Basal</string>
|
||||
<string name="nsprofileview_dia_label">DIA:</string>
|
||||
<string name="nsprofileview_ic_label">IC:</string>
|
||||
<string name="nsprofileview_isf_label">ISF:</string>
|
||||
<string name="nsprofileview_target_label">Ziel:</string>
|
||||
<string name="nsprofileview_units_label">Einheiten:</string>
|
||||
<string name="nsprofileview_dia_label">DIA</string>
|
||||
<string name="nsprofileview_ic_label">IC</string>
|
||||
<string name="nsprofileview_isf_label">ISF</string>
|
||||
<string name="nsprofileview_target_label">Ziel</string>
|
||||
<string name="nsprofileview_units_label">Einheiten</string>
|
||||
<string name="objectives_button_start">Start</string>
|
||||
<string name="objectives_button_verify">Verifizieren</string>
|
||||
<string name="openapsma">OpenAPS MA</string>
|
||||
|
|
|
@ -17,13 +17,13 @@
|
|||
<string name="objectives_gate_label_string">Meta:</string>
|
||||
<string name="objectives_button_start">Inicio</string>
|
||||
<string name="objectives_button_verify">Verificar</string>
|
||||
<string name="nsprofileview_units_label">Unidades:</string>
|
||||
<string name="nsprofileview_dia_label">DIA (Duración Insulina Activa):</string>
|
||||
<string name="nsprofileview_activeprofile_label">Perfil activo:</string>
|
||||
<string name="nsprofileview_ic_label">IC (Insulina/Carbohidratos Ratio):</string>
|
||||
<string name="nsprofileview_isf_label">ISF (Factor Sensibilidad Insulina):</string>
|
||||
<string name="nsprofileview_basal_label">Dosis Basal:</string>
|
||||
<string name="nsprofileview_target_label">Objetivo:</string>
|
||||
<string name="nsprofileview_units_label">Unidades</string>
|
||||
<string name="nsprofileview_dia_label">DIA (Duración Insulina Activa)</string>
|
||||
<string name="nsprofileview_activeprofile_label">Perfil activo</string>
|
||||
<string name="nsprofileview_ic_label">IC (Insulina/Carbohidratos Ratio)</string>
|
||||
<string name="nsprofileview_isf_label">ISF (Factor Sensibilidad Insulina)</string>
|
||||
<string name="nsprofileview_basal_label">Dosis Basal</string>
|
||||
<string name="nsprofileview_target_label">Objetivo</string>
|
||||
<string name="noprofileset">PERFIL NO ACTIVO</string>
|
||||
<string name="treatments_insulin_label_string">Insulina:</string>
|
||||
<string name="treatments_carbs_label_string">Carbohidratos:</string>
|
||||
|
|
|
@ -18,9 +18,9 @@
|
|||
<string name="objectives_gate_label_string">방법:</string>
|
||||
<string name="objectives_button_start">시작</string>
|
||||
<string name="objectives_button_verify">확인</string>
|
||||
<string name="nsprofileview_units_label">단위:</string>
|
||||
<string name="nsprofileview_units_label">단위</string>
|
||||
<string name="nsprofileview_dia_label">인슐린활동시간(DIA):</string>
|
||||
<string name="nsprofileview_activeprofile_label">활성 프로파일:</string>
|
||||
<string name="nsprofileview_activeprofile_label">활성 프로파일</string>
|
||||
<string name="nsprofileview_ic_label">인슐린 대 탄수화물 비율(IC):</string>
|
||||
<string name="nsprofileview_isf_label">인슐린 민감도(ISF):</string>
|
||||
<string name="nsprofileview_basal_label">기초주입:</string>
|
||||
|
|
|
@ -19,13 +19,13 @@
|
|||
<string name="objectives_gate_label_string">Gate:</string>
|
||||
<string name="objectives_button_start">Start</string>
|
||||
<string name="objectives_button_verify">Verify</string>
|
||||
<string name="nsprofileview_units_label">Units:</string>
|
||||
<string name="nsprofileview_dia_label">DIA:</string>
|
||||
<string name="nsprofileview_activeprofile_label">Active profile:</string>
|
||||
<string name="nsprofileview_ic_label">IC:</string>
|
||||
<string name="nsprofileview_isf_label">ISF:</string>
|
||||
<string name="nsprofileview_basal_label">Basal:</string>
|
||||
<string name="nsprofileview_target_label">Target:</string>
|
||||
<string name="nsprofileview_units_label">Units</string>
|
||||
<string name="nsprofileview_dia_label">DIA</string>
|
||||
<string name="nsprofileview_activeprofile_label">Active profile</string>
|
||||
<string name="nsprofileview_ic_label">IC</string>
|
||||
<string name="nsprofileview_isf_label">ISF</string>
|
||||
<string name="nsprofileview_basal_label">Basal</string>
|
||||
<string name="nsprofileview_target_label">Target</string>
|
||||
<string name="noprofileset">NO PROFILE SET</string>
|
||||
<string name="treatments_insulin_label_string">Insulin:</string>
|
||||
<string name="treatments_carbs_label_string">Carbs:</string>
|
||||
|
@ -508,12 +508,12 @@
|
|||
<string name="settings_password">Password for settings</string>
|
||||
<string name="unlock_settings">Unlock settings</string>
|
||||
<string name="approachingdailylimit">Approaching insulin daily limit</string>
|
||||
<string name="nsclientinternal">NSClient internal</string>
|
||||
<string name="nsclientinternal">NSClient</string>
|
||||
<string name="nsclientinternal_shortname">NSCI</string>
|
||||
<string name="nsclientinternal_url">URL:</string>
|
||||
<string name="nsclientinternal_autoscroll">Autoscroll</string>
|
||||
<string name="restart">Restart</string>
|
||||
<string name="nsclientinternal_title">Internal NSClient</string>
|
||||
<string name="nsclientinternal_title">NSClient</string>
|
||||
<string name="nsclientinternal_url_title">Nightscout URL</string>
|
||||
<string name="nsclientinternal_url_dialogmessage">Enter Nightscout URL</string>
|
||||
<string name="nsclientinternal_secret_title">NS API secret</string>
|
||||
|
@ -604,4 +604,8 @@
|
|||
<string name="xdripstatus_settings">xDrip Status (watch)</string>
|
||||
<string name="xdripstatus">xDrip Statusline (watch)</string>
|
||||
<string name="xdripstatus_shortname">xds</string>
|
||||
<string name="ns_noupload">No upload to NS</string>
|
||||
<string name="ns_noupload_summary">All data sent to NS are dropped. AAPS is connected to NS but no change in NS is done</string>
|
||||
<string name="key_ns_upload_only" translatable="false">ns_upload_only</string>
|
||||
<string name="key_ns_noupload" translatable="false">ns_noupload</string>
|
||||
</resources>
|
||||
|
|
|
@ -24,4 +24,8 @@
|
|||
<item name="android:windowAnimationStyle">@android:style/Animation</item>
|
||||
</style>
|
||||
|
||||
<style name="ButtonSmallFontStyle">
|
||||
<item name="android:textSize">10sp</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -10,9 +10,14 @@
|
|||
android:title="@string/nightscout">
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="ns_upload_only"
|
||||
android:key="@string/key_ns_upload_only"
|
||||
android:title="@string/ns_upload_only"
|
||||
android:summary="@string/ns_upload_only_summary"/>
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="@string/key_ns_noupload"
|
||||
android:title="@string/ns_noupload"
|
||||
android:summary="@string/ns_noupload_summary"/>
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="ns_sync_use_absolute"
|
||||
|
|
Loading…
Reference in a new issue