Add pull to refresh to Downloads screen (#7230)

This commit is contained in:
Vishnu Sanal T 2024-06-09 22:36:02 +05:30 committed by GitHub
parent 91f8ed055f
commit 2d2ec14e5d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 26 additions and 7 deletions

View File

@ -11,10 +11,13 @@ import android.widget.ProgressBar;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.google.android.material.appbar.MaterialToolbar; import com.google.android.material.appbar.MaterialToolbar;
import com.google.android.material.snackbar.Snackbar; import com.google.android.material.snackbar.Snackbar;
import de.danoeh.antennapod.R; import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.event.FeedUpdateRunningEvent;
import de.danoeh.antennapod.ui.episodeslist.EpisodeItemListAdapter; import de.danoeh.antennapod.ui.episodeslist.EpisodeItemListAdapter;
import de.danoeh.antennapod.actionbutton.DeleteActionButton; import de.danoeh.antennapod.actionbutton.DeleteActionButton;
import de.danoeh.antennapod.event.DownloadLogEvent; import de.danoeh.antennapod.event.DownloadLogEvent;
@ -75,6 +78,7 @@ public class CompletedDownloadsFragment extends Fragment
private SwipeActions swipeActions; private SwipeActions swipeActions;
private ProgressBar progressBar; private ProgressBar progressBar;
private MaterialToolbar toolbar; private MaterialToolbar toolbar;
private SwipeRefreshLayout swipeRefreshLayout;
@Override @Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@ -95,6 +99,10 @@ public class CompletedDownloadsFragment extends Fragment
} }
((MainActivity) getActivity()).setupToolbarToggle(toolbar, displayUpArrow); ((MainActivity) getActivity()).setupToolbarToggle(toolbar, displayUpArrow);
swipeRefreshLayout = root.findViewById(R.id.swipeRefresh);
swipeRefreshLayout.setDistanceToTriggerSync(getResources().getInteger(R.integer.swipe_refresh_distance));
swipeRefreshLayout.setOnRefreshListener(() -> FeedUpdateManager.getInstance().runOnceOrAsk(requireContext()));
recyclerView = root.findViewById(R.id.recyclerView); recyclerView = root.findViewById(R.id.recyclerView);
recyclerView.setRecycledViewPool(((MainActivity) getActivity()).getRecycledViewPool()); recyclerView.setRecycledViewPool(((MainActivity) getActivity()).getRecycledViewPool());
adapter = new CompletedDownloadsListAdapter((MainActivity) getActivity()); adapter = new CompletedDownloadsListAdapter((MainActivity) getActivity());
@ -277,6 +285,11 @@ public class CompletedDownloadsFragment extends Fragment
loadItems(); loadItems();
} }
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEventMainThread(FeedUpdateRunningEvent event) {
swipeRefreshLayout.setRefreshing(event.isFeedUpdateRunning);
}
private void loadItems() { private void loadItems() {
if (disposable != null) { if (disposable != null) {
disposable.dispose(); disposable.dispose();

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout <RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -20,13 +20,19 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<de.danoeh.antennapod.ui.episodeslist.EpisodeItemListRecyclerView <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/recyclerView" android:id="@+id/swipeRefresh"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:paddingHorizontal="@dimen/additional_horizontal_spacing" android:layout_below="@id/appbar">
android:layout_below="@id/appbar"
app:layout_behavior="@string/appbar_scrolling_view_behavior" /> <de.danoeh.antennapod.ui.episodeslist.EpisodeItemListRecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingHorizontal="@dimen/additional_horizontal_spacing" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
<ProgressBar <ProgressBar
android:id="@+id/progLoading" android:id="@+id/progLoading"
@ -42,4 +48,4 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="bottom" /> android:layout_gravity="bottom" />
</androidx.coordinatorlayout.widget.CoordinatorLayout> </RelativeLayout>