diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..7be3f878
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,7 @@
+# https://editorconfig.org/
+# This configuration is used by ktlint when spotless invokes it
+
+[*.{kt,kts}]
+ij_kotlin_allow_trailing_comma=true
+ij_kotlin_allow_trailing_comma_on_call_site=true
+ktlint_function_naming_ignore_when_annotated_with=Composable, Test
diff --git a/.run/spotlessApply.run.xml b/.run/spotlessApply.run.xml
new file mode 100644
index 00000000..6eecd0a8
--- /dev/null
+++ b/.run/spotlessApply.run.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ true
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/.run/spotlessCheck.run.xml b/.run/spotlessCheck.run.xml
new file mode 100644
index 00000000..9894de0a
--- /dev/null
+++ b/.run/spotlessCheck.run.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ true
+ false
+ false
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/sadellie/unitto/App.kt b/app/src/main/java/com/sadellie/unitto/App.kt
index a6df4a61..a8739ce5 100644
--- a/app/src/main/java/com/sadellie/unitto/App.kt
+++ b/app/src/main/java/com/sadellie/unitto/App.kt
@@ -76,14 +76,14 @@ internal fun ComponentActivity.App(prefs: AppPreferences?) {
dynamicThemeEnabled = prefs.enableDynamicTheme,
amoledThemeEnabled = prefs.enableAmoledTheme,
customColor = prefs.customColor.toColor(),
- monetMode = prefs.monetMode
+ monetMode = prefs.monetMode,
)
}
Themmo(
themmoController = themmoController,
typography = TypographySystem,
- animationSpec = tween(250)
+ animationSpec = tween(250),
) {
val backgroundColor = MaterialTheme.colorScheme.background
val isDarkThemeEnabled = remember(backgroundColor) { backgroundColor.luminance() < 0.5f }
@@ -113,9 +113,9 @@ internal fun ComponentActivity.App(prefs: AppPreferences?) {
navController = navController,
themmoController = it,
startDestination = prefs.startingScreen,
- openDrawer = { drawerScope.launch { drawerState.open() } }
+ openDrawer = { drawerScope.launch { drawerState.open() } },
)
- }
+ },
)
DisposableEffect(isDarkThemeEnabled) {
diff --git a/app/src/main/java/com/sadellie/unitto/MainActivity.kt b/app/src/main/java/com/sadellie/unitto/MainActivity.kt
index c810ef4a..79b960bb 100644
--- a/app/src/main/java/com/sadellie/unitto/MainActivity.kt
+++ b/app/src/main/java/com/sadellie/unitto/MainActivity.kt
@@ -68,7 +68,7 @@ internal class MainActivity : AppCompatActivity() {
LocalLocale provides locale,
LocalWindowSize provides calculateWindowSizeClass(this@MainActivity),
LocalNumberTypography provides numbersTypography,
- LocalHapticPreference provides (prefs?.enableVibrations ?: true)
+ LocalHapticPreference provides (prefs?.enableVibrations ?: true),
) {
App(prefs)
}
diff --git a/app/src/main/java/com/sadellie/unitto/UnittoApplication.kt b/app/src/main/java/com/sadellie/unitto/UnittoApplication.kt
index 39b84d16..fe8c19d2 100644
--- a/app/src/main/java/com/sadellie/unitto/UnittoApplication.kt
+++ b/app/src/main/java/com/sadellie/unitto/UnittoApplication.kt
@@ -22,4 +22,4 @@ import android.app.Application
import dagger.hilt.android.HiltAndroidApp
@HiltAndroidApp
-internal class UnittoApplication: Application()
+internal class UnittoApplication : Application()
diff --git a/app/src/main/java/com/sadellie/unitto/UnittoTileService.kt b/app/src/main/java/com/sadellie/unitto/UnittoTileService.kt
index 037b3678..72a140b0 100644
--- a/app/src/main/java/com/sadellie/unitto/UnittoTileService.kt
+++ b/app/src/main/java/com/sadellie/unitto/UnittoTileService.kt
@@ -18,6 +18,7 @@
package com.sadellie.unitto
+import android.annotation.SuppressLint
import android.app.PendingIntent
import android.content.Intent
import android.os.Build
@@ -26,6 +27,7 @@ import androidx.annotation.RequiresApi
@RequiresApi(Build.VERSION_CODES.N)
class UnittoTileService : TileService() {
+ @SuppressLint("StartActivityAndCollapseDeprecated")
override fun onClick() {
super.onClick()
@@ -33,7 +35,7 @@ class UnittoTileService : TileService() {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
- startActivityAndCollapse(PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE))
+ startActivityAndCollapse(PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_IMMUTABLE))
} else {
@Suppress("DEPRECATION")
startActivityAndCollapse(intent)
diff --git a/benchmark/src/main/java/com/sadellie/unitto/benchmark/StartupBaselineProfile.kt b/benchmark/src/main/java/com/sadellie/unitto/benchmark/StartupBaselineProfile.kt
index 0fb5f900..af6d9bda 100644
--- a/benchmark/src/main/java/com/sadellie/unitto/benchmark/StartupBaselineProfile.kt
+++ b/benchmark/src/main/java/com/sadellie/unitto/benchmark/StartupBaselineProfile.kt
@@ -31,7 +31,7 @@ class StartupBaselineProfile {
@Test
fun generate() = baselineProfileRule.collect(
packageName = "com.sadellie.unitto",
- includeInStartupProfile = true
+ includeInStartupProfile = true,
) {
startActivityAndWait()
device.pressBack()
diff --git a/benchmark/src/main/java/com/sadellie/unitto/benchmark/StartupBenchmark.kt b/benchmark/src/main/java/com/sadellie/unitto/benchmark/StartupBenchmark.kt
index cfef733e..ab4e30e3 100644
--- a/benchmark/src/main/java/com/sadellie/unitto/benchmark/StartupBenchmark.kt
+++ b/benchmark/src/main/java/com/sadellie/unitto/benchmark/StartupBenchmark.kt
@@ -61,7 +61,7 @@ class StartupBenchmark {
fun startupFullyPrecompiled() = startup(CompilationMode.Full())
private fun startup(
- compilationMode: CompilationMode
+ compilationMode: CompilationMode,
) = benchmarkRule.measureRepeated(
packageName = "com.sadellie.unitto",
metrics = listOf(StartupTimingMetric()),
@@ -70,7 +70,7 @@ class StartupBenchmark {
startupMode = StartupMode.COLD,
setupBlock = {
pressHome()
- }
+ },
) {
startActivityAndWait()
}
diff --git a/core/base/src/main/java/com/sadellie/unitto/core/base/OutputFormat.kt b/core/base/src/main/java/com/sadellie/unitto/core/base/OutputFormat.kt
index 120c4a33..f9753ba0 100644
--- a/core/base/src/main/java/com/sadellie/unitto/core/base/OutputFormat.kt
+++ b/core/base/src/main/java/com/sadellie/unitto/core/base/OutputFormat.kt
@@ -24,8 +24,10 @@ package com.sadellie.unitto.core.base
object OutputFormat {
// Never use engineering notation
const val PLAIN = 0
+
// Use format that a lower API returns
const val ALLOW_ENGINEERING = 1
+
// App will try it's best to use engineering notation
const val FORCE_ENGINEERING = 2
}
diff --git a/core/base/src/main/java/com/sadellie/unitto/core/base/Token.kt b/core/base/src/main/java/com/sadellie/unitto/core/base/Token.kt
index d7ed1d75..fce3c8b3 100644
--- a/core/base/src/main/java/com/sadellie/unitto/core/base/Token.kt
+++ b/core/base/src/main/java/com/sadellie/unitto/core/base/Token.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.base
@Suppress("ObjectPropertyName")
@@ -100,14 +102,14 @@ object Token {
val all by lazy {
listOf(
- arsin, arcos, actan, sin, cos, tan, log, exp, ln
+ arsin, arcos, actan, sin, cos, tan, log, exp, ln,
).sortedByDescending { it.length }
}
val allWithOpeningBracket by lazy {
listOf(
arsinBracket, arcosBracket, actanBracket, sinBracket, cosBracket, tanBracket,
- logBracket, expBracket, lnBracket
+ logBracket, expBracket, lnBracket,
)
}
}
@@ -144,7 +146,7 @@ object Token {
Operator.multiply to listOf("*", "•"),
Func.arsin to listOf("arsin"),
Func.arcos to listOf("arcos"),
- Func.actan to listOf("actan")
+ Func.actan to listOf("actan"),
)
}
}
diff --git a/core/base/src/test/java/com/sadellie/unitto/core/base/OutputFormatTest.kt b/core/base/src/test/java/com/sadellie/unitto/core/base/OutputFormatTest.kt
index 8768ffe8..65908b8d 100644
--- a/core/base/src/test/java/com/sadellie/unitto/core/base/OutputFormatTest.kt
+++ b/core/base/src/test/java/com/sadellie/unitto/core/base/OutputFormatTest.kt
@@ -42,4 +42,4 @@ class OutputFormatTest {
fun testOutputFormatForceEngineering() {
Assert.assertEquals(2, OutputFormat.FORCE_ENGINEERING)
}
-}
\ No newline at end of file
+}
diff --git a/core/base/src/test/java/com/sadellie/unitto/core/base/TokenTest.kt b/core/base/src/test/java/com/sadellie/unitto/core/base/TokenTest.kt
index 63f7fa3d..c85a3100 100644
--- a/core/base/src/test/java/com/sadellie/unitto/core/base/TokenTest.kt
+++ b/core/base/src/test/java/com/sadellie/unitto/core/base/TokenTest.kt
@@ -150,9 +150,14 @@ class TokenTest {
@Test
fun testSexyToUgly() {
listOf(
- "−", "÷", "×", "sin⁻¹", "cos⁻¹", "tan⁻¹"
+ "−",
+ "÷",
+ "×",
+ "sin⁻¹",
+ "cos⁻¹",
+ "tan⁻¹",
).forEach {
assert(it in Token.sexyToUgly.keys)
}
}
-}
\ No newline at end of file
+}
diff --git a/core/ui/src/androidTest/java/com/sadellie/unitto/core/ui/ZonedDateTimeUtilsTest.kt b/core/ui/src/androidTest/java/com/sadellie/unitto/core/ui/ZonedDateTimeUtilsTest.kt
index 2ee51684..de9de1fa 100644
--- a/core/ui/src/androidTest/java/com/sadellie/unitto/core/ui/ZonedDateTimeUtilsTest.kt
+++ b/core/ui/src/androidTest/java/com/sadellie/unitto/core/ui/ZonedDateTimeUtilsTest.kt
@@ -28,7 +28,7 @@ import java.time.ZonedDateTime
class ZonedDateTimeUtilsTest {
- @get: Rule
+ @get:Rule
val composeTestRule = createAndroidComposeRule()
@Test
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/LocalWindowSize.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/LocalWindowSize.kt
index e7684c0f..0b85834f 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/LocalWindowSize.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/LocalWindowSize.kt
@@ -83,7 +83,7 @@ fun calculateWindowSizeClass(activity: Activity): WindowSizeClass {
@Immutable
class WindowSizeClass(
val widthSizeClass: WindowWidthSizeClass,
- val heightSizeClass: WindowHeightSizeClass
+ val heightSizeClass: WindowHeightSizeClass,
) {
companion object {
/**
@@ -118,7 +118,7 @@ class WindowSizeClass(
supportedWidthSizeClasses: Set =
WindowWidthSizeClass.DefaultSizeClasses,
supportedHeightSizeClasses: Set =
- WindowHeightSizeClass.DefaultSizeClasses
+ WindowHeightSizeClass.DefaultSizeClasses,
): WindowSizeClass {
val windowWidthSizeClass =
WindowWidthSizeClass.fromWidth(size.width, density, supportedWidthSizeClasses)
@@ -225,7 +225,9 @@ value class WindowWidthSizeClass private constructor(private val value: Int) :
/** Calculates the [WindowWidthSizeClass] for a given [width] */
internal fun fromWidth(width: Dp): WindowWidthSizeClass {
return fromWidth(
- with(defaultDensity) { width.toPx() }, defaultDensity, DefaultSizeClasses
+ with(defaultDensity) { width.toPx() },
+ defaultDensity,
+ DefaultSizeClasses,
)
}
@@ -236,7 +238,7 @@ value class WindowWidthSizeClass private constructor(private val value: Int) :
internal fun fromWidth(
width: Float,
density: Density,
- supportedSizeClasses: Set
+ supportedSizeClasses: Set,
): WindowWidthSizeClass {
require(width >= 0) { "Width must not be negative" }
require(supportedSizeClasses.isNotEmpty()) { "Must support at least one size class" }
@@ -323,7 +325,9 @@ value class WindowHeightSizeClass private constructor(private val value: Int) :
/** Calculates the [WindowHeightSizeClass] for a given [height] */
internal fun fromHeight(height: Dp): WindowHeightSizeClass {
return fromHeight(
- with(defaultDensity) { height.toPx() }, defaultDensity, DefaultSizeClasses
+ with(defaultDensity) { height.toPx() },
+ defaultDensity,
+ DefaultSizeClasses,
)
}
@@ -334,7 +338,7 @@ value class WindowHeightSizeClass private constructor(private val value: Int) :
internal fun fromHeight(
height: Float,
density: Density,
- supportedSizeClasses: Set
+ supportedSizeClasses: Set,
): WindowHeightSizeClass {
require(height >= 0) { "Width must not be negative" }
require(supportedSizeClasses.isNotEmpty()) { "Must support at least one size class" }
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/NavGraphBuilderExtensions.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/NavGraphBuilderExtensions.kt
index 93f79337..280d7365 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/NavGraphBuilderExtensions.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/NavGraphBuilderExtensions.kt
@@ -44,16 +44,22 @@ fun NavGraphBuilder.unittoComposable(
route: String,
arguments: List = emptyList(),
deepLinks: List = emptyList(),
- enterTransition: (@JvmSuppressWildcards
- AnimatedContentTransitionScope.() -> EnterTransition?)? = { unittoFadeIn() },
- exitTransition: (@JvmSuppressWildcards
- AnimatedContentTransitionScope.() -> ExitTransition?)? = { unittoFadeOut() },
- popEnterTransition: (@JvmSuppressWildcards
- AnimatedContentTransitionScope.() -> EnterTransition?)? =
- enterTransition,
- popExitTransition: (@JvmSuppressWildcards
- AnimatedContentTransitionScope.() -> ExitTransition?)? =
- exitTransition,
+ enterTransition: (
+ @JvmSuppressWildcards
+ AnimatedContentTransitionScope.() -> EnterTransition?
+ )? = { unittoFadeIn() },
+ exitTransition: (
+ @JvmSuppressWildcards
+ AnimatedContentTransitionScope.() -> ExitTransition?
+ )? = { unittoFadeOut() },
+ popEnterTransition: (
+ @JvmSuppressWildcards
+ AnimatedContentTransitionScope.() -> EnterTransition?
+ )? = enterTransition,
+ popExitTransition: (
+ @JvmSuppressWildcards
+ AnimatedContentTransitionScope.() -> ExitTransition?
+ )? = exitTransition,
content: @Composable AnimatedContentScope.(NavBackStackEntry) -> Unit,
): Unit = composable(
route = route,
@@ -79,22 +85,26 @@ fun NavGraphBuilder.unittoStackedComposable(
enterTransition = {
slideInHorizontally(
animationSpec = unittoEnterTween(),
- initialOffsetX = { (it * 0.2f).toInt() }) + unittoFadeIn()
+ initialOffsetX = { (it * 0.2f).toInt() },
+ ) + unittoFadeIn()
},
exitTransition = {
slideOutHorizontally(
animationSpec = unittoExitTween(),
- targetOffsetX = { -(it * 0.2f).toInt() }) + unittoFadeOut()
+ targetOffsetX = { -(it * 0.2f).toInt() },
+ ) + unittoFadeOut()
},
popEnterTransition = {
slideInHorizontally(
animationSpec = unittoEnterTween(),
- initialOffsetX = { -(it * 0.2f).toInt() }) + unittoFadeIn()
+ initialOffsetX = { -(it * 0.2f).toInt() },
+ ) + unittoFadeIn()
},
popExitTransition = {
slideOutHorizontally(
animationSpec = unittoExitTween(),
- targetOffsetX = { (it * 0.2f).toInt() }) + unittoFadeOut()
+ targetOffsetX = { (it * 0.2f).toInt() },
+ ) + unittoFadeOut()
},
content = content,
)
@@ -113,10 +123,10 @@ fun NavGraphBuilder.unittoNavigation(
exitTransition: (AnimatedContentTransitionScope.() -> ExitTransition?)? =
null,
popEnterTransition: (
- AnimatedContentTransitionScope.() -> EnterTransition?
+ AnimatedContentTransitionScope.() -> EnterTransition?
)? = enterTransition,
popExitTransition: (
- AnimatedContentTransitionScope.() -> ExitTransition?
+ AnimatedContentTransitionScope.() -> ExitTransition?
)? = exitTransition,
builder: NavGraphBuilder.() -> Unit,
): Unit = navigation(
@@ -128,7 +138,7 @@ fun NavGraphBuilder.unittoNavigation(
exitTransition = exitTransition,
popEnterTransition = popEnterTransition,
popExitTransition = popExitTransition,
- builder = builder
+ builder = builder,
)
private const val ENTER_DURATION = 350
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/ShortcutUtils.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/ShortcutUtils.kt
index 27bfe720..3f0ef54f 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/ShortcutUtils.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/ShortcutUtils.kt
@@ -48,7 +48,7 @@ suspend fun Context.pushDynamicShortcut(
val shortcutCompat = shortcutInfoCompat(
context = context,
route = drawerItem.graph,
- shortcut = shortcut
+ shortcut = shortcut,
)
kotlin.runCatching {
@@ -71,7 +71,7 @@ fun Context.addShortcut(
val shortcutCompat = shortcutInfoCompat(
context = context,
route = drawerItem.graph,
- shortcut = shortcut
+ shortcut = shortcut,
)
val shortCutIntent = ShortcutManagerCompat.createShortcutResultIntent(context, shortcutCompat)
@@ -80,7 +80,7 @@ fun Context.addShortcut(
ShortcutManagerCompat.requestPinShortcut(
context,
shortcutCompat,
- PendingIntent.getBroadcast(context, 0, shortCutIntent, FLAG_IMMUTABLE).intentSender
+ PendingIntent.getBroadcast(context, 0, shortCutIntent, FLAG_IMMUTABLE).intentSender,
)
} catch (e: Exception) {
showToast(context, e.message ?: "Error")
@@ -101,8 +101,8 @@ private fun Context.shortcutInfoCompat(
Intent.ACTION_VIEW,
Uri.parse("app://com.sadellie.unitto/$route"),
context,
- context.javaClass
- )
+ context.javaClass,
+ ),
)
.build()
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Button.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Button.kt
index 81a4f8ae..dba1c7dc 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Button.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Button.kt
@@ -50,7 +50,7 @@ fun Button(
border: BorderStroke? = null,
contentPadding: PaddingValues = ButtonDefaults.ContentPadding,
interactionSource: MutableInteractionSource = remember { MutableInteractionSource() },
- content: @Composable RowScope.() -> Unit
+ content: @Composable RowScope.() -> Unit,
) {
Surface(
modifier = modifier.squashable(
@@ -58,7 +58,7 @@ fun Button(
onLongClick = onLongClick,
interactionSource = interactionSource,
cornerRadiusRange = 30..50,
- enabled = enabled
+ enabled = enabled,
),
color = containerColor,
contentColor = contentColor,
@@ -70,12 +70,12 @@ fun Button(
Modifier
.defaultMinSize(
minWidth = ButtonDefaults.MinWidth,
- minHeight = ButtonDefaults.MinHeight
+ minHeight = ButtonDefaults.MinHeight,
)
.padding(contentPadding),
horizontalArrangement = Arrangement.Center,
verticalAlignment = Alignment.CenterVertically,
- content = content
+ content = content,
)
}
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Chip.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Chip.kt
index 21ce2c59..db83c819 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Chip.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Chip.kt
@@ -70,16 +70,16 @@ fun FilterChip(
.border(
width = 1.dp,
color = borderColor.value,
- shape = FilterChipDefaults.shape
+ shape = FilterChipDefaults.shape,
)
.height(FilterChipDefaults.Height)
.padding(horizontal = 16.dp),
- verticalAlignment = Alignment.CenterVertically
+ verticalAlignment = Alignment.CenterVertically,
) {
Text(
text = label,
style = MaterialTheme.typography.labelLarge,
- color = if (isSelected) MaterialTheme.colorScheme.onPrimaryContainer else MaterialTheme.colorScheme.onSurfaceVariant
+ color = if (isSelected) MaterialTheme.colorScheme.onPrimaryContainer else MaterialTheme.colorScheme.onSurfaceVariant,
)
}
}
@@ -100,17 +100,17 @@ fun AssistChip(
.border(
width = 1.dp,
color = MaterialTheme.colorScheme.outline,
- shape = AssistChipDefaults.shape
+ shape = AssistChipDefaults.shape,
)
.height(32.dp)
.padding(horizontal = 8.dp),
- verticalAlignment = Alignment.CenterVertically
+ verticalAlignment = Alignment.CenterVertically,
) {
Icon(
modifier = Modifier.height(AssistChipDefaults.IconSize),
imageVector = imageVector,
contentDescription = contentDescription,
- tint = MaterialTheme.colorScheme.onSurfaceVariant
+ tint = MaterialTheme.colorScheme.onSurfaceVariant,
)
}
}
@@ -121,7 +121,7 @@ fun PreviewAssistChip() {
AssistChip(
onClick = {},
imageVector = Icons.Default.Settings,
- contentDescription = ""
+ contentDescription = "",
)
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/DrawerItem.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/DrawerItem.kt
index da93b329..ba0a9ac7 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/DrawerItem.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/DrawerItem.kt
@@ -33,13 +33,13 @@ internal fun DrawerItem(
destination: DrawerItem,
icon: ImageVector,
selected: Boolean,
- onClick: (DrawerItem) -> Unit
+ onClick: (DrawerItem) -> Unit,
) {
NavigationDrawerItem(
modifier = modifier,
label = { Text(stringResource(destination.name)) },
icon = { Icon(icon, stringResource(destination.name)) },
selected = selected,
- onClick = { onClick(destination) }
+ onClick = { onClick(destination) },
)
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Header.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Header.kt
index 663cc7a5..39dc8ca9 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Header.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Header.kt
@@ -43,8 +43,8 @@ fun Header(
start = 56.dp,
end = 16.dp,
top = 24.dp,
- bottom = 12.dp
- )
+ bottom = 12.dp,
+ ),
) {
Text(
modifier = modifier
@@ -53,6 +53,6 @@ fun Header(
.fillMaxWidth(),
text = text,
style = MaterialTheme.typography.titleSmall,
- color = MaterialTheme.colorScheme.primary
+ color = MaterialTheme.colorScheme.primary,
)
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/KeyboardButton.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/KeyboardButton.kt
index e5a8bab5..ecf50874 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/KeyboardButton.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/KeyboardButton.kt
@@ -64,15 +64,24 @@ fun BasicKeyboardButton(
Box(
modifier = modifier
.squashable(
- onClick = { onClick(); vibrate() },
- onLongClick = if (onLongClick != null) { { onLongClick(); vibrate() } } else null,
+ onClick = {
+ onClick()
+ vibrate()
+ },
+ onLongClick = if (onLongClick != null) {
+ {
+ onLongClick()
+ vibrate()
+ }
+ } else {
+ null
+ },
interactionSource = remember { MutableInteractionSource() },
cornerRadiusRange = 30..50,
- animationSpec = tween(200)
+ animationSpec = tween(200),
)
- .background(containerColor)
- ,
- contentAlignment = Alignment.Center
+ .background(containerColor),
+ contentAlignment = Alignment.Center,
) {
Icon(
imageVector = icon,
@@ -84,7 +93,7 @@ fun BasicKeyboardButton(
scaleX = contentHeight
scaleY = contentHeight
},
- tint = iconColor
+ tint = iconColor,
)
}
}
@@ -173,22 +182,25 @@ fun KeyboardButtonTertiary(
)
}
-/**
- * Mostly for main button in portrait mode. Changes icon size inside.
- */
-const val KeyboardButtonContentHeightTall = 1.1f
+object KeyboardButtonToken {
-/**
- * Mostly for additional button in portrait mode. Changes icon size inside.
- */
-const val KeyboardButtonContentHeightTallAdditional = 1.6f
+ /**
+ * Mostly for main button in portrait mode. Changes icon size inside.
+ */
+ const val CONTENT_HEIGHT_TALL = 1.1f
-/**
- * Mostly for main button in landscape mode. Changes icon size inside.
- */
-const val KeyboardButtonContentHeightShort = 1.3f
+ /**
+ * Mostly for additional button in portrait mode. Changes icon size inside.
+ */
+ const val CONTENT_HEIGHT_TALL_ADDITIONAL = 1.6f
-/**
- * Mostly for additional button in landscape mode. Changes icon size inside.
- */
-const val KeyboardButtonContentHeightShortAdditional = 1.1f
+ /**
+ * Mostly for main button in landscape mode. Changes icon size inside.
+ */
+ const val CONTENT_HEIGHT_SHORT = 1.3f
+
+ /**
+ * Mostly for additional button in landscape mode. Changes icon size inside.
+ */
+ const val CONTENT_HEIGHT_SHORT_ADDITIONAL = 1.1f
+}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/KeypadFlow.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/KeypadFlow.kt
index f100ccf2..df885afd 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/KeypadFlow.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/KeypadFlow.kt
@@ -49,7 +49,7 @@ fun KeypadFlow(
columns: Int,
@IntRange(0, 100) horizontalPadding: Int = 10,
@IntRange(0, 100) verticalPadding: Int = 10,
- content: @Composable FlowRowScope.(width: Float, height: Float) -> Unit
+ content: @Composable FlowRowScope.(width: Float, height: Float) -> Unit,
) {
val height: Float = remember { (1f - verticalPadding / 100f) / rows }
val width: Float = remember { (1f - horizontalPadding / 100f) / columns }
@@ -58,7 +58,7 @@ fun KeypadFlow(
modifier = modifier,
maxItemsInEachRow = columns,
horizontalArrangement = Arrangement.SpaceAround,
- verticalArrangement = Arrangement.SpaceAround
+ verticalArrangement = Arrangement.SpaceAround,
) {
content(width, height)
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/ListItem.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/ListItem.kt
index 5045fe61..5f50dd09 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/ListItem.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/ListItem.kt
@@ -57,12 +57,12 @@ fun ListItem(
.padding(start = 16.dp, end = 24.dp)
.heightIn(min = if (supportingContent == null) 56.dp else 72.dp),
horizontalArrangement = Arrangement.spacedBy(16.dp),
- verticalAlignment = Alignment.CenterVertically
+ verticalAlignment = Alignment.CenterVertically,
) {
leadingContent?.let {
ProvideColor(
color = MaterialTheme.colorScheme.onSurfaceVariant,
- content = it
+ content = it,
)
}
@@ -70,20 +70,20 @@ fun ListItem(
ProvideStyle(
color = MaterialTheme.colorScheme.onSurface,
textStyle = MaterialTheme.typography.bodyLarge,
- content = headlineContent
+ content = headlineContent,
)
supportingContent?.let {
ProvideStyle(
color = MaterialTheme.colorScheme.onSurfaceVariant,
textStyle = MaterialTheme.typography.bodyMedium,
- content = it
+ content = it,
)
}
}
trailingContent?.let {
ProvideColor(
color = MaterialTheme.colorScheme.onSurfaceVariant,
- content = it
+ content = it,
)
}
}
@@ -106,10 +106,10 @@ fun ListItem(
imageVector = icon,
contentDescription = iconDescription,
modifier = Modifier.size(24.dp),
- tint = MaterialTheme.colorScheme.onSurfaceVariant
+ tint = MaterialTheme.colorScheme.onSurfaceVariant,
)
},
- trailingContent = trailing
+ trailingContent = trailing,
)
@Composable
@@ -120,14 +120,14 @@ fun ListItem(
iconDescription: String = headlineText,
supportingText: String? = null,
switchState: Boolean,
- onSwitchChange: (Boolean) -> Unit
+ onSwitchChange: (Boolean) -> Unit,
) = ListItem(
modifier = modifier
.clickable(
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple(),
onClick = { onSwitchChange(!switchState) },
- role = Role.Switch
+ role = Role.Switch,
),
headlineText = headlineText,
supportingText = supportingText,
@@ -136,9 +136,9 @@ fun ListItem(
trailing = {
Switch(
checked = switchState,
- onCheckedChange = { onSwitchChange(it) }
+ onCheckedChange = { onSwitchChange(it) },
)
- }
+ },
)
@Preview
@@ -152,7 +152,7 @@ fun PreviewListItem1() {
leadingContent = {
Icon(
imageVector = Icons.Default.Home,
- contentDescription = null
+ contentDescription = null,
)
},
)
@@ -171,7 +171,7 @@ fun PreviewListItem1() {
supportingText = "Support text support text support text support text",
modifier = Modifier,
trailing = {},
- iconDescription = ""
+ iconDescription = "",
)
ListItem(
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/ModifierExtensions.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/ModifierExtensions.kt
index 01bf1057..9a07420c 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/ModifierExtensions.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/ModifierExtensions.kt
@@ -47,7 +47,7 @@ fun Modifier.squashable(
val cornerRadius: Int by animateIntAsState(
targetValue = if (isPressed) cornerRadiusRange.first else cornerRadiusRange.last,
animationSpec = animationSpec,
- label = "Squashed animation"
+ label = "Squashed animation",
)
this
@@ -58,7 +58,7 @@ fun Modifier.squashable(
interactionSource = interactionSource,
indication = rememberRipple(),
role = role,
- enabled = enabled
+ enabled = enabled,
)
}
@@ -75,7 +75,7 @@ fun Modifier.squashable(
val cornerRadius: Dp by animateDpAsState(
targetValue = if (isPressed) cornerRadiusRange.start else cornerRadiusRange.endInclusive,
animationSpec = animationSpec,
- label = "Squashed animation"
+ label = "Squashed animation",
)
this
@@ -86,6 +86,6 @@ fun Modifier.squashable(
interactionSource = interactionSource,
indication = rememberRipple(),
role = role,
- enabled = enabled
+ enabled = enabled,
)
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/NavigateUpButton.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/NavigateUpButton.kt
index fe95a293..db6ebd6d 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/NavigateUpButton.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/NavigateUpButton.kt
@@ -36,7 +36,7 @@ fun NavigateUpButton(onClick: () -> Unit) {
IconButton(onClick = onClick) {
Icon(
Icons.AutoMirrored.Outlined.ArrowBack,
- contentDescription = stringResource(R.string.navigate_up_description)
+ contentDescription = stringResource(R.string.navigate_up_description),
)
}
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/NavigationDrawer.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/NavigationDrawer.kt
index 0e906d14..400748f0 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/NavigationDrawer.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/NavigationDrawer.kt
@@ -73,7 +73,7 @@ class DrawerState(
initialValue = initialValue,
positionalThreshold = { distance -> distance * 0.5f },
velocityThreshold = { with(requireNotNull(density)) { 400.dp.toPx() } },
- animationSpec = tween()
+ animationSpec = tween(),
)
val isOpen: Boolean
@@ -89,10 +89,10 @@ class DrawerState(
suspend fun close() = anchoredDraggableState.animateTo(DrawerValue.Closed)
companion object {
- internal fun Saver() =
+ internal fun saver() =
Saver(
save = { it.currentValue },
- restore = { DrawerState(it) }
+ restore = { DrawerState(it) },
)
}
}
@@ -101,7 +101,7 @@ class DrawerState(
fun rememberDrawerState(
initialValue: DrawerValue = DrawerValue.Closed,
): DrawerState {
- return rememberSaveable(saver = DrawerState.Saver()) {
+ return rememberSaveable(saver = DrawerState.saver()) {
DrawerState(initialValue)
}
}
@@ -124,17 +124,17 @@ fun NavigationDrawer(
PermanentDrawerSheet(
modifier = Modifier
.fillMaxHeight()
- .verticalScroll(rememberScrollState())
+ .verticalScroll(rememberScrollState()),
) {
SheetContent(
mainTabs = mainTabs,
additionalTabs = additionalTabs,
currentDestination = currentDestination,
- onItemClick = onItemClick
+ onItemClick = onItemClick,
)
}
},
- content = content
+ content = content,
)
} else {
UnittoModalNavigationDrawer(
@@ -143,19 +143,19 @@ fun NavigationDrawer(
ModalDrawerSheet(
modifier = Modifier
.fillMaxHeight()
- .verticalScroll(rememberScrollState())
+ .verticalScroll(rememberScrollState()),
) {
SheetContent(
mainTabs = mainTabs,
additionalTabs = additionalTabs,
currentDestination = currentDestination,
- onItemClick = onItemClick
+ onItemClick = onItemClick,
)
}
},
gesturesEnabled = gesturesEnabled,
state = state,
- content = content
+ content = content,
)
}
}
@@ -173,7 +173,7 @@ private fun UnittoModalNavigationDrawer(
val drawerScope = rememberCoroutineScope()
Box(
- modifier = modifier.fillMaxSize()
+ modifier = modifier.fillMaxSize(),
) {
val drawerWidth = 360.dp
val drawerWidthPx = with(density) { drawerWidth.toPx() }
@@ -186,7 +186,7 @@ private fun UnittoModalNavigationDrawer(
DraggableAnchors {
DrawerValue.Closed at minValue
DrawerValue.Open at maxValue
- }
+ },
)
}
@@ -202,7 +202,7 @@ private fun UnittoModalNavigationDrawer(
state = state.anchoredDraggableState,
orientation = Orientation.Horizontal,
enabled = gesturesEnabled or state.isOpen,
- )
+ ),
)
Scrim(
@@ -210,7 +210,9 @@ private fun UnittoModalNavigationDrawer(
onClose = { if (gesturesEnabled) drawerScope.launch { state.close() } },
fraction = {
fraction(
- minValue, maxValue, state.anchoredDraggableState.requireOffset()
+ minValue,
+ maxValue,
+ state.anchoredDraggableState.requireOffset(),
)
},
)
@@ -224,14 +226,14 @@ private fun UnittoModalNavigationDrawer(
.anchoredDraggableState
.requireOffset()
.roundToInt(),
- y = 0
+ y = 0,
)
}
.anchoredDraggable(
state = state.anchoredDraggableState,
orientation = Orientation.Horizontal,
enabled = gesturesEnabled or state.isOpen,
- )
+ ),
) {
drawerContent()
}
@@ -254,7 +256,7 @@ private fun Scrim(
Canvas(
Modifier
.fillMaxSize()
- .then(dismissDrawer)
+ .then(dismissDrawer),
) {
drawRect(color, alpha = fraction())
}
@@ -266,12 +268,12 @@ private fun fraction(a: Float, b: Float, pos: Float) =
@Preview(
backgroundColor = 0xFFC8F7D4,
showBackground = true,
- device = "spec:width=320dp,height=500dp,dpi=320"
+ device = "spec:width=320dp,height=500dp,dpi=320",
)
@Preview(
backgroundColor = 0xFFC8F7D4,
showBackground = true,
- device = "spec:width=440dp,height=500dp,dpi=440"
+ device = "spec:width=440dp,height=500dp,dpi=440",
)
@Composable
private fun PreviewUnittoModalNavigationDrawerClose() {
@@ -290,11 +292,11 @@ private fun PreviewUnittoModalNavigationDrawerClose() {
Column {
Text(text = "Content")
Button(
- onClick = { corScope.launch { drawerState.open() } }
+ onClick = { corScope.launch { drawerState.open() } },
) {
Text(text = "BUTTON")
}
}
- }
+ },
)
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/PagedIsland.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/PagedIsland.kt
index 84944998..51ae48e7 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/PagedIsland.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/PagedIsland.kt
@@ -81,12 +81,12 @@ fun PagedIsland(
corScope.launch {
pagerState.animateScrollToPage(
// Animate to first page if target page is out of bounds
- if (targetPage >= pagerState.pageCount) 0 else targetPage
+ if (targetPage >= pagerState.pageCount) 0 else targetPage,
)
}
}
.background(backgroundColor)
- .padding(16.dp)
+ .padding(16.dp),
) {
Row(
modifier = Modifier
@@ -105,7 +105,7 @@ fun PagedIsland(
.fillMaxWidth(),
verticalAlignment = Alignment.Top,
state = pagerState,
- pageContent = { page -> pageContent(page % pageCount) }
+ pageContent = { page -> pageContent(page % pageCount) },
)
}
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/PortraitLandscape.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/PortraitLandscape.kt
index 6faba5d6..3725c934 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/PortraitLandscape.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/PortraitLandscape.kt
@@ -52,8 +52,11 @@ fun PortraitLandscape(
.weight(1f)
.fillMaxSize()
.padding(
- it.maxWidth * 0.015f, 0.dp,
- it.maxHeight * 0.03f, it.maxHeight * 0.03f)
+ it.maxWidth * 0.015f,
+ 0.dp,
+ it.maxHeight * 0.03f,
+ it.maxHeight * 0.03f,
+ )
content1(contentModifier)
content2(contentModifier)
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/ScaffoldWithLargeTopBar.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/ScaffoldWithLargeTopBar.kt
index 773338f0..cce1198d 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/ScaffoldWithLargeTopBar.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/ScaffoldWithLargeTopBar.kt
@@ -41,10 +41,10 @@ fun ScaffoldWithLargeTopBar(
title: String,
navigationIcon: @Composable () -> Unit,
actions: @Composable RowScope.() -> Unit = {},
- content: @Composable (PaddingValues) -> Unit
+ content: @Composable (PaddingValues) -> Unit,
) {
val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(
- rememberTopAppBarState()
+ rememberTopAppBarState(),
)
Scaffold(
modifier = Modifier
@@ -56,9 +56,9 @@ fun ScaffoldWithLargeTopBar(
},
navigationIcon = navigationIcon,
scrollBehavior = scrollBehavior,
- actions = actions
+ actions = actions,
)
},
- content = content
+ content = content,
)
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/ScaffoldWithTopBar.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/ScaffoldWithTopBar.kt
index 02e719ec..2c3c3860 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/ScaffoldWithTopBar.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/ScaffoldWithTopBar.kt
@@ -59,7 +59,7 @@ fun ScaffoldWithTopBar(
floatingActionButton: @Composable () -> Unit = {},
floatingActionButtonPosition: FabPosition = FabPosition.End,
scrollBehavior: TopAppBarScrollBehavior? = null,
- content: @Composable (PaddingValues) -> Unit
+ content: @Composable (PaddingValues) -> Unit,
) {
Scaffold(
modifier = modifier,
@@ -67,7 +67,7 @@ fun ScaffoldWithTopBar(
AnimatedVisibility(
visible = LocalWindowSize.current.heightSizeClass > WindowHeightSizeClass.Compact,
enter = slideInVertically() + fadeIn(),
- exit = slideOutVertically() + fadeOut()
+ exit = slideOutVertically() + fadeOut(),
) {
CenterAlignedTopAppBar(
title = title,
@@ -84,6 +84,6 @@ fun ScaffoldWithTopBar(
},
floatingActionButton = floatingActionButton,
floatingActionButtonPosition = floatingActionButtonPosition,
- content = content
+ content = content,
)
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SearchBar.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SearchBar.kt
index fda7a005..c104ac4b 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SearchBar.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SearchBar.kt
@@ -109,7 +109,7 @@ fun SearchBar(
modifier = modifier
.windowInsetsPadding(TopAppBarDefaults.windowInsets)
.height(height),
- contentAlignment = Alignment.Center
+ contentAlignment = Alignment.Center,
) {
Row(
modifier = Modifier
@@ -121,10 +121,9 @@ fun SearchBar(
.fillMaxWidth()
.padding(horizontal = 16.dp),
verticalAlignment = Alignment.CenterVertically,
- horizontalArrangement = Arrangement.spacedBy(16.dp)
+ horizontalArrangement = Arrangement.spacedBy(16.dp),
) {
ProvideColor(MaterialTheme.colorScheme.onSurface) {
-
NavigateButton { if (notEmpty) clear() else navigateUp() }
SearchTextField(
@@ -135,7 +134,7 @@ fun SearchBar(
value = query,
placeholder = stringResource(R.string.search_text_field_placeholder),
onValueChange = onQueryChange,
- onSearch = onSearch
+ onSearch = onSearch,
)
ClearButton(notEmpty, ::clear)
@@ -152,7 +151,7 @@ private fun SearchTextField(
value: TextFieldValue,
placeholder: String,
onValueChange: (TextFieldValue) -> Unit,
- onSearch: KeyboardActionScope.() -> Unit
+ onSearch: KeyboardActionScope.() -> Unit,
) {
BasicTextField(
modifier = modifier,
@@ -171,33 +170,33 @@ private fun SearchTextField(
modifier = Modifier.alpha(0.7f),
text = placeholder,
style = MaterialTheme.typography.bodyLarge,
- color = MaterialTheme.colorScheme.onSurface
+ color = MaterialTheme.colorScheme.onSurface,
)
}
- }
+ },
)
}
@Composable
private fun SearchButton(
- onClick: () -> Unit
+ onClick: () -> Unit,
) {
SearchBarIconButton(onClick) {
Icon(
imageVector = Icons.Default.Search,
- contentDescription = stringResource(R.string.search_button_description)
+ contentDescription = stringResource(R.string.search_button_description),
)
}
}
@Composable
private fun NavigateButton(
- onClick: () -> Unit
+ onClick: () -> Unit,
) {
SearchBarIconButton(onClick) {
Icon(
imageVector = Icons.AutoMirrored.Outlined.ArrowBack,
- contentDescription = stringResource(R.string.navigate_up_description)
+ contentDescription = stringResource(R.string.navigate_up_description),
)
}
}
@@ -205,17 +204,17 @@ private fun NavigateButton(
@Composable
private fun ClearButton(
visible: Boolean,
- onClick: () -> Unit
+ onClick: () -> Unit,
) {
AnimatedVisibility(
visible = visible,
enter = fadeIn(),
- exit = fadeOut()
+ exit = fadeOut(),
) {
SearchBarIconButton(onClick) {
Icon(
imageVector = Icons.Outlined.Clear,
- contentDescription = stringResource(R.string.clear_input_description)
+ contentDescription = stringResource(R.string.clear_input_description),
)
}
}
@@ -224,7 +223,7 @@ private fun ClearButton(
@Composable
fun SearchBarIconButton(
onClick: () -> Unit,
- content: @Composable () -> Unit
+ content: @Composable () -> Unit,
) {
Box(
modifier = Modifier
@@ -236,10 +235,10 @@ fun SearchBarIconButton(
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple(
bounded = false,
- radius = 20.dp
- )
+ radius = 20.dp,
+ ),
),
- contentAlignment = Alignment.Center
+ contentAlignment = Alignment.Center,
) {
content()
}
@@ -259,6 +258,6 @@ fun UnittoSearchBarPreview() {
query = TextFieldValue("test"),
onQueryChange = {},
navigateUp = {},
- scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior()
+ scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(),
)
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SearchPlaceholder.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SearchPlaceholder.kt
index c7905dc5..b3e908cb 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SearchPlaceholder.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SearchPlaceholder.kt
@@ -41,29 +41,29 @@ import com.sadellie.unitto.core.base.R
fun SearchPlaceholder(
onButtonClick: () -> Unit,
supportText: String,
- buttonLabel: String
+ buttonLabel: String,
) {
Column(
modifier = Modifier
.fillMaxWidth()
.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally,
- verticalArrangement = Arrangement.spacedBy(16.dp)
+ verticalArrangement = Arrangement.spacedBy(16.dp),
) {
Icon(
imageVector = Icons.Default.SearchOff,
contentDescription = stringResource(R.string.no_results_description),
- modifier = Modifier.size(48.dp)
+ modifier = Modifier.size(48.dp),
)
Text(
text = stringResource(R.string.no_results_label),
textAlign = TextAlign.Center,
- style = MaterialTheme.typography.bodyLarge
+ style = MaterialTheme.typography.bodyLarge,
)
Text(
text = supportText,
textAlign = TextAlign.Center,
- style = MaterialTheme.typography.bodySmall
+ style = MaterialTheme.typography.bodySmall,
)
ElevatedButton(onClick = onButtonClick) {
Text(text = buttonLabel)
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SegmentedButton.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SegmentedButton.kt
index 6d5fce41..f4b8cd2d 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SegmentedButton.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SegmentedButton.kt
@@ -47,14 +47,14 @@ import androidx.compose.ui.unit.dp
@Composable
fun SegmentedButtonsRow(
modifier: Modifier = Modifier,
- content: @Composable RowScope.() -> Unit
+ content: @Composable RowScope.() -> Unit,
) {
Row(
modifier
.width(IntrinsicSize.Max)
.height(40.dp)
.clip(CircleShape)
- .border(1.dp, MaterialTheme.colorScheme.outline, CircleShape)
+ .border(1.dp, MaterialTheme.colorScheme.outline, CircleShape),
) {
content()
}
@@ -66,7 +66,7 @@ fun RowScope.SegmentedButton(
label: String,
onClick: () -> Unit,
selected: Boolean,
- icon: ImageVector? = null
+ icon: ImageVector? = null,
) {
val containerColor =
if (selected) MaterialTheme.colorScheme.secondaryContainer else MaterialTheme.colorScheme.surface
@@ -77,9 +77,9 @@ fun RowScope.SegmentedButton(
shape = RectangleShape,
colors = ButtonDefaults.outlinedButtonColors(
containerColor = containerColor,
- contentColor = contentColorFor(containerColor)
+ contentColor = contentColorFor(containerColor),
),
- contentPadding = PaddingValues(horizontal = 12.dp)
+ contentPadding = PaddingValues(horizontal = 12.dp),
) {
if (icon != null) {
Crossfade(selected, label = "Selected state") {
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SheetContent.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SheetContent.kt
index aeb6efba..75de6681 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SheetContent.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/SheetContent.kt
@@ -67,14 +67,14 @@ internal fun ColumnScope.SheetContent(
modifier = Modifier.clickable(
interactionSource = interactionSource,
indication = null,
- onClick = { showHello = true }
- )
+ onClick = { showHello = true },
+ ),
) { hello ->
Text(
text = if (hello) stringResource(R.string.hello_label) else stringResource(R.string.app_name),
modifier = Modifier.padding(horizontal = 28.dp, vertical = 24.dp),
style = MaterialTheme.typography.titleLarge,
- color = MaterialTheme.colorScheme.primary
+ color = MaterialTheme.colorScheme.primary,
)
}
@@ -85,7 +85,7 @@ internal fun ColumnScope.SheetContent(
destination = drawerItem,
icon = if (selected) drawerItem.selectedIcon else drawerItem.defaultIcon,
selected = selected,
- onClick = onItemClick
+ onClick = onItemClick,
)
}
@@ -98,7 +98,7 @@ internal fun ColumnScope.SheetContent(
destination = drawerItem,
icon = if (selected) drawerItem.selectedIcon else drawerItem.defaultIcon,
selected = selected,
- onClick = onItemClick
+ onClick = onItemClick,
)
}
}
@@ -119,7 +119,7 @@ private fun PreviewDrawerSheet() {
DrawerItem.Calculator,
),
currentDestination = DrawerItem.Calculator.start,
- onItemClick = {}
+ onItemClick = {},
)
}
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Slider.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Slider.kt
index f184d0e9..4f3719c9 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Slider.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Slider.kt
@@ -56,12 +56,12 @@ fun Slider(
value: Float,
valueRange: ClosedFloatingPointRange,
onValueChange: (Float) -> Unit,
- onValueChangeFinished: (Float) -> Unit = {}
+ onValueChangeFinished: (Float) -> Unit = {},
) {
val animated = animateFloatAsState(
targetValue = value.roundToInt().toFloat(),
animationSpec = spring(),
- label = "Thumb animation"
+ label = "Thumb animation",
)
Slider(
@@ -81,14 +81,14 @@ private fun SquigglyTrack(
@FloatRange(0.0, 1.0) waveHeight: Float = 0.7f,
strokeWidth: Float = 15f,
filledColor: Color = MaterialTheme.colorScheme.primary,
- unfilledColor: Color = MaterialTheme.colorScheme.surfaceVariant
+ unfilledColor: Color = MaterialTheme.colorScheme.surfaceVariant,
) {
val coroutineScope = rememberCoroutineScope()
- var direct by remember { mutableFloatStateOf(waveHeight * (100f - strokeWidth * 2f ) / 100f ) }
+ var direct by remember { mutableFloatStateOf(waveHeight * (100f - strokeWidth * 2f) / 100f) }
val animatedDirect = animateFloatAsState(
targetValue = direct,
animationSpec = spring(stiffness = Spring.StiffnessLow),
- label = "Track animation"
+ label = "Track animation",
)
LaunchedEffect(sliderState.value) {
@@ -101,7 +101,7 @@ private fun SquigglyTrack(
Canvas(
modifier = Modifier
.fillMaxWidth()
- .height(20.dp)
+ .height(20.dp),
) {
val width = size.width
val height = size.height
@@ -114,7 +114,7 @@ private fun SquigglyTrack(
val path = Path().apply {
moveTo(
x = initialOffset,
- y = height.times(0.5f)
+ y = height.times(0.5f),
)
val amount = ceil(width.div(eachWaveWidth))
@@ -125,7 +125,7 @@ private fun SquigglyTrack(
dx1 = eachWaveWidth * 0.5f,
dy1 = height.times(peek),
dx2 = eachWaveWidth,
- dy2 = 0f
+ dy2 = 0f,
)
}
}
@@ -135,12 +135,12 @@ private fun SquigglyTrack(
left = 0f,
right = thumbPosition,
bottom = height,
- clipOp = ClipOp.Intersect
+ clipOp = ClipOp.Intersect,
) {
drawPath(
path = path,
color = filledColor,
- style = Stroke(strokeWidth, cap = StrokeCap.Round)
+ style = Stroke(strokeWidth, cap = StrokeCap.Round),
)
}
@@ -149,7 +149,7 @@ private fun SquigglyTrack(
start = Offset(thumbPosition, height.times(0.5f)),
end = Offset(width, height.times(0.5f)),
strokeWidth = strokeWidth,
- cap = StrokeCap.Round
+ cap = StrokeCap.Round,
)
}
}
@@ -165,6 +165,6 @@ private fun PreviewNewSlider() {
com.sadellie.unitto.core.ui.common.Slider(
value = currentValue,
valueRange = 0f..16f,
- onValueChange = { currentValue = it }
+ onValueChange = { currentValue = it },
)
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Switch.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Switch.kt
index 60a03247..6176032d 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Switch.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/Switch.kt
@@ -70,7 +70,7 @@ fun Switch(
)
val thumbOffset = animateDpAsState(
targetValue = if (checked) ThumbPaddingEnd else ThumbPaddingStart,
- label = "Thumb offset"
+ label = "Thumb offset",
)
Box(
@@ -81,15 +81,15 @@ fun Switch(
enabled = true,
onClickLabel = null,
role = Role.Switch,
- onClick = { onCheckedChange(!checked) }
+ onClick = { onCheckedChange(!checked) },
)
.background(trackColor.value, CircleShape)
.size(TrackWidth, TrackHeight)
.border(
TrackOutlineWidth,
borderColor(enabled, checked, colors),
- CircleShape
- )
+ CircleShape,
+ ),
) {
Box(
modifier = Modifier
@@ -100,7 +100,7 @@ fun Switch(
)
.align(Alignment.CenterStart)
.background(thumbColor.value, CircleShape)
- .size(thumbSize.value)
+ .size(thumbSize.value),
)
}
}
@@ -109,7 +109,7 @@ fun Switch(
private fun trackColor(
enabled: Boolean,
checked: Boolean,
- colors: SwitchColors
+ colors: SwitchColors,
): Color =
if (enabled) {
if (checked) colors.checkedTrackColor else colors.uncheckedTrackColor
@@ -121,7 +121,7 @@ private fun trackColor(
private fun thumbColor(
enabled: Boolean,
checked: Boolean,
- colors: SwitchColors
+ colors: SwitchColors,
): Color =
if (enabled) {
if (checked) colors.checkedThumbColor else colors.uncheckedThumbColor
@@ -133,7 +133,7 @@ private fun thumbColor(
private fun borderColor(
enabled: Boolean,
checked: Boolean,
- colors: SwitchColors
+ colors: SwitchColors,
): Color =
if (enabled) {
if (checked) colors.checkedBorderColor else colors.uncheckedBorderColor
@@ -147,7 +147,7 @@ val TrackOutlineWidth = 1.8.dp
val SelectedHandleSize = 20.0.dp
val UnselectedHandleSize = 20.0.dp
-val ThumbPaddingStart = (TrackHeight - UnselectedHandleSize) / 2
+val ThumbPaddingStart = (TrackHeight - UnselectedHandleSize) / 2
val ThumbPaddingEnd = TrackWidth - SelectedHandleSize / 2 - TrackHeight / 2
@Preview
@@ -156,6 +156,6 @@ fun PreviewPixelSwitch() {
var checked by remember { mutableStateOf(false) }
Switch(
checked = checked,
- onCheckedChange = { checked = !checked }
+ onCheckedChange = { checked = !checked },
)
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/WithConstraints.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/WithConstraints.kt
index 37602a6f..06726e49 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/WithConstraints.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/WithConstraints.kt
@@ -34,11 +34,11 @@ fun ColumnWithConstraints(
modifier: Modifier = Modifier,
verticalArrangement: Arrangement.Vertical = Arrangement.Top,
horizontalAlignment: Alignment.Horizontal = Alignment.Start,
- content: @Composable (ColumnScope.(BoxWithConstraintsScope)-> Unit)
+ content: @Composable (ColumnScope.(BoxWithConstraintsScope) -> Unit),
) = BoxWithConstraints(modifier) {
Column(
verticalArrangement = verticalArrangement,
- horizontalAlignment = horizontalAlignment
+ horizontalAlignment = horizontalAlignment,
) { content(this@BoxWithConstraints) }
}
@@ -47,10 +47,10 @@ fun RowWithConstraints(
modifier: Modifier = Modifier,
horizontalArrangement: Arrangement.Horizontal = Arrangement.Start,
verticalAlignment: Alignment.Vertical = Alignment.Top,
- content: @Composable (RowScope.(BoxWithConstraintsScope)-> Unit)
+ content: @Composable (RowScope.(BoxWithConstraintsScope) -> Unit),
) = BoxWithConstraints(modifier) {
Row(
horizontalArrangement = horizontalArrangement,
- verticalAlignment = verticalAlignment
+ verticalAlignment = verticalAlignment,
) { content(this@BoxWithConstraints) }
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/autosize/AutoSizeTextStyleBox.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/autosize/AutoSizeTextStyleBox.kt
index 32fee842..c1016700 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/autosize/AutoSizeTextStyleBox.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/autosize/AutoSizeTextStyleBox.kt
@@ -43,54 +43,6 @@ import androidx.compose.ui.unit.TextUnit
import kotlin.math.min
import kotlin.math.roundToInt
-// HUGE performance drop. Don't use for buttons
-///**
-// * Composable function that automatically adjusts the text size to fit within given constraints using AnnotatedString, considering the ratio of line spacing to text size.
-// *
-// * Features:
-// * Similar to AutoSizeText(String), with support for AnnotatedString.
-// *
-// * @param inlineContent a map storing composables that replaces certain ranges of the text, used to
-// * insert composables into text layout. See [InlineTextContent].
-// * @see AutoSizeText
-// */
-//@Composable
-//internal fun AutoSizeText(
-// text: AnnotatedString,
-// modifier: Modifier = Modifier,
-// minRatio: Float = 1f,
-// maxTextSize: TextUnit = TextUnit.Unspecified,
-// alignment: Alignment = Alignment.TopStart,
-// overflow: TextOverflow = TextOverflow.Clip,
-// softWrap: Boolean = true,
-// maxLines: Int = Int.MAX_VALUE,
-// minLines: Int = 1,
-// inlineContent: Map = mapOf(),
-// onTextLayout: (TextLayoutResult) -> Unit = {},
-// style: TextStyle = LocalTextStyle.current,
-//) = AutoSizeTextStyleBox(
-// modifier = modifier,
-// text = text,
-// maxTextSize = maxTextSize,
-// maxLines = maxLines,
-// minLines = minLines,
-// softWrap = softWrap,
-// style = style,
-// minRatio = minRatio,
-// alignment = alignment
-//) {
-// Text(
-// text = text,
-// overflow = overflow,
-// softWrap = softWrap,
-// maxLines = maxLines,
-// minLines = minLines,
-// inlineContent = inlineContent,
-// onTextLayout = onTextLayout,
-// style = LocalTextStyle.current,
-// )
-//}
-
/**
* [BoxWithConstraints] with [autoTextStyle] passed via [LocalTextStyle].
*
@@ -122,11 +74,11 @@ internal fun AutoSizeTextStyleBox(
style: TextStyle,
minRatio: Float,
alignment: Alignment,
- content: @Composable () -> Unit
+ content: @Composable () -> Unit,
) {
val density = LocalDensity.current
CompositionLocalProvider(
- LocalDensity provides Density(density = density.density, fontScale = 1F)
+ LocalDensity provides Density(density = density.density, fontScale = 1F),
) {
BoxWithConstraints(
modifier = modifier,
@@ -141,12 +93,12 @@ internal fun AutoSizeTextStyleBox(
style = style,
alignment = alignment,
density = density,
- minRatio = minRatio
+ minRatio = minRatio,
)
CompositionLocalProvider(
value = LocalTextStyle.provides(autoTextStyle),
- content = content
+ content = content,
)
}
}
@@ -290,10 +242,11 @@ private fun IntProgression.findElectedValue(
var high = last
while (low <= high) {
val mid = low + (high - low) / 2
- if (shouldMoveBackward(transform(mid)))
+ if (shouldMoveBackward(transform(mid))) {
high = mid - 1
- else
+ } else {
low = mid + 1
+ }
}
transform(high.coerceAtLeast(minimumValue = first))
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/autosize/DensityExt.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/autosize/DensityExt.kt
index 4bf23835..a04a1289 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/autosize/DensityExt.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/autosize/DensityExt.kt
@@ -27,5 +27,8 @@ import androidx.compose.ui.unit.isSpecified
internal fun Density.roundToPx(sp: TextUnit): Int = sp.roundToPx()
internal fun Density.toSp(px: Int): TextUnit = px.toSp()
internal fun Density.toIntSize(dpSize: DpSize): IntSize =
- if (dpSize.isSpecified) IntSize(dpSize.width.roundToPx(), dpSize.height.roundToPx())
- else IntSize.Zero
+ if (dpSize.isSpecified) {
+ IntSize(dpSize.width.roundToPx(), dpSize.height.roundToPx())
+ } else {
+ IntSize.Zero
+ }
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/datetimepicker/DatePickerDialog.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/datetimepicker/DatePickerDialog.kt
index 4abee43e..b5f50430 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/datetimepicker/DatePickerDialog.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/datetimepicker/DatePickerDialog.kt
@@ -67,7 +67,7 @@ fun DatePickerDialog(
BasicAlertDialog(
onDismissRequest = onDismiss,
modifier = modifier.wrapContentHeight(),
- properties = DialogProperties(usePlatformDefaultWidth = false)
+ properties = DialogProperties(usePlatformDefaultWidth = false),
) {
Surface(
modifier = modifier
@@ -83,15 +83,14 @@ fun DatePickerDialog(
Box(
modifier = Modifier
.align(Alignment.End)
- .padding(_dialogButtonsPadding)
+ .padding(_dialogButtonsPadding),
) {
-
AlertDialogFlowRow(
mainAxisSpacing = _dialogButtonsMainAxisSpacing,
- crossAxisSpacing = _dialogButtonsCrossAxisSpacing
+ crossAxisSpacing = _dialogButtonsCrossAxisSpacing,
) {
TextButton(
- onClick = onDismiss
+ onClick = onDismiss,
) {
Text(text = dismissLabel)
}
@@ -100,16 +99,17 @@ fun DatePickerDialog(
val millis = pickerState.selectedDateMillis ?: return@TextButton
val date = LocalDateTime.ofInstant(
- Instant.ofEpochMilli(millis), ZoneId.systemDefault()
+ Instant.ofEpochMilli(millis),
+ ZoneId.systemDefault(),
)
onConfirm(
localDateTime
.withYear(date.year)
.withMonth(date.monthValue)
- .withDayOfMonth(date.dayOfMonth)
+ .withDayOfMonth(date.dayOfMonth),
)
- }
+ },
) {
Text(text = confirmLabel)
}
@@ -125,7 +125,7 @@ fun DatePickerDialog(
private fun AlertDialogFlowRow(
mainAxisSpacing: Dp,
crossAxisSpacing: Dp,
- content: @Composable () -> Unit
+ content: @Composable () -> Unit,
) {
Layout(content) { measurables, constraints ->
val sequences = mutableListOf>()
@@ -142,7 +142,7 @@ private fun AlertDialogFlowRow(
// Return whether the placeable can be added to the current sequence.
fun canAddToCurrentSequence(placeable: Placeable) =
currentSequence.isEmpty() || currentMainAxisSize + mainAxisSpacing.roundToPx() +
- placeable.width <= constraints.maxWidth
+ placeable.width <= constraints.maxWidth
// Store current sequence information and start a new sequence.
fun startNewSequence() {
@@ -187,20 +187,22 @@ private fun AlertDialogFlowRow(
sequences.forEachIndexed { i, placeables ->
val childrenMainAxisSizes = IntArray(placeables.size) { j ->
placeables[j].width +
- if (j < placeables.lastIndex) mainAxisSpacing.roundToPx() else 0
+ if (j < placeables.lastIndex) mainAxisSpacing.roundToPx() else 0
}
val arrangement = Arrangement.End
val mainAxisPositions = IntArray(childrenMainAxisSizes.size) { 0 }
with(arrangement) {
arrange(
- mainAxisLayoutSize, childrenMainAxisSizes,
- layoutDirection, mainAxisPositions
+ mainAxisLayoutSize,
+ childrenMainAxisSizes,
+ layoutDirection,
+ mainAxisPositions,
)
}
placeables.forEachIndexed { j, placeable ->
placeable.place(
x = mainAxisPositions[j],
- y = crossAxisPositions[i]
+ y = crossAxisPositions[i],
)
}
}
@@ -210,4 +212,4 @@ private fun AlertDialogFlowRow(
private val _dialogButtonsPadding by lazy { PaddingValues(bottom = 8.dp, end = 6.dp) }
private val _dialogButtonsMainAxisSpacing by lazy { 8.dp }
-private val _dialogButtonsCrossAxisSpacing by lazy { 12.dp }
\ No newline at end of file
+private val _dialogButtonsCrossAxisSpacing by lazy { 12.dp }
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/datetimepicker/TimePickerDialog.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/datetimepicker/TimePickerDialog.kt
index 0a5c89b2..13eecb6b 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/datetimepicker/TimePickerDialog.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/datetimepicker/TimePickerDialog.kt
@@ -73,7 +73,7 @@ fun TimePickerDialog(
val pickerState = rememberTimePickerState(
initialHour = hour,
initialMinute = minute,
- is24Hour = DateFormat.is24HourFormat(LocalContext.current)
+ is24Hour = DateFormat.is24HourFormat(LocalContext.current),
)
val configuration = LocalConfiguration.current
var showingPicker by rememberSaveable { mutableStateOf(true) }
@@ -81,8 +81,8 @@ fun TimePickerDialog(
BasicAlertDialog(
onDismissRequest = onCancel,
properties = DialogProperties(
- usePlatformDefaultWidth = false
- )
+ usePlatformDefaultWidth = false,
+ ),
) {
Surface(
shape = MaterialTheme.shapes.extraLarge,
@@ -92,7 +92,7 @@ fun TimePickerDialog(
.height(IntrinsicSize.Min)
.background(
shape = MaterialTheme.shapes.extraLarge,
- color = MaterialTheme.colorScheme.surface
+ color = MaterialTheme.colorScheme.surface,
),
) {
if (configuration.screenHeightDp > 400) {
@@ -103,7 +103,7 @@ fun TimePickerDialog(
.fillMaxSize()
.semantics {
isTraversalGroup = true
- }
+ },
) {
IconButton(
modifier = Modifier
@@ -114,7 +114,8 @@ fun TimePickerDialog(
.size(64.dp, 72.dp)
.align(Alignment.BottomStart)
.zIndex(5f),
- onClick = { showingPicker = !showingPicker }) {
+ onClick = { showingPicker = !showingPicker },
+ ) {
val icon = if (showingPicker) {
Icons.Outlined.Keyboard
} else {
@@ -122,21 +123,21 @@ fun TimePickerDialog(
}
Icon(
imageVector = icon,
- contentDescription = stringResource(R.string.select_time_label)
+ contentDescription = stringResource(R.string.select_time_label),
)
}
}
}
Column(
modifier = Modifier.padding(24.dp),
- horizontalAlignment = Alignment.CenterHorizontally
+ horizontalAlignment = Alignment.CenterHorizontally,
) {
Text(
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 20.dp),
text = stringResource(R.string.select_time_label),
- style = MaterialTheme.typography.labelMedium
+ style = MaterialTheme.typography.labelMedium,
)
if (showingPicker && configuration.screenHeightDp > 400) {
TimePicker(state = pickerState)
@@ -146,14 +147,14 @@ fun TimePickerDialog(
Row(
modifier = Modifier
.height(40.dp)
- .fillMaxWidth()
+ .fillMaxWidth(),
) {
Spacer(modifier = Modifier.weight(1f))
TextButton(
- onClick = onCancel
+ onClick = onCancel,
) { Text(stringResource(R.string.cancel_label)) }
TextButton(
- onClick = { onConfirm(pickerState.hour, pickerState.minute) }
+ onClick = { onConfirm(pickerState.hour, pickerState.minute) },
) { Text(confirmLabel) }
}
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/ArCos.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/ArCos.kt
index 8939296f..7498b497 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/ArCos.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/ArCos.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/ArSin.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/ArSin.kt
index e599f6da..7cd91693 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/ArSin.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/ArSin.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/ArTan.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/ArTan.kt
index d34b78d9..209fc6c4 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/ArTan.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/ArTan.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Backspace.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Backspace.kt
index 06316c39..18854dba 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Backspace.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Backspace.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Brackets.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Brackets.kt
index 04fed675..7e941f47 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Brackets.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Brackets.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Clear.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Clear.kt
index 0ed708d8..6d3496b4 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Clear.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Clear.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Comma.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Comma.kt
index a233910e..c3702125 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Comma.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Comma.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Cos.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Cos.kt
index 69bccf7c..3e6c1668 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Cos.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Cos.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Deg.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Deg.kt
index dea1f07d..c3b3501d 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Deg.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Deg.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Divide.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Divide.kt
index 26862199..c31983f7 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Divide.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Divide.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Dot.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Dot.kt
index f38bd6e7..277967ea 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Dot.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Dot.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Equal.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Equal.kt
index fa0b216c..283cc9aa 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Equal.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Equal.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Euler.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Euler.kt
index 8eacdd48..ee1b64ac 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Euler.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Euler.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Ex.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Ex.kt
index 72a33a71..45cfe54c 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Ex.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Ex.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Factorial.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Factorial.kt
index b7d708f0..bf410f13 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Factorial.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Factorial.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Inv.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Inv.kt
index fa2029ed..92a6d71e 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Inv.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Inv.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key0.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key0.kt
index 90af3061..5974903c 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key0.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key0.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key1.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key1.kt
index 1fd52e39..58916266 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key1.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key1.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key2.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key2.kt
index 6e915ede..dd02d2a4 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key2.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key2.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key3.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key3.kt
index 5962764e..e4c911dc 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key3.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key3.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key4.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key4.kt
index 1ff3ee8f..dfe5027f 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key4.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key4.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key5.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key5.kt
index 19fa45ff..72b185db 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key5.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key5.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key6.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key6.kt
index 70eb77ed..a0f6f1b6 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key6.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key6.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key7.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key7.kt
index 785801b9..c6a5c26e 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key7.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key7.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key8.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key8.kt
index 7bef566b..cfad2206 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key8.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key8.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key9.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key9.kt
index 39d7e717..ef08ce93 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key9.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Key9.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyA.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyA.kt
index 97e03820..a6b979d6 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyA.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyA.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyB.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyB.kt
index 4cccb0e3..2038d84d 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyB.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyB.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyC.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyC.kt
index 6f1cd0e5..2905f176 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyC.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyC.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyD.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyD.kt
index 3c40989f..212e022b 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyD.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyD.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyE.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyE.kt
index 3b7bc1d6..539d904f 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyE.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyE.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyF.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyF.kt
index e7c16c90..cadbfd52 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyF.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/KeyF.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/LeftBracket.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/LeftBracket.kt
index 10ee2d38..cb84e029 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/LeftBracket.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/LeftBracket.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Ln.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Ln.kt
index 02e82940..37e79071 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Ln.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Ln.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Log.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Log.kt
index 25002cf2..818b4852 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Log.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Log.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Minus.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Minus.kt
index 46902090..37ab284c 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Minus.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Minus.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Modulo.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Modulo.kt
index 58609d95..4c56ff8f 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Modulo.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Modulo.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Multiply.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Multiply.kt
index b43aee08..1a417165 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Multiply.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Multiply.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Percent.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Percent.kt
index 6be0bc7b..57b863ce 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Percent.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Percent.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Pi.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Pi.kt
index 52c37011..b74cf3b2 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Pi.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Pi.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Plus.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Plus.kt
index af173873..56395cfb 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Plus.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Plus.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Power.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Power.kt
index 2200e939..cf4adaf2 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Power.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Power.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Power10.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Power10.kt
index 987c0f27..f77f67ed 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Power10.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Power10.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Rad.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Rad.kt
index 93295d95..0c2e89ae 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Rad.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Rad.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/RightBracket.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/RightBracket.kt
index 621da869..77b95f49 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/RightBracket.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/RightBracket.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Root.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Root.kt
index ff91fb88..4774e8b9 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Root.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Root.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Sin.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Sin.kt
index 702d8118..f559e945 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Sin.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Sin.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Tan.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Tan.kt
index 9c19cd11..91594972 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Tan.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/icons/iconpack/Tan.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.core.ui.common.icons.iconpack
import androidx.compose.ui.graphics.Color
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/ClipboardManagerExt.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/ClipboardManagerExt.kt
index a11ef8e8..97b8614c 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/ClipboardManagerExt.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/ClipboardManagerExt.kt
@@ -32,20 +32,20 @@ import com.sadellie.unitto.core.base.Token
*/
internal class ExpressionClipboardManager(
private val formatterSymbols: FormatterSymbols,
- private val clipboardManager: android.content.ClipboardManager
-): ClipboardManager {
+ private val clipboardManager: android.content.ClipboardManager,
+) : ClipboardManager {
override fun setText(annotatedString: AnnotatedString) = clipboardManager.setPrimaryClip(
ClipData.newPlainText(
PLAIN_TEXT_LABEL,
annotatedString
.text
- .replace(Token.Digit.dot, formatterSymbols.fractional)
- )
+ .replace(Token.Digit.dot, formatterSymbols.fractional),
+ ),
)
override fun getText(): AnnotatedString? = clipboardManager.primaryClip?.let { primaryClip ->
if (primaryClip.itemCount > 0) {
- val clipText = primaryClip.getItemAt(0)?.text ?:return@let null
+ val clipText = primaryClip.getItemAt(0)?.text ?: return@let null
clipText
.toString()
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/CursorFixer.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/CursorFixer.kt
index 5726deed..d9b2ecaf 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/CursorFixer.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/CursorFixer.kt
@@ -22,7 +22,6 @@ import com.sadellie.unitto.core.base.Token
import kotlin.math.abs
fun String.fixCursor(pos: Int, grouping: String): Int {
-
if (isEmpty()) return pos
// Best position if we move cursor left
@@ -75,7 +74,7 @@ private fun Int.isAtToken(str: String, token: String): Boolean {
return str
.substring(
startIndex = (this - checkBound).coerceAtLeast(0),
- endIndex = (this + checkBound).coerceAtMost(str.length)
+ endIndex = (this + checkBound).coerceAtMost(str.length),
)
.contains(token)
}
@@ -86,7 +85,6 @@ private fun Int.isAfterToken(str: String, token: String): Boolean {
.contains(token)
}
-
// This can also make [TextFieldValue.addTokens] better by checking tokens both ways. Needs more tests
fun String.tokenAfter(pos: Int): String {
Token.Func.allWithOpeningBracket.forEach {
@@ -96,23 +94,6 @@ fun String.tokenAfter(pos: Int): String {
return substring(pos, (pos + 1).coerceAtMost(this.length))
}
-//private fun String.numberNearby(cursor: Int): String {
-// val text = this
-//
-// var aheadCursor = cursor
-// var afterCursor = cursor
-//
-// while (text.tokenAhead(aheadCursor) in Token.Digit.allWithDot) {
-// aheadCursor--
-// }
-//
-// while (text.tokenAfter(afterCursor) in Token.Digit.allWithDot) {
-// afterCursor++
-// }
-//
-// return text.substring(aheadCursor, afterCursor)
-//}
-
private fun Int.isBeforeToken(str: String, token: String): Boolean {
return str
.substring(this, (this + token.length).coerceAtMost(str.length))
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/ExpressionTransformer.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/ExpressionTransformer.kt
index 2c0812b9..87965e91 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/ExpressionTransformer.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/ExpressionTransformer.kt
@@ -30,13 +30,13 @@ class ExpressionTransformer(private val formatterSymbols: FormatterSymbols) : Vi
val formatted = text.text.formatExpression(formatterSymbols)
return TransformedText(
text = AnnotatedString(formatted),
- offsetMapping = ExpressionMapping(text.text, formatted)
+ offsetMapping = ExpressionMapping(text.text, formatted),
)
}
inner class ExpressionMapping(
private val original: String,
- private val transformed: String
+ private val transformed: String,
) : OffsetMapping {
// Called when entering text (on each text change)
// Basically moves cursor to the right position
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/FixedInputTextFIeld.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/FixedInputTextFIeld.kt
index 79a37aac..90c0e655 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/FixedInputTextFIeld.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/FixedInputTextFIeld.kt
@@ -49,15 +49,15 @@ fun FixedExpressionInputTextField(
val clipboardManager = FormattedExpressionClipboardManager(
formatterSymbols = formatterSymbols,
clipboardManager = LocalContext.current.getSystemService(Context.CLIPBOARD_SERVICE)
- as android.content.ClipboardManager
+ as android.content.ClipboardManager,
)
CompositionLocalProvider(LocalClipboardManager provides clipboardManager) {
SelectionContainer(
- modifier = Modifier
+ modifier = Modifier
.horizontalScroll(rememberScrollState()) // Must be first
.clickable(onClick = onClick)
- .then(modifier)
+ .then(modifier),
) {
Text(
modifier = Modifier.fillMaxWidth(),
@@ -71,8 +71,8 @@ fun FixedExpressionInputTextField(
private class FormattedExpressionClipboardManager(
private val formatterSymbols: FormatterSymbols,
- private val clipboardManager: android.content.ClipboardManager
-): ClipboardManager {
+ private val clipboardManager: android.content.ClipboardManager,
+) : ClipboardManager {
override fun getText(): AnnotatedString? = null
override fun setText(annotatedString: AnnotatedString) {
@@ -81,8 +81,8 @@ private class FormattedExpressionClipboardManager(
PLAIN_TEXT_LABEL,
annotatedString
.text
- .replace(formatterSymbols.grouping, "")
- )
+ .replace(formatterSymbols.grouping, ""),
+ ),
)
}
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/FormatterExtensions.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/FormatterExtensions.kt
index cbf6a1ae..a3aff9aa 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/FormatterExtensions.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/FormatterExtensions.kt
@@ -51,7 +51,7 @@ internal fun String.clearAndFilterNumberBase(): String {
}
fun String.formatExpression(
- formatterSymbols: FormatterSymbols
+ formatterSymbols: FormatterSymbols,
): String {
var input = this
@@ -84,7 +84,7 @@ fun String.formatExpression(
}
private fun String.formatNumber(
- formatterSymbols: FormatterSymbols
+ formatterSymbols: FormatterSymbols,
): String {
val input = this
@@ -114,7 +114,7 @@ private fun String.leaveLegalTokensOnly(legalTokens: List): String {
val subs = streamOfTokens
.substring(
cursor,
- (cursor + token.length).coerceAtMost(streamOfTokens.length)
+ (cursor + token.length).coerceAtMost(streamOfTokens.length),
)
if (subs == token) {
// Got a digit, see if there are other digits coming after
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/InputTextField.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/InputTextField.kt
index c8ce2e52..f21773d1 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/InputTextField.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/InputTextField.kt
@@ -64,7 +64,7 @@ fun ExpressionTextField(
ExpressionClipboardManager(
formatterSymbols = formatterSymbols,
clipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE)
- as android.content.ClipboardManager
+ as android.content.ClipboardManager,
)
}
val expressionTransformer = remember(formatterSymbols) {
@@ -72,7 +72,7 @@ fun ExpressionTextField(
}
CompositionLocalProvider(
- LocalClipboardManager provides clipboardManager
+ LocalClipboardManager provides clipboardManager,
) {
AutoSizeTextField(
modifier = modifier,
@@ -85,7 +85,7 @@ fun ExpressionTextField(
textStyle = LocalNumberTypography.current.displayLarge.copy(textColor),
visualTransformation = expressionTransformer,
cursorBrush = SolidColor(MaterialTheme.colorScheme.onSurfaceVariant),
- minRatio = minRatio
+ minRatio = minRatio,
)
}
}
@@ -110,7 +110,7 @@ fun NumberBaseTextField(
readOnly = readOnly,
textStyle = LocalNumberTypography.current.displayLarge.copy(textColor),
cursorBrush = SolidColor(MaterialTheme.colorScheme.onSurfaceVariant),
- minRatio = minRatio
+ minRatio = minRatio,
)
}
@@ -132,7 +132,7 @@ fun SimpleTextField(
readOnly = readOnly,
textStyle = LocalNumberTypography.current.displayLarge.copy(textColor),
cursorBrush = SolidColor(MaterialTheme.colorScheme.onSurfaceVariant),
- minRatio = minRatio
+ minRatio = minRatio,
)
}
@@ -174,7 +174,7 @@ private fun AutoSizeTextField(
softWrap = false,
style = textStyle,
minRatio = minRatio,
- alignment = alignment
+ alignment = alignment,
) {
CompositionLocalProvider(
LocalTextInputService provides null,
@@ -204,8 +204,8 @@ private fun AutoSizeTextField(
text = placeholder!!,
style = style.copy(
textAlign = TextAlign.End,
- color = MaterialTheme.colorScheme.onSurface.copy(0.5f)
- )
+ color = MaterialTheme.colorScheme.onSurface.copy(0.5f),
+ ),
)
}
innerTextField()
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/OutlinedDecimalTextField.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/OutlinedDecimalTextField.kt
index 30c7a4d5..8df2b87f 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/OutlinedDecimalTextField.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/OutlinedDecimalTextField.kt
@@ -62,8 +62,8 @@ fun OutlinedDecimalTextField(
visualTransformation = expressionFormatter,
keyboardOptions = KeyboardOptions(
keyboardType = KeyboardType.Decimal,
- imeAction = imeAction
+ imeAction = imeAction,
),
- colors = colors
+ colors = colors,
)
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/TextFieldValueExtensions.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/TextFieldValueExtensions.kt
index 0427cb8d..6bb2005b 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/TextFieldValueExtensions.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/TextFieldValueExtensions.kt
@@ -30,7 +30,8 @@ fun TextFieldValue.addTokens(tokens: String): TextFieldValue {
Token.Operator.plus,
Token.Operator.multiply,
Token.Operator.divide,
- Token.Operator.power -> {
+ Token.Operator.power,
+ -> {
if (ahead == Token.Operator.plus) return deleteAheadAndAdd(tokens)
if (ahead == Token.Operator.minus) return deleteAheadAndAdd(tokens)
if (ahead == Token.Operator.multiply) return deleteAheadAndAdd(tokens)
@@ -50,7 +51,7 @@ fun TextFieldValue.addTokens(tokens: String): TextFieldValue {
return this.copy(
text = text.replaceRange(selection.start, selection.end, tokens),
- selection = TextRange(selection.start + tokens.length)
+ selection = TextRange(selection.start + tokens.length),
)
}
@@ -93,7 +94,7 @@ fun TextFieldValue.addBracket(): TextFieldValue {
Token.Operator.plus,
Token.Operator.minus,
Token.Operator.power,
- Token.Operator.leftBracket
+ Token.Operator.leftBracket,
)
if (text.tokenAhead(selection.start) in operators2) {
return addTokens(Token.Operator.leftBracket)
@@ -122,7 +123,7 @@ fun TextFieldValue.deleteTokens(): TextFieldValue {
return this.copy(
text = newText,
- selection = TextRange((newText.length - distanceFromEnd).coerceAtLeast(0))
+ selection = TextRange((newText.length - distanceFromEnd).coerceAtLeast(0)),
)
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/texttoolbar/FloatingTextActionModeCallback.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/texttoolbar/FloatingTextActionModeCallback.kt
index 90a5f2e0..5dcaa535 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/texttoolbar/FloatingTextActionModeCallback.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/texttoolbar/FloatingTextActionModeCallback.kt
@@ -27,7 +27,7 @@ import androidx.annotation.RequiresApi
@RequiresApi(Build.VERSION_CODES.M)
internal class FloatingTextActionModeCallback(
- private val callback: UnittoActionModeCallback
+ private val callback: UnittoActionModeCallback,
) : ActionMode.Callback2() {
override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
return callback.onActionItemClicked(mode, item)
@@ -48,14 +48,14 @@ internal class FloatingTextActionModeCallback(
override fun onGetContentRect(
mode: ActionMode?,
view: View?,
- outRect: android.graphics.Rect?
+ outRect: android.graphics.Rect?,
) {
val rect = callback.rect
outRect?.set(
rect.left.toInt(),
rect.top.toInt(),
rect.right.toInt(),
- rect.bottom.toInt()
+ rect.bottom.toInt(),
)
}
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/texttoolbar/UnittoActionModeCallback.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/texttoolbar/UnittoActionModeCallback.kt
index efa4681b..d8dc5af3 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/texttoolbar/UnittoActionModeCallback.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/texttoolbar/UnittoActionModeCallback.kt
@@ -33,7 +33,7 @@ internal class UnittoActionModeCallback(
var onCopyRequested: (() -> Unit)? = null,
var onPasteRequested: (() -> Unit)? = null,
var onCutRequested: (() -> Unit)? = null,
- var onSelectAllRequested: (() -> Unit)? = null
+ var onSelectAllRequested: (() -> Unit)? = null,
) {
fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
requireNotNull(menu)
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/texttoolbar/UnittoPrimaryTextActionModeCallback.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/texttoolbar/UnittoPrimaryTextActionModeCallback.kt
index 6bdd1c31..5462163f 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/texttoolbar/UnittoPrimaryTextActionModeCallback.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/texttoolbar/UnittoPrimaryTextActionModeCallback.kt
@@ -23,7 +23,7 @@ import android.view.Menu
import android.view.MenuItem
internal class UnittoPrimaryTextActionModeCallback(
- private val callback: UnittoActionModeCallback
+ private val callback: UnittoActionModeCallback,
) : ActionMode.Callback {
override fun onActionItemClicked(mode: ActionMode?, item: MenuItem?): Boolean {
return callback.onActionItemClicked(mode, item)
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/texttoolbar/UnittoTextToolbar.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/texttoolbar/UnittoTextToolbar.kt
index d66fc7b1..1c3c30c0 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/texttoolbar/UnittoTextToolbar.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/common/textfield/texttoolbar/UnittoTextToolbar.kt
@@ -29,7 +29,7 @@ class UnittoTextToolbar(
private val view: View,
private val copyCallback: () -> Unit,
private val pasteCallback: (() -> Unit)? = null,
- private val cutCallback: (() -> Unit)? = null
+ private val cutCallback: (() -> Unit)? = null,
) : TextToolbar {
private var actionMode: ActionMode? = null
@@ -42,7 +42,7 @@ class UnittoTextToolbar(
onCopyRequested: (() -> Unit)?,
onPasteRequested: (() -> Unit)?,
onCutRequested: (() -> Unit)?,
- onSelectAllRequested: (() -> Unit)?
+ onSelectAllRequested: (() -> Unit)?,
) {
textActionModeCallback.rect = rect
textActionModeCallback.onCopyRequested = copyCallback
@@ -66,17 +66,17 @@ class UnittoTextToolbar(
private fun startActionMode(
view: View,
- textActionModeCallback: UnittoActionModeCallback
+ textActionModeCallback: UnittoActionModeCallback,
): ActionMode {
return if (Build.VERSION.SDK_INT >= 23) {
view.startActionMode(
FloatingTextActionModeCallback(textActionModeCallback),
- ActionMode.TYPE_FLOATING
+ ActionMode.TYPE_FLOATING,
)
} else {
// Old devices use toolbar instead of a floating menu
view.startActionMode(
- UnittoPrimaryTextActionModeCallback(textActionModeCallback)
+ UnittoPrimaryTextActionModeCallback(textActionModeCallback),
)
}
}
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/datetime/ZonedDateTimeUtils.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/datetime/ZonedDateTimeUtils.kt
index 9800dbc2..e9794708 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/datetime/ZonedDateTimeUtils.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/datetime/ZonedDateTimeUtils.kt
@@ -83,10 +83,11 @@ fun ZonedDateTime.formatTimeHours(
locale: Locale,
is24Hour: Boolean,
): String =
- if (is24Hour)
+ if (is24Hour) {
format(UnittoDateTimeFormatter.time24Hours(locale))
- else
+ } else {
format(UnittoDateTimeFormatter.time12Hours(locale))
+ }
/**
* @see UnittoDateTimeFormatter.timeMinutes
@@ -132,7 +133,7 @@ fun ZonedDateTime.formatDateDayMonthYear(
* @see UnittoDateTimeFormatter.dateWeekDayMonthYear
*/
fun LocalDate.formatDateWeekDayMonthYear(
- locale: Locale
+ locale: Locale,
): String =
format(UnittoDateTimeFormatter.dateWeekDayMonthYear(locale))
@@ -155,7 +156,6 @@ fun LocalDate.formatDateWeekDayMonthYear(
fun ZonedDateTime.formatOffset(
currentTime: ZonedDateTime,
): String? {
-
val offsetFixed = ChronoUnit.SECONDS.between(currentTime, this)
var resultBuffer = ""
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/model/DrawerItem.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/model/DrawerItem.kt
index e4123d27..99e21f93 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/model/DrawerItem.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/model/DrawerItem.kt
@@ -43,7 +43,7 @@ sealed class DrawerItem(
@StringRes val name: Int,
val shortcut: Shortcut?,
val selectedIcon: ImageVector,
- val defaultIcon: ImageVector
+ val defaultIcon: ImageVector,
) {
data object Calculator : DrawerItem(
graph = TopLevelDestinations.CALCULATOR_GRAPH,
@@ -52,10 +52,10 @@ sealed class DrawerItem(
shortcut = Shortcut(
R.string.calculator_title,
R.string.calculator_title,
- R.drawable.ic_shortcut_calculator
+ R.drawable.ic_shortcut_calculator,
),
selectedIcon = Icons.Filled.Calculate,
- defaultIcon = Icons.Outlined.Calculate
+ defaultIcon = Icons.Outlined.Calculate,
)
data object Converter : DrawerItem(
@@ -65,10 +65,10 @@ sealed class DrawerItem(
shortcut = Shortcut(
R.string.unit_converter_title,
R.string.unit_converter_title,
- R.drawable.ic_shortcut_unit_converter
+ R.drawable.ic_shortcut_unit_converter,
),
selectedIcon = Icons.Filled.SwapHoriz,
- defaultIcon = Icons.Outlined.SwapHoriz
+ defaultIcon = Icons.Outlined.SwapHoriz,
)
data object DateCalculator : DrawerItem(
@@ -78,10 +78,10 @@ sealed class DrawerItem(
shortcut = Shortcut(
R.string.date_calculator_title,
R.string.date_calculator_title,
- R.drawable.ic_shortcut_date_calculator
+ R.drawable.ic_shortcut_date_calculator,
),
selectedIcon = Icons.Filled.Event,
- defaultIcon = Icons.Outlined.Event
+ defaultIcon = Icons.Outlined.Event,
)
data object TimeZones : DrawerItem(
@@ -91,10 +91,10 @@ sealed class DrawerItem(
shortcut = Shortcut(
R.string.time_zone_title,
R.string.time_zone_title,
- R.drawable.ic_shortcut_time_zone
+ R.drawable.ic_shortcut_time_zone,
),
selectedIcon = Icons.Filled.Schedule,
- defaultIcon = Icons.Outlined.Schedule
+ defaultIcon = Icons.Outlined.Schedule,
)
data object BodyMass : DrawerItem(
@@ -104,10 +104,10 @@ sealed class DrawerItem(
shortcut = Shortcut(
R.string.body_mass_title,
R.string.body_mass_title,
- R.drawable.ic_shortcut_body_mass
+ R.drawable.ic_shortcut_body_mass,
),
selectedIcon = Icons.Filled.AccessibilityNew,
- defaultIcon = Icons.Outlined.AccessibilityNew
+ defaultIcon = Icons.Outlined.AccessibilityNew,
)
data object Settings : DrawerItem(
@@ -116,7 +116,7 @@ sealed class DrawerItem(
name = R.string.settings_title,
shortcut = null,
selectedIcon = Icons.Filled.Settings,
- defaultIcon = Icons.Outlined.Settings
+ defaultIcon = Icons.Outlined.Settings,
)
companion object {
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/theme/Color.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/theme/Color.kt
index c9a61016..40c23333 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/theme/Color.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/theme/Color.kt
@@ -46,7 +46,6 @@ val md_theme_light_outline = Color(0xFF727970)
val md_theme_light_inverseOnSurface = Color(0xFFf0f1eb)
val md_theme_light_inverseSurface = Color(0xFF2f312e)
-
val md_theme_dark_primary = Color(0xFF87d991)
val md_theme_dark_onPrimary = Color(0xFF003911)
val md_theme_dark_primaryContainer = Color(0xFF00531d)
diff --git a/core/ui/src/main/java/com/sadellie/unitto/core/ui/theme/Type.kt b/core/ui/src/main/java/com/sadellie/unitto/core/ui/theme/Type.kt
index 5b881321..bc7a9759 100644
--- a/core/ui/src/main/java/com/sadellie/unitto/core/ui/theme/Type.kt
+++ b/core/ui/src/main/java/com/sadellie/unitto/core/ui/theme/Type.kt
@@ -83,7 +83,7 @@ val TypographySystem by lazy { Typography() }
private val FontFamily.Companion.lato: FontFamily
get() = FontFamily(
- Font(R.font.lato_regular, weight = FontWeight.Normal)
+ Font(R.font.lato_regular, weight = FontWeight.Normal),
)
@Preview(widthDp = 480)
@@ -113,7 +113,7 @@ private fun PreviewSystemTypography() {
Text(
text = "$label 123",
style = style,
- color = MaterialTheme.colorScheme.onBackground
+ color = MaterialTheme.colorScheme.onBackground,
)
}
}
@@ -124,7 +124,7 @@ private fun PreviewSystemTypography() {
@Composable
private fun PreviewNumberTypography() {
CompositionLocalProvider(
- LocalNumberTypography provides NumberTypographyUnitto
+ LocalNumberTypography provides NumberTypographyUnitto,
) {
val textStyles = mapOf(
"displayLarge" to LocalNumberTypography.current.displayLarge,
@@ -138,7 +138,7 @@ private fun PreviewNumberTypography() {
Text(
text = "$label 123 Error 7 1⁄2",
style = style,
- color = MaterialTheme.colorScheme.onBackground
+ color = MaterialTheme.colorScheme.onBackground,
)
}
}
diff --git a/core/ui/src/test/java/com/sadellie/unitto/core/ui/CleanAndFilterExpression.kt b/core/ui/src/test/java/com/sadellie/unitto/core/ui/CleanAndFilterExpression.kt
index 0fc30be9..99d3882a 100644
--- a/core/ui/src/test/java/com/sadellie/unitto/core/ui/CleanAndFilterExpression.kt
+++ b/core/ui/src/test/java/com/sadellie/unitto/core/ui/CleanAndFilterExpression.kt
@@ -25,9 +25,9 @@ import org.junit.Assert.assertEquals
import org.junit.Test
class CleanAndFilterExpression {
-
+
private val formatterSymbols = FormatterSymbols(Token.COMMA, Token.PERIOD)
-
+
@Test
fun noAdditionalSymbols() {
assertEquals("123", "123".clearAndFilterExpression(formatterSymbols))
diff --git a/core/ui/src/test/java/com/sadellie/unitto/core/ui/FormatterExpressionTest.kt b/core/ui/src/test/java/com/sadellie/unitto/core/ui/FormatterExpressionTest.kt
index 038e33fa..be5dfa19 100644
--- a/core/ui/src/test/java/com/sadellie/unitto/core/ui/FormatterExpressionTest.kt
+++ b/core/ui/src/test/java/com/sadellie/unitto/core/ui/FormatterExpressionTest.kt
@@ -89,4 +89,4 @@ class FormatterExpressionTest {
assertEquals("((((((((", SOME_BRACKETS.format())
assertEquals("1.600 1234⁄56789", FRACTION_VALUE.format())
}
-}
\ No newline at end of file
+}
diff --git a/core/ui/src/test/java/com/sadellie/unitto/core/ui/TextFieldValueExtensionsTest.kt b/core/ui/src/test/java/com/sadellie/unitto/core/ui/TextFieldValueExtensionsTest.kt
index 993195aa..7544b057 100644
--- a/core/ui/src/test/java/com/sadellie/unitto/core/ui/TextFieldValueExtensionsTest.kt
+++ b/core/ui/src/test/java/com/sadellie/unitto/core/ui/TextFieldValueExtensionsTest.kt
@@ -332,7 +332,7 @@ class TextFieldValueExtensionsTest {
.replace("-", Token.Operator.minus)
.replace("/", Token.Operator.divide)
.replace("*", Token.Operator.multiply),
- selection = TextRange(selectionStart, selectionEnd)
+ selection = TextRange(selectionStart, selectionEnd),
)
}
}
diff --git a/data/backup/src/androidTest/java/com/sadellie/unitto/data/backup/BackupManagerTest.kt b/data/backup/src/androidTest/java/com/sadellie/unitto/data/backup/BackupManagerTest.kt
index 6c83f574..97e64996 100644
--- a/data/backup/src/androidTest/java/com/sadellie/unitto/data/backup/BackupManagerTest.kt
+++ b/data/backup/src/androidTest/java/com/sadellie/unitto/data/backup/BackupManagerTest.kt
@@ -19,7 +19,6 @@
package com.sadellie.unitto.data.backup
import androidx.test.ext.junit.runners.AndroidJUnit4
-import org.junit.Assert.*
import org.junit.runner.RunWith
/**
diff --git a/data/calculator/src/main/java/com/sadellie/unitto/data/calculator/CalculatorHistoryRepositoryImpl.kt b/data/calculator/src/main/java/com/sadellie/unitto/data/calculator/CalculatorHistoryRepositoryImpl.kt
index 7feb497a..ec24df7d 100644
--- a/data/calculator/src/main/java/com/sadellie/unitto/data/calculator/CalculatorHistoryRepositoryImpl.kt
+++ b/data/calculator/src/main/java/com/sadellie/unitto/data/calculator/CalculatorHistoryRepositoryImpl.kt
@@ -30,7 +30,7 @@ import java.util.Date
import javax.inject.Inject
class CalculatorHistoryRepositoryImpl @Inject constructor(
- private val calculatorHistoryDao: CalculatorHistoryDao
+ private val calculatorHistoryDao: CalculatorHistoryDao,
) : CalculatorHistoryRepository {
/**
* Calculator history sorted by [CalculatorHistoryEntity.timestamp] from new to old (DESC).
@@ -42,14 +42,14 @@ class CalculatorHistoryRepositoryImpl @Inject constructor(
override suspend fun add(
expression: String,
- result: String
+ result: String,
) {
calculatorHistoryDao.insert(
CalculatorHistoryEntity(
timestamp = System.currentTimeMillis(),
expression = expression,
- result = result
- )
+ result = result,
+ ),
)
}
@@ -67,7 +67,7 @@ class CalculatorHistoryRepositoryImpl @Inject constructor(
id = it.entityId,
date = Date(it.timestamp),
expression = it.expression,
- result = it.result
+ result = it.result,
)
}
}
diff --git a/data/common/src/main/java/com/sadellie/unitto/data/common/BigDecimalUtils.kt b/data/common/src/main/java/com/sadellie/unitto/data/common/BigDecimalUtils.kt
index 3b5c0acb..07057c81 100644
--- a/data/common/src/main/java/com/sadellie/unitto/data/common/BigDecimalUtils.kt
+++ b/data/common/src/main/java/com/sadellie/unitto/data/common/BigDecimalUtils.kt
@@ -26,7 +26,7 @@ import kotlin.math.log10
fun BigDecimal.format(
scale: Int,
- outputFormat: Int
+ outputFormat: Int,
): String {
return this
.setMinimumRequiredScale(scale)
@@ -85,9 +85,9 @@ internal fun BigDecimal.setMinimumRequiredScale(prefScale: Int): BigDecimal {
-floor(log10(this.abs().remainder(BigDecimal.ONE).toDouble())).toInt()
} else {
0
- }
+ },
),
- RoundingMode.HALF_EVEN
+ RoundingMode.HALF_EVEN,
)
}
diff --git a/data/common/src/main/java/com/sadellie/unitto/data/common/FlowUtils.kt b/data/common/src/main/java/com/sadellie/unitto/data/common/FlowUtils.kt
index 087040dc..f0702c5d 100644
--- a/data/common/src/main/java/com/sadellie/unitto/data/common/FlowUtils.kt
+++ b/data/common/src/main/java/com/sadellie/unitto/data/common/FlowUtils.kt
@@ -103,7 +103,7 @@ fun combine(
flow5,
flow6,
flow7,
- flow8
+ flow8,
) { args: Array<*> ->
transform(
args[0] as T1,
@@ -129,44 +129,6 @@ fun combine(
flow8: Flow,
flow9: Flow,
transform: suspend (T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R,
-): Flow =
- kotlinx.coroutines.flow.combine(
- flow,
- flow2,
- flow3,
- flow4,
- flow5,
- flow6,
- flow7,
- flow8,
- flow9
- ) { args: Array<*> ->
- transform(
- args[0] as T1,
- args[1] as T2,
- args[2] as T3,
- args[3] as T4,
- args[4] as T5,
- args[5] as T6,
- args[6] as T7,
- args[7] as T8,
- args[8] as T9,
- )
- }
-
-@Suppress("UNCHECKED_CAST", "UNUSED")
-fun combine(
- flow: Flow,
- flow2: Flow,
- flow3: Flow,
- flow4: Flow,
- flow5: Flow,
- flow6: Flow,
- flow7: Flow,
- flow8: Flow,
- flow9: Flow,
- flow10: Flow,
- transform: suspend (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R,
): Flow =
kotlinx.coroutines.flow.combine(
flow,
@@ -178,7 +140,6 @@ fun combine(
flow7,
flow8,
flow9,
- flow10
) { args: Array<*> ->
transform(
args[0] as T1,
@@ -190,7 +151,6 @@ fun combine(
args[6] as T7,
args[7] as T8,
args[8] as T9,
- args[9] as T10,
)
}
diff --git a/data/common/src/main/java/com/sadellie/unitto/data/common/StringUtils.kt b/data/common/src/main/java/com/sadellie/unitto/data/common/StringUtils.kt
index 02f772f6..1b35a5d5 100644
--- a/data/common/src/main/java/com/sadellie/unitto/data/common/StringUtils.kt
+++ b/data/common/src/main/java/com/sadellie/unitto/data/common/StringUtils.kt
@@ -50,7 +50,7 @@ fun String.lev(secondString: String): Int {
// Insert
cost[j] + 1,
// Delete
- newCost[j - 1] + 1
+ newCost[j - 1] + 1,
)
}
@@ -62,7 +62,6 @@ fun String.lev(secondString: String): Int {
}
fun String.isExpression(): Boolean {
-
if (isEmpty()) return false
// Positive numbers and zero
diff --git a/data/common/src/test/java/com/sadellie/unitto/data/common/IsExpressionText.kt b/data/common/src/test/java/com/sadellie/unitto/data/common/IsExpressionText.kt
index c62fc57b..a088d8c2 100644
--- a/data/common/src/test/java/com/sadellie/unitto/data/common/IsExpressionText.kt
+++ b/data/common/src/test/java/com/sadellie/unitto/data/common/IsExpressionText.kt
@@ -21,7 +21,6 @@ package com.sadellie.unitto.data.common
import org.junit.Assert.assertEquals
import org.junit.Test
-
class IsExpressionText {
@Test
fun `empty string`() = assertEquals(false, "".isExpression())
diff --git a/data/common/src/test/java/com/sadellie/unitto/data/common/LevenshteinTest.kt b/data/common/src/test/java/com/sadellie/unitto/data/common/LevenshteinTest.kt
index cafb73ee..49f89fa5 100644
--- a/data/common/src/test/java/com/sadellie/unitto/data/common/LevenshteinTest.kt
+++ b/data/common/src/test/java/com/sadellie/unitto/data/common/LevenshteinTest.kt
@@ -62,4 +62,4 @@ class LevenshteinTest {
fun levDifferentCases() {
assertEquals(0, "red truck".lev("red TRUCK"))
}
-}
\ No newline at end of file
+}
diff --git a/data/common/src/test/java/com/sadellie/unitto/data/common/MinimumRequiredScaleTest.kt b/data/common/src/test/java/com/sadellie/unitto/data/common/MinimumRequiredScaleTest.kt
index 261c238b..c5d1a39a 100644
--- a/data/common/src/test/java/com/sadellie/unitto/data/common/MinimumRequiredScaleTest.kt
+++ b/data/common/src/test/java/com/sadellie/unitto/data/common/MinimumRequiredScaleTest.kt
@@ -44,4 +44,4 @@ class MinimumRequiredScaleTest {
val bd = BigDecimal("0.000000123456").setMinimumRequiredScale(9)
assertEquals("0.000000123", bd.toPlainString())
}
-}
\ No newline at end of file
+}
diff --git a/data/converter/src/main/java/com/sadellie/unitto/data/converter/DataStoreModule.kt b/data/converter/src/main/java/com/sadellie/unitto/data/converter/DataStoreModule.kt
index 177bb65b..2bd8d9cc 100644
--- a/data/converter/src/main/java/com/sadellie/unitto/data/converter/DataStoreModule.kt
+++ b/data/converter/src/main/java/com/sadellie/unitto/data/converter/DataStoreModule.kt
@@ -35,12 +35,12 @@ class DataStoreModule {
fun provideUnitsRepository(
unitsDao: UnitsDao,
currencyRatesDao: CurrencyRatesDao,
- @ApplicationContext appContext: Context
+ @ApplicationContext appContext: Context,
): UnitsRepository {
return UnitsRepositoryImpl(
unitsDao = unitsDao,
currencyRatesDao = currencyRatesDao,
- mContext = appContext
+ mContext = appContext,
)
}
}
diff --git a/data/converter/src/main/java/com/sadellie/unitto/data/converter/UnitID.kt b/data/converter/src/main/java/com/sadellie/unitto/data/converter/UnitID.kt
index 2ba10d20..f78aa40d 100644
--- a/data/converter/src/main/java/com/sadellie/unitto/data/converter/UnitID.kt
+++ b/data/converter/src/main/java/com/sadellie/unitto/data/converter/UnitID.kt
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+@file:Suppress("ktlint:standard:property-naming")
+
package com.sadellie.unitto.data.converter
/**
diff --git a/data/converter/src/main/java/com/sadellie/unitto/data/converter/UnitsRepositoryImpl.kt b/data/converter/src/main/java/com/sadellie/unitto/data/converter/UnitsRepositoryImpl.kt
index 39947fca..9b2a6930 100644
--- a/data/converter/src/main/java/com/sadellie/unitto/data/converter/UnitsRepositoryImpl.kt
+++ b/data/converter/src/main/java/com/sadellie/unitto/data/converter/UnitsRepositoryImpl.kt
@@ -73,36 +73,36 @@ class UnitsRepositoryImpl @Inject constructor(
private val currencyRatesDao: CurrencyRatesDao,
@ApplicationContext private val mContext: Context,
) : UnitsRepository {
- private val _inMemoryUnits = MutableStateFlow(
+ private val inMemoryUnits = MutableStateFlow(
lengthCollection +
- currencyCollection +
- massCollection +
- speedCollection +
- temperatureCollection +
- areaCollection +
- timeCollection +
- volumeCollection +
- dataCollection +
- pressureCollection +
- accelerationCollection +
- energyCollection +
- powerCollection +
- angleCollection +
- dataTransferCollection +
- fluxCollection +
- numberBaseCollection +
- electrostaticCapacitance +
- prefixCollection +
- forceCollection +
- torqueCollection +
- flowRateCollection +
- luminanceCollection +
- fuelConsumptionCollection
+ currencyCollection +
+ massCollection +
+ speedCollection +
+ temperatureCollection +
+ areaCollection +
+ timeCollection +
+ volumeCollection +
+ dataCollection +
+ pressureCollection +
+ accelerationCollection +
+ energyCollection +
+ powerCollection +
+ angleCollection +
+ dataTransferCollection +
+ fluxCollection +
+ numberBaseCollection +
+ electrostaticCapacitance +
+ prefixCollection +
+ forceCollection +
+ torqueCollection +
+ flowRateCollection +
+ luminanceCollection +
+ fuelConsumptionCollection,
)
override val units: Flow> = combine(
unitsDao.getAllFlow(),
- _inMemoryUnits
+ inMemoryUnits,
) { basedList, inMemoryList ->
return@combine inMemoryList.map { inMemoryUnit ->
val inBaseUnit = basedList.find { it.unitId == inMemoryUnit.id }
@@ -110,7 +110,7 @@ class UnitsRepositoryImpl @Inject constructor(
inMemoryUnit.clone(
isFavorite = inBaseUnit.isFavorite,
counter = inBaseUnit.frequency,
- pairId = inBaseUnit.pairedUnitId
+ pairId = inBaseUnit.pairedUnitId,
)
}
}
@@ -131,8 +131,8 @@ class UnitsRepositoryImpl @Inject constructor(
unitsDao.insertUnit(
UnitsEntity(
unitId = unit.id,
- isFavorite = true
- )
+ isFavorite = true,
+ ),
)
} else {
unitsDao.insertUnit(
@@ -140,8 +140,8 @@ class UnitsRepositoryImpl @Inject constructor(
unitId = basedUnit.unitId,
isFavorite = !basedUnit.isFavorite,
pairedUnitId = basedUnit.pairedUnitId,
- frequency = basedUnit.frequency
- )
+ frequency = basedUnit.frequency,
+ ),
)
}
}
@@ -153,8 +153,8 @@ class UnitsRepositoryImpl @Inject constructor(
unitsDao.insertUnit(
UnitsEntity(
unitId = unit.id,
- frequency = 1
- )
+ frequency = 1,
+ ),
)
} else {
unitsDao.insertUnit(
@@ -162,8 +162,8 @@ class UnitsRepositoryImpl @Inject constructor(
unitId = basedUnit.unitId,
isFavorite = basedUnit.isFavorite,
pairedUnitId = basedUnit.pairedUnitId,
- frequency = basedUnit.frequency + 1
- )
+ frequency = basedUnit.frequency + 1,
+ ),
)
}
}
@@ -175,8 +175,8 @@ class UnitsRepositoryImpl @Inject constructor(
unitsDao.insertUnit(
UnitsEntity(
unitId = unit.id,
- pairedUnitId = pair.id
- )
+ pairedUnitId = pair.id,
+ ),
)
} else {
unitsDao.insertUnit(
@@ -184,8 +184,8 @@ class UnitsRepositoryImpl @Inject constructor(
unitId = basedUnit.unitId,
isFavorite = basedUnit.isFavorite,
pairedUnitId = pair.id,
- frequency = basedUnit.frequency
- )
+ frequency = basedUnit.frequency,
+ ),
)
}
}
@@ -203,7 +203,7 @@ class UnitsRepositoryImpl @Inject constructor(
baseUnitId = unit.id,
date = epochDay,
pairUnitId = pairId,
- pairUnitValue = BigDecimal.valueOf(pairValue)
+ pairUnitValue = BigDecimal.valueOf(pairValue),
)
}
currencyRatesDao.insertRates(rates)
@@ -213,7 +213,7 @@ class UnitsRepositoryImpl @Inject constructor(
Log.d("UnitsRepository", "Skipped update: $e")
}
}
- _inMemoryUnits.update { units ->
+ inMemoryUnits.update { units ->
units.map { localUnit ->
if (localUnit.group != UnitGroup.CURRENCY) return@map localUnit
if (localUnit !is ReverseUnit) return@map localUnit
diff --git a/data/converter/src/main/java/com/sadellie/unitto/data/converter/remote/CurrencyApiService.kt b/data/converter/src/main/java/com/sadellie/unitto/data/converter/remote/CurrencyApiService.kt
index 79aaf93e..a1064042 100644
--- a/data/converter/src/main/java/com/sadellie/unitto/data/converter/remote/CurrencyApiService.kt
+++ b/data/converter/src/main/java/com/sadellie/unitto/data/converter/remote/CurrencyApiService.kt
@@ -44,8 +44,8 @@ interface CurrencyApiService {
*/
@GET("{baseCurrency}.json")
suspend fun getCurrencyPairs(
- @Path("baseCurrency") baseCurrency: String
- ) : CurrencyUnitResponse
+ @Path("baseCurrency") baseCurrency: String,
+ ): CurrencyUnitResponse
}
object CurrencyApi {
diff --git a/data/converter/src/main/java/com/sadellie/unitto/data/converter/remote/CurrencyUnitResponse.kt b/data/converter/src/main/java/com/sadellie/unitto/data/converter/remote/CurrencyUnitResponse.kt
index dacfbf3a..48228a93 100644
--- a/data/converter/src/main/java/com/sadellie/unitto/data/converter/remote/CurrencyUnitResponse.kt
+++ b/data/converter/src/main/java/com/sadellie/unitto/data/converter/remote/CurrencyUnitResponse.kt
@@ -29,7 +29,7 @@ import com.squareup.moshi.ToJson
*/
data class CurrencyUnitResponse(
val date: String,
- val currency: Map
+ val currency: Map,
)
/**
@@ -37,13 +37,15 @@ data class CurrencyUnitResponse(
*/
internal class CurrencyAdapter {
@Suppress("UNUSED", "UNUSED_PARAMETER", "SameReturnValue")
- @ToJson fun toJson(card: CurrencyUnitResponse): String? = null
+ @ToJson
+ fun toJson(card: CurrencyUnitResponse): String? = null
@Suppress("UNUSED", "UNCHECKED_CAST")
- @FromJson fun fromJson(response: Map): CurrencyUnitResponse {
+ @FromJson
+ fun fromJson(response: Map): CurrencyUnitResponse {
return CurrencyUnitResponse(
date = response["date"] as String,
- currency = (response[response.keys.elementAt(1)]) as Map
+ currency = (response[response.keys.elementAt(1)]) as Map,
)
}
}
diff --git a/data/converter/src/test/java/com/sadellie/unitto/data/converter/AllUnitsTest.kt b/data/converter/src/test/java/com/sadellie/unitto/data/converter/AllUnitsTest.kt
index 572d99f0..1f571d0c 100644
--- a/data/converter/src/test/java/com/sadellie/unitto/data/converter/AllUnitsTest.kt
+++ b/data/converter/src/test/java/com/sadellie/unitto/data/converter/AllUnitsTest.kt
@@ -58,29 +58,29 @@ class AllUnitsTest {
private var history: MutableMap> = mutableMapOf()
private val allUnits = lengthCollection +
- currencyCollection +
- massCollection +
- speedCollection +
- temperatureCollection +
- areaCollection +
- timeCollection +
- volumeCollection +
- dataCollection +
- pressureCollection +
- accelerationCollection +
- energyCollection +
- powerCollection +
- angleCollection +
- dataTransferCollection +
- fluxCollection +
- numberBaseCollection +
- electrostaticCapacitance +
- prefixCollection +
- forceCollection +
- torqueCollection +
- flowRateCollection +
- luminanceCollection +
- fuelConsumptionCollection
+ currencyCollection +
+ massCollection +
+ speedCollection +
+ temperatureCollection +
+ areaCollection +
+ timeCollection +
+ volumeCollection +
+ dataCollection +
+ pressureCollection +
+ accelerationCollection +
+ energyCollection +
+ powerCollection +
+ angleCollection +
+ dataTransferCollection +
+ fluxCollection +
+ numberBaseCollection +
+ electrostaticCapacitance +
+ prefixCollection +
+ forceCollection +
+ torqueCollection +
+ flowRateCollection +
+ luminanceCollection +
+ fuelConsumptionCollection
@Test
fun testAcceleration() = testWithUnits {
diff --git a/data/database/src/main/java/com/sadellie/unitto/data/database/CalculatorHistoryEntity.kt b/data/database/src/main/java/com/sadellie/unitto/data/database/CalculatorHistoryEntity.kt
index f27503f3..f7b547c9 100644
--- a/data/database/src/main/java/com/sadellie/unitto/data/database/CalculatorHistoryEntity.kt
+++ b/data/database/src/main/java/com/sadellie/unitto/data/database/CalculatorHistoryEntity.kt
@@ -27,5 +27,5 @@ class CalculatorHistoryEntity(
@PrimaryKey(autoGenerate = true) val entityId: Int = 0,
@ColumnInfo(name = "timestamp") val timestamp: Long,
@ColumnInfo(name = "expression") val expression: String,
- @ColumnInfo(name = "result") val result: String
+ @ColumnInfo(name = "result") val result: String,
)
diff --git a/data/database/src/main/java/com/sadellie/unitto/data/database/CurrencyRatesEntity.kt b/data/database/src/main/java/com/sadellie/unitto/data/database/CurrencyRatesEntity.kt
index e1594db0..65a03157 100644
--- a/data/database/src/main/java/com/sadellie/unitto/data/database/CurrencyRatesEntity.kt
+++ b/data/database/src/main/java/com/sadellie/unitto/data/database/CurrencyRatesEntity.kt
@@ -29,5 +29,5 @@ class CurrencyRatesEntity(
@ColumnInfo(name = "base_unit_id") val baseUnitId: String,
@ColumnInfo(name = "timestamp") val date: Long,
@ColumnInfo(name = "pair_unit_id") val pairUnitId: String,
- @ColumnInfo(name = "pair_unit_value") val pairUnitValue: BigDecimal?
+ @ColumnInfo(name = "pair_unit_value") val pairUnitValue: BigDecimal?,
)
diff --git a/data/database/src/main/java/com/sadellie/unitto/data/database/TimeZoneDao.kt b/data/database/src/main/java/com/sadellie/unitto/data/database/TimeZoneDao.kt
index 2153ba7c..4e2bf7a0 100644
--- a/data/database/src/main/java/com/sadellie/unitto/data/database/TimeZoneDao.kt
+++ b/data/database/src/main/java/com/sadellie/unitto/data/database/TimeZoneDao.kt
@@ -43,7 +43,7 @@ interface TimeZoneDao {
TimeZoneEntity(
id = id,
position = getMaxPosition() + 1,
- )
+ ),
)
}
diff --git a/data/database/src/main/java/com/sadellie/unitto/data/database/UnittoDatabase.kt b/data/database/src/main/java/com/sadellie/unitto/data/database/UnittoDatabase.kt
index 42ccc300..cde0d686 100644
--- a/data/database/src/main/java/com/sadellie/unitto/data/database/UnittoDatabase.kt
+++ b/data/database/src/main/java/com/sadellie/unitto/data/database/UnittoDatabase.kt
@@ -34,11 +34,11 @@ import com.sadellie.unitto.data.database.converters.Converters
CurrencyRatesEntity::class,
],
autoMigrations = [
- AutoMigration (from = 1, to = 2),
- AutoMigration (from = 2, to = 3),
- AutoMigration (from = 3, to = 4),
- AutoMigration (from = 4, to = 5),
- ]
+ AutoMigration(from = 1, to = 2),
+ AutoMigration(from = 2, to = 3),
+ AutoMigration(from = 3, to = 4),
+ AutoMigration(from = 4, to = 5),
+ ],
)
@TypeConverters(Converters::class)
abstract class UnittoDatabase : RoomDatabase() {
diff --git a/data/database/src/main/java/com/sadellie/unitto/data/database/UnittoDatabaseModule.kt b/data/database/src/main/java/com/sadellie/unitto/data/database/UnittoDatabaseModule.kt
index 420fecc8..ea0f9b9d 100644
--- a/data/database/src/main/java/com/sadellie/unitto/data/database/UnittoDatabaseModule.kt
+++ b/data/database/src/main/java/com/sadellie/unitto/data/database/UnittoDatabaseModule.kt
@@ -79,7 +79,7 @@ class UnittoDatabaseModule {
return Room.databaseBuilder(
appContext.applicationContext,
UnittoDatabase::class.java,
- DATABASE_NAME
+ DATABASE_NAME,
).build()
}
-}
\ No newline at end of file
+}
diff --git a/data/database/src/main/java/com/sadellie/unitto/data/database/converters/Converters.kt b/data/database/src/main/java/com/sadellie/unitto/data/database/converters/Converters.kt
index 8fcacf2a..f419c05e 100644
--- a/data/database/src/main/java/com/sadellie/unitto/data/database/converters/Converters.kt
+++ b/data/database/src/main/java/com/sadellie/unitto/data/database/converters/Converters.kt
@@ -36,5 +36,4 @@ class Converters {
} catch (e: Exception) {
null
}
-
}
diff --git a/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/BigDecimalMath.kt b/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/BigDecimalMath.kt
index 6da0b407..ad35f5cb 100644
--- a/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/BigDecimalMath.kt
+++ b/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/BigDecimalMath.kt
@@ -78,12 +78,13 @@ internal fun BigDecimal.pow(n: BigDecimal): BigDecimal {
val n2IntPart = right.subtract(remainderOfRight)
val intPow = pow(n2IntPart.intValueExact(), mathContext)
val doublePow = BigDecimal(
- toDouble().pow(remainderOfRight.toDouble())
+ toDouble().pow(remainderOfRight.toDouble()),
)
var result = intPow.multiply(doublePow, mathContext)
- if (signOfRight == -1) result =
- BigDecimal.ONE.divide(result, mathContext.precision, RoundingMode.HALF_UP)
+ if (signOfRight == -1) {
+ result = BigDecimal.ONE.divide(result, mathContext.precision, RoundingMode.HALF_UP)
+ }
return result
}
diff --git a/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/Expression.kt b/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/Expression.kt
index 4b453c05..3935ad94 100644
--- a/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/Expression.kt
+++ b/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/Expression.kt
@@ -23,7 +23,7 @@ import com.sadellie.unitto.core.base.Token
import java.math.BigDecimal
import java.math.RoundingMode
-sealed class ExpressionException(override val message: String): Exception(message) {
+sealed class ExpressionException(override val message: String) : Exception(message) {
class DivideByZero : ExpressionException("Can't divide by zero")
class FactorialCalculation : ExpressionException("Can calculate factorial of non-negative real numbers only")
class BadExpression : ExpressionException("Invalid expression. Probably some operator lacks argument")
@@ -33,7 +33,7 @@ sealed class ExpressionException(override val message: String): Exception(messag
class Expression(
input: String,
private val radianMode: Boolean = true,
- private val roundingMode: RoundingMode = RoundingMode.HALF_EVEN
+ private val roundingMode: RoundingMode = RoundingMode.HALF_EVEN,
) {
private val tokens = input.tokenize()
private var cursorPosition = 0
@@ -88,8 +88,9 @@ class Expression(
while (peek() in listOf(Token.Operator.multiply, Token.Operator.divide)) {
when {
- moveIfMatched(Token.Operator.multiply) -> expression =
- expression.multiply(parseFactor())
+ moveIfMatched(Token.Operator.multiply) -> {
+ expression = expression.multiply(parseFactor())
+ }
moveIfMatched(Token.Operator.divide) -> {
val divisor = parseFactor()
diff --git a/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/Tokenizer.kt b/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/Tokenizer.kt
index 237f2355..fbcb4538 100644
--- a/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/Tokenizer.kt
+++ b/data/evaluatto/src/main/java/io/github/sadellie/evaluatto/Tokenizer.kt
@@ -47,13 +47,13 @@ fun String.tokenize(): List {
private fun peekTokenAfter(
streamOfTokens: String,
- cursor: Int
+ cursor: Int,
): String? {
Token.expressionTokens.forEach { token ->
val subs = streamOfTokens
.substring(
cursor,
- (cursor + token.length).coerceAtMost(streamOfTokens.length)
+ (cursor + token.length).coerceAtMost(streamOfTokens.length),
)
if (subs == token) {
// Got a digit, see if there are other digits coming after
@@ -125,8 +125,8 @@ private fun MutableList.missingMultiply(): MutableList {
tokenAfter in Token.Func.all ||
tokenAfter in Token.Const.all ||
tokenAfter == Token.Operator.sqrt ||
- tokenAfter.isDigitToken()) {
-
+ tokenAfter.isDigitToken()
+ ) {
iterator.add(Token.Operator.multiply)
}
}
@@ -194,7 +194,7 @@ private fun MutableList.unpackPercentAt(percentIndex: Int): MutableList<
// Remove percentage
mutList.removeAt(percentIndex)
- //Add opening bracket before percentage
+ // Add opening bracket before percentage
mutList.add(percentIndex - percentage.size, Token.Operator.leftBracket)
// Add "/ 100" and closing bracket
@@ -209,7 +209,7 @@ private fun MutableList.unpackPercentAt(percentIndex: Int): MutableList<
// Remove percentage
mutList.removeAt(percentIndex)
- //Add opening bracket before percentage
+ // Add opening bracket before percentage
mutList.add(percentIndex - percentage.size, Token.Operator.leftBracket)
// Add "/ 100" and other stuff
@@ -222,8 +222,8 @@ private fun MutableList.unpackPercentAt(percentIndex: Int): MutableList<
Token.Operator.leftBracket,
*base.toTypedArray(),
Token.Operator.rightBracket,
- Token.Operator.rightBracket
- )
+ Token.Operator.rightBracket,
+ ),
)
return mutList
diff --git a/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/FixLexiconTest.kt b/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/FixLexiconTest.kt
index de4df510..365ac221 100644
--- a/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/FixLexiconTest.kt
+++ b/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/FixLexiconTest.kt
@@ -25,59 +25,71 @@ class FixLexiconTest {
@Test
fun `missing multiply`() {
assertLex(
- "2×(69−420)", "2(69−420)"
+ "2×(69−420)",
+ "2(69−420)",
)
assertLex(
- "0.×(69−420)", "0.(69−420)"
+ "0.×(69−420)",
+ "0.(69−420)",
)
assertLex(
- ".0×(69−420)", ".0(69−420)"
+ ".0×(69−420)",
+ ".0(69−420)",
)
assertLex(
- ".×(69−420)", ".(69−420)"
+ ".×(69−420)",
+ ".(69−420)",
)
assertLex(
"2×(69−420)×(23−4)×cos(9)×tan((sin⁻¹(.9)))",
- "2(69−420)(23−4)cos(9)tan((sin⁻¹(.9)))"
+ "2(69−420)(23−4)cos(9)tan((sin⁻¹(.9)))",
)
assertLex(
- "e×e+π", "ee+π"
+ "e×e+π",
+ "ee+π",
)
assertLex(
- "(69)×420", "(69)420"
+ "(69)×420",
+ "(69)420",
)
}
@Test
fun `balanced brackets`() {
assertLex(
- "123×(12+4)", "123(12+4"
+ "123×(12+4)",
+ "123(12+4",
)
assertLex(
- "12312+4", "12312+4"
+ "12312+4",
+ "12312+4",
)
assertLex(
- "123)))×12+4", "123)))12+4"
+ "123)))×12+4",
+ "123)))12+4",
)
assertLex(
- "sin(cos(tan(3)))", "sin(cos(tan(3"
+ "sin(cos(tan(3)))",
+ "sin(cos(tan(3",
)
assertLex(
- "sin(cos(tan(3)))", "sin(cos(tan(3)"
+ "sin(cos(tan(3)))",
+ "sin(cos(tan(3)",
)
assertLex(
- "sin(cos(tan(3)))", "sin(cos(tan(3))"
+ "sin(cos(tan(3)))",
+ "sin(cos(tan(3))",
)
}
@@ -85,43 +97,52 @@ class FixLexiconTest {
fun `unpack percentage`() {
// 132.5+14% −> 132.5+132.5*0.14
assertLex(
- "132.5+(14÷100×(132.5))", "132.5+14%"
+ "132.5+(14÷100×(132.5))",
+ "132.5+14%",
)
// 132.5+(14)% −> 132.5+(14)/100*132.5
assertLex(
- "132.5+((14)÷100×(132.5))" , "132.5+(14)%"
+ "132.5+((14)÷100×(132.5))",
+ "132.5+(14)%",
)
// 132.5+(15+4)% −> 132.5+(15+4)*132.5/100
assertLex(
- "132.5+((15+4)÷100×(132.5))", "132.5+(15+4)%"
+ "132.5+((15+4)÷100×(132.5))",
+ "132.5+(15+4)%",
)
// (132.5+12%)+(15+4)% −> (132.5+12/100*132.5)+(15+4)/100*(132.5+12/100*132.5)
assertLex(
- "(132.5+(12÷100×(132.5)))+((15+4)÷100×((132.5+(12÷100×(132.5)))))", "(132.5+12%)+(15+4)%"
+ "(132.5+(12÷100×(132.5)))+((15+4)÷100×((132.5+(12÷100×(132.5)))))",
+ "(132.5+12%)+(15+4)%",
)
// 2% −> 2/100
assertLex(
- "(2÷100)", "2%"
+ "(2÷100)",
+ "2%",
)
assertLex(
- "((2)÷100)", "(2)%"
+ "((2)÷100)",
+ "(2)%",
)
assertLex(
- "(132.5+5)+(90÷100×((132.5+5)))", "(132.5+5)+90%"
+ "(132.5+5)+(90÷100×((132.5+5)))",
+ "(132.5+5)+90%",
)
assertLex(
- "((90÷100)+(90÷100×((90÷100))))", "(90%+90%)"
+ "((90÷100)+(90÷100×((90÷100))))",
+ "(90%+90%)",
)
assertLex(
- "((90÷100)÷(90÷100))+((90÷100)−(90÷100×((90÷100))))", "(90%÷90%)+(90%−90%)"
+ "((90÷100)÷(90÷100))+((90÷100)−(90÷100×((90÷100))))",
+ "(90%÷90%)+(90%−90%)",
)
assertLex("(80÷100)×(80÷100)", "80%80%")
diff --git a/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/Helpers.kt b/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/Helpers.kt
index 2b1c9e31..aeb244df 100644
--- a/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/Helpers.kt
+++ b/data/evaluatto/src/test/java/io/github/sadellie/evaluatto/Helpers.kt
@@ -26,13 +26,13 @@ import java.math.RoundingMode
fun assertExpr(expr: String, result: String, radianMode: Boolean = true) =
assertEquals(
BigDecimal(result).setScale(10, RoundingMode.HALF_EVEN),
- Expression(expr, radianMode).calculate().setScale(10, RoundingMode.HALF_EVEN)
+ Expression(expr, radianMode).calculate().setScale(10, RoundingMode.HALF_EVEN),
)
fun assertExprFail(
expectedThrowable: Class?,
expr: String,
- radianMode: Boolean = true
+ radianMode: Boolean = true,
) {
assertThrows(expectedThrowable) {
Expression(expr, radianMode = radianMode).calculate()
diff --git a/data/licenses/src/main/java/com/sadellie/unitto/data/licenses/ThirdParty.kt b/data/licenses/src/main/java/com/sadellie/unitto/data/licenses/ThirdParty.kt
index 4832d4f6..982501f3 100644
--- a/data/licenses/src/main/java/com/sadellie/unitto/data/licenses/ThirdParty.kt
+++ b/data/licenses/src/main/java/com/sadellie/unitto/data/licenses/ThirdParty.kt
@@ -23,7 +23,7 @@ data class ThirdParty(
val dev: String?,
val website: String?,
val license: String?,
- val description: String?
+ val description: String?,
)
val ALL_THIRD_PARTY by lazy {
@@ -33,91 +33,91 @@ val ALL_THIRD_PARTY by lazy {
dev = "Fawaz Ahmed (fawazahmed0)",
website = "https://github.com/fawazahmed0/currency-api",
license = "The Unlicense",
- description = "Free Currency Rates API"
+ description = "Free Currency Rates API",
),
ThirdParty(
name = "Lato",
dev = "Łukasz Dziedzic",
website = "https://fonts.google.com/specimen/Lato/about",
license = "Open Font License",
- description = "Lato is a sans serif typeface family started in the summer of 2010 by Warsaw-based designer Łukasz Dziedzic (“Lato” means “Summer” in Polish). In December 2010 the Lato family was published under the Open Font License by his foundry tyPoland, with support from Google."
+ description = "Lato is a sans serif typeface family started in the summer of 2010 by Warsaw-based designer Łukasz Dziedzic (“Lato” means “Summer” in Polish). In December 2010 the Lato family was published under the Open Font License by his foundry tyPoland, with support from Google.",
),
ThirdParty(
name = "Core Kotlin Extensions",
dev = "The Android Open Source Project",
website = "https://developer.android.com/jetpack/androidx/releases/core",
license = "Apache-2.0",
- description = "Kotlin extensions for 'core' artifact"
+ description = "Kotlin extensions for 'core' artifact",
),
ThirdParty(
name = "Material Components for Android",
dev = "The Android Open Source Project",
website = "https://github.com/material-components/material-components-android",
license = "Apache-2.0",
- description = "Material Components for Android is a static library that you can add to your Android application in order to use APIs that provide implementations of the Material Design specification. Compatible on devices running API 14 or later."
+ description = "Material Components for Android is a static library that you can add to your Android application in order to use APIs that provide implementations of the Material Design specification. Compatible on devices running API 14 or later.",
),
ThirdParty(
name = "Compose UI primitives",
dev = "The Android Open Source Project",
website = "https://developer.android.com/jetpack/androidx/releases/compose-ui",
license = "Apache-2.0",
- description = "Compose UI primitives. This library contains the primitives that form the Compose UI Toolkit, such as drawing, measurement and layout."
+ description = "Compose UI primitives. This library contains the primitives that form the Compose UI Toolkit, such as drawing, measurement and layout.",
),
ThirdParty(
name = "Compose Navigation",
dev = "The Android Open Source Project",
website = "https://developer.android.com/jetpack/androidx/releases/navigation",
license = "Apache-2.0",
- description = "Compose integration with Navigation"
+ description = "Compose integration with Navigation",
),
ThirdParty(
name = "Compose Material3 Components",
dev = "The Android Open Source Project",
website = "https://developer.android.com/jetpack/androidx/releases/compose-material3",
license = "Apache-2.0",
- description = "Compose Material You Design Components library"
+ description = "Compose Material You Design Components library",
),
ThirdParty(
name = "Navigation Compose Hilt Integration",
dev = "The Android Open Source Project",
website = "https://developer.android.com/jetpack/androidx/releases/hilt",
license = "Apache-2.0",
- description = "Navigation Compose Hilt Integration"
+ description = "Navigation Compose Hilt Integration",
),
ThirdParty(
name = "Hilt Android",
dev = "The Android Open Source Project",
website = "https://github.com/google/dagger",
license = "Apache-2.0",
- description = "A fast dependency injector for Android and Java."
+ description = "A fast dependency injector for Android and Java.",
),
ThirdParty(
name = "Compose Material Icons Extended",
dev = "The Android Open Source Project",
website = "https://developer.android.com/jetpack/androidx/releases/compose-material",
license = "Apache-2.0",
- description = "Compose Material Design extended icons. This module contains all Material icons. It is a very large dependency and should not be included directly."
+ description = "Compose Material Design extended icons. This module contains all Material icons. It is a very large dependency and should not be included directly.",
),
ThirdParty(
name = "Android Preferences DataStore",
dev = "The Android Open Source Project",
website = "https://developer.android.com/jetpack/androidx/releases/datastore",
license = "Apache-2.0",
- description = "Android Preferences DataStore"
+ description = "Android Preferences DataStore",
),
ThirdParty(
name = "Accompanist System UI Controller library",
dev = "Google",
website = "https://github.com/google/accompanist/",
license = "Apache-2.0",
- description = "Utilities for Jetpack Compose"
+ description = "Utilities for Jetpack Compose",
),
ThirdParty(
name = "Compose Tooling API",
dev = "The Android Open Source Project",
website = "https://developer.android.com/jetpack/androidx/releases/compose-ui",
license = "Apache-2.0",
- description = "Compose tooling library API. This library provides the API required to declare @Preview composables in user apps."
- )
+ description = "Compose tooling library API. This library provides the API required to declare @Preview composables in user apps.",
+ ),
)
}
diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/HistoryItem.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/HistoryItem.kt
index 6bbc18a6..dbc3272c 100644
--- a/data/model/src/main/java/com/sadellie/unitto/data/model/HistoryItem.kt
+++ b/data/model/src/main/java/com/sadellie/unitto/data/model/HistoryItem.kt
@@ -24,5 +24,5 @@ data class HistoryItem(
val id: Int,
val date: Date,
val expression: String,
- val result: String
+ val result: String,
)
diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/UnitGroup.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/UnitGroup.kt
index d49f79d1..e279bc29 100644
--- a/data/model/src/main/java/com/sadellie/unitto/data/model/UnitGroup.kt
+++ b/data/model/src/main/java/com/sadellie/unitto/data/model/UnitGroup.kt
@@ -22,7 +22,7 @@ import androidx.annotation.StringRes
import com.sadellie.unitto.core.base.R
enum class UnitGroup(
- @StringRes val res: Int
+ @StringRes val res: Int,
) {
// NOTE: This order is used as default for new users
LENGTH(res = R.string.unit_group_length),
@@ -48,5 +48,5 @@ enum class UnitGroup(
TORQUE(res = R.string.unit_group_torque),
FLOW_RATE(res = R.string.unit_group_flow_rate),
LUMINANCE(res = R.string.unit_group_luminance),
- FUEL_CONSUMPTION(res = R.string.unit_group_fuel_consumption)
+ FUEL_CONSUMPTION(res = R.string.unit_group_fuel_consumption),
}
diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/timezone/FavoriteZone.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/timezone/FavoriteZone.kt
index 00d4d734..6425e390 100644
--- a/data/model/src/main/java/com/sadellie/unitto/data/model/timezone/FavoriteZone.kt
+++ b/data/model/src/main/java/com/sadellie/unitto/data/model/timezone/FavoriteZone.kt
@@ -26,5 +26,5 @@ import androidx.annotation.RequiresApi
data class FavoriteZone(
val timeZone: TimeZone,
val position: Int,
- val label: String
+ val label: String,
)
diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/BackwardUnit.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/BackwardUnit.kt
index 7630cb45..85e89e36 100644
--- a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/BackwardUnit.kt
+++ b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/BackwardUnit.kt
@@ -39,17 +39,19 @@ data class BackwardUnit(
if (unitTo.basicUnit.isEqualTo(BigDecimal.ZERO)) return BigDecimal.ZERO
return when (unitTo) {
- is NormalUnit -> this
- .basicUnit
- .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
- .div(unitTo.basicUnit)
- .div(value)
+ is NormalUnit ->
+ this
+ .basicUnit
+ .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
+ .div(unitTo.basicUnit)
+ .div(value)
- is BackwardUnit -> unitTo
- .basicUnit
- .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
- .multiply(value)
- .div(this.basicUnit)
+ is BackwardUnit ->
+ unitTo
+ .basicUnit
+ .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
+ .multiply(value)
+ .div(this.basicUnit)
else -> BigDecimal.ZERO
}
diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/NormalUnit.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/NormalUnit.kt
index a915cab6..a37ed501 100644
--- a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/NormalUnit.kt
+++ b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/NormalUnit.kt
@@ -39,17 +39,19 @@ data class NormalUnit(
if (unitTo.basicUnit.isEqualTo(BigDecimal.ZERO)) return BigDecimal.ZERO
return when (unitTo) {
- is NormalUnit -> this
- .basicUnit
- .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
- .multiply(value)
- .div(unitTo.basicUnit)
+ is NormalUnit ->
+ this
+ .basicUnit
+ .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
+ .multiply(value)
+ .div(unitTo.basicUnit)
- is BackwardUnit -> unitTo
- .basicUnit
- .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
- .div(this.basicUnit)
- .div(value)
+ is BackwardUnit ->
+ unitTo
+ .basicUnit
+ .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
+ .div(this.basicUnit)
+ .div(value)
else -> BigDecimal.ZERO
}
diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/ReverseUnit.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/ReverseUnit.kt
index d4f56cfc..c9511f45 100644
--- a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/ReverseUnit.kt
+++ b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/ReverseUnit.kt
@@ -34,7 +34,6 @@ data class ReverseUnit(
override val counter: Int = 0,
) : DefaultUnit {
override fun convert(unitTo: DefaultUnit, value: BigDecimal): BigDecimal {
-
return unitTo
.basicUnit
.setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/TemperatureUnit.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/TemperatureUnit.kt
index e52af2a6..f00d9e4f 100644
--- a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/TemperatureUnit.kt
+++ b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/TemperatureUnit.kt
@@ -30,8 +30,8 @@ data class TemperatureUnit(
override val isFavorite: Boolean = false,
override val pairId: String? = null,
override val counter: Int = 0,
- val customConvert: (unitTo: DefaultUnit, value: BigDecimal) -> BigDecimal
-): DefaultUnit {
+ val customConvert: (unitTo: DefaultUnit, value: BigDecimal) -> BigDecimal,
+) : DefaultUnit {
override fun convert(unitTo: DefaultUnit, value: BigDecimal): BigDecimal = customConvert(unitTo, value)
override fun clone(
diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/AboutPreferences.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/AboutPreferences.kt
index 75741993..e389f7e4 100644
--- a/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/AboutPreferences.kt
+++ b/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/AboutPreferences.kt
@@ -18,6 +18,6 @@
package com.sadellie.unitto.data.model.userprefs
-interface AboutPreferences{
+interface AboutPreferences {
val enableToolsExperiment: Boolean
}
diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/AddSubtractPreferences.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/AddSubtractPreferences.kt
index 25684b2a..a887e02a 100644
--- a/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/AddSubtractPreferences.kt
+++ b/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/AddSubtractPreferences.kt
@@ -20,6 +20,6 @@ package com.sadellie.unitto.data.model.userprefs
import com.sadellie.unitto.core.base.FormatterSymbols
-interface AddSubtractPreferences{
+interface AddSubtractPreferences {
val formatterSymbols: FormatterSymbols
}
diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/BodyMassPreferences.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/BodyMassPreferences.kt
index b841cdf3..df029dee 100644
--- a/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/BodyMassPreferences.kt
+++ b/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/BodyMassPreferences.kt
@@ -20,6 +20,6 @@ package com.sadellie.unitto.data.model.userprefs
import com.sadellie.unitto.core.base.FormatterSymbols
-interface BodyMassPreferences{
+interface BodyMassPreferences {
val formatterSymbols: FormatterSymbols
}
diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/FormattingPreferences.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/FormattingPreferences.kt
index dcbbb3d8..5e9093b3 100644
--- a/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/FormattingPreferences.kt
+++ b/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/FormattingPreferences.kt
@@ -20,7 +20,7 @@ package com.sadellie.unitto.data.model.userprefs
import com.sadellie.unitto.core.base.FormatterSymbols
-interface FormattingPreferences{
+interface FormattingPreferences {
val digitsPrecision: Int
val formatterSymbols: FormatterSymbols
val outputFormat: Int
diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/StartingScreenPreferences.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/StartingScreenPreferences.kt
index cff6385a..7852b097 100644
--- a/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/StartingScreenPreferences.kt
+++ b/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/StartingScreenPreferences.kt
@@ -18,6 +18,6 @@
package com.sadellie.unitto.data.model.userprefs
-interface StartingScreenPreferences{
+interface StartingScreenPreferences {
val startingScreen: String
}
diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/UnitGroupsPreferences.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/UnitGroupsPreferences.kt
index 175d2b8a..ba0c3555 100644
--- a/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/UnitGroupsPreferences.kt
+++ b/data/model/src/main/java/com/sadellie/unitto/data/model/userprefs/UnitGroupsPreferences.kt
@@ -20,6 +20,6 @@ package com.sadellie.unitto.data.model.userprefs
import com.sadellie.unitto.data.model.UnitGroup
-interface UnitGroupsPreferences{
+interface UnitGroupsPreferences {
val shownUnitGroups: List
}
diff --git a/data/timezone/src/main/java/com/sadellie/unitto/data/timezone/TimeZonesRepository.kt b/data/timezone/src/main/java/com/sadellie/unitto/data/timezone/TimeZonesRepository.kt
index 30082f36..947d4cbe 100644
--- a/data/timezone/src/main/java/com/sadellie/unitto/data/timezone/TimeZonesRepository.kt
+++ b/data/timezone/src/main/java/com/sadellie/unitto/data/timezone/TimeZonesRepository.kt
@@ -59,8 +59,8 @@ class TimeZonesRepository @Inject constructor(
FavoriteZone(
timeZone = tz,
position = entity.position,
- label = entity.label
- )
+ label = entity.label,
+ ),
)
}
@@ -146,8 +146,8 @@ class TimeZonesRepository @Inject constructor(
timeZone = it,
name = displayName,
region = regionName,
- rank = nameMatch
- )
+ rank = nameMatch,
+ ),
)
return@forEach
}
@@ -159,8 +159,8 @@ class TimeZonesRepository @Inject constructor(
timeZone = it,
name = displayName,
region = regionName,
- rank = regionMatch
- )
+ rank = regionMatch,
+ ),
)
return@forEach
}
diff --git a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/DataStoreModule.kt b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/DataStoreModule.kt
index bfa93e0a..8082e3ac 100644
--- a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/DataStoreModule.kt
+++ b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/DataStoreModule.kt
@@ -53,7 +53,7 @@ class DataStoreModule {
fun provideUserPreferencesDataStore(@ApplicationContext appContext: Context): DataStore {
return PreferenceDataStoreFactory.create(
corruptionHandler = ReplaceFileCorruptionHandler { emptyPreferences() },
- produceFile = { appContext.preferencesDataStoreFile(USER_PREFERENCES) }
+ produceFile = { appContext.preferencesDataStoreFile(USER_PREFERENCES) },
)
}
diff --git a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceExt.kt b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceExt.kt
index a92d7234..3620950b 100644
--- a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceExt.kt
+++ b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/PreferenceExt.kt
@@ -84,7 +84,7 @@ internal fun Preferences.getFormatterSymbols(): FormatterSymbols {
// Updating from older version or fresh install
// TODO Remove in the future
if ((grouping == null) or (fractional == null)) {
- return when(this[PrefsKeys.SEPARATOR] ?: 0) {
+ return when (this[PrefsKeys.SEPARATOR] ?: 0) {
0 -> FormatterSymbols(Token.SPACE, Token.PERIOD)
1 -> FormatterSymbols(Token.PERIOD, Token.COMMA)
else -> FormatterSymbols(Token.COMMA, Token.PERIOD)
@@ -161,4 +161,4 @@ private inline fun T.letTryOrNull(block: (T) -> R): R? = try {
this?.let(block)
} catch (e: Exception) {
null
-}
\ No newline at end of file
+}
diff --git a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferencesRepositoryImpl.kt b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferencesRepositoryImpl.kt
index 5277ddb2..faa5d123 100644
--- a/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferencesRepositoryImpl.kt
+++ b/data/userprefs/src/main/java/com/sadellie/unitto/data/userprefs/UserPreferencesRepositoryImpl.kt
@@ -149,7 +149,7 @@ class UserPreferencesRepositoryImpl @Inject constructor(
override val aboutPrefs: Flow = data
.map { preferences ->
AboutPreferencesImpl(
- enableToolsExperiment = preferences.getEnableToolsExperiment()
+ enableToolsExperiment = preferences.getEnableToolsExperiment(),
)
}
diff --git a/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/BodyMassScreen.kt b/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/BodyMassScreen.kt
index 05af04ee..178d47eb 100644
--- a/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/BodyMassScreen.kt
+++ b/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/BodyMassScreen.kt
@@ -97,7 +97,7 @@ private fun BodyMassScreen(
}
val weightShortLabel = remember(uiState.isMetric) {
mContext.resources.getString(
- if (uiState.isMetric) R.string.unit_kilogram_short else R.string.unit_pound_short
+ if (uiState.isMetric) R.string.unit_kilogram_short else R.string.unit_pound_short,
)
}
@@ -112,22 +112,22 @@ private fun BodyMassScreen(
.padding(16.dp)
.fillMaxSize(),
verticalArrangement = Arrangement.spacedBy(16.dp),
- horizontalAlignment = Alignment.CenterHorizontally
+ horizontalAlignment = Alignment.CenterHorizontally,
) {
SegmentedButtonsRow(
- modifier = Modifier.fillMaxWidth()
+ modifier = Modifier.fillMaxWidth(),
) {
SegmentedButton(
label = stringResource(R.string.body_mass_metric),
onClick = { updateIsMetric(true) },
selected = uiState.isMetric,
- modifier = Modifier.weight(1f)
+ modifier = Modifier.weight(1f),
)
SegmentedButton(
label = stringResource(R.string.body_mass_imperial),
onClick = { updateIsMetric(false) },
selected = !uiState.isMetric,
- modifier = Modifier.weight(1f)
+ modifier = Modifier.weight(1f),
)
}
@@ -136,14 +136,14 @@ private fun BodyMassScreen(
.fillMaxWidth()
.background(
MaterialTheme.colorScheme.secondaryContainer,
- RoundedCornerShape(32.dp)
+ RoundedCornerShape(32.dp),
)
.padding(16.dp, 24.dp),
- verticalArrangement = Arrangement.spacedBy(8.dp)
+ verticalArrangement = Arrangement.spacedBy(8.dp),
) {
Crossfade(
targetState = uiState.isMetric,
- label = "Measurement system change"
+ label = "Measurement system change",
) { isMetric ->
if (isMetric) {
BodyMassTextField(
@@ -155,7 +155,7 @@ private fun BodyMassScreen(
)
} else {
Row(
- horizontalArrangement = Arrangement.spacedBy(8.dp)
+ horizontalArrangement = Arrangement.spacedBy(8.dp),
) {
BodyMassTextField(
modifier = Modifier.weight(1f),
@@ -180,7 +180,7 @@ private fun BodyMassScreen(
onValueChange = updateWeight,
label = "${stringResource(R.string.body_mass_weight)}, $weightShortLabel",
expressionFormatter = expressionTransformer,
- imeAction = ImeAction.Done
+ imeAction = ImeAction.Done,
)
}
@@ -190,7 +190,7 @@ private fun BodyMassScreen(
transitionSpec = {
(fadeIn() togetherWith fadeOut()) using SizeTransform(false)
},
- label = "Body mass value visibility"
+ label = "Body mass value visibility",
) { targetState ->
if (targetState.isEqualTo(BigDecimal.ZERO)) return@AnimatedContent
@@ -198,14 +198,14 @@ private fun BodyMassScreen(
value = targetState,
range = uiState.normalWeightRange,
rangeSuffix = weightShortLabel,
- formatterSymbols = uiState.formatterSymbols
+ formatterSymbols = uiState.formatterSymbols,
)
}
ElevatedButton(
onClick = {
openLink(mContext, "https://sadellie.github.io/unitto/help#body-mass-index")
- }
+ },
) {
Text(text = stringResource(R.string.time_zone_no_results_button)) // TODO Rename
}
@@ -224,7 +224,7 @@ fun PreviewBodyMassScreen() {
weight = TextFieldValue(),
normalWeightRange = BigDecimal(30) to BigDecimal(50),
result = BigDecimal(18.5),
- formatterSymbols = FormatterSymbols(Token.SPACE, Token.PERIOD)
+ formatterSymbols = FormatterSymbols(Token.SPACE, Token.PERIOD),
),
updateHeight1 = {},
updateHeight2 = {},
diff --git a/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/BodyMassUtils.kt b/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/BodyMassUtils.kt
index 22429dab..dfe9e99e 100644
--- a/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/BodyMassUtils.kt
+++ b/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/BodyMassUtils.kt
@@ -51,7 +51,7 @@ internal fun calculateMetric(
internal fun calculateImperial(
heightFt: BigDecimal,
heightIn: BigDecimal,
- weightLbs: BigDecimal
+ weightLbs: BigDecimal,
): BigDecimal {
val heightInches = heightFt
.multiply(footToInchFactor)
@@ -69,7 +69,7 @@ internal fun calculateImperial(
* @return [Pair] of [BigDecimal]. First value is lowest weight. Second value is highest value.
*/
internal fun calculateNormalWeightMetric(
- heightCm: BigDecimal
+ heightCm: BigDecimal,
): Pair {
val heightMetres2 = heightCm
.divide(cmToMFactor, MAX_PRECISION, RoundingMode.HALF_EVEN)
diff --git a/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/BodyMassViewModel.kt b/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/BodyMassViewModel.kt
index 811176f6..d478f0a5 100644
--- a/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/BodyMassViewModel.kt
+++ b/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/BodyMassViewModel.kt
@@ -38,23 +38,23 @@ import javax.inject.Inject
@HiltViewModel
internal class BodyMassViewModel @Inject constructor(
- userPreferencesRepository: UserPreferencesRepository
-): ViewModel() {
- private val _isMetric = MutableStateFlow(getInitialIsMetric())
- private val _height1 = MutableStateFlow(TextFieldValue())
- private val _height2 = MutableStateFlow(TextFieldValue())
- private val _weight = MutableStateFlow(TextFieldValue())
- private val _result = MutableStateFlow(BigDecimal.ZERO)
- private val _normalWeightRange = MutableStateFlow>(BigDecimal.ZERO to BigDecimal.ZERO)
+ userPreferencesRepository: UserPreferencesRepository,
+) : ViewModel() {
+ private val isMetric = MutableStateFlow(getInitialIsMetric())
+ private val height1 = MutableStateFlow(TextFieldValue())
+ private val height2 = MutableStateFlow(TextFieldValue())
+ private val weight = MutableStateFlow(TextFieldValue())
+ private val result = MutableStateFlow(BigDecimal.ZERO)
+ private val normalWeightRange = MutableStateFlow>(BigDecimal.ZERO to BigDecimal.ZERO)
val uiState = combine(
userPreferencesRepository.bodyMassPrefs,
- _isMetric,
- _height1,
- _height2,
- _weight,
- _result,
- _normalWeightRange
+ isMetric,
+ height1,
+ height2,
+ weight,
+ result,
+ normalWeightRange,
) { userPrefs, isMetric, height1, height2, weight, result, normalWeightRange ->
UIState.Ready(
isMetric = isMetric,
@@ -63,7 +63,7 @@ internal class BodyMassViewModel @Inject constructor(
weight = weight,
result = result,
normalWeightRange = normalWeightRange,
- formatterSymbols = userPrefs.formatterSymbols
+ formatterSymbols = userPrefs.formatterSymbols,
)
}
.mapLatest { ui ->
@@ -73,17 +73,17 @@ internal class BodyMassViewModel @Inject constructor(
val weight = BigDecimal(ui.weight.text.ifEmpty { "0" })
if (ui.isMetric) {
- _result.update { calculateMetric(height1, weight) }
- _normalWeightRange.update { calculateNormalWeightMetric(height1) }
+ result.update { calculateMetric(height1, weight) }
+ normalWeightRange.update { calculateNormalWeightMetric(height1) }
} else {
val height2 = BigDecimal(ui.height2.text.ifEmpty { "0" })
- _result.update { calculateImperial(height1, height2, weight) }
- _normalWeightRange.update { calculateNormalWeightImperial(height1, height2) }
+ result.update { calculateImperial(height1, height2, weight) }
+ normalWeightRange.update { calculateNormalWeightImperial(height1, height2) }
}
} catch (e: Exception) {
- _result.update { BigDecimal.ZERO }
- _normalWeightRange.update { BigDecimal.ZERO to BigDecimal.ZERO }
+ result.update { BigDecimal.ZERO }
+ normalWeightRange.update { BigDecimal.ZERO to BigDecimal.ZERO }
}
}
@@ -91,10 +91,10 @@ internal class BodyMassViewModel @Inject constructor(
}
.stateIn(viewModelScope, UIState.Loading)
- fun updateHeight1(textFieldValue: TextFieldValue) = _height1.update { textFieldValue }
- fun updateHeight2(textFieldValue: TextFieldValue) = _height2.update { textFieldValue }
- fun updateWeight(textFieldValue: TextFieldValue) = _weight.update { textFieldValue }
- fun updateIsMetric(isMetric: Boolean) = _isMetric.update { isMetric }
+ fun updateHeight1(textFieldValue: TextFieldValue) = height1.update { textFieldValue }
+ fun updateHeight2(textFieldValue: TextFieldValue) = height2.update { textFieldValue }
+ fun updateWeight(textFieldValue: TextFieldValue) = weight.update { textFieldValue }
+ fun updateIsMetric(isMetric: Boolean) = this.isMetric.update { isMetric }
private fun getInitialIsMetric(): Boolean {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) return true
diff --git a/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/components/BodyMassResult.kt b/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/components/BodyMassResult.kt
index 78d2c28c..539c7568 100644
--- a/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/components/BodyMassResult.kt
+++ b/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/components/BodyMassResult.kt
@@ -77,7 +77,7 @@ internal fun BodyMassResult(
Column(
modifier = modifier,
- verticalArrangement = Arrangement.spacedBy(16.dp)
+ verticalArrangement = Arrangement.spacedBy(16.dp),
) {
Column(
modifier = Modifier
@@ -89,12 +89,12 @@ internal fun BodyMassResult(
Text(
text = stringResource(classification.classification),
style = MaterialTheme.typography.displaySmall,
- color = MaterialTheme.colorScheme.onSecondaryContainer
+ color = MaterialTheme.colorScheme.onSecondaryContainer,
)
Text(
text = formattedValue,
style = MaterialTheme.typography.bodyLarge,
- color = MaterialTheme.colorScheme.onSecondaryContainer
+ color = MaterialTheme.colorScheme.onSecondaryContainer,
)
}
@@ -108,12 +108,12 @@ internal fun BodyMassResult(
Text(
text = formattedRange,
style = MaterialTheme.typography.displaySmall,
- color = MaterialTheme.colorScheme.onSecondaryContainer
+ color = MaterialTheme.colorScheme.onSecondaryContainer,
)
Text(
text = stringResource(R.string.body_mass_normal_weight),
style = MaterialTheme.typography.bodyLarge,
- color = MaterialTheme.colorScheme.onSecondaryContainer
+ color = MaterialTheme.colorScheme.onSecondaryContainer,
)
}
}
@@ -123,7 +123,7 @@ internal fun BodyMassResult(
private data class BodyMassData(
val minValue: BigDecimal,
val color: Color,
- @StringRes val classification: Int
+ @StringRes val classification: Int,
)
@Stable
@@ -135,32 +135,32 @@ private val indexes by lazy {
BodyMassData(
minValue = BigDecimal("40"),
color = Color(0x80FF2323),
- classification = R.string.body_mass_obese_3
+ classification = R.string.body_mass_obese_3,
),
BodyMassData(
minValue = BigDecimal("35"),
color = Color(0x80F85F31),
- classification = R.string.body_mass_obese_2
+ classification = R.string.body_mass_obese_2,
),
BodyMassData(
minValue = BigDecimal("30"),
color = Color(0x80FF9634),
- classification = R.string.body_mass_obese_1
+ classification = R.string.body_mass_obese_1,
),
BodyMassData(
minValue = BigDecimal("25"),
color = Color(0x80DBEC18),
- classification = R.string.body_mass_overweight
+ classification = R.string.body_mass_overweight,
),
BodyMassData(
minValue = BigDecimal("18.5"),
color = Color(0x805BF724),
- classification = R.string.body_mass_normal
+ classification = R.string.body_mass_normal,
),
BodyMassData(
minValue = BigDecimal("0"),
color = Color(0x800EACDD),
- classification = R.string.body_mass_underweight
+ classification = R.string.body_mass_underweight,
),
)
}
diff --git a/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/components/BodyMassTextField.kt b/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/components/BodyMassTextField.kt
index fb660bd1..686faa09 100644
--- a/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/components/BodyMassTextField.kt
+++ b/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/components/BodyMassTextField.kt
@@ -37,7 +37,7 @@ internal fun BodyMassTextField(
label: String,
onValueChange: (TextFieldValue) -> Unit,
expressionFormatter: VisualTransformation,
- imeAction: ImeAction = ImeAction.Next
+ imeAction: ImeAction = ImeAction.Next,
) {
OutlinedDecimalTextField(
modifier = modifier,
@@ -57,6 +57,6 @@ internal fun BodyMassTextField(
unfocusedTextColor = MaterialTheme.colorScheme.onSecondaryContainer,
),
expressionFormatter = expressionFormatter,
- imeAction = imeAction
+ imeAction = imeAction,
)
}
diff --git a/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/navigation/Navigation.kt b/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/navigation/Navigation.kt
index 3327456b..6510dd84 100644
--- a/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/navigation/Navigation.kt
+++ b/feature/bodymass/src/main/java/com/sadellie/unitto/feature/bodymass/navigation/Navigation.kt
@@ -35,8 +35,8 @@ fun NavGraphBuilder.bodyMassGraph(
startDestination = start,
route = graph,
deepLinks = listOf(
- navDeepLink { uriPattern = "app://com.sadellie.unitto/$graph" }
- )
+ navDeepLink { uriPattern = "app://com.sadellie.unitto/$graph" },
+ ),
) {
unittoComposable(start) {
BodyMassRoute(
diff --git a/feature/calculator/src/androidTest/java/com/sadellie/unitto/feature/calculator/CalculatorScreenTest.kt b/feature/calculator/src/androidTest/java/com/sadellie/unitto/feature/calculator/CalculatorScreenTest.kt
index 85e1e21e..926778f6 100644
--- a/feature/calculator/src/androidTest/java/com/sadellie/unitto/feature/calculator/CalculatorScreenTest.kt
+++ b/feature/calculator/src/androidTest/java/com/sadellie/unitto/feature/calculator/CalculatorScreenTest.kt
@@ -53,7 +53,7 @@ class CalculatorScreenTest {
acButton = true,
additionalButtons = false,
inverseMode = false,
- partialHistoryView = true
+ partialHistoryView = true,
),
openDrawer = {},
onInputChange = {},
@@ -90,7 +90,7 @@ class CalculatorScreenTest {
acButton = true,
additionalButtons = false,
inverseMode = false,
- partialHistoryView = true
+ partialHistoryView = true,
),
openDrawer = {},
onInputChange = {},
diff --git a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorScreen.kt b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorScreen.kt
index 37db5b22..6872c12e 100644
--- a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorScreen.kt
+++ b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorScreen.kt
@@ -129,7 +129,7 @@ internal fun Ready(
initialValue = DragState.CLOSED,
positionalThreshold = { 0f },
velocityThreshold = { 0f },
- animationSpec = tween()
+ animationSpec = tween(),
)
}
val isOpen = dragState.currentValue == DragState.OPEN
@@ -145,13 +145,13 @@ internal fun Ready(
content = {
Icon(
Icons.Default.Delete,
- stringResource(R.string.clear_history_label)
+ stringResource(R.string.clear_history_label),
)
},
- modifier = Modifier.semantics { testTag = "historyButton" }
+ modifier = Modifier.semantics { testTag = "historyButton" },
)
}
- }
+ },
) { paddingValues ->
BoxWithConstraints(
modifier = Modifier.padding(paddingValues),
@@ -215,7 +215,7 @@ internal fun Ready(
formatterSymbols = uiState.formatterSymbols,
addTokens = onAddTokenClick,
onDelete = onDeleteHistoryItemClick,
- showDeleteButtons = isOpen
+ showDeleteButtons = isOpen,
)
TextBox(
@@ -225,12 +225,12 @@ internal fun Ready(
.fillMaxWidth()
.anchoredDraggable(
state = dragState,
- orientation = Orientation.Vertical
+ orientation = Orientation.Vertical,
),
formatterSymbols = uiState.formatterSymbols,
input = uiState.input,
onValueChange = onInputChange,
- output = uiState.output
+ output = uiState.output,
)
CalculatorKeyboard(
@@ -241,7 +241,7 @@ internal fun Ready(
x = 0,
y = (historyListHeight + textBoxHeight)
.toPx()
- .roundToInt()
+ .roundToInt(),
)
}
.height(keyboardHeight)
@@ -251,7 +251,10 @@ internal fun Ready(
onBracketsClick = onBracketsClick,
onDeleteClick = onDeleteClick,
onClearClick = onClearClick,
- onEqualClick = { focusManager.clearFocus(); onEqualClick() },
+ onEqualClick = {
+ focusManager.clearFocus()
+ onEqualClick()
+ },
radianMode = uiState.radianMode,
onRadianModeClick = onRadianModeClick,
additionalButtons = uiState.additionalButtons,
@@ -281,19 +284,19 @@ internal fun Ready(
onClick = {
onClearHistoryClick()
showClearHistoryDialog = false
- }
+ },
) {
Text(stringResource(R.string.clear_label))
}
},
dismissButton = {
TextButton(
- onClick = { showClearHistoryDialog = false }
+ onClick = { showClearHistoryDialog = false },
) {
Text(stringResource(R.string.cancel_label))
}
},
- onDismissRequest = { showClearHistoryDialog = false }
+ onDismissRequest = { showClearHistoryDialog = false },
)
}
}
@@ -322,7 +325,7 @@ private fun PreviewCalculatorScreen() {
id = it.hashCode(),
date = dtf.parse(it)!!,
expression = "12345".repeat(10),
- result = "1234"
+ result = "1234",
)
}
@@ -339,7 +342,7 @@ private fun PreviewCalculatorScreen() {
acButton = true,
additionalButtons = false,
inverseMode = false,
- partialHistoryView = true
+ partialHistoryView = true,
),
openDrawer = {},
onInputChange = {},
@@ -354,4 +357,4 @@ private fun PreviewCalculatorScreen() {
onClearHistoryClick = {},
onDeleteHistoryItemClick = {},
)
-}
\ No newline at end of file
+}
diff --git a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorViewModel.kt b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorViewModel.kt
index 6889e942..fe69c1b2 100644
--- a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorViewModel.kt
+++ b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/CalculatorViewModel.kt
@@ -57,18 +57,18 @@ internal class CalculatorViewModel @Inject constructor(
private val calculatorHistoryRepository: CalculatorHistoryRepository,
private val savedStateHandle: SavedStateHandle,
) : ViewModel() {
- private val _inputKey = "CALCULATOR_INPUT"
- private val _input = MutableStateFlow(savedStateHandle.getTextField(_inputKey))
- private val _result = MutableStateFlow(CalculationResult.Empty)
- private val _equalClicked = MutableStateFlow(false)
- private val _prefs = userPrefsRepository.calculatorPrefs
+ private val inputKey = "CALCULATOR_INPUT"
+ private val input = MutableStateFlow(savedStateHandle.getTextField(inputKey))
+ private val result = MutableStateFlow(CalculationResult.Empty)
+ private val equalClicked = MutableStateFlow(false)
+ private val prefs = userPrefsRepository.calculatorPrefs
.stateIn(viewModelScope, null)
- private var _fractionJob: Job? = null
+ private var fractionJob: Job? = null
val uiState: StateFlow = combine(
- _input,
- _result,
- _prefs,
+ input,
+ result,
+ prefs,
calculatorHistoryRepository.historyFlow,
) { input, result, prefs, history ->
prefs ?: return@combine CalculatorUIState.Loading
@@ -90,21 +90,21 @@ internal class CalculatorViewModel @Inject constructor(
}
.mapLatest { ui ->
if (ui !is CalculatorUIState.Ready) return@mapLatest ui
- if (_equalClicked.value) return@mapLatest ui
+ if (equalClicked.value) return@mapLatest ui
if (!ui.input.text.isExpression()) {
- _result.update { CalculationResult.Empty }
+ result.update { CalculationResult.Empty }
return@mapLatest ui
}
- _result.update {
+ result.update {
try {
CalculationResult.Default(
calculate(
input = ui.input.text,
radianMode = ui.radianMode,
)
- .format(ui.precision, ui.outputFormat)
+ .format(ui.precision, ui.outputFormat),
)
} catch (e: ExpressionException.DivideByZero) {
CalculationResult.Empty
@@ -118,31 +118,31 @@ internal class CalculatorViewModel @Inject constructor(
.stateIn(viewModelScope, CalculatorUIState.Loading)
fun addTokens(tokens: String) {
- val isClearInputNeeded = _equalClicked.value and Token.Digit.allWithDot.contains(tokens)
+ val isClearInputNeeded = equalClicked.value and Token.Digit.allWithDot.contains(tokens)
val newValue = when {
// Clean input after clicking "=" and any token that is a Digit
isClearInputNeeded -> TextFieldValue()
- _equalClicked.value -> _input.value.placeCursorAtTheEnd()
- else -> _input.value
+ equalClicked.value -> input.value.placeCursorAtTheEnd()
+ else -> input.value
}.addTokens(tokens)
updateInput(newValue)
}
fun addBracket() {
- val newValue = if (_equalClicked.value) {
+ val newValue = if (equalClicked.value) {
// Cursor is set to 0 when equal is clicked
- _input.value.placeCursorAtTheEnd()
+ input.value.placeCursorAtTheEnd()
} else {
- _input.value
+ input.value
}.addBracket()
updateInput(newValue)
}
fun deleteTokens() {
- val newValue = if (_equalClicked.value) {
+ val newValue = if (equalClicked.value) {
TextFieldValue()
} else {
- _input.value.deleteTokens()
+ input.value.deleteTokens()
}
updateInput(newValue)
}
@@ -150,10 +150,10 @@ internal class CalculatorViewModel @Inject constructor(
fun clearInput() = updateInput(TextFieldValue())
fun updateInput(value: TextFieldValue) {
- _fractionJob?.cancel()
- _equalClicked.update { false }
- _input.update { value }
- savedStateHandle[_inputKey] = value.text
+ fractionJob?.cancel()
+ equalClicked.update { false }
+ input.update { value }
+ savedStateHandle[inputKey] = value.text
}
fun updateRadianMode(newValue: Boolean) = viewModelScope.launch {
@@ -177,27 +177,27 @@ internal class CalculatorViewModel @Inject constructor(
}
fun equal() = viewModelScope.launch {
- val prefs = _prefs.value ?: return@launch
- if (_equalClicked.value) return@launch
- if (!_input.value.text.isExpression()) return@launch
+ val prefs = prefs.value ?: return@launch
+ if (equalClicked.value) return@launch
+ if (!input.value.text.isExpression()) return@launch
val result = try {
- calculate(_input.value.text, prefs.radianMode, RoundingMode.DOWN)
+ calculate(input.value.text, prefs.radianMode, RoundingMode.DOWN)
} catch (e: ExpressionException.DivideByZero) {
- _equalClicked.update { true }
- _result.update { CalculationResult.DivideByZeroError }
+ equalClicked.update { true }
+ result.update { CalculationResult.DivideByZeroError }
return@launch
} catch (e: ExpressionException.FactorialCalculation) {
- _equalClicked.update { true }
- _result.update { CalculationResult.Error }
+ equalClicked.update { true }
+ result.update { CalculationResult.Error }
return@launch
} catch (e: Exception) {
- _equalClicked.update { true }
- _result.update { CalculationResult.Error }
+ equalClicked.update { true }
+ result.update { CalculationResult.Error }
return@launch
}
- _equalClicked.update { true }
+ equalClicked.update { true }
val resultFormatted = result
.format(prefs.precision, prefs.outputFormat)
@@ -205,17 +205,17 @@ internal class CalculatorViewModel @Inject constructor(
withContext(Dispatchers.IO) {
calculatorHistoryRepository.add(
- expression = _input.value.text.replace("-", Token.Operator.minus),
- result = resultFormatted
+ expression = input.value.text.replace("-", Token.Operator.minus),
+ result = resultFormatted,
)
}
- _fractionJob?.cancel()
- _fractionJob = launch(Dispatchers.Default) {
+ fractionJob?.cancel()
+ fractionJob = launch(Dispatchers.Default) {
val fraction = result.toFractionalString()
- _input.update { TextFieldValue(resultFormatted, TextRange.Zero) }
- _result.update { CalculationResult.Fraction(fraction) }
+ input.update { TextFieldValue(resultFormatted, TextRange.Zero) }
+ this@CalculatorViewModel.result.update { CalculationResult.Fraction(fraction) }
}
}
diff --git a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/DecimalToFraction.kt b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/DecimalToFraction.kt
index e2c15501..fd65ccf3 100644
--- a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/DecimalToFraction.kt
+++ b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/DecimalToFraction.kt
@@ -73,7 +73,7 @@ private fun BigDecimal.notRepeatingFractional(): Pair {
}
private fun BigDecimal.repeatingFractional(
- repeatingLength: Int
+ repeatingLength: Int,
): Pair {
val multiplier = BigInteger.TEN.pow(repeatingLength)
@@ -99,7 +99,7 @@ private fun BigDecimal.repeatingDecimals(): String? {
repeat(inputString.length) { index ->
val stringInFront = inputString.substring(index)
- (1..stringInFront.length/2).forEach checkLoop@{ loop ->
+ (1..stringInFront.length / 2).forEach checkLoop@{ loop ->
val pattern = stringInFront.take(loop)
val checkRange = stringInFront.substring(0, stringInFront.length - stringInFront.length % pattern.length)
val checkChunks = checkRange.chunked(pattern.length)
diff --git a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/CalculatorKeyboard.kt b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/CalculatorKeyboard.kt
index d629b9ce..194cb7aa 100644
--- a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/CalculatorKeyboard.kt
+++ b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/CalculatorKeyboard.kt
@@ -57,13 +57,10 @@ import com.sadellie.unitto.core.ui.LocalWindowSize
import com.sadellie.unitto.core.ui.WindowHeightSizeClass
import com.sadellie.unitto.core.ui.common.ColumnWithConstraints
import com.sadellie.unitto.core.ui.common.KeyboardButtonAdditional
-import com.sadellie.unitto.core.ui.common.KeyboardButtonContentHeightShort
-import com.sadellie.unitto.core.ui.common.KeyboardButtonContentHeightShortAdditional
-import com.sadellie.unitto.core.ui.common.KeyboardButtonContentHeightTall
-import com.sadellie.unitto.core.ui.common.KeyboardButtonContentHeightTallAdditional
import com.sadellie.unitto.core.ui.common.KeyboardButtonFilled
import com.sadellie.unitto.core.ui.common.KeyboardButtonLight
import com.sadellie.unitto.core.ui.common.KeyboardButtonTertiary
+import com.sadellie.unitto.core.ui.common.KeyboardButtonToken
import com.sadellie.unitto.core.ui.common.KeypadFlow
import com.sadellie.unitto.core.ui.common.icons.IconPack
import com.sadellie.unitto.core.ui.common.icons.iconpack.AcTan
@@ -191,7 +188,7 @@ private fun PortraitKeyboard(
val expandRotation: Float by animateFloatAsState(
targetValue = if (additionalButtons) 180f else 0f,
animationSpec = tween(easing = FastOutSlowInEasing),
- label = "Rotate on expand"
+ label = "Rotate on expand",
)
ColumnWithConstraints(
@@ -205,14 +202,14 @@ private fun PortraitKeyboard(
Row(
modifier = Modifier
.fillMaxWidth(),
- horizontalArrangement = Arrangement.Start
+ horizontalArrangement = Arrangement.Start,
) {
Crossfade(
targetState = inverseMode,
label = "Inverse switch",
modifier = Modifier
.fillMaxWidth()
- .weight(1f)
+ .weight(1f),
) { inverse ->
if (inverse) {
AdditionalPortrait(
@@ -220,22 +217,22 @@ private fun PortraitKeyboard(
additionalButtons = additionalButtons,
buttonHeight = additionalButtonHeight,
content1 = { buttonModifier ->
- KeyboardButtonAdditional(buttonModifier, IconPack.Modulo, stringResource(R.string.keyboard_modulo), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Operator.modulo) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Pi, stringResource(R.string.keyboard_pi), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Const.pi) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Power, stringResource(R.string.keyboard_power), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Operator.power) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Factorial, stringResource(R.string.keyboard_factorial), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Operator.factorial) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Modulo, stringResource(R.string.keyboard_modulo), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Operator.modulo) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Pi, stringResource(R.string.keyboard_pi), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Const.pi) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Power, stringResource(R.string.keyboard_power), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Operator.power) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Factorial, stringResource(R.string.keyboard_factorial), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Operator.factorial) }
},
content2 = { buttonModifier ->
- KeyboardButtonAdditional(buttonModifier, angleIcon, stringResource(angleIconDescription), KeyboardButtonContentHeightTallAdditional) { onRadianModeClick(!radianMode) }
- KeyboardButtonAdditional(buttonModifier, IconPack.ArSin, stringResource(R.string.keyboard_arsin), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Func.arsinBracket) }
- KeyboardButtonAdditional(buttonModifier, IconPack.ArCos, stringResource(R.string.keyboard_arcos), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Func.arcosBracket) }
- KeyboardButtonAdditional(buttonModifier, IconPack.AcTan, stringResource(R.string.keyboard_actan), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Func.actanBracket) }
+ KeyboardButtonAdditional(buttonModifier, angleIcon, stringResource(angleIconDescription), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onRadianModeClick(!radianMode) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.ArSin, stringResource(R.string.keyboard_arsin), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Func.arsinBracket) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.ArCos, stringResource(R.string.keyboard_arcos), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Func.arcosBracket) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.AcTan, stringResource(R.string.keyboard_actan), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Func.actanBracket) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Inv, stringResource(R.string.keyboard_inverse), KeyboardButtonContentHeightTallAdditional) { onInverseModeClick(!inverseMode) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Euler, stringResource(R.string.keyboard_euler), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Const.e) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Ex, stringResource(R.string.keyboard_exp), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Func.expBracket) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Power10, stringResource(R.string.keyboard_power_10), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Digit._1 + Token.Digit._0 + Token.Operator.power) }
- }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Inv, stringResource(R.string.keyboard_inverse), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onInverseModeClick(!inverseMode) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Euler, stringResource(R.string.keyboard_euler), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Const.e) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Ex, stringResource(R.string.keyboard_exp), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Func.expBracket) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Power10, stringResource(R.string.keyboard_power_10), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Digit._1 + Token.Digit._0 + Token.Operator.power) }
+ },
)
} else {
AdditionalPortrait(
@@ -243,33 +240,33 @@ private fun PortraitKeyboard(
additionalButtons = additionalButtons,
buttonHeight = additionalButtonHeight,
content1 = { buttonModifier ->
- KeyboardButtonAdditional(buttonModifier, IconPack.Root, stringResource(R.string.keyboard_root), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Operator.sqrt) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Pi, stringResource(R.string.keyboard_pi), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Const.pi) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Power, stringResource(R.string.keyboard_power), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Operator.power) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Factorial, stringResource(R.string.keyboard_factorial), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Operator.factorial) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Root, stringResource(R.string.keyboard_root), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Operator.sqrt) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Pi, stringResource(R.string.keyboard_pi), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Const.pi) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Power, stringResource(R.string.keyboard_power), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Operator.power) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Factorial, stringResource(R.string.keyboard_factorial), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Operator.factorial) }
},
content2 = { buttonModifier ->
- KeyboardButtonAdditional(buttonModifier, angleIcon, stringResource(angleIconDescription), KeyboardButtonContentHeightTallAdditional) { onRadianModeClick(!radianMode) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Sin, stringResource(R.string.keyboard_sin), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Func.sinBracket) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Cos, stringResource(R.string.keyboard_cos), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Func.cosBracket) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Tan, stringResource(R.string.keyboard_tan), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Func.tanBracket) }
+ KeyboardButtonAdditional(buttonModifier, angleIcon, stringResource(angleIconDescription), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onRadianModeClick(!radianMode) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Sin, stringResource(R.string.keyboard_sin), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Func.sinBracket) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Cos, stringResource(R.string.keyboard_cos), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Func.cosBracket) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Tan, stringResource(R.string.keyboard_tan), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Func.tanBracket) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Inv, stringResource(R.string.keyboard_inverse), KeyboardButtonContentHeightTallAdditional) { onInverseModeClick(!inverseMode) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Euler, stringResource(R.string.keyboard_exp), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Const.e) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Ln, stringResource(R.string.keyboard_ln), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Func.lnBracket) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Log, stringResource(R.string.keyboard_log), KeyboardButtonContentHeightTallAdditional) { onAddTokenClick(Token.Func.logBracket) }
- }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Inv, stringResource(R.string.keyboard_inverse), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onInverseModeClick(!inverseMode) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Euler, stringResource(R.string.keyboard_exp), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Const.e) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Ln, stringResource(R.string.keyboard_ln), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Func.lnBracket) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Log, stringResource(R.string.keyboard_log), KeyboardButtonToken.CONTENT_HEIGHT_TALL_ADDITIONAL) { onAddTokenClick(Token.Func.logBracket) }
+ },
)
}
}
Box(
modifier = Modifier.size(additionalButtonHeight),
- contentAlignment = Alignment.Center
+ contentAlignment = Alignment.Center,
) {
IconButton(
onClick = { onAdditionalButtonsClick(!additionalButtons) },
- colors = IconButtonDefaults.iconButtonColors(containerColor = MaterialTheme.colorScheme.inverseOnSurface)
+ colors = IconButtonDefaults.iconButtonColors(containerColor = MaterialTheme.colorScheme.inverseOnSurface),
) {
Icon(Icons.Default.ExpandMore, null, Modifier.rotate(expandRotation))
}
@@ -290,39 +287,39 @@ private fun PortraitKeyboard(
.fillMaxHeight(height)
if (showAcButton) {
- KeyboardButtonTertiary(mainButtonModifier, IconPack.Clear, stringResource(R.string.clear_label), KeyboardButtonContentHeightTall) { onClearClick() }
- KeyboardButtonFilled(mainButtonModifier, IconPack.Brackets, stringResource(R.string.keyboard_brackets), KeyboardButtonContentHeightTall) { onBracketsClick() }
+ KeyboardButtonTertiary(mainButtonModifier, IconPack.Clear, stringResource(R.string.clear_label), KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onClearClick() }
+ KeyboardButtonFilled(mainButtonModifier, IconPack.Brackets, stringResource(R.string.keyboard_brackets), KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onBracketsClick() }
} else {
- KeyboardButtonFilled(mainButtonModifier, IconPack.LeftBracket, stringResource(R.string.keyboard_left_bracket), KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Operator.leftBracket) }
- KeyboardButtonFilled(mainButtonModifier, IconPack.RightBracket, stringResource(R.string.keyboard_right_bracket), KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Operator.rightBracket) }
+ KeyboardButtonFilled(mainButtonModifier, IconPack.LeftBracket, stringResource(R.string.keyboard_left_bracket), KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Operator.leftBracket) }
+ KeyboardButtonFilled(mainButtonModifier, IconPack.RightBracket, stringResource(R.string.keyboard_right_bracket), KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Operator.rightBracket) }
}
- KeyboardButtonFilled(mainButtonModifier, IconPack.Percent, stringResource(R.string.keyboard_percent), KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Operator.percent) }
- KeyboardButtonFilled(mainButtonModifier, IconPack.Divide, stringResource(R.string.keyboard_divide), KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Operator.divide) }
+ KeyboardButtonFilled(mainButtonModifier, IconPack.Percent, stringResource(R.string.keyboard_percent), KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Operator.percent) }
+ KeyboardButtonFilled(mainButtonModifier, IconPack.Divide, stringResource(R.string.keyboard_divide), KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Operator.divide) }
- KeyboardButtonLight(mainButtonModifier, IconPack.Key7, Token.Digit._7, KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Digit._7) }
- KeyboardButtonLight(mainButtonModifier, IconPack.Key8, Token.Digit._8, KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Digit._8) }
- KeyboardButtonLight(mainButtonModifier, IconPack.Key9, Token.Digit._9, KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Digit._9) }
- KeyboardButtonFilled(mainButtonModifier, IconPack.Multiply, stringResource(R.string.keyboard_multiply), KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Operator.multiply) }
+ KeyboardButtonLight(mainButtonModifier, IconPack.Key7, Token.Digit._7, KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Digit._7) }
+ KeyboardButtonLight(mainButtonModifier, IconPack.Key8, Token.Digit._8, KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Digit._8) }
+ KeyboardButtonLight(mainButtonModifier, IconPack.Key9, Token.Digit._9, KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Digit._9) }
+ KeyboardButtonFilled(mainButtonModifier, IconPack.Multiply, stringResource(R.string.keyboard_multiply), KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Operator.multiply) }
- KeyboardButtonLight(mainButtonModifier, IconPack.Key4, Token.Digit._4, KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Digit._4) }
- KeyboardButtonLight(mainButtonModifier, IconPack.Key5, Token.Digit._5, KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Digit._5) }
- KeyboardButtonLight(mainButtonModifier, IconPack.Key6, Token.Digit._6, KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Digit._6) }
- KeyboardButtonFilled(mainButtonModifier, IconPack.Minus, stringResource(R.string.keyboard_minus), KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Operator.minus) }
+ KeyboardButtonLight(mainButtonModifier, IconPack.Key4, Token.Digit._4, KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Digit._4) }
+ KeyboardButtonLight(mainButtonModifier, IconPack.Key5, Token.Digit._5, KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Digit._5) }
+ KeyboardButtonLight(mainButtonModifier, IconPack.Key6, Token.Digit._6, KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Digit._6) }
+ KeyboardButtonFilled(mainButtonModifier, IconPack.Minus, stringResource(R.string.keyboard_minus), KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Operator.minus) }
- KeyboardButtonLight(mainButtonModifier, IconPack.Key1, Token.Digit._1, KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Digit._1) }
- KeyboardButtonLight(mainButtonModifier, IconPack.Key2, Token.Digit._2, KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Digit._2) }
- KeyboardButtonLight(mainButtonModifier, IconPack.Key3, Token.Digit._3, KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Digit._3) }
- KeyboardButtonFilled(mainButtonModifier, IconPack.Plus, stringResource(R.string.keyboard_plus), KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Operator.plus) }
+ KeyboardButtonLight(mainButtonModifier, IconPack.Key1, Token.Digit._1, KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Digit._1) }
+ KeyboardButtonLight(mainButtonModifier, IconPack.Key2, Token.Digit._2, KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Digit._2) }
+ KeyboardButtonLight(mainButtonModifier, IconPack.Key3, Token.Digit._3, KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Digit._3) }
+ KeyboardButtonFilled(mainButtonModifier, IconPack.Plus, stringResource(R.string.keyboard_plus), KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Operator.plus) }
if (middleZero) {
- KeyboardButtonLight(mainButtonModifier, fractionalIcon, stringResource(fractionalIconDescription), KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Digit.dot) }
- KeyboardButtonLight(mainButtonModifier, IconPack.Key0, Token.Digit._0, KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Digit._0) }
+ KeyboardButtonLight(mainButtonModifier, fractionalIcon, stringResource(fractionalIconDescription), KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Digit.dot) }
+ KeyboardButtonLight(mainButtonModifier, IconPack.Key0, Token.Digit._0, KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Digit._0) }
} else {
- KeyboardButtonLight(mainButtonModifier, IconPack.Key0, Token.Digit._0, KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Digit._0) }
- KeyboardButtonLight(mainButtonModifier, fractionalIcon, stringResource(fractionalIconDescription), KeyboardButtonContentHeightTall) { onAddTokenClick(Token.Digit.dot) }
+ KeyboardButtonLight(mainButtonModifier, IconPack.Key0, Token.Digit._0, KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Digit._0) }
+ KeyboardButtonLight(mainButtonModifier, fractionalIcon, stringResource(fractionalIconDescription), KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onAddTokenClick(Token.Digit.dot) }
}
- KeyboardButtonLight(mainButtonModifier, IconPack.Backspace, stringResource(R.string.delete_label), KeyboardButtonContentHeightTall, onClearClick) { onDeleteClick() }
- KeyboardButtonFilled(mainButtonModifier, IconPack.Equal, stringResource(R.string.keyboard_equal), KeyboardButtonContentHeightTall) { onEqualClick() }
+ KeyboardButtonLight(mainButtonModifier, IconPack.Backspace, stringResource(R.string.delete_label), KeyboardButtonToken.CONTENT_HEIGHT_TALL, onClearClick) { onDeleteClick() }
+ KeyboardButtonFilled(mainButtonModifier, IconPack.Equal, stringResource(R.string.keyboard_equal), KeyboardButtonToken.CONTENT_HEIGHT_TALL) { onEqualClick() }
}
Spacer(modifier = Modifier.height(spacerHeight))
@@ -347,7 +344,7 @@ private fun AdditionalPortrait(
additionalButtons: Boolean,
buttonHeight: Dp,
content1: @Composable (buttonModifier: Modifier) -> Unit,
- content2: @Composable (buttonModifier: Modifier) -> Unit
+ content2: @Composable (buttonModifier: Modifier) -> Unit,
) {
AnimatedContent(
targetState = additionalButtons,
@@ -355,8 +352,8 @@ private fun AdditionalPortrait(
label = "Additional buttons reveal",
transitionSpec = {
expandVertically(expandFrom = Alignment.Top) togetherWith
- shrinkVertically(shrinkTowards = Alignment.Top) using (SizeTransform())
- }
+ shrinkVertically(shrinkTowards = Alignment.Top) using (SizeTransform())
+ },
) { show ->
if (show) {
KeypadFlow(
@@ -422,119 +419,119 @@ private fun LandscapeKeyboard(
Crossfade(
targetState = inverseMode,
label = "Inverse switch",
- modifier = modifier
+ modifier = modifier,
) { inverse ->
if (inverse) {
KeypadFlow(
modifier = Modifier.fillMaxSize(),
rows = 4,
- columns = 8
+ columns = 8,
) { width, height ->
val buttonModifier = Modifier
.fillMaxWidth(width)
.fillMaxHeight(height)
- KeyboardButtonAdditional(buttonModifier, angleIcon, stringResource(angleIconDescription), KeyboardButtonContentHeightShortAdditional) { onRadianModeClick(!radianMode) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Modulo, stringResource(R.string.keyboard_modulo), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Operator.modulo) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Pi, stringResource(R.string.keyboard_pi), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Const.pi) }
- KeyboardButtonLight(buttonModifier, IconPack.Key7, Token.Digit._7, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._7) }
- KeyboardButtonLight(buttonModifier, IconPack.Key8, Token.Digit._8, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._8) }
- KeyboardButtonLight(buttonModifier, IconPack.Key9, Token.Digit._9, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._9) }
+ KeyboardButtonAdditional(buttonModifier, angleIcon, stringResource(angleIconDescription), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onRadianModeClick(!radianMode) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Modulo, stringResource(R.string.keyboard_modulo), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Operator.modulo) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Pi, stringResource(R.string.keyboard_pi), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Const.pi) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key7, Token.Digit._7, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._7) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key8, Token.Digit._8, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._8) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key9, Token.Digit._9, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._9) }
if (showAcButton) {
- KeyboardButtonTertiary(buttonModifier, IconPack.Clear, stringResource(R.string.clear_label), KeyboardButtonContentHeightShort) { onClearClick() }
- KeyboardButtonFilled(buttonModifier, IconPack.Brackets, stringResource(R.string.keyboard_brackets), KeyboardButtonContentHeightShort) { onBracketsClick() }
+ KeyboardButtonTertiary(buttonModifier, IconPack.Clear, stringResource(R.string.clear_label), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onClearClick() }
+ KeyboardButtonFilled(buttonModifier, IconPack.Brackets, stringResource(R.string.keyboard_brackets), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onBracketsClick() }
} else {
- KeyboardButtonFilled(buttonModifier, IconPack.LeftBracket, stringResource(R.string.keyboard_left_bracket), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Operator.leftBracket) }
- KeyboardButtonFilled(buttonModifier, IconPack.RightBracket, stringResource(R.string.keyboard_right_bracket), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Operator.rightBracket) }
+ KeyboardButtonFilled(buttonModifier, IconPack.LeftBracket, stringResource(R.string.keyboard_left_bracket), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Operator.leftBracket) }
+ KeyboardButtonFilled(buttonModifier, IconPack.RightBracket, stringResource(R.string.keyboard_right_bracket), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Operator.rightBracket) }
}
- KeyboardButtonAdditional(buttonModifier, IconPack.Inv, stringResource(R.string.keyboard_inverse), KeyboardButtonContentHeightShortAdditional) { onInverseModeClick(!inverseMode) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Power, stringResource(R.string.keyboard_power), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Operator.power) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Factorial, stringResource(R.string.keyboard_factorial), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Operator.factorial) }
- KeyboardButtonLight(buttonModifier, IconPack.Key4, Token.Digit._4, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._4) }
- KeyboardButtonLight(buttonModifier, IconPack.Key5, Token.Digit._5, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._5) }
- KeyboardButtonLight(buttonModifier, IconPack.Key6, Token.Digit._6, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._6) }
- KeyboardButtonFilled(buttonModifier, IconPack.Multiply, stringResource(R.string.keyboard_multiply), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Operator.multiply) }
- KeyboardButtonFilled(buttonModifier, IconPack.Divide, stringResource(R.string.keyboard_divide), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Operator.divide) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Inv, stringResource(R.string.keyboard_inverse), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onInverseModeClick(!inverseMode) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Power, stringResource(R.string.keyboard_power), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Operator.power) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Factorial, stringResource(R.string.keyboard_factorial), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Operator.factorial) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key4, Token.Digit._4, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._4) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key5, Token.Digit._5, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._5) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key6, Token.Digit._6, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._6) }
+ KeyboardButtonFilled(buttonModifier, IconPack.Multiply, stringResource(R.string.keyboard_multiply), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Operator.multiply) }
+ KeyboardButtonFilled(buttonModifier, IconPack.Divide, stringResource(R.string.keyboard_divide), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Operator.divide) }
- KeyboardButtonAdditional(buttonModifier, IconPack.ArSin, stringResource(R.string.keyboard_arsin), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Func.arsinBracket) }
- KeyboardButtonAdditional(buttonModifier, IconPack.ArCos, stringResource(R.string.keyboard_arcos), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Func.arcosBracket) }
- KeyboardButtonAdditional(buttonModifier, IconPack.AcTan, stringResource(R.string.keyboard_actan), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Func.actanBracket) }
- KeyboardButtonLight(buttonModifier, IconPack.Key1, Token.Digit._1, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._1) }
- KeyboardButtonLight(buttonModifier, IconPack.Key2, Token.Digit._2, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._2) }
- KeyboardButtonLight(buttonModifier, IconPack.Key3, Token.Digit._3, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._3) }
- KeyboardButtonFilled(buttonModifier, IconPack.Minus, stringResource(R.string.keyboard_minus), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Operator.minus) }
- KeyboardButtonFilled(buttonModifier, IconPack.Percent, stringResource(R.string.keyboard_percent), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Operator.percent) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.ArSin, stringResource(R.string.keyboard_arsin), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Func.arsinBracket) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.ArCos, stringResource(R.string.keyboard_arcos), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Func.arcosBracket) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.AcTan, stringResource(R.string.keyboard_actan), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Func.actanBracket) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key1, Token.Digit._1, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._1) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key2, Token.Digit._2, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._2) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key3, Token.Digit._3, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._3) }
+ KeyboardButtonFilled(buttonModifier, IconPack.Minus, stringResource(R.string.keyboard_minus), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Operator.minus) }
+ KeyboardButtonFilled(buttonModifier, IconPack.Percent, stringResource(R.string.keyboard_percent), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Operator.percent) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Euler, stringResource(R.string.keyboard_euler), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Const.e) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Ex, stringResource(R.string.keyboard_exp), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Func.expBracket) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Power10, stringResource(R.string.keyboard_power_10), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Digit._1 + Token.Digit._0 + Token.Operator.power) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Euler, stringResource(R.string.keyboard_euler), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Const.e) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Ex, stringResource(R.string.keyboard_exp), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Func.expBracket) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Power10, stringResource(R.string.keyboard_power_10), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Digit._1 + Token.Digit._0 + Token.Operator.power) }
if (middleZero) {
- KeyboardButtonLight(buttonModifier, fractionalIcon, stringResource(fractionalIconDescription), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit.dot) }
- KeyboardButtonLight(buttonModifier, IconPack.Key0, Token.Digit._0, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._0) }
+ KeyboardButtonLight(buttonModifier, fractionalIcon, stringResource(fractionalIconDescription), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit.dot) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key0, Token.Digit._0, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._0) }
} else {
- KeyboardButtonLight(buttonModifier, IconPack.Key0, Token.Digit._0, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._0) }
- KeyboardButtonLight(buttonModifier, fractionalIcon, stringResource(fractionalIconDescription), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit.dot) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key0, Token.Digit._0, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._0) }
+ KeyboardButtonLight(buttonModifier, fractionalIcon, stringResource(fractionalIconDescription), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit.dot) }
}
- KeyboardButtonLight(buttonModifier, IconPack.Backspace, stringResource(R.string.delete_label), KeyboardButtonContentHeightShort, onClearClick) { onDeleteClick() }
- KeyboardButtonFilled(buttonModifier, IconPack.Plus, stringResource(R.string.keyboard_plus), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Operator.plus) }
- KeyboardButtonFilled(buttonModifier, IconPack.Equal, stringResource(R.string.keyboard_equal), KeyboardButtonContentHeightShort) { onEqualClick() }
+ KeyboardButtonLight(buttonModifier, IconPack.Backspace, stringResource(R.string.delete_label), KeyboardButtonToken.CONTENT_HEIGHT_SHORT, onClearClick) { onDeleteClick() }
+ KeyboardButtonFilled(buttonModifier, IconPack.Plus, stringResource(R.string.keyboard_plus), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Operator.plus) }
+ KeyboardButtonFilled(buttonModifier, IconPack.Equal, stringResource(R.string.keyboard_equal), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onEqualClick() }
}
} else {
KeypadFlow(
modifier = Modifier.fillMaxSize(),
rows = 4,
- columns = 8
+ columns = 8,
) { width, height ->
val buttonModifier = Modifier
.fillMaxWidth(width)
.fillMaxHeight(height)
- KeyboardButtonAdditional(buttonModifier, angleIcon, stringResource(angleIconDescription), KeyboardButtonContentHeightShortAdditional) { onRadianModeClick(!radianMode) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Root, stringResource(R.string.keyboard_root), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Operator.sqrt) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Pi, stringResource(R.string.keyboard_pi), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Const.pi) }
- KeyboardButtonLight(buttonModifier, IconPack.Key7, Token.Digit._7, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._7) }
- KeyboardButtonLight(buttonModifier, IconPack.Key8, Token.Digit._8, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._8) }
- KeyboardButtonLight(buttonModifier, IconPack.Key9, Token.Digit._9, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._9) }
+ KeyboardButtonAdditional(buttonModifier, angleIcon, stringResource(angleIconDescription), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onRadianModeClick(!radianMode) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Root, stringResource(R.string.keyboard_root), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Operator.sqrt) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Pi, stringResource(R.string.keyboard_pi), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Const.pi) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key7, Token.Digit._7, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._7) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key8, Token.Digit._8, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._8) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key9, Token.Digit._9, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._9) }
if (showAcButton) {
- KeyboardButtonTertiary(buttonModifier, IconPack.Clear, stringResource(R.string.clear_label), KeyboardButtonContentHeightShort) { onClearClick() }
- KeyboardButtonFilled(buttonModifier, IconPack.Brackets, stringResource(R.string.keyboard_brackets), KeyboardButtonContentHeightShort) { onBracketsClick() }
+ KeyboardButtonTertiary(buttonModifier, IconPack.Clear, stringResource(R.string.clear_label), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onClearClick() }
+ KeyboardButtonFilled(buttonModifier, IconPack.Brackets, stringResource(R.string.keyboard_brackets), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onBracketsClick() }
} else {
- KeyboardButtonFilled(buttonModifier, IconPack.LeftBracket, stringResource(R.string.keyboard_left_bracket), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Operator.leftBracket) }
- KeyboardButtonFilled(buttonModifier, IconPack.RightBracket, stringResource(R.string.keyboard_right_bracket), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Operator.rightBracket) }
+ KeyboardButtonFilled(buttonModifier, IconPack.LeftBracket, stringResource(R.string.keyboard_left_bracket), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Operator.leftBracket) }
+ KeyboardButtonFilled(buttonModifier, IconPack.RightBracket, stringResource(R.string.keyboard_right_bracket), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Operator.rightBracket) }
}
- KeyboardButtonAdditional(buttonModifier, IconPack.Inv, stringResource(R.string.keyboard_inverse), KeyboardButtonContentHeightShortAdditional) { onInverseModeClick(!inverseMode) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Power, stringResource(R.string.keyboard_power), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Operator.power) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Factorial, stringResource(R.string.keyboard_factorial), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Operator.factorial) }
- KeyboardButtonLight(buttonModifier, IconPack.Key4, Token.Digit._4, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._4) }
- KeyboardButtonLight(buttonModifier, IconPack.Key5, Token.Digit._5, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._5) }
- KeyboardButtonLight(buttonModifier, IconPack.Key6, Token.Digit._6, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._6) }
- KeyboardButtonFilled(buttonModifier, IconPack.Multiply, stringResource(R.string.keyboard_multiply), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Operator.multiply) }
- KeyboardButtonFilled(buttonModifier, IconPack.Divide, stringResource(R.string.keyboard_divide), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Operator.divide) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Inv, stringResource(R.string.keyboard_inverse), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onInverseModeClick(!inverseMode) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Power, stringResource(R.string.keyboard_power), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Operator.power) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Factorial, stringResource(R.string.keyboard_factorial), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Operator.factorial) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key4, Token.Digit._4, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._4) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key5, Token.Digit._5, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._5) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key6, Token.Digit._6, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._6) }
+ KeyboardButtonFilled(buttonModifier, IconPack.Multiply, stringResource(R.string.keyboard_multiply), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Operator.multiply) }
+ KeyboardButtonFilled(buttonModifier, IconPack.Divide, stringResource(R.string.keyboard_divide), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Operator.divide) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Sin, stringResource(R.string.keyboard_sin), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Func.sinBracket) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Cos, stringResource(R.string.keyboard_cos), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Func.cosBracket) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Tan, stringResource(R.string.keyboard_tan), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Func.tanBracket) }
- KeyboardButtonLight(buttonModifier, IconPack.Key1, Token.Digit._1, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._1) }
- KeyboardButtonLight(buttonModifier, IconPack.Key2, Token.Digit._2, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._2) }
- KeyboardButtonLight(buttonModifier, IconPack.Key3, Token.Digit._3, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._3) }
- KeyboardButtonFilled(buttonModifier, IconPack.Minus, stringResource(R.string.keyboard_minus), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Operator.minus) }
- KeyboardButtonFilled(buttonModifier, IconPack.Percent, stringResource(R.string.keyboard_percent), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Operator.percent) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Sin, stringResource(R.string.keyboard_sin), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Func.sinBracket) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Cos, stringResource(R.string.keyboard_cos), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Func.cosBracket) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Tan, stringResource(R.string.keyboard_tan), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Func.tanBracket) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key1, Token.Digit._1, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._1) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key2, Token.Digit._2, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._2) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key3, Token.Digit._3, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._3) }
+ KeyboardButtonFilled(buttonModifier, IconPack.Minus, stringResource(R.string.keyboard_minus), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Operator.minus) }
+ KeyboardButtonFilled(buttonModifier, IconPack.Percent, stringResource(R.string.keyboard_percent), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Operator.percent) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Euler, stringResource(R.string.keyboard_euler), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Const.e) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Ln, stringResource(R.string.keyboard_ln), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Func.lnBracket) }
- KeyboardButtonAdditional(buttonModifier, IconPack.Log, stringResource(R.string.keyboard_log), KeyboardButtonContentHeightShortAdditional) { onAddTokenClick(Token.Func.logBracket) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Euler, stringResource(R.string.keyboard_euler), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Const.e) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Ln, stringResource(R.string.keyboard_ln), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Func.lnBracket) }
+ KeyboardButtonAdditional(buttonModifier, IconPack.Log, stringResource(R.string.keyboard_log), KeyboardButtonToken.CONTENT_HEIGHT_SHORT_ADDITIONAL) { onAddTokenClick(Token.Func.logBracket) }
if (middleZero) {
- KeyboardButtonLight(buttonModifier, fractionalIcon, stringResource(fractionalIconDescription), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit.dot) }
- KeyboardButtonLight(buttonModifier, IconPack.Key0, Token.Digit._0, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._0) }
+ KeyboardButtonLight(buttonModifier, fractionalIcon, stringResource(fractionalIconDescription), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit.dot) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key0, Token.Digit._0, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._0) }
} else {
- KeyboardButtonLight(buttonModifier, IconPack.Key0, Token.Digit._0, KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit._0) }
- KeyboardButtonLight(buttonModifier, fractionalIcon, stringResource(fractionalIconDescription), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Digit.dot) }
+ KeyboardButtonLight(buttonModifier, IconPack.Key0, Token.Digit._0, KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit._0) }
+ KeyboardButtonLight(buttonModifier, fractionalIcon, stringResource(fractionalIconDescription), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Digit.dot) }
}
- KeyboardButtonLight(buttonModifier, IconPack.Backspace, stringResource(R.string.delete_label), KeyboardButtonContentHeightShort, onClearClick) { onDeleteClick() }
- KeyboardButtonFilled(buttonModifier, IconPack.Plus, stringResource(R.string.keyboard_plus), KeyboardButtonContentHeightShort) { onAddTokenClick(Token.Operator.plus) }
- KeyboardButtonFilled(buttonModifier, IconPack.Equal, stringResource(R.string.keyboard_equal), KeyboardButtonContentHeightShort) { onEqualClick() }
+ KeyboardButtonLight(buttonModifier, IconPack.Backspace, stringResource(R.string.delete_label), KeyboardButtonToken.CONTENT_HEIGHT_SHORT, onClearClick) { onDeleteClick() }
+ KeyboardButtonFilled(buttonModifier, IconPack.Plus, stringResource(R.string.keyboard_plus), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onAddTokenClick(Token.Operator.plus) }
+ KeyboardButtonFilled(buttonModifier, IconPack.Equal, stringResource(R.string.keyboard_equal), KeyboardButtonToken.CONTENT_HEIGHT_SHORT) { onEqualClick() }
}
}
}
diff --git a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/HistoryList.kt b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/HistoryList.kt
index edfbcb37..45e7ad72 100644
--- a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/HistoryList.kt
+++ b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/HistoryList.kt
@@ -92,12 +92,12 @@ private fun HistoryListPlaceholder(
Column(
modifier = modifier.wrapContentHeight(unbounded = true),
verticalArrangement = Arrangement.Center,
- horizontalAlignment = Alignment.CenterHorizontally
+ horizontalAlignment = Alignment.CenterHorizontally,
) {
Column(
modifier = Modifier.height(HistoryItemHeight),
verticalArrangement = Arrangement.Center,
- horizontalAlignment = Alignment.CenterHorizontally
+ horizontalAlignment = Alignment.CenterHorizontally,
) {
Icon(Icons.Default.History, stringResource(R.string.calculator_no_history))
Text(stringResource(R.string.calculator_no_history))
@@ -165,7 +165,7 @@ private fun HistoryListItem(
modifier = Modifier,
imageVector = Icons.Outlined.Close,
contentDescription = stringResource(R.string.delete_label),
- tint = MaterialTheme.colorScheme.onSurfaceVariant
+ tint = MaterialTheme.colorScheme.onSurfaceVariant,
)
}
}
@@ -174,7 +174,7 @@ private fun HistoryListItem(
.weight(1f)
.fillMaxHeight(),
verticalArrangement = Arrangement.Center,
- horizontalAlignment = Alignment.End
+ horizontalAlignment = Alignment.End,
) {
FixedExpressionInputTextField(
modifier = Modifier
@@ -218,7 +218,7 @@ private fun PreviewHistoryList() {
id = it.hashCode(),
date = dtf.parse(it)!!,
expression = "12345".repeat(10),
- result = "67890"
+ result = "67890",
)
}
diff --git a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/TextBox.kt b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/TextBox.kt
index 542f09d9..54420798 100644
--- a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/TextBox.kt
+++ b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/components/TextBox.kt
@@ -61,9 +61,11 @@ fun TextBox(
.background(
MaterialTheme.colorScheme.surfaceVariant,
RoundedCornerShape(
- topStartPercent = 0, topEndPercent = 0,
- bottomStartPercent = 20, bottomEndPercent = 20
- )
+ topStartPercent = 0,
+ topEndPercent = 0,
+ bottomStartPercent = 20,
+ bottomEndPercent = 20,
+ ),
)
.padding(top = 4.dp),
horizontalAlignment = Alignment.CenterHorizontally,
@@ -76,7 +78,7 @@ fun TextBox(
value = input,
minRatio = 0.5f,
onValueChange = onValueChange,
- formatterSymbols = formatterSymbols
+ formatterSymbols = formatterSymbols,
)
if (LocalWindowSize.current.heightSizeClass > WindowHeightSizeClass.Compact) {
val calculationResultModifier = Modifier
@@ -87,7 +89,7 @@ fun TextBox(
when (output) {
is CalculationResult.Empty -> {
Spacer(
- modifier = calculationResultModifier
+ modifier = calculationResultModifier,
)
}
@@ -144,7 +146,6 @@ fun TextBox(
)
}
}
-
}
// Handle
Box(
@@ -152,9 +153,9 @@ fun TextBox(
.padding(8.dp)
.background(
MaterialTheme.colorScheme.onSurfaceVariant,
- RoundedCornerShape(100)
+ RoundedCornerShape(100),
)
- .sizeIn(24.dp, 4.dp)
+ .sizeIn(24.dp, 4.dp),
)
}
-}
\ No newline at end of file
+}
diff --git a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/navigation/CalculatorNavigation.kt b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/navigation/CalculatorNavigation.kt
index 0cfeac6c..fec9e531 100644
--- a/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/navigation/CalculatorNavigation.kt
+++ b/feature/calculator/src/main/java/com/sadellie/unitto/feature/calculator/navigation/CalculatorNavigation.kt
@@ -35,8 +35,8 @@ fun NavGraphBuilder.calculatorGraph(
startDestination = start,
route = graph,
deepLinks = listOf(
- navDeepLink { uriPattern = "app://com.sadellie.unitto/$graph" }
- )
+ navDeepLink { uriPattern = "app://com.sadellie.unitto/$graph" },
+ ),
) {
unittoComposable(start) {
CalculatorRoute(
diff --git a/feature/calculator/src/test/java/com/sadellie/unitto/feature/calculator/DecimalToFractionTest.kt b/feature/calculator/src/test/java/com/sadellie/unitto/feature/calculator/DecimalToFractionTest.kt
index da71d66a..0e6b2639 100644
--- a/feature/calculator/src/test/java/com/sadellie/unitto/feature/calculator/DecimalToFractionTest.kt
+++ b/feature/calculator/src/test/java/com/sadellie/unitto/feature/calculator/DecimalToFractionTest.kt
@@ -79,6 +79,6 @@ class DecimalToFractionTest {
private fun assertFractional(expected: String, actual: String) = assertEquals(
expected,
- actual.replace("⁄", "/")
+ actual.replace("⁄", "/"),
)
}
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/NetworkUtils.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConnectionState.kt
similarity index 91%
rename from feature/converter/src/main/java/com/sadellie/unitto/feature/converter/NetworkUtils.kt
rename to feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConnectionState.kt
index ae47624b..5ea4e9e8 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/NetworkUtils.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConnectionState.kt
@@ -41,8 +41,12 @@ private fun Context.observeConnectivityAsFlow() = callbackFlow {
val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val callback = object : ConnectivityManager.NetworkCallback() {
- override fun onAvailable(network: Network) { trySend(ConnectionState.Available) }
- override fun onLost(network: Network) { trySend(ConnectionState.Unavailable) }
+ override fun onAvailable(network: Network) {
+ trySend(ConnectionState.Available)
+ }
+ override fun onLost(network: Network) {
+ trySend(ConnectionState.Unavailable)
+ }
}
val networkRequest = NetworkRequest.Builder()
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterScreen.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterScreen.kt
index cbe8a40e..f18f63c6 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterScreen.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterScreen.kt
@@ -114,7 +114,7 @@ internal fun ConverterRoute(
onValueChange = viewModel::updateInput,
onFocusOnInput2 = viewModel::updateFocused,
onErrorClick = viewModel::updateCurrencyRates,
- addBracket = viewModel::addBracket
+ addBracket = viewModel::addBracket,
)
}
@@ -149,7 +149,7 @@ private fun ConverterScreen(
navigateToLeftScreen = navigateToLeftScreen,
swapUnits = swapUnits,
navigateToRightScreen = navigateToRightScreen,
- clearInput = clearInput
+ clearInput = clearInput,
)
}
}
@@ -180,13 +180,13 @@ private fun ConverterScreen(
@Composable
private fun UnitConverterTopBar(
openDrawer: () -> Unit,
- content: @Composable (PaddingValues) -> Unit
+ content: @Composable (PaddingValues) -> Unit,
) {
ScaffoldWithTopBar(
title = {},
navigationIcon = { DrawerButton { openDrawer() } },
colors = TopAppBarDefaults.centerAlignedTopAppBarColors(containerColor = Color.Transparent),
- content = { content(it) }
+ content = { content(it) },
)
}
@@ -219,7 +219,7 @@ private fun NumberBase(
ConverterResultTextField(
modifier = textFieldModifier,
- result = uiState.result
+ result = uiState.result,
)
AnimatedUnitShortName(stringResource(uiState.unitTo.shortName))
@@ -230,7 +230,7 @@ private fun NumberBase(
unitToLabel = stringResource(uiState.unitTo.displayName),
swapUnits = swapUnits,
navigateToLeftScreen = { navigateToLeftScreen(uiState) },
- navigateToRightScreen = { navigateToRightScreen(uiState) }
+ navigateToRightScreen = { navigateToRightScreen(uiState) },
)
}
},
@@ -241,7 +241,7 @@ private fun NumberBase(
deleteDigit = deleteDigit,
clearInput = clearInput,
)
- }
+ },
)
}
@@ -263,7 +263,7 @@ private fun Default(
val locale: Locale = LocalLocale.current
var calculation by remember(uiState.calculation) {
mutableStateOf(
- TextFieldValue(uiState.calculation?.format(uiState.scale, uiState.outputFormat) ?: "")
+ TextFieldValue(uiState.calculation?.format(uiState.scale, uiState.outputFormat) ?: ""),
)
}
val connection by connectivityState()
@@ -302,19 +302,19 @@ private fun Default(
.fillMaxWidth(),
text = lastUpdate.orEmpty(),
color = MaterialTheme.colorScheme.onSurfaceVariant,
- textAlign = TextAlign.Center
+ textAlign = TextAlign.Center,
)
}
if (uiState.unitFrom.id == UnitID.foot) {
Row(
modifier = textFieldModifier,
- horizontalArrangement = Arrangement.spacedBy(8.dp)
+ horizontalArrangement = Arrangement.spacedBy(8.dp),
) {
Column(
modifier = Modifier
.fillMaxWidth()
- .weight(1f)
+ .weight(1f),
) {
ExpressionTextField(
modifier = Modifier
@@ -334,7 +334,7 @@ private fun Default(
Column(
modifier = Modifier
.fillMaxWidth()
- .weight(1f)
+ .weight(1f),
) {
ExpressionTextField(
modifier = Modifier
@@ -363,7 +363,7 @@ private fun Default(
visible = calculation.text.isNotEmpty(),
modifier = Modifier.weight(1f),
enter = expandVertically(clip = false),
- exit = shrinkVertically(clip = false)
+ exit = shrinkVertically(clip = false),
) {
ExpressionTextField(
modifier = Modifier,
@@ -372,7 +372,7 @@ private fun Default(
onValueChange = { calculation = it },
textColor = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.6f),
formatterSymbols = uiState.formatterSymbols,
- readOnly = true
+ readOnly = true,
)
}
AnimatedUnitShortName(stringResource(uiState.unitFrom.shortName))
@@ -384,13 +384,16 @@ private fun Default(
scale = uiState.scale,
outputFormat = uiState.outputFormat,
formatterSymbols = uiState.formatterSymbols,
- onErrorClick = { refreshCurrencyRates(uiState.unitFrom) }
+ onErrorClick = { refreshCurrencyRates(uiState.unitFrom) },
)
AnimatedUnitShortName(
stringResource(
- if (uiState.result is ConverterResult.Error) R.string.click_to_try_again_label
- else uiState.unitTo.shortName
- )
+ if (uiState.result is ConverterResult.Error) {
+ R.string.click_to_try_again_label
+ } else {
+ uiState.unitTo.shortName
+ },
+ ),
)
Spacer(modifier = Modifier.height(boxWithConstraintsScope.maxHeight * 0.03f))
@@ -400,7 +403,7 @@ private fun Default(
unitToLabel = stringResource(uiState.unitTo.displayName),
swapUnits = swapUnits,
navigateToLeftScreen = { navigateToLeftScreen(uiState) },
- navigateToRightScreen = { navigateToRightScreen(uiState) }
+ navigateToRightScreen = { navigateToRightScreen(uiState) },
)
}
},
@@ -413,9 +416,9 @@ private fun Default(
fractional = uiState.formatterSymbols.fractional,
middleZero = uiState.middleZero,
acButton = uiState.acButton,
- addBracket = addBracket
+ addBracket = addBracket,
)
- }
+ },
)
}
@@ -447,7 +450,7 @@ private fun ConverterResultTextField(
value = TextFieldValue(stringResource(R.string.loading_label)),
onValueChange = {},
minRatio = 0.7f,
- readOnly = true
+ readOnly = true,
)
}
@@ -469,7 +472,7 @@ private fun ConverterResultTextField(
minRatio = 0.7f,
onValueChange = { resultTextField = it },
formatterSymbols = formatterSymbols,
- readOnly = true
+ readOnly = true,
)
}
@@ -479,18 +482,19 @@ private fun ConverterResultTextField(
value = resultTextField,
onValueChange = { resultTextField = it },
minRatio = 0.7f,
- readOnly = true
+ readOnly = true,
)
}
is ConverterResult.Time,
- is ConverterResult.FootInch -> {
+ is ConverterResult.FootInch,
+ -> {
SimpleTextField(
modifier = modifier,
value = resultTextField,
onValueChange = { resultTextField = it },
minRatio = 0.7f,
- readOnly = true
+ readOnly = true,
)
}
}
@@ -505,14 +509,16 @@ private fun AnimatedUnitShortName(
targetState = label,
transitionSpec = {
// Enter animation
- (expandHorizontally(clip = false, expandFrom = Alignment.Start) + fadeIn()
- togetherWith fadeOut()) using SizeTransform(clip = false)
+ (
+ expandHorizontally(clip = false, expandFrom = Alignment.Start) + fadeIn()
+ togetherWith fadeOut()
+ ) using SizeTransform(clip = false)
},
- label = "Animated short name from"
+ label = "Animated short name from",
) { value ->
Text(
text = value,
- style = MaterialTheme.typography.bodyMedium.copy(textAlign = TextAlign.End)
+ style = MaterialTheme.typography.bodyMedium.copy(textAlign = TextAlign.End),
)
}
}
@@ -529,7 +535,7 @@ private fun UnitSelectionButtons(
val swapButtonRotation: Float by animateFloatAsState(
targetValue = if (swapped) 0f else 180f,
animationSpec = tween(easing = FastOutSlowInEasing),
- label = "Swap button rotation"
+ label = "Swap button rotation",
)
Row(verticalAlignment = Alignment.CenterVertically) {
@@ -538,7 +544,7 @@ private fun UnitSelectionButtons(
.fillMaxWidth()
.weight(1f),
label = unitFromLabel,
- onClick = navigateToLeftScreen
+ onClick = navigateToLeftScreen,
)
IconButton(
onClick = {
@@ -549,7 +555,7 @@ private fun UnitSelectionButtons(
Icon(
modifier = Modifier.rotate(swapButtonRotation),
imageVector = Icons.Outlined.SwapHoriz,
- contentDescription = stringResource(R.string.converter_swap_units_description)
+ contentDescription = stringResource(R.string.converter_swap_units_description),
)
}
UnitSelectionButton(
@@ -557,7 +563,7 @@ private fun UnitSelectionButtons(
.fillMaxWidth()
.weight(1f),
label = unitToLabel,
- onClick = navigateToRightScreen
+ onClick = navigateToRightScreen,
)
}
}
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterUIState.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterUIState.kt
index 40e64429..4d18b048 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterUIState.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterUIState.kt
@@ -97,7 +97,7 @@ internal sealed class ConverterResult {
internal fun ConverterResult.Time.format(
mContext: Context,
- formatterSymbols: FormatterSymbols
+ formatterSymbols: FormatterSymbols,
): String {
val result = mutableListOf()
@@ -140,7 +140,7 @@ internal fun ConverterResult.FootInch.format(
mContext: Context,
scale: Int,
outputFormat: Int,
- formatterSymbols: FormatterSymbols
+ formatterSymbols: FormatterSymbols,
): String {
var result = ""
result += foot.format(scale, outputFormat).formatExpression(formatterSymbols)
@@ -161,29 +161,33 @@ internal fun formatTime(
val negative = input < BigDecimal.ZERO
val inputAbs = input.abs()
- if (inputAbs.isLessThan(attosecondBasicUnit)) return ConverterResult.Time(
- negative = negative,
- day = BigDecimal.ZERO,
- hour = BigDecimal.ZERO,
- minute = BigDecimal.ZERO,
- second = BigDecimal.ZERO,
- millisecond = BigDecimal.ZERO,
- microsecond = BigDecimal.ZERO,
- nanosecond = BigDecimal.ZERO,
- attosecond = inputAbs
- )
+ if (inputAbs.isLessThan(attosecondBasicUnit)) {
+ return ConverterResult.Time(
+ negative = negative,
+ day = BigDecimal.ZERO,
+ hour = BigDecimal.ZERO,
+ minute = BigDecimal.ZERO,
+ second = BigDecimal.ZERO,
+ millisecond = BigDecimal.ZERO,
+ microsecond = BigDecimal.ZERO,
+ nanosecond = BigDecimal.ZERO,
+ attosecond = inputAbs,
+ )
+ }
- if (inputAbs.isLessThan(nanosecondBasicUnit)) return ConverterResult.Time(
- negative = negative,
- day = BigDecimal.ZERO,
- hour = BigDecimal.ZERO,
- minute = BigDecimal.ZERO,
- second = BigDecimal.ZERO,
- millisecond = BigDecimal.ZERO,
- microsecond = BigDecimal.ZERO,
- nanosecond = BigDecimal.ZERO,
- attosecond = inputAbs.trimZeros()
- )
+ if (inputAbs.isLessThan(nanosecondBasicUnit)) {
+ return ConverterResult.Time(
+ negative = negative,
+ day = BigDecimal.ZERO,
+ hour = BigDecimal.ZERO,
+ minute = BigDecimal.ZERO,
+ second = BigDecimal.ZERO,
+ millisecond = BigDecimal.ZERO,
+ microsecond = BigDecimal.ZERO,
+ nanosecond = BigDecimal.ZERO,
+ attosecond = inputAbs.trimZeros(),
+ )
+ }
// DAY
var division = inputAbs.divideAndRemainder(dayBasicUnit)
@@ -225,7 +229,7 @@ internal fun formatTime(
millisecond = millisecond,
microsecond = microsecond,
nanosecond = nanosecond,
- attosecond = attosecond
+ attosecond = attosecond,
)
}
@@ -242,7 +246,7 @@ internal fun formatTime(
internal fun formatFootInch(
input: BigDecimal,
footUnit: DefaultUnit,
- inchUnit: DefaultUnit
+ inchUnit: DefaultUnit,
): ConverterResult.FootInch {
val (integral, fractional) = input.divideAndRemainder(BigDecimal.ONE)
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterViewModel.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterViewModel.kt
index c3c9a804..1bbb7cf3 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterViewModel.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/ConverterViewModel.kt
@@ -57,31 +57,31 @@ import javax.inject.Inject
internal class ConverterViewModel @Inject constructor(
private val userPrefsRepository: UserPreferencesRepository,
private val unitsRepo: UnitsRepository,
- private val savedStateHandle: SavedStateHandle
+ private val savedStateHandle: SavedStateHandle,
) : ViewModel() {
private val converterInputKey1 = "CONVERTER_INPUT_1"
private val converterInputKey2 = "CONVERTER_INPUT_2"
- private val _input1 = MutableStateFlow(savedStateHandle.getTextField(converterInputKey1))
- private val _input2 = MutableStateFlow(savedStateHandle.getTextField(converterInputKey2))
- private val _focusedOnInput2 = MutableStateFlow(false)
- private val _calculation = MutableStateFlow(null)
- private val _result = MutableStateFlow(ConverterResult.Loading)
- private val _unitFrom = MutableStateFlow(null)
- private val _unitTo = MutableStateFlow(null)
+ private val input1 = MutableStateFlow(savedStateHandle.getTextField(converterInputKey1))
+ private val input2 = MutableStateFlow(savedStateHandle.getTextField(converterInputKey2))
+ private val focusedOnInput2 = MutableStateFlow(false)
+ private val calculation = MutableStateFlow(null)
+ private val result = MutableStateFlow(ConverterResult.Loading)
+ private val unitFrom = MutableStateFlow(null)
+ private val unitTo = MutableStateFlow(null)
- private val _currenciesState = MutableStateFlow(CurrencyRateUpdateState.Nothing)
- private var _loadCurrenciesJob: Job? = null
+ private val currenciesState = MutableStateFlow(CurrencyRateUpdateState.Nothing)
+ private var loadCurrenciesJob: Job? = null
val converterUiState: StateFlow = combine(
- _input1,
- _input2,
- _calculation,
- _result,
- _unitFrom,
- _unitTo,
+ input1,
+ input2,
+ calculation,
+ result,
+ unitFrom,
+ unitTo,
userPrefsRepository.converterPrefs,
- _currenciesState
+ currenciesState,
) { input1, input2, calculation, result, unitFrom, unitTo, prefs, currenciesState ->
return@combine when {
(unitFrom is DefaultUnit) and (unitTo is DefaultUnit) -> {
@@ -113,13 +113,13 @@ internal class ConverterViewModel @Inject constructor(
}
}
.mapLatest { ui ->
- when (_currenciesState.value) {
+ when (currenciesState.value) {
is CurrencyRateUpdateState.Loading -> {
- _result.update { ConverterResult.Loading }
+ result.update { ConverterResult.Loading }
return@mapLatest ui
}
is CurrencyRateUpdateState.Error -> {
- _result.update { ConverterResult.Error }
+ result.update { ConverterResult.Error }
return@mapLatest ui
}
is CurrencyRateUpdateState.Ready, is CurrencyRateUpdateState.Nothing -> {}
@@ -132,14 +132,14 @@ internal class ConverterViewModel @Inject constructor(
unitTo = ui.unitTo,
input1 = ui.input1,
input2 = ui.input2,
- formatTime = ui.formatTime
+ formatTime = ui.formatTime,
)
}
is UnitConverterUIState.NumberBase -> {
convertNumberBase(
unitFrom = ui.unitFrom,
unitTo = ui.unitTo,
- input = ui.input
+ input = ui.input,
)
}
is UnitConverterUIState.Loading -> {}
@@ -150,19 +150,19 @@ internal class ConverterViewModel @Inject constructor(
.stateIn(viewModelScope, UnitConverterUIState.Loading)
fun swapUnits() {
- _unitFrom
- .getAndUpdate { _unitTo.value }
- .also { oldUnitFrom -> _unitTo.update { oldUnitFrom } }
+ unitFrom
+ .getAndUpdate { unitTo.value }
+ .also { oldUnitFrom -> unitTo.update { oldUnitFrom } }
- _loadCurrenciesJob?.cancel()
- _currenciesState.update { CurrencyRateUpdateState.Nothing }
- _unitFrom.value?.let {
+ loadCurrenciesJob?.cancel()
+ currenciesState.update { CurrencyRateUpdateState.Nothing }
+ unitFrom.value?.let {
if (it.group == UnitGroup.CURRENCY) updateCurrencyRates(it)
}
viewModelScope.launch {
- val unitTo = _unitTo.value ?: return@launch
- val unitFrom = _unitFrom.value ?: return@launch
+ val unitTo = unitTo.value ?: return@launch
+ val unitFrom = unitFrom.value ?: return@launch
userPrefsRepository.updateLatestPairOfUnits(unitFrom = unitFrom, unitTo = unitTo)
}
@@ -173,17 +173,17 @@ internal class ConverterViewModel @Inject constructor(
*
* @param focusOnInput2 `true` if focus is on inches input. `false`if focus on feet input.
*/
- fun updateFocused(focusOnInput2: Boolean) = _focusedOnInput2.update { focusOnInput2 }
+ fun updateFocused(focusOnInput2: Boolean) = focusedOnInput2.update { focusOnInput2 }
fun addTokens(tokens: String) {
- if (_focusedOnInput2.value) {
- _input2.update {
+ if (focusedOnInput2.value) {
+ input2.update {
val newValue = it.addTokens(tokens)
savedStateHandle[converterInputKey2] = newValue.text
newValue
}
} else {
- _input1.update {
+ input1.update {
val newValue = it.addTokens(tokens)
savedStateHandle[converterInputKey1] = newValue.text
newValue
@@ -192,14 +192,14 @@ internal class ConverterViewModel @Inject constructor(
}
fun addBracket() {
- if (_focusedOnInput2.value) {
- _input2.update {
+ if (focusedOnInput2.value) {
+ input2.update {
val newValue = it.addBracket()
savedStateHandle[converterInputKey2] = newValue.text
newValue
}
} else {
- _input1.update {
+ input1.update {
val newValue = it.addBracket()
savedStateHandle[converterInputKey1] = newValue.text
newValue
@@ -208,14 +208,14 @@ internal class ConverterViewModel @Inject constructor(
}
fun deleteTokens() {
- if (_focusedOnInput2.value) {
- _input2.update {
+ if (focusedOnInput2.value) {
+ input2.update {
val newValue = it.deleteTokens()
savedStateHandle[converterInputKey2] = newValue.text
newValue
}
} else {
- _input1.update {
+ input1.update {
val newValue = it.deleteTokens()
savedStateHandle[converterInputKey1] = newValue.text
newValue
@@ -224,30 +224,30 @@ internal class ConverterViewModel @Inject constructor(
}
fun clearInput() {
- _input1.update {
+ input1.update {
savedStateHandle[converterInputKey1] = ""
TextFieldValue()
}
- _input2.update {
+ input2.update {
savedStateHandle[converterInputKey2] = ""
TextFieldValue()
}
}
- fun updateInput(value: TextFieldValue) = _input1.update { value }
+ fun updateInput(value: TextFieldValue) = input1.update { value }
fun updateCurrencyRates(unit: AbstractUnit) {
- _loadCurrenciesJob = viewModelScope.launch(Dispatchers.IO) {
+ loadCurrenciesJob = viewModelScope.launch(Dispatchers.IO) {
try {
- _currenciesState.update { CurrencyRateUpdateState.Loading }
+ currenciesState.update { CurrencyRateUpdateState.Loading }
val updateDate = unitsRepo.updateRates(unit) ?: throw Exception("Empty cache")
// Set to fresh objects with updated basic unit values
- _unitFrom.update { unitFrom -> unitFrom?.id?.let { unitsRepo.getById(it) } }
- _unitTo.update { unitTo -> unitTo?.id?.let { unitsRepo.getById(it) } }
- _currenciesState.update { CurrencyRateUpdateState.Ready(updateDate) }
+ unitFrom.update { unitFrom -> unitFrom?.id?.let { unitsRepo.getById(it) } }
+ unitTo.update { unitTo -> unitTo?.id?.let { unitsRepo.getById(it) } }
+ currenciesState.update { CurrencyRateUpdateState.Ready(updateDate) }
} catch (e: Exception) {
- _currenciesState.update { CurrencyRateUpdateState.Error }
+ currenciesState.update { CurrencyRateUpdateState.Error }
}
}
}
@@ -266,26 +266,27 @@ internal class ConverterViewModel @Inject constructor(
userPrefsRepository.updateLatestPairOfUnits(unitFrom = unit, unitTo = pair)
}
- _loadCurrenciesJob?.cancel()
- _currenciesState.update { CurrencyRateUpdateState.Nothing }
+ loadCurrenciesJob?.cancel()
+ currenciesState.update { CurrencyRateUpdateState.Nothing }
if (unit.group == UnitGroup.CURRENCY) updateCurrencyRates(unit)
- _unitFrom.update {
+ unitFrom.update {
// We change from something to base converter or the other way around
- if ((it?.group == UnitGroup.NUMBER_BASE) xor (unit.group == UnitGroup.NUMBER_BASE))
+ if ((it?.group == UnitGroup.NUMBER_BASE) xor (unit.group == UnitGroup.NUMBER_BASE)) {
clearInput()
+ }
unit
}
- _unitTo.update { pair }
+ unitTo.update { pair }
}
fun updateUnitTo(unit: AbstractUnit) {
- _unitTo.update { unit }
+ unitTo.update { unit }
viewModelScope.launch {
- val unitTo = _unitTo.value ?: return@launch
- val unitFrom = _unitFrom.value ?: return@launch
+ val unitTo = unitTo.value ?: return@launch
+ val unitFrom = unitFrom.value ?: return@launch
unitsRepo.incrementCounter(unitTo)
@@ -303,20 +304,22 @@ internal class ConverterViewModel @Inject constructor(
) = viewModelScope.launch(Dispatchers.Default) {
val footInchInput = unitFrom.id == UnitID.foot
- if (footInchInput) { _calculation.update { null } }
+ if (footInchInput) {
+ calculation.update { null }
+ }
// Calculate
val calculated1 = try {
Expression(input1.text.ifEmpty { Token.Digit._0 }).calculate()
} catch (e: ExpressionException.DivideByZero) {
- _calculation.update { null }
+ calculation.update { null }
return@launch
} catch (e: Exception) {
return@launch
}
// Update calculation
- _calculation.update { if (input1.text.isExpression()) calculated1 else null }
+ calculation.update { if (input1.text.isExpression()) calculated1 else null }
// Convert
val result: ConverterResult = try {
@@ -327,7 +330,7 @@ internal class ConverterViewModel @Inject constructor(
val calculated2 = try {
Expression(input2.text.ifEmpty { Token.Digit._0 }).calculate()
} catch (e: ExpressionException.DivideByZero) {
- _calculation.update { null }
+ calculation.update { null }
return@launch
} catch (e: Exception) {
return@launch
@@ -344,7 +347,7 @@ internal class ConverterViewModel @Inject constructor(
}
// Update result
- _result.update { result }
+ this@ConverterViewModel.result.update { result }
}
private fun convertNumberBase(
@@ -358,7 +361,7 @@ internal class ConverterViewModel @Inject constructor(
""
}
- _result.update { ConverterResult.NumberBase(conversion) }
+ result.update { ConverterResult.NumberBase(conversion) }
}
init {
@@ -368,15 +371,15 @@ internal class ConverterViewModel @Inject constructor(
val unitFrom = unitsRepo.getById(userPrefs.latestLeftSideUnit)
val unitTo = unitsRepo.getById(userPrefs.latestRightSideUnit)
- _unitFrom.update { unitFrom }
- _unitTo.update { unitTo }
+ this@ConverterViewModel.unitFrom.update { unitFrom }
+ this@ConverterViewModel.unitTo.update { unitTo }
if (unitFrom.group == UnitGroup.CURRENCY) updateCurrencyRates(unitFrom)
} catch (e: NoSuchElementException) {
val unitFrom = unitsRepo.getById(UnitID.kilometer)
val unitTo = unitsRepo.getById(UnitID.mile)
- _unitFrom.update { unitFrom }
- _unitTo.update { unitTo }
+ this@ConverterViewModel.unitFrom.update { unitFrom }
+ this@ConverterViewModel.unitTo.update { unitTo }
}
}
}
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/UnitFromSelectorScreen.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/UnitFromSelectorScreen.kt
index c9dd489f..899ca49a 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/UnitFromSelectorScreen.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/UnitFromSelectorScreen.kt
@@ -100,7 +100,7 @@ private fun UnitFromSelectorScreen(
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
Column(
- Modifier.background(MaterialTheme.colorScheme.surface)
+ Modifier.background(MaterialTheme.colorScheme.surface),
) {
SearchBar(
query = uiState.query,
@@ -111,7 +111,7 @@ private fun UnitFromSelectorScreen(
toggleFavoritesOnly(!uiState.showFavoritesOnly)
}
},
- scrollBehavior = scrollBehavior
+ scrollBehavior = scrollBehavior,
)
ChipsRow(
@@ -121,10 +121,10 @@ private fun UnitFromSelectorScreen(
chosenUnitGroup = uiState.selectedUnitGroup,
items = uiState.shownUnitGroups,
selectAction = updateUnitGroup,
- navigateToSettingsAction = navigateToUnitGroups
+ navigateToSettingsAction = navigateToUnitGroups,
)
}
- }
+ },
) { paddingValues ->
val resources = LocalContext.current.resources
UnitsList(
@@ -138,7 +138,7 @@ private fun UnitFromSelectorScreen(
updateUnitFrom(it)
navigateUp()
},
- favoriteUnit = { favoriteUnit(it) }
+ favoriteUnit = { favoriteUnit(it) },
)
}
}
@@ -155,7 +155,7 @@ private fun UnitFromSelectorScreenPreview() {
NormalUnit(UnitID.foot, BigDecimal("304800000000000000"), UnitGroup.LENGTH, R.string.unit_foot, R.string.unit_foot_short),
NormalUnit(UnitID.yard, BigDecimal("914400000000000000"), UnitGroup.LENGTH, R.string.unit_yard, R.string.unit_yard_short),
NormalUnit(UnitID.mile, BigDecimal("1609344000000000000000"), UnitGroup.LENGTH, R.string.unit_mile, R.string.unit_mile_short),
- )
+ ),
)
UnitFromSelectorScreen(
@@ -174,6 +174,6 @@ private fun UnitFromSelectorScreenPreview() {
updateUnitGroup = {},
favoriteUnit = {},
navigateUp = {},
- navigateToUnitGroups = {}
+ navigateToUnitGroups = {},
)
}
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/UnitSelectorUIState.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/UnitSelectorUIState.kt
index 5bb17a78..f1884d10 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/UnitSelectorUIState.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/UnitSelectorUIState.kt
@@ -57,6 +57,6 @@ internal sealed class UnitSearchResult {
data object Loading : UnitSearchResult()
data class Success(
- val units: Map>
+ val units: Map>,
) : UnitSearchResult()
}
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/UnitSelectorViewModel.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/UnitSelectorViewModel.kt
index 55833ef5..331c2a3d 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/UnitSelectorViewModel.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/UnitSelectorViewModel.kt
@@ -27,10 +27,10 @@ import com.sadellie.unitto.data.model.UnitGroup
import com.sadellie.unitto.data.model.repository.UnitsRepository
import com.sadellie.unitto.data.model.repository.UserPreferencesRepository
import com.sadellie.unitto.data.model.unit.AbstractUnit
-import com.sadellie.unitto.feature.converter.navigation.inputArg
-import com.sadellie.unitto.feature.converter.navigation.unitFromIdArg
-import com.sadellie.unitto.feature.converter.navigation.unitGroupArg
-import com.sadellie.unitto.feature.converter.navigation.unitToIdArg
+import com.sadellie.unitto.feature.converter.navigation.INPUT_ARG
+import com.sadellie.unitto.feature.converter.navigation.UNIT_FROM_ID_ARG
+import com.sadellie.unitto.feature.converter.navigation.UNIT_GROUP_ARG
+import com.sadellie.unitto.feature.converter.navigation.UNIT_TO_ID_ARG
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
@@ -45,26 +45,26 @@ import javax.inject.Inject
internal class UnitSelectorViewModel @Inject constructor(
private val userPrefsRepository: UserPreferencesRepository,
private val unitsRepo: UnitsRepository,
- savedStateHandle: SavedStateHandle
+ savedStateHandle: SavedStateHandle,
) : ViewModel() {
- private val _query = MutableStateFlow(TextFieldValue())
- private val _searchResults = MutableStateFlow(UnitSearchResult.Loading)
- private val _selectedUnitGroup = MutableStateFlow(savedStateHandle.get(unitGroupArg))
- private val _unitFromId = savedStateHandle.get(unitFromIdArg)
- private val _unitToId = savedStateHandle.get(unitToIdArg)
- private val _input = savedStateHandle.get(inputArg)
+ private val query = MutableStateFlow(TextFieldValue())
+ private val searchResults = MutableStateFlow(UnitSearchResult.Loading)
+ private val selectedUnitGroup = MutableStateFlow(savedStateHandle.get(UNIT_GROUP_ARG))
+ private val unitFromId = savedStateHandle.get(UNIT_FROM_ID_ARG)
+ private val unitToId = savedStateHandle.get(UNIT_TO_ID_ARG)
+ private val input = savedStateHandle.get(INPUT_ARG)
val unitFromUIState: StateFlow = combine(
- _query,
- _searchResults,
- _selectedUnitGroup,
+ query,
+ searchResults,
+ selectedUnitGroup,
userPrefsRepository.converterPrefs,
) { query, searchResults, selectedUnitGroup, prefs ->
- if (_unitFromId.isNullOrEmpty()) return@combine UnitSelectorUIState.Loading
+ if (unitFromId.isNullOrEmpty()) return@combine UnitSelectorUIState.Loading
return@combine UnitSelectorUIState.UnitFrom(
query = query,
- unitFrom = unitsRepo.getById(_unitFromId),
+ unitFrom = unitsRepo.getById(unitFromId),
shownUnitGroups = prefs.shownUnitGroups,
showFavoritesOnly = prefs.unitConverterFavoritesOnly,
units = searchResults,
@@ -74,14 +74,14 @@ internal class UnitSelectorViewModel @Inject constructor(
}
.mapLatest { ui ->
if (ui is UnitSelectorUIState.UnitFrom) {
- _searchResults.update {
+ searchResults.update {
val result = unitsRepo.filterUnits(
query = ui.query.text,
unitGroup = ui.selectedUnitGroup,
favoritesOnly = ui.showFavoritesOnly,
hideBrokenUnits = false,
sorting = ui.sorting,
- shownUnitGroups = ui.shownUnitGroups
+ shownUnitGroups = ui.shownUnitGroups,
)
if (result.isEmpty()) UnitSearchResult.Empty else UnitSearchResult.Success(result)
@@ -93,21 +93,21 @@ internal class UnitSelectorViewModel @Inject constructor(
.stateIn(viewModelScope, UnitSelectorUIState.Loading)
val unitToUIState: StateFlow = combine(
- _query,
- _searchResults,
+ query,
+ searchResults,
userPrefsRepository.converterPrefs,
unitsRepo.units,
) { query, searchResults, prefs, _ ->
- if (_unitFromId.isNullOrEmpty()) return@combine UnitSelectorUIState.Loading
- if (_unitToId.isNullOrEmpty()) return@combine UnitSelectorUIState.Loading
+ if (unitFromId.isNullOrEmpty()) return@combine UnitSelectorUIState.Loading
+ if (unitToId.isNullOrEmpty()) return@combine UnitSelectorUIState.Loading
UnitSelectorUIState.UnitTo(
query = query,
- unitFrom = unitsRepo.getById(_unitFromId),
- unitTo = unitsRepo.getById(_unitToId),
+ unitFrom = unitsRepo.getById(unitFromId),
+ unitTo = unitsRepo.getById(unitToId),
showFavoritesOnly = prefs.unitConverterFavoritesOnly,
units = searchResults,
- input = _input,
+ input = input,
sorting = prefs.unitConverterSorting,
scale = prefs.precision,
outputFormat = prefs.outputFormat,
@@ -116,7 +116,7 @@ internal class UnitSelectorViewModel @Inject constructor(
}
.mapLatest { ui ->
if (ui is UnitSelectorUIState.UnitTo) {
- _searchResults.update {
+ searchResults.update {
if (ui.unitFrom.group == UnitGroup.CURRENCY) unitsRepo.updateRates(ui.unitFrom)
val result = unitsRepo.filterUnits(
@@ -134,13 +134,13 @@ internal class UnitSelectorViewModel @Inject constructor(
}
.stateIn(viewModelScope, UnitSelectorUIState.Loading)
- fun updateSelectorQuery(value: TextFieldValue) = _query.update { value }
+ fun updateSelectorQuery(value: TextFieldValue) = query.update { value }
fun updateShowFavoritesOnly(value: Boolean) = viewModelScope.launch {
userPrefsRepository.updateUnitConverterFavoritesOnly(value)
}
- fun updateSelectedUnitGroup(value: UnitGroup?) = _selectedUnitGroup.update { value }
+ fun updateSelectedUnitGroup(value: UnitGroup?) = selectedUnitGroup.update { value }
fun favoriteUnit(unit: AbstractUnit) = viewModelScope.launch(Dispatchers.IO) {
unitsRepo.favorite(unit)
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/UnitToSelectorScreen.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/UnitToSelectorScreen.kt
index b423e98b..17f6fbcc 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/UnitToSelectorScreen.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/UnitToSelectorScreen.kt
@@ -94,9 +94,9 @@ private fun UnitToSelectorScreen(
toggleFavoritesOnly(!uiState.showFavoritesOnly)
}
},
- scrollBehavior = scrollBehavior
+ scrollBehavior = scrollBehavior,
)
- }
+ },
) { paddingValues ->
val resources = LocalContext.current.resources
UnitsList(
@@ -120,7 +120,7 @@ private fun UnitToSelectorScreen(
updateUnitTo(it)
navigateUp()
},
- favoriteUnit = { favoriteUnit(it) }
+ favoriteUnit = { favoriteUnit(it) },
)
}
}
@@ -176,7 +176,7 @@ private fun UnitToSelectorPreview() {
NormalUnit(UnitID.foot, BigDecimal("304800000000000000"), UnitGroup.LENGTH, R.string.unit_foot, R.string.unit_foot_short),
NormalUnit(UnitID.yard, BigDecimal("914400000000000000"), UnitGroup.LENGTH, R.string.unit_yard, R.string.unit_yard_short),
NormalUnit(UnitID.mile, BigDecimal("1609344000000000000000"), UnitGroup.LENGTH, R.string.unit_mile, R.string.unit_mile_short),
- )
+ ),
)
UnitToSelectorScreen(
@@ -197,6 +197,6 @@ private fun UnitToSelectorPreview() {
updateUnitTo = {},
favoriteUnit = {},
navigateUp = {},
- navigateToUnitGroups = {}
+ navigateToUnitGroups = {},
)
}
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/BasicUnitListItem.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/BasicUnitListItem.kt
index 913cc0a7..16ddca93 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/BasicUnitListItem.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/BasicUnitListItem.kt
@@ -69,23 +69,23 @@ internal fun BasicUnitListItem(
.clickable(
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple(),
- onClick = onClick
+ onClick = onClick,
)
- .padding(horizontal = 12.dp)
+ .padding(horizontal = 12.dp),
) {
Row(
modifier = Modifier
.background(
if (isSelected) MaterialTheme.colorScheme.primaryContainer else Color.Transparent,
- RoundedCornerShape(24.dp)
+ RoundedCornerShape(24.dp),
)
.padding(paddingValues = PaddingValues(horizontal = 12.dp, vertical = 8.dp))
.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
- horizontalArrangement = Arrangement.spacedBy(16.dp)
+ horizontalArrangement = Arrangement.spacedBy(16.dp),
) {
Column(
- Modifier.weight(1f), // This makes additional composable to be seen
+ Modifier.weight(1f),
) {
Text(
modifier = Modifier
@@ -102,7 +102,7 @@ internal fun BasicUnitListItem(
style = MaterialTheme.typography.bodySmall,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
- color = itemColor
+ color = itemColor,
)
}
AnimatedContent(
@@ -110,18 +110,18 @@ internal fun BasicUnitListItem(
.clickable(
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple(false),
- onClick = favoriteUnit
+ onClick = favoriteUnit,
),
targetState = isFavorite,
transitionSpec = {
(scaleIn() togetherWith scaleOut()).using(SizeTransform(clip = false))
},
- label = "Favorite unit"
+ label = "Favorite unit",
) {
Icon(
imageVector = if (it) Icons.Filled.Favorite else Icons.Filled.FavoriteBorder,
contentDescription = stringResource(R.string.converter_favorite_button_description),
- tint = itemColor
+ tint = itemColor,
)
}
}
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/ChipsRow.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/ChipsRow.kt
index 7f3e4251..a1773459 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/ChipsRow.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/ChipsRow.kt
@@ -73,7 +73,7 @@ internal fun ChipsRow(
targetState = expanded,
transitionSpec = {
expandVertically(expandFrom = Alignment.Top) { it } + fadeIn() togetherWith
- shrinkVertically(shrinkTowards = Alignment.Top) { it } + fadeOut()
+ shrinkVertically(shrinkTowards = Alignment.Top) { it } + fadeOut()
},
label = "Expand chips row",
) { isExpanded ->
@@ -86,9 +86,9 @@ internal fun ChipsRow(
FilterChip(
modifier = chipModifier,
isSelected = selected,
- onClick = {
+ onClick = {
selectAction(if (selected) null else item)
- expanded = false
+ expanded = false
},
label = stringResource(item.res),
)
@@ -98,7 +98,7 @@ internal fun ChipsRow(
modifier = chipModifier,
onClick = navigateToSettingsAction,
imageVector = Icons.Default.Settings,
- contentDescription = stringResource(R.string.open_settings_label)
+ contentDescription = stringResource(R.string.open_settings_label),
)
if (expanded) {
@@ -106,7 +106,8 @@ internal fun ChipsRow(
modifier = chipModifier,
onClick = { expanded = false },
imageVector = Icons.Default.ExpandLess,
- contentDescription = "" // TODO
+ // TODO
+ contentDescription = "",
)
}
},
@@ -115,7 +116,8 @@ internal fun ChipsRow(
modifier = chipModifier,
onClick = { expanded = true },
imageVector = Icons.Default.ExpandMore,
- contentDescription = "" // TODO
+ // TODO
+ contentDescription = "",
)
},
)
@@ -139,7 +141,7 @@ private fun FlexRow(
expandContent: @Composable () -> Unit,
) {
SubcomposeLayout(
- modifier = modifier
+ modifier = modifier,
) { constraints ->
val localConstraints = constraints.copy(minWidth = 0, minHeight = 0)
val layoutWidth = localConstraints.maxWidth
@@ -147,7 +149,7 @@ private fun FlexRow(
val mainMeasurables = subcompose(FlexRowSlots.Main, mainContent)
val expandMeasurables = subcompose(
slotId = FlexRowSlots.Expand,
- content = { expandContent() }
+ content = { expandContent() },
).map {
it.measure(localConstraints)
}
@@ -163,7 +165,7 @@ private fun FlexRow(
val lastAvailableRow = placeables.size >= maxRows
val notLastItem = index < mainMeasurables.lastIndex
- // count expandContent width only for last row and not last main placeable
+ // count expandContent width only for last row and not last main placeable
val measuredWidth = if (lastAvailableRow and notLastItem) {
mainPlaceable.measuredWidth + expandContentWidth
} else {
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/ConverterKeyboard.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/ConverterKeyboard.kt
index e54714e7..6d59d877 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/ConverterKeyboard.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/ConverterKeyboard.kt
@@ -30,11 +30,10 @@ import com.sadellie.unitto.core.base.R
import com.sadellie.unitto.core.base.Token
import com.sadellie.unitto.core.ui.LocalWindowSize
import com.sadellie.unitto.core.ui.WindowHeightSizeClass
-import com.sadellie.unitto.core.ui.common.KeyboardButtonContentHeightShort
-import com.sadellie.unitto.core.ui.common.KeyboardButtonContentHeightTall
import com.sadellie.unitto.core.ui.common.KeyboardButtonFilled
import com.sadellie.unitto.core.ui.common.KeyboardButtonLight
import com.sadellie.unitto.core.ui.common.KeyboardButtonTertiary
+import com.sadellie.unitto.core.ui.common.KeyboardButtonToken
import com.sadellie.unitto.core.ui.common.KeypadFlow
import com.sadellie.unitto.core.ui.common.icons.IconPack
import com.sadellie.unitto.core.ui.common.icons.iconpack.Backspace
@@ -80,12 +79,12 @@ internal fun DefaultKeyboard(
) {
val fractionalIcon = remember(fractional) { if (fractional == Token.PERIOD) IconPack.Dot else IconPack.Comma }
val fractionalIconDescription = remember(fractional) { if (fractional == Token.PERIOD) R.string.keyboard_dot else R.string.comma }
- val contentHeight: Float = if (LocalWindowSize.current.heightSizeClass < WindowHeightSizeClass.Medium) KeyboardButtonContentHeightShort else KeyboardButtonContentHeightTall
+ val contentHeight: Float = if (LocalWindowSize.current.heightSizeClass < WindowHeightSizeClass.Medium) KeyboardButtonToken.CONTENT_HEIGHT_SHORT else KeyboardButtonToken.CONTENT_HEIGHT_TALL
KeypadFlow(
modifier = modifier,
rows = 5,
- columns = 4
+ columns = 4,
) { width, height ->
val bModifier = Modifier.fillMaxWidth(width).fillMaxHeight(height)
@@ -133,12 +132,12 @@ internal fun NumberBaseKeyboard(
clearInput: () -> Unit,
deleteDigit: () -> Unit,
) {
- val contentHeight: Float = if (LocalWindowSize.current.heightSizeClass < WindowHeightSizeClass.Medium) KeyboardButtonContentHeightShort else KeyboardButtonContentHeightTall
+ val contentHeight: Float = if (LocalWindowSize.current.heightSizeClass < WindowHeightSizeClass.Medium) KeyboardButtonToken.CONTENT_HEIGHT_SHORT else KeyboardButtonToken.CONTENT_HEIGHT_TALL
KeypadFlow(
modifier = modifier,
rows = 6,
- columns = 3
+ columns = 3,
) { width, height ->
val bModifier = Modifier.fillMaxWidth(width).fillMaxHeight(height)
val wideButtonModifier = Modifier.fillMaxHeight(height).fillMaxWidth(width * 2)
@@ -180,7 +179,7 @@ private fun PreviewConverterKeyboard() {
fractional = Token.PERIOD,
middleZero = false,
acButton = true,
- addBracket = {}
+ addBracket = {},
)
}
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/FavoritesButton.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/FavoritesButton.kt
index bcd9745d..3af0222f 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/FavoritesButton.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/FavoritesButton.kt
@@ -35,7 +35,7 @@ import com.sadellie.unitto.core.ui.common.SearchBarIconButton
@Composable
internal fun FavoritesButton(
state: Boolean,
- onClick: () -> Unit
+ onClick: () -> Unit,
) {
SearchBarIconButton(onClick = onClick) {
AnimatedContent(
@@ -43,11 +43,11 @@ internal fun FavoritesButton(
transitionSpec = {
(scaleIn() togetherWith scaleOut()).using(SizeTransform(clip = false))
},
- label = "Animated click"
+ label = "Animated click",
) {
Icon(
if (it) Icons.Filled.Favorite else Icons.Filled.FavoriteBorder,
- contentDescription = stringResource(R.string.converter_favorite_button_description)
+ contentDescription = stringResource(R.string.converter_favorite_button_description),
)
}
}
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitGroupHeader.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitGroupHeader.kt
index dc0c5fb9..9b260aa0 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitGroupHeader.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitGroupHeader.kt
@@ -31,6 +31,6 @@ internal fun UnitGroupHeader(modifier: Modifier, unitGroup: UnitGroup) {
Header(
text = stringResource(unitGroup.res),
modifier = modifier,
- paddingValues = PaddingValues(start = 16.dp, end = 16.dp, top = 8.dp, bottom = 12.dp)
+ paddingValues = PaddingValues(start = 16.dp, end = 16.dp, top = 8.dp, bottom = 12.dp),
)
}
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitSelectionButton.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitSelectionButton.kt
index d163254f..b673baef 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitSelectionButton.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitSelectionButton.kt
@@ -49,7 +49,7 @@ internal fun UnitSelectionButton(
modifier: Modifier = Modifier,
onClick: () -> Unit = {},
label: String,
- enabled: Boolean = true
+ enabled: Boolean = true,
) {
Button(
modifier = modifier,
@@ -63,21 +63,21 @@ internal fun UnitSelectionButton(
transitionSpec = {
if (targetState > initialState) {
(slideInVertically { height -> height } + fadeIn()) togetherWith
- slideOutVertically { height -> -height } + fadeOut()
+ slideOutVertically { height -> -height } + fadeOut()
} else {
(slideInVertically { height -> -height } + fadeIn()) togetherWith
- slideOutVertically { height -> height } + fadeOut()
+ slideOutVertically { height -> height } + fadeOut()
}.using(
- SizeTransform(clip = false)
+ SizeTransform(clip = false),
)
},
- label = "Unit change"
+ label = "Unit change",
) {
Text(
text = it,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
- color = MaterialTheme.colorScheme.onPrimaryContainer
+ color = MaterialTheme.colorScheme.onPrimaryContainer,
)
}
}
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitsList.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitsList.kt
index 743c5316..3dcf5993 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitsList.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/UnitsList.kt
@@ -49,11 +49,11 @@ internal fun UnitsList(
Crossfade(
modifier = modifier,
targetState = searchResult,
- label = "Units list"
+ label = "Units list",
) { result ->
when (result) {
is UnitSearchResult.Success -> LazyColumn(
- modifier = Modifier.fillMaxSize()
+ modifier = Modifier.fillMaxSize(),
) {
result.units.forEach { (group, units) ->
item(group.name) {
@@ -77,7 +77,7 @@ internal fun UnitsList(
UnitSearchResult.Empty -> SearchPlaceholder(
onButtonClick = navigateToUnitGroups,
supportText = stringResource(R.string.converter_no_results_support),
- buttonLabel = stringResource(R.string.open_settings_label)
+ buttonLabel = stringResource(R.string.open_settings_label),
)
UnitSearchResult.Loading -> Unit
@@ -98,7 +98,7 @@ private fun PreviewUnitsList() {
NormalUnit(UnitID.foot, BigDecimal("304800000000000000"), UnitGroup.LENGTH, R.string.unit_foot, R.string.unit_foot_short),
NormalUnit(UnitID.yard, BigDecimal("914400000000000000"), UnitGroup.LENGTH, R.string.unit_yard, R.string.unit_yard_short),
NormalUnit(UnitID.mile, BigDecimal("1609344000000000000000"), UnitGroup.LENGTH, R.string.unit_mile, R.string.unit_mile_short),
- )
+ ),
)
UnitsList(
@@ -108,6 +108,6 @@ private fun PreviewUnitsList() {
currentUnitId = UnitID.mile,
supportLabel = { resources.getString(it.shortName) },
onClick = {},
- favoriteUnit = {}
+ favoriteUnit = {},
)
}
diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/navigation/ConverterNavigation.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/navigation/ConverterNavigation.kt
index fe8a3c85..507f40d7 100644
--- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/navigation/ConverterNavigation.kt
+++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/navigation/ConverterNavigation.kt
@@ -41,13 +41,13 @@ private val start = DrawerItem.Converter.start
private const val UNIT_FROM = "unitFromSelector"
private const val UNIT_TO = "unitToSelector"
-internal const val unitGroupArg = "unitGroupArg"
-internal const val unitFromIdArg = "unitFromId"
-internal const val unitToIdArg = "unitToIdArg"
-internal const val inputArg = "inputArg"
+internal const val UNIT_GROUP_ARG = "unitGroupArg"
+internal const val UNIT_FROM_ID_ARG = "unitFromIdArg"
+internal const val UNIT_TO_ID_ARG = "unitToIdArg"
+internal const val INPUT_ARG = "inputArg"
-private const val UNIT_FROM_ROUTE = "$UNIT_FROM/{$unitFromIdArg}/{$unitGroupArg}"
-private const val UNIT_TO_ROUTE = "$UNIT_TO/{$unitFromIdArg}/{$unitToIdArg}/{$inputArg}"
+private const val UNIT_FROM_ROUTE = "$UNIT_FROM/{$UNIT_FROM_ID_ARG}/{$UNIT_GROUP_ARG}"
+private const val UNIT_TO_ROUTE = "$UNIT_TO/{$UNIT_FROM_ID_ARG}/{$UNIT_TO_ID_ARG}/{$INPUT_ARG}"
private fun NavHostController.navigateLeft(
unitFromId: String,
unitGroup: UnitGroup,
@@ -68,8 +68,8 @@ fun NavGraphBuilder.converterGraph(
startDestination = start,
route = graph,
deepLinks = listOf(
- navDeepLink { uriPattern = "app://com.sadellie.unitto/$graph" }
- )
+ navDeepLink { uriPattern = "app://com.sadellie.unitto/$graph" },
+ ),
) {
unittoComposable(start) { backStackEntry ->
val parentEntry = remember(backStackEntry) {
@@ -83,11 +83,13 @@ fun NavGraphBuilder.converterGraph(
// Navigation logic is here, but should actually be in ConverterScreen
navigateToLeftScreen = { uiState: UnitConverterUIState ->
when (uiState) {
- is UnitConverterUIState.Default -> navController
- .navigateLeft(uiState.unitFrom.id, uiState.unitFrom.group)
+ is UnitConverterUIState.Default ->
+ navController
+ .navigateLeft(uiState.unitFrom.id, uiState.unitFrom.group)
- is UnitConverterUIState.NumberBase -> navController
- .navigateLeft(uiState.unitFrom.id, uiState.unitFrom.group)
+ is UnitConverterUIState.NumberBase ->
+ navController
+ .navigateLeft(uiState.unitFrom.id, uiState.unitFrom.group)
else -> Unit
}
@@ -110,7 +112,7 @@ fun NavGraphBuilder.converterGraph(
navController.navigateRight(
uiState.unitFrom.id,
uiState.unitTo.id,
- input
+ input,
)
}
@@ -119,7 +121,7 @@ fun NavGraphBuilder.converterGraph(
navController.navigateRight(
uiState.unitFrom.id,
uiState.unitTo.id,
- input
+ input,
)
}
@@ -133,13 +135,13 @@ fun NavGraphBuilder.converterGraph(
unittoComposable(
route = UNIT_FROM_ROUTE,
arguments = listOf(
- navArgument(unitFromIdArg) {
+ navArgument(UNIT_FROM_ID_ARG) {
type = NavType.StringType
},
- navArgument(unitGroupArg) {
+ navArgument(UNIT_GROUP_ARG) {
type = NavType.EnumType(UnitGroup::class.java)
},
- )
+ ),
) { backStackEntry ->
val parentEntry = remember(backStackEntry) {
navController.getBackStackEntry(graph)
@@ -151,25 +153,25 @@ fun NavGraphBuilder.converterGraph(
unitSelectorViewModel = hiltViewModel(),
converterViewModel = parentViewModel,
navigateUp = navController::navigateUp,
- navigateToUnitGroups = navigateToUnitGroups
+ navigateToUnitGroups = navigateToUnitGroups,
)
}
unittoComposable(
route = UNIT_TO_ROUTE,
arguments = listOf(
- navArgument(unitFromIdArg) {
+ navArgument(UNIT_FROM_ID_ARG) {
type = NavType.StringType
},
- navArgument(unitToIdArg) {
+ navArgument(UNIT_TO_ID_ARG) {
type = NavType.StringType
},
- navArgument(inputArg) {
+ navArgument(INPUT_ARG) {
type = NavType.StringType
nullable = true
defaultValue = null
},
- )
+ ),
) { backStackEntry ->
val parentEntry = remember(backStackEntry) {
navController.getBackStackEntry(graph)
@@ -181,7 +183,7 @@ fun NavGraphBuilder.converterGraph(
unitSelectorViewModel = hiltViewModel(),
converterViewModel = parentViewModel,
navigateUp = navController::navigateUp,
- navigateToUnitGroups = navigateToUnitGroups
+ navigateToUnitGroups = navigateToUnitGroups,
)
}
}
diff --git a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/DateCalculatorScreen.kt b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/DateCalculatorScreen.kt
index 0f089140..d0636a7b 100644
--- a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/DateCalculatorScreen.kt
+++ b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/DateCalculatorScreen.kt
@@ -81,14 +81,14 @@ internal fun DateCalculatorScreen(
pagerState.animateScrollToPage(index)
}
},
- text = { Text(tab) }
+ text = { Text(tab) },
)
}
}
HorizontalPager(
state = pagerState,
- verticalAlignment = Alignment.Top
+ verticalAlignment = Alignment.Top,
) { page ->
when (page) {
0 -> AddSubtractPage()
diff --git a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/addsubtract/AddSubtractPage.kt b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/addsubtract/AddSubtractPage.kt
index 6c2ee122..7a7b6f90 100644
--- a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/addsubtract/AddSubtractPage.kt
+++ b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/addsubtract/AddSubtractPage.kt
@@ -98,7 +98,7 @@ internal fun AddSubtractPage(
@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
@Composable
private fun AddSubtractView(
- uiState: AddSubtractState,
+ uiState: AddSubtractUIState,
updateStart: (ZonedDateTime) -> Unit,
updateYears: (TextFieldValue) -> Unit,
updateMonths: (TextFieldValue) -> Unit,
@@ -124,7 +124,7 @@ private fun AddSubtractView(
FloatingActionButton(
onClick = {
mContext.createEvent(uiState.start, uiState.result)
- }
+ },
) {
Icon(
imageVector = Icons.Default.Event,
@@ -132,7 +132,7 @@ private fun AddSubtractView(
)
}
},
- contentWindowInsets = WindowInsets(0, 0, 0, 0)
+ contentWindowInsets = WindowInsets(0, 0, 0, 0),
) {
Column(
modifier = Modifier
@@ -140,17 +140,16 @@ private fun AddSubtractView(
.padding(horizontal = 16.dp, vertical = 16.dp),
verticalArrangement = Arrangement.spacedBy(12.dp),
) {
-
AnimatedContent(
targetState = showResult,
label = "Reveal result",
transitionSpec = { fadeIn() togetherWith fadeOut() using SizeTransform() },
- modifier = Modifier.clip(RoundedCornerShape(32.dp))
+ modifier = Modifier.clip(RoundedCornerShape(32.dp)),
) { show ->
FlowRow(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.spacedBy(8.dp),
- verticalArrangement = Arrangement.spacedBy(8.dp)
+ verticalArrangement = Arrangement.spacedBy(8.dp),
) {
DateTimeSelectorBlock(
modifier = Modifier
@@ -184,7 +183,7 @@ private fun AddSubtractView(
selected = uiState.addition,
onClick = { updateAddition(true) },
shape = SegmentedButtonDefaults.itemShape(index = 0, count = 2),
- icon = {}
+ icon = {},
) {
Icon(Icons.Outlined.Add, stringResource(R.string.date_calculator_add))
}
@@ -192,11 +191,11 @@ private fun AddSubtractView(
selected = !uiState.addition,
onClick = { updateAddition(false) },
shape = SegmentedButtonDefaults.itemShape(index = 1, count = 2),
- icon = {}
+ icon = {},
) {
Icon(
Icons.Outlined.Remove,
- stringResource(R.string.date_calculator_subtract)
+ stringResource(R.string.date_calculator_subtract),
)
}
}
@@ -206,10 +205,10 @@ private fun AddSubtractView(
.fillMaxWidth()
.background(
MaterialTheme.colorScheme.secondaryContainer,
- RoundedCornerShape(32.dp)
+ RoundedCornerShape(32.dp),
)
.padding(16.dp, 24.dp),
- verticalArrangement = Arrangement.spacedBy(4.dp)
+ verticalArrangement = Arrangement.spacedBy(4.dp),
) {
TimeUnitTextField(
modifier = Modifier.fillMaxWidth(),
@@ -221,7 +220,7 @@ private fun AddSubtractView(
Row(
modifier = Modifier.fillMaxWidth(),
- horizontalArrangement = Arrangement.spacedBy(8.dp)
+ horizontalArrangement = Arrangement.spacedBy(8.dp),
) {
TimeUnitTextField(
modifier = Modifier.weight(1f),
@@ -242,7 +241,7 @@ private fun AddSubtractView(
Row(
modifier = Modifier.fillMaxWidth(),
- horizontalArrangement = Arrangement.spacedBy(8.dp)
+ horizontalArrangement = Arrangement.spacedBy(8.dp),
) {
TimeUnitTextField(
modifier = Modifier.weight(1f),
@@ -258,7 +257,7 @@ private fun AddSubtractView(
onValueChange = updateMinutes,
label = stringResource(R.string.date_calculator_minutes),
expressionFormatter = expressionTransformer,
- imeAction = ImeAction.Done
+ imeAction = ImeAction.Done,
)
}
}
@@ -296,10 +295,10 @@ private fun Context.createEvent(start: ZonedDateTime, end: ZonedDateTime) {
@Composable
fun AddSubtractViewPreview() {
AddSubtractView(
- uiState = AddSubtractState(
+ uiState = AddSubtractUIState(
years = TextFieldValue("12"),
start = ZonedDateTimeUtils.nowWithMinutes(),
- result = ZonedDateTimeUtils.nowWithMinutes().plusSeconds(1)
+ result = ZonedDateTimeUtils.nowWithMinutes().plusSeconds(1),
),
updateStart = {},
updateYears = {},
diff --git a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/addsubtract/AddSubtractUIState.kt b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/addsubtract/AddSubtractUIState.kt
index 4dd24005..8980a600 100644
--- a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/addsubtract/AddSubtractUIState.kt
+++ b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/addsubtract/AddSubtractUIState.kt
@@ -24,7 +24,7 @@ import com.sadellie.unitto.core.base.Token
import com.sadellie.unitto.feature.datecalculator.ZonedDateTimeUtils
import java.time.ZonedDateTime
-internal data class AddSubtractState(
+internal data class AddSubtractUIState(
val start: ZonedDateTime = ZonedDateTimeUtils.nowWithMinutes(),
val result: ZonedDateTime = ZonedDateTimeUtils.nowWithMinutes(),
val years: TextFieldValue = TextFieldValue(),
diff --git a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/addsubtract/AddSubtractViewModel.kt b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/addsubtract/AddSubtractViewModel.kt
index 478c238e..e5e312ef 100644
--- a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/addsubtract/AddSubtractViewModel.kt
+++ b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/addsubtract/AddSubtractViewModel.kt
@@ -38,18 +38,18 @@ import javax.inject.Inject
@HiltViewModel
internal class AddSubtractViewModel @Inject constructor(
- userPreferencesRepository: UserPreferencesRepository
+ userPreferencesRepository: UserPreferencesRepository,
) : ViewModel() {
- private val _uiState = MutableStateFlow(AddSubtractState())
+ private val _uiState = MutableStateFlow(AddSubtractUIState())
- val uiState: StateFlow = _uiState
+ val uiState: StateFlow = _uiState
.combine(userPreferencesRepository.addSubtractPrefs) { uiState, userPrefs ->
return@combine uiState.copy(
formatterSymbols = userPrefs.formatterSymbols,
)
}
.onEach { updateResult() }
- .stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000L), AddSubtractState())
+ .stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000L), AddSubtractUIState())
fun updateStart(newValue: ZonedDateTime) = _uiState.update { it.copy(start = newValue) }
diff --git a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/components/DateTimeDialogs.kt b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/components/DateTimeDialogs.kt
index fe5f9990..a6e680c3 100644
--- a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/components/DateTimeDialogs.kt
+++ b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/components/DateTimeDialogs.kt
@@ -68,7 +68,7 @@ internal fun DateTimeDialogs(
onConfirm = {
updateDate(it)
updateDialogState(DialogState.NONE)
- }
+ },
)
}
diff --git a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/components/DateTimeResultBlock.kt b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/components/DateTimeResultBlock.kt
index 113c003a..a03a434e 100644
--- a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/components/DateTimeResultBlock.kt
+++ b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/components/DateTimeResultBlock.kt
@@ -38,7 +38,7 @@ import java.math.BigDecimal
internal fun DateTimeResultBlock(
modifier: Modifier = Modifier,
diff: ZonedDateTimeDifference.Default,
- format: (BigDecimal) -> String
+ format: (BigDecimal) -> String,
) {
val focusManager = LocalFocusManager.current
@@ -46,17 +46,17 @@ internal fun DateTimeResultBlock(
modifier = modifier,
pageCount = 6,
onClick = { focusManager.clearFocus() },
- backgroundColor = MaterialTheme.colorScheme.tertiaryContainer
+ backgroundColor = MaterialTheme.colorScheme.tertiaryContainer,
) { currentPage ->
- when(currentPage) {
+ when (currentPage) {
0 -> {
Column(
modifier = Modifier
- .fillMaxWidth()
+ .fillMaxWidth(),
) {
Text(
text = stringResource(R.string.date_calculator_difference),
- style = MaterialTheme.typography.labelMedium
+ style = MaterialTheme.typography.labelMedium,
)
SelectionContainer {
Column {
@@ -93,7 +93,7 @@ internal fun DateTimeResultBlock(
Column {
Text(
text = stringResource(R.string.date_calculator_years),
- style = MaterialTheme.typography.labelMedium
+ style = MaterialTheme.typography.labelMedium,
)
SelectionContainer {
DateText(diff.sumYears, format)
@@ -105,7 +105,7 @@ internal fun DateTimeResultBlock(
Column {
Text(
text = stringResource(R.string.date_calculator_months),
- style = MaterialTheme.typography.labelMedium
+ style = MaterialTheme.typography.labelMedium,
)
SelectionContainer {
DateText(diff.sumMonths, format)
@@ -117,7 +117,7 @@ internal fun DateTimeResultBlock(
Column {
Text(
text = stringResource(R.string.date_calculator_days),
- style = MaterialTheme.typography.labelMedium
+ style = MaterialTheme.typography.labelMedium,
)
SelectionContainer {
DateText(diff.sumDays, format)
@@ -129,7 +129,7 @@ internal fun DateTimeResultBlock(
Column {
Text(
text = stringResource(R.string.date_calculator_hours),
- style = MaterialTheme.typography.labelMedium
+ style = MaterialTheme.typography.labelMedium,
)
SelectionContainer {
DateText(diff.sumHours, format)
@@ -141,7 +141,7 @@ internal fun DateTimeResultBlock(
Column {
Text(
text = stringResource(R.string.date_calculator_minutes),
- style = MaterialTheme.typography.labelMedium
+ style = MaterialTheme.typography.labelMedium,
)
SelectionContainer {
DateText(diff.sumMinutes, format)
@@ -159,7 +159,7 @@ private fun DateText(
format: (BigDecimal) -> String,
) = Text(
text = "${stringResource(id)}: ${format(value)}",
- style = MaterialTheme.typography.displaySmall
+ style = MaterialTheme.typography.displaySmall,
)
@Composable
@@ -168,7 +168,7 @@ private fun DateText(
format: (BigDecimal) -> String,
) = Text(
text = format(value),
- style = MaterialTheme.typography.displaySmall
+ style = MaterialTheme.typography.displaySmall,
)
@Preview
@@ -188,6 +188,6 @@ private fun DateTimeResultBlockPreview() {
sumHours = BigDecimal.ZERO,
sumMinutes = BigDecimal("46080"),
),
- format = { it.toPlainString() }
+ format = { it.toPlainString() },
)
}
diff --git a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/components/DateTimeSelectorBlock.kt b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/components/DateTimeSelectorBlock.kt
index bede241c..0bef74ea 100644
--- a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/components/DateTimeSelectorBlock.kt
+++ b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/components/DateTimeSelectorBlock.kt
@@ -68,7 +68,7 @@ internal fun DateTimeSelectorBlock(
val is24Hour = DateFormat.is24HourFormat(LocalContext.current)
ProvideColor(
- MaterialTheme.colorScheme.contentColorFor(containerColor)
+ MaterialTheme.colorScheme.contentColorFor(containerColor),
) {
Column(
modifier = Modifier
@@ -76,12 +76,12 @@ internal fun DateTimeSelectorBlock(
onClick = onClick,
onLongClick = onLongClick,
interactionSource = remember { MutableInteractionSource() },
- cornerRadiusRange = 8.dp..32.dp
+ cornerRadiusRange = 8.dp..32.dp,
)
.background(containerColor)
.then(modifier)
.padding(16.dp),
- horizontalAlignment = Alignment.Start
+ horizontalAlignment = Alignment.Start,
) {
Text(
text = title,
@@ -93,22 +93,22 @@ internal fun DateTimeSelectorBlock(
modifier = Modifier.clickable(
indication = rememberRipple(),
interactionSource = remember { MutableInteractionSource() },
- onClick = onTimeClick
- )
+ onClick = onTimeClick,
+ ),
) {
AnimatedContent(
targetState = dateTime,
transitionSpec = {
slideInVertically { height -> height } + fadeIn() togetherWith
- slideOutVertically { height -> -height } + fadeOut() using
- SizeTransform()
+ slideOutVertically { height -> -height } + fadeOut() using
+ SizeTransform()
},
label = "Animated time",
) { time ->
Text(
text = time.formatTimeShort(locale, is24Hour),
style = MaterialTheme.typography.displaySmall,
- maxLines = 1
+ maxLines = 1,
)
}
@@ -117,15 +117,15 @@ internal fun DateTimeSelectorBlock(
targetState = dateTime,
transitionSpec = {
slideInVertically { height -> height } + fadeIn() togetherWith
- slideOutVertically { height -> -height } + fadeOut() using
- SizeTransform()
+ slideOutVertically { height -> -height } + fadeOut() using
+ SizeTransform()
},
label = "Animated am/pm",
) { time ->
Text(
text = time.formatTimeAmPm(locale),
style = MaterialTheme.typography.bodyLarge,
- maxLines = 1
+ maxLines = 1,
)
}
}
@@ -135,8 +135,8 @@ internal fun DateTimeSelectorBlock(
targetState = dateTime,
transitionSpec = {
slideInVertically { height -> height } + fadeIn() togetherWith
- slideOutVertically { height -> -height } + fadeOut() using
- SizeTransform()
+ slideOutVertically { height -> -height } + fadeOut() using
+ SizeTransform()
},
label = "Animated date",
) { date ->
@@ -144,11 +144,11 @@ internal fun DateTimeSelectorBlock(
modifier = Modifier.clickable(
indication = rememberRipple(),
interactionSource = remember { MutableInteractionSource() },
- onClick = onDateClick
+ onClick = onDateClick,
),
text = date.formatDateWeekDayMonthYear(locale),
style = MaterialTheme.typography.bodySmall,
- maxLines = 1
+ maxLines = 1,
)
}
}
diff --git a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/components/TimeUnitTextField.kt b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/components/TimeUnitTextField.kt
index 6d4f44ef..8426cb4c 100644
--- a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/components/TimeUnitTextField.kt
+++ b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/components/TimeUnitTextField.kt
@@ -51,6 +51,6 @@ internal fun TimeUnitTextField(
unfocusedTextColor = MaterialTheme.colorScheme.onSecondaryContainer,
),
expressionFormatter = expressionFormatter,
- imeAction = imeAction
+ imeAction = imeAction,
)
}
diff --git a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/difference/DateDifferencePage.kt b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/difference/DateDifferencePage.kt
index 61c85ce6..b8a0b9a3 100644
--- a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/difference/DateDifferencePage.kt
+++ b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/difference/DateDifferencePage.kt
@@ -64,7 +64,7 @@ internal fun DateDifferencePage(
is DifferenceUIState.Ready -> DateDifferenceView(
uiState = uiState,
setStartDate = viewModel::setStartDate,
- setEndDate = viewModel::setEndDate
+ setEndDate = viewModel::setEndDate,
)
}
}
@@ -81,7 +81,7 @@ private fun DateDifferenceView(
modifier = Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState()),
- verticalArrangement = Arrangement.spacedBy(8.dp)
+ verticalArrangement = Arrangement.spacedBy(8.dp),
) {
FlowRow(
modifier = Modifier
@@ -89,7 +89,7 @@ private fun DateDifferenceView(
.fillMaxWidth(),
maxItemsInEachRow = 2,
verticalArrangement = Arrangement.spacedBy(8.dp),
- horizontalArrangement = Arrangement.spacedBy(8.dp)
+ horizontalArrangement = Arrangement.spacedBy(8.dp),
) {
DateTimeSelectorBlock(
modifier = Modifier
@@ -102,7 +102,7 @@ private fun DateDifferenceView(
onLongClick = { setStartDate(ZonedDateTimeUtils.nowWithMinutes()) },
onTimeClick = { dialogState = DialogState.FROM_TIME },
onDateClick = { dialogState = DialogState.FROM_DATE },
- containerColor = MaterialTheme.colorScheme.secondaryContainer
+ containerColor = MaterialTheme.colorScheme.secondaryContainer,
)
DateTimeSelectorBlock(
@@ -116,14 +116,14 @@ private fun DateDifferenceView(
onLongClick = { setEndDate(ZonedDateTimeUtils.nowWithMinutes()) },
onTimeClick = { dialogState = DialogState.TO_TIME },
onDateClick = { dialogState = DialogState.TO_DATE },
- containerColor = MaterialTheme.colorScheme.secondaryContainer
+ containerColor = MaterialTheme.colorScheme.secondaryContainer,
)
}
AnimatedContent(
targetState = uiState.result,
label = "Result reveal",
- modifier = Modifier.fillMaxWidth()
+ modifier = Modifier.fillMaxWidth(),
) { result ->
when (result) {
is ZonedDateTimeDifference.Default -> {
@@ -135,7 +135,7 @@ private fun DateDifferenceView(
format = {
it.format(uiState.precision, uiState.outputFormat)
.formatExpression(uiState.formatterSymbols)
- }
+ },
)
}
ZonedDateTimeDifference.Zero -> Unit
@@ -164,7 +164,6 @@ private fun DateDifferenceView(
)
}
-
@Preview
@Composable
fun DateDifferenceViewPreview() {
@@ -186,7 +185,7 @@ fun DateDifferenceViewPreview() {
),
precision = 3,
outputFormat = OutputFormat.PLAIN,
- formatterSymbols = FormatterSymbols(Token.SPACE, Token.PERIOD)
+ formatterSymbols = FormatterSymbols(Token.SPACE, Token.PERIOD),
),
setStartDate = {},
setEndDate = {},
diff --git a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/difference/DateDifferenceViewModel.kt b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/difference/DateDifferenceViewModel.kt
index 35e50f74..faa61c59 100644
--- a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/difference/DateDifferenceViewModel.kt
+++ b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/difference/DateDifferenceViewModel.kt
@@ -38,46 +38,47 @@ import javax.inject.Inject
internal class DateDifferenceViewModel @Inject constructor(
userPrefsRepository: UserPreferencesRepository,
) : ViewModel() {
- private val _start = MutableStateFlow(ZonedDateTimeUtils.nowWithMinutes())
- private val _end = MutableStateFlow(ZonedDateTimeUtils.nowWithMinutes())
- private val _result = MutableStateFlow(ZonedDateTimeDifference.Zero)
+ private val start = MutableStateFlow(ZonedDateTimeUtils.nowWithMinutes())
+ private val end = MutableStateFlow(ZonedDateTimeUtils.nowWithMinutes())
+ private val result = MutableStateFlow(ZonedDateTimeDifference.Zero)
val uiState: StateFlow = combine(
userPrefsRepository.formattingPrefs,
- _start,
- _end,
- _result
+ start,
+ end,
+ result,
) { prefs, start, end, result ->
- return@combine DifferenceUIState.Ready(
- start = start,
- end = end,
- result = result,
- precision = prefs.digitsPrecision,
- outputFormat = prefs.outputFormat,
- formatterSymbols = prefs.formatterSymbols
- )
- }
+ return@combine DifferenceUIState.Ready(
+ start = start,
+ end = end,
+ result = result,
+ precision = prefs.digitsPrecision,
+ outputFormat = prefs.outputFormat,
+ formatterSymbols = prefs.formatterSymbols,
+ )
+ }
.mapLatest { ui ->
updateResult(
start = ui.start,
- end = ui.end
+ end = ui.end,
)
ui
}
.stateIn(
- viewModelScope, DifferenceUIState.Loading
+ viewModelScope,
+ DifferenceUIState.Loading,
)
- fun setStartDate(newValue: ZonedDateTime) = _start.update { newValue }
+ fun setStartDate(newValue: ZonedDateTime) = start.update { newValue }
- fun setEndDate(newValue: ZonedDateTime) = _end.update { newValue }
+ fun setEndDate(newValue: ZonedDateTime) = end.update { newValue }
private fun updateResult(
start: ZonedDateTime,
- end: ZonedDateTime
+ end: ZonedDateTime,
) = viewModelScope.launch(Dispatchers.Default) {
- _result.update {
+ result.update {
try {
start - end
} catch (e: Exception) {
diff --git a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/difference/ZonedDateTimeDifference.kt b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/difference/ZonedDateTimeDifference.kt
index bfd9ed61..c75ea522 100644
--- a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/difference/ZonedDateTimeDifference.kt
+++ b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/difference/ZonedDateTimeDifference.kt
@@ -49,7 +49,7 @@ internal sealed class ZonedDateTimeDifference {
* @return [ZonedDateTimeDifference.Default] (_always positive_) or [ZonedDateTimeDifference.Zero]
*/
internal infix operator fun ZonedDateTime.minus(
- zonedDateTime: ZonedDateTime
+ zonedDateTime: ZonedDateTime,
): ZonedDateTimeDifference = this.minus(zonedDateTime = zonedDateTime, scale = MAX_PRECISION)
/**
@@ -64,7 +64,7 @@ internal infix operator fun ZonedDateTime.minus(
*/
internal fun ZonedDateTime.minus(
zonedDateTime: ZonedDateTime,
- scale: Int
+ scale: Int,
): ZonedDateTimeDifference {
// https://stackoverflow.com/a/25760725
diff --git a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/navigation/DateCalculatorNavigation.kt b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/navigation/DateCalculatorNavigation.kt
index f1bc0ab6..a6ad42bc 100644
--- a/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/navigation/DateCalculatorNavigation.kt
+++ b/feature/datecalculator/src/main/java/com/sadellie/unitto/feature/datecalculator/navigation/DateCalculatorNavigation.kt
@@ -35,8 +35,8 @@ fun NavGraphBuilder.dateCalculatorGraph(
startDestination = start,
route = graph,
deepLinks = listOf(
- navDeepLink { uriPattern = "app://com.sadellie.unitto/$graph" }
- )
+ navDeepLink { uriPattern = "app://com.sadellie.unitto/$graph" },
+ ),
) {
unittoComposable(start) {
DateCalculatorRoute(
diff --git a/feature/datecalculator/src/test/java/com/sadellie/unitto/feature/datecalculator/difference/ZonedDateTimeDifferenceKtTest.kt b/feature/datecalculator/src/test/java/com/sadellie/unitto/feature/datecalculator/difference/ZonedDateTimeDifferenceKtTest.kt
index d509842b..b092e84b 100644
--- a/feature/datecalculator/src/test/java/com/sadellie/unitto/feature/datecalculator/difference/ZonedDateTimeDifferenceKtTest.kt
+++ b/feature/datecalculator/src/test/java/com/sadellie/unitto/feature/datecalculator/difference/ZonedDateTimeDifferenceKtTest.kt
@@ -40,20 +40,20 @@ class ZonedDateTimeDifferenceKtTest {
val date2: ZonedDateTime = ZonedDateTime.parse("2023-05-02T12:00+01:00[Europe/Paris]", formatter)
assertEquals(
- ZonedDateTimeDifference.
- Default(
- years = 0,
- months = 0,
- days = 1,
- hours = 0,
- minutes = 0,
- sumYears = BigDecimal("0.003"),
- sumMonths = BigDecimal("0.033"),
- sumDays = BigDecimal("1.000"),
- sumHours = BigDecimal("24.000"),
- sumMinutes = BigDecimal("1440.000"),
- ),
- date1.minus(date2, 3)
+ ZonedDateTimeDifference
+ .Default(
+ years = 0,
+ months = 0,
+ days = 1,
+ hours = 0,
+ minutes = 0,
+ sumYears = BigDecimal("0.003"),
+ sumMonths = BigDecimal("0.033"),
+ sumDays = BigDecimal("1.000"),
+ sumHours = BigDecimal("24.000"),
+ sumMinutes = BigDecimal("1440.000"),
+ ),
+ date1.minus(date2, 3),
)
}
@@ -75,7 +75,7 @@ class ZonedDateTimeDifferenceKtTest {
sumHours = BigDecimal("744.000"),
sumMinutes = BigDecimal("44640.000"),
),
- date1.minus(date2, 3)
+ date1.minus(date2, 3),
)
}
@@ -97,7 +97,7 @@ class ZonedDateTimeDifferenceKtTest {
sumHours = BigDecimal("24.000"),
sumMinutes = BigDecimal("1440.000"),
),
- date1.minus(date2, 3)
+ date1.minus(date2, 3),
)
}
@@ -119,7 +119,7 @@ class ZonedDateTimeDifferenceKtTest {
sumHours = BigDecimal("744.000"),
sumMinutes = BigDecimal("44640.000"),
),
- date1.minus(date2, 3)
+ date1.minus(date2, 3),
)
}
@@ -141,7 +141,7 @@ class ZonedDateTimeDifferenceKtTest {
sumHours = BigDecimal("720.000"),
sumMinutes = BigDecimal("43200.000"),
),
- date1.minus(date2, 3)
+ date1.minus(date2, 3),
)
}
}
diff --git a/feature/glance/src/main/java/com/sadellie/unitto/feature/glance/glance/CalculatorWidget.kt b/feature/glance/src/main/java/com/sadellie/unitto/feature/glance/glance/CalculatorWidget.kt
index bdc214b2..a478309e 100644
--- a/feature/glance/src/main/java/com/sadellie/unitto/feature/glance/glance/CalculatorWidget.kt
+++ b/feature/glance/src/main/java/com/sadellie/unitto/feature/glance/glance/CalculatorWidget.kt
@@ -74,7 +74,7 @@ class CalculatorWidget : GlanceAppWidget() {
}
override val sizeMode = SizeMode.Responsive(
- setOf(SMALL, BIG)
+ setOf(SMALL, BIG),
)
override val stateDefinition: GlanceStateDefinition<*> = PreferencesGlanceStateDefinition
@@ -119,7 +119,7 @@ private fun LoadingUI() {
.appWidgetBackground()
.background(GlanceTheme.colors.background)
.fillMaxSize(),
- contentAlignment = Alignment.Center
+ contentAlignment = Alignment.Center,
) {
IconButton(
glanceModifier = GlanceModifier,
@@ -142,19 +142,19 @@ private fun ReadyUI(
fun runCalculateAction(
input: String,
- equalClicked: Boolean = false
+ equalClicked: Boolean = false,
): Action = updateInputAction(
input = input,
equalClicked = equalClicked,
precision = appPrefs.precision,
- outputFormat = appPrefs.outputFormat
+ outputFormat = appPrefs.outputFormat,
)
Column(
modifier = GlanceModifier
.appWidgetBackground()
.background(GlanceTheme.colors.background)
- .fillMaxSize()
+ .fillMaxSize(),
) {
val uiSectionModifier = GlanceModifier.fillMaxWidth()
@@ -163,7 +163,7 @@ private fun ReadyUI(
modifier = uiSectionModifier
.background(GlanceTheme.colors.surfaceVariant),
output = output,
- formatterSymbols = formatterSymbols
+ formatterSymbols = formatterSymbols,
)
}
@@ -173,7 +173,7 @@ private fun ReadyUI(
.defaultWeight(),
input = input,
formatterSymbols = formatterSymbols,
- output = output
+ output = output,
)
GlanceKeyboard(
@@ -182,7 +182,7 @@ private fun ReadyUI(
runCalculateAction(
// Clear input if equal is clicked and new token is a Digit
(if (equalClicked and Token.Digit.allWithDot.contains(it)) "" else input)
- .addToken(it)
+ .addToken(it),
)
},
clearInputAction = {
@@ -200,7 +200,7 @@ private fun ReadyUI(
runCalculateAction(output, true)
},
useDot = formatterSymbols.fractional == Token.Digit.dot,
- middleZero = appPrefs.middleZero
+ middleZero = appPrefs.middleZero,
)
}
}
@@ -212,7 +212,7 @@ private fun ActionButtons(
formatterSymbols: FormatterSymbols,
) {
Row(
- modifier = modifier
+ modifier = modifier,
) {
val buttonModifier = GlanceModifier.fillMaxWidth().defaultWeight()
@@ -222,14 +222,14 @@ private fun ActionButtons(
iconRes = R.drawable.content_copy,
onClick = copyAction(
output = output,
- fractional = formatterSymbols.fractional
- )
+ fractional = formatterSymbols.fractional,
+ ),
)
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.primary,
iconRes = R.drawable.open_in_new,
- onClick = launchAction(LocalContext.current)
+ onClick = launchAction(LocalContext.current),
)
}
}
@@ -243,7 +243,7 @@ private fun TextFields(
) {
Column(
modifier = modifier,
- verticalAlignment = Alignment.Bottom
+ verticalAlignment = Alignment.Bottom,
) {
val textModifier = GlanceModifier.fillMaxWidth()
@@ -254,8 +254,8 @@ private fun TextFields(
style = TextStyle(
fontSize = 36.sp,
textAlign = TextAlign.End,
- color = GlanceTheme.colors.onSurfaceVariant
- )
+ color = GlanceTheme.colors.onSurfaceVariant,
+ ),
)
Text(
text = output.formatExpression(formatterSymbols),
@@ -264,8 +264,8 @@ private fun TextFields(
style = TextStyle(
fontSize = 36.sp,
textAlign = TextAlign.End,
- color = GlanceTheme.colors.onSurfaceVariant.withAlpha(alpha = 0.5f)
- )
+ color = GlanceTheme.colors.onSurfaceVariant.withAlpha(alpha = 0.5f),
+ ),
)
}
}
@@ -290,25 +290,25 @@ private fun GlanceKeyboard(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.tertiaryContainer,
iconRes = R.drawable.clear,
- onClick = clearInputAction()
+ onClick = clearInputAction(),
)
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.primaryContainer,
iconRes = R.drawable.brackets,
- onClick = addBracketAction()
+ onClick = addBracketAction(),
)
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.primaryContainer,
iconRes = R.drawable.percent,
- onClick = addTokenAction(Token.Operator.percent)
+ onClick = addTokenAction(Token.Operator.percent),
)
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.primaryContainer,
iconRes = R.drawable.divide,
- onClick = addTokenAction(Token.Operator.divide)
+ onClick = addTokenAction(Token.Operator.divide),
)
}
Row(rowModifier) {
@@ -318,25 +318,25 @@ private fun GlanceKeyboard(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.inverseOnSurface,
iconRes = R.drawable.key7,
- onClick = addTokenAction(Token.Digit._7)
+ onClick = addTokenAction(Token.Digit._7),
)
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.inverseOnSurface,
iconRes = R.drawable.key8,
- onClick = addTokenAction(Token.Digit._8)
+ onClick = addTokenAction(Token.Digit._8),
)
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.inverseOnSurface,
iconRes = R.drawable.key9,
- onClick = addTokenAction(Token.Digit._9)
+ onClick = addTokenAction(Token.Digit._9),
)
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.primaryContainer,
iconRes = R.drawable.multiply,
- onClick = addTokenAction(Token.Operator.multiply)
+ onClick = addTokenAction(Token.Operator.multiply),
)
}
Row(rowModifier) {
@@ -346,25 +346,25 @@ private fun GlanceKeyboard(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.inverseOnSurface,
iconRes = R.drawable.key4,
- onClick = addTokenAction(Token.Digit._4)
+ onClick = addTokenAction(Token.Digit._4),
)
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.inverseOnSurface,
iconRes = R.drawable.key5,
- onClick = addTokenAction(Token.Digit._5)
+ onClick = addTokenAction(Token.Digit._5),
)
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.inverseOnSurface,
iconRes = R.drawable.key6,
- onClick = addTokenAction(Token.Digit._6)
+ onClick = addTokenAction(Token.Digit._6),
)
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.primaryContainer,
iconRes = R.drawable.minus,
- onClick = addTokenAction(Token.Operator.minus)
+ onClick = addTokenAction(Token.Operator.minus),
)
}
Row(rowModifier) {
@@ -374,25 +374,25 @@ private fun GlanceKeyboard(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.inverseOnSurface,
iconRes = R.drawable.key1,
- onClick = addTokenAction(Token.Digit._1)
+ onClick = addTokenAction(Token.Digit._1),
)
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.inverseOnSurface,
iconRes = R.drawable.key2,
- onClick = addTokenAction(Token.Digit._2)
+ onClick = addTokenAction(Token.Digit._2),
)
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.inverseOnSurface,
iconRes = R.drawable.key3,
- onClick = addTokenAction(Token.Digit._3)
+ onClick = addTokenAction(Token.Digit._3),
)
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.primaryContainer,
iconRes = R.drawable.plus,
- onClick = addTokenAction(Token.Operator.plus)
+ onClick = addTokenAction(Token.Operator.plus),
)
}
Row(rowModifier) {
@@ -403,39 +403,39 @@ private fun GlanceKeyboard(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.inverseOnSurface,
iconRes = if (useDot) R.drawable.dot else R.drawable.comma,
- onClick = addTokenAction(Token.Digit.dot)
+ onClick = addTokenAction(Token.Digit.dot),
)
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.inverseOnSurface,
iconRes = R.drawable.key0,
- onClick = addTokenAction(Token.Digit._0)
+ onClick = addTokenAction(Token.Digit._0),
)
} else {
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.inverseOnSurface,
iconRes = R.drawable.key0,
- onClick = addTokenAction(Token.Digit._0)
+ onClick = addTokenAction(Token.Digit._0),
)
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.inverseOnSurface,
iconRes = if (useDot) R.drawable.dot else R.drawable.comma,
- onClick = addTokenAction(Token.Digit.dot)
+ onClick = addTokenAction(Token.Digit.dot),
)
}
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.inverseOnSurface,
iconRes = R.drawable.backspace,
- onClick = deleteTokenAction()
+ onClick = deleteTokenAction(),
)
IconButton(
glanceModifier = buttonModifier,
containerColor = GlanceTheme.colors.primaryContainer,
iconRes = R.drawable.equal,
- onClick = equalAction()
+ onClick = equalAction(),
)
}
}
@@ -445,5 +445,5 @@ private fun ColorProvider.withAlpha(alpha: Float): ColorProvider =
ColorProvider(
this
.getColor(LocalContext.current)
- .copy(alpha = alpha)
+ .copy(alpha = alpha),
)
diff --git a/feature/glance/src/main/java/com/sadellie/unitto/feature/glance/glance/IconButton.kt b/feature/glance/src/main/java/com/sadellie/unitto/feature/glance/glance/IconButton.kt
index 128e8fc3..aad2ed19 100644
--- a/feature/glance/src/main/java/com/sadellie/unitto/feature/glance/glance/IconButton.kt
+++ b/feature/glance/src/main/java/com/sadellie/unitto/feature/glance/glance/IconButton.kt
@@ -57,7 +57,7 @@ internal fun IconButton(
modifier = glanceModifier
.height(48.dp)
.padding(4.dp),
- contentAlignment = Alignment.Center
+ contentAlignment = Alignment.Center,
) {
Image(
modifier = GlanceModifier
@@ -66,12 +66,12 @@ internal fun IconButton(
.cornerRadius(
context = LocalContext.current,
cornerRadius = 24.dp,
- color = containerColor
+ color = containerColor,
)
.padding(horizontal = 16.dp, vertical = 8.dp),
provider = ImageProvider(iconRes),
contentDescription = null,
- colorFilter = ColorFilter.tint(contentColor)
+ colorFilter = ColorFilter.tint(contentColor),
)
}
}
@@ -101,8 +101,8 @@ fun GlanceModifier.cornerRadius(
// fucking
.toIcon(context)
// stupid
- .setTint(color.getColor(context).toArgb())
- )
- )
- else -> this.background(color)
- }
+ .setTint(color.getColor(context).toArgb()),
+ ),
+ )
+ else -> this.background(color)
+}
diff --git a/feature/glance/src/main/java/com/sadellie/unitto/feature/glance/glance/UpdateInputAction.kt b/feature/glance/src/main/java/com/sadellie/unitto/feature/glance/glance/UpdateInputAction.kt
index 5bd7c286..2e186c10 100644
--- a/feature/glance/src/main/java/com/sadellie/unitto/feature/glance/glance/UpdateInputAction.kt
+++ b/feature/glance/src/main/java/com/sadellie/unitto/feature/glance/glance/UpdateInputAction.kt
@@ -41,7 +41,7 @@ internal class UpdateInputAction : ActionCallback {
override suspend fun onAction(
context: Context,
glanceId: GlanceId,
- parameters: ActionParameters
+ parameters: ActionParameters,
) = withContext(Dispatchers.Default) {
// Get new input
val input = parameters[CalculatorWidget.inputKey] ?: return@withContext
@@ -89,7 +89,7 @@ internal class RestartWidget : ActionCallback {
override suspend fun onAction(
context: Context,
glanceId: GlanceId,
- parameters: ActionParameters
+ parameters: ActionParameters,
) {
CalculatorWidget().update(context, glanceId)
}
@@ -99,38 +99,38 @@ internal fun updateInputAction(
input: String,
equalClicked: Boolean,
precision: Int,
- outputFormat: Int
+ outputFormat: Int,
): Action = actionRunCallback(
actionParametersOf(
CalculatorWidget.inputKey to input,
CalculatorWidget.equalClickedKey to equalClicked,
CalculatorWidget.precisionKey to precision,
- CalculatorWidget.outputFormatKey to outputFormat
- )
+ CalculatorWidget.outputFormatKey to outputFormat,
+ ),
)
internal fun copyAction(
output: String,
- fractional: String
+ fractional: String,
): Action = actionRunCallback(
actionParametersOf(
- CalculatorWidget.outputKey to output.replace(Token.Digit.dot, fractional)
- )
+ CalculatorWidget.outputKey to output.replace(Token.Digit.dot, fractional),
+ ),
)
internal fun launchAction(
- mContext: Context
+ mContext: Context,
): Action = actionStartActivity(
ComponentName(
mContext,
- "com.sadellie.unitto.MainActivity"
- )
+ "com.sadellie.unitto.MainActivity",
+ ),
)
private fun calculate(
input: String,
precision: Int,
- outputFormat: Int
+ outputFormat: Int,
): String {
if (input.isEmpty()) throw Exception()
if (!input.isExpression()) throw Exception()
diff --git a/feature/glance/src/main/java/com/sadellie/unitto/feature/glance/glance/WidgetTheme.kt b/feature/glance/src/main/java/com/sadellie/unitto/feature/glance/glance/WidgetTheme.kt
index 16d900d6..bdfad06b 100644
--- a/feature/glance/src/main/java/com/sadellie/unitto/feature/glance/glance/WidgetTheme.kt
+++ b/feature/glance/src/main/java/com/sadellie/unitto/feature/glance/glance/WidgetTheme.kt
@@ -33,7 +33,7 @@ internal fun WidgetTheme(content: @Composable () -> Unit) =
}
} else {
GlanceTheme(
- colors = ColorProviders(light = LightThemeColors, dark = DarkThemeColors)
+ colors = ColorProviders(light = LightThemeColors, dark = DarkThemeColors),
) {
content()
}
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsScreen.kt
index 2a000fd7..b4f02da3 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsScreen.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsScreen.kt
@@ -77,20 +77,20 @@ import com.sadellie.unitto.core.base.BuildConfig
import com.sadellie.unitto.core.base.R
import com.sadellie.unitto.core.ui.LocalWindowSize
import com.sadellie.unitto.core.ui.WindowWidthSizeClass
+import com.sadellie.unitto.core.ui.common.DrawerButton
import com.sadellie.unitto.core.ui.common.EmptyScreen
import com.sadellie.unitto.core.ui.common.Header
import com.sadellie.unitto.core.ui.common.ListItem
-import com.sadellie.unitto.core.ui.common.DrawerButton
import com.sadellie.unitto.core.ui.common.ScaffoldWithLargeTopBar
import com.sadellie.unitto.core.ui.openLink
import com.sadellie.unitto.core.ui.showToast
import com.sadellie.unitto.feature.settings.components.AnnoyingBox
-import com.sadellie.unitto.feature.settings.navigation.aboutRoute
-import com.sadellie.unitto.feature.settings.navigation.calculatorSettingsRoute
-import com.sadellie.unitto.feature.settings.navigation.converterSettingsRoute
-import com.sadellie.unitto.feature.settings.navigation.displayRoute
-import com.sadellie.unitto.feature.settings.navigation.formattingRoute
-import com.sadellie.unitto.feature.settings.navigation.startingScreenRoute
+import com.sadellie.unitto.feature.settings.navigation.ABOUT_ROUTE
+import com.sadellie.unitto.feature.settings.navigation.CALCULATOR_SETTINGS_ROUTE
+import com.sadellie.unitto.feature.settings.navigation.CONVERTER_SETTINGS_ROUTE
+import com.sadellie.unitto.feature.settings.navigation.DISPLAY_ROUTE
+import com.sadellie.unitto.feature.settings.navigation.FORMATTING_ROUTE
+import com.sadellie.unitto.feature.settings.navigation.STARTING_SCREEN_ROUTE
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import java.time.ZonedDateTime
@@ -123,7 +123,7 @@ internal fun SettingsRoute(
updateVibrations = viewModel::updateVibrations,
clearCache = viewModel::clearCache,
backup = viewModel::backup,
- restore = viewModel::restore
+ restore = viewModel::restore,
)
}
}
@@ -144,14 +144,14 @@ private fun SettingsScreen(
// Pass picked file uri to BackupManager
val restoreLauncher = rememberLauncherForActivityResult(
- ActivityResultContracts.OpenDocument()
+ ActivityResultContracts.OpenDocument(),
) { pickedUri ->
if (pickedUri != null) restore(mContext, pickedUri)
}
// Pass picked file uri to BackupManager
val backupLauncher = rememberLauncherForActivityResult(
- ActivityResultContracts.CreateDocument(backupMimeType)
+ ActivityResultContracts.CreateDocument(BACKUP_MIME_TYPE),
) { pickedUri ->
if (pickedUri != null) backup(mContext, pickedUri)
}
@@ -164,38 +164,38 @@ private fun SettingsScreen(
if (LocalWindowSize.current.widthSizeClass != WindowWidthSizeClass.Expanded) {
DrawerButton(openDrawer)
}
- },
+ },
actions = {
IconButton(
onClick = { showMenu = !showMenu },
- content = { Icon(Icons.Default.MoreVert, null) }
+ content = { Icon(Icons.Default.MoreVert, null) },
)
DropdownMenu(
expanded = showMenu,
- onDismissRequest = { showMenu = false }
+ onDismissRequest = { showMenu = false },
) {
DropdownMenuItem(
onClick = {
showMenu = false
backupLauncher.launchSafely(backupFileName())
},
- text = { Text(stringResource(R.string.settings_back_up)) }
+ text = { Text(stringResource(R.string.settings_back_up)) },
)
DropdownMenuItem(
onClick = {
showMenu = false
- restoreLauncher.launchSafely(arrayOf(backupMimeType))
+ restoreLauncher.launchSafely(arrayOf(BACKUP_MIME_TYPE))
},
- text = { Text(stringResource(R.string.settings_restore)) }
+ text = { Text(stringResource(R.string.settings_restore)) },
)
}
- }
+ },
) { padding ->
Column(
modifier = Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState())
- .padding(padding)
+ .padding(padding),
) {
AnimatedVisibility(
visible = uiState.showUpdateChangelog,
@@ -221,35 +221,35 @@ private fun SettingsScreen(
icon = Icons.Default.Palette,
headlineText = stringResource(R.string.settings_display),
supportingText = stringResource(R.string.settings_display_support),
- modifier = Modifier.clickable { navControllerAction(displayRoute) }
+ modifier = Modifier.clickable { navControllerAction(DISPLAY_ROUTE) },
)
ListItem(
icon = Icons.Default.Home,
headlineText = stringResource(R.string.settings_starting_screen),
supportingText = stringResource(R.string.settings_starting_screen_support),
- modifier = Modifier.clickable { navControllerAction(startingScreenRoute) }
+ modifier = Modifier.clickable { navControllerAction(STARTING_SCREEN_ROUTE) },
)
ListItem(
icon = Icons.Default._123,
headlineText = stringResource(R.string.settings_formatting),
supportingText = stringResource(R.string.settings_formatting_support),
- modifier = Modifier.clickable { navControllerAction(formattingRoute) }
+ modifier = Modifier.clickable { navControllerAction(FORMATTING_ROUTE) },
)
ListItem(
icon = Icons.Default.Calculate,
headlineText = stringResource(R.string.calculator_title),
supportingText = stringResource(R.string.settings_calculator_support),
- modifier = Modifier.clickable { navControllerAction(calculatorSettingsRoute) }
+ modifier = Modifier.clickable { navControllerAction(CALCULATOR_SETTINGS_ROUTE) },
)
ListItem(
icon = Icons.Default.SwapHoriz,
headlineText = stringResource(R.string.unit_converter_title),
supportingText = stringResource(R.string.settings_converter_support),
- modifier = Modifier.clickable { navControllerAction(converterSettingsRoute) }
+ modifier = Modifier.clickable { navControllerAction(CONVERTER_SETTINGS_ROUTE) },
)
Header(stringResource(R.string.settings_additional))
@@ -258,9 +258,9 @@ private fun SettingsScreen(
icon = Icons.Default.Vibration,
headlineText = stringResource(R.string.settings_vibrations),
supportingText = stringResource(R.string.settings_vibrations_support),
- modifier = Modifier.clickable { navControllerAction(converterSettingsRoute) },
+ modifier = Modifier.clickable { navControllerAction(CONVERTER_SETTINGS_ROUTE) },
switchState = uiState.enableVibrations,
- onSwitchChange = updateVibrations
+ onSwitchChange = updateVibrations,
)
AnimatedVisibility(
@@ -271,7 +271,10 @@ private fun SettingsScreen(
ListItem(
headlineText = stringResource(R.string.settings_clear_cache),
icon = Icons.Default.Cached,
- modifier = Modifier.clickable { clearCache(); showToast(mContext, "👌") },
+ modifier = Modifier.clickable {
+ clearCache()
+ showToast(mContext, "👌")
+ },
)
}
@@ -279,7 +282,7 @@ private fun SettingsScreen(
ListItem(
icon = Icons.Default.RateReview,
headlineText = stringResource(R.string.settings_rate_this_app),
- modifier = Modifier.clickable { openLink(mContext, BuildConfig.STORE_LINK) }
+ modifier = Modifier.clickable { openLink(mContext, BuildConfig.STORE_LINK) },
)
}
@@ -287,7 +290,7 @@ private fun SettingsScreen(
icon = Icons.Default.Info,
headlineText = stringResource(R.string.settings_about_unitto),
supportingText = stringResource(R.string.settings_about_unitto_support),
- modifier = Modifier.clickable { navControllerAction(aboutRoute) }
+ modifier = Modifier.clickable { navControllerAction(ABOUT_ROUTE) },
)
}
}
@@ -295,7 +298,7 @@ private fun SettingsScreen(
AnimatedVisibility(
visible = uiState.backupInProgress,
enter = fadeIn(),
- exit = fadeOut()
+ exit = fadeOut(),
) {
Scaffold { padding ->
Box(
@@ -323,7 +326,7 @@ private fun backupFileName(): String {
return "${ZonedDateTime.now().format(formatter)}.unitto"
}
-private const val backupMimeType = "application/octet-stream"
+private const val BACKUP_MIME_TYPE = "application/octet-stream"
@Preview
@Composable
@@ -335,8 +338,8 @@ private fun PreviewSettingsScreen() {
enableVibrations = false,
cacheSize = 2,
backupInProgress = false,
- showUpdateChangelog = true
- )
+ showUpdateChangelog = true,
+ ),
)
}
@@ -364,6 +367,6 @@ private fun PreviewSettingsScreen() {
delay(2000)
uiState = uiState.copy(backupInProgress = false)
}
- }
+ },
)
}
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsViewModel.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsViewModel.kt
index 500c71f3..d1964955 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsViewModel.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/SettingsViewModel.kt
@@ -44,24 +44,24 @@ import javax.inject.Inject
internal class SettingsViewModel @Inject constructor(
private val userPrefsRepository: UserPreferencesRepository,
private val currencyRatesDao: CurrencyRatesDao,
- private val database: UnittoDatabase
+ private val database: UnittoDatabase,
) : ViewModel() {
private val _showErrorToast = MutableSharedFlow()
val showErrorToast = _showErrorToast.asSharedFlow()
- private val _backupInProgress = MutableStateFlow(false)
+ private val backupInProgress = MutableStateFlow(false)
private var backupJob: Job? = null
val uiState = combine(
userPrefsRepository.generalPrefs,
currencyRatesDao.size(),
- _backupInProgress,
+ backupInProgress,
) { prefs, cacheSize, backupInProgress ->
SettingsUIState.Ready(
enableVibrations = prefs.enableVibrations,
cacheSize = cacheSize,
backupInProgress = backupInProgress,
- showUpdateChangelog = prefs.lastReadChangelog != BuildConfig.VERSION_CODE
+ showUpdateChangelog = prefs.lastReadChangelog != BuildConfig.VERSION_CODE,
)
}
.stateIn(viewModelScope, SettingsUIState.Loading)
@@ -72,14 +72,14 @@ internal class SettingsViewModel @Inject constructor(
) {
backupJob?.cancel()
backupJob = viewModelScope.launch(Dispatchers.IO) {
- _backupInProgress.update { true }
+ backupInProgress.update { true }
try {
BackupManager().backup(context, uri, database)
} catch (e: Exception) {
_showErrorToast.emit(true)
Log.e(TAG, "$e")
}
- _backupInProgress.update { false }
+ backupInProgress.update { false }
}
}
@@ -89,14 +89,14 @@ internal class SettingsViewModel @Inject constructor(
) {
backupJob?.cancel()
backupJob = viewModelScope.launch(Dispatchers.IO) {
- _backupInProgress.update { true }
+ backupInProgress.update { true }
try {
BackupManager().restore(context, uri, database)
} catch (e: Exception) {
_showErrorToast.emit(true)
Log.e(TAG, "$e")
}
- _backupInProgress.update { false }
+ backupInProgress.update { false }
}
}
@@ -119,4 +119,4 @@ internal class SettingsViewModel @Inject constructor(
}
}
-private const val TAG = "SettingsViewModel"
\ No newline at end of file
+private const val TAG = "SettingsViewModel"
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/about/AboutScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/about/AboutScreen.kt
index 8b619074..91243f66 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/about/AboutScreen.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/about/AboutScreen.kt
@@ -57,7 +57,7 @@ internal fun AboutRoute(
AboutScreen(
navigateUpAction = navigateUpAction,
navigateToThirdParty = navigateToThirdParty,
- navigateToEasterEgg = navigateToEasterEgg
+ navigateToEasterEgg = navigateToEasterEgg,
)
}
@@ -73,7 +73,7 @@ private fun AboutScreen(
ScaffoldWithLargeTopBar(
title = stringResource(R.string.settings_about_unitto),
- navigationIcon = { NavigateUpButton(navigateUpAction) }
+ navigationIcon = { NavigateUpButton(navigateUpAction) },
) { padding ->
LazyColumn(contentPadding = padding) {
// CURRENCY RATE NOTE
@@ -81,7 +81,7 @@ private fun AboutScreen(
ListItem(
icon = Icons.AutoMirrored.Filled.Help,
headlineText = stringResource(R.string.settings_currency_rates_note_title),
- modifier = Modifier.clickable { showDialog = true }
+ modifier = Modifier.clickable { showDialog = true },
)
}
@@ -93,9 +93,9 @@ private fun AboutScreen(
modifier = Modifier.clickable {
openLink(
mContext,
- "https://sadellie.github.io/unitto/terms"
+ "https://sadellie.github.io/unitto/terms",
)
- }
+ },
)
}
@@ -107,9 +107,9 @@ private fun AboutScreen(
modifier = Modifier.clickable {
openLink(
mContext,
- "https://sadellie.github.io/unitto/privacy"
+ "https://sadellie.github.io/unitto/privacy",
)
- }
+ },
)
}
@@ -121,9 +121,9 @@ private fun AboutScreen(
modifier = Modifier.clickable {
openLink(
mContext,
- "https://github.com/sadellie/unitto"
+ "https://github.com/sadellie/unitto",
)
- }
+ },
)
}
@@ -132,7 +132,7 @@ private fun AboutScreen(
ListItem(
icon = Icons.Default.Copyright,
headlineText = stringResource(R.string.settings_third_party_licenses),
- modifier = Modifier.clickable { navigateToThirdParty() }
+ modifier = Modifier.clickable { navigateToThirdParty() },
)
}
@@ -148,7 +148,7 @@ private fun AboutScreen(
aboutItemClick = 0
navigateToEasterEgg()
}
- }
+ },
)
}
}
@@ -167,7 +167,7 @@ private fun AboutScreen(
Text(stringResource(R.string.ok_label))
}
},
- onDismissRequest = { showDialog = false }
+ onDismissRequest = { showDialog = false },
)
}
}
@@ -178,6 +178,6 @@ fun PreviewAboutScreen() {
AboutScreen(
navigateUpAction = {},
navigateToThirdParty = {},
- navigateToEasterEgg = {}
+ navigateToEasterEgg = {},
)
}
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/bouncingemoji/BouncingEmoji.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/bouncingemoji/BouncingEmoji.kt
index 5e0d6817..36933ee5 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/bouncingemoji/BouncingEmoji.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/bouncingemoji/BouncingEmoji.kt
@@ -70,7 +70,7 @@ internal fun BouncingEmojiRoute(
) {
ScaffoldWithTopBar(
title = { AnimatedText("Bouncy boy") },
- navigationIcon = { NavigateUpButton(navigateUpAction) }
+ navigationIcon = { NavigateUpButton(navigateUpAction) },
) { paddingValues ->
BouncingEmojiScreen(
modifier = Modifier
@@ -95,12 +95,12 @@ private fun BouncingEmojiScreen(
var speed by remember { mutableFloatStateOf(1f) }
CompositionLocalProvider(
- value = LocalDensity provides Density(density.density, fontScale = 1f)
+ value = LocalDensity provides Density(density.density, fontScale = 1f),
) {
BoxWithConstraints(
modifier = modifier.clickable {
speed = Random.nextFloat()
- }
+ },
) {
val width = constraints.maxWidth
val height = constraints.maxHeight
@@ -125,16 +125,16 @@ private fun BouncingEmojiScreen(
modifier = Modifier.offset {
IntOffset(
animatedX.value.roundToInt(),
- animatedY.value.roundToInt()
+ animatedY.value.roundToInt(),
)
},
- horizontalAlignment = Alignment.CenterHorizontally
+ horizontalAlignment = Alignment.CenterHorizontally,
) {
Box(
modifier = Modifier
.background(MaterialTheme.colorScheme.primaryContainer, CircleShape)
.size(ballSize),
- contentAlignment = Alignment.Center
+ contentAlignment = Alignment.Center,
) {
AnimatedText(emoji, MaterialTheme.typography.displayMedium)
}
@@ -150,7 +150,7 @@ private fun BouncingEmojiScreen(
LaunchedEffect(
key1 = Unit,
- key2 = speed
+ key2 = speed,
) {
while (isActive) {
x += xSpeed * speed
@@ -173,7 +173,7 @@ private fun BouncingEmojiScreen(
}
// Count edge hit as 1 bounce
- when(bouncedEdges) {
+ when (bouncedEdges) {
2 -> {
edgeHits++
bounces++
@@ -197,20 +197,20 @@ private fun BouncingEmojiScreen(
@Composable
private fun AnimatedText(
text: String,
- style: TextStyle = LocalTextStyle.current
+ style: TextStyle = LocalTextStyle.current,
) {
AnimatedContent(
targetState = text,
transitionSpec = {
slideInVertically { height -> height } + fadeIn() togetherWith
- slideOutVertically { height -> -height } + fadeOut()
+ slideOutVertically { height -> -height } + fadeOut()
},
label = "Text animation",
) {
Text(
text = it,
style = style,
- color = MaterialTheme.colorScheme.onBackground
+ color = MaterialTheme.colorScheme.onBackground,
)
}
}
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/calculator/CalculatorSettingsScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/calculator/CalculatorSettingsScreen.kt
index cee574b9..7c4e52cc 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/calculator/CalculatorSettingsScreen.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/calculator/CalculatorSettingsScreen.kt
@@ -64,7 +64,7 @@ private fun CalculatorSettingsScreen(
) {
ScaffoldWithLargeTopBar(
title = stringResource(R.string.calculator_title),
- navigationIcon = { NavigateUpButton(navigateUpAction) }
+ navigationIcon = { NavigateUpButton(navigateUpAction) },
) { padding ->
Column(Modifier.padding(padding)) {
ListItem(
@@ -72,7 +72,7 @@ private fun CalculatorSettingsScreen(
icon = Icons.Default.Timer,
supportingText = stringResource(R.string.settings_partial_history_view_support),
switchState = prefs.partialHistoryView,
- onSwitchChange = updatePartialHistoryView
+ onSwitchChange = updatePartialHistoryView,
)
}
}
@@ -91,7 +91,7 @@ private fun PreviewCalculatorSettingsScreenStandard() {
inverseMode = false,
partialHistoryView = false,
precision = 3,
- outputFormat = OutputFormat.PLAIN
+ outputFormat = OutputFormat.PLAIN,
),
navigateUpAction = {},
updatePartialHistoryView = {},
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/AlertDialogWithList.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/AlertDialogWithList.kt
index 332e0224..9fe379a9 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/AlertDialogWithList.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/AlertDialogWithList.kt
@@ -58,7 +58,7 @@ internal fun AlertDialogWithList(
selectAction: (T) -> Unit,
dismissAction: () -> Unit,
supportText: String? = null,
- dismissButtonLabel: String = stringResource(R.string.cancel_label)
+ dismissButtonLabel: String = stringResource(R.string.cancel_label),
) {
AlertDialog(
onDismissRequest = dismissAction,
@@ -78,7 +78,7 @@ internal fun AlertDialogWithList(
onClick = {
selectAction(option)
dismissAction()
- }
+ },
)
}
}
@@ -88,7 +88,7 @@ internal fun AlertDialogWithList(
TextButton(onClick = dismissAction) {
Text(text = dismissButtonLabel, color = MaterialTheme.colorScheme.primary)
}
- }
+ },
)
}
@@ -103,7 +103,7 @@ internal fun AlertDialogWithList(
private fun CustomDialogContentListItem(
label: String,
selected: Boolean = false,
- onClick: () -> Unit
+ onClick: () -> Unit,
) {
Row(
modifier = Modifier
@@ -111,9 +111,9 @@ private fun CustomDialogContentListItem(
.clickable(
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple(),
- onClick = onClick
+ onClick = onClick,
),
- verticalAlignment = Alignment.CenterVertically
+ verticalAlignment = Alignment.CenterVertically,
) {
RadioButton(selected, onClick)
Text(label)
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/AnnoyingBox.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/AnnoyingBox.kt
index 7c2f9204..a4dcbb95 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/AnnoyingBox.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/AnnoyingBox.kt
@@ -54,23 +54,23 @@ internal fun AnnoyingBox(
.squashable(
onClick = onClick,
interactionSource = remember { MutableInteractionSource() },
- cornerRadiusRange = 15..25
+ cornerRadiusRange = 15..25,
)
.background(MaterialTheme.colorScheme.secondaryContainer)
.padding(16.dp, 8.dp),
horizontalArrangement = Arrangement.spacedBy(16.dp),
- verticalAlignment = Alignment.CenterVertically
+ verticalAlignment = Alignment.CenterVertically,
) {
Icon(
modifier = Modifier.size(24.dp),
imageVector = imageVector,
contentDescription = imageVectorContentDescription,
- tint = MaterialTheme.colorScheme.onSurfaceVariant
+ tint = MaterialTheme.colorScheme.onSurfaceVariant,
)
Column(
modifier = Modifier
.weight(1f)
- .padding(vertical = 8.dp)
+ .padding(vertical = 8.dp),
) {
Text(
text = title,
@@ -94,6 +94,6 @@ fun PreviewAnnoyingBox() {
imageVector = Icons.Default.Accessibility,
imageVectorContentDescription = "",
title = "Title text",
- support = "Lorem ipsum or something"
+ support = "Lorem ipsum or something",
) {}
}
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorSelector.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorSelector.kt
index 76b04c07..d89765da 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorSelector.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/ColorSelector.kt
@@ -71,14 +71,14 @@ internal fun ColorSelector(
LazyRow(
modifier = modifier,
state = listState,
- horizontalArrangement = Arrangement.spacedBy(8.dp)
+ horizontalArrangement = Arrangement.spacedBy(8.dp),
) {
// Default, Unitto colors
item(defaultColor.value.toLong()) {
ColorCheckbox(
color = defaultColor,
selected = Color.Unspecified == selected,
- onClick = { onItemClick(Color.Unspecified) }
+ onClick = { onItemClick(Color.Unspecified) },
)
}
@@ -87,7 +87,7 @@ internal fun ColorSelector(
ColorCheckbox(
color = it,
selected = it == selected,
- onClick = { onItemClick(it) }
+ onClick = { onItemClick(it) },
)
}
}
@@ -98,7 +98,7 @@ internal fun ColorSelector(
private fun ColorCheckbox(
color: Color,
selected: Boolean,
- onClick: () -> Unit
+ onClick: () -> Unit,
) {
Box(
modifier = Modifier
@@ -106,7 +106,7 @@ private fun ColorCheckbox(
.clip(RoundedCornerShape(25))
.clickable(onClick = onClick)
.background(MaterialTheme.colorScheme.surfaceColorAtElevation(2.dp)),
- contentAlignment = Alignment.Center
+ contentAlignment = Alignment.Center,
) {
Box(
modifier = Modifier
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/MonetModeSelector.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/MonetModeSelector.kt
index cb80296e..35b7d828 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/MonetModeSelector.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/components/MonetModeSelector.kt
@@ -81,7 +81,7 @@ internal fun MonetModeSelector(
LazyRow(
modifier = modifier,
state = listState,
- horizontalArrangement = Arrangement.spacedBy(8.dp)
+ horizontalArrangement = Arrangement.spacedBy(8.dp),
) {
items(monetModes) { monetMode ->
Themmo(
@@ -93,13 +93,13 @@ internal fun MonetModeSelector(
dynamicThemeEnabled = false,
amoledThemeEnabled = false,
customColor = customColor,
- monetMode = monetMode
+ monetMode = monetMode,
)
- }
+ },
) {
MonetModeCheckbox(
selected = monetMode == selected,
- onClick = { onItemClick(monetMode) }
+ onClick = { onItemClick(monetMode) },
)
}
}
@@ -109,7 +109,7 @@ internal fun MonetModeSelector(
@Composable
private fun MonetModeCheckbox(
selected: Boolean,
- onClick: () -> Unit
+ onClick: () -> Unit,
) {
Box(
modifier = Modifier
@@ -117,7 +117,7 @@ private fun MonetModeCheckbox(
.clip(RoundedCornerShape(25))
.clickable(onClick = onClick)
.background(MaterialTheme.colorScheme.surfaceColorAtElevation(2.dp)),
- contentAlignment = Alignment.Center
+ contentAlignment = Alignment.Center,
) {
Box(
modifier = Modifier
@@ -127,17 +127,21 @@ private fun MonetModeCheckbox(
.clip(CircleShape)
.background(MaterialTheme.colorScheme.secondary)
.border(1.dp, MaterialTheme.colorScheme.outline, CircleShape),
- contentAlignment = Alignment.BottomStart
+ contentAlignment = Alignment.BottomStart,
) {
// Is this bad? Yes. Does it work? Also yes.
- Box(modifier = Modifier
- .fillMaxHeight(0.5f)
- .fillMaxWidth()
- .background(MaterialTheme.colorScheme.primary))
- Box(modifier = Modifier
- .fillMaxHeight(0.5f)
- .fillMaxWidth(0.5f)
- .background(MaterialTheme.colorScheme.secondaryContainer))
+ Box(
+ modifier = Modifier
+ .fillMaxHeight(0.5f)
+ .fillMaxWidth()
+ .background(MaterialTheme.colorScheme.primary),
+ )
+ Box(
+ modifier = Modifier
+ .fillMaxHeight(0.5f)
+ .fillMaxWidth(0.5f)
+ .background(MaterialTheme.colorScheme.secondaryContainer),
+ )
}
AnimatedVisibility(
visible = selected,
@@ -150,7 +154,7 @@ private fun MonetModeCheckbox(
tint = MaterialTheme.colorScheme.inverseOnSurface,
modifier = Modifier
.background(MaterialTheme.colorScheme.inverseSurface, CircleShape)
- .padding(4.dp)
+ .padding(4.dp),
)
}
}
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/converter/ConverterSettingsScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/converter/ConverterSettingsScreen.kt
index 553325b3..0fbb92cb 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/converter/ConverterSettingsScreen.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/converter/ConverterSettingsScreen.kt
@@ -62,7 +62,7 @@ internal fun ConverterSettingsRoute(
navigateUpAction = navigateUpAction,
navigateToUnitsGroup = navigateToUnitsGroup,
updateUnitConverterFormatTime = viewModel::updateUnitConverterFormatTime,
- updateUnitConverterSorting = viewModel::updateUnitConverterSorting
+ updateUnitConverterSorting = viewModel::updateUnitConverterSorting,
)
}
}
@@ -80,7 +80,7 @@ private fun ConverterSettingsScreen(
ScaffoldWithLargeTopBar(
title = stringResource(R.string.unit_converter_title),
- navigationIcon = { NavigateUpButton(navigateUpAction) }
+ navigationIcon = { NavigateUpButton(navigateUpAction) },
) { padding ->
LazyColumn(contentPadding = padding) {
item("unit group") {
@@ -88,7 +88,7 @@ private fun ConverterSettingsScreen(
icon = Icons.AutoMirrored.Filled.Rule,
headlineText = stringResource(R.string.settings_unit_groups_title),
supportingText = stringResource(R.string.settings_unit_groups_support),
- modifier = Modifier.clickable { navigateToUnitsGroup() }
+ modifier = Modifier.clickable { navigateToUnitsGroup() },
)
}
@@ -97,7 +97,7 @@ private fun ConverterSettingsScreen(
icon = Icons.AutoMirrored.Filled.Sort,
headlineText = stringResource(R.string.settings_units_sorting),
supportingText = stringResource(R.string.settings_units_sorting_support),
- modifier = Modifier.clickable { showDialog = true }
+ modifier = Modifier.clickable { showDialog = true },
)
}
@@ -107,7 +107,7 @@ private fun ConverterSettingsScreen(
headlineText = stringResource(R.string.settings_format_time),
supportingText = stringResource(R.string.settings_format_time_support),
switchState = prefs.unitConverterFormatTime,
- onSwitchChange = updateUnitConverterFormatTime
+ onSwitchChange = updateUnitConverterFormatTime,
)
}
}
@@ -124,7 +124,7 @@ private fun ConverterSettingsScreen(
),
selectedItemIndex = prefs.unitConverterSorting,
selectAction = updateUnitConverterSorting,
- dismissAction = { showDialog = false }
+ dismissAction = { showDialog = false },
)
}
}
@@ -150,6 +150,6 @@ private fun PreviewConverterSettingsScreen() {
navigateUpAction = {},
navigateToUnitsGroup = {},
updateUnitConverterFormatTime = {},
- updateUnitConverterSorting = {}
+ updateUnitConverterSorting = {},
)
}
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayScreen.kt
index 56407e45..e3544d3a 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayScreen.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayScreen.kt
@@ -56,13 +56,13 @@ import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.sadellie.unitto.core.base.R
+import com.sadellie.unitto.core.ui.common.EmptyScreen
import com.sadellie.unitto.core.ui.common.Header
+import com.sadellie.unitto.core.ui.common.ListItem
import com.sadellie.unitto.core.ui.common.NavigateUpButton
+import com.sadellie.unitto.core.ui.common.ScaffoldWithLargeTopBar
import com.sadellie.unitto.core.ui.common.SegmentedButton
import com.sadellie.unitto.core.ui.common.SegmentedButtonsRow
-import com.sadellie.unitto.core.ui.common.EmptyScreen
-import com.sadellie.unitto.core.ui.common.ListItem
-import com.sadellie.unitto.core.ui.common.ScaffoldWithLargeTopBar
import com.sadellie.unitto.core.ui.common.icons.IconPack
import com.sadellie.unitto.core.ui.common.icons.iconpack.Clear
import com.sadellie.unitto.feature.settings.components.ColorSelector
@@ -122,7 +122,7 @@ internal fun DisplayRoute(
updateAcButton = viewModel::updateAcButton,
middleZero = prefs.middleZero,
updateMiddleZero = viewModel::updateMiddleZero,
- navigateToLanguages = navigateToLanguages
+ navigateToLanguages = navigateToLanguages,
)
}
}
@@ -151,13 +151,13 @@ private fun DisplayScreen(
) {
ScaffoldWithLargeTopBar(
title = stringResource(R.string.settings_display),
- navigationIcon = { NavigateUpButton(navigateUp) }
+ navigationIcon = { NavigateUpButton(navigateUp) },
) { paddingValues ->
Column(
modifier = Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState())
- .padding(paddingValues)
+ .padding(paddingValues),
) {
ListItem(
leadingContent = {
@@ -173,26 +173,26 @@ private fun DisplayScreen(
Row(
Modifier
.horizontalScroll(rememberScrollState())
- .wrapContentWidth()
+ .wrapContentWidth(),
) {
SegmentedButtonsRow(modifier = Modifier.padding(56.dp, 8.dp, 24.dp, 2.dp)) {
SegmentedButton(
label = stringResource(R.string.settings_auto),
onClick = { onThemeChange(ThemingMode.AUTO) },
selected = ThemingMode.AUTO == currentThemingMode,
- icon = Icons.Outlined.HdrAuto
+ icon = Icons.Outlined.HdrAuto,
)
SegmentedButton(
label = stringResource(R.string.settings_light_mode),
onClick = { onThemeChange(ThemingMode.FORCE_LIGHT) },
selected = ThemingMode.FORCE_LIGHT == currentThemingMode,
- icon = Icons.Outlined.LightMode
+ icon = Icons.Outlined.LightMode,
)
SegmentedButton(
label = stringResource(R.string.settings_dark_mode),
onClick = { onThemeChange(ThemingMode.FORCE_DARK) },
selected = ThemingMode.FORCE_DARK == currentThemingMode,
- icon = Icons.Outlined.DarkMode
+ icon = Icons.Outlined.DarkMode,
)
}
}
@@ -207,7 +207,7 @@ private fun DisplayScreen(
headlineText = stringResource(R.string.settings_amoled_dark),
supportingText = stringResource(R.string.settings_amoled_dark_support),
switchState = isAmoledThemeEnabled,
- onSwitchChange = onAmoledThemeChange
+ onSwitchChange = onAmoledThemeChange,
)
}
@@ -217,7 +217,7 @@ private fun DisplayScreen(
headlineText = stringResource(R.string.settings_dynamic_colors),
supportingText = stringResource(R.string.settings_dynamic_colors_support),
switchState = isDynamicThemeEnabled,
- onSwitchChange = onDynamicThemeChange
+ onSwitchChange = onDynamicThemeChange,
)
AnimatedVisibility(
@@ -233,7 +233,7 @@ private fun DisplayScreen(
selected = selectedColor,
onItemClick = onColorChange,
colors = colorSchemes,
- defaultColor = Color(0xFF186c31)
+ defaultColor = Color(0xFF186c31),
)
},
modifier = Modifier.padding(start = 40.dp),
@@ -257,7 +257,7 @@ private fun DisplayScreen(
themingMode = currentThemingMode,
)
},
- modifier = Modifier.padding(start = 40.dp)
+ modifier = Modifier.padding(start = 40.dp),
)
}
}
@@ -269,7 +269,7 @@ private fun DisplayScreen(
headlineText = stringResource(R.string.settings_system_font),
supportingText = stringResource(R.string.settings_system_font_support),
switchState = systemFont,
- onSwitchChange = updateSystemFont
+ onSwitchChange = updateSystemFont,
)
ListItem(
@@ -277,7 +277,7 @@ private fun DisplayScreen(
headlineText = stringResource(R.string.settings_ac_button),
supportingText = stringResource(R.string.settings_ac_button_support),
switchState = acButton,
- onSwitchChange = updateAcButton
+ onSwitchChange = updateAcButton,
)
ListItem(
@@ -285,14 +285,14 @@ private fun DisplayScreen(
headlineText = stringResource(R.string.settings_middle_zero),
supportingText = stringResource(R.string.settings_middle_zero_support),
switchState = middleZero,
- onSwitchChange = updateMiddleZero
+ onSwitchChange = updateMiddleZero,
)
ListItem(
icon = Icons.Default.Language,
headlineText = stringResource(R.string.settings_language),
supportingText = stringResource(R.string.settings_language_support),
- modifier = Modifier.clickable { navigateToLanguages() }
+ modifier = Modifier.clickable { navigateToLanguages() },
)
}
}
@@ -321,7 +321,7 @@ private fun Preview() {
updateAcButton = {},
middleZero = false,
updateMiddleZero = {},
- navigateToLanguages = {}
+ navigateToLanguages = {},
)
}
}
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayViewModel.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayViewModel.kt
index 102281db..e1eeef64 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayViewModel.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/display/DisplayViewModel.kt
@@ -31,7 +31,7 @@ import javax.inject.Inject
@HiltViewModel
class DisplayViewModel @Inject constructor(
- private val userPrefsRepository: UserPreferencesRepository
+ private val userPrefsRepository: UserPreferencesRepository,
) : ViewModel() {
val prefs = userPrefsRepository.displayPrefs
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/formatting/FormattingScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/formatting/FormattingScreen.kt
index 82e3fc51..79ff98ab 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/formatting/FormattingScreen.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/formatting/FormattingScreen.kt
@@ -98,7 +98,8 @@ fun FormattingScreen(
onPrecisionChange: (Int) -> Unit,
updateFormatterSymbols: (grouping: String, fractional: String) -> Unit,
onOutputFormatChange: (Int) -> Unit,
- precisions: ClosedFloatingPointRange = 0f..16f, // 16th is a MAX_PRECISION (1000)
+ // 16th is a MAX_PRECISION (1000)
+ precisions: ClosedFloatingPointRange = 0f..16f,
) {
val resources = LocalContext.current.resources
@@ -107,7 +108,7 @@ fun FormattingScreen(
return@derivedStateOf if (uiState.precision >= precisions.endInclusive) {
resources.getString(
R.string.settings_precision_max,
- MAX_PRECISION.toString().formatExpression(uiState.formatterSymbols)
+ MAX_PRECISION.toString().formatExpression(uiState.formatterSymbols),
)
} else {
uiState.precision.toString()
@@ -121,7 +122,7 @@ fun FormattingScreen(
) { paddingValues ->
Column(
modifier = Modifier
- .padding(paddingValues)
+ .padding(paddingValues),
) {
PagedIsland(
modifier = Modifier
@@ -147,7 +148,7 @@ fun FormattingScreen(
.fillMaxWidth()
.horizontalScroll(rememberScrollState()),
textAlign = TextAlign.End,
- color = MaterialTheme.colorScheme.onSecondaryContainer
+ color = MaterialTheme.colorScheme.onSecondaryContainer,
)
}
@@ -155,13 +156,13 @@ fun FormattingScreen(
leadingContent = {
Icon(
Icons.Default.Architecture,
- stringResource(R.string.settings_precision)
+ stringResource(R.string.settings_precision),
)
},
headlineContent = {
Row(
horizontalArrangement = Arrangement.SpaceBetween,
- modifier = Modifier.fillMaxWidth()
+ modifier = Modifier.fillMaxWidth(),
) {
Text(stringResource(R.string.settings_precision))
Text(precisionText)
@@ -169,7 +170,7 @@ fun FormattingScreen(
},
supportingContent = {
Text(stringResource(R.string.settings_precision_support))
- }
+ },
)
Slider(
@@ -190,13 +191,13 @@ fun FormattingScreen(
Modifier
.horizontalScroll(rememberScrollState())
.wrapContentWidth()
- .padding(start = 56.dp)
+ .padding(start = 56.dp),
) {
SegmentedButtonsRow {
SegmentedButton(
label = stringResource(R.string.settings_space),
onClick = { updateFormatterSymbols(Token.SPACE, uiState.formatterSymbols.fractional) },
- selected = uiState.formatterSymbols.grouping == Token.SPACE
+ selected = uiState.formatterSymbols.grouping == Token.SPACE,
)
SegmentedButton(
label = stringResource(R.string.settings_period),
@@ -214,10 +215,10 @@ fun FormattingScreen(
AnimatedVisibility(
visible = uiState.formatterSymbols.grouping == Token.SPACE,
enter = expandVertically() + fadeIn(),
- exit = shrinkVertically() + fadeOut()
+ exit = shrinkVertically() + fadeOut(),
) {
Column(
- modifier = Modifier.padding(start = 40.dp)
+ modifier = Modifier.padding(start = 40.dp),
) {
ListItem(
modifier = Modifier,
@@ -227,7 +228,7 @@ fun FormattingScreen(
Modifier
.horizontalScroll(rememberScrollState())
.wrapContentWidth()
- .padding(start = 16.dp)
+ .padding(start = 16.dp),
) {
SegmentedButtonsRow {
SegmentedButton(
@@ -250,30 +251,30 @@ fun FormattingScreen(
Icon(Icons.Default.EMobiledata, stringResource(R.string.settings_precision))
},
headlineContent = { Text(stringResource(R.string.settings_exponential_notation)) },
- supportingContent = { Text(stringResource(R.string.settings_exponential_notation_support)) }
+ supportingContent = { Text(stringResource(R.string.settings_exponential_notation_support)) },
)
Row(
Modifier
.horizontalScroll(rememberScrollState())
.wrapContentWidth()
- .padding(start = 56.dp)
+ .padding(start = 56.dp),
) {
SegmentedButtonsRow {
SegmentedButton(
label = stringResource(R.string.settings_auto),
onClick = { onOutputFormatChange(OutputFormat.ALLOW_ENGINEERING) },
- selected = OutputFormat.ALLOW_ENGINEERING == uiState.outputFormat
+ selected = OutputFormat.ALLOW_ENGINEERING == uiState.outputFormat,
)
SegmentedButton(
label = stringResource(R.string.enabled_label),
onClick = { onOutputFormatChange(OutputFormat.FORCE_ENGINEERING) },
- selected = OutputFormat.FORCE_ENGINEERING == uiState.outputFormat
+ selected = OutputFormat.FORCE_ENGINEERING == uiState.outputFormat,
)
SegmentedButton(
label = stringResource(R.string.disabled_label),
onClick = { onOutputFormatChange(OutputFormat.PLAIN) },
- selected = OutputFormat.PLAIN == uiState.outputFormat
+ selected = OutputFormat.PLAIN == uiState.outputFormat,
)
}
}
@@ -292,7 +293,7 @@ private fun PreviewFormattingScreen() {
uiState = FormattingUIState(
precision = 16,
outputFormat = OutputFormat.PLAIN,
- formatterSymbols = currentFormatterSymbols
+ formatterSymbols = currentFormatterSymbols,
),
onPrecisionChange = { currentPrecision = it },
updateFormatterSymbols = updateFormatterSymbols@{ grouping, fractional ->
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/formatting/FormattingViewModel.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/formatting/FormattingViewModel.kt
index 44062399..97b165f7 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/formatting/FormattingViewModel.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/formatting/FormattingViewModel.kt
@@ -30,15 +30,15 @@ import javax.inject.Inject
@HiltViewModel
class FormattingViewModel @Inject constructor(
- private val userPreferencesRepository: UserPreferencesRepository
+ private val userPreferencesRepository: UserPreferencesRepository,
) : ViewModel() {
- private val _prefs = userPreferencesRepository.formattingPrefs
+ private val prefs = userPreferencesRepository.formattingPrefs
- val uiState = _prefs.map { mainPrefs ->
+ val uiState = prefs.map { mainPrefs ->
FormattingUIState(
precision = mainPrefs.digitsPrecision,
outputFormat = mainPrefs.outputFormat,
- formatterSymbols = mainPrefs.formatterSymbols
+ formatterSymbols = mainPrefs.formatterSymbols,
)
}
.stateIn(viewModelScope, null)
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/language/LanguageScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/language/LanguageScreen.kt
index 7119ffc6..454f7d12 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/language/LanguageScreen.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/language/LanguageScreen.kt
@@ -36,8 +36,8 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.core.os.LocaleListCompat
import com.sadellie.unitto.core.base.R
-import com.sadellie.unitto.core.ui.common.NavigateUpButton
import com.sadellie.unitto.core.ui.common.ListItem
+import com.sadellie.unitto.core.ui.common.NavigateUpButton
import com.sadellie.unitto.core.ui.common.ScaffoldWithLargeTopBar
import com.sadellie.unitto.core.ui.openLink
import com.sadellie.unitto.feature.settings.components.AnnoyingBox
@@ -47,7 +47,7 @@ internal fun LanguageRoute(
navigateUp: () -> Unit,
) {
LanguageScreen(
- navigateUp = navigateUp
+ navigateUp = navigateUp,
)
}
@@ -61,8 +61,11 @@ private fun LanguageScreen(
}
fun changeLanguage(langKey: String) {
- val selectedLocale = if (langKey == "") LocaleListCompat.getEmptyLocaleList()
- else LocaleListCompat.forLanguageTags(langKey)
+ val selectedLocale = if (langKey == "") {
+ LocaleListCompat.getEmptyLocaleList()
+ } else {
+ LocaleListCompat.forLanguageTags(langKey)
+ }
AppCompatDelegate.setApplicationLocales(selectedLocale)
navigateUp()
@@ -70,7 +73,7 @@ private fun LanguageScreen(
ScaffoldWithLargeTopBar(
title = stringResource(R.string.settings_language),
- navigationIcon = { NavigateUpButton(navigateUp) }
+ navigationIcon = { NavigateUpButton(navigateUp) },
) { padding ->
LazyColumn(contentPadding = padding) {
item("translate") {
@@ -79,7 +82,7 @@ private fun LanguageScreen(
imageVector = Icons.Default.Translate,
imageVectorContentDescription = stringResource(R.string.settings_translate_app),
title = stringResource(R.string.settings_translate_app),
- support = stringResource(R.string.settings_translate_app_support)
+ support = stringResource(R.string.settings_translate_app_support),
) {
openLink(mContext, "https://poeditor.com/join/project/T4zjmoq8dx")
}
@@ -95,9 +98,9 @@ private fun LanguageScreen(
leadingContent = {
RadioButton(
selected = currentLangKey == key,
- onClick = { changeLanguage(key) }
+ onClick = { changeLanguage(key) },
)
- }
+ },
)
}
}
@@ -109,6 +112,6 @@ private fun LanguageScreen(
@Composable
fun LanguageScreenPreview() {
LanguageScreen(
- navigateUp = {}
+ navigateUp = {},
)
}
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/navigation/SettingsNavigation.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/navigation/SettingsNavigation.kt
index 3c6b1d85..ef593731 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/navigation/SettingsNavigation.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/navigation/SettingsNavigation.kt
@@ -41,19 +41,19 @@ import io.github.sadellie.themmo.ThemmoController
private val graph = DrawerItem.Settings.graph
private val start = DrawerItem.Settings.start
-internal const val displayRoute = "display_route"
-internal const val languageRoute = "language_route"
-internal const val startingScreenRoute = "starting_screen_route"
-internal const val unitsGroupRoute = "units_group_route"
-internal const val thirdPartyRoute = "third_party_route"
-internal const val aboutRoute = "about_route"
-internal const val formattingRoute = "formatting_route"
-internal const val calculatorSettingsRoute = "calculator_settings_route"
-internal const val converterSettingsRoute = "converter_settings_route"
-internal const val bouncingEmoji = "bouncing_emoji_route"
+internal const val DISPLAY_ROUTE = "display_route"
+internal const val LANGUAGE_ROUTE = "language_route"
+internal const val STARTING_SCREEN_ROUTE = "starting_screen_route"
+internal const val UNITS_GROUP_ROUTE = "units_group_route"
+internal const val THIRD_PARTY_ROUTE = "third_party_route"
+internal const val ABOUT_ROUTE = "about_route"
+internal const val FORMATTING_ROUTE = "formatting_route"
+internal const val CALCULATOR_SETTINGS_ROUTE = "calculator_settings_route"
+internal const val CONVERTER_SETTINGS_ROUTE = "converter_settings_route"
+internal const val BOUNCING_EMOJI_ROUTE = "bouncing_emoji_route"
fun NavController.navigateToUnitGroups() {
- navigate(unitsGroupRoute)
+ navigate(UNITS_GROUP_ROUTE)
}
fun NavGraphBuilder.settingGraph(
@@ -65,78 +65,78 @@ fun NavGraphBuilder.settingGraph(
startDestination = start,
route = graph,
deepLinks = listOf(
- navDeepLink { uriPattern = "app://com.sadellie.unitto/$graph" }
- )
+ navDeepLink { uriPattern = "app://com.sadellie.unitto/$graph" },
+ ),
) {
unittoComposable(start) {
SettingsRoute(
openDrawer = openDrawer,
- navControllerAction = navController::navigate
+ navControllerAction = navController::navigate,
)
}
- unittoStackedComposable(displayRoute) {
+ unittoStackedComposable(DISPLAY_ROUTE) {
DisplayRoute(
navigateUp = navController::navigateUp,
themmoController = themmoController,
- navigateToLanguages = { navController.navigate(languageRoute) }
+ navigateToLanguages = { navController.navigate(LANGUAGE_ROUTE) },
)
}
- unittoStackedComposable(languageRoute) {
+ unittoStackedComposable(LANGUAGE_ROUTE) {
LanguageRoute(
navigateUp = navController::navigateUp,
)
}
- unittoStackedComposable(startingScreenRoute) {
+ unittoStackedComposable(STARTING_SCREEN_ROUTE) {
StartingScreenRoute(
navigateUp = navController::navigateUp,
)
}
- unittoStackedComposable(formattingRoute) {
+ unittoStackedComposable(FORMATTING_ROUTE) {
FormattingRoute(
- navigateUpAction = navController::navigateUp
+ navigateUpAction = navController::navigateUp,
)
}
- unittoStackedComposable(calculatorSettingsRoute) {
+ unittoStackedComposable(CALCULATOR_SETTINGS_ROUTE) {
CalculatorSettingsRoute(
navigateUpAction = navController::navigateUp,
)
}
- unittoStackedComposable(converterSettingsRoute) {
+ unittoStackedComposable(CONVERTER_SETTINGS_ROUTE) {
ConverterSettingsRoute(
navigateUpAction = navController::navigateUp,
- navigateToUnitsGroup = { navController.navigate(unitsGroupRoute) }
+ navigateToUnitsGroup = { navController.navigate(UNITS_GROUP_ROUTE) },
)
}
- unittoStackedComposable(unitsGroupRoute) {
+ unittoStackedComposable(UNITS_GROUP_ROUTE) {
UnitGroupsRoute(
navigateUpAction = navController::navigateUp,
)
}
- unittoStackedComposable(aboutRoute) {
+ unittoStackedComposable(ABOUT_ROUTE) {
AboutRoute(
navigateUpAction = navController::navigateUp,
- navigateToThirdParty = { navController.navigate(thirdPartyRoute) },
- navigateToEasterEgg = { navController.navigate(bouncingEmoji) },
+ navigateToThirdParty = { navController.navigate(THIRD_PARTY_ROUTE) },
+ navigateToEasterEgg = { navController.navigate(BOUNCING_EMOJI_ROUTE) },
)
}
- unittoStackedComposable(thirdPartyRoute) {
+ unittoStackedComposable(THIRD_PARTY_ROUTE) {
ThirdPartyLicensesScreen(
navigateUpAction = navController::navigateUp,
)
}
- unittoStackedComposable(bouncingEmoji) {
+ unittoStackedComposable(BOUNCING_EMOJI_ROUTE) {
BouncingEmojiRoute(
- navigateUpAction = navController::navigateUp
+ navigateUpAction = navController::navigateUp,
)
}
}
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/startingscreen/StartingScreenScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/startingscreen/StartingScreenScreen.kt
index e8afadd5..59682168 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/startingscreen/StartingScreenScreen.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/startingscreen/StartingScreenScreen.kt
@@ -37,16 +37,16 @@ import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.sadellie.unitto.core.base.R
import com.sadellie.unitto.core.ui.addShortcut
-import com.sadellie.unitto.core.ui.common.NavigateUpButton
import com.sadellie.unitto.core.ui.common.EmptyScreen
import com.sadellie.unitto.core.ui.common.ListItem
+import com.sadellie.unitto.core.ui.common.NavigateUpButton
import com.sadellie.unitto.core.ui.common.ScaffoldWithLargeTopBar
import com.sadellie.unitto.core.ui.model.DrawerItem
@Composable
internal fun StartingScreenRoute(
viewModel: StartingScreenViewModel = hiltViewModel(),
- navigateUp: () -> Unit
+ navigateUp: () -> Unit,
) {
when (val prefs = viewModel.prefs.collectAsStateWithLifecycle().value) {
null -> EmptyScreen()
@@ -54,7 +54,7 @@ internal fun StartingScreenRoute(
StartingScreenScreen(
startingScreen = prefs.startingScreen,
updateStartingScreen = viewModel::updateStartingScreen,
- navigateUp = navigateUp
+ navigateUp = navigateUp,
)
}
}
@@ -64,13 +64,13 @@ internal fun StartingScreenRoute(
private fun StartingScreenScreen(
startingScreen: String,
updateStartingScreen: (String) -> Unit,
- navigateUp: () -> Unit
+ navigateUp: () -> Unit,
) {
val mContext = LocalContext.current
ScaffoldWithLargeTopBar(
title = stringResource(R.string.settings_starting_screen),
- navigationIcon = { NavigateUpButton(navigateUp) }
+ navigationIcon = { NavigateUpButton(navigateUp) },
) { padding ->
LazyColumn(contentPadding = padding) {
items(DrawerItem.main, { it.graph }) { destination ->
@@ -82,18 +82,18 @@ private fun StartingScreenScreen(
leadingContent = {
RadioButton(
selected = destination.graph == startingScreen,
- onClick = { updateStartingScreen(destination.graph) }
+ onClick = { updateStartingScreen(destination.graph) },
)
},
trailingContent = trail@{
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) return@trail
IconButton(
- onClick = { mContext.addShortcut(destination) }
+ onClick = { mContext.addShortcut(destination) },
) {
Icon(Icons.Default.AppShortcut, null)
}
- }
+ },
)
}
}
@@ -106,6 +106,6 @@ private fun StartingScreenPreview() {
StartingScreenScreen(
startingScreen = DrawerItem.Converter.graph,
updateStartingScreen = {},
- navigateUp = {}
+ navigateUp = {},
)
}
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/thirdparty/ThirdPartyLicensesScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/thirdparty/ThirdPartyLicensesScreen.kt
index 5336dd87..0d008c19 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/thirdparty/ThirdPartyLicensesScreen.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/thirdparty/ThirdPartyLicensesScreen.kt
@@ -50,13 +50,13 @@ import com.sadellie.unitto.data.licenses.ALL_THIRD_PARTY
@Stable
@Composable
internal fun ThirdPartyLicensesScreen(
- navigateUpAction: () -> Unit = {}
+ navigateUpAction: () -> Unit = {},
) {
val mContext = LocalContext.current
ScaffoldWithLargeTopBar(
title = stringResource(R.string.settings_third_party_licenses),
- navigationIcon = { NavigateUpButton(navigateUpAction) }
+ navigationIcon = { NavigateUpButton(navigateUpAction) },
) { padding ->
LazyColumn(
verticalArrangement = Arrangement.spacedBy(16.dp),
@@ -64,35 +64,35 @@ internal fun ThirdPartyLicensesScreen(
start = 16.dp,
end = 16.dp,
top = padding.calculateTopPadding(),
- bottom = 24.dp
- )
+ bottom = 24.dp,
+ ),
) {
items(ALL_THIRD_PARTY) {
OutlinedCard(
- Modifier.clickable { it.website?.let { url -> openLink(mContext, url) } }
+ Modifier.clickable { it.website?.let { url -> openLink(mContext, url) } },
) {
Column(
modifier = Modifier
.fillMaxWidth()
- .padding(12.dp)
+ .padding(12.dp),
) {
Text(
text = it.name,
- style = MaterialTheme.typography.titleLarge
+ style = MaterialTheme.typography.titleLarge,
)
Text(
modifier = Modifier.padding(top = 4.dp, bottom = 12.dp),
text = it.dev ?: "",
- style = MaterialTheme.typography.bodyLarge
+ style = MaterialTheme.typography.bodyLarge,
)
Text(
text = it.description ?: "",
- style = MaterialTheme.typography.bodyMedium
+ style = MaterialTheme.typography.bodyMedium,
)
Text(
modifier = Modifier.align(Alignment.End),
text = it.license ?: "",
- style = MaterialTheme.typography.labelLarge
+ style = MaterialTheme.typography.labelLarge,
)
}
}
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/unitgroups/UnitGroupsScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/unitgroups/UnitGroupsScreen.kt
index 0cb62042..d87d00d2 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/unitgroups/UnitGroupsScreen.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/unitgroups/UnitGroupsScreen.kt
@@ -90,7 +90,7 @@ private fun UnitGroupsScreen(
) {
ScaffoldWithLargeTopBar(
title = stringResource(R.string.settings_unit_groups_title),
- navigationIcon = { NavigateUpButton(navigateUpAction) }
+ navigationIcon = { NavigateUpButton(navigateUpAction) },
) { paddingValues ->
val copiedShownList = rememberUpdatedState(uiState.shownUnitGroups) as MutableState
val state = rememberReorderableLazyListState(
@@ -109,19 +109,19 @@ private fun UnitGroupsScreen(
onDragEnd = onDragEnd@{ from, to ->
if (from == to) return@onDragEnd
updateShownUnitGroups(copiedShownList.value)
- }
+ },
)
LazyColumn(
state = state.listState,
modifier = Modifier
.padding(paddingValues)
- .reorderable(state)
+ .reorderable(state),
) {
item(key = "enabled") {
Header(
text = stringResource(R.string.enabled_label),
- paddingValues = PaddingValues(horizontal = 16.dp, vertical = 12.dp)
+ paddingValues = PaddingValues(horizontal = 16.dp, vertical = 12.dp),
)
}
@@ -161,8 +161,8 @@ private fun UnitGroupsScreen(
modifier = Modifier.clickable(
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple(false),
- onClick = { removeShownUnitGroup(item) }
- )
+ onClick = { removeShownUnitGroup(item) },
+ ),
)
},
trailingContent = {
@@ -173,9 +173,9 @@ private fun UnitGroupsScreen(
.clickable(
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple(false),
- onClick = {}
+ onClick = {},
)
- .detectReorder(state)
+ .detectReorder(state),
)
},
)
@@ -186,7 +186,7 @@ private fun UnitGroupsScreen(
Header(
text = stringResource(R.string.disabled_label),
modifier = Modifier.animateItemPlacement(),
- paddingValues = PaddingValues(horizontal = 16.dp, vertical = 12.dp)
+ paddingValues = PaddingValues(horizontal = 16.dp, vertical = 12.dp),
)
}
@@ -205,10 +205,10 @@ private fun UnitGroupsScreen(
modifier = Modifier.clickable(
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple(false),
- onClick = { addShownUnitGroup(it) }
- )
+ onClick = { addShownUnitGroup(it) },
+ ),
)
- }
+ },
)
}
}
@@ -223,7 +223,7 @@ private fun PreviewUnitGroupsScreen() {
UnitGroupsScreen(
uiState = UnitGroupsUIState.Ready(
shownUnitGroups = shownUnitGroups,
- hiddenUnitGroups = UnitGroup.entries - shownUnitGroups.toSet()
+ hiddenUnitGroups = UnitGroup.entries - shownUnitGroups.toSet(),
),
navigateUpAction = {},
updateShownUnitGroups = {},
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/unitgroups/UnitGroupsUIState.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/unitgroups/UnitGroupsUIState.kt
index 08d1a1b1..7a12173a 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/unitgroups/UnitGroupsUIState.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/unitgroups/UnitGroupsUIState.kt
@@ -21,10 +21,10 @@ package com.sadellie.unitto.feature.settings.unitgroups
import com.sadellie.unitto.data.model.UnitGroup
internal sealed class UnitGroupsUIState {
- data object Loading: UnitGroupsUIState()
+ data object Loading : UnitGroupsUIState()
data class Ready(
val shownUnitGroups: List,
- val hiddenUnitGroups: List
- ): UnitGroupsUIState()
+ val hiddenUnitGroups: List,
+ ) : UnitGroupsUIState()
}
diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/unitgroups/UnitGroupsViewModel.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/unitgroups/UnitGroupsViewModel.kt
index bd8e8285..2b94f734 100644
--- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/unitgroups/UnitGroupsViewModel.kt
+++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/unitgroups/UnitGroupsViewModel.kt
@@ -37,7 +37,7 @@ internal class UnitGroupsViewModel @Inject constructor(
.map {
UnitGroupsUIState.Ready(
shownUnitGroups = it.shownUnitGroups,
- hiddenUnitGroups = UnitGroup.entries - it.shownUnitGroups.toSet()
+ hiddenUnitGroups = UnitGroup.entries - it.shownUnitGroups.toSet(),
)
}
.stateIn(viewModelScope, UnitGroupsUIState.Loading)
diff --git a/feature/timezone/src/androidTest/java/com/sadellie/unitto/feature/timezone/components/FavoriteTimeZonesTest.kt b/feature/timezone/src/androidTest/java/com/sadellie/unitto/feature/timezone/components/FavoriteTimeZonesTest.kt
index 54b9cec6..b16adf13 100644
--- a/feature/timezone/src/androidTest/java/com/sadellie/unitto/feature/timezone/components/FavoriteTimeZonesTest.kt
+++ b/feature/timezone/src/androidTest/java/com/sadellie/unitto/feature/timezone/components/FavoriteTimeZonesTest.kt
@@ -52,11 +52,11 @@ class FavoriteTimeZonesTest {
item = FavoriteZone(
timeZone = TimeZone.getTimeZone("Africa/Addis_Ababa"),
position = -1,
- label = "label text"
+ label = "label text",
),
fromTime = ZonedDateTime.parse(
"2023-05-01T14:00+03:00[Africa/Addis_Ababa]",
- DateTimeFormatter.ISO_ZONED_DATE_TIME
+ DateTimeFormatter.ISO_ZONED_DATE_TIME,
),
expanded = true,
onClick = {},
@@ -65,11 +65,10 @@ class FavoriteTimeZonesTest {
onLabelClick = {},
isDragging = false,
timeZoneNames = timeZoneNames,
- localeDisplayNames = localeDisplayNames
+ localeDisplayNames = localeDisplayNames,
)
}
onNodeWithText("11:00").assertExists()
}
-
-}
\ No newline at end of file
+}
diff --git a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/AddTimeZoneScreen.kt b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/AddTimeZoneScreen.kt
index 3579e923..11b3b393 100644
--- a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/AddTimeZoneScreen.kt
+++ b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/AddTimeZoneScreen.kt
@@ -47,10 +47,10 @@ import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.sadellie.unitto.core.base.R
import com.sadellie.unitto.core.ui.LocalLocale
-import com.sadellie.unitto.core.ui.common.SearchPlaceholder
import com.sadellie.unitto.core.ui.common.EmptyScreen
import com.sadellie.unitto.core.ui.common.ListItem
import com.sadellie.unitto.core.ui.common.SearchBar
+import com.sadellie.unitto.core.ui.common.SearchPlaceholder
import com.sadellie.unitto.core.ui.datetime.formatTime
import com.sadellie.unitto.core.ui.openLink
import com.sadellie.unitto.data.common.displayName
@@ -73,7 +73,7 @@ internal fun AddTimeZoneRoute(
navigateUp = navigateUp,
onQueryChange = viewModel::onQueryChange,
addToFavorites = viewModel::addToFavorites,
- userTime = userTime
+ userTime = userTime,
)
}
}
@@ -106,7 +106,7 @@ fun AddTimeZoneScreen(
Crossfade(
modifier = Modifier.padding(paddingValues),
targetState = uiState.list.isEmpty() and uiState.query.text.isNotEmpty(),
- label = "Placeholder"
+ label = "Placeholder",
) { empty ->
if (empty) {
SearchPlaceholder(
@@ -131,9 +131,9 @@ fun AddTimeZoneScreen(
text = it.timeZone
.offset(userTime)
.formatTime(locale, is24Hour),
- style = MaterialTheme.typography.headlineSmall
+ style = MaterialTheme.typography.headlineSmall,
)
- }
+ },
)
}
}
@@ -156,23 +156,23 @@ fun PreviewAddTimeZoneScreen() {
list = listOf(
"UTC",
"Africa/Addis_Ababa",
- "ACT"
+ "ACT",
).map {
val zone = TimeZone.getTimeZone(it)
SearchResultZone(
timeZone = zone,
region = zone.regionName(
timeZoneNames = timeZoneNames,
- localeDisplayNames = localeDisplayNames
+ localeDisplayNames = localeDisplayNames,
),
name = zone.displayName(locale),
- rank = 0
+ rank = 0,
)
- }
+ },
),
navigateUp = {},
onQueryChange = {},
addToFavorites = {},
- userTime = ZonedDateTime.now()
+ userTime = ZonedDateTime.now(),
)
}
diff --git a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/AddTimeZoneUIState.kt b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/AddTimeZoneUIState.kt
index 819d81e1..05ae1607 100644
--- a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/AddTimeZoneUIState.kt
+++ b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/AddTimeZoneUIState.kt
@@ -22,10 +22,10 @@ import androidx.compose.ui.text.input.TextFieldValue
import com.sadellie.unitto.data.model.timezone.SearchResultZone
sealed class AddTimeZoneUIState {
- data object Loading: AddTimeZoneUIState()
+ data object Loading : AddTimeZoneUIState()
data class Ready(
val query: TextFieldValue,
val list: List,
- ): AddTimeZoneUIState()
+ ) : AddTimeZoneUIState()
}
diff --git a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/AddTimeZoneViewModel.kt b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/AddTimeZoneViewModel.kt
index 8119e570..e263893e 100644
--- a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/AddTimeZoneViewModel.kt
+++ b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/AddTimeZoneViewModel.kt
@@ -42,14 +42,14 @@ import javax.inject.Inject
class AddTimeZoneViewModel @Inject constructor(
private val timezonesRepository: TimeZonesRepository,
) : ViewModel() {
- private val _query = MutableStateFlow(TextFieldValue())
- private val _result = MutableStateFlow(emptyList())
+ private val query = MutableStateFlow(TextFieldValue())
+ private val result = MutableStateFlow(emptyList())
val uiState = combine(
- _query,
- _result,
+ query,
+ result,
timezonesRepository.favoriteTimeZones,
- ) { query, result, _ ->
+ ) { query, result, _ ->
return@combine AddTimeZoneUIState.Ready(
query = query,
list = result,
@@ -57,12 +57,12 @@ class AddTimeZoneViewModel @Inject constructor(
}
.mapLatest { ui ->
viewModelScope.launch {
- _result.update {
+ result.update {
timezonesRepository.filter(
searchQuery = ui.query.text,
locale = ULocale.forLanguageTag(
- AppCompatDelegate.getApplicationLocales().toLanguageTags()
- )
+ AppCompatDelegate.getApplicationLocales().toLanguageTags(),
+ ),
)
}
}
@@ -70,7 +70,7 @@ class AddTimeZoneViewModel @Inject constructor(
}
.stateIn(viewModelScope, AddTimeZoneUIState.Loading)
- fun onQueryChange(textFieldValue: TextFieldValue) = _query.update { textFieldValue }
+ fun onQueryChange(textFieldValue: TextFieldValue) = query.update { textFieldValue }
fun addToFavorites(timeZone: TimeZone) = viewModelScope.launch {
timezonesRepository.addToFavorites(timeZone)
diff --git a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/TimeZoneExt.kt b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/TimeZoneExt.kt
index 2e723714..8e1dec62 100644
--- a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/TimeZoneExt.kt
+++ b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/TimeZoneExt.kt
@@ -28,6 +28,5 @@ val TimeZone.offsetSeconds
@RequiresApi(Build.VERSION_CODES.N)
get() = this.rawOffset / 1000L
-
@RequiresApi(Build.VERSION_CODES.N)
fun TimeZone.timeNow(): ZonedDateTime = ZonedDateTime.now(ZoneId.of(this.id, ZoneId.SHORT_IDS))
diff --git a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/TimeZoneScreen.kt b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/TimeZoneScreen.kt
index 32e3d496..2e5383d2 100644
--- a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/TimeZoneScreen.kt
+++ b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/TimeZoneScreen.kt
@@ -109,7 +109,7 @@ internal fun TimeZoneRoute(
delete = viewModel::delete,
updateLabel = viewModel::updateLabel,
selectTimeZone = viewModel::selectTimeZone,
- setDialogState = viewModel::setDialogState
+ setDialogState = viewModel::setDialogState,
)
}
}
@@ -132,7 +132,7 @@ private fun TimeZoneScreen(
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState())
var currentUserTime by remember(uiState.customUserTime) {
mutableStateOf(
- uiState.customUserTime ?: uiState.userTimeZone.timeNow()
+ uiState.customUserTime ?: uiState.userTimeZone.timeNow(),
)
}
val focusRequester = remember { FocusRequester() }
@@ -170,7 +170,7 @@ private fun TimeZoneScreen(
val targetInOldTz = uiState.favorites.getOrNull(to - 1) ?: return@onDragEnd
onDragEnd(tz, targetInOldTz.position)
- }
+ },
)
ScaffoldWithTopBar(
@@ -180,7 +180,7 @@ private fun TimeZoneScreen(
LargeFloatingActionButton(
onClick = {
navigateToAddTimeZone(currentUserTime)
- }
+ },
) {
Icon(
imageVector = Icons.Filled.Add,
@@ -199,7 +199,7 @@ private fun TimeZoneScreen(
.padding(padding)
.reorderable(state),
contentPadding = PaddingValues(start = 8.dp, end = 8.dp, bottom = 124.dp),
- verticalArrangement = Arrangement.spacedBy(8.dp)
+ verticalArrangement = Arrangement.spacedBy(8.dp),
) {
item("user time") {
UserTimeZone(
@@ -209,7 +209,7 @@ private fun TimeZoneScreen(
userTime = currentUserTime,
onClick = { setDialogState(TimeZoneDialogState.UserTimePicker(currentUserTime)) },
onResetClick = setCurrentTime,
- showReset = uiState.customUserTime != null
+ showReset = uiState.customUserTime != null,
)
}
@@ -269,11 +269,11 @@ private fun TimeZoneScreen(
setSelectedTime(
currentUserTime
.withHour(hour)
- .withMinute(minute)
+ .withMinute(minute),
)
setDialogState(TimeZoneDialogState.Nothing)
},
- onCancel = { setDialogState(TimeZoneDialogState.Nothing) }
+ onCancel = { setDialogState(TimeZoneDialogState.Nothing) },
)
}
@@ -287,12 +287,12 @@ private fun TimeZoneScreen(
.withHour(hour)
.withMinute(minute)
.minusSeconds(uiState.dialogState.timeZone.timeZone.offsetSeconds)
- .plusSeconds(uiState.userTimeZone.offsetSeconds)
+ .plusSeconds(uiState.userTimeZone.offsetSeconds),
)
setDialogState(TimeZoneDialogState.Nothing)
},
- onCancel = { setDialogState(TimeZoneDialogState.Nothing) }
+ onCancel = { setDialogState(TimeZoneDialogState.Nothing) },
)
}
@@ -301,8 +301,8 @@ private fun TimeZoneScreen(
mutableStateOf(
TextFieldValue(
text = uiState.dialogState.timeZone.label,
- selection = TextRange(uiState.dialogState.timeZone.label.length)
- )
+ selection = TextRange(uiState.dialogState.timeZone.label.length),
+ ),
)
}
AlertDialog(
@@ -311,7 +311,7 @@ private fun TimeZoneScreen(
OutlinedTextField(
value = tfv,
onValueChange = { tfv = it },
- modifier = Modifier.focusRequester(focusRequester)
+ modifier = Modifier.focusRequester(focusRequester),
)
LaunchedEffect(Unit) {
awaitFrame()
@@ -324,13 +324,13 @@ private fun TimeZoneScreen(
setDialogState(TimeZoneDialogState.Nothing)
updateLabel(uiState.dialogState.timeZone, tfv.text)
},
- content = { Text(text = stringResource(R.string.ok_label)) }
+ content = { Text(text = stringResource(R.string.ok_label)) },
)
},
dismissButton = {
TextButton(
onClick = { setDialogState(TimeZoneDialogState.Nothing) },
- content = { Text(text = stringResource(R.string.cancel_label)) }
+ content = { Text(text = stringResource(R.string.cancel_label)) },
)
},
onDismissRequest = { setDialogState(TimeZoneDialogState.Nothing) },
@@ -353,13 +353,13 @@ fun PreviewTimeZoneScreen() {
FavoriteZone(
timeZone = TimeZone.getTimeZone(tz),
position = index,
- label = if (tz == "ACT") "label text" else ""
+ label = if (tz == "ACT") "label text" else "",
)
},
customUserTime = null,
userTimeZone = TimeZone.getTimeZone("Africa/Addis_Ababa"),
selectedTimeZone = null,
- dialogState = TimeZoneDialogState.Nothing
+ dialogState = TimeZoneDialogState.Nothing,
),
openDrawer = {},
navigateToAddTimeZone = {},
diff --git a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/TimeZoneViewModel.kt b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/TimeZoneViewModel.kt
index a692f57b..935ed8dd 100644
--- a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/TimeZoneViewModel.kt
+++ b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/TimeZoneViewModel.kt
@@ -37,18 +37,18 @@ import javax.inject.Inject
@RequiresApi(Build.VERSION_CODES.N)
@HiltViewModel
internal class TimeZoneViewModel @Inject constructor(
- private val timezonesRepository: TimeZonesRepository
-): ViewModel() {
- private val _userTimeZone = MutableStateFlow(TimeZone.getDefault())
- private val _customUserTime = MutableStateFlow(null)
- private val _selectedTimeZone = MutableStateFlow(null)
- private val _dialogState = MutableStateFlow(TimeZoneDialogState.Nothing)
+ private val timezonesRepository: TimeZonesRepository,
+) : ViewModel() {
+ private val userTimeZone = MutableStateFlow(TimeZone.getDefault())
+ private val customUserTime = MutableStateFlow(null)
+ private val selectedTimeZone = MutableStateFlow(null)
+ private val dialogState = MutableStateFlow(TimeZoneDialogState.Nothing)
val uiState = combine(
- _customUserTime,
- _userTimeZone,
- _selectedTimeZone,
- _dialogState,
+ customUserTime,
+ userTimeZone,
+ selectedTimeZone,
+ dialogState,
timezonesRepository.favoriteTimeZones,
) { customUserTime, userTimeZone, selectedTimeZone, dialogState, favoriteTimeZones ->
return@combine TimeZoneUIState.Ready(
@@ -56,20 +56,20 @@ internal class TimeZoneViewModel @Inject constructor(
customUserTime = customUserTime,
userTimeZone = userTimeZone,
selectedTimeZone = selectedTimeZone,
- dialogState = dialogState
+ dialogState = dialogState,
)
}
.stateIn(viewModelScope, TimeZoneUIState.Loading)
- fun setCurrentTime() = _customUserTime.update { null }
+ fun setCurrentTime() = customUserTime.update { null }
- fun setSelectedTime(time: ZonedDateTime) = _customUserTime.update { time }
+ fun setSelectedTime(time: ZonedDateTime) = customUserTime.update { time }
- fun setDialogState(state: TimeZoneDialogState) = _dialogState.update { state }
+ fun setDialogState(state: TimeZoneDialogState) = dialogState.update { state }
fun onDragEnd(
tz: FavoriteZone,
- targetPosition: Int
+ targetPosition: Int,
) = viewModelScope.launch {
timezonesRepository.moveTimeZone(tz, targetPosition)
}
@@ -78,11 +78,11 @@ internal class TimeZoneViewModel @Inject constructor(
timezonesRepository.removeFromFavorites(timeZone)
}
- fun selectTimeZone(timeZone: FavoriteZone?) = _selectedTimeZone.update { timeZone }
+ fun selectTimeZone(timeZone: FavoriteZone?) = selectedTimeZone.update { timeZone }
fun updateLabel(
timeZone: FavoriteZone,
- label: String
+ label: String,
) = viewModelScope.launch {
timezonesRepository.updateLabel(timeZone = timeZone, label = label)
}
diff --git a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/components/FavoriteTimeZoneItem.kt b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/components/FavoriteTimeZoneItem.kt
index 2508d968..b292102b 100644
--- a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/components/FavoriteTimeZoneItem.kt
+++ b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/components/FavoriteTimeZoneItem.kt
@@ -99,7 +99,7 @@ internal fun FavoriteTimeZoneItem(
val animatedAlpha by animateFloatAsState(
label = "delete animation",
targetValue = if (deleteAnimationRunning) 0f else 1f,
- finishedListener = { if (it == 0f) onDelete() }
+ finishedListener = { if (it == 0f) onDelete() },
)
val regionName = remember(timeZoneNames, localeDisplayNames) {
@@ -114,19 +114,19 @@ internal fun FavoriteTimeZoneItem(
.graphicsLayer(alpha = animatedAlpha)
.then(modifier)
.clickable(enabled = !isDragging) { onClick() }
- .padding(vertical = 16.dp, horizontal = 12.dp)
+ .padding(vertical = 16.dp, horizontal = 12.dp),
) {
TimeZoneLabel(
label = item.label,
expanded = expanded,
- onLabelClick = onLabelClick
+ onLabelClick = onLabelClick,
)
Row(
modifier = Modifier
.padding()
.heightIn(min = 56.dp),
verticalAlignment = Alignment.CenterVertically,
- horizontalArrangement = Arrangement.spacedBy(4.dp)
+ horizontalArrangement = Arrangement.spacedBy(4.dp),
) {
Column(
modifier = Modifier
@@ -139,16 +139,16 @@ internal fun FavoriteTimeZoneItem(
style = MaterialTheme.typography.bodyLarge,
maxLines = 2,
overflow = TextOverflow.Ellipsis,
- color = MaterialTheme.colorScheme.onSurface
+ color = MaterialTheme.colorScheme.onSurface,
)
AnimatedVisibility(
visible = offsetTimeFormatted != null,
- label = "Nullable offset"
+ label = "Nullable offset",
) {
Text(
text = offsetTimeFormatted ?: "",
style = MaterialTheme.typography.bodyMedium,
- color = MaterialTheme.colorScheme.onSurfaceVariant
+ color = MaterialTheme.colorScheme.onSurfaceVariant,
)
}
}
@@ -157,12 +157,12 @@ internal fun FavoriteTimeZoneItem(
label = "Time change",
transitionSpec = {
fadeIn() togetherWith fadeOut() using (SizeTransform(clip = false))
- }
+ },
) { time ->
Text(
text = time,
style = MaterialTheme.typography.headlineMedium,
- color = MaterialTheme.colorScheme.onSurface
+ color = MaterialTheme.colorScheme.onSurface,
)
}
}
@@ -173,13 +173,13 @@ internal fun FavoriteTimeZoneItem(
title = stringResource(R.string.select_time_label),
icon = Icons.Outlined.Schedule,
contentDescription = stringResource(R.string.select_time_label),
- onClick = { onPrimaryClick(offsetTime) }
+ onClick = { onPrimaryClick(offsetTime) },
)
TimeZoneOption(
title = stringResource(R.string.delete_label),
icon = Icons.Outlined.Delete,
contentDescription = stringResource(R.string.delete_label),
- onClick = { deleteAnimationRunning = true }
+ onClick = { deleteAnimationRunning = true },
)
}
}
@@ -192,7 +192,7 @@ private fun TimeZoneOption(
icon: ImageVector,
contentDescription: String,
onClick: () -> Unit,
-) = ProvideColor(MaterialTheme.colorScheme.onSurfaceVariant){
+) = ProvideColor(MaterialTheme.colorScheme.onSurfaceVariant) {
Row(
modifier = Modifier
.clip(RoundedCornerShape(4.dp))
@@ -200,7 +200,7 @@ private fun TimeZoneOption(
.fillMaxWidth()
.padding(horizontal = 8.dp, vertical = 12.dp),
verticalAlignment = Alignment.CenterVertically,
- horizontalArrangement = Arrangement.spacedBy(8.dp)
+ horizontalArrangement = Arrangement.spacedBy(8.dp),
) {
Icon(
imageVector = icon,
@@ -219,7 +219,7 @@ private fun TimeZoneLabel(
onLabelClick: () -> Unit,
) = ProvideStyle(
color = MaterialTheme.colorScheme.onSurfaceVariant,
- textStyle = MaterialTheme.typography.bodyMedium
+ textStyle = MaterialTheme.typography.bodyMedium,
) {
AnimatedContent(
label = "Expand animation",
@@ -230,11 +230,12 @@ private fun TimeZoneLabel(
AnimatedVisibility(expanded) {
Row(
modifier = Modifier.height(24.dp),
- verticalAlignment = Alignment.CenterVertically
+ verticalAlignment = Alignment.CenterVertically,
) {
Icon(
imageVector = Icons.Default.Edit,
- contentDescription = null, // Not required because there is text next to it
+ // Not required because there is text next to it
+ contentDescription = null,
modifier = Modifier.padding(end = 8.dp),
)
Text(
@@ -245,12 +246,13 @@ private fun TimeZoneLabel(
} else {
Row(
modifier = Modifier.height(24.dp),
- verticalAlignment = Alignment.CenterVertically
+ verticalAlignment = Alignment.CenterVertically,
) {
AnimatedVisibility(visible = expanded) {
Icon(
imageVector = Icons.Default.Edit,
- contentDescription = null, // Not required because there is text next to it
+ // Not required because there is text next to it
+ contentDescription = null,
modifier = Modifier.padding(end = 8.dp),
)
}
@@ -277,7 +279,7 @@ private class FavoriteTimeZoneItemParameterProvider :
tz = FavoriteZone(
timeZone = TimeZone.getDefault(),
position = 1,
- label = ""
+ label = "",
),
),
FavoriteTimeZoneItemParameter(
@@ -285,7 +287,7 @@ private class FavoriteTimeZoneItemParameterProvider :
tz = FavoriteZone(
timeZone = TimeZone.getDefault(),
position = 1,
- label = "Some text"
+ label = "Some text",
),
),
FavoriteTimeZoneItemParameter(
@@ -293,7 +295,7 @@ private class FavoriteTimeZoneItemParameterProvider :
tz = FavoriteZone(
timeZone = TimeZone.getDefault(),
position = 1,
- label = ""
+ label = "",
),
),
FavoriteTimeZoneItemParameter(
@@ -301,9 +303,9 @@ private class FavoriteTimeZoneItemParameterProvider :
tz = FavoriteZone(
timeZone = TimeZone.getDefault(),
position = 1,
- label = "Some text"
+ label = "Some text",
),
- )
+ ),
)
}
@@ -324,7 +326,7 @@ private fun PreviewFavoriteTimeZones(
item = tz.tz,
fromTime = ZonedDateTime.parse(
"2023-05-01T14:00+03:00[Africa/Addis_Ababa]",
- DateTimeFormatter.ISO_ZONED_DATE_TIME
+ DateTimeFormatter.ISO_ZONED_DATE_TIME,
),
expanded = expanded,
onClick = { expanded = !expanded },
@@ -333,6 +335,6 @@ private fun PreviewFavoriteTimeZones(
onLabelClick = {},
isDragging = false,
timeZoneNames = timeZoneNames,
- localeDisplayNames = localeDisplayNames
+ localeDisplayNames = localeDisplayNames,
)
}
diff --git a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/components/UserTimeZone.kt b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/components/UserTimeZone.kt
index 6b9b7769..9cf36ecf 100644
--- a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/components/UserTimeZone.kt
+++ b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/components/UserTimeZone.kt
@@ -77,7 +77,7 @@ internal fun UserTimeZone(
onClick = onClick,
onLongClick = onResetClick,
cornerRadiusRange = 8.dp..32.dp,
- interactionSource = remember { MutableInteractionSource() }
+ interactionSource = remember { MutableInteractionSource() },
)
.background(MaterialTheme.colorScheme.tertiaryContainer)
.padding(horizontal = 16.dp, vertical = 12.dp),
@@ -86,11 +86,11 @@ internal fun UserTimeZone(
Text(
text = userTime.formatZone(locale),
style = MaterialTheme.typography.bodyLarge,
- color = MaterialTheme.colorScheme.onTertiaryContainer
+ color = MaterialTheme.colorScheme.onTertiaryContainer,
)
Row(
- verticalAlignment = Alignment.Bottom
+ verticalAlignment = Alignment.Bottom,
) {
SlidingText(userTime.formatTimeHours(locale, is24Hour))
TimeSeparator()
@@ -104,7 +104,7 @@ internal fun UserTimeZone(
Text(
text = userTime.formatDateDayMonthYear(locale),
style = MaterialTheme.typography.headlineMedium,
- color = MaterialTheme.colorScheme.onTertiaryContainer
+ color = MaterialTheme.colorScheme.onTertiaryContainer,
)
}
AnimatedVisibility(
@@ -132,16 +132,16 @@ private fun SlidingText(
label = "user time change",
transitionSpec = {
slideInVertically { height -> height } + fadeIn() togetherWith
- slideOutVertically { height -> -height } + fadeOut() using
- SizeTransform()
- }
+ slideOutVertically { height -> -height } + fadeOut() using
+ SizeTransform()
+ },
) { target ->
Text(
text = target,
style = MaterialTheme.typography.displayLarge,
color = MaterialTheme.colorScheme.onTertiaryContainer,
overflow = TextOverflow.Visible,
- maxLines = 1
+ maxLines = 1,
)
}
}
@@ -153,7 +153,7 @@ private fun TimeSeparator() {
style = MaterialTheme.typography.displayLarge,
color = MaterialTheme.colorScheme.onTertiaryContainer,
overflow = TextOverflow.Visible,
- maxLines = 1
+ maxLines = 1,
)
}
@@ -165,6 +165,6 @@ private fun PreviewUserTimeZone() {
userTime = ZonedDateTime.now(),
onClick = {},
onResetClick = {},
- showReset = true
+ showReset = true,
)
}
diff --git a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/navigation/TimeZoneNavigation.kt b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/navigation/TimeZoneNavigation.kt
index ff2a8dcf..bde0885d 100644
--- a/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/navigation/TimeZoneNavigation.kt
+++ b/feature/timezone/src/main/java/com/sadellie/unitto/feature/timezone/navigation/TimeZoneNavigation.kt
@@ -40,7 +40,7 @@ private const val ADD_TIME_ZONE_ROUTE = "ADD_TIME_ZONE_ROUTE"
private const val USER_TIME_ARG = "USER_TIME_ARG"
private fun NavController.navigateToAddTimeZone(
- userTime: ZonedDateTime
+ userTime: ZonedDateTime,
) {
val formattedTime = userTime
.format(DateTimeFormatter.ISO_ZONED_DATE_TIME)
@@ -57,8 +57,8 @@ fun NavGraphBuilder.timeZoneGraph(
startDestination = start,
route = graph,
deepLinks = listOf(
- navDeepLink { uriPattern = "app://com.sadellie.unitto/$graph" }
- )
+ navDeepLink { uriPattern = "app://com.sadellie.unitto/$graph" },
+ ),
) {
unittoComposable(start) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
@@ -68,7 +68,7 @@ fun NavGraphBuilder.timeZoneGraph(
TimeZoneRoute(
openDrawer = openDrawer,
- navigateToAddTimeZone = navController::navigateToAddTimeZone
+ navigateToAddTimeZone = navController::navigateToAddTimeZone,
)
}
@@ -79,8 +79,8 @@ fun NavGraphBuilder.timeZoneGraph(
defaultValue = null
nullable = true
type = NavType.StringType
- }
- )
+ },
+ ),
) { stackEntry ->
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
EmptyScreen()
@@ -95,7 +95,7 @@ fun NavGraphBuilder.timeZoneGraph(
AddTimeZoneRoute(
navigateUp = navController::navigateUp,
- userTime = userTime
+ userTime = userTime,
)
}
}
diff --git a/gradle/init.gradle.kts b/gradle/init.gradle.kts
new file mode 100644
index 00000000..f0ae9341
--- /dev/null
+++ b/gradle/init.gradle.kts
@@ -0,0 +1,66 @@
+/*
+ * Unitto is a calculator for Android
+ * Copyright (c) 2024 Elshan Agaev
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+val ktlintVersion = "1.0.1"
+
+initscript {
+ val spotlessVersion = "6.23.3"
+
+ repositories {
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath("com.diffplug.spotless:spotless-plugin-gradle:$spotlessVersion")
+ }
+}
+
+rootProject {
+ subprojects {
+ apply()
+ extensions.configure {
+ kotlin {
+ target("**/*.kt")
+ targetExclude(
+ "**/build/**/*.kt",
+ "**/com/sadellie/unitto/data/converter/collections/*.kt",
+ "**/com/sadellie/unitto/core/ui/common/icons/iconpack/*.kt",
+ )
+ ktlint(ktlintVersion).editorConfigOverride(
+ mapOf(
+ "android" to "true",
+ ),
+ )
+ toggleOffOn()
+ // TODO licenseHeaderFile(rootProject.file("spotless/copyright.kt"))
+ }
+ format("kts") {
+ target("**/*.kts")
+ targetExclude("**/build/**/*.kts")
+ // Look for the first line that doesn't have a block comment (assumed to be the license)
+ // TODO licenseHeaderFile(rootProject.file("spotless/copyright.kts"), "(^(?![\\/ ]\\*).*$)")
+ }
+ format("xml") {
+ target("**/*.xml")
+ targetExclude("**/build/**/*.xml")
+ // Look for the first XML tag that isn't a comment (