blob: 3059d7ad2a0f56241e70f05569f7f5faa4e5ae6d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
package de.danoeh.antennapod.fragment.preferences;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
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.core.storage.StatisticsItem;
import de.danoeh.antennapod.core.util.comparator.CompareCompat;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import java.util.Collections;
import java.util.List;
/**
* Displays the 'download statistics' screen
*/
public class DownloadStatisticsFragment extends Fragment {
private static final String TAG = DownloadStatisticsFragment.class.getSimpleName();
private Disposable disposable;
private RecyclerView downloadStatisticsList;
private ProgressBar progressBar;
private DownloadStatisticsListAdapter listAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.statistics_activity, container, false);
downloadStatisticsList = root.findViewById(R.id.statistics_list);
progressBar = root.findViewById(R.id.progressBar);
listAdapter = new DownloadStatisticsListAdapter(getContext());
downloadStatisticsList.setLayoutManager(new LinearLayoutManager(getContext()));
downloadStatisticsList.setAdapter(listAdapter);
return root;
}
@Override
public void onStart() {
super.onStart();
refreshDownloadStatistics();
}
private void refreshDownloadStatistics() {
progressBar.setVisibility(View.VISIBLE);
downloadStatisticsList.setVisibility(View.GONE);
loadStatistics();
}
private void loadStatistics() {
if (disposable != null) {
disposable.dispose();
}
disposable =
Observable.fromCallable(() -> {
List<StatisticsItem> statisticsData = DBReader.getStatistics();
Collections.sort(statisticsData, (item1, item2) ->
CompareCompat.compareLong(item1.totalDownloadSize, item2.totalDownloadSize));
return statisticsData;
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(result -> {
listAdapter.update(result);
progressBar.setVisibility(View.GONE);
downloadStatisticsList.setVisibility(View.VISIBLE);
}, error -> Log.e(TAG, Log.getStackTraceString(error)));
}
}
|