diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/adapter/PlaybackStatisticsListAdapter.java')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/adapter/PlaybackStatisticsListAdapter.java | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/PlaybackStatisticsListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/PlaybackStatisticsListAdapter.java new file mode 100644 index 000000000..ce6ad2f83 --- /dev/null +++ b/app/src/main/java/de/danoeh/antennapod/adapter/PlaybackStatisticsListAdapter.java @@ -0,0 +1,61 @@ +package de.danoeh.antennapod.adapter; + +import android.content.Context; +import androidx.appcompat.app.AlertDialog; + +import de.danoeh.antennapod.R; +import de.danoeh.antennapod.core.storage.DBReader; +import de.danoeh.antennapod.core.util.Converter; + +/** + * Adapter for the playback statistics list + */ +public class PlaybackStatisticsListAdapter extends StatisticsListAdapter { + + boolean countAll = true; + + public PlaybackStatisticsListAdapter(Context context) { + super(context); + } + + public void setCountAll(boolean countAll) { + this.countAll = countAll; + } + + @Override + int getHeaderCaptionResourceId() { + return R.string.total_time_listened_to_podcasts; + } + + @Override + void onBindHeaderViewHolder(HeaderHolder holder) { + long time = countAll ? statisticsData.totalTimeCountAll : statisticsData.totalTime; + holder.totalTime.setText(Converter.shortLocalizedDuration(context, time)); + float[] dataValues = new float[statisticsData.feeds.size()]; + for (int i = 0; i < statisticsData.feeds.size(); i++) { + DBReader.StatisticsItem item = statisticsData.feeds.get(i); + dataValues[i] = countAll ? item.timePlayedCountAll : item.timePlayed; + } + holder.pieChart.setData(dataValues); + } + + @Override + void onBindFeedViewHolder(StatisticsHolder holder, int position) { + DBReader.StatisticsItem statsItem = statisticsData.feeds.get(position - 1); + long time = countAll ? statsItem.timePlayedCountAll : statsItem.timePlayed; + holder.value.setText(Converter.shortLocalizedDuration(context, time)); + + holder.itemView.setOnClickListener(v -> { + AlertDialog.Builder dialog = new AlertDialog.Builder(context); + dialog.setTitle(statsItem.feed.getTitle()); + dialog.setMessage(context.getString(R.string.statistics_details_dialog, + countAll ? statsItem.episodesStartedIncludingMarked : statsItem.episodesStarted, + statsItem.episodes, Converter.shortLocalizedDuration(context, + countAll ? statsItem.timePlayedCountAll : statsItem.timePlayed), + Converter.shortLocalizedDuration(context, statsItem.time))); + dialog.setPositiveButton(android.R.string.ok, null); + dialog.show(); + }); + } + +} |