summaryrefslogtreecommitdiff
path: root/app/src/main/java/de
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/de')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java92
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/PlaybackStatisticsFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/preferences/StatisticsFragment.java14
3 files changed, 82 insertions, 26 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
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/PlaybackStatisticsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/PlaybackStatisticsFragment.java
index 4819e0b94..208ede8cc 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/PlaybackStatisticsFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/PlaybackStatisticsFragment.java
@@ -22,7 +22,6 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import de.danoeh.antennapod.R;
-import de.danoeh.antennapod.activity.PreferenceActivity;
import de.danoeh.antennapod.adapter.PlaybackStatisticsListAdapter;
import de.danoeh.antennapod.core.dialog.ConfirmationDialog;
import de.danoeh.antennapod.core.preferences.UserPreferences;
@@ -79,7 +78,6 @@ public class PlaybackStatisticsFragment extends Fragment {
@Override
public void onStart() {
super.onStart();
- ((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.statistics_label);
refreshStatistics();
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/StatisticsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/StatisticsFragment.java
index b455a10ee..2c72ab75b 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/StatisticsFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/StatisticsFragment.java
@@ -6,6 +6,7 @@ import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
+import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
@@ -30,6 +31,7 @@ public class StatisticsFragment extends Fragment {
private TabLayout tabLayout;
private ViewPager2 viewPager;
+ private Toolbar toolbar;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -43,6 +45,7 @@ public class StatisticsFragment extends Fragment {
View rootView = inflater.inflate(R.layout.pager_fragment, container, false);
viewPager = rootView.findViewById(R.id.viewpager);
+ toolbar = rootView.findViewById(R.id.toolbar);
viewPager.setAdapter(new StatisticsPagerAdapter(this));
// Give the TabLayout the ViewPager
tabLayout = rootView.findViewById(R.id.sliding_tabs);
@@ -59,7 +62,12 @@ public class StatisticsFragment extends Fragment {
}
}).attach();
- rootView.findViewById(R.id.toolbar).setVisibility(View.GONE);
+ if (getActivity().getClass() == PreferenceActivity.class) {
+ rootView.findViewById(R.id.toolbar).setVisibility(View.GONE);
+ } else {
+ toolbar.setTitle(getString(R.string.statistics_label));
+ toolbar.setNavigationOnClickListener(v -> getParentFragmentManager().popBackStack());
+ }
return rootView;
}
@@ -67,7 +75,9 @@ public class StatisticsFragment extends Fragment {
@Override
public void onStart() {
super.onStart();
- ((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.statistics_label);
+ if (getActivity().getClass() == PreferenceActivity.class) {
+ ((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.statistics_label);
+ }
}
public static class StatisticsPagerAdapter extends FragmentStateAdapter {