From f9b413332f82873aab43066e19170dddcefa8322 Mon Sep 17 00:00:00 2001 From: Xavier Gouchet Date: Tue, 8 Oct 2019 09:43:16 +0200 Subject: Reset playback statistics Fixes #1867 --- .../fragment/preferences/StatisticsFragment.java | 52 +++++++++++++++++++--- app/src/main/res/menu/statistics.xml | 7 +++ 2 files changed, 52 insertions(+), 7 deletions(-) (limited to 'app') 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 2b5310837..2e6a3b5d5 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 @@ -3,12 +3,6 @@ package de.danoeh.antennapod.fragment.preferences; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; -import androidx.appcompat.app.AlertDialog; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; @@ -18,10 +12,23 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; import android.widget.RadioButton; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; + import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.PreferenceActivity; import de.danoeh.antennapod.adapter.StatisticsListAdapter; +import de.danoeh.antennapod.core.event.StatisticsEvent; import de.danoeh.antennapod.core.storage.DBReader; +import de.danoeh.antennapod.core.storage.DBWriter; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; @@ -52,7 +59,9 @@ public class StatisticsFragment extends Fragment { @Nullable @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View onCreateView( + @NonNull LayoutInflater inflater, + @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View root = inflater.inflate(R.layout.statistics_activity, container, false); feedStatisticsList = root.findViewById(R.id.statistics_list); progressBar = root.findViewById(R.id.progressBar); @@ -63,6 +72,11 @@ public class StatisticsFragment extends Fragment { return root; } + @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + EventBus.getDefault().register(this); + } + @Override public void onStart() { super.onStart(); @@ -70,6 +84,14 @@ public class StatisticsFragment extends Fragment { refreshStatistics(); } + @Override public void onDestroyView() { + super.onDestroyView(); + EventBus.getDefault().unregister(this); + if (disposable != null) { + disposable.dispose(); + } + } + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.statistics, menu); @@ -81,9 +103,19 @@ public class StatisticsFragment extends Fragment { selectStatisticsMode(); return true; } + if (item.getItemId() == R.id.statistics_reset) { + resetStatistics(); + return true; + } return super.onOptionsItemSelected(item); } + @Subscribe + public void onEvent(StatisticsEvent event) { + Log.d(TAG, "onEvent() called with: " + "event = [" + event + "]"); + refreshStatistics(); + } + private void selectStatisticsMode() { View contentView = View.inflate(getContext(), R.layout.statistics_mode_select_dialog, null); AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); @@ -106,6 +138,12 @@ public class StatisticsFragment extends Fragment { builder.show(); } + private void resetStatistics() { + progressBar.setVisibility(View.VISIBLE); + feedStatisticsList.setVisibility(View.GONE); + DBWriter.resetStatistics(); + } + private void refreshStatistics() { progressBar.setVisibility(View.VISIBLE); feedStatisticsList.setVisibility(View.GONE); diff --git a/app/src/main/res/menu/statistics.xml b/app/src/main/res/menu/statistics.xml index 6ecc70707..c1a545983 100644 --- a/app/src/main/res/menu/statistics.xml +++ b/app/src/main/res/menu/statistics.xml @@ -2,6 +2,13 @@ + + Date: Tue, 8 Oct 2019 19:46:35 +0200 Subject: Remove icon from "Reset statistics" option menu item --- app/src/main/res/menu/statistics.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'app') diff --git a/app/src/main/res/menu/statistics.xml b/app/src/main/res/menu/statistics.xml index c1a545983..eb2a51550 100644 --- a/app/src/main/res/menu/statistics.xml +++ b/app/src/main/res/menu/statistics.xml @@ -4,9 +4,8 @@ Date: Tue, 8 Oct 2019 19:48:26 +0200 Subject: Remove the unnecessary StatisticsEvent --- .../fragment/preferences/StatisticsFragment.java | 33 +++++++++------------- 1 file changed, 14 insertions(+), 19 deletions(-) (limited to 'app') 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 2e6a3b5d5..265fd6e5e 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 @@ -20,15 +20,12 @@ import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import org.greenrobot.eventbus.EventBus; -import org.greenrobot.eventbus.Subscribe; - import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.PreferenceActivity; import de.danoeh.antennapod.adapter.StatisticsListAdapter; -import de.danoeh.antennapod.core.event.StatisticsEvent; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; +import io.reactivex.Completable; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; @@ -72,11 +69,6 @@ public class StatisticsFragment extends Fragment { return root; } - @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - EventBus.getDefault().register(this); - } - @Override public void onStart() { super.onStart(); @@ -86,7 +78,6 @@ public class StatisticsFragment extends Fragment { @Override public void onDestroyView() { super.onDestroyView(); - EventBus.getDefault().unregister(this); if (disposable != null) { disposable.dispose(); } @@ -110,12 +101,6 @@ public class StatisticsFragment extends Fragment { return super.onOptionsItemSelected(item); } - @Subscribe - public void onEvent(StatisticsEvent event) { - Log.d(TAG, "onEvent() called with: " + "event = [" + event + "]"); - refreshStatistics(); - } - private void selectStatisticsMode() { View contentView = View.inflate(getContext(), R.layout.statistics_mode_select_dialog, null); AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); @@ -133,15 +118,25 @@ public class StatisticsFragment extends Fragment { listAdapter.setCountAll(countAll); prefs.edit().putBoolean(PREF_COUNT_ALL, countAll).apply(); refreshStatistics(); + getActivity().invalidateOptionsMenu(); }); builder.show(); } private void resetStatistics() { - progressBar.setVisibility(View.VISIBLE); - feedStatisticsList.setVisibility(View.GONE); - DBWriter.resetStatistics(); + if (!countAll) { + progressBar.setVisibility(View.VISIBLE); + feedStatisticsList.setVisibility(View.GONE); + if (disposable != null) { + disposable.dispose(); + } + + disposable = Completable.fromFuture(DBWriter.resetStatistics()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(this::refreshStatistics, error -> Log.e(TAG, Log.getStackTraceString(error))); + } } private void refreshStatistics() { -- cgit v1.2.3 From 49660946f8c1a08b25e6a98d9662b4b73ebb3026 Mon Sep 17 00:00:00 2001 From: Xavier Gouchet Date: Tue, 8 Oct 2019 19:50:22 +0200 Subject: Disable the resetStatistics item when in countAll mode --- .../de/danoeh/antennapod/fragment/preferences/StatisticsFragment.java | 1 + 1 file changed, 1 insertion(+) (limited to 'app') 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 265fd6e5e..7cc9600d9 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 @@ -86,6 +86,7 @@ public class StatisticsFragment extends Fragment { @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.statistics, menu); + menu.findItem(R.id.statistics_reset).setEnabled(!countAll); } @Override -- cgit v1.2.3 From 4f65aa015adb43db09df007168a5627874c73caf Mon Sep 17 00:00:00 2001 From: Xavier Gouchet Date: Wed, 9 Oct 2019 14:58:27 +0200 Subject: Add confirmation dialog before reseting statistics --- .../fragment/preferences/StatisticsFragment.java | 45 +++++++++++++++------- 1 file changed, 32 insertions(+), 13 deletions(-) (limited to 'app') 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 7cc9600d9..37a753d82 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 @@ -1,6 +1,7 @@ package de.danoeh.antennapod.fragment.preferences; import android.content.Context; +import android.content.DialogInterface; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; @@ -23,6 +24,7 @@ import androidx.recyclerview.widget.RecyclerView; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.PreferenceActivity; import de.danoeh.antennapod.adapter.StatisticsListAdapter; +import de.danoeh.antennapod.core.dialog.ConfirmationDialog; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; import io.reactivex.Completable; @@ -76,7 +78,8 @@ public class StatisticsFragment extends Fragment { refreshStatistics(); } - @Override public void onDestroyView() { + @Override + public void onDestroyView() { super.onDestroyView(); if (disposable != null) { disposable.dispose(); @@ -96,7 +99,7 @@ public class StatisticsFragment extends Fragment { return true; } if (item.getItemId() == R.id.statistics_reset) { - resetStatistics(); + confirmResetStatistics(); return true; } return super.onOptionsItemSelected(item); @@ -125,21 +128,37 @@ public class StatisticsFragment extends Fragment { builder.show(); } - private void resetStatistics() { + private void confirmResetStatistics() { if (!countAll) { - progressBar.setVisibility(View.VISIBLE); - feedStatisticsList.setVisibility(View.GONE); - if (disposable != null) { - disposable.dispose(); - } - - disposable = Completable.fromFuture(DBWriter.resetStatistics()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(this::refreshStatistics, error -> Log.e(TAG, Log.getStackTraceString(error))); + ConfirmationDialog conDialog = new ConfirmationDialog( + getActivity(), + R.string.statistics_reset_data_title, + R.string.statistics_reset_data_msg) { + + @Override + public void onConfirmButtonPressed( + DialogInterface dialog) { + dialog.dismiss(); + doResetStatistics(); + } + }; + conDialog.createNewDialog().show(); } } + private void doResetStatistics() { + progressBar.setVisibility(View.VISIBLE); + feedStatisticsList.setVisibility(View.GONE); + if (disposable != null) { + disposable.dispose(); + } + + disposable = Completable.fromFuture(DBWriter.resetStatistics()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(this::refreshStatistics, error -> Log.e(TAG, Log.getStackTraceString(error))); + } + private void refreshStatistics() { progressBar.setVisibility(View.VISIBLE); feedStatisticsList.setVisibility(View.GONE); -- cgit v1.2.3 From c81fcba22d1f89c00050b5a99acd30a40ef3a084 Mon Sep 17 00:00:00 2001 From: Xavier Gouchet Date: Wed, 9 Oct 2019 17:12:00 +0200 Subject: Fix formatting --- .../de/danoeh/antennapod/fragment/preferences/StatisticsFragment.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'app') 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 37a753d82..531540f8d 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 @@ -136,8 +136,7 @@ public class StatisticsFragment extends Fragment { R.string.statistics_reset_data_msg) { @Override - public void onConfirmButtonPressed( - DialogInterface dialog) { + public void onConfirmButtonPressed(DialogInterface dialog) { dialog.dismiss(); doResetStatistics(); } -- cgit v1.2.3 From 504bbb0058ec7a802e4decabda5c921c20f485d3 Mon Sep 17 00:00:00 2001 From: Xavier Gouchet Date: Mon, 14 Oct 2019 09:13:42 +0200 Subject: Remove duplicate string --- .../de/danoeh/antennapod/fragment/preferences/StatisticsFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') 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 531540f8d..7e1fdf2b9 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 @@ -132,7 +132,7 @@ public class StatisticsFragment extends Fragment { if (!countAll) { ConfirmationDialog conDialog = new ConfirmationDialog( getActivity(), - R.string.statistics_reset_data_title, + R.string.statistics_reset_data, R.string.statistics_reset_data_msg) { @Override -- cgit v1.2.3