Skip to content

Commit

Permalink
Move statistics screens to new module
Browse files Browse the repository at this point in the history
  • Loading branch information
ByteHamster committed Feb 26, 2022
1 parent 0d7555d commit 7451da1
Show file tree
Hide file tree
Showing 36 changed files with 110 additions and 78 deletions.
1 change: 1 addition & 0 deletions app/build.gradle
Expand Up @@ -121,6 +121,7 @@ dependencies {
implementation project(':ui:app-start-intent')
implementation project(':ui:common')
implementation project(':ui:i18n')
implementation project(':ui:statistics')

annotationProcessor "androidx.annotation:annotation:$annotationVersion"
implementation "androidx.appcompat:appcompat:$appcompatVersion"
Expand Down
Expand Up @@ -35,6 +35,7 @@
import de.danoeh.antennapod.core.util.FeedItemUtil;
import de.danoeh.antennapod.core.util.download.AutoUpdateManager;
import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler;
import de.danoeh.antennapod.ui.common.PagedToolbarFragment;
import de.danoeh.antennapod.view.EmptyViewHandler;
import de.danoeh.antennapod.view.EpisodeItemListRecyclerView;
import de.danoeh.antennapod.view.viewholder.EpisodeItemViewHolder;
Expand Down
Expand Up @@ -25,6 +25,7 @@
import de.danoeh.antennapod.dialog.DownloadLogDetailsDialog;
import de.danoeh.antennapod.model.feed.FeedItem;
import de.danoeh.antennapod.model.feed.FeedMedia;
import de.danoeh.antennapod.ui.common.PagedToolbarFragment;
import de.danoeh.antennapod.view.EmptyViewHandler;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
Expand Down
Expand Up @@ -19,6 +19,7 @@

import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.ui.common.PagedToolbarFragment;

/**
* Shows the CompletedDownloadsFragment and the RunningDownloadsFragment.
Expand Down
Expand Up @@ -18,6 +18,7 @@

import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.ui.common.PagedToolbarFragment;

public class EpisodesFragment extends PagedToolbarFragment {

Expand Down
Expand Up @@ -27,6 +27,7 @@
import de.danoeh.antennapod.event.PlayerStatusEvent;
import de.danoeh.antennapod.event.UnreadItemsUpdateEvent;
import de.danoeh.antennapod.core.menuhandler.MenuItemUtils;
import de.danoeh.antennapod.ui.common.PagedToolbarFragment;
import de.danoeh.antennapod.view.EpisodeItemListRecyclerView;
import de.danoeh.antennapod.view.viewholder.EpisodeItemViewHolder;
import org.greenrobot.eventbus.EventBus;
Expand Down
Expand Up @@ -42,10 +42,11 @@
import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.core.util.IntentUtils;
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.model.feed.Feed;
import de.danoeh.antennapod.model.feed.FeedFunding;
import de.danoeh.antennapod.ui.statistics.StatisticsFragment;
import de.danoeh.antennapod.ui.statistics.feed.FeedStatisticsFragment;
import de.danoeh.antennapod.view.ToolbarIconTintManager;
import io.reactivex.Completable;
import io.reactivex.Maybe;
Expand Down
Expand Up @@ -28,6 +28,7 @@
import com.leinardi.android.speeddial.SpeedDialView;

import de.danoeh.antennapod.dialog.TagSettingsDialog;
import de.danoeh.antennapod.ui.statistics.StatisticsFragment;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
Expand Down Expand Up @@ -57,7 +58,6 @@
import de.danoeh.antennapod.dialog.RenameItemDialog;
import de.danoeh.antennapod.dialog.SubscriptionsFilterDialog;
import de.danoeh.antennapod.fragment.actions.FeedMultiSelectActionHandler;
import de.danoeh.antennapod.fragment.preferences.StatisticsFragment;
import de.danoeh.antennapod.model.feed.Feed;
import de.danoeh.antennapod.view.EmptyViewHandler;
import io.reactivex.Observable;
Expand Down
1 change: 1 addition & 0 deletions settings.gradle
Expand Up @@ -17,3 +17,4 @@ include ':ui:app-start-intent'
include ':ui:common'
include ':ui:i18n'
include ':ui:png-icons'
include ':ui:statistics'
2 changes: 2 additions & 0 deletions ui/common/build.gradle
Expand Up @@ -6,4 +6,6 @@ apply from: "../../common.gradle"
dependencies {
annotationProcessor "androidx.annotation:annotation:$annotationVersion"
implementation "androidx.appcompat:appcompat:$appcompatVersion"
implementation "androidx.viewpager2:viewpager2:$viewPager2Version"
implementation "com.google.android.material:material:$googleMaterialVersion"
}
@@ -1,4 +1,4 @@
package de.danoeh.antennapod.fragment;
package de.danoeh.antennapod.ui.common;

import androidx.annotation.NonNull;
import androidx.appcompat.widget.Toolbar;
Expand All @@ -17,7 +17,7 @@ public abstract class PagedToolbarFragment extends Fragment {
* Invalidate the toolbar menu if the current child fragment is visible.
* @param child The fragment to invalidate
*/
void invalidateOptionsMenuIfActive(@NonNull Fragment child) {
public void invalidateOptionsMenuIfActive(@NonNull Fragment child) {
Fragment visibleChild = getChildFragmentManager().findFragmentByTag("f" + viewPager.getCurrentItem());
if (visibleChild == child) {
visibleChild.onPrepareOptionsMenu(toolbar.getMenu());
Expand Down
File renamed without changes.
3 changes: 3 additions & 0 deletions ui/statistics/README.md
@@ -0,0 +1,3 @@
# :ui:statistics

This module provides the statistics screens.
31 changes: 31 additions & 0 deletions ui/statistics/build.gradle
@@ -0,0 +1,31 @@
plugins {
id("com.android.library")
}
apply from: "../../common.gradle"
apply from: "../../playFlavor.gradle"

android {
lintOptions {
disable "InvalidPeriodicWorkRequestInterval", "MissingPermission", "GradleCompatible",
"QueryPermissionsNeeded", "Overdraw", "SetTextI18n", "RtlHardcoded"
}
}

dependencies {
implementation project(":core")
implementation project(":model")
implementation project(":ui:common")

annotationProcessor "androidx.annotation:annotation:$annotationVersion"
implementation "androidx.appcompat:appcompat:$appcompatVersion"
implementation "androidx.core:core:$coreVersion"
implementation "androidx.fragment:fragment:$fragmentVersion"
implementation "androidx.recyclerview:recyclerview:$recyclerViewVersion"
implementation "androidx.viewpager2:viewpager2:$viewPager2Version"
implementation "com.google.android.material:material:$googleMaterialVersion"

implementation "com.github.bumptech.glide:glide:$glideVersion"
annotationProcessor "com.github.bumptech.glide:compiler:$glideVersion"
implementation "io.reactivex.rxjava2:rxandroid:$rxAndroidVersion"
implementation "io.reactivex.rxjava2:rxjava:$rxJavaVersion"
}
1 change: 1 addition & 0 deletions ui/statistics/src/main/AndroidManifest.xml
@@ -0,0 +1 @@
<manifest package="de.danoeh.antennapod.ui.statistics" />
@@ -1,4 +1,4 @@
package de.danoeh.antennapod.view;
package de.danoeh.antennapod.ui.statistics;

import android.annotation.SuppressLint;
import android.content.Context;
Expand Down
@@ -1,4 +1,4 @@
package de.danoeh.antennapod.fragment.preferences;
package de.danoeh.antennapod.ui.statistics;

import android.os.Bundle;
import android.view.LayoutInflater;
Expand All @@ -13,10 +13,10 @@

import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;

import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.PreferenceActivity;
import de.danoeh.antennapod.fragment.PagedToolbarFragment;
import de.danoeh.antennapod.ui.common.PagedToolbarFragment;
import de.danoeh.antennapod.ui.statistics.downloads.DownloadStatisticsFragment;
import de.danoeh.antennapod.ui.statistics.subscriptions.SubscriptionStatisticsFragment;
import de.danoeh.antennapod.ui.statistics.years.YearsStatisticsFragment;

/**
* Displays the 'statistics' screen
Expand Down Expand Up @@ -68,14 +68,6 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
return rootView;
}

@Override
public void onStart() {
super.onStart();
if (getActivity().getClass() == PreferenceActivity.class) {
((PreferenceActivity) getActivity()).getSupportActionBar().setTitle(R.string.statistics_label);
}
}

public static class StatisticsPagerAdapter extends FragmentStateAdapter {

StatisticsPagerAdapter(@NonNull Fragment fragment) {
Expand Down
@@ -1,4 +1,4 @@
package de.danoeh.antennapod.adapter;
package de.danoeh.antennapod.ui.statistics;

import android.content.Context;
import androidx.annotation.NonNull;
Expand All @@ -12,10 +12,8 @@
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;

import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.glide.ApGlideSettings;
import de.danoeh.antennapod.core.storage.StatisticsItem;
import de.danoeh.antennapod.view.PieChartView;

import java.util.List;

Expand All @@ -25,11 +23,11 @@
public abstract class StatisticsListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int TYPE_HEADER = 0;
private static final int TYPE_FEED = 1;
final Context context;
protected final Context context;
private List<StatisticsItem> statisticsData;
PieChartView.PieChartData pieChartData;
protected PieChartView.PieChartData pieChartData;

StatisticsListAdapter(Context context) {
protected StatisticsListAdapter(Context context) {
this.context = context;
}

Expand Down Expand Up @@ -98,11 +96,11 @@ static class HeaderHolder extends RecyclerView.ViewHolder {
}
}

static class StatisticsHolder extends RecyclerView.ViewHolder {
ImageView image;
TextView title;
TextView value;
TextView chip;
public static class StatisticsHolder extends RecyclerView.ViewHolder {
public ImageView image;
public TextView title;
public TextView value;
public TextView chip;

StatisticsHolder(View itemView) {
super(itemView);
Expand All @@ -113,11 +111,11 @@ static class StatisticsHolder extends RecyclerView.ViewHolder {
}
}

abstract String getHeaderCaption();
protected abstract String getHeaderCaption();

abstract String getHeaderValue();
protected abstract String getHeaderValue();

abstract PieChartView.PieChartData generateChartData(List<StatisticsItem> statisticsData);
protected abstract PieChartView.PieChartData generateChartData(List<StatisticsItem> statisticsData);

abstract void onBindFeedViewHolder(StatisticsHolder holder, StatisticsItem item);
protected abstract void onBindFeedViewHolder(StatisticsHolder holder, StatisticsItem item);
}
@@ -1,4 +1,4 @@
package de.danoeh.antennapod.fragment.preferences;
package de.danoeh.antennapod.ui.statistics.downloads;

import android.os.Bundle;
import android.util.Log;
Expand All @@ -14,9 +14,8 @@
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import de.danoeh.antennapod.R;
import de.danoeh.antennapod.adapter.DownloadStatisticsListAdapter;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.ui.statistics.R;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
Expand All @@ -39,7 +38,7 @@ public class DownloadStatisticsFragment extends Fragment {
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.statistics_activity, container, false);
View root = inflater.inflate(R.layout.statistics_fragment, container, false);
downloadStatisticsList = root.findViewById(R.id.statistics_list);
progressBar = root.findViewById(R.id.progressBar);
listAdapter = new DownloadStatisticsListAdapter(getContext());
Expand Down
@@ -1,15 +1,15 @@
package de.danoeh.antennapod.adapter;
package de.danoeh.antennapod.ui.statistics.downloads;

import android.content.Context;
import android.text.format.Formatter;
import de.danoeh.antennapod.core.storage.StatisticsItem;
import de.danoeh.antennapod.ui.statistics.PieChartView;
import de.danoeh.antennapod.ui.statistics.R;
import de.danoeh.antennapod.ui.statistics.StatisticsListAdapter;

import java.util.List;
import java.util.Locale;

import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.storage.StatisticsItem;
import de.danoeh.antennapod.view.PieChartView;

/**
* Adapter for the download statistics list.
*/
Expand All @@ -20,17 +20,17 @@ public DownloadStatisticsListAdapter(Context context) {
}

@Override
String getHeaderCaption() {
protected String getHeaderCaption() {
return context.getString(R.string.total_size_downloaded_podcasts);
}

@Override
String getHeaderValue() {
protected String getHeaderValue() {
return Formatter.formatShortFileSize(context, (long) pieChartData.getSum());
}

@Override
PieChartView.PieChartData generateChartData(List<StatisticsItem> statisticsData) {
protected PieChartView.PieChartData generateChartData(List<StatisticsItem> statisticsData) {
float[] dataValues = new float[statisticsData.size()];
for (int i = 0; i < statisticsData.size(); i++) {
StatisticsItem item = statisticsData.get(i);
Expand All @@ -40,7 +40,7 @@ PieChartView.PieChartData generateChartData(List<StatisticsItem> statisticsData)
}

@Override
void onBindFeedViewHolder(StatisticsHolder holder, StatisticsItem item) {
protected void onBindFeedViewHolder(StatisticsHolder holder, StatisticsItem item) {
holder.value.setText(Formatter.formatShortFileSize(context, item.totalDownloadSize)
+ " • "
+ String.format(Locale.getDefault(), "%d%s",
Expand Down
@@ -1,12 +1,12 @@
package de.danoeh.antennapod.fragment;
package de.danoeh.antennapod.ui.statistics.feed;

import android.app.Dialog;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.DialogFragment;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.ui.statistics.R;

public class FeedStatisticsDialogFragment extends DialogFragment {
private static final String EXTRA_FEED_ID = "de.danoeh.antennapod.extra.feedId";
Expand Down
@@ -1,4 +1,4 @@
package de.danoeh.antennapod.fragment;
package de.danoeh.antennapod.ui.statistics.feed;

import android.os.Bundle;
import android.text.format.Formatter;
Expand All @@ -11,7 +11,7 @@
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.StatisticsItem;
import de.danoeh.antennapod.core.util.Converter;
import de.danoeh.antennapod.databinding.FeedStatisticsBinding;
import de.danoeh.antennapod.ui.statistics.databinding.FeedStatisticsBinding;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
Expand Down

0 comments on commit 7451da1

Please sign in to comment.