Merge remote-tracking branch 'upstream/rsoption' into dev
This commit is contained in:
commit
233fb33659
94 changed files with 1810 additions and 699 deletions
|
@ -83,6 +83,8 @@
|
|||
<action android:name="it.ct.glicemia.ACTION_GLUCOSE_MEASURED" />
|
||||
<!-- Receiver from DexcomG5 -->
|
||||
<action android:name="com.dexcom.cgm.DATA" />
|
||||
<!-- Receiver from Poctech -->
|
||||
<action android:name="com.china.poctech.data" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
<!-- Receiver keepalive, scheduled every 30 min -->
|
||||
|
@ -170,7 +172,7 @@
|
|||
<activity
|
||||
android:name=".setupwizard.SetupWizardActivity"
|
||||
android:configChanges="orientation|keyboardHidden|screenSize"
|
||||
android:theme="@style/AppTheme.SetupWizard"
|
||||
android:theme="@style/AppTheme.NoActionBar"
|
||||
android:label="@string/title_activity_setup_wizard" />
|
||||
|
||||
<activity android:name=".SingleFragmentActivity"
|
||||
|
|
|
@ -139,8 +139,10 @@ public class MainActivity extends AppCompatActivity {
|
|||
|
||||
AndroidPermission.notifyForStoragePermission(this);
|
||||
AndroidPermission.notifyForBatteryOptimizationPermission(this);
|
||||
AndroidPermission.notifyForLocationPermissions(this);
|
||||
AndroidPermission.notifyForSMSPermissions(this);
|
||||
if (BuildConfig.APS || BuildConfig.PUMPCONTROL) {
|
||||
AndroidPermission.notifyForLocationPermissions(this);
|
||||
AndroidPermission.notifyForSMSPermissions(this);
|
||||
}
|
||||
|
||||
MainApp.bus().post(new EventFeatureRunning(EventFeatureRunning.Feature.MAIN));
|
||||
}
|
||||
|
@ -200,13 +202,14 @@ public class MainActivity extends AppCompatActivity {
|
|||
menu.clear();
|
||||
for (PluginBase p : MainApp.getPluginsList()) {
|
||||
pageAdapter.registerNewFragment(p);
|
||||
if (p.hasFragment() && !p.isFragmentVisible() && p.isEnabled(p.pluginDescription.getType())) {
|
||||
if (p.hasFragment() && !p.isFragmentVisible() && p.isEnabled(p.pluginDescription.getType()) && !p.pluginDescription.neverVisible) {
|
||||
MenuItem menuItem = menu.add(p.getName());
|
||||
menuItem.setCheckable(true);
|
||||
menuItem.setOnMenuItemClickListener(item -> {
|
||||
Intent intent = new Intent(this, SingleFragmentActivity.class);
|
||||
intent.putExtra("plugin", MainApp.getPluginsList().indexOf(p));
|
||||
startActivity(intent);
|
||||
((DrawerLayout) findViewById(R.id.drawer_layout)).closeDrawers();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
|
|
@ -69,6 +69,7 @@ import info.nightscout.androidaps.plugins.Source.SourceDexcomG5Plugin;
|
|||
import info.nightscout.androidaps.plugins.Source.SourceGlimpPlugin;
|
||||
import info.nightscout.androidaps.plugins.Source.SourceMM640gPlugin;
|
||||
import info.nightscout.androidaps.plugins.Source.SourceNSClientPlugin;
|
||||
import info.nightscout.androidaps.plugins.Source.SourcePoctechPlugin;
|
||||
import info.nightscout.androidaps.plugins.Source.SourceXdripPlugin;
|
||||
import info.nightscout.androidaps.plugins.Treatments.TreatmentsPlugin;
|
||||
import info.nightscout.androidaps.plugins.Wear.WearPlugin;
|
||||
|
@ -178,6 +179,8 @@ public class MainApp extends Application {
|
|||
pluginsList.add(SourceGlimpPlugin.getPlugin());
|
||||
if (!Config.NSCLIENT)
|
||||
pluginsList.add(SourceDexcomG5Plugin.getPlugin());
|
||||
if (!Config.NSCLIENT)
|
||||
pluginsList.add(SourcePoctechPlugin.getPlugin());
|
||||
if (Config.SMSCOMMUNICATORENABLED) pluginsList.add(SmsCommunicatorPlugin.getPlugin());
|
||||
pluginsList.add(FoodPlugin.getPlugin());
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import info.nightscout.androidaps.Config;
|
||||
import info.nightscout.androidaps.Constants;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.ProfileStore;
|
||||
|
@ -38,6 +39,7 @@ import info.nightscout.androidaps.plugins.Source.SourceDexcomG5Plugin;
|
|||
import info.nightscout.androidaps.plugins.Source.SourceGlimpPlugin;
|
||||
import info.nightscout.androidaps.plugins.Source.SourceMM640gPlugin;
|
||||
import info.nightscout.androidaps.plugins.Source.SourceNSClientPlugin;
|
||||
import info.nightscout.androidaps.plugins.Source.SourcePoctechPlugin;
|
||||
import info.nightscout.androidaps.plugins.Source.SourceXdripPlugin;
|
||||
import info.nightscout.androidaps.receivers.DataReceiver;
|
||||
import info.nightscout.utils.BundleLogger;
|
||||
|
@ -54,6 +56,7 @@ public class DataService extends IntentService {
|
|||
boolean mm640gEnabled = false;
|
||||
boolean glimpEnabled = false;
|
||||
boolean dexcomG5Enabled = false;
|
||||
boolean poctechEnabled = false;
|
||||
|
||||
public DataService() {
|
||||
super("DataService");
|
||||
|
@ -70,36 +73,49 @@ public class DataService extends IntentService {
|
|||
mm640gEnabled = false;
|
||||
glimpEnabled = false;
|
||||
dexcomG5Enabled = false;
|
||||
poctechEnabled = false;
|
||||
} else if (ConfigBuilderPlugin.getPlugin().getActiveBgSource().getClass().equals(SourceXdripPlugin.class)) {
|
||||
xDripEnabled = true;
|
||||
nsClientEnabled = false;
|
||||
mm640gEnabled = false;
|
||||
glimpEnabled = false;
|
||||
dexcomG5Enabled = false;
|
||||
poctechEnabled = false;
|
||||
} else if (ConfigBuilderPlugin.getPlugin().getActiveBgSource().getClass().equals(SourceNSClientPlugin.class)) {
|
||||
xDripEnabled = false;
|
||||
nsClientEnabled = true;
|
||||
mm640gEnabled = false;
|
||||
glimpEnabled = false;
|
||||
dexcomG5Enabled = false;
|
||||
poctechEnabled = false;
|
||||
} else if (ConfigBuilderPlugin.getPlugin().getActiveBgSource().getClass().equals(SourceMM640gPlugin.class)) {
|
||||
xDripEnabled = false;
|
||||
nsClientEnabled = false;
|
||||
mm640gEnabled = true;
|
||||
glimpEnabled = false;
|
||||
dexcomG5Enabled = false;
|
||||
poctechEnabled = false;
|
||||
} else if (ConfigBuilderPlugin.getPlugin().getActiveBgSource().getClass().equals(SourceGlimpPlugin.class)) {
|
||||
xDripEnabled = false;
|
||||
nsClientEnabled = false;
|
||||
mm640gEnabled = false;
|
||||
glimpEnabled = true;
|
||||
dexcomG5Enabled = false;
|
||||
poctechEnabled = false;
|
||||
} else if (ConfigBuilderPlugin.getPlugin().getActiveBgSource().getClass().equals(SourceDexcomG5Plugin.class)) {
|
||||
xDripEnabled = false;
|
||||
nsClientEnabled = false;
|
||||
mm640gEnabled = false;
|
||||
glimpEnabled = false;
|
||||
dexcomG5Enabled = true;
|
||||
poctechEnabled = false;
|
||||
} else if (ConfigBuilderPlugin.getPlugin().getActiveBgSource().getClass().equals(SourcePoctechPlugin.class)) {
|
||||
xDripEnabled = false;
|
||||
nsClientEnabled = false;
|
||||
mm640gEnabled = false;
|
||||
glimpEnabled = false;
|
||||
dexcomG5Enabled = false;
|
||||
poctechEnabled = true;
|
||||
}
|
||||
|
||||
boolean isNSProfile = MainApp.getConfigBuilder().getActiveProfileInterface() != null && MainApp.getConfigBuilder().getActiveProfileInterface().getClass().equals(NSProfilePlugin.class);
|
||||
|
@ -129,6 +145,10 @@ public class DataService extends IntentService {
|
|||
if (dexcomG5Enabled) {
|
||||
handleNewDataFromDexcomG5(intent);
|
||||
}
|
||||
} else if (Intents.POCTECH_BG.equals(action)) {
|
||||
if (poctechEnabled) {
|
||||
handleNewDataFromPoctech(intent);
|
||||
}
|
||||
} else if (Intents.ACTION_NEW_SGV.equals(action)) {
|
||||
if (nsClientEnabled || SP.getBoolean(R.string.key_ns_autobackfill, true))
|
||||
handleNewDataFromNSClient(intent);
|
||||
|
@ -250,6 +270,41 @@ public class DataService extends IntentService {
|
|||
}
|
||||
}
|
||||
|
||||
private void handleNewDataFromPoctech(Intent intent) {
|
||||
|
||||
Bundle bundle = intent.getExtras();
|
||||
if (bundle == null) return;
|
||||
|
||||
BgReading bgReading = new BgReading();
|
||||
|
||||
String data = bundle.getString("data");
|
||||
log.debug("Received Poctech Data", data);
|
||||
|
||||
try {
|
||||
JSONArray jsonArray = new JSONArray(data);
|
||||
log.debug("Received Poctech Data size:" + jsonArray.length());
|
||||
for (int i = 0; i < jsonArray.length(); i++) {
|
||||
JSONObject json = jsonArray.getJSONObject(i);
|
||||
bgReading.value = json.getDouble("current");
|
||||
bgReading.direction = json.getString("direction");
|
||||
bgReading.date = json.getLong("date");
|
||||
bgReading.raw = json.getDouble("raw");
|
||||
if (JsonHelper.safeGetString(json, "utils", Constants.MGDL).equals("mmol/L"))
|
||||
bgReading.value = bgReading.value * Constants.MMOLL_TO_MGDL;
|
||||
boolean isNew = MainApp.getDbHelper().createIfNotExists(bgReading, "Poctech");
|
||||
if (isNew && SP.getBoolean(R.string.key_dexcomg5_nsupload, false)) {
|
||||
NSUpload.uploadBg(bgReading);
|
||||
}
|
||||
if (isNew && SP.getBoolean(R.string.key_dexcomg5_xdripupload, false)) {
|
||||
NSUpload.sendToXdrip(bgReading);
|
||||
}
|
||||
}
|
||||
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private void handleNewDataFromMM640g(Intent intent) {
|
||||
Bundle bundle = intent.getExtras();
|
||||
if (bundle == null) return;
|
||||
|
|
|
@ -49,4 +49,6 @@ public interface Intents {
|
|||
String GLIMP_BG = "it.ct.glicemia.ACTION_GLUCOSE_MEASURED";
|
||||
|
||||
String DEXCOMG5_BG = "com.dexcom.cgm.DATA";
|
||||
|
||||
String POCTECH_BG = "com.china.poctech.data";
|
||||
}
|
||||
|
|
|
@ -57,6 +57,11 @@ public abstract class PluginBase {
|
|||
return getName();
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
if (pluginDescription.description == -1) return null;
|
||||
else return MainApp.gs(pluginDescription.description);
|
||||
}
|
||||
|
||||
public PluginType getType() {
|
||||
return pluginDescription.mainType;
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ public class PluginDescription {
|
|||
boolean showInList = true;
|
||||
int pluginName = -1;
|
||||
int shortName = -1;
|
||||
int description = -1;
|
||||
int preferencesId = -1;
|
||||
int advancedPreferencesId = -1;
|
||||
public boolean enableByDefault = false;
|
||||
|
@ -74,6 +75,11 @@ public class PluginDescription {
|
|||
return this;
|
||||
}
|
||||
|
||||
public PluginDescription description(int description) {
|
||||
this.description = description;
|
||||
return this;
|
||||
}
|
||||
|
||||
public String getFragmentClass() {
|
||||
return fragmentClass;
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ public class ActionsPlugin extends PluginBase {
|
|||
.fragmentClass(ActionsFragment.class.getName())
|
||||
.pluginName(R.string.actions)
|
||||
.shortName(R.string.actions_shortname)
|
||||
.description(R.string.description_actions)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -61,6 +61,10 @@ public class FillDialog extends DialogFragment implements OnClickListener {
|
|||
|
||||
private EditText notesEdit;
|
||||
|
||||
//one shot guards
|
||||
private boolean accepted;
|
||||
private boolean okClicked;
|
||||
|
||||
final private TextWatcher textWatcher = new TextWatcher() {
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
|
@ -163,7 +167,14 @@ public class FillDialog extends DialogFragment implements OnClickListener {
|
|||
|
||||
}
|
||||
|
||||
private void confirmAndDeliver() {
|
||||
private synchronized void confirmAndDeliver() {
|
||||
if (okClicked) {
|
||||
log.debug("guarding: ok already clicked");
|
||||
dismiss();
|
||||
return;
|
||||
}
|
||||
okClicked = true;
|
||||
|
||||
try {
|
||||
Double insulin = SafeParse.stringToDouble(editInsulin.getText());
|
||||
|
||||
|
@ -198,32 +209,40 @@ public class FillDialog extends DialogFragment implements OnClickListener {
|
|||
if (insulinAfterConstraints > 0 || pumpSiteChangeCheckbox.isChecked() || insulinCartridgeChangeCheckbox.isChecked()) {
|
||||
builder.setMessage(Html.fromHtml(Joiner.on("<br/>").join(confirmMessage)));
|
||||
builder.setPositiveButton(MainApp.gs(R.string.primefill), (dialog, id) -> {
|
||||
if (finalInsulinAfterConstraints > 0) {
|
||||
DetailedBolusInfo detailedBolusInfo = new DetailedBolusInfo();
|
||||
detailedBolusInfo.insulin = finalInsulinAfterConstraints;
|
||||
detailedBolusInfo.context = context;
|
||||
detailedBolusInfo.source = Source.USER;
|
||||
detailedBolusInfo.isValid = false; // do not count it in IOB (for pump history)
|
||||
detailedBolusInfo.notes = notes;
|
||||
ConfigBuilderPlugin.getCommandQueue().bolus(detailedBolusInfo, new Callback() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!result.success) {
|
||||
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.treatmentdeliveryerror));
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
MainApp.instance().startActivity(i);
|
||||
synchronized (builder) {
|
||||
if (accepted) {
|
||||
log.debug("guarding: already accepted");
|
||||
return;
|
||||
}
|
||||
accepted = true;
|
||||
|
||||
if (finalInsulinAfterConstraints > 0) {
|
||||
DetailedBolusInfo detailedBolusInfo = new DetailedBolusInfo();
|
||||
detailedBolusInfo.insulin = finalInsulinAfterConstraints;
|
||||
detailedBolusInfo.context = context;
|
||||
detailedBolusInfo.source = Source.USER;
|
||||
detailedBolusInfo.isValid = false; // do not count it in IOB (for pump history)
|
||||
detailedBolusInfo.notes = notes;
|
||||
ConfigBuilderPlugin.getCommandQueue().bolus(detailedBolusInfo, new Callback() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!result.success) {
|
||||
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.treatmentdeliveryerror));
|
||||
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
MainApp.instance().startActivity(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
FabricPrivacy.getInstance().logCustom(new CustomEvent("Fill"));
|
||||
});
|
||||
FabricPrivacy.getInstance().logCustom(new CustomEvent("Fill"));
|
||||
}
|
||||
if (pumpSiteChangeCheckbox.isChecked())
|
||||
NSUpload.uploadEvent(CareportalEvent.SITECHANGE, now(), notes);
|
||||
if (insulinCartridgeChangeCheckbox.isChecked())
|
||||
NSUpload.uploadEvent(CareportalEvent.INSULINCHANGE, now() + 1000, notes);
|
||||
}
|
||||
if (pumpSiteChangeCheckbox.isChecked())
|
||||
NSUpload.uploadEvent(CareportalEvent.SITECHANGE, now(), notes);
|
||||
if (insulinCartridgeChangeCheckbox.isChecked())
|
||||
NSUpload.uploadEvent(CareportalEvent.INSULINCHANGE, now() + 1000, notes);
|
||||
});
|
||||
} else {
|
||||
builder.setMessage(MainApp.gs(R.string.no_action_selected));
|
||||
|
|
|
@ -23,6 +23,9 @@ public class CareportalPlugin extends PluginBase {
|
|||
.fragmentClass(CareportalFragment.class.getName())
|
||||
.pluginName(R.string.careportal)
|
||||
.shortName(R.string.careportal_shortname)
|
||||
.visibleByDefault(true)
|
||||
.enableByDefault(true)
|
||||
.description(R.string.description_careportal)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ abstract public class SubscriberFragment extends Fragment {
|
|||
updateGUI();
|
||||
}
|
||||
|
||||
@Override public void onDestroyView() {
|
||||
@Override public synchronized void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
if (unbinder != null)
|
||||
unbinder.unbind();
|
||||
|
|
|
@ -1,30 +1,31 @@
|
|||
package info.nightscout.androidaps.plugins.ConfigBuilder;
|
||||
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ListAdapter;
|
||||
import android.widget.ListView;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.ScrollView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.crashlytics.android.answers.CustomEvent;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.OnCheckedChanged;
|
||||
import butterknife.OnClick;
|
||||
import info.nightscout.androidaps.Config;
|
||||
import butterknife.Optional;
|
||||
import butterknife.Unbinder;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.PreferencesActivity;
|
||||
import info.nightscout.androidaps.R;
|
||||
|
@ -50,69 +51,47 @@ import info.nightscout.utils.PasswordProtection;
|
|||
|
||||
public class ConfigBuilderFragment extends SubscriberFragment {
|
||||
|
||||
@BindView(R.id.configbuilder_insulinlistview)
|
||||
ListView insulinListView;
|
||||
@BindView(R.id.configbuilder_sensitivitylistview)
|
||||
ListView sensitivityListView;
|
||||
@BindView(R.id.configbuilder_bgsourcelistview)
|
||||
ListView bgsourceListView;
|
||||
@BindView(R.id.configbuilder_bgsourcelabel)
|
||||
TextView bgsourceLabel;
|
||||
@BindView(R.id.configbuilder_pumplistview)
|
||||
ListView pumpListView;
|
||||
@BindView(R.id.configbuilder_pumplabel)
|
||||
TextView pumpLabel;
|
||||
@BindView(R.id.configbuilder_looplistview)
|
||||
ListView loopListView;
|
||||
@BindView(R.id.configbuilder_looplabel)
|
||||
TextView loopLabel;
|
||||
@BindView(R.id.configbuilder_treatmentslistview)
|
||||
ListView treatmentsListView;
|
||||
@BindView(R.id.configbuilder_treatmentslabel)
|
||||
TextView treatmentsLabel;
|
||||
@BindView(R.id.configbuilder_profilelistview)
|
||||
ListView profileListView;
|
||||
@BindView(R.id.configbuilder_profilelabel)
|
||||
TextView profileLabel;
|
||||
@BindView(R.id.configbuilder_apslistview)
|
||||
ListView apsListView;
|
||||
@BindView(R.id.configbuilder_apslabel)
|
||||
TextView apsLabel;
|
||||
@BindView(R.id.configbuilder_constraintslistview)
|
||||
ListView constraintsListView;
|
||||
@BindView(R.id.configbuilder_constraintslabel)
|
||||
TextView constraintsLabel;
|
||||
@BindView(R.id.configbuilder_generallistview)
|
||||
ListView generalListView;
|
||||
private List<PluginView> pluginViews = new ArrayList<>();
|
||||
|
||||
@BindView(R.id.configbuilder_mainlayout)
|
||||
LinearLayout mainLayout;
|
||||
@BindView(R.id.configbuilder_unlock)
|
||||
@BindView(R.id.profile_plugins)
|
||||
LinearLayout profilePlugins;
|
||||
@BindView(R.id.insulin_plugins)
|
||||
LinearLayout insulinPlugins;
|
||||
@BindView(R.id.bgsource_plugins)
|
||||
LinearLayout bgSourcePlugins;
|
||||
@BindView(R.id.pump_plugins)
|
||||
LinearLayout pumpPlugins;
|
||||
@BindView(R.id.sensitivity_plugins)
|
||||
LinearLayout sensitivityPlugins;
|
||||
@BindView(R.id.aps_plugins)
|
||||
LinearLayout apsPlugins;
|
||||
@BindView(R.id.loop_plugins)
|
||||
LinearLayout loopPlugins;
|
||||
@BindView(R.id.constraints_plugins)
|
||||
LinearLayout constraintsPlugins;
|
||||
@BindView(R.id.treatments_plugins)
|
||||
LinearLayout treatmentsPlugins;
|
||||
@BindView(R.id.general_plugins)
|
||||
LinearLayout generalPlugins;
|
||||
|
||||
@BindView(R.id.main_layout)
|
||||
ScrollView mainLayout;
|
||||
@BindView(R.id.unlock)
|
||||
Button unlock;
|
||||
|
||||
PluginCustomAdapter insulinDataAdapter = null;
|
||||
PluginCustomAdapter sensivityDataAdapter = null;
|
||||
PluginCustomAdapter bgsourceDataAdapter = null;
|
||||
PluginCustomAdapter pumpDataAdapter = null;
|
||||
PluginCustomAdapter loopDataAdapter = null;
|
||||
PluginCustomAdapter treatmentDataAdapter = null;
|
||||
PluginCustomAdapter profileDataAdapter = null;
|
||||
PluginCustomAdapter apsDataAdapter = null;
|
||||
PluginCustomAdapter constraintsDataAdapter = null;
|
||||
PluginCustomAdapter generalDataAdapter = null;
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
try {
|
||||
View view = inflater.inflate(R.layout.configbuilder_fragment, container, false);
|
||||
|
||||
unbinder = ButterKnife.bind(this, view);
|
||||
|
||||
if (PasswordProtection.isLocked("settings_password"))
|
||||
mainLayout.setVisibility(View.GONE);
|
||||
else
|
||||
unlock.setVisibility(View.GONE);
|
||||
else unlock.setVisibility(View.GONE);
|
||||
|
||||
createViews();
|
||||
|
||||
return view;
|
||||
} catch (Exception e) {
|
||||
FabricPrivacy.logException(e);
|
||||
|
@ -121,222 +100,49 @@ public class ConfigBuilderFragment extends SubscriberFragment {
|
|||
return null;
|
||||
}
|
||||
|
||||
@OnClick(R.id.configbuilder_unlock)
|
||||
public void onClickUnlock() {
|
||||
@OnClick(R.id.unlock)
|
||||
void onClickUnlock() {
|
||||
PasswordProtection.QueryPassword(getContext(), R.string.settings_password, "settings_password", () -> {
|
||||
mainLayout.setVisibility(View.VISIBLE);
|
||||
unlock.setVisibility(View.GONE);
|
||||
}, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
for (PluginView pluginView : pluginViews) pluginView.unbind();
|
||||
pluginViews.clear();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateGUI() {
|
||||
|
||||
insulinDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInListByInterface(InsulinInterface.class, PluginType.INSULIN), PluginType.INSULIN);
|
||||
insulinListView.setAdapter(insulinDataAdapter);
|
||||
setListViewHeightBasedOnChildren(insulinListView);
|
||||
bgsourceDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInListByInterface(BgSourceInterface.class, PluginType.BGSOURCE), PluginType.BGSOURCE);
|
||||
bgsourceListView.setAdapter(bgsourceDataAdapter);
|
||||
if (MainApp.getSpecificPluginsVisibleInList(PluginType.BGSOURCE).size() == 0)
|
||||
bgsourceLabel.setVisibility(View.GONE);
|
||||
setListViewHeightBasedOnChildren(bgsourceListView);
|
||||
pumpDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInList(PluginType.PUMP), PluginType.PUMP);
|
||||
pumpListView.setAdapter(pumpDataAdapter);
|
||||
if (MainApp.getSpecificPluginsVisibleInList(PluginType.PUMP).size() == 0 || Config.NSCLIENT || Config.G5UPLOADER) {
|
||||
pumpLabel.setVisibility(View.GONE);
|
||||
pumpListView.setVisibility(View.GONE);
|
||||
}
|
||||
setListViewHeightBasedOnChildren(pumpListView);
|
||||
loopDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInList(PluginType.LOOP), PluginType.LOOP);
|
||||
loopListView.setAdapter(loopDataAdapter);
|
||||
setListViewHeightBasedOnChildren(loopListView);
|
||||
if (MainApp.getSpecificPluginsVisibleInList(PluginType.LOOP).size() == 0)
|
||||
loopLabel.setVisibility(View.GONE);
|
||||
treatmentDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInList(PluginType.TREATMENT), PluginType.TREATMENT);
|
||||
treatmentsListView.setAdapter(treatmentDataAdapter);
|
||||
setListViewHeightBasedOnChildren(treatmentsListView);
|
||||
if (MainApp.getSpecificPluginsVisibleInList(PluginType.TREATMENT).size() == 0)
|
||||
treatmentsLabel.setVisibility(View.GONE);
|
||||
profileDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInListByInterface(ProfileInterface.class, PluginType.PROFILE), PluginType.PROFILE);
|
||||
profileListView.setAdapter(profileDataAdapter);
|
||||
if (MainApp.getSpecificPluginsVisibleInList(PluginType.PROFILE).size() == 0)
|
||||
profileLabel.setVisibility(View.GONE);
|
||||
setListViewHeightBasedOnChildren(profileListView);
|
||||
apsDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInList(PluginType.APS), PluginType.APS);
|
||||
apsListView.setAdapter(apsDataAdapter);
|
||||
setListViewHeightBasedOnChildren(apsListView);
|
||||
if (MainApp.getSpecificPluginsVisibleInList(PluginType.APS).size() == 0)
|
||||
apsLabel.setVisibility(View.GONE);
|
||||
sensivityDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInListByInterface(SensitivityInterface.class, PluginType.SENSITIVITY), PluginType.SENSITIVITY);
|
||||
sensitivityListView.setAdapter(sensivityDataAdapter);
|
||||
setListViewHeightBasedOnChildren(sensitivityListView);
|
||||
constraintsDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInListByInterface(ConstraintsInterface.class, PluginType.CONSTRAINTS), PluginType.CONSTRAINTS);
|
||||
constraintsListView.setAdapter(constraintsDataAdapter);
|
||||
setListViewHeightBasedOnChildren(constraintsListView);
|
||||
if (MainApp.getSpecificPluginsVisibleInList(PluginType.CONSTRAINTS).size() == 0)
|
||||
constraintsLabel.setVisibility(View.GONE);
|
||||
generalDataAdapter = new PluginCustomAdapter(getContext(), R.layout.configbuilder_simpleitem, MainApp.getSpecificPluginsVisibleInList(PluginType.GENERAL), PluginType.GENERAL);
|
||||
generalListView.setAdapter(generalDataAdapter);
|
||||
setListViewHeightBasedOnChildren(generalListView);
|
||||
for (PluginView pluginView : pluginViews) pluginView.update();
|
||||
}
|
||||
|
||||
/*
|
||||
* ConfigBuilderFragment code
|
||||
*/
|
||||
|
||||
private class PluginCustomAdapter extends ArrayAdapter<PluginBase> {
|
||||
|
||||
private ArrayList<PluginBase> pluginList;
|
||||
final private PluginType type;
|
||||
|
||||
PluginCustomAdapter(Context context, int textViewResourceId,
|
||||
ArrayList<PluginBase> pluginList, PluginType type) {
|
||||
super(context, textViewResourceId, pluginList);
|
||||
this.pluginList = new ArrayList<>();
|
||||
this.pluginList.addAll(pluginList);
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
private class PluginViewHolder {
|
||||
TextView name;
|
||||
CheckBox checkboxEnabled;
|
||||
CheckBox checkboxVisible;
|
||||
ImageView settings;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public View getView(int position, View view, @NonNull ViewGroup parent) {
|
||||
|
||||
PluginViewHolder holder;
|
||||
PluginBase plugin = pluginList.get(position);
|
||||
|
||||
if (view == null) {
|
||||
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.configbuilder_simpleitem, null);
|
||||
|
||||
holder = new PluginViewHolder();
|
||||
holder.name = (TextView) view.findViewById(R.id.configbuilder_simpleitem_name);
|
||||
holder.checkboxEnabled = (CheckBox) view.findViewById(R.id.configbuilder_simpleitem_checkboxenabled);
|
||||
holder.checkboxVisible = (CheckBox) view.findViewById(R.id.configbuilder_simpleitem_checkboxvisible);
|
||||
holder.settings = (ImageView) view.findViewById(R.id.configbuilder_simpleitem_settings);
|
||||
|
||||
if (plugin.isEnabled(type) && plugin.getPreferencesId() != -1)
|
||||
holder.settings.setVisibility(View.VISIBLE);
|
||||
else
|
||||
holder.settings.setVisibility(View.INVISIBLE);
|
||||
|
||||
view.setTag(holder);
|
||||
|
||||
holder.checkboxEnabled.setOnClickListener(v -> {
|
||||
CheckBox cb = (CheckBox) v;
|
||||
PluginBase plugin1 = (PluginBase) cb.getTag();
|
||||
plugin1.setPluginEnabled(type, cb.isChecked());
|
||||
plugin1.setFragmentVisible(type, cb.isChecked());
|
||||
onEnabledCategoryChanged(plugin1, type);
|
||||
ConfigBuilderPlugin.getPlugin().storeSettings("CheckedCheckboxEnabled");
|
||||
MainApp.bus().post(new EventRefreshGui());
|
||||
MainApp.bus().post(new EventConfigBuilderChange());
|
||||
ConfigBuilderPlugin.getPlugin().logPluginStatus();
|
||||
FabricPrivacy.getInstance().logCustom(new CustomEvent("ConfigurationChange"));
|
||||
});
|
||||
|
||||
holder.checkboxVisible.setOnClickListener(v -> {
|
||||
CheckBox cb = (CheckBox) v;
|
||||
PluginBase plugin12 = (PluginBase) cb.getTag();
|
||||
plugin12.setFragmentVisible(type, cb.isChecked());
|
||||
ConfigBuilderPlugin.getPlugin().storeSettings("CheckedCheckboxVisible");
|
||||
MainApp.bus().post(new EventRefreshGui());
|
||||
ConfigBuilderPlugin.getPlugin().logPluginStatus();
|
||||
});
|
||||
|
||||
holder.settings.setOnClickListener(v -> {
|
||||
final PluginBase plugin13 = (PluginBase) v.getTag();
|
||||
PasswordProtection.QueryPassword(getContext(), R.string.settings_password, "settings_password", () -> {
|
||||
Intent i = new Intent(getContext(), PreferencesActivity.class);
|
||||
i.putExtra("id", plugin13.getPreferencesId());
|
||||
startActivity(i);
|
||||
}, null);
|
||||
});
|
||||
|
||||
holder.name.setOnLongClickListener(v -> {
|
||||
final PluginBase plugin14 = (PluginBase) v.getTag();
|
||||
PasswordProtection.QueryPassword(getContext(), R.string.settings_password, "settings_password", () -> {
|
||||
Intent i = new Intent(getContext(), PreferencesActivity.class);
|
||||
i.putExtra("id", plugin14.getPreferencesId());
|
||||
startActivity(i);
|
||||
}, null);
|
||||
return false;
|
||||
});
|
||||
|
||||
} else {
|
||||
holder = (PluginViewHolder) view.getTag();
|
||||
}
|
||||
|
||||
holder.name.setText(plugin.getName());
|
||||
holder.checkboxEnabled.setChecked(plugin.isEnabled(type));
|
||||
holder.checkboxVisible.setChecked(plugin.isFragmentVisible());
|
||||
holder.name.setTag(plugin);
|
||||
holder.checkboxEnabled.setTag(plugin);
|
||||
holder.checkboxVisible.setTag(plugin);
|
||||
holder.settings.setTag(plugin);
|
||||
|
||||
if (plugin.pluginDescription.alwaysEnabled) {
|
||||
holder.checkboxEnabled.setEnabled(false);
|
||||
}
|
||||
|
||||
if (plugin.pluginDescription.alwayVisible) {
|
||||
holder.checkboxEnabled.setEnabled(false);
|
||||
}
|
||||
|
||||
if (!plugin.isEnabled(type)) {
|
||||
holder.checkboxVisible.setEnabled(false);
|
||||
}
|
||||
|
||||
if (!plugin.hasFragment()) {
|
||||
holder.checkboxVisible.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
// Hide enabled control and force enabled plugin if there is only one plugin available
|
||||
if (type == PluginType.INSULIN || type == PluginType.PUMP || type == PluginType.SENSITIVITY)
|
||||
if (pluginList.size() < 2) {
|
||||
holder.checkboxEnabled.setEnabled(false);
|
||||
plugin.setPluginEnabled(type, true);
|
||||
ConfigBuilderPlugin.getPlugin().storeSettings("ForceEnable");
|
||||
}
|
||||
|
||||
// Constraints cannot be disabled
|
||||
if (type == PluginType.CONSTRAINTS)
|
||||
holder.checkboxEnabled.setEnabled(false);
|
||||
|
||||
// Hide disabled profiles by default
|
||||
if (type == PluginType.PROFILE) {
|
||||
if (!plugin.isEnabled(type)) {
|
||||
holder.checkboxVisible.setEnabled(false);
|
||||
holder.checkboxVisible.setChecked(false);
|
||||
} else {
|
||||
holder.checkboxVisible.setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
// Disable profile control for pump profiles if pump is not enabled
|
||||
if (type == PluginType.PROFILE) {
|
||||
if (PumpInterface.class.isAssignableFrom(plugin.getClass())) {
|
||||
if (!plugin.isEnabled(PluginType.PUMP)) {
|
||||
holder.checkboxEnabled.setEnabled(false);
|
||||
holder.checkboxEnabled.setChecked(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (plugin.isEnabled(type)) {
|
||||
view.setBackgroundColor(MainApp.gc(R.color.configBuilderSelectedBackground));
|
||||
}
|
||||
|
||||
return view;
|
||||
private void createViews() {
|
||||
createViewsForPlugins(profilePlugins, MainApp.getSpecificPluginsVisibleInListByInterface(ProfileInterface.class, PluginType.PROFILE));
|
||||
createViewsForPlugins(insulinPlugins, MainApp.getSpecificPluginsVisibleInListByInterface(InsulinInterface.class, PluginType.INSULIN));
|
||||
createViewsForPlugins(bgSourcePlugins, MainApp.getSpecificPluginsVisibleInListByInterface(BgSourceInterface.class, PluginType.BGSOURCE));
|
||||
createViewsForPlugins(pumpPlugins, MainApp.getSpecificPluginsVisibleInList(PluginType.PUMP));
|
||||
createViewsForPlugins(sensitivityPlugins, MainApp.getSpecificPluginsVisibleInListByInterface(SensitivityInterface.class, PluginType.SENSITIVITY));
|
||||
createViewsForPlugins(apsPlugins, MainApp.getSpecificPluginsVisibleInList(PluginType.APS));
|
||||
createViewsForPlugins(loopPlugins, MainApp.getSpecificPluginsVisibleInList(PluginType.LOOP));
|
||||
createViewsForPlugins(constraintsPlugins, MainApp.getSpecificPluginsVisibleInListByInterface(ConstraintsInterface.class, PluginType.CONSTRAINTS));
|
||||
createViewsForPlugins(treatmentsPlugins, MainApp.getSpecificPluginsVisibleInList(PluginType.TREATMENT));
|
||||
createViewsForPlugins(generalPlugins, MainApp.getSpecificPluginsVisibleInList(PluginType.GENERAL));
|
||||
}
|
||||
|
||||
private void createViewsForPlugins(LinearLayout parent, List<PluginBase> plugins) {
|
||||
for (PluginBase plugin: plugins) {
|
||||
PluginView pluginView = new PluginView(plugin);
|
||||
parent.addView(pluginView.getBaseView());
|
||||
pluginViews.add(pluginView);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean areMultipleSelectionsAllowed(PluginType type) {
|
||||
return type == PluginType.GENERAL || type == PluginType.CONSTRAINTS ||type == PluginType.LOOP;
|
||||
}
|
||||
|
||||
public static void processOnEnabledCategoryChanged(PluginBase changedPlugin, PluginType type) {
|
||||
|
@ -394,35 +200,90 @@ public class ConfigBuilderFragment extends SubscriberFragment {
|
|||
}
|
||||
}
|
||||
|
||||
void onEnabledCategoryChanged(PluginBase changedPlugin, PluginType type) {
|
||||
processOnEnabledCategoryChanged(changedPlugin, type);
|
||||
updateGUI();
|
||||
}
|
||||
class PluginView {
|
||||
|
||||
/****
|
||||
* Method for Setting the Height of the ListView dynamically.
|
||||
* *** Hack to fix the issue of not showing all the items of the ListView
|
||||
* *** when placed inside a ScrollView
|
||||
****/
|
||||
public static void setListViewHeightBasedOnChildren(ListView listView) {
|
||||
ListAdapter listAdapter = listView.getAdapter();
|
||||
if (listAdapter == null)
|
||||
return;
|
||||
private Unbinder unbinder;
|
||||
private PluginBase plugin;
|
||||
|
||||
int desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(), View.MeasureSpec.UNSPECIFIED);
|
||||
int totalHeight = 0;
|
||||
View view = null;
|
||||
for (int i = 0; i < listAdapter.getCount(); i++) {
|
||||
view = listAdapter.getView(i, view, listView);
|
||||
if (i == 0)
|
||||
view.setLayoutParams(new ViewGroup.LayoutParams(desiredWidth, ViewGroup.LayoutParams.WRAP_CONTENT));
|
||||
LinearLayout baseView;
|
||||
@BindView(R.id.plugin_enabled_exclusive)
|
||||
RadioButton enabledExclusive;
|
||||
@BindView(R.id.plugin_enabled_inclusive)
|
||||
CheckBox enabledInclusive;
|
||||
@BindView(R.id.plugin_name)
|
||||
TextView pluginName;
|
||||
@BindView(R.id.plugin_description)
|
||||
TextView pluginDescription;
|
||||
@BindView(R.id.plugin_preferences)
|
||||
ImageButton pluginPreferences;
|
||||
@BindView(R.id.plugin_visibility)
|
||||
CheckBox pluginVisibility;
|
||||
|
||||
view.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
|
||||
totalHeight += view.getMeasuredHeight();
|
||||
public PluginView(PluginBase plugin) {
|
||||
this.plugin = plugin;
|
||||
baseView = (LinearLayout) getLayoutInflater().inflate(R.layout.configbuilder_single_plugin, null);
|
||||
unbinder = ButterKnife.bind(this, baseView);
|
||||
update();
|
||||
}
|
||||
ViewGroup.LayoutParams params = listView.getLayoutParams();
|
||||
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
|
||||
listView.setLayoutParams(params);
|
||||
|
||||
public LinearLayout getBaseView() {
|
||||
return baseView;
|
||||
}
|
||||
|
||||
public void update() {
|
||||
enabledExclusive.setVisibility(areMultipleSelectionsAllowed(plugin.getType()) ? View.GONE : View.VISIBLE);
|
||||
enabledInclusive.setVisibility(areMultipleSelectionsAllowed(plugin.getType()) ? View.VISIBLE : View.GONE);
|
||||
enabledExclusive.setChecked(plugin.isEnabled(plugin.getType()));
|
||||
enabledInclusive.setChecked(plugin.isEnabled(plugin.getType()));
|
||||
enabledInclusive.setEnabled(!plugin.pluginDescription.alwaysEnabled);
|
||||
enabledExclusive.setEnabled(!plugin.pluginDescription.alwaysEnabled);
|
||||
pluginName.setText(plugin.getName());
|
||||
if (plugin.getDescription() == null) pluginDescription.setVisibility(View.GONE);
|
||||
else {
|
||||
pluginDescription.setVisibility(View.VISIBLE);
|
||||
pluginDescription.setText(plugin.getDescription());
|
||||
}
|
||||
pluginPreferences.setVisibility(plugin.getPreferencesId() == -1 || !plugin.isEnabled(plugin.getType()) ? View.INVISIBLE : View.VISIBLE);
|
||||
pluginVisibility.setVisibility(plugin.hasFragment() ? View.VISIBLE : View.INVISIBLE);
|
||||
pluginVisibility.setEnabled(!(plugin.pluginDescription.neverVisible || plugin.pluginDescription.alwayVisible) && plugin.isEnabled(plugin.getType()));
|
||||
pluginVisibility.setChecked(plugin.isFragmentVisible());
|
||||
}
|
||||
|
||||
@OnClick(R.id.plugin_visibility)
|
||||
void onVisibilityChanged() {
|
||||
plugin.setFragmentVisible(plugin.getType(), pluginVisibility.isChecked());
|
||||
ConfigBuilderPlugin.getPlugin().storeSettings("CheckedCheckboxVisible");
|
||||
MainApp.bus().post(new EventRefreshGui());
|
||||
ConfigBuilderPlugin.getPlugin().logPluginStatus();
|
||||
}
|
||||
|
||||
@OnClick({R.id.plugin_enabled_exclusive, R.id.plugin_enabled_inclusive})
|
||||
void onEnabledChanged() {
|
||||
boolean enabled = enabledExclusive.getVisibility() == View.VISIBLE ? enabledExclusive.isChecked() : enabledInclusive.isChecked();
|
||||
plugin.setPluginEnabled(plugin.getType(), enabled);
|
||||
plugin.setFragmentVisible(plugin.getType(), enabled);
|
||||
processOnEnabledCategoryChanged(plugin, plugin.getType());
|
||||
updateGUI();
|
||||
ConfigBuilderPlugin.getPlugin().storeSettings("CheckedCheckboxEnabled");
|
||||
MainApp.bus().post(new EventRefreshGui());
|
||||
MainApp.bus().post(new EventConfigBuilderChange());
|
||||
ConfigBuilderPlugin.getPlugin().logPluginStatus();
|
||||
FabricPrivacy.getInstance().logCustom(new CustomEvent("ConfigurationChange"));
|
||||
}
|
||||
|
||||
@OnClick(R.id.plugin_preferences)
|
||||
void onPluginPreferencesClicked() {
|
||||
PasswordProtection.QueryPassword(getContext(), R.string.settings_password, "settings_password", () -> {
|
||||
Intent i = new Intent(getContext(), PreferencesActivity.class);
|
||||
i.putExtra("id", plugin.getPreferencesId());
|
||||
startActivity(i);
|
||||
}, null);
|
||||
}
|
||||
|
||||
public void unbind() {
|
||||
unbinder.unbind();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -92,6 +92,7 @@ public class ConfigBuilderPlugin extends PluginBase {
|
|||
.alwayVisible(false)
|
||||
.pluginName(R.string.configbuilder)
|
||||
.shortName(R.string.configbuilder_shortname)
|
||||
.description(R.string.description_config_builder)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -56,6 +56,7 @@ public class ObjectivesPlugin extends PluginBase implements ConstraintsInterface
|
|||
.showInList(!Config.NSCLIENT && !Config.G5UPLOADER)
|
||||
.pluginName(R.string.objectives)
|
||||
.shortName(R.string.objectives_shortname)
|
||||
.description(R.string.description_objectives)
|
||||
);
|
||||
initializeData();
|
||||
loadProgress();
|
||||
|
|
|
@ -26,6 +26,7 @@ public class FoodPlugin extends PluginBase {
|
|||
.fragmentClass(FoodFragment.class.getName())
|
||||
.pluginName(R.string.food)
|
||||
.shortName(R.string.food_short)
|
||||
.description(R.string.description_food)
|
||||
);
|
||||
this.service = new FoodService();
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@ public abstract class InsulinOrefBasePlugin extends PluginBase implements Insuli
|
|||
.fragmentClass(InsulinFragment.class.getName())
|
||||
.pluginName(R.string.fastactinginsulin)
|
||||
.shortName(R.string.insulin_shortname)
|
||||
.visibleByDefault(false)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -24,7 +24,8 @@ public class InsulinOrefFreePeakPlugin extends InsulinOrefBasePlugin {
|
|||
super();
|
||||
pluginDescription
|
||||
.pluginName(R.string.free_peak_oref)
|
||||
.preferencesId(R.xml.pref_insulinoreffreepeak);
|
||||
.preferencesId(R.xml.pref_insulinoreffreepeak)
|
||||
.description(R.string.description_insulin_free_peak);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -22,7 +22,8 @@ public class InsulinOrefRapidActingPlugin extends InsulinOrefBasePlugin {
|
|||
private InsulinOrefRapidActingPlugin() {
|
||||
super();
|
||||
pluginDescription
|
||||
.pluginName(R.string.rapid_acting_oref);
|
||||
.pluginName(R.string.rapid_acting_oref)
|
||||
.description(R.string.description_insulin_rapid);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -22,7 +22,8 @@ public class InsulinOrefUltraRapidActingPlugin extends InsulinOrefBasePlugin {
|
|||
private InsulinOrefUltraRapidActingPlugin() {
|
||||
super();
|
||||
pluginDescription
|
||||
.pluginName(R.string.ultrarapid_oref);
|
||||
.pluginName(R.string.ultrarapid_oref)
|
||||
.description(R.string.description_insulin_ultra_rapid);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -94,6 +94,7 @@ public class LoopPlugin extends PluginBase {
|
|||
.pluginName(R.string.loop)
|
||||
.shortName(R.string.loop_shortname)
|
||||
.preferencesId(R.xml.pref_closedmode)
|
||||
.description(R.string.description_loop)
|
||||
);
|
||||
loopSuspendedTill = SP.getLong("loopSuspendedTill", 0L);
|
||||
isSuperBolus = SP.getBoolean("isSuperBolus", false);
|
||||
|
|
|
@ -69,6 +69,7 @@ public class NSClientPlugin extends PluginBase {
|
|||
.pluginName(R.string.nsclientinternal)
|
||||
.shortName(R.string.nsclientinternal_shortname)
|
||||
.preferencesId(R.xml.pref_nsclientinternal)
|
||||
.description(R.string.description_ns_client)
|
||||
);
|
||||
|
||||
if (Config.NSCLIENT || Config.G5UPLOADER) {
|
||||
|
|
|
@ -62,6 +62,7 @@ public class OpenAPSAMAPlugin extends PluginBase implements APSInterface {
|
|||
.pluginName(R.string.openapsama)
|
||||
.shortName(R.string.oaps_shortname)
|
||||
.preferencesId(R.xml.pref_openapsama)
|
||||
.description(R.string.description_ama)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -62,6 +62,7 @@ public class OpenAPSMAPlugin extends PluginBase implements APSInterface {
|
|||
.pluginName(R.string.openapsma)
|
||||
.shortName(R.string.oaps_shortname)
|
||||
.preferencesId(R.xml.pref_openapsma)
|
||||
.description(R.string.description_ma)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -65,6 +65,7 @@ public class OpenAPSSMBPlugin extends PluginBase implements APSInterface {
|
|||
.pluginName(R.string.openapssmb)
|
||||
.shortName(R.string.smb_shortname)
|
||||
.preferencesId(R.xml.pref_openapssmb)
|
||||
.description(R.string.description_smb)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -315,6 +315,7 @@ public class WizardDialog extends DialogFragment implements OnClickListener, Com
|
|||
confirmMessage += "<br/>" + MainApp.gs(R.string.carbs) + ": " + "<font color='" + MainApp.gc(R.color.carbs) + "'>" + carbsAfterConstraints + "g" + "</font>";
|
||||
|
||||
if (insulinAfterConstraints - calculatedTotalInsulin != 0 || !carbsAfterConstraints.equals(calculatedCarbs)) {
|
||||
okClicked = false;
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
builder.setTitle(MainApp.gs(R.string.treatmentdeliveryerror));
|
||||
builder.setMessage(MainApp.gs(R.string.constraints_violation) + "\n" + MainApp.gs(R.string.changeyourinput));
|
||||
|
@ -408,9 +409,9 @@ public class WizardDialog extends DialogFragment implements OnClickListener, Com
|
|||
|
||||
private void initDialog() {
|
||||
Profile profile = MainApp.getConfigBuilder().getProfile();
|
||||
ProfileStore profileStore = MainApp.getConfigBuilder().getActiveProfileInterface().getProfile();
|
||||
ProfileStore profileStore = MainApp.getConfigBuilder().getActiveProfileInterface() != null ? MainApp.getConfigBuilder().getActiveProfileInterface().getProfile() : null;
|
||||
|
||||
if (profile == null) {
|
||||
if (profile == null || profileStore == null) {
|
||||
ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.noprofile));
|
||||
dismiss();
|
||||
return;
|
||||
|
|
|
@ -672,12 +672,15 @@ public class OverviewFragment extends Fragment implements View.OnClickListener,
|
|||
|
||||
private void onClickAcceptTemp() {
|
||||
Profile profile = MainApp.getConfigBuilder().getProfile();
|
||||
Context context = getContext();
|
||||
|
||||
if (context == null) return;
|
||||
|
||||
if (LoopPlugin.getPlugin().isEnabled(PluginType.LOOP) && profile != null) {
|
||||
LoopPlugin.getPlugin().invoke("Accept temp button", false);
|
||||
final LoopPlugin.LastRun finalLastRun = LoopPlugin.lastRun;
|
||||
if (finalLastRun != null && finalLastRun.lastAPSRun != null && finalLastRun.constraintsProcessed.isChangeRequested()) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
||||
builder.setTitle(MainApp.gs(R.string.confirmation));
|
||||
builder.setMessage(MainApp.gs(R.string.setbasalquestion) + "\n" + finalLastRun.constraintsProcessed);
|
||||
builder.setPositiveButton(MainApp.gs(R.string.ok), (dialog, id) -> {
|
||||
|
|
|
@ -50,6 +50,7 @@ public class OverviewPlugin extends PluginBase {
|
|||
.pluginName(R.string.overview)
|
||||
.shortName(R.string.overview_shortname)
|
||||
.preferencesId(R.xml.pref_overview)
|
||||
.description(R.string.description_overview)
|
||||
);
|
||||
String storedData = SP.getString("QuickWizard", "[]");
|
||||
try {
|
||||
|
|
|
@ -57,6 +57,7 @@ public class PersistentNotificationPlugin extends PluginBase {
|
|||
.neverVisible(true)
|
||||
.pluginName(R.string.ongoingnotificaction)
|
||||
.enableByDefault(true)
|
||||
.description(R.string.description_persistent_notification)
|
||||
);
|
||||
this.ctx = ctx;
|
||||
}
|
||||
|
|
|
@ -64,6 +64,7 @@ public class LocalProfilePlugin extends PluginBase implements ProfileInterface {
|
|||
.fragmentClass(LocalProfileFragment.class.getName())
|
||||
.pluginName(R.string.localprofile)
|
||||
.shortName(R.string.localprofile_shortname)
|
||||
.description(R.string.description_profile_local)
|
||||
);
|
||||
loadSettings();
|
||||
}
|
||||
|
|
|
@ -49,6 +49,7 @@ public class NSProfilePlugin extends PluginBase implements ProfileInterface {
|
|||
.alwaysEnabled(Config.NSCLIENT)
|
||||
.alwayVisible(Config.NSCLIENT)
|
||||
.showInList(!Config.NSCLIENT)
|
||||
.description(R.string.description_profile_nightscout)
|
||||
);
|
||||
loadNSProfile();
|
||||
}
|
||||
|
|
|
@ -52,6 +52,7 @@ public class SimpleProfilePlugin extends PluginBase implements ProfileInterface
|
|||
.fragmentClass(SimpleProfileFragment.class.getName())
|
||||
.pluginName(R.string.simpleprofile)
|
||||
.shortName(R.string.simpleprofile_shortname)
|
||||
.description(R.string.description_profile_simple)
|
||||
);
|
||||
loadSettings();
|
||||
}
|
||||
|
|
|
@ -167,6 +167,7 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint
|
|||
.fragmentClass(ComboFragment.class.getName())
|
||||
.pluginName(R.string.combopump)
|
||||
.shortName(R.string.combopump_shortname)
|
||||
.description(R.string.description_pump_combo)
|
||||
);
|
||||
ruffyScripter = new RuffyScripter(MainApp.instance().getApplicationContext());
|
||||
}
|
||||
|
|
|
@ -59,6 +59,7 @@ public abstract class AbstractDanaRPlugin extends PluginBase implements PumpInte
|
|||
.pluginName(R.string.danarspump)
|
||||
.shortName(R.string.danarpump_shortname)
|
||||
.preferencesId(R.xml.pref_danars)
|
||||
.description(R.string.description_pump_dana_r)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -162,19 +162,24 @@ public class DanaRFragment extends SubscriberFragment {
|
|||
activity.runOnUiThread(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (c.sStatus == EventPumpStatusChanged.CONNECTING)
|
||||
btConnectionView.setText("{fa-bluetooth-b spin} " + c.sSecondsElapsed + "s");
|
||||
else if (c.sStatus == EventPumpStatusChanged.CONNECTED)
|
||||
btConnectionView.setText("{fa-bluetooth}");
|
||||
else if (c.sStatus == EventPumpStatusChanged.DISCONNECTED)
|
||||
btConnectionView.setText("{fa-bluetooth-b}");
|
||||
public void run() {
|
||||
synchronized(DanaRFragment.this){
|
||||
|
||||
if (!status.equals("")) {
|
||||
pumpStatusView.setText(status);
|
||||
pumpStatusLayout.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
pumpStatusLayout.setVisibility(View.GONE);
|
||||
if(btConnectionView == null || pumpStatusView == null || pumpStatusLayout == null ) return;
|
||||
|
||||
if (c.sStatus == EventPumpStatusChanged.CONNECTING)
|
||||
btConnectionView.setText("{fa-bluetooth-b spin} " + c.sSecondsElapsed + "s");
|
||||
else if (c.sStatus == EventPumpStatusChanged.CONNECTED)
|
||||
btConnectionView.setText("{fa-bluetooth}");
|
||||
else if (c.sStatus == EventPumpStatusChanged.DISCONNECTED)
|
||||
btConnectionView.setText("{fa-bluetooth-b}");
|
||||
|
||||
if (!status.equals("")) {
|
||||
pumpStatusView.setText(status);
|
||||
pumpStatusLayout.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
pumpStatusLayout.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -382,6 +382,6 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
|
|||
|
||||
@Override
|
||||
public PumpEnactResult setUserOptions() {
|
||||
return null;
|
||||
return sExecutionService.setUserOptions();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package info.nightscout.androidaps.plugins.PumpDanaR.activities;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.widget.Button;
|
||||
import android.widget.RadioButton;
|
||||
|
@ -20,13 +19,10 @@ import info.nightscout.androidaps.MainApp;
|
|||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.events.EventInitializationChanged;
|
||||
import info.nightscout.androidaps.interfaces.PluginType;
|
||||
import info.nightscout.androidaps.plugins.Overview.Dialogs.ErrorHelperActivity;
|
||||
import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPlugin;
|
||||
import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump;
|
||||
import info.nightscout.androidaps.plugins.PumpDanaRKorean.DanaRKoreanPlugin;
|
||||
import info.nightscout.androidaps.plugins.PumpDanaRS.DanaRSPlugin;
|
||||
import info.nightscout.androidaps.plugins.PumpDanaRv2.DanaRv2Plugin;
|
||||
import info.nightscout.androidaps.queue.Callback;
|
||||
import info.nightscout.utils.NumberPicker;
|
||||
|
||||
/**
|
||||
|
@ -83,9 +79,6 @@ public class DanaRUserOptionsActivity extends Activity {
|
|||
|
||||
saveToPumpButton.setOnClickListener(v -> onSaveClick());
|
||||
|
||||
boolean isv2 = MainApp.getSpecificPlugin(DanaRv2Plugin.class) != null && MainApp.getSpecificPlugin(DanaRv2Plugin.class).isEnabled(PluginType.PUMP);
|
||||
|
||||
|
||||
DanaRPump pump = DanaRPump.getInstance();
|
||||
//used for debugging
|
||||
log.debug("UserOptionsLoaded:" + (System.currentTimeMillis() - pump.lastConnection) / 1000 + " s ago"
|
||||
|
@ -96,20 +89,6 @@ public class DanaRUserOptionsActivity extends Activity {
|
|||
+ "\nbacklight:" + pump.backlightOnTimeSec
|
||||
+ "\npumpUnits:" + pump.units
|
||||
+ "\nlowReservoir:" + pump.lowReservoirRate);
|
||||
log.debug("isV2:"+isv2);
|
||||
if(isv2 && pump.lowReservoirRate < 10){
|
||||
log.debug("No user settings loaded forcing reload!");
|
||||
DanaRv2Plugin.getPlugin().getUserOptions();
|
||||
log.debug("UserOptionsLoaded:" + (System.currentTimeMillis() - pump.lastConnection) / 1000 + " s ago"
|
||||
+ "\ntimeDisplayType:" + pump.timeDisplayType
|
||||
+ "\nbuttonScroll:" + pump.buttonScrollOnOff
|
||||
+ "\ntimeDisplayType:" + pump.timeDisplayType
|
||||
+ "\nlcdOnTimeSec:" + pump.lcdOnTimeSec
|
||||
+ "\nbacklight:" + pump.backlightOnTimeSec
|
||||
+ "\npumpUnits:" + pump.units
|
||||
+ "\nlowReservoir:" + pump.lowReservoirRate);
|
||||
|
||||
}
|
||||
|
||||
screenTimeout.setParams((double) pump.lcdOnTimeSec, 5d, 240d, 5d, new DecimalFormat("1"), false);
|
||||
backlightTimeout.setParams((double) pump.backlightOnTimeSec, 1d, 60d, 1d, new DecimalFormat("1"), false);
|
||||
|
@ -164,9 +143,6 @@ public class DanaRUserOptionsActivity extends Activity {
|
|||
//exit if pump is not DanaRS, Dana!, or DanaR with upgraded firmware
|
||||
return;
|
||||
}
|
||||
if (isDanaRv2) {
|
||||
DanaRv2Plugin.getPlugin().getUserOptions();
|
||||
}
|
||||
DanaRPump pump = DanaRPump.getInstance();
|
||||
|
||||
if (timeFormat.isChecked())
|
||||
|
@ -205,11 +181,7 @@ public class DanaRUserOptionsActivity extends Activity {
|
|||
} else
|
||||
pump.lowReservoirRate = 10;
|
||||
|
||||
if (isDanaRv2) {
|
||||
DanaRv2Plugin.getPlugin().setUserOptions();
|
||||
}
|
||||
|
||||
MainApp.getConfigBuilder().getCommandQueue().setUserSettings(null);
|
||||
MainApp.getConfigBuilder().getCommandQueue().setUserOptions(null);
|
||||
finish();
|
||||
}
|
||||
|
||||
|
|
|
@ -56,11 +56,11 @@ public class MessageHashTable {
|
|||
put(new MsgSettingGlucose()); // 0x3209 CMD_SETTING_V_GLUCOSEandEASY
|
||||
put(new MsgSettingPumpTime()); // 0x320A CMD_SETTING_V_TIME_I
|
||||
put(new MsgSettingUserOptions()); // 0x320B CMD_SETTING_V_USER_OPTIONS
|
||||
put(new MsgGetUserOptions()); // 0x320B CMD_SETTING_V_USER_OPTIONS - trying to get uptions
|
||||
put(new MsgSettingActiveProfile()); // 0x320C CMD_SETTING_V_PROFILE_NUMBER
|
||||
put(new MsgSettingProfileRatiosAll()); // 0x320D CMD_SETTING_V_CIR_CF_VALUE
|
||||
put(new MsgSetSingleBasalProfile()); // 0x3302 CMD_SETTING_BASAL_INS_S
|
||||
put(new MsgSetBasalProfile()); // 0x3306 CMD_SETTING_BASAL_PROFILE_S
|
||||
put(new MsgSetUserOptions()); // 0x330B CMD_SETTING_USER_OPTIONS_S
|
||||
put(new MsgSetActivateBasalProfile()); // 0x330C CMD_SETTING_PROFILE_NUMBER_S
|
||||
put(new MsgHistoryAllDone()); // 0x41F1 CMD_HISTORY_ALL_DONE
|
||||
put(new MsgHistoryAll()); // 0x41F2 CMD_HISTORY_ALL
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
package info.nightscout.androidaps.plugins.PumpDanaR.comm;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import info.nightscout.androidaps.Config;
|
||||
import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump;
|
||||
|
||||
/**
|
||||
* Created by mike on 05.07.2016.
|
||||
*/
|
||||
public class MsgSetUserOptions extends MessageBase {
|
||||
|
||||
public boolean done;
|
||||
|
||||
public MsgSetUserOptions() {
|
||||
SetCommand(0x330B);
|
||||
|
||||
DanaRPump pump = DanaRPump.getInstance();
|
||||
|
||||
log.debug(" initializing MsgSetUserOptions");
|
||||
log.debug("timeDisplayType: " + (byte) pump.timeDisplayType);
|
||||
log.debug("Button scroll: " + (byte) pump.buttonScrollOnOff);
|
||||
log.debug("BeepAndAlarm: " + (byte) pump.beepAndAlarm);
|
||||
log.debug("screen timeout: " + (byte) pump.lcdOnTimeSec);
|
||||
log.debug("Backlight: " + (byte) pump.backlightOnTimeSec);
|
||||
log.debug("Selected language: " + (byte) pump.selectedLanguage);
|
||||
log.debug("Units: " + (byte) pump.units);
|
||||
log.debug("Shutdown: " + (byte) pump.shutdownHour);
|
||||
log.debug("Low reservoir: " + (byte) pump.lowReservoirRate);
|
||||
// need to organize here
|
||||
// glucoseunit is at pos 8 and lowReservoirRate is at pos 27
|
||||
AddParamByte((byte) pump.timeDisplayType);
|
||||
AddParamByte((byte) pump.buttonScrollOnOff);
|
||||
AddParamByte((byte) pump.beepAndAlarm);
|
||||
AddParamByte((byte) pump.lcdOnTimeSec);
|
||||
AddParamByte((byte) pump.backlightOnTimeSec);
|
||||
AddParamByte((byte) pump.selectedLanguage);
|
||||
AddParamByte((byte) pump.units);
|
||||
AddParamByte((byte) pump.shutdownHour);
|
||||
AddParamByte((byte) pump.lowReservoirRate);
|
||||
}
|
||||
|
||||
private static Logger log = LoggerFactory.getLogger(MsgSetUserOptions.class);
|
||||
|
||||
public void handleMessage(byte[] bytes) {
|
||||
log.debug("Entering handleMessage ");
|
||||
int result = intFromBuff(bytes, 0, 1);
|
||||
if (result != 1) {
|
||||
failed = true;
|
||||
log.debug("Setting user options: " + result + " FAILED!!!");
|
||||
} else {
|
||||
if (Config.logDanaMessageDetail)
|
||||
log.debug("Setting user options: " + result);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -4,11 +4,12 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
import android.support.v4.internal.view.SupportMenu;
|
||||
|
||||
import info.nightscout.androidaps.Config;
|
||||
import info.nightscout.androidaps.plugins.PumpDanaR.DanaRPump;
|
||||
|
||||
/**
|
||||
* Created by mike on 05.07.2016.
|
||||
* Created by Rumen Georgiev on 6/11/2018.
|
||||
*/
|
||||
<<<<<<< HEAD
|
||||
public class MsgSettingUserOptions extends MessageBase {
|
||||
|
||||
private int backlightOnTimeSec;
|
||||
|
@ -63,6 +64,10 @@ public class MsgSettingUserOptions extends MessageBase {
|
|||
// 6 extended bolus on/off
|
||||
// 10 missed bolus
|
||||
}
|
||||
=======
|
||||
|
||||
public class MsgSettingUserOptions extends MessageBase {
|
||||
>>>>>>> upstream/rsoption
|
||||
|
||||
private static Logger log = LoggerFactory.getLogger(MsgSettingUserOptions.class);
|
||||
|
||||
|
@ -70,6 +75,7 @@ public class MsgSettingUserOptions extends MessageBase {
|
|||
SetCommand(0x320B);
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
public void handleMessage(byte[] bytes) {
|
||||
log.debug("Entering handleMessage ");
|
||||
newOptions = new byte[]{bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5], bytes[6], bytes[7], bytes[8], bytes[9], bytes[15], bytes[16], bytes[17], bytes[18], bytes[19], bytes[20], bytes[21], bytes[22], bytes[23], bytes[24], bytes[25], bytes[26], bytes[27], bytes[28], bytes[29], bytes[30], bytes[31], bytes[32]};
|
||||
|
@ -80,8 +86,52 @@ public class MsgSettingUserOptions extends MessageBase {
|
|||
} else {
|
||||
if (Config.logDanaMessageDetail)
|
||||
log.debug("Setting user options: " + result);
|
||||
=======
|
||||
public void handleMessage(byte[] packet) {
|
||||
DanaRPump pump = DanaRPump.getInstance();
|
||||
byte[] bytes = getDataBytes(packet, 0, packet.length - 10);
|
||||
for(int pos=0; pos < bytes.length; pos++) {
|
||||
log.debug("[" + pos + "]" + bytes[pos]);
|
||||
>>>>>>> upstream/rsoption
|
||||
}
|
||||
pump.timeDisplayType = bytes[0] == (byte) 1 ? 0 : 1; // 1 -> 24h 0 -> 12h
|
||||
pump.buttonScrollOnOff = bytes[1] == (byte) 1 ? 1 : 0; // 1 -> ON, 0-> OFF
|
||||
pump.beepAndAlarm = bytes[2]; // 1 -> Sound on alarm 2-> Vibrate on alarm 3-> Both on alarm 5-> Sound + beep 6-> vibrate + beep 7-> both + beep Beep adds 4
|
||||
pump.lcdOnTimeSec = bytes[3] & 255;
|
||||
pump.backlightOnTimeSec = bytes[4] & 255;
|
||||
pump.selectedLanguage = bytes[5]; // on DanaRv2 is that needed ?
|
||||
pump.units = bytes[8];
|
||||
pump.shutdownHour = bytes[9];
|
||||
pump.lowReservoirRate = bytes[32] & 255;
|
||||
/* int selectableLanguage1 = bytes[10];
|
||||
int selectableLanguage2 = bytes[11];
|
||||
int selectableLanguage3 = bytes[12];
|
||||
int selectableLanguage4 = bytes[13];
|
||||
int selectableLanguage5 = bytes[14];
|
||||
*/
|
||||
|
||||
// if (Config.logDanaMessageDetail) {
|
||||
|
||||
log.debug("timeDisplayType: " + pump.timeDisplayType);
|
||||
log.debug("Button scroll: " + pump.buttonScrollOnOff);
|
||||
log.debug("BeepAndAlarm: " + pump.beepAndAlarm);
|
||||
log.debug("screen timeout: " + pump.lcdOnTimeSec);
|
||||
log.debug("Backlight: " + pump.backlightOnTimeSec);
|
||||
log.debug("Selected language: " + pump.selectedLanguage);
|
||||
log.debug("Units: " + pump.getUnits());
|
||||
log.debug("Shutdown: " + pump.shutdownHour);
|
||||
log.debug("Low reservoir: " + pump.lowReservoirRate);
|
||||
// }
|
||||
}
|
||||
public static byte[] getDataBytes(byte[] bytes, int start, int len) {
|
||||
if (bytes == null) {
|
||||
return null;
|
||||
}
|
||||
byte[] ret = new byte[len];
|
||||
System.arraycopy(bytes, start + 6, ret, 0, len);
|
||||
return ret;
|
||||
}
|
||||
<<<<<<< HEAD
|
||||
|
||||
public byte[] getCommByte(int cmd, byte[] data) {
|
||||
int len = (data == null ? 0 : data.length) + 3;
|
||||
|
@ -128,4 +178,6 @@ public class MsgSettingUserOptions extends MessageBase {
|
|||
return (li_crc ^ (((li_crc & 255) << 4) << 1)) & SupportMenu.USER_MASK;
|
||||
}
|
||||
|
||||
=======
|
||||
>>>>>>> upstream/rsoption
|
||||
}
|
||||
|
|
|
@ -92,6 +92,7 @@ public abstract class AbstractDanaRExecutionService extends Service {
|
|||
|
||||
public abstract boolean extendedBolusStop();
|
||||
|
||||
public abstract PumpEnactResult setUserOptions();
|
||||
|
||||
protected BroadcastReceiver receiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
|
|
|
@ -18,8 +18,8 @@ import info.nightscout.androidaps.MainApp;
|
|||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||
import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgGetUserOptions;
|
||||
import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSettingUserOptions;
|
||||
import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetUserOptions;
|
||||
import info.nightscout.androidaps.plugins.Treatments.Treatment;
|
||||
import info.nightscout.androidaps.events.EventAppExit;
|
||||
import info.nightscout.androidaps.events.EventInitializationChanged;
|
||||
|
@ -64,7 +64,6 @@ import info.nightscout.androidaps.plugins.PumpDanaR.events.EventDanaRNewStatus;
|
|||
import info.nightscout.androidaps.queue.Callback;
|
||||
import info.nightscout.utils.NSUpload;
|
||||
import info.nightscout.utils.SP;
|
||||
import info.nightscout.utils.ToastUtils;
|
||||
|
||||
public class DanaRExecutionService extends AbstractDanaRExecutionService{
|
||||
|
||||
|
@ -179,6 +178,7 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService{
|
|||
mSerialIOThread.sendMessage(new MsgSettingActiveProfile());
|
||||
mSerialIOThread.sendMessage(new MsgSettingProfileRatios());
|
||||
mSerialIOThread.sendMessage(new MsgSettingProfileRatiosAll());
|
||||
mSerialIOThread.sendMessage(new MsgSettingUserOptions());
|
||||
MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumptime)));
|
||||
mSerialIOThread.sendMessage(new MsgSettingPumpTime());
|
||||
long timeDiff = (mDanaRPump.pumpTime.getTime() - System.currentTimeMillis()) / 1000L;
|
||||
|
@ -384,30 +384,6 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService{
|
|||
return true;
|
||||
}
|
||||
|
||||
public PumpEnactResult getUserOptions() {
|
||||
if (!isConnected())
|
||||
return new PumpEnactResult().success(false);
|
||||
DanaRPump pump = DanaRPump.getInstance();
|
||||
MsgGetUserOptions msg = new MsgGetUserOptions();
|
||||
mDanaRPump.lastConnection = System.currentTimeMillis();
|
||||
return new PumpEnactResult().success(true);
|
||||
}
|
||||
|
||||
public PumpEnactResult updateUserOptions() {
|
||||
if (!isConnected())
|
||||
return new PumpEnactResult().success(false);
|
||||
DanaRPump pump = DanaRPump.getInstance();
|
||||
MsgSettingUserOptions msg = new MsgSettingUserOptions(pump.timeDisplayType, pump.buttonScrollOnOff, pump.beepAndAlarm, pump.lcdOnTimeSec, pump.backlightOnTimeSec, pump.selectedLanguage, pump.units, pump.shutdownHour, pump.lowReservoirRate, 0, 0);
|
||||
|
||||
mSerialIOThread.sendMessage(msg);
|
||||
while (!msg.done && mRfcommSocket.isConnected()) {
|
||||
SystemClock.sleep(100);
|
||||
}
|
||||
SystemClock.sleep(200);
|
||||
mDanaRPump.lastConnection = System.currentTimeMillis();
|
||||
return new PumpEnactResult().success(true);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onStatusEvent(EventAppExit event) {
|
||||
if (Config.logFunctionCalls)
|
||||
|
@ -423,4 +399,13 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService{
|
|||
log.debug("EventAppExit finished");
|
||||
}
|
||||
|
||||
public PumpEnactResult setUserOptions() {
|
||||
if (!isConnected())
|
||||
return new PumpEnactResult().success(false);
|
||||
SystemClock.sleep(300);
|
||||
MsgSetUserOptions msg = new MsgSetUserOptions();
|
||||
mSerialIOThread.sendMessage(msg);
|
||||
SystemClock.sleep(200);
|
||||
return new PumpEnactResult().success(!msg.failed);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -327,4 +327,9 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
|
|||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public PumpEnactResult setUserOptions() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -83,6 +83,7 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte
|
|||
.pluginName(R.string.danarspump)
|
||||
.shortName(R.string.danarspump_shortname)
|
||||
.preferencesId(R.xml.pref_danars)
|
||||
.description(R.string.description_pump_dana_rs)
|
||||
);
|
||||
|
||||
pumpDescription.isBolusCapable = true;
|
||||
|
|
|
@ -391,14 +391,11 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
|
|||
|
||||
@Override
|
||||
public PumpEnactResult setUserOptions() {
|
||||
<<<<<<< HEAD
|
||||
DanaRv2ExecutionService service = new DanaRv2ExecutionService();
|
||||
return service.setUserOptions();
|
||||
=======
|
||||
return sExecutionService.setUserOptions();
|
||||
>>>>>>> upstream/rsoption
|
||||
}
|
||||
|
||||
public PumpEnactResult getUserOptions() {
|
||||
DanaRv2ExecutionService service = new DanaRv2ExecutionService();
|
||||
log.debug("MsgGetUserOptions executed!");
|
||||
return service.getUserOptions();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -66,6 +66,7 @@ public class MessageHashTable_v2 {
|
|||
put(new MsgSettingProfileRatiosAll()); // 0x320D CMD_SETTING_V_CIR_CF_VALUE
|
||||
put(new MsgSetSingleBasalProfile()); // 0x3302 CMD_SETTING_BASAL_INS_S
|
||||
put(new MsgSetBasalProfile()); // 0x3306 CMD_SETTING_BASAL_PROFILE_S
|
||||
put(new MsgSetUserOptions()); // 0x330B CMD_SETTING_USER_OPTIONS_S
|
||||
put(new MsgSetActivateBasalProfile()); // 0x330C CMD_SETTING_PROFILE_NUMBER_S
|
||||
put(new MsgHistoryAllDone()); // 0x41F1 CMD_HISTORY_ALL_DONE
|
||||
put(new MsgHistoryAll()); // 0x41F2 CMD_HISTORY_ALL
|
||||
|
|
|
@ -18,8 +18,8 @@ import info.nightscout.androidaps.MainApp;
|
|||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.data.Profile;
|
||||
import info.nightscout.androidaps.data.PumpEnactResult;
|
||||
import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgGetUserOptions;
|
||||
import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSettingUserOptions;
|
||||
import info.nightscout.androidaps.plugins.PumpDanaR.comm.MsgSetUserOptions;
|
||||
import info.nightscout.androidaps.plugins.Treatments.Treatment;
|
||||
import info.nightscout.androidaps.events.EventAppExit;
|
||||
import info.nightscout.androidaps.events.EventInitializationChanged;
|
||||
|
@ -70,7 +70,6 @@ import info.nightscout.utils.DateUtil;
|
|||
import info.nightscout.utils.NSUpload;
|
||||
import info.nightscout.utils.SP;
|
||||
import info.nightscout.utils.T;
|
||||
import info.nightscout.utils.ToastUtils;
|
||||
|
||||
public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
|
||||
|
||||
|
@ -201,8 +200,12 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
|
|||
mSerialIOThread.sendMessage(new MsgSettingGlucose());
|
||||
mSerialIOThread.sendMessage(new MsgSettingActiveProfile());
|
||||
mSerialIOThread.sendMessage(new MsgSettingProfileRatios());
|
||||
<<<<<<< HEAD
|
||||
//added by Roumen for testing and
|
||||
mSerialIOThread.sendMessage(new MsgGetUserOptions());
|
||||
=======
|
||||
mSerialIOThread.sendMessage(new MsgSettingUserOptions());
|
||||
>>>>>>> upstream/rsoption
|
||||
mSerialIOThread.sendMessage(new MsgSettingProfileRatiosAll());
|
||||
MainApp.bus().post(new EventPumpStatusChanged(MainApp.gs(R.string.gettingpumptime)));
|
||||
mSerialIOThread.sendMessage(new MsgSettingPumpTime());
|
||||
|
@ -477,26 +480,22 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
|
|||
}
|
||||
|
||||
public PumpEnactResult setUserOptions() {
|
||||
<<<<<<< HEAD
|
||||
if (!isConnected()) {
|
||||
return new PumpEnactResult().success(false);
|
||||
}
|
||||
=======
|
||||
if (!isConnected())
|
||||
return new PumpEnactResult().success(false);
|
||||
>>>>>>> upstream/rsoption
|
||||
SystemClock.sleep(300);
|
||||
DanaRPump pump = DanaRPump.getInstance();
|
||||
MsgSettingUserOptions msg = new MsgSettingUserOptions(pump.timeDisplayType, pump.buttonScrollOnOff, pump.beepAndAlarm, pump.lcdOnTimeSec, pump.backlightOnTimeSec, pump.selectedLanguage, pump.units, pump.shutdownHour, pump.lowReservoirRate, 0, 0);
|
||||
if (mSerialIOThread != null) {
|
||||
mSerialIOThread.disconnect("MsgSetUserOptions - Recreate SerialIOThread");
|
||||
}
|
||||
mSerialIOThread = new SerialIOThread(mRfcommSocket);
|
||||
MainApp.bus().post(new EventPumpStatusChanged(EventPumpStatusChanged.CONNECTED, 0));
|
||||
MsgSetUserOptions msg = new MsgSetUserOptions();
|
||||
mSerialIOThread.sendMessage(msg);
|
||||
while (!msg.done && mRfcommSocket.isConnected()) {
|
||||
SystemClock.sleep(100);
|
||||
}
|
||||
SystemClock.sleep(200);
|
||||
mDanaRPump.lastConnection = System.currentTimeMillis();
|
||||
return new PumpEnactResult().success(true);
|
||||
return new PumpEnactResult().success(!msg.failed);
|
||||
}
|
||||
|
||||
<<<<<<< HEAD
|
||||
public PumpEnactResult getUserOptions() {
|
||||
if (!isConnected()) {
|
||||
return new PumpEnactResult().success(false);
|
||||
|
@ -506,4 +505,6 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
|
|||
mDanaRPump.lastConnection = System.currentTimeMillis();
|
||||
return new PumpEnactResult().success(true);
|
||||
}
|
||||
=======
|
||||
>>>>>>> upstream/rsoption
|
||||
}
|
||||
|
|
|
@ -112,6 +112,7 @@ public class InsightPlugin extends PluginBase implements PumpInterface, Constrai
|
|||
.pluginName(R.string.insightpump)
|
||||
.shortName(R.string.insightpump_shortname)
|
||||
.preferencesId(R.xml.pref_insightpump)
|
||||
.description(R.string.description_pump_insight)
|
||||
);
|
||||
log("InsightPlugin instantiated");
|
||||
pumpDescription.isBolusCapable = true;
|
||||
|
|
|
@ -42,6 +42,7 @@ public class MDIPlugin extends PluginBase implements PumpInterface {
|
|||
super(new PluginDescription()
|
||||
.mainType(PluginType.PUMP)
|
||||
.pluginName(R.string.mdi)
|
||||
.description(R.string.description_pump_mdi)
|
||||
);
|
||||
pumpDescription.isBolusCapable = true;
|
||||
pumpDescription.bolusStep = 0.5d;
|
||||
|
|
|
@ -77,6 +77,8 @@ public class VirtualPumpPlugin extends PluginBase implements PumpInterface {
|
|||
.pluginName(R.string.virtualpump)
|
||||
.shortName(R.string.virtualpump_shortname)
|
||||
.preferencesId(R.xml.pref_virtualpump)
|
||||
.neverVisible(BuildConfig.NSCLIENTOLNY || BuildConfig.G5UPLOADER)
|
||||
.description(R.string.description_pump_virtual)
|
||||
);
|
||||
pumpDescription.isBolusCapable = true;
|
||||
pumpDescription.bolusStep = 0.1d;
|
||||
|
|
|
@ -47,6 +47,7 @@ public class SensitivityAAPSPlugin extends PluginBase implements SensitivityInte
|
|||
.pluginName(R.string.sensitivityaaps)
|
||||
.shortName(R.string.sensitivity_shortname)
|
||||
.preferencesId(R.xml.pref_absorption_aaps)
|
||||
.description(R.string.description_sensitivity_aaps)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@ public class SensitivityOref0Plugin extends PluginBase implements SensitivityInt
|
|||
.pluginName(R.string.sensitivityoref0)
|
||||
.shortName(R.string.sensitivity_shortname)
|
||||
.preferencesId(R.xml.pref_absorption_oref0)
|
||||
.description(R.string.description_sensitivity_oref0)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -43,6 +43,7 @@ public class SensitivityWeightedAveragePlugin extends PluginBase implements Sens
|
|||
.pluginName(R.string.sensitivityweightedaverage)
|
||||
.shortName(R.string.sensitivity_shortname)
|
||||
.preferencesId(R.xml.pref_absorption_aaps)
|
||||
.description(R.string.description_sensitivity_weighted_average)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -124,6 +124,7 @@ public class SmsCommunicatorPlugin extends PluginBase {
|
|||
.pluginName(R.string.smscommunicator)
|
||||
.shortName(R.string.smscommunicator_shortname)
|
||||
.preferencesId(R.xml.pref_smscommunicator)
|
||||
.description(R.string.description_sms_communicator)
|
||||
);
|
||||
processSettings(null);
|
||||
}
|
||||
|
|
|
@ -29,6 +29,7 @@ public class SourceDexcomG5Plugin extends PluginBase implements BgSourceInterfac
|
|||
.shortName(R.string.dexcomG5_shortname)
|
||||
.showInList(!Config.NSCLIENT)
|
||||
.preferencesId(R.xml.pref_dexcomg5)
|
||||
.description(R.string.description_source_dexcom_g5)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@ public class SourceGlimpPlugin extends PluginBase implements BgSourceInterface {
|
|||
.mainType(PluginType.BGSOURCE)
|
||||
.fragmentClass(BGSourceFragment.class.getName())
|
||||
.pluginName(R.string.Glimp)
|
||||
.description(R.string.description_source_glimp)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ public class SourceMM640gPlugin extends PluginBase implements BgSourceInterface
|
|||
.mainType(PluginType.BGSOURCE)
|
||||
.fragmentClass(BGSourceFragment.class.getName())
|
||||
.pluginName(R.string.MM640g)
|
||||
.description(R.string.description_source_mm640g)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ public class SourceNSClientPlugin extends PluginBase implements BgSourceInterfac
|
|||
.pluginName(R.string.nsclientbg)
|
||||
.showInList(!Config.NSCLIENT)
|
||||
.alwaysEnabled(Config.NSCLIENT)
|
||||
.description(R.string.description_source_ns_client)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
package info.nightscout.androidaps.plugins.Source;
|
||||
|
||||
import info.nightscout.androidaps.Config;
|
||||
import info.nightscout.androidaps.R;
|
||||
import info.nightscout.androidaps.interfaces.BgSourceInterface;
|
||||
import info.nightscout.androidaps.interfaces.PluginBase;
|
||||
import info.nightscout.androidaps.interfaces.PluginDescription;
|
||||
import info.nightscout.androidaps.interfaces.PluginType;
|
||||
|
||||
/**
|
||||
* Created by mike on 05.08.2016.
|
||||
*/
|
||||
public class SourcePoctechPlugin extends PluginBase implements BgSourceInterface {
|
||||
|
||||
private static SourcePoctechPlugin plugin = null;
|
||||
|
||||
public static SourcePoctechPlugin getPlugin() {
|
||||
if (plugin == null)
|
||||
plugin = new SourcePoctechPlugin();
|
||||
return plugin;
|
||||
}
|
||||
|
||||
private SourcePoctechPlugin() {
|
||||
super(new PluginDescription()
|
||||
.mainType(PluginType.BGSOURCE)
|
||||
.fragmentClass(BGSourceFragment.class.getName())
|
||||
.pluginName(R.string.poctech)
|
||||
.showInList(!Config.NSCLIENT)
|
||||
.preferencesId(R.xml.pref_poctech)
|
||||
.description(R.string.description_source_poctech)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean advancedFilteringSupported() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
|
@ -26,6 +26,7 @@ public class SourceXdripPlugin extends PluginBase implements BgSourceInterface {
|
|||
.mainType(PluginType.BGSOURCE)
|
||||
.fragmentClass(BGSourceFragment.class.getName())
|
||||
.pluginName(R.string.xdrip)
|
||||
.description(R.string.description_source_xdrip)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -80,6 +80,7 @@ public class TreatmentsPlugin extends PluginBase implements TreatmentsInterface
|
|||
.shortName(R.string.treatments_shortname)
|
||||
.preferencesId(R.xml.pref_absorption_oref0)
|
||||
.alwaysEnabled(true)
|
||||
.description(R.string.description_treatments)
|
||||
);
|
||||
this.service = new TreatmentService();
|
||||
}
|
||||
|
|
|
@ -56,6 +56,7 @@ public class WearPlugin extends PluginBase {
|
|||
.pluginName(R.string.wear)
|
||||
.shortName(R.string.wear_shortname)
|
||||
.preferencesId(R.xml.pref_wear)
|
||||
.description(R.string.description_wear)
|
||||
);
|
||||
this.ctx = ctx;
|
||||
}
|
||||
|
|
|
@ -70,6 +70,7 @@ public class StatuslinePlugin extends PluginBase {
|
|||
.shortName(R.string.xdripstatus_shortname)
|
||||
.neverVisible(true)
|
||||
.preferencesId(R.xml.pref_xdripstatus)
|
||||
.description(R.string.description_xdrip_status_line)
|
||||
);
|
||||
this.ctx = ctx;
|
||||
this.mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
|
||||
|
|
|
@ -405,7 +405,7 @@ public class CommandQueue {
|
|||
}
|
||||
|
||||
// returns true if command is queued
|
||||
public boolean setUserSettings(Callback callback) {
|
||||
public boolean setUserOptions(Callback callback) {
|
||||
if (isRunning(Command.CommandType.SETUSERSETTINGS)) {
|
||||
if (callback != null)
|
||||
callback.result(executingNowError()).run();
|
||||
|
|
|
@ -18,6 +18,7 @@ import org.slf4j.LoggerFactory;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import info.nightscout.androidaps.BuildConfig;
|
||||
import info.nightscout.androidaps.MainApp;
|
||||
import info.nightscout.androidaps.PreferencesActivity;
|
||||
import info.nightscout.androidaps.R;
|
||||
|
@ -85,8 +86,14 @@ public class SWDefinition {
|
|||
return this;
|
||||
}
|
||||
|
||||
|
||||
SWDefinition() {
|
||||
if (BuildConfig.FLAVOR.equals("full"))
|
||||
SWDefinitionFull();
|
||||
else if (BuildConfig.FLAVOR.equals("nsclient"))
|
||||
SWDefinitionNSClient();
|
||||
}
|
||||
|
||||
private void SWDefinitionFull() {
|
||||
// List all the screens here
|
||||
add(new SWScreen(R.string.nav_setupwizard)
|
||||
.add(new SWInfotext()
|
||||
|
@ -228,6 +235,7 @@ public class SWDefinition {
|
|||
.add(new SWBreak())
|
||||
.add(new SWPlugin()
|
||||
.option(PluginType.INSULIN)
|
||||
.makeVisible(false)
|
||||
.label(R.string.configbuilder_insulin))
|
||||
.add(new SWBreak())
|
||||
.add(new SWButton()
|
||||
|
@ -441,4 +449,177 @@ public class SWDefinition {
|
|||
;
|
||||
}
|
||||
|
||||
private void SWDefinitionNSClient() {
|
||||
// List all the screens here
|
||||
add(new SWScreen(R.string.nav_setupwizard)
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.welcometosetupwizard))
|
||||
.add(new SWButton()
|
||||
.text(R.string.nav_import)
|
||||
.action(() -> ImportExportPrefs.importSharedPreferences(getActivity()))
|
||||
.visibility(ImportExportPrefs.file::exists))
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.backupismissing)
|
||||
.visibility(() -> !ImportExportPrefs.file.exists()))
|
||||
)
|
||||
.add(new SWScreen(R.string.language)
|
||||
.skippable(false)
|
||||
.add(new SWRadioButton()
|
||||
.option(R.array.languagesArray, R.array.languagesValues)
|
||||
.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);
|
||||
return SP.contains(R.string.key_language);
|
||||
})
|
||||
)
|
||||
.add(new SWScreen(R.string.end_user_license_agreement)
|
||||
.skippable(false)
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.end_user_license_agreement_text))
|
||||
.add(new SWBreak())
|
||||
.add(new SWButton()
|
||||
.text(R.string.end_user_license_agreement_i_understand)
|
||||
.visibility(() -> !SP.getBoolean(R.string.key_i_understand, false))
|
||||
.action(() -> {
|
||||
SP.putBoolean(R.string.key_i_understand, true);
|
||||
MainApp.bus().post(new EventSWUpdate(false));
|
||||
}))
|
||||
.visibility(() -> !SP.getBoolean(R.string.key_i_understand, false))
|
||||
.validator(() -> SP.getBoolean(R.string.key_i_understand, false))
|
||||
)
|
||||
.add(new SWScreen(R.string.permission)
|
||||
.skippable(false)
|
||||
.add(new SWInfotext()
|
||||
.label(String.format(MainApp.gs(R.string.needwhitelisting), MainApp.gs(R.string.app_name))))
|
||||
.add(new SWBreak())
|
||||
.add(new SWButton()
|
||||
.text(R.string.askforpermission)
|
||||
.visibility(() -> Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !AndroidPermission.checkForPermission(getActivity(), Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS))
|
||||
.action(() -> AndroidPermission.askForPermission(getActivity(), Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, AndroidPermission.CASE_BATTERY)))
|
||||
.visibility(() -> Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !AndroidPermission.checkForPermission(getActivity(), Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS))
|
||||
.validator(() -> !(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !AndroidPermission.checkForPermission(getActivity(), Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)))
|
||||
)
|
||||
.add(new SWScreen(R.string.permission)
|
||||
.skippable(false)
|
||||
.add(new SWInfotext()
|
||||
.label(MainApp.gs(R.string.needstoragepermission)))
|
||||
.add(new SWBreak())
|
||||
.add(new SWButton()
|
||||
.text(R.string.askforpermission)
|
||||
.visibility(() -> Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !AndroidPermission.checkForPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE))
|
||||
.action(() -> AndroidPermission.askForPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE, AndroidPermission.CASE_STORAGE)))
|
||||
.visibility(() -> Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !AndroidPermission.checkForPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE))
|
||||
.validator(() -> !(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !AndroidPermission.checkForPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)))
|
||||
)
|
||||
.add(new SWScreen(R.string.nsclientinternal_title)
|
||||
.skippable(true)
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.nsclientinfotext))
|
||||
.add(new SWBreak())
|
||||
.add(new SWButton()
|
||||
.text(R.string.enable_nsclient)
|
||||
.action(() -> {
|
||||
NSClientPlugin.getPlugin().setPluginEnabled(PluginType.GENERAL, true);
|
||||
NSClientPlugin.getPlugin().setFragmentVisible(PluginType.GENERAL, true);
|
||||
ConfigBuilderFragment.processOnEnabledCategoryChanged(NSClientPlugin.getPlugin(), PluginType.GENERAL);
|
||||
ConfigBuilderPlugin.getPlugin().storeSettings("SetupWizard");
|
||||
MainApp.bus().post(new EventConfigBuilderChange());
|
||||
MainApp.bus().post(new EventSWUpdate(true));
|
||||
})
|
||||
.visibility(() -> !NSClientPlugin.getPlugin().isEnabled(PluginType.GENERAL)))
|
||||
.add(new SWEditUrl()
|
||||
.preferenceId(R.string.key_nsclientinternal_url)
|
||||
.label(R.string.nsclientinternal_url_title)
|
||||
.comment(R.string.nsclientinternal_url_dialogmessage))
|
||||
.add(new SWEditString()
|
||||
.validator(text -> text.length() >= 12)
|
||||
.preferenceId(R.string.key_nsclientinternal_api_secret)
|
||||
.label(R.string.nsclientinternal_secret_dialogtitle)
|
||||
.comment(R.string.nsclientinternal_secret_dialogmessage))
|
||||
.add(new SWBreak())
|
||||
.add(new SWEventListener(this)
|
||||
.label(R.string.status)
|
||||
.initialStatus(NSClientPlugin.getPlugin().status)
|
||||
.listener(new Object() {
|
||||
@Subscribe
|
||||
public void onEventNSClientStatus(EventNSClientStatus event) {
|
||||
MainApp.bus().post(new EventSWLabel(event.status));
|
||||
}
|
||||
})
|
||||
)
|
||||
.add(new SWBreak())
|
||||
.validator(() -> NSClientPlugin.getPlugin().nsClientService != null && NSClientPlugin.getPlugin().nsClientService.isConnected && NSClientPlugin.getPlugin().nsClientService.hasWriteAuth)
|
||||
.visibility(() -> !(NSClientPlugin.getPlugin().nsClientService != null && NSClientPlugin.getPlugin().nsClientService.isConnected && NSClientPlugin.getPlugin().nsClientService.hasWriteAuth))
|
||||
)
|
||||
.add(new SWScreen(R.string.patientage)
|
||||
.skippable(false)
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.patientage_summary))
|
||||
.add(new SWBreak())
|
||||
.add(new SWRadioButton()
|
||||
.option(R.array.ageArray, R.array.ageValues)
|
||||
.preferenceId(R.string.key_age)
|
||||
.label(R.string.patientage)
|
||||
.comment(R.string.patientage_summary))
|
||||
.validator(() -> SP.contains(R.string.key_age))
|
||||
)
|
||||
.add(new SWScreen(R.string.configbuilder_insulin)
|
||||
.skippable(false)
|
||||
.add(new SWInfotext()
|
||||
.label(MainApp.gs(R.string.rapid_acting_oref) + ": " + MainApp.gs(R.string.fastactinginsulincomment)))
|
||||
.add(new SWInfotext()
|
||||
.label(MainApp.gs(R.string.ultrarapid_oref) + ": " + MainApp.gs(R.string.ultrafastactinginsulincomment)))
|
||||
.add(new SWInfotext()
|
||||
.label(MainApp.gs(R.string.free_peak_oref) + ": " + MainApp.gs(R.string.free_peak_oref_description)))
|
||||
.add(new SWBreak())
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.diawarning))
|
||||
.add(new SWBreak())
|
||||
.add(new SWPlugin()
|
||||
.option(PluginType.INSULIN)
|
||||
.makeVisible(false)
|
||||
.label(R.string.configbuilder_insulin))
|
||||
.add(new SWBreak())
|
||||
.add(new SWButton()
|
||||
.text(R.string.insulinsourcesetup)
|
||||
.action(() -> {
|
||||
final PluginBase plugin = (PluginBase) MainApp.getConfigBuilder().getActiveInsulin();
|
||||
PasswordProtection.QueryPassword(activity, R.string.settings_password, "settings_password", () -> {
|
||||
Intent i = new Intent(activity, PreferencesActivity.class);
|
||||
i.putExtra("id", plugin.getPreferencesId());
|
||||
activity.startActivity(i);
|
||||
}, null);
|
||||
})
|
||||
.visibility(() -> MainApp.getConfigBuilder().getActiveInsulin()!= null && ((PluginBase) MainApp.getConfigBuilder().getActiveInsulin()).getPreferencesId() > 0))
|
||||
.validator(() -> MainApp.getConfigBuilder().getActiveInsulin() != null)
|
||||
)
|
||||
.add(new SWScreen(R.string.configbuilder_sensitivity)
|
||||
.skippable(false)
|
||||
.add(new SWInfotext()
|
||||
.label(R.string.setupwizard_sensitivity_description))
|
||||
.add(new SWHtmlLink()
|
||||
.label(R.string.setupwizard_sensitivity_url))
|
||||
.add(new SWBreak())
|
||||
.add(new SWPlugin()
|
||||
.option(PluginType.SENSITIVITY)
|
||||
.label(R.string.configbuilder_sensitivity))
|
||||
.add(new SWBreak())
|
||||
.add(new SWButton()
|
||||
.text(R.string.sensitivitysetup)
|
||||
.action(() -> {
|
||||
final PluginBase plugin = (PluginBase) MainApp.getConfigBuilder().getActiveSensitivity();
|
||||
PasswordProtection.QueryPassword(activity, R.string.settings_password, "settings_password", () -> {
|
||||
Intent i = new Intent(activity, PreferencesActivity.class);
|
||||
i.putExtra("id", plugin.getPreferencesId());
|
||||
activity.startActivity(i);
|
||||
}, null);
|
||||
})
|
||||
.visibility(() -> MainApp.getConfigBuilder().getActiveSensitivity() != null && ((PluginBase) MainApp.getConfigBuilder().getActiveSensitivity()).getPreferencesId() > 0))
|
||||
.validator(() -> MainApp.getConfigBuilder().getActiveSensitivity() != null)
|
||||
)
|
||||
;
|
||||
}
|
||||
|
||||
}
|
|
@ -25,6 +25,8 @@ public class SWPlugin extends SWItem {
|
|||
private PluginType pType;
|
||||
private RadioGroup radioGroup;
|
||||
|
||||
private boolean makeVisible = true;
|
||||
|
||||
public SWPlugin() {
|
||||
super(Type.PLUGIN);
|
||||
}
|
||||
|
@ -34,6 +36,11 @@ public class SWPlugin extends SWItem {
|
|||
return this;
|
||||
}
|
||||
|
||||
public SWPlugin makeVisible(boolean makeVisible) {
|
||||
this.makeVisible = makeVisible;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateDialog(View view, LinearLayout layout) {
|
||||
Context context = view.getContext();
|
||||
|
@ -58,10 +65,10 @@ public class SWPlugin extends SWItem {
|
|||
|
||||
radioGroup.setOnCheckedChangeListener((group, checkedId) -> {
|
||||
RadioButton rb = group.findViewById(checkedId);
|
||||
PluginBase plugin1 = (PluginBase) rb.getTag();
|
||||
plugin1.setPluginEnabled(pType, rb.isChecked());
|
||||
plugin1.setFragmentVisible(pType, rb.isChecked());
|
||||
ConfigBuilderFragment.processOnEnabledCategoryChanged(plugin1, pType);
|
||||
PluginBase plugin = (PluginBase) rb.getTag();
|
||||
plugin.setPluginEnabled(pType, rb.isChecked());
|
||||
plugin.setFragmentVisible(pType, rb.isChecked() && makeVisible);
|
||||
ConfigBuilderFragment.processOnEnabledCategoryChanged(plugin, pType);
|
||||
ConfigBuilderPlugin.getPlugin().storeSettings("SetupWizard");
|
||||
MainApp.bus().post(new EventConfigBuilderChange());
|
||||
MainApp.bus().post(new EventSWUpdate());
|
||||
|
|
|
@ -3,9 +3,11 @@ package info.nightscout.androidaps.tabs;
|
|||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
import android.support.v4.app.FragmentStatePagerAdapter;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
|
@ -19,7 +21,7 @@ import info.nightscout.androidaps.interfaces.PluginBase;
|
|||
/**
|
||||
* Created by mike on 30.05.2016.
|
||||
*/
|
||||
public class TabPageAdapter extends FragmentStatePagerAdapter {
|
||||
public class TabPageAdapter extends FragmentPagerAdapter {
|
||||
|
||||
ArrayList<PluginBase> visibleFragmentList = new ArrayList<>();
|
||||
|
||||
|
@ -76,5 +78,8 @@ public class TabPageAdapter extends FragmentStatePagerAdapter {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public long getItemId(int position) {
|
||||
return System.identityHashCode(visibleFragmentList.get(position));
|
||||
}
|
||||
}
|
||||
|
|
BIN
app/src/main/res/drawable-hdpi/ic_visibility.png
Normal file
BIN
app/src/main/res/drawable-hdpi/ic_visibility.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 953 B |
BIN
app/src/main/res/drawable-mdpi/ic_visibility.png
Normal file
BIN
app/src/main/res/drawable-mdpi/ic_visibility.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 413 B |
BIN
app/src/main/res/drawable-xhdpi/ic_visibility.png
Normal file
BIN
app/src/main/res/drawable-xhdpi/ic_visibility.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 847 B |
BIN
app/src/main/res/drawable-xxhdpi/ic_visibility.png
Normal file
BIN
app/src/main/res/drawable-xxhdpi/ic_visibility.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2 KiB |
BIN
app/src/main/res/drawable-xxxhdpi/ic_visibility.png
Normal file
BIN
app/src/main/res/drawable-xxxhdpi/ic_visibility.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 233 B |
|
@ -3,6 +3,7 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingTop="2dp"
|
||||
tools:context="info.nightscout.androidaps.plugins.Source.BGSourceFragment">
|
||||
|
||||
<LinearLayout
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="5dp"
|
||||
tools:context="info.nightscout.androidaps.plugins.Careportal.CareportalFragment">
|
||||
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingTop="5dp"
|
||||
tools:context=".plugins.PumpCombo.ComboFragment">
|
||||
|
||||
<RelativeLayout
|
||||
|
|
|
@ -1,240 +1,437 @@
|
|||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context="info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderFragment">
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<Button
|
||||
android:id="@+id/unlock"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@android:color/transparent"
|
||||
android:text="@string/unlock_settings" />
|
||||
|
||||
<ScrollView
|
||||
android:id="@+id/main_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<Button
|
||||
android:id="@+id/configbuilder_unlock"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/unlock_settings" />
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:padding="16dp">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/configbuilder_mainlayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/configbuilder_profilelabel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_weight="1"
|
||||
android:background="@color/mdtp_circle_color"
|
||||
android:paddingLeft="5dp"
|
||||
android:text="@string/configbuilder_profile"
|
||||
android:textAllCaps="true"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="@android:color/black"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="false"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_weight="1"
|
||||
android:paddingRight="10dp"
|
||||
app:srcCompat="@drawable/visibility_black_16x16" />
|
||||
</RelativeLayout>
|
||||
android:text="@string/configbuilder_profile"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<ListView
|
||||
android:id="@+id/configbuilder_profilelistview"
|
||||
android:layout_width="match_parent"
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_profile_description"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/cardColorBackground" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/configbuilder_insulinlabel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:background="@color/mdtp_circle_color"
|
||||
android:paddingLeft="5dp"
|
||||
android:text="@string/configbuilder_insulin"
|
||||
android:textAllCaps="true"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="@android:color/black"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ListView
|
||||
android:id="@+id/configbuilder_insulinlistview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/cardColorBackground" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/configbuilder_bgsourcelabel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:background="@color/mdtp_circle_color"
|
||||
android:paddingLeft="5dp"
|
||||
android:text="@string/configbuilder_bgsource"
|
||||
android:textAllCaps="true"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="@android:color/black"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ListView
|
||||
android:id="@+id/configbuilder_bgsourcelistview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/cardColorBackground" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/configbuilder_pumplabel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:background="@color/mdtp_circle_color"
|
||||
android:paddingLeft="5dp"
|
||||
android:text="@string/configbuilder_pump"
|
||||
android:textAllCaps="true"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="@android:color/black"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ListView
|
||||
android:id="@+id/configbuilder_pumplistview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/cardColorBackground" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/configbuilder_sensitivitylabel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:background="@color/mdtp_circle_color"
|
||||
android:paddingLeft="5dp"
|
||||
android:text="@string/configbuilder_sensitivity"
|
||||
android:textAllCaps="true"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="@android:color/black"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ListView
|
||||
android:id="@+id/configbuilder_sensitivitylistview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/cardColorBackground" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/configbuilder_apslabel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:background="@color/mdtp_circle_color"
|
||||
android:paddingLeft="5dp"
|
||||
android:text="@string/configbuilder_aps"
|
||||
android:textAllCaps="true"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="@android:color/black"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ListView
|
||||
android:id="@+id/configbuilder_apslistview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/cardColorBackground" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/configbuilder_looplabel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:background="@color/mdtp_circle_color"
|
||||
android:paddingLeft="5dp"
|
||||
android:text="@string/configbuilder_loop"
|
||||
android:textAllCaps="true"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="@android:color/black"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ListView
|
||||
android:id="@+id/configbuilder_looplistview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/cardColorBackground" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/configbuilder_constraintslabel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:background="@color/mdtp_circle_color"
|
||||
android:paddingLeft="5dp"
|
||||
android:text="@string/constraints"
|
||||
android:textAllCaps="true"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="@android:color/black"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ListView
|
||||
android:id="@+id/configbuilder_constraintslistview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/cardColorBackground" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/configbuilder_treatmentslabel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:background="@color/mdtp_circle_color"
|
||||
android:paddingLeft="5dp"
|
||||
android:text="@string/configbuilder_treatments"
|
||||
android:textAllCaps="true"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="@android:color/black"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ListView
|
||||
android:id="@+id/configbuilder_treatmentslistview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/cardColorBackground" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/configbuilder_generallabel"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:background="@color/mdtp_circle_color"
|
||||
android:paddingLeft="5dp"
|
||||
android:text="@string/configbuilder_general"
|
||||
android:textAllCaps="true"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="@android:color/black"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<ListView
|
||||
android:id="@+id/configbuilder_generallistview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/cardColorBackground" />
|
||||
|
||||
android:layout_gravity="center"
|
||||
android:layout_margin="4dp"
|
||||
app:srcCompat="@drawable/ic_visibility" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/profile_plugins"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_insulin"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_insulin_description"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_margin="4dp"
|
||||
app:srcCompat="@drawable/ic_visibility" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/insulin_plugins"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_bgsource"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_bgsource_description"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_margin="4dp"
|
||||
app:srcCompat="@drawable/ic_visibility" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/bgsource_plugins"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_pump"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_pump_description"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_margin="4dp"
|
||||
app:srcCompat="@drawable/ic_visibility" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/pump_plugins"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_sensitivity"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_sensitivity_description"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_margin="4dp"
|
||||
app:srcCompat="@drawable/ic_visibility" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/sensitivity_plugins"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_aps"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_aps_description"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_margin="4dp"
|
||||
app:srcCompat="@drawable/ic_visibility" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/aps_plugins"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_loop"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_loop_description"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_margin="4dp"
|
||||
app:srcCompat="@drawable/ic_visibility" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/loop_plugins"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/constraints"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_constraints_description"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_margin="4dp"
|
||||
app:srcCompat="@drawable/ic_visibility" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/constraints_plugins"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_treatments"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_treatments_description"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_margin="4dp"
|
||||
app:srcCompat="@drawable/ic_visibility" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/treatments_plugins"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_general"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/configbuilder_general_description"
|
||||
android:textColor="@color/colorAccent"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_margin="4dp"
|
||||
app:srcCompat="@drawable/ic_visibility" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/general_plugins"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" />
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
</FrameLayout>
|
||||
</LinearLayout>
|
|
@ -1,42 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/configbuilder_simpleitem_checkboxenabled"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:focusable="false"
|
||||
android:focusableInTouchMode="false"
|
||||
android:gravity="center_vertical" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/configbuilder_simpleitem_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="ConfigBuilder plugin text" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/configbuilder_simpleitem_settings"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:focusable="false"
|
||||
android:focusableInTouchMode="false"
|
||||
app:srcCompat="@drawable/ic_settings" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/configbuilder_simpleitem_checkboxvisible"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:focusable="false"
|
||||
android:focusableInTouchMode="false" />
|
||||
|
||||
</LinearLayout>
|
63
app/src/main/res/layout/configbuilder_single_plugin.xml
Normal file
63
app/src/main/res/layout/configbuilder_single_plugin.xml
Normal file
|
@ -0,0 +1,63 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<RadioButton
|
||||
android:id="@+id/plugin_enabled_exclusive"
|
||||
android:saveEnabled="false"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="16dp" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/plugin_enabled_inclusive"
|
||||
android:saveEnabled="false"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="16dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="12dp"
|
||||
android:layout_marginTop="12dp"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/plugin_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="16sp"
|
||||
tools:text="Plugin name" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/plugin_description"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="12sp"
|
||||
tools:text="A super exquisite plugin description" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/plugin_preferences"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="16dp"
|
||||
android:layout_marginRight="16dp"
|
||||
android:background="?android:selectableItemBackgroundBorderless"
|
||||
app:srcCompat="@drawable/ic_settings" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/plugin_visibility"
|
||||
android:saveEnabled="false"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
|
@ -2,6 +2,7 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingTop="5dp"
|
||||
tools:context="info.nightscout.androidaps.plugins.PumpDanaR.DanaRFragment">
|
||||
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingTop="2dp"
|
||||
tools:context="info.nightscout.androidaps.plugins.Loop.LoopFragment">
|
||||
|
||||
<ScrollView
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingTop="2dp"
|
||||
tools:context=".plugins.ConstraintsObjectives.ObjectivesFragment">
|
||||
|
||||
<LinearLayout
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingTop="2dp"
|
||||
tools:context="info.nightscout.androidaps.plugins.OpenAPSAMA.OpenAPSAMAFragment">
|
||||
|
||||
<ScrollView
|
||||
|
|
|
@ -41,7 +41,10 @@
|
|||
android:layout_marginRight="5dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingTop="3dp"
|
||||
android:text="Open Loop"
|
||||
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
|
||||
|
@ -53,6 +56,8 @@
|
|||
android:layout_marginRight="5dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingTop="3dp"
|
||||
android:text="Profile"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
|
@ -64,6 +69,8 @@
|
|||
android:layout_weight="1"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:text="TempTarget"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingTop="3dp"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="@color/mdtp_white" />
|
||||
|
||||
|
@ -82,6 +89,8 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:layout_marginRight="5dp"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingTop="3dp"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:text="@string/initializing"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
<LinearLayout
|
||||
android:id="@+id/overview_looplayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:paddingTop="2dp">
|
||||
|
||||
|
@ -35,7 +35,10 @@
|
|||
android:layout_marginRight="5dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingTop="3dp"
|
||||
android:text="Open Loop"
|
||||
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
|
||||
|
@ -47,6 +50,8 @@
|
|||
android:layout_marginRight="5dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingTop="3dp"
|
||||
android:text="Profile"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
|
@ -58,6 +63,8 @@
|
|||
android:layout_weight="1"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:text="TempTarget"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingTop="3dp"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="@color/mdtp_white" />
|
||||
|
||||
|
@ -76,6 +83,8 @@
|
|||
android:layout_height="match_parent"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:layout_marginRight="5dp"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingTop="3dp"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:text="@string/initializing"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
|
|
@ -41,7 +41,10 @@
|
|||
android:layout_marginRight="5dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingTop="3dp"
|
||||
android:text="Open Loop"
|
||||
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
|
||||
|
@ -53,6 +56,8 @@
|
|||
android:layout_marginRight="5dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingTop="3dp"
|
||||
android:text="Profile"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
|
@ -64,6 +69,8 @@
|
|||
android:layout_weight="1"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:text="TempTarget"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingTop="3dp"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="@color/mdtp_white" />
|
||||
|
||||
|
@ -82,6 +89,8 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:layout_marginRight="5dp"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingTop="3dp"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:text="@string/initializing"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
<LinearLayout
|
||||
android:id="@+id/overview_looplayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:paddingTop="2dp">
|
||||
|
||||
|
@ -35,7 +35,10 @@
|
|||
android:layout_marginRight="5dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingTop="3dp"
|
||||
android:text="Open Loop"
|
||||
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
|
||||
|
@ -47,6 +50,8 @@
|
|||
android:layout_marginRight="5dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingTop="3dp"
|
||||
android:text="Profile"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
||||
|
@ -58,6 +63,8 @@
|
|||
android:layout_weight="1"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:text="TempTarget"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingTop="3dp"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||
android:textColor="@color/mdtp_white" />
|
||||
|
||||
|
@ -76,6 +83,8 @@
|
|||
android:layout_height="match_parent"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:layout_marginRight="5dp"
|
||||
android:paddingBottom="3dp"
|
||||
android:paddingTop="3dp"
|
||||
android:gravity="center_vertical|center_horizontal"
|
||||
android:text="@string/initializing"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall" />
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingTop="2dp"
|
||||
tools:context="info.nightscout.androidaps.plugins.Wear.WearFragment">
|
||||
|
||||
<LinearLayout
|
||||
|
|
|
@ -468,7 +468,7 @@
|
|||
<string name="Glimp">Glimp</string>
|
||||
<string name="batteryoptimalizationerror">Le dispositif n’apparaît pas pour renforcer la liste blanche de l’optimisation de batterie!</string>
|
||||
<string name="pleaseallowpermission">Autorisez l\'accès svp</string>
|
||||
<string name="needwhitelisting">% a besoin de la liste blanche de l’optimisation batterie pour une bonne performance</string>
|
||||
<string name="needwhitelisting">%s a besoin de la liste blanche de l\’optimisation batterie pour une bonne performance</string>
|
||||
<string name="loopsuspended">Loop suspendu</string>
|
||||
<string name="loopsuspendedfor" formatted="false">Suspendu (%d m)</string>
|
||||
<string name="loopsuperbolusfor" formatted="false">Superbolus (%d m)</string>
|
||||
|
|
|
@ -40,11 +40,11 @@
|
|||
<string name="treatments_newtreatment_insulinamount_label">Cantitatea de insulină</string>
|
||||
<string name="treatments_newtreatment_carbsamount_label">Cantitatea de carbohidrați</string>
|
||||
<string name="treatments_wizard_bg_label">BG</string>
|
||||
<string name="treatments_wizard_carbs_label">Carbohidrați</string>
|
||||
<string name="treatments_wizard_carbs_label">Carbo</string>
|
||||
<string name="treatments_wizard_correction_label">Corecție</string>
|
||||
<string name="insulin_unit_shortname">U</string>
|
||||
<string name="treatments_wizard_bolusiob_label">Bolus IOB</string>
|
||||
<string name="openapsma_run">Fă acum</string>
|
||||
<string name="openapsma_run">Execută</string>
|
||||
<string name="vitualpump_label">POMPĂ VIRTUALĂ</string>
|
||||
<string name="virtualpump_extendedbolus_label">Bolus extins</string>
|
||||
<string name="virtualpump_resultok">OK</string>
|
||||
|
@ -495,4 +495,488 @@
|
|||
<string name="ns_noupload_summary">Toate trimiterile de date către NS sunt oprite. AAPS este conectat la NS dar nu se fac schimbări în NS</string>
|
||||
<string name="basal_step">Pas bazală</string>
|
||||
<string name="bolus_step">Pas bolus</string>
|
||||
<string name="treatments_wizard_tt_label">TT</string>
|
||||
<string name="pump_basebasalrate_label">Rată bazală normală</string>
|
||||
<string name="pump_tempbasal_label">Bazală temporală</string>
|
||||
<string name="pump_battery_label">Baterie</string>
|
||||
<string name="pump_reservoir_label">Rezervor</string>
|
||||
<string name="result">Rezultat</string>
|
||||
<string name="tempbasal">BazalăTemp</string>
|
||||
<string name="loop_tbrsetbypump_label">BazalăTemp setată în pompă</string>
|
||||
<string name="openapsma_lastenact_label">Ultima comandă</string>
|
||||
<string name="ok">OK</string>
|
||||
<string name="cancel">Renunță</string>
|
||||
<string name="noapsselected">NU AȚI SELECTAT APS SAU NU EXISTĂ REZULTAT</string>
|
||||
<string name="safety">Siguranță</string>
|
||||
<string name="openapsma_disabled">Modul inactiv</string>
|
||||
<string name="constraints_violation">Încălcare a unei limite</string>
|
||||
<string name="treatmentdeliveryerror">Eroare la livrarea bolusului</string>
|
||||
<string name="tempbasaldeliveryerror">Eroare la setare bazală temporară</string>
|
||||
<string name="overview_newtempbasal_basalpercent">Valoare bazală [%]</string>
|
||||
<string name="overview_newtempbasal_percent_label">% (100% = curent)</string>
|
||||
<string name="setbasalquestion">Acceptă noua bazală temporară:</string>
|
||||
<string name="overview_treatment_label">Tratament</string>
|
||||
<string name="overview_calculator_label">Calculator</string>
|
||||
<string name="constraintapllied">Limitare aplicată!</string>
|
||||
<string name="confirmation">Confirmare</string>
|
||||
<string name="entertreatmentquestion">Introduceți tratament nou:</string>
|
||||
<string name="bolus">Bolus</string>
|
||||
<string name="sms_bolus">Bolus:</string>
|
||||
<string name="basal">Bazală</string>
|
||||
<string name="sms_basal">Bazală:</string>
|
||||
<string name="carbs">Carbo</string>
|
||||
<string name="changeyourinput">Schimbați valoarea!</string>
|
||||
<string name="setextendedbolusquestion">Setați un nou bolus extins:</string>
|
||||
<string name="configbuilder_bgsource">Sursă glicemie</string>
|
||||
<string name="xdrip">xDrip</string>
|
||||
<string name="apsmode_title">Mod APS</string>
|
||||
<string name="closedloop">Buclă închisă</string>
|
||||
<string name="openloop">Buclă deschisă</string>
|
||||
<string name="unsupportednsversion">Versiune de Nightscout nesuportată</string>
|
||||
<string name="ro_lang">Română</string>
|
||||
<string name="pump_lastbolus_label">Ultimul bolus</string>
|
||||
<string name="bolusstopped">Bolus oprit</string>
|
||||
<string name="bolusstopping">Se oprește bolusul</string>
|
||||
<string name="objectives_7_objective">Se activează opțiuni pentru uzul în timpul zilei, cum ar fi SMB</string>
|
||||
<string name="objectives_7_gate">Trebuie sa citiți wiki și măriți maxIOB pentru a obține SMB corect! Un start bun este maxIOB=media bolusurilor + 3x maxima bazalei din zi</string>
|
||||
<string name="valuelimitedto" formatted="false">%.2f este limitată la %.2f</string>
|
||||
<string name="valueoutofrange" formatted="false">Valarea %s este mai mare decât limita fizică</string>
|
||||
<string name="refresheventsfromnightscout">Sincronizează cu NS</string>
|
||||
<string name="hypo">Hipo</string>
|
||||
<string name="openapsama_autosens_adjusttargets">Autosens ajustează țintele la</string>
|
||||
<string name="resistantadult">Adult rezistent la insulină</string>
|
||||
<string name="danarv2pump">DanaRv2</string>
|
||||
<string name="ultrafastactinginsulincomment">Fiasp</string>
|
||||
<string name="pump_lastconnection_label">Ultima conexiune</string>
|
||||
<string name="extendedbolus">BolusExtins</string>
|
||||
<string name="temptarget">ȚintăTemporară</string>
|
||||
<string name="overview_extendedbolus_cancel_button">Renunță la bolusul extins</string>
|
||||
<string name="careportal_sensorage_label">Vechime senzor</string>
|
||||
<string name="careportal_canulaage_label">Vechime canulă</string>
|
||||
<string name="careportal_insulinage_label">Vechime insulină</string>
|
||||
<string name="hours">ore</string>
|
||||
<string name="overview_newtempbasal_basaltype_label">Tip bazală</string>
|
||||
<string name="invalidprofile">Profil invalid!!!</string>
|
||||
<string name="profileswitch">SchimbareProfil</string>
|
||||
<string name="careportal_pbage_label">Vechime baterie pompă</string>
|
||||
<string name="careportal_pumpbatterychange">Schimbare baterie pompă</string>
|
||||
<string name="ns_alarmoptions">Opțiuni alarmare</string>
|
||||
<string name="nsalarm_urgenthigh">Hiper urgent</string>
|
||||
<string name="nsalarm_high">Hiper</string>
|
||||
<string name="nsalarm_low">Hipo</string>
|
||||
<string name="nsalarm_urgentlow">Hipo urgent</string>
|
||||
<string name="nsalarm_staledata">Date învechite</string>
|
||||
<string name="nsalarm_urgentstaledata">Date mult prea vechi</string>
|
||||
<string name="nsalarm_staledatavalue_label">Prag vechime date [min]</string>
|
||||
<string name="nsalarm_urgent_staledatavalue_label">Prag date mult prea vechi [min]</string>
|
||||
<string name="openapsama_autosens_period">Interval pentru autosens [o]</string>
|
||||
<string name="openapsama_autosens_period_summary">Numărul de ore din trecut pentru detectarea sensibilității (se exclude timpul de absorbție al carbo)</string>
|
||||
<string name="pump">Pompă</string>
|
||||
<string name="openaps">OpenAPS</string>
|
||||
<string name="uploader">Uploader</string>
|
||||
<string name="configbuilder_sensitivity">Detectare sensilitate</string>
|
||||
<string name="sensitivity_shortname">SENS</string>
|
||||
<string name="sensitivityoref0">Sensibilitate Oref0</string>
|
||||
<string name="sensitivityaaps">Sensibilitate AAPS</string>
|
||||
<string name="absorptionsettings_title">Setări absorbție</string>
|
||||
<string name="absorption_maxtime_title">Timp maxim absorbție masă [o]</string>
|
||||
<string name="absorption_maxtime_summary">Timp în ore la care se presupune că toți carbo sunt absorbiți</string>
|
||||
<string name="careportal_sensorage_label_short">VS</string>
|
||||
<string name="careportal_insulinage_label_short">VI</string>
|
||||
<string name="careportal_canulaage_label_short">VC</string>
|
||||
<string name="careportal_pbage_label_short">BAT</string>
|
||||
<string name="openaps_short">OAPS</string>
|
||||
<string name="uploader_short">UPLD</string>
|
||||
<string name="basal_short">BAZ</string>
|
||||
<string name="virtualpump_extendedbolus_label_short">EXT</string>
|
||||
<string name="lock_screen">Ecran blocare</string>
|
||||
<string name="lock_screen_short">Blocat</string>
|
||||
<string name="sensitivity_warning">Trebuie introduși toți carbo la pornirea Autosens. În caz contrar, acțiunea carbo va fi percepută ca schimbare a sensibilității!</string>
|
||||
<string name="sensitivityweightedaverage">Mediană sensibilitate</string>
|
||||
<string name="mdtp_ok">OK</string>
|
||||
<string name="mdtp_cancel">Renunță</string>
|
||||
<string name="notloadedplugins">Nu s-au încărcat toate profilele!</string>
|
||||
<string name="valuesnotstored">Nu s-au salvat valorile!</string>
|
||||
<string name="ns_localbroadcasts">Permite anunțarea altor aplicații (ca xDrip).</string>
|
||||
<string name="ns_localbroadcasts_title">Permite anunțuri locale.</string>
|
||||
<string name="careportal_activity_label">ACTIVITATE ȘÎ VERIFICĂRI</string>
|
||||
<string name="careportal_carbsandbolus_label">CARBO ȘÎ BOLUS</string>
|
||||
<string name="careportal_cgm_label">CGM ȘÎ OPENAPS</string>
|
||||
<string name="careportal_pump_label">POMPĂ</string>
|
||||
<string name="overview_newtempbasal_basalabsolute">Valoare bazală [U/o]</string>
|
||||
<string name="careportal_newnstreatment_duration_min_label">Durată [min]</string>
|
||||
<string name="openapssmb">OpenAPS SMB</string>
|
||||
<string name="smb_shortname">SMB</string>
|
||||
<string name="enableuam">Activează UAM</string>
|
||||
<string name="enablesmb">Activează SMB</string>
|
||||
<string name="enablesmb_summary">Folosește SMB în locul bazalei temporare pentru reacție mai rapidă</string>
|
||||
<string name="enableuam_summary">S-a detectat masă neanunțată</string>
|
||||
<string name="insulin_oref_peak">Curbă timp vârf IOB</string>
|
||||
<string name="insulin_peak_time">Timp vârf [min]</string>
|
||||
<string name="free_peak_oref">Oref Fără-Vârf</string>
|
||||
<string name="rapid_acting_oref">Oref Insulină-Rapidă</string>
|
||||
<string name="ultrarapid_oref">Oref Insulină-UltraRapidă</string>
|
||||
<string name="free_peak_oref_description">Insulină personalizată</string>
|
||||
<string name="dia_too_short" formatted="false">DIA din %f prea scurtă - se folosește %f în schimb!</string>
|
||||
<string name="activate_profile">Activează profil</string>
|
||||
<string name="date">Data</string>
|
||||
<string name="invalid">INVALID</string>
|
||||
<string name="waitingforpairing">Se așteaptă conectarea la pompă</string>
|
||||
<string name="pairingok">Conectare OK</string>
|
||||
<string name="pairingtimedout">Conectare nereușită</string>
|
||||
<string name="pairing">CONECTARE</string>
|
||||
<string name="danars_nodeviceavailable">Niciun dispozitiv găsit până acum</string>
|
||||
<string name="emptyreservoir">Rezervor gol</string>
|
||||
<string name="bloodsugarmeasurementalert">Alertă măsurare glicemie</string>
|
||||
<string name="remaininsulinalert">Nivel insulină rămas</string>
|
||||
<string name="danarspump">DanaRS</string>
|
||||
<string name="danarspump_shortname">Dana</string>
|
||||
<string name="selectedpump">Pompa selectată</string>
|
||||
<string name="pairpump">Conectare la pompă nouă</string>
|
||||
<string name="bolusspeed">Viteză bolusare</string>
|
||||
<string name="danar_setbasalstep001">Setare pas bazală la 0.01 U/o</string>
|
||||
<string name="serialnumber">Număr serial</string>
|
||||
<string name="careportal_newnstreatment_percentage_label">Procentaj</string>
|
||||
<string name="careportal_newnstreatment_timeshift_label">Decalare</string>
|
||||
<string name="default_temptargets">Ținte-Temporare implicite</string>
|
||||
<string name="eatingsoon_duration">durată semănâncăcurând</string>
|
||||
<string name="eatingsoon_target">țintă semănâncăcurând</string>
|
||||
<string name="activity_duration">durată activitate</string>
|
||||
<string name="activity_target">țintă activitate</string>
|
||||
<string name="hypo_duration">durată țintă</string>
|
||||
<string name="hypo_target">țintă hipo</string>
|
||||
<string name="danar_history_prime">Amorsare tub</string>
|
||||
<string name="gettingextendedbolusstatus">Se obține starea bolusului extins</string>
|
||||
<string name="gettingbolusstatus">Se obține starea bolusului</string>
|
||||
<string name="gettingtempbasalstatus">Se obține starea bazalei temporare</string>
|
||||
<string name="gettingpumpsettings">Se obțin setările pompei</string>
|
||||
<string name="gettingpumptime">Se obține ora pompei</string>
|
||||
<string name="reuse">refolosire</string>
|
||||
<string name="wearcontrol_title">Controlare din ceas</string>
|
||||
<string name="wearcontrol_summary">Setare Ținte-Temporare și se introduc Tratamente din ceas.</string>
|
||||
<string name="connectiontimedout">Conectare eșuată</string>
|
||||
<string name="food">Mâncare</string>
|
||||
<string name="shortgramm">g</string>
|
||||
<string name="shortminute">m</string>
|
||||
<string name="shorthour">o</string>
|
||||
<string name="none"><![CDATA[<none>]]></string>
|
||||
<string name="shortkilojoul">kJ</string>
|
||||
<string name="shortenergy">En</string>
|
||||
<string name="shortprotein">Pr</string>
|
||||
<string name="shortfat">Grăsime</string>
|
||||
<string name="active"><![CDATA[<Active>]]></string>
|
||||
<string name="waitingforestimatedbolusend" formatted="false">Se așteaptă finalul bolusării. Mai sunt %d sec.</string>
|
||||
<string name="processinghistory">Se procesează activitatea</string>
|
||||
<string name="startingbolus">Pornire livrare bolus</string>
|
||||
<string name="executingrightnow">Se execută comanda chiar acum</string>
|
||||
<string name="pumpdrivercorrected">S-a corectat driverul pompei</string>
|
||||
<string name="pump_unreachable">Pompă indisponibilă</string>
|
||||
<string name="missed_bg_readings">Lipsesc date glicemie</string>
|
||||
<string name="raise_notifications_as_android_notifications">Se folosesc notificările sistemului pentru alerte și notificări</string>
|
||||
<string name="localalertsettings_title">Alerte locale</string>
|
||||
<string name="enable_missed_bg_readings_alert">Alarmează dacă nu se primesc glicemii</string>
|
||||
<string name="enable_pump_unreachable_alert">Se alertează dacă pompa este indisponibilă</string>
|
||||
<string name="pump_unreachable_threshold">Prag pompă indisponibilă [min]</string>
|
||||
<string name="urgent_alarm">Alarmă urgentă</string>
|
||||
<string name="info">INFO</string>
|
||||
<string name="bluetooth">Bluetooth</string>
|
||||
<string name="btwatchdog_title">BT Watchdog</string>
|
||||
<string name="btwatchdog_summary">Oprește bluetooth-ul telefonului pentru o secundă dacă nu se poate conecta la pompă. Aceasta poate ajuta în cazul telefoanelor cu bluetooth incompatitibil.</string>
|
||||
<string name="DexcomG5">App DexcomG5 (cu patch)</string>
|
||||
<string name="dexcomg5_nsupload_title">Încarcă date glicemie în NS</string>
|
||||
<string name="dexcomg5_upload">Setări înregistrare G5</string>
|
||||
<string name="wear_detailed_delta_title">Arată variație detaliată</string>
|
||||
<string name="wear_detailed_delta_summary">Arată variație cu încă o zecimală</string>
|
||||
<string name="smbmaxminutes_summary">Max minute de bazală la care să se limiteze SMB</string>
|
||||
<string name="unsupportedfirmware">Soft pompă incompatibil</string>
|
||||
<string name="dexcomg5_xdripupload_title">Trimite date glicemie la xDrip+</string>
|
||||
<string name="dexcomg5_xdripupload_summary">Selectați 640g/Eversense ca sursă de date în xDrip+</string>
|
||||
<string name="nsclientbg">Glicemie NSClient</string>
|
||||
<string name="minimalbasalvaluereplaced">Valoare bazală înlocuită cu valoarea minimă suportată</string>
|
||||
<string name="overview_editquickwizard_usebg">Calcul glicemie</string>
|
||||
<string name="overview_editquickwizard_usebolusiob">Calcul IOB bolus</string>
|
||||
<string name="overview_editquickwizard_usebasaliob">Calcul IOB bazală</string>
|
||||
<string name="overview_editquickwizard_usetrend">Calcul pantă</string>
|
||||
<string name="overview_editquickwizard_usesuperbolus">Calcul superbolus</string>
|
||||
<string name="yes">Da</string>
|
||||
<string name="no">Nu</string>
|
||||
<string name="positiveonly">Doar pozitiv</string>
|
||||
<string name="negativeonly">Doar negativ</string>
|
||||
<string name="overview_editquickwizard_usecob">Calcul COB</string>
|
||||
<string name="overview_editquickwizard_usetemptarget">Calcul țintă temporară</string>
|
||||
<string name="loopenabled">Buclă activată</string>
|
||||
<string name="apsselected">APS selectat</string>
|
||||
<string name="nsclienthaswritepermission">NSClient are drepturi de scriere</string>
|
||||
<string name="closedmodeenabled">Mod buclă închisă activat</string>
|
||||
<string name="maxiobset">IOB maxim configurat corect</string>
|
||||
<string name="hasbgdata">Glicemie disponibilă din sursa selectată</string>
|
||||
<string name="basalprofilenotaligned" formatted="false">Valori bazale nealiniate la ore: %s</string>
|
||||
<string name="zerovalueinprofile">Profil invalid</string>
|
||||
<string name="combo_programming_bolus">Se programează pompa pentru livrare bolus</string>
|
||||
<string name="combo_refresh">Reîncarcă</string>
|
||||
<string name="combo_pump_state_label">Stare</string>
|
||||
<string name="combo_pump_activity_label">Activitate</string>
|
||||
<string name="combo_no_pump_connection" formatted="false">Fără conexiune de %d min</string>
|
||||
<string name="combo_tbr_remaining" formatted="false">%d%% (%d min rămase)</string>
|
||||
<string name="combo_pump_state_initializing">Inițializare</string>
|
||||
<string name="combo_pump_state_suspended_due_to_error">Suspendat din cauza unei erori</string>
|
||||
<string name="combo_pump_state_suspended_by_user">Suspendat de utilizator</string>
|
||||
<string name="combo_pump_state_running">Funcționează</string>
|
||||
<string name="combo_pump_action_cancelling_tbr">Se oprește TBR</string>
|
||||
<string name="combo_pump_action_setting_tbr" formatted="false">Se setează TBR (%d%% / %d min)</string>
|
||||
<string name="combo_pump_action_bolusing" formatted="false">Bolusare (%.1f U)</string>
|
||||
<string name="combo_pump_action_refreshing">Reîncărcare</string>
|
||||
<string name="combo_pump_unsupported_operation">Operațiunea nu este suportată de pompă</string>
|
||||
<string name="combo_low_suspend_forced_notification">Folosire nesigură: un bolus extins sau multiwave este activ. Modul buclă este setat să funcționeze în low-suspend pentru 6 ore. Doar bolusurile normale sunt posibile.</string>
|
||||
<string name="combo_force_disabled_notification">Folosire nesigură: pompa folosește un alt profil decât primul. Bucla a fost dezactivată. Selectați primul profil din pompă șî reîncercați.</string>
|
||||
<string name="bolus_frequency_exceeded">Un bolus de aceeași valoare a fost livrat în ultimile două minute. Pentru a preveni bolusarea accidentală dublă și pentru a evita greșelile , acesta nu se va livra</string>
|
||||
<string name="combo_pump_connected_now">Acum</string>
|
||||
<string name="combo_activity_reading_pump_history">Se citește istoricul din pompă</string>
|
||||
<string name="combo_activity_setting_basal_profile">Se setează profilul bazalei</string>
|
||||
<string name="combo_pump_cartridge_low_warrning">Nivelul insulinei din pompă este scăzut</string>
|
||||
<string name="combo_pump_battery_low_warrning">Nivelul bateriei pompei este scăzut</string>
|
||||
<string name="combo_is_in_error_state" formatted="false">Pompa are eroarea: E%d: %s</string>
|
||||
<string name="combo_reservoir_low">Scăzut</string>
|
||||
<string name="combo_reservoir_empty">Gol</string>
|
||||
<string name="combo_reservoir_normal">Normal</string>
|
||||
<string name="combo_notification_check_time_date">Ceasul pompei trebuie ajustat</string>
|
||||
<string name="combo_warning">Atenție</string>
|
||||
<string name="combo_pump_tbr_cancelled_warrning">Alerta RBT ANULATĂ a fost confirmată</string>
|
||||
<string name="combo_error_no_connection_no_bolus_delivered">Pompa nu poate fi contactată. Nu s-a livrat niciun bolus</string>
|
||||
<string name="combo_error_no_bolus_delivered">Livrare eșuată. Se pare că nu a fost livrat bolusul. Pentru siguranță, verificați în pompă pentru a evita bolusarea dublă. Pentru evitarea greșelilor, bolusurile nu sunt retrimise automat.</string>
|
||||
<string name="combo_error_partial_bolus_delivered" formatted="false">Doar %.2f U din totalul cerut de %.2f U a fost livrat din cauza unei erori. Verificați pompa pentru confirmare și acționați corespunzător.</string>
|
||||
<string name="combo_error_bolus_verification_failed">Livrarea bolusului și verificarea istoricului pompei a eșuat, verificați pompa și creați manual un bolus folosind Careportal, dacă a fost livrat un bolus.</string>
|
||||
<string name="combo_error_bolus_recovery_progress">Revenire după pierderea conexiunii</string>
|
||||
<string name="combo_reservoir_level_insufficient_for_bolus">Nu este suficientă insulină în rezervor</string>
|
||||
<string name="extendedbolusdeliveryerror">Eroare de livrare a bolusului extins</string>
|
||||
<string name="insightpump_shortname">Insight</string>
|
||||
<string name="insightpump">Pompă Insight</string>
|
||||
<string name="status_no_colon">Stare</string>
|
||||
<string name="changed">Schimbat</string>
|
||||
<string name="pump_stopped_uppercase">POMPĂ OPRITĂ</string>
|
||||
<string name="status_updated">Stare actualizată</string>
|
||||
<string name="ago">în trecut</string>
|
||||
<string name="with">cu</string>
|
||||
<string name="insight_active_tbr">RBT activ</string>
|
||||
<string name="insight_min_left">min. rămase</string>
|
||||
<string name="log_book">Jurnal</string>
|
||||
<string name="insight_last_completed_action">Ultima acțiune efectuată</string>
|
||||
<string name="insight_min">min.</string>
|
||||
<string name="insight_remaining_over">rămase peste</string>
|
||||
<string name="insight_total_with">total cu</string>
|
||||
<string name="insight_upfront_with">față de</string>
|
||||
<string name="insight_stay_always_connected">Rămâneți conectat permanent</string>
|
||||
<string name="insight_use_real_tbr_cancels">Se folosesc anulări de RBT</string>
|
||||
<string name="insight_actually_cancel_tbr_summary">Anulare reală a unei RBT (generează alarmă a pompei) în loc de a seta 90% pentru 1 minut</string>
|
||||
<string name="insight_history_idle">LIBER</string>
|
||||
<string name="insight_history_syncing">SINCRONIZARE</string>
|
||||
<string name="insight_history_busy">OCUPAT</string>
|
||||
<string name="insight_history_synced">SINCRONIZAT</string>
|
||||
<string name="insight_startup_uppercase">PORNIRE</string>
|
||||
<string name="insight_needs">nevoi</string>
|
||||
<string name="insight_not_connected_to_companion_app">Aplicația nu este conectată!</string>
|
||||
<string name="insight_companion_app_not_installed">Aplicația pare să nu fie instalată!</string>
|
||||
<string name="insight_incompatible_compantion_app_we_need_version">Aplicație incompatibila, este necesară versiunea</string>
|
||||
<string name="insight_unknown">Necunoscut</string>
|
||||
<string name="insight_waiting_for_code">Se așteaptă confirmarea codului</string>
|
||||
<string name="insight_code_rejected">Cod respins</string>
|
||||
<string name="insight_app_binding">Conectare aplicație</string>
|
||||
<string name="insight_not_authorized">Neautorizat</string>
|
||||
<string name="insight_incompatible">Incompatibil</string>
|
||||
<string name="second">secundă</string>
|
||||
<string name="minute">minut</string>
|
||||
<string name="hour">oră</string>
|
||||
<string name="day">z</string>
|
||||
<string name="week">săptămână</string>
|
||||
<string name="time_plural">e</string>
|
||||
<string name="insight_keepalive_format_string" formatted="false">%ds expiră %s</string>
|
||||
<string name="insight_keep_alive_status">Stare de menținere</string>
|
||||
<string name="statistics">Statistici</string>
|
||||
<string name="connect_preemptively">Conectare preventivă</string>
|
||||
<string name="automatically_connect_when">Conectare automată atunci când AndroidAPS este afișat pe ecran, înaintea cererii de efectuare a unei comenzi către pompă, pentru reducerea întârzierilor</string>
|
||||
<string name="not_recommended_due_to_battery_drain">Nerecomandat datorită epuizării bateriei</string>
|
||||
<string name="enablesmbalways">Activează SMB întotdeauna</string>
|
||||
<string name="enablesmbalways_summary">Activează SMB întotdeauna independent de bolusuri. Este posibil doar în cazul unei surse de glicemii filtrate, cum ar fi G5</string>
|
||||
<string name="enablesmbaftercarbs">Activează SMB după carbo</string>
|
||||
<string name="enablesmbaftercarbs_summary">Activează SMB pentru 6 ore după carbo, chiar și cu 0 COB. Este posibil doar cu o sursă de glicemii filtrate, ca datele din G5</string>
|
||||
<string name="enablesmbwithcob">Activează SMB cu COB</string>
|
||||
<string name="enablesmbwithcob_summary">Activează SMB atunci când sunt COB activi.</string>
|
||||
<string name="enablesmbwithtemptarget">Activează SMB cu ținte temporare</string>
|
||||
<string name="enablesmbwithtemptarget_summary">Activează SMB chiar atunci când este o țintă temporară activă (mâncare in curând, exerciții fizice)</string>
|
||||
<string name="enablesmbwithhightemptarget">Activează SMB cu ținte temporare mari</string>
|
||||
<string name="enablesmbwithhightemptarget_summary">Activează SMB atunci când există o țintă temporară mare activă (exerciții fizice)</string>
|
||||
<string name="let_temp_basal_run">Lasă să funcționeze bazala temporară</string>
|
||||
<string name="mute">Liniște</string>
|
||||
<string name="overview_insulin_label">Insulină</string>
|
||||
<string name="overview_carbs_label">Carbohidrați</string>
|
||||
<string name="overview_buttons_selection">Butoane</string>
|
||||
<string name="show_calibration_button_summary">Trimite calibrarea către xDrip+ sau deschide calibrarea pentru G5</string>
|
||||
<string name="show_cgm_button_summary">Deschide xDrip+, butonul de înapoi returnează la AAPS</string>
|
||||
<string name="carb_increment_button_message">Cantitate de carbohidrați de adăugat când se apasă butonul</string>
|
||||
<string name="insulin_increment_button_message">Cantitatea de insulină de adăugat când se apasă butonul</string>
|
||||
<string name="error_starting_cgm">Nu s-a putut deschide aplicația CGM. Asigurați-vă că este instalată.</string>
|
||||
<string name="overview_cgm">CGM</string>
|
||||
<string name="nav_historybrowser">Vizualizare istoric</string>
|
||||
<string name="wear_notifysmb_title">Notifică despre SMB</string>
|
||||
<string name="wear_notifysmb_summary">Arată SMB pe ceas ca și un bolus standard.</string>
|
||||
<string name="ns_create_announcements_from_errors_title">Crează anunțuri pentru erori</string>
|
||||
<string name="ns_create_announcements_from_errors_summary">Crează anunțuri în Nightscout pentru dialoguri de erori și alerte locale (vizibile și în Careportal - Tratamente)</string>
|
||||
<string name="wear_predictions_summary">Arată previziunile pe ceas.</string>
|
||||
<string name="wear_predictions_title">Predicții</string>
|
||||
<string name="data_choices">Alegeri date</string>
|
||||
<string name="fabric_upload">Încărcare \"fabric\"</string>
|
||||
<string name="allow_automated_crash_reporting">Permite trimiterea de rapoarte automate de eroare și de date despre folosire către dezvoltatori prin serviciul fabric.io</string>
|
||||
<string name="g5appnotdetected">Actualizați aplicația G5 la o versiune suportată</string>
|
||||
<string name="start_activity_tt">Start TT activitate</string>
|
||||
<string name="start_eating_soon_tt">Start TT mănânc în curând</string>
|
||||
<string name="temptargetshort">TT</string>
|
||||
<string name="do_not_bolus_record_only">Nu bolusa, doar înregistrează</string>
|
||||
<string name="category">Categorie</string>
|
||||
<string name="subcategory">Subcategorie</string>
|
||||
<string name="bolusrecordedonly">Bolusul se va înregistra doar</string>
|
||||
<string name="ns_autobackfill_summary">Autocompletează valorile glicemiei lipsă din NS</string>
|
||||
<string name="loop_smbsetbypump_label">SMB setat de pompă</string>
|
||||
<string name="overview_show_sensitivity">Sensibilitate</string>
|
||||
<string name="overview_show_deviations">Deviații</string>
|
||||
<string name="overview_show_cob">Carbohidrați activi</string>
|
||||
<string name="overview_show_iob">Insulină activă</string>
|
||||
<string name="overview_show_basals">Bazale</string>
|
||||
<string name="no_action_selected">Nicio acțiune selectată, nu se va întâmpla nimic</string>
|
||||
<string name="start_hypo_tt">Start TT hipo</string>
|
||||
<string name="closed_loop_disabled_on_dev_branch">Se folosește versiunea dev. Bucla închisă este dezactivată.</string>
|
||||
<string name="engineering_mode_enabled">Mod inginer activat</string>
|
||||
<string name="not_eng_mode_or_release">Modul inginer nu este activat și nu este în versiunea lansată</string>
|
||||
<string name="pump_basebasalrate" formatted="false">%.2f U/h</string>
|
||||
<string name="combo_actvity_reading_basal_profile">Se citește profilul bazal</string>
|
||||
<string name="combo_bolus_rejected_due_to_pump_history_change">Istoricul pompei s-a schimbat după calcularea bolusului. Bolusul nu a fost livrat. Recalculați dacă mai este necesar un bolus. Dacă aceeași cantitate de bolus este necesară, așteptați două minute deoarece două bolusuri cu aceeași valoare nu sunt permise într-un interval mai mic de două minute, din rațiuni de siguranță (indiferent dacă au fost livrate sau nu).</string>
|
||||
<string name="combo_error_updating_treatment_record">Bolus livrat, dar nu s-a reușit înregistrarea evenimentului. Aceasta se poate întâmpla când două bolusuri mici de aceeași valoare sunt livrate în mai puțin de două minute. Verificați istoricul pompei și înregistrările tratamentelor și folosiți Careportal pentru adăugarea intrărilor lipsă. Asigurați-vă că nu adăugați intrări duble.</string>
|
||||
<string name="combo_high_temp_rejected_due_to_pump_history_changes">Se respinge temporara mare deoarece calculul nu a luat în calcul istoricul recent schimbat din pompă</string>
|
||||
<string name="combo_activity_checking_pump_state">Actualizare stare pompă</string>
|
||||
<string name="combo_warning_pump_basal_rate_changed">Rata bazală din pompă s-a schimbat și va fi actualizată în curând</string>
|
||||
<string name="combo_error_failure_reading_changed_basal_rate">Rata bazală schimbată în pompă, dar nu s-a putut actualiza</string>
|
||||
<string name="combo_activity_checking_for_history_changes">Se verifică schimbările în istoric</string>
|
||||
<string name="combo_error_multiple_boluses_with_identical_timestamp">Mai multe bolusuri de aceeași valoare au fost importate. Doar o singură înregistrare va fi adăugată în tratamente. Verifcați manual în pompă și adăugați înregistrările folosind Careportal. Asigurați-vă că veți crea un bolus care nu se suprapune peste altul în timp.</string>
|
||||
<string name="alert_w31">Atenționare W31: Rezervor aproape gol</string>
|
||||
<string name="alert_w32">Atenționare W32: Baterie aproape terminată</string>
|
||||
<string name="alert_w33">Atenționare W33: Timp/dată invalide</string>
|
||||
<string name="alert_w34">Atenționare W34: Sfârșitul garanției</string>
|
||||
<string name="alert_w36">Atenționare W36: RBT terminat</string>
|
||||
<string name="alert_w38">Atenționare W38: Bolus anulat</string>
|
||||
<string name="alert_w39">Atenționare W39: Alertă timp închiriere</string>
|
||||
<string name="alert_m20">Mentenanță M20: Rezervorul nu este inserat</string>
|
||||
<string name="alert_m21">Mentenanță M21: Rezervol gol</string>
|
||||
<string name="alert_m22">Mentenanță M22: Baterie goală</string>
|
||||
<string name="alert_m23">Mentenanță M23: Oprire automată</string>
|
||||
<string name="alert_m24">Mentenanță M24: Ocluzie</string>
|
||||
<string name="alert_m25">Mentenanță M25: Închiriere terminată - sfârșitul operațiunilor</string>
|
||||
<string name="alert_m26">Mentenanță M26: Rezervorul nu a fost schimbat</string>
|
||||
<string name="alert_m27">Mentenanță M27: Descărcarea datelor eșuată</string>
|
||||
<string name="alert_m28">Mentenanță M28: Modul pauză expirat</string>
|
||||
<string name="alert_m29">Mentenanță M29: Tipul bateriei nu este setat</string>
|
||||
<string name="alert_m30">Mentenanță M30: Tipul rezervorului nu este setat</string>
|
||||
<string name="alert_e6">Eroare E6: Eroare mecanică</string>
|
||||
<string name="alert_e7">Eroare E7: Eroare electronică</string>
|
||||
<string name="alert_e10">Eroare E10: Eroare de revenire tijă piston</string>
|
||||
<string name="alert_e13">Eroare E13: Eroare de limbaj</string>
|
||||
<string name="ns_wifionly">Folosește doar conexiune WiFi</string>
|
||||
<string name="cgm">CGM</string>
|
||||
<string name="objectivenotstarted" formatted="false">Obiectivul %d nu este pornit</string>
|
||||
<string name="objectivenotfinished" formatted="false">Obiectivul %d nu este atins</string>
|
||||
<string name="pumpisnottempbasalcapable">Pompa nu suportă bazale temporare</string>
|
||||
<string name="novalidbasalrate">Nu s-a citit o rată bazală validă din pompă</string>
|
||||
<string name="closedmodedisabledinpreferences">Modul buclă închisă dezactivat în preferințe</string>
|
||||
<string name="autosensdisabledinpreferences">Autosens dezactivat în preferințe</string>
|
||||
<string name="smbdisabledinpreferences">SMB dezactivat în preferințe</string>
|
||||
<string name="limitingbasalratio" formatted="false">Se limitează maximul ratei bazale la %.2f U/o datorită %s</string>
|
||||
<string name="pumplimit">limită pompă</string>
|
||||
<string name="itmustbepositivevalue">trebuie să fie o valoare pozitivă</string>
|
||||
<string name="maxbasalmultiplier">maximul multiplicatorului bazalei</string>
|
||||
<string name="maxdailybasalmultiplier">maximul zilnic al multiplicatorului bazalei</string>
|
||||
<string name="smb_frequency_exceeded">S-a livrat un bolus în ultimile 3 minute, nu se livrează SMB</string>
|
||||
<string name="basal_set_correctly">Bazala setată corect</string>
|
||||
<string name="limitingpercentrate" formatted="false">Se limitează procentul ratei maxime la %d%% datorită %s</string>
|
||||
<string name="limitingbolus" formatted="false">Se limitează bolusul la %.1f U datorită %s</string>
|
||||
<string name="limitingmaxiob" formatted="false">Se limitează max IOB la %.1f U datorită %s</string>
|
||||
<string name="limitingcarbs" formatted="false">Se limitează carbohidrații %d g datorită %s</string>
|
||||
<string name="limitingiob" formatted="false">Se limitează IOB la %.1f U datorită %s</string>
|
||||
<string name="maxvalueinpreferences">valoare maximă în preferințe</string>
|
||||
<string name="unsafeusage">folosire nesigură</string>
|
||||
<string name="readstatusfailed">Citire eșuată a stării</string>
|
||||
<string name="record_pump_site_change">Înregistrare schimbare a locului pompei</string>
|
||||
<string name="record_insulin_cartridge_change">Înregistrare schimbare rezervor insulină</string>
|
||||
<string name="smbalwaysdisabled">SMB dezactivat întotdeauna și după carbo deoarece sursa glicemiei nu suportă filtrare avansată</string>
|
||||
<string name="smbnotallowedinopenloopmode">SMB nu este permis în mod buclă deschisă</string>
|
||||
<string name="food_short">Mâncare</string>
|
||||
<string name="waitingfortimesynchronization" formatted="false">Se așteaptă sincronizarea (%d s)</string>
|
||||
<string name="loopdisconnectedfor" formatted="false">Deconectat (%d min)</string>
|
||||
<string name="automatic_careportal_events">Evenimente Careportal automate</string>
|
||||
<string name="automatically_upload_insulin_cannula_and_battery_changes_to_nightscout">Încărcare automată a schimbărilor de insulină, rezervor, baterie și alarme de pompă în Nightscout</string>
|
||||
<string name="openapssmb_maxiob_title">Maximul total IOB peste care OpenAPS nu poate trece [U]</string>
|
||||
<string name="pump_stopped">Pompă oprită</string>
|
||||
<string name="pump_started">Pompă pornită</string>
|
||||
<string name="pump_paused">Pompă în pauză</string>
|
||||
<string name="absorption_cutoff_title">Timpul maxim de absorbție a mesei [o]</string>
|
||||
<string name="absorption_cutoff_summary">Timpul în care orice mâncare se consideră absorbită. Carbohidrații rămași vor fi ignorați.</string>
|
||||
<string name="time">Timp</string>
|
||||
<string name="reset">reset</string>
|
||||
<string name="openapssmb_maxiob_summary">Această valoare este denumită Max IOB în contextul OpenAPS, OpenAPS nu va adăuga mai multă insulină dacă IOB este mai mare ca această valoare</string>
|
||||
<string name="boluserrorcode" formatted="false">Solicitat: %.2fU Livrat: %.2fU Cod eroare: %d</string>
|
||||
<string name="firstinsulinincrement">Primul increment de insulină</string>
|
||||
<string name="secondinsulinincrement">Al doilea increment de insulină</string>
|
||||
<string name="thirdinsulinincrement">Al treilea increment de insulină</string>
|
||||
<string name="firstcarbsincrement">Primul increment de carbohidrați</string>
|
||||
<string name="secondcarbsincrement">Al doilea increment de carbohidrați</string>
|
||||
<string name="thirdcarbsincrement">Al treilea increment de carbohidrați</string>
|
||||
<string name="ns_wifi_ssids">SSID WiFi</string>
|
||||
<string name="ns_wifi_allowedssids">SSIDuri permise (separare prin punct și virgulă)</string>
|
||||
<string name="combo_check_date">Ultimul bolus este mai vechi de 24 ore sau este în viitor. Verificați ca data să fie configurată corect în pompă.</string>
|
||||
<string name="combo_suspious_bolus_time">Ora/data bolusului livrat de pompă pare eronat, IOB este probabil incorect. Verificați ora/data pompei.</string>
|
||||
<string name="profileswitch_ismissing">Lipsă SchimbareProfil. Efectuați o schimbare de profil sau apăsați \"Activare profil\" în ProfilulLocal.</string>
|
||||
<string name="danar_visualizeextendedaspercentage_title">Afișati bolusul extins ca %</string>
|
||||
<string name="wear_wizard_settings">Asistent setări</string>
|
||||
<string name="ns_autobackfill_title">Autocompletează glicemiile lipsă</string>
|
||||
<string name="value_unavailable_short">n/a</string>
|
||||
<string name="openapsama_current_basal_safety_multiplier">Multiplicator sigur pentru bazala curentă</string>
|
||||
<string name="openapsama_max_daily_safety_multiplier">Multiplicator sigur maxim zilnic</string>
|
||||
<string name="openapsama_autosens_min">Rată minimă autosens</string>
|
||||
<string name="openapsama_autosens_max">Rată maximă autosens</string>
|
||||
<string name="ns_allowroaming">Permite conexiuni în roaming</string>
|
||||
<string name="connectionsettings_title">Setări conexiune</string>
|
||||
<string name="ns_chargingonly">Doar când se încarcă</string>
|
||||
<string name="wear_display_settings">Setări afișare</string>
|
||||
<string name="wear_general_settings">Setări generale</string>
|
||||
<string name="combo_bolus_count">Total bolusuri</string>
|
||||
<string name="combo_tbr_count">Total RBTuri</string>
|
||||
<string name="hardlimit">limită fizică</string>
|
||||
<string name="overview_show_notes_field_in_dialogs_title">Afișează câmp pentru note în dialogurile de tratamente</string>
|
||||
<string name="openapsama_bolussnooze_dia_divisor">Amână bolusul prin divizor</string>
|
||||
<string name="wear_wizard_settings_summary">Calcule incluse în rezultatul asistentului:</string>
|
||||
<string name="ga_lang">Irlandeză</string>
|
||||
<string name="enable_nsclient">Activează NSClient</string>
|
||||
<string name="welcometosetupwizard">Ați pornit asistentul pentru setări. Acesta vă va ajuta pentru configurarea setărilor</string>
|
||||
<string name="pumpsetup">Setări pompă</string>
|
||||
<string name="readstatus">Citire stare</string>
|
||||
<string name="adjustprofileinns">Schimbările trebuie făcute în NS</string>
|
||||
<string name="exitwizard">Ignoră asistentul pentru setări</string>
|
||||
<string name="setupwizard_bgsource_description">Care este sursa de glicemii?</string>
|
||||
<string name="setupwizard_loop_description">Apăsați butonul pentru a permite AndroidAPS să sugereze/facă schimbări ale bazalei</string>
|
||||
<string name="setupwizard_objectives_description">Apăsați butonul pentru a activa Obiectivele. După terminarea procesului de setare, alegeți fereastra Obiective pentru a face AndroidAPS complet funcțional.</string>
|
||||
<string name="enableobjectives">Activați Obiectivele</string>
|
||||
<string name="apssetup">Configurați plugin APS</string>
|
||||
<string name="backupismissing">Nu există configurații exportate, decin nu se poate face import de configurații.</string>
|
||||
<string name="sensitivitysetup">Configurați pluginul pentru Sensibilitate</string>
|
||||
<string name="setupwizard_sensitivity_description">Pluginul Sensibilitate este folosit pentru estimarea sensibilității și calcularea COB. Pentru mai multe info vizitați:</string>
|
||||
<string name="nsclientinfotext">NSClient răspunde de conexiunea cu Nightscout. Puteți ignora această secțiune, dar nu veți putea completa obiectivele până nu îl configurați.</string>
|
||||
<string name="diawarning">Atenție: noul profil presupune o durată a acțiunii insulinei (DIA) de cel puțin 5 ore. DIA de 5-6 ore este echivalent cu DIA de 3 ore în vechile profiluri.</string>
|
||||
<string name="bgsourcesetup">Configurați sursa glicemiilor</string>
|
||||
<string name="setupwizard_profile_description">Selectați sursa sau profilul. Dacă pacientul este copil, ar fi bine să alegeți un profil NS. Dacă nu aveți profil NS, puteți alege profil local. De aici alegeți doar sursa profilului; pentru a utiliza acest profil, trebuie să îl activați prin executarea unei \"Schimbări de profil\".</string>
|
||||
<string name="setupwizard_aps_description">Selectați un algoritm dintre cei disponibili. Aceștia sunt sortați de la cei mai vechi la cei mai noi. Algoritmii mai noi sunt, de obicei, mai puternici și mai agresivi. De aceea, dacă sunteți la început, veți dori să alegeți AMA și nu cu cel mai nou algoritm. NU uitați să citiți documentația OpenAPS și să faceți configurările corecte înainte de folosire!</string>
|
||||
<string name="startobjective">Începeți primul obiectiv</string>
|
||||
<string name="permission">Permisiune</string>
|
||||
<string name="askforpermission">Solicitați permisiunea</string>
|
||||
<string name="needlocationpermission">Aplicația necesită permisiune de localizare pentru scanarea prin BT</string>
|
||||
<string name="needstoragepermission">Aplicația necesită permisiune de acces la mediul de stocare pentru a putea înregistra jurnalele.</string>
|
||||
<string name="request">Cerință</string>
|
||||
<string name="insulinsourcesetup">Configurați plugin insulină</string>
|
||||
<string name="exit">Ieșire</string>
|
||||
</resources>
|
||||
|
|
|
@ -35,7 +35,8 @@
|
|||
|
||||
<color name="colorPrimary">#212121</color>
|
||||
<color name="colorPrimaryDark">#000000</color>
|
||||
<color name="colorAccent">#009688</color>
|
||||
<color name="colorAccent">#40bbaa</color>
|
||||
<color name="mdtp_accent_color">#40bbaa</color>
|
||||
<color name="colorInitializingBorder">#00695c</color>
|
||||
|
||||
<color name="cardColorBackground">#121212</color>
|
||||
|
@ -74,10 +75,4 @@
|
|||
<color name="deviationred">#72FF0000</color>
|
||||
<color name="deviationblack">#72000000</color>
|
||||
|
||||
|
||||
<color name="swColorPrimary">#303030</color>
|
||||
<color name="swColorPrimaryDark">#303030</color>
|
||||
<color name="swColorAccent">#FFEB3B</color>
|
||||
<color name="swColorBackground">#303030</color>
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -13,6 +13,43 @@
|
|||
<string name="ns_sync_use_absolute_title">Always use basal absolute values</string>
|
||||
<string name="alert_dialog_storage_permission_text">Please reboot your phone or restart AndroidAPS from the System Settings \notherwise Android APS will not have logging (important to track and verify that the algorithms are working correctly)!</string>
|
||||
|
||||
<string name="description_actions">Some buttons to quickly access common features</string>
|
||||
<string name="description_careportal">Enter advanced log book entries.</string>
|
||||
<string name="description_config_builder">Used for configuring the active plugins</string>
|
||||
<string name="description_objectives">Helps you to get started with AndroidAPS</string>
|
||||
<string name="description_food">Displays the food presets defined in Nightscout</string>
|
||||
<string name="description_insulin_rapid">Insulin preset for Humalog and NovoRapid / NovoLog</string>
|
||||
<string name="description_insulin_ultra_rapid">Insulin preset for Fiasp</string>
|
||||
<string name="description_insulin_free_peak">Allows you to define the peak of the insulin activity and should only be used by advanced users</string>
|
||||
<string name="description_loop">Activate or deactivate the implementation triggering the loop.</string>
|
||||
<string name="description_ns_client">Synchronizes your data with Nightscout</string>
|
||||
<string name="description_ma">State of the algorithm in 2016</string>
|
||||
<string name="description_ama">State of the algorithm in 2017</string>
|
||||
<string name="description_smb">Most recent and most stable</string>
|
||||
<string name="description_overview">Displays the current state of your loop and buttons for most common actions</string>
|
||||
<string name="description_persistent_notification">Shows an ongoing notification with a short overview of what your loop is doing</string>
|
||||
<string name="description_profile_local">Define a profile which is offline available.</string>
|
||||
<string name="description_profile_nightscout">Provides the profile you have defined in Nightscout</string>
|
||||
<string name="description_profile_simple">Define a profile with only one time block.</string>
|
||||
<string name="description_pump_combo">Pump integration for Accu-Chek Combo pumps, requires having ruffy installed</string>
|
||||
<string name="description_pump_dana_r">Pump integration for DANA Diabecare R pumps</string>
|
||||
<string name="description_pump_dana_rs">Pump integration for DANA Diabecare RS pumps</string>
|
||||
<string name="description_pump_insight">Pump integration for Accu-Chek Insight pumps, requires having SightRemote installed</string>
|
||||
<string name="description_pump_mdi">Pump integration for people who do multiple daily injections for their diabetes therapy</string>
|
||||
<string name="description_pump_virtual">Pump integration for pumps which don\'t have any driver yet (Open Loop)</string>
|
||||
<string name="description_sensitivity_aaps">Sensitivity is calculated the same way like Oref0, but you can specify timeframe to the past. Minimal carb absorption is calculated from max carb absorption time from preferences.</string>
|
||||
<string name="description_sensitivity_oref0">Sensitivity is calculated from 24h data in the past and carbs (if not absorbed) are cut after time specified in preferences.</string>
|
||||
<string name="description_sensitivity_weighted_average">Sensitivity is calculated as a weighted average from deviations. Newer deviations have higher weight. Minimal carb absorption is calculated from max carb absorption time from preferences. This algorithm is the fastest in following sensitivity changes.</string>
|
||||
<string name="description_source_dexcom_g5">Receive BG values from the patched Dexcom G5 app.</string>
|
||||
<string name="description_source_glimp">Receive BG values from Glimp.</string>
|
||||
<string name="description_source_mm640g">Receive BG values from the 600SeriesAndroidUploader.</string>
|
||||
<string name="description_source_ns_client">Downloads BG data from Nightscout</string>
|
||||
<string name="description_source_xdrip">Receive BG values from xDrip.</string>
|
||||
<string name="description_treatments">Saves all treatments that were made</string>
|
||||
<string name="description_wear">Monitor and control AndroidAPS using your WearOS watch.</string>
|
||||
<string name="description_xdrip_status_line">Show information about your loop on your xDrip+ watchface.</string>
|
||||
<string name="description_sms_communicator">Remote control AndroidAPS using SMS commands.</string>
|
||||
|
||||
<string name="objectives_objective_label_string">Objective:</string>
|
||||
<string name="objectives_gate_label_string">Gate:</string>
|
||||
<string name="objectives_button_start">Start</string>
|
||||
|
@ -83,16 +120,23 @@
|
|||
|
||||
|
||||
<string name="configbuilder_pump">Pump</string>
|
||||
<string name="configbuilder_pump_description">Which pump would you like to use with AndroidAPS?</string>
|
||||
<string name="configbuilder_treatments">Treatments</string>
|
||||
<string name="configbuilder_treatments_description">Which plugin should be used for treatment handling?</string>
|
||||
<string name="configbuilder_profile">Profile</string>
|
||||
<string name="configbuilder_profile_description">Which profile should AndroidAPS use?</string>
|
||||
<string name="configbuilder_aps">APS</string>
|
||||
<string name="configbuilder_aps_description">Which APS algorithm should make therapy adjustments?</string>
|
||||
<string name="configbuilder_general">General</string>
|
||||
<string name="configbuilder_general_description">These are some general plugins you might find useful.</string>
|
||||
<string name="configbuilder_constraints_description">Which constraints are applied?</string>
|
||||
<string name="days">days</string>
|
||||
<string name="objectives_minimalduration">Minimal duration</string>
|
||||
<string name="constraints">Constraints</string>
|
||||
|
||||
<string name="loop">Loop</string>
|
||||
<string name="configbuilder_loop">Loop</string>
|
||||
<string name="configbuilder_loop_description">Use this to activate AndroidAPS\' loop integration.</string>
|
||||
<string name="loop_aps_label">APS</string>
|
||||
<string name="loop_constraintsprocessed_label">After processed constraints</string>
|
||||
<string name="loop_tbrsetbypump_label">Temp basal set by pump</string>
|
||||
|
@ -121,6 +165,7 @@
|
|||
<string name="changeyourinput">Change your input!</string>
|
||||
<string name="setextendedbolusquestion">Set new extended bolus:</string>
|
||||
<string name="configbuilder_bgsource">BG Source</string>
|
||||
<string name="configbuilder_bgsource_description">Where should AndroidAPS gain it\'s data from?</string>
|
||||
<string name="xdrip">xDrip</string>
|
||||
<string name="apsmode_title">APS Mode</string>
|
||||
|
||||
|
@ -553,6 +598,7 @@
|
|||
<string name="restartingapp">Exiting application to apply settings.</string>
|
||||
<string name="danarv2pump">DanaRv2</string>
|
||||
<string name="configbuilder_insulin">Insulin</string>
|
||||
<string name="configbuilder_insulin_description">Which type of insulin are you using?</string>
|
||||
<string name="fastactinginsulin">Fast Acting Insulin</string>
|
||||
<string name="fastactinginsulincomment">Novorapid, Novolog, Humalog</string>
|
||||
<string name="ultrafastactinginsulincomment">Fiasp</string>
|
||||
|
@ -616,6 +662,7 @@
|
|||
<string name="openaps">OpenAPS</string>
|
||||
<string name="uploader">Uploader</string>
|
||||
<string name="configbuilder_sensitivity">Sensitivity detection</string>
|
||||
<string name="configbuilder_sensitivity_description">Which sensitivity algorithm should be used?</string>
|
||||
<string name="sensitivity_shortname">SENS</string>
|
||||
<string name="sensitivityoref0">Sensitivity Oref0</string>
|
||||
<string name="sensitivityaaps">Sensitivity AAPS</string>
|
||||
|
@ -756,6 +803,7 @@
|
|||
<string name="dexcomg5_nsupload_title">Upload BG data to NS</string>
|
||||
<string name="key_dexcomg5_nsupload" translatable="false">dexcomg5_nsupload</string>
|
||||
<string name="dexcomg5_upload">G5 upload settings</string>
|
||||
<string name="poctech_upload">Poctech upload settings</string>
|
||||
<string name="wear_detailed_delta_title">Show detailed delta</string>
|
||||
<string name="wear_detailed_delta_summary">Show delta with one more decimal place</string>
|
||||
<string name="smbmaxminutes" translatable="false">45 60 75 90 105 120</string>
|
||||
|
@ -1108,4 +1156,6 @@
|
|||
<string name="open_navigation">Open navigation</string>
|
||||
<string name="close_navigation">Close navigation</string>
|
||||
<string name="nav_plugin_preferences">Plugin preferences</string>
|
||||
<string name="poctech">Poctech</string>
|
||||
<string name="description_source_poctech">Receive BG values from Poctech app</string>
|
||||
</resources>
|
||||
|
|
|
@ -28,12 +28,5 @@
|
|||
<item name="android:textSize">10sp</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.SetupWizard" parent="Theme.AppCompat.NoActionBar">
|
||||
<item name="colorPrimary">@color/swColorPrimary</item>
|
||||
<item name="colorPrimaryDark">@color/swColorPrimaryDark</item>
|
||||
<item name="colorAccent">@color/swColorAccent</item>
|
||||
<item name="android:windowBackground">@color/swColorBackground</item>
|
||||
</style>
|
||||
|
||||
<!-- Preferences -->
|
||||
</resources>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<PreferenceCategory
|
||||
android:key="danar"
|
||||
android:title="@string/dexcomg5_upload">
|
||||
|
||||
<SwitchPreference
|
||||
|
|
19
app/src/main/res/xml/pref_poctech.xml
Normal file
19
app/src/main/res/xml/pref_poctech.xml
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<PreferenceCategory
|
||||
android:title="@string/poctech_upload">
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="@string/key_dexcomg5_nsupload"
|
||||
android:title="@string/dexcomg5_nsupload_title" />
|
||||
|
||||
<SwitchPreference
|
||||
android:defaultValue="false"
|
||||
android:key="@string/key_dexcomg5_xdripupload"
|
||||
android:summary="@string/dexcomg5_xdripupload_summary"
|
||||
android:title="@string/dexcomg5_xdripupload_title" />
|
||||
|
||||
</PreferenceCategory>
|
||||
|
||||
</PreferenceScreen>
|
Loading…
Reference in a new issue