Merge pull request #42 from MilosKozak/master

update to milos master
This commit is contained in:
AdrianLxM 2017-01-17 17:55:28 +01:00 committed by GitHub
commit f4ce4a1587
39 changed files with 350 additions and 126 deletions

View file

@ -37,7 +37,7 @@
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">

View file

@ -43,8 +43,8 @@ android {
applicationId "info.nightscout.androidaps"
minSdkVersion 21
targetSdkVersion 23
versionCode 1020
versionName "1.0.20"
versionCode 1100
versionName "1.1"
buildConfigField "String", "BUILDVERSION", generateGitBuild()
}
lintOptions {

View file

@ -63,6 +63,8 @@
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
<!-- Receiver from xDrip -->
<action android:name="com.eveningoutpost.dexdrip.BgEstimate" />
<!-- Receiver from 640g uploader -->
<action android:name="com.eveningoutpost.dexdrip.NS_EMULATOR" />
<!-- Auto start -->
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>

View file

@ -34,6 +34,7 @@ import info.nightscout.androidaps.plugins.Overview.OverviewFragment;
import info.nightscout.androidaps.plugins.SafetyFragment.SafetyFragment;
import info.nightscout.androidaps.plugins.SimpleProfile.SimpleProfileFragment;
import info.nightscout.androidaps.plugins.SmsCommunicator.SmsCommunicatorFragment;
import info.nightscout.androidaps.plugins.SourceMM640g.SourceMM640gFragment;
import info.nightscout.androidaps.plugins.SourceNSClient.SourceNSClientFragment;
import info.nightscout.androidaps.plugins.SourceXdrip.SourceXdripFragment;
import info.nightscout.androidaps.plugins.TempBasals.TempBasalsFragment;
@ -92,6 +93,7 @@ public class MainApp extends Application {
if (Config.APS) pluginsList.add(ObjectivesFragment.getPlugin());
pluginsList.add(SourceXdripFragment.getPlugin());
pluginsList.add(SourceNSClientFragment.getPlugin());
pluginsList.add(SourceMM640gFragment.getPlugin());
if (Config.SMSCOMMUNICATORENABLED)
pluginsList.add(SmsCommunicatorFragment.getPlugin());

View file

@ -42,6 +42,7 @@ import info.nightscout.androidaps.plugins.Objectives.ObjectivesPlugin;
import info.nightscout.androidaps.plugins.Overview.OverviewPlugin;
import info.nightscout.androidaps.plugins.SmsCommunicator.SmsCommunicatorPlugin;
import info.nightscout.androidaps.plugins.SmsCommunicator.events.EventNewSMS;
import info.nightscout.androidaps.plugins.SourceMM640g.SourceMM640gPlugin;
import info.nightscout.androidaps.plugins.SourceNSClient.SourceNSClientPlugin;
import info.nightscout.androidaps.plugins.SourceXdrip.SourceXdripPlugin;
import info.nightscout.androidaps.receivers.DataReceiver;
@ -55,6 +56,7 @@ public class DataService extends IntentService {
boolean xDripEnabled = false;
boolean nsClientEnabled = true;
boolean mm640gEnabled = false;
public DataService() {
super("DataService");
@ -69,9 +71,15 @@ public class DataService extends IntentService {
if (ConfigBuilderPlugin.getActiveBgSource().getClass().equals(SourceXdripPlugin.class)) {
xDripEnabled = true;
nsClientEnabled = false;
mm640gEnabled = false;
} else if (ConfigBuilderPlugin.getActiveBgSource().getClass().equals(SourceNSClientPlugin.class)) {
xDripEnabled = false;
nsClientEnabled = true;
mm640gEnabled = false;
} else if (ConfigBuilderPlugin.getActiveBgSource().getClass().equals(SourceMM640gPlugin.class)) {
xDripEnabled = false;
nsClientEnabled = false;
mm640gEnabled = true;
}
boolean isNSProfile = ConfigBuilderPlugin.getActiveProfile().getClass().equals(NSProfilePlugin.class);
@ -85,6 +93,10 @@ public class DataService extends IntentService {
if (xDripEnabled) {
handleNewDataFromXDrip(intent);
}
} else if (Intents.NS_EMULATOR.equals(action)) {
if (mm640gEnabled) {
handleNewDataFromMM640g(intent);
}
} else if (Intents.ACTION_NEW_SGV.equals(action)) {
// always handle SGV if NS-Client is the source
if (nsClientEnabled) {
@ -171,6 +183,58 @@ public class DataService extends IntentService {
MainApp.bus().post(new EventNewBG());
}
private void handleNewDataFromMM640g(Intent intent) {
Bundle bundle = intent.getExtras();
if (bundle == null) return;
final String collection = bundle.getString("collection");
if (collection == null) return;
if (collection.equals("entries")) {
final String data = bundle.getString("data");
if ((data != null) && (data.length() > 0)) {
try {
final JSONArray json_array = new JSONArray(data);
for (int i = 0; i < json_array.length(); i++) {
final JSONObject json_object = json_array.getJSONObject(i);
final String type = json_object.getString("type");
switch (type) {
case "sgv":
BgReading bgReading = new BgReading();
bgReading.value = json_object.getDouble("sgv");
bgReading.direction = json_object.getString("direction");
bgReading.timeIndex = json_object.getLong("date");
bgReading.raw = json_object.getDouble("sgv");
if (bgReading.timeIndex < new Date().getTime() - Constants.hoursToKeepInDatabase * 60 * 60 * 1000L) {
if (Config.logIncommingBG)
log.debug("Ignoring old MM640g BG " + bgReading.toString());
return;
}
if (Config.logIncommingBG)
log.debug("MM640g BG " + bgReading.toString());
try {
MainApp.getDbHelper().getDaoBgReadings().createIfNotExists(bgReading);
} catch (SQLException e) {
e.printStackTrace();
}
break;
default:
log.debug("Unknown entries type: " + type);
}
}
} catch (JSONException e) {
log.error("Got JSON exception: " + e);
}
}
}
MainApp.bus().post(new EventNewBG());
}
private void handleNewDataFromNSClient(Intent intent) {
Bundle bundles = intent.getExtras();
if (bundles == null) return;
@ -282,7 +346,6 @@ public class DataService extends IntentService {
handleAddedTreatment(trstr);
}
}
scheduleTreatmentChange();
} catch (Exception e) {
e.printStackTrace();
}
@ -304,7 +367,6 @@ public class DataService extends IntentService {
handleChangedTreatment(trstr);
}
}
scheduleTreatmentChange();
} catch (Exception e) {
e.printStackTrace();
}
@ -328,7 +390,6 @@ public class DataService extends IntentService {
removeTreatmentFromDb(_id);
}
}
scheduleTreatmentChange();
} catch (Exception e) {
e.printStackTrace();
}
@ -407,6 +468,7 @@ public class DataService extends IntentService {
int updated = MainApp.getDbHelper().getDaoTreatments().update(stored);
if (Config.logIncommingData)
log.debug("Records updated: " + updated);
scheduleTreatmentChange();
}
} else {
if (Config.logIncommingData)
@ -430,6 +492,7 @@ public class DataService extends IntentService {
} catch (SQLException e) {
e.printStackTrace();
}
scheduleTreatmentChange();
}
}
@ -483,6 +546,7 @@ public class DataService extends IntentService {
} catch (SQLException e) {
e.printStackTrace();
}
scheduleTreatmentChange();
}
public void handleDanaRHistoryRecords(JSONObject trJson) throws JSONException, SQLException {

View file

@ -29,4 +29,6 @@ public interface Intents {
String EXTRA_RAW = "com.eveningoutpost.dexdrip.Extras.Raw";
String ACTION_NEW_BG_ESTIMATE_NO_DATA = "com.eveningoutpost.dexdrip.BgEstimateNoData";
String NS_EMULATOR = "com.eveningoutpost.dexdrip.NS_EMULATOR";
}

View file

@ -6,14 +6,13 @@ import com.j256.ormlite.table.DatabaseTable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.data.Iob;
import info.nightscout.androidaps.plugins.OpenAPSMA.IobTotal;
import info.nightscout.client.data.NSProfile;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter;
@DatabaseTable(tableName = DatabaseHelper.DATABASE_TEMPBASALS)
@ -190,16 +189,15 @@ public class TempBasal {
}
public String toString() {
DateFormat formatDateToJustTime = new SimpleDateFormat("HH:mm");
String extended = isExtended ? "E " : "";
if (isAbsolute) {
return extended + DecimalFormatter.to2Decimal(absolute) + "U/h @" +
formatDateToJustTime.format(timeStart) +
DateUtil.timeString(timeStart) +
" " + getRealDuration() + "/" + duration + "min";
} else { // percent
return percent + "% @" +
formatDateToJustTime.format(timeStart) +
DateUtil.timeString(timeStart) +
" " + getRealDuration() + "/" + duration + "min";
}
}

View file

@ -13,9 +13,8 @@ import java.util.List;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.data.Iob;
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderFragment;
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.Overview.GraphSeriesExtension.DataPointWithLabelInterface;
import info.nightscout.androidaps.plugins.Overview.graphExtensions.DataPointWithLabelInterface;
import info.nightscout.client.data.NSProfile;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter;

View file

@ -33,7 +33,6 @@ import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Calendar;
@ -197,10 +196,8 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick
eventTime = new Date();
dateButton = (Button) view.findViewById(R.id.careportal_newnstreatment_eventdate);
timeButton = (Button) view.findViewById(R.id.careportal_newnstreatment_eventtime);
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
DateFormat tf = DateFormat.getTimeInstance(DateFormat.SHORT);
dateButton.setText(df.format(eventTime));
timeButton.setText(tf.format(eventTime));
dateButton.setText(DateUtil.dateString(eventTime));
timeButton.setText(DateUtil.timeString(eventTime));
dateButton.setOnClickListener(this);
timeButton.setOnClickListener(this);
@ -330,8 +327,7 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick
eventTime.setYear(year - 1900);
eventTime.setMonth(monthOfYear);
eventTime.setDate(dayOfMonth);
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
dateButton.setText(df.format(eventTime));
dateButton.setText(DateUtil.dateString(eventTime));
}
@Override
@ -339,8 +335,7 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick
eventTime.setHours(hourOfDay);
eventTime.setMinutes(minute);
eventTime.setSeconds(second);
DateFormat tf = DateFormat.getTimeInstance(DateFormat.SHORT);
timeButton.setText(tf.format(eventTime));
timeButton.setText(DateUtil.timeString(eventTime));
}

View file

@ -29,6 +29,7 @@ import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.events.EventInitializationChanged;
import info.nightscout.androidaps.interfaces.FragmentBase;
import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog;
import info.nightscout.androidaps.plugins.Careportal.OptionsToShow;
import info.nightscout.utils.DecimalFormatter;
@ -55,6 +56,7 @@ public class CircadianPercentageProfileFragment extends Fragment implements Frag
TextView profileView;
TextView baseprofileIC;
TextView baseprofileBasal;
LinearLayout baseprofileBasalLayout;
TextView baseprofileISF;
Button profileswitchButton;
ImageView percentageIcon;
@ -79,6 +81,7 @@ public class CircadianPercentageProfileFragment extends Fragment implements Frag
timeshiftView = (EditText) layout.findViewById(R.id.circadianpercentageprofile_timeshift);
profileView = (TextView) layout.findViewById(R.id.circadianpercentageprofile_profileview);
baseprofileBasal = (TextView) layout.findViewById(R.id.circadianpercentageprofile_baseprofilebasal);
baseprofileBasalLayout = (LinearLayout) layout.findViewById(R.id.circadianpercentageprofile_baseprofilebasal_layout);
baseprofileIC = (TextView) layout.findViewById(R.id.circadianpercentageprofile_baseprofileic);
baseprofileISF = (TextView) layout.findViewById(R.id.circadianpercentageprofile_baseprofileisf);
percentageIcon = (ImageView) layout.findViewById(R.id.circadianpercentageprofile_percentageicon);
@ -89,6 +92,11 @@ public class CircadianPercentageProfileFragment extends Fragment implements Frag
iceditIcon = (ImageView) layout.findViewById(R.id.circadianpercentageprofile_icedit);
isfeditIcon = (ImageView) layout.findViewById(R.id.circadianpercentageprofile_isfedit);
PumpInterface pump = MainApp.getConfigBuilder();
if (!pump.getPumpDescription().isTempBasalCapable) {
layout.findViewById(R.id.circadianpercentageprofile_baseprofilebasal_layout).setVisibility(View.GONE);
}
mgdlView.setChecked(circadianPercentageProfilePlugin.mgdl);
mmolView.setChecked(circadianPercentageProfilePlugin.mmol);
@ -344,6 +352,12 @@ public class CircadianPercentageProfileFragment extends Fragment implements Frag
@Override
public void onPause() {
super.onPause();
if (basalEditDialog != null && basalEditDialog.isVisible()) {
basalEditDialog.dismiss();
}
basalEditDialog = null;
MainApp.bus().unregister(this);
}

View file

@ -205,6 +205,10 @@ public class ConfigBuilderFragment extends Fragment implements FragmentBase {
holder.checkboxVisible.setEnabled(false);
}
if (!plugin.isEnabled(type)) {
holder.checkboxVisible.setEnabled(false);
}
// Hide enabled control and force enabled plugin if there is only one plugin available
if (type == PluginBase.PUMP || type == PluginBase.TREATMENT || type == PluginBase.TEMPBASAL || type == PluginBase.PROFILE)
if (pluginList.size() < 2) {

View file

@ -20,7 +20,6 @@ import com.squareup.otto.Subscribe;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DateFormat;
import java.util.Date;
import info.nightscout.androidaps.MainApp;
@ -32,6 +31,7 @@ import info.nightscout.androidaps.plugins.DanaR.Dialogs.ProfileViewDialog;
import info.nightscout.androidaps.plugins.DanaR.History.DanaRHistoryActivity;
import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRConnectionStatus;
import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRNewStatus;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter;
import info.nightscout.utils.SetWarnColor;
@ -188,8 +188,6 @@ public class DanaRFragment extends Fragment implements FragmentBase {
// GUI functions
private void updateGUI() {
final DateFormat formatTime = DateFormat.getTimeInstance(DateFormat.SHORT);
Activity activity = getActivity();
if (activity != null && basaBasalRateView != null)
activity.runOnUiThread(new Runnable() {
@ -200,14 +198,14 @@ public class DanaRFragment extends Fragment implements FragmentBase {
if (DanaRPlugin.getDanaRPump().lastConnection.getTime() != 0) {
Long agoMsec = new Date().getTime() - DanaRPlugin.getDanaRPump().lastConnection.getTime();
int agoMin = (int) (agoMsec / 60d / 1000d);
lastConnectionView.setText(formatTime.format(DanaRPlugin.getDanaRPump().lastConnection) + " (" + String.format(MainApp.sResources.getString(R.string.minago), agoMin) + ")");
lastConnectionView.setText(DateUtil.timeString(DanaRPlugin.getDanaRPump().lastConnection) + " (" + String.format(MainApp.sResources.getString(R.string.minago), agoMin) + ")");
SetWarnColor.setColor(lastConnectionView, agoMin, 16d, 31d);
}
if (DanaRPlugin.getDanaRPump().lastBolusTime.getTime() != 0) {
Long agoMsec = new Date().getTime() - DanaRPlugin.getDanaRPump().lastBolusTime.getTime();
double agoHours = agoMsec / 60d / 60d / 1000d;
if (agoHours < 6) // max 6h back
lastBolusView.setText(formatTime.format(DanaRPlugin.getDanaRPump().lastBolusTime) + " (" + DecimalFormatter.to1Decimal(agoHours) + " " + getString(R.string.hoursago) + ") " + DecimalFormatter.to2Decimal(getPlugin().getDanaRPump().lastBolusAmount) + " U");
lastBolusView.setText(DateUtil.timeString(DanaRPlugin.getDanaRPump().lastBolusTime) + " (" + DecimalFormatter.to1Decimal(agoHours) + " " + getString(R.string.hoursago) + ") " + DecimalFormatter.to2Decimal(getPlugin().getDanaRPump().lastBolusAmount) + " U");
else lastBolusView.setText("");
}

View file

@ -31,7 +31,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.sql.SQLException;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -46,6 +45,7 @@ import info.nightscout.androidaps.plugins.DanaR.comm.RecordTypes;
import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRConnectionStatus;
import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRSyncStatus;
import info.nightscout.client.data.NSProfile;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter;
import info.nightscout.utils.ToastUtils;
@ -274,9 +274,8 @@ public class DanaRHistoryActivity extends Activity {
@Override
public void onBindViewHolder(HistoryViewHolder holder, int position) {
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
DanaRHistoryRecord record = historyList.get(position);
holder.time.setText(df.format(new Date(record.getRecordDate())));
holder.time.setText(DateUtil.dateAndTimeString(record.getRecordDate()));
holder.value.setText(DecimalFormatter.to2Decimal(record.getRecordValue()));
holder.stringvalue.setText(record.getStringRecordValue());
holder.bolustype.setText(record.getBolusType());
@ -306,11 +305,10 @@ public class DanaRHistoryActivity extends Activity {
holder.alarm.setVisibility(View.GONE);
break;
case RecordTypes.RECORD_TYPE_DAILY:
df = DateFormat.getDateInstance(DateFormat.SHORT);
holder.dailybasal.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBasal()) + "U");
holder.dailybolus.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBolus()) + "U");
holder.dailytotal.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBolus()+ record.getRecordDailyBasal()) + "U");
holder.time.setText(df.format(new Date(record.getRecordDate())));
holder.time.setText(DateUtil.dateString(record.getRecordDate()));
holder.time.setVisibility(View.VISIBLE);
holder.value.setVisibility(View.GONE);
holder.stringvalue.setVisibility(View.GONE);

View file

@ -6,12 +6,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.sql.SQLException;
import java.text.DateFormat;
import java.util.Date;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.db.DanaRHistoryRecord;
import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRSyncStatus;
import info.nightscout.utils.DateUtil;
public class MsgHistoryAll extends MessageBase {
private static Logger log = LoggerFactory.getLogger(MsgHistoryAll.class);
@ -150,8 +150,7 @@ public class MsgHistoryAll extends MessageBase {
log.error(e.getMessage(), e);
}
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
ev.message = df.format(new Date(danaRHistoryRecord.getRecordDate()));
ev.message = DateUtil.dateAndTimeString(danaRHistoryRecord.getRecordDate());
ev.message += " " + messageType;
MainApp.bus().post(ev);

View file

@ -20,7 +20,6 @@ import com.squareup.otto.Subscribe;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DateFormat;
import java.util.Date;
import info.nightscout.androidaps.MainApp;
@ -32,6 +31,7 @@ import info.nightscout.androidaps.plugins.DanaR.Dialogs.ProfileViewDialog;
import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRConnectionStatus;
import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRNewStatus;
import info.nightscout.androidaps.plugins.DanaRKorean.History.DanaRHistoryActivity;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter;
import info.nightscout.utils.SetWarnColor;
@ -185,7 +185,6 @@ public class DanaRKoreanFragment extends Fragment implements FragmentBase {
// GUI functions
private void updateGUI() {
final DateFormat formatTime = DateFormat.getTimeInstance(DateFormat.SHORT);
Activity activity = getActivity();
if (activity != null && basaBasalRateView != null)
@ -197,7 +196,7 @@ public class DanaRKoreanFragment extends Fragment implements FragmentBase {
if (DanaRKoreanPlugin.getDanaRPump().lastConnection.getTime() != 0) {
Long agoMsec = new Date().getTime() - DanaRKoreanPlugin.getDanaRPump().lastConnection.getTime();
int agoMin = (int) (agoMsec / 60d / 1000d);
lastConnectionView.setText(formatTime.format(DanaRKoreanPlugin.getDanaRPump().lastConnection) + " (" + String.format(MainApp.sResources.getString(R.string.minago), agoMin) + ")");
lastConnectionView.setText(DateUtil.timeString(DanaRKoreanPlugin.getDanaRPump().lastConnection) + " (" + String.format(MainApp.sResources.getString(R.string.minago), agoMin) + ")");
SetWarnColor.setColor(lastConnectionView, agoMin, 16d, 31d);
}
// if (DanaRKoreanPlugin.getDanaRPump().lastBolusTime.getTime() != 0) {

View file

@ -31,7 +31,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.sql.SQLException;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -47,6 +46,7 @@ import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRConnectionStatu
import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRSyncStatus;
import info.nightscout.androidaps.plugins.DanaRKorean.Services.ExecutionService;
import info.nightscout.client.data.NSProfile;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter;
import info.nightscout.utils.ToastUtils;
@ -273,9 +273,8 @@ public class DanaRHistoryActivity extends Activity {
@Override
public void onBindViewHolder(HistoryViewHolder holder, int position) {
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
DanaRHistoryRecord record = historyList.get(position);
holder.time.setText(df.format(new Date(record.getRecordDate())));
holder.time.setText(DateUtil.dateAndTimeString(record.getRecordDate()));
holder.value.setText(DecimalFormatter.to2Decimal(record.getRecordValue()));
holder.stringvalue.setText(record.getStringRecordValue());
holder.bolustype.setText(record.getBolusType());
@ -305,11 +304,10 @@ public class DanaRHistoryActivity extends Activity {
holder.alarm.setVisibility(View.GONE);
break;
case RecordTypes.RECORD_TYPE_DAILY:
df = DateFormat.getDateInstance(DateFormat.SHORT);
holder.dailybasal.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBasal()) + "U");
holder.dailybolus.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBolus()) + "U");
holder.dailytotal.setText(DecimalFormatter.to2Decimal(record.getRecordDailyBolus()+ record.getRecordDailyBasal()) + "U");
holder.time.setText(df.format(new Date(record.getRecordDate())));
holder.time.setText(DateUtil.dateString(record.getRecordDate()));
holder.time.setVisibility(View.VISIBLE);
holder.value.setVisibility(View.GONE);
holder.stringvalue.setVisibility(View.GONE);

View file

@ -25,6 +25,7 @@ import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.events.EventInitializationChanged;
import info.nightscout.androidaps.interfaces.FragmentBase;
import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog;
import info.nightscout.androidaps.plugins.Careportal.OptionsToShow;
import info.nightscout.utils.SafeParse;
@ -70,6 +71,11 @@ public class LocalProfileFragment extends Fragment implements FragmentBase {
targetView = new TimeListEdit(getContext(), layout, R.id.localprofile_target, MainApp.sResources.getString(R.string.nsprofileview_target_label), getPlugin().targetLow, getPlugin().targetHigh, new DecimalFormat("0.0"), save);
profileswitchButton = (Button) layout.findViewById(R.id.localprofile_profileswitch);
PumpInterface pump = MainApp.getConfigBuilder();
if (!pump.getPumpDescription().isTempBasalCapable) {
layout.findViewById(R.id.localprofile_basal).setVisibility(View.GONE);
}
onStatusEvent(null);
mgdlView.setChecked(localProfilePlugin.mgdl);

View file

@ -111,7 +111,7 @@ public class DetermineBasalAdapterJS implements Parcelable {
mProfile.add("max_basal", 0);
mProfile.add("max_bg", 0);
mProfile.add("min_bg", 0);
mProfile.add("carbratio", 0);
mProfile.add("carb_ratio", 0);
mProfile.add("sens", 0);
mProfile.add("current_basal", 0);
mV8rt.add(PARAM_profile, mProfile);
@ -280,7 +280,7 @@ public class DetermineBasalAdapterJS implements Parcelable {
mProfile.add("min_bg", minBg);
mProfile.add("max_bg", maxBg);
mProfile.add("target_bg", targetBg);
mProfile.add("carbratio", profile.getIc(profile.secondsFromMidnight()));
mProfile.add("carb_ratio", profile.getIc(profile.secondsFromMidnight()));
mProfile.add("sens", NSProfile.toMgdl(profile.getIsf(NSProfile.secondsFromMidnight()).doubleValue(), units));
mProfile.add("current_basal", pump.getBaseBasalRate());

View file

@ -17,6 +17,7 @@ import org.slf4j.LoggerFactory;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.interfaces.FragmentBase;
import info.nightscout.androidaps.plugins.Loop.APSResult;
import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSMAUpdateGui;
import info.nightscout.androidaps.plugins.OpenAPSMA.events.EventOpenAPSMAUpdateResultGui;
import info.nightscout.utils.JSONFormatter;
@ -101,14 +102,20 @@ public class OpenAPSMAFragment extends Fragment implements View.OnClickListener,
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
if (getPlugin().lastAPSResult != null) {
glucoseStatusView.setText(JSONFormatter.format(getPlugin().lastDetermineBasalAdapterJS.getGlucoseStatusParam()));
currentTempView.setText(JSONFormatter.format(getPlugin().lastDetermineBasalAdapterJS.getCurrentTempParam()));
iobDataView.setText(JSONFormatter.format(getPlugin().lastDetermineBasalAdapterJS.getIobDataParam()));
profileView.setText(JSONFormatter.format(getPlugin().lastDetermineBasalAdapterJS.getProfileParam()));
mealDataView.setText(JSONFormatter.format(getPlugin().lastDetermineBasalAdapterJS.getMealDataParam()));
resultView.setText(JSONFormatter.format(getPlugin().lastAPSResult.json));
requestView.setText(getPlugin().lastAPSResult.toSpanned());
DetermineBasalResult lastAPSResult = getPlugin().lastAPSResult;
if (lastAPSResult != null) {
resultView.setText(JSONFormatter.format(lastAPSResult.json));
requestView.setText(lastAPSResult.toSpanned());
}
DetermineBasalAdapterJS determineBasalAdapterJS = getPlugin().lastDetermineBasalAdapterJS;
if (determineBasalAdapterJS != null) {
glucoseStatusView.setText(JSONFormatter.format(determineBasalAdapterJS.getGlucoseStatusParam()));
currentTempView.setText(JSONFormatter.format(determineBasalAdapterJS.getCurrentTempParam()));
iobDataView.setText(JSONFormatter.format(determineBasalAdapterJS.getIobDataParam()));
profileView.setText(JSONFormatter.format(determineBasalAdapterJS.getProfileParam()));
mealDataView.setText(JSONFormatter.format(determineBasalAdapterJS.getMealDataParam()));
}
if (getPlugin().lastAPSRun != null) {
lastRunView.setText(getPlugin().lastAPSRun.toLocaleString());
}
}

View file

@ -15,7 +15,6 @@ import android.widget.Spinner;
import org.json.JSONException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@ -62,15 +61,14 @@ public class EditQuickWizardDialog extends DialogFragment implements View.OnClic
int posFrom = 0;
int posTo = 95;
ArrayList<CharSequence> timeList = new ArrayList<>();
DateFormat df = new SimpleDateFormat("HH:mm");
int pos = 0;
for (int t = 0; t < 24 * 60 * 60; t += 15 * 60) {
timeList.add(df.format(DateUtil.toDate(t)));
timeList.add(DateUtil.timeString(DateUtil.toDate(t)));
if (entry.validFrom() == t) posFrom = pos;
if (entry.validTo() == t) posTo = pos;
pos++;
}
timeList.add(df.format(DateUtil.toDate(24 * 60 * 60 - 60)));
timeList.add(DateUtil.timeString(DateUtil.toDate(24 * 60 * 60 - 60)));
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(getContext(),
android.R.layout.simple_spinner_item, timeList);

View file

@ -38,7 +38,6 @@ import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Calendar;
@ -73,9 +72,10 @@ import info.nightscout.androidaps.plugins.Objectives.ObjectivesPlugin;
import info.nightscout.androidaps.plugins.OpenAPSMA.IobTotal;
import info.nightscout.androidaps.plugins.Overview.Dialogs.NewTreatmentDialog;
import info.nightscout.androidaps.plugins.Overview.Dialogs.WizardDialog;
import info.nightscout.androidaps.plugins.Overview.GraphSeriesExtension.PointsWithLabelGraphSeries;
import info.nightscout.androidaps.plugins.Overview.graphExtensions.PointsWithLabelGraphSeries;
import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification;
import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification;
import info.nightscout.androidaps.plugins.Overview.graphExtensions.TimeAsXAxisLabelFormatter;
import info.nightscout.client.data.NSProfile;
import info.nightscout.utils.BolusWizard;
import info.nightscout.utils.DateUtil;
@ -101,6 +101,7 @@ public class OverviewFragment extends Fragment {
TextView avgdeltaView;
TextView runningTempView;
TextView baseBasalView;
LinearLayout basalLayout;
TextView activeProfileView;
TextView iobView;
TextView apsModeView;
@ -146,6 +147,7 @@ public class OverviewFragment extends Fragment {
avgdeltaView = (TextView) view.findViewById(R.id.overview_avgdelta);
runningTempView = (TextView) view.findViewById(R.id.overview_runningtemp);
baseBasalView = (TextView) view.findViewById(R.id.overview_basebasal);
basalLayout = (LinearLayout) view.findViewById(R.id.overview_basallayout);
activeProfileView = (TextView) view.findViewById(R.id.overview_activeprofile);
iobView = (TextView) view.findViewById(R.id.overview_iob);
@ -521,7 +523,13 @@ public class OverviewFragment extends Fragment {
cancelTempLayout.setVisibility(View.GONE);
runningTempView.setVisibility(View.GONE);
}
baseBasalView.setText(DecimalFormatter.to2Decimal(pump.getBaseBasalRate()) + " U/h");
if (pump.getPumpDescription().isTempBasalCapable) {
basalLayout.setVisibility(View.VISIBLE);
baseBasalView.setText(DecimalFormatter.to2Decimal(pump.getBaseBasalRate()) + " U/h");
} else {
basalLayout.setVisibility(View.GONE);
}
if (profile != null && profile.getActiveProfile() != null)
activeProfileView.setText(profile.getActiveProfile());
@ -668,27 +676,29 @@ public class OverviewFragment extends Fragment {
Double maxBasalValueFound = 0d;
long now = new Date().getTime();
List<BarDataPoint> basalArray = new ArrayList<BarDataPoint>();
for (long time = fromTime; time < now; time += 5 * 60 * 1000L) {
TempBasal tb = MainApp.getConfigBuilder().getTempBasal(new Date(time));
Double basal = 0d;
if (tb != null)
basalArray.add(new BarDataPoint(time, basal = tb.tempBasalConvertedToAbsolute(new Date(time)), true));
else
basalArray.add(new BarDataPoint(time, basal = profile.getBasal(NSProfile.secondsFromMidnight(new Date(time))), false));
maxBasalValueFound = Math.max(maxBasalValueFound, basal);
}
BarDataPoint[] basal = new BarDataPoint[basalArray.size()];
basal = basalArray.toArray(basal);
bgGraph.addSeries(basalsSeries = new BarGraphSeries<DataPoint>(basal));
basalsSeries.setValueDependentColor(new ValueDependentColor<DataPoint>() {
@Override
public int get(DataPoint data) {
BarDataPoint point = (BarDataPoint) data;
if (point.isTempBasal) return Color.BLUE;
else return Color.CYAN;
if (pump.getPumpDescription().isTempBasalCapable) {
List<BarDataPoint> basalArray = new ArrayList<BarDataPoint>();
for (long time = fromTime; time < now; time += 5 * 60 * 1000L) {
TempBasal tb = MainApp.getConfigBuilder().getTempBasal(new Date(time));
Double basal = 0d;
if (tb != null)
basalArray.add(new BarDataPoint(time, basal = tb.tempBasalConvertedToAbsolute(new Date(time)), true));
else
basalArray.add(new BarDataPoint(time, basal = profile.getBasal(NSProfile.secondsFromMidnight(new Date(time))), false));
maxBasalValueFound = Math.max(maxBasalValueFound, basal);
}
});
BarDataPoint[] basal = new BarDataPoint[basalArray.size()];
basal = basalArray.toArray(basal);
bgGraph.addSeries(basalsSeries = new BarGraphSeries<DataPoint>(basal));
basalsSeries.setValueDependentColor(new ValueDependentColor<DataPoint>() {
@Override
public int get(DataPoint data) {
BarDataPoint point = (BarDataPoint) data;
if (point.isTempBasal) return Color.BLUE;
else return Color.CYAN;
}
});
}
// set manual x bounds to have nice steps
bgGraph.getViewport().setMaxX(toTime);
@ -784,10 +794,12 @@ public class OverviewFragment extends Fragment {
bgGraph.getGridLabelRenderer().setNumVerticalLabels(numOfHorizLines);
// set second scale
bgGraph.getSecondScale().addSeries(basalsSeries);
bgGraph.getSecondScale().setMinY(0);
bgGraph.getSecondScale().setMaxY(maxBgValue / lowLine * maxBasalValueFound * 1.2d);
bgGraph.getGridLabelRenderer().setVerticalLabelsSecondScaleColor(MainApp.instance().getResources().getColor(R.color.background_material_dark)); // same color as backround = hide
if (pump.getPumpDescription().isTempBasalCapable) {
bgGraph.getSecondScale().addSeries(basalsSeries);
bgGraph.getSecondScale().setMinY(0);
bgGraph.getSecondScale().setMaxY(maxBgValue / lowLine * maxBasalValueFound * 1.2d);
bgGraph.getGridLabelRenderer().setVerticalLabelsSecondScaleColor(MainApp.instance().getResources().getColor(R.color.background_material_dark)); // same color as backround = hide
}
}
@ -810,11 +822,10 @@ public class OverviewFragment extends Fragment {
@Override
public void onBindViewHolder(NotificationsViewHolder holder, int position) {
DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
Notification notification = notificationsList.get(position);
holder.dismiss.setTag(notification);
holder.text.setText(notification.text);
holder.time.setText(df.format(notification.date));
holder.time.setText(DateUtil.timeString(notification.date));
if (notification.level == Notification.URGENT)
holder.cv.setBackgroundColor(MainApp.instance().getResources().getColor(R.color.notificationUrgent));
else if (notification.level == Notification.NORMAL)

View file

@ -15,17 +15,15 @@ import android.widget.TextView;
import com.squareup.otto.Subscribe;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import info.nightscout.androidaps.AgreementActivity;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.plugins.Overview.Dialogs.EditQuickWizardDialog;
import info.nightscout.androidaps.plugins.Overview.OverviewPlugin;
import info.nightscout.androidaps.plugins.Overview.QuickWizard;
import info.nightscout.androidaps.plugins.Overview.events.EventQuickWizardChange;
import info.nightscout.androidaps.plugins.TempBasals.TempBasalsFragment;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter;
public class QuickWizardListActivity extends AppCompatActivity implements View.OnClickListener {
@ -54,9 +52,8 @@ public class QuickWizardListActivity extends AppCompatActivity implements View.O
@Override
public void onBindViewHolder(QuickWizardEntryViewHolder holder, int position) {
DateFormat df = new SimpleDateFormat("HH:mm");
holder.from.setText(df.format(qvData.get(position).validFromDate()));
holder.to.setText(df.format(qvData.get(position).validToDate()));
holder.from.setText(DateUtil.timeString(qvData.get(position).validFromDate()));
holder.to.setText(DateUtil.timeString(qvData.get(position).validToDate()));
holder.buttonText.setText(qvData.get(position).buttonText());
holder.carbs.setText(DecimalFormatter.to0Decimal(qvData.get(position).carbs()) + " g");
}

View file

@ -1,4 +1,4 @@
package info.nightscout.androidaps.plugins.Overview.GraphSeriesExtension;
package info.nightscout.androidaps.plugins.Overview.graphExtensions;
/**
* GraphView
* Copyright (C) 2014 Jonas Gehring

View file

@ -1,4 +1,4 @@
package info.nightscout.androidaps.plugins.Overview.GraphSeriesExtension;
package info.nightscout.androidaps.plugins.Overview.graphExtensions;
/**
* GraphView
@ -25,7 +25,6 @@ package info.nightscout.androidaps.plugins.Overview.GraphSeriesExtension;
*/
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;

View file

@ -1,4 +1,4 @@
package info.nightscout.androidaps.plugins.Overview;
package info.nightscout.androidaps.plugins.Overview.graphExtensions;
import android.content.Context;

View file

@ -26,6 +26,7 @@ import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.events.EventInitializationChanged;
import info.nightscout.androidaps.interfaces.FragmentBase;
import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog;
import info.nightscout.androidaps.plugins.Careportal.OptionsToShow;
import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification;
@ -68,6 +69,12 @@ public class SimpleProfileFragment extends Fragment implements FragmentBase {
targethighView = (EditText) layout.findViewById(R.id.simpleprofile_targethigh);
profileswitchButton = (Button) layout.findViewById(R.id.simpleprofile_profileswitch);
PumpInterface pump = MainApp.getConfigBuilder();
if (!pump.getPumpDescription().isTempBasalCapable) {
layout.findViewById(R.id.simpleprofile_basalrate).setVisibility(View.GONE);
layout.findViewById(R.id.simpleprofile_basalrate_label).setVisibility(View.GONE);
}
onStatusEvent(null);
mgdlView.setChecked(simpleProfilePlugin.mgdl);

View file

@ -15,13 +15,13 @@ import com.squareup.otto.Subscribe;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DateFormat;
import java.util.Collections;
import java.util.Comparator;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.plugins.SmsCommunicator.events.EventSmsCommunicatorUpdateGui;
import info.nightscout.utils.DateUtil;
/**
* A simple {@link Fragment} subclass.
@ -89,15 +89,14 @@ public class SmsCommunicatorFragment extends Fragment {
int messagesToShow = 40;
int start = Math.max(0, getPlugin().messages.size() - messagesToShow);
DateFormat df = DateFormat.getTimeInstance(DateFormat.SHORT);
String logText = "";
for (int x = start; x < getPlugin().messages.size(); x++) {
SmsCommunicatorPlugin.Sms sms = getPlugin().messages.get(x);
if (sms.received) {
logText += df.format(sms.date) + " &lt;&lt;&lt; " + (sms.processed ? "" : "") + sms.phoneNumber + " <b>" + sms.text + "</b><br>";
logText += DateUtil.timeString(sms.date) + " &lt;&lt;&lt; " + (sms.processed ? "" : "") + sms.phoneNumber + " <b>" + sms.text + "</b><br>";
} else if (sms.sent) {
logText += df.format(sms.date) + " &gt;&gt;&gt; " + (sms.processed ? "" : "") + sms.phoneNumber + " <b>" + sms.text + "</b><br>";
logText += DateUtil.timeString(sms.date) + " &gt;&gt;&gt; " + (sms.processed ? "" : "") + sms.phoneNumber + " <b>" + sms.text + "</b><br>";
}
}
logView.setText(Html.fromHtml(logText));

View file

@ -0,0 +1,16 @@
package info.nightscout.androidaps.plugins.SourceMM640g;
import android.support.v4.app.Fragment;
import info.nightscout.androidaps.interfaces.FragmentBase;
public class SourceMM640gFragment extends Fragment implements FragmentBase {
private static SourceMM640gPlugin sourceMM640gPlugin = new SourceMM640gPlugin();
public static SourceMM640gPlugin getPlugin() {
return sourceMM640gPlugin;
}
}

View file

@ -0,0 +1,56 @@
package info.nightscout.androidaps.plugins.SourceMM640g;
import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.R;
import info.nightscout.androidaps.interfaces.BgSourceInterface;
import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.plugins.SourceNSClient.SourceNSClientFragment;
/**
* Created by mike on 05.08.2016.
*/
public class SourceMM640gPlugin implements PluginBase, BgSourceInterface {
boolean fragmentEnabled = true;
@Override
public String getFragmentClass() {
return SourceMM640gFragment.class.getName();
}
@Override
public int getType() {
return PluginBase.BGSOURCE;
}
@Override
public String getName() {
return MainApp.instance().getString(R.string.MM640g);
}
@Override
public boolean isEnabled(int type) {
return type == BGSOURCE && fragmentEnabled;
}
@Override
public boolean isVisibleInTabs(int type) {
return false;
}
@Override
public boolean canBeHidden(int type) {
return true;
}
@Override
public void setFragmentEnabled(int type, boolean fragmentEnabled) {
if (type == BGSOURCE) this.fragmentEnabled = fragmentEnabled;
}
@Override
public void setFragmentVisible(int type, boolean fragmentVisible) {
}
}

View file

@ -17,7 +17,6 @@ import com.squareup.otto.Subscribe;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DateFormat;
import java.util.Date;
import java.util.List;
@ -27,6 +26,7 @@ import info.nightscout.androidaps.db.TempBasal;
import info.nightscout.androidaps.events.EventTempBasalChange;
import info.nightscout.androidaps.interfaces.FragmentBase;
import info.nightscout.androidaps.plugins.OpenAPSMA.IobTotal;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter;
@ -61,13 +61,11 @@ public class TempBasalsFragment extends Fragment implements FragmentBase {
@Override
public void onBindViewHolder(TempBasalsViewHolder holder, int position) {
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT);
DateFormat enddf = DateFormat.getTimeInstance(DateFormat.SHORT);
TempBasal tempBasal = tempBasalList.get(position);
if (tempBasal.timeEnd != null) {
holder.date.setText(df.format(tempBasal.timeStart) + " - " + enddf.format(tempBasalList.get(position).timeEnd));
holder.date.setText(DateUtil.dateAndTimeString(tempBasal.timeStart) + " - " + DateUtil.timeString(tempBasalList.get(position).timeEnd));
} else {
holder.date.setText(df.format(tempBasal.timeStart));
holder.date.setText(DateUtil.dateAndTimeString(tempBasal.timeStart));
}
holder.duration.setText(DecimalFormatter.to0Decimal(tempBasal.duration) + " min");
if (tempBasal.isAbsolute) {

View file

@ -23,7 +23,6 @@ import com.squareup.otto.Subscribe;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DateFormat;
import java.util.Date;
import java.util.List;
@ -35,6 +34,7 @@ import info.nightscout.androidaps.db.Treatment;
import info.nightscout.androidaps.events.EventTreatmentChange;
import info.nightscout.androidaps.interfaces.FragmentBase;
import info.nightscout.client.data.NSProfile;
import info.nightscout.utils.DateUtil;
import info.nightscout.utils.DecimalFormatter;
import info.nightscout.utils.ToastUtils;
@ -76,8 +76,7 @@ public class TreatmentsFragment extends Fragment implements View.OnClickListener
NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile();
if (profile == null)
return;
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT);
holder.date.setText(df.format(treatments.get(position).created_at));
holder.date.setText(DateUtil.dateAndTimeString(treatments.get(position).created_at));
holder.insulin.setText(DecimalFormatter.to2Decimal(treatments.get(position).insulin) + " U");
holder.carbs.setText(DecimalFormatter.to0Decimal(treatments.get(position).carbs) + " g");
Iob iob = treatments.get(position).iobCalc(new Date(), profile.getDia());

View file

@ -176,7 +176,9 @@ public class PersistentNotificationPlugin implements PluginBase{
if(fragmentEnabled){
MainApp.bus().register(this);
} else {
MainApp.bus().unregister(this);
try {
MainApp.bus().unregister(this);
} catch (Exception e) {}
}
}

View file

@ -1,5 +1,7 @@
package info.nightscout.utils;
import android.text.format.DateUtils;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
@ -9,6 +11,8 @@ import java.util.TimeZone;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import info.nightscout.androidaps.MainApp;
/**
* The Class DateUtil. A simple wrapper around SimpleDateFormat to ease the handling of iso date string &lt;-&gt; date obj
* with TZ
@ -81,4 +85,30 @@ public class DateUtil {
return retval;
}
public static String dateString(Date date) {
//return DateUtils.formatDateTime(MainApp.instance(), date.getTime(), DateUtils.FORMAT_SHOW_DATE); this provide month name not number
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
return df.format(date);
}
public static String dateString(long mills) {
//return DateUtils.formatDateTime(MainApp.instance(), mills, DateUtils.FORMAT_SHOW_DATE); this provide month name not number
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
return df.format(mills);
}
public static String timeString(Date date) {
return DateUtils.formatDateTime(MainApp.instance(), date.getTime(), DateUtils.FORMAT_SHOW_TIME);
}
public static String timeString(long mills) {
return DateUtils.formatDateTime(MainApp.instance(), mills, DateUtils.FORMAT_SHOW_TIME);
}
public static String dateAndTimeString(Date date) {
return dateString(date) + " " + timeString(date);
}
public static String dateAndTimeString(long mills) {
return dateString(mills) + " " + timeString(mills);
}
}

View file

@ -23,9 +23,7 @@ import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import info.nightscout.androidaps.MainApp;
@ -84,23 +82,29 @@ public class TimeListEdit {
for (int i = 0; i < itemsCount(); i++) {
View childview = inflater.inflate(R.layout.timelistedit_element, layout, false);
childview.setId(View.generateViewId());
final Spinner timeSpinner = (Spinner) childview.findViewById(R.id.timelistedit_time);
timeSpinner.setId(View.generateViewId());
int previous = i == 0 ? -1 * ONEHOURINSECONDS : secondFromMidnight(i - 1);
int next = i == itemsCount() - 1 ? 24 * ONEHOURINSECONDS : secondFromMidnight(i + 1);
if (i == 0) next = ONEHOURINSECONDS;
fillSpinner(timeSpinner, secondFromMidnight(i), previous, next);
final EditText editText1 = (EditText) childview.findViewById(R.id.timelistedit_edit1);
editText1.setId(View.generateViewId());
fillNumber(editText1, value1(i));
final EditText editText2 = ((EditText) childview.findViewById(R.id.timelistedit_edit2));
fillNumber(editText2, value2(i));
editText2.setId(View.generateViewId());
if (data2 == null) {
editText2.setVisibility(View.GONE);
}
ImageView addbutton = (ImageView) childview.findViewById(R.id.timelistedit_add);
addbutton.setId(View.generateViewId());
ImageView removebutton = (ImageView) childview.findViewById(R.id.timelistedit_remove);
removebutton.setId(View.generateViewId());
if (itemsCount() == 1 && i == 0) {
removebutton.setVisibility(View.GONE);
@ -218,10 +222,9 @@ public class TimeListEdit {
public void fillSpinner(Spinner spinner, int secondsFromMidnight, int previous, int next) {
int posInList = 0;
ArrayList<CharSequence> timeList = new ArrayList<>();
DateFormat df = new SimpleDateFormat("HH:mm");
int pos = 0;
for (int t = previous + ONEHOURINSECONDS; t < next; t += ONEHOURINSECONDS) {
timeList.add(df.format(DateUtil.toDate(t)));
timeList.add(DateUtil.timeString(DateUtil.toDate(t)));
if (secondsFromMidnight == t) posInList = pos;
pos++;
}
@ -326,10 +329,9 @@ public class TimeListEdit {
}
void log() {
DateFormat df = new SimpleDateFormat("HH:mm");
for (int i = 0; i < data1.length(); i++) {
int pos = 0;
log.debug(i + ": @" + df.format(DateUtil.toDate(secondFromMidnight(i))) + " " + value1(i) + (data2 != null ? " " + value2(i) : ""));
log.debug(i + ": @" + DateUtil.timeString(DateUtil.toDate(secondFromMidnight(i))) + " " + value1(i) + (data2 != null ? " " + value2(i) : ""));
}
}
}

View file

@ -110,6 +110,7 @@
android:layout_height="wrap_content"
android:background="@color/cardColorBackground"
android:orientation="horizontal"
android:id="@+id/circadianpercentageprofile_baseprofilebasal_layout"
android:textAppearance="?android:attr/textAppearanceSmall">
<TextView

View file

@ -118,6 +118,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/overview_basallayout"
android:gravity="center_horizontal"
android:orientation="horizontal">

View file

@ -89,6 +89,7 @@
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/simpleprofile_basalrate_label"
android:text="@string/basal_rate"
android:textAppearance="?android:attr/textAppearanceMedium" />

View file

@ -141,7 +141,7 @@
<string name="openapsma_currenttemp_label">Current temp</string>
<string name="objectives_gate_label_string">Gate:</string>
<string name="objectives_objective_label_string">Objective:</string>
<string name="objectives">Objectives</string>
<string name="objectives">Zielsetzungen</string>
<string name="nsprofileview_noprofile_text">KEIN PROFIL GESETZT</string>
<string name="nsclientnotinstalled">NSClient nicht installiert. Record lost!</string>
<string name="ns_sync_use_absolute_title">Verwende absolute statt prozentuelle Basalwerte beim Upload zu NightScout</string>
@ -161,7 +161,6 @@
<string name="careportal_newnstreatment_enteredby_title">Eingegeben durch</string>
<string name="careportal_newnstreatment_other">Anderes</string>
<string name="careportal_newnstreatment_split_label">Split</string>
<string name="configbuilder">Konfigurations Builder</string>
<string name="configbuilder_constraints">Constraints</string>
<string name="configbuilder_general">Generell</string>
<string name="configbuilder_treatments">Treatments</string>
@ -204,7 +203,7 @@
<string name="comment">Kommentar</string>
<string name="connected">Verbunden</string>
<string name="connecting">Verbinden</string>
<string name="connectionerror">Puempen Verbindungsfehler</string>
<string name="connectionerror">Pumpen Verbindungsfehler</string>
<string name="danar_bt_name_title">DanaR Blueetooth Gerät</string>
<string name="danar_iob_label">Pumpen IOB:</string>
<string name="danar_pump_settings">DanaR Pumpen Einstellungen</string>
@ -222,15 +221,14 @@
<string name="danar_viewprofile">Profil anzeigen</string>
<string name="danarprofile">DanaR Profil Einstellungen</string>
<string name="danarprofile_dia">DIA [h]</string>
<string name="danarprofile_car">Carbs absorption rate</string>
<string name="danarprofile_car">Kohlehydrahte Absorptionsrate</string>
<string name="glucosetype_manual">Manuell</string>
<string name="danar_dailyunits">Einheiten (Tag)</string>
<string name="danar_invalidinput">ungültige Eingabe</string>
<string name="danar_valuenotsetproperly">Wert nicht korrekt gesetzt</string>
<string name="devicenotfound">ausgewähltes Gerät nicht gefunden</string>
<string name="dismiss">ABWEISEN</string>
<string name="enacted">Verordnet</string>
<string name="end_user_license_agreement">Einbenutzervereinbarung</string>
<string name="dismiss">VERWERFEN</string>
<string name="end_user_license_agreement">Endbenutzervereinbarung</string>
<string name="end_user_license_agreement_i_understand">Ich verstehe und stimme zu</string>
<string name="end_user_license_agreement_text">darf nicht eingestzt werden um med. Eintscheidungen zu treffen</string>
<string name="failedupdatebasalprofile">Fehler beim aktualisieren der Basalrate</string>
@ -257,9 +255,9 @@
<string name="danar_history_alarm">Alarme</string>
<string name="danar_history_bolus">Bolus</string>
<string name="danar_history_carbohydrates">Kohlenhydrate</string>
<string name="danar_history_dailyinsulin">Inslin-Tagesmengen</string>
<string name="danar_history_dailyinsulin">Insulin-Tagesmengen</string>
<string name="danar_history_errors">Fehler</string>
<string name="danar_history_glucose">Glucose</string>
<string name="danar_history_glucose">Glukose</string>
<string name="danar_history_refill">Füllmenge</string>
<string name="danar_history_syspend">Unterbrechungen</string>
<string name="danar_password">Pumpen-Passwort</string>
@ -279,7 +277,7 @@
<string name="actions">Aktionen</string>
<string name="androidaps_start">Android APS gestartet</string>
<string name="disabledloop">Loop deaktiviert</string>
<string name="fillbolus_title">Füllbolus-Standardmengen</string>
<string name="fillbolus_title">Vorfüll-Standardmengen</string>
<string name="fillwarning">Bitte vergewissern Sie sich, dass die Menge der Spezifikation des Katheters entspricht.</string>
<string name="ns_upload_only">Zu NightScout nur hochladen (kein sync)</string>
<string name="ns_upload_only_enabled">Bitte deaktivieren Sie \"Zu NightScout nur hochladen\" um dieses Feature zu nutzen.</string>
@ -288,7 +286,30 @@
<string name="occlusion">Verstopfung</string>
<string name="overview_bolusprogress_delivered">Abgegeben</string>
<string name="overview_bolusprogress_goingtodeliver">%.2fU werden abgegeben werden</string>
<string name="primefill">Füllen</string>
<string name="primefill">Vorfüllen / Füllen</string>
<string name="uploading">Hochladen</string>
<string name="es_lang">Spanish</string>
<string name="basal_rate">Basalrate:</string>
<string name="base_profile_label">Basisprofil:</string>
<string name="batterydischarged">Pumpenbatterie entladen</string>
<string name="androidaps_tempbasalendnote">Basal Temp Ende</string>
<string name="danar_historyreload">neu laden</string>
<string name="high_mark">Hoch Markierung</string>
<string name="low_mark">Niedrig Markierung</string>
<string name="lowbattery">Niedrige Batterie</string>
<string name="pumpbusy">Pumpe ist beschäftigt</string>
<string name="pumperror">Pumpenfehler</string>
<string name="send_to_pump">an Pumpe senden</string>
<string name="target_range">Zielbereich:</string>
<string name="units">Einheiten:</string>
<string name="wrongpumpdriverselected">Falscher Pumpentreiber ausgewählt</string>
<string name="danar_refill">Befüllen</string>
<string name="danar_disableeasymode">EasyUI mode in Pumpe deaktivieren</string>
<string name="danar_basalhour">Basal-Stunde</string>
<string name="button1">Knopf 1</string>
<string name="button2">Knopf 2</string>
<string name="button3">Knopf 3</string>
<string name="absorption_rate">Absorptionsrate:</string>
<string name="configbuilder">Config Builder</string>
<string name="minago">vor %d min</string>
</resources>

View file

@ -391,6 +391,7 @@
<string name="sms_actualbg">BG:</string>
<string name="sms_lastbg">Last BG:</string>
<string name="mdi">MDI</string>
<string name="MM640g">MM640g</string>
<string name="ongoingnotificaction">Ongoing Notification</string>
<string name="old_data">OLD DATA</string>
<string name="minago">%dmin ago</string>