summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2020-03-12 13:28:30 +0100
committerByteHamster <info@bytehamster.com>2020-03-15 20:09:11 +0100
commit7f4d43deb16ee0ce6a49f78805e5600d3e01161f (patch)
tree504079a84ba03df68a10fac7048d7240faa94cd3 /app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
parent03d1f41e9bd88e1920be306ef8bcd10642ce5527 (diff)
downloadAntennaPod-7f4d43deb16ee0ce6a49f78805e5600d3e01161f.zip
Moved Toolbar to individual Fragments
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java113
1 files changed, 53 insertions, 60 deletions
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 b9afa6d57..dd9fe7bc4 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
@@ -1,6 +1,5 @@
package de.danoeh.antennapod.fragment;
-import android.annotation.SuppressLint;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.LightingColorFilter;
@@ -12,31 +11,26 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
+import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
+import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
-
import android.widget.Toast;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SearchView;
+import androidx.appcompat.widget.Toolbar;
import androidx.core.view.MenuItemCompat;
-import androidx.fragment.app.ListFragment;
-
+import androidx.fragment.app.Fragment;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.joanzapata.iconify.Iconify;
import com.joanzapata.iconify.widget.IconTextView;
-
-import org.apache.commons.lang3.Validate;
-import org.greenrobot.eventbus.EventBus;
-import org.greenrobot.eventbus.Subscribe;
-import org.greenrobot.eventbus.ThreadMode;
-
-import java.util.List;
-
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.adapter.FeedItemlistAdapter;
@@ -46,28 +40,23 @@ import de.danoeh.antennapod.core.dialog.DownloadRequestErrorDialogCreator;
import de.danoeh.antennapod.core.event.DownloadEvent;
import de.danoeh.antennapod.core.event.DownloaderUpdate;
import de.danoeh.antennapod.core.event.FeedItemEvent;
-
import de.danoeh.antennapod.core.event.FeedListUpdateEvent;
import de.danoeh.antennapod.core.event.PlaybackPositionEvent;
import de.danoeh.antennapod.core.event.PlayerStatusEvent;
import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent;
-
import de.danoeh.antennapod.core.feed.Feed;
import de.danoeh.antennapod.core.feed.FeedEvent;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedItemFilter;
-import de.danoeh.antennapod.core.feed.FeedMedia;
import de.danoeh.antennapod.core.glide.ApGlideSettings;
import de.danoeh.antennapod.core.glide.FastBlurTransformation;
import de.danoeh.antennapod.core.service.download.DownloadService;
-import de.danoeh.antennapod.core.service.download.Downloader;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.core.storage.DownloadRequestException;
import de.danoeh.antennapod.core.storage.DownloadRequester;
import de.danoeh.antennapod.core.util.FeedItemPermutors;
import de.danoeh.antennapod.core.util.FeedItemUtil;
-import de.danoeh.antennapod.core.util.LongList;
import de.danoeh.antennapod.core.util.Optional;
import de.danoeh.antennapod.core.util.gui.MoreContentListFooterUtil;
import de.danoeh.antennapod.dialog.EpisodesApplyActionFragment;
@@ -79,12 +68,17 @@ import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
+import org.apache.commons.lang3.Validate;
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+import java.util.List;
/**
* Displays a list of FeedItems.
*/
-@SuppressLint("ValidFragment")
-public class FeedItemlistFragment extends ListFragment {
+public class FeedItemlistFragment extends Fragment implements AdapterView.OnItemClickListener {
private static final String TAG = "ItemlistFragment";
private static final String ARGUMENT_FEED_ID = "argument.de.danoeh.antennapod.feed_id";
@@ -102,6 +96,8 @@ public class FeedItemlistFragment extends ListFragment {
private ImageView imgvBackground;
private ImageView imgvCover;
private TextView txtvInformation;
+ private ListView listView;
+ private ProgressBar progressBar;
private Disposable disposable;
@@ -131,22 +127,23 @@ public class FeedItemlistFragment extends ListFragment {
feedID = args.getLong(ARGUMENT_FEED_ID);
}
+ @Nullable
@Override
- public void onHiddenChanged(boolean hidden) {
- super.onHiddenChanged(hidden);
- if (!hidden && getActivity() != null) {
- ((MainActivity) getActivity()).getSupportActionBar().setTitle("");
- }
- }
-
- @Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
-
- registerForContextMenu(getListView());
+ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
+ @Nullable Bundle savedInstanceState) {
+ View root = inflater.inflate(R.layout.feed_item_list_fragment, container, false);
+ Toolbar toolbar = root.findViewById(R.id.toolbar);
+ toolbar.setTitle("");
+ ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
+
+ listView = root.findViewById(android.R.id.list);
+ listView.setOnItemClickListener(this);
+ registerForContextMenu(listView);
+ progressBar = root.findViewById(R.id.progLoading);
EventBus.getDefault().register(this);
loadItems();
+ return root;
}
@Override
@@ -320,21 +317,20 @@ public class FeedItemlistFragment extends ListFragment {
}
@Override
- public void onListItemClick(ListView l, View v, int position, long id) {
- if(adapter == null) {
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ if (adapter == null) {
return;
}
- position -= l.getHeaderViewsCount();
+ position -= listView.getHeaderViewsCount();
MainActivity activity = (MainActivity) getActivity();
long[] ids = FeedItemUtil.getIds(feed.getItems());
activity.loadChildFragment(ItemPagerFragment.newInstance(ids, position));
- activity.getSupportActionBar().setTitle(feed.getTitle());
}
@Subscribe
public void onEvent(FeedEvent event) {
Log.d(TAG, "onEvent() called with: " + "event = [" + event + "]");
- if(event.feedId == feedID) {
+ if (event.feedId == feedID) {
loadItems();
}
}
@@ -342,12 +338,12 @@ public class FeedItemlistFragment extends ListFragment {
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(FeedItemEvent event) {
Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]");
- if(feed == null || feed.getItems() == null || adapter == null) {
+ if (feed == null || feed.getItems() == null || adapter == null) {
return;
}
- for(FeedItem item : event.items) {
+ for (FeedItem item : event.items) {
int pos = FeedItemUtil.indexOfItemWithId(feed.getItems(), item.getId());
- if(pos >= 0) {
+ if (pos >= 0) {
loadItems();
return;
}
@@ -369,7 +365,7 @@ public class FeedItemlistFragment extends ListFragment {
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(PlaybackPositionEvent event) {
if (adapter != null) {
- adapter.notifyCurrentlyPlayingItemChanged(event, getListView());
+ adapter.notifyCurrentlyPlayingItemChanged(event, listView);
}
}
@@ -412,39 +408,40 @@ public class FeedItemlistFragment extends ListFragment {
return;
}
if (adapter == null) {
- setListAdapter(null);
+ listView.setAdapter(null);
setupHeaderView();
setupFooterView();
adapter = new FeedItemlistAdapter((MainActivity) getActivity(), itemAccess, false, true);
- setListAdapter(adapter);
+ listView.setAdapter(adapter);
}
refreshHeaderView();
- setListShown(true);
+ listView.setVisibility(View.VISIBLE);
+ progressBar.setVisibility(View.GONE);
adapter.notifyDataSetChanged();
getActivity().supportInvalidateOptionsMenu();
if (feed != null && feed.getNextPageLink() == null && listFooter != null) {
- getListView().removeFooterView(listFooter.getRoot());
+ listView.removeFooterView(listFooter.getRoot());
}
}
private void refreshHeaderView() {
- if (getListView() == null || feed == null || !headerCreated) {
+ if (listView == null || feed == null || !headerCreated) {
Log.e(TAG, "Unable to refresh header view");
return;
}
loadFeedImage();
- if(feed.hasLastUpdateFailed()) {
+ if (feed.hasLastUpdateFailed()) {
txtvFailure.setVisibility(View.VISIBLE);
} else {
txtvFailure.setVisibility(View.GONE);
}
txtvTitle.setText(feed.getTitle());
- if(feed.getItemFilter() != null) {
+ if (feed.getItemFilter() != null) {
FeedItemFilter filter = feed.getItemFilter();
- if(filter.getValues().length > 0) {
- if(feed.hasLastUpdateFailed()) {
+ if (filter.getValues().length > 0) {
+ if (feed.hasLastUpdateFailed()) {
RelativeLayout.LayoutParams p = (RelativeLayout.LayoutParams) txtvInformation.getLayoutParams();
p.addRule(RelativeLayout.BELOW, R.id.txtvFailure);
}
@@ -460,15 +457,14 @@ public class FeedItemlistFragment extends ListFragment {
}
private void setupHeaderView() {
- if (getListView() == null || feed == null) {
+ if (listView == null || feed == null) {
Log.e(TAG, "Unable to setup listview: recyclerView = null or feed = null");
return;
}
- ListView lv = getListView();
LayoutInflater inflater = (LayoutInflater)
getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View header = inflater.inflate(R.layout.feeditemlist_header, lv, false);
- lv.addHeaderView(header);
+ View header = inflater.inflate(R.layout.feeditemlist_header, listView, false);
+ listView.addHeaderView(header);
txtvTitle = header.findViewById(R.id.txtvTitle);
TextView txtvAuthor = header.findViewById(R.id.txtvAuthor);
@@ -482,7 +478,6 @@ public class FeedItemlistFragment extends ListFragment {
txtvTitle.setText(feed.getTitle());
txtvAuthor.setText(feed.getAuthor());
-
// https://github.com/bumptech/glide/issues/529
imgvBackground.setColorFilter(new LightingColorFilter(0xff828282, 0x000000));
@@ -530,16 +525,15 @@ public class FeedItemlistFragment extends ListFragment {
private void setupFooterView() {
- if (getListView() == null || feed == null) {
+ if (listView == null || feed == null) {
Log.e(TAG, "Unable to setup listview: recyclerView = null or feed = null");
return;
}
if (feed.isPaged() && feed.getNextPageLink() != null) {
- ListView lv = getListView();
LayoutInflater inflater = (LayoutInflater)
getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View header = inflater.inflate(R.layout.more_content_list_footer, lv, false);
- lv.addFooterView(header);
+ View header = inflater.inflate(R.layout.more_content_list_footer, listView, false);
+ listView.addFooterView(header);
listFooter = new MoreContentListFooterUtil(header);
listFooter.setClickListener(() -> {
if (feed != null) {
@@ -573,7 +567,7 @@ public class FeedItemlistFragment extends ListFragment {
};
private void loadItems() {
- if(disposable != null) {
+ if (disposable != null) {
disposable.dispose();
}
disposable = Observable.fromCallable(this::loadData)
@@ -600,5 +594,4 @@ public class FeedItemlistFragment extends ListFragment {
}
return Optional.ofNullable(feed);
}
-
}