1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-12-01 22:43:00 +01:00

Make Battery chart to use AbstractGBFragment with a bg thread

This commit is contained in:
vanous 2021-02-25 20:11:19 +01:00
parent 1f71a5e51f
commit a6de25918b
2 changed files with 50 additions and 60 deletions

View File

@ -66,6 +66,8 @@ public class ActivitySummariesChartFragment extends AbstractChartFragment {
} }
} }
private void populate_charts_data() { private void populate_charts_data() {
int LEGEND_TEXT_COLOR = 0; int LEGEND_TEXT_COLOR = 0;

View File

@ -24,7 +24,8 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView; import android.widget.TextView;
import com.github.mikephil.charting.charts.Chart; import androidx.core.content.ContextCompat;
import com.github.mikephil.charting.charts.LineChart; import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Legend; import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.MarkerView; import com.github.mikephil.charting.components.MarkerView;
@ -52,19 +53,21 @@ import de.greenrobot.dao.query.QueryBuilder;
import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
import nodomain.freeyourgadget.gadgetbridge.activities.charts.AbstractChartFragment; import nodomain.freeyourgadget.gadgetbridge.activities.charts.AbstractChartFragment;
import nodomain.freeyourgadget.gadgetbridge.activities.charts.ChartsData;
import nodomain.freeyourgadget.gadgetbridge.activities.charts.ChartsHost;
import nodomain.freeyourgadget.gadgetbridge.database.DBHandler; import nodomain.freeyourgadget.gadgetbridge.database.DBHandler;
import nodomain.freeyourgadget.gadgetbridge.database.DBHelper; import nodomain.freeyourgadget.gadgetbridge.database.DBHelper;
import nodomain.freeyourgadget.gadgetbridge.entities.BatteryLevel; import nodomain.freeyourgadget.gadgetbridge.entities.BatteryLevel;
import nodomain.freeyourgadget.gadgetbridge.entities.BatteryLevelDao; import nodomain.freeyourgadget.gadgetbridge.entities.BatteryLevelDao;
import nodomain.freeyourgadget.gadgetbridge.entities.Device; import nodomain.freeyourgadget.gadgetbridge.entities.Device;
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
import nodomain.freeyourgadget.gadgetbridge.model.ActivitySample;
public class BatteryInfoChartFragment extends AbstractChartFragment { public class BatteryInfoChartFragment extends AbstractGBFragment {
private static final Logger LOG = LoggerFactory.getLogger(BatteryInfoChartFragment.class); private static final Logger LOG = LoggerFactory.getLogger(BatteryInfoChartFragment.class);
protected int BACKGROUND_COLOR;
protected int DESCRIPTION_COLOR;
protected int CHART_TEXT_COLOR;
protected int LEGEND_TEXT_COLOR;
protected String BATTERY_LABEL;
private LineChart mChart; private LineChart mChart;
private int startTime; private int startTime;
@ -76,16 +79,17 @@ public class BatteryInfoChartFragment extends AbstractChartFragment {
this.endTime = (int) endTime; this.endTime = (int) endTime;
this.gbDevice = gbDevice; this.gbDevice = gbDevice;
try { try {
//setupLegend(mChart);
populate_charts_data(); populate_charts_data();
} catch (Exception e) { } catch (Exception e) {
LOG.debug("Unable to fill charts data right now:", e); LOG.debug("Unable to fill charts data right now:", e);
} }
} }
private void populate_charts_data() {
int LEGEND_TEXT_COLOR = 0;
private void populate_charts_data() {
new Thread(new Runnable() {
@Override
public void run() {
try (DBHandler handler = GBApplication.acquireDB()) { try (DBHandler handler = GBApplication.acquireDB()) {
List<? extends BatteryLevel> samples = getBatteryLevels(handler, gbDevice, startTime, endTime); List<? extends BatteryLevel> samples = getBatteryLevels(handler, gbDevice, startTime, endTime);
DefaultBatteryChartsData dcd = null; DefaultBatteryChartsData dcd = null;
@ -104,10 +108,14 @@ public class BatteryInfoChartFragment extends AbstractChartFragment {
} catch (Exception e) { } catch (Exception e) {
LOG.error("Unable to get charts data:", e); LOG.error("Unable to get charts data:", e);
} }
}
}).start();
} }
private DefaultBatteryChartsData fill_dcd(List<? extends BatteryLevel> samples) { private DefaultBatteryChartsData fill_dcd(List<? extends BatteryLevel> samples) {
TimestampTranslation tsTranslation = new TimestampTranslation(); AbstractChartFragment.TimestampTranslation tsTranslation = new AbstractChartFragment.TimestampTranslation();
List<Entry> entries = new ArrayList<Entry>(); List<Entry> entries = new ArrayList<Entry>();
int firstTs = 0; int firstTs = 0;
@ -118,7 +126,7 @@ public class BatteryInfoChartFragment extends AbstractChartFragment {
} }
} }
LineDataSet dataSet = new LineDataSet(entries, getString(R.string.battery_level)); LineDataSet dataSet = new LineDataSet(entries, BATTERY_LABEL);
dataSet.setLineWidth(2.2f); dataSet.setLineWidth(2.2f);
dataSet.setMode(LineDataSet.Mode.HORIZONTAL_BEZIER); dataSet.setMode(LineDataSet.Mode.HORIZONTAL_BEZIER);
dataSet.setCubicIntensity(0.1f); dataSet.setCubicIntensity(0.1f);
@ -134,6 +142,14 @@ public class BatteryInfoChartFragment extends AbstractChartFragment {
} }
private void init() {
BACKGROUND_COLOR = GBApplication.getBackgroundColor(getContext());
LEGEND_TEXT_COLOR = DESCRIPTION_COLOR = GBApplication.getTextColor(getContext());
CHART_TEXT_COLOR = ContextCompat.getColor(getContext(), R.color.secondarytext);
BATTERY_LABEL = getString(R.string.battery_level);
}
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
@ -157,8 +173,8 @@ public class BatteryInfoChartFragment extends AbstractChartFragment {
mChart.getLegend().setTextColor(LEGEND_TEXT_COLOR); mChart.getLegend().setTextColor(LEGEND_TEXT_COLOR);
mChart.setBackgroundColor(BACKGROUND_COLOR); mChart.setBackgroundColor(BACKGROUND_COLOR);
mChart.getDescription().setTextColor(DESCRIPTION_COLOR); mChart.getDescription().setTextColor(DESCRIPTION_COLOR);
configureBarLineChartDefaults(mChart);
mChart.setTouchEnabled(true); mChart.setTouchEnabled(true);
mChart.getLegend().setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
XAxis x = mChart.getXAxis(); XAxis x = mChart.getXAxis();
x.setDrawLabels(true); x.setDrawLabels(true);
@ -195,40 +211,12 @@ public class BatteryInfoChartFragment extends AbstractChartFragment {
return levels; return levels;
} }
@Override
protected void setupLegend(Chart chart) {
chart.getLegend().setHorizontalAlignment(Legend.LegendHorizontalAlignment.CENTER);
}
@Override
protected ChartsData refreshInBackground(ChartsHost chartsHost, DBHandler db, GBDevice device) {
return null;
}
@Override
protected void renderCharts() {
}
@Override
protected List<? extends ActivitySample> getSamples(DBHandler db, GBDevice device, int tsFrom, int tsTo) {
return null;
}
protected Entry createLineEntry(float value, int xValue) {
return new Entry(xValue, value);
}
@Override
protected void updateChartsnUIThread(ChartsData chartsData) {
}
protected static class customFormatter extends ValueFormatter { protected static class customFormatter extends ValueFormatter {
private final TimestampTranslation tsTranslation; private final AbstractChartFragment.TimestampTranslation tsTranslation;
SimpleDateFormat annotationDateFormat = new SimpleDateFormat("dd.MM HH:mm"); SimpleDateFormat annotationDateFormat = new SimpleDateFormat("dd.MM HH:mm");
Calendar cal = GregorianCalendar.getInstance(); Calendar cal = GregorianCalendar.getInstance();
public customFormatter(TimestampTranslation tsTranslation) { public customFormatter(AbstractChartFragment.TimestampTranslation tsTranslation) {
this.tsTranslation = tsTranslation; this.tsTranslation = tsTranslation;
} }
@ -242,7 +230,7 @@ public class BatteryInfoChartFragment extends AbstractChartFragment {
} }
} }
private class DefaultBatteryChartsData extends DefaultChartsData { private class DefaultBatteryChartsData extends AbstractChartFragment.DefaultChartsData {
public int firstTs; public int firstTs;
public DefaultBatteryChartsData(ChartData data, ValueFormatter xValueFormatter, int ts) { public DefaultBatteryChartsData(ChartData data, ValueFormatter xValueFormatter, int ts) {
@ -262,7 +250,7 @@ public class BatteryInfoChartFragment extends AbstractChartFragment {
public batteryValuesAndDateMarker(Context context, int layoutResource, int ts) { public batteryValuesAndDateMarker(Context context, int layoutResource, int ts) {
super(context, layoutResource); super(context, layoutResource);
TimestampTranslation tsTranslation = new TimestampTranslation(); AbstractChartFragment.TimestampTranslation tsTranslation = new AbstractChartFragment.TimestampTranslation();
formatter = new customFormatter(tsTranslation); formatter = new customFormatter(tsTranslation);
top_text = (TextView) findViewById(R.id.chart_marker_item_top); top_text = (TextView) findViewById(R.id.chart_marker_item_top);
bottom_text = (TextView) findViewById(R.id.chart_marker_item_bottom); bottom_text = (TextView) findViewById(R.id.chart_marker_item_bottom);