mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-09-27 16:56:57 +02:00
Add pull-to-refresh to dashboard
This commit is contained in:
parent
67ad1d420a
commit
68931a4c7a
@ -36,6 +36,7 @@ import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentContainerView;
|
||||
import androidx.gridlayout.widget.GridLayout;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
|
||||
import com.google.android.material.card.MaterialCardView;
|
||||
|
||||
@ -43,6 +44,7 @@ import java.io.Serializable;
|
||||
import java.util.Calendar;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
@ -56,6 +58,9 @@ import nodomain.freeyourgadget.gadgetbridge.activities.dashboard.DashboardSleepW
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.dashboard.DashboardStepsWidget;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.dashboard.DashboardTodayWidget;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceService;
|
||||
import nodomain.freeyourgadget.gadgetbridge.service.DeviceCommunicationService;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.DashboardUtils;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
||||
@ -67,6 +72,7 @@ public class DashboardFragment extends Fragment {
|
||||
private TextView arrowLeft;
|
||||
private TextView arrowRight;
|
||||
private GridLayout gridLayout;
|
||||
private SwipeRefreshLayout swipeLayout;
|
||||
private DashboardTodayWidget todayWidget;
|
||||
private DashboardGoalsWidget goalsWidget;
|
||||
private DashboardStepsWidget stepsWidget;
|
||||
@ -95,6 +101,25 @@ public class DashboardFragment extends Fragment {
|
||||
setHasOptionsMenu(true);
|
||||
textViewDate = dashboardView.findViewById(R.id.dashboard_date);
|
||||
gridLayout = dashboardView.findViewById(R.id.dashboard_gridlayout);
|
||||
swipeLayout = dashboardView.findViewById(R.id.dashboard_swipe_layout);
|
||||
swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
// Signal DeviceCommunicationService to fetch activity for all connected devices
|
||||
Intent intent = new Intent(requireContext(), DeviceCommunicationService.class);
|
||||
intent.setAction(DeviceService.ACTION_FETCH_RECORDED_DATA)
|
||||
.putExtra(DeviceService.EXTRA_RECORDED_DATA_TYPES, ActivityKind.TYPE_ACTIVITY);
|
||||
requireContext().startService(intent);
|
||||
// Hide 'refreshing' animation immediately if no health devices are connected
|
||||
List<GBDevice> devices = GBApplication.app().getDeviceManager().getDevices();
|
||||
for (GBDevice dev : devices) {
|
||||
if (dev.getDeviceCoordinator().supportsActivityTracking() && dev.isInitialized()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
swipeLayout.setRefreshing(false);
|
||||
}
|
||||
});
|
||||
|
||||
// Increase column count on landscape, tablets and open foldables
|
||||
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
|
||||
@ -198,6 +223,7 @@ public class DashboardFragment extends Fragment {
|
||||
}
|
||||
|
||||
private void refresh() {
|
||||
swipeLayout.setRefreshing(false);
|
||||
day.set(Calendar.HOUR_OF_DAY, 23);
|
||||
day.set(Calendar.MINUTE, 59);
|
||||
day.set(Calendar.SECOND, 59);
|
||||
|
@ -7,52 +7,58 @@
|
||||
android:layout_height="match_parent"
|
||||
tools:context=".activities.DashboardFragment">
|
||||
|
||||
<LinearLayout
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/dashboard_swipe_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<RelativeLayout
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:id="@+id/dashboard_date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
android:text="@string/activity_summary_today"
|
||||
android:textStyle="bold"
|
||||
android:textSize="30sp" />
|
||||
<TextView
|
||||
android:id="@+id/arrow_left"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="\u003C"
|
||||
android:textStyle="bold"
|
||||
android:textSize="40sp"
|
||||
android:paddingHorizontal="8dp"
|
||||
android:layout_toLeftOf="@+id/arrow_right" />
|
||||
<TextView
|
||||
android:id="@+id/arrow_right"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="\u003E"
|
||||
android:textStyle="bold"
|
||||
android:textSize="40sp"
|
||||
android:paddingHorizontal="8dp"
|
||||
android:layout_alignParentEnd="true"/>
|
||||
</RelativeLayout>
|
||||
android:orientation="vertical">
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.gridlayout.widget.GridLayout
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/dashboard_gridlayout"
|
||||
app:columnCount="2" />
|
||||
</ScrollView>
|
||||
</LinearLayout>
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:id="@+id/dashboard_date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="8dp"
|
||||
android:text="@string/activity_summary_today"
|
||||
android:textStyle="bold"
|
||||
android:textSize="30sp" />
|
||||
<TextView
|
||||
android:id="@+id/arrow_left"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="\u003C"
|
||||
android:textStyle="bold"
|
||||
android:textSize="40sp"
|
||||
android:paddingHorizontal="8dp"
|
||||
android:layout_toLeftOf="@+id/arrow_right" />
|
||||
<TextView
|
||||
android:id="@+id/arrow_right"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="\u003E"
|
||||
android:textStyle="bold"
|
||||
android:textSize="40sp"
|
||||
android:paddingHorizontal="8dp"
|
||||
android:layout_alignParentEnd="true"/>
|
||||
</RelativeLayout>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.gridlayout.widget.GridLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/dashboard_gridlayout"
|
||||
app:columnCount="2" />
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
</LinearLayout>
|
||||
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
|
||||
</RelativeLayout>
|
||||
|
Loading…
Reference in New Issue
Block a user