Skip to content

Commit 4bc76de

Browse files
committed
android: liquidglass sliders
1 parent 4751f70 commit 4bc76de

18 files changed

Lines changed: 1318 additions & 1258 deletions

android/app/build.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,5 +62,8 @@ dependencies {
6262
implementation(libs.haze)
6363
implementation(libs.haze.materials)
6464
implementation(libs.androidx.dynamicanimation)
65+
implementation(libs.androidx.compose.foundation.layout)
6566
compileOnly(fileTree(mapOf("dir" to "libs", "include" to listOf("*.aar"))))
67+
implementation(fileTree(mapOf("dir" to "lib", "include" to listOf("*.aar"))))
68+
debugImplementation(libs.androidx.compose.ui.tooling)
6669
}

android/app/src/main/AndroidManifest.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
android:required="false" />
88

99
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
10-
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
10+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"
11+
tools:ignore="ForegroundServicesPolicy" />
1112
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" />
1213
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"
1314
tools:ignore="ProtectedPermissions" />
@@ -32,6 +33,8 @@
3233
tools:ignore="ScopedStorage" />
3334
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
3435
android:maxSdkVersion="30" />
36+
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"
37+
android:maxSdkVersion="30" />
3538
<uses-permission android:name="android.permission.LOCAL_MAC_ADDRESS"
3639
tools:ignore="ProtectedPermissions" />
3740

android/app/src/main/java/me/kavishdevar/librepods/CustomDeviceActivity.kt

Lines changed: 0 additions & 55 deletions
This file was deleted.

android/app/src/main/java/me/kavishdevar/librepods/MainActivity.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,14 @@ import com.google.accompanist.permissions.isGranted
108108
import com.google.accompanist.permissions.rememberMultiplePermissionsState
109109
import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
110110
import me.kavishdevar.librepods.constants.AirPodsNotifications
111+
import me.kavishdevar.librepods.screens.AccessibilitySettingsScreen
111112
import me.kavishdevar.librepods.screens.AirPodsSettingsScreen
112113
import me.kavishdevar.librepods.screens.AppSettingsScreen
113114
import me.kavishdevar.librepods.screens.DebugScreen
114115
import me.kavishdevar.librepods.screens.HeadTrackingScreen
115116
import me.kavishdevar.librepods.screens.HearingAidScreen
116117
import me.kavishdevar.librepods.screens.HearingAidAdjustmentsScreen
118+
import me.kavishdevar.librepods.screens.TransparencySettingsScreen
117119
import me.kavishdevar.librepods.screens.LongPress
118120
import me.kavishdevar.librepods.screens.Onboarding
119121
import me.kavishdevar.librepods.screens.RenameScreen
@@ -382,6 +384,12 @@ fun Main() {
382384
composable("onboarding") {
383385
Onboarding(navController, context)
384386
}
387+
composable("accessibility") {
388+
AccessibilitySettingsScreen(navController)
389+
}
390+
composable("transparency_customization") {
391+
TransparencySettingsScreen(navController)
392+
}
385393
composable("hearing_aid") {
386394
HearingAidScreen(navController)
387395
}

android/app/src/main/java/me/kavishdevar/librepods/composables/AccessibilitySlider.kt

Lines changed: 0 additions & 139 deletions
This file was deleted.

android/app/src/main/java/me/kavishdevar/librepods/composables/CallControlSettings.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,16 @@ import androidx.compose.ui.text.font.FontWeight
6161
import androidx.compose.ui.tooling.preview.Preview
6262
import androidx.compose.ui.unit.dp
6363
import androidx.compose.ui.unit.sp
64+
import dev.chrisbanes.haze.HazeState
65+
import dev.chrisbanes.haze.materials.ExperimentalHazeMaterialsApi
6466
import me.kavishdevar.librepods.R
6567
import me.kavishdevar.librepods.services.ServiceManager
6668
import me.kavishdevar.librepods.utils.AACPManager
6769
import kotlin.io.encoding.ExperimentalEncodingApi
6870

71+
@ExperimentalHazeMaterialsApi
6972
@Composable
70-
fun CallControlSettings() {
73+
fun CallControlSettings(hazeState: HazeState) {
7174
val isDarkTheme = isSystemInDarkTheme()
7275
val textColor = if (isDarkTheme) Color.White else Color.Black
7376
val backgroundColor = if (isDarkTheme) Color(0xFF1C1C1E) else Color(0xFFFFFFFF)
@@ -306,7 +309,8 @@ fun CallControlSettings() {
306309
0x03
307310
) else byteArrayOf(0x00, 0x02)
308311
service.aacpManager.sendControlCommand(0x24, bytes)
309-
}
312+
},
313+
hazeState = hazeState
310314
)
311315
}
312316
}
@@ -433,16 +437,18 @@ fun CallControlSettings() {
433437
0x02
434438
) else byteArrayOf(0x00, 0x03)
435439
service.aacpManager.sendControlCommand(0x24, bytes)
436-
}
440+
},
441+
hazeState = hazeState
437442
)
438443
}
439444
}
440445
}
441446
}
442447
}
443448

449+
@ExperimentalHazeMaterialsApi
444450
@Preview
445451
@Composable
446452
fun CallControlSettingsPreview() {
447-
CallControlSettings()
453+
CallControlSettings(HazeState())
448454
}

android/app/src/main/java/me/kavishdevar/librepods/composables/ConfirmationDialog.kt

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package me.kavishdevar.librepods.composables
22

33
import androidx.compose.foundation.background
4+
import androidx.compose.foundation.isSystemInDarkTheme
45
import androidx.compose.foundation.layout.Arrangement
56
import androidx.compose.foundation.layout.Box
67
import androidx.compose.foundation.layout.Column
@@ -9,6 +10,7 @@ import androidx.compose.foundation.layout.fillMaxHeight
910
import androidx.compose.foundation.layout.fillMaxWidth
1011
import androidx.compose.foundation.layout.height
1112
import androidx.compose.foundation.layout.padding
13+
import androidx.compose.foundation.layout.requiredWidthIn
1214
import androidx.compose.foundation.layout.width
1315
import androidx.compose.foundation.shape.RoundedCornerShape
1416
import androidx.compose.material3.HorizontalDivider
@@ -25,7 +27,6 @@ import androidx.compose.ui.draw.clip
2527
import androidx.compose.ui.graphics.Color
2628
import androidx.compose.ui.input.pointer.PointerEventType
2729
import androidx.compose.ui.input.pointer.pointerInput
28-
import androidx.compose.ui.platform.LocalContext
2930
import androidx.compose.ui.text.TextStyle
3031
import androidx.compose.ui.text.font.Font
3132
import androidx.compose.ui.text.font.FontFamily
@@ -51,18 +52,24 @@ fun ConfirmationDialog(
5152
onConfirm: () -> Unit,
5253
onDismiss: () -> Unit = { showDialog.value = false },
5354
hazeState: HazeState,
54-
isDarkTheme: Boolean,
55-
textColor: Color,
56-
activeTrackColor: Color
5755
) {
56+
val isDarkTheme = isSystemInDarkTheme()
57+
val textColor = if (isDarkTheme) Color.White else Color.Black
58+
val accentColor = if (isDarkTheme) Color(0xFF007AFF) else Color(0xFF3C6DF5)
5859
if (showDialog.value) {
5960
Dialog(onDismissRequest = { showDialog.value = false }) {
6061
Box(
6162
modifier = Modifier
62-
.fillMaxWidth()
63-
.background(if (isDarkTheme) Color(0xFF1C1C1E).copy(alpha = 0.95f) else Color.White.copy(alpha = 0.95f), RoundedCornerShape(14.dp))
63+
.fillMaxWidth(0.75f)
64+
.requiredWidthIn(min = 200.dp, max = 360.dp)
65+
.background(Color.Transparent, RoundedCornerShape(14.dp))
6466
.clip(RoundedCornerShape(14.dp))
65-
.hazeEffect(hazeState, CupertinoMaterials.regular())
67+
.hazeEffect(
68+
hazeState,
69+
style = CupertinoMaterials.regular(
70+
containerColor = if (isDarkTheme) Color(0xFF1C1C1E).copy(alpha = 0.95f) else Color.White.copy(alpha = 0.95f)
71+
)
72+
)
6673
) {
6774
Column(horizontalAlignment = Alignment.CenterHorizontally) {
6875
androidx.compose.foundation.layout.Spacer(modifier = Modifier.height(24.dp))
@@ -155,7 +162,7 @@ fun ConfirmationDialog(
155162
.background(if (leftPressed) pressedColor else Color.Transparent),
156163
contentAlignment = Alignment.Center
157164
) {
158-
Text(dismissText, color = activeTrackColor)
165+
Text(dismissText, color = accentColor)
159166
}
160167
Box(
161168
modifier = Modifier
@@ -170,7 +177,7 @@ fun ConfirmationDialog(
170177
.background(if (rightPressed) pressedColor else Color.Transparent),
171178
contentAlignment = Alignment.Center
172179
) {
173-
Text(confirmText, color = activeTrackColor)
180+
Text(confirmText, color = accentColor)
174181
}
175182
}
176183
}

0 commit comments

Comments
 (0)