diff options
7 files changed, 84 insertions, 27 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java index 44f6c8827..0669dcbeb 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java @@ -6,6 +6,9 @@ import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.SimpleItemAnimator; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + +import android.os.Handler; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; @@ -214,6 +217,13 @@ public abstract class EpisodesListFragment extends Fragment { ((SimpleItemAnimator) animator).setSupportsChangeAnimations(false); } + SwipeRefreshLayout swipeRefreshLayout = root.findViewById(R.id.swipeRefresh); + swipeRefreshLayout.setOnRefreshListener(() -> { + AutoUpdateManager.runImmediate(requireContext()); + new Handler().postDelayed(() -> swipeRefreshLayout.setRefreshing(false), + getResources().getInteger(R.integer.swipe_to_refresh_duration_in_ms)); + }); + progLoading = root.findViewById(R.id.progLoading); progLoading.setVisibility(View.VISIBLE); loadingMoreView = root.findViewById(R.id.loadingMore); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java index 965cfdc86..0837e6a3f 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java @@ -6,6 +6,7 @@ import android.content.res.Configuration; import android.content.Intent; import android.graphics.LightingColorFilter; import android.os.Bundle; +import android.os.Handler; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; @@ -26,6 +27,8 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.google.android.material.appbar.AppBarLayout; @@ -205,6 +208,18 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem }); EventBus.getDefault().register(this); + + SwipeRefreshLayout swipeRefreshLayout = root.findViewById(R.id.swipeRefresh); + swipeRefreshLayout.setOnRefreshListener(() -> { + try { + DBTasks.forceRefreshFeed(requireContext(), feed, true); + } catch (DownloadRequestException e) { + e.printStackTrace(); + } + new Handler().postDelayed(() -> swipeRefreshLayout.setRefreshing(false), + getResources().getInteger(R.integer.swipe_to_refresh_duration_in_ms)); + }); + loadItems(); return root; } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java index 3837c5025..fd3409927 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java @@ -5,10 +5,13 @@ import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; import android.os.Bundle; +import android.os.Handler; import android.widget.ProgressBar; import androidx.annotation.StringRes; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + import android.util.Log; import android.view.ContextMenu; import android.view.LayoutInflater; @@ -103,6 +106,13 @@ public class SubscriptionFragment extends Fragment { feedsFilteredMsg = root.findViewById(R.id.feeds_filtered_message); feedsFilteredMsg.setOnClickListener((l) -> FeedFilterDialog.showDialog(requireContext())); + + SwipeRefreshLayout swipeRefreshLayout = root.findViewById(R.id.swipeRefresh); + swipeRefreshLayout.setOnRefreshListener(() -> { + AutoUpdateManager.runImmediate(requireContext()); + new Handler().postDelayed(() -> swipeRefreshLayout.setRefreshing(false), + getResources().getInteger(R.integer.swipe_to_refresh_duration_in_ms)); + }); return root; } diff --git a/app/src/main/res/layout/all_episodes_fragment.xml b/app/src/main/res/layout/all_episodes_fragment.xml index 353e4f1d0..3b560967c 100644 --- a/app/src/main/res/layout/all_episodes_fragment.xml +++ b/app/src/main/res/layout/all_episodes_fragment.xml @@ -16,19 +16,26 @@ android:visibility="gone" tools:text="(i) Information" /> - <de.danoeh.antennapod.view.EpisodeItemListRecyclerView - android:id="@android:id/list" + <androidx.swiperefreshlayout.widget.SwipeRefreshLayout + android:id="@+id/swipeRefresh" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/txtvInformation" - android:layout_marginTop="0dp" - android:layout_marginBottom="0dp" - android:paddingTop="@dimen/list_vertical_padding" - android:paddingBottom="@dimen/list_vertical_padding" - android:paddingHorizontal="@dimen/additional_horizontal_spacing" - android:layout_above="@id/loadingMore" - tools:itemCount="13" - tools:listitem="@layout/feeditemlist_item" /> + android:layout_above="@id/loadingMore"> + + <de.danoeh.antennapod.view.EpisodeItemListRecyclerView + android:id="@android:id/list" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginTop="0dp" + android:layout_marginBottom="0dp" + android:paddingTop="@dimen/list_vertical_padding" + android:paddingBottom="@dimen/list_vertical_padding" + android:paddingHorizontal="@dimen/additional_horizontal_spacing" + tools:itemCount="13" + tools:listitem="@layout/feeditemlist_item" /> + + </androidx.swiperefreshlayout.widget.SwipeRefreshLayout> <ProgressBar android:id="@+id/progLoading" diff --git a/app/src/main/res/layout/feed_item_list_fragment.xml b/app/src/main/res/layout/feed_item_list_fragment.xml index b995ff28f..6dc484e2f 100644 --- a/app/src/main/res/layout/feed_item_list_fragment.xml +++ b/app/src/main/res/layout/feed_item_list_fragment.xml @@ -48,12 +48,19 @@ </com.google.android.material.appbar.CollapsingToolbarLayout> </com.google.android.material.appbar.AppBarLayout> - <de.danoeh.antennapod.view.EpisodeItemListRecyclerView - android:id="@+id/recyclerView" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:paddingHorizontal="@dimen/additional_horizontal_spacing" - app:layout_behavior="@string/appbar_scrolling_view_behavior" /> + <androidx.swiperefreshlayout.widget.SwipeRefreshLayout + android:id="@+id/swipeRefresh" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> + + <de.danoeh.antennapod.view.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 android:id="@+id/progLoading" diff --git a/app/src/main/res/layout/fragment_subscriptions.xml b/app/src/main/res/layout/fragment_subscriptions.xml index a1a5a26f2..d08e0c501 100644 --- a/app/src/main/res/layout/fragment_subscriptions.xml +++ b/app/src/main/res/layout/fragment_subscriptions.xml @@ -28,17 +28,24 @@ android:textColor="?android:attr/textColorSecondary" android:textSize="@dimen/text_size_small" /> - <GridView - android:layout_below="@id/feeds_filtered_message" - android:id="@+id/subscriptions_grid" - android:layout_width="match_parent" - android:numColumns="3" - android:horizontalSpacing="2dp" - android:verticalSpacing="2dp" - android:layout_height="match_parent" - android:layout_gravity="center_horizontal" - android:paddingBottom="88dp" - android:clipToPadding="false"/> + <androidx.swiperefreshlayout.widget.SwipeRefreshLayout + android:id="@+id/swipeRefresh" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_below="@id/feeds_filtered_message"> + + <GridView + android:id="@+id/subscriptions_grid" + android:layout_width="match_parent" + android:numColumns="3" + android:horizontalSpacing="2dp" + android:verticalSpacing="2dp" + android:layout_height="match_parent" + android:layout_gravity="center_horizontal" + android:paddingBottom="88dp" + android:clipToPadding="false"/> + + </androidx.swiperefreshlayout.widget.SwipeRefreshLayout> <ProgressBar android:id="@+id/progLoading" diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml index a7a7ead7b..cb8f9e082 100644 --- a/app/src/main/res/values/integers.xml +++ b/app/src/main/res/values/integers.xml @@ -2,4 +2,5 @@ <resources> <integer name="subscriptions_default_num_of_columns">3</integer> <integer name="nav_drawer_screen_size_percent">80</integer> + <integer name="swipe_to_refresh_duration_in_ms">750</integer> </resources>
\ No newline at end of file |