Merge branch 'history' into dev
This commit is contained in:
commit
d92a7e8ef1
|
@ -189,6 +189,7 @@ dependencies {
|
||||||
compile "com.android.support:design:${supportLibraryVersion}"
|
compile "com.android.support:design:${supportLibraryVersion}"
|
||||||
compile "com.android.support:percent:${supportLibraryVersion}"
|
compile "com.android.support:percent:${supportLibraryVersion}"
|
||||||
compile "com.wdullaer:materialdatetimepicker:2.3.0"
|
compile "com.wdullaer:materialdatetimepicker:2.3.0"
|
||||||
|
compile 'com.android.support.constraint:constraint-layout:1.0.2'
|
||||||
compile "com.squareup:otto:1.3.7"
|
compile "com.squareup:otto:1.3.7"
|
||||||
compile "com.j256.ormlite:ormlite-core:${ormLiteVersion}"
|
compile "com.j256.ormlite:ormlite-core:${ormLiteVersion}"
|
||||||
compile "com.j256.ormlite:ormlite-android:${ormLiteVersion}"
|
compile "com.j256.ormlite:ormlite-android:${ormLiteVersion}"
|
||||||
|
|
|
@ -61,6 +61,7 @@
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<activity android:name=".plugins.PumpDanaRS.activities.PairingHelperActivity" />
|
<activity android:name=".plugins.PumpDanaRS.activities.PairingHelperActivity" />
|
||||||
|
<activity android:name=".HistoryBrowseActivity" />
|
||||||
|
|
||||||
<receiver
|
<receiver
|
||||||
android:name=".receivers.DataReceiver"
|
android:name=".receivers.DataReceiver"
|
||||||
|
|
|
@ -0,0 +1,267 @@
|
||||||
|
package info.nightscout.androidaps;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.v7.app.AppCompatActivity;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.CheckBox;
|
||||||
|
import android.widget.SeekBar;
|
||||||
|
|
||||||
|
import com.jjoe64.graphview.GraphView;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.util.Calendar;
|
||||||
|
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.ButterKnife;
|
||||||
|
import butterknife.OnClick;
|
||||||
|
import butterknife.OnLongClick;
|
||||||
|
import info.nightscout.androidaps.data.Profile;
|
||||||
|
import info.nightscout.androidaps.interfaces.PumpInterface;
|
||||||
|
import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin;
|
||||||
|
import info.nightscout.androidaps.plugins.Overview.OverviewPlugin;
|
||||||
|
import info.nightscout.androidaps.plugins.Overview.graphData.GraphData;
|
||||||
|
import info.nightscout.utils.DateUtil;
|
||||||
|
import info.nightscout.utils.SP;
|
||||||
|
|
||||||
|
public class HistoryBrowseActivity extends AppCompatActivity {
|
||||||
|
private static Logger log = LoggerFactory.getLogger(HistoryBrowseActivity.class);
|
||||||
|
|
||||||
|
@BindView(R.id.historybrowse_date)
|
||||||
|
Button buttonDate;
|
||||||
|
@BindView(R.id.historybrowse_zoom)
|
||||||
|
Button buttonZoom;
|
||||||
|
@BindView(R.id.historyybrowse_bggraph)
|
||||||
|
GraphView bgGraph;
|
||||||
|
@BindView(R.id.historybrowse_iobgraph)
|
||||||
|
GraphView iobGraph;
|
||||||
|
@BindView(R.id.historybrowse_seekBar)
|
||||||
|
SeekBar seekBar;
|
||||||
|
|
||||||
|
@BindView(R.id.overview_showprediction)
|
||||||
|
CheckBox showPredictionCheckbox;
|
||||||
|
@BindView(R.id.overview_showbasals)
|
||||||
|
CheckBox showBasalsCheckbox;
|
||||||
|
@BindView(R.id.overview_showiob)
|
||||||
|
CheckBox showIobCheckbox;
|
||||||
|
@BindView(R.id.overview_showcob)
|
||||||
|
CheckBox showCobCheckbox;
|
||||||
|
@BindView(R.id.overview_showdeviations)
|
||||||
|
CheckBox showDeviationsCheckbox;
|
||||||
|
@BindView(R.id.overview_showratios)
|
||||||
|
CheckBox showRatiosCheckbox;
|
||||||
|
|
||||||
|
private int rangeToDisplay = 24; // for graph
|
||||||
|
private long start;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_historybrowse);
|
||||||
|
|
||||||
|
ButterKnife.bind(this);
|
||||||
|
|
||||||
|
bgGraph.getGridLabelRenderer().setGridColor(MainApp.sResources.getColor(R.color.graphgrid));
|
||||||
|
bgGraph.getGridLabelRenderer().reloadStyles();
|
||||||
|
iobGraph.getGridLabelRenderer().setGridColor(MainApp.sResources.getColor(R.color.graphgrid));
|
||||||
|
iobGraph.getGridLabelRenderer().reloadStyles();
|
||||||
|
iobGraph.getGridLabelRenderer().setHorizontalLabelsVisible(false);
|
||||||
|
bgGraph.getGridLabelRenderer().setLabelVerticalWidth(50);
|
||||||
|
iobGraph.getGridLabelRenderer().setLabelVerticalWidth(50);
|
||||||
|
iobGraph.getGridLabelRenderer().setNumVerticalLabels(5);
|
||||||
|
|
||||||
|
// set start of current day
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTimeInMillis(System.currentTimeMillis());
|
||||||
|
calendar.set(Calendar.MILLISECOND, 0);
|
||||||
|
calendar.set(Calendar.SECOND, 0);
|
||||||
|
calendar.set(Calendar.MINUTE, 0);
|
||||||
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
start = calendar.getTimeInMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
updateGUI("onResume");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@OnClick(R.id.historybrowse_start)
|
||||||
|
void onClickStart() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@OnClick(R.id.historybrowse_left)
|
||||||
|
void onClickLeft() {
|
||||||
|
start -= rangeToDisplay * 60 * 60 * 1000L;
|
||||||
|
updateGUI("left");
|
||||||
|
}
|
||||||
|
|
||||||
|
@OnClick(R.id.historybrowse_right)
|
||||||
|
void onClickRight() {
|
||||||
|
start += rangeToDisplay * 60 * 60 * 1000L;
|
||||||
|
updateGUI("right");
|
||||||
|
}
|
||||||
|
|
||||||
|
@OnClick(R.id.historybrowse_end)
|
||||||
|
void onClickEnd() {
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTimeInMillis(System.currentTimeMillis());
|
||||||
|
calendar.set(Calendar.MILLISECOND, 0);
|
||||||
|
calendar.set(Calendar.SECOND, 0);
|
||||||
|
calendar.set(Calendar.MINUTE, 0);
|
||||||
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
start = calendar.getTimeInMillis();
|
||||||
|
updateGUI("resetToMidnight");
|
||||||
|
}
|
||||||
|
|
||||||
|
@OnClick(R.id.historybrowse_zoom)
|
||||||
|
void onClickZoom() {
|
||||||
|
rangeToDisplay += 6;
|
||||||
|
rangeToDisplay = rangeToDisplay > 24 ? 6 : rangeToDisplay;
|
||||||
|
updateGUI("rangeChange");
|
||||||
|
}
|
||||||
|
|
||||||
|
@OnLongClick(R.id.historybrowse_zoom)
|
||||||
|
boolean onLongClickZoom() {
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTimeInMillis(start);
|
||||||
|
calendar.set(Calendar.MILLISECOND, 0);
|
||||||
|
calendar.set(Calendar.SECOND, 0);
|
||||||
|
calendar.set(Calendar.MINUTE, 0);
|
||||||
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
start = calendar.getTimeInMillis();
|
||||||
|
updateGUI("resetToMidnight");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@OnClick(R.id.historybrowse_date)
|
||||||
|
void onClickDate() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@OnClick({R.id.overview_showbasals, R.id.overview_showprediction, R.id.overview_showiob, R.id.overview_showcob, R.id.overview_showdeviations, R.id.overview_showratios})
|
||||||
|
void onClickDate(View view) {
|
||||||
|
//((CheckBox) view).toggle();
|
||||||
|
updateGUI("checkboxToggle");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void loadData() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void updateGUI(String from) {
|
||||||
|
final PumpInterface pump = ConfigBuilderPlugin.getActivePump();
|
||||||
|
final Profile profile = MainApp.getConfigBuilder().getProfile();
|
||||||
|
final String units = profile.getUnits();
|
||||||
|
|
||||||
|
double lowLineSetting = SP.getDouble("low_mark", Profile.fromMgdlToUnits(OverviewPlugin.bgTargetLow, units));
|
||||||
|
double highLineSetting = SP.getDouble("high_mark", Profile.fromMgdlToUnits(OverviewPlugin.bgTargetHigh, units));
|
||||||
|
|
||||||
|
if (lowLineSetting < 1)
|
||||||
|
lowLineSetting = Profile.fromMgdlToUnits(76d, units);
|
||||||
|
if (highLineSetting < 1)
|
||||||
|
highLineSetting = Profile.fromMgdlToUnits(180d, units);
|
||||||
|
|
||||||
|
final double lowLine = lowLineSetting;
|
||||||
|
final double highLine = highLineSetting;
|
||||||
|
|
||||||
|
final boolean showPrediction = false;
|
||||||
|
|
||||||
|
int hoursToFetch;
|
||||||
|
final long toTime;
|
||||||
|
final long fromTime;
|
||||||
|
//if (showPrediction) {
|
||||||
|
//int predHours = (int) (Math.ceil(((DetermineBasalResultAMA) finalLastRun.constraintsProcessed).getLatestPredictionsTime() - System.currentTimeMillis()) / (60 * 60 * 1000));
|
||||||
|
//predHours = Math.min(2, predHours);
|
||||||
|
//predHours = Math.max(0, predHours);
|
||||||
|
//hoursToFetch = rangeToDisplay - predHours;
|
||||||
|
//toTime = calendar.getTimeInMillis() + 100000; // little bit more to avoid wrong rounding - Graphview specific
|
||||||
|
//fromTime = toTime - hoursToFetch * 60 * 60 * 1000L;
|
||||||
|
//endTime = toTime + predHours * 60 * 60 * 1000L;
|
||||||
|
//} else {
|
||||||
|
fromTime = start + 100000;
|
||||||
|
toTime = start + rangeToDisplay * 60 * 60 * 1000L;
|
||||||
|
//}
|
||||||
|
|
||||||
|
buttonDate.setText(DateUtil.dateAndTimeString(start));
|
||||||
|
buttonZoom.setText(String.valueOf(rangeToDisplay));
|
||||||
|
|
||||||
|
log.debug("Period: " + DateUtil.dateAndTimeString(fromTime) + " - " + DateUtil.dateAndTimeString(toTime));
|
||||||
|
|
||||||
|
final long pointer = System.currentTimeMillis();
|
||||||
|
|
||||||
|
// ------------------ 1st graph
|
||||||
|
|
||||||
|
final GraphData graphData = new GraphData(bgGraph);
|
||||||
|
|
||||||
|
// **** In range Area ****
|
||||||
|
graphData.addInRangeArea(fromTime, toTime, lowLine, highLine);
|
||||||
|
|
||||||
|
// **** BG ****
|
||||||
|
if (showPrediction)
|
||||||
|
//graphData.addBgReadings(fromTime, toTime, lowLine, highLine, (DetermineBasalResultAMA) finalLastRun.constraintsProcessed);
|
||||||
|
;
|
||||||
|
else
|
||||||
|
graphData.addBgReadings(fromTime, toTime, lowLine, highLine, null);
|
||||||
|
|
||||||
|
// set manual x bounds to have nice steps
|
||||||
|
graphData.formatAxis(fromTime, toTime);
|
||||||
|
|
||||||
|
// Treatments
|
||||||
|
graphData.addTreatments(fromTime, toTime);
|
||||||
|
|
||||||
|
// add basal data
|
||||||
|
if (pump.getPumpDescription().isTempBasalCapable && showBasalsCheckbox.isChecked()) {
|
||||||
|
graphData.addBasals(fromTime, toTime, lowLine / graphData.maxY / 1.2d);
|
||||||
|
}
|
||||||
|
|
||||||
|
// **** NOW line ****
|
||||||
|
graphData.addNowLine(pointer);
|
||||||
|
|
||||||
|
// ------------------ 2nd graph
|
||||||
|
|
||||||
|
final GraphData secondGraphData = new GraphData(iobGraph);
|
||||||
|
|
||||||
|
boolean useIobForScale = false;
|
||||||
|
boolean useCobForScale = false;
|
||||||
|
boolean useDevForScale = false;
|
||||||
|
boolean useRatioForScale = false;
|
||||||
|
|
||||||
|
if (showIobCheckbox.isChecked()) {
|
||||||
|
useIobForScale = true;
|
||||||
|
} else if (showCobCheckbox.isChecked()) {
|
||||||
|
useCobForScale = true;
|
||||||
|
} else if (showDeviationsCheckbox.isChecked()) {
|
||||||
|
useDevForScale = true;
|
||||||
|
} else if (showRatiosCheckbox.isChecked()) {
|
||||||
|
useRatioForScale = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (showIobCheckbox.isChecked())
|
||||||
|
secondGraphData.addIob(fromTime, toTime, useIobForScale, 1d);
|
||||||
|
if (showCobCheckbox.isChecked())
|
||||||
|
secondGraphData.addCob(fromTime, toTime, useCobForScale, useCobForScale ? 1d : 0.5d);
|
||||||
|
if (showDeviationsCheckbox.isChecked())
|
||||||
|
secondGraphData.addDeviations(fromTime, toTime, useDevForScale, 1d);
|
||||||
|
if (showRatiosCheckbox.isChecked())
|
||||||
|
secondGraphData.addRatio(fromTime, toTime, useRatioForScale, 1d);
|
||||||
|
|
||||||
|
// **** NOW line ****
|
||||||
|
// set manual x bounds to have nice steps
|
||||||
|
secondGraphData.formatAxis(fromTime, toTime);
|
||||||
|
secondGraphData.addNowLine(pointer);
|
||||||
|
|
||||||
|
// do GUI update
|
||||||
|
if (showIobCheckbox.isChecked() || showCobCheckbox.isChecked() || showDeviationsCheckbox.isChecked() || showRatiosCheckbox.isChecked()) {
|
||||||
|
iobGraph.setVisibility(View.VISIBLE);
|
||||||
|
} else {
|
||||||
|
iobGraph.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
|
// finally enforce drawing of graphs
|
||||||
|
graphData.performUpdate();
|
||||||
|
secondGraphData.performUpdate();
|
||||||
|
}
|
||||||
|
}
|
|
@ -112,9 +112,9 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
|
||||||
runOnUiThread(new Runnable() {
|
runOnUiThread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if(ev.recreate) {
|
if (ev.recreate) {
|
||||||
recreate();
|
recreate();
|
||||||
}else {
|
} else {
|
||||||
try { // activity may be destroyed
|
try { // activity may be destroyed
|
||||||
setUpTabs(true);
|
setUpTabs(true);
|
||||||
} catch (IllegalStateException e) {
|
} catch (IllegalStateException e) {
|
||||||
|
@ -171,7 +171,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
|
||||||
// Added in 1.57 at 21.01.2018
|
// Added in 1.57 at 21.01.2018
|
||||||
Integer unreachable_threshold = SP.getInt(R.string.key_pump_unreachable_threshold, 30);
|
Integer unreachable_threshold = SP.getInt(R.string.key_pump_unreachable_threshold, 30);
|
||||||
SP.remove(R.string.key_pump_unreachable_threshold);
|
SP.remove(R.string.key_pump_unreachable_threshold);
|
||||||
if(unreachable_threshold < 30) unreachable_threshold = 30;
|
if (unreachable_threshold < 30) unreachable_threshold = 30;
|
||||||
SP.putString(R.string.key_pump_unreachable_threshold, unreachable_threshold.toString());
|
SP.putString(R.string.key_pump_unreachable_threshold, unreachable_threshold.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -358,6 +358,9 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
|
||||||
}
|
}
|
||||||
}, null);
|
}, null);
|
||||||
break;
|
break;
|
||||||
|
case R.id.nav_historybrowser:
|
||||||
|
startActivity(new Intent(v.getContext(), HistoryBrowseActivity.class));
|
||||||
|
break;
|
||||||
case R.id.nav_resetdb:
|
case R.id.nav_resetdb:
|
||||||
new AlertDialog.Builder(v.getContext())
|
new AlertDialog.Builder(v.getContext())
|
||||||
.setTitle(R.string.nav_resetdb)
|
.setTitle(R.string.nav_resetdb)
|
||||||
|
@ -386,7 +389,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
|
||||||
case R.id.nav_about:
|
case R.id.nav_about:
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext());
|
AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext());
|
||||||
builder.setTitle(getString(R.string.app_name) + " " + BuildConfig.VERSION);
|
builder.setTitle(getString(R.string.app_name) + " " + BuildConfig.VERSION);
|
||||||
if (Config.NSCLIENT|| Config.G5UPLOADER)
|
if (Config.NSCLIENT || Config.G5UPLOADER)
|
||||||
builder.setIcon(R.mipmap.yellowowl);
|
builder.setIcon(R.mipmap.yellowowl);
|
||||||
else
|
else
|
||||||
builder.setIcon(R.mipmap.blueowl);
|
builder.setIcon(R.mipmap.blueowl);
|
||||||
|
|
9
app/src/main/res/drawable/ic_chevron_left_black_24dp.xml
Normal file
9
app/src/main/res/drawable/ic_chevron_left_black_24dp.xml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:pathData="M15.41,7.41L14,6l-6,6 6,6 1.41,-1.41L10.83,12z"/>
|
||||||
|
</vector>
|
|
@ -0,0 +1,9 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:pathData="M10,6L8.59,7.41 13.17,12l-4.58,4.59L10,18l6,-6z"/>
|
||||||
|
</vector>
|
9
app/src/main/res/drawable/ic_first_page_black_24dp.xml
Normal file
9
app/src/main/res/drawable/ic_first_page_black_24dp.xml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:pathData="M18.41,16.59L13.82,12l4.59,-4.59L17,6l-6,6 6,6zM6,6h2v12H6z"/>
|
||||||
|
</vector>
|
9
app/src/main/res/drawable/ic_last_page_black_24dp.xml
Normal file
9
app/src/main/res/drawable/ic_last_page_black_24dp.xml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="24dp"
|
||||||
|
android:height="24dp"
|
||||||
|
android:viewportWidth="24.0"
|
||||||
|
android:viewportHeight="24.0">
|
||||||
|
<path
|
||||||
|
android:fillColor="#FF000000"
|
||||||
|
android:pathData="M5.59,7.41L10.18,12l-4.59,4.59L7,18l6,-6 -6,-6zM16,6h2v12h-2z"/>
|
||||||
|
</vector>
|
213
app/src/main/res/layout/activity_historybrowse.xml
Normal file
213
app/src/main/res/layout/activity_historybrowse.xml
Normal file
|
@ -0,0 +1,213 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<android.support.constraint.ConstraintLayout 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.HistoryBrowseActivity">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/historybrowse_start"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:srcCompat="@drawable/ic_first_page_black_24dp" />
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/historybrowse_left"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:srcCompat="@drawable/ic_chevron_left_black_24dp" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/historybrowse_date"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="Button" />
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/historybrowse_right"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:srcCompat="@drawable/ic_chevron_right_black_24dp" />
|
||||||
|
|
||||||
|
<ImageButton
|
||||||
|
android:id="@+id/historybrowse_end"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:srcCompat="@drawable/ic_last_page_black_24dp" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/historybrowse_zoom"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:text="24" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingTop="5dp">
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
android:id="@+id/overview_showprediction"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:buttonTint="@color/prediction" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/overview_showprediction_label"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:text="@string/predictionshortlabel"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
|
android:textColor="@color/prediction"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
android:id="@+id/overview_showbasals"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:buttonTint="@color/basal" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/overview_showbasals_label"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:text="@string/basalshortlabel"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
|
android:textColor="@color/basal"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
android:id="@+id/overview_showiob"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:buttonTint="@color/iob" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/overview_showiob_label"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:text="@string/iob"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
|
android:textColor="@color/iob"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
android:id="@+id/overview_showcob"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:buttonTint="@color/cob" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/overview_showcob_label"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:text="@string/cob"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
|
android:textColor="@color/cob"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
android:id="@+id/overview_showdeviations"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:buttonTint="@color/deviations" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/overview_showdeviations_label"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:text="@string/dev"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
|
android:textColor="@color/deviations"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
<CheckBox
|
||||||
|
android:id="@+id/overview_showratios"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/overview_showratios_label"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:text="@string/ratio_short"
|
||||||
|
android:textAppearance="?android:attr/textAppearanceSmall"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<com.jjoe64.graphview.GraphView
|
||||||
|
android:id="@+id/historyybrowse_bggraph"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="160dip" />
|
||||||
|
|
||||||
|
<com.jjoe64.graphview.GraphView
|
||||||
|
android:id="@+id/historybrowse_iobgraph"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="100dp" />
|
||||||
|
|
||||||
|
<SeekBar
|
||||||
|
android:id="@+id/historybrowse_seekBar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<ScrollView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:id="@+id/historybrowse_apsresult"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
</ScrollView>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
</android.support.constraint.ConstraintLayout>
|
|
@ -4,6 +4,9 @@
|
||||||
<item
|
<item
|
||||||
android:id="@+id/nav_preferences"
|
android:id="@+id/nav_preferences"
|
||||||
android:title="@string/nav_preferences" />
|
android:title="@string/nav_preferences" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/nav_historybrowser"
|
||||||
|
android:title="@string/nav_historybrowser" />
|
||||||
<item
|
<item
|
||||||
android:id="@+id/nav_resetdb"
|
android:id="@+id/nav_resetdb"
|
||||||
android:title="@string/nav_resetdb" />
|
android:title="@string/nav_resetdb" />
|
||||||
|
|
|
@ -928,5 +928,6 @@
|
||||||
<string name="enablesmbwithhightemptarget_summary">Enable SMB when there is high temp target active (exercise)</string>
|
<string name="enablesmbwithhightemptarget_summary">Enable SMB when there is high temp target active (exercise)</string>
|
||||||
<string name="let_temp_basal_run">Let current temp basal run</string>
|
<string name="let_temp_basal_run">Let current temp basal run</string>
|
||||||
<string name="mute">Mute</string>
|
<string name="mute">Mute</string>
|
||||||
|
<string name="nav_historybrowser">History browser</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue