Skip to content

Commit 681a9ec

Browse files
neobuddy89joeyhuab
authored andcommitted
SystemUI: Use proper media buttons for ongoing action chip and theme it
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
1 parent ffb6c43 commit 681a9ec

4 files changed

Lines changed: 86 additions & 30 deletions

File tree

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
SPDX-FileCopyrightText: crDroid Android Project
4+
SPDX-License-Identifier: Apache-2.0
5+
-->
6+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
7+
android:width="24dp"
8+
android:height="24dp"
9+
android:viewportWidth="960"
10+
android:viewportHeight="960"
11+
android:tint="?attr/colorControlNormal">
12+
<path
13+
android:fillColor="@android:color/white"
14+
android:pathData="M360,640L440,640L440,320L360,320L360,640ZM520,640L600,640L600,320L520,320L520,640ZM480,880Q397,880 324,848.5Q251,817 197,763Q143,709 111.5,636Q80,563 80,480Q80,397 111.5,324Q143,251 197,197Q251,143 324,111.5Q397,80 480,80Q563,80 636,111.5Q709,143 763,197Q817,251 848.5,324Q880,397 880,480Q880,563 848.5,636Q817,709 763,763Q709,817 636,848.5Q563,880 480,880Z"/>
15+
</vector>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
SPDX-FileCopyrightText: crDroid Android Project
4+
SPDX-License-Identifier: Apache-2.0
5+
-->
6+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
7+
android:width="24dp"
8+
android:height="24dp"
9+
android:viewportWidth="960"
10+
android:viewportHeight="960"
11+
android:tint="?attr/colorControlNormal">
12+
<path
13+
android:fillColor="@android:color/white"
14+
android:pathData="M660,720L660,240L740,240L740,720L660,720ZM220,720L220,240L580,480L220,720Z"/>
15+
</vector>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!--
3+
SPDX-FileCopyrightText: crDroid Android Project
4+
SPDX-License-Identifier: Apache-2.0
5+
-->
6+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
7+
android:width="24dp"
8+
android:height="24dp"
9+
android:viewportWidth="960"
10+
android:viewportHeight="960"
11+
android:tint="?attr/colorControlNormal">
12+
<path
13+
android:fillColor="@android:color/white"
14+
android:pathData="M220,720L220,240L300,240L300,720L220,720ZM740,720L380,480L740,240L740,720Z"/>
15+
</vector>

packages/SystemUI/src/com/android/systemui/statusbar/OngoingActionProgressCompose.kt

Lines changed: 41 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,10 @@ import androidx.compose.ui.graphics.StrokeCap
4747
import androidx.compose.ui.graphics.drawscope.Fill
4848
import androidx.compose.ui.graphics.drawscope.Stroke
4949
import androidx.compose.ui.input.pointer.pointerInput
50+
import androidx.compose.ui.res.painterResource
5051
import androidx.compose.ui.unit.dp
5152
import androidx.compose.ui.window.Popup
53+
import com.android.systemui.res.R
5254
import com.android.systemui.statusbar.VibratorHelper;
5355
import com.android.systemui.statusbar.notification.headsup.HeadsUpManager
5456
import com.android.systemui.statusbar.policy.KeyguardStateController
@@ -74,6 +76,7 @@ fun OngoingActionProgress(
7476
val state by controller.state.collectAsState()
7577

7678
val accentColor = MaterialTheme.colorScheme.primary
79+
val surfaceColor = MaterialTheme.colorScheme.surface
7780

7881
AnimatedVisibility(
7982
visible = state.isVisible,
@@ -206,49 +209,57 @@ fun OngoingActionProgress(
206209
.width(140.dp)
207210
.height(48.dp)
208211
.shadow(8.dp, RoundedCornerShape(24.dp))
209-
.background(Color(0xFF202020), RoundedCornerShape(24.dp))
212+
.background(surfaceColor, RoundedCornerShape(24.dp))
210213
.padding(horizontal = 16.dp),
211214
horizontalArrangement = Arrangement.SpaceBetween,
212215
verticalAlignment = Alignment.CenterVertically
213216
) {
214-
Box(modifier = Modifier.size(32.dp).clickable { controller.onMediaAction(0) }, contentAlignment = Alignment.Center) {
215-
Canvas(modifier = Modifier.size(12.dp)) {
216-
val path = Path().apply {
217-
moveTo(size.width, 0f)
218-
lineTo(0f, size.height / 2)
219-
lineTo(size.width, size.height)
220-
close()
221-
}
222-
drawPath(path, Color.White, style = Fill)
223-
drawRect(Color.White, topLeft = Offset(0f, 0f), size = Size(2.dp.toPx(), size.height))
224-
}
225-
}
217+
MediaControlButton(
218+
iconRes = R.drawable.ic_media_control_skip_previous,
219+
contentDescription = "Previous",
220+
onClick = { controller.onMediaAction(0) }
221+
)
226222

227-
Box(modifier = Modifier.size(32.dp).clickable { controller.onMediaAction(1) }, contentAlignment = Alignment.Center) {
228-
Canvas(modifier = Modifier.size(14.dp)) {
229-
drawCircle(Color.White)
230-
}
231-
}
223+
MediaControlButton(
224+
iconRes = R.drawable.ic_media_control_pause,
225+
contentDescription = "Pause",
226+
onClick = { controller.onMediaAction(1) }
227+
)
232228

233-
Box(modifier = Modifier.size(32.dp).clickable { controller.onMediaAction(2) }, contentAlignment = Alignment.Center) {
234-
Canvas(modifier = Modifier.size(12.dp)) {
235-
val path = Path().apply {
236-
moveTo(0f, 0f)
237-
lineTo(size.width, size.height / 2)
238-
lineTo(0f, size.height)
239-
close()
240-
}
241-
drawPath(path, Color.White, style = Fill)
242-
drawRect(Color.White, topLeft = Offset(size.width - 2.dp.toPx(), 0f), size = Size(2.dp.toPx(), size.height))
243-
}
244-
}
229+
MediaControlButton(
230+
iconRes = R.drawable.ic_media_control_skip_next,
231+
contentDescription = "Next",
232+
onClick = { controller.onMediaAction(2) }
233+
)
245234
}
246235
}
247236
}
248237
}
249238
}
250239
}
251240

241+
@Composable
242+
private fun MediaControlButton(
243+
iconRes: Int,
244+
contentDescription: String,
245+
onClick: () -> Unit,
246+
modifier: Modifier = Modifier
247+
) {
248+
Box(
249+
modifier = modifier
250+
.size(32.dp)
251+
.clickable(onClick = onClick),
252+
contentAlignment = Alignment.Center
253+
) {
254+
Image(
255+
painter = painterResource(id = iconRes),
256+
contentDescription = contentDescription,
257+
modifier = Modifier.size(24.dp),
258+
colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onSurface)
259+
)
260+
}
261+
}
262+
252263
/**
253264
* Compose-facing controller that adapts OnGoingActionProgressController state
254265
* into Compose-friendly ProgressState.

0 commit comments

Comments
 (0)