Merge branch 'dev' into localprofile
This commit is contained in:
commit
1f622e3517
129 changed files with 2028 additions and 966 deletions
|
@ -109,7 +109,7 @@ android {
|
|||
targetSdkVersion 28
|
||||
multiDexEnabled true
|
||||
versionCode 1500
|
||||
version "2.4-dev-i"
|
||||
version "2.6-dev"
|
||||
buildConfigField "String", "VERSION", '"' + version + '"'
|
||||
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
|
||||
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'
|
||||
|
|
|
@ -12,13 +12,4 @@ public class Config {
|
|||
public static final boolean PUMPCONTROL = BuildConfig.FLAVOR.equals("pumpcontrol");
|
||||
|
||||
public static final boolean PUMPDRIVERS = BuildConfig.FLAVOR.equals("full") || BuildConfig.FLAVOR.equals("pumpcontrol");
|
||||
|
||||
public static final boolean ACTION = !NSCLIENT;
|
||||
public static final boolean MDI = !NSCLIENT;
|
||||
public static final boolean OTHERPROFILES = !NSCLIENT;
|
||||
public static final boolean SAFETY = !NSCLIENT;
|
||||
|
||||
public static final boolean SMSCOMMUNICATORENABLED = !NSCLIENT;
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -6,7 +6,6 @@ import android.content.pm.PackageManager;
|
|||
import android.graphics.Rect;
|
||||
import android.os.Bundle;
|
||||
import android.os.PersistableBundle;
|
||||
import android.os.PowerManager;
|
||||
import android.text.SpannableString;
|
||||
import android.text.method.LinkMovementMethod;
|
||||
import android.text.util.Linkify;
|
||||
|
@ -53,8 +52,8 @@ import info.nightscout.androidaps.logging.L;
|
|||
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin;
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
|
||||
import info.nightscout.androidaps.plugins.constraints.versionChecker.VersionCheckerUtilsKt;
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.data.NSSettingsStatus;
|
||||
import info.nightscout.androidaps.plugins.general.versionChecker.VersionCheckerUtilsKt;
|
||||
import info.nightscout.androidaps.setupwizard.SetupWizardActivity;
|
||||
import info.nightscout.androidaps.tabs.TabPageAdapter;
|
||||
import info.nightscout.androidaps.utils.AndroidPermission;
|
||||
|
@ -70,8 +69,6 @@ public class MainActivity extends NoSplashAppCompatActivity {
|
|||
private static Logger log = LoggerFactory.getLogger(L.CORE);
|
||||
private CompositeDisposable disposable = new CompositeDisposable();
|
||||
|
||||
protected PowerManager.WakeLock mWakeLock;
|
||||
|
||||
private ActionBarDrawerToggle actionBarDrawerToggle;
|
||||
|
||||
private MenuItem pluginPreferencesMenuItem;
|
||||
|
@ -81,7 +78,7 @@ public class MainActivity extends NoSplashAppCompatActivity {
|
|||
super.onCreate(savedInstanceState);
|
||||
|
||||
Iconify.with(new FontAwesomeModule());
|
||||
LocaleHelper.onCreate(this, "en");
|
||||
LocaleHelper.INSTANCE.update(getApplicationContext());
|
||||
|
||||
setContentView(R.layout.activity_main);
|
||||
setSupportActionBar(findViewById(R.id.toolbar));
|
||||
|
@ -120,24 +117,6 @@ public class MainActivity extends NoSplashAppCompatActivity {
|
|||
VersionCheckerUtilsKt.triggerCheckVersion();
|
||||
|
||||
FabricPrivacy.setUserStats();
|
||||
}
|
||||
|
||||
private void checkPluginPreferences(ViewPager viewPager) {
|
||||
if (pluginPreferencesMenuItem == null) return;
|
||||
if (((TabPageAdapter) viewPager.getAdapter()).getPluginAt(viewPager.getCurrentItem()).getPreferencesId() != -1)
|
||||
pluginPreferencesMenuItem.setEnabled(true);
|
||||
else pluginPreferencesMenuItem.setEnabled(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
|
||||
super.onPostCreate(savedInstanceState, persistentState);
|
||||
actionBarDrawerToggle.syncState();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
||||
setupTabs();
|
||||
setupViews();
|
||||
|
@ -146,20 +125,14 @@ public class MainActivity extends NoSplashAppCompatActivity {
|
|||
.toObservable(EventRebuildTabs.class)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(event -> {
|
||||
String lang = SP.getString(R.string.key_language, "en");
|
||||
LocaleHelper.setLocale(getApplicationContext(), lang);
|
||||
LocaleHelper.INSTANCE.update(getApplicationContext());
|
||||
if (event.getRecreate()) {
|
||||
recreate();
|
||||
} else {
|
||||
setupTabs();
|
||||
setupViews();
|
||||
}
|
||||
|
||||
boolean keepScreenOn = Config.NSCLIENT && SP.getBoolean(R.string.key_keep_screen_on, false);
|
||||
if (keepScreenOn)
|
||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||
else
|
||||
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||
setWakeLock();
|
||||
}, FabricPrivacy::logException)
|
||||
);
|
||||
disposable.add(RxBus.INSTANCE
|
||||
|
@ -183,33 +156,36 @@ public class MainActivity extends NoSplashAppCompatActivity {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
if (mWakeLock != null)
|
||||
if (mWakeLock.isHeld())
|
||||
mWakeLock.release();
|
||||
super.onDestroy();
|
||||
private void checkPluginPreferences(ViewPager viewPager) {
|
||||
if (pluginPreferencesMenuItem == null) return;
|
||||
if (((TabPageAdapter) viewPager.getAdapter()).getPluginAt(viewPager.getCurrentItem()).getPreferencesId() != -1)
|
||||
pluginPreferencesMenuItem.setEnabled(true);
|
||||
else pluginPreferencesMenuItem.setEnabled(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
public void onPostCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
|
||||
super.onPostCreate(savedInstanceState, persistentState);
|
||||
actionBarDrawerToggle.syncState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
disposable.clear();
|
||||
}
|
||||
|
||||
private void setWakeLock() {
|
||||
boolean keepScreenOn = SP.getBoolean(R.string.key_keep_screen_on, false);
|
||||
if (keepScreenOn)
|
||||
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||
else
|
||||
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
|
||||
}
|
||||
|
||||
public void processPreferenceChange(final EventPreferenceChange ev) {
|
||||
if (ev.isChanged(R.string.key_keep_screen_on)) {
|
||||
boolean keepScreenOn = SP.getBoolean(R.string.key_keep_screen_on, false);
|
||||
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
||||
if (keepScreenOn) {
|
||||
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "AndroidAPS:MainActivity_onEventPreferenceChange");
|
||||
if (!mWakeLock.isHeld())
|
||||
mWakeLock.acquire();
|
||||
} else {
|
||||
if (mWakeLock != null && mWakeLock.isHeld())
|
||||
mWakeLock.release();
|
||||
}
|
||||
}
|
||||
if (ev.isChanged(R.string.key_keep_screen_on))
|
||||
setWakeLock();
|
||||
}
|
||||
|
||||
private void setupViews() {
|
||||
|
|
|
@ -6,7 +6,6 @@ import android.content.IntentFilter;
|
|||
import android.content.res.Resources;
|
||||
import android.os.SystemClock;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.PluralsRes;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
|
||||
|
@ -36,7 +35,9 @@ import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
|
|||
import info.nightscout.androidaps.plugins.constraints.dstHelper.DstHelperPlugin;
|
||||
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin;
|
||||
import info.nightscout.androidaps.plugins.constraints.safety.SafetyPlugin;
|
||||
import info.nightscout.androidaps.plugins.constraints.signatureVerifier.SignatureVerifierPlugin;
|
||||
import info.nightscout.androidaps.plugins.constraints.storage.StorageConstraintPlugin;
|
||||
import info.nightscout.androidaps.plugins.constraints.versionChecker.VersionCheckerPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.actions.ActionsPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.careportal.CareportalPlugin;
|
||||
|
@ -49,9 +50,7 @@ import info.nightscout.androidaps.plugins.general.nsclient.receivers.AckAlarmRec
|
|||
import info.nightscout.androidaps.plugins.general.nsclient.receivers.DBAccessReceiver;
|
||||
import info.nightscout.androidaps.plugins.general.overview.OverviewPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.persistentNotification.PersistentNotificationPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.signatureVerifier.SignatureVerifier;
|
||||
import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicatorPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.versionChecker.VersionCheckerPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.wear.WearPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.xdripStatusline.StatuslinePlugin;
|
||||
import info.nightscout.androidaps.plugins.insulin.InsulinOrefFreePeakPlugin;
|
||||
|
@ -89,9 +88,10 @@ import info.nightscout.androidaps.receivers.NSAlarmReceiver;
|
|||
import info.nightscout.androidaps.receivers.TimeDateOrTZChangeReceiver;
|
||||
import info.nightscout.androidaps.services.Intents;
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy;
|
||||
import info.nightscout.androidaps.utils.LocaleHelper;
|
||||
import io.fabric.sdk.android.Fabric;
|
||||
|
||||
import static info.nightscout.androidaps.plugins.general.versionChecker.VersionCheckerUtilsKt.triggerCheckVersion;
|
||||
import static info.nightscout.androidaps.plugins.constraints.versionChecker.VersionCheckerUtilsKt.triggerCheckVersion;
|
||||
|
||||
|
||||
public class MainApp extends Application {
|
||||
|
@ -125,6 +125,7 @@ public class MainApp extends Application {
|
|||
log.debug("onCreate");
|
||||
sInstance = this;
|
||||
sResources = getResources();
|
||||
LocaleHelper.INSTANCE.update(this);
|
||||
sConstraintsChecker = new ConstraintChecker();
|
||||
sDatabaseHelper = OpenHelperManager.getHelper(sInstance, DatabaseHelper.class);
|
||||
|
||||
|
@ -164,7 +165,7 @@ public class MainApp extends Application {
|
|||
// Register all tabs in app here
|
||||
pluginsList.add(OverviewPlugin.INSTANCE);
|
||||
pluginsList.add(IobCobCalculatorPlugin.getPlugin());
|
||||
if (Config.ACTION) pluginsList.add(ActionsPlugin.INSTANCE);
|
||||
if (!Config.NSCLIENT) pluginsList.add(ActionsPlugin.INSTANCE);
|
||||
pluginsList.add(InsulinOrefRapidActingPlugin.getPlugin());
|
||||
pluginsList.add(InsulinOrefUltraRapidActingPlugin.getPlugin());
|
||||
pluginsList.add(InsulinOrefFreePeakPlugin.getPlugin());
|
||||
|
@ -177,24 +178,23 @@ public class MainApp extends Application {
|
|||
if (Config.PUMPDRIVERS) pluginsList.add(DanaRv2Plugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS) pluginsList.add(DanaRSPlugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS) pluginsList.add(LocalInsightPlugin.getPlugin());
|
||||
pluginsList.add(CareportalPlugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS) pluginsList.add(ComboPlugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS && engineeringMode)
|
||||
pluginsList.add(MedtronicPumpPlugin.getPlugin());
|
||||
if (Config.MDI) pluginsList.add(MDIPlugin.getPlugin());
|
||||
if (Config.PUMPDRIVERS) pluginsList.add(MedtronicPumpPlugin.getPlugin());
|
||||
if (!Config.NSCLIENT) pluginsList.add(MDIPlugin.getPlugin());
|
||||
pluginsList.add(VirtualPumpPlugin.getPlugin());
|
||||
pluginsList.add(CareportalPlugin.getPlugin());
|
||||
if (Config.APS) pluginsList.add(LoopPlugin.getPlugin());
|
||||
if (Config.APS) pluginsList.add(OpenAPSMAPlugin.getPlugin());
|
||||
if (Config.APS) pluginsList.add(OpenAPSAMAPlugin.getPlugin());
|
||||
if (Config.APS) pluginsList.add(OpenAPSSMBPlugin.getPlugin());
|
||||
pluginsList.add(NSProfilePlugin.getPlugin());
|
||||
if (Config.OTHERPROFILES) pluginsList.add(SimpleProfilePlugin.getPlugin());
|
||||
if (Config.OTHERPROFILES) pluginsList.add(LocalProfilePlugin.INSTANCE);
|
||||
if (!Config.NSCLIENT) pluginsList.add(SimpleProfilePlugin.getPlugin());
|
||||
if (!Config.NSCLIENT) pluginsList.add(LocalProfilePlugin.INSTANCE);
|
||||
pluginsList.add(TreatmentsPlugin.getPlugin());
|
||||
if (Config.SAFETY) pluginsList.add(SafetyPlugin.getPlugin());
|
||||
if (Config.SAFETY) pluginsList.add(VersionCheckerPlugin.INSTANCE);
|
||||
if (Config.SAFETY) pluginsList.add(StorageConstraintPlugin.getPlugin());
|
||||
if (Config.SAFETY) pluginsList.add(SignatureVerifier.getPlugin());
|
||||
if (!Config.NSCLIENT) pluginsList.add(SafetyPlugin.getPlugin());
|
||||
if (!Config.NSCLIENT) pluginsList.add(VersionCheckerPlugin.INSTANCE);
|
||||
if (Config.APS) pluginsList.add(StorageConstraintPlugin.getPlugin());
|
||||
if (Config.APS) pluginsList.add(SignatureVerifierPlugin.getPlugin());
|
||||
if (Config.APS) pluginsList.add(ObjectivesPlugin.INSTANCE);
|
||||
pluginsList.add(SourceXdripPlugin.getPlugin());
|
||||
pluginsList.add(SourceNSClientPlugin.getPlugin());
|
||||
|
@ -204,7 +204,7 @@ public class MainApp extends Application {
|
|||
pluginsList.add(SourcePoctechPlugin.getPlugin());
|
||||
pluginsList.add(SourceTomatoPlugin.getPlugin());
|
||||
pluginsList.add(SourceEversensePlugin.getPlugin());
|
||||
if (Config.SMSCOMMUNICATORENABLED) pluginsList.add(SmsCommunicatorPlugin.getPlugin());
|
||||
if (!Config.NSCLIENT) pluginsList.add(SmsCommunicatorPlugin.getPlugin());
|
||||
pluginsList.add(FoodPlugin.getPlugin());
|
||||
|
||||
pluginsList.add(WearPlugin.initPlugin(this));
|
||||
|
@ -380,19 +380,6 @@ public class MainApp extends Application {
|
|||
return newList;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static <T extends PluginBase> T getSpecificPlugin(Class<T> pluginClass) {
|
||||
if (pluginsList != null) {
|
||||
for (PluginBase p : pluginsList) {
|
||||
if (pluginClass.isAssignableFrom(p.getClass()))
|
||||
return (T) p;
|
||||
}
|
||||
} else {
|
||||
log.error("pluginsList=null");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static boolean isEngineeringModeOrRelease() {
|
||||
if (!Config.APS)
|
||||
return true;
|
||||
|
|
|
@ -70,8 +70,6 @@ public class PreferencesActivity extends PreferenceActivity implements SharedPre
|
|||
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
|
||||
RxBus.INSTANCE.send(new EventPreferenceChange(key));
|
||||
if (key.equals("language")) {
|
||||
String lang = sharedPreferences.getString("language", "en");
|
||||
LocaleHelper.setLocale(getApplicationContext(), lang);
|
||||
RxBus.INSTANCE.send(new EventRebuildTabs(true));
|
||||
//recreate() does not update language so better close settings
|
||||
finish();
|
||||
|
|
|
@ -536,11 +536,11 @@ public class TDDStatsActivity extends NoSplashActivity {
|
|||
|
||||
public static boolean isOldData(List<TDD> historyList) {
|
||||
Object activePump = ConfigBuilderPlugin.getPlugin().getActivePump();
|
||||
PumpInterface dana = MainApp.getSpecificPlugin(DanaRPlugin.class);
|
||||
PumpInterface danaRS = MainApp.getSpecificPlugin(DanaRSPlugin.class);
|
||||
PumpInterface danaV2 = MainApp.getSpecificPlugin(DanaRv2Plugin.class);
|
||||
PumpInterface danaKorean = MainApp.getSpecificPlugin(DanaRKoreanPlugin.class);
|
||||
PumpInterface insight = MainApp.getSpecificPlugin(LocalInsightPlugin.class);
|
||||
PumpInterface dana = DanaRPlugin.getPlugin();
|
||||
PumpInterface danaRS = DanaRSPlugin.getPlugin();
|
||||
PumpInterface danaV2 = DanaRv2Plugin.getPlugin();
|
||||
PumpInterface danaKorean = DanaRKoreanPlugin.getPlugin();
|
||||
PumpInterface insight = LocalInsightPlugin.getPlugin();
|
||||
|
||||
boolean startsYesterday = activePump == dana || activePump == danaRS || activePump == danaV2 || activePump == danaKorean || activePump == insight;
|
||||
|
||||
|
|
|
@ -50,6 +50,7 @@ import info.nightscout.androidaps.plugins.bus.RxBus;
|
|||
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
|
||||
import info.nightscout.androidaps.plugins.general.overview.dialogs.ErrorHelperActivity;
|
||||
import info.nightscout.androidaps.plugins.general.wear.ActionStringHandler;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventAutosensCalculationFinished;
|
||||
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin;
|
||||
|
@ -645,7 +646,12 @@ public class LoopPlugin extends PluginBase {
|
|||
@Override
|
||||
public void run() {
|
||||
if (!result.success) {
|
||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.tempbasaldeliveryerror));
|
||||
Intent i = new Intent(MainApp.instance(), ErrorHelperActivity.class);
|
||||
i.putExtra("soundid", R.raw.boluserror);
|
||||
i.putExtra("status", result.comment);
|
||||
i.putExtra("title", MainApp.gs(R.string.tempbasaldeliveryerror));
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
MainApp.instance().startActivity(i);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -654,7 +660,12 @@ public class LoopPlugin extends PluginBase {
|
|||
@Override
|
||||
public void run() {
|
||||
if (!result.success) {
|
||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.tempbasaldeliveryerror));
|
||||
Intent i = new Intent(MainApp.instance(), ErrorHelperActivity.class);
|
||||
i.putExtra("soundid", R.raw.boluserror);
|
||||
i.putExtra("status", result.comment);
|
||||
i.putExtra("title", MainApp.gs(R.string.tempbasaldeliveryerror));
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
MainApp.instance().startActivity(i);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -665,7 +676,12 @@ public class LoopPlugin extends PluginBase {
|
|||
@Override
|
||||
public void run() {
|
||||
if (!result.success) {
|
||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.extendedbolusdeliveryerror));
|
||||
Intent i = new Intent(MainApp.instance(), ErrorHelperActivity.class);
|
||||
i.putExtra("soundid", R.raw.boluserror);
|
||||
i.putExtra("status", result.comment);
|
||||
i.putExtra("title", MainApp.gs(R.string.extendedbolusdeliveryerror));
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
MainApp.instance().startActivity(i);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -679,7 +695,12 @@ public class LoopPlugin extends PluginBase {
|
|||
@Override
|
||||
public void run() {
|
||||
if (!result.success) {
|
||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.tempbasaldeliveryerror));
|
||||
Intent i = new Intent(MainApp.instance(), ErrorHelperActivity.class);
|
||||
i.putExtra("soundid", R.raw.boluserror);
|
||||
i.putExtra("status", result.comment);
|
||||
i.putExtra("title", MainApp.gs(R.string.tempbasaldeliveryerror));
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
MainApp.instance().startActivity(i);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -51,7 +51,6 @@ class ObjectivesFragment : Fragment() {
|
|||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
objectives_recyclerview.layoutManager = LinearLayoutManager(view.context)
|
||||
objectives_recyclerview.adapter = objectivesAdapter
|
||||
objectives_fake.setOnClickListener { updateGUI() }
|
||||
|
@ -105,17 +104,14 @@ class ObjectivesFragment : Fragment() {
|
|||
for (i in 0 until ObjectivesPlugin.objectives.size) {
|
||||
val objective = ObjectivesPlugin.objectives[i]
|
||||
if (!objective.isStarted || !objective.isAccomplished) {
|
||||
val smoothScroller = object : LinearSmoothScroller(context!!) {
|
||||
override fun getVerticalSnapPreference(): Int {
|
||||
return SNAP_TO_START
|
||||
}
|
||||
|
||||
override fun calculateTimeForScrolling(dx: Int): Int {
|
||||
return super.calculateTimeForScrolling(dx) * 4
|
||||
context?.let {
|
||||
val smoothScroller = object : LinearSmoothScroller(it) {
|
||||
override fun getVerticalSnapPreference(): Int = SNAP_TO_START
|
||||
override fun calculateTimeForScrolling(dx: Int): Int = super.calculateTimeForScrolling(dx) * 4
|
||||
}
|
||||
smoothScroller.targetPosition = i
|
||||
objectives_recyclerview.layoutManager?.startSmoothScroll(smoothScroller)
|
||||
}
|
||||
smoothScroller.targetPosition = i
|
||||
objectives_recyclerview.layoutManager?.startSmoothScroll(smoothScroller)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
@ -208,49 +204,63 @@ class ObjectivesFragment : Fragment() {
|
|||
holder.accomplished.setTextColor(-0x3e3e3f)
|
||||
holder.verify.setOnClickListener {
|
||||
holder.verify.visibility = View.INVISIBLE
|
||||
SntpClient.ntpTime(object : SntpClient.Callback() {
|
||||
override fun run() {
|
||||
activity?.runOnUiThread {
|
||||
holder.verify.visibility = View.VISIBLE
|
||||
log.debug("NTP time: $time System time: ${DateUtil.now()}")
|
||||
if (!networkConnected) {
|
||||
ToastUtils.showToastInUiThread(context, R.string.notconnected)
|
||||
} else if (success) {
|
||||
if (objective.isCompleted(time)) {
|
||||
objective.accomplishedOn = time
|
||||
notifyDataSetChanged()
|
||||
scrollToCurrentObjective()
|
||||
startUpdateTimer()
|
||||
NetworkChangeReceiver.fetch()
|
||||
if (objectives_fake.isChecked) {
|
||||
objective.accomplishedOn = DateUtil.now()
|
||||
scrollToCurrentObjective()
|
||||
startUpdateTimer()
|
||||
RxBus.send(EventObjectivesUpdateGui())
|
||||
} else
|
||||
SntpClient.ntpTime(object : SntpClient.Callback() {
|
||||
override fun run() {
|
||||
activity?.runOnUiThread {
|
||||
holder.verify.visibility = View.VISIBLE
|
||||
log.debug("NTP time: $time System time: ${DateUtil.now()}")
|
||||
if (!networkConnected) {
|
||||
ToastUtils.showToastInUiThread(context, R.string.notconnected)
|
||||
} else if (success) {
|
||||
if (objective.isCompleted(time)) {
|
||||
objective.accomplishedOn = time
|
||||
scrollToCurrentObjective()
|
||||
startUpdateTimer()
|
||||
RxBus.send(EventObjectivesUpdateGui())
|
||||
} else {
|
||||
ToastUtils.showToastInUiThread(context, R.string.requirementnotmet)
|
||||
}
|
||||
} else {
|
||||
ToastUtils.showToastInUiThread(context, R.string.requirementnotmet)
|
||||
ToastUtils.showToastInUiThread(context, R.string.failedretrievetime)
|
||||
}
|
||||
} else {
|
||||
ToastUtils.showToastInUiThread(context, R.string.failedretrievetime)
|
||||
}
|
||||
}
|
||||
}
|
||||
}, NetworkChangeReceiver.isConnected())
|
||||
}, NetworkChangeReceiver.isConnected())
|
||||
}
|
||||
holder.start.setOnClickListener {
|
||||
holder.start.visibility = View.INVISIBLE
|
||||
SntpClient.ntpTime(object : SntpClient.Callback() {
|
||||
override fun run() {
|
||||
activity?.runOnUiThread {
|
||||
holder.start.visibility = View.VISIBLE
|
||||
log.debug("NTP time: $time System time: ${DateUtil.now()}")
|
||||
if (!networkConnected) {
|
||||
ToastUtils.showToastInUiThread(context, R.string.notconnected)
|
||||
} else if (success) {
|
||||
objective.startedOn = time
|
||||
notifyDataSetChanged()
|
||||
scrollToCurrentObjective()
|
||||
startUpdateTimer()
|
||||
} else {
|
||||
ToastUtils.showToastInUiThread(context, R.string.failedretrievetime)
|
||||
NetworkChangeReceiver.fetch()
|
||||
if (objectives_fake.isChecked) {
|
||||
objective.startedOn = DateUtil.now()
|
||||
scrollToCurrentObjective()
|
||||
startUpdateTimer()
|
||||
RxBus.send(EventObjectivesUpdateGui())
|
||||
} else
|
||||
SntpClient.ntpTime(object : SntpClient.Callback() {
|
||||
override fun run() {
|
||||
activity?.runOnUiThread {
|
||||
holder.start.visibility = View.VISIBLE
|
||||
log.debug("NTP time: $time System time: ${DateUtil.now()}")
|
||||
if (!networkConnected) {
|
||||
ToastUtils.showToastInUiThread(context, R.string.notconnected)
|
||||
} else if (success) {
|
||||
objective.startedOn = time
|
||||
scrollToCurrentObjective()
|
||||
startUpdateTimer()
|
||||
RxBus.send(EventObjectivesUpdateGui())
|
||||
} else {
|
||||
ToastUtils.showToastInUiThread(context, R.string.failedretrievetime)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}, NetworkChangeReceiver.isConnected())
|
||||
}, NetworkChangeReceiver.isConnected())
|
||||
}
|
||||
holder.revert.setOnClickListener {
|
||||
objective.accomplishedOn = 0
|
||||
|
@ -259,8 +269,8 @@ class ObjectivesFragment : Fragment() {
|
|||
val prevObj = ObjectivesPlugin.objectives[position - 1]
|
||||
prevObj.accomplishedOn = 0
|
||||
}
|
||||
notifyDataSetChanged()
|
||||
scrollToCurrentObjective()
|
||||
RxBus.send(EventObjectivesUpdateGui())
|
||||
}
|
||||
if (objective.hasSpecialInput && !objective.isAccomplished && objective.isStarted) {
|
||||
// generate random request code if none exists
|
||||
|
@ -274,7 +284,7 @@ class ObjectivesFragment : Fragment() {
|
|||
holder.enterButton.setOnClickListener {
|
||||
val input = holder.input.text.toString()
|
||||
objective.specialAction(activity, input)
|
||||
notifyDataSetChanged()
|
||||
RxBus.send(EventObjectivesUpdateGui())
|
||||
}
|
||||
} else {
|
||||
holder.enterButton.visibility = View.GONE
|
||||
|
|
|
@ -21,8 +21,8 @@ import java.util.*
|
|||
object ObjectivesPlugin : PluginBase(PluginDescription()
|
||||
.mainType(PluginType.CONSTRAINTS)
|
||||
.fragmentClass(ObjectivesFragment::class.qualifiedName)
|
||||
.alwaysEnabled(!Config.NSCLIENT)
|
||||
.showInList(!Config.NSCLIENT)
|
||||
.alwaysEnabled(Config.APS)
|
||||
.showInList(Config.APS)
|
||||
.pluginName(R.string.objectives)
|
||||
.shortName(R.string.objectives_shortname)
|
||||
.description(R.string.description_objectives)), ConstraintsInterface {
|
||||
|
|
|
@ -57,12 +57,11 @@ class ObjectivesExamDialog : DialogFragment() {
|
|||
objectives_exam_question.setText(task.question)
|
||||
// Options
|
||||
objectives_exam_options.removeAllViews()
|
||||
for (o in task.options) {
|
||||
val option: Option = o as Option;
|
||||
val cb = option.generate(context)
|
||||
task.options.forEach {
|
||||
val cb = it.generate(context)
|
||||
if (task.answered) {
|
||||
cb.isEnabled = false
|
||||
if (option.isCorrect)
|
||||
if (it.isCorrect)
|
||||
cb.isChecked = true
|
||||
}
|
||||
objectives_exam_options.addView(cb)
|
||||
|
|
|
@ -230,7 +230,7 @@ public abstract class Objective {
|
|||
return question;
|
||||
}
|
||||
|
||||
public List getOptions() {
|
||||
public List<Objective.Option> getOptions() {
|
||||
return options;
|
||||
}
|
||||
|
||||
|
|
|
@ -199,6 +199,11 @@ public class Objective2 extends Objective {
|
|||
.hint(new Hint(R.string.profileswitchtime_hint1))
|
||||
);
|
||||
|
||||
tasks.add(new ExamTask(R.string.other_medication_label, R.string.other_medication_text,"otherMedicationWarning")
|
||||
.option(new Option(R.string.yes, true))
|
||||
.option(new Option(R.string.no, false))
|
||||
);
|
||||
|
||||
for (Task task : tasks)
|
||||
Collections.shuffle(((ExamTask)task).options);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.plugins.general.signatureVerifier;
|
||||
package info.nightscout.androidaps.plugins.constraints.signatureVerifier;
|
||||
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.Signature;
|
||||
|
@ -42,23 +42,23 @@ import info.nightscout.androidaps.utils.SP;
|
|||
* In case someone decides to leak a ready-to-use APK nonetheless, we can still disable it.
|
||||
* Self-compiled APKs with privately held certificates cannot and will not be disabled.
|
||||
*/
|
||||
public class SignatureVerifier extends PluginBase implements ConstraintsInterface {
|
||||
public class SignatureVerifierPlugin extends PluginBase implements ConstraintsInterface {
|
||||
|
||||
private static final String REVOKED_CERTS_URL = "https://raw.githubusercontent.com/MilosKozak/AndroidAPS/master/app/src/main/assets/revoked_certs.txt";
|
||||
private static final long UPDATE_INTERVAL = TimeUnit.DAYS.toMillis(1);
|
||||
|
||||
private static SignatureVerifier plugin = new SignatureVerifier();
|
||||
private static SignatureVerifierPlugin plugin = new SignatureVerifierPlugin();
|
||||
|
||||
private Logger log = LoggerFactory.getLogger(L.CORE);
|
||||
private final Object $lock = new Object[0];
|
||||
private File revokedCertsFile;
|
||||
private List<byte[]> revokedCerts;
|
||||
|
||||
public static SignatureVerifier getPlugin() {
|
||||
public static SignatureVerifierPlugin getPlugin() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
private SignatureVerifier() {
|
||||
private SignatureVerifierPlugin() {
|
||||
super(new PluginDescription()
|
||||
.mainType(PluginType.CONSTRAINTS)
|
||||
.neverVisible(true)
|
||||
|
@ -124,14 +124,52 @@ public class SignatureVerifier extends PluginBase implements ConstraintsInterfac
|
|||
}
|
||||
}
|
||||
}
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
log.error("Error in SignatureVerifier", e);
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
log.error("Error in SignatureVerifier", e);
|
||||
} catch (PackageManager.NameNotFoundException | NoSuchAlgorithmException e) {
|
||||
log.error("Error in SignatureVerifierPlugin", e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public List<String> shortHashes() {
|
||||
List<String> hashes = new ArrayList<>();
|
||||
try {
|
||||
Signature[] signatures = MainApp.instance().getPackageManager().getPackageInfo(MainApp.instance().getPackageName(), PackageManager.GET_SIGNATURES).signatures;
|
||||
if (signatures != null) {
|
||||
for (Signature signature : signatures) {
|
||||
MessageDigest digest = MessageDigest.getInstance("SHA256");
|
||||
byte[] fingerprint = digest.digest(signature.toByteArray());
|
||||
String hash = Hex.toHexString(fingerprint);
|
||||
log.debug("Found signature: " + hash);
|
||||
log.debug("Found signature (short): " + singleCharMap(fingerprint));
|
||||
hashes.add(singleCharMap(fingerprint));
|
||||
}
|
||||
}
|
||||
} catch (PackageManager.NameNotFoundException | NoSuchAlgorithmException e) {
|
||||
log.error("Error in SignatureVerifierPlugin", e);
|
||||
}
|
||||
return hashes;
|
||||
}
|
||||
|
||||
String map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"§$%&/()=?,.-;:_<>|°^`´\\@€*'#+~{}[]¿¡áéíóúàèìòùöäü`ÁÉÍÓÚÀÈÌÒÙÖÄÜßÆÇÊËÎÏԌ۟æçêëîïôœûÿĆČĐŠŽćđšžñΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ\u03A2ΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρςστυφχψωϨϩϪϫϬϭϮϯϰϱϲϳϴϵ϶ϷϸϹϺϻϼϽϾϿЀЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗ";
|
||||
|
||||
private String singleCharMap(byte[] array) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (byte b : array) {
|
||||
sb.append(map.charAt(b & 0xFF));
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public String singleCharUnMap(String shortHash) {
|
||||
byte[] array = new byte[shortHash.length()];
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < array.length; i++) {
|
||||
if (i != 0) sb.append(":");
|
||||
sb.append(String.format("%02X", 0xFF & map.charAt(map.indexOf(shortHash.charAt(i)))));
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private boolean shouldDownloadCerts() {
|
||||
return System.currentTimeMillis() - SP.getLong(R.string.key_last_revoked_certs_check, 0L) >= UPDATE_INTERVAL;
|
||||
}
|
||||
|
@ -153,7 +191,7 @@ public class SignatureVerifier extends PluginBase implements ConstraintsInterfac
|
|||
this.revokedCerts = parseRevokedCertsFile(revokedCerts);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
log.error("Error in SignatureVerifier", e);
|
||||
log.error("Error in SignatureVerifierPlugin", e);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.plugins.general.versionChecker
|
||||
package info.nightscout.androidaps.plugins.constraints.versionChecker
|
||||
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
|
@ -1,4 +1,4 @@
|
|||
package info.nightscout.androidaps.plugins.general.versionChecker
|
||||
package info.nightscout.androidaps.plugins.constraints.versionChecker
|
||||
|
||||
import android.content.Context
|
||||
import android.net.ConnectivityManager
|
||||
|
@ -15,21 +15,14 @@ import java.io.IOException
|
|||
import java.net.URL
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
|
||||
// check network connection
|
||||
fun isConnected(): Boolean {
|
||||
val connMgr = MainApp.instance().applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
|
||||
return connMgr.activeNetworkInfo?.isConnected ?: false
|
||||
}
|
||||
|
||||
fun findVersion(file :String?): String? {
|
||||
val regex = "(.*)version(.*)\"(((\\d+)\\.)+(\\d+))\"(.*)".toRegex()
|
||||
return file?.lines()?.filter { regex.matches(it) }?.mapNotNull { regex.matchEntire(it)?.groupValues?.getOrNull(3) }?.firstOrNull()
|
||||
}
|
||||
|
||||
private val log = LoggerFactory.getLogger(L.CORE)
|
||||
|
||||
|
||||
fun triggerCheckVersion() {
|
||||
|
||||
if (!SP.contains(R.string.key_last_time_this_version_detected)) {
|
||||
|
@ -56,13 +49,34 @@ private fun checkVersion() = if (isConnected()) {
|
|||
log.debug("Github master version no checked. No connectivity")
|
||||
|
||||
fun compareWithCurrentVersion(newVersion: String?, currentVersion: String) {
|
||||
val comparison: Int? = newVersion?.versionStrip()?.compareTo(currentVersion.versionStrip())
|
||||
when {
|
||||
comparison == null -> onVersionNotDetectable()
|
||||
comparison == 0 -> onSameVersionDetected()
|
||||
comparison > 0 -> onNewVersionDetected(currentVersion = currentVersion, newVersion = newVersion)
|
||||
else -> onOlderVersionDetected()
|
||||
|
||||
val newVersionElements = newVersion.toNumberList()
|
||||
val currentVersionElements = currentVersion.toNumberList()
|
||||
|
||||
if (newVersionElements == null || newVersionElements.isEmpty()) {
|
||||
onVersionNotDetectable()
|
||||
return
|
||||
}
|
||||
|
||||
if (currentVersionElements == null || currentVersionElements.isEmpty()) {
|
||||
// current version scrambled?!
|
||||
onNewVersionDetected(currentVersion, newVersion)
|
||||
return
|
||||
}
|
||||
|
||||
newVersionElements.take(3).forEachIndexed { i, newElem ->
|
||||
val currElem: Int = currentVersionElements.getOrNull(i)
|
||||
?: return onNewVersionDetected(currentVersion, newVersion)
|
||||
|
||||
(newElem - currElem).let {
|
||||
when {
|
||||
it > 0 -> return onNewVersionDetected(currentVersion, newVersion)
|
||||
it < 0 -> return onOlderVersionDetected()
|
||||
it == 0 -> Unit
|
||||
}
|
||||
}
|
||||
}
|
||||
onSameVersionDetected()
|
||||
}
|
||||
|
||||
private fun onOlderVersionDetected() {
|
||||
|
@ -75,7 +89,7 @@ fun onSameVersionDetected() {
|
|||
}
|
||||
|
||||
fun onVersionNotDetectable() {
|
||||
log.debug("fetch failed, ignore and smartcast to non-null")
|
||||
log.debug("fetch failed")
|
||||
}
|
||||
|
||||
fun onNewVersionDetected(currentVersion: String, newVersion: String?) {
|
||||
|
@ -88,14 +102,25 @@ fun onNewVersionDetected(currentVersion: String, newVersion: String?) {
|
|||
}
|
||||
}
|
||||
|
||||
@Deprecated(replaceWith = ReplaceWith("numericVersionPart()"), message = "Will not work if RCs have another index number in it.")
|
||||
fun String.versionStrip() = this.mapNotNull {
|
||||
when (it) {
|
||||
in '0'..'9' -> it
|
||||
'.' -> it
|
||||
else -> null
|
||||
'.' -> it
|
||||
else -> null
|
||||
}
|
||||
}.joinToString(separator = "")
|
||||
|
||||
fun String.numericVersionPart(): String =
|
||||
"(((\\d+)\\.)+(\\d+))(\\D(.*))?".toRegex().matchEntire(this)?.groupValues?.getOrNull(1) ?: ""
|
||||
|
||||
fun String?.toNumberList() =
|
||||
this?.numericVersionPart().takeIf { !it.isNullOrBlank() }?.split(".")?.map { it.toInt() }
|
||||
|
||||
fun findVersion(file: String?): String? {
|
||||
val regex = "(.*)version(.*)\"(((\\d+)\\.)+(\\d+))\"(.*)".toRegex()
|
||||
return file?.lines()?.filter { regex.matches(it) }?.mapNotNull { regex.matchEntire(it)?.groupValues?.getOrNull(3) }?.firstOrNull()
|
||||
}
|
||||
|
||||
val CHECK_EVERY = TimeUnit.DAYS.toMillis(1)
|
||||
val WARN_EVERY = TimeUnit.DAYS.toMillis(1)
|
|
@ -29,7 +29,7 @@ class AutomationFragment : Fragment() {
|
|||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
eventListAdapter = EventListAdapter(AutomationPlugin.automationEvents, fragmentManager)
|
||||
eventListAdapter = EventListAdapter(AutomationPlugin.automationEvents, fragmentManager, activity)
|
||||
automation_eventListView.layoutManager = LinearLayoutManager(context)
|
||||
automation_eventListView.adapter = eventListAdapter
|
||||
|
||||
|
@ -74,14 +74,11 @@ class AutomationFragment : Fragment() {
|
|||
|
||||
@Synchronized
|
||||
private fun updateGui() {
|
||||
if (eventListAdapter == null) return
|
||||
eventListAdapter?.notifyDataSetChanged()
|
||||
val sb = StringBuilder()
|
||||
for (l in AutomationPlugin.executionLog.reversed()) {
|
||||
sb.append(l)
|
||||
sb.append("\n")
|
||||
}
|
||||
automation_logView.text = sb.toString()
|
||||
for (l in AutomationPlugin.executionLog.reversed())
|
||||
sb.append(l).append("\n")
|
||||
automation_logView?.text = sb.toString()
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package info.nightscout.androidaps.plugins.general.automation;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
|
@ -26,14 +27,17 @@ import info.nightscout.androidaps.plugins.general.automation.actions.Action;
|
|||
import info.nightscout.androidaps.plugins.general.automation.dialogs.EditEventDialog;
|
||||
import info.nightscout.androidaps.plugins.general.automation.events.EventAutomationDataChanged;
|
||||
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerConnector;
|
||||
import info.nightscout.androidaps.utils.OKDialog;
|
||||
|
||||
class EventListAdapter extends RecyclerView.Adapter<EventListAdapter.ViewHolder> {
|
||||
private final List<AutomationEvent> mEventList;
|
||||
private final FragmentManager mFragmentManager;
|
||||
private final List<AutomationEvent> eventList;
|
||||
private final FragmentManager fragmentManager;
|
||||
private final Activity activity;
|
||||
|
||||
EventListAdapter(List<AutomationEvent> events, FragmentManager fragmentManager) {
|
||||
this.mEventList = events;
|
||||
this.mFragmentManager = fragmentManager;
|
||||
EventListAdapter(List<AutomationEvent> events, FragmentManager fragmentManager, Activity activity) {
|
||||
this.eventList = events;
|
||||
this.fragmentManager = fragmentManager;
|
||||
this.activity = activity;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
@ -52,7 +56,7 @@ class EventListAdapter extends RecyclerView.Adapter<EventListAdapter.ViewHolder>
|
|||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
|
||||
final AutomationEvent event = mEventList.get(position);
|
||||
final AutomationEvent event = eventList.get(position);
|
||||
holder.eventTitle.setText(event.getTitle());
|
||||
holder.enabled.setChecked(event.isEnabled());
|
||||
holder.iconLayout.removeAllViews();
|
||||
|
@ -82,16 +86,18 @@ class EventListAdapter extends RecyclerView.Adapter<EventListAdapter.ViewHolder>
|
|||
}
|
||||
|
||||
// enabled event
|
||||
holder.enabled.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
||||
event.setEnabled(isChecked);
|
||||
holder.enabled.setOnClickListener(v -> {
|
||||
event.setEnabled((holder.enabled.isChecked()));
|
||||
RxBus.INSTANCE.send(new EventAutomationDataChanged());
|
||||
});
|
||||
|
||||
// remove event
|
||||
holder.iconTrash.setOnClickListener(v -> {
|
||||
mEventList.remove(event);
|
||||
RxBus.INSTANCE.send(new EventAutomationDataChanged());
|
||||
});
|
||||
holder.iconTrash.setOnClickListener(v ->
|
||||
OKDialog.showConfirmation(activity, MainApp.gs(R.string.removerecord) + " " + event.getTitle(), () -> {
|
||||
eventList.remove(event);
|
||||
RxBus.INSTANCE.send(new EventAutomationDataChanged());
|
||||
})
|
||||
);
|
||||
|
||||
// edit event
|
||||
holder.rootLayout.setOnClickListener(v -> {
|
||||
|
@ -101,14 +107,14 @@ class EventListAdapter extends RecyclerView.Adapter<EventListAdapter.ViewHolder>
|
|||
args.putString("event", event.toJSON());
|
||||
args.putInt("position", position);
|
||||
dialog.setArguments(args);
|
||||
if (mFragmentManager != null)
|
||||
dialog.show(mFragmentManager, "EditEventDialog");
|
||||
if (fragmentManager != null)
|
||||
dialog.show(fragmentManager, "EditEventDialog");
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return mEventList.size();
|
||||
return eventList.size();
|
||||
}
|
||||
|
||||
static class ViewHolder extends RecyclerView.ViewHolder {
|
||||
|
|
|
@ -122,8 +122,7 @@ public class FoodFragment extends Fragment {
|
|||
}
|
||||
});
|
||||
|
||||
RecyclerViewAdapter adapter = new RecyclerViewAdapter(MainApp
|
||||
.getSpecificPlugin(FoodPlugin.class).getService().getFoodData());
|
||||
RecyclerViewAdapter adapter = new RecyclerViewAdapter(FoodPlugin.getPlugin().getService().getFoodData());
|
||||
recyclerView.setAdapter(adapter);
|
||||
|
||||
loadData();
|
||||
|
@ -151,7 +150,7 @@ public class FoodFragment extends Fragment {
|
|||
}
|
||||
|
||||
void loadData() {
|
||||
unfiltered = MainApp.getSpecificPlugin(FoodPlugin.class).getService().getFoodData();
|
||||
unfiltered = FoodPlugin.getPlugin().getService().getFoodData();
|
||||
}
|
||||
|
||||
void fillCategories() {
|
||||
|
@ -297,7 +296,7 @@ public class FoodFragment extends Fragment {
|
|||
if (_id != null && !_id.equals("")) {
|
||||
NSUpload.removeFoodFromNS(_id);
|
||||
}
|
||||
MainApp.getSpecificPlugin(FoodPlugin.class).getService().delete(food);
|
||||
FoodPlugin.getPlugin().getService().delete(food);
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(MainApp.gs(R.string.cancel), null);
|
||||
|
|
|
@ -27,7 +27,7 @@ public class AckAlarmReceiver extends BroadcastReceiver {
|
|||
PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
|
||||
PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
|
||||
AckAlarmReceiver.class.getSimpleName());
|
||||
NSClientPlugin nsClientPlugin = MainApp.getSpecificPlugin(NSClientPlugin.class);
|
||||
NSClientPlugin nsClientPlugin = NSClientPlugin.getPlugin();
|
||||
if (!nsClientPlugin.isEnabled(PluginType.GENERAL)) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -118,7 +118,7 @@ public class DBAccessReceiver extends BroadcastReceiver {
|
|||
}
|
||||
|
||||
public boolean shouldUpload() {
|
||||
NSClientPlugin nsClientPlugin = MainApp.getSpecificPlugin(NSClientPlugin.class);
|
||||
NSClientPlugin nsClientPlugin = NSClientPlugin.getPlugin();
|
||||
return nsClientPlugin.isEnabled(PluginType.GENERAL) && !SP.getBoolean(R.string.key_ns_noupload, false);
|
||||
}
|
||||
|
||||
|
|
|
@ -265,10 +265,10 @@ public class NSClientService extends Service {
|
|||
nsAPIhashCode = Hashing.sha1().hashString(nsAPISecret, Charsets.UTF_8).toString();
|
||||
|
||||
RxBus.INSTANCE.send(new EventNSClientStatus("Initializing"));
|
||||
if (!MainApp.getSpecificPlugin(NSClientPlugin.class).isAllowed()) {
|
||||
if (!NSClientPlugin.getPlugin().isAllowed()) {
|
||||
RxBus.INSTANCE.send(new EventNSClientNewLog("NSCLIENT", "not allowed"));
|
||||
RxBus.INSTANCE.send(new EventNSClientStatus("Not allowed"));
|
||||
} else if (MainApp.getSpecificPlugin(NSClientPlugin.class).paused) {
|
||||
} else if (NSClientPlugin.getPlugin().paused) {
|
||||
RxBus.INSTANCE.send(new EventNSClientNewLog("NSCLIENT", "paused"));
|
||||
RxBus.INSTANCE.send(new EventNSClientStatus("Paused"));
|
||||
} else if (!nsEnabled) {
|
||||
|
@ -386,7 +386,7 @@ public class NSClientService extends Service {
|
|||
}
|
||||
|
||||
public void readPreferences() {
|
||||
nsEnabled = MainApp.getSpecificPlugin(NSClientPlugin.class).isEnabled(PluginType.GENERAL);
|
||||
nsEnabled = NSClientPlugin.getPlugin().isEnabled(PluginType.GENERAL);
|
||||
nsURL = SP.getString(R.string.key_nsclientinternal_url, "");
|
||||
nsAPISecret = SP.getString(R.string.key_nsclientinternal_api_secret, "");
|
||||
nsDevice = SP.getString("careportal_enteredby", "");
|
||||
|
|
|
@ -1146,7 +1146,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
|||
}
|
||||
|
||||
// **** Calibration & CGM buttons ****
|
||||
boolean xDripIsBgSource = MainApp.getSpecificPlugin(SourceXdripPlugin.class) != null && MainApp.getSpecificPlugin(SourceXdripPlugin.class).isEnabled(PluginType.BGSOURCE);
|
||||
boolean xDripIsBgSource = SourceXdripPlugin.getPlugin().isEnabled(PluginType.BGSOURCE);
|
||||
boolean dexcomIsSource = SourceDexcomPlugin.INSTANCE.isEnabled(PluginType.BGSOURCE);
|
||||
boolean bgAvailable = DatabaseHelper.actualBg() != null;
|
||||
if (calibrationButton != null) {
|
||||
|
|
|
@ -23,7 +23,7 @@ import info.nightscout.androidaps.events.EventPumpStatusChanged;
|
|||
import info.nightscout.androidaps.logging.L;
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissBolusprogressIfRunning;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissBolusProgressIfRunning;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress;
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
|
@ -101,10 +101,10 @@ public class BolusProgressDialog extends DialogFragment implements View.OnClickL
|
|||
.subscribe(event -> statusView.setText(event.getStatus()), FabricPrivacy::logException)
|
||||
);
|
||||
disposable.add(RxBus.INSTANCE
|
||||
.toObservable(EventDismissBolusprogressIfRunning.class)
|
||||
.toObservable(EventDismissBolusProgressIfRunning.class)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(event -> {
|
||||
if (L.isEnabled(L.UI)) log.debug("EventDismissBolusprogressIfRunning");
|
||||
if (L.isEnabled(L.UI)) log.debug("EventDismissBolusProgressIfRunning");
|
||||
if (BolusProgressDialog.running) dismiss();
|
||||
}, FabricPrivacy::logException)
|
||||
);
|
||||
|
|
|
@ -30,6 +30,7 @@ import kotlinx.android.synthetic.main.overview_wizard_dialog.*
|
|||
import org.slf4j.LoggerFactory
|
||||
import java.text.DecimalFormat
|
||||
import java.util.*
|
||||
import kotlin.math.abs
|
||||
|
||||
class WizardDialog : DialogFragment() {
|
||||
private val log = LoggerFactory.getLogger(WizardDialog::class.java)
|
||||
|
@ -69,10 +70,10 @@ class WizardDialog : DialogFragment() {
|
|||
|
||||
override fun onSaveInstanceState(savedInstanceState: Bundle) {
|
||||
super.onSaveInstanceState(savedInstanceState)
|
||||
savedInstanceState.putDouble("treatments_wizard_bginput", treatments_wizard_bginput.value)
|
||||
savedInstanceState.putDouble("treatments_wizard_carbsinput", treatments_wizard_carbsinput.value)
|
||||
savedInstanceState.putDouble("treatments_wizard_correctioninput", treatments_wizard_correctioninput.value)
|
||||
savedInstanceState.putDouble("treatments_wizard_carbtimeinput", treatments_wizard_carbtimeinput.value)
|
||||
savedInstanceState.putDouble("treatments_wizard_bg_input", treatments_wizard_bg_input.value)
|
||||
savedInstanceState.putDouble("treatments_wizard_carbs_input", treatments_wizard_carbs_input.value)
|
||||
savedInstanceState.putDouble("treatments_wizard_correction_input", treatments_wizard_correction_input.value)
|
||||
savedInstanceState.putDouble("treatments_wizard_carb_time_input", treatments_wizard_carb_time_input.value)
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
|
||||
|
@ -94,25 +95,26 @@ class WizardDialog : DialogFragment() {
|
|||
val maxCarbs = MainApp.getConstraintChecker().maxCarbsAllowed.value()
|
||||
val maxCorrection = MainApp.getConstraintChecker().maxBolusAllowed.value()
|
||||
|
||||
treatments_wizard_bginput.setParams(savedInstanceState?.getDouble("treatments_wizard_bginput")
|
||||
treatments_wizard_bg_input.setParams(savedInstanceState?.getDouble("treatments_wizard_bg_input")
|
||||
?: 0.0, 0.0, 500.0, 0.1, DecimalFormat("0.0"), false, ok, textWatcher)
|
||||
treatments_wizard_carbsinput.setParams(savedInstanceState?.getDouble("treatments_wizard_carbsinput")
|
||||
treatments_wizard_carbs_input.setParams(savedInstanceState?.getDouble("treatments_wizard_carbs_input")
|
||||
?: 0.0, 0.0, maxCarbs.toDouble(), 1.0, DecimalFormat("0"), false, ok, textWatcher)
|
||||
val bolusstep = ConfigBuilderPlugin.getPlugin().activePump?.pumpDescription?.bolusStep
|
||||
val bolusStep = ConfigBuilderPlugin.getPlugin().activePump?.pumpDescription?.bolusStep
|
||||
?: 0.1
|
||||
treatments_wizard_correctioninput.setParams(savedInstanceState?.getDouble("treatments_wizard_correctioninput")
|
||||
?: 0.0, -maxCorrection, maxCorrection, bolusstep, DecimalFormatter.pumpSupportedBolusFormat(), false, ok, textWatcher)
|
||||
treatments_wizard_carbtimeinput.setParams(savedInstanceState?.getDouble("treatments_wizard_carbtimeinput")
|
||||
treatments_wizard_correction_input.setParams(savedInstanceState?.getDouble("treatments_wizard_correction_input")
|
||||
?: 0.0, -maxCorrection, maxCorrection, bolusStep, DecimalFormatter.pumpSupportedBolusFormat(), false, ok, textWatcher)
|
||||
treatments_wizard_carb_time_input.setParams(savedInstanceState?.getDouble("treatments_wizard_carb_time_input")
|
||||
?: 0.0, -60.0, 60.0, 5.0, DecimalFormat("0"), false, ok, textWatcher)
|
||||
initDialog()
|
||||
|
||||
treatments_wizard_percent_used.text = SP.getInt(R.string.key_boluswizard_percentage, 100).toString() + "%"
|
||||
treatments_wizard_percent_used.text = MainApp.gs(R.string.format_percent, SP.getInt(R.string.key_boluswizard_percentage, 100))
|
||||
// ok button
|
||||
ok.setOnClickListener {
|
||||
if (okClicked) {
|
||||
log.debug("guarding: ok already clicked")
|
||||
} else {
|
||||
okClicked = true
|
||||
calculateInsulin()
|
||||
parentContext?.let { context ->
|
||||
wizard?.confirmAndExecute(context)
|
||||
}
|
||||
|
@ -130,10 +132,13 @@ class WizardDialog : DialogFragment() {
|
|||
treatments_wizard_bgtrendcheckbox.setOnCheckedChangeListener { buttonView, _ -> onCheckedChanged(buttonView) }
|
||||
treatments_wizard_sbcheckbox.setOnCheckedChangeListener { buttonView, _ -> onCheckedChanged(buttonView) }
|
||||
|
||||
treatments_wizard_delimiter.visibility = View.GONE
|
||||
treatments_wizard_resulttable.visibility = View.GONE
|
||||
val showCalc = SP.getBoolean(MainApp.gs(R.string.key_wizard_calculation_visible), false)
|
||||
treatments_wizard_delimiter.visibility = if (showCalc) View.VISIBLE else View.GONE
|
||||
treatments_wizard_resulttable.visibility = if (showCalc) View.VISIBLE else View.GONE
|
||||
treatments_wizard_calculationcheckbox.isChecked = showCalc
|
||||
treatments_wizard_calculationcheckbox.setOnCheckedChangeListener { _, isChecked ->
|
||||
run {
|
||||
SP.putBoolean(MainApp.gs(R.string.key_wizard_calculation_visible), isChecked)
|
||||
treatments_wizard_delimiter.visibility = if (isChecked) View.VISIBLE else View.GONE
|
||||
treatments_wizard_resulttable.visibility = if (isChecked) View.VISIBLE else View.GONE
|
||||
}
|
||||
|
@ -168,7 +173,7 @@ class WizardDialog : DialogFragment() {
|
|||
disposable.clear()
|
||||
}
|
||||
|
||||
fun onCheckedChanged(buttonView: CompoundButton) {
|
||||
private fun onCheckedChanged(buttonView: CompoundButton) {
|
||||
saveCheckedStates()
|
||||
treatments_wizard_ttcheckbox.isEnabled = treatments_wizard_bgcheckbox.isChecked && TreatmentsPlugin.getPlugin().tempTargetFromHistory != null
|
||||
if (buttonView.id == treatments_wizard_cobcheckbox.id)
|
||||
|
@ -220,17 +225,17 @@ class WizardDialog : DialogFragment() {
|
|||
val units = profile.units
|
||||
treatments_wizard_bgunits.text = units
|
||||
if (units == Constants.MGDL)
|
||||
treatments_wizard_bginput.setStep(1.0)
|
||||
treatments_wizard_bg_input.setStep(1.0)
|
||||
else
|
||||
treatments_wizard_bginput.setStep(0.1)
|
||||
treatments_wizard_bg_input.setStep(0.1)
|
||||
|
||||
// Set BG if not old
|
||||
val lastBg = DatabaseHelper.actualBg()
|
||||
|
||||
if (lastBg != null) {
|
||||
treatments_wizard_bginput.value = lastBg.valueToUnits(units)
|
||||
treatments_wizard_bg_input.value = lastBg.valueToUnits(units)
|
||||
} else {
|
||||
treatments_wizard_bginput.value = 0.0
|
||||
treatments_wizard_bg_input.value = 0.0
|
||||
}
|
||||
treatments_wizard_ttcheckbox.isEnabled = TreatmentsPlugin.getPlugin().tempTargetFromHistory != null
|
||||
|
||||
|
@ -263,29 +268,29 @@ class WizardDialog : DialogFragment() {
|
|||
if (specificProfile == null) return
|
||||
|
||||
// Entered values
|
||||
var c_bg = SafeParse.stringToDouble(treatments_wizard_bginput.text)
|
||||
val c_carbs = SafeParse.stringToInt(treatments_wizard_carbsinput.text)
|
||||
val c_correction = SafeParse.stringToDouble(treatments_wizard_correctioninput.text)
|
||||
val carbsAfterConstraint = MainApp.getConstraintChecker().applyCarbsConstraints(Constraint(c_carbs)).value()
|
||||
if (Math.abs(c_carbs - carbsAfterConstraint) > 0.01) {
|
||||
treatments_wizard_carbsinput.value = 0.0
|
||||
var bg = SafeParse.stringToDouble(treatments_wizard_bg_input.text)
|
||||
val carbs = SafeParse.stringToInt(treatments_wizard_carbs_input.text)
|
||||
val correction = SafeParse.stringToDouble(treatments_wizard_correction_input.text)
|
||||
val carbsAfterConstraint = MainApp.getConstraintChecker().applyCarbsConstraints(Constraint(carbs)).value()
|
||||
if (abs(carbs - carbsAfterConstraint) > 0.01) {
|
||||
treatments_wizard_carbs_input.value = 0.0
|
||||
ToastUtils.showToastInUiThread(MainApp.instance().applicationContext, MainApp.gs(R.string.carbsconstraintapplied))
|
||||
return
|
||||
}
|
||||
|
||||
c_bg = if (treatments_wizard_bgcheckbox.isChecked) c_bg else 0.0
|
||||
bg = if (treatments_wizard_bgcheckbox.isChecked) bg else 0.0
|
||||
val tempTarget = if (treatments_wizard_ttcheckbox.isChecked) TreatmentsPlugin.getPlugin().tempTargetFromHistory else null
|
||||
|
||||
// COB
|
||||
var c_cob = 0.0
|
||||
var cob = 0.0
|
||||
if (treatments_wizard_cobcheckbox.isChecked) {
|
||||
val cobInfo = IobCobCalculatorPlugin.getPlugin().getCobInfo(false, "Wizard COB")
|
||||
cobInfo.displayCob?.let { c_cob = it }
|
||||
cobInfo.displayCob?.let { cob = it }
|
||||
}
|
||||
|
||||
val carbTime = SafeParse.stringToInt(treatments_wizard_carbtimeinput.text)
|
||||
val carbTime = SafeParse.stringToInt(treatments_wizard_carb_time_input.text)
|
||||
|
||||
wizard = BolusWizard(specificProfile, profileName, tempTarget, carbsAfterConstraint, c_cob, c_bg, c_correction,
|
||||
wizard = BolusWizard(specificProfile, profileName, tempTarget, carbsAfterConstraint, cob, bg, correction,
|
||||
SP.getInt(R.string.key_boluswizard_percentage, 100).toDouble(),
|
||||
treatments_wizard_bgcheckbox.isChecked,
|
||||
treatments_wizard_cobcheckbox.isChecked,
|
||||
|
@ -297,10 +302,10 @@ class WizardDialog : DialogFragment() {
|
|||
treatment_wizard_notes.text.toString(), carbTime)
|
||||
|
||||
wizard?.let { wizard ->
|
||||
treatments_wizard_bg.text = String.format(MainApp.gs(R.string.format_bg_isf), BgReading().value(Profile.toMgdl(c_bg, specificProfile.units)).valueToUnitsToString(specificProfile.units), wizard.sens)
|
||||
treatments_wizard_bg.text = String.format(MainApp.gs(R.string.format_bg_isf), BgReading().value(Profile.toMgdl(bg, specificProfile.units)).valueToUnitsToString(specificProfile.units), wizard.sens)
|
||||
treatments_wizard_bginsulin.text = StringUtils.formatInsulin(wizard.insulinFromBG)
|
||||
|
||||
treatments_wizard_carbs.text = String.format(MainApp.gs(R.string.format_carbs_ic), c_carbs.toDouble(), wizard.ic)
|
||||
treatments_wizard_carbs.text = String.format(MainApp.gs(R.string.format_carbs_ic), carbs.toDouble(), wizard.ic)
|
||||
treatments_wizard_carbsinsulin.text = StringUtils.formatInsulin(wizard.insulinFromCarbs)
|
||||
|
||||
treatments_wizard_bolusiobinsulin.text = StringUtils.formatInsulin(wizard.insulinFromBolusIOB)
|
||||
|
@ -324,7 +329,7 @@ class WizardDialog : DialogFragment() {
|
|||
|
||||
// COB
|
||||
if (treatments_wizard_cobcheckbox.isChecked) {
|
||||
treatments_wizard_cob.text = String.format(MainApp.gs(R.string.format_cob_ic), c_cob, wizard.ic)
|
||||
treatments_wizard_cob.text = String.format(MainApp.gs(R.string.format_cob_ic), cob, wizard.ic)
|
||||
treatments_wizard_cobinsulin.text = StringUtils.formatInsulin(wizard.insulinFromCOB)
|
||||
} else {
|
||||
treatments_wizard_cob.text = ""
|
||||
|
@ -332,12 +337,12 @@ class WizardDialog : DialogFragment() {
|
|||
}
|
||||
|
||||
if (wizard.calculatedTotalInsulin > 0.0 || carbsAfterConstraint > 0.0) {
|
||||
val insulinText = if (wizard.calculatedTotalInsulin > 0.0) DecimalFormatter.toPumpSupportedBolus(wizard.calculatedTotalInsulin) + "U" else ""
|
||||
val carbsText = if (carbsAfterConstraint > 0.0) DecimalFormatter.to0Decimal(carbsAfterConstraint.toDouble()) + "g" else ""
|
||||
treatments_wizard_total.text = MainApp.gs(R.string.result) + ": " + insulinText + " " + carbsText
|
||||
val insulinText = if (wizard.calculatedTotalInsulin > 0.0) MainApp.gs(R.string.formatinsulinunits, wizard.calculatedTotalInsulin) else ""
|
||||
val carbsText = if (carbsAfterConstraint > 0.0) MainApp.gs(R.string.format_carbs, carbsAfterConstraint) else ""
|
||||
treatments_wizard_total.text = MainApp.gs(R.string.result_insulin_carbs, insulinText, carbsText)
|
||||
ok.visibility = View.VISIBLE
|
||||
} else {
|
||||
treatments_wizard_total.text = MainApp.gs(R.string.missing) + " " + DecimalFormatter.to0Decimal(wizard.carbsEquivalent) + "g"
|
||||
treatments_wizard_total.text = MainApp.gs(R.string.missing_carbs, wizard.carbsEquivalent.toInt())
|
||||
ok.visibility = View.INVISIBLE
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,4 +3,4 @@ package info.nightscout.androidaps.plugins.general.overview.events
|
|||
import info.nightscout.androidaps.data.PumpEnactResult
|
||||
import info.nightscout.androidaps.events.Event
|
||||
|
||||
class EventDismissBolusprogressIfRunning(val result: PumpEnactResult) : Event()
|
||||
class EventDismissBolusProgressIfRunning(val result: PumpEnactResult?) : Event()
|
|
@ -310,8 +310,8 @@ public class SmsCommunicatorPlugin extends PluginBase {
|
|||
switch (splitted[1].toUpperCase()) {
|
||||
case "DISABLE":
|
||||
case "STOP":
|
||||
LoopPlugin loopPlugin = MainApp.getSpecificPlugin(LoopPlugin.class);
|
||||
if (loopPlugin != null && loopPlugin.isEnabled(PluginType.LOOP)) {
|
||||
LoopPlugin loopPlugin = LoopPlugin.getPlugin();
|
||||
if (loopPlugin.isEnabled(PluginType.LOOP)) {
|
||||
loopPlugin.setPluginEnabled(PluginType.LOOP, false);
|
||||
ConfigBuilderPlugin.getPlugin().getCommandQueue().cancelTempBasal(true, new Callback() {
|
||||
@Override
|
||||
|
@ -329,8 +329,8 @@ public class SmsCommunicatorPlugin extends PluginBase {
|
|||
break;
|
||||
case "ENABLE":
|
||||
case "START":
|
||||
loopPlugin = MainApp.getSpecificPlugin(LoopPlugin.class);
|
||||
if (loopPlugin != null && !loopPlugin.isEnabled(PluginType.LOOP)) {
|
||||
loopPlugin = LoopPlugin.getPlugin();
|
||||
if (!loopPlugin.isEnabled(PluginType.LOOP)) {
|
||||
loopPlugin.setPluginEnabled(PluginType.LOOP, true);
|
||||
sendSMS(new Sms(receivedSms.phoneNumber, R.string.smscommunicator_loophasbeenenabled));
|
||||
RxBus.INSTANCE.send(new EventRefreshOverview("SMS_LOOP_START"));
|
||||
|
@ -340,18 +340,16 @@ public class SmsCommunicatorPlugin extends PluginBase {
|
|||
receivedSms.processed = true;
|
||||
break;
|
||||
case "STATUS":
|
||||
loopPlugin = MainApp.getSpecificPlugin(LoopPlugin.class);
|
||||
if (loopPlugin != null) {
|
||||
if (loopPlugin.isEnabled(PluginType.LOOP)) {
|
||||
if (loopPlugin.isSuspended())
|
||||
reply = String.format(MainApp.gs(R.string.loopsuspendedfor), loopPlugin.minutesToEndOfSuspend());
|
||||
else
|
||||
reply = MainApp.gs(R.string.smscommunicator_loopisenabled);
|
||||
} else {
|
||||
reply = MainApp.gs(R.string.smscommunicator_loopisdisabled);
|
||||
}
|
||||
sendSMS(new Sms(receivedSms.phoneNumber, reply));
|
||||
loopPlugin = LoopPlugin.getPlugin();
|
||||
if (loopPlugin.isEnabled(PluginType.LOOP)) {
|
||||
if (loopPlugin.isSuspended())
|
||||
reply = String.format(MainApp.gs(R.string.loopsuspendedfor), loopPlugin.minutesToEndOfSuspend());
|
||||
else
|
||||
reply = MainApp.gs(R.string.smscommunicator_loopisenabled);
|
||||
} else {
|
||||
reply = MainApp.gs(R.string.smscommunicator_loopisdisabled);
|
||||
}
|
||||
sendSMS(new Sms(receivedSms.phoneNumber, reply));
|
||||
receivedSms.processed = true;
|
||||
break;
|
||||
case "RESUME":
|
||||
|
|
|
@ -17,7 +17,7 @@ class EventTidepoolStatus(val status: String) : Event() {
|
|||
log.debug("New status: $status")
|
||||
}
|
||||
|
||||
private var timeFormat = SimpleDateFormat("HH:mm:ss", LocaleHelper.getLocale())
|
||||
private var timeFormat = SimpleDateFormat("HH:mm:ss", LocaleHelper.currentLocale())
|
||||
|
||||
fun toPreparedHtml(): StringBuilder {
|
||||
val stringBuilder = StringBuilder()
|
||||
|
|
|
@ -437,11 +437,11 @@ public class ActionStringHandler {
|
|||
|
||||
public static boolean isOldData(List<TDD> historyList) {
|
||||
Object activePump = ConfigBuilderPlugin.getPlugin().getActivePump();
|
||||
PumpInterface dana = MainApp.getSpecificPlugin(DanaRPlugin.class);
|
||||
PumpInterface danaRS = MainApp.getSpecificPlugin(DanaRSPlugin.class);
|
||||
PumpInterface danaV2 = MainApp.getSpecificPlugin(DanaRv2Plugin.class);
|
||||
PumpInterface danaKorean = MainApp.getSpecificPlugin(DanaRKoreanPlugin.class);
|
||||
PumpInterface insight = MainApp.getSpecificPlugin(LocalInsightPlugin.class);
|
||||
PumpInterface dana = DanaRPlugin.getPlugin();
|
||||
PumpInterface danaRS = DanaRSPlugin.getPlugin();
|
||||
PumpInterface danaV2 = DanaRv2Plugin.getPlugin();
|
||||
PumpInterface danaKorean = DanaRKoreanPlugin.getPlugin();
|
||||
PumpInterface insight = LocalInsightPlugin.getPlugin();
|
||||
|
||||
boolean startsYesterday = activePump == dana || activePump == danaRS || activePump == danaV2 || activePump == danaKorean || activePump == insight;
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ import info.nightscout.androidaps.interfaces.PluginType;
|
|||
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin;
|
||||
import info.nightscout.androidaps.plugins.aps.openAPSMA.events.EventOpenAPSUpdateGui;
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissBolusprogressIfRunning;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissBolusProgressIfRunning;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress;
|
||||
import info.nightscout.androidaps.plugins.general.wear.wearintegration.WatchUpdaterService;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventAutosensCalculationFinished;
|
||||
|
@ -139,7 +139,7 @@ public class WearPlugin extends PluginBase {
|
|||
}, FabricPrivacy::logException
|
||||
));
|
||||
disposable.add(RxBus.INSTANCE
|
||||
.toObservable(EventDismissBolusprogressIfRunning.class)
|
||||
.toObservable(EventDismissBolusProgressIfRunning.class)
|
||||
.observeOn(Schedulers.io())
|
||||
.subscribe(event -> {
|
||||
if (event.getResult() == null) return;
|
||||
|
|
|
@ -164,7 +164,8 @@ public class IobCobCalculatorPlugin extends PluginBase {
|
|||
event.isChanged(R.string.key_openapsama_min_5m_carbimpact) ||
|
||||
event.isChanged(R.string.key_absorption_cutoff) ||
|
||||
event.isChanged(R.string.key_openapsama_autosens_max) ||
|
||||
event.isChanged(R.string.key_openapsama_autosens_min)
|
||||
event.isChanged(R.string.key_openapsama_autosens_min) ||
|
||||
event.isChanged(R.string.key_insulin_oref_peak)
|
||||
) {
|
||||
stopCalculation("onEventPreferenceChange");
|
||||
synchronized (dataLock) {
|
||||
|
|
|
@ -34,6 +34,7 @@ import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewB
|
|||
import info.nightscout.androidaps.plugins.pump.common.data.PumpStatus;
|
||||
import info.nightscout.androidaps.plugins.pump.common.defs.PumpDriverState;
|
||||
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.data.MedtronicHistoryData;
|
||||
import info.nightscout.androidaps.plugins.treatments.Treatment;
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
|
||||
import info.nightscout.androidaps.utils.DateUtil;
|
||||
|
@ -415,6 +416,9 @@ public abstract class PumpPluginAbstract extends PluginBase implements PumpInter
|
|||
// bolus needed, ask pump to deliver it
|
||||
return deliverBolus(detailedBolusInfo);
|
||||
} else {
|
||||
if (MedtronicHistoryData.doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: deliverTreatment::(carb only entry)");
|
||||
|
||||
// no bolus required, carb only treatment
|
||||
TreatmentsPlugin.getPlugin().addToHistoryTreatment(detailedBolusInfo, true);
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package info.nightscout.androidaps.plugins.pump.common.bolusInfo
|
|||
|
||||
import info.nightscout.androidaps.data.DetailedBolusInfo
|
||||
import info.nightscout.androidaps.logging.L
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.data.MedtronicHistoryData
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import org.slf4j.LoggerFactory
|
||||
import java.util.*
|
||||
|
@ -19,6 +20,10 @@ object DetailedBolusInfoStorage {
|
|||
|
||||
@Synchronized
|
||||
fun findDetailedBolusInfo(bolusTime: Long, bolus: Double): DetailedBolusInfo? {
|
||||
|
||||
if (MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: findDetailedBolusInfo::bolusTime={}, bolus={}", bolusTime, bolus)
|
||||
|
||||
// Look for info with bolus
|
||||
for (i in store.indices) {
|
||||
val d = store[i]
|
||||
|
@ -28,6 +33,9 @@ object DetailedBolusInfoStorage {
|
|||
if (L.isEnabled(L.PUMP))
|
||||
log.debug("Using & removing bolus info: " + store[i])
|
||||
store.removeAt(i)
|
||||
if (MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: findDetailedBolusInfo::selectedBolus[DetailedBolusInfo={}]", d)
|
||||
|
||||
return d
|
||||
}
|
||||
}
|
||||
|
@ -38,6 +46,8 @@ object DetailedBolusInfoStorage {
|
|||
if (L.isEnabled(L.PUMP))
|
||||
log.debug("Using & removing bolus info: " + store[i])
|
||||
store.removeAt(i)
|
||||
if (MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: findDetailedBolusInfo::selectedBolus[DetailedBolusInfo={}]", d)
|
||||
return d
|
||||
}
|
||||
}
|
||||
|
|
|
@ -122,10 +122,10 @@ public class RileyLinkStatusGeneral extends Fragment implements RefreshableInter
|
|||
this.medtronicPumpStatus = MedtronicUtil.getPumpStatus();
|
||||
|
||||
if (medtronicPumpStatus != null) {
|
||||
this.deviceType.setText(MainApp.gs(RileyLinkUtil.getTargetDevice().getResourceId()));
|
||||
this.deviceType.setText(MainApp.gs(RileyLinkTargetDevice.MedtronicPump.getResourceId()));
|
||||
this.deviceModel.setText(medtronicPumpStatus.pumpType.getDescription());
|
||||
this.serialNumber.setText(medtronicPumpStatus.serialNumber);
|
||||
this.pumpFrequency.setText(medtronicPumpStatus.pumpFrequency);
|
||||
this.pumpFrequency.setText(MainApp.gs(medtronicPumpStatus.pumpFrequency.equals("medtronic_pump_frequency_us_ca") ? R.string.medtronic_pump_frequency_us_ca : R.string.medtronic_pump_frequency_worldwide));
|
||||
|
||||
// TODO extend when Omnipod used
|
||||
|
||||
|
|
|
@ -250,4 +250,29 @@ public class DateTimeUtil {
|
|||
|
||||
return minutes.getMinutes();
|
||||
}
|
||||
|
||||
|
||||
public static long getMillisFromATDWithAddedMinutes(long atd, int minutesDiff) {
|
||||
GregorianCalendar oldestEntryTime = DateTimeUtil.toGregorianCalendar(atd);
|
||||
oldestEntryTime.add(Calendar.MINUTE, minutesDiff);
|
||||
|
||||
return oldestEntryTime.getTimeInMillis();
|
||||
}
|
||||
|
||||
|
||||
public static long getATDWithAddedMinutes(long atd, int minutesDiff) {
|
||||
GregorianCalendar oldestEntryTime = DateTimeUtil.toGregorianCalendar(atd);
|
||||
oldestEntryTime.add(Calendar.MINUTE, minutesDiff);
|
||||
|
||||
return oldestEntryTime.getTimeInMillis();
|
||||
}
|
||||
|
||||
|
||||
public static long getATDWithAddedMinutes(GregorianCalendar oldestEntryTime, int minutesDiff) {
|
||||
oldestEntryTime.add(Calendar.MINUTE, minutesDiff);
|
||||
|
||||
return toATechDate(oldestEntryTime);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -51,9 +51,9 @@ public class DanaRUserOptionsActivity extends NoSplashActivity {
|
|||
NumberPicker lowReservoir;
|
||||
Button saveToPumpButton;
|
||||
// This is for Dana pumps only
|
||||
boolean isRS = MainApp.getSpecificPlugin(DanaRSPlugin.class) != null && MainApp.getSpecificPlugin(DanaRSPlugin.class).isEnabled(PluginType.PUMP);
|
||||
boolean isDanaR = MainApp.getSpecificPlugin(DanaRPlugin.class) != null && MainApp.getSpecificPlugin(DanaRPlugin.class).isEnabled(PluginType.PUMP);
|
||||
boolean isDanaRv2 = MainApp.getSpecificPlugin(DanaRv2Plugin.class) != null && MainApp.getSpecificPlugin(DanaRv2Plugin.class).isEnabled(PluginType.PUMP);
|
||||
boolean isRS = DanaRSPlugin.getPlugin().isEnabled(PluginType.PUMP);
|
||||
boolean isDanaR = DanaRPlugin.getPlugin().isEnabled(PluginType.PUMP);
|
||||
boolean isDanaRv2 = DanaRv2Plugin.getPlugin().isEnabled(PluginType.PUMP);
|
||||
|
||||
@Override
|
||||
protected synchronized void onResume() {
|
||||
|
|
|
@ -32,7 +32,7 @@ public class MsgCheckValue extends MessageBase {
|
|||
pump.protocol = intFromBuff(bytes, 1, 1);
|
||||
pump.productCode = intFromBuff(bytes, 2, 1);
|
||||
if (pump.model != DanaRPump.EXPORT_MODEL) {
|
||||
MainApp.getSpecificPlugin(DanaRPlugin.class).disconnect("Wrong Model");
|
||||
DanaRPlugin.getPlugin().disconnect("Wrong Model");
|
||||
log.debug("Wrong model selected");
|
||||
}
|
||||
|
||||
|
|
|
@ -31,19 +31,19 @@ public class MsgInitConnStatusTime extends MessageBase {
|
|||
if (bytes.length - 10 > 7) {
|
||||
Notification notification = new Notification(Notification.WRONG_DRIVER, MainApp.gs(R.string.pumpdrivercorrected), Notification.NORMAL);
|
||||
RxBus.INSTANCE.send(new EventNewNotification(notification));
|
||||
MainApp.getSpecificPlugin(DanaRPlugin.class).disconnect("Wrong Model");
|
||||
DanaRPlugin.getPlugin().disconnect("Wrong Model");
|
||||
log.error("Wrong model selected. Switching to Korean DanaR");
|
||||
MainApp.getSpecificPlugin(DanaRKoreanPlugin.class).setPluginEnabled(PluginType.PUMP, true);
|
||||
MainApp.getSpecificPlugin(DanaRKoreanPlugin.class).setFragmentVisible(PluginType.PUMP, true);
|
||||
MainApp.getSpecificPlugin(DanaRPlugin.class).setPluginEnabled(PluginType.PUMP, false);
|
||||
MainApp.getSpecificPlugin(DanaRPlugin.class).setFragmentVisible(PluginType.PUMP, false);
|
||||
DanaRKoreanPlugin.getPlugin().setPluginEnabled(PluginType.PUMP, true);
|
||||
DanaRKoreanPlugin.getPlugin().setFragmentVisible(PluginType.PUMP, true);
|
||||
DanaRPlugin.getPlugin().setPluginEnabled(PluginType.PUMP, false);
|
||||
DanaRPlugin.getPlugin().setFragmentVisible(PluginType.PUMP, false);
|
||||
|
||||
DanaRPump.reset(); // mark not initialized
|
||||
|
||||
//If profile coming from pump, switch it as well
|
||||
if (MainApp.getSpecificPlugin(DanaRPlugin.class).isEnabled(PluginType.PROFILE)) {
|
||||
(MainApp.getSpecificPlugin(DanaRPlugin.class)).setPluginEnabled(PluginType.PROFILE, false);
|
||||
(MainApp.getSpecificPlugin(DanaRKoreanPlugin.class)).setPluginEnabled(PluginType.PROFILE, true);
|
||||
if (DanaRPlugin.getPlugin().isEnabled(PluginType.PROFILE)) {
|
||||
(DanaRPlugin.getPlugin()).setPluginEnabled(PluginType.PROFILE, false);
|
||||
(DanaRKoreanPlugin.getPlugin()).setPluginEnabled(PluginType.PROFILE, true);
|
||||
}
|
||||
|
||||
ConfigBuilderPlugin.getPlugin().storeSettings("ChangingDanaDriver");
|
||||
|
|
|
@ -35,17 +35,17 @@ public class MsgInitConnStatusTime_k extends MessageBase {
|
|||
RxBus.INSTANCE.send(new EventNewNotification(notification));
|
||||
DanaRKoreanPlugin.getPlugin().disconnect("Wrong Model");
|
||||
log.error("Wrong model selected. Switching to export DanaR");
|
||||
MainApp.getSpecificPlugin(DanaRKoreanPlugin.class).setPluginEnabled(PluginType.PUMP, false);
|
||||
MainApp.getSpecificPlugin(DanaRKoreanPlugin.class).setFragmentVisible(PluginType.PUMP, false);
|
||||
MainApp.getSpecificPlugin(DanaRPlugin.class).setPluginEnabled(PluginType.PUMP, true);
|
||||
MainApp.getSpecificPlugin(DanaRPlugin.class).setFragmentVisible(PluginType.PUMP, true);
|
||||
DanaRKoreanPlugin.getPlugin().setPluginEnabled(PluginType.PUMP, false);
|
||||
DanaRKoreanPlugin.getPlugin().setFragmentVisible(PluginType.PUMP, false);
|
||||
DanaRPlugin.getPlugin().setPluginEnabled(PluginType.PUMP, true);
|
||||
DanaRPlugin.getPlugin().setFragmentVisible(PluginType.PUMP, true);
|
||||
|
||||
DanaRPump.reset(); // mark not initialized
|
||||
|
||||
//If profile coming from pump, switch it as well
|
||||
if (MainApp.getSpecificPlugin(DanaRKoreanPlugin.class).isEnabled(PluginType.PROFILE)) {
|
||||
(MainApp.getSpecificPlugin(DanaRKoreanPlugin.class)).setPluginEnabled(PluginType.PROFILE, false);
|
||||
(MainApp.getSpecificPlugin(DanaRPlugin.class)).setPluginEnabled(PluginType.PROFILE, true);
|
||||
if (DanaRKoreanPlugin.getPlugin().isEnabled(PluginType.PROFILE)) {
|
||||
(DanaRKoreanPlugin.getPlugin()).setPluginEnabled(PluginType.PROFILE, false);
|
||||
(DanaRPlugin.getPlugin()).setPluginEnabled(PluginType.PROFILE, true);
|
||||
}
|
||||
|
||||
ConfigBuilderPlugin.getPlugin().storeSettings("ChangingKoreanDanaDriver");
|
||||
|
|
|
@ -249,7 +249,7 @@ public class DanaRSService extends Service {
|
|||
|
||||
public PumpEnactResult loadEvents() {
|
||||
|
||||
if (!MainApp.getSpecificPlugin(DanaRSPlugin.class).isInitialized()) {
|
||||
if (!DanaRSPlugin.getPlugin().isInitialized()) {
|
||||
PumpEnactResult result = new PumpEnactResult().success(false);
|
||||
result.comment = "pump not initialized";
|
||||
return result;
|
||||
|
|
|
@ -45,19 +45,19 @@ public class MsgCheckValue_v2 extends MessageBase {
|
|||
pump.lastConnection = 0;
|
||||
Notification notification = new Notification(Notification.WRONG_DRIVER, MainApp.gs(R.string.pumpdrivercorrected), Notification.NORMAL);
|
||||
RxBus.INSTANCE.send(new EventNewNotification(notification));
|
||||
MainApp.getSpecificPlugin(DanaRPlugin.class).disconnect("Wrong Model");
|
||||
DanaRPlugin.getPlugin().disconnect("Wrong Model");
|
||||
log.error("Wrong model selected. Switching to Korean DanaR");
|
||||
MainApp.getSpecificPlugin(DanaRKoreanPlugin.class).setPluginEnabled(PluginType.PUMP, true);
|
||||
MainApp.getSpecificPlugin(DanaRKoreanPlugin.class).setFragmentVisible(PluginType.PUMP, true);
|
||||
MainApp.getSpecificPlugin(DanaRPlugin.class).setPluginEnabled(PluginType.PUMP, false);
|
||||
MainApp.getSpecificPlugin(DanaRPlugin.class).setFragmentVisible(PluginType.PUMP, false);
|
||||
DanaRKoreanPlugin.getPlugin().setPluginEnabled(PluginType.PUMP, true);
|
||||
DanaRKoreanPlugin.getPlugin().setFragmentVisible(PluginType.PUMP, true);
|
||||
DanaRPlugin.getPlugin().setPluginEnabled(PluginType.PUMP, false);
|
||||
DanaRPlugin.getPlugin().setFragmentVisible(PluginType.PUMP, false);
|
||||
|
||||
DanaRPump.reset(); // mark not initialized
|
||||
|
||||
//If profile coming from pump, switch it as well
|
||||
if (MainApp.getSpecificPlugin(DanaRPlugin.class).isEnabled(PluginType.PROFILE)) {
|
||||
(MainApp.getSpecificPlugin(DanaRPlugin.class)).setPluginEnabled(PluginType.PROFILE, false);
|
||||
(MainApp.getSpecificPlugin(DanaRKoreanPlugin.class)).setPluginEnabled(PluginType.PROFILE, true);
|
||||
if (DanaRPlugin.getPlugin().isEnabled(PluginType.PROFILE)) {
|
||||
(DanaRPlugin.getPlugin()).setPluginEnabled(PluginType.PROFILE, false);
|
||||
(DanaRKoreanPlugin.getPlugin()).setPluginEnabled(PluginType.PROFILE, true);
|
||||
}
|
||||
|
||||
ConfigBuilderPlugin.getPlugin().storeSettings("ChangingDanaRv2Driver");
|
||||
|
@ -72,15 +72,15 @@ public class MsgCheckValue_v2 extends MessageBase {
|
|||
RxBus.INSTANCE.send(new EventNewNotification(notification));
|
||||
DanaRKoreanPlugin.getPlugin().disconnect("Wrong Model");
|
||||
log.error("Wrong model selected. Switching to non APS DanaR");
|
||||
(MainApp.getSpecificPlugin(DanaRv2Plugin.class)).setPluginEnabled(PluginType.PUMP, false);
|
||||
(MainApp.getSpecificPlugin(DanaRv2Plugin.class)).setFragmentVisible(PluginType.PUMP, false);
|
||||
(MainApp.getSpecificPlugin(DanaRPlugin.class)).setPluginEnabled(PluginType.PUMP, true);
|
||||
(MainApp.getSpecificPlugin(DanaRPlugin.class)).setFragmentVisible(PluginType.PUMP, true);
|
||||
(DanaRv2Plugin.getPlugin()).setPluginEnabled(PluginType.PUMP, false);
|
||||
(DanaRv2Plugin.getPlugin()).setFragmentVisible(PluginType.PUMP, false);
|
||||
(DanaRPlugin.getPlugin()).setPluginEnabled(PluginType.PUMP, true);
|
||||
(DanaRPlugin.getPlugin()).setFragmentVisible(PluginType.PUMP, true);
|
||||
|
||||
//If profile coming from pump, switch it as well
|
||||
if (MainApp.getSpecificPlugin(DanaRv2Plugin.class).isEnabled(PluginType.PROFILE)) {
|
||||
(MainApp.getSpecificPlugin(DanaRv2Plugin.class)).setPluginEnabled(PluginType.PROFILE, false);
|
||||
(MainApp.getSpecificPlugin(DanaRPlugin.class)).setPluginEnabled(PluginType.PROFILE, true);
|
||||
if (DanaRv2Plugin.getPlugin().isEnabled(PluginType.PROFILE)) {
|
||||
(DanaRv2Plugin.getPlugin()).setPluginEnabled(PluginType.PROFILE, false);
|
||||
(DanaRPlugin.getPlugin()).setPluginEnabled(PluginType.PROFILE, true);
|
||||
}
|
||||
|
||||
ConfigBuilderPlugin.getPlugin().storeSettings("ChangingDanaRv2Driver");
|
||||
|
|
|
@ -471,7 +471,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
|
|||
public PumpEnactResult loadEvents() {
|
||||
DanaRPump danaRPump = DanaRPump.getInstance();
|
||||
|
||||
if (!MainApp.getSpecificPlugin(DanaRv2Plugin.class).isInitialized()) {
|
||||
if (!DanaRv2Plugin.getPlugin().isInitialized()) {
|
||||
PumpEnactResult result = new PumpEnactResult().success(false);
|
||||
result.comment = "pump not initialized";
|
||||
return result;
|
||||
|
|
|
@ -788,7 +788,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager
|
|||
return false;
|
||||
}
|
||||
|
||||
if (responseRaw.length == 1) {
|
||||
if (responseRaw.length < 2) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@ import com.google.gson.GsonBuilder;
|
|||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.joda.time.LocalDateTime;
|
||||
import org.joda.time.Minutes;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
@ -20,6 +22,7 @@ import java.util.Map;
|
|||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
||||
import info.nightscout.androidaps.db.CareportalEvent;
|
||||
import info.nightscout.androidaps.db.DatabaseHelper;
|
||||
import info.nightscout.androidaps.db.DbObjectBase;
|
||||
import info.nightscout.androidaps.db.ExtendedBolus;
|
||||
|
@ -27,6 +30,7 @@ import info.nightscout.androidaps.db.Source;
|
|||
import info.nightscout.androidaps.db.TDD;
|
||||
import info.nightscout.androidaps.db.TemporaryBasal;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
|
||||
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage;
|
||||
import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil;
|
||||
import info.nightscout.androidaps.plugins.pump.common.utils.StringUtil;
|
||||
|
@ -46,6 +50,7 @@ import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicConst;
|
|||
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
|
||||
import info.nightscout.androidaps.plugins.treatments.Treatment;
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
|
||||
import info.nightscout.androidaps.utils.DateUtil;
|
||||
import info.nightscout.androidaps.utils.SP;
|
||||
|
||||
|
||||
|
@ -59,6 +64,7 @@ import info.nightscout.androidaps.utils.SP;
|
|||
// all times that time changed (TZ, DST, etc.). Data needs to be returned in batches (time_changed batches, so that we can
|
||||
// handle it. It would help to assign sort_ids to items (from oldest (1) to newest (x)
|
||||
|
||||
// All things marked with "TODO: Fix db code" needs to be updated in new 2.5 database code
|
||||
|
||||
public class MedtronicHistoryData {
|
||||
|
||||
|
@ -77,6 +83,13 @@ public class MedtronicHistoryData {
|
|||
|
||||
private long lastIdUsed = 0;
|
||||
|
||||
/**
|
||||
* Double bolus debug. We seem to have small problem with double Boluses (or sometimes also missing boluses
|
||||
* from history. This flag turns on debugging for that (default is off=false)... Debuging is pretty detailed,
|
||||
* so log files will get bigger.
|
||||
*/
|
||||
public static boolean doubleBolusDebug = false;
|
||||
|
||||
|
||||
public MedtronicHistoryData() {
|
||||
this.allHistory = new ArrayList<>();
|
||||
|
@ -311,6 +324,7 @@ public class MedtronicHistoryData {
|
|||
pumpHistoryEntryType == PumpHistoryEntryType.BasalProfileStart || //
|
||||
pumpHistoryEntryType == PumpHistoryEntryType.Bolus || //
|
||||
pumpHistoryEntryType == PumpHistoryEntryType.Resume || //
|
||||
pumpHistoryEntryType == PumpHistoryEntryType.BatteryChange || //
|
||||
pumpHistoryEntryType == PumpHistoryEntryType.Prime);
|
||||
|
||||
if (isLogEnabled())
|
||||
|
@ -353,6 +367,7 @@ public class MedtronicHistoryData {
|
|||
PumpHistoryEntryType.Resume, //
|
||||
PumpHistoryEntryType.Rewind, //
|
||||
PumpHistoryEntryType.NoDeliveryAlarm, //
|
||||
PumpHistoryEntryType.BatteryChange, //
|
||||
PumpHistoryEntryType.BasalProfileStart);
|
||||
|
||||
newAndAll2 = filterPumpSuspend(newAndAll2, 10);
|
||||
|
@ -382,6 +397,22 @@ public class MedtronicHistoryData {
|
|||
*/
|
||||
public void processNewHistoryData() {
|
||||
|
||||
// TODO: Fix db code
|
||||
// Prime (for reseting autosense)
|
||||
List<PumpHistoryEntry> primeRecords = getFilteredItems(PumpHistoryEntryType.Prime);
|
||||
|
||||
if (isLogEnabled())
|
||||
LOG.debug("ProcessHistoryData: Prime [count={}, items={}]", primeRecords.size(), gson.toJson(primeRecords));
|
||||
|
||||
if (isCollectionNotEmpty(primeRecords)) {
|
||||
try {
|
||||
processPrime(primeRecords);
|
||||
} catch (Exception ex) {
|
||||
LOG.error("ProcessHistoryData: Error processing Prime entries: " + ex.getMessage(), ex);
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
// TDD
|
||||
List<PumpHistoryEntry> tdds = getFilteredItems(PumpHistoryEntryType.EndResultTotals, getTDDType());
|
||||
|
||||
|
@ -454,6 +485,49 @@ public class MedtronicHistoryData {
|
|||
}
|
||||
|
||||
|
||||
private void processPrime(List<PumpHistoryEntry> primeRecords) {
|
||||
|
||||
long maxAllowedTimeInPast = DateTimeUtil.getATDWithAddedMinutes(new GregorianCalendar(), -30);
|
||||
|
||||
long lastPrimeRecord = 0L;
|
||||
|
||||
for (PumpHistoryEntry primeRecord : primeRecords) {
|
||||
|
||||
if (primeRecord.atechDateTime > maxAllowedTimeInPast) {
|
||||
if (lastPrimeRecord < primeRecord.atechDateTime) {
|
||||
lastPrimeRecord = primeRecord.atechDateTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (lastPrimeRecord != 0L) {
|
||||
long lastPrimeFromAAPS = SP.getLong(MedtronicConst.Statistics.LastPrime, 0L);
|
||||
|
||||
if (lastPrimeRecord != lastPrimeFromAAPS) {
|
||||
uploadCareportalEvent(DateTimeUtil.toMillisFromATD(lastPrimeRecord), CareportalEvent.SITECHANGE);
|
||||
|
||||
SP.putLong(MedtronicConst.Statistics.LastPrime, lastPrimeRecord);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void uploadCareportalEvent(long date, String event) {
|
||||
if (MainApp.getDbHelper().getCareportalEventFromTimestamp(date) != null)
|
||||
return;
|
||||
try {
|
||||
JSONObject data = new JSONObject();
|
||||
String enteredBy = SP.getString("careportal_enteredby", "");
|
||||
if (!enteredBy.equals("")) data.put("enteredBy", enteredBy);
|
||||
data.put("created_at", DateUtil.toISOString(date));
|
||||
data.put("eventType", event);
|
||||
NSUpload.uploadCareportalEntryToNS(data);
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void processTDDs(List<PumpHistoryEntry> tddsIn) {
|
||||
|
||||
List<PumpHistoryEntry> tdds = filterTDDs(tddsIn);
|
||||
|
@ -517,23 +591,32 @@ public class MedtronicHistoryData {
|
|||
|
||||
long oldestTimestamp = getOldestTimestamp(entryList);
|
||||
|
||||
Gson gson = MedtronicUtil.getGsonInstance();
|
||||
|
||||
List<? extends DbObjectBase> entriesFromHistory = getDatabaseEntriesByLastTimestamp(oldestTimestamp, ProcessHistoryRecord.Bolus);
|
||||
|
||||
// LOG.debug(processHistoryRecord.getDescription() + " List (before filter): {}, FromDb={}", gsonPretty.toJson(entryList),
|
||||
// gsonPretty.toJson(entriesFromHistory));
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: List (before filter): {}, FromDb={}", gson.toJson(entryList),
|
||||
gson.toJson(entriesFromHistory));
|
||||
|
||||
filterOutAlreadyAddedEntries(entryList, entriesFromHistory);
|
||||
|
||||
if (entryList.isEmpty())
|
||||
if (entryList.isEmpty()) {
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: EntryList was filtered out.");
|
||||
return;
|
||||
}
|
||||
|
||||
// LOG.debug(processHistoryRecord.getDescription() + " List (after filter): {}, FromDb={}", gsonPretty.toJson(entryList),
|
||||
// gsonPretty.toJson(entriesFromHistory));
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: List (after filter): {}, FromDb={}", gson.toJson(entryList),
|
||||
gson.toJson(entriesFromHistory));
|
||||
|
||||
if (isCollectionEmpty(entriesFromHistory)) {
|
||||
for (PumpHistoryEntry treatment : entryList) {
|
||||
if (isLogEnabled())
|
||||
LOG.debug("Add Bolus (no db entry): " + treatment);
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: Add Bolus: FromDb=null, Treatment={}", treatment);
|
||||
|
||||
addBolus(treatment, null);
|
||||
}
|
||||
|
@ -542,6 +625,8 @@ public class MedtronicHistoryData {
|
|||
DbObjectBase treatmentDb = findDbEntry(treatment, entriesFromHistory);
|
||||
if (isLogEnabled())
|
||||
LOG.debug("Add Bolus {} - (entryFromDb={}) ", treatment, treatmentDb);
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: Add Bolus: FromDb={}, Treatment={}", treatmentDb, treatment);
|
||||
|
||||
addBolus(treatment, (Treatment) treatmentDb);
|
||||
}
|
||||
|
@ -681,12 +766,11 @@ public class MedtronicHistoryData {
|
|||
|
||||
/**
|
||||
* findDbEntry - finds Db entries in database, while theoretically this should have same dateTime they
|
||||
* don't. Entry on pump is few seconds before treatment in AAPS, and on manual boluses on pump there
|
||||
* is no treatment at all. For now we look fro tratment that was from 0s - 1m59s within pump entry.
|
||||
* don't. Entry on pump is few seconds before treatment in AAPS, and on manual boluses on pump there
|
||||
* is no treatment at all. For now we look fro tratment that was from 0s - 1m59s within pump entry.
|
||||
*
|
||||
* @param treatment Pump Entry
|
||||
* @param treatment Pump Entry
|
||||
* @param entriesFromHistory entries from history
|
||||
*
|
||||
* @return DbObject from AAPS (if found)
|
||||
*/
|
||||
private DbObjectBase findDbEntry(PumpHistoryEntry treatment, List<? extends DbObjectBase> entriesFromHistory) {
|
||||
|
@ -695,9 +779,30 @@ public class MedtronicHistoryData {
|
|||
|
||||
//proposedTime += (this.pumpTime.timeDifference * 1000);
|
||||
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: findDbEntry Treatment={}, FromDb={}", treatment, gson.toJson(entriesFromHistory));
|
||||
|
||||
if (entriesFromHistory.size() == 0) {
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: findDbEntry Treatment={}, FromDb=null", treatment);
|
||||
return null;
|
||||
} else if (entriesFromHistory.size() == 1) {
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: findDbEntry Treatment={}, FromDb={}. Type=SingleEntry", treatment, entriesFromHistory.get(0));
|
||||
|
||||
// TODO: Fix db code
|
||||
// if difference is bigger than 2 minutes we discard entry
|
||||
long maxMillisAllowed = DateTimeUtil.getMillisFromATDWithAddedMinutes(treatment.atechDateTime, 2);
|
||||
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: findDbEntry maxMillisAllowed={}, AtechDateTime={} (add 2 minutes). ", maxMillisAllowed, treatment.atechDateTime);
|
||||
|
||||
if (entriesFromHistory.get(0).getDate() > maxMillisAllowed) {
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: findDbEntry entry filtered out, returning null. ");
|
||||
return null;
|
||||
}
|
||||
|
||||
return entriesFromHistory.get(0);
|
||||
}
|
||||
|
||||
|
@ -720,10 +825,10 @@ public class MedtronicHistoryData {
|
|||
}
|
||||
}
|
||||
|
||||
// LOG.debug("Entries: (timeDiff=[min={},sec={}],count={},list={})", min, sec, outList.size(),
|
||||
// gsonPretty.toJson(outList));
|
||||
|
||||
if (outList.size() == 1) {
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: findDbEntry Treatment={}, FromDb={}. Type=EntrySelected, AtTimeMin={}, AtTimeSec={}", treatment, entriesFromHistory.get(0), min, sec);
|
||||
|
||||
return outList.get(0);
|
||||
}
|
||||
|
||||
|
@ -731,6 +836,9 @@ public class MedtronicHistoryData {
|
|||
if (isLogEnabled())
|
||||
LOG.error("Too many entries (with too small diff): (timeDiff=[min={},sec={}],count={},list={})",
|
||||
min, sec, outList.size(), gson.toJson(outList));
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: findDbEntry Error - Too many entries (with too small diff): (timeDiff=[min={},sec={}],count={},list={})",
|
||||
min, sec, outList.size(), gson.toJson(outList));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -785,6 +893,8 @@ public class MedtronicHistoryData {
|
|||
BolusDTO bolusDTO = (BolusDTO) bolus.getDecodedData().get("Object");
|
||||
|
||||
if (treatment == null) {
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: addBolus(tretament==null): Bolus={}", bolusDTO);
|
||||
|
||||
switch (bolusDTO.getBolusType()) {
|
||||
case Normal: {
|
||||
|
@ -797,6 +907,9 @@ public class MedtronicHistoryData {
|
|||
|
||||
addCarbsFromEstimate(detailedBolusInfo, bolus);
|
||||
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: addBolus(tretament==null): DetailedBolusInfo={}", detailedBolusInfo);
|
||||
|
||||
boolean newRecord = TreatmentsPlugin.getPlugin().addToHistoryTreatment(detailedBolusInfo, false);
|
||||
|
||||
bolus.setLinkedObject(detailedBolusInfo);
|
||||
|
@ -819,6 +932,9 @@ public class MedtronicHistoryData {
|
|||
|
||||
bolus.setLinkedObject(extendedBolus);
|
||||
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: addBolus(tretament==null): ExtendedBolus={}", extendedBolus);
|
||||
|
||||
TreatmentsPlugin.getPlugin().addToHistoryExtendedBolus(extendedBolus);
|
||||
|
||||
if (isLogEnabled())
|
||||
|
@ -832,8 +948,15 @@ public class MedtronicHistoryData {
|
|||
} else {
|
||||
|
||||
DetailedBolusInfo detailedBolusInfo = DetailedBolusInfoStorage.INSTANCE.findDetailedBolusInfo(treatment.date, bolusDTO.getDeliveredAmount());
|
||||
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: addBolus(tretament={}): Bolus={}, DetailedBolusInfo={}", treatment, bolusDTO, detailedBolusInfo);
|
||||
|
||||
if (detailedBolusInfo == null) {
|
||||
detailedBolusInfo = new DetailedBolusInfo();
|
||||
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: detailedBolusInfoCouldNotBeRetrived !");
|
||||
}
|
||||
|
||||
detailedBolusInfo.date = treatment.date;
|
||||
|
@ -844,6 +967,9 @@ public class MedtronicHistoryData {
|
|||
|
||||
addCarbsFromEstimate(detailedBolusInfo, bolus);
|
||||
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: addBolus(tretament!=null): DetailedBolusInfo(New)={}", detailedBolusInfo);
|
||||
|
||||
boolean newRecord = TreatmentsPlugin.getPlugin().addToHistoryTreatment(detailedBolusInfo, false);
|
||||
|
||||
bolus.setLinkedObject(detailedBolusInfo);
|
||||
|
@ -862,6 +988,9 @@ public class MedtronicHistoryData {
|
|||
|
||||
BolusWizardDTO bolusWizard = (BolusWizardDTO) bolus.getDecodedData().get("Estimate");
|
||||
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: addCarbsFromEstimate: Bolus={}, BolusWizardDTO={}", bolus, bolusWizard);
|
||||
|
||||
detailedBolusInfo.carbs = bolusWizard.carbs;
|
||||
}
|
||||
}
|
||||
|
@ -1210,24 +1339,26 @@ public class MedtronicHistoryData {
|
|||
}
|
||||
}
|
||||
|
||||
//LocalDateTime oldestEntryTime = null;
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: getOldestTimestamp. Oldest entry found: time={}, object={}", dt, currentTreatment);
|
||||
|
||||
try {
|
||||
|
||||
GregorianCalendar oldestEntryTime = DateTimeUtil.toGregorianCalendar(dt);
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: getOldestTimestamp. oldestEntryTime: {}", DateTimeUtil.toString(oldestEntryTime));
|
||||
oldestEntryTime.add(Calendar.MINUTE, -2);
|
||||
|
||||
if (doubleBolusDebug)
|
||||
LOG.debug("DoubleBolusDebug: getOldestTimestamp. oldestEntryTime (-2m): {}, timeInMillis={}", DateTimeUtil.toString(oldestEntryTime), oldestEntryTime.getTimeInMillis());
|
||||
|
||||
return oldestEntryTime.getTimeInMillis();
|
||||
|
||||
// if (this.pumpTime.timeDifference < 0) {
|
||||
// oldestEntryTime = oldestEntryTime.plusSeconds(this.pumpTime.timeDifference);
|
||||
// }
|
||||
} catch (Exception ex) {
|
||||
LOG.error("Problem decoding date from last record: {}" + currentTreatment);
|
||||
LOG.error("Problem decoding date from last record: {}", currentTreatment);
|
||||
return 8; // default return of 6 minutes
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@ package info.nightscout.androidaps.plugins.pump.medtronic.data.dto;
|
|||
|
||||
import com.google.gson.annotations.Expose;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.defs.BatteryType;
|
||||
|
||||
/**
|
||||
|
@ -38,10 +40,11 @@ public class BatteryStatusDTO {
|
|||
|
||||
|
||||
public String toString() {
|
||||
return String.format("BatteryStatusDTO [voltage=%.2f, alkaline=%d, lithium=%d]",
|
||||
return String.format(Locale.ENGLISH, "BatteryStatusDTO [voltage=%.2f, alkaline=%d, lithium=%d, niZn={}]",
|
||||
voltage == null ? 0.0f : voltage,
|
||||
getCalculatedPercent(BatteryType.Alkaline),
|
||||
getCalculatedPercent(BatteryType.Lithium));
|
||||
getCalculatedPercent(BatteryType.Lithium),
|
||||
getCalculatedPercent(BatteryType.NiZn));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -14,7 +14,9 @@ public enum BatteryType {
|
|||
|
||||
None(R.string.key_medtronic_pump_battery_no, 0, 0),
|
||||
Alkaline(R.string.key_medtronic_pump_battery_alkaline, 1.20d, 1.47d), //
|
||||
Lithium(R.string.key_medtronic_pump_battery_lithium, 1.22d, 1.64d);
|
||||
Lithium(R.string.key_medtronic_pump_battery_lithium, 1.22d, 1.64d), //
|
||||
NiZn(R.string.key_medtronic_pump_battery_nizn, 1.40d, 1.70d) //
|
||||
;
|
||||
|
||||
private final String description;
|
||||
public double lowVoltage;
|
||||
|
|
|
@ -22,6 +22,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.Rile
|
|||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkTargetFrequency;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkError;
|
||||
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkServiceState;
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.data.MedtronicHistoryData;
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.defs.BasalProfileStatus;
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.defs.BatteryType;
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicDeviceType;
|
||||
|
@ -281,6 +282,12 @@ public class MedtronicPumpStatus extends PumpStatus {
|
|||
MedtronicUtil.setBatteryType(this.batteryType);
|
||||
}
|
||||
|
||||
String bolusDebugEnabled = SP.getString(MedtronicConst.Prefs.BolusDebugEnabled, null);
|
||||
|
||||
boolean bolusDebug = bolusDebugEnabled != null && bolusDebugEnabled.equals(MainApp.gs(R.string.common_on));
|
||||
|
||||
MedtronicHistoryData.doubleBolusDebug = bolusDebug;
|
||||
|
||||
reconfigureService();
|
||||
|
||||
return true;
|
||||
|
|
|
@ -11,17 +11,6 @@ public class MedtronicConst {
|
|||
static final String Prefix = "AAPS.Medtronic.";
|
||||
|
||||
public class Prefs {
|
||||
|
||||
// public static final String PrefPrefix = "pref_medtronic_";
|
||||
// public static final String PumpSerial = PrefPrefix + "serial";
|
||||
// public static final String PumpType = PrefPrefix + "pump_type";
|
||||
// public static final String PumpFrequency = PrefPrefix + "frequency";
|
||||
// public static final String MaxBolus = PrefPrefix + "max_bolus";
|
||||
// public static final String MaxBasal = PrefPrefix + "max_basal";
|
||||
// public static final String BolusDelay = PrefPrefix + "bolus_delay";
|
||||
// public static final String Encoding = PrefPrefix + "encoding";
|
||||
// public static final String BatteryType = PrefPrefix + "battery_type";
|
||||
|
||||
public static final int PumpSerial = R.string.key_medtronic_serial;
|
||||
public static final int PumpType = R.string.key_medtronic_pump_type;
|
||||
public static final int PumpFrequency = R.string.key_medtronic_frequency;
|
||||
|
@ -30,6 +19,7 @@ public class MedtronicConst {
|
|||
public static final int BolusDelay = R.string.key_medtronic_bolus_delay;
|
||||
public static final int Encoding = R.string.key_medtronic_encoding;
|
||||
public static final int BatteryType = R.string.key_medtronic_battery_type;
|
||||
public static final int BolusDebugEnabled = R.string.key_medtronic_bolus_debug;
|
||||
}
|
||||
|
||||
public class Statistics {
|
||||
|
@ -42,6 +32,7 @@ public class MedtronicConst {
|
|||
public static final String StandardBoluses = StatsPrefix + "std_boluses_delivered";
|
||||
public static final String SMBBoluses = StatsPrefix + "smb_boluses_delivered";
|
||||
public static final String LastPumpHistoryEntry = StatsPrefix + "pump_history_entry";
|
||||
public static final String LastPrime = StatsPrefix + "last_sent_prime";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,122 +0,0 @@
|
|||
package info.nightscout.androidaps.plugins.pump.virtual;
|
||||
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.db.ExtendedBolus;
|
||||
import info.nightscout.androidaps.db.TemporaryBasal;
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus;
|
||||
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
|
||||
import info.nightscout.androidaps.plugins.pump.virtual.events.EventVirtualPumpUpdateGui;
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.disposables.CompositeDisposable;
|
||||
|
||||
|
||||
public class VirtualPumpFragment extends Fragment {
|
||||
private static Logger log = LoggerFactory.getLogger(VirtualPumpFragment.class);
|
||||
private CompositeDisposable disposable = new CompositeDisposable();
|
||||
|
||||
TextView basaBasalRateView;
|
||||
TextView tempBasalView;
|
||||
TextView extendedBolusView;
|
||||
TextView batteryView;
|
||||
TextView reservoirView;
|
||||
TextView pumpTypeView;
|
||||
TextView pumpSettingsView;
|
||||
|
||||
|
||||
private static Handler sLoopHandler = new Handler();
|
||||
private static Runnable sRefreshLoop = null;
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
if (sRefreshLoop == null) {
|
||||
sRefreshLoop = () -> {
|
||||
Activity activity = getActivity();
|
||||
if (activity != null)
|
||||
activity.runOnUiThread(this::updateGui);
|
||||
sLoopHandler.postDelayed(sRefreshLoop, 60 * 1000L);
|
||||
};
|
||||
sLoopHandler.postDelayed(sRefreshLoop, 60 * 1000L);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.virtualpump_fragment, container, false);
|
||||
basaBasalRateView = (TextView) view.findViewById(R.id.virtualpump_basabasalrate);
|
||||
tempBasalView = (TextView) view.findViewById(R.id.virtualpump_tempbasal);
|
||||
extendedBolusView = (TextView) view.findViewById(R.id.virtualpump_extendedbolus);
|
||||
batteryView = (TextView) view.findViewById(R.id.virtualpump_battery);
|
||||
reservoirView = (TextView) view.findViewById(R.id.virtualpump_reservoir);
|
||||
pumpTypeView = (TextView) view.findViewById(R.id.virtualpump_type);
|
||||
pumpSettingsView = (TextView) view.findViewById(R.id.virtualpump_type_def);
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void onResume() {
|
||||
super.onResume();
|
||||
disposable.add(RxBus.INSTANCE
|
||||
.toObservable(EventVirtualPumpUpdateGui.class)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(event -> updateGui(), FabricPrivacy::logException)
|
||||
);
|
||||
updateGui();
|
||||
}
|
||||
|
||||
@Override
|
||||
public synchronized void onPause() {
|
||||
super.onPause();
|
||||
disposable.clear();
|
||||
}
|
||||
|
||||
protected void updateGui() {
|
||||
VirtualPumpPlugin virtualPump = VirtualPumpPlugin.getPlugin();
|
||||
basaBasalRateView.setText(virtualPump.getBaseBasalRate() + "U");
|
||||
TemporaryBasal activeTemp = TreatmentsPlugin.getPlugin().getTempBasalFromHistory(System.currentTimeMillis());
|
||||
if (activeTemp != null) {
|
||||
tempBasalView.setText(activeTemp.toStringFull());
|
||||
} else {
|
||||
tempBasalView.setText("");
|
||||
}
|
||||
ExtendedBolus activeExtendedBolus = TreatmentsPlugin.getPlugin().getExtendedBolusFromHistory(System.currentTimeMillis());
|
||||
if (activeExtendedBolus != null) {
|
||||
extendedBolusView.setText(activeExtendedBolus.toString());
|
||||
} else {
|
||||
extendedBolusView.setText("");
|
||||
}
|
||||
batteryView.setText(virtualPump.batteryPercent + "%");
|
||||
reservoirView.setText(virtualPump.reservoirInUnits + "U");
|
||||
|
||||
virtualPump.refreshConfiguration();
|
||||
|
||||
PumpType pumpType = virtualPump.getPumpType();
|
||||
|
||||
pumpTypeView.setText(pumpType.getDescription());
|
||||
|
||||
String template = MainApp.gs(R.string.virtualpump_pump_def);
|
||||
|
||||
|
||||
pumpSettingsView.setText(pumpType.getFullDescription(template, pumpType.hasExtendedBasals()));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
package info.nightscout.androidaps.plugins.pump.virtual
|
||||
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import info.nightscout.androidaps.MainApp
|
||||
import info.nightscout.androidaps.R
|
||||
import info.nightscout.androidaps.events.EventExtendedBolusChange
|
||||
import info.nightscout.androidaps.events.EventTempBasalChange
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus
|
||||
import info.nightscout.androidaps.plugins.pump.virtual.events.EventVirtualPumpUpdateGui
|
||||
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||
import info.nightscout.androidaps.utils.T
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.disposables.CompositeDisposable
|
||||
import kotlinx.android.synthetic.main.virtualpump_fragment.*
|
||||
import org.slf4j.LoggerFactory
|
||||
|
||||
class VirtualPumpFragment : Fragment() {
|
||||
private val disposable = CompositeDisposable()
|
||||
|
||||
private val loopHandler = Handler()
|
||||
private lateinit var refreshLoop: Runnable
|
||||
|
||||
init {
|
||||
refreshLoop = Runnable {
|
||||
activity?.runOnUiThread { updateGui() }
|
||||
loopHandler.postDelayed(refreshLoop, T.mins(1).msecs())
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
return inflater.inflate(R.layout.virtualpump_fragment, container, false)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
disposable.add(RxBus
|
||||
.toObservable(EventVirtualPumpUpdateGui::class.java)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
|
||||
)
|
||||
disposable.add(RxBus
|
||||
.toObservable(EventTempBasalChange::class.java)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
|
||||
)
|
||||
disposable.add(RxBus
|
||||
.toObservable(EventExtendedBolusChange::class.java)
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe({ updateGui() }, { FabricPrivacy.logException(it) })
|
||||
)
|
||||
loopHandler.postDelayed(refreshLoop, T.mins(1).msecs())
|
||||
updateGui()
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
disposable.clear()
|
||||
loopHandler.removeCallbacks(refreshLoop)
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
private fun updateGui() {
|
||||
val virtualPump = VirtualPumpPlugin.getPlugin()
|
||||
virtualpump_basabasalrate?.text = MainApp.gs(R.string.pump_basebasalrate, virtualPump.baseBasalRate)
|
||||
virtualpump_tempbasal?.text = TreatmentsPlugin.getPlugin().getTempBasalFromHistory(System.currentTimeMillis())?.toStringFull()
|
||||
?: ""
|
||||
virtualpump_extendedbolus?.text = TreatmentsPlugin.getPlugin().getExtendedBolusFromHistory(System.currentTimeMillis())?.toString() ?: ""
|
||||
virtualpump_battery?.text = MainApp.gs(R.string.format_percent, virtualPump.batteryPercent)
|
||||
virtualpump_reservoir?.text = MainApp.gs(R.string.formatinsulinunits, virtualPump.reservoirInUnits.toDouble())
|
||||
|
||||
virtualPump.refreshConfiguration()
|
||||
val pumpType = virtualPump.pumpType
|
||||
|
||||
virtualpump_type?.text = pumpType.description
|
||||
virtualpump_type_def?.text = pumpType.getFullDescription(MainApp.gs(R.string.virtualpump_pump_def), pumpType.hasExtendedBasals())
|
||||
}
|
||||
}
|
|
@ -39,6 +39,7 @@ import info.nightscout.androidaps.events.EventTreatmentChange;
|
|||
import info.nightscout.androidaps.logging.L;
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventNewHistoryData;
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.data.MedtronicHistoryData;
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
|
||||
import info.nightscout.androidaps.utils.FabricPrivacy;
|
||||
import info.nightscout.androidaps.utils.JsonHelper;
|
||||
|
@ -249,10 +250,14 @@ public class TreatmentService extends OrmLiteBaseService<DatabaseHelper> {
|
|||
try {
|
||||
Treatment treatment = Treatment.createFromJson(json);
|
||||
if (treatment != null) {
|
||||
|
||||
if (MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: createTreatmentFromJsonIfNotExists:: medtronicPump={}", MedtronicUtil.isMedtronicPump());
|
||||
|
||||
if (!MedtronicUtil.isMedtronicPump())
|
||||
createOrUpdate(treatment);
|
||||
else
|
||||
createOrUpdateMedtronic(treatment, false);
|
||||
createOrUpdateMedtronic(treatment, true);
|
||||
} else
|
||||
log.error("Date is null: " + treatment.toString());
|
||||
} catch (JSONException e) {
|
||||
|
@ -392,11 +397,18 @@ public class TreatmentService extends OrmLiteBaseService<DatabaseHelper> {
|
|||
|
||||
|
||||
public UpdateReturn createOrUpdateMedtronic(Treatment treatment, boolean fromNightScout) {
|
||||
|
||||
if (MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: createOrUpdateMedtronic:: originalTreatment={}, fromNightScout={}", treatment, fromNightScout);
|
||||
|
||||
try {
|
||||
treatment.date = DatabaseHelper.roundDateToSec(treatment.date);
|
||||
|
||||
Treatment existingTreatment = getRecord(treatment.pumpId, treatment.date);
|
||||
|
||||
if (MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: createOrUpdateMedtronic:: existingTreatment={}", treatment);
|
||||
|
||||
if (existingTreatment == null) {
|
||||
getDao().create(treatment);
|
||||
if (L.isEnabled(L.DATATREATMENTS))
|
||||
|
@ -407,6 +419,9 @@ public class TreatmentService extends OrmLiteBaseService<DatabaseHelper> {
|
|||
} else {
|
||||
|
||||
if (existingTreatment.date == treatment.date) {
|
||||
if (MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: createOrUpdateMedtronic::(existingTreatment.date==treatment.date)");
|
||||
|
||||
// we will do update only, if entry changed
|
||||
if (!optionalTreatmentCopy(existingTreatment, treatment, fromNightScout)) {
|
||||
return new UpdateReturn(true, false);
|
||||
|
@ -416,6 +431,9 @@ public class TreatmentService extends OrmLiteBaseService<DatabaseHelper> {
|
|||
scheduleTreatmentChange(treatment);
|
||||
return new UpdateReturn(true, false);
|
||||
} else {
|
||||
if (MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: createOrUpdateMedtronic::(existingTreatment.date != treatment.date)");
|
||||
|
||||
// date is different, we need to remove entry
|
||||
getDao().delete(existingTreatment);
|
||||
optionalTreatmentCopy(existingTreatment, treatment, fromNightScout);
|
||||
|
|
|
@ -51,6 +51,7 @@ import info.nightscout.androidaps.plugins.general.overview.notifications.Notific
|
|||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensData;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensResult;
|
||||
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin;
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.data.MedtronicHistoryData;
|
||||
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
|
||||
import info.nightscout.androidaps.plugins.sensitivity.SensitivityAAPSPlugin;
|
||||
import info.nightscout.androidaps.plugins.sensitivity.SensitivityWeightedAveragePlugin;
|
||||
|
@ -344,12 +345,20 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
@Override
|
||||
public List<Treatment> getTreatmentsFromHistoryAfterTimestamp(long fromTimestamp) {
|
||||
List<Treatment> in5minback = new ArrayList<>();
|
||||
|
||||
long time = System.currentTimeMillis();
|
||||
synchronized (treatments) {
|
||||
if (MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: AllTreatmentsInDb: {}", MedtronicUtil.getGsonInstance().toJson(treatments));
|
||||
|
||||
for (Treatment t : treatments) {
|
||||
if (t.date <= time && t.date >= fromTimestamp)
|
||||
in5minback.add(t);
|
||||
}
|
||||
|
||||
if (MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: FilteredTreatments: AfterTime={}, Items={}", fromTimestamp, MedtronicUtil.getGsonInstance().toJson(in5minback));
|
||||
|
||||
return in5minback;
|
||||
}
|
||||
}
|
||||
|
@ -623,6 +632,9 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
public boolean addToHistoryTreatment(DetailedBolusInfo detailedBolusInfo, boolean allowUpdate) {
|
||||
boolean medtronicPump = MedtronicUtil.isMedtronicPump();
|
||||
|
||||
if (MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: addToHistoryTreatment::isMedtronicPump={}", medtronicPump);
|
||||
|
||||
Treatment treatment = new Treatment();
|
||||
treatment.date = detailedBolusInfo.date;
|
||||
treatment.source = detailedBolusInfo.source;
|
||||
|
@ -637,6 +649,9 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
treatment.boluscalc = detailedBolusInfo.boluscalc != null ? detailedBolusInfo.boluscalc.toString() : null;
|
||||
TreatmentService.UpdateReturn creatOrUpdateResult;
|
||||
|
||||
if (medtronicPump && MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: addToHistoryTreatment::treatment={}", treatment);
|
||||
|
||||
if (!medtronicPump)
|
||||
creatOrUpdateResult = getService().createOrUpdate(treatment);
|
||||
else
|
||||
|
@ -645,12 +660,17 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
boolean newRecordCreated = creatOrUpdateResult.newRecord;
|
||||
//log.debug("Adding new Treatment record" + treatment.toString());
|
||||
if (detailedBolusInfo.carbTime != 0) {
|
||||
|
||||
Treatment carbsTreatment = new Treatment();
|
||||
carbsTreatment.source = detailedBolusInfo.source;
|
||||
carbsTreatment.pumpId = detailedBolusInfo.pumpId; // but this should never happen
|
||||
carbsTreatment.date = detailedBolusInfo.date + detailedBolusInfo.carbTime * 60 * 1000L + 1000L; // add 1 sec to make them different records
|
||||
carbsTreatment.carbs = detailedBolusInfo.carbs;
|
||||
carbsTreatment.source = detailedBolusInfo.source;
|
||||
|
||||
if (medtronicPump && MedtronicHistoryData.doubleBolusDebug)
|
||||
log.debug("DoubleBolusDebug: carbTime!=0, creating second treatment. CarbsTreatment={}", carbsTreatment);
|
||||
|
||||
if (!medtronicPump)
|
||||
getService().createOrUpdate(carbsTreatment);
|
||||
else
|
||||
|
|
|
@ -27,7 +27,7 @@ import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
|
|||
import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions;
|
||||
import info.nightscout.androidaps.plugins.general.overview.dialogs.BolusProgressDialog;
|
||||
import info.nightscout.androidaps.plugins.general.overview.dialogs.BolusProgressHelperActivity;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissBolusprogressIfRunning;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissBolusProgressIfRunning;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification;
|
||||
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
|
||||
|
@ -275,7 +275,7 @@ public class CommandQueue {
|
|||
|
||||
public synchronized void cancelAllBoluses() {
|
||||
if (!isRunning(Command.CommandType.BOLUS)) {
|
||||
RxBus.INSTANCE.send(new EventDismissBolusprogressIfRunning(new PumpEnactResult().success(true).enacted(false)));
|
||||
RxBus.INSTANCE.send(new EventDismissBolusProgressIfRunning(new PumpEnactResult().success(true).enacted(false)));
|
||||
}
|
||||
removeAll(Command.CommandType.BOLUS);
|
||||
removeAll(Command.CommandType.SMB_BOLUS);
|
||||
|
|
|
@ -16,7 +16,7 @@ import info.nightscout.androidaps.interfaces.PumpInterface;
|
|||
import info.nightscout.androidaps.logging.L;
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissBolusprogressIfRunning;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissBolusProgressIfRunning;
|
||||
import info.nightscout.androidaps.queue.events.EventQueueChanged;
|
||||
import info.nightscout.androidaps.utils.SP;
|
||||
import info.nightscout.androidaps.utils.T;
|
||||
|
@ -68,7 +68,7 @@ public class QueueThread extends Thread {
|
|||
long secondsElapsed = (System.currentTimeMillis() - connectionStartTime) / 1000;
|
||||
|
||||
if (!pump.isConnected() && secondsElapsed > Constants.PUMP_MAX_CONNECTION_TIME_IN_SECONDS) {
|
||||
RxBus.INSTANCE.send(new EventDismissBolusprogressIfRunning(null));
|
||||
RxBus.INSTANCE.send(new EventDismissBolusProgressIfRunning(null));
|
||||
RxBus.INSTANCE.send(new EventPumpStatusChanged(MainApp.gs(R.string.connectiontimedout)));
|
||||
if (L.isEnabled(L.PUMPQUEUE))
|
||||
log.debug("timed out");
|
||||
|
|
|
@ -3,14 +3,13 @@ package info.nightscout.androidaps.queue.commands;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
import info.nightscout.androidaps.plugins.bus.RxBus;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.androidaps.plugins.general.overview.dialogs.BolusProgressDialog;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissBolusprogressIfRunning;
|
||||
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissBolusProgressIfRunning;
|
||||
import info.nightscout.androidaps.queue.Callback;
|
||||
import info.nightscout.androidaps.utils.DecimalFormatter;
|
||||
|
||||
|
@ -34,7 +33,7 @@ public class CommandBolus extends Command {
|
|||
PumpEnactResult r = ConfigBuilderPlugin.getPlugin().getActivePump().deliverTreatment(detailedBolusInfo);
|
||||
|
||||
BolusProgressDialog.bolusEnded = true;
|
||||
RxBus.INSTANCE.send(new EventDismissBolusprogressIfRunning(r));
|
||||
RxBus.INSTANCE.send(new EventDismissBolusProgressIfRunning(r));
|
||||
if (L.isEnabled(L.PUMPQUEUE))
|
||||
log.debug("Result success: " + r.success + " enacted: " + r.enacted);
|
||||
|
||||
|
|
|
@ -50,8 +50,8 @@ public class CommandSetProfile extends Command {
|
|||
// Send SMS notification if ProfileSwitch is comming from NS
|
||||
ProfileSwitch profileSwitch = TreatmentsPlugin.getPlugin().getProfileSwitchFromHistory(System.currentTimeMillis());
|
||||
if (profileSwitch != null && r.enacted && profileSwitch.source == Source.NIGHTSCOUT) {
|
||||
SmsCommunicatorPlugin smsCommunicatorPlugin = MainApp.getSpecificPlugin(SmsCommunicatorPlugin.class);
|
||||
if (smsCommunicatorPlugin != null && smsCommunicatorPlugin.isEnabled(PluginType.GENERAL)) {
|
||||
SmsCommunicatorPlugin smsCommunicatorPlugin = SmsCommunicatorPlugin.getPlugin();
|
||||
if (smsCommunicatorPlugin.isEnabled(PluginType.GENERAL)) {
|
||||
smsCommunicatorPlugin.sendNotificationToAllNumbers(MainApp.gs(R.string.profile_set_ok));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,6 +24,13 @@ public class NetworkChangeReceiver extends BroadcastReceiver {
|
|||
|
||||
private static EventNetworkChange lastEvent = null;
|
||||
|
||||
public static final NetworkChangeReceiver instance = new NetworkChangeReceiver();
|
||||
|
||||
// TODO: Split NSClient into network state component that can be used by several plugins and logic for plugin
|
||||
public static void fetch() {
|
||||
new NetworkChangeReceiver().grabNetworkStatus(MainApp.instance().getApplicationContext());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReceive(final Context context, final Intent intent) {
|
||||
EventNetworkChange event = grabNetworkStatus(context);
|
||||
|
@ -72,11 +79,11 @@ public class NetworkChangeReceiver extends BroadcastReceiver {
|
|||
return lastEvent != null && lastEvent.getWifiConnected();
|
||||
}
|
||||
|
||||
public static boolean isConnected() {
|
||||
public static boolean isConnected() {
|
||||
return lastEvent != null && (lastEvent.getWifiConnected() || lastEvent.getMobileConnected());
|
||||
}
|
||||
|
||||
public static EventNetworkChange getLastEvent() {
|
||||
return lastEvent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -91,8 +91,7 @@ public class SWDefinition {
|
|||
.preferenceId(R.string.key_language).label(R.string.language)
|
||||
.comment(R.string.setupwizard_language_prompt))
|
||||
.validator(() -> {
|
||||
String lang = SP.getString("language", "en");
|
||||
LocaleHelper.setLocale(MainApp.instance().getApplicationContext(), lang);
|
||||
LocaleHelper.INSTANCE.update(MainApp.instance().getApplicationContext());
|
||||
return SP.contains(R.string.key_language);
|
||||
});
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ public class SetupWizardActivity extends NoSplashAppCompatActivity {
|
|||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
LocaleHelper.onCreate(this, "en");
|
||||
LocaleHelper.INSTANCE.update(getApplicationContext());
|
||||
setContentView(R.layout.activity_setupwizard);
|
||||
|
||||
scrollView = (ScrollView) findViewById(R.id.sw_scrollview);
|
||||
|
|
|
@ -8,10 +8,13 @@ import com.google.firebase.analytics.FirebaseAnalytics;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import info.nightscout.androidaps.BuildConfig;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.logging.L;
|
||||
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
|
||||
import info.nightscout.androidaps.plugins.constraints.signatureVerifier.SignatureVerifierPlugin;
|
||||
|
||||
/**
|
||||
* Created by jamorham on 21/02/2018.
|
||||
|
@ -112,19 +115,23 @@ public class FabricPrivacy {
|
|||
|
||||
String closedLoopEnabled = MainApp.getConstraintChecker().isClosedLoopAllowed().value() ? "CLOSED_LOOP_ENABLED" : "CLOSED_LOOP_DISABLED";
|
||||
// Size is limited to 36 chars
|
||||
String remote = BuildConfig.REMOTE
|
||||
.replace("https://","")
|
||||
.replace("http://","")
|
||||
String remote = BuildConfig.REMOTE.toLowerCase()
|
||||
.replace("https://", "")
|
||||
.replace("http://", "")
|
||||
.replace(".git", "")
|
||||
.replace(".com/", ":")
|
||||
.replace(".org/", ":")
|
||||
.replace(".net/", ":");
|
||||
|
||||
MainApp.getFirebaseAnalytics().setUserProperty("Mode", BuildConfig.APPLICATION_ID + "-" + closedLoopEnabled);
|
||||
MainApp.getFirebaseAnalytics().setUserProperty("Language", LocaleHelper.getLanguage());
|
||||
MainApp.getFirebaseAnalytics().setUserProperty("Language", LocaleHelper.INSTANCE.currentLanguage());
|
||||
MainApp.getFirebaseAnalytics().setUserProperty("Version", BuildConfig.VERSION);
|
||||
MainApp.getFirebaseAnalytics().setUserProperty("HEAD", BuildConfig.HEAD);
|
||||
MainApp.getFirebaseAnalytics().setUserProperty("Remote", remote);
|
||||
List<String> hashes = SignatureVerifierPlugin.getPlugin().shortHashes();
|
||||
if (hashes.size() >= 1)
|
||||
MainApp.getFirebaseAnalytics().setUserProperty("Hash", hashes.get(0));
|
||||
|
||||
if (ConfigBuilderPlugin.getPlugin().getActivePump() != null)
|
||||
MainApp.getFirebaseAnalytics().setUserProperty("Pump", ConfigBuilderPlugin.getPlugin().getActivePump().getClass().getSimpleName());
|
||||
if (ConfigBuilderPlugin.getPlugin().getActiveAPS() != null)
|
||||
|
@ -137,7 +144,6 @@ public class FabricPrivacy {
|
|||
MainApp.getFirebaseAnalytics().setUserProperty("Sensitivity", ConfigBuilderPlugin.getPlugin().getActiveSensitivity().getClass().getSimpleName());
|
||||
if (ConfigBuilderPlugin.getPlugin().getActiveInsulin() != null)
|
||||
MainApp.getFirebaseAnalytics().setUserProperty("Insulin", ConfigBuilderPlugin.getPlugin().getActiveInsulin().getClass().getSimpleName());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
package info.nightscout.androidaps.utils;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* This class is used to change your application locale and persist this change for the next time
|
||||
* that your app is going to be used.
|
||||
* <p/>
|
||||
* You can also change the locale of your application on the fly by using the setLocale method.
|
||||
* <p/>
|
||||
* Created by gunhansancar on 07/10/15.
|
||||
*/
|
||||
public class LocaleHelper {
|
||||
|
||||
private static final String SELECTED_LANGUAGE = "Locale.Helper.Selected.Language";
|
||||
|
||||
public static void onCreate(Context context) {
|
||||
String lang = getPersistedData(Locale.getDefault().getLanguage());
|
||||
setLocale(context, lang);
|
||||
}
|
||||
|
||||
public static void onCreate(Context context, String defaultLanguage) {
|
||||
String lang = getPersistedData(defaultLanguage);
|
||||
setLocale(context, lang);
|
||||
}
|
||||
|
||||
public static String getLanguage() {
|
||||
return getPersistedData(Locale.getDefault().getLanguage());
|
||||
}
|
||||
|
||||
public static void setLocale(Context context, String language) {
|
||||
persist(context, language);
|
||||
updateResources(context, language);
|
||||
}
|
||||
|
||||
private static String getPersistedData(String defaultLanguage) {
|
||||
return SP.getString(SELECTED_LANGUAGE, defaultLanguage);
|
||||
}
|
||||
|
||||
private static void persist(Context context, String language) {
|
||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
|
||||
editor.putString(SELECTED_LANGUAGE, language);
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
private static void updateResources(Context context, String language) {
|
||||
Locale locale = new Locale(language);
|
||||
Locale.setDefault(locale);
|
||||
|
||||
Resources resources = context.getResources();
|
||||
|
||||
Configuration configuration = resources.getConfiguration();
|
||||
configuration.locale = locale;
|
||||
|
||||
resources.updateConfiguration(configuration, resources.getDisplayMetrics());
|
||||
}
|
||||
|
||||
public static Locale getLocale() {
|
||||
return new Locale(getPersistedData("en"));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
package info.nightscout.androidaps.utils
|
||||
|
||||
import android.content.Context
|
||||
import info.nightscout.androidaps.R
|
||||
import java.util.*
|
||||
|
||||
object LocaleHelper {
|
||||
fun update(context: Context) =
|
||||
updateResources(context, currentLanguage())
|
||||
|
||||
fun currentLanguage(): String =
|
||||
SP.getString(R.string.key_language, Locale.getDefault().language)
|
||||
|
||||
fun currentLocale(): Locale =
|
||||
Locale(SP.getString(R.string.key_language, Locale.getDefault().language))
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
private fun updateResources(context: Context, language: String) {
|
||||
var locale = Locale(language)
|
||||
if (language.contains("_")) {
|
||||
// language with country like pt_BR defined in arrays.xml
|
||||
val lang = language.substring(0, 2)
|
||||
val country = language.substring(3, 5)
|
||||
locale = Locale(lang, country)
|
||||
}
|
||||
|
||||
Locale.setDefault(locale)
|
||||
val resources = context.resources
|
||||
resources.configuration.setLocale(locale)
|
||||
resources.updateConfiguration(resources.configuration, resources.displayMetrics)
|
||||
}
|
||||
}
|
|
@ -33,6 +33,8 @@ public class Translator {
|
|||
return MainApp.gs(R.string.careportal_exercise);
|
||||
case "Site Change":
|
||||
return MainApp.gs(R.string.careportal_pumpsitechange);
|
||||
case "Pump Battery Change":
|
||||
return MainApp.gs(R.string.careportal_pumpbatterychange);
|
||||
case "Sensor Start":
|
||||
return MainApp.gs(R.string.careportal_cgmsensorstart);
|
||||
case "Sensor Change":
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
android:layout_above="@+id/automation_logView"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_marginBottom="-100dp" />
|
||||
android:layout_marginBottom="15dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/automation_logView"
|
||||
|
|
|
@ -105,7 +105,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
android:text="Disabled to:"
|
||||
android:text="Disabled until:"
|
||||
android:textColor="#FF5722"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
|
|
@ -18,11 +18,12 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="33dp"
|
||||
android:layout_height="match_parent"
|
||||
app:srcCompat="@drawable/icon_calculator" />
|
||||
|
||||
<TextView
|
||||
|
@ -31,9 +32,9 @@
|
|||
android:layout_gravity="center"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:text="@string/boluswizard"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:textColor="@color/colorCalculatorButton"
|
||||
android:text="@string/boluswizard" />
|
||||
android:textColor="@color/colorCalculatorButton" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -55,7 +56,7 @@
|
|||
android:textStyle="bold" />
|
||||
|
||||
<info.nightscout.androidaps.utils.NumberPicker
|
||||
android:id="@+id/treatments_wizard_bginput"
|
||||
android:id="@+id/treatments_wizard_bg_input"
|
||||
android:layout_width="130dp"
|
||||
android:layout_height="40dp" />
|
||||
|
||||
|
@ -85,7 +86,7 @@
|
|||
android:textStyle="bold" />
|
||||
|
||||
<info.nightscout.androidaps.utils.NumberPicker
|
||||
android:id="@+id/treatments_wizard_carbsinput"
|
||||
android:id="@+id/treatments_wizard_carbs_input"
|
||||
android:layout_width="130dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_gravity="center_horizontal" />
|
||||
|
@ -116,7 +117,7 @@
|
|||
android:textStyle="bold" />
|
||||
|
||||
<info.nightscout.androidaps.utils.NumberPicker
|
||||
android:id="@+id/treatments_wizard_correctioninput"
|
||||
android:id="@+id/treatments_wizard_correction_input"
|
||||
android:layout_width="130dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_gravity="center_horizontal" />
|
||||
|
@ -146,7 +147,7 @@
|
|||
android:textStyle="bold" />
|
||||
|
||||
<info.nightscout.androidaps.utils.NumberPicker
|
||||
android:id="@+id/treatments_wizard_carbtimeinput"
|
||||
android:id="@+id/treatments_wizard_carb_time_input"
|
||||
android:layout_width="130dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_gravity="center_horizontal" />
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<string name="treatmentssafety_title">Behandelings veiligheid</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Maks toelaatbare Bolus [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Maks Toelaatbare karbs [g]</string>
|
||||
|
@ -33,6 +32,7 @@
|
|||
<string name="description_smb">Mees onlangse algoritme vir gevorderde gebruikers</string>
|
||||
<string name="description_overview">Wys die huidige staat van jou lus en knoppies vir mees algemene optrede</string>
|
||||
<string name="description_persistent_notification">Toon \'n voortgesette kennisgewing met \'n kort oorsig van wat jou lus besig is om te doen</string>
|
||||
<string name="description_profile_local">Definieer\'n profiel wat beskikbaar is aflyn.</string>
|
||||
<string name="description_profile_nightscout">Bied die profiel wat jy het beskryf het in Nightscout</string>
|
||||
<string name="description_profile_simple">Definieer \'n profiel met net een tydblok.</string>
|
||||
<string name="description_pump_combo">Pomp Integrasie met Accu-Chek Combo pompe, vereis dat ruffy geïnstalleer is</string>
|
||||
|
@ -214,7 +214,6 @@
|
|||
<string name="overview_tempbasal_button">TydelikeBasaal</string>
|
||||
<string name="overview_extendedbolus_button">Verlengde Bolus</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Nightscout-weergawe:</string>
|
||||
<string name="missing">Ontbreek</string>
|
||||
<string name="exported">Voorkeure uitgevoer</string>
|
||||
<string name="export_to">Uitvoer instellings na</string>
|
||||
<string name="import_from">Voer instellings in vanaf</string>
|
||||
|
@ -544,8 +543,6 @@
|
|||
<string name="show_statuslights">Wys status vlae op tuisskerm</string>
|
||||
<string name="statuslights_res_warning">Drempel waarskuwings stoor vlak [U]</string>
|
||||
<string name="statuslights_res_critical">Drempel kritieke stoor vlak [U]</string>
|
||||
<string name="statuslights_bat_warning">Drempel waarskuwing battery vlak [%%]</string>
|
||||
<string name="statuslights_bat_critical">Drempel kritieke battery vlak [%%]</string>
|
||||
<string name="iob">IAB</string>
|
||||
<string name="cob">KOB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -1336,6 +1333,27 @@
|
|||
<string name="medtronic_cmd_desc_get_tbr">Verkry Tydelike Basale</string>
|
||||
<string name="medtronic_cmd_desc_set_tbr">Stel Tydelike Basale</string>
|
||||
<string name="medtronic_cmd_desc_set_bolus">Stel Bolus</string>
|
||||
<string name="profilename">Verander profiel na</string>
|
||||
<string name="changengetoprofilename">Verander profiel na %1$s</string>
|
||||
<string name="automation_trigger_pump_last_connection_label">Laaste konneksie na pomp</string>
|
||||
<string name="automation_trigger_pump_last_connection_description">Laaste konneksie na pomp [minute gelede]</string>
|
||||
<string name="automation_trigger_pump_last_connection_compared">Vorige konneksie na pomp %1$s %2$s min terug</string>
|
||||
<string name="sendsmsactionlabel">Stuur\'n SMS: %1$s</string>
|
||||
<string name="sendsmsactiondescription">Stuur SMS na alle fone in voorkeure</string>
|
||||
<string name="sendsmsactiontext">Stuur\'n SMS met die teks</string>
|
||||
<string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Bolus beperking aangewend: %2$.2fU to %3$.2fU</font>]]></string>
|
||||
<string name="reservoirvalue">%1$.0f / %2$d U</string>
|
||||
<string name="loading">Laai tans...</string>
|
||||
<string name="snooze">Sluimer</string>
|
||||
<string name="time_range">Tyd reeks</string>
|
||||
<string name="timerange_value">Tyd is tussen %1$s en %2$s</string>
|
||||
<string name="between">Tussen </string>
|
||||
<string name="close">Maak toe</string>
|
||||
<string name="smscommunicator_messagebody">Ongeldig boodskap teks</string>
|
||||
<string name="format_bg_isf">%1$s ISF: %2$.1f</string>
|
||||
<string name="format_carbs_ic">%1$.0fg IC: %2$.1f</string>
|
||||
<string name="format_cob_ic">%1$.1fg IC: %2$.1f</string>
|
||||
<string name="format_percent">%1$d%%</string>
|
||||
<string name="boluswizard">Bolus slimjan</string>
|
||||
<string name="unit_minute_short">min</string>
|
||||
</resources>
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
<string name="codeinvalid">Неправилен код</string>
|
||||
<string name="objectives_exam_objective">Докажете знанията си</string>
|
||||
<string name="objectives_exam_gate">Отговорете правилно на въпросите</string>
|
||||
<string name="answerdisabledto">Изключено до: %1$s</string>
|
||||
<string name="wronganswer">Грешен отговор!</string>
|
||||
<string name="unfinshed_button">Следващия неотговорен</string>
|
||||
<string name="requestcode">Код (request code): %1$s</string>
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<string name="treatmentssafety_title">Настройки на сигурността</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Максимален инсулин при болус [единици]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Максимални въглехидрати [гр]</string>
|
||||
|
@ -216,7 +215,6 @@
|
|||
<string name="overview_tempbasal_button">Временен базал</string>
|
||||
<string name="overview_extendedbolus_button">Удължен болус</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Nightscout версия:</string>
|
||||
<string name="missing">Липсва</string>
|
||||
<string name="exported">Настройките са експортирани</string>
|
||||
<string name="export_to">Експортирай настройките в </string>
|
||||
<string name="import_from">Импорт на настройки от</string>
|
||||
|
@ -548,8 +546,6 @@
|
|||
<string name="show_statuslights_extended_summary">Показвай подробни статус светлини за канула, инсулин, сензор, резервоар и батерията на началния екран.</string>
|
||||
<string name="statuslights_res_warning">Ниво за аларма за останал инсулин в резервоара [Е]</string>
|
||||
<string name="statuslights_res_critical">Критично ниво на останал инсулин в резервоар [Е]</string>
|
||||
<string name="statuslights_bat_warning">Ниско ниво на батерията под [%%]</string>
|
||||
<string name="statuslights_bat_critical">Критично ниво на батерията под [%%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">СОВ</string>
|
||||
<string name="virtualpump_firmware_label">Фърмуер</string>
|
||||
|
@ -1368,6 +1364,7 @@
|
|||
<string name="format_bg_isf">%1$s ISF: %2$.1f</string>
|
||||
<string name="format_carbs_ic">%1$.0fгр Чувств: %2$.1f</string>
|
||||
<string name="format_cob_ic">%1$.1fгр Чувств: %2$.1f</string>
|
||||
<string name="format_percent">%1$d %%</string>
|
||||
<string name="boluswizard">Болус калкулатор</string>
|
||||
<string name="unit_minute_short">мин</string>
|
||||
</resources>
|
||||
|
|
|
@ -163,4 +163,7 @@
|
|||
<string name="basalhelp_diabetesteam">K Vašemu lékaři</string>
|
||||
<string name="basalhelp_google">Google</string>
|
||||
<string name="basalhelp_facebook">Facebook</string>
|
||||
<string name="other_medication_label">Jiné léky</string>
|
||||
<string name="other_medication_text">AAPS snižuje bazály na zvýšení hladiny cukru v krvi. Léky ze skupiny inhibitorů SGLT2 (glifloziny) mohou zabránit očekávanému zvýšení hodnoty glykémie, a tak mohou produkovat nebezpečný nedostatek inzulínu (ketoacidózu).
|
||||
\nSpolečné značky jsou: Invokana ®, Forxiga ®, Jardiance ®, Steglatro ®, Suglat ®, Apleway ®, Deberza ®, Synjardy ®, Vokanamet ®, Xigduo ®.\n\n. Tímto slibuji, že tyto léky neberu při používání AAPS nebo deaktivuji smyčku před užíváním těchto léků.</string>
|
||||
</resources>
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
<string name="objectives_usage_gate">Provádějte v AndroidAPS různé akce</string>
|
||||
<string name="objectives_useprofileswitch">Nastavte profil na 90 % na 10 min (Dlouhé stisknutí názvu profilu na obrazovce Přehled)</string>
|
||||
<string name="objectives_usedisconnectpump">Předstírejte, že se jdete sprchovat. Odpojte pumpu na 1 h (Dlouze přidržte tlačítko Otevřená smyčka)</string>
|
||||
<string name="objectives_usereconnectpump">... a stejným způsobem ji znovu připojte</string>
|
||||
<string name="objectives_usereconnectpump">...a stejným způsobem ji znovu připojte</string>
|
||||
<string name="objectives_usetemptarget">Vytvořte vlastní dočasný cíl s trváním 10 min (Dlouze přidržte aktuální cíl)</string>
|
||||
<string name="objectives_useactions">Na kartě Konfigurace povolte modul Akce, aktivujte jeho zobrazení a zobrazte jeho obsah z horní nabídky</string>
|
||||
<string name="objectives_useloop">Zobrazte obsah modulu Smyčka</string>
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<string name="treatmentssafety_title">Bezpečnost zadání ošetřeni</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Maximální povolený bolus [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Maximální počet sacharidů [g]</string>
|
||||
|
@ -99,6 +98,7 @@
|
|||
<string name="openapsma_profile_label">Profil</string>
|
||||
<string name="openapsma_mealdata_label">Data o jídle</string>
|
||||
<string name="result">Výsledek</string>
|
||||
<string name="result_insulin_carbs">Výsledek: %1$s %2$s</string>
|
||||
<string name="openapsma_noglucosedata">Nedostupná data o glykémiích</string>
|
||||
<string name="nochangerequested">Změna nepožadována</string>
|
||||
<string name="openapsma_request_label">Požadavek</string>
|
||||
|
@ -216,7 +216,7 @@
|
|||
<string name="overview_tempbasal_button">Dočasný bazál</string>
|
||||
<string name="overview_extendedbolus_button">Prodloužený bolus</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Verze Nightscoutu:</string>
|
||||
<string name="missing">Chybí</string>
|
||||
<string name="missing_carbs">Chybí %1$dg</string>
|
||||
<string name="exported">Nastavení exportováno</string>
|
||||
<string name="export_to">Exportovat nastavení do</string>
|
||||
<string name="import_from">Importovat nastavení z</string>
|
||||
|
@ -548,8 +548,8 @@
|
|||
<string name="show_statuslights_extended_summary">Povolí rozšířené stavové indikátory pro stáří kanyly, inzulínu, senzoru, zásobníku a baterie na domovské obrazovce.</string>
|
||||
<string name="statuslights_res_warning">Úroveň varování stavu zásobníku [U]</string>
|
||||
<string name="statuslights_res_critical">Úroveň kritického varování stavu zásobníku [U]</string>
|
||||
<string name="statuslights_bat_warning">Úroveň varování stavu baterie [%%]</string>
|
||||
<string name="statuslights_bat_critical">Úroveň kritického varování stavu baterie [%%]</string>
|
||||
<string name="statuslights_bat_warning">Úroveň varování stavu baterie [%]</string>
|
||||
<string name="statuslights_bat_critical">Úroveň kritického varování stavu baterie [%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -988,7 +988,7 @@
|
|||
<string name="send_all_logs">Poslat logy e-mailem</string>
|
||||
<string name="delete_logs">Smazat logy</string>
|
||||
<string name="error_adding_treatment_message">Ošetření (inzulín: %1$.2f, sacharidy: %2$d, čas: %3$s) nelze přidat. Zkontrolujte a podle potřeby ručně přidejte záznam.</string>
|
||||
<string name="generated_ecarbs_note">eCarbs: %1$d g (%2$d h), start: %3$d m</string>
|
||||
<string name="generated_ecarbs_note">eCarbs: %1$d g (%2$d h), zpoždění: %3$d m</string>
|
||||
<string name="openaps_noasdata">Nedostupná data o glykémiích</string>
|
||||
<string name="nav_logsettings">Nastavení logování</string>
|
||||
<string name="resettodefaults">Obnovit výchozí</string>
|
||||
|
@ -1236,6 +1236,8 @@
|
|||
<string name="medtronic_pump_battery_no">Nevybráno (Jednoduché)</string>
|
||||
<string name="medtronic_pump_battery_alkaline">Alkalické (Rozšířené)</string>
|
||||
<string name="medtronic_pump_battery_lithium">Lithiové (Rozšířené)</string>
|
||||
<string name="medtronic_pump_battery_nizn">NiZn (Rozšířené)</string>
|
||||
<string name="medtronic_bolus_debugging">Bolus/Ošetření ladění</string>
|
||||
<!-- RL BLE Scanning -->
|
||||
<string name="rileylink_scanner_scan_scan">VYHLEDAT</string>
|
||||
<string name="rileylink_scanner_scan_stop">ZASTAVIT</string>
|
||||
|
@ -1369,6 +1371,10 @@
|
|||
<string name="format_bg_isf">%1$s ISF: %2$.1f</string>
|
||||
<string name="format_carbs_ic">%1$.0fg IC: %2$.1f</string>
|
||||
<string name="format_cob_ic">%1$.1fg IC: %2$.1f</string>
|
||||
<string name="format_percent">%1$d%%</string>
|
||||
<string name="boluswizard">Bolusová kalkulačka</string>
|
||||
<string name="unit_minute_short">min</string>
|
||||
<string name="format_carbs">%1$dg</string>
|
||||
<string name="common_on">ZAP</string>
|
||||
<string name="common_off">VYP</string>
|
||||
</resources>
|
||||
|
|
|
@ -163,4 +163,7 @@
|
|||
<string name="basalhelp_diabetesteam">Dein Diabetes-Team</string>
|
||||
<string name="basalhelp_google">Google</string>
|
||||
<string name="basalhelp_facebook">Facebook</string>
|
||||
<string name="other_medication_label">Andere Medikamente</string>
|
||||
<string name="other_medication_text">AAPS reduziert die Basalrate zur Erhöhung des Blutzuckers. Medikamente aus der Gruppe der SGLT2-Hemmer (Gliflozine) können zu erwartende Blutzuckersteigungen verhindern und damit einen gefährlichen Insulinmangel (DKA) produzieren.
|
||||
\nÜbliche Handelsnamen sind: Invokana ®, Forxiga ®, Jardiance ®, Steglatro ®, Suglat ®, Apleway ®, Deberza ®, Synjardy ®, Vokanamet ®, Xigduo ®.\n\nIch verspreche, dass ich solche Medikamente bei der Anwendung von AAPS nicht einnehmen werde oder den Loop vor der Verwendung dieser Medikamente deaktivieren werde.</string>
|
||||
</resources>
|
||||
|
|
|
@ -42,7 +42,7 @@ die Formel maxIOB = durchschnittlicher Essensbolus + 3 x höchste Basalrate</str
|
|||
<string name="codeinvalid">Code ungültig</string>
|
||||
<string name="objectives_exam_objective">Prüfe Dein Wissen</string>
|
||||
<string name="objectives_exam_gate">Lies und beantworte die Fragen richtig</string>
|
||||
<string name="answerdisabledto">Beantwortung deaktiviert bis: %1$s</string>
|
||||
<string name="answerdisabledto">Frage gesperrt bis: %1$s</string>
|
||||
<string name="wronganswer">Falsch!</string>
|
||||
<string name="unfinshed_button">Nächste offene</string>
|
||||
<string name="requestcode">Code anfordern: %1$s</string>
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<string name="treatmentssafety_title">Sicherheitseinstellungen der Behandlungen</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Max. erlaubter Bolus [IE]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Max. erlaubte Kohlenhydrate [g]</string>
|
||||
|
@ -99,6 +98,7 @@
|
|||
<string name="openapsma_profile_label">Profil</string>
|
||||
<string name="openapsma_mealdata_label">Mahlzeiten-Daten</string>
|
||||
<string name="result">Ergebnis</string>
|
||||
<string name="result_insulin_carbs">Ergebnis: %1$s %2$s</string>
|
||||
<string name="openapsma_noglucosedata">Keine BZ-Werte verfügbar</string>
|
||||
<string name="nochangerequested">Keine Anpassung benötigt</string>
|
||||
<string name="openapsma_request_label">Anfrage</string>
|
||||
|
@ -216,7 +216,7 @@
|
|||
<string name="overview_tempbasal_button">TBR</string>
|
||||
<string name="overview_extendedbolus_button">Verzögerter Bolus</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Nightscout-Version:</string>
|
||||
<string name="missing">Fehlend</string>
|
||||
<string name="missing_carbs">Fehlend %1$dg</string>
|
||||
<string name="exported">Einstellungen exportiert</string>
|
||||
<string name="export_to">Einstellungen exportieren nach</string>
|
||||
<string name="import_from">Importiere Einstellungen von</string>
|
||||
|
@ -478,7 +478,7 @@
|
|||
<string name="settings_password">Passwort für die Einstellungen</string>
|
||||
<string name="unlock_settings">Einstellungen freischalten</string>
|
||||
<string name="approachingdailylimit">Tagesinsulin-Limit wird bald erreicht</string>
|
||||
<string name="nsclientinternal">Nighscout-Client</string>
|
||||
<string name="nsclientinternal">Nightscout-Client</string>
|
||||
<string name="nsclientinternal_shortname">NSCl</string>
|
||||
<string name="nsclientinternal_url">URL:</string>
|
||||
<string name="nsclientinternal_autoscroll">Auto-Scrollen</string>
|
||||
|
@ -548,8 +548,8 @@
|
|||
<string name="show_statuslights_extended_summary">Erweiterte Statusanzeige für CAGE, IAGE, SAGE, Reservoir- und Batteriestand auf dem Homescreen.</string>
|
||||
<string name="statuslights_res_warning">Warnschwelle Reservoirstand [IE]</string>
|
||||
<string name="statuslights_res_critical">Warnschwelle kritischer Reservoirstand [IE]</string>
|
||||
<string name="statuslights_bat_warning">Warnschwelle Batteriestand [%%]</string>
|
||||
<string name="statuslights_bat_critical">Warnschwelle kritischer Batteriestand [%%]</string>
|
||||
<string name="statuslights_bat_warning">Warnschwelle Batteriestand [%]</string>
|
||||
<string name="statuslights_bat_critical">Warnschwelle kritischer Batteriestand [%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -1237,6 +1237,8 @@ Unerwartetes Verhalten.</string>
|
|||
<string name="medtronic_pump_battery_no">Nicht ausgewählt (Einfache Ansicht)</string>
|
||||
<string name="medtronic_pump_battery_alkaline">Alkaline Batterie (erweiterte Ansicht)</string>
|
||||
<string name="medtronic_pump_battery_lithium">Lithium Batterie (erweiterte Ansicht)</string>
|
||||
<string name="medtronic_pump_battery_nizn">Nickel-Zink-Akku (erweiterte Ansicht)</string>
|
||||
<string name="medtronic_bolus_debugging">Fehlersuche Bolus/Behandlungen</string>
|
||||
<!-- RL BLE Scanning -->
|
||||
<string name="rileylink_scanner_scan_scan">SCANNEN</string>
|
||||
<string name="rileylink_scanner_scan_stop">STOP</string>
|
||||
|
@ -1370,6 +1372,10 @@ Unerwartetes Verhalten.</string>
|
|||
<string name="format_bg_isf">%1$s ISF: %2$.1f</string>
|
||||
<string name="format_carbs_ic">%1$.0fg IC: %2$.1f</string>
|
||||
<string name="format_cob_ic">%1$.1fg IC: %2$.1f</string>
|
||||
<string name="format_percent">%1$d%%</string>
|
||||
<string name="boluswizard">Bolus-Rechner</string>
|
||||
<string name="unit_minute_short">Min.</string>
|
||||
<string name="format_carbs">%1$dg</string>
|
||||
<string name="common_on">Ein</string>
|
||||
<string name="common_off">Aus</string>
|
||||
</resources>
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<string name="treatmentssafety_title">Ασφάλεια Θεραπειών</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Μέγιστο Επιτρεπτό bolus[U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Μέγιστο Επιτρεπτό υδατανθράκων [g]</string>
|
||||
|
@ -99,6 +98,7 @@
|
|||
<string name="openapsma_profile_label">Προφίλ</string>
|
||||
<string name="openapsma_mealdata_label">Δεδομένα Γεύματος</string>
|
||||
<string name="result">Αποτέλεσμα</string>
|
||||
<string name="result_insulin_carbs">Αποτέλεσμα: %1$s %2$s</string>
|
||||
<string name="openapsma_noglucosedata">Μη διαθέσιμα δεδομένα γλυκόζης</string>
|
||||
<string name="nochangerequested">Δεν απαιτείται αλλαγή</string>
|
||||
<string name="openapsma_request_label">Αίτημα</string>
|
||||
|
@ -216,7 +216,7 @@
|
|||
<string name="overview_tempbasal_button">Προσ Ρυθμός</string>
|
||||
<string name="overview_extendedbolus_button">Εκτεταμμένο Bolus</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Έκδοση Nightscout:</string>
|
||||
<string name="missing">Χαμένες</string>
|
||||
<string name="missing_carbs">Λείπει %1$dg</string>
|
||||
<string name="exported">Επιλογές εξήχθησαν</string>
|
||||
<string name="export_to">Εξαγωγή ρυθμίσεων σε</string>
|
||||
<string name="import_from">Εισαγωγή ρυθμίσεων από</string>
|
||||
|
@ -548,8 +548,8 @@
|
|||
<string name="show_statuslights_extended_summary">Ενεργοποίηση του φωτισμού κατάστασης για cage, iage, sage, reservoir και επίπεδο μπαταρίας στην αρχική οθόνη.</string>
|
||||
<string name="statuslights_res_warning">Όριο προειδοποίησης χαμηλής αμπούλας [U]</string>
|
||||
<string name="statuslights_res_critical">Όριο προειδοποίησης πολύ χαμηλής αμπούλας [U]</string>
|
||||
<string name="statuslights_bat_warning">Όριο προειδοποίησης χαμηλής μπαταρίας [%%]</string>
|
||||
<string name="statuslights_bat_critical">Όριο προειδοποίησης πολύ χαμηλής μπαταρίας [%%]</string>
|
||||
<string name="statuslights_bat_warning">Όριο προειδοποίησης χαμηλής μπαταρίας [%]</string>
|
||||
<string name="statuslights_bat_critical">Όριο προειδοποίησης πολύ χαμηλής μπαταρίας [%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Έκδοση</string>
|
||||
|
@ -1369,6 +1369,8 @@
|
|||
<string name="format_bg_isf">%1$s ISF: %2$.1f</string>
|
||||
<string name="format_carbs_ic">%1$.0fg IC: %2$.1f</string>
|
||||
<string name="format_cob_ic">%1$.1fg IC: %2$.1f</string>
|
||||
<string name="format_percent">%1$d%%</string>
|
||||
<string name="boluswizard">Οδηγός Bolus</string>
|
||||
<string name="unit_minute_short">min</string>
|
||||
<string name="format_carbs">%1$dg</string>
|
||||
</resources>
|
||||
|
|
|
@ -11,38 +11,58 @@
|
|||
<string name="hypott_label">Tema: Hypo Temp-Objetivo</string>
|
||||
<string name="hypott_whenhypott">¿Cuál es la razón principal para establecer un hipo TT?</string>
|
||||
<string name="hypott_goinglow">Para evitar que BG caiga si ya hay basal temporal a cero corriendo.</string>
|
||||
<string name="hypott_preventoversmb">Para evitar que AAPS inyecte demasiada insulina después de una subida causada por los carbohidratos de acción rápida utilizados para tratar una bajada en las lecturas de glucosa.</string>
|
||||
<string name="hypott_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html</string>
|
||||
<string name="offlineprofile_whatprofile">¿Qué perfil puede ser usado y configurado estando desconectado?</string>
|
||||
<string name="offlineprofile_label">Tema: Perfil fuera de línea</string>
|
||||
<string name="offlineprofile_nsprofile">El perfil NS puede ser usado pero no configurado.</string>
|
||||
<string name="offlineprofile_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#profile</string>
|
||||
<string name="pumpdisconnect_label">Tema: Desconectando de la bomba</string>
|
||||
<string name="pumpdisconnect_whattodo">¿Qué se debe hacer al desconectar la bomba?</string>
|
||||
<string name="pumpdisconnect_letknow">Haga clic en \"Desconectar bomba\" para que AAPS sepa que no se está inyectando insulina.</string>
|
||||
<string name="pumpdisconnect_suspend">Haga clic en \'Suspender lazo \' para que la AAPS deje de estar en lazo cerrado mientras la bomba está desconectada.</string>
|
||||
<string name="pumpdisconnect_dontchnage">No cambies nada en AAPS, sólo desconecta la bomba.</string>
|
||||
<string name="pumpdisconnect_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#other-settings</string>
|
||||
<string name="objectives_label">Tema: Ajustes AndroidAPS</string>
|
||||
<string name="objectives_howtosave">¿Cuál es la mejor práctica para hacer copias de seguridad de tus ajustes?</string>
|
||||
<string name="objectives_exportsettings">Exportarlos localmente desde el menú de Mantenimiento.</string>
|
||||
<string name="objectives_storeelsewhere">Guardar archivo exportado a otro lugar como correo electrónico, Dropbox, Google drive…</string>
|
||||
<string name="objectives_doexportonstart">Exportarlos justo después de la instalación de AAPS.</string>
|
||||
<string name="objectives_doexportafterchange">Exportarlos después de realizar cambios en la configuración.</string>
|
||||
<string name="objectives_doexportafterobjective">Exportarlos tras completar un objetivo.</string>
|
||||
<string name="objectives_doexportafterfirtssettings">Exportarlos al terminar la configuración inicial.</string>
|
||||
<string name="objectives_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/ExportImportSettings.html</string>
|
||||
<string name="objectives_hint2">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#what-emergency-equipment-is-recommended-to-take-with-me</string>
|
||||
<string name="noisycgm_label">Tema: Lecturas de CGM ruidosas</string>
|
||||
<string name="noisycgm_whattodo">¿Qué se debe hacer si los datos de CGM tienen ruido?</string>
|
||||
<string name="nothing">Nada, AAPS se ocupará de ello.</string>
|
||||
<string name="noisycgm_pause">Desactivar el lazo cerrado para evitar una sobredosis.</string>
|
||||
<string name="noisycgm_replacesensor">Sustituya el sensor de CGM.</string>
|
||||
<string name="noisycgm_turnoffphone">Apagar el movil.</string>
|
||||
<string name="noisycgm_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Smoothing-Blood-Glucose-Data-in-xDrip.html#smoothing-blood-glucose-data</string>
|
||||
<string name="noisycgm_checksmoothing">Verifique que la aplicación CGM suaviza los datos de glucosa.</string>
|
||||
<string name="exercise_label">Tema: Ejercicio</string>
|
||||
<string name="exercise_whattodo">¿Cómo puedes ayudar al sistema a lidiar con el ejercicio?</string>
|
||||
<string name="exercise_setactivitytt">Utilización de la característica de objetivo temporal.</string>
|
||||
<string name="exercise_switchprofilebelow100">Realice un cambio de perfil por debajo del 100%.</string>
|
||||
<string name="exercise_switchprofileabove100">Realice un cambio de perfil por encima del 100%.</string>
|
||||
<string name="exercise_stoploop">Detener el lazo.</string>
|
||||
<string name="exercise_doitbeforestart">Establezca un objetivo temporal de actividad antes de iniciar el ejercicio.</string>
|
||||
<string name="exercise_afterstart">Establecer un objetivo temporal de actividad después de comenzar el ejercicio conduce a peores resultados que si se inicia antes de hacerlo.</string>
|
||||
<string name="exercise_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#activity-temp-target</string>
|
||||
<string name="suspendloop_label">Tema: Lazo inhabilitado/suspendido</string>
|
||||
<string name="suspendloop_doigetinsulin">¿Recibo insulina cuando el lazo está desactivado/suspendido?</string>
|
||||
<string name="suspendloop_yes">Sí, la insulina basal sigue siendo entregada.</string>
|
||||
<string name="suspendloop_no">No, la administración de la insulina está detenida.</string>
|
||||
<string name="basaltest_label">Tema: Basal, ISF, y IC Pruebas</string>
|
||||
<string name="basaltest_when">¿Cuándo debo validar los valores basales, ISF y IC?</string>
|
||||
<string name="basaltest_beforeloop">Antes de empezar en uso de lazo.</string>
|
||||
<string name="basaltest_havingregularhypo">Si se experimentan valores bajos de BG frecuentemente.</string>
|
||||
<string name="basaltest_havingregularhyper">Si se experimentan valores altos de BG frecuentemente.</string>
|
||||
<string name="basaltest_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#androidaps-settings</string>
|
||||
<string name="prerequisites_label">Tema: Requisitos previos</string>
|
||||
<string name="prerequisites_what">¿Qué necesito?</string>
|
||||
<string name="prerequisites_determinedcorrectprofile">Información de perfil validada (Basal, IC, ISF, DIA).</string>
|
||||
<string name="prerequisites_computer">Un ordenador para crear un APK.</string>
|
||||
<string name="prerequisites_phone">Un teléfono compatible.</string>
|
||||
<string name="prerequisites_car">Un Coche.</string>
|
||||
|
@ -50,12 +70,15 @@
|
|||
<string name="prerequisites_tidepoolaccount">Una cuenta de Tidepool.</string>
|
||||
<string name="prerequisites_googleaccount">Una cuenta de Google.</string>
|
||||
<string name="prerequisites_githubaccount">Una cuenta de Github.</string>
|
||||
<string name="prerequisites_beanandroiddeveloper">Experiencia en desarrollo de Android.</string>
|
||||
<string name="prerequisites_own670g">Una bomba MiniMed 670G.</string>
|
||||
<string name="prerequisites_hint1">https://androidaps.readthedocs.io/en/latest/EN/Module/module.html</string>
|
||||
<string name="prerequisites_smartwatch">Un Smartwatch.</string>
|
||||
<string name="prerequisites_supportedcgm">Un CGM soportado.</string>
|
||||
<string name="update_label">Tema: Actualización de AndroidAPS</string>
|
||||
<string name="whatistrue">¿Qué es verdad?</string>
|
||||
<string name="update_git">Tienes que tener instalado Git.</string>
|
||||
<string name="update_asap">Actualice tan pronto como se libere la nueva versión y prevea tener tiempo suficiente para hacerlo.</string>
|
||||
<string name="update_keys">Debes usar las mismas claves de firma.</string>
|
||||
<string name="update_neverupdate">Nunca actualice si el sistema está funcionando bien.</string>
|
||||
<string name="update_askfriend">Pregúntale a tu amigo por el nuevo APK.</string>
|
||||
|
@ -63,19 +86,27 @@
|
|||
<string name="troubleshooting_label">Tema: Resolución de problemas</string>
|
||||
<string name="troubleshooting_wheretoask">Donde buscar ayuda?</string>
|
||||
<string name="troubleshooting_fb">Únete al grupo AndroidAPS de Facebook.</string>
|
||||
<string name="troubleshooting_wiki">Lea la documentación de AndroidAPS.</string>
|
||||
<string name="troubleshooting_gitter">Visite AndroidAPS Gitter Room.</string>
|
||||
<string name="troubleshooting_googlesupport">Visite el soporte de Google AndroidAPS</string>
|
||||
<string name="troubleshooting_yourendo">Hable con su endocrinólogo.</string>
|
||||
<string name="troubleshooting_hint1">https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#troubleshooting</string>
|
||||
<string name="troubleshooting_hint2">https://www.facebook.com/groups/AndroidAPSUsers/</string>
|
||||
<string name="troubleshooting_hint3">https://gitter.im/MilosKozak/AndroidAPS</string>
|
||||
<string name="insulin_label">Tema: Plugins sobre Insulina</string>
|
||||
<string name="insulin_ultrarapid">¿Qué marca de insulina se puede utilizar con el plugin Ultra-Rapid-Oref?</string>
|
||||
<string name="insulin_fiasp">Fiasp®</string>
|
||||
<string name="insulin_novorapid">NovoRapid ®</string>
|
||||
<string name="insulin_humalog">Humalog®</string>
|
||||
<string name="insulin_actrapid">Actrapid®</string>
|
||||
<string name="insulin_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#insulin</string>
|
||||
<string name="sensitivity_label">Tema: Plugins de sensibilidad</string>
|
||||
<string name="sensitivity_which">¿Qué algoritmo de sensibilidad tiene un rango de tiempo configurable?</string>
|
||||
<string name="sensitivity_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html</string>
|
||||
<string name="sensitivityuam_which">¿Qué plugin de sensibilidad se debe utilizar para la funcionalidad UAM?</string>
|
||||
<string name="wrongcarbs_label">Tema: Errores en la entrada de carbohidratos</string>
|
||||
<string name="wrongcarbs_whattodo">¿Qué deberías hacer si has hecho una entrada incorrecta de carbohidratos?</string>
|
||||
<string name="wrongcarbs_treatmentstab">En los Tratamientos, eliminar la entrada incorrecta de carbohidratos. Introducir los nuevos valores de carbohidratos.</string>
|
||||
<string name="wrongcarbs_addfakeinsulin">Cómo agregar una insulina falsa utilizando la función llenado de cánula</string>
|
||||
<string name="extendedcarbs_label">Tema: Comida con Grasa y Proteína</string>
|
||||
<string name="extendedcarbs_handling">¿Qué hacer si su comida contiene una gran cantidad de grasas y /o proteínas?</string>
|
||||
|
@ -83,6 +114,7 @@
|
|||
<string name="extendedcarbs_add">Recalcular grasa y proteínas a los carbohidratos y añadirlo al cálculo del bolo.</string>
|
||||
<string name="extendedcarbs_useextendedbolus">Utilice el bolus extendido para cubrir grasas y proteínas.</string>
|
||||
<string name="extendedcarbs_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Extended-Carbs.html</string>
|
||||
<string name="nsclient_label">Tema: Supervisión remota</string>
|
||||
<string name="nsclient_howcanyou">¿Cómo puede supervisar la AAPS de su hijo de forma remota?</string>
|
||||
<string name="nsclient_nightscout">Cómo utilizar un sitio de \"Nightscout\".</string>
|
||||
<string name="nsclient_dexcomfollow">App Dexcom seguidora si está usando la aplicación original Dexcom (sólo valores BG).</string>
|
||||
|
@ -92,10 +124,17 @@
|
|||
<string name="nsclient_spikeiphone">App de Spike en el iPhone.</string>
|
||||
<string name="nsclient_hint1">https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html</string>
|
||||
<string name="isf_label">Tema: Factor de sensibilidad de la insulina</string>
|
||||
<string name="isf_increasingvalue">Los valores más altos de ISF llevan a una menor cantidad de insulina cuando AAPS corrige los valores altos de glucemia.</string>
|
||||
<string name="isf_decreasingvalue">Los valores más bajos de ISF llevan a una menor cantidad de insulina cuando AAPS corrige los valores altos de glucemia.</string>
|
||||
<string name="isf_noeffect">El cambio de los valores de ISF no afecta a la cantidad de insulina que se entrega cuando AAPS corrige para compensar los valores altos de glucemia.</string>
|
||||
<string name="isf_preferences">Tiene que especificar ISF en Preferencias.</string>
|
||||
<string name="isf_profile">El cambio del valor de ISF en el perfil es suficiente para aplicar el cambio.</string>
|
||||
<string name="isf_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-u</string>
|
||||
<string name="isf_hint2">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html</string>
|
||||
<string name="ic_label">Tema: El ratio IC</string>
|
||||
<string name="ic_increasingvalue">Los ratios IC más altos conducen a menos insulina entregada por una cantidad determinada de carbohidratos.</string>
|
||||
<string name="ic_decreasingvalue">Los ratios IC más bajos conducen a menos insulina entregada por una cantidad determinada de carbohidratos.</string>
|
||||
<string name="ic_noeffect">Si tiene 0 COB, cambiar la ratio IC conducirá a una cantidad distinta de insulina para corregir un valor de glucemia determinado.</string>
|
||||
<string name="ic_different">El IC será diferente si cuenta con una unidad de pan como 10g o 12g.</string>
|
||||
<string name="ic_meaning">IC significa: Cuántas unidades de pan están cubiertas por 1U de insulina.</string>
|
||||
<string name="ic_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u</string>
|
||||
|
@ -112,7 +151,12 @@
|
|||
<string name="profileswitch_targetlower">El objetivo será 10% más bajo.</string>
|
||||
<string name="profileswitch_targetbottom">Sólo el objetivo inferior será 10% inferior.</string>
|
||||
<string name="profileswitch_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profilewitch#profile-switch</string>
|
||||
<string name="profileswitchtime_iwant">Si se despierta 1h antes de lo habitual, ¿cómo debe notificar a AAPS el cambio en su horario?</string>
|
||||
<string name="profileswitchtime_1">Iniciar un cambio de perfil con un intervalo de tiempo de 1</string>
|
||||
<string name="profileswitchtime__1">Iniciar un cambio de perfil con un intervalo de tiempo de -1</string>
|
||||
<string name="profileswitchtime_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#timeshift</string>
|
||||
<string name="profileswitchtime_60">Iniciar un cambio de perfil con un intervalo de tiempo de 60</string>
|
||||
<string name="profileswitchtime__60">Iniciar un cambio de perfil con un intervalo de tiempo de -60</string>
|
||||
<string name="basalhelp_hint1">https://androidaps.readthedocs.io/en/latest/EN/Module/module.html#good-individual-dosage-algorithm-for-your-diabetes-therapy</string>
|
||||
<string name="basalhelp_label">Tema: Ayuda con tasas basales</string>
|
||||
<string name="basalhelp_where">A donde ir para obtener ayuda con tasa basal y demás.</string>
|
||||
|
|
|
@ -53,8 +53,16 @@
|
|||
<string name="notconnected">Sin conexión a Internet</string>
|
||||
<string name="failedretrievetime">Fallo tiempo de recuperación</string>
|
||||
<string name="requirementnotmet">No se cumplen los requisitos de objetivo</string>
|
||||
<plurals name="objective_days">
|
||||
<item quantity="one">%1$d día</item>
|
||||
<item quantity="other">%1$d días</item>
|
||||
</plurals>
|
||||
<plurals name="objective_hours">
|
||||
<item quantity="one">%1$d hora</item>
|
||||
<item quantity="other">%1$d horas</item>
|
||||
</plurals>
|
||||
<plurals name="objective_minutes">
|
||||
<item quantity="one">%1$d minuto</item>
|
||||
<item quantity="other">%1$d minutos</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
|
|
@ -5,9 +5,10 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<string name="treatmentssafety_title">Seguridad tratamientos</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Máximo Bolo permitido [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Máximos carbohidratos permitidos [g]</string>
|
||||
<string name="nav_preferences">Preferencias</string>
|
||||
<string name="nav_refreshtreatments">Actualizar los tratamientos desde NS</string>
|
||||
<string name="nav_resetdb">Restablecer las bases de datos</string>
|
||||
<string name="reset_db_confirm">¿Realmente quiere restablecer las bases de datos?</string>
|
||||
|
@ -97,6 +98,7 @@
|
|||
<string name="openapsma_profile_label">Perfil</string>
|
||||
<string name="openapsma_mealdata_label">Datos de comidas</string>
|
||||
<string name="result">Resultado</string>
|
||||
<string name="result_insulin_carbs">Resultado: %1$s %2$ss</string>
|
||||
<string name="openapsma_noglucosedata">No hay disponibles datos de glucosa</string>
|
||||
<string name="nochangerequested">Ninguna acción requerida</string>
|
||||
<string name="openapsma_request_label">Solicitud</string>
|
||||
|
@ -214,7 +216,7 @@
|
|||
<string name="overview_tempbasal_button">Basal Temporal</string>
|
||||
<string name="overview_extendedbolus_button">Bolo extendido</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Nightscout versión:</string>
|
||||
<string name="missing">Faltan</string>
|
||||
<string name="missing_carbs">Falta %1$dg</string>
|
||||
<string name="exported">Preferencias exportadas</string>
|
||||
<string name="export_to">Exportar ajustes a</string>
|
||||
<string name="import_from">Importar configuración de</string>
|
||||
|
@ -546,8 +548,8 @@
|
|||
<string name="show_statuslights_extended_summary">Habilita luces de estado extendidas para tiempo de cánula, tiempo de insulina, tiempo del sensor, reservorio y nivel de batería en pantalla de inicio.</string>
|
||||
<string name="statuslights_res_warning">Umbral de advertencia de nivel de reservorio [U]</string>
|
||||
<string name="statuslights_res_critical">Umbral crítico de nivel de reservorio [U]</string>
|
||||
<string name="statuslights_bat_warning">Umbral de advertencia de nivel de batería [%%]</string>
|
||||
<string name="statuslights_bat_critical">Umbral crítico de nivel de batería [%%]</string>
|
||||
<string name="statuslights_bat_warning">Umbral de advertencia de nivel de pila [%]</string>
|
||||
<string name="statuslights_bat_critical">Umbral crítico de nivel de batería [%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -1364,4 +1366,11 @@
|
|||
<string name="close">Cerrar</string>
|
||||
<string name="increasingmaxbasal">Aumentar el valor basal máximo porque el ajuste es inferior a tu base máxima en el perfil</string>
|
||||
<string name="smscommunicator_messagebody">El cuerpo del mensaje es inválido</string>
|
||||
<string name="format_bg_isf">%1$s ISF: %2$.1f</string>
|
||||
<string name="format_carbs_ic">%1$.0fg IC: %2$.1f</string>
|
||||
<string name="format_cob_ic">%1$.1fg IC: %2$.1f</string>
|
||||
<string name="format_percent">%1$d%%</string>
|
||||
<string name="boluswizard">Asistente Bolus</string>
|
||||
<string name="unit_minute_short">min</string>
|
||||
<string name="format_carbs">%1$dg</string>
|
||||
</resources>
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<!-- Pump Abstract -->
|
||||
<!-- Medtronic (MDT) - Base -->
|
||||
<!-- MDT Configuration -->
|
||||
|
|
|
@ -163,4 +163,7 @@
|
|||
<string name="basalhelp_diabetesteam">Votre équipe médicale</string>
|
||||
<string name="basalhelp_google">Google</string>
|
||||
<string name="basalhelp_facebook">Facebook</string>
|
||||
<string name="other_medication_label">Autres médicaments</string>
|
||||
<string name="other_medication_text">AAPS réduit le débit de basal pour augmenter le taux de sucre dans le sang. Les médicaments du groupe d\'inhibiteurs SGLT2 (gliflozins) peuvent empêcher l\'augmentation prévue de la glycémie et ainsi produire une carence dangereuse en insuline (DKA).
|
||||
\nLes noms de marque communes sont : Invokana®, Forxiga®, Jardiance®, Steglatro®, Suglat®, Apleway®, Deberza®, Synjardy®, Vokanamet®, Xigduo®.\n\nJe m\'engage à ne pas prendre ces médicaments lors de l\'utilisation d\'AAPS ou à désactiver la boucle avant de les utiliser.</string>
|
||||
</resources>
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<string name="treatmentssafety_title">Sécurités des traitements</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Maximum Bolus autorisé [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Maximum de Glucides autorisé [g]</string>
|
||||
|
@ -59,7 +58,7 @@
|
|||
<string name="description_sms_communicator">Commander à distance AndroidAPS en utilisant les commandes SMS.</string>
|
||||
<string name="nsprofileview_units_label">Unités</string>
|
||||
<string name="nsprofileview_dia_label">DAI</string>
|
||||
<string name="nsprofileview_ic_label">G:I (Ratio Glucides/Insuline, g/U)</string>
|
||||
<string name="nsprofileview_ic_label">G/I (g/U)</string>
|
||||
<string name="nsprofileview_isf_label">SI Sensibilité Insuline</string>
|
||||
<string name="nsprofileview_basal_label">Basal</string>
|
||||
<string name="nsprofileview_target_label">Cible</string>
|
||||
|
@ -99,6 +98,7 @@
|
|||
<string name="openapsma_profile_label">Profil</string>
|
||||
<string name="openapsma_mealdata_label">Données repas</string>
|
||||
<string name="result">Résultats</string>
|
||||
<string name="result_insulin_carbs">Résultat: %1$s %2$s</string>
|
||||
<string name="openapsma_noglucosedata">Pas de données glycémiques disponibles</string>
|
||||
<string name="nochangerequested">Pas de changement demandé</string>
|
||||
<string name="openapsma_request_label">Requête</string>
|
||||
|
@ -216,7 +216,7 @@
|
|||
<string name="overview_tempbasal_button">Basal Temporaire</string>
|
||||
<string name="overview_extendedbolus_button">Bolus étendu</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Version Nightscout :</string>
|
||||
<string name="missing">Manque</string>
|
||||
<string name="missing_carbs">Manquant %1$dg</string>
|
||||
<string name="exported">Préférences exportées</string>
|
||||
<string name="export_to">Exporter les paramètres au</string>
|
||||
<string name="import_from">Importer les paramètres depuis</string>
|
||||
|
@ -271,7 +271,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="glucosetype_finger">Doigt</string>
|
||||
<string name="glucosetype_sensor">Capteur</string>
|
||||
<string name="manual">Manuel</string>
|
||||
<string name="careportal_temporarytarget">Cible temporaire</string>
|
||||
<string name="careportal_temporarytarget">Cible temp.</string>
|
||||
<string name="careportal_temporarytargetcancel">Annulation Cible Temporaire</string>
|
||||
<string name="danarprofile">Paramètres du profil DanaR</string>
|
||||
<string name="danarprofile_dia">Durée d\'Action [h] </string>
|
||||
|
@ -426,13 +426,13 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="actions_shortname">ACT</string>
|
||||
<string name="configbuilder_shortname">CONF</string>
|
||||
<string name="loop_shortname">BOUCLE</string>
|
||||
<string name="simpleprofile_shortname">SP</string>
|
||||
<string name="simpleprofile_shortname">P.S.</string>
|
||||
<string name="oaps_shortname">OAPS</string>
|
||||
<string name="localprofile_shortname">LP</string>
|
||||
<string name="localprofile_shortname">P.L.</string>
|
||||
<string name="danarpump_shortname">DANA</string>
|
||||
<string name="overview_shortname">ACCUEIL</string>
|
||||
<string name="virtualpump_shortname">POMPEV</string>
|
||||
<string name="profileviewer_shortname">PROFIL NS</string>
|
||||
<string name="profileviewer_shortname">P.NS</string>
|
||||
<string name="treatments_shortname">TRAIT</string>
|
||||
<string name="careportal_shortname">CP</string>
|
||||
<string name="objectives_shortname">OBJ</string>
|
||||
|
@ -549,8 +549,8 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="show_statuslights_extended_summary">Activer les lumières d\'état prolongées pour AgeC, AgeI, AgeS, niveaux du réservoir et de batterie sur l\'écran d\'accueil.</string>
|
||||
<string name="statuslights_res_warning">Seuil d\'avertissement de niveau du réservoir [U]</string>
|
||||
<string name="statuslights_res_critical">Seuil critique de niveau du réservoir [U]</string>
|
||||
<string name="statuslights_bat_warning">Seuil d’avertissement du niveau de batterie [%%]</string>
|
||||
<string name="statuslights_bat_critical">Seuil critique du niveau de la batterie [%%]</string>
|
||||
<string name="statuslights_bat_warning">Seuil d’avertissement du niveau de batterie [%]</string>
|
||||
<string name="statuslights_bat_critical">Seuil critique du niveau de la batterie [%]</string>
|
||||
<string name="iob">IA</string>
|
||||
<string name="cob">GA</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -772,13 +772,13 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="combo_error_bolus_verification_failed">L\'administration de bolus et la vérification de l\'historique de la pompe ont échoué. Vérifiez la pompe manuellement. Si un bolus a été administré, il sera ajouté aux traitements au cours de la prochaine connexion avec la pompe.</string>
|
||||
<string name="combo_reservoir_level_insufficient_for_bolus">Pas assez d\'insuline dans le réservoir pour le bolus</string>
|
||||
<string name="extendedbolusdeliveryerror">Erreur administration bolus étendu</string>
|
||||
<string name="insightpump_shortname">Vue</string>
|
||||
<string name="insightpump_shortname">AC-I</string>
|
||||
<string name="ago">passé(e)s</string>
|
||||
<string name="format_hours">%1$.2f h</string>
|
||||
<string name="enablesmbalways">Activer en permanence les SMB</string>
|
||||
<string name="enablesmbalways_summary">Activer toujours SMB de manière autonome pour les bolus. Ceci est possible uniquement avec une source de glycémie ayant un très bon filtrage de données comme le G5</string>
|
||||
<string name="enablesmbaftercarbs">Activer SMB après ingestion de glucides</string>
|
||||
<string name="enablesmbaftercarbs_summary">Activer SMB pendant 6h après ingestion de glucides, même s’il y a 0 GI (Glucides Actifs). Ceci est possible uniquement avec une source de glycémie ayant un très bon filtrage de données comme le G5</string>
|
||||
<string name="enablesmbaftercarbs_summary">Activer SMB pendant 6h après ingestion de glucides, même s’il y a 0 GA (Glucides Actifs). Ceci est possible uniquement avec une source de glycémie ayant un très bon filtrage de données comme le G5</string>
|
||||
<string name="enablesmbwithcob">Activer SMB avec les glucides</string>
|
||||
<string name="enablesmbwithcob_summary">Activer SMB tant que des Glucides sont actifs.</string>
|
||||
<string name="enablesmbwithtemptarget">Activer SMB avec les cibles temporaires</string>
|
||||
|
@ -1237,6 +1237,8 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="medtronic_pump_battery_no">Non sélectionné (vue simple)</string>
|
||||
<string name="medtronic_pump_battery_alkaline">Alcaline (vue étendue)</string>
|
||||
<string name="medtronic_pump_battery_lithium">Lithium (vue étendue)</string>
|
||||
<string name="medtronic_pump_battery_nizn">NiZn (vue étendue)</string>
|
||||
<string name="medtronic_bolus_debugging">Débogage de Bolus/Traitements</string>
|
||||
<!-- RL BLE Scanning -->
|
||||
<string name="rileylink_scanner_scan_scan">SCANNER</string>
|
||||
<string name="rileylink_scanner_scan_stop">ARRÊT</string>
|
||||
|
@ -1353,7 +1355,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="sendsmsactionlabel">Envoyer SMS : %1$s</string>
|
||||
<string name="sendsmsactiondescription">Envoyer SMS à tous les numéros dans les préférences</string>
|
||||
<string name="sendsmsactiontext">Envoyer SMS avec du texte</string>
|
||||
<string name="insulinFromCob"><![CDATA[Glucides Actifs (GA) vs Insuline Active (IA) : <font color=\'%1$s\'>%2$+.2fU</font>]]></string>
|
||||
<string name="insulinFromCob"><![CDATA[GA vs IA : <font color=\'%1$s\'>%2$+.2fU</font>]]></string>
|
||||
<string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Contraintes de Bolus appliquées : %2$.2fU à %3$.2f</font>]]></string>
|
||||
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!!!! Absorption lente des glucides détectée : %2$d%% du temps. Vérifiez de nouveau votre calcul. Les GA (Glucides Actifs) peuvent être surestimés et alors plus d\'insuline pourrait être délivré !!!!!</font>]]></string>
|
||||
<string name="reservoirvalue">%1$.0f / %2$d U</string>
|
||||
|
@ -1370,6 +1372,10 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
|
|||
<string name="format_bg_isf">%1$s SI: %2$.1f</string>
|
||||
<string name="format_carbs_ic">%1$.0fg G/I: %2$.1f</string>
|
||||
<string name="format_cob_ic">%1$.1fg G/I: %2$.1f</string>
|
||||
<string name="format_percent">%1$d%%</string>
|
||||
<string name="boluswizard">Assistant Bolus</string>
|
||||
<string name="unit_minute_short">min</string>
|
||||
<string name="format_carbs">%1$dg</string>
|
||||
<string name="common_on">On</string>
|
||||
<string name="common_off">Off</string>
|
||||
</resources>
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<!-- Pump Abstract -->
|
||||
<!-- Medtronic (MDT) - Base -->
|
||||
<!-- MDT Configuration -->
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<!-- Pump Abstract -->
|
||||
<!-- Medtronic (MDT) - Base -->
|
||||
<!-- MDT Configuration -->
|
||||
|
|
|
@ -163,4 +163,7 @@
|
|||
<string name="basalhelp_diabetesteam">Il tuo team diabetologico</string>
|
||||
<string name="basalhelp_google">Google</string>
|
||||
<string name="basalhelp_facebook">Facebook</string>
|
||||
<string name="other_medication_label">Altri Medicinali</string>
|
||||
<string name="other_medication_text">AAPS riduce la velocità basale per aumentare la glicemia. Farmaci appartenenti al gruppo degli inibitori dell\'SGLT2 (gliflozine) possono ostacolare l\'aumento previsto della glicemia e, quindi, provocare una pericolosa carenza di insulina (DKA).
|
||||
\nI marchi più comuni sono: Invokana®, Forxiga®, Jardiance®, Steglatro®, Suglat®, Apleway®, Deberza®, Synjardy®, Vokanamet®, Xigduo®.\n\nCon ciò prometto che non prenderò tali farmaci durante l\'utilizzo di AAPS o disattiverò il loop prima di usare questi farmaci.</string>
|
||||
</resources>
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<string name="treatmentssafety_title">Sicurezza trattamenti</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Max bolo consentito [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Max carboidrati consentiti [g]</string>
|
||||
|
@ -99,6 +98,7 @@
|
|||
<string name="openapsma_profile_label">Profilo</string>
|
||||
<string name="openapsma_mealdata_label">Dati pasto</string>
|
||||
<string name="result">Esito</string>
|
||||
<string name="result_insulin_carbs">Risultato: %1$s %2$s</string>
|
||||
<string name="openapsma_noglucosedata">Dati glicemia non disponibili</string>
|
||||
<string name="nochangerequested">Nessun cambiamento richiesto</string>
|
||||
<string name="openapsma_request_label">Richiesta</string>
|
||||
|
@ -216,7 +216,7 @@
|
|||
<string name="overview_tempbasal_button">Basale temporanea</string>
|
||||
<string name="overview_extendedbolus_button">Bolo esteso</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Versione Nightscout:</string>
|
||||
<string name="missing">Mancante</string>
|
||||
<string name="missing_carbs">Mancanti %1$dg</string>
|
||||
<string name="exported">Preferenze esportate</string>
|
||||
<string name="export_to">Esporta impostazioni su</string>
|
||||
<string name="import_from">Importa impostazioni da</string>
|
||||
|
@ -548,8 +548,8 @@
|
|||
<string name="show_statuslights_extended_summary">Abilita indicatori di stato estesi per \"età\" cannula, insulina, sensore, serbatoio e livello batteria sulla schermata iniziale.</string>
|
||||
<string name="statuslights_res_warning">Soglia di avviso livello serbatoio [U]</string>
|
||||
<string name="statuslights_res_critical">Soglia critica livello serbatoio [U]</string>
|
||||
<string name="statuslights_bat_warning">Soglia di avviso livello batteria [%%]</string>
|
||||
<string name="statuslights_bat_critical">Soglia critica livello batteria [%%]</string>
|
||||
<string name="statuslights_bat_warning">Soglia livello batteria a cui prestare attenzione [%]</string>
|
||||
<string name="statuslights_bat_critical">Soglia livello batteria critico [%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -1236,6 +1236,8 @@
|
|||
<string name="medtronic_pump_battery_no">Non selezionato (Simple view)</string>
|
||||
<string name="medtronic_pump_battery_alkaline">Alcalina (Extended view)</string>
|
||||
<string name="medtronic_pump_battery_lithium">Litio (Extended view)</string>
|
||||
<string name="medtronic_pump_battery_nizn">NiZn (Extended view)</string>
|
||||
<string name="medtronic_bolus_debugging">Debug Bolo/Trattamenti</string>
|
||||
<!-- RL BLE Scanning -->
|
||||
<string name="rileylink_scanner_scan_scan">SCAN</string>
|
||||
<string name="rileylink_scanner_scan_stop">STOP</string>
|
||||
|
@ -1369,6 +1371,10 @@
|
|||
<string name="format_bg_isf">%1$s ISF: %2$.1f</string>
|
||||
<string name="format_carbs_ic">%1$.0fg IC: %2$.1f</string>
|
||||
<string name="format_cob_ic">%1$.1fg IC: %2$.1f</string>
|
||||
<string name="format_percent">%1$d%%</string>
|
||||
<string name="boluswizard">Bolus wizard</string>
|
||||
<string name="unit_minute_short">min</string>
|
||||
<string name="format_carbs">%1$dg</string>
|
||||
<string name="common_on">On</string>
|
||||
<string name="common_off">Off</string>
|
||||
</resources>
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<string name="nav_refreshtreatments">רענן טיפול מ-Nightscout</string>
|
||||
<string name="alert_dialog_storage_permission_text">בבקשה אתחל את הסמרטפון שלך או תרענן את אפלקצית AndroidAPS בהגדרות המערכת
|
||||
אחרת AndroidAPS לא יוכל לבצע רישום (חשוב לעקוב אחר ולוודא כי האלגוריתמים פועלים כראוי)!</string>
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<!-- Pump Abstract -->
|
||||
<!-- Medtronic (MDT) - Base -->
|
||||
<!-- MDT Configuration -->
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<string name="treatmentssafety_title">관리 안전설정</string>
|
||||
<string name="treatmentssafety_maxbolus_title">최대 허용 Bolus [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">최대 허용 탄수화물 [g]</string>
|
||||
|
@ -216,7 +215,6 @@
|
|||
<string name="overview_tempbasal_button">임시Basal</string>
|
||||
<string name="overview_extendedbolus_button">확장 Bolus</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Nightscout 버전:</string>
|
||||
<string name="missing">누락</string>
|
||||
<string name="exported">설정이 저장되었습니다</string>
|
||||
<string name="export_to">다음 위치에 설정을 저장하시겠습니까</string>
|
||||
<string name="import_from">다음 위치에서 설정을 불러오시겠습니까</string>
|
||||
|
@ -546,8 +544,6 @@
|
|||
<string name="show_statuslights">홈화면에 상태 표시등 보여주기</string>
|
||||
<string name="statuslights_res_warning">주사기량 경고 기준값[U]</string>
|
||||
<string name="statuslights_res_critical">주사기량 위험 기준값[U]</string>
|
||||
<string name="statuslights_bat_warning">배터리량 경고 기준값[%%]</string>
|
||||
<string name="statuslights_bat_critical">배터리량 위험 기준값[%%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">펌웨어</string>
|
||||
|
|
|
@ -163,4 +163,7 @@
|
|||
<string name="basalhelp_diabetesteam">Į Jūsų endokrinologą ir diabetologą</string>
|
||||
<string name="basalhelp_google">Google</string>
|
||||
<string name="basalhelp_facebook">Facebook</string>
|
||||
<string name="other_medication_label">Kiti vaistai</string>
|
||||
<string name="other_medication_text">AAPS sumažina valandinę bazę, siekiant padidinti glikemiją. Dėl vaistų iš SGLT2 inhibitorių grupės (Gliflozinas) naudojimo, numatomas glikemijos padidėjimas gali būti neteisingai parodytas ir tokiu būdu gali sukelti pavojingą insulino trūkumą (DKA - ketoacidozę).
|
||||
\n Prekių ženklų pavadinimai apima: „Invokana®“, „Forxiga®“, „Jardiance®“, „Steglatro®“, „Suglat®“, „Apleway®“, „Deberza®“, „Synjardy®“, „Vokanamet®“, „Xigduo®“. \n\n Pažadu nenaudoti tokių vaistų, naudojant AAPS, arba prieš vartodamas juos, atjungsiu ciklą.</string>
|
||||
</resources>
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<string name="treatmentssafety_title">Terapijos saugumas</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Maksimalus leistinas bolusas [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Maks. leistini angliavandeniai [g]</string>
|
||||
|
@ -65,7 +64,7 @@
|
|||
<string name="nsprofileview_target_label">Tikslas</string>
|
||||
<string name="noprofileset">Nenustatytas profilis</string>
|
||||
<string name="treatments_insulin_label_string">Insulinas:</string>
|
||||
<string name="treatments_carbs_label_string">Angliavandeniai:</string>
|
||||
<string name="treatments_carbs_label_string">AV:</string>
|
||||
<string name="treatments_iob_label_string">AIO:</string>
|
||||
<string name="sms_iob">AIO:</string>
|
||||
<string name="treatments_iobtotal_label_string">Visas AIO:</string>
|
||||
|
@ -76,10 +75,10 @@
|
|||
<string name="tempbasals_iob_label_string">AIO:</string>
|
||||
<string name="tempbasals_iobtotal_label_string">Visas AIO:</string>
|
||||
<string name="treatments_newtreatment_insulinamount_label">Insulinas</string>
|
||||
<string name="treatments_newtreatment_carbsamount_label">Angliavandeniai</string>
|
||||
<string name="treatments_newtreatment_carbsamount_label">AV</string>
|
||||
<string name="treatments_wizard_bg_label">KG</string>
|
||||
<string name="treatments_wizard_tt_label">LT</string>
|
||||
<string name="treatments_wizard_carbs_label">Angliavandeniai</string>
|
||||
<string name="treatments_wizard_carbs_label">AV</string>
|
||||
<string name="treatments_wizard_correction_label">Korekcija</string>
|
||||
<string name="insulin_unit_shortname">vv</string>
|
||||
<string name="treatments_wizard_bolusiob_label">Bolusų AIO</string>
|
||||
|
@ -99,6 +98,7 @@
|
|||
<string name="openapsma_profile_label">Profilis</string>
|
||||
<string name="openapsma_mealdata_label">Maisto duomenys</string>
|
||||
<string name="result">Rezultatas</string>
|
||||
<string name="result_insulin_carbs">Rezultatas: %1$s %2$s</string>
|
||||
<string name="openapsma_noglucosedata">Nėra gliukozės duomenų</string>
|
||||
<string name="nochangerequested">Pakeitimai nereikalingi</string>
|
||||
<string name="openapsma_request_label">Užklausa</string>
|
||||
|
@ -158,7 +158,7 @@
|
|||
<string name="sms_bolus">Bolusas:</string>
|
||||
<string name="basal">Valandinė bazė</string>
|
||||
<string name="sms_basal">Valandinė bazė:</string>
|
||||
<string name="carbs">Angliavandeniai</string>
|
||||
<string name="carbs">AV</string>
|
||||
<string name="changeyourinput">Pakeiskite įvestus duomenis!</string>
|
||||
<string name="setextendedbolusquestion">Nustatyti naują ištęstą bolusą:</string>
|
||||
<string name="configbuilder_bgsource">KG šaltinis</string>
|
||||
|
@ -216,7 +216,7 @@
|
|||
<string name="overview_tempbasal_button">Laikina bazė</string>
|
||||
<string name="overview_extendedbolus_button">Ištęstas bolusas</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Nightscout versija:</string>
|
||||
<string name="missing">Trūksta</string>
|
||||
<string name="missing_carbs">Trūksta %1$dg</string>
|
||||
<string name="exported">Nustatymai eksportuoti</string>
|
||||
<string name="export_to">Eksportuoti nustatymus</string>
|
||||
<string name="import_from">Importuoti nustatymus iš</string>
|
||||
|
@ -341,7 +341,7 @@
|
|||
<string name="quickwizard">Greitasis patarėjas</string>
|
||||
<string name="quickwizardsettings">Greitojo patarėjo nustatymai</string>
|
||||
<string name="overview_editquickwizard_buttontext">Mygtuko tekstas:</string>
|
||||
<string name="overview_editquickwizard_carbs">Angliavandeniai:</string>
|
||||
<string name="overview_editquickwizard_carbs">AV:</string>
|
||||
<string name="overview_editquickwizard_valid">Galioja:</string>
|
||||
<string name="overview_editquickwizardlistactivity_add">Pridėti</string>
|
||||
<string name="overview_quickwizard_item_edit_button">Redaguoti</string>
|
||||
|
@ -548,8 +548,8 @@
|
|||
<string name="show_statuslights_extended_summary">Pradžios ekrane rodyti papildomus šviesos indikatorius adatos, insulino, sensoriaus naudojimo trukmei bei baterijos įkrovimo lygiui.</string>
|
||||
<string name="statuslights_res_warning">Įspėjimo apie žemą rezervuaro lygį riba [U]</string>
|
||||
<string name="statuslights_res_critical">Įspėjimo apie kritiškai žemą rezervuaro lygį riba [U]</string>
|
||||
<string name="statuslights_bat_warning">Įspėjimo apie žemą baterijos įkrovimo lygį riba [%%]</string>
|
||||
<string name="statuslights_bat_critical">Įspėjimo apie kritiškai žemą baterijos įkrovimo lygį riba [%%]</string>
|
||||
<string name="statuslights_bat_warning">Įspėjimo apie žemą baterijos įkrovimo lygį riba [%]</string>
|
||||
<string name="statuslights_bat_critical">Įspėjimo apie kritiškai žemą baterijos įkrovimo lygį riba [%]</string>
|
||||
<string name="iob">AIO</string>
|
||||
<string name="cob">AAO</string>
|
||||
<string name="virtualpump_firmware_label">Programinė įranga</string>
|
||||
|
@ -787,7 +787,7 @@
|
|||
<string name="let_temp_basal_run">Paleisti laikinąją bazę</string>
|
||||
<string name="mute">Nutildyti</string>
|
||||
<string name="overview_insulin_label">Insulinas</string>
|
||||
<string name="overview_carbs_label">Angliavandeniai</string>
|
||||
<string name="overview_carbs_label">AV</string>
|
||||
<string name="overview_buttons_selection">Mygtukai</string>
|
||||
<string name="show_calibration_button_summary">Siunčia kalibravimą į xDrip+ arba atidaro G5 kalibravimo dialogą</string>
|
||||
<string name="show_cgm_button_summary">Atidaro xDrip+, o mygtukas ATGAL gražina į AAPS</string>
|
||||
|
@ -1369,6 +1369,8 @@
|
|||
<string name="format_bg_isf">%1$s JIF: %2$.1f</string>
|
||||
<string name="format_carbs_ic">%1$.0fg IA: %2$.1f</string>
|
||||
<string name="format_cob_ic">%1$.1fg IA: %2$.1f</string>
|
||||
<string name="format_percent">%1$d%%</string>
|
||||
<string name="boluswizard">Boluso patarėjas</string>
|
||||
<string name="unit_minute_short">min.</string>
|
||||
<string name="format_carbs">%1$dg</string>
|
||||
</resources>
|
||||
|
|
|
@ -116,6 +116,7 @@
|
|||
<string name="extendedcarbs_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Usage/Extended-Carbs.html</string>
|
||||
<string name="nsclient_label">Onderwerp: volgen op afstand</string>
|
||||
<string name="nsclient_howcanyou">Hoe kun je AAPS van je kind op afstand volgen?</string>
|
||||
<string name="nsclient_nightscout">Met behulp van een Nightscout site.</string>
|
||||
<string name="nsclient_dexcomfollow">Dexcom volgapp als u de originele Dexcom app gebruikt (alleen BG).</string>
|
||||
<string name="nsclient_dexcomfollowxdrip">Dexcom Volg-app als u gebruik maakt van de xDrip app.</string>
|
||||
<string name="nsclient_xdripfollower">xDrip app in volg-modus.</string>
|
||||
|
@ -130,4 +131,39 @@
|
|||
<string name="isf_profile">Het wijzigen van de ISF-waarde in uw profiel is voldoende om de wijziging toe te passen.</string>
|
||||
<string name="isf_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Getting-Started/FAQ.html#insuline-gevoeligheids-factor-insulin-sensitivity-factor-ISF-mmol-l-E-of-mg-dl-E</string>
|
||||
<string name="isf_hint2">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Usage/Profielen.html</string>
|
||||
<string name="ic_label">Onderwerp: De KH ratio</string>
|
||||
<string name="ic_increasingvalue">Hogere KH ratios leiden tot minder insuline afgifte voor een bepaalde hoeveelheid koolhydraten.</string>
|
||||
<string name="ic_decreasingvalue">Lagere KH ratios leiden tot minder insuline afgifte voor een bepaalde hoeveelheid koolhydraten.</string>
|
||||
<string name="ic_noeffect">Als je 0 COB hebt zal het veranderen van KH ratio leiden tot een andere hoeveelheid insuline om jouw BG te corrigeren.</string>
|
||||
<string name="ic_different">KH ratio zal anders zijn als je brood-eenheid telt als 10g of 12g.</string>
|
||||
<string name="ic_meaning">KH ratio betekent: Hoeveel brood-eenheden gebruik je voor 1U insuline.</string>
|
||||
<string name="ic_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Getting-Started/FAQ.html#Koolhydraat-ratio-KH-g-E</string>
|
||||
<string name="profileswitch_label">Onderwerp: Profiel wissels</string>
|
||||
<string name="profileswitch_pctwillchange"> Bij het opgeven van 90% in je profiel wissel…</string>
|
||||
<string name="profileswitch_basalhigher">Basalen zullen 10% hoger zijn.</string>
|
||||
<string name="profileswitch_basallower">Basalen zullen 10% lager zijn.</string>
|
||||
<string name="profileswitch_ichigher">De KH ratio wordt 10% hoger.</string>
|
||||
<string name="profileswitch_iclower">De KH ratio wordt 10% hoger.</string>
|
||||
<string name="profileswitch_isfhigher">ISF-waarde wordt 10% hoger.</string>
|
||||
<string name="profileswitch_isflower">ISF-waarde wordt 10% lager.</string>
|
||||
<string name="profileswitch_overall">In totaal zul je ongeveer 10% minder insuline krijgen.</string>
|
||||
<string name="profileswitch_targethigher">Doel zal 10% hoger zijn.</string>
|
||||
<string name="profileswitch_targetlower">Doel zal 10% lager zijn.</string>
|
||||
<string name="profileswitch_targetbottom">Alleen de onderste target zal 10% lager zijn.</string>
|
||||
<string name="profileswitch_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Usage/Profiles.html?highlight=profilewitch#profiel-wissel</string>
|
||||
<string name="profileswitchtime_iwant">Als u 1 uur eerder dan normaal wakker wordt, hoe moet u dan AAPS van deze wijziging in uw schema op de hoogte stellen?</string>
|
||||
<string name="profileswitchtime_1">Voer een profielwijziging uit met een tijdverschuiving van 1</string>
|
||||
<string name="profileswitchtime__1">Voer een profiel wissel uit met een tijdverschuiving van -1</string>
|
||||
<string name="profileswitchtime_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Usage/Profiles.html?highlight=profilewitch#tijd-verschuiving</string>
|
||||
<string name="profileswitchtime_60">Voer een profiel wissel uit met een tijdverschuiving van 60</string>
|
||||
<string name="profileswitchtime__60">Voer een profiel wissel uit met een tijdverschuiving van -60</string>
|
||||
<string name="basalhelp_hint1">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Module/module.html#goed-individueel-doserings-algoritme-voor-jouw-diabetesbehandeling</string>
|
||||
<string name="basalhelp_label">Onderwerp: Hulp met basaal waarden</string>
|
||||
<string name="basalhelp_where">Waar je terecht kunt voor hulp met basaal waarden etc.</string>
|
||||
<string name="basalhelp_diabetesteam">Jouw behandelaars</string>
|
||||
<string name="basalhelp_google">Google</string>
|
||||
<string name="basalhelp_facebook">Facebook</string>
|
||||
<string name="other_medication_label">Andere medicatie</string>
|
||||
<string name="other_medication_text">AAPS vermindert BR om bloedsuiker te verhogen. Geneesmiddelen van de groep SGLT2-remmers (gliflozins) kunnen de verwachte toename in BG voorkomen en kunnen dus een gevaarlijk insulinekort (DKA) veroorzaken.
|
||||
\nGemeenschappelijke merknamen zijn: Invokana ®, Forxiga ®, Jardiance ®, Steglatro ®, Suglat ®, Apleway ®, Deberza ®, Synjardy ®, Vokanamet ®, Xigduo ®.\n\nIk beloof hierbij dat ik dergelijke geneesmiddelen niet zal nemen wanneer ik AAPS gebruik of de lus zal deactiveren voordat ik deze medicijnen gebruik.</string>
|
||||
</resources>
|
||||
|
|
|
@ -51,4 +51,18 @@
|
|||
<string name="useaction_hint">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Getting-Started/Screenshots.html#configurator</string>
|
||||
<string name="usescale_hint">https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Getting-Started/Screenshots.html#overzicht-scherm</string>
|
||||
<string name="notconnected">Niet verbonden met het internet</string>
|
||||
<string name="failedretrievetime">Ophalen tijd mislukt</string>
|
||||
<string name="requirementnotmet">Vereisten van doel niet behaald</string>
|
||||
<plurals name="objective_days">
|
||||
<item quantity="one">%1$d dag</item>
|
||||
<item quantity="other">%1$d dagen</item>
|
||||
</plurals>
|
||||
<plurals name="objective_hours">
|
||||
<item quantity="one">%1$d uur</item>
|
||||
<item quantity="other">%1$d uren</item>
|
||||
</plurals>
|
||||
<plurals name="objective_minutes">
|
||||
<item quantity="one">%1$d minuut</item>
|
||||
<item quantity="other">%1$d minuten</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<string name="treatmentssafety_title">Behandelingen veiligheid</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Max toegestane bolus [E]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Max toegestane koolhydraten [g]</string>
|
||||
|
@ -99,6 +98,7 @@
|
|||
<string name="openapsma_profile_label">Profiel</string>
|
||||
<string name="openapsma_mealdata_label">Maaltijd gegevens</string>
|
||||
<string name="result">Resultaat</string>
|
||||
<string name="result_insulin_carbs">Resultaat: %1$s %2$s</string>
|
||||
<string name="openapsma_noglucosedata">Geen BG gegevens beschikbaar</string>
|
||||
<string name="nochangerequested">Geen aanpassing noodzakelijk</string>
|
||||
<string name="openapsma_request_label">Voorstel</string>
|
||||
|
@ -216,7 +216,7 @@
|
|||
<string name="overview_tempbasal_button">Tijdelijk basaal</string>
|
||||
<string name="overview_extendedbolus_button">Vertraagde bolus</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Nightscout versie:</string>
|
||||
<string name="missing">Te weinig</string>
|
||||
<string name="missing_carbs">Ontbrekend %1$dg</string>
|
||||
<string name="exported">Voorkeuren geëxporteerd</string>
|
||||
<string name="export_to">Exporteer instellingen naar</string>
|
||||
<string name="import_from">Importeer instellingen van</string>
|
||||
|
@ -544,10 +544,12 @@
|
|||
<string name="enablesuperbolus">Activeer superbolus in de wizard</string>
|
||||
<string name="enablesuperbolus_summary">Activeer de superbolus functie in de wizard. Activeer deze niet tot je begrijpt wat dit doet. OVERDOSIS IS MOGELIJK BIJ BLINDELINGS GEBRUIK!</string>
|
||||
<string name="show_statuslights">Toon statusindicatoren op startscherm</string>
|
||||
<string name="show_statuslights_extended">Toon uitgebreide statusindicatoren op overzicht scherm</string>
|
||||
<string name="show_statuslights_extended_summary">Statusindicatoren inschakelen voor cage, iage, sage, reservoir en batterijniveau op het overzicht scherm.</string>
|
||||
<string name="statuslights_res_warning">Drempel waarschuwing reservoir niveau [E]</string>
|
||||
<string name="statuslights_res_critical">Drempel alarm reservoir niveau [E]</string>
|
||||
<string name="statuslights_bat_warning">Drempel waarschuwing batterij niveau [%%]</string>
|
||||
<string name="statuslights_bat_critical">Drempel alarm voor batterij niveau [%%]</string>
|
||||
<string name="statuslights_bat_warning">Drempel waarschuwing batterij niveau [%]</string>
|
||||
<string name="statuslights_bat_critical">Drempel alarm batterij niveau [%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -617,6 +619,7 @@
|
|||
<string name="mdtp_cancel">Afbreken</string>
|
||||
<string name="notloadedplugins">Niet alle profielen zijn geladen!</string>
|
||||
<string name="valuesnotstored">Waarden niet opgeslagen!</string>
|
||||
<string name="ns_localbroadcasts">Schakel broadcasts in naar andere apps (zoals xDrip). Schakel niet in als je NSClient of meer dan één installatie van AAPS hebt geïnstalleerd!</string>
|
||||
<string name="ns_localbroadcasts_title">Activeer locaal delen.</string>
|
||||
<string name="careportal_activity_label">ACTIVITEIT & FEEDBACK</string>
|
||||
<string name="careportal_carbsandbolus_label">KOOLHYDRATEN & BOLUS</string>
|
||||
|
@ -1271,6 +1274,7 @@
|
|||
<string name="rileylink_state_not_started">Niet gestart</string>
|
||||
<string name="rileylink_state_rl_init">RileyLink initialiseren…</string>
|
||||
<string name="rileylink_state_rl_error">RileyLink fout</string>
|
||||
<string name="rileylink_state_pc_tune_up">Tuning van RileyLink en Pomp</string>
|
||||
<string name="rileylink_state_pc_error">Probleem tijdens verbinden met de pomp</string>
|
||||
<string name="rileylink_state_connected">Verbonden</string>
|
||||
<!-- RL Errors -->
|
||||
|
@ -1340,6 +1344,15 @@
|
|||
<string name="medtronic_cmd_desc_get_tbr">Ophalen Tijdelijke Basaal</string>
|
||||
<string name="medtronic_cmd_desc_set_tbr">Instellen Tijdelijke Basaal</string>
|
||||
<string name="medtronic_cmd_desc_set_bolus">Instellen Bolus</string>
|
||||
<string name="profilename">Wijzig profiel naar</string>
|
||||
<string name="changengetoprofilename">Wijzig profiel in %1$s</string>
|
||||
<string name="automation_trigger_pump_last_connection_label">Laatste verbinding met pomp</string>
|
||||
<string name="automation_trigger_pump_last_connection_description">Laatste verbinding met pomp [minuten geleden]</string>
|
||||
<string name="automation_trigger_pump_last_connection_compared">Laatste verbinding met pomp %1$s %2$s min geleden</string>
|
||||
<string name="sendsmsactionlabel">Stuur SMS: %1$s</string>
|
||||
<string name="sendsmsactiondescription">Stuur SMS naar alle nummers in voorkeuren</string>
|
||||
<string name="sendsmsactiontext">Stuur SMS met tekst</string>
|
||||
<string name="insulinFromCob"><![CDATA[COB vs IOB: <font color=\'%1$s\'>%2$+.2fU</font>]]></string>
|
||||
<string name="bolusconstraintappliedwarning"><![CDATA[<font color=\'%1$s\'>Bolus limiet bereikt: %2$.2fU naar %3$.2fU</font>]]></string>
|
||||
<string name="slowabsorptiondetected"><![CDATA[<font color=\'%1$s\'>!!! Trage koolhydraat absorptie gedetecteerd: %2$d%% van de tijd. Controleer je berekening nogmaals. COB kan zijn overschat waardoor er misschien meer insuline wordt afgegeven!!!</font> zijn]]></string>
|
||||
<string name="reservoirvalue">%1$.0f / %2$d E</string>
|
||||
|
@ -1347,4 +1360,17 @@
|
|||
<string name="deliverpartofboluswizard">Bolus wizard voert de berekening uit maar alleen dit deel van berekende insuline wordt geleverd. Handig in combinatie met het SMB algoritme.</string>
|
||||
<string name="loading">Bezig met laden...</string>
|
||||
<string name="snooze">Sluimeren</string>
|
||||
<string name="time_range">Tijdsinterval</string>
|
||||
<string name="timerange_value">Tijd ligt tussen %1$s en %2$s</string>
|
||||
<string name="between">Tussen </string>
|
||||
<string name="close">Sluiten</string>
|
||||
<string name="increasingmaxbasal">Verhogen van de maximale basaal waarde omdat de instelling lager is dan het maximum in het profiel</string>
|
||||
<string name="smscommunicator_messagebody">Ongeldige inhoud van het bericht</string>
|
||||
<string name="format_bg_isf">%1$s ISF: %2$.1f</string>
|
||||
<string name="format_carbs_ic">%1$.0fg KH ratio: %2$.1f</string>
|
||||
<string name="format_cob_ic">%1$.1fg KH ratio: %2$.1f</string>
|
||||
<string name="format_percent">%1$d%%</string>
|
||||
<string name="boluswizard">Bolus wizard</string>
|
||||
<string name="unit_minute_short">min</string>
|
||||
<string name="format_carbs">%1$dg</string>
|
||||
</resources>
|
||||
|
|
|
@ -31,6 +31,56 @@
|
|||
<string name="objectives_doexportafterchange">Wyeksportuj je po wprowadzeniu zmian.</string>
|
||||
<string name="objectives_doexportafterobjective">Wyeksportuj je po wykonaniu zadania.</string>
|
||||
<string name="objectives_doexportafterfirtssettings">Wyeksportuj je po zakończeniu wstępnych ustawień.</string>
|
||||
<string name="objectives_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/ExportImportSettings.html</string>
|
||||
<string name="objectives_hint2">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#what-emergency-equipment-is-recommended-to-take-with-me</string>
|
||||
<string name="noisycgm_label">Temat: Szumy w odczytach z CGM</string>
|
||||
<string name="noisycgm_whattodo">Co powinno być wykonane gdy dane CGM są zaszumione?</string>
|
||||
<string name="nothing">Nic, AAPS sobie z tym poradzi.</string>
|
||||
<string name="noisycgm_pause">Wyłącz pętlę, by unilknąć przedawkowania insuliny.</string>
|
||||
<string name="noisycgm_replacesensor">Wymień czujnik CGM.</string>
|
||||
<string name="noisycgm_turnoffphone">Wyłącz telefon.</string>
|
||||
<string name="noisycgm_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Smoothing-Blood-Glucose-Data-in-xDrip.html#smoothing-blood-glucose-data</string>
|
||||
<string name="noisycgm_checksmoothing">Sprawdź, czy Twój CGM wygładza dane poziomu cukru.</string>
|
||||
<string name="exercise_label">Temat: Ćwiczenia</string>
|
||||
<string name="exercise_whattodo">Jak możesz pomóc aby system poradził sobie z ćwiczeniami?</string>
|
||||
<string name="exercise_setactivitytt">Korzystanie z funkcji tymczasowego docelowego poziomu cukru.</string>
|
||||
<string name="exercise_switchprofilebelow100">Wykonaj zmianę profilu poniżej 100%.</string>
|
||||
<string name="exercise_switchprofileabove100">Wykonaj zmianę profilu powyżej 100%.</string>
|
||||
<string name="exercise_stoploop">Zatrzymaj pętlę.</string>
|
||||
<string name="exercise_doitbeforestart">Ustaw cel tymczasowy Ćwiczenia przed rozpoczęciem ćwiczeń.</string>
|
||||
<string name="exercise_afterstart">Ustawienie celu tymczasowego Ćwiczenia po rozpoczęciu ćwiczeń prowadzi do gorszych wynikow poziomu niż przy jego wcześniejszym rozpoczęciu.</string>
|
||||
<string name="exercise_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#activity-temp-target</string>
|
||||
<string name="suspendloop_label">Temat: Wyłączona/Zawieszona pętla</string>
|
||||
<string name="suspendloop_doigetinsulin">Czy otrzymuję insulinę, gdy pętla jest wyłączona/zawieszona?</string>
|
||||
<string name="suspendloop_yes">Tak, insulina bazowa nadal jest dostarczana.</string>
|
||||
<string name="suspendloop_no">Nie, podawanie insuliny jest zatrzymane.</string>
|
||||
<string name="basaltest_label">Temat: Testowanie Bazy, ISF i IC</string>
|
||||
<string name="basaltest_when">Kiedy powinienem zweryfikować wartości bazy, ISF i IC?</string>
|
||||
<string name="basaltest_beforeloop">Zanim zacznę używać pętli.</string>
|
||||
<string name="basaltest_havingregularhypo">Gdy często występują niskie poziomy cukru.</string>
|
||||
<string name="basaltest_havingregularhyper">Gdy często występują wysokie poziomy cukru.</string>
|
||||
<string name="basaltest_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#androidaps-settings</string>
|
||||
<string name="prerequisites_label">Temat: Wymagania wstępne</string>
|
||||
<string name="prerequisites_what">Czego potrzebuję?</string>
|
||||
<string name="prerequisites_determinedcorrectprofile">Sprawdzone informacje profilowe (Basal, IC, ISF, DIA).</string>
|
||||
<string name="prerequisites_computer">Komputer do utworzenia pliku APK.</string>
|
||||
<string name="prerequisites_phone">Obsługiwany telefon.</string>
|
||||
<string name="prerequisites_car">Samochód.</string>
|
||||
<string name="prerequisites_nightscout">Nightscout, aby przejść przez zadania.</string>
|
||||
<string name="prerequisites_tidepoolaccount">Konto Tidepool.</string>
|
||||
<string name="prerequisites_googleaccount">Konto Google.</string>
|
||||
<string name="prerequisites_githubaccount">Konto Github.</string>
|
||||
<string name="prerequisites_beanandroiddeveloper">Doświadczenie w rozwoju systemu Android.</string>
|
||||
<string name="prerequisites_own670g">Pompa MiniMed 670G.</string>
|
||||
<string name="prerequisites_hint1">https://androidaps.readthedocs.io/en/latest/EN/Module/module.html</string>
|
||||
<string name="prerequisites_smartwatch">Smartwatch.</string>
|
||||
<string name="prerequisites_supportedcgm">Obsługiwany CGM.</string>
|
||||
<string name="update_label">Temat: Aktualizacja AndroidAPS</string>
|
||||
<string name="whatistrue">Co jest prawdą?</string>
|
||||
<string name="update_git">Musisz mieć zainstalowany Git.</string>
|
||||
<string name="update_asap">Aktualizuj tak szybko jak nowe wersja zostanie opublikowana i znajdziesz czas do jej wprowadzenia.</string>
|
||||
<string name="update_keys">Należy używać tych samych kluczy do podpisywania.</string>
|
||||
<string name="update_neverupdate">Nigdy nie aktualizuj, jeśli system działa dobrze.</string>
|
||||
<string name="update_askfriend">Poproś swojego przyjaciela o nowy plik APK.</string>
|
||||
<string name="update_hint1">https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#update-to-a-new-version-or-branch</string>
|
||||
<string name="troubleshooting_label">Temat: Rozwiązywanie problemów</string>
|
||||
|
@ -81,4 +131,39 @@
|
|||
<string name="isf_profile">Zmiana wartości ISF w profilu wystarczy, aby zastosować zmianę.</string>
|
||||
<string name="isf_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-u</string>
|
||||
<string name="isf_hint2">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html</string>
|
||||
<string name="ic_label">Temat: Wartość przelicznika IC</string>
|
||||
<string name="ic_increasingvalue">Wyższe wartości ICprowadzą do mniejszej ilości insuliny dostarczonej do podanej ilości węglowodanów.</string>
|
||||
<string name="ic_decreasingvalue">Niższe wartości IC prowadzą do mniejszej ilości insuliny podanej do wprowadzonej ilości węglowodanów.</string>
|
||||
<string name="ic_noeffect">Załóżmy, że masz 0 COB. Zmiana IC doprowadzi do podania innej ilości insuliny w celu skorygowania twojej wartości BG.</string>
|
||||
<string name="ic_different">IC będzie inny, jeśli policzysz jednostkę chleba jako 10 g lub 12 g.</string>
|
||||
<string name="ic_meaning">Znaczenie IC to: Ile jednostek chleba jest pokrytych 1U insuliny.</string>
|
||||
<string name="ic_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u</string>
|
||||
<string name="profileswitch_label">Temat: Przełączanie profili</string>
|
||||
<string name="profileswitch_pctwillchange"> Jeśli podasz 90% podczas zmiany profilu… </string>
|
||||
<string name="profileswitch_basalhigher">Baza będzie o 10% wyższa.</string>
|
||||
<string name="profileswitch_basallower">Baza będzie o 10% niższa.</string>
|
||||
<string name="profileswitch_ichigher">Wartość IC będzie o 10% wyższa.</string>
|
||||
<string name="profileswitch_iclower">Wartość IC będzie o 10% niższa.</string>
|
||||
<string name="profileswitch_isfhigher">Wartość ISF będzie o 10% wyższa.</string>
|
||||
<string name="profileswitch_isflower">Wartość ISF będzie o 10% niższa.</string>
|
||||
<string name="profileswitch_overall">Otrzymasz w sumie około 10% mniej insuliny.</string>
|
||||
<string name="profileswitch_targethigher">Cel będzie wyższy o 10%.</string>
|
||||
<string name="profileswitch_targetlower">Cel będzie o 10% niższy.</string>
|
||||
<string name="profileswitch_targetbottom">Tylko dolny cel będzie o 10% niższy.</string>
|
||||
<string name="profileswitch_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#profile-switch</string>
|
||||
<string name="profileswitchtime_iwant">Jeśli obudzisz się o 1h wcześniej niż zwykle, to jak należy powiadomić AAPS o zmianie w harmonogramie?</string>
|
||||
<string name="profileswitchtime_1">Wprowadź zmianę profilu ze zmianą czasu równą 1</string>
|
||||
<string name="profileswitchtime__1">Wprowadź zmianę profilu ze zmianą czasu równą -1</string>
|
||||
<string name="profileswitchtime_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#timeshift</string>
|
||||
<string name="profileswitchtime_60">Wprowadź zmianę profilu ze zmianą czasu równą 60</string>
|
||||
<string name="profileswitchtime__60">Wprowadź zmianę profilu ze zmianą czasu równą -60</string>
|
||||
<string name="basalhelp_hint1">https://androidaps.readthedocs.io/en/latest/EN/Module/module.html#good-individual-dosage-algorithm-for-your-diabetes-therapy</string>
|
||||
<string name="basalhelp_label">Temat: Pomoc z dawkami podstawowymi (bazą)</string>
|
||||
<string name="basalhelp_where">Gdzie uzyskać pomoc w sprawie dawek podstawowych itp.</string>
|
||||
<string name="basalhelp_diabetesteam">Twój zespół cukrzycowy</string>
|
||||
<string name="basalhelp_google">Google</string>
|
||||
<string name="basalhelp_facebook">Facebook</string>
|
||||
<string name="other_medication_label">Inne leki</string>
|
||||
<string name="other_medication_text">AAPS zmniejsza BR w celu podniesienia poziomu cukru we krwi. Leki z grupy inhibitorów SGLT2 (gliflozyny) mogą zapobiegać spodziewanemu wzrostowi stężenia glukozy we krwi, a zatem mogą powodować niebezpieczny niedobór insuliny (DKA).
|
||||
\nWspólne nazwy marek to: Invokana®, Forxiga®, Jardiance®, Steglatro®, Suglat®, Apleway®, Deberza®, Synjardy®, Vokanamet®, Xigduo®. \n\n Obiecuję, że nie będę brać takich leków podczas używania AAPS lub dezaktywuję pętlę przed użyciem tych leków.</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,6 +1,24 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--Generated by crowdin.com-->
|
||||
<resources>
|
||||
<string name="objectives_button_back">Wstecz</string>
|
||||
<string name="objectives_button_start">Start</string>
|
||||
<string name="objectives_button_verify">Zweryfikuj</string>
|
||||
<string name="nth_objective">%1$d. Zadanie</string>
|
||||
<string name="objectivenotstarted">Zadanie %1$d nierozpoczęte</string>
|
||||
<string name="objectivenotfinished">Zadanie %1$d nieukończone</string>
|
||||
<string name="objectives_0_objective">Konfiguracja wizualizacji i monitorowania, analiza dawek bazowych i współczynników</string>
|
||||
<string name="objectives_0_gate">Sprawdź czy BG (pomiary cukru) są dostępne w Nightscout, i czy przesyłane są dane pompy insulinowej</string>
|
||||
<string name="objectives_openloop_objective">Rozpoczęcie w trybie otwartej pętli (open loop)</string>
|
||||
<string name="objectives_openloop_gate">Uruchom w trybie otwartej pętli przez kilka dni i ręcznie potwierdzaj kilka zmian dawki tymczasowej. Ustaw i używaj celów tymczasowych i domyślnych celów tymczasowych (np. Ćwiczenia lub Hipo)</string>
|
||||
<string name="objectives_maxbasal_objective">Zrozumienie działania otwartej pętli, wraz z jej rekomendacjami dawek tymczasowych</string>
|
||||
<string name="objectives_maxbasal_gate">Na podstawie tych doświadczeń zdecyduj jaka powinna być ustawiona maksymalna baza, i wprowadź ją w pompie i w ustawieniach AAPS</string>
|
||||
<string name="objectives_maxiobzero_objective">Rozpoczęcie zamknięcia pętli z zawieszeniem podawania bazy przy niskim poziomie cukru</string>
|
||||
<string name="objectives_maxiobzero_gate">Używaj przez kilka dni zamkniętej pętli (Closed Loop) z max IOB = 0 bez zbyt wielu incydentów niedocukrzeń</string>
|
||||
<string name="objectives_maxiob_objective">Dostrajanie zamkniętej pętli, podniesienie wartości max IOB powyżej 0 i stopniowe obniżanie docelowego poziomu cukru (BG target)</string>
|
||||
<string name="objectives_maxiob_gate">Używaj pętli przez kilka dni i przynajmniej jedną noc bez żadnego alarmu niskiego poziomu, przed obniżeniem docelowego poziomu cukru</string>
|
||||
<string name="objectives_autosens_objective">Dostosuj bazę i wartości parametrów jeśli jest to potrzebne, i wtedy uruchom funkcję autosens</string>
|
||||
<string name="objectives_autosens_gate">1 tydzień sukcesu w działaniu pętli w ciągu dnia z regularnym wprowadzaniem spożywanych węglowodanów</string>
|
||||
<string name="objectives_ama_objective">Włączanie dodatkowych funkcji do użytku, jak AMA</string>
|
||||
<string name="objectives_smb_objective">Włączanie dodatkowych funkcji do użytku, jak SMB (Super Mikro Bolusy)</string>
|
||||
<string name="objectives_smb_gate">Musisz przeczytać wiki i zwiększyć maxIOB, aby SMB działało dobrze! Dobrym początkiem jest maxIOB = średni bolus + 3 x maks. dzienna dawka bazowa</string>
|
||||
|
@ -41,4 +59,16 @@
|
|||
<item quantity="many">%1$d dni</item>
|
||||
<item quantity="other">%1$d dni</item>
|
||||
</plurals>
|
||||
<plurals name="objective_hours">
|
||||
<item quantity="one">%1$d godzina</item>
|
||||
<item quantity="few">%1$d godziny</item>
|
||||
<item quantity="many">%1$d godzin</item>
|
||||
<item quantity="other">%1$d godziny</item>
|
||||
</plurals>
|
||||
<plurals name="objective_minutes">
|
||||
<item quantity="one">%1$d minuta</item>
|
||||
<item quantity="few">%1$d minut</item>
|
||||
<item quantity="many">%1$d minut</item>
|
||||
<item quantity="other">%1$d minuty</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<string name="treatmentssafety_title">Bezpieczeństwo leczenia</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Maks. dopuszczalny bolus [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Maks. dopuszczalne węglowodany [g]</string>
|
||||
|
@ -99,6 +98,7 @@
|
|||
<string name="openapsma_profile_label">Profil</string>
|
||||
<string name="openapsma_mealdata_label">Dane posiłku</string>
|
||||
<string name="result">Rezultat</string>
|
||||
<string name="result_insulin_carbs">Wynik: %1$s %2$s</string>
|
||||
<string name="openapsma_noglucosedata">Brak danych o glukozie</string>
|
||||
<string name="nochangerequested">Zmiana nie wymagana</string>
|
||||
<string name="openapsma_request_label">Żądanie</string>
|
||||
|
@ -216,7 +216,7 @@
|
|||
<string name="overview_tempbasal_button">BazaTymczasowa</string>
|
||||
<string name="overview_extendedbolus_button">Bolus Przedłużony</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Wersja Nightscout:</string>
|
||||
<string name="missing">Brakujące</string>
|
||||
<string name="missing_carbs">Brakuje %1$dg</string>
|
||||
<string name="exported">Właściwości wyeksportowane</string>
|
||||
<string name="export_to">Eksportuj ustawienia do</string>
|
||||
<string name="import_from">Importuj ustawienia z</string>
|
||||
|
@ -548,8 +548,8 @@
|
|||
<string name="show_statuslights_extended_summary">Włącz diody stanu dla cage, iage, sage, rezerwuar i poziom baterii na ekranie głównym.</string>
|
||||
<string name="statuslights_res_warning">Próg ostrzeżenia o poziomie zbiornika [U]</string>
|
||||
<string name="statuslights_res_critical">Próg ostrzeżenia o krytycznym poziomie zbiornika [U]</string>
|
||||
<string name="statuslights_bat_warning">Próg ostrzeżenia o poziomie baterii [%%]</string>
|
||||
<string name="statuslights_bat_critical">Próg ostrzeżenia o krytycznym poziomie baterii [%%]</string>
|
||||
<string name="statuslights_bat_warning">Próg ostrzeżenia o poziomie baterii [%]</string>
|
||||
<string name="statuslights_bat_critical">Próg ostrzeżenia o krytycznym poziomie baterii [%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -1370,6 +1370,8 @@
|
|||
<string name="format_bg_isf">%1$s ISF: %2$.1f</string>
|
||||
<string name="format_carbs_ic">%1$.0fg IC: %2$.1f</string>
|
||||
<string name="format_cob_ic">%1$.1fg IC: %2$.1f</string>
|
||||
<string name="format_percent">%1$d%%</string>
|
||||
<string name="boluswizard">Kalkulator bolusa</string>
|
||||
<string name="unit_minute_short">min</string>
|
||||
<string name="format_carbs">%1$dg</string>
|
||||
</resources>
|
||||
|
|
|
@ -6,44 +6,63 @@
|
|||
<string name="dia_minimumis3h">O valor mínimo é de 3 horas.</string>
|
||||
<string name="dia_minimumis5h">O valor mínimo é de 5 horas.</string>
|
||||
<string name="dia_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin</string>
|
||||
<string name="dia_meaningisequaltodiapump">O significado é igual ao parâmetro DIA usado na bomba.</string>
|
||||
<string name="dia_valuemustbedetermined">Você tem que determinar o seu valor individual (mas não menos de 5 horas).</string>
|
||||
<string name="hypott_label">Tópico: Hipo Temp-Alvo</string>
|
||||
<string name="hypott_whenhypott">O que é a razão principal para definir TT hipoglicemia?</string>
|
||||
<string name="hypott_goinglow">Para evitar que a Glic fique baixa se já estiver em funcionamento um temp zero.</string>
|
||||
<string name="hypott_preventoversmb">Para evitar o AAPS dosear demasiada insulina após uma subida rápida causada por hidratos de actuação rápida para tratar hipoglicemia.</string>
|
||||
<string name="hypott_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html</string>
|
||||
<string name="offlineprofile_whatprofile">Qual perfil pode ser usado e configurado offline?</string>
|
||||
<string name="offlineprofile_label">Tópico: Perfil Offline</string>
|
||||
<string name="offlineprofile_nsprofile">Perfil NS pode ser usado, mas não configurado.</string>
|
||||
<string name="offlineprofile_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#profile</string>
|
||||
<string name="pumpdisconnect_label">Tópico: Desconectando-se da bomba</string>
|
||||
<string name="pumpdisconnect_whattodo">O que deve ser feito ao desligar a bomba?</string>
|
||||
<string name="pumpdisconnect_letknow">Clique em \'Desligar bomba\' para que o AAPS saiba que nenhuma insulina está a ser entregue.</string>
|
||||
<string name="pumpdisconnect_suspend">Clique em \'Suspender loop\' para que AAPS pare o looping enquanto a bomba estiver desconectada.</string>
|
||||
<string name="pumpdisconnect_dontchnage">Não altere nada no AAPS, apenas desconecte a bomba.</string>
|
||||
<string name="pumpdisconnect_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#other-settings</string>
|
||||
<string name="objectives_label">Tópico: Configurações do AndroidAPS</string>
|
||||
<string name="objectives_howtosave">Quais são as melhores práticas para fazer backup de suas configurações?</string>
|
||||
<string name="objectives_exportsettings">Exporte-as localmente do menu Manutenção.</string>
|
||||
<string name="objectives_storeelsewhere">Salve o arquivo exportado para outro local como e-mail, Dropbox, Google drive…</string>
|
||||
<string name="objectives_doexportonstart">Exporte-as logo após a instalação do AAPS.</string>
|
||||
<string name="objectives_doexportafterchange">Exportá-los depois de fazer alterações de configuração.</string>
|
||||
<string name="objectives_doexportafterobjective">Exportá-los depois de completar um objectivo.</string>
|
||||
<string name="objectives_doexportafterfirtssettings">Exporte-as quando concluir as configurações iniciais.</string>
|
||||
<string name="objectives_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/ExportImportSettings.html</string>
|
||||
<string name="objectives_hint2">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#what-emergency-equipment-is-recommended-to-take-with-me</string>
|
||||
<string name="noisycgm_label">Tópico: Leituras do CGM imprecisas</string>
|
||||
<string name="noisycgm_whattodo">O que deve ser feito se os dados do CGM são irregulares?</string>
|
||||
<string name="nothing">Nada, AAPS vai lidar com isso.</string>
|
||||
<string name="noisycgm_pause">Desactivar o loop para evitar sobredosagem.</string>
|
||||
<string name="noisycgm_replacesensor">Substitua o sensor CGM.</string>
|
||||
<string name="noisycgm_turnoffphone">Desligue o telefone.</string>
|
||||
<string name="noisycgm_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Smoothing-Blood-Glucose-Data-in-xDrip.html#smoothing-blood-glucose-data</string>
|
||||
<string name="noisycgm_checksmoothing">Verifique que a app do CGM suaviza os dados da Glicose.</string>
|
||||
<string name="exercise_label">Tópico: Exercício</string>
|
||||
<string name="exercise_whattodo">Como você pode ajudar o sistema a lidar com exercícios?</string>
|
||||
<string name="exercise_setactivitytt">Usando o recurso de alvo-temp.</string>
|
||||
<string name="exercise_switchprofilebelow100">Faça um mudança de perfil abaixo de 100%.</string>
|
||||
<string name="exercise_switchprofileabove100">Fazer uma mudança de perfil acima de 100%.</string>
|
||||
<string name="exercise_stoploop">Pare o loop.</string>
|
||||
<string name="exercise_doitbeforestart">Definir um alvo-temp de actividade antes de iniciar o exercício.</string>
|
||||
<string name="exercise_afterstart">Definir um alvo-temp de actividade após iniciar o exercício leva a resultados piores do que se iniciado antes.</string>
|
||||
<string name="exercise_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#activity-temp-target</string>
|
||||
<string name="suspendloop_label">Tópico: Loop Desactivado/Suspenso</string>
|
||||
<string name="suspendloop_doigetinsulin">Eu recebo insulina quando o loop estiver desactivado/suspenso?</string>
|
||||
<string name="suspendloop_yes">Sim, a insulina basal continua a ser entregue.</string>
|
||||
<string name="suspendloop_no">Não, a entrega da insulina está parada.</string>
|
||||
<string name="basaltest_label">Tópico: Testando Basal, ISF e IC</string>
|
||||
<string name="basaltest_when">Quando devo validar os valores de basal, ISF e IC?</string>
|
||||
<string name="basaltest_beforeloop">Antes de começar com o loop.</string>
|
||||
<string name="basaltest_havingregularhypo">Quando ocorrer frequentemente Glic baixa.</string>
|
||||
<string name="basaltest_havingregularhyper">Quando ocorrer frequentemente Glic alta.</string>
|
||||
<string name="basaltest_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#androidaps-settings</string>
|
||||
<string name="prerequisites_label">Tópico: Pré-requisitos</string>
|
||||
<string name="prerequisites_what">O que eu preciso?</string>
|
||||
<string name="prerequisites_determinedcorrectprofile">Informações do perfil validadas (Basal, IC, FSI, DIA).</string>
|
||||
<string name="prerequisites_computer">Um computador para criar um APK.</string>
|
||||
<string name="prerequisites_phone">Um telefone compatível.</string>
|
||||
<string name="prerequisites_car">Um carro.</string>
|
||||
|
@ -67,6 +86,7 @@
|
|||
<string name="troubleshooting_label">Tópico: Resolução de Problemas</string>
|
||||
<string name="troubleshooting_wheretoask">Onde procurar ajuda?</string>
|
||||
<string name="troubleshooting_fb">Entrar no grupo AndroidAPS do Facebook.</string>
|
||||
<string name="troubleshooting_wiki">Leia a documentação do AndroidAPS.</string>
|
||||
<string name="troubleshooting_gitter">Visite a sala do AndroidAPS no Gitter.</string>
|
||||
<string name="troubleshooting_googlesupport">Visite o suporte do Google para o AndroidAPS</string>
|
||||
<string name="troubleshooting_yourendo">Fale com seu endocrinologista.</string>
|
||||
|
@ -74,14 +94,19 @@
|
|||
<string name="troubleshooting_hint2">https://www.facebook.com/groups/AndroidAPSUsers/</string>
|
||||
<string name="troubleshooting_hint3">https://gitter.im/MilosKozak/AndroidAPS</string>
|
||||
<string name="insulin_label">Tópico: Plugins de Insulina</string>
|
||||
<string name="insulin_ultrarapid">Qual marca de insulina pode ser usada com o plugin \'Ultra-Rapid-Oref\'?</string>
|
||||
<string name="insulin_fiasp">Fiasp®</string>
|
||||
<string name="insulin_novorapid">NovoRapid ®</string>
|
||||
<string name="insulin_humalog">Humalog ®</string>
|
||||
<string name="insulin_actrapid">Actrapid ®</string>
|
||||
<string name="insulin_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#insulin</string>
|
||||
<string name="sensitivity_label">Tópico: Plugins de Sensibilidade</string>
|
||||
<string name="sensitivity_which">Qual algoritmo de sensibilidade tem um intervalo de tempo configurável?</string>
|
||||
<string name="sensitivity_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html</string>
|
||||
<string name="sensitivityuam_which">Qual plugin de sensibilidade deve ser usado para o recurso UAM?</string>
|
||||
<string name="wrongcarbs_label">Tópico: Erros de Entrada de Hidratos</string>
|
||||
<string name="wrongcarbs_whattodo">O que deve fazer se tiver feito uma entrada incorrecta de hidratos?</string>
|
||||
<string name="wrongcarbs_treatmentstab">Em Tratamentos, excluir a entrada incorrecta de hidratos. Insira novos hidratos.</string>
|
||||
<string name="wrongcarbs_addfakeinsulin">Adicionar falsa insulina usando a função de Refill</string>
|
||||
<string name="extendedcarbs_label">Tópico: Alimentos com Gordura e Proteína</string>
|
||||
<string name="extendedcarbs_handling">O que fazer se sua comida contiver uma grande quantidade de gordura e/ou proteínas?</string>
|
||||
|
@ -99,30 +124,46 @@
|
|||
<string name="nsclient_spikeiphone">Aplicativo Spike no iPhone.</string>
|
||||
<string name="nsclient_hint1">https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html</string>
|
||||
<string name="isf_label">Tópico: Fator de Sensibilidade de Insulina</string>
|
||||
<string name="isf_increasingvalue">Valores elevados de FSI levam a uma entrega de menos insulina quando o AAPS corrige Glic alta.</string>
|
||||
<string name="isf_decreasingvalue">Valores baixos de FSI levam a uma entrega de menos insulina quando o AAPS corrige Glic alta.</string>
|
||||
<string name="isf_noeffect">Alterar os valores FSI não tem efeito sobre a quantidade de insulina entregue quando a AAPS corrige Glic alta.</string>
|
||||
<string name="isf_preferences">Você precisa inserir o ISF nas Preferências.</string>
|
||||
<string name="isf_profile">Alterar o valor do ISF no seu perfil é o suficiente para aplicar a alteração.</string>
|
||||
<string name="isf_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-u</string>
|
||||
<string name="isf_hint2">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html</string>
|
||||
<string name="ic_label">Tópico: Rácio IC</string>
|
||||
<string name="ic_increasingvalue">Rácios IC mais altos levam a menos insulina entregue para uma dada quantidade de hidratos.</string>
|
||||
<string name="ic_decreasingvalue">Rácios IC mais baixos levam a menos insulina entregue para uma dada quantidade de hidratos.</string>
|
||||
<string name="ic_noeffect">Se tiver 0 COB, alterar o rácio IC irá levar a uma quantidade diferente de insulina para corrigir um determinado valor da Glic.</string>
|
||||
<string name="ic_different">O IC será diferente se você contar a unidade de pão como 10g ou 12g.</string>
|
||||
<string name="ic_meaning">O significado do IC é: Quantos pães são cobertas por 1U de insulina.</string>
|
||||
<string name="ic_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u</string>
|
||||
<string name="profileswitch_label">Tópico: Alternando Perfil</string>
|
||||
<string name="profileswitch_pctwillchange"> Ao especificar 90% na mudança de perfil…</string>
|
||||
<string name="profileswitch_basalhigher">Os basais serão 10% maiores.</string>
|
||||
<string name="profileswitch_basallower">Os basais serão 10% menores.</string>
|
||||
<string name="profileswitch_ichigher">O valor do IC será 10% maior.</string>
|
||||
<string name="profileswitch_iclower">O valor do IC será 10% menor.</string>
|
||||
<string name="profileswitch_isfhigher">O valor do ISF será 10% maior.</string>
|
||||
<string name="profileswitch_isflower">O valor do ISF será 10% menor.</string>
|
||||
<string name="profileswitch_overall">Você receberá aproximadamente 10% menos insulina no total.</string>
|
||||
<string name="profileswitch_targethigher">O alvo será 10% maior.</string>
|
||||
<string name="profileswitch_targetlower">O alvo será 10% menor.</string>
|
||||
<string name="profileswitch_targetbottom">Só o alvo inferior será 10% menor.</string>
|
||||
<string name="profileswitch_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#profile-switch</string>
|
||||
<string name="profileswitchtime_iwant">Se acordar 1h mais cedo do que o normal, como deve notificar a AAPS da mudança no seu horário?</string>
|
||||
<string name="profileswitchtime_1">Iniciar uma mudança de perfil com uma alteração de turno de 1</string>
|
||||
<string name="profileswitchtime__1">Iniciar uma mudança de perfil com uma alteração de turno de -1</string>
|
||||
<string name="profileswitchtime_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#timeshift</string>
|
||||
<string name="profileswitchtime_60">Iniciar uma mudança de perfil com uma alteração de turno de 60</string>
|
||||
<string name="profileswitchtime__60">Iniciar uma mudança de perfil com uma alteração de turno de -60</string>
|
||||
<string name="basalhelp_hint1">https://androidaps.readthedocs.io/en/latest/EN/Module/module.html#good-individual-dosage-algorithm-for-your-diabetes-therapy</string>
|
||||
<string name="basalhelp_label">Tópico: Ajuda com taxas basais</string>
|
||||
<string name="basalhelp_where">Onde procurar ajuda para taxas basais e etc.</string>
|
||||
<string name="basalhelp_diabetesteam">Sua equipe de diabetes</string>
|
||||
<string name="basalhelp_google">Google</string>
|
||||
<string name="basalhelp_facebook">Facebook</string>
|
||||
<string name="other_medication_label">Outra Medicação</string>
|
||||
<string name="other_medication_text">AAPS reduz Basal para aumentar o açúcar no sangue. As drogas do grupo de inibidores de SGLT2 (gliflozins) podem evitar o aumento esperado da Glic e, assim, podem produzir uma deficiência de insulina perigosa (DKA).
|
||||
\nOs nomes comuns de marca são: Invokana®, Forxiga®, Jardiance®, Steglatro®, Suglat®, Apleway®, Deberza®, Synjardy®, Vokanamet®, Xigduo®.\n\nPrometo que não vou tomar tais drogas ao usar o AAPS ou vou desactivar o loop antes de usar essas drogas.</string>
|
||||
</resources>
|
||||
|
|
|
@ -16,6 +16,12 @@
|
|||
<string name="objectives_maxiobzero_objective">Começar a fechar loop com Suspensão por Glicose Baixa</string>
|
||||
<string name="objectives_maxiobzero_gate">Utilizar em close loop com IOB máx = 0 por alguns dias sem muitas situações de Suspensão por Baixa Glicose</string>
|
||||
<string name="objectives_maxiob_objective">Ajustar o close loop, aumentar a IOB máximo acima de 0 e reduzir gradualmente os alvos de valor glicêmico</string>
|
||||
<string name="objectives_maxiob_gate">Utilizar por alguns dias e pelo menos uma noite sem alarmes de Glic baixa, antes de baixar Glic</string>
|
||||
<string name="objectives_autosens_objective">Ajuste as basais e os rácios, se necessário, e, em seguida, active o auto-sens</string>
|
||||
<string name="objectives_autosens_gate">1 semana de looping durante o dia com sucesso com entrada regular de hidratos de carbono</string>
|
||||
<string name="objectives_ama_objective">A activar recursos adicionais para uso durante o dia, como assistente avançado de refeição</string>
|
||||
<string name="objectives_smb_objective">Activando recursos adicionais para uso durante o dia, como SMB</string>
|
||||
<string name="objectives_smb_gate">Deverá ler a wiki e aumentar a IOB máx para que os SMBs funcionem devidamente! Inicialmente poderá considerar maxIOB=média dos bólus + 3 x a basal máxima</string>
|
||||
<string name="objectives_bgavailableinns">Glic disponível no NS</string>
|
||||
<string name="objectives_pumpstatusavailableinns">Estado da Bomba disponível no NS</string>
|
||||
<string name="objectives_manualenacts">Execução manual</string>
|
||||
|
@ -24,13 +30,18 @@
|
|||
<string name="objectives_usage_gate">Executar diferentes acções no AndroidAPS</string>
|
||||
<string name="objectives_useprofileswitch">Definir perfil de 90% por 10 min (pressione longo no nome de perfil na Visão Geral)</string>
|
||||
<string name="objectives_usedisconnectpump">Simular chuveiro. Desligar a bomba de 1h (Pressione longo em Open Loop)</string>
|
||||
<string name="objectives_usereconnectpump">... e volte a ligar de volta da mesma forma</string>
|
||||
<string name="objectives_usetemptarget">Crie um alvo temporário personalizado com 10 min de duração (pressione longo no seu alvo actual)</string>
|
||||
<string name="objectives_useactions">No Configurador active o plugiin de Acções, torne-o visível e exiba o seu conteúdo no menu superior</string>
|
||||
<string name="objectives_useloop">Mostrar conteúdo do plugin Loop</string>
|
||||
<string name="objectives_usescale">Utilizar a função de escala premindo longamente gráfico Glic</string>
|
||||
<string name="objectives_button_enter">Inserir</string>
|
||||
<string name="enter_code_obtained_from_developers_to_bypass_the_rest_of_objectives">Insira o código obtido dos programadores para ignorar o resto dos objectivos</string>
|
||||
<string name="codeaccepted">Código aceite</string>
|
||||
<string name="codeinvalid">Código inválido</string>
|
||||
<string name="objectives_exam_objective">Prove seu conhecimento</string>
|
||||
<string name="objectives_exam_gate">Estude e responda as perguntas correctamente</string>
|
||||
<string name="answerdisabledto">A resposta está desactivada para: %1$s</string>
|
||||
<string name="answerdisabledto">Responder desactivado até: %1$s</string>
|
||||
<string name="wronganswer">Resposta errada!</string>
|
||||
<string name="unfinshed_button">Próximo inacabado</string>
|
||||
<string name="requestcode">Pedir Código: %1$s</string>
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
<!-- <string name="he_lang" translatable="false">Hebrew</string> -->
|
||||
<!-- <string name="ga_lang" translatable="false">Irish</string> -->
|
||||
<!-- <string name="ja_lang" translatable="false">Japanese</string> -->
|
||||
<!-- <string name="pt_BR_lang" translatable="false">Portuguese, Brazilian</string> -->
|
||||
<string name="treatmentssafety_title">Segurança do Tratamento</string>
|
||||
<string name="treatmentssafety_maxbolus_title">Máximo bolus permitido [U]</string>
|
||||
<string name="treatmentssafety_maxcarbs_title">Máximo de carbs permitidos [g]</string>
|
||||
|
@ -99,6 +98,7 @@
|
|||
<string name="openapsma_profile_label">Perfil</string>
|
||||
<string name="openapsma_mealdata_label">Dados de refeição</string>
|
||||
<string name="result">Resultado</string>
|
||||
<string name="result_insulin_carbs">Resultado: %1$s %2$ss</string>
|
||||
<string name="openapsma_noglucosedata">Sem dados de glicose disponíveis</string>
|
||||
<string name="nochangerequested">Nenhuma alteração solicitada</string>
|
||||
<string name="openapsma_request_label">Solicitar</string>
|
||||
|
@ -216,7 +216,7 @@
|
|||
<string name="overview_tempbasal_button">Basal Temporária</string>
|
||||
<string name="overview_extendedbolus_button">Bólus estendido</string>
|
||||
<string name="configbuilder_nightscoutversion_label">Versão do Nightscout:</string>
|
||||
<string name="missing">Faltando</string>
|
||||
<string name="missing_carbs">Falta %1$dg</string>
|
||||
<string name="exported">Preferências exportadas</string>
|
||||
<string name="export_to">Exportar configurações para</string>
|
||||
<string name="import_from">Importar configurações de</string>
|
||||
|
@ -548,8 +548,8 @@
|
|||
<string name="show_statuslights_extended_summary">Ativar as luzes de status estendida para idade da cânula, insulina, sensor, reservatório e bateria no ecrã inicial.</string>
|
||||
<string name="statuslights_res_warning">Limite de aviso de nível de reservatório [U]</string>
|
||||
<string name="statuslights_res_critical">Limite crítico de nível de reservatório [U]</string>
|
||||
<string name="statuslights_bat_warning">Limite de aviso de nível de bateria [%%]</string>
|
||||
<string name="statuslights_bat_critical">Limite crítico de nível de bateria [%%]</string>
|
||||
<string name="statuslights_bat_warning">Limite de aviso de nível de bateria [%]</string>
|
||||
<string name="statuslights_bat_critical">Limite de crítico de nível de bateria [%]</string>
|
||||
<string name="iob">IOB</string>
|
||||
<string name="cob">COB</string>
|
||||
<string name="virtualpump_firmware_label">Firmware</string>
|
||||
|
@ -1348,6 +1348,7 @@
|
|||
<string name="changengetoprofilename">Alterar perfil para %1$s</string>
|
||||
<string name="automation_trigger_pump_last_connection_label">Última ligação à bomba</string>
|
||||
<string name="automation_trigger_pump_last_connection_description">Última ligação à bomba [minutos atrás]</string>
|
||||
<string name="automation_trigger_pump_last_connection_compared">Última ligação à bomba %1$s %2$s min atrás</string>
|
||||
<string name="sendsmsactionlabel">Enviar SMS: %1$s</string>
|
||||
<string name="sendsmsactiondescription">Enviar SMS para todos os números nas preferências</string>
|
||||
<string name="sendsmsactiontext">Enviar SMS com texto</string>
|
||||
|
@ -1368,6 +1369,8 @@
|
|||
<string name="format_bg_isf">%1$s FSI: %2$.1f</string>
|
||||
<string name="format_carbs_ic">%1$.0fg IC: %2$.1f</string>
|
||||
<string name="format_cob_ic">%1$.1fg IC: %2$.1f</string>
|
||||
<string name="format_percent">%1$d%%</string>
|
||||
<string name="boluswizard">Assistente de Bólus</string>
|
||||
<string name="unit_minute_short">min</string>
|
||||
<string name="format_carbs">%1$dg</string>
|
||||
</resources>
|
||||
|
|
|
@ -6,38 +6,63 @@
|
|||
<string name="dia_minimumis3h">O valor mínimo é de 3 horas.</string>
|
||||
<string name="dia_minimumis5h">O valor mínimo é de 5 horas.</string>
|
||||
<string name="dia_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin</string>
|
||||
<string name="dia_meaningisequaltodiapump">O significado é igual ao parâmetro DIA usado na bomba.</string>
|
||||
<string name="dia_valuemustbedetermined">É necessário determinar o seu valor individual (mas não menos de 5 horas).</string>
|
||||
<string name="hypott_label">Tópico: Alvo-Temp. Hipo</string>
|
||||
<string name="hypott_whenhypott">O que é a razão principal para definir TT hipoglicemia?</string>
|
||||
<string name="hypott_goinglow">Para evitar que a Glic fique baixa se já estiver em funcionamento um temp zero.</string>
|
||||
<string name="hypott_preventoversmb">Para evitar o AAPS dosear demasiada insulina após uma subida rápida causada por hidratos de actuação rápida para tratar hipoglicemia.</string>
|
||||
<string name="hypott_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html</string>
|
||||
<string name="offlineprofile_whatprofile">Qual perfil pode ser usado e configurado offline?</string>
|
||||
<string name="offlineprofile_label">Tópico: Perfil Offline</string>
|
||||
<string name="offlineprofile_nsprofile">Perfil NS pode ser usado, mas não configurado.</string>
|
||||
<string name="offlineprofile_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#profile</string>
|
||||
<string name="pumpdisconnect_label">Tópico: Desligar a Bomba</string>
|
||||
<string name="pumpdisconnect_whattodo">O que deve ser feito ao desligar a bomba?</string>
|
||||
<string name="pumpdisconnect_letknow">Clique em \'Desligar bomba\' para que o AAPS saiba que nenhuma insulina está a ser entregue.</string>
|
||||
<string name="pumpdisconnect_suspend">Clique em \'Suspender loop\' para que AAPS pare o looping enquanto a bomba estiver desconectada.</string>
|
||||
<string name="pumpdisconnect_dontchnage">Não altere nada no AAPS, apenas desconecte a bomba.</string>
|
||||
<string name="pumpdisconnect_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#other-settings</string>
|
||||
<string name="objectives_label">Tópico: Definições do AndroidAPS</string>
|
||||
<string name="objectives_howtosave">Quais são as práticas recomendadas para fazer cópia de segurança das configurações?</string>
|
||||
<string name="objectives_exportsettings">Exportá-las localmente a partir do menu Manutenção.</string>
|
||||
<string name="objectives_storeelsewhere">Armazenar ficheiro exportado para outro local como e-mail, Dropbox, Google drive…</string>
|
||||
<string name="objectives_doexportonstart">Exportá-los logo após a instalação do AAPS.</string>
|
||||
<string name="objectives_doexportafterchange">Exportá-los depois de fazer alterações de configuração.</string>
|
||||
<string name="objectives_doexportafterobjective">Exportá-los depois de completar um objectivo.</string>
|
||||
<string name="objectives_doexportafterfirtssettings">Exportá-los quando terminar as configurações iniciais.</string>
|
||||
<string name="objectives_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/ExportImportSettings.html</string>
|
||||
<string name="objectives_hint2">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#what-emergency-equipment-is-recommended-to-take-with-me</string>
|
||||
<string name="noisycgm_label">Tópico: Leituras Irregulares CGM</string>
|
||||
<string name="noisycgm_whattodo">O que deve ser feito se os dados do CGM são irregulares?</string>
|
||||
<string name="nothing">Nada, AAPS vai lidar com isso.</string>
|
||||
<string name="noisycgm_pause">Desactivar o loop para evitar sobredosagem.</string>
|
||||
<string name="noisycgm_replacesensor">Substituir o sensor CGM.</string>
|
||||
<string name="noisycgm_turnoffphone">Desligue o telefone.</string>
|
||||
<string name="noisycgm_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Smoothing-Blood-Glucose-Data-in-xDrip.html#smoothing-blood-glucose-data</string>
|
||||
<string name="noisycgm_checksmoothing">Verifique que a app do CGM suaviza os dados da Glicose.</string>
|
||||
<string name="exercise_label">Tópico: Exercício</string>
|
||||
<string name="exercise_whattodo">Como você pode ajudar o sistema a lidar com exercícios?</string>
|
||||
<string name="exercise_setactivitytt">Usando o recurso de alvo-temp.</string>
|
||||
<string name="exercise_switchprofilebelow100">Fazer uma mudança de perfil inferior a 100%.</string>
|
||||
<string name="exercise_switchprofileabove100">Fazer uma mudança de perfil acima de 100%.</string>
|
||||
<string name="exercise_stoploop">Parar o loop.</string>
|
||||
<string name="exercise_doitbeforestart">Definir um alvo-temp de actividade antes de iniciar o exercício.</string>
|
||||
<string name="exercise_afterstart">Definir um alvo-temp de actividade após iniciar o exercício leva a resultados piores do que se iniciado antes.</string>
|
||||
<string name="exercise_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#activity-temp-target</string>
|
||||
<string name="suspendloop_label">Tópico: Loop Desactivado/Suspenso</string>
|
||||
<string name="suspendloop_doigetinsulin">Eu recebo insulina quando o loop estiver desactivado/suspenso?</string>
|
||||
<string name="suspendloop_yes">Sim, a insulina basal continua a ser entregue.</string>
|
||||
<string name="suspendloop_no">Não, a entrega da insulina está parada.</string>
|
||||
<string name="basaltest_label">Topic: Testar Basal, FSI e IC</string>
|
||||
<string name="basaltest_when">Quando devo validar valores das basais, FSI e de IC?</string>
|
||||
<string name="basaltest_beforeloop">Antes de começar com o looping.</string>
|
||||
<string name="basaltest_havingregularhypo">Quando ocorrer frequentemente Glic baixa.</string>
|
||||
<string name="basaltest_havingregularhyper">Quando ocorrer frequentemente Glic alta.</string>
|
||||
<string name="basaltest_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#androidaps-settings</string>
|
||||
<string name="prerequisites_label">Tópico: Pré-requisitos</string>
|
||||
<string name="prerequisites_what">O que preciso?</string>
|
||||
<string name="prerequisites_determinedcorrectprofile">Informações do perfil validadas (Basal, IC, FSI, DIA).</string>
|
||||
<string name="prerequisites_computer">Um computador para criar um APK.</string>
|
||||
<string name="prerequisites_phone">Um telefone compatível.</string>
|
||||
<string name="prerequisites_car">Um Carro.</string>
|
||||
|
@ -69,41 +94,76 @@
|
|||
<string name="troubleshooting_hint2">https://www.facebook.com/groups/AndroidAPSUsers/</string>
|
||||
<string name="troubleshooting_hint3">https://gitter.im/MilosKozak/AndroidAPS</string>
|
||||
<string name="insulin_label">Tópico: Plugins de Insulina</string>
|
||||
<string name="insulin_ultrarapid">Qual marca de insulina pode ser usada com o plugin \'Ultra-Rapid-Oref\'?</string>
|
||||
<string name="insulin_fiasp">Fiasp®</string>
|
||||
<string name="insulin_novorapid">NovoRapid ®</string>
|
||||
<string name="insulin_humalog">Humalog ®</string>
|
||||
<string name="insulin_actrapid">Actrapid ®</string>
|
||||
<string name="insulin_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#insulin</string>
|
||||
<string name="sensitivity_label">Tópico: Plugins de Sensibilidade</string>
|
||||
<string name="sensitivity_which">Qual algoritmo de sensibilidade tem um intervalo de tempo configurável?</string>
|
||||
<string name="sensitivity_hint1">https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html</string>
|
||||
<string name="sensitivityuam_which">Qual plugin de sensibilidade deve ser usado para o recurso UAM?</string>
|
||||
<string name="wrongcarbs_label">Tópico: Erros de Entrada de Hidratos</string>
|
||||
<string name="wrongcarbs_whattodo">O que deve fazer se tiver feito uma entrada incorrecta de hidratos?</string>
|
||||
<string name="wrongcarbs_treatmentstab">Em Tratamentos, excluir a entrada incorrecta de hidratos. Insira novos hidratos.</string>
|
||||
<string name="wrongcarbs_addfakeinsulin">Como adicionar insulina falsa utilizando a função Recarregar</string>
|
||||
<string name="extendedcarbs_label">Tópico: Alimentos com Gordura e Proteína</string>
|
||||
<string name="extendedcarbs_handling">O que fazer se a comida contém uma grande quantidade de gordura e/ou proteínas?</string>
|
||||
<string name="extendedcarbs_useextendedcarbs">Recalcular gordura e proteínas em hidratos e usar recurso de \"Hidratos Estendidos\".</string>
|
||||
<string name="extendedcarbs_add">Recalcular gordura e proteínas em hidratos e adicionar ao cálculo de bólus.</string>
|
||||
<string name="extendedcarbs_useextendedbolus">Use o bólus estendido para cobrir gordura e proteínas.</string>
|
||||
<string name="extendedcarbs_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Extended-Carbs.html</string>
|
||||
<string name="nsclient_label">Tópico: Monitorização Remota</string>
|
||||
<string name="nsclient_howcanyou">Como pode monitorizar AAPS do seu filho remotamente?</string>
|
||||
<string name="nsclient_nightscout">Usando um site Nightscout.</string>
|
||||
<string name="nsclient_dexcomfollow">App Dex om Follow se estiver a usar a app original Dexcom (Glic apenas).</string>
|
||||
<string name="nsclient_dexcomfollowxdrip">Dexcom Follow se estiver a usar a app xDrip.</string>
|
||||
<string name="nsclient_xdripfollower">xDrip a correr no modo seguidor.</string>
|
||||
<string name="nsclient_looponiphone">App de Loop no iPhone.</string>
|
||||
<string name="nsclient_spikeiphone">App Spike no iPhone.</string>
|
||||
<string name="nsclient_hint1">https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html</string>
|
||||
<string name="isf_label">Tópico: Factor de Sensibilidade de Insulina</string>
|
||||
<string name="isf_increasingvalue">Valores elevados de FSI levam a uma entrega de menos insulina quando o AAPS corrige Glic alta.</string>
|
||||
<string name="isf_decreasingvalue">Valores baixos de FSI levam a uma entrega de menos insulina quando o AAPS corrige Glic alta.</string>
|
||||
<string name="isf_noeffect">Alterar os valores FSI não tem efeito sobre a quantidade de insulina entregue quando a AAPS corrige Glic alta.</string>
|
||||
<string name="isf_preferences">É necessário inserir FSI nas Preferências.</string>
|
||||
<string name="isf_profile">A alteração do valor do FSI no seu perfil é suficiente para aplicar a mudança.</string>
|
||||
<string name="isf_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-u</string>
|
||||
<string name="isf_hint2">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html</string>
|
||||
<string name="ic_label">Tópico: Rácio IC</string>
|
||||
<string name="ic_increasingvalue">Rácios IC mais altos levam a menos insulina entregue para uma dada quantidade de hidratos.</string>
|
||||
<string name="ic_decreasingvalue">Rácios IC mais baixos levam a menos insulina entregue para uma dada quantidade de hidratos.</string>
|
||||
<string name="ic_noeffect">Se tiver 0 COB, alterar o rácio IC irá levar a uma quantidade diferente de insulina para corrigir um determinado valor da Glic.</string>
|
||||
<string name="ic_different">IC será diferente se contar a unidade de pão como 10g ou 12g.</string>
|
||||
<string name="ic_meaning">O significado do IC é: Quantas unidades de pão são cobertas por 1U de insulina.</string>
|
||||
<string name="ic_hint1">https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u</string>
|
||||
<string name="profileswitch_label">Tópico: Mudança De Perfil</string>
|
||||
<string name="profileswitch_pctwillchange"> Ao especificar 90% na mudança de perfil…</string>
|
||||
<string name="profileswitch_basalhigher">Basais são 10% superiores.</string>
|
||||
<string name="profileswitch_basallower">Basais serão 10% inferiores.</string>
|
||||
<string name="profileswitch_ichigher">Valor IC será 10% superior.</string>
|
||||
<string name="profileswitch_iclower">Valor IC será 10% inferior.</string>
|
||||
<string name="profileswitch_isfhigher">O valor FSI será 10% mais alto.</string>
|
||||
<string name="profileswitch_isflower">O valor FSI será 10% mais baixo.</string>
|
||||
<string name="profileswitch_overall">Você receberá aproximadamente 10% menos insulina no total.</string>
|
||||
<string name="profileswitch_targethigher">Alvo será 10% superior.</string>
|
||||
<string name="profileswitch_targetlower">Alvo será 10% inferior.</string>
|
||||
<string name="profileswitch_targetbottom">Só alvo inferior será 10% menor.</string>
|
||||
<string name="profileswitch_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#profile-switch</string>
|
||||
<string name="profileswitchtime_iwant">Se acordar 1h mais cedo do que o normal, como deve notificar a AAPS da mudança no seu horário?</string>
|
||||
<string name="profileswitchtime_1">Iniciar uma mudança de perfil com uma alteração de turno de 1</string>
|
||||
<string name="profileswitchtime__1">Iniciar uma mudança de perfil com uma alteração de turno de -1</string>
|
||||
<string name="profileswitchtime_hint1">https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#timeshift</string>
|
||||
<string name="profileswitchtime_60">Iniciar uma mudança de perfil com uma alteração de turno de 60</string>
|
||||
<string name="profileswitchtime__60">Iniciar uma mudança de perfil com uma alteração de turno de -60</string>
|
||||
<string name="basalhelp_hint1">https://androidaps.readthedocs.io/en/latest/EN/Module/module.html#good-individual-dosage-algorithm-for-your-diabetes-therapy</string>
|
||||
<string name="basalhelp_label">Tópico: Ajuda com taxas de basal</string>
|
||||
<string name="basalhelp_where">Onde ir para obter ajuda com rácios da basal, etc.</string>
|
||||
<string name="basalhelp_diabetesteam">A sua equipa da diabetes</string>
|
||||
<string name="basalhelp_google">Google</string>
|
||||
<string name="basalhelp_facebook">Facebook</string>
|
||||
<string name="other_medication_label">Outra Medicação</string>
|
||||
<string name="other_medication_text">AAPS reduz Basal para aumentar o açúcar no sangue. As drogas do grupo de inibidores de SGLT2 (gliflozins) podem evitar o aumento esperado da Glic e, assim, podem produzir uma deficiência de insulina perigosa (DKA).
|
||||
\nOs nomes comuns de marca são: Invokana®, Forxiga®, Jardiance®, Steglatro®, Suglat®, Apleway®, Deberza®, Synjardy®, Vokanamet®, Xigduo®.\n\nPrometo que não vou tomar tais drogas ao usar o AAPS ou vou desactivar o loop antes de usar essas drogas.</string>
|
||||
</resources>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue