diff --git a/android/build.gradle.kts b/android/build.gradle.kts index 8f35f4e5b..1d7011afa 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -83,7 +83,7 @@ dependencies { implementation(libs.koin.core) implementation(libs.koin.android) implementation(libs.kotlinx.datetime) - implementation(libs.accompanist.coil) + implementation(libs.coil.compose) implementation(libs.accompanist.navigationAnimation) implementation(platform(libs.firebase.bom)) implementation(libs.firebase.analytics) diff --git a/android/src/main/res/drawable/baseline_sentiment_satisfied_24.xml b/android/src/main/res/drawable/baseline_sentiment_satisfied_24.xml deleted file mode 100755 index df46cd46d..000000000 --- a/android/src/main/res/drawable/baseline_sentiment_satisfied_24.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/android/src/main/res/drawable/baseline_sentiment_satisfied_alt_24.xml b/android/src/main/res/drawable/baseline_sentiment_satisfied_alt_24.xml deleted file mode 100755 index 50f2eb1da..000000000 --- a/android/src/main/res/drawable/baseline_sentiment_satisfied_alt_24.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - diff --git a/android/src/main/res/drawable/baseline_sentiment_very_dissatisfied_24.xml b/android/src/main/res/drawable/baseline_sentiment_very_dissatisfied_24.xml deleted file mode 100755 index 0acea2e57..000000000 --- a/android/src/main/res/drawable/baseline_sentiment_very_dissatisfied_24.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/android/src/main/res/drawable/ic_baseline_add_24.xml b/android/src/main/res/drawable/ic_baseline_add_24.xml deleted file mode 100644 index eb232541d..000000000 --- a/android/src/main/res/drawable/ic_baseline_add_24.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/android/src/main/res/drawable/ic_baseline_arrow_back_24.xml b/android/src/main/res/drawable/ic_baseline_arrow_back_24.xml deleted file mode 100644 index 2a31b2ef3..000000000 --- a/android/src/main/res/drawable/ic_baseline_arrow_back_24.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/android/src/main/res/drawable/ic_baseline_calendar_today_24.xml b/android/src/main/res/drawable/ic_baseline_calendar_today_24.xml deleted file mode 100644 index 1cf969c70..000000000 --- a/android/src/main/res/drawable/ic_baseline_calendar_today_24.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/android/src/main/res/drawable/ic_baseline_check_24.xml b/android/src/main/res/drawable/ic_baseline_check_24.xml deleted file mode 100644 index 0432fa69b..000000000 --- a/android/src/main/res/drawable/ic_baseline_check_24.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/android/src/main/res/drawable/ic_baseline_feedback_24.xml b/android/src/main/res/drawable/ic_baseline_feedback_24.xml deleted file mode 100755 index 4dfcdda51..000000000 --- a/android/src/main/res/drawable/ic_baseline_feedback_24.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/android/src/main/res/drawable/ic_baseline_person_24.xml b/android/src/main/res/drawable/ic_baseline_person_24.xml deleted file mode 100644 index 6bdced2dc..000000000 --- a/android/src/main/res/drawable/ic_baseline_person_24.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/android/src/main/res/drawable/ic_description_black_24dp.xml b/android/src/main/res/drawable/ic_description_black_24dp.xml deleted file mode 100644 index 38c33351c..000000000 --- a/android/src/main/res/drawable/ic_description_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/android/src/main/res/drawable/icon_company.xml b/android/src/main/res/drawable/icon_company.xml deleted file mode 100644 index 8924cc83f..000000000 --- a/android/src/main/res/drawable/icon_company.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/android/src/main/res/drawable/icon_profile.xml b/android/src/main/res/drawable/icon_profile.xml deleted file mode 100644 index 38c33351c..000000000 --- a/android/src/main/res/drawable/icon_profile.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/android/src/main/res/drawable/icon_website.xml b/android/src/main/res/drawable/icon_website.xml deleted file mode 100644 index d976b4244..000000000 --- a/android/src/main/res/drawable/icon_website.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/android/src/main/res/drawable/menu_info.xml b/android/src/main/res/drawable/menu_info.xml deleted file mode 100644 index ca7688031..000000000 --- a/android/src/main/res/drawable/menu_info.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/android/src/main/res/drawable/menu_my_agenda.xml b/android/src/main/res/drawable/menu_my_agenda.xml deleted file mode 100644 index d66a31a47..000000000 --- a/android/src/main/res/drawable/menu_my_agenda.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/android/src/main/res/drawable/menu_schedule.xml b/android/src/main/res/drawable/menu_schedule.xml deleted file mode 100644 index e8dad0ccf..000000000 --- a/android/src/main/res/drawable/menu_schedule.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/android/src/main/res/drawable/menu_settings.xml b/android/src/main/res/drawable/menu_settings.xml deleted file mode 100644 index f3164bc81..000000000 --- a/android/src/main/res/drawable/menu_settings.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/android/src/main/res/drawable/menu_sponsor.xml b/android/src/main/res/drawable/menu_sponsor.xml deleted file mode 100644 index 10cca1169..000000000 --- a/android/src/main/res/drawable/menu_sponsor.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/android/src/main/res/values/strings.xml b/android/src/main/res/values/strings.xml index 9a2622b30..c7f9d72c1 100644 --- a/android/src/main/res/values/strings.xml +++ b/android/src/main/res/values/strings.xml @@ -7,43 +7,6 @@ Feedback Time! Your Feedback is Requested. - Schedule Droidcon London 2023 - Session - This session hasn\'t started yet. - This session is happening now. - This session has already ended. - This session conflicts with another session in your schedule. - Do not attend - Attend - Info - Description - Speaker - Info - There are no sessions planned. - in %s - My Agenda - You are not attending any sessions. - - Sponsors - Sponsors could not be loaded. - Sponsor - Description - - Settings - Enable feedback - Enable reminders - - What did you think of \"%s\"? - (Optional) Suggest improvements - Bad - Normal - Good - Submit - Close and disable feedback - Skip feedback - - Add feedback - Change your feedback diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fb4fe50ba..003ba3f3b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -29,7 +29,6 @@ compose-compiler = "1.5.11-dev-k2.0.0-Beta4-21f5e479a96" composeNavigation = "2.7.7" compose-jb = "1.6.1" -accompanistCoil = "0.15.0" accompanistNavigationAnimation = "0.34.0" splashscreen = "1.0.1" junit = "4.13.2" @@ -45,13 +44,15 @@ android-desugaring = "2.0.4" koin = "3.5.3" uuid = "0.8.3" ktlint = "11.0.0" +coil = "3.0.0-alpha04" [libraries] +coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coil" } +coil-network = { module = "io.coil-kt.coil3:coil-network-ktor", version.ref = "coil" } sqliter = { module = "co.touchlab:sqliter-driver", version.ref = "sqliter" } compose-compiler = { module = "androidx.compose.compiler:compiler", version.ref = "compose-compiler" } androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "splashscreen" } -accompanist-coil = { module = "com.google.accompanist:accompanist-coil", version.ref = "accompanistCoil" } accompanist-navigationAnimation = { module = "com.google.accompanist:accompanist-navigation-animation", version.ref = "accompanistNavigationAnimation" } firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebase-bom" } firebase-analytics = { module = "com.google.firebase:firebase-analytics-ktx", version = "_" } diff --git a/shared-ui/build.gradle.kts b/shared-ui/build.gradle.kts index f48a1f581..d203ad906 100644 --- a/shared-ui/build.gradle.kts +++ b/shared-ui/build.gradle.kts @@ -78,6 +78,8 @@ kotlin { api(libs.kotlinx.datetime) api(libs.multiplatformSettings.core) api(libs.uuid) + implementation(libs.coil.compose) + implementation(libs.coil.network) implementation(libs.bundles.ktor.common) implementation(libs.bundles.sqldelight.common) @@ -97,9 +99,6 @@ kotlin { implementation(libs.hyperdrive.multiplatformx.api) // implementation(libs.hyperdrive.multiplatformx.compose) } - androidMain.dependencies { - implementation(libs.accompanist.coil) - } iosMain.dependencies { implementation(libs.imageLoader) } diff --git a/shared-ui/src/androidMain/kotlin/co/touchlab/droidcon/ui/util/LocalImage.jvm.kt b/shared-ui/src/androidMain/kotlin/co/touchlab/droidcon/ui/util/LocalImage.jvm.kt index 2a4e01de4..7ab278101 100644 --- a/shared-ui/src/androidMain/kotlin/co/touchlab/droidcon/ui/util/LocalImage.jvm.kt +++ b/shared-ui/src/androidMain/kotlin/co/touchlab/droidcon/ui/util/LocalImage.jvm.kt @@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Warning import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -17,7 +18,6 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource -import co.touchlab.droidcon.ui.icons.Warning import co.touchlab.droidcon.ui.theme.Dimensions // Use of the function getIdentifier is discouraged, but we need to use it since the drawable names are defined in the common code for both diff --git a/shared-ui/src/androidMain/kotlin/co/touchlab/droidcon/ui/util/RemoteImage.jvm.kt b/shared-ui/src/androidMain/kotlin/co/touchlab/droidcon/ui/util/RemoteImage.jvm.kt deleted file mode 100644 index e2bd179e4..000000000 --- a/shared-ui/src/androidMain/kotlin/co/touchlab/droidcon/ui/util/RemoteImage.jvm.kt +++ /dev/null @@ -1,30 +0,0 @@ -package co.touchlab.droidcon.ui.util // ktlint-disable filename - -import android.annotation.SuppressLint -import androidx.compose.foundation.Image -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.layout.ContentScale -import coil.annotation.ExperimentalCoilApi -import coil.compose.LocalImageLoader -import coil.compose.rememberImagePainter - -@SuppressLint("ComposableNaming") -@OptIn(ExperimentalCoilApi::class) -@Composable -internal actual fun __RemoteImage(imageUrl: String, modifier: Modifier, contentDescription: String?) { - val painter = rememberImagePainter( - data = imageUrl, - imageLoader = LocalImageLoader.current, - builder = { - placeholder(0) - } - ) - - Image( - painter = painter, - contentDescription = contentDescription, - contentScale = ContentScale.Crop, - modifier = modifier - ) -} diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/BottomNavigationView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/BottomNavigationView.kt index 6d9fe8be9..53cf5696f 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/BottomNavigationView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/BottomNavigationView.kt @@ -3,6 +3,10 @@ package co.touchlab.droidcon.ui import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.CalendarMonth +import androidx.compose.material.icons.filled.LocalFireDepartment +import androidx.compose.material.icons.filled.Schedule +import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.NavigationBar @@ -13,10 +17,6 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier -import co.touchlab.droidcon.ui.icons.CalendarMonth -import co.touchlab.droidcon.ui.icons.LocalFireDepartment -import co.touchlab.droidcon.ui.icons.Schedule -import co.touchlab.droidcon.ui.icons.Settings import co.touchlab.droidcon.ui.session.SessionListView import co.touchlab.droidcon.ui.settings.SettingsView import co.touchlab.droidcon.ui.sponsors.SponsorsView diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/FeedbackDialog.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/FeedbackDialog.kt index 884bf158d..572c89287 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/FeedbackDialog.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/FeedbackDialog.kt @@ -12,6 +12,9 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.SentimentNeutral +import androidx.compose.material.icons.filled.SentimentVeryDissatisfied +import androidx.compose.material.icons.filled.SentimentVerySatisfied import androidx.compose.material3.Card import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -28,9 +31,6 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import co.touchlab.droidcon.ui.icons.SentimentNeutral -import co.touchlab.droidcon.ui.icons.SentimentVeryDissatisfied -import co.touchlab.droidcon.ui.icons.SentimentVerySatisfied import co.touchlab.droidcon.ui.theme.Dimensions import co.touchlab.droidcon.ui.util.Dialog import co.touchlab.droidcon.ui.util.observeAsState @@ -60,7 +60,7 @@ internal fun FeedbackDialog(feedback: FeedbackDialogViewModel) { ) { val selected by feedback.observeRating.observeAsState() - FeedbackDialogViewModel.Rating.values().forEach { rating -> + FeedbackDialogViewModel.Rating.entries.forEach { rating -> val image = when (rating) { FeedbackDialogViewModel.Rating.Dissatisfied -> Icons.Default.SentimentVeryDissatisfied FeedbackDialogViewModel.Rating.Normal -> Icons.Default.SentimentNeutral @@ -84,7 +84,10 @@ internal fun FeedbackDialog(feedback: FeedbackDialogViewModel) { value = comment, onValueChange = { feedback.comment = it }, placeholder = { - Text(text = "(Optional) Suggest improvement", style = MaterialTheme.typography.bodyLarge) + Text( + text = "(Optional) Suggest improvement", + style = MaterialTheme.typography.bodyLarge + ) }, textStyle = MaterialTheme.typography.bodyLarge, modifier = Modifier @@ -108,7 +111,10 @@ internal fun FeedbackDialog(feedback: FeedbackDialogViewModel) { ) } TextButton(onClick = feedback::closeAndDisableTapped) { - Text(text = "CLOSE AND DISABLE FEEDBACK", color = MaterialTheme.colorScheme.primary) + Text( + text = "CLOSE AND DISABLE FEEDBACK", + color = MaterialTheme.colorScheme.primary + ) } TextButton(onClick = feedback::skipTapped) { Text(text = "SKIP FEEDBACK", color = MaterialTheme.colorScheme.primary) diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/MainComposeView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/MainComposeView.kt index 975d5b386..b6247827c 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/MainComposeView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/MainComposeView.kt @@ -3,10 +3,17 @@ package co.touchlab.droidcon.ui import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import co.touchlab.droidcon.ui.theme.DroidconTheme +import co.touchlab.droidcon.ui.util.dcImageLoader import co.touchlab.droidcon.viewmodel.ApplicationViewModel +import coil3.annotation.ExperimentalCoilApi +import coil3.compose.setSingletonImageLoaderFactory +@OptIn(ExperimentalCoilApi::class) @Composable internal fun MainComposeView(viewModel: ApplicationViewModel, modifier: Modifier = Modifier) { + setSingletonImageLoaderFactory { context -> + dcImageLoader(context, true) + } DroidconTheme { BottomNavigationView(viewModel = viewModel, modifier = modifier) } diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Add.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Add.kt deleted file mode 100644 index 3b18b5f28..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Add.kt +++ /dev/null @@ -1,34 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.Add: ImageVector - get() { - if (_add != null) { - return _add!! - } - _add = materialIcon(name = "Filled.Add") { - materialPath { - moveTo(19.0f, 13.0f) - horizontalLineToRelative(-6.0f) - verticalLineToRelative(6.0f) - horizontalLineToRelative(-2.0f) - verticalLineToRelative(-6.0f) - horizontalLineTo(5.0f) - verticalLineToRelative(-2.0f) - horizontalLineToRelative(6.0f) - verticalLineTo(5.0f) - horizontalLineToRelative(2.0f) - verticalLineToRelative(6.0f) - horizontalLineToRelative(6.0f) - verticalLineToRelative(2.0f) - close() - } - } - return _add!! - } - -private var _add: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Aod.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Aod.kt deleted file mode 100644 index baf75b9c7..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Aod.kt +++ /dev/null @@ -1,48 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.Aod: ImageVector - get() { - if (_aod != null) { - return _aod!! - } - _aod = materialIcon(name = "Filled.Aod") { - materialPath { - moveTo(17.0f, 1.01f) - lineTo(7.0f, 1.0f) - curveTo(5.9f, 1.0f, 5.0f, 1.9f, 5.0f, 3.0f) - verticalLineToRelative(18.0f) - curveToRelative(0.0f, 1.1f, 0.9f, 2.0f, 2.0f, 2.0f) - horizontalLineToRelative(10.0f) - curveToRelative(1.1f, 0.0f, 2.0f, -0.9f, 2.0f, -2.0f) - verticalLineTo(3.0f) - curveTo(19.0f, 1.9f, 18.1f, 1.01f, 17.0f, 1.01f) - close() - moveTo(17.0f, 18.0f) - horizontalLineTo(7.0f) - verticalLineTo(6.0f) - horizontalLineToRelative(10.0f) - verticalLineTo(18.0f) - close() - moveTo(8.0f, 10.0f) - horizontalLineToRelative(8.0f) - verticalLineToRelative(1.5f) - horizontalLineTo(8.0f) - verticalLineTo(10.0f) - close() - moveTo(9.0f, 13.0f) - horizontalLineToRelative(6.0f) - verticalLineToRelative(1.5f) - horizontalLineTo(9.0f) - verticalLineTo(13.0f) - close() - } - } - return _aod!! - } - -private var _aod: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/ArrowBack.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/ArrowBack.kt deleted file mode 100644 index dbdb6a0b3..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/ArrowBack.kt +++ /dev/null @@ -1,31 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.ArrowBack: ImageVector - get() { - if (_arrowBack != null) { - return _arrowBack!! - } - _arrowBack = materialIcon(name = "Filled.ArrowBack") { - materialPath { - moveTo(20.0f, 11.0f) - horizontalLineTo(7.83f) - lineToRelative(5.59f, -5.59f) - lineTo(12.0f, 4.0f) - lineToRelative(-8.0f, 8.0f) - lineToRelative(8.0f, 8.0f) - lineToRelative(1.41f, -1.41f) - lineTo(7.83f, 13.0f) - horizontalLineTo(20.0f) - verticalLineToRelative(-2.0f) - close() - } - } - return _arrowBack!! - } - -private var _arrowBack: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/CalendarMonth.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/CalendarMonth.kt deleted file mode 100644 index ba4c9d1f9..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/CalendarMonth.kt +++ /dev/null @@ -1,80 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.CalendarMonth: ImageVector - get() { - if (_calendarMonth != null) { - return _calendarMonth!! - } - _calendarMonth = materialIcon(name = "Filled.CalendarMonth") { - materialPath { - moveTo(19.0f, 4.0f) - horizontalLineToRelative(-1.0f) - verticalLineTo(2.0f) - horizontalLineToRelative(-2.0f) - verticalLineToRelative(2.0f) - horizontalLineTo(8.0f) - verticalLineTo(2.0f) - horizontalLineTo(6.0f) - verticalLineToRelative(2.0f) - horizontalLineTo(5.0f) - curveTo(3.89f, 4.0f, 3.01f, 4.9f, 3.01f, 6.0f) - lineTo(3.0f, 20.0f) - curveToRelative(0.0f, 1.1f, 0.89f, 2.0f, 2.0f, 2.0f) - horizontalLineToRelative(14.0f) - curveToRelative(1.1f, 0.0f, 2.0f, -0.9f, 2.0f, -2.0f) - verticalLineTo(6.0f) - curveTo(21.0f, 4.9f, 20.1f, 4.0f, 19.0f, 4.0f) - close() - moveTo(19.0f, 20.0f) - horizontalLineTo(5.0f) - verticalLineTo(10.0f) - horizontalLineToRelative(14.0f) - verticalLineTo(20.0f) - close() - moveTo(9.0f, 14.0f) - horizontalLineTo(7.0f) - verticalLineToRelative(-2.0f) - horizontalLineToRelative(2.0f) - verticalLineTo(14.0f) - close() - moveTo(13.0f, 14.0f) - horizontalLineToRelative(-2.0f) - verticalLineToRelative(-2.0f) - horizontalLineToRelative(2.0f) - verticalLineTo(14.0f) - close() - moveTo(17.0f, 14.0f) - horizontalLineToRelative(-2.0f) - verticalLineToRelative(-2.0f) - horizontalLineToRelative(2.0f) - verticalLineTo(14.0f) - close() - moveTo(9.0f, 18.0f) - horizontalLineTo(7.0f) - verticalLineToRelative(-2.0f) - horizontalLineToRelative(2.0f) - verticalLineTo(18.0f) - close() - moveTo(13.0f, 18.0f) - horizontalLineToRelative(-2.0f) - verticalLineToRelative(-2.0f) - horizontalLineToRelative(2.0f) - verticalLineTo(18.0f) - close() - moveTo(17.0f, 18.0f) - horizontalLineToRelative(-2.0f) - verticalLineToRelative(-2.0f) - horizontalLineToRelative(2.0f) - verticalLineTo(18.0f) - close() - } - } - return _calendarMonth!! - } - -private var _calendarMonth: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Check.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Check.kt deleted file mode 100644 index f1044fc0e..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Check.kt +++ /dev/null @@ -1,27 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.Check: ImageVector - get() { - if (_check != null) { - return _check!! - } - _check = materialIcon(name = "Filled.Check") { - materialPath { - moveTo(9.0f, 16.17f) - lineTo(4.83f, 12.0f) - lineToRelative(-1.42f, 1.41f) - lineTo(9.0f, 19.0f) - lineTo(21.0f, 7.0f) - lineToRelative(-1.41f, -1.41f) - close() - } - } - return _check!! - } - -private var _check: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/DateRange.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/DateRange.kt deleted file mode 100644 index 765b41d21..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/DateRange.kt +++ /dev/null @@ -1,62 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.DateRange: ImageVector - get() { - if (_dateRange != null) { - return _dateRange!! - } - _dateRange = materialIcon(name = "Filled.DateRange") { - materialPath { - moveTo(9.0f, 11.0f) - lineTo(7.0f, 11.0f) - verticalLineToRelative(2.0f) - horizontalLineToRelative(2.0f) - verticalLineToRelative(-2.0f) - close() - moveTo(13.0f, 11.0f) - horizontalLineToRelative(-2.0f) - verticalLineToRelative(2.0f) - horizontalLineToRelative(2.0f) - verticalLineToRelative(-2.0f) - close() - moveTo(17.0f, 11.0f) - horizontalLineToRelative(-2.0f) - verticalLineToRelative(2.0f) - horizontalLineToRelative(2.0f) - verticalLineToRelative(-2.0f) - close() - moveTo(19.0f, 4.0f) - horizontalLineToRelative(-1.0f) - lineTo(18.0f, 2.0f) - horizontalLineToRelative(-2.0f) - verticalLineToRelative(2.0f) - lineTo(8.0f, 4.0f) - lineTo(8.0f, 2.0f) - lineTo(6.0f, 2.0f) - verticalLineToRelative(2.0f) - lineTo(5.0f, 4.0f) - curveToRelative(-1.11f, 0.0f, -1.99f, 0.9f, -1.99f, 2.0f) - lineTo(3.0f, 20.0f) - curveToRelative(0.0f, 1.1f, 0.89f, 2.0f, 2.0f, 2.0f) - horizontalLineToRelative(14.0f) - curveToRelative(1.1f, 0.0f, 2.0f, -0.9f, 2.0f, -2.0f) - lineTo(21.0f, 6.0f) - curveToRelative(0.0f, -1.1f, -0.9f, -2.0f, -2.0f, -2.0f) - close() - moveTo(19.0f, 20.0f) - lineTo(5.0f, 20.0f) - lineTo(5.0f, 9.0f) - horizontalLineToRelative(14.0f) - verticalLineToRelative(11.0f) - close() - } - } - return _dateRange!! - } - -private var _dateRange: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Description.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Description.kt deleted file mode 100644 index 9a4e5a8cf..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Description.kt +++ /dev/null @@ -1,47 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.Description: ImageVector - get() { - if (_description != null) { - return _description!! - } - _description = materialIcon(name = "Filled.Description") { - materialPath { - moveTo(14.0f, 2.0f) - lineTo(6.0f, 2.0f) - curveToRelative(-1.1f, 0.0f, -1.99f, 0.9f, -1.99f, 2.0f) - lineTo(4.0f, 20.0f) - curveToRelative(0.0f, 1.1f, 0.89f, 2.0f, 1.99f, 2.0f) - lineTo(18.0f, 22.0f) - curveToRelative(1.1f, 0.0f, 2.0f, -0.9f, 2.0f, -2.0f) - lineTo(20.0f, 8.0f) - lineToRelative(-6.0f, -6.0f) - close() - moveTo(16.0f, 18.0f) - lineTo(8.0f, 18.0f) - verticalLineToRelative(-2.0f) - horizontalLineToRelative(8.0f) - verticalLineToRelative(2.0f) - close() - moveTo(16.0f, 14.0f) - lineTo(8.0f, 14.0f) - verticalLineToRelative(-2.0f) - horizontalLineToRelative(8.0f) - verticalLineToRelative(2.0f) - close() - moveTo(13.0f, 9.0f) - lineTo(13.0f, 3.5f) - lineTo(18.5f, 9.0f) - lineTo(13.0f, 9.0f) - close() - } - } - return _description!! - } - -private var _description: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Info.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Info.kt deleted file mode 100644 index f02afde6e..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Info.kt +++ /dev/null @@ -1,38 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.Info: ImageVector - get() { - if (_info != null) { - return _info!! - } - _info = materialIcon(name = "Filled.Info") { - materialPath { - moveTo(12.0f, 2.0f) - curveTo(6.48f, 2.0f, 2.0f, 6.48f, 2.0f, 12.0f) - reflectiveCurveToRelative(4.48f, 10.0f, 10.0f, 10.0f) - reflectiveCurveToRelative(10.0f, -4.48f, 10.0f, -10.0f) - reflectiveCurveTo(17.52f, 2.0f, 12.0f, 2.0f) - close() - moveTo(13.0f, 17.0f) - horizontalLineToRelative(-2.0f) - verticalLineToRelative(-6.0f) - horizontalLineToRelative(2.0f) - verticalLineToRelative(6.0f) - close() - moveTo(13.0f, 9.0f) - horizontalLineToRelative(-2.0f) - lineTo(11.0f, 7.0f) - horizontalLineToRelative(2.0f) - verticalLineToRelative(2.0f) - close() - } - } - return _info!! - } - -private var _info: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Language.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Language.kt deleted file mode 100644 index 878fc25d8..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Language.kt +++ /dev/null @@ -1,80 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.Language: ImageVector - get() { - if (_language != null) { - return _language!! - } - _language = materialIcon(name = "Filled.Language") { - materialPath { - moveTo(11.99f, 2.0f) - curveTo(6.47f, 2.0f, 2.0f, 6.48f, 2.0f, 12.0f) - reflectiveCurveToRelative(4.47f, 10.0f, 9.99f, 10.0f) - curveTo(17.52f, 22.0f, 22.0f, 17.52f, 22.0f, 12.0f) - reflectiveCurveTo(17.52f, 2.0f, 11.99f, 2.0f) - close() - moveTo(18.92f, 8.0f) - horizontalLineToRelative(-2.95f) - curveToRelative(-0.32f, -1.25f, -0.78f, -2.45f, -1.38f, -3.56f) - curveToRelative(1.84f, 0.63f, 3.37f, 1.91f, 4.33f, 3.56f) - close() - moveTo(12.0f, 4.04f) - curveToRelative(0.83f, 1.2f, 1.48f, 2.53f, 1.91f, 3.96f) - horizontalLineToRelative(-3.82f) - curveToRelative(0.43f, -1.43f, 1.08f, -2.76f, 1.91f, -3.96f) - close() - moveTo(4.26f, 14.0f) - curveTo(4.1f, 13.36f, 4.0f, 12.69f, 4.0f, 12.0f) - reflectiveCurveToRelative(0.1f, -1.36f, 0.26f, -2.0f) - horizontalLineToRelative(3.38f) - curveToRelative(-0.08f, 0.66f, -0.14f, 1.32f, -0.14f, 2.0f) - curveToRelative(0.0f, 0.68f, 0.06f, 1.34f, 0.14f, 2.0f) - lineTo(4.26f, 14.0f) - close() - moveTo(5.08f, 16.0f) - horizontalLineToRelative(2.95f) - curveToRelative(0.32f, 1.25f, 0.78f, 2.45f, 1.38f, 3.56f) - curveToRelative(-1.84f, -0.63f, -3.37f, -1.9f, -4.33f, -3.56f) - close() - moveTo(8.03f, 8.0f) - lineTo(5.08f, 8.0f) - curveToRelative(0.96f, -1.66f, 2.49f, -2.93f, 4.33f, -3.56f) - curveTo(8.81f, 5.55f, 8.35f, 6.75f, 8.03f, 8.0f) - close() - moveTo(12.0f, 19.96f) - curveToRelative(-0.83f, -1.2f, -1.48f, -2.53f, -1.91f, -3.96f) - horizontalLineToRelative(3.82f) - curveToRelative(-0.43f, 1.43f, -1.08f, 2.76f, -1.91f, 3.96f) - close() - moveTo(14.34f, 14.0f) - lineTo(9.66f, 14.0f) - curveToRelative(-0.09f, -0.66f, -0.16f, -1.32f, -0.16f, -2.0f) - curveToRelative(0.0f, -0.68f, 0.07f, -1.35f, 0.16f, -2.0f) - horizontalLineToRelative(4.68f) - curveToRelative(0.09f, 0.65f, 0.16f, 1.32f, 0.16f, 2.0f) - curveToRelative(0.0f, 0.68f, -0.07f, 1.34f, -0.16f, 2.0f) - close() - moveTo(14.59f, 19.56f) - curveToRelative(0.6f, -1.11f, 1.06f, -2.31f, 1.38f, -3.56f) - horizontalLineToRelative(2.95f) - curveToRelative(-0.96f, 1.65f, -2.49f, 2.93f, -4.33f, 3.56f) - close() - moveTo(16.36f, 14.0f) - curveToRelative(0.08f, -0.66f, 0.14f, -1.32f, 0.14f, -2.0f) - curveToRelative(0.0f, -0.68f, -0.06f, -1.34f, -0.14f, -2.0f) - horizontalLineToRelative(3.38f) - curveToRelative(0.16f, 0.64f, 0.26f, 1.31f, 0.26f, 2.0f) - reflectiveCurveToRelative(-0.1f, 1.36f, -0.26f, 2.0f) - horizontalLineToRelative(-3.38f) - close() - } - } - return _language!! - } - -private var _language: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/LocalFireDepartment.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/LocalFireDepartment.kt deleted file mode 100644 index 2d597158f..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/LocalFireDepartment.kt +++ /dev/null @@ -1,38 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.LocalFireDepartment: ImageVector - get() { - if (_localFireDepartment != null) { - return _localFireDepartment!! - } - _localFireDepartment = materialIcon(name = "Filled.LocalFireDepartment") { - materialPath { - moveTo(19.48f, 12.35f) - curveToRelative(-1.57f, -4.08f, -7.16f, -4.3f, -5.81f, -10.23f) - curveToRelative(0.1f, -0.44f, -0.37f, -0.78f, -0.75f, -0.55f) - curveTo(9.29f, 3.71f, 6.68f, 8.0f, 8.87f, 13.62f) - curveToRelative(0.18f, 0.46f, -0.36f, 0.89f, -0.75f, 0.59f) - curveToRelative(-1.81f, -1.37f, -2.0f, -3.34f, -1.84f, -4.75f) - curveToRelative(0.06f, -0.52f, -0.62f, -0.77f, -0.91f, -0.34f) - curveTo(4.69f, 10.16f, 4.0f, 11.84f, 4.0f, 14.37f) - curveToRelative(0.38f, 5.6f, 5.11f, 7.32f, 6.81f, 7.54f) - curveToRelative(2.43f, 0.31f, 5.06f, -0.14f, 6.95f, -1.87f) - curveTo(19.84f, 18.11f, 20.6f, 15.03f, 19.48f, 12.35f) - close() - moveTo(10.2f, 17.38f) - curveToRelative(1.44f, -0.35f, 2.18f, -1.39f, 2.38f, -2.31f) - curveToRelative(0.33f, -1.43f, -0.96f, -2.83f, -0.09f, -5.09f) - curveToRelative(0.33f, 1.87f, 3.27f, 3.04f, 3.27f, 5.08f) - curveTo(15.84f, 17.59f, 13.1f, 19.76f, 10.2f, 17.38f) - close() - } - } - return _localFireDepartment!! - } - -private var _localFireDepartment: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/MainOutline.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/MainOutline.kt deleted file mode 100644 index 5d56f17f4..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/MainOutline.kt +++ /dev/null @@ -1,42 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.MailOutline: ImageVector - get() { - if (_mailOutline != null) { - return _mailOutline!! - } - _mailOutline = materialIcon(name = "Filled.MailOutline") { - materialPath { - moveTo(20.0f, 4.0f) - lineTo(4.0f, 4.0f) - curveToRelative(-1.1f, 0.0f, -1.99f, 0.9f, -1.99f, 2.0f) - lineTo(2.0f, 18.0f) - curveToRelative(0.0f, 1.1f, 0.9f, 2.0f, 2.0f, 2.0f) - horizontalLineToRelative(16.0f) - curveToRelative(1.1f, 0.0f, 2.0f, -0.9f, 2.0f, -2.0f) - lineTo(22.0f, 6.0f) - curveToRelative(0.0f, -1.1f, -0.9f, -2.0f, -2.0f, -2.0f) - close() - moveTo(20.0f, 18.0f) - lineTo(4.0f, 18.0f) - lineTo(4.0f, 8.0f) - lineToRelative(8.0f, 5.0f) - lineToRelative(8.0f, -5.0f) - verticalLineToRelative(10.0f) - close() - moveTo(12.0f, 11.0f) - lineTo(4.0f, 6.0f) - horizontalLineToRelative(16.0f) - lineToRelative(-8.0f, 5.0f) - close() - } - } - return _mailOutline!! - } - -private var _mailOutline: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Notifications.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Notifications.kt deleted file mode 100644 index f5b6f8f6f..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Notifications.kt +++ /dev/null @@ -1,40 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.Notifications: ImageVector - get() { - if (_notifications != null) { - return _notifications!! - } - _notifications = materialIcon(name = "Filled.Notifications") { - materialPath { - moveTo(12.0f, 22.0f) - curveToRelative(1.1f, 0.0f, 2.0f, -0.9f, 2.0f, -2.0f) - horizontalLineToRelative(-4.0f) - curveToRelative(0.0f, 1.1f, 0.89f, 2.0f, 2.0f, 2.0f) - close() - moveTo(18.0f, 16.0f) - verticalLineToRelative(-5.0f) - curveToRelative(0.0f, -3.07f, -1.64f, -5.64f, -4.5f, -6.32f) - lineTo(13.5f, 4.0f) - curveToRelative(0.0f, -0.83f, -0.67f, -1.5f, -1.5f, -1.5f) - reflectiveCurveToRelative(-1.5f, 0.67f, -1.5f, 1.5f) - verticalLineToRelative(0.68f) - curveTo(7.63f, 5.36f, 6.0f, 7.92f, 6.0f, 11.0f) - verticalLineToRelative(5.0f) - lineToRelative(-2.0f, 2.0f) - verticalLineToRelative(1.0f) - horizontalLineToRelative(16.0f) - verticalLineToRelative(-1.0f) - lineToRelative(-2.0f, -2.0f) - close() - } - } - return _notifications!! - } - -private var _notifications: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Person.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Person.kt deleted file mode 100644 index 5706c2ed1..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Person.kt +++ /dev/null @@ -1,33 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.Person: ImageVector - get() { - if (_person != null) { - return _person!! - } - _person = materialIcon(name = "Filled.Person") { - materialPath { - moveTo(12.0f, 12.0f) - curveToRelative(2.21f, 0.0f, 4.0f, -1.79f, 4.0f, -4.0f) - reflectiveCurveToRelative(-1.79f, -4.0f, -4.0f, -4.0f) - reflectiveCurveToRelative(-4.0f, 1.79f, -4.0f, 4.0f) - reflectiveCurveToRelative(1.79f, 4.0f, 4.0f, 4.0f) - close() - moveTo(12.0f, 14.0f) - curveToRelative(-2.67f, 0.0f, -8.0f, 1.34f, -8.0f, 4.0f) - verticalLineToRelative(2.0f) - horizontalLineToRelative(16.0f) - verticalLineToRelative(-2.0f) - curveToRelative(0.0f, -2.66f, -5.33f, -4.0f, -8.0f, -4.0f) - close() - } - } - return _person!! - } - -private var _person: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Schedule.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Schedule.kt deleted file mode 100644 index cf337aee6..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Schedule.kt +++ /dev/null @@ -1,41 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.Schedule: ImageVector - get() { - if (_schedule != null) { - return _schedule!! - } - _schedule = materialIcon(name = "Filled.Schedule") { - materialPath { - moveTo(11.99f, 2.0f) - curveTo(6.47f, 2.0f, 2.0f, 6.48f, 2.0f, 12.0f) - reflectiveCurveToRelative(4.47f, 10.0f, 9.99f, 10.0f) - curveTo(17.52f, 22.0f, 22.0f, 17.52f, 22.0f, 12.0f) - reflectiveCurveTo(17.52f, 2.0f, 11.99f, 2.0f) - close() - moveTo(12.0f, 20.0f) - curveToRelative(-4.42f, 0.0f, -8.0f, -3.58f, -8.0f, -8.0f) - reflectiveCurveToRelative(3.58f, -8.0f, 8.0f, -8.0f) - reflectiveCurveToRelative(8.0f, 3.58f, 8.0f, 8.0f) - reflectiveCurveToRelative(-3.58f, 8.0f, -8.0f, 8.0f) - close() - } - materialPath { - moveTo(12.5f, 7.0f) - horizontalLineTo(11.0f) - verticalLineToRelative(6.0f) - lineToRelative(5.25f, 3.15f) - lineToRelative(0.75f, -1.23f) - lineToRelative(-4.5f, -2.67f) - close() - } - } - return _schedule!! - } - -private var _schedule: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/SentientVerySatisfied.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/SentientVerySatisfied.kt deleted file mode 100644 index 3207c0d98..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/SentientVerySatisfied.kt +++ /dev/null @@ -1,49 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.SentimentVerySatisfied: ImageVector - get() { - if (_sentimentVerySatisfied != null) { - return _sentimentVerySatisfied!! - } - _sentimentVerySatisfied = materialIcon(name = "Filled.SentimentVerySatisfied") { - materialPath { - moveTo(15.5f, 9.5f) - moveToRelative(-1.5f, 0.0f) - arcToRelative(1.5f, 1.5f, 0.0f, true, true, 3.0f, 0.0f) - arcToRelative(1.5f, 1.5f, 0.0f, true, true, -3.0f, 0.0f) - } - materialPath { - moveTo(8.5f, 9.5f) - moveToRelative(-1.5f, 0.0f) - arcToRelative(1.5f, 1.5f, 0.0f, true, true, 3.0f, 0.0f) - arcToRelative(1.5f, 1.5f, 0.0f, true, true, -3.0f, 0.0f) - } - materialPath { - moveTo(11.99f, 2.0f) - curveTo(6.47f, 2.0f, 2.0f, 6.48f, 2.0f, 12.0f) - reflectiveCurveToRelative(4.47f, 10.0f, 9.99f, 10.0f) - curveTo(17.52f, 22.0f, 22.0f, 17.52f, 22.0f, 12.0f) - reflectiveCurveTo(17.52f, 2.0f, 11.99f, 2.0f) - close() - moveTo(12.0f, 20.0f) - curveToRelative(-4.42f, 0.0f, -8.0f, -3.58f, -8.0f, -8.0f) - reflectiveCurveToRelative(3.58f, -8.0f, 8.0f, -8.0f) - reflectiveCurveToRelative(8.0f, 3.58f, 8.0f, 8.0f) - reflectiveCurveToRelative(-3.58f, 8.0f, -8.0f, 8.0f) - close() - moveTo(7.0f, 14.0f) - curveToRelative(0.78f, 2.34f, 2.72f, 4.0f, 5.0f, 4.0f) - reflectiveCurveToRelative(4.22f, -1.66f, 5.0f, -4.0f) - lineTo(7.0f, 14.0f) - close() - } - } - return _sentimentVerySatisfied!! - } - -private var _sentimentVerySatisfied: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/SentimentNeutral.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/SentimentNeutral.kt deleted file mode 100644 index a70599786..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/SentimentNeutral.kt +++ /dev/null @@ -1,52 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.SentimentNeutral: ImageVector - get() { - if (_sentimentNeutral != null) { - return _sentimentNeutral!! - } - _sentimentNeutral = materialIcon(name = "Filled.SentimentNeutral") { - materialPath { - moveTo(9.0f, 15.5f) - horizontalLineToRelative(6.0f) - verticalLineToRelative(1.0f) - horizontalLineTo(9.0f) - verticalLineToRelative(-1.0f) - close() - } - materialPath { - moveTo(15.5f, 9.5f) - moveToRelative(-1.5f, 0.0f) - arcToRelative(1.5f, 1.5f, 0.0f, true, true, 3.0f, 0.0f) - arcToRelative(1.5f, 1.5f, 0.0f, true, true, -3.0f, 0.0f) - } - materialPath { - moveTo(8.5f, 9.5f) - moveToRelative(-1.5f, 0.0f) - arcToRelative(1.5f, 1.5f, 0.0f, true, true, 3.0f, 0.0f) - arcToRelative(1.5f, 1.5f, 0.0f, true, true, -3.0f, 0.0f) - } - materialPath { - moveTo(11.99f, 2.0f) - curveTo(6.47f, 2.0f, 2.0f, 6.48f, 2.0f, 12.0f) - reflectiveCurveToRelative(4.47f, 10.0f, 9.99f, 10.0f) - curveTo(17.52f, 22.0f, 22.0f, 17.52f, 22.0f, 12.0f) - reflectiveCurveTo(17.52f, 2.0f, 11.99f, 2.0f) - close() - moveTo(12.0f, 20.0f) - curveToRelative(-4.42f, 0.0f, -8.0f, -3.58f, -8.0f, -8.0f) - reflectiveCurveToRelative(3.58f, -8.0f, 8.0f, -8.0f) - reflectiveCurveToRelative(8.0f, 3.58f, 8.0f, 8.0f) - reflectiveCurveToRelative(-3.58f, 8.0f, -8.0f, 8.0f) - close() - } - } - return _sentimentNeutral!! - } - -private var _sentimentNeutral: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/SentimentVeryDissatisfied.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/SentimentVeryDissatisfied.kt deleted file mode 100644 index 9f3921eaa..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/SentimentVeryDissatisfied.kt +++ /dev/null @@ -1,52 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.SentimentVeryDissatisfied: ImageVector - get() { - if (_sentimentVeryDissatisfied != null) { - return _sentimentVeryDissatisfied!! - } - _sentimentVeryDissatisfied = materialIcon(name = "Filled.SentimentVeryDissatisfied") { - materialPath { - moveTo(15.5f, 9.5f) - moveToRelative(-1.5f, 0.0f) - arcToRelative(1.5f, 1.5f, 0.0f, true, true, 3.0f, 0.0f) - arcToRelative(1.5f, 1.5f, 0.0f, true, true, -3.0f, 0.0f) - } - materialPath { - moveTo(8.5f, 9.5f) - moveToRelative(-1.5f, 0.0f) - arcToRelative(1.5f, 1.5f, 0.0f, true, true, 3.0f, 0.0f) - arcToRelative(1.5f, 1.5f, 0.0f, true, true, -3.0f, 0.0f) - } - materialPath { - moveTo(11.99f, 2.0f) - curveTo(6.47f, 2.0f, 2.0f, 6.48f, 2.0f, 12.0f) - reflectiveCurveToRelative(4.47f, 10.0f, 9.99f, 10.0f) - curveTo(17.52f, 22.0f, 22.0f, 17.52f, 22.0f, 12.0f) - reflectiveCurveTo(17.52f, 2.0f, 11.99f, 2.0f) - close() - moveTo(12.0f, 20.0f) - curveToRelative(-4.42f, 0.0f, -8.0f, -3.58f, -8.0f, -8.0f) - reflectiveCurveToRelative(3.58f, -8.0f, 8.0f, -8.0f) - reflectiveCurveToRelative(8.0f, 3.58f, 8.0f, 8.0f) - reflectiveCurveToRelative(-3.58f, 8.0f, -8.0f, 8.0f) - close() - moveTo(12.0f, 14.0f) - curveToRelative(-2.33f, 0.0f, -4.32f, 1.45f, -5.12f, 3.5f) - horizontalLineToRelative(1.67f) - curveToRelative(0.69f, -1.19f, 1.97f, -2.0f, 3.45f, -2.0f) - reflectiveCurveToRelative(2.75f, 0.81f, 3.45f, 2.0f) - horizontalLineToRelative(1.67f) - curveToRelative(-0.8f, -2.05f, -2.79f, -3.5f, -5.12f, -3.5f) - close() - } - } - return _sentimentVeryDissatisfied!! - } - -private var _sentimentVeryDissatisfied: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Settings.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Settings.kt deleted file mode 100644 index b9efc5fba..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Settings.kt +++ /dev/null @@ -1,66 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.Settings: ImageVector - get() { - if (_settings != null) { - return _settings!! - } - _settings = materialIcon(name = "Filled.Settings") { - materialPath { - moveTo(19.14f, 12.94f) - curveToRelative(0.04f, -0.3f, 0.06f, -0.61f, 0.06f, -0.94f) - curveToRelative(0.0f, -0.32f, -0.02f, -0.64f, -0.07f, -0.94f) - lineToRelative(2.03f, -1.58f) - curveToRelative(0.18f, -0.14f, 0.23f, -0.41f, 0.12f, -0.61f) - lineToRelative(-1.92f, -3.32f) - curveToRelative(-0.12f, -0.22f, -0.37f, -0.29f, -0.59f, -0.22f) - lineToRelative(-2.39f, 0.96f) - curveToRelative(-0.5f, -0.38f, -1.03f, -0.7f, -1.62f, -0.94f) - lineTo(14.4f, 2.81f) - curveToRelative(-0.04f, -0.24f, -0.24f, -0.41f, -0.48f, -0.41f) - horizontalLineToRelative(-3.84f) - curveToRelative(-0.24f, 0.0f, -0.43f, 0.17f, -0.47f, 0.41f) - lineTo(9.25f, 5.35f) - curveTo(8.66f, 5.59f, 8.12f, 5.92f, 7.63f, 6.29f) - lineTo(5.24f, 5.33f) - curveToRelative(-0.22f, -0.08f, -0.47f, 0.0f, -0.59f, 0.22f) - lineTo(2.74f, 8.87f) - curveTo(2.62f, 9.08f, 2.66f, 9.34f, 2.86f, 9.48f) - lineToRelative(2.03f, 1.58f) - curveTo(4.84f, 11.36f, 4.8f, 11.69f, 4.8f, 12.0f) - reflectiveCurveToRelative(0.02f, 0.64f, 0.07f, 0.94f) - lineToRelative(-2.03f, 1.58f) - curveToRelative(-0.18f, 0.14f, -0.23f, 0.41f, -0.12f, 0.61f) - lineToRelative(1.92f, 3.32f) - curveToRelative(0.12f, 0.22f, 0.37f, 0.29f, 0.59f, 0.22f) - lineToRelative(2.39f, -0.96f) - curveToRelative(0.5f, 0.38f, 1.03f, 0.7f, 1.62f, 0.94f) - lineToRelative(0.36f, 2.54f) - curveToRelative(0.05f, 0.24f, 0.24f, 0.41f, 0.48f, 0.41f) - horizontalLineToRelative(3.84f) - curveToRelative(0.24f, 0.0f, 0.44f, -0.17f, 0.47f, -0.41f) - lineToRelative(0.36f, -2.54f) - curveToRelative(0.59f, -0.24f, 1.13f, -0.56f, 1.62f, -0.94f) - lineToRelative(2.39f, 0.96f) - curveToRelative(0.22f, 0.08f, 0.47f, 0.0f, 0.59f, -0.22f) - lineToRelative(1.92f, -3.32f) - curveToRelative(0.12f, -0.22f, 0.07f, -0.47f, -0.12f, -0.61f) - lineTo(19.14f, 12.94f) - close() - moveTo(12.0f, 15.6f) - curveToRelative(-1.98f, 0.0f, -3.6f, -1.62f, -3.6f, -3.6f) - reflectiveCurveToRelative(1.62f, -3.6f, 3.6f, -3.6f) - reflectiveCurveToRelative(3.6f, 1.62f, 3.6f, 3.6f) - reflectiveCurveTo(13.98f, 15.6f, 12.0f, 15.6f) - close() - } - } - return _settings!! - } - -private var _settings: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Warning.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Warning.kt deleted file mode 100644 index 80c1d391d..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/icons/Warning.kt +++ /dev/null @@ -1,37 +0,0 @@ -package co.touchlab.droidcon.ui.icons - -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.materialIcon -import androidx.compose.material.icons.materialPath -import androidx.compose.ui.graphics.vector.ImageVector - -public val Icons.Filled.Warning: ImageVector - get() { - if (_warning != null) { - return _warning!! - } - _warning = materialIcon(name = "Filled.Warning") { - materialPath { - moveTo(1.0f, 21.0f) - horizontalLineToRelative(22.0f) - lineTo(12.0f, 2.0f) - lineTo(1.0f, 21.0f) - close() - moveTo(13.0f, 18.0f) - horizontalLineToRelative(-2.0f) - verticalLineToRelative(-2.0f) - horizontalLineToRelative(2.0f) - verticalLineToRelative(2.0f) - close() - moveTo(13.0f, 14.0f) - horizontalLineToRelative(-2.0f) - verticalLineToRelative(-4.0f) - horizontalLineToRelative(2.0f) - verticalLineToRelative(4.0f) - close() - } - } - return _warning!! - } - -private var _warning: ImageVector? = null diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionDetailView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionDetailView.kt index 010c4f0dc..fd4825959 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionDetailView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionDetailView.kt @@ -15,7 +15,10 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.BookmarkAdded +import androidx.compose.material.icons.filled.Description +import androidx.compose.material.icons.filled.Info import androidx.compose.material.icons.outlined.BookmarkAdd import androidx.compose.material3.Button import androidx.compose.material3.Divider @@ -43,11 +46,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import co.touchlab.droidcon.dto.WebLink import co.touchlab.droidcon.ui.FeedbackDialog -import co.touchlab.droidcon.ui.icons.ArrowBack -import co.touchlab.droidcon.ui.icons.Description -import co.touchlab.droidcon.ui.icons.Info import co.touchlab.droidcon.ui.theme.Dimensions -import co.touchlab.droidcon.ui.util.RemoteImage +import co.touchlab.droidcon.ui.util.DcAsyncImage import co.touchlab.droidcon.ui.util.WebLinkText import co.touchlab.droidcon.ui.util.observeAsState import co.touchlab.droidcon.util.NavigationController @@ -55,6 +55,8 @@ import co.touchlab.droidcon.util.NavigationStack import co.touchlab.droidcon.viewmodel.session.SessionDetailViewModel import co.touchlab.droidcon.viewmodel.session.SpeakerListItemViewModel +private const val LOG_TAG = "SessionDetailView" + @OptIn(ExperimentalMaterial3Api::class) @Composable internal fun SessionDetailView(viewModel: SessionDetailViewModel) { @@ -75,7 +77,7 @@ internal fun SessionDetailView(viewModel: SessionDetailViewModel) { navigationIcon = { IconButton(onClick = { NavigationController.root.handleBackPress() }) { Icon( - imageVector = Icons.Default.ArrowBack, + imageVector = Icons.AutoMirrored.Default.ArrowBack, contentDescription = "Back", ) } @@ -113,7 +115,8 @@ internal fun SessionDetailView(viewModel: SessionDetailViewModel) { containerColor = MaterialTheme.colorScheme.secondaryContainer, contentColor = MaterialTheme.colorScheme.secondary ) { - val icon = if (isAttending) Icons.Default.BookmarkAdded else Icons.Outlined.BookmarkAdd + val icon = + if (isAttending) Icons.Default.BookmarkAdded else Icons.Outlined.BookmarkAdd val description = if (isAttending) { "Do not attend" } else { @@ -211,7 +214,10 @@ private fun HeaderView(title: String, locationInfo: String) { @Composable private fun InfoView(status: String) { - Row(modifier = Modifier.fillMaxWidth().padding(top = Dimensions.Padding.default), verticalAlignment = Alignment.CenterVertically) { + Row( + modifier = Modifier.fillMaxWidth().padding(top = Dimensions.Padding.default), + verticalAlignment = Alignment.CenterVertically + ) { Icon( imageVector = Icons.Default.Info, contentDescription = "Info", @@ -266,11 +272,16 @@ private fun SpeakerView(speaker: SpeakerListItemViewModel) { Row(verticalAlignment = Alignment.CenterVertically) { val imageUrl = speaker.avatarUrl?.string if (imageUrl != null) { - RemoteImage( - imageUrl = imageUrl, + DcAsyncImage( + logTag = LOG_TAG, + model = imageUrl, contentDescription = speaker.info, modifier = Modifier.width(80.dp) - .padding(start = Dimensions.Padding.default, end = Dimensions.Padding.default, top = Dimensions.Padding.half) + .padding( + start = Dimensions.Padding.default, + end = Dimensions.Padding.default, + top = Dimensions.Padding.half + ) .clip(CircleShape) .aspectRatio(1f) .background(MaterialTheme.colorScheme.primary), diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionListView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionListView.kt index 394cd392a..84653b340 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionListView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SessionListView.kt @@ -18,6 +18,7 @@ import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.DateRange import androidx.compose.material3.CenterAlignedTopAppBar import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -48,7 +49,6 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.IntSize import androidx.compose.ui.unit.dp -import co.touchlab.droidcon.ui.icons.DateRange import co.touchlab.droidcon.ui.theme.Dimensions import co.touchlab.droidcon.ui.util.observeAsState import co.touchlab.droidcon.util.NavigationStack diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SpeakerDetailView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SpeakerDetailView.kt index 332341839..bbdfbcab0 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SpeakerDetailView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/session/SpeakerDetailView.kt @@ -11,6 +11,9 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material.icons.filled.Description +import androidx.compose.material.icons.filled.Language import androidx.compose.material3.Divider import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -31,16 +34,15 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import co.touchlab.droidcon.composite.Url import co.touchlab.droidcon.dto.WebLink -import co.touchlab.droidcon.ui.icons.ArrowBack -import co.touchlab.droidcon.ui.icons.Description -import co.touchlab.droidcon.ui.icons.Language import co.touchlab.droidcon.ui.theme.Dimensions +import co.touchlab.droidcon.ui.util.DcAsyncImage import co.touchlab.droidcon.ui.util.LocalImage -import co.touchlab.droidcon.ui.util.RemoteImage import co.touchlab.droidcon.ui.util.WebLinkText import co.touchlab.droidcon.util.NavigationController import co.touchlab.droidcon.viewmodel.session.SpeakerDetailViewModel +private const val LOG_TAG = "SpeakerDetailView" + @OptIn(ExperimentalMaterial3Api::class) @Composable internal fun SpeakerDetailView(viewModel: SpeakerDetailViewModel) { @@ -53,7 +55,7 @@ internal fun SpeakerDetailView(viewModel: SpeakerDetailViewModel) { navigationIcon = { IconButton(onClick = { NavigationController.root.handleBackPress() }) { Icon( - imageVector = Icons.Default.ArrowBack, + imageVector = Icons.AutoMirrored.Default.ArrowBack, contentDescription = "Back", ) } @@ -94,14 +96,15 @@ private fun HeaderView(name: String, tagLine: String, imageUrl: Url?) { verticalAlignment = Alignment.CenterVertically, ) { if (imageUrl != null) { - RemoteImage( - imageUrl = imageUrl.string, + DcAsyncImage( + logTag = LOG_TAG, + model = imageUrl.string, contentDescription = name, modifier = Modifier .width(100.dp) .padding(Dimensions.Padding.default) .clip(CircleShape) - .aspectRatio(1f), + .aspectRatio(1f) ) } @@ -134,9 +137,10 @@ private fun SocialView(url: WebLink, iconName: String) { Row(modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically) { LocalImage( imageResourceName = iconName, + contentDescription = null, modifier = Modifier .padding(Dimensions.Padding.default) - .size(28.dp), + .size(28.dp) ) WebLinkText( text = url.link, @@ -174,7 +178,10 @@ private fun SocialView(url: WebLink, icon: ImageVector) { @Composable private fun BioView(bio: String, webLinks: List) { - Row(modifier = Modifier.fillMaxWidth().padding(vertical = Dimensions.Padding.half), verticalAlignment = Alignment.Top) { + Row( + modifier = Modifier.fillMaxWidth().padding(vertical = Dimensions.Padding.half), + verticalAlignment = Alignment.Top + ) { Icon( imageVector = Icons.Default.Description, contentDescription = null, diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/AboutView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/AboutView.kt index 4b341933b..42c403df1 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/AboutView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/AboutView.kt @@ -5,6 +5,7 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Info import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -12,7 +13,6 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontWeight -import co.touchlab.droidcon.ui.icons.Info import co.touchlab.droidcon.ui.theme.Dimensions import co.touchlab.droidcon.ui.util.LocalImage import co.touchlab.droidcon.ui.util.WebLinkText diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/SettingsView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/SettingsView.kt index 69bda6e13..b95b70f24 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/SettingsView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/settings/SettingsView.kt @@ -9,6 +9,8 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.MailOutline +import androidx.compose.material.icons.filled.Notifications import androidx.compose.material3.Divider import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -25,8 +27,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.unit.dp -import co.touchlab.droidcon.ui.icons.MailOutline -import co.touchlab.droidcon.ui.icons.Notifications import co.touchlab.droidcon.ui.theme.Dimensions import co.touchlab.droidcon.ui.util.observeAsState import co.touchlab.droidcon.viewmodel.settings.SettingsViewModel diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/sponsors/SponsorDetailView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/sponsors/SponsorDetailView.kt index 75679b3b6..2d965cf98 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/sponsors/SponsorDetailView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/sponsors/SponsorDetailView.kt @@ -14,6 +14,9 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material.icons.filled.Description +import androidx.compose.material.icons.filled.Person import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -31,18 +34,17 @@ import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import co.touchlab.droidcon.composite.Url -import co.touchlab.droidcon.ui.icons.ArrowBack -import co.touchlab.droidcon.ui.icons.Description -import co.touchlab.droidcon.ui.icons.Person import co.touchlab.droidcon.ui.session.SpeakerDetailView import co.touchlab.droidcon.ui.theme.Dimensions -import co.touchlab.droidcon.ui.util.RemoteImage +import co.touchlab.droidcon.ui.util.DcAsyncImage import co.touchlab.droidcon.ui.util.observeAsState import co.touchlab.droidcon.util.NavigationController import co.touchlab.droidcon.util.NavigationStack import co.touchlab.droidcon.viewmodel.session.SpeakerListItemViewModel import co.touchlab.droidcon.viewmodel.sponsor.SponsorDetailViewModel +private const val LOG_TAG = "SponsorDetailView" + @OptIn(ExperimentalMaterial3Api::class) @Composable internal fun SponsorDetailView(viewModel: SponsorDetailViewModel) { @@ -61,7 +63,7 @@ internal fun SponsorDetailView(viewModel: SponsorDetailViewModel) { navigationIcon = { IconButton(onClick = { NavigationController.root.handleBackPress() }) { Icon( - imageVector = Icons.Default.ArrowBack, + imageVector = Icons.AutoMirrored.Default.ArrowBack, contentDescription = "Back", ) } @@ -75,7 +77,11 @@ internal fun SponsorDetailView(viewModel: SponsorDetailViewModel) { .padding(paddingValues) .verticalScroll(scrollState), ) { - HeaderView(name = viewModel.name, groupTitle = viewModel.groupName, imageUrl = viewModel.imageUrl) + HeaderView( + name = viewModel.name, + groupTitle = viewModel.groupName, + imageUrl = viewModel.imageUrl + ) viewModel.abstract?.let { DescriptionView(description = it) @@ -124,8 +130,9 @@ private fun HeaderView(name: String, groupTitle: String, imageUrl: Url?) { } if (imageUrl != null) { - RemoteImage( - imageUrl = imageUrl.string, + DcAsyncImage( + logTag = LOG_TAG, + model = imageUrl.string, modifier = Modifier .width(120.dp) .padding(horizontal = Dimensions.Padding.default) @@ -185,18 +192,27 @@ private fun RepresentativeInfoView(profile: SpeakerListItemViewModel) { contentScale = ContentScale.Crop, modifier = Modifier .width(80.dp) - .padding(start = Dimensions.Padding.default, end = Dimensions.Padding.default, top = Dimensions.Padding.half) + .padding( + start = Dimensions.Padding.default, + end = Dimensions.Padding.default, + top = Dimensions.Padding.half + ) .clip(CircleShape) .aspectRatio(1f) .background(MaterialTheme.colorScheme.primary), ) } else { - RemoteImage( - imageUrl = imageUrl.string, + DcAsyncImage( + logTag = LOG_TAG, + model = imageUrl.string, contentDescription = profile.info, modifier = Modifier .width(80.dp) - .padding(start = Dimensions.Padding.default, end = Dimensions.Padding.default, top = Dimensions.Padding.half) + .padding( + start = Dimensions.Padding.default, + end = Dimensions.Padding.default, + top = Dimensions.Padding.half + ) .clip(CircleShape) .aspectRatio(1f) .background(MaterialTheme.colorScheme.primary), diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/sponsors/SponsorsView.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/sponsors/SponsorsView.kt index b86c64cb1..e3c98e2b0 100644 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/sponsors/SponsorsView.kt +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/sponsors/SponsorsView.kt @@ -18,6 +18,7 @@ import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.DateRange import androidx.compose.material3.Card import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon @@ -38,15 +39,16 @@ import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import co.touchlab.droidcon.ui.icons.DateRange import co.touchlab.droidcon.ui.theme.Dimensions -import co.touchlab.droidcon.ui.util.RemoteImage +import co.touchlab.droidcon.ui.util.DcAsyncImage import co.touchlab.droidcon.ui.util.observeAsState import co.touchlab.droidcon.util.NavigationStack import co.touchlab.droidcon.viewmodel.sponsor.SponsorGroupViewModel import co.touchlab.droidcon.viewmodel.sponsor.SponsorListViewModel import kotlin.math.min +private const val LOG_TAG = "SponsorsView" + @OptIn(ExperimentalMaterial3Api::class) @Composable internal fun SponsorsView(viewModel: SponsorListViewModel) { @@ -95,7 +97,10 @@ internal fun SponsorsView(viewModel: SponsorListViewModel) { @Composable private fun SponsorGroupView(sponsorGroup: SponsorGroupViewModel) { Card( - modifier = Modifier.padding(vertical = Dimensions.Padding.quarter, horizontal = Dimensions.Padding.half) + modifier = Modifier.padding( + vertical = Dimensions.Padding.quarter, + horizontal = Dimensions.Padding.half + ) ) { Column(modifier = Modifier.fillMaxWidth()) { Text( @@ -131,8 +136,9 @@ private fun SponsorGroupView(sponsorGroup: SponsorGroupViewModel) { ) { val imageUrl = sponsor.validImageUrl if (imageUrl != null) { - RemoteImage( - imageUrl = imageUrl, + DcAsyncImage( + logTag = LOG_TAG, + model = imageUrl, contentDescription = sponsor.name, ) } else { diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/util/Image.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/util/Image.kt new file mode 100644 index 000000000..117aa3cbc --- /dev/null +++ b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/util/Image.kt @@ -0,0 +1,45 @@ +package co.touchlab.droidcon.ui.util + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import co.touchlab.kermit.Logger +import coil3.ImageLoader +import coil3.PlatformContext +import coil3.compose.AsyncImage +import coil3.request.crossfade +import coil3.util.DebugLogger + +@Composable +fun DcAsyncImage( + logTag: String, + model: Any?, + contentDescription: String?, + modifier: Modifier = Modifier, +) { + AsyncImage( + modifier = modifier, + model = model, + contentDescription = contentDescription, + onError = { + Logger.e( + messageString = logTag, + throwable = it.result.throwable, + tag = "AsyncImage OnError Request = ${it.result.request}\n" + ) + }, + ) +} + +fun dcImageLoader( + context: PlatformContext, + debug: Boolean = false, +): ImageLoader { + return ImageLoader.Builder(context) + .crossfade(true) + .apply { + if (debug) { + logger(DebugLogger()) + } + } + .build() +} diff --git a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/util/RemoteImage.kt b/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/util/RemoteImage.kt deleted file mode 100644 index 0246c1101..000000000 --- a/shared-ui/src/commonMain/kotlin/co.touchlab.droidcon/ui/util/RemoteImage.kt +++ /dev/null @@ -1,12 +0,0 @@ -package co.touchlab.droidcon.ui.util - -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier - -@Composable -internal expect fun __RemoteImage(imageUrl: String, modifier: Modifier, contentDescription: String?) - -@Composable -internal fun RemoteImage(imageUrl: String, modifier: Modifier = Modifier, contentDescription: String? = null) { - __RemoteImage(imageUrl, modifier, contentDescription) -} diff --git a/shared-ui/src/iosMain/kotlin/co/touchlab/droidcon/ui/settings/PlatformSpecificSettings.kt b/shared-ui/src/iosMain/kotlin/co/touchlab/droidcon/ui/settings/PlatformSpecificSettings.kt index e76e69e55..88e5132be 100644 --- a/shared-ui/src/iosMain/kotlin/co/touchlab/droidcon/ui/settings/PlatformSpecificSettings.kt +++ b/shared-ui/src/iosMain/kotlin/co/touchlab/droidcon/ui/settings/PlatformSpecificSettings.kt @@ -1,9 +1,9 @@ package co.touchlab.droidcon.ui.settings import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Aod import androidx.compose.material3.Divider import androidx.compose.runtime.Composable -import co.touchlab.droidcon.ui.icons.Aod import co.touchlab.droidcon.viewmodel.settings.SettingsViewModel @Composable diff --git a/shared-ui/src/iosMain/kotlin/co/touchlab/droidcon/ui/util/LocalImage.kt b/shared-ui/src/iosMain/kotlin/co/touchlab/droidcon/ui/util/LocalImage.kt index 7ebac55be..75e2aad51 100644 --- a/shared-ui/src/iosMain/kotlin/co/touchlab/droidcon/ui/util/LocalImage.kt +++ b/shared-ui/src/iosMain/kotlin/co/touchlab/droidcon/ui/util/LocalImage.kt @@ -6,6 +6,7 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Warning import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text @@ -17,7 +18,6 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.painter.BitmapPainter import androidx.compose.ui.graphics.toComposeImageBitmap import androidx.compose.ui.layout.ContentScale -import co.touchlab.droidcon.ui.icons.Warning import co.touchlab.droidcon.ui.theme.Dimensions import platform.UIKit.UIImage diff --git a/shared-ui/src/iosMain/kotlin/co/touchlab/droidcon/ui/util/RemoteImage.kt b/shared-ui/src/iosMain/kotlin/co/touchlab/droidcon/ui/util/RemoteImage.kt deleted file mode 100644 index ce57c910c..000000000 --- a/shared-ui/src/iosMain/kotlin/co/touchlab/droidcon/ui/util/RemoteImage.kt +++ /dev/null @@ -1,27 +0,0 @@ -package co.touchlab.droidcon.ui.util - -import androidx.compose.foundation.Image -import androidx.compose.runtime.Composable -import androidx.compose.runtime.CompositionLocalProvider -import androidx.compose.ui.Modifier -import com.seiko.imageloader.ImageLoaderBuilder -import com.seiko.imageloader.LocalImageLoader -import com.seiko.imageloader.rememberAsyncImagePainter - -@Composable -internal actual fun __RemoteImage(imageUrl: String, modifier: Modifier, contentDescription: String?) { - CompositionLocalProvider( - LocalImageLoader provides ImageLoaderBuilder().build(), - ) { - val resource = rememberAsyncImagePainter( - url = imageUrl, - imageLoader = LocalImageLoader.current, - ) - - Image( - painter = resource, - contentDescription = contentDescription, - modifier = modifier, - ) - } -}