summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java92
1 files changed, 70 insertions, 22 deletions
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 317fecfcb..5fd2c3c8d 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java
@@ -18,6 +18,7 @@ import androidx.appcompat.widget.Toolbar;
import androidx.documentfile.provider.DocumentFile;
import androidx.fragment.app.Fragment;
import android.text.TextUtils;
+import android.text.format.Formatter;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -25,6 +26,7 @@ import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
@@ -43,22 +45,24 @@ import de.danoeh.antennapod.core.glide.FastBlurTransformation;
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.StatisticsItem;
+import de.danoeh.antennapod.core.util.Converter;
import de.danoeh.antennapod.core.util.IntentUtils;
-import de.danoeh.antennapod.core.util.LangUtils;
import de.danoeh.antennapod.core.util.ThemeUtils;
import de.danoeh.antennapod.core.util.syndication.HtmlToPlainText;
+import de.danoeh.antennapod.fragment.preferences.StatisticsFragment;
import de.danoeh.antennapod.menuhandler.FeedMenuHandler;
import de.danoeh.antennapod.view.ToolbarIconTintManager;
import io.reactivex.Completable;
import io.reactivex.Maybe;
import io.reactivex.MaybeOnSubscribe;
import io.reactivex.Observable;
-import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
-import java.util.Collections;
+import java.util.List;
+import java.util.Locale;
/**
* Displays information about a feed.
@@ -71,13 +75,15 @@ public class FeedInfoFragment extends Fragment {
private Feed feed;
private Disposable disposable;
+ private Disposable disposableStatistics;
private ImageView imgvCover;
private TextView txtvTitle;
private TextView txtvDescription;
- private TextView lblLanguage;
- private TextView txtvLanguage;
- private TextView lblAuthor;
- private TextView txtvAuthor;
+ private TextView lblStatistics;
+ private TextView txtvPodcastTime;
+ private TextView txtvPodcastSpace;
+ private TextView txtvPodcastEpisodeCount;
+ private Button btnvOpenStatistics;
private TextView txtvUrl;
private TextView txtvAuthorHeader;
private ImageView imgvBackground;
@@ -144,13 +150,23 @@ public class FeedInfoFragment extends Fragment {
imgvBackground.setColorFilter(new LightingColorFilter(0xff828282, 0x000000));
txtvDescription = root.findViewById(R.id.txtvDescription);
- lblLanguage = root.findViewById(R.id.lblLanguage);
- txtvLanguage = root.findViewById(R.id.txtvLanguage);
- lblAuthor = root.findViewById(R.id.lblAuthor);
- txtvAuthor = root.findViewById(R.id.txtvDetailsAuthor);
+ lblStatistics = root.findViewById(R.id.lblStatistics);
+ txtvPodcastSpace = root.findViewById(R.id.txtvPodcastSpaceUsed);
+ txtvPodcastEpisodeCount = root.findViewById(R.id.txtvPodcastEpisodeCount);
+ txtvPodcastTime = root.findViewById(R.id.txtvPodcastTime);
+ btnvOpenStatistics = root.findViewById(R.id.btnvOpenStatistics);
txtvUrl = root.findViewById(R.id.txtvUrl);
txtvUrl.setOnClickListener(copyUrlToClipboard);
+
+ btnvOpenStatistics.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ StatisticsFragment fragment = new StatisticsFragment();
+ ((MainActivity) getActivity()).loadChildFragment(fragment, TransitionEffect.SLIDE);
+ }
+ });
+
return root;
}
@@ -170,6 +186,7 @@ public class FeedInfoFragment extends Fragment {
.subscribe(result -> {
feed = result;
showFeed();
+ loadStatistics();
}, error -> Log.d(TAG, Log.getStackTraceString(error)), () -> { });
}
@@ -212,30 +229,61 @@ public class FeedInfoFragment extends Fragment {
txtvDescription.setText(description);
if (!TextUtils.isEmpty(feed.getAuthor())) {
- txtvAuthor.setText(feed.getAuthor());
txtvAuthorHeader.setText(feed.getAuthor());
- } else {
- lblAuthor.setVisibility(View.GONE);
- txtvAuthor.setVisibility(View.GONE);
- }
- if (!TextUtils.isEmpty(feed.getLanguage())) {
- txtvLanguage.setText(LangUtils.getLanguageString(feed.getLanguage()));
- } else {
- lblLanguage.setVisibility(View.GONE);
- txtvLanguage.setVisibility(View.GONE);
}
+
txtvUrl.setText(feed.getDownload_url() + " {fa-paperclip}");
Iconify.addIcons(txtvUrl);
-
getActivity().invalidateOptionsMenu();
}
+ private void loadStatistics() {
+ if (disposableStatistics != null) {
+ disposableStatistics.dispose();
+ }
+
+ disposableStatistics =
+ Observable.fromCallable(() -> {
+ List<StatisticsItem> statisticsData = DBReader.getStatistics();
+
+ for (StatisticsItem statisticsItem : statisticsData) {
+ if (statisticsItem.feed.getId() == feed.getId()) {
+ return statisticsItem;
+ }
+ }
+
+ return null;
+ })
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(result -> {
+ txtvPodcastTime.setText(Converter.shortLocalizedDuration(
+ getContext(), result.timePlayed));
+ txtvPodcastSpace.setText(Formatter.formatShortFileSize(
+ getContext(), result.totalDownloadSize));
+ txtvPodcastEpisodeCount.setText(String.format(Locale.getDefault(),
+ "%d%s", result.episodesDownloadCount,
+ getString(R.string.episodes_suffix)));
+ }, error -> {
+ Log.d(TAG, Log.getStackTraceString(error));
+ lblStatistics.setVisibility(View.GONE);
+ txtvPodcastSpace.setVisibility(View.GONE);
+ txtvPodcastTime.setVisibility(View.GONE);
+ txtvPodcastEpisodeCount.setVisibility(View.GONE);
+ btnvOpenStatistics.setVisibility(View.GONE);
+ });
+ }
+
@Override
public void onDestroy() {
super.onDestroy();
if (disposable != null) {
disposable.dispose();
}
+
+ if (disposableStatistics != null) {
+ disposableStatistics.dispose();
+ }
}
@Override