Skip to content

Commit b70a155

Browse files
committed
usage: display bar chart for screen time
Signed-off-by: Muntashir Al-Islam <muntashirakon@riseup.net>
1 parent a64d867 commit b70a155

10 files changed

Lines changed: 1117 additions & 48 deletions

File tree

app/src/main/java/io/github/muntashirakon/AppManager/usage/AppUsageAdapter.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,15 @@ static class ListHeaderViewHolder extends RecyclerView.ViewHolder {
4343
final MaterialTextView usageIntervalView;
4444
final MaterialButton previousButton;
4545
final MaterialButton nextButton;
46+
final BarChartView barChartView;
4647

4748
public ListHeaderViewHolder(@NonNull View itemView) {
4849
super(itemView);
4950
screenTimeView = itemView.findViewById(R.id.screen_time);
5051
usageIntervalView = itemView.findViewById(R.id.time);
5152
previousButton = itemView.findViewById(R.id.action_previous);
5253
nextButton = itemView.findViewById(R.id.action_next);
54+
barChartView = itemView.findViewById(R.id.bar_chart);
5355
}
5456
}
5557

@@ -149,6 +151,11 @@ public void onBindViewHolder(@NonNull ListHeaderViewHolder holder) {
149151
holder.nextButton.setVisibility(UsageUtils.hasNextDay(date) ? View.VISIBLE : View.INVISIBLE);
150152
holder.nextButton.setOnClickListener(v -> mActivity.viewModel.loadNext());
151153
holder.previousButton.setOnClickListener(v -> mActivity.viewModel.loadPrevious());
154+
if (intervalType == IntervalType.INTERVAL_DAILY) {
155+
UsageDataProcessor.updateChartWithHourlyAppUsage(holder.barChartView, mActivity.viewModel.getPackageUsageEntries(), date);
156+
} else {
157+
UsageDataProcessor.updateChartWithDailyAppUsage(holder.barChartView, mActivity.viewModel.getPackageUsageEntries(), date);
158+
}
152159
}
153160

154161
public void onBindViewHolder(@NonNull ListItemViewHolder holder, int position) {

app/src/main/java/io/github/muntashirakon/AppManager/usage/AppUsageStatsManager.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@ private List<PackageUsageInfo> getUsageStatsInternal(@NonNull TimeInterval inter
366366
if (wifiData.containsKey(uid)) {
367367
packageUsageInfo.wifiData = wifiData.get(uid);
368368
} else packageUsageInfo.wifiData = DataUsage.EMPTY;
369+
packageUsageInfo.entries = usage.entries;
369370
screenTimeList.add(packageUsageInfo);
370371
}
371372
return screenTimeList;

app/src/main/java/io/github/muntashirakon/AppManager/usage/AppUsageViewModel.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class AppUsageViewModel extends AndroidViewModel {
2525
private final MutableLiveData<List<PackageUsageInfo>> mPackageUsageInfoListLiveData = new MutableLiveData<>();
2626
private final MutableLiveData<PackageUsageInfo> mPackageUsageInfoLiveData = new MutableLiveData<>();
2727
private final List<PackageUsageInfo> mPackageUsageInfoList = Collections.synchronizedList(new ArrayList<>());
28+
private final List<PackageUsageInfo.Entry> mPackageUsageEntries = Collections.synchronizedList(new ArrayList<>());
2829

2930
private long mTotalScreenTime;
3031
private boolean mHasMultipleUsers;
@@ -45,6 +46,10 @@ public LiveData<PackageUsageInfo> getPackageUsageInfo() {
4546
return mPackageUsageInfoLiveData;
4647
}
4748

49+
public List<PackageUsageInfo.Entry> getPackageUsageEntries() {
50+
return mPackageUsageEntries;
51+
}
52+
4853
public void setCurrentDate(long currentDate) {
4954
mCurrentDate = currentDate;
5055
loadPackageUsageInfoList();
@@ -113,7 +118,11 @@ public void loadPackageUsageInfoList() {
113118
}
114119
mTotalScreenTime = 0;
115120
Set<Integer> users = new HashSet<>(3);
121+
mPackageUsageEntries.clear();
116122
for (PackageUsageInfo appItem : mPackageUsageInfoList) {
123+
if (appItem.entries != null) {
124+
mPackageUsageEntries.addAll(appItem.entries);
125+
}
117126
mTotalScreenTime += appItem.screenTime;
118127
users.add(appItem.userId);
119128
}

0 commit comments

Comments
 (0)