diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/MainScreen.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/MainScreen.kt index b8ce7d61..fefc8509 100644 --- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/MainScreen.kt +++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/MainScreen.kt @@ -40,11 +40,12 @@ import androidx.lifecycle.viewmodel.compose.viewModel import com.sadellie.unitto.core.ui.common.AnimatedTopBarText import com.sadellie.unitto.feature.R import com.sadellie.unitto.feature.converter.components.Keyboard +import com.sadellie.unitto.feature.converter.components.PortraitLandscape import com.sadellie.unitto.feature.converter.components.TopScreenPart import kotlinx.coroutines.delay @Composable -fun MainScreen( +internal fun MainScreen( navigateToLeftScreen: (String) -> Unit, navigateToRightScreen: (unitFrom: String, unitTo: String, input: String) -> Unit, navigateToSettings: () -> Unit, diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/Keyboard.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/Keyboard.kt index cf907400..e38c6d6d 100644 --- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/Keyboard.kt +++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/Keyboard.kt @@ -68,7 +68,7 @@ import com.sadellie.unitto.feature.converter.ConverterMode * @param converterMode */ @Composable -fun Keyboard( +internal fun Keyboard( modifier: Modifier = Modifier, addDigit: (String) -> Unit = {}, deleteDigit: () -> Unit = {}, diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/KeyboardButton.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/KeyboardButton.kt index 6228b487..0bfbb828 100644 --- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/KeyboardButton.kt +++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/KeyboardButton.kt @@ -47,7 +47,7 @@ import com.sadellie.unitto.core.ui.theme.NumbersTextStyleTitleLarge * @param onClick Action to perform when clicking this button. */ @Composable -fun KeyboardButton( +internal fun KeyboardButton( modifier: Modifier = Modifier, digit: String, isPrimary: Boolean = true, diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/MyTextField.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/MyTextField.kt index 23454d61..23bb6518 100644 --- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/MyTextField.kt +++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/MyTextField.kt @@ -64,7 +64,7 @@ import com.sadellie.unitto.feature.R * @param textToCopy Text that will be copied to clipboard when long-clicking. */ @Composable -fun MyTextField( +internal fun MyTextField( modifier: Modifier, primaryText: @Composable () -> String, secondaryText: String?, diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/PortraitLandscape.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/PortraitLandscape.kt similarity index 94% rename from feature/converter/src/main/java/com/sadellie/unitto/feature/converter/PortraitLandscape.kt rename to feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/PortraitLandscape.kt index aa76a7d8..331b5bc8 100644 --- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/PortraitLandscape.kt +++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/PortraitLandscape.kt @@ -1,6 +1,6 @@ /* * Unitto is a unit converter for Android - * Copyright (c) 2022 Elshan Agaev + * Copyright (c) 2022-2023 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 @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -package com.sadellie.unitto.feature.converter +package com.sadellie.unitto.feature.converter.components import android.content.res.Configuration import androidx.compose.foundation.layout.Arrangement @@ -36,7 +36,7 @@ import androidx.compose.ui.unit.dp * When Landscape mode will place [content1] and [content2] in a [Row]. */ @Composable -fun PortraitLandscape( +internal fun PortraitLandscape( modifier: Modifier, content1: @Composable (Modifier) -> Unit, content2: @Composable (Modifier) -> Unit, diff --git a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/TopScreen.kt b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/TopScreen.kt index 07c0d53b..0867f5cd 100644 --- a/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/TopScreen.kt +++ b/feature/converter/src/main/java/com/sadellie/unitto/feature/converter/components/TopScreen.kt @@ -64,7 +64,7 @@ import com.sadellie.unitto.feature.converter.ConverterMode * @param converterMode [ConverterMode.BASE] doesn't use formatting for input/output. */ @Composable -fun TopScreenPart( +internal fun TopScreenPart( modifier: Modifier, inputValue: String, calculatedValue: String?, 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 650d09d3..d8b4fa02 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 @@ -45,7 +45,7 @@ import com.sadellie.unitto.feature.R * @param label Text on button */ @Composable -fun UnitSelectionButton( +internal fun UnitSelectionButton( modifier: Modifier = Modifier, onClick: () -> Unit = {}, label: Int?, diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/AboutScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/AboutScreen.kt index 16a44f36..e2951078 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/AboutScreen.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/AboutScreen.kt @@ -46,7 +46,7 @@ import com.sadellie.unitto.feature.R import com.sadellie.unitto.feature.settings.components.AlertDialogWithList @Composable -fun AboutScreen( +internal fun AboutScreen( navigateUpAction: () -> Unit, navigateToThirdParty: () -> Unit ) { 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 fcb3dfd5..00eee5dc 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 @@ -56,7 +56,7 @@ import com.sadellie.unitto.feature.settings.navigation.themesRoute import com.sadellie.unitto.feature.settings.navigation.unitsGroupRoute @Composable -fun SettingsScreen( +internal fun SettingsScreen( viewModel: SettingsViewModel, navigateUpAction: () -> Unit, navControllerAction: (String) -> Unit diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThemesScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThemesScreen.kt index 4e821e40..f48c8922 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThemesScreen.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThemesScreen.kt @@ -31,14 +31,14 @@ import androidx.compose.material.icons.filled.Palette import androidx.compose.material3.Icon import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource -import com.sadellie.unitto.feature.R import com.sadellie.unitto.core.ui.common.UnittoLargeTopAppBar import com.sadellie.unitto.core.ui.common.UnittoListItem +import com.sadellie.unitto.feature.R import io.github.sadellie.themmo.ThemingMode import io.github.sadellie.themmo.ThemmoController @Composable -fun ThemesScreen( +internal fun ThemesScreen( navigateUpAction: () -> Unit = {}, themmoController: ThemmoController, viewModel: SettingsViewModel diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThirdPartyLicensesScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThirdPartyLicensesScreen.kt index c438f2da..7cdef788 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThirdPartyLicensesScreen.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/ThirdPartyLicensesScreen.kt @@ -48,7 +48,7 @@ import com.sadellie.unitto.feature.R */ @Stable @Composable -fun ThirdPartyLicensesScreen( +internal fun ThirdPartyLicensesScreen( navigateUpAction: () -> Unit = {} ) { val mContext = LocalContext.current diff --git a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/UnitGroupsScreen.kt b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/UnitGroupsScreen.kt index dd25bba7..b3cb4061 100644 --- a/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/UnitGroupsScreen.kt +++ b/feature/settings/src/main/java/com/sadellie/unitto/feature/settings/UnitGroupsScreen.kt @@ -47,9 +47,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import com.sadellie.unitto.feature.R import com.sadellie.unitto.core.ui.common.Header import com.sadellie.unitto.core.ui.common.UnittoLargeTopAppBar +import com.sadellie.unitto.feature.R import org.burnoutcrew.reorderable.ReorderableItem import org.burnoutcrew.reorderable.detectReorder import org.burnoutcrew.reorderable.detectReorderAfterLongPress @@ -57,7 +57,7 @@ import org.burnoutcrew.reorderable.rememberReorderableLazyListState import org.burnoutcrew.reorderable.reorderable @Composable -fun UnitGroupsScreen( +internal fun UnitGroupsScreen( viewModel: SettingsViewModel, navigateUpAction: () -> Unit ) { 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 2c0051b6..031b78d3 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 @@ -51,7 +51,7 @@ import com.sadellie.unitto.feature.settings.R * @param supportText Text above list of options */ @Composable -fun AlertDialogWithList( +internal fun AlertDialogWithList( title: String, listItems: Map = emptyMap(), selectedItemIndex: Int = 0, 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 3f9fd831..08d99546 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 @@ -32,11 +32,11 @@ import com.sadellie.unitto.feature.settings.UnitGroupsScreen import io.github.sadellie.themmo.ThemmoController const val settingsGraph = "settings_graph" -const val settingsRoute = "settings_route" -const val themesRoute = "themes_route" -const val unitsGroupRoute = "units_group_route" -const val thirdPartyRoute = "third_party_route" -const val aboutRoute = "about_route" +private const val settingsRoute = "settings_route" +internal const val themesRoute = "themes_route" +internal const val unitsGroupRoute = "units_group_route" +internal const val thirdPartyRoute = "third_party_route" +internal const val aboutRoute = "about_route" fun NavController.navigateToSettings() { navigate(settingsRoute) diff --git a/feature/unitslist/proguard-rules.pro b/feature/unitslist/proguard-rules.pro deleted file mode 100644 index 481bb434..00000000 --- a/feature/unitslist/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/SecondScreen.kt b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/LeftSideScreen.kt similarity index 59% rename from feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/SecondScreen.kt rename to feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/LeftSideScreen.kt index 185c1914..d6cf820e 100644 --- a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/SecondScreen.kt +++ b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/LeftSideScreen.kt @@ -1,6 +1,6 @@ /* * Unitto is a unit converter for Android - * Copyright (c) 2022-2023 Elshan Agaev + * Copyright (c) 2023 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 @@ -45,16 +45,12 @@ import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.sadellie.unitto.core.ui.Formatter import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.NumberBaseUnit -import com.sadellie.unitto.data.units.UnitGroup import com.sadellie.unitto.feature.unitslist.components.ChipsRow import com.sadellie.unitto.feature.unitslist.components.SearchBar import com.sadellie.unitto.feature.unitslist.components.SearchPlaceholder import com.sadellie.unitto.feature.unitslist.components.UnitGroupHeader import com.sadellie.unitto.feature.unitslist.components.UnitListItem -import java.math.BigDecimal /** * Left side screen. Unit to convert from. @@ -66,7 +62,7 @@ import java.math.BigDecimal * @param selectAction Action to perform when user clicks on [UnitListItem]. */ @Composable -fun LeftSideScreen( +internal fun LeftSideScreen( viewModel: SecondViewModel, currentUnitId: String, navigateUp: () -> Unit, @@ -154,110 +150,3 @@ fun LeftSideScreen( } } } - -/** - * Right side screen. Unit to convert to. - * - * @param viewModel [SecondViewModel]. - * @param currentUnit Currently selected [AbstractUnit]. - * @param navigateUp Action to navigate up. Called when user click back button. - * @param navigateToSettingsAction Action to perform when clicking settings chip at the end. - * @param selectAction Action to perform when user clicks on [UnitListItem]. - * @param inputValue Current input value (upper text field on MainScreen) - * @param unitFrom Unit we are converting from. Need it for conversion. - */ -@Composable -fun RightSideScreen( - viewModel: SecondViewModel, - currentUnit: String, - navigateUp: () -> Unit, - navigateToSettingsAction: () -> Unit, - selectAction: (AbstractUnit) -> Unit, - inputValue: String, - unitFrom: AbstractUnit -) { - val uiState = viewModel.mainFlow.collectAsStateWithLifecycle() - val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()) - val focusManager = LocalFocusManager.current - val inputAsBigDecimal: BigDecimal? = try { - inputValue.toBigDecimal() - } catch (e: NumberFormatException) { - null - } - - val convertMethod: (AbstractUnit) -> String = when { - unitFrom.group == UnitGroup.NUMBER_BASE -> {{ - convertForSecondaryNumberBase(inputValue, unitFrom as NumberBaseUnit, it as NumberBaseUnit) - }} - inputAsBigDecimal != null -> {{ - convertForSecondary(inputAsBigDecimal, unitFrom, it) - }} - else -> {{""}} - } - - Scaffold( - modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), - topBar = { - SearchBar( - title = stringResource(R.string.units_screen_to), - value = uiState.value.searchQuery, - onValueChange = { - viewModel.onSearchQueryChange(it, false) - }, - favoritesOnly = uiState.value.favoritesOnly, - favoriteAction = { - viewModel.toggleFavoritesOnly(false) - }, - navigateUpAction = navigateUp, - focusManager = focusManager, - scrollBehavior = scrollBehavior - ) - } - ) { paddingValues -> - Crossfade( - targetState = uiState.value.unitsToShow.isEmpty(), - modifier = Modifier.padding(paddingValues) - ) { noUnits -> - if (noUnits) { - SearchPlaceholder(navigateToSettingsAction = navigateToSettingsAction) - } else { - LazyColumn(Modifier.fillMaxSize()) { - uiState.value.unitsToShow.forEach { (unitGroup, listOfUnits) -> - item(unitGroup.name) { - UnitGroupHeader(Modifier.animateItemPlacement(), unitGroup) - } - items(listOfUnits, { it.unitId }) { unit -> - UnitListItem( - modifier = Modifier.animateItemPlacement(), - unit = unit, - isSelected = currentUnit == unit.unitId, - selectAction = { - selectAction(it) - viewModel.onSearchQueryChange("") - focusManager.clearFocus(true) - navigateUp() - }, - favoriteAction = { viewModel.favoriteUnit(it) }, - convertValue = convertMethod - ) - } - } - } - } - } - } -} - -internal fun convertForSecondary(inputValue: BigDecimal, unitFrom: AbstractUnit, unitTo: AbstractUnit): String { - return Formatter.format( - unitFrom.convert(unitTo, inputValue, 3).toPlainString() - ) + " " -} - -internal fun convertForSecondaryNumberBase(inputValue: String, unitFrom: NumberBaseUnit, unitTo: NumberBaseUnit): String { - return try { - unitFrom.convertToBase(inputValue, unitTo.base) + " " - } catch (e: NumberFormatException) { - "" - } -} diff --git a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/RightSideScreen.kt b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/RightSideScreen.kt new file mode 100644 index 00000000..0879cf81 --- /dev/null +++ b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/RightSideScreen.kt @@ -0,0 +1,150 @@ +/* + * Unitto is a unit converter for Android + * Copyright (c) 2022-2023 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 . + */ + +package com.sadellie.unitto.feature.unitslist + +import androidx.compose.animation.Crossfade +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.Scaffold +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.rememberTopAppBarState +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.platform.LocalFocusManager +import androidx.compose.ui.res.stringResource +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.sadellie.unitto.core.ui.Formatter +import com.sadellie.unitto.data.units.AbstractUnit +import com.sadellie.unitto.data.units.NumberBaseUnit +import com.sadellie.unitto.data.units.UnitGroup +import com.sadellie.unitto.feature.unitslist.components.SearchBar +import com.sadellie.unitto.feature.unitslist.components.SearchPlaceholder +import com.sadellie.unitto.feature.unitslist.components.UnitGroupHeader +import com.sadellie.unitto.feature.unitslist.components.UnitListItem +import java.math.BigDecimal + +/** + * Right side screen. Unit to convert to. + * + * @param viewModel [SecondViewModel]. + * @param currentUnit Currently selected [AbstractUnit]. + * @param navigateUp Action to navigate up. Called when user click back button. + * @param navigateToSettingsAction Action to perform when clicking settings chip at the end. + * @param selectAction Action to perform when user clicks on [UnitListItem]. + * @param inputValue Current input value (upper text field on MainScreen) + * @param unitFrom Unit we are converting from. Need it for conversion. + */ +@Composable +internal fun RightSideScreen( + viewModel: SecondViewModel, + currentUnit: String, + navigateUp: () -> Unit, + navigateToSettingsAction: () -> Unit, + selectAction: (AbstractUnit) -> Unit, + inputValue: String, + unitFrom: AbstractUnit +) { + val uiState = viewModel.mainFlow.collectAsStateWithLifecycle() + val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(rememberTopAppBarState()) + val focusManager = LocalFocusManager.current + val inputAsBigDecimal: BigDecimal? = try { + inputValue.toBigDecimal() + } catch (e: NumberFormatException) { + null + } + + val convertMethod: (AbstractUnit) -> String = when { + unitFrom.group == UnitGroup.NUMBER_BASE -> {{ + convertForSecondaryNumberBase(inputValue, unitFrom as NumberBaseUnit, it as NumberBaseUnit) + }} + inputAsBigDecimal != null -> {{ + convertForSecondary(inputAsBigDecimal, unitFrom, it) + }} + else -> {{""}} + } + + Scaffold( + modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), + topBar = { + SearchBar( + title = stringResource(R.string.units_screen_to), + value = uiState.value.searchQuery, + onValueChange = { + viewModel.onSearchQueryChange(it, false) + }, + favoritesOnly = uiState.value.favoritesOnly, + favoriteAction = { + viewModel.toggleFavoritesOnly(false) + }, + navigateUpAction = navigateUp, + focusManager = focusManager, + scrollBehavior = scrollBehavior + ) + } + ) { paddingValues -> + Crossfade( + targetState = uiState.value.unitsToShow.isEmpty(), + modifier = Modifier.padding(paddingValues) + ) { noUnits -> + if (noUnits) { + SearchPlaceholder(navigateToSettingsAction = navigateToSettingsAction) + } else { + LazyColumn(Modifier.fillMaxSize()) { + uiState.value.unitsToShow.forEach { (unitGroup, listOfUnits) -> + item(unitGroup.name) { + UnitGroupHeader(Modifier.animateItemPlacement(), unitGroup) + } + items(listOfUnits, { it.unitId }) { unit -> + UnitListItem( + modifier = Modifier.animateItemPlacement(), + unit = unit, + isSelected = currentUnit == unit.unitId, + selectAction = { + selectAction(it) + viewModel.onSearchQueryChange("") + focusManager.clearFocus(true) + navigateUp() + }, + favoriteAction = { viewModel.favoriteUnit(it) }, + convertValue = convertMethod + ) + } + } + } + } + } + } +} + +private fun convertForSecondary(inputValue: BigDecimal, unitFrom: AbstractUnit, unitTo: AbstractUnit): String { + return Formatter.format( + unitFrom.convert(unitTo, inputValue, 3).toPlainString() + ) + " " +} + +private fun convertForSecondaryNumberBase(inputValue: String, unitFrom: NumberBaseUnit, unitTo: NumberBaseUnit): String { + return try { + unitFrom.convertToBase(inputValue, unitTo.base) + " " + } catch (e: NumberFormatException) { + "" + } +} diff --git a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/ChipsRow.kt b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/ChipsRow.kt index bdea9837..23113845 100644 --- a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/ChipsRow.kt +++ b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/ChipsRow.kt @@ -60,7 +60,7 @@ import com.sadellie.unitto.feature.unitslist.R * @param lazyListState Used for animated scroll when entering unit selection screen */ @Composable -fun ChipsRow( +internal fun ChipsRow( items: List = ALL_UNIT_GROUPS, chosenUnitGroup: UnitGroup?, selectAction: (UnitGroup) -> Unit, diff --git a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/SearchBar.kt b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/SearchBar.kt index 58aa8af9..887f0543 100644 --- a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/SearchBar.kt +++ b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/SearchBar.kt @@ -77,7 +77,7 @@ import com.sadellie.unitto.feature.unitslist.R * @param scrollBehavior [TopAppBarScrollBehavior] that is used for collapsing and container color */ @Composable -fun SearchBar( +internal fun SearchBar( title: String, value: String, onValueChange: (String) -> Unit, diff --git a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/SearchPlaceholder.kt b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/SearchPlaceholder.kt index 9587afe8..0f8abbba 100644 --- a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/SearchPlaceholder.kt +++ b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/SearchPlaceholder.kt @@ -43,7 +43,7 @@ import com.sadellie.unitto.feature.unitslist.R * @param navigateToSettingsAction Action to perform when clicking open settings button. */ @Composable -fun SearchPlaceholder(navigateToSettingsAction: () -> Unit) { +internal fun SearchPlaceholder(navigateToSettingsAction: () -> Unit) { Column( modifier = Modifier .fillMaxWidth() diff --git a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/UnitGroupHeader.kt b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/UnitGroupHeader.kt index f142f193..09c28f4e 100644 --- a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/UnitGroupHeader.kt +++ b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/UnitGroupHeader.kt @@ -27,7 +27,7 @@ import com.sadellie.unitto.core.ui.common.Header import com.sadellie.unitto.data.units.UnitGroup @Composable -fun UnitGroupHeader(modifier: Modifier, unitGroup: UnitGroup) { +internal fun UnitGroupHeader(modifier: Modifier, unitGroup: UnitGroup) { Header( text = stringResource(unitGroup.res), modifier = modifier, diff --git a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/UnitListItem.kt b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/UnitListItem.kt index e8cb7ad5..32326745 100644 --- a/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/UnitListItem.kt +++ b/feature/unitslist/src/main/java/com/sadellie/unitto/feature/unitslist/components/UnitListItem.kt @@ -145,7 +145,7 @@ private fun BasicUnitListItem( * @param favoriteAction Function to mark unit as favorite. It's a toggle. */ @Composable -fun UnitListItem( +internal fun UnitListItem( modifier: Modifier, unit: AbstractUnit, isSelected: Boolean, @@ -170,7 +170,7 @@ fun UnitListItem( * @param convertValue Function to call that will convert this unit. */ @Composable -fun UnitListItem( +internal fun UnitListItem( modifier: Modifier, unit: AbstractUnit, isSelected: Boolean,