Skip to content

Commit 7f50494

Browse files
0xf104ashutter-catGhosutoNurKeinNeiddrkphnx
authored andcommitted
SystemUI: Ongoing action progressbar chip implementation
This commit provides an implementation of a progressbar chip in statusbar which features ongoing action progress from a notification The chip is featured to the right of default statusbar clock position, but before the icon container. The contents of chip are miniature app icon and a progress bar The implementation provided is basic and lacks customizations which are planned to be added further Idea is taken from this reddit post: https://www.reddit.com/r/NOTHING/comments/1dyuak6/nothing_os_30_images_fan_made/ @neobuddy89: * Removed opacity customization * Switch from VibrationUtils to VibratorHelper. * Renamed settings key for media progress and compact mode. * Disabled chip by default. Squashed: From: NurKeinNeid <nurkeinneid@derpfest.org> Date: Sat, 22 Feb 2025 16:14:01 +0100 Subject: SystemUI: Add ongoing action chip toggle setting [1/2] Change-Id: I2083b5184d9a8233722661e42d7d5f33876fc276 Signed-off-by: NurKeinNeid <nurkeinneid@derpfest.org> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: f104a <f104a@f104a.io> Date: Thu, 16 Jan 2025 15:57:43 +0100 Subject: SystemUI: Don't tint progressbar chip icon Change-Id: I5de1ff070e8ced513db5e4867728fcd727e5f511 Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: f104a <f104a@f104a.io> Date: Thu, 27 Feb 2025 16:17:47 +0100 Subject: SystemUI: Hide ongoing action progress chip on lockscreen Change-Id: Iace5817e4c3111d23a1c38c0707e4822ce8fd93c Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: Ghosuto <clash.raja10@gmail.com> Date: Fri, 21 Mar 2025 10:14:55 +0000 Subject: SystemUI: Add click action to status bar ongoing progress chip Signed-off-by: Ghosuto <clash.raja10@gmail.com> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: Ghosuto <clash.raja10@gmail.com> Date: Fri, 21 Mar 2025 16:25:28 +0000 Subject: SystemUI: Introduce media playback progress bar in action chip - Add support for displaying media playback progress in the status bar. - Integrate MediaSessionManagerHelper (thanks to RisingOS and AxionAOSP) to track media playback state. - Show media progress only when music/video is playing; hide during downloads. - Add gesture controls: - Single tap: stop media. - Double tap: Skip to the next track. - Long press: Open the media app. Signed-off-by: Ghosuto <clash.raja10@gmail.com> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: Ghosuto <clash.raja10@gmail.com> Date: Sat, 22 Mar 2025 08:25:06 +0000 Subject: SystemUI: Enhance media playback gestures and controls - Added swipe gestures to change tracks. - Implemented double-tap to play/pause. Signed-off-by: Ghosuto <clash.raja10@gmail.com> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: Ghosuto <clash.raja10@gmail.com> Date: Mon, 24 Mar 2025 18:54:59 +0000 Subject: [PATCH 15/31] SystemUI: Remove unused foreground drawable of ongoing chip Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: Ghosuto <clash.raja10@gmail.com> Date: Wed, 26 Mar 2025 07:58:27 +0000 Subject: [PATCH 16/31] SystemUI: Optimize code and improve Ongoingchip handling Signed-off-by: Ghosuto <clash.raja10@gmail.com> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: Ghosuto <clash.raja10@gmail.com> Date: Sun, 30 Mar 2025 19:41:23 +0000 Subject: [PATCH 17/31] SystemUI: Minor improvements in ongonig chip Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: Ghosuto <clash.raja10@gmail.com> Date: Wed, 2 Apr 2025 03:58:56 +0000 Subject: SystemUI: Increase Progress chip size Signed-off-by: Ghosuto <clash.raja10@gmail.com> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: drkphnx <dark.phnx12@gmail.com> Date: Sun, 27 Apr 2025 18:13:03 +0000 Subject: OnGoingActionProgressController: Disable media playback progress by default Signed-off-by: drkphnx <dark.phnx12@gmail.com> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: Dmitrii <bankersenator@gmail.com> Date: Thu, 8 May 2025 21:00:10 +0000 Subject: Optimize OnGoingActionProgressController - Implemented UI update debouncing (150ms) to eliminate rapid redraws - Offloaded intensive operations to background threads - Added icon caching to prevent redundant drawable creation - Split UI updates into partial refreshes - only updating what changed - Added proper memory management and resource cleanup - Improved state tracking and null safety Signed-off-by: Dmitrii <bankersenator@gmail.com> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: Dmitrii <bankersenator@gmail.com> Date: Sat, 10 May 2025 08:39:48 +0000 Subject: SystemUI: Introduce compact progress indicator style [1/2] Signed-off-by: Dmitrii <bankersenator@gmail.com> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: Dmitrii <bankersenator@gmail.com> Date: Sat, 10 May 2025 15:36:13 +0000 Subject: Progress indicator: dont track notifications when feature off Signed-off-by: Dmitrii <bankersenator@gmail.com> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: Dmitrii <bankersenator@gmail.com> Date: Sat, 24 May 2025 10:21:22 +0000 Subject: fix: add null checks for PlaybackState in media progress methods Prevents NPE during fast forward/rewind operations Signed-off-by: Dmitrii <bankersenator@gmail.com> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: NurKeinNeid <nurkeinneid@derpfest.org> Date: Mon, 26 May 2025 19:12:49 +0200 Subject: OnGoingActionProgressController: Improve thread safety and error handling - Add proper synchronization for shared state - Improve icon loading with error handling - Add executor cleanup and cache size limits Signed-off-by: NurKeinNeid <nurkeinneid@derpfest.org> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: Dmitrii <bankersenator@gmail.com> Date: Tue, 15 Jul 2025 20:35:54 +0000 Subject: SystemUI: Hide progress chip during heads-up notifications Hide the progress chip when a heads-up notification is displayed to prevent UI overlap. The controller now listens to the HeadsUpManager to determine when a HUN is pinned. Signed-off-by: Dmitrii <bankersenator@gmail.com> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: Dmitrii <bankersenator@gmail.com> Date: Mon, 22 Sep 2025 16:43:01 +0000 Subject: OnGoingActionProgressController: Fix stuck progress bar after upload/download completion Add stale progress detection and fix race conditions in notification handling Change-Id: Ia0edd27b153a7a2d46fee4560b4e8e66275f5deb Signed-off-by: Dmitrii <bankersenator@gmail.com> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: NurKeinNeid <nurkeinneid@derpfest.org> Date: Sat, 8 Nov 2025 22:50:02 +0100 Subject: SystemUI: Improve media progress tracking with timestamp updates Signed-off-by: NurKeinNeid <nurkeinneid@derpfest.org> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: Dmitrii <bankersenator@gmail.com> Date: Sat, 17 Jan 2026 19:57:55 +0100 Subject: ProgressIndicator: compose refactor Signed-off-by: Dmitrii <bankersenator@gmail.com> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> From: Dmitrii <bankersenator@gmail.com> Date: Sat, 17 Jan 2026 20:02:44 +0100 Subject: fix ongoing indicator again Signed-off-by: Dmitrii <bankersenator@gmail.com> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com> Change-Id: Ide3ff14927b314d9b988e2c24eba5345fad168aa Co-authored-by: Dmitrii <bankersenator@gmail.com> Co-authored-by: Ghosuto <clash.raja10@gmail.com> Co-authored-by: NurKeinNeid <nurkeinneid@derpfest.org> Co-authored-by: f104a <f104a@f104a.io> Co-authored-by: drkphnx <dark.phnx12@gmail.com> Co-authored-by: Pranav Vashi <neobuddy89@gmail.com> Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
1 parent 2ae765f commit 7f50494

24 files changed

Lines changed: 2277 additions & 4 deletions

core/java/android/provider/Settings.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7747,6 +7747,21 @@ public static void setShowGTalkServiceStatusForUser(ContentResolver cr, boolean
77477747
*/
77487748
public static final String CUSTOM_GRADIENT_END_COLOR = "custom_gradient_end_color";
77497749

7750+
/**
7751+
* @hide
7752+
*/
7753+
public static final String ONGOING_ACTION_CHIP = "ongoing_action_chip";
7754+
7755+
/**
7756+
* @hide
7757+
*/
7758+
public static final String ONGOING_MEDIA_PROGRESS = "ongoing_media_progress";
7759+
7760+
/**
7761+
* @hide
7762+
*/
7763+
public static final String ONGOING_COMPACT_MODE = "ongoing_compact_mode";
7764+
77507765
/**
77517766
* Keys we no longer back up under the current schema, but want to continue to
77527767
* process when restoring historical backup datasets.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<shape xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:shape="rectangle">
4+
<corners android:radius="16dp" />
5+
<solid android:color="@android:color/system_neutral1_900" />
6+
<padding android:left="8dp" android:top="8dp" android:right="8dp" android:bottom="8dp" />
7+
</shape>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<shape xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:shape="oval">
4+
<solid android:color="@color/action_chip_background_color" />
5+
</shape>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
3+
<item android:id="@android:id/background">
4+
<shape
5+
android:shape="ring"
6+
android:thicknessRatio="12"
7+
android:useLevel="false">
8+
<solid android:color="@color/progress_background_color" />
9+
</shape>
10+
</item>
11+
<item android:id="@android:id/progress">
12+
<shape
13+
android:shape="ring"
14+
android:thicknessRatio="12"
15+
android:useLevel="true">
16+
<solid android:color="@color/progress_color" />
17+
</shape>
18+
</item>
19+
</layer-list>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:width="24.0dp"
4+
android:height="24.0dp"
5+
android:viewportWidth="24.0"
6+
android:viewportHeight="24.0"
7+
android:tint="?android:attr/colorControlNormal">
8+
<path
9+
android:fillColor="#FF000000"
10+
android:pathData="M21,3V15.5A3.5,3.5 0 0,1 17.5,19A3.5,3.5 0 0,1 14,15.5A3.5,3.5 0 0,1 17.5,12C18.04,12 18.55,12.12 19,12.34V6.47L9,8.6V17.5A3.5,3.5 0 0,1 5.5,21A3.5,3.5 0 0,1 2,17.5A3.5,3.5 0 0,1 5.5,14C6.04,14 6.55,14.12 7,14.34V6L21,3Z" />
11+
</vector>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24"
5+
android:viewportHeight="24"
6+
android:tint="?android:attr/colorControlNormal">
7+
<path
8+
android:fillColor="@android:color/white"
9+
android:pathData="M8,9.86v4.28L11.03,12z"
10+
android:strokeAlpha="0.3"
11+
android:fillAlpha="0.3"/>
12+
<path
13+
android:fillColor="@android:color/white"
14+
android:pathData="M14.5,12L6,6v12l8.5,-6zM8,9.86L11.03,12 8,14.14V9.86zM16,6h2v12h-2z"/>
15+
</vector>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24"
5+
android:viewportHeight="24"
6+
android:tint="?android:attr/colorControlNormal">
7+
<path
8+
android:fillColor="@android:color/white"
9+
android:pathData="M12,4c-4.41,0 -8,3.59 -8,8s3.59,8 8,8s8,-3.59 8,-8S16.41,4 12,4zM11,16H9V8h2V16zM15,16h-2V8h2V16z"
10+
android:strokeAlpha="0.3"
11+
android:fillAlpha="0.3"/>
12+
<path
13+
android:fillColor="@android:color/white"
14+
android:pathData="M13,8h2v8h-2z"/>
15+
<path
16+
android:fillColor="@android:color/white"
17+
android:pathData="M9,8h2v8h-2z"/>
18+
<path
19+
android:fillColor="@android:color/white"
20+
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8s8,3.59 8,8S16.41,20 12,20z"/>
21+
</vector>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24"
5+
android:viewportHeight="24"
6+
android:tint="?android:attr/colorControlNormal">
7+
<path
8+
android:fillColor="@android:color/white"
9+
android:pathData="M12,20c4.41,0 8,-3.59 8,-8s-3.59,-8 -8,-8 -8,3.59 -8,8 3.59,8 8,8zM10,7.5l6,4.5 -6,4.5v-9z"
10+
android:strokeAlpha="0.3"
11+
android:fillAlpha="0.3"/>
12+
<path
13+
android:fillColor="@android:color/white"
14+
android:pathData="M12,22c5.52,0 10,-4.48 10,-10S17.52,2 12,2 2,6.48 2,12s4.48,10 10,10zM12,4c4.41,0 8,3.59 8,8s-3.59,8 -8,8 -8,-3.59 -8,-8 3.59,-8 8,-8zM10,7.5v9l6,-4.5z"/>
15+
</vector>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="24dp"
3+
android:height="24dp"
4+
android:viewportWidth="24"
5+
android:viewportHeight="24"
6+
android:tint="?attr/colorControlNormal">
7+
<path
8+
android:fillColor="@android:color/white"
9+
android:pathData="M16,14.14V9.86L12.97,12z"
10+
android:strokeAlpha="0.3"
11+
android:fillAlpha="0.3"/>
12+
<path
13+
android:fillColor="@android:color/white"
14+
android:pathData="M6,6h2v12L6,18zM18,18L18,6l-8.5,6 8.5,6zM16,14.14L12.97,12 16,9.86v4.28z"/>
15+
</vector>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<shape xmlns:android="http://schemas.android.com/apk/res/android"
3+
android:shape="rectangle">
4+
<corners android:radius="16dp" />
5+
<solid android:color="@android:color/system_neutral1_50" />
6+
<padding android:left="8dp" android:top="8dp" android:right="8dp" android:bottom="8dp" />
7+
</shape>

0 commit comments

Comments
 (0)