From aa4a93a5b640b2d01c00b39d218ca7daa49a7b09 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 9 Nov 2020 22:52:34 +0100 Subject: Re-added toolbar to gpodder main fragment and removed unused gpodder search fragment --- .../fragment/gpodnet/GpodnetMainFragment.java | 47 ++++++++++--- .../fragment/gpodnet/PodcastListFragment.java | 34 --------- .../fragment/gpodnet/SearchListFragment.java | 80 ---------------------- .../fragment/gpodnet/TagListFragment.java | 41 +---------- 4 files changed, 37 insertions(+), 165 deletions(-) delete mode 100644 app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SearchListFragment.java (limited to 'app/src/main/java/de/danoeh/antennapod') 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 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; @@ -27,37 +19,6 @@ import java.util.List; 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); -- cgit v1.2.3 From 2249e915781fd9f928b01858845b2de3fc984e72 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 9 Nov 2020 23:10:47 +0100 Subject: Update local folder properties on refresh Fixes updated translations --- app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java | 1 - 1 file changed, 1 deletion(-) (limited to 'app/src/main/java/de/danoeh/antennapod') 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 9ecfda23e..28456c01e 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java @@ -191,7 +191,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); -- cgit v1.2.3 From ec134fb67f6f36fe862be7a9b4a825c30fa18667 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 9 Nov 2020 23:17:27 +0100 Subject: Hide share link on feed info page for local feeds --- app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java | 1 + 1 file changed, 1 insertion(+) (limited to 'app/src/main/java/de/danoeh/antennapod') 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())))); -- cgit v1.2.3 From 7936be0270312c1dcb649aa5845bf5cdb188eb87 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sat, 14 Nov 2020 17:46:32 +0100 Subject: Fixed toolbar sometimes not refreshing correctly --- .../menuhandler/FeedItemMenuHandler.java | 64 +++++++--------------- 1 file changed, 21 insertions(+), 43 deletions(-) (limited to 'app/src/main/java/de/danoeh/antennapod') 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); -- cgit v1.2.3