Add charts loading indicator

This commit is contained in:
José Rebelo
2025-12-20 19:07:34 +01:00
committed by José Rebelo
parent ca532a6350
commit 36e067938c
4 changed files with 28 additions and 0 deletions
@@ -333,6 +333,7 @@ public abstract class AbstractChartFragment<D extends ChartsData> extends Abstra
ChartsHost chartsHost = getChartsHost();
if (chartsHost != null) {
if (chartsHost.getDevice() != null) {
chartsHost.setLoading(true);
mChartDirty = false;
if (refreshTask != null && refreshTask.getStatus() != AsyncTask.Status.FINISHED) {
refreshTask.cancel(true);
@@ -372,6 +373,9 @@ public abstract class AbstractChartFragment<D extends ChartsData> extends Abstra
LOG.info("Not rendering charts because activity is not available anymore");
return;
}
getChartsHost().setLoading(false);
if (getTaskError() != null) {
// Async task failed - we will have no data, so avoid NPE crashes
// a log + toast were already displayed by the DBAccess class
@@ -28,6 +28,7 @@ import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
@@ -88,6 +89,8 @@ public class ActivityChartsActivity extends AbstractGBActivity implements Charts
public static final String EXTRA_TIMESTAMP = "timestamp";
public static final String EXTRA_MODE = "mode";
private ProgressBar mLoadingProgressBar;
private TextView mDateControl;
private Date mStartDate;
@@ -214,6 +217,7 @@ public class ActivityChartsActivity extends AbstractGBActivity implements Charts
}
}
mLoadingProgressBar = findViewById(R.id.loading_progressbar);
dateBar = findViewById(R.id.charts_date_bar);
mDateControl = findViewById(R.id.charts_text_date);
mDateControl.setOnClickListener(v -> {
@@ -378,6 +382,11 @@ public class ActivityChartsActivity extends AbstractGBActivity implements Charts
mDateControl.setText(dateInfo);
}
@Override
public void setLoading(boolean loading) {
mLoadingProgressBar.setVisibility(loading ? View.VISIBLE : View.INVISIBLE);
}
@Override
public ViewGroup getDateBar() {
return dateBar;
@@ -45,6 +45,8 @@ public interface ChartsHost {
void setDateInfo(String dateInfo);
void setLoading(boolean loading);
ViewGroup getDateBar();
void enableSwipeRefresh(boolean enable);
@@ -27,10 +27,23 @@
tools:context="nodomain.freeyourgadget.gadgetbridge.activities.charts.ActivityChartsActivity">
</androidx.viewpager2.widget.ViewPager2>
<ProgressBar
android:id="@+id/loading_progressbar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="-8dp"
android:layout_marginTop="-4dp"
android:layout_gravity="center_horizontal"
android:indeterminate="true"
android:indeterminateOnly="true"
android:visibility="invisible" />
<LinearLayout
android:id="@+id/charts_date_bar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="2dp"
android:gravity="fill_horizontal"
android:orientation="horizontal">