diff options
Diffstat (limited to 'app')
12 files changed, 96 insertions, 29 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index f772cb084..371f15de7 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -71,6 +71,7 @@ public class MainActivity extends CastEnabledActivity { public static final String EXTRA_FEED_ID = "fragment_feed_id"; public static final String EXTRA_OPEN_PLAYER = "open_player"; public static final String EXTRA_REFRESH_ON_START = "refresh_on_start"; + public static final String EXTRA_STARTED_FROM_SEARCH = "started_from_search"; private @Nullable DrawerLayout drawerLayout; private @Nullable ActionBarDrawerToggle drawerToggle; @@ -477,7 +478,11 @@ public class MainActivity extends CastEnabledActivity { if (tag != null) { loadFragment(tag, args); } else if (feedId > 0) { - loadFeedFragmentById(feedId, args); + if (intent.getBooleanExtra(EXTRA_STARTED_FROM_SEARCH, false)) { + loadChildFragment(FeedItemlistFragment.newInstance(feedId)); + } else { + loadFeedFragmentById(feedId, args); + } } sheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); } else if (intent.getBooleanExtra(EXTRA_OPEN_PLAYER, false)) { diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java index f6623d5dc..3bacdc75f 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java @@ -508,6 +508,8 @@ public class OnlineFeedViewActivity extends AppCompatActivity { // feed.getId() is always 0, we have to retrieve the id from the feed list from // the database Intent intent = MainActivity.getIntentToOpenFeed(this, getFeedId(feed)); + intent.putExtra(MainActivity.EXTRA_STARTED_FROM_SEARCH, + getIntent().getBooleanExtra(MainActivity.EXTRA_STARTED_FROM_SEARCH, false)); finish(); startActivity(intent); } 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/OnlineSearchFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/OnlineSearchFragment.java index e8bd5a1e1..037c687a1 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/OnlineSearchFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/OnlineSearchFragment.java @@ -18,6 +18,7 @@ import android.widget.GridView; import android.widget.ProgressBar; import android.widget.TextView; import de.danoeh.antennapod.R; +import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.activity.OnlineFeedViewActivity; import de.danoeh.antennapod.adapter.itunes.ItunesAdapter; import de.danoeh.antennapod.discovery.PodcastSearchResult; @@ -101,6 +102,7 @@ public class OnlineSearchFragment extends Fragment { PodcastSearchResult podcast = searchResults.get(position); Intent intent = new Intent(getActivity(), OnlineFeedViewActivity.class); intent.putExtra(OnlineFeedViewActivity.ARG_FEEDURL, podcast.feedUrl); + intent.putExtra(MainActivity.EXTRA_STARTED_FROM_SEARCH, true); startActivity(intent); }); progressBar = root.findViewById(R.id.progressBar); 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/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java index d5cac07f1..4cb50e2f4 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java @@ -104,6 +104,7 @@ public abstract class PodcastListFragment extends Fragment { Log.d(TAG, "Selected podcast: " + selection.toString()); Intent intent = new Intent(getActivity(), OnlineFeedViewActivity.class); intent.putExtra(OnlineFeedViewActivity.ARG_FEEDURL, selection.getUrl()); + intent.putExtra(MainActivity.EXTRA_STARTED_FROM_SEARCH, true); startActivity(intent); } diff --git a/app/src/main/res/layout/addfeed.xml b/app/src/main/res/layout/addfeed.xml index 32b4a85d4..3d9b1ec17 100644 --- a/app/src/main/res/layout/addfeed.xml +++ b/app/src/main/res/layout/addfeed.xml @@ -138,7 +138,7 @@ app:drawableStartCompat="?attr/av_download" app:drawableLeftCompat="?attr/av_download" style="@style/AddPodcastTextView" - android:text="@string/opml_import_label"/> + android:text="@string/opml_add_podcast_label"/> </LinearLayout> </ScrollView> </LinearLayout> 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 |