From d6d40b01e6246534e6b52fc4d25eb632e715785e Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Thu, 3 Sep 2020 22:58:10 +0200 Subject: [PATCH] Refactoring. Also fixes #406. --- .../fragments/IntervalsRecordedFragment.java | 10 ++------ .../fragments/IntervalsRecordingFragment.java | 10 ++------ .../viewmodels/IntervalStatisticsModel.java | 24 ++++++------------- 3 files changed, 11 insertions(+), 33 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/fragments/IntervalsRecordedFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/IntervalsRecordedFragment.java index d1ed911db..6d020db45 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/IntervalsRecordedFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/IntervalsRecordedFragment.java @@ -78,18 +78,12 @@ public class IntervalsRecordedFragment extends Fragment implements IntervalListV * @param interval intervals will split in this interval if not null. If it's null then view model will use the default one. */ @Override - public void intervalChanged(IntervalStatisticsModel.IntervalOption interval) { + public void intervalChanged(@Nullable IntervalStatisticsModel.IntervalOption interval) { if (viewModel == null || intervalListView == null) { return; } - viewModel.invalidate(); - LiveData liveData; - if (interval == null) { - liveData = viewModel.getIntervalStats(trackId); - } else { - liveData = viewModel.getIntervalStats(trackId, interval); - } + LiveData liveData = viewModel.getIntervalStats(trackId, interval); liveData.observe(getActivity(), intervalStatistics -> { if (intervalStatistics != null) { intervalListView.display(intervalStatistics.getIntervalList()); diff --git a/src/main/java/de/dennisguse/opentracks/fragments/IntervalsRecordingFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/IntervalsRecordingFragment.java index c5e5cf733..64a766ecd 100644 --- a/src/main/java/de/dennisguse/opentracks/fragments/IntervalsRecordingFragment.java +++ b/src/main/java/de/dennisguse/opentracks/fragments/IntervalsRecordingFragment.java @@ -107,18 +107,12 @@ public class IntervalsRecordingFragment extends Fragment implements IntervalList * @param interval intervals will split in this interval if not null. If it's null then view model will use the default one. */ @Override - public void intervalChanged(IntervalStatisticsModel.IntervalOption interval) { + public void intervalChanged(@Nullable IntervalStatisticsModel.IntervalOption interval) { if (viewModel == null || intervalListView == null) { return; } - viewModel.invalidate(); - LiveData liveData; - if (interval == null) { - liveData = viewModel.getIntervalStats(trackId); - } else { - liveData = viewModel.getIntervalStats(trackId, interval); - } + LiveData liveData = viewModel.getIntervalStats(trackId, interval); liveData.observe(getActivity(), intervalStatistics -> { if (intervalStatistics != null) { intervalListView.display(intervalStatistics.getIntervalList()); diff --git a/src/main/java/de/dennisguse/opentracks/viewmodels/IntervalStatisticsModel.java b/src/main/java/de/dennisguse/opentracks/viewmodels/IntervalStatisticsModel.java index 1b230e77f..212f64746 100644 --- a/src/main/java/de/dennisguse/opentracks/viewmodels/IntervalStatisticsModel.java +++ b/src/main/java/de/dennisguse/opentracks/viewmodels/IntervalStatisticsModel.java @@ -24,32 +24,22 @@ import de.dennisguse.opentracks.util.UnitConversions; public class IntervalStatisticsModel extends AndroidViewModel { private MutableLiveData intervalStats = new MutableLiveData<>(); - private IntervalOption interval = IntervalOption.OPTION_1; public IntervalStatisticsModel(@NonNull Application application) { super(application); } - public LiveData getIntervalStats(@Nullable Track.Id trackId, IntervalOption interval) { - if (trackId != null && this.interval != interval) { - this.interval = interval; - loadIntervalStats(trackId); + public LiveData getIntervalStats(@Nullable Track.Id trackId, @Nullable IntervalOption interval) { + if (interval == null) { + interval = IntervalOption.OPTION_1; + } + if (trackId != null) { + loadIntervalStats(trackId, interval); } return intervalStats; } - public LiveData getIntervalStats(Track.Id trackId) { - return getIntervalStats(trackId, interval); - } - - /** - * Call this method when you want to force the view model to re-load intervals. - */ - public void invalidate() { - intervalStats = new MutableLiveData<>(); - } - - private void loadIntervalStats(final Track.Id trackId) { + private void loadIntervalStats(final Track.Id trackId, IntervalOption interval) { new Thread(() -> { Context context = getApplication().getApplicationContext(); ContentProviderUtils contentProviderUtils = new ContentProviderUtils(context);