summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2020-11-19 11:24:31 +0100
committerByteHamster <info@bytehamster.com>2020-11-19 11:24:31 +0100
commit4b252250c0df856a63c801c03191e64f4909c239 (patch)
treeaf18e2cbdf9d497bc657d3f998ae93b920a8bb10 /app/src/main/java/de/danoeh/antennapod
parentba09afd2159cd0ba2221472aa7492ee77e3f0811 (diff)
parent4e12615a2de96357f4df7b9a971bc65792dd48ad (diff)
downloadAntennaPod-4b252250c0df856a63c801c03191e64f4909c239.zip
Merge branch 'master' into develop
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java1
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java1
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java47
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java34
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SearchListFragment.java80
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/TagListFragment.java41
-rw-r--r--app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java64
7 files changed, 59 insertions, 209 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java
index 0086cea8c..29b197042 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java
@@ -199,7 +199,6 @@ public class AddFeedFragment extends Fragment {
throw new IllegalArgumentException("Unable to retrieve document tree");
}
Feed dirFeed = new Feed(Feed.PREFIX_LOCAL_FOLDER + uri.toString(), null, documentFile.getName());
- dirFeed.setDescription(getString(R.string.local_feed_description));
dirFeed.setItems(Collections.emptyList());
dirFeed.setSortOrder(SortOrder.EPISODE_TITLE_A_Z);
Feed fromDatabase = DBTasks.updateFeed(getContext(), dirFeed, false);
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java
index 4ca08cbdd..abb597e60 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java
@@ -285,6 +285,7 @@ public class FeedInfoFragment extends Fragment implements Toolbar.OnMenuItemClic
private void refreshToolbarState() {
toolbar.getMenu().findItem(R.id.reconnect_local_folder).setVisible(feed != null && feed.isLocalFeed());
+ toolbar.getMenu().findItem(R.id.share_download_url_item).setVisible(feed != null && !feed.isLocalFeed());
toolbar.getMenu().findItem(R.id.share_link_item).setVisible(feed != null && feed.getLink() != null);
toolbar.getMenu().findItem(R.id.visit_website_item).setVisible(feed != null && feed.getLink() != null
&& IntentUtils.isCallable(getContext(), new Intent(Intent.ACTION_VIEW, Uri.parse(feed.getLink()))));
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java
index 641e82b5a..ad815c3c9 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java
@@ -1,11 +1,14 @@
package de.danoeh.antennapod.fragment.gpodnet;
+import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
+import androidx.appcompat.widget.SearchView;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.adapter.FragmentStateAdapter;
@@ -15,6 +18,9 @@ import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.activity.MainActivity;
+import de.danoeh.antennapod.discovery.GpodnetPodcastSearcher;
+import de.danoeh.antennapod.fragment.OnlineSearchFragment;
/**
* Main navigation hub for gpodder.net podcast directory
@@ -30,9 +36,7 @@ public class GpodnetMainFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
View root = inflater.inflate(R.layout.pager_fragment, container, false);
- Toolbar toolbar = root.findViewById(R.id.toolbar);
- toolbar.setTitle(R.string.gpodnet_main_label);
- toolbar.setNavigationOnClickListener(v -> getParentFragmentManager().popBackStack());
+ setupToolbar(root.findViewById(R.id.toolbar));
ViewPager2 viewPager = root.findViewById(R.id.viewpager);
GpodnetPagerAdapter pagerAdapter = new GpodnetPagerAdapter(this);
@@ -59,6 +63,33 @@ public class GpodnetMainFragment extends Fragment {
return root;
}
+ private void setupToolbar(Toolbar toolbar) {
+ toolbar.setTitle(R.string.gpodnet_main_label);
+ toolbar.setNavigationOnClickListener(v -> getParentFragmentManager().popBackStack());
+
+ toolbar.inflateMenu(R.menu.search);
+ MenuItem searchItem = toolbar.getMenu().findItem(R.id.action_search);
+ final SearchView sv = (SearchView) searchItem.getActionView();
+ sv.setQueryHint(getString(R.string.gpodnet_search_hint));
+ sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
+ @Override
+ public boolean onQueryTextSubmit(String query) {
+ Activity activity = getActivity();
+ if (activity != null) {
+ searchItem.collapseActionView();
+ ((MainActivity) activity).loadChildFragment(
+ OnlineSearchFragment.newInstance(GpodnetPodcastSearcher.class, query));
+ }
+ return true;
+ }
+
+ @Override
+ public boolean onQueryTextChange(String s) {
+ return false;
+ }
+ });
+ }
+
public static class GpodnetPagerAdapter extends FragmentStateAdapter {
GpodnetPagerAdapter(@NonNull Fragment fragment) {
@@ -68,20 +99,14 @@ public class GpodnetMainFragment extends Fragment {
@NonNull
@Override
public Fragment createFragment(int position) {
- Bundle arguments = new Bundle();
- arguments.putBoolean(PodcastListFragment.ARGUMENT_HIDE_TOOLBAR, true);
switch (position) {
case POS_TAGS:
return new TagListFragment();
case POS_TOPLIST:
- PodcastListFragment topListFragment = new PodcastTopListFragment();
- topListFragment.setArguments(arguments);
- return topListFragment;
+ return new PodcastTopListFragment();
default:
case POS_SUGGESTIONS:
- PodcastListFragment suggestionsFragment = new SuggestionListFragment();
- suggestionsFragment.setArguments(arguments);
- return suggestionsFragment;
+ return new SuggestionListFragment();
}
}
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 b3f56941b..e272b2869 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
@@ -33,7 +33,6 @@ import de.danoeh.antennapod.core.sync.gpoddernet.model.GpodnetPodcast;
* Displays a list of GPodnetPodcast-Objects in a GridView
*/
public abstract class PodcastListFragment extends Fragment {
- public static final String ARGUMENT_HIDE_TOOLBAR = "hideToolbar";
private static final String TAG = "PodcastListFragment";
private GridView gridView;
@@ -44,8 +43,6 @@ public abstract class PodcastListFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.gpodnet_podcast_list, container, false);
- setupToolbar(root.findViewById(R.id.toolbar));
-
gridView = root.findViewById(R.id.gridView);
progressBar = root.findViewById(R.id.progressBar);
txtvError = root.findViewById(R.id.txtvError);
@@ -59,37 +56,6 @@ public abstract class PodcastListFragment extends Fragment {
return root;
}
- private void setupToolbar(Toolbar toolbar) {
- if (getArguments() != null && getArguments().getBoolean(ARGUMENT_HIDE_TOOLBAR, false)) {
- toolbar.setVisibility(View.GONE);
- return;
- }
-
- toolbar.setTitle(R.string.gpodnet_main_label);
- toolbar.setNavigationOnClickListener(v -> getParentFragmentManager().popBackStack());
- toolbar.inflateMenu(R.menu.gpodder_podcasts);
-
- MenuItem searchItem = toolbar.getMenu().findItem(R.id.action_search);
- final SearchView sv = (SearchView) searchItem.getActionView();
- sv.setQueryHint(getString(R.string.gpodnet_search_hint));
- sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
- @Override
- public boolean onQueryTextSubmit(String s) {
- sv.clearFocus();
- MainActivity activity = (MainActivity)getActivity();
- if (activity != null) {
- activity.loadChildFragment(SearchListFragment.newInstance(s));
- }
- return true;
- }
-
- @Override
- public boolean onQueryTextChange(String s) {
- return false;
- }
- });
- }
-
private void onPodcastSelected(GpodnetPodcast selection) {
Log.d(TAG, "Selected podcast: " + selection.toString());
Intent intent = new Intent(getActivity(), OnlineFeedViewActivity.class);
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SearchListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SearchListFragment.java
deleted file mode 100644
index 72a752bf1..000000000
--- a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SearchListFragment.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package de.danoeh.antennapod.fragment.gpodnet;
-
-import android.os.Bundle;
-import androidx.core.view.MenuItemCompat;
-import androidx.appcompat.widget.SearchView;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
-
-import de.danoeh.antennapod.core.sync.gpoddernet.GpodnetService;
-import de.danoeh.antennapod.core.sync.gpoddernet.GpodnetServiceException;
-import de.danoeh.antennapod.core.sync.gpoddernet.model.GpodnetPodcast;
-import org.apache.commons.lang3.Validate;
-
-import de.danoeh.antennapod.R;
-
-import java.util.List;
-
-/**
- * Performs a search on the gpodder.net directory and displays the results.
- */
-public class SearchListFragment extends PodcastListFragment {
- private static final String ARG_QUERY = "query";
-
- private String query;
-
- public static SearchListFragment newInstance(String query) {
- SearchListFragment fragment = new SearchListFragment();
- Bundle args = new Bundle();
- args.putString(ARG_QUERY, query);
- fragment.setArguments(args);
- return fragment;
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- if (getArguments() != null && getArguments().containsKey(ARG_QUERY)) {
- this.query = getArguments().getString(ARG_QUERY);
- } else {
- this.query = "";
- }
- }
-
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- super.onCreateOptionsMenu(menu, inflater);
- // parent already inflated menu
- MenuItem searchItem = menu.findItem(R.id.action_search);
- final SearchView sv = (SearchView) searchItem.getActionView();
- sv.setQueryHint(getString(R.string.gpodnet_search_hint));
- sv.setQuery(query, false);
- sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
- @Override
- public boolean onQueryTextSubmit(String s) {
- sv.clearFocus();
- changeQuery(s);
- return true;
- }
-
- @Override
- public boolean onQueryTextChange(String s) {
- return false;
- }
- });
- }
-
- @Override
- protected List<GpodnetPodcast> loadPodcastData(GpodnetService service) throws GpodnetServiceException {
- return service.searchPodcasts(query, 0);
- }
-
- private void changeQuery(String query) {
- Validate.notNull(query);
-
- this.query = query;
- loadData();
- }
-}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/TagListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/TagListFragment.java
index 53a31b68d..2c41ee070 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/TagListFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/TagListFragment.java
@@ -1,19 +1,11 @@
package de.danoeh.antennapod.fragment.gpodnet;
-import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
-import androidx.fragment.app.ListFragment;
-import androidx.core.view.MenuItemCompat;
-import androidx.appcompat.widget.SearchView;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
-
-import de.danoeh.antennapod.R;
+import androidx.fragment.app.ListFragment;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.adapter.gpodnet.TagListAdapter;
import de.danoeh.antennapod.core.preferences.GpodnetPreferences;
@@ -28,37 +20,6 @@ public class TagListFragment extends ListFragment {
private static final int COUNT = 50;
@Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setHasOptionsMenu(true);
- }
-
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- super.onCreateOptionsMenu(menu, inflater);
- inflater.inflate(R.menu.gpodder_podcasts, menu);
- MenuItem searchItem = menu.findItem(R.id.action_search);
- final SearchView sv = (SearchView) searchItem.getActionView();
- sv.setQueryHint(getString(R.string.gpodnet_search_hint));
- sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
- @Override
- public boolean onQueryTextSubmit(String s) {
- Activity activity = getActivity();
- if (activity != null) {
- sv.clearFocus();
- ((MainActivity) activity).loadChildFragment(SearchListFragment.newInstance(s));
- }
- return true;
- }
-
- @Override
- public boolean onQueryTextChange(String s) {
- return false;
- }
- });
- }
-
- @Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
index 3d8f3fe09..1eecccb4c 100644
--- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
+++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
@@ -48,65 +48,43 @@ public class FeedItemMenuHandler {
if (menu == null || selectedItem == null) {
return false;
}
- boolean hasMedia = selectedItem.getMedia() != null;
- boolean isPlaying = hasMedia && selectedItem.getState() == FeedItem.State.PLAYING;
-
- if (!isPlaying) {
- setItemVisibility(menu, R.id.skip_episode_item, false);
- }
- boolean isInQueue = selectedItem.isTagged(FeedItem.TAG_QUEUE);
- if (!isInQueue) {
- setItemVisibility(menu, R.id.remove_from_queue_item, false);
- }
- if (!(!isInQueue && selectedItem.getMedia() != null)) {
- setItemVisibility(menu, R.id.add_to_queue_item, false);
- }
- if (!ShareUtils.hasLinkToShare(selectedItem)) {
- setItemVisibility(menu, R.id.visit_website_item, false);
- }
-
- boolean fileDownloaded = hasMedia && selectedItem.getMedia().fileExists();
+ final boolean hasMedia = selectedItem.getMedia() != null;
+ final boolean isPlaying = hasMedia && selectedItem.getState() == FeedItem.State.PLAYING;
+ final boolean isInQueue = selectedItem.isTagged(FeedItem.TAG_QUEUE);
+ final boolean fileDownloaded = hasMedia && selectedItem.getMedia().fileExists();
+ final boolean isFavorite = selectedItem.isTagged(FeedItem.TAG_FAVORITE);
+ setItemVisibility(menu, R.id.skip_episode_item, isPlaying);
+ setItemVisibility(menu, R.id.remove_from_queue_item, isInQueue);
+ setItemVisibility(menu, R.id.add_to_queue_item, !isInQueue && selectedItem.getMedia() != null);
+ setItemVisibility(menu, R.id.visit_website_item, !selectedItem.getFeed().isLocalFeed()
+ && ShareUtils.hasLinkToShare(selectedItem));
+ setItemVisibility(menu, R.id.share_item, !selectedItem.getFeed().isLocalFeed());
setItemVisibility(menu, R.id.remove_new_flag_item, selectedItem.isNew());
- if (selectedItem.isPlayed()) {
- setItemVisibility(menu, R.id.mark_read_item, false);
- } else {
- setItemVisibility(menu, R.id.mark_unread_item, false);
- }
-
- if (selectedItem.getMedia() == null || selectedItem.getMedia().getPosition() == 0) {
- setItemVisibility(menu, R.id.reset_position, false);
- }
+ setItemVisibility(menu, R.id.mark_read_item, !selectedItem.isPlayed());
+ setItemVisibility(menu, R.id.mark_unread_item, selectedItem.isPlayed());
+ setItemVisibility(menu, R.id.reset_position, hasMedia && selectedItem.getMedia().getPosition() != 0);
if (!UserPreferences.isEnableAutodownload() || fileDownloaded || selectedItem.getFeed().isLocalFeed()) {
setItemVisibility(menu, R.id.activate_auto_download, false);
setItemVisibility(menu, R.id.deactivate_auto_download, false);
- } else if (selectedItem.getAutoDownload()) {
- setItemVisibility(menu, R.id.activate_auto_download, false);
} else {
- setItemVisibility(menu, R.id.deactivate_auto_download, false);
+ setItemVisibility(menu, R.id.activate_auto_download, !selectedItem.getAutoDownload());
+ setItemVisibility(menu, R.id.deactivate_auto_download, selectedItem.getAutoDownload());
}
// Display proper strings when item has no media
- if (!hasMedia && !selectedItem.isPlayed()) {
+ if (hasMedia) {
+ setItemTitle(menu, R.id.mark_read_item, R.string.mark_read_label);
+ setItemTitle(menu, R.id.mark_unread_item, R.string.mark_unread_label);
+ } else {
setItemTitle(menu, R.id.mark_read_item, R.string.mark_read_no_media_label);
- }
-
- if (!hasMedia && selectedItem.isPlayed()) {
setItemTitle(menu, R.id.mark_unread_item, R.string.mark_unread_label_no_media);
}
- boolean isFavorite = selectedItem.isTagged(FeedItem.TAG_FAVORITE);
setItemVisibility(menu, R.id.add_to_favorites_item, !isFavorite);
setItemVisibility(menu, R.id.remove_from_favorites_item, isFavorite);
-
setItemVisibility(menu, R.id.remove_item, fileDownloaded);
-
- if (selectedItem.getFeed().isLocalFeed()) {
- setItemVisibility(menu, R.id.visit_website_item, false);
- setItemVisibility(menu, R.id.share_item, false);
- }
-
return true;
}
@@ -134,7 +112,7 @@ public class FeedItemMenuHandler {
* @param id The id of the string that is going to be replaced.
* @param noMedia The id of the new String that is going to be used.
* */
- public static void setItemTitle(Menu menu, int id, int noMedia){
+ public static void setItemTitle(Menu menu, int id, int noMedia) {
MenuItem item = menu.findItem(id);
if (item != null) {
item.setTitle(noMedia);