Skip to content

Commit 973e80f

Browse files
author
Paolo Rotolo
authored
Merge pull request #359 from Glucosio/measurement-unit-fixes
Measurement unit fixes. Closes #349 #351
2 parents 39bad40 + 18d8cf7 commit 973e80f

File tree

5 files changed

+62
-23
lines changed

5 files changed

+62
-23
lines changed

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,8 @@ dependencies {
155155
testCompile "org.powermock:powermock-classloading-xstream:1.6.4"
156156

157157
// Testing libraries
158-
androidTestCompile 'com.android.support.test:rules:0.4.1'
159-
androidTestCompile 'com.android.support.test:runner:0.4.1'
158+
androidTestCompile 'com.android.support.test:rules:0.5'
159+
androidTestCompile 'com.android.support.test:runner:0.5'
160160
androidTestCompile "com.android.support:support-annotations:${androidSupportVer}"
161161
androidTestCompile "com.android.support:recyclerview-v7:${androidSupportVer}"
162162
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'

app/src/main/java/org/glucosio/android/activity/FreestyleLibreActivity.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@
3535
import android.widget.TextView;
3636
import android.widget.Toast;
3737

38+
import org.glucosio.android.GlucosioApplication;
3839
import org.glucosio.android.R;
3940
import org.glucosio.android.db.DatabaseHandler;
41+
import org.glucosio.android.db.User;
4042
import org.glucosio.android.object.PredictionData;
4143
import org.glucosio.android.object.ReadingData;
4244
import org.glucosio.android.tools.AlgorithmUtil;
@@ -51,6 +53,7 @@ public class FreestyleLibreActivity extends Activity {
5153

5254
private NfcAdapter mNfcAdapter;
5355
private TextView readingTextView;
56+
private User user;
5457

5558
/**
5659
* @param activity The corresponding {@link Activity} requesting the foreground dispatch.
@@ -88,6 +91,10 @@ protected void onCreate(Bundle savedInstanceState) {
8891
super.onCreate(savedInstanceState);
8992
setContentView(R.layout.activity_freestyle_libre);
9093

94+
final GlucosioApplication app = (GlucosioApplication) getApplicationContext();
95+
DatabaseHandler dB = app.getDBHandler();
96+
user = dB.getUser(1);
97+
9198
mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
9299
readingTextView = (TextView) findViewById(R.id.activity_freestyle_textview_reading);
93100
Button saveButton = (Button) findViewById(R.id.activity_freestyle_button_save);
@@ -168,8 +175,7 @@ private void showReadingLayout() {
168175
mFinishAfterSentMessages = true;*/
169176

170177
// Apply values in TextViews
171-
// TODO: Add check for mmol/L
172-
readingTextView.setText(mResult.trend.get(0).glucose(false));
178+
readingTextView.setText(mResult.trend.get(0).glucose(user.getPreferred_unit().equals("mmol/L")));
173179

174180
new Runnable() {
175181
@Override
@@ -189,7 +195,7 @@ private void openAddGlucoseActivity() {
189195
// Start AddGlucose Activity passing the reading value
190196
Intent intent = new Intent(getApplicationContext(), AddGlucoseActivity.class);
191197
Bundle bundle = new Bundle();
192-
String currentGlucose = mResult.trend.get(0).glucose(false);
198+
String currentGlucose = mResult.trend.get(0).glucose(user.getPreferred_unit().equals("mmol/L"));
193199
bundle.putString("reading", currentGlucose + "");
194200
intent.putExtras(bundle);
195201
startActivity(intent);

app/src/main/java/org/glucosio/android/activity/PreferencesActivity.java

Lines changed: 47 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import org.glucosio.android.analytics.Analytics;
4848
import org.glucosio.android.db.DatabaseHandler;
4949
import org.glucosio.android.db.User;
50+
import org.glucosio.android.tools.GlucosioConverter;
5051
import org.glucosio.android.tools.InputFilterMinMax;
5152
import org.glucosio.android.tools.LocaleHelper;
5253

@@ -162,16 +163,19 @@ public void onCreate(final Bundle savedInstanceState) {
162163
agePref.setDefaultValue(user.getAge());
163164
countryPref.setValue(user.getCountry());
164165
genderPref.setValue(user.getGender());
165-
diabetesTypePref.setValue(user.getD_type() + "");
166+
diabetesTypePref.setValue(String.valueOf(user.getD_type()));
166167
unitPrefGlucose.setValue(getGlucoseUnitValue(user.getPreferred_unit()));
167168
unitPrefA1c.setValue(getA1CUnitValue(user.getPreferred_unit_a1c()));
168169
unitPrefWeight.setValue(getUnitWeight(user.getPreferred_unit_weight()));
169170
rangePref.setValue(user.getPreferred_range());
170171

171-
minRangePref.setDefaultValue(user.getCustom_range_min() + "");
172-
maxRangePref.setDefaultValue(user.getCustom_range_max() + "");
173-
minRangePref.setDefaultValue(user.getCustom_range_min() + "");
174-
maxRangePref.setDefaultValue(user.getCustom_range_max() + "");
172+
if (user.getPreferred_unit().equals("mg/dL")) {
173+
maxRangePref.setDefaultValue(user.getCustom_range_max());
174+
minRangePref.setDefaultValue(user.getCustom_range_min());
175+
} else {
176+
maxRangePref.setDefaultValue(GlucosioConverter.glucoseToMmolL(user.getCustom_range_max()));
177+
minRangePref.setDefaultValue(GlucosioConverter.glucoseToMmolL(user.getCustom_range_min()));
178+
}
175179

176180
if (!"custom".equals(rangePref.getValue())) {
177181
minRangePref.setEnabled(false);
@@ -277,24 +281,49 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
277281
return true;
278282
}
279283
});
284+
285+
minRangePref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
286+
@Override
287+
public boolean onPreferenceClick(Preference preference) {
288+
minEditText.setText("");
289+
return false;
290+
}
291+
});
292+
280293
minRangePref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
281294
@Override
282295
public boolean onPreferenceChange(Preference preference, Object newValue) {
283296
if (TextUtils.isEmpty(newValue.toString().trim())) {
284297
return false;
285298
}
286-
updatedUser.setCustom_range_min(Integer.parseInt(newValue.toString()));
299+
if (user.getPreferred_unit().equals("mg/dL")) {
300+
updatedUser.setCustom_range_min(Integer.parseInt(newValue.toString()));
301+
} else {
302+
updatedUser.setCustom_range_min(GlucosioConverter.glucoseToMgDl(Double.parseDouble(newValue.toString())));
303+
}
287304
updateDB();
288305
return true;
289306
}
290307
});
308+
309+
maxRangePref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
310+
@Override
311+
public boolean onPreferenceClick(Preference preference) {
312+
maxEditText.setText("");
313+
return false;
314+
}
315+
});
291316
maxRangePref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
292317
@Override
293318
public boolean onPreferenceChange(Preference preference, Object newValue) {
294319
if (TextUtils.isEmpty(newValue.toString().trim())) {
295320
return false;
296321
}
297-
updatedUser.setCustom_range_max(Integer.parseInt(newValue.toString()));
322+
if (user.getPreferred_unit().equals("mg/dL")) {
323+
updatedUser.setCustom_range_max(Integer.parseInt(newValue.toString()));
324+
} else {
325+
updatedUser.setCustom_range_max(GlucosioConverter.glucoseToMgDl(Double.parseDouble(newValue.toString())));
326+
}
298327
updateDB();
299328
return true;
300329
}
@@ -326,8 +355,6 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
326355
maxEditText = maxRangePref.getEditText();
327356

328357
ageEditText.setFilters(new InputFilter[]{new InputFilterMinMax(1, 110)});
329-
minEditText.setFilters(new InputFilter[]{new InputFilterMinMax(1, 1500)});
330-
maxEditText.setFilters(new InputFilter[]{new InputFilterMinMax(1, 1500)});
331358

332359
// Get countries list from locale
333360
ArrayList<String> countriesArray = new ArrayList<>();
@@ -421,20 +448,26 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
421448

422449
private void updateDB() {
423450
dB.updateUser(updatedUser);
424-
agePref.setSummary(user.getAge() + "");
425-
genderPref.setSummary(user.getGender() + "");
451+
agePref.setSummary(String.valueOf(user.getAge()));
452+
genderPref.setSummary(String.valueOf(user.getGender()));
426453

427454
diabetesTypePref.setSummary(getResources().getStringArray(R.array.helloactivity_diabetes_type)[user.getD_type() - 1]);
428455
unitPrefGlucose.setSummary(getGlucoseUnitValue(user.getPreferred_unit()));
429456
unitPrefA1c.setSummary(getA1CUnitValue(user.getPreferred_unit_a1c()));
430457
unitPrefWeight.setSummary(getUnitWeight(user.getPreferred_unit_weight()));
431458
countryPref.setSummary(user.getCountry());
432-
minRangePref.setSummary(user.getCustom_range_min() + "");
433-
maxRangePref.setSummary(user.getCustom_range_max() + "");
459+
460+
if (user.getPreferred_unit().equals("mg/dL")) {
461+
minRangePref.setSummary(String.valueOf(user.getCustom_range_min()));
462+
maxRangePref.setSummary(String.valueOf(user.getCustom_range_max()));
463+
} else {
464+
minRangePref.setSummary(String.valueOf(GlucosioConverter.glucoseToMmolL(user.getCustom_range_min())));
465+
maxRangePref.setSummary(String.valueOf(GlucosioConverter.glucoseToMmolL(user.getCustom_range_max())));
466+
}
434467

435468
countryPref.setValue(user.getCountry());
436469
genderPref.setValue(user.getGender());
437-
diabetesTypePref.setValue(user.getD_type() + "");
470+
diabetesTypePref.setValue(String.valueOf(user.getD_type()));
438471
unitPrefGlucose.setValue(user.getPreferred_unit());
439472
genderPref.setValue(user.getGender());
440473
unitPrefGlucose.setValue(user.getPreferred_unit());

app/src/main/res/xml/preferences.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,12 @@
7070
android:title="@string/helloactivity_spinner_preferred_range" />
7171
<EditTextPreference
7272
android:dialogTitle="@string/helloactivity_preferred_range_min"
73-
android:inputType="number"
73+
android:inputType="numberDecimal"
7474
android:key="pref_range_min"
7575
android:title="@string/helloactivity_preferred_range_min" />
7676
<EditTextPreference
7777
android:dialogTitle="@string/helloactivity_preferred_range_max"
78-
android:inputType="number"
78+
android:inputType="numberDecimal"
7979
android:key="pref_range_max"
8080
android:title="@string/helloactivity_preferred_range_max" />
8181
<SwitchPreference

app/src/test/java/org/glucosio/android/activity/PreferencesActivityTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ public void setUp() throws Exception {
2323
when(getDBHandler().getUser(1)).thenReturn(mockedUser);
2424
when(mockedUser.getPreferred_range()).thenReturn("Test");
2525
when(mockedUser.getD_type()).thenReturn(1);
26+
when(mockedUser.getPreferred_unit()).thenReturn("mg/dL");
2627

2728
activity = Robolectric.buildActivity(PreferencesActivity.class).create().get();
2829
}
2930

3031
@Test
3132
public void ShouldReportAnalytics_WhenCreated() throws Exception {
32-
3333
verify(getAnalytics()).reportScreen("Preferences");
3434
}
35-
}
35+
}

0 commit comments

Comments
 (0)