diff --git a/app/src/androidTest/java/com/sadellie/unitto/screen/SwapUnitsTest.kt b/app/src/androidTest/java/com/sadellie/unitto/screen/SwapUnitsTest.kt index 52c429e6..4519e309 100644 --- a/app/src/androidTest/java/com/sadellie/unitto/screen/SwapUnitsTest.kt +++ b/app/src/androidTest/java/com/sadellie/unitto/screen/SwapUnitsTest.kt @@ -7,7 +7,7 @@ import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.sadellie.unitto.data.preferences.DataStoreModule import com.sadellie.unitto.data.preferences.UserPreferencesRepository -import com.sadellie.unitto.data.units.ALL_UNITS +import com.sadellie.unitto.data.units.AllUnitsRepository import com.sadellie.unitto.data.units.MyUnitIDS import com.sadellie.unitto.data.units.database.MyBasedUnitDatabase import com.sadellie.unitto.data.units.database.MyBasedUnitsRepository @@ -22,6 +22,7 @@ import org.junit.runner.RunWith class SwapUnitsTest { private lateinit var viewModel: MainViewModel + private val allUnitsRepository = AllUnitsRepository() @Before fun setUp() { @@ -34,14 +35,15 @@ class SwapUnitsTest { MyBasedUnitDatabase::class.java ).build().myBasedUnitDao() ), - ApplicationProvider.getApplicationContext() + ApplicationProvider.getApplicationContext(), + allUnitsRepository ) } @Test fun swapUnits() { - val mile = ALL_UNITS.first { it.unitId == MyUnitIDS.mile } - val kilometer = ALL_UNITS.first { it.unitId == MyUnitIDS.kilometer } + val mile = allUnitsRepository.getById(MyUnitIDS.mile) + val kilometer = allUnitsRepository.getById(MyUnitIDS.kilometer) viewModel.changeUnitFrom(kilometer) viewModel.changeUnitTo(mile) @@ -50,4 +52,4 @@ class SwapUnitsTest { assertEquals(mile, viewModel.unitFrom) assertEquals(kilometer,viewModel.unitTo) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/sadellie/unitto/MainActivity.kt b/app/src/main/java/com/sadellie/unitto/MainActivity.kt index 65c7f2d0..89c56f06 100644 --- a/app/src/main/java/com/sadellie/unitto/MainActivity.kt +++ b/app/src/main/java/com/sadellie/unitto/MainActivity.kt @@ -4,26 +4,23 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.viewModels -import androidx.compose.foundation.layout.padding -import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier import androidx.navigation.NavHostController -import androidx.navigation.NavType import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController -import androidx.navigation.navArgument import com.sadellie.unitto.data.ABOUT_SCREEN -import com.sadellie.unitto.data.LEFT_BUTTON +import com.sadellie.unitto.data.LEFT_LIST_SCREEN import com.sadellie.unitto.data.MAIN_SCREEN -import com.sadellie.unitto.data.SECOND_SCREEN +import com.sadellie.unitto.data.RIGHT_LIST_SCREEN import com.sadellie.unitto.data.SETTINGS_SCREEN import com.sadellie.unitto.data.preferences.AppTheme import com.sadellie.unitto.screens.MainViewModel import com.sadellie.unitto.screens.about.AboutScreen import com.sadellie.unitto.screens.main.MainScreen -import com.sadellie.unitto.screens.second.SecondScreen +import com.sadellie.unitto.screens.second.LeftSideScreen +import com.sadellie.unitto.screens.second.RightSideScreen +import com.sadellie.unitto.screens.second.SecondViewModel import com.sadellie.unitto.screens.setttings.SettingsScreen import com.sadellie.unitto.ui.theme.UnittoTheme import dagger.hilt.android.AndroidEntryPoint @@ -32,6 +29,7 @@ import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint class MainActivity : ComponentActivity() { private val mainViewModel: MainViewModel by viewModels() + private val secondViewModel: SecondViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -47,7 +45,8 @@ class MainActivity : ComponentActivity() { ) { UnittoApp( navController = navController, - viewModel = mainViewModel, + mainViewModel = mainViewModel, + secondViewModel = secondViewModel ) } } @@ -63,45 +62,51 @@ class MainActivity : ComponentActivity() { @Composable fun UnittoApp( navController: NavHostController, - viewModel: MainViewModel, + mainViewModel: MainViewModel, + secondViewModel: SecondViewModel ) { - Scaffold { padding -> - NavHost( - modifier = Modifier.padding(padding), - navController = navController, - startDestination = MAIN_SCREEN - ) { + NavHost( + navController = navController, + startDestination = MAIN_SCREEN + ) { - composable(MAIN_SCREEN) { - MainScreen( - navControllerAction = { route -> navController.navigate(route) }, - viewModel = viewModel - ) - } + composable(MAIN_SCREEN) { + MainScreen( + navControllerAction = { route -> navController.navigate(route) }, + viewModel = mainViewModel + ) + } - composable( - "$SECOND_SCREEN/{$LEFT_BUTTON}", - arguments = listOf(navArgument(LEFT_BUTTON) { type = NavType.BoolType }) - ) { - val leftButton = it.arguments?.getBoolean(LEFT_BUTTON) ?: true - SecondScreen( - viewModel = viewModel, - leftSide = leftButton, - navigateUp = { navController.navigateUp() }, - ) - } + composable(LEFT_LIST_SCREEN) { + LeftSideScreen( + currentUnit = mainViewModel.unitFrom, + navigateUp = { navController.navigateUp() }, + selectAction = { mainViewModel.changeUnitFrom(it) }, + viewModel = secondViewModel + ) + } - composable(SETTINGS_SCREEN) { - SettingsScreen( - mainViewModel = viewModel, - navigateUpAction = { navController.navigateUp() }, - navControllerAction = { route -> navController.navigate(route) } - ) - } + composable(RIGHT_LIST_SCREEN) { + RightSideScreen( + currentUnit = mainViewModel.unitTo, + navigateUp = { navController.navigateUp() }, + selectAction = { mainViewModel.changeUnitTo(it) }, + viewModel = secondViewModel, + inputValue = mainViewModel.mainUIState.inputValue.toBigDecimal(), + unitFrom = mainViewModel.unitFrom + ) + } - composable(ABOUT_SCREEN) { - AboutScreen(navigateUpAction = { navController.navigateUp() }) - } + composable(SETTINGS_SCREEN) { + SettingsScreen( + mainViewModel = mainViewModel, + navigateUpAction = { navController.navigateUp() }, + navControllerAction = { route -> navController.navigate(route) } + ) + } + + composable(ABOUT_SCREEN) { + AboutScreen(navigateUpAction = { navController.navigateUp() }) } } } diff --git a/app/src/main/java/com/sadellie/unitto/data/NavRoutes.kt b/app/src/main/java/com/sadellie/unitto/data/NavRoutes.kt index d9263c0d..96ae7535 100644 --- a/app/src/main/java/com/sadellie/unitto/data/NavRoutes.kt +++ b/app/src/main/java/com/sadellie/unitto/data/NavRoutes.kt @@ -2,8 +2,8 @@ package com.sadellie.unitto.data const val MAIN_SCREEN = "MainScreen" -const val SECOND_SCREEN = "SecondScreen" -const val LEFT_BUTTON = "LeftButton" +const val LEFT_LIST_SCREEN = "LeftScreen" +const val RIGHT_LIST_SCREEN = "RightScreen" const val SETTINGS_SCREEN = "SettingsScreen" const val ABOUT_SCREEN = "AboutScreen" diff --git a/app/src/main/java/com/sadellie/unitto/data/units/AllUnits.kt b/app/src/main/java/com/sadellie/unitto/data/units/AllUnits.kt index adca575a..9636ef7f 100644 --- a/app/src/main/java/com/sadellie/unitto/data/units/AllUnits.kt +++ b/app/src/main/java/com/sadellie/unitto/data/units/AllUnits.kt @@ -1,38 +1,680 @@ package com.sadellie.unitto.data.units -import com.sadellie.unitto.data.units.collections.ACCELERATION_COLLECTION -import com.sadellie.unitto.data.units.collections.ANGLE_COLLECTION -import com.sadellie.unitto.data.units.collections.AREA_COLLECTION -import com.sadellie.unitto.data.units.collections.CURRENCY_COLLECTION -import com.sadellie.unitto.data.units.collections.DATA_COLLECTION -import com.sadellie.unitto.data.units.collections.DATA_TRANSFER_COLLECTION -import com.sadellie.unitto.data.units.collections.ENERGY_COLLECTION -import com.sadellie.unitto.data.units.collections.LENGTH_COLLECTION -import com.sadellie.unitto.data.units.collections.MASS_COLLECTION -import com.sadellie.unitto.data.units.collections.POWER_COLLECTION -import com.sadellie.unitto.data.units.collections.PRESSURE_COLLECTION -import com.sadellie.unitto.data.units.collections.SPEED_COLLECTION -import com.sadellie.unitto.data.units.collections.TEMPERATURE_COLLECTION -import com.sadellie.unitto.data.units.collections.TIME_COLLECTION -import com.sadellie.unitto.data.units.collections.VOLUME_COLLECTION +import com.sadellie.unitto.R +import com.sadellie.unitto.data.preferences.MAX_PRECISION +import com.sadellie.unitto.screens.setMinimumRequiredScale +import com.sadellie.unitto.screens.sortByLev +import java.math.BigDecimal +import java.math.RoundingMode +import javax.inject.Inject + /** - * This is a collection of all available units + * This repository provides access to all collection of units in the app. */ -val ALL_UNITS: List by lazy { - LENGTH_COLLECTION + - CURRENCY_COLLECTION + - MASS_COLLECTION + - TIME_COLLECTION + - TEMPERATURE_COLLECTION + - SPEED_COLLECTION + - AREA_COLLECTION + - VOLUME_COLLECTION + - DATA_COLLECTION + - PRESSURE_COLLECTION + - ACCELERATION_COLLECTION + - ENERGY_COLLECTION + - POWER_COLLECTION + - ANGLE_COLLECTION + - DATA_TRANSFER_COLLECTION +class AllUnitsRepository @Inject constructor() { + /** + * This is a collection of all available units. + */ + val allUnits: List by lazy { + mapOfCollections.values.flatten() + } + + /** + * Mapped [UnitGroup] to [List] of [AbstractUnit]s. + */ + private val mapOfCollections by lazy { + hashMapOf( + UnitGroup.LENGTH to lengthCollection, + UnitGroup.CURRENCY to currencyCollection, + UnitGroup.MASS to massCollection, + UnitGroup.SPEED to speedCollection, + UnitGroup.TEMPERATURE to temperatureCollection, + UnitGroup.AREA to areaCollection, + UnitGroup.TIME to timeCollection, + UnitGroup.VOLUME to volumeCollection, + UnitGroup.DATA to dataCollection, + UnitGroup.PRESSURE to pressureCollection, + UnitGroup.ACCELERATION to accelerationCollection, + UnitGroup.ENERGY to energyCollection, + UnitGroup.POWER to powerCollection, + UnitGroup.ANGLE to angleCollection, + UnitGroup.DATA_TRANSFER to dataTransferCollection + ) + } + + /** + * Get [AbstractUnit] by specified id from [MyUnitIDS]. + * + * @param unitId Unit id from [MyUnitIDS]. Don't use literal strings here. + * @return [AbstractUnit] from [AllUnitsRepository.allUnits] that has the given id. + * @throws NoSuchElementException If there is no [AbstractUnit] in [AllUnitsRepository.allUnits] + * that has the requested unitId. + */ + fun getById(unitId: String): AbstractUnit { + return allUnits.first { it.unitId == unitId } + } + + /** + * Looks for a collection of units of the given [UnitGroup]. + * + * @param unitGroup Requested [UnitGroup]. If you give it null, you will likely get null. + * @return List of [AbstractUnit]s. Will return null if the is no collection for the specified + * [UnitGroup]. + */ + fun getCollectionByGroup(unitGroup: UnitGroup?): List? { + return mapOfCollections[unitGroup] + } + + /** + * Filter [AllUnitsRepository.allUnits] and group them. + * + * @param hideBrokenCurrencies When set to True will remove [AbstractUnit]s that have + * [AbstractUnit.isEnabled] set to False, which means that [AbstractUnit] can not be used. + * @param chosenUnitGroup If provided will scope list to a specific [UnitGroup]. + * @param favoritesOnly When True will filter only [AbstractUnit]s with [AbstractUnit.isFavorite] + * set to True. + * @param searchQuery When not empty, will search by [AbstractUnit.renderedName] using [sortByLev]. + * @return Grouped by [UnitGroup] list of [AbstractUnit]s. + */ + fun filterUnits( + hideBrokenCurrencies: Boolean, + chosenUnitGroup: UnitGroup?, + favoritesOnly: Boolean, + searchQuery: String + ): Map> { + var basicFilteredUnits: Sequence = + getCollectionByGroup(unitGroup = chosenUnitGroup)?.asSequence() ?: allUnits.asSequence() + + if (favoritesOnly) { + basicFilteredUnits = basicFilteredUnits.filter { it.isFavorite } + } + if (hideBrokenCurrencies) { + basicFilteredUnits = basicFilteredUnits.filter { it.isEnabled } + } + val unitsToShow = if (searchQuery.isEmpty()) { + // Query is empty, i.e. we want to see all units and they need to be sorted by usage + basicFilteredUnits.sortedByDescending { it.counter } + } else { + // We are searching for a specific unit, we don't care about popularity + // We need search accuracy + basicFilteredUnits.sortByLev(searchQuery) + } + + return unitsToShow.groupBy { it.group } + } + + // NOTE: Ignore formatting below it's easier to read this lines as table + private val lengthCollection: List by lazy { + listOf( + MyUnit(MyUnitIDS.attometer, BigDecimal.valueOf(1.0), UnitGroup.LENGTH, R.string.attometer, R.string.attometer_short), + MyUnit(MyUnitIDS.nanometer, BigDecimal.valueOf(1.0E+9), UnitGroup.LENGTH, R.string.nanometer, R.string.nanometer_short), + MyUnit(MyUnitIDS.micrometer, BigDecimal.valueOf(1.0E+12), UnitGroup.LENGTH, R.string.micrometer, R.string.micrometer_short), + MyUnit(MyUnitIDS.millimeter, BigDecimal.valueOf(1.0E+15), UnitGroup.LENGTH, R.string.millimeter, R.string.millimeter_short), + MyUnit(MyUnitIDS.centimeter, BigDecimal.valueOf(1.0E+16), UnitGroup.LENGTH, R.string.centimeter, R.string.centimeter_short), + MyUnit(MyUnitIDS.decimeter, BigDecimal.valueOf(1.0E+17), UnitGroup.LENGTH, R.string.decimeter, R.string.decimeter_short), + MyUnit(MyUnitIDS.meter, BigDecimal.valueOf(1.0E+18), UnitGroup.LENGTH, R.string.meter, R.string.meter_short), + MyUnit(MyUnitIDS.kilometer, BigDecimal.valueOf(1.0E+21), UnitGroup.LENGTH, R.string.kilometer, R.string.kilometer_short), + MyUnit(MyUnitIDS.inch, BigDecimal.valueOf(25_400_000_000_000_000), UnitGroup.LENGTH, R.string.inch, R.string.inch_short), + MyUnit(MyUnitIDS.foot, BigDecimal.valueOf(304_800_000_000_002_200), UnitGroup.LENGTH, R.string.foot, R.string.foot_short), + MyUnit(MyUnitIDS.yard, BigDecimal.valueOf(914_400_000_000_006_400), UnitGroup.LENGTH, R.string.yard, R.string.yard_short), + MyUnit(MyUnitIDS.mile, BigDecimal.valueOf(1_609_344_000_000_010_500_000.0), UnitGroup.LENGTH, R.string.mile, R.string.mile_short), + MyUnit(MyUnitIDS.light_year, BigDecimal.valueOf(9.460730472E+33), UnitGroup.LENGTH, R.string.light_year, R.string.light_year_short), + MyUnit(MyUnitIDS.parsec, BigDecimal.valueOf(3.08567758149136E+34), UnitGroup.LENGTH, R.string.parsec, R.string.parsec_short), + MyUnit(MyUnitIDS.kiloparsec, BigDecimal.valueOf(3.08567758149136E+37), UnitGroup.LENGTH, R.string.kiloparsec, R.string.kiloparsec_short), + MyUnit(MyUnitIDS.megaparsec, BigDecimal.valueOf(3.08567758149136E+40), UnitGroup.LENGTH, R.string.megaparsec, R.string.megaparsec_short), + MyUnit(MyUnitIDS.mercury_equatorial_radius, BigDecimal.valueOf(2.4397E+24), UnitGroup.LENGTH, R.string.mercury_equatorial_radius, R.string.mercury_equatorial_radius_short), + MyUnit(MyUnitIDS.venus_equatorial_radius, BigDecimal.valueOf(6.0518E+24), UnitGroup.LENGTH, R.string.venus_equatorial_radius, R.string.venus_equatorial_radius_short), + MyUnit(MyUnitIDS.earth_equatorial_radius, BigDecimal.valueOf(6.371E+24), UnitGroup.LENGTH, R.string.earth_equatorial_radius, R.string.earth_equatorial_radius_short), + MyUnit(MyUnitIDS.mars_equatorial_radius, BigDecimal.valueOf(3.3895E+24), UnitGroup.LENGTH, R.string.mars_equatorial_radius, R.string.mars_equatorial_radius_short), + MyUnit(MyUnitIDS.jupiter_equatorial_radius, BigDecimal.valueOf(6.9911E+25), UnitGroup.LENGTH, R.string.jupiter_equatorial_radius, R.string.jupiter_equatorial_radius_short), + MyUnit(MyUnitIDS.saturn_equatorial_radius, BigDecimal.valueOf(5.8232E+25), UnitGroup.LENGTH, R.string.saturn_equatorial_radius, R.string.saturn_equatorial_radius_short), + MyUnit(MyUnitIDS.uranus_equatorial_radius, BigDecimal.valueOf(2.5362E+25), UnitGroup.LENGTH, R.string.uranus_equatorial_radius, R.string.uranus_equatorial_radius_short), + MyUnit(MyUnitIDS.neptune_equatorial_radius, BigDecimal.valueOf(2.4622E+25), UnitGroup.LENGTH, R.string.neptune_equatorial_radius, R.string.neptune_equatorial_radius_short), + MyUnit(MyUnitIDS.sun_equatorial_radius, BigDecimal.valueOf(6.95508E+26), UnitGroup.LENGTH, R.string.sun_equatorial_radius, R.string.sun_equatorial_radius_short), + ) + } + private val currencyCollection: List by lazy { + listOf( + MyUnit(MyUnitIDS.currency_1inch, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_1inch, R.string.currency_1inch_short), + MyUnit(MyUnitIDS.currency_ada, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ada, R.string.currency_ada_short), + MyUnit(MyUnitIDS.currency_aed, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_aed, R.string.currency_aed_short), + MyUnit(MyUnitIDS.currency_afn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_afn, R.string.currency_afn_short), + MyUnit(MyUnitIDS.currency_algo, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_algo, R.string.currency_algo_short), + MyUnit(MyUnitIDS.currency_all, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_all, R.string.currency_all_short), + MyUnit(MyUnitIDS.currency_amd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_amd, R.string.currency_amd_short), + MyUnit(MyUnitIDS.currency_ang, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ang, R.string.currency_ang_short), + MyUnit(MyUnitIDS.currency_aoa, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_aoa, R.string.currency_aoa_short), + MyUnit(MyUnitIDS.currency_ars, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ars, R.string.currency_ars_short), + MyUnit(MyUnitIDS.currency_atom, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_atom, R.string.currency_atom_short), + MyUnit(MyUnitIDS.currency_aud, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_aud, R.string.currency_aud_short), + MyUnit(MyUnitIDS.currency_avax, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_avax, R.string.currency_avax_short), + MyUnit(MyUnitIDS.currency_awg, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_awg, R.string.currency_awg_short), + MyUnit(MyUnitIDS.currency_azn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_azn, R.string.currency_azn_short), + MyUnit(MyUnitIDS.currency_bam, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bam, R.string.currency_bam_short), + MyUnit(MyUnitIDS.currency_bbd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bbd, R.string.currency_bbd_short), + MyUnit(MyUnitIDS.currency_bch, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bch, R.string.currency_bch_short), + MyUnit(MyUnitIDS.currency_bdt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bdt, R.string.currency_bdt_short), + MyUnit(MyUnitIDS.currency_bgn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bgn, R.string.currency_bgn_short), + MyUnit(MyUnitIDS.currency_bhd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bhd, R.string.currency_bhd_short), + MyUnit(MyUnitIDS.currency_bif, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bif, R.string.currency_bif_short), + MyUnit(MyUnitIDS.currency_bmd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bmd, R.string.currency_bmd_short), + MyUnit(MyUnitIDS.currency_bnb, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bnb, R.string.currency_bnb_short), + MyUnit(MyUnitIDS.currency_bnd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bnd, R.string.currency_bnd_short), + MyUnit(MyUnitIDS.currency_bob, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bob, R.string.currency_bob_short), + MyUnit(MyUnitIDS.currency_brl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_brl, R.string.currency_brl_short), + MyUnit(MyUnitIDS.currency_bsd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bsd, R.string.currency_bsd_short), + MyUnit(MyUnitIDS.currency_btc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_btc, R.string.currency_btc_short), + MyUnit(MyUnitIDS.currency_btn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_btn, R.string.currency_btn_short), + MyUnit(MyUnitIDS.currency_busd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_busd, R.string.currency_busd_short), + MyUnit(MyUnitIDS.currency_bwp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bwp, R.string.currency_bwp_short), + MyUnit(MyUnitIDS.currency_byn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_byn, R.string.currency_byn_short), + MyUnit(MyUnitIDS.currency_byr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_byr, R.string.currency_byr_short), + MyUnit(MyUnitIDS.currency_bzd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bzd, R.string.currency_bzd_short), + MyUnit(MyUnitIDS.currency_cad, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cad, R.string.currency_cad_short), + MyUnit(MyUnitIDS.currency_cdf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cdf, R.string.currency_cdf_short), + MyUnit(MyUnitIDS.currency_chf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_chf, R.string.currency_chf_short), + MyUnit(MyUnitIDS.currency_chz, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_chz, R.string.currency_chz_short), + MyUnit(MyUnitIDS.currency_clf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_clf, R.string.currency_clf_short), + MyUnit(MyUnitIDS.currency_clp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_clp, R.string.currency_clp_short), + MyUnit(MyUnitIDS.currency_cny, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cny, R.string.currency_cny_short), + MyUnit(MyUnitIDS.currency_cop, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cop, R.string.currency_cop_short), + MyUnit(MyUnitIDS.currency_crc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_crc, R.string.currency_crc_short), + MyUnit(MyUnitIDS.currency_cro, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cro, R.string.currency_cro_short), + MyUnit(MyUnitIDS.currency_cuc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cuc, R.string.currency_cuc_short), + MyUnit(MyUnitIDS.currency_cup, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cup, R.string.currency_cup_short), + MyUnit(MyUnitIDS.currency_cve, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cve, R.string.currency_cve_short), + MyUnit(MyUnitIDS.currency_czk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_czk, R.string.currency_czk_short), + MyUnit(MyUnitIDS.currency_dai, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_dai, R.string.currency_dai_short), + MyUnit(MyUnitIDS.currency_djf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_djf, R.string.currency_djf_short), + MyUnit(MyUnitIDS.currency_dkk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_dkk, R.string.currency_dkk_short), + MyUnit(MyUnitIDS.currency_doge, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_doge, R.string.currency_doge_short), + MyUnit(MyUnitIDS.currency_dop, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_dop, R.string.currency_dop_short), + MyUnit(MyUnitIDS.currency_dot, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_dot, R.string.currency_dot_short), + MyUnit(MyUnitIDS.currency_dzd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_dzd, R.string.currency_dzd_short), + MyUnit(MyUnitIDS.currency_egld, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_egld, R.string.currency_egld_short), + MyUnit(MyUnitIDS.currency_egp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_egp, R.string.currency_egp_short), + MyUnit(MyUnitIDS.currency_enj, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_enj, R.string.currency_enj_short), + MyUnit(MyUnitIDS.currency_ern, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ern, R.string.currency_ern_short), + MyUnit(MyUnitIDS.currency_etb, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_etb, R.string.currency_etb_short), + MyUnit(MyUnitIDS.currency_etc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_etc, R.string.currency_etc_short), + MyUnit(MyUnitIDS.currency_eth, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_eth, R.string.currency_eth_short), + MyUnit(MyUnitIDS.currency_eur, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_eur, R.string.currency_eur_short), + MyUnit(MyUnitIDS.currency_fil, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_fil, R.string.currency_fil_short), + MyUnit(MyUnitIDS.currency_fjd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_fjd, R.string.currency_fjd_short), + MyUnit(MyUnitIDS.currency_fkp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_fkp, R.string.currency_fkp_short), + MyUnit(MyUnitIDS.currency_ftt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ftt, R.string.currency_ftt_short), + MyUnit(MyUnitIDS.currency_gbp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gbp, R.string.currency_gbp_short), + MyUnit(MyUnitIDS.currency_gel, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gel, R.string.currency_gel_short), + MyUnit(MyUnitIDS.currency_ggp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ggp, R.string.currency_ggp_short), + MyUnit(MyUnitIDS.currency_ghs, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ghs, R.string.currency_ghs_short), + MyUnit(MyUnitIDS.currency_gip, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gip, R.string.currency_gip_short), + MyUnit(MyUnitIDS.currency_gmd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gmd, R.string.currency_gmd_short), + MyUnit(MyUnitIDS.currency_gnf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gnf, R.string.currency_gnf_short), + MyUnit(MyUnitIDS.currency_grt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_grt, R.string.currency_grt_short), + MyUnit(MyUnitIDS.currency_gtq, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gtq, R.string.currency_gtq_short), + MyUnit(MyUnitIDS.currency_gyd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gyd, R.string.currency_gyd_short), + MyUnit(MyUnitIDS.currency_hkd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_hkd, R.string.currency_hkd_short), + MyUnit(MyUnitIDS.currency_hnl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_hnl, R.string.currency_hnl_short), + MyUnit(MyUnitIDS.currency_hrk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_hrk, R.string.currency_hrk_short), + MyUnit(MyUnitIDS.currency_htg, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_htg, R.string.currency_htg_short), + MyUnit(MyUnitIDS.currency_huf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_huf, R.string.currency_huf_short), + MyUnit(MyUnitIDS.currency_icp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_icp, R.string.currency_icp_short), + MyUnit(MyUnitIDS.currency_idr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_idr, R.string.currency_idr_short), + MyUnit(MyUnitIDS.currency_ils, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ils, R.string.currency_ils_short), + MyUnit(MyUnitIDS.currency_imp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_imp, R.string.currency_imp_short), + MyUnit(MyUnitIDS.currency_inj, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_inj, R.string.currency_inj_short), + MyUnit(MyUnitIDS.currency_inr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_inr, R.string.currency_inr_short), + MyUnit(MyUnitIDS.currency_iqd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_iqd, R.string.currency_iqd_short), + MyUnit(MyUnitIDS.currency_irr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_irr, R.string.currency_irr_short), + MyUnit(MyUnitIDS.currency_isk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_isk, R.string.currency_isk_short), + MyUnit(MyUnitIDS.currency_jep, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_jep, R.string.currency_jep_short), + MyUnit(MyUnitIDS.currency_jmd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_jmd, R.string.currency_jmd_short), + MyUnit(MyUnitIDS.currency_jod, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_jod, R.string.currency_jod_short), + MyUnit(MyUnitIDS.currency_jpy, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_jpy, R.string.currency_jpy_short), + MyUnit(MyUnitIDS.currency_kes, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kes, R.string.currency_kes_short), + MyUnit(MyUnitIDS.currency_kgs, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kgs, R.string.currency_kgs_short), + MyUnit(MyUnitIDS.currency_khr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_khr, R.string.currency_khr_short), + MyUnit(MyUnitIDS.currency_kmf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kmf, R.string.currency_kmf_short), + MyUnit(MyUnitIDS.currency_kpw, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kpw, R.string.currency_kpw_short), + MyUnit(MyUnitIDS.currency_krw, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_krw, R.string.currency_krw_short), + MyUnit(MyUnitIDS.currency_ksm, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ksm, R.string.currency_ksm_short), + MyUnit(MyUnitIDS.currency_kwd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kwd, R.string.currency_kwd_short), + MyUnit(MyUnitIDS.currency_kyd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kyd, R.string.currency_kyd_short), + MyUnit(MyUnitIDS.currency_kzt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kzt, R.string.currency_kzt_short), + MyUnit(MyUnitIDS.currency_lak, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lak, R.string.currency_lak_short), + MyUnit(MyUnitIDS.currency_lbp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lbp, R.string.currency_lbp_short), + MyUnit(MyUnitIDS.currency_link, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_link, R.string.currency_link_short), + MyUnit(MyUnitIDS.currency_lkr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lkr, R.string.currency_lkr_short), + MyUnit(MyUnitIDS.currency_lrd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lrd, R.string.currency_lrd_short), + MyUnit(MyUnitIDS.currency_lsl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lsl, R.string.currency_lsl_short), + MyUnit(MyUnitIDS.currency_ltc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ltc, R.string.currency_ltc_short), + MyUnit(MyUnitIDS.currency_ltl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ltl, R.string.currency_ltl_short), + MyUnit(MyUnitIDS.currency_luna, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_luna, R.string.currency_luna_short), + MyUnit(MyUnitIDS.currency_lvl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lvl, R.string.currency_lvl_short), + MyUnit(MyUnitIDS.currency_lyd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lyd, R.string.currency_lyd_short), + MyUnit(MyUnitIDS.currency_mad, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mad, R.string.currency_mad_short), + MyUnit(MyUnitIDS.currency_matic, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_matic, R.string.currency_matic_short), + MyUnit(MyUnitIDS.currency_mdl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mdl, R.string.currency_mdl_short), + MyUnit(MyUnitIDS.currency_mga, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mga, R.string.currency_mga_short), + MyUnit(MyUnitIDS.currency_mkd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mkd, R.string.currency_mkd_short), + MyUnit(MyUnitIDS.currency_mmk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mmk, R.string.currency_mmk_short), + MyUnit(MyUnitIDS.currency_mnt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mnt, R.string.currency_mnt_short), + MyUnit(MyUnitIDS.currency_mop, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mop, R.string.currency_mop_short), + MyUnit(MyUnitIDS.currency_mro, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mro, R.string.currency_mro_short), + MyUnit(MyUnitIDS.currency_mur, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mur, R.string.currency_mur_short), + MyUnit(MyUnitIDS.currency_mvr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mvr, R.string.currency_mvr_short), + MyUnit(MyUnitIDS.currency_mwk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mwk, R.string.currency_mwk_short), + MyUnit(MyUnitIDS.currency_mxn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mxn, R.string.currency_mxn_short), + MyUnit(MyUnitIDS.currency_myr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_myr, R.string.currency_myr_short), + MyUnit(MyUnitIDS.currency_mzn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mzn, R.string.currency_mzn_short), + MyUnit(MyUnitIDS.currency_nad, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_nad, R.string.currency_nad_short), + MyUnit(MyUnitIDS.currency_ngn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ngn, R.string.currency_ngn_short), + MyUnit(MyUnitIDS.currency_nio, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_nio, R.string.currency_nio_short), + MyUnit(MyUnitIDS.currency_nok, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_nok, R.string.currency_nok_short), + MyUnit(MyUnitIDS.currency_npr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_npr, R.string.currency_npr_short), + MyUnit(MyUnitIDS.currency_nzd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_nzd, R.string.currency_nzd_short), + MyUnit(MyUnitIDS.currency_omr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_omr, R.string.currency_omr_short), + MyUnit(MyUnitIDS.currency_one, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_one, R.string.currency_one_short), + MyUnit(MyUnitIDS.currency_pab, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pab, R.string.currency_pab_short), + MyUnit(MyUnitIDS.currency_pen, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pen, R.string.currency_pen_short), + MyUnit(MyUnitIDS.currency_pgk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pgk, R.string.currency_pgk_short), + MyUnit(MyUnitIDS.currency_php, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_php, R.string.currency_php_short), + MyUnit(MyUnitIDS.currency_pkr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pkr, R.string.currency_pkr_short), + MyUnit(MyUnitIDS.currency_pln, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pln, R.string.currency_pln_short), + MyUnit(MyUnitIDS.currency_pyg, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pyg, R.string.currency_pyg_short), + MyUnit(MyUnitIDS.currency_qar, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_qar, R.string.currency_qar_short), + MyUnit(MyUnitIDS.currency_ron, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ron, R.string.currency_ron_short), + MyUnit(MyUnitIDS.currency_rsd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_rsd, R.string.currency_rsd_short), + MyUnit(MyUnitIDS.currency_rub, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_rub, R.string.currency_rub_short), + MyUnit(MyUnitIDS.currency_rwf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_rwf, R.string.currency_rwf_short), + MyUnit(MyUnitIDS.currency_sar, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sar, R.string.currency_sar_short), + MyUnit(MyUnitIDS.currency_sbd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sbd, R.string.currency_sbd_short), + MyUnit(MyUnitIDS.currency_scr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_scr, R.string.currency_scr_short), + MyUnit(MyUnitIDS.currency_sdg, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sdg, R.string.currency_sdg_short), + MyUnit(MyUnitIDS.currency_sek, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sek, R.string.currency_sek_short), + MyUnit(MyUnitIDS.currency_sgd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sgd, R.string.currency_sgd_short), + MyUnit(MyUnitIDS.currency_shib, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_shib, R.string.currency_shib_short), + MyUnit(MyUnitIDS.currency_shp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_shp, R.string.currency_shp_short), + MyUnit(MyUnitIDS.currency_sll, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sll, R.string.currency_sll_short), + MyUnit(MyUnitIDS.currency_sol, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sol, R.string.currency_sol_short), + MyUnit(MyUnitIDS.currency_sos, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sos, R.string.currency_sos_short), + MyUnit(MyUnitIDS.currency_srd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_srd, R.string.currency_srd_short), + MyUnit(MyUnitIDS.currency_std, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_std, R.string.currency_std_short), + MyUnit(MyUnitIDS.currency_svc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_svc, R.string.currency_svc_short), + MyUnit(MyUnitIDS.currency_syp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_syp, R.string.currency_syp_short), + MyUnit(MyUnitIDS.currency_szl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_szl, R.string.currency_szl_short), + MyUnit(MyUnitIDS.currency_thb, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_thb, R.string.currency_thb_short), + MyUnit(MyUnitIDS.currency_theta, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_theta, R.string.currency_theta_short), + MyUnit(MyUnitIDS.currency_tjs, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_tjs, R.string.currency_tjs_short), + MyUnit(MyUnitIDS.currency_tmt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_tmt, R.string.currency_tmt_short), + MyUnit(MyUnitIDS.currency_tnd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_tnd, R.string.currency_tnd_short), + MyUnit(MyUnitIDS.currency_top, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_top, R.string.currency_top_short), + MyUnit(MyUnitIDS.currency_trx, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_trx, R.string.currency_trx_short), + MyUnit(MyUnitIDS.currency_try, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_try, R.string.currency_try_short), + MyUnit(MyUnitIDS.currency_ttd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ttd, R.string.currency_ttd_short), + MyUnit(MyUnitIDS.currency_twd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_twd, R.string.currency_twd_short), + MyUnit(MyUnitIDS.currency_tzs, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_tzs, R.string.currency_tzs_short), + MyUnit(MyUnitIDS.currency_uah, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_uah, R.string.currency_uah_short), + MyUnit(MyUnitIDS.currency_ugx, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ugx, R.string.currency_ugx_short), + MyUnit(MyUnitIDS.currency_uni, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_uni, R.string.currency_uni_short), + MyUnit(MyUnitIDS.currency_usd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_usd, R.string.currency_usd_short), + MyUnit(MyUnitIDS.currency_usdc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_usdc, R.string.currency_usdc_short), + MyUnit(MyUnitIDS.currency_usdt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_usdt, R.string.currency_usdt_short), + MyUnit(MyUnitIDS.currency_uyu, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_uyu, R.string.currency_uyu_short), + MyUnit(MyUnitIDS.currency_uzs, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_uzs, R.string.currency_uzs_short), + MyUnit(MyUnitIDS.currency_vef, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_vef, R.string.currency_vef_short), + MyUnit(MyUnitIDS.currency_vet, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_vet, R.string.currency_vet_short), + MyUnit(MyUnitIDS.currency_vnd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_vnd, R.string.currency_vnd_short), + MyUnit(MyUnitIDS.currency_vuv, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_vuv, R.string.currency_vuv_short), + MyUnit(MyUnitIDS.currency_wbtc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_wbtc, R.string.currency_wbtc_short), + MyUnit(MyUnitIDS.currency_wst, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_wst, R.string.currency_wst_short), + MyUnit(MyUnitIDS.currency_xaf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xaf, R.string.currency_xaf_short), + MyUnit(MyUnitIDS.currency_xag, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xag, R.string.currency_xag_short), + MyUnit(MyUnitIDS.currency_xau, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xau, R.string.currency_xau_short), + MyUnit(MyUnitIDS.currency_xcd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xcd, R.string.currency_xcd_short), + MyUnit(MyUnitIDS.currency_xdr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xdr, R.string.currency_xdr_short), + MyUnit(MyUnitIDS.currency_xlm, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xlm, R.string.currency_xlm_short), + MyUnit(MyUnitIDS.currency_xmr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xmr, R.string.currency_xmr_short), + MyUnit(MyUnitIDS.currency_xof, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xof, R.string.currency_xof_short), + MyUnit(MyUnitIDS.currency_xpf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xpf, R.string.currency_xpf_short), + MyUnit(MyUnitIDS.currency_xrp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xrp, R.string.currency_xrp_short), + MyUnit(MyUnitIDS.currency_yer, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_yer, R.string.currency_yer_short), + MyUnit(MyUnitIDS.currency_zar, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_zar, R.string.currency_zar_short), + MyUnit(MyUnitIDS.currency_zmk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_zmk, R.string.currency_zmk_short), + MyUnit(MyUnitIDS.currency_zmw, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_zmw, R.string.currency_zmw_short), + MyUnit(MyUnitIDS.currency_zwl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_zwl, R.string.currency_zwl_short), + ) + } + private val massCollection: List by lazy { + listOf( + MyUnit(MyUnitIDS.electron_mass_rest, BigDecimal.valueOf(9.1093897E-28), UnitGroup.MASS, R.string.electron_mass_rest, R.string.electron_mass_rest_short), + MyUnit(MyUnitIDS.atomic_mass_unit, BigDecimal.valueOf(1.6605402E-24), UnitGroup.MASS, R.string.atomic_mass_unit, R.string.atomic_mass_unit_short), + MyUnit(MyUnitIDS.milligram, BigDecimal.valueOf(1E-3), UnitGroup.MASS, R.string.milligram, R.string.milligram_short), + MyUnit(MyUnitIDS.gram, BigDecimal.valueOf(1), UnitGroup.MASS, R.string.gram, R.string.gram_short), + MyUnit(MyUnitIDS.kilogram, BigDecimal.valueOf(1E+3), UnitGroup.MASS, R.string.kilogram, R.string.kilogram_short), + MyUnit(MyUnitIDS.metric_ton, BigDecimal.valueOf(1E+6), UnitGroup.MASS, R.string.metric_ton, R.string.metric_ton_short), + MyUnit(MyUnitIDS.imperial_ton, BigDecimal.valueOf(1016046.9088), UnitGroup.MASS, R.string.imperial_ton, R.string.imperial_ton_short), + MyUnit(MyUnitIDS.ounce, BigDecimal.valueOf(28.349523125), UnitGroup.MASS, R.string.ounce, R.string.ounce_short), + MyUnit(MyUnitIDS.carat, BigDecimal.valueOf(0.2), UnitGroup.MASS, R.string.carat, R.string.carat_short), + MyUnit(MyUnitIDS.pound, BigDecimal.valueOf(453.59237), UnitGroup.MASS, R.string.pound, R.string.pound_short), + MyUnit(MyUnitIDS.mercury_mass, BigDecimal.valueOf(3.30104E+26), UnitGroup.MASS, R.string.mercury_mass, R.string.mercury_mass_short), + MyUnit(MyUnitIDS.venus_mass, BigDecimal.valueOf(4.86732E+27), UnitGroup.MASS, R.string.venus_mass, R.string.venus_mass_short), + MyUnit(MyUnitIDS.earth_mass, BigDecimal.valueOf(5.97219E+27), UnitGroup.MASS, R.string.earth_mass, R.string.earth_mass_short), + MyUnit(MyUnitIDS.mars_mass, BigDecimal.valueOf(6.41693E+26), UnitGroup.MASS, R.string.mars_mass, R.string.mars_mass_short), + MyUnit(MyUnitIDS.jupiter_mass, BigDecimal.valueOf(1.89813E+30), UnitGroup.MASS, R.string.jupiter_mass, R.string.jupiter_mass_short), + MyUnit(MyUnitIDS.saturn_mass, BigDecimal.valueOf(5.68319E+29), UnitGroup.MASS, R.string.saturn_mass, R.string.saturn_mass_short), + MyUnit(MyUnitIDS.uranus_mass, BigDecimal.valueOf(8.68103E+28), UnitGroup.MASS, R.string.uranus_mass, R.string.uranus_mass_short), + MyUnit(MyUnitIDS.neptune_mass, BigDecimal.valueOf(1.0241E+29), UnitGroup.MASS, R.string.neptune_mass, R.string.neptune_mass_short), + MyUnit(MyUnitIDS.sun_mass, BigDecimal.valueOf(1.9891E+33), UnitGroup.MASS, R.string.sun_mass, R.string.sun_mass_short), + ) + } + private val speedCollection: List by lazy { + listOf( + MyUnit(MyUnitIDS.millimeter_per_hour, BigDecimal.valueOf(1), UnitGroup.SPEED, R.string.millimeter_per_hour, R.string.millimeter_per_hour_short), + MyUnit(MyUnitIDS.millimeter_per_minute, BigDecimal.valueOf(60), UnitGroup.SPEED, R.string.millimeter_per_minute, R.string.millimeter_per_minute_short), + MyUnit(MyUnitIDS.millimeter_per_second, BigDecimal.valueOf(3_600), UnitGroup.SPEED, R.string.millimeter_per_second, R.string.millimeter_per_second_short), + MyUnit(MyUnitIDS.centimeter_per_hour, BigDecimal.valueOf(10), UnitGroup.SPEED, R.string.centimeter_per_hour, R.string.centimeter_per_hour_short), + MyUnit(MyUnitIDS.centimeter_per_minute, BigDecimal.valueOf(600), UnitGroup.SPEED, R.string.centimeter_per_minute, R.string.centimeter_per_minute_short), + MyUnit(MyUnitIDS.centimeter_per_second, BigDecimal.valueOf(36_000), UnitGroup.SPEED, R.string.centimeter_per_second, R.string.centimeter_per_second_short), + MyUnit(MyUnitIDS.meter_per_hour, BigDecimal.valueOf(1_000), UnitGroup.SPEED, R.string.meter_per_hour, R.string.meter_per_hour_short), + MyUnit(MyUnitIDS.meter_per_minute, BigDecimal.valueOf(60_000), UnitGroup.SPEED, R.string.meter_per_minute, R.string.meter_per_minute_short), + MyUnit(MyUnitIDS.meter_per_second, BigDecimal.valueOf(3_600_000), UnitGroup.SPEED, R.string.meter_per_second, R.string.meter_per_second_short), + MyUnit(MyUnitIDS.kilometer_per_hour, BigDecimal.valueOf(1_000_000), UnitGroup.SPEED, R.string.kilometer_per_hour, R.string.kilometer_per_hour_short), + MyUnit(MyUnitIDS.kilometer_per_minute, BigDecimal.valueOf(60_000_000), UnitGroup.SPEED, R.string.kilometer_per_minute, R.string.kilometer_per_minute_short), + MyUnit(MyUnitIDS.kilometer_per_second, BigDecimal.valueOf(3_600_000_000), UnitGroup.SPEED, R.string.kilometer_per_second, R.string.kilometer_per_second_short), + MyUnit(MyUnitIDS.foot_per_hour, BigDecimal.valueOf(304.8), UnitGroup.SPEED, R.string.foot_per_hour, R.string.foot_per_hour_short), + MyUnit(MyUnitIDS.foot_per_minute, BigDecimal.valueOf(18_288), UnitGroup.SPEED, R.string.foot_per_minute, R.string.foot_per_minute_short), + MyUnit(MyUnitIDS.foot_per_second, BigDecimal.valueOf(1_097_280), UnitGroup.SPEED, R.string.foot_per_second, R.string.foot_per_second_short), + MyUnit(MyUnitIDS.yard_per_hour, BigDecimal.valueOf(914.4), UnitGroup.SPEED, R.string.yard_per_hour, R.string.yard_per_hour_short), + MyUnit(MyUnitIDS.yard_per_minute, BigDecimal.valueOf(54_864), UnitGroup.SPEED, R.string.yard_per_minute, R.string.yard_per_minute_short), + MyUnit(MyUnitIDS.yard_per_second, BigDecimal.valueOf(3_291_840), UnitGroup.SPEED, R.string.yard_per_second, R.string.yard_per_second_short), + MyUnit(MyUnitIDS.mile_per_hour, BigDecimal.valueOf(1_609_344), UnitGroup.SPEED, R.string.mile_per_hour, R.string.mile_per_hour_short), + MyUnit(MyUnitIDS.mile_per_minute, BigDecimal.valueOf(96_560_640), UnitGroup.SPEED, R.string.mile_per_minute, R.string.mile_per_minute_short), + MyUnit(MyUnitIDS.mile_per_second, BigDecimal.valueOf(5_793_638_400), UnitGroup.SPEED, R.string.mile_per_second, R.string.mile_per_second_short), + MyUnit(MyUnitIDS.knot, BigDecimal.valueOf(1_852_000), UnitGroup.SPEED, R.string.knot, R.string.knot_short), + MyUnit(MyUnitIDS.velocity_of_light_in_vacuum, BigDecimal.valueOf(1_079_252_848_799_998), UnitGroup.SPEED, R.string.velocity_of_light_in_vacuum, R.string.velocity_of_light_in_vacuum_short), + MyUnit(MyUnitIDS.cosmic_velocity_first, BigDecimal.valueOf(28_440_000_000), UnitGroup.SPEED, R.string.cosmic_velocity_first, R.string.cosmic_velocity_first_short), + MyUnit(MyUnitIDS.cosmic_velocity_second, BigDecimal.valueOf(40_320_000_000), UnitGroup.SPEED, R.string.cosmic_velocity_second, R.string.cosmic_velocity_second_short), + MyUnit(MyUnitIDS.cosmic_velocity_third, BigDecimal.valueOf(60_012_000_000), UnitGroup.SPEED, R.string.cosmic_velocity_third, R.string.cosmic_velocity_third_short), + MyUnit(MyUnitIDS.earths_orbital_speed, BigDecimal.valueOf(107_154_000_000), UnitGroup.SPEED, R.string.earths_orbital_speed, R.string.earths_orbital_speed_short), + MyUnit(MyUnitIDS.mach, BigDecimal.valueOf(1_236_960_000), UnitGroup.SPEED, R.string.mach, R.string.mach_short), + MyUnit(MyUnitIDS.mach_si_standard, BigDecimal.valueOf(1_062_167_040), UnitGroup.SPEED, R.string.mach_si_standard, R.string.mach_si_standard_short), + ) + } + private val temperatureCollection: List by lazy { + listOf( + object : AbstractUnit( + unitId = MyUnitIDS.celsius, + basicUnit = BigDecimal.ONE, + group = UnitGroup.TEMPERATURE, + displayName = R.string.celsius, + shortName = R.string.celsius_short, + ) { + override fun convert(unitTo: AbstractUnit, value: BigDecimal, scale: Int): BigDecimal { + return when (unitTo.unitId) { + MyUnitIDS.fahrenheit -> { + value + .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) + .times(BigDecimal.valueOf(1.8)) + .plus(BigDecimal(32)) + } + MyUnitIDS.kelvin -> { + value + .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) + .plus(BigDecimal.valueOf(273.15)) + } + else -> value + } + .setMinimumRequiredScale(scale) + .stripTrailingZeros() + } + }, + object : AbstractUnit( + unitId = MyUnitIDS.fahrenheit, + basicUnit = BigDecimal.ONE, + group = UnitGroup.TEMPERATURE, + displayName = R.string.fahrenheit, + shortName = R.string.fahrenheit_short, + ) { + override fun convert(unitTo: AbstractUnit, value: BigDecimal, scale: Int): BigDecimal { + return when (unitTo.unitId) { + MyUnitIDS.celsius -> { + value + .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) + .minus(BigDecimal(32)) + .times(BigDecimal(5)) + .div(BigDecimal(9)) + } + MyUnitIDS.kelvin -> { + value + .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) + .minus(BigDecimal(32)) + .times(BigDecimal(5)) + .div(BigDecimal(9)) + .add(BigDecimal.valueOf(273.15)) + } + else -> value + } + .setMinimumRequiredScale(scale) + .stripTrailingZeros() + } + }, + object : AbstractUnit( + unitId = MyUnitIDS.kelvin, + basicUnit = BigDecimal.ONE, + group = UnitGroup.TEMPERATURE, + displayName = R.string.kelvin, + shortName = R.string.kelvin_short, + ) { + override fun convert(unitTo: AbstractUnit, value: BigDecimal, scale: Int): BigDecimal { + return when (unitTo.unitId) { + MyUnitIDS.celsius -> { + value + .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) + .minus(BigDecimal(273.15)) + } + MyUnitIDS.fahrenheit -> { + value + .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) + .minus(BigDecimal.valueOf(273.15)) + .times(BigDecimal.valueOf(1.8)) + .plus(BigDecimal(32)) + } + else -> value + } + .setMinimumRequiredScale(scale) + .stripTrailingZeros() + } + }, + ) + } + private val areaCollection: List by lazy { + listOf( + MyUnit(MyUnitIDS.acre, BigDecimal.valueOf(6.083246572E+31), UnitGroup.AREA, R.string.acre, R.string.acre_short ), + MyUnit(MyUnitIDS.hectare, BigDecimal.valueOf(1.503202964E+32), UnitGroup.AREA, R.string.hectare, R.string.hectare_short ), + MyUnit(MyUnitIDS.square_foot, BigDecimal.valueOf(1.396521251E+27), UnitGroup.AREA, R.string.square_foot, R.string.square_foot_short), + MyUnit(MyUnitIDS.square_mile, BigDecimal.valueOf(3.893277806E+34), UnitGroup.AREA, R.string.square_mile, R.string.square_mile_short), + MyUnit(MyUnitIDS.square_yard, BigDecimal.valueOf(1.256869126E+28), UnitGroup.AREA, R.string.square_yard, R.string.square_yard_short), + MyUnit(MyUnitIDS.square_inch, BigDecimal.valueOf(9.698064247E+24), UnitGroup.AREA, R.string.square_inch, R.string.square_inch_short), + MyUnit(MyUnitIDS.square_micrometer, BigDecimal.valueOf(1.503202964E+16), UnitGroup.AREA, R.string.square_micrometer, R.string.square_micrometer_short), + MyUnit(MyUnitIDS.square_millimeter, BigDecimal.valueOf(1.503202964E+22), UnitGroup.AREA, R.string.square_millimeter, R.string.square_millimeter_short), + MyUnit(MyUnitIDS.square_centimeter, BigDecimal.valueOf(1.503202964E+24), UnitGroup.AREA, R.string.square_centimeter, R.string.square_centimeter_short), + MyUnit(MyUnitIDS.square_decimeter, BigDecimal.valueOf(1.503202964E+26), UnitGroup.AREA, R.string.square_decimeter, R.string.square_decimeter_short), + MyUnit(MyUnitIDS.square_meter, BigDecimal.valueOf(1.503202964E+28), UnitGroup.AREA, R.string.square_meter, R.string.square_meter_short), + MyUnit(MyUnitIDS.square_kilometer, BigDecimal.valueOf(1.503202964E+34), UnitGroup.AREA, R.string.square_kilometer, R.string.square_kilometer_short), + MyUnit(MyUnitIDS.electron_cross_section, BigDecimal.valueOf(1.0), UnitGroup.AREA, R.string.electron_cross_section, R.string.electron_cross_section_short), + ) + } + private val timeCollection: List by lazy { + listOf( + MyUnit(MyUnitIDS.attosecond, BigDecimal.valueOf(1), UnitGroup.TIME, R.string.attosecond, R.string.attosecond_short), + MyUnit(MyUnitIDS.nanosecond, BigDecimal.valueOf(1_000_000_000), UnitGroup.TIME, R.string.nanosecond, R.string.nanosecond_short), + MyUnit(MyUnitIDS.microsecond, BigDecimal.valueOf(1_000_000_000_000), UnitGroup.TIME, R.string.microsecond, R.string.microsecond_short), + MyUnit(MyUnitIDS.millisecond, BigDecimal.valueOf(1_000_000_000_000_000), UnitGroup.TIME, R.string.millisecond, R.string.millisecond_short), + MyUnit(MyUnitIDS.jiffy, BigDecimal.valueOf(10_000_000_000_000_000), UnitGroup.TIME, R.string.jiffy, R.string.jiffy_short), + MyUnit(MyUnitIDS.second, BigDecimal.valueOf(1_000_000_000_000_000_000), UnitGroup.TIME, R.string.second, R.string.second_short), + MyUnit(MyUnitIDS.minute, BigDecimal.valueOf(60_000_000_000_000_000_000.0), UnitGroup.TIME, R.string.minute, R.string.minute_short), + MyUnit(MyUnitIDS.hour, BigDecimal.valueOf(3_600_000_000_000_000_000_000.0), UnitGroup.TIME, R.string.hour, R.string.hour_short), + MyUnit(MyUnitIDS.day, BigDecimal.valueOf(86_400_000_000_000_000_000_000.0), UnitGroup.TIME, R.string.day, R.string.day_short), + MyUnit(MyUnitIDS.week, BigDecimal.valueOf(604_800_000_000_000_000_000_000.0), UnitGroup.TIME, R.string.week, R.string.week_short), + ) + } + private val volumeCollection: List by lazy { + listOf( + MyUnit(MyUnitIDS.attoliter, BigDecimal.valueOf(1), UnitGroup.VOLUME, R.string.attoliter, R.string.attoliter_short), + MyUnit(MyUnitIDS.milliliter, BigDecimal.valueOf(1_000_000_000_000_000), UnitGroup.VOLUME, R.string.milliliter, R.string.milliliter_short), + MyUnit(MyUnitIDS.liter, BigDecimal.valueOf(1_000_000_000_000_000_000), UnitGroup.VOLUME, R.string.liter, R.string.liter_short), + MyUnit(MyUnitIDS.us_liquid_gallon, BigDecimal.valueOf(3_785_411_783_999_977_000), UnitGroup.VOLUME, R.string.us_liquid_gallon, R.string.us_liquid_gallon_short), + MyUnit(MyUnitIDS.us_liquid_quart, BigDecimal.valueOf(946_352_945_999_994_200), UnitGroup.VOLUME, R.string.us_liquid_quart, R.string.us_liquid_quart_short), + MyUnit(MyUnitIDS.us_liquid_pint, BigDecimal.valueOf(473_176_472_999_997_100), UnitGroup.VOLUME, R.string.us_liquid_pint, R.string.us_liquid_pint_short), + MyUnit(MyUnitIDS.us_legal_cup, BigDecimal.valueOf(236_588_236_499_998_560), UnitGroup.VOLUME, R.string.us_legal_cup, R.string.us_legal_cup_short), + MyUnit(MyUnitIDS.us_fluid_ounce, BigDecimal.valueOf(29_573_529_562_499_996), UnitGroup.VOLUME, R.string.us_fluid_ounce, R.string.us_fluid_ounce_short), + MyUnit(MyUnitIDS.us_tablespoon, BigDecimal.valueOf(14_786_764_781_249_998), UnitGroup.VOLUME, R.string.us_tablespoon, R.string.us_tablespoon_short), + MyUnit(MyUnitIDS.us_teaspoon, BigDecimal.valueOf(4_928_921_593_749_952), UnitGroup.VOLUME, R.string.us_teaspoon, R.string.us_teaspoon_short), + MyUnit(MyUnitIDS.imperial_gallon, BigDecimal.valueOf(4_546_089_999_999_954_400), UnitGroup.VOLUME, R.string.imperial_gallon, R.string.imperial_gallon_short), + MyUnit(MyUnitIDS.imperial_quart, BigDecimal.valueOf(1_136_522_500_000_001_400), UnitGroup.VOLUME, R.string.imperial_quart, R.string.imperial_quart_short), + MyUnit(MyUnitIDS.imperial_pint, BigDecimal.valueOf(568_261_250_000_000_700), UnitGroup.VOLUME, R.string.imperial_pint, R.string.imperial_pint_short), + MyUnit(MyUnitIDS.imperial_cup, BigDecimal.valueOf(284_130_625_000_000_350), UnitGroup.VOLUME, R.string.imperial_cup, R.string.imperial_cup_short), + MyUnit(MyUnitIDS.imperial_fluid_ounce, BigDecimal.valueOf(28_413_062_500_000_036), UnitGroup.VOLUME, R.string.imperial_fluid_ounce, R.string.imperial_fluid_ounce_short), + MyUnit(MyUnitIDS.imperial_tablespoon, BigDecimal.valueOf(17_758_164_062_500_148), UnitGroup.VOLUME, R.string.imperial_tablespoon, R.string.imperial_tablespoon_short), + MyUnit(MyUnitIDS.imperial_teaspoon, BigDecimal.valueOf(5_919_388_020_833_314), UnitGroup.VOLUME, R.string.imperial_teaspoon, R.string.imperial_teaspoon_short), + MyUnit(MyUnitIDS.cubic_millimeter, BigDecimal.valueOf(1_000_000_000_000), UnitGroup.VOLUME, R.string.cubic_millimeter, R.string.cubic_millimeter_short), + MyUnit(MyUnitIDS.cubic_centimeter, BigDecimal.valueOf(1_000_000_000_000_000), UnitGroup.VOLUME, R.string.cubic_centimeter, R.string.cubic_centimeter_short), + MyUnit(MyUnitIDS.cubic_meter, BigDecimal.valueOf(1.0E+21), UnitGroup.VOLUME, R.string.cubic_meter, R.string.cubic_meter_short), + MyUnit(MyUnitIDS.cubic_kilometer, BigDecimal.valueOf(1.0E+30), UnitGroup.VOLUME, R.string.cubic_kilometer, R.string.cubic_kilometer_short), + ) + } + private val dataCollection: List by lazy { + listOf( + MyUnit(MyUnitIDS.bit, BigDecimal.valueOf(1), UnitGroup.DATA, R.string.bit, R.string.bit_short), + MyUnit(MyUnitIDS.kibibit, BigDecimal.valueOf(1_024), UnitGroup.DATA, R.string.kibibit, R.string.kibibit_short), + MyUnit(MyUnitIDS.kilobit, BigDecimal.valueOf(1_000), UnitGroup.DATA, R.string.kilobit, R.string.kilobit_short), + MyUnit(MyUnitIDS.megabit, BigDecimal.valueOf(1_000_000), UnitGroup.DATA, R.string.megabit, R.string.megabit_short), + MyUnit(MyUnitIDS.mebibit, BigDecimal.valueOf(1_048_576), UnitGroup.DATA, R.string.mebibit, R.string.mebibit_short), + MyUnit(MyUnitIDS.gigabit, BigDecimal.valueOf(1_000_000_000), UnitGroup.DATA, R.string.gigabit, R.string.gigabit_short), + MyUnit(MyUnitIDS.terabit, BigDecimal.valueOf(1_000_000_000_000), UnitGroup.DATA, R.string.terabit, R.string.terabit_short), + MyUnit(MyUnitIDS.petabit, BigDecimal.valueOf(1_000_000_000_000_000), UnitGroup.DATA, R.string.petabit, R.string.petabit_short), + MyUnit(MyUnitIDS.exabit, BigDecimal.valueOf(1_000_000_000_000_000_000), UnitGroup.DATA, R.string.exabit, R.string.exabit_short), + MyUnit(MyUnitIDS.byte, BigDecimal.valueOf(8), UnitGroup.DATA, R.string.byte_, R.string.byte_short), + MyUnit(MyUnitIDS.kibibyte, BigDecimal.valueOf(8_192), UnitGroup.DATA, R.string.kibibyte, R.string.kibibyte_short), + MyUnit(MyUnitIDS.kilobyte, BigDecimal.valueOf(8_000), UnitGroup.DATA, R.string.kilobyte, R.string.kilobyte_short), + MyUnit(MyUnitIDS.megabyte, BigDecimal.valueOf(8_000_000), UnitGroup.DATA, R.string.megabyte, R.string.megabyte_short), + MyUnit(MyUnitIDS.mebibyte, BigDecimal.valueOf(8_388_608), UnitGroup.DATA, R.string.mebibyte, R.string.mebibyte_short), + MyUnit(MyUnitIDS.gigabyte, BigDecimal.valueOf(8_000_000_000), UnitGroup.DATA, R.string.gigabyte, R.string.gigabyte_short), + MyUnit(MyUnitIDS.terabyte, BigDecimal.valueOf(8_000_000_000_000), UnitGroup.DATA, R.string.terabyte, R.string.terabyte_short), + MyUnit(MyUnitIDS.petabyte, BigDecimal.valueOf(8_000_000_000_000_000), UnitGroup.DATA, R.string.petabyte, R.string.petabyte_short), + MyUnit(MyUnitIDS.exabyte, BigDecimal.valueOf(8_000_000_000_000_000_000), UnitGroup.DATA, R.string.exabyte, R.string.exabyte_short), + ) + } + private val pressureCollection: List by lazy { + listOf( + MyUnit(MyUnitIDS.attopascal, BigDecimal.valueOf(1), UnitGroup.PRESSURE, R.string.attopascal, R.string.attopascal_short), + MyUnit(MyUnitIDS.femtopascal, BigDecimal.valueOf(1E+3), UnitGroup.PRESSURE, R.string.femtopascal, R.string.femtopascal_short), + MyUnit(MyUnitIDS.picopascal, BigDecimal.valueOf(1E+6), UnitGroup.PRESSURE, R.string.picopascal, R.string.picopascal_short), + MyUnit(MyUnitIDS.nanopascal, BigDecimal.valueOf(1E+9), UnitGroup.PRESSURE, R.string.nanopascal, R.string.nanopascal_short), + MyUnit(MyUnitIDS.micropascal, BigDecimal.valueOf(1E+12), UnitGroup.PRESSURE, R.string.micropascal, R.string.micropascal_short), + MyUnit(MyUnitIDS.millipascal, BigDecimal.valueOf(1E+15), UnitGroup.PRESSURE, R.string.millipascal, R.string.millipascal_short), + MyUnit(MyUnitIDS.centipascal, BigDecimal.valueOf(1E+16), UnitGroup.PRESSURE, R.string.centipascal, R.string.centipascal_short), + MyUnit(MyUnitIDS.decipascal, BigDecimal.valueOf(1E+17), UnitGroup.PRESSURE, R.string.decipascal, R.string.decipascal_short), + MyUnit(MyUnitIDS.pascal, BigDecimal.valueOf(1E+18), UnitGroup.PRESSURE, R.string.pascal, R.string.pascal_short), + MyUnit(MyUnitIDS.dekapascal, BigDecimal.valueOf(1E+19), UnitGroup.PRESSURE, R.string.dekapascal, R.string.dekapascal_short), + MyUnit(MyUnitIDS.hectopascal, BigDecimal.valueOf(1E+20), UnitGroup.PRESSURE, R.string.hectopascal, R.string.hectopascal_short), + MyUnit(MyUnitIDS.bar, BigDecimal.valueOf(1E+23), UnitGroup.PRESSURE, R.string.bar, R.string.bar_short), + MyUnit(MyUnitIDS.megapascal, BigDecimal.valueOf(1E+24), UnitGroup.PRESSURE, R.string.megapascal, R.string.megapascal_short), + MyUnit(MyUnitIDS.gigapascal, BigDecimal.valueOf(1E+27), UnitGroup.PRESSURE, R.string.gigapascal, R.string.gigapascal_short), + MyUnit(MyUnitIDS.terapascal, BigDecimal.valueOf(1E+30), UnitGroup.PRESSURE, R.string.terapascal, R.string.terapascal_short), + MyUnit(MyUnitIDS.petapascal, BigDecimal.valueOf(1E+33), UnitGroup.PRESSURE, R.string.petapascal, R.string.petapascal_short), + MyUnit(MyUnitIDS.exapascal, BigDecimal.valueOf(1E+36), UnitGroup.PRESSURE, R.string.exapascal, R.string.exapascal_short), + MyUnit(MyUnitIDS.psi, BigDecimal.valueOf(6.8947572931783E+21), UnitGroup.PRESSURE, R.string.psi, R.string.psi_short), + MyUnit(MyUnitIDS.ksi, BigDecimal.valueOf(6.8947572931783E+24), UnitGroup.PRESSURE, R.string.ksi, R.string.ksi_short), + MyUnit(MyUnitIDS.standard_atmosphere, BigDecimal.valueOf(101.325E+21), UnitGroup.PRESSURE, R.string.standard_atmosphere, R.string.standard_atmosphere_short), + MyUnit(MyUnitIDS.torr, BigDecimal.valueOf(1.3332236842108281E+20), UnitGroup.PRESSURE, R.string.torr, R.string.torr_short), + MyUnit(MyUnitIDS.millimeter_of_mercury, BigDecimal.valueOf(1.3332236842108281E+20), UnitGroup.PRESSURE, R.string.millimeter_of_mercury, R.string.millimeter_of_mercury_short), + ) + } + private val accelerationCollection: List by lazy { + listOf( + MyUnit(MyUnitIDS.attometer_per_square_second, BigDecimal.valueOf(1), UnitGroup.ACCELERATION, R.string.attometer_per_square_second, R.string.attometer_per_square_second_short), + MyUnit(MyUnitIDS.femtometer_per_square_second, BigDecimal.valueOf(1E+3), UnitGroup.ACCELERATION, R.string.femtometer_per_square_second, R.string.femtometer_per_square_second_short), + MyUnit(MyUnitIDS.picometer_per_square_second, BigDecimal.valueOf(1E+6), UnitGroup.ACCELERATION, R.string.picometer_per_square_second, R.string.picometer_per_square_second_short), + MyUnit(MyUnitIDS.nanometer_per_square_second, BigDecimal.valueOf(1E+9), UnitGroup.ACCELERATION, R.string.nanometer_per_square_second, R.string.nanometer_per_square_second_short), + MyUnit(MyUnitIDS.micrometer_per_square_second, BigDecimal.valueOf(1E+12), UnitGroup.ACCELERATION, R.string.micrometer_per_square_second, R.string.micrometer_per_square_second_short), + MyUnit(MyUnitIDS.millimeter_per_square_second, BigDecimal.valueOf(1E+15), UnitGroup.ACCELERATION, R.string.millimeter_per_square_second, R.string.millimeter_per_square_second_short), + MyUnit(MyUnitIDS.centimeter_per_square_second, BigDecimal.valueOf(1E+16), UnitGroup.ACCELERATION, R.string.centimeter_per_square_second, R.string.centimeter_per_square_second_short), + MyUnit(MyUnitIDS.decimeter_per_square_second, BigDecimal.valueOf(1E+17), UnitGroup.ACCELERATION, R.string.decimeter_per_square_second, R.string.decimeter_per_square_second_short), + MyUnit(MyUnitIDS.meter_per_square_second, BigDecimal.valueOf(1E+18), UnitGroup.ACCELERATION, R.string.meter_per_square_second, R.string.meter_per_square_second_short), + MyUnit(MyUnitIDS.kilometer_per_square_second, BigDecimal.valueOf(1E+21), UnitGroup.ACCELERATION, R.string.kilometer_per_square_second, R.string.kilometer_per_square_second_short), + MyUnit(MyUnitIDS.dekameter_per_square_second, BigDecimal.valueOf(1E+19), UnitGroup.ACCELERATION, R.string.dekameter_per_square_second, R.string.dekameter_per_square_second_short), + MyUnit(MyUnitIDS.hectometer_per_square_second, BigDecimal.valueOf(1E+20), UnitGroup.ACCELERATION, R.string.hectometer_per_square_second, R.string.hectometer_per_square_second_short), + MyUnit(MyUnitIDS.gal, BigDecimal.valueOf(1E+16), UnitGroup.ACCELERATION, R.string.gal, R.string.gal_short), + MyUnit(MyUnitIDS.mercury_surface_gravity, BigDecimal.valueOf(3.7E+18), UnitGroup.ACCELERATION, R.string.mercury_surface_gravity, R.string.mercury_surface_gravity_short), + MyUnit(MyUnitIDS.venus_surface_gravity, BigDecimal.valueOf(8.87E+18), UnitGroup.ACCELERATION, R.string.venus_surface_gravity, R.string.venus_surface_gravity_short), + MyUnit(MyUnitIDS.earth_surface_gravity, BigDecimal.valueOf(9.80655E+18), UnitGroup.ACCELERATION, R.string.earth_surface_gravity, R.string.earth_surface_gravity_short), + MyUnit(MyUnitIDS.mars_surface_gravity, BigDecimal.valueOf(3.71E+18), UnitGroup.ACCELERATION, R.string.mars_surface_gravity, R.string.mars_surface_gravity_short), + MyUnit(MyUnitIDS.jupiter_surface_gravity, BigDecimal.valueOf(2.479E+19), UnitGroup.ACCELERATION, R.string.jupiter_surface_gravity, R.string.jupiter_surface_gravity_short), + MyUnit(MyUnitIDS.saturn_surface_gravity, BigDecimal.valueOf(1.044E+19), UnitGroup.ACCELERATION, R.string.saturn_surface_gravity, R.string.saturn_surface_gravity_short), + MyUnit(MyUnitIDS.uranus_surface_gravity, BigDecimal.valueOf(8.87E+18), UnitGroup.ACCELERATION, R.string.uranus_surface_gravity, R.string.uranus_surface_gravity_short), + MyUnit(MyUnitIDS.neptune_surface_gravity, BigDecimal.valueOf(1.115E+19), UnitGroup.ACCELERATION, R.string.neptune_surface_gravity, R.string.neptune_surface_gravity_short), + MyUnit(MyUnitIDS.sun_surface_gravity, BigDecimal.valueOf(2.74E+20), UnitGroup.ACCELERATION, R.string.sun_surface_gravity, R.string.sun_surface_gravity_short), + ) + } + private val energyCollection: List by lazy { + listOf( + MyUnit(MyUnitIDS.electron_volt, BigDecimal.valueOf(0.160217733), UnitGroup.ENERGY, R.string.electron_volt, R.string.electron_volt_short), + MyUnit(MyUnitIDS.attojoule, BigDecimal.valueOf(1), UnitGroup.ENERGY, R.string.attojoule, R.string.attojoule_short), + MyUnit(MyUnitIDS.joule, BigDecimal.valueOf(1E+18), UnitGroup.ENERGY, R.string.joule, R.string.joule_short), + MyUnit(MyUnitIDS.kilojoule, BigDecimal.valueOf(1E+21), UnitGroup.ENERGY, R.string.kilojoule, R.string.kilojoule_short), + MyUnit(MyUnitIDS.megajoule, BigDecimal.valueOf(1E+24), UnitGroup.ENERGY, R.string.megajoule, R.string.megajoule_short), + MyUnit(MyUnitIDS.gigajoule, BigDecimal.valueOf(1E+27), UnitGroup.ENERGY, R.string.gigajoule, R.string.gigajoule_short), + MyUnit(MyUnitIDS.energy_ton, BigDecimal.valueOf(4.184E+27), UnitGroup.ENERGY, R.string.energy_ton, R.string.energy_ton_short), + MyUnit(MyUnitIDS.kiloton, BigDecimal.valueOf(4.184E+30), UnitGroup.ENERGY, R.string.kiloton, R.string.kiloton_short), + MyUnit(MyUnitIDS.megaton, BigDecimal.valueOf(4.184E+33), UnitGroup.ENERGY, R.string.megaton, R.string.megaton_short), + MyUnit(MyUnitIDS.gigaton, BigDecimal.valueOf(4.184E+36), UnitGroup.ENERGY, R.string.gigaton, R.string.gigaton_short), + MyUnit(MyUnitIDS.energy_horse_power_metric, BigDecimal.valueOf(2.6477955E+24), UnitGroup.ENERGY, R.string.energy_horse_power_metric, R.string.energy_horse_power_metric_short), + MyUnit(MyUnitIDS.calorie_th, BigDecimal.valueOf(4184E+15), UnitGroup.ENERGY, R.string.calorie_th, R.string.calorie_th_short), + MyUnit(MyUnitIDS.kilocalorie_th, BigDecimal.valueOf(4184E+18), UnitGroup.ENERGY, R.string.kilocalorie_th, R.string.kilocalorie_th_short), + ) + } + private val powerCollection: List by lazy { + listOf( + MyUnit(MyUnitIDS.attowatt, BigDecimal.valueOf(1), UnitGroup.POWER, R.string.attowatt, R.string.attowatt_short), + MyUnit(MyUnitIDS.watt, BigDecimal.valueOf(1_000_000_000_000_000_000), UnitGroup.POWER, R.string.watt, R.string.watt_short), + MyUnit(MyUnitIDS.kilowatt, BigDecimal.valueOf(1.0E+21), UnitGroup.POWER, R.string.kilowatt, R.string.kilowatt_short), + MyUnit(MyUnitIDS.megawatt, BigDecimal.valueOf(1.0E+24), UnitGroup.POWER, R.string.megawatt, R.string.megawatt_short), + MyUnit(MyUnitIDS.horse_power_mechanical, BigDecimal.valueOf(745_699_871_582_285_700_000.0), UnitGroup.POWER, R.string.horse_power_mechanical, R.string.horse_power_mechanical_short), + ) + } + private val angleCollection: List by lazy { + listOf( + MyUnit(MyUnitIDS.angle_second, BigDecimal.valueOf(1), UnitGroup.ANGLE, R.string.angle_second, R.string.angle_second_short), + MyUnit(MyUnitIDS.angle_minute, BigDecimal.valueOf(60), UnitGroup.ANGLE, R.string.angle_minute, R.string.angle_minute_short), + MyUnit(MyUnitIDS.degree, BigDecimal.valueOf(3600), UnitGroup.ANGLE, R.string.degree, R.string.degree_short), + MyUnit(MyUnitIDS.radian, BigDecimal.valueOf(206264.8062471), UnitGroup.ANGLE, R.string.radian, R.string.radian_short), + MyUnit(MyUnitIDS.sextant, BigDecimal.valueOf(216000), UnitGroup.ANGLE, R.string.sextant, R.string.sextant_short), + MyUnit(MyUnitIDS.turn, BigDecimal.valueOf(1296000), UnitGroup.ANGLE, R.string.turn, R.string.turn_short), + ) + } + private val dataTransferCollection: List by lazy { + listOf( + MyUnit(MyUnitIDS.bit_per_second, BigDecimal.valueOf(1), UnitGroup.DATA_TRANSFER, R.string.bit_per_second, R.string.bit_per_second_short), + MyUnit(MyUnitIDS.kibibit_per_second, BigDecimal.valueOf(1_024), UnitGroup.DATA_TRANSFER, R.string.kibibit_per_second, R.string.kibibit_per_second_short), + MyUnit(MyUnitIDS.kilobit_per_second, BigDecimal.valueOf(1_000), UnitGroup.DATA_TRANSFER, R.string.kilobit_per_second, R.string.kilobit_per_second_short), + MyUnit(MyUnitIDS.megabit_per_second, BigDecimal.valueOf(1_000_000), UnitGroup.DATA_TRANSFER, R.string.megabit_per_second, R.string.megabit_per_second_short), + MyUnit(MyUnitIDS.mebibit_per_second, BigDecimal.valueOf(1_048_576), UnitGroup.DATA_TRANSFER, R.string.mebibit_per_second, R.string.mebibit_per_second_short), + MyUnit(MyUnitIDS.gigabit_per_second, BigDecimal.valueOf(1_000_000_000), UnitGroup.DATA_TRANSFER, R.string.gigabit_per_second, R.string.gigabit_per_second_short), + MyUnit(MyUnitIDS.terabit_per_second, BigDecimal.valueOf(1_000_000_000_000), UnitGroup.DATA_TRANSFER, R.string.terabit_per_second, R.string.terabit_per_second_short), + MyUnit(MyUnitIDS.petabit_per_second, BigDecimal.valueOf(1_000_000_000_000_000), UnitGroup.DATA_TRANSFER, R.string.petabit_per_second, R.string.petabit_per_second_short), + MyUnit(MyUnitIDS.exabit_per_second, BigDecimal.valueOf(1_000_000_000_000_000_000), UnitGroup.DATA_TRANSFER, R.string.exabit_per_second, R.string.exabit_per_second_short), + MyUnit(MyUnitIDS.byte_per_second, BigDecimal.valueOf(8), UnitGroup.DATA_TRANSFER, R.string.byte_per_second, R.string.byte_per_second_short), + MyUnit(MyUnitIDS.kibibyte_per_second, BigDecimal.valueOf(8_192), UnitGroup.DATA_TRANSFER, R.string.kibibyte_per_second, R.string.kibibyte_per_second_short), + MyUnit(MyUnitIDS.kilobyte_per_second, BigDecimal.valueOf(8_000), UnitGroup.DATA_TRANSFER, R.string.kilobyte_per_second, R.string.kilobyte_per_second_short), + MyUnit(MyUnitIDS.megabyte_per_second, BigDecimal.valueOf(8_000_000), UnitGroup.DATA_TRANSFER, R.string.megabyte_per_second, R.string.megabyte_per_second_short), + MyUnit(MyUnitIDS.mebibyte_per_second, BigDecimal.valueOf(8_388_608), UnitGroup.DATA_TRANSFER, R.string.mebibyte_per_second, R.string.mebibyte_per_second_short), + MyUnit(MyUnitIDS.gigabyte_per_second, BigDecimal.valueOf(8_000_000_000), UnitGroup.DATA_TRANSFER, R.string.gigabyte_per_second, R.string.gigabyte_per_second_short), + MyUnit(MyUnitIDS.terabyte_per_second, BigDecimal.valueOf(8_000_000_000_000), UnitGroup.DATA_TRANSFER, R.string.terabyte_per_second, R.string.terabyte_per_second_short), + MyUnit(MyUnitIDS.petabyte_per_second, BigDecimal.valueOf(8_000_000_000_000_000), UnitGroup.DATA_TRANSFER, R.string.petabyte_per_second, R.string.petabyte_per_second_short), + MyUnit(MyUnitIDS.exabyte_per_second, BigDecimal.valueOf(8_000_000_000_000_000_000), UnitGroup.DATA_TRANSFER, R.string.exabyte_per_second, R.string.exabyte_per_second_short), + ) + } } diff --git a/app/src/main/java/com/sadellie/unitto/data/units/UnitGroup.kt b/app/src/main/java/com/sadellie/unitto/data/units/UnitGroup.kt index d734e2d0..a1b7acfe 100644 --- a/app/src/main/java/com/sadellie/unitto/data/units/UnitGroup.kt +++ b/app/src/main/java/com/sadellie/unitto/data/units/UnitGroup.kt @@ -8,8 +8,8 @@ val ALL_UNIT_GROUPS: List by lazy { } /** - * As not all measurements can be converted between into other, we separate them into groups. - * Within one groups all measurements can be converted + * As not all measurements can be converted between each other, we separate them into groups. + * Within one group all measurements can be converted */ enum class UnitGroup( @StringRes val res: Int, @@ -18,10 +18,10 @@ enum class UnitGroup( LENGTH(res = R.string.length), CURRENCY(res = R.string.currency), MASS(res = R.string.mass), - TIME(res = R.string.time), - TEMPERATURE(res = R.string.temperature, canNegate = true), SPEED(res = R.string.speed), + TEMPERATURE(res = R.string.temperature, canNegate = true), AREA(res = R.string.area), + TIME(res = R.string.time), VOLUME(res = R.string.volume), DATA(res = R.string.data), PRESSURE(res = R.string.pressure), diff --git a/app/src/main/java/com/sadellie/unitto/data/units/collections/Acceleration.kt b/app/src/main/java/com/sadellie/unitto/data/units/collections/Acceleration.kt deleted file mode 100644 index 4d8add94..00000000 --- a/app/src/main/java/com/sadellie/unitto/data/units/collections/Acceleration.kt +++ /dev/null @@ -1,35 +0,0 @@ -package com.sadellie.unitto.data.units.collections - -import com.sadellie.unitto.R -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.MyUnit -import com.sadellie.unitto.data.units.MyUnitIDS -import com.sadellie.unitto.data.units.UnitGroup -import java.math.BigDecimal - -val ACCELERATION_COLLECTION: List by lazy { - listOf( - MyUnit(MyUnitIDS.attometer_per_square_second, BigDecimal.valueOf(1), UnitGroup.ACCELERATION, R.string.attometer_per_square_second, R.string.attometer_per_square_second_short), - MyUnit(MyUnitIDS.femtometer_per_square_second, BigDecimal.valueOf(1E+3), UnitGroup.ACCELERATION, R.string.femtometer_per_square_second, R.string.femtometer_per_square_second_short), - MyUnit(MyUnitIDS.picometer_per_square_second, BigDecimal.valueOf(1E+6), UnitGroup.ACCELERATION, R.string.picometer_per_square_second, R.string.picometer_per_square_second_short), - MyUnit(MyUnitIDS.nanometer_per_square_second, BigDecimal.valueOf(1E+9), UnitGroup.ACCELERATION, R.string.nanometer_per_square_second, R.string.nanometer_per_square_second_short), - MyUnit(MyUnitIDS.micrometer_per_square_second, BigDecimal.valueOf(1E+12), UnitGroup.ACCELERATION, R.string.micrometer_per_square_second, R.string.micrometer_per_square_second_short), - MyUnit(MyUnitIDS.millimeter_per_square_second, BigDecimal.valueOf(1E+15), UnitGroup.ACCELERATION, R.string.millimeter_per_square_second, R.string.millimeter_per_square_second_short), - MyUnit(MyUnitIDS.centimeter_per_square_second, BigDecimal.valueOf(1E+16), UnitGroup.ACCELERATION, R.string.centimeter_per_square_second, R.string.centimeter_per_square_second_short), - MyUnit(MyUnitIDS.decimeter_per_square_second, BigDecimal.valueOf(1E+17), UnitGroup.ACCELERATION, R.string.decimeter_per_square_second, R.string.decimeter_per_square_second_short), - MyUnit(MyUnitIDS.meter_per_square_second, BigDecimal.valueOf(1E+18), UnitGroup.ACCELERATION, R.string.meter_per_square_second, R.string.meter_per_square_second_short), - MyUnit(MyUnitIDS.kilometer_per_square_second, BigDecimal.valueOf(1E+21), UnitGroup.ACCELERATION, R.string.kilometer_per_square_second, R.string.kilometer_per_square_second_short), - MyUnit(MyUnitIDS.dekameter_per_square_second, BigDecimal.valueOf(1E+19), UnitGroup.ACCELERATION, R.string.dekameter_per_square_second, R.string.dekameter_per_square_second_short), - MyUnit(MyUnitIDS.hectometer_per_square_second, BigDecimal.valueOf(1E+20), UnitGroup.ACCELERATION, R.string.hectometer_per_square_second, R.string.hectometer_per_square_second_short), - MyUnit(MyUnitIDS.gal, BigDecimal.valueOf(1E+16), UnitGroup.ACCELERATION, R.string.gal, R.string.gal_short), - MyUnit(MyUnitIDS.mercury_surface_gravity, BigDecimal.valueOf(3.7E+18), UnitGroup.ACCELERATION, R.string.mercury_surface_gravity, R.string.mercury_surface_gravity_short), - MyUnit(MyUnitIDS.venus_surface_gravity, BigDecimal.valueOf(8.87E+18), UnitGroup.ACCELERATION, R.string.venus_surface_gravity, R.string.venus_surface_gravity_short), - MyUnit(MyUnitIDS.earth_surface_gravity, BigDecimal.valueOf(9.80655E+18), UnitGroup.ACCELERATION, R.string.earth_surface_gravity, R.string.earth_surface_gravity_short), - MyUnit(MyUnitIDS.mars_surface_gravity, BigDecimal.valueOf(3.71E+18), UnitGroup.ACCELERATION, R.string.mars_surface_gravity, R.string.mars_surface_gravity_short), - MyUnit(MyUnitIDS.jupiter_surface_gravity, BigDecimal.valueOf(2.479E+19), UnitGroup.ACCELERATION, R.string.jupiter_surface_gravity, R.string.jupiter_surface_gravity_short), - MyUnit(MyUnitIDS.saturn_surface_gravity, BigDecimal.valueOf(1.044E+19), UnitGroup.ACCELERATION, R.string.saturn_surface_gravity, R.string.saturn_surface_gravity_short), - MyUnit(MyUnitIDS.uranus_surface_gravity, BigDecimal.valueOf(8.87E+18), UnitGroup.ACCELERATION, R.string.uranus_surface_gravity, R.string.uranus_surface_gravity_short), - MyUnit(MyUnitIDS.neptune_surface_gravity, BigDecimal.valueOf(1.115E+19), UnitGroup.ACCELERATION, R.string.neptune_surface_gravity, R.string.neptune_surface_gravity_short), - MyUnit(MyUnitIDS.sun_surface_gravity, BigDecimal.valueOf(2.74E+20), UnitGroup.ACCELERATION, R.string.sun_surface_gravity, R.string.sun_surface_gravity_short), - ) -} diff --git a/app/src/main/java/com/sadellie/unitto/data/units/collections/Angle.kt b/app/src/main/java/com/sadellie/unitto/data/units/collections/Angle.kt deleted file mode 100644 index dc25983f..00000000 --- a/app/src/main/java/com/sadellie/unitto/data/units/collections/Angle.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.sadellie.unitto.data.units.collections - -import com.sadellie.unitto.R -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.MyUnit -import com.sadellie.unitto.data.units.MyUnitIDS -import com.sadellie.unitto.data.units.UnitGroup -import java.math.BigDecimal - -val ANGLE_COLLECTION: List by lazy { - listOf( - MyUnit(MyUnitIDS.angle_second, BigDecimal.valueOf(1), UnitGroup.ANGLE, R.string.angle_second, R.string.angle_second_short), - MyUnit(MyUnitIDS.angle_minute, BigDecimal.valueOf(60), UnitGroup.ANGLE, R.string.angle_minute, R.string.angle_minute_short), - MyUnit(MyUnitIDS.degree, BigDecimal.valueOf(3600), UnitGroup.ANGLE, R.string.degree, R.string.degree_short), - MyUnit(MyUnitIDS.radian, BigDecimal.valueOf(206264.8062471), UnitGroup.ANGLE, R.string.radian, R.string.radian_short), - MyUnit(MyUnitIDS.sextant, BigDecimal.valueOf(216000), UnitGroup.ANGLE, R.string.sextant, R.string.sextant_short), - MyUnit(MyUnitIDS.turn, BigDecimal.valueOf(1296000), UnitGroup.ANGLE, R.string.turn, R.string.turn_short), - ) -} diff --git a/app/src/main/java/com/sadellie/unitto/data/units/collections/Area.kt b/app/src/main/java/com/sadellie/unitto/data/units/collections/Area.kt deleted file mode 100644 index 59048bf0..00000000 --- a/app/src/main/java/com/sadellie/unitto/data/units/collections/Area.kt +++ /dev/null @@ -1,26 +0,0 @@ -package com.sadellie.unitto.data.units.collections - -import com.sadellie.unitto.R -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.MyUnit -import com.sadellie.unitto.data.units.MyUnitIDS -import com.sadellie.unitto.data.units.UnitGroup -import java.math.BigDecimal - -val AREA_COLLECTION: List by lazy { - listOf( - MyUnit(MyUnitIDS.acre, BigDecimal.valueOf(6.083246572E+31), UnitGroup.AREA, R.string.acre, R.string.acre_short ), - MyUnit(MyUnitIDS.hectare, BigDecimal.valueOf(1.503202964E+32), UnitGroup.AREA, R.string.hectare, R.string.hectare_short ), - MyUnit(MyUnitIDS.square_foot, BigDecimal.valueOf(1.396521251E+27), UnitGroup.AREA, R.string.square_foot, R.string.square_foot_short), - MyUnit(MyUnitIDS.square_mile, BigDecimal.valueOf(3.893277806E+34), UnitGroup.AREA, R.string.square_mile, R.string.square_mile_short), - MyUnit(MyUnitIDS.square_yard, BigDecimal.valueOf(1.256869126E+28), UnitGroup.AREA, R.string.square_yard, R.string.square_yard_short), - MyUnit(MyUnitIDS.square_inch, BigDecimal.valueOf(9.698064247E+24), UnitGroup.AREA, R.string.square_inch, R.string.square_inch_short), - MyUnit(MyUnitIDS.square_micrometer, BigDecimal.valueOf(1.503202964E+16), UnitGroup.AREA, R.string.square_micrometer, R.string.square_micrometer_short), - MyUnit(MyUnitIDS.square_millimeter, BigDecimal.valueOf(1.503202964E+22), UnitGroup.AREA, R.string.square_millimeter, R.string.square_millimeter_short), - MyUnit(MyUnitIDS.square_centimeter, BigDecimal.valueOf(1.503202964E+24), UnitGroup.AREA, R.string.square_centimeter, R.string.square_centimeter_short), - MyUnit(MyUnitIDS.square_decimeter, BigDecimal.valueOf(1.503202964E+26), UnitGroup.AREA, R.string.square_decimeter, R.string.square_decimeter_short), - MyUnit(MyUnitIDS.square_meter, BigDecimal.valueOf(1.503202964E+28), UnitGroup.AREA, R.string.square_meter, R.string.square_meter_short), - MyUnit(MyUnitIDS.square_kilometer, BigDecimal.valueOf(1.503202964E+34), UnitGroup.AREA, R.string.square_kilometer, R.string.square_kilometer_short), - MyUnit(MyUnitIDS.electron_cross_section, BigDecimal.valueOf(1.0), UnitGroup.AREA, R.string.electron_cross_section, R.string.electron_cross_section_short), - ) -} diff --git a/app/src/main/java/com/sadellie/unitto/data/units/collections/Currency.kt b/app/src/main/java/com/sadellie/unitto/data/units/collections/Currency.kt deleted file mode 100644 index 7e359334..00000000 --- a/app/src/main/java/com/sadellie/unitto/data/units/collections/Currency.kt +++ /dev/null @@ -1,221 +0,0 @@ -package com.sadellie.unitto.data.units.collections - -import com.sadellie.unitto.R -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.MyUnit -import com.sadellie.unitto.data.units.MyUnitIDS -import com.sadellie.unitto.data.units.UnitGroup -import java.math.BigDecimal - -val CURRENCY_COLLECTION: List by lazy { - listOf( - MyUnit(MyUnitIDS.currency_1inch, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_1inch, R.string.currency_1inch_short), - MyUnit(MyUnitIDS.currency_ada, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ada, R.string.currency_ada_short), - MyUnit(MyUnitIDS.currency_aed, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_aed, R.string.currency_aed_short), - MyUnit(MyUnitIDS.currency_afn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_afn, R.string.currency_afn_short), - MyUnit(MyUnitIDS.currency_algo, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_algo, R.string.currency_algo_short), - MyUnit(MyUnitIDS.currency_all, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_all, R.string.currency_all_short), - MyUnit(MyUnitIDS.currency_amd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_amd, R.string.currency_amd_short), - MyUnit(MyUnitIDS.currency_ang, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ang, R.string.currency_ang_short), - MyUnit(MyUnitIDS.currency_aoa, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_aoa, R.string.currency_aoa_short), - MyUnit(MyUnitIDS.currency_ars, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ars, R.string.currency_ars_short), - MyUnit(MyUnitIDS.currency_atom, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_atom, R.string.currency_atom_short), - MyUnit(MyUnitIDS.currency_aud, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_aud, R.string.currency_aud_short), - MyUnit(MyUnitIDS.currency_avax, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_avax, R.string.currency_avax_short), - MyUnit(MyUnitIDS.currency_awg, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_awg, R.string.currency_awg_short), - MyUnit(MyUnitIDS.currency_azn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_azn, R.string.currency_azn_short), - MyUnit(MyUnitIDS.currency_bam, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bam, R.string.currency_bam_short), - MyUnit(MyUnitIDS.currency_bbd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bbd, R.string.currency_bbd_short), - MyUnit(MyUnitIDS.currency_bch, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bch, R.string.currency_bch_short), - MyUnit(MyUnitIDS.currency_bdt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bdt, R.string.currency_bdt_short), - MyUnit(MyUnitIDS.currency_bgn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bgn, R.string.currency_bgn_short), - MyUnit(MyUnitIDS.currency_bhd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bhd, R.string.currency_bhd_short), - MyUnit(MyUnitIDS.currency_bif, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bif, R.string.currency_bif_short), - MyUnit(MyUnitIDS.currency_bmd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bmd, R.string.currency_bmd_short), - MyUnit(MyUnitIDS.currency_bnb, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bnb, R.string.currency_bnb_short), - MyUnit(MyUnitIDS.currency_bnd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bnd, R.string.currency_bnd_short), - MyUnit(MyUnitIDS.currency_bob, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bob, R.string.currency_bob_short), - MyUnit(MyUnitIDS.currency_brl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_brl, R.string.currency_brl_short), - MyUnit(MyUnitIDS.currency_bsd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bsd, R.string.currency_bsd_short), - MyUnit(MyUnitIDS.currency_btc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_btc, R.string.currency_btc_short), - MyUnit(MyUnitIDS.currency_btn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_btn, R.string.currency_btn_short), - MyUnit(MyUnitIDS.currency_busd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_busd, R.string.currency_busd_short), - MyUnit(MyUnitIDS.currency_bwp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bwp, R.string.currency_bwp_short), - MyUnit(MyUnitIDS.currency_byn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_byn, R.string.currency_byn_short), - MyUnit(MyUnitIDS.currency_byr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_byr, R.string.currency_byr_short), - MyUnit(MyUnitIDS.currency_bzd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_bzd, R.string.currency_bzd_short), - MyUnit(MyUnitIDS.currency_cad, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cad, R.string.currency_cad_short), - MyUnit(MyUnitIDS.currency_cdf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cdf, R.string.currency_cdf_short), - MyUnit(MyUnitIDS.currency_chf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_chf, R.string.currency_chf_short), - MyUnit(MyUnitIDS.currency_chz, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_chz, R.string.currency_chz_short), - MyUnit(MyUnitIDS.currency_clf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_clf, R.string.currency_clf_short), - MyUnit(MyUnitIDS.currency_clp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_clp, R.string.currency_clp_short), - MyUnit(MyUnitIDS.currency_cny, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cny, R.string.currency_cny_short), - MyUnit(MyUnitIDS.currency_cop, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cop, R.string.currency_cop_short), - MyUnit(MyUnitIDS.currency_crc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_crc, R.string.currency_crc_short), - MyUnit(MyUnitIDS.currency_cro, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cro, R.string.currency_cro_short), - MyUnit(MyUnitIDS.currency_cuc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cuc, R.string.currency_cuc_short), - MyUnit(MyUnitIDS.currency_cup, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cup, R.string.currency_cup_short), - MyUnit(MyUnitIDS.currency_cve, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_cve, R.string.currency_cve_short), - MyUnit(MyUnitIDS.currency_czk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_czk, R.string.currency_czk_short), - MyUnit(MyUnitIDS.currency_dai, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_dai, R.string.currency_dai_short), - MyUnit(MyUnitIDS.currency_djf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_djf, R.string.currency_djf_short), - MyUnit(MyUnitIDS.currency_dkk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_dkk, R.string.currency_dkk_short), - MyUnit(MyUnitIDS.currency_doge, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_doge, R.string.currency_doge_short), - MyUnit(MyUnitIDS.currency_dop, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_dop, R.string.currency_dop_short), - MyUnit(MyUnitIDS.currency_dot, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_dot, R.string.currency_dot_short), - MyUnit(MyUnitIDS.currency_dzd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_dzd, R.string.currency_dzd_short), - MyUnit(MyUnitIDS.currency_egld, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_egld, R.string.currency_egld_short), - MyUnit(MyUnitIDS.currency_egp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_egp, R.string.currency_egp_short), - MyUnit(MyUnitIDS.currency_enj, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_enj, R.string.currency_enj_short), - MyUnit(MyUnitIDS.currency_ern, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ern, R.string.currency_ern_short), - MyUnit(MyUnitIDS.currency_etb, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_etb, R.string.currency_etb_short), - MyUnit(MyUnitIDS.currency_etc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_etc, R.string.currency_etc_short), - MyUnit(MyUnitIDS.currency_eth, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_eth, R.string.currency_eth_short), - MyUnit(MyUnitIDS.currency_eur, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_eur, R.string.currency_eur_short), - MyUnit(MyUnitIDS.currency_fil, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_fil, R.string.currency_fil_short), - MyUnit(MyUnitIDS.currency_fjd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_fjd, R.string.currency_fjd_short), - MyUnit(MyUnitIDS.currency_fkp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_fkp, R.string.currency_fkp_short), - MyUnit(MyUnitIDS.currency_ftt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ftt, R.string.currency_ftt_short), - MyUnit(MyUnitIDS.currency_gbp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gbp, R.string.currency_gbp_short), - MyUnit(MyUnitIDS.currency_gel, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gel, R.string.currency_gel_short), - MyUnit(MyUnitIDS.currency_ggp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ggp, R.string.currency_ggp_short), - MyUnit(MyUnitIDS.currency_ghs, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ghs, R.string.currency_ghs_short), - MyUnit(MyUnitIDS.currency_gip, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gip, R.string.currency_gip_short), - MyUnit(MyUnitIDS.currency_gmd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gmd, R.string.currency_gmd_short), - MyUnit(MyUnitIDS.currency_gnf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gnf, R.string.currency_gnf_short), - MyUnit(MyUnitIDS.currency_grt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_grt, R.string.currency_grt_short), - MyUnit(MyUnitIDS.currency_gtq, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gtq, R.string.currency_gtq_short), - MyUnit(MyUnitIDS.currency_gyd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_gyd, R.string.currency_gyd_short), - MyUnit(MyUnitIDS.currency_hkd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_hkd, R.string.currency_hkd_short), - MyUnit(MyUnitIDS.currency_hnl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_hnl, R.string.currency_hnl_short), - MyUnit(MyUnitIDS.currency_hrk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_hrk, R.string.currency_hrk_short), - MyUnit(MyUnitIDS.currency_htg, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_htg, R.string.currency_htg_short), - MyUnit(MyUnitIDS.currency_huf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_huf, R.string.currency_huf_short), - MyUnit(MyUnitIDS.currency_icp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_icp, R.string.currency_icp_short), - MyUnit(MyUnitIDS.currency_idr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_idr, R.string.currency_idr_short), - MyUnit(MyUnitIDS.currency_ils, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ils, R.string.currency_ils_short), - MyUnit(MyUnitIDS.currency_imp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_imp, R.string.currency_imp_short), - MyUnit(MyUnitIDS.currency_inj, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_inj, R.string.currency_inj_short), - MyUnit(MyUnitIDS.currency_inr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_inr, R.string.currency_inr_short), - MyUnit(MyUnitIDS.currency_iqd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_iqd, R.string.currency_iqd_short), - MyUnit(MyUnitIDS.currency_irr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_irr, R.string.currency_irr_short), - MyUnit(MyUnitIDS.currency_isk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_isk, R.string.currency_isk_short), - MyUnit(MyUnitIDS.currency_jep, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_jep, R.string.currency_jep_short), - MyUnit(MyUnitIDS.currency_jmd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_jmd, R.string.currency_jmd_short), - MyUnit(MyUnitIDS.currency_jod, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_jod, R.string.currency_jod_short), - MyUnit(MyUnitIDS.currency_jpy, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_jpy, R.string.currency_jpy_short), - MyUnit(MyUnitIDS.currency_kes, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kes, R.string.currency_kes_short), - MyUnit(MyUnitIDS.currency_kgs, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kgs, R.string.currency_kgs_short), - MyUnit(MyUnitIDS.currency_khr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_khr, R.string.currency_khr_short), - MyUnit(MyUnitIDS.currency_kmf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kmf, R.string.currency_kmf_short), - MyUnit(MyUnitIDS.currency_kpw, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kpw, R.string.currency_kpw_short), - MyUnit(MyUnitIDS.currency_krw, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_krw, R.string.currency_krw_short), - MyUnit(MyUnitIDS.currency_ksm, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ksm, R.string.currency_ksm_short), - MyUnit(MyUnitIDS.currency_kwd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kwd, R.string.currency_kwd_short), - MyUnit(MyUnitIDS.currency_kyd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kyd, R.string.currency_kyd_short), - MyUnit(MyUnitIDS.currency_kzt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_kzt, R.string.currency_kzt_short), - MyUnit(MyUnitIDS.currency_lak, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lak, R.string.currency_lak_short), - MyUnit(MyUnitIDS.currency_lbp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lbp, R.string.currency_lbp_short), - MyUnit(MyUnitIDS.currency_link, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_link, R.string.currency_link_short), - MyUnit(MyUnitIDS.currency_lkr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lkr, R.string.currency_lkr_short), - MyUnit(MyUnitIDS.currency_lrd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lrd, R.string.currency_lrd_short), - MyUnit(MyUnitIDS.currency_lsl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lsl, R.string.currency_lsl_short), - MyUnit(MyUnitIDS.currency_ltc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ltc, R.string.currency_ltc_short), - MyUnit(MyUnitIDS.currency_ltl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ltl, R.string.currency_ltl_short), - MyUnit(MyUnitIDS.currency_luna, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_luna, R.string.currency_luna_short), - MyUnit(MyUnitIDS.currency_lvl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lvl, R.string.currency_lvl_short), - MyUnit(MyUnitIDS.currency_lyd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_lyd, R.string.currency_lyd_short), - MyUnit(MyUnitIDS.currency_mad, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mad, R.string.currency_mad_short), - MyUnit(MyUnitIDS.currency_matic, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_matic, R.string.currency_matic_short), - MyUnit(MyUnitIDS.currency_mdl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mdl, R.string.currency_mdl_short), - MyUnit(MyUnitIDS.currency_mga, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mga, R.string.currency_mga_short), - MyUnit(MyUnitIDS.currency_mkd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mkd, R.string.currency_mkd_short), - MyUnit(MyUnitIDS.currency_mmk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mmk, R.string.currency_mmk_short), - MyUnit(MyUnitIDS.currency_mnt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mnt, R.string.currency_mnt_short), - MyUnit(MyUnitIDS.currency_mop, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mop, R.string.currency_mop_short), - MyUnit(MyUnitIDS.currency_mro, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mro, R.string.currency_mro_short), - MyUnit(MyUnitIDS.currency_mur, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mur, R.string.currency_mur_short), - MyUnit(MyUnitIDS.currency_mvr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mvr, R.string.currency_mvr_short), - MyUnit(MyUnitIDS.currency_mwk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mwk, R.string.currency_mwk_short), - MyUnit(MyUnitIDS.currency_mxn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mxn, R.string.currency_mxn_short), - MyUnit(MyUnitIDS.currency_myr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_myr, R.string.currency_myr_short), - MyUnit(MyUnitIDS.currency_mzn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_mzn, R.string.currency_mzn_short), - MyUnit(MyUnitIDS.currency_nad, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_nad, R.string.currency_nad_short), - MyUnit(MyUnitIDS.currency_ngn, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ngn, R.string.currency_ngn_short), - MyUnit(MyUnitIDS.currency_nio, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_nio, R.string.currency_nio_short), - MyUnit(MyUnitIDS.currency_nok, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_nok, R.string.currency_nok_short), - MyUnit(MyUnitIDS.currency_npr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_npr, R.string.currency_npr_short), - MyUnit(MyUnitIDS.currency_nzd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_nzd, R.string.currency_nzd_short), - MyUnit(MyUnitIDS.currency_omr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_omr, R.string.currency_omr_short), - MyUnit(MyUnitIDS.currency_one, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_one, R.string.currency_one_short), - MyUnit(MyUnitIDS.currency_pab, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pab, R.string.currency_pab_short), - MyUnit(MyUnitIDS.currency_pen, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pen, R.string.currency_pen_short), - MyUnit(MyUnitIDS.currency_pgk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pgk, R.string.currency_pgk_short), - MyUnit(MyUnitIDS.currency_php, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_php, R.string.currency_php_short), - MyUnit(MyUnitIDS.currency_pkr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pkr, R.string.currency_pkr_short), - MyUnit(MyUnitIDS.currency_pln, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pln, R.string.currency_pln_short), - MyUnit(MyUnitIDS.currency_pyg, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_pyg, R.string.currency_pyg_short), - MyUnit(MyUnitIDS.currency_qar, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_qar, R.string.currency_qar_short), - MyUnit(MyUnitIDS.currency_ron, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ron, R.string.currency_ron_short), - MyUnit(MyUnitIDS.currency_rsd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_rsd, R.string.currency_rsd_short), - MyUnit(MyUnitIDS.currency_rub, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_rub, R.string.currency_rub_short), - MyUnit(MyUnitIDS.currency_rwf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_rwf, R.string.currency_rwf_short), - MyUnit(MyUnitIDS.currency_sar, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sar, R.string.currency_sar_short), - MyUnit(MyUnitIDS.currency_sbd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sbd, R.string.currency_sbd_short), - MyUnit(MyUnitIDS.currency_scr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_scr, R.string.currency_scr_short), - MyUnit(MyUnitIDS.currency_sdg, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sdg, R.string.currency_sdg_short), - MyUnit(MyUnitIDS.currency_sek, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sek, R.string.currency_sek_short), - MyUnit(MyUnitIDS.currency_sgd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sgd, R.string.currency_sgd_short), - MyUnit(MyUnitIDS.currency_shib, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_shib, R.string.currency_shib_short), - MyUnit(MyUnitIDS.currency_shp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_shp, R.string.currency_shp_short), - MyUnit(MyUnitIDS.currency_sll, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sll, R.string.currency_sll_short), - MyUnit(MyUnitIDS.currency_sol, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sol, R.string.currency_sol_short), - MyUnit(MyUnitIDS.currency_sos, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_sos, R.string.currency_sos_short), - MyUnit(MyUnitIDS.currency_srd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_srd, R.string.currency_srd_short), - MyUnit(MyUnitIDS.currency_std, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_std, R.string.currency_std_short), - MyUnit(MyUnitIDS.currency_svc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_svc, R.string.currency_svc_short), - MyUnit(MyUnitIDS.currency_syp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_syp, R.string.currency_syp_short), - MyUnit(MyUnitIDS.currency_szl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_szl, R.string.currency_szl_short), - MyUnit(MyUnitIDS.currency_thb, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_thb, R.string.currency_thb_short), - MyUnit(MyUnitIDS.currency_theta, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_theta, R.string.currency_theta_short), - MyUnit(MyUnitIDS.currency_tjs, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_tjs, R.string.currency_tjs_short), - MyUnit(MyUnitIDS.currency_tmt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_tmt, R.string.currency_tmt_short), - MyUnit(MyUnitIDS.currency_tnd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_tnd, R.string.currency_tnd_short), - MyUnit(MyUnitIDS.currency_top, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_top, R.string.currency_top_short), - MyUnit(MyUnitIDS.currency_trx, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_trx, R.string.currency_trx_short), - MyUnit(MyUnitIDS.currency_try, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_try, R.string.currency_try_short), - MyUnit(MyUnitIDS.currency_ttd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ttd, R.string.currency_ttd_short), - MyUnit(MyUnitIDS.currency_twd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_twd, R.string.currency_twd_short), - MyUnit(MyUnitIDS.currency_tzs, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_tzs, R.string.currency_tzs_short), - MyUnit(MyUnitIDS.currency_uah, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_uah, R.string.currency_uah_short), - MyUnit(MyUnitIDS.currency_ugx, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_ugx, R.string.currency_ugx_short), - MyUnit(MyUnitIDS.currency_uni, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_uni, R.string.currency_uni_short), - MyUnit(MyUnitIDS.currency_usd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_usd, R.string.currency_usd_short), - MyUnit(MyUnitIDS.currency_usdc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_usdc, R.string.currency_usdc_short), - MyUnit(MyUnitIDS.currency_usdt, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_usdt, R.string.currency_usdt_short), - MyUnit(MyUnitIDS.currency_uyu, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_uyu, R.string.currency_uyu_short), - MyUnit(MyUnitIDS.currency_uzs, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_uzs, R.string.currency_uzs_short), - MyUnit(MyUnitIDS.currency_vef, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_vef, R.string.currency_vef_short), - MyUnit(MyUnitIDS.currency_vet, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_vet, R.string.currency_vet_short), - MyUnit(MyUnitIDS.currency_vnd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_vnd, R.string.currency_vnd_short), - MyUnit(MyUnitIDS.currency_vuv, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_vuv, R.string.currency_vuv_short), - MyUnit(MyUnitIDS.currency_wbtc, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_wbtc, R.string.currency_wbtc_short), - MyUnit(MyUnitIDS.currency_wst, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_wst, R.string.currency_wst_short), - MyUnit(MyUnitIDS.currency_xaf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xaf, R.string.currency_xaf_short), - MyUnit(MyUnitIDS.currency_xag, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xag, R.string.currency_xag_short), - MyUnit(MyUnitIDS.currency_xau, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xau, R.string.currency_xau_short), - MyUnit(MyUnitIDS.currency_xcd, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xcd, R.string.currency_xcd_short), - MyUnit(MyUnitIDS.currency_xdr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xdr, R.string.currency_xdr_short), - MyUnit(MyUnitIDS.currency_xlm, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xlm, R.string.currency_xlm_short), - MyUnit(MyUnitIDS.currency_xmr, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xmr, R.string.currency_xmr_short), - MyUnit(MyUnitIDS.currency_xof, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xof, R.string.currency_xof_short), - MyUnit(MyUnitIDS.currency_xpf, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xpf, R.string.currency_xpf_short), - MyUnit(MyUnitIDS.currency_xrp, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_xrp, R.string.currency_xrp_short), - MyUnit(MyUnitIDS.currency_yer, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_yer, R.string.currency_yer_short), - MyUnit(MyUnitIDS.currency_zar, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_zar, R.string.currency_zar_short), - MyUnit(MyUnitIDS.currency_zmk, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_zmk, R.string.currency_zmk_short), - MyUnit(MyUnitIDS.currency_zmw, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_zmw, R.string.currency_zmw_short), - MyUnit(MyUnitIDS.currency_zwl, BigDecimal.ONE, UnitGroup.CURRENCY, R.string.currency_zwl, R.string.currency_zwl_short), - ) -} diff --git a/app/src/main/java/com/sadellie/unitto/data/units/collections/DataTransfer.kt b/app/src/main/java/com/sadellie/unitto/data/units/collections/DataTransfer.kt deleted file mode 100644 index 88a9a68a..00000000 --- a/app/src/main/java/com/sadellie/unitto/data/units/collections/DataTransfer.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.sadellie.unitto.data.units.collections - -import com.sadellie.unitto.R -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.MyUnit -import com.sadellie.unitto.data.units.MyUnitIDS -import com.sadellie.unitto.data.units.UnitGroup -import java.math.BigDecimal - -val DATA_TRANSFER_COLLECTION: List by lazy { - listOf( - MyUnit(MyUnitIDS.bit_per_second, BigDecimal.valueOf(1), UnitGroup.DATA_TRANSFER, R.string.bit_per_second, R.string.bit_per_second_short), - MyUnit(MyUnitIDS.kibibit_per_second, BigDecimal.valueOf(1_024), UnitGroup.DATA_TRANSFER, R.string.kibibit_per_second, R.string.kibibit_per_second_short), - MyUnit(MyUnitIDS.kilobit_per_second, BigDecimal.valueOf(1_000), UnitGroup.DATA_TRANSFER, R.string.kilobit_per_second, R.string.kilobit_per_second_short), - MyUnit(MyUnitIDS.megabit_per_second, BigDecimal.valueOf(1_000_000), UnitGroup.DATA_TRANSFER, R.string.megabit_per_second, R.string.megabit_per_second_short), - MyUnit(MyUnitIDS.mebibit_per_second, BigDecimal.valueOf(1_048_576), UnitGroup.DATA_TRANSFER, R.string.mebibit_per_second, R.string.mebibit_per_second_short), - MyUnit(MyUnitIDS.gigabit_per_second, BigDecimal.valueOf(1_000_000_000), UnitGroup.DATA_TRANSFER, R.string.gigabit_per_second, R.string.gigabit_per_second_short), - MyUnit(MyUnitIDS.terabit_per_second, BigDecimal.valueOf(1_000_000_000_000), UnitGroup.DATA_TRANSFER, R.string.terabit_per_second, R.string.terabit_per_second_short), - MyUnit(MyUnitIDS.petabit_per_second, BigDecimal.valueOf(1_000_000_000_000_000), UnitGroup.DATA_TRANSFER, R.string.petabit_per_second, R.string.petabit_per_second_short), - MyUnit(MyUnitIDS.exabit_per_second, BigDecimal.valueOf(1_000_000_000_000_000_000), UnitGroup.DATA_TRANSFER, R.string.exabit_per_second, R.string.exabit_per_second_short), - MyUnit(MyUnitIDS.byte_per_second, BigDecimal.valueOf(8), UnitGroup.DATA_TRANSFER, R.string.byte_per_second, R.string.byte_per_second_short), - MyUnit(MyUnitIDS.kibibyte_per_second, BigDecimal.valueOf(8_192), UnitGroup.DATA_TRANSFER, R.string.kibibyte_per_second, R.string.kibibyte_per_second_short), - MyUnit(MyUnitIDS.kilobyte_per_second, BigDecimal.valueOf(8_000), UnitGroup.DATA_TRANSFER, R.string.kilobyte_per_second, R.string.kilobyte_per_second_short), - MyUnit(MyUnitIDS.megabyte_per_second, BigDecimal.valueOf(8_000_000), UnitGroup.DATA_TRANSFER, R.string.megabyte_per_second, R.string.megabyte_per_second_short), - MyUnit(MyUnitIDS.mebibyte_per_second, BigDecimal.valueOf(8_388_608), UnitGroup.DATA_TRANSFER, R.string.mebibyte_per_second, R.string.mebibyte_per_second_short), - MyUnit(MyUnitIDS.gigabyte_per_second, BigDecimal.valueOf(8_000_000_000), UnitGroup.DATA_TRANSFER, R.string.gigabyte_per_second, R.string.gigabyte_per_second_short), - MyUnit(MyUnitIDS.terabyte_per_second, BigDecimal.valueOf(8_000_000_000_000), UnitGroup.DATA_TRANSFER, R.string.terabyte_per_second, R.string.terabyte_per_second_short), - MyUnit(MyUnitIDS.petabyte_per_second, BigDecimal.valueOf(8_000_000_000_000_000), UnitGroup.DATA_TRANSFER, R.string.petabyte_per_second, R.string.petabyte_per_second_short), - MyUnit(MyUnitIDS.exabyte_per_second, BigDecimal.valueOf(8_000_000_000_000_000_000), UnitGroup.DATA_TRANSFER, R.string.exabyte_per_second, R.string.exabyte_per_second_short), - ) -} \ No newline at end of file diff --git a/app/src/main/java/com/sadellie/unitto/data/units/collections/Energy.kt b/app/src/main/java/com/sadellie/unitto/data/units/collections/Energy.kt deleted file mode 100644 index 0deefbdc..00000000 --- a/app/src/main/java/com/sadellie/unitto/data/units/collections/Energy.kt +++ /dev/null @@ -1,26 +0,0 @@ -package com.sadellie.unitto.data.units.collections - -import com.sadellie.unitto.R -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.MyUnit -import com.sadellie.unitto.data.units.MyUnitIDS -import com.sadellie.unitto.data.units.UnitGroup -import java.math.BigDecimal - -val ENERGY_COLLECTION: List by lazy { - listOf( - MyUnit(MyUnitIDS.electron_volt, BigDecimal.valueOf(0.160217733), UnitGroup.ENERGY, R.string.electron_volt, R.string.electron_volt_short), - MyUnit(MyUnitIDS.attojoule, BigDecimal.valueOf(1), UnitGroup.ENERGY, R.string.attojoule, R.string.attojoule_short), - MyUnit(MyUnitIDS.joule, BigDecimal.valueOf(1E+18), UnitGroup.ENERGY, R.string.joule, R.string.joule_short), - MyUnit(MyUnitIDS.kilojoule, BigDecimal.valueOf(1E+21), UnitGroup.ENERGY, R.string.kilojoule, R.string.kilojoule_short), - MyUnit(MyUnitIDS.megajoule, BigDecimal.valueOf(1E+24), UnitGroup.ENERGY, R.string.megajoule, R.string.megajoule_short), - MyUnit(MyUnitIDS.gigajoule, BigDecimal.valueOf(1E+27), UnitGroup.ENERGY, R.string.gigajoule, R.string.gigajoule_short), - MyUnit(MyUnitIDS.energy_ton, BigDecimal.valueOf(4.184E+27), UnitGroup.ENERGY, R.string.energy_ton, R.string.energy_ton_short), - MyUnit(MyUnitIDS.kiloton, BigDecimal.valueOf(4.184E+30), UnitGroup.ENERGY, R.string.kiloton, R.string.kiloton_short), - MyUnit(MyUnitIDS.megaton, BigDecimal.valueOf(4.184E+33), UnitGroup.ENERGY, R.string.megaton, R.string.megaton_short), - MyUnit(MyUnitIDS.gigaton, BigDecimal.valueOf(4.184E+36), UnitGroup.ENERGY, R.string.gigaton, R.string.gigaton_short), - MyUnit(MyUnitIDS.energy_horse_power_metric, BigDecimal.valueOf(2.6477955E+24), UnitGroup.ENERGY, R.string.energy_horse_power_metric, R.string.energy_horse_power_metric_short), - MyUnit(MyUnitIDS.calorie_th, BigDecimal.valueOf(4184E+15), UnitGroup.ENERGY, R.string.calorie_th, R.string.calorie_th_short), - MyUnit(MyUnitIDS.kilocalorie_th, BigDecimal.valueOf(4184E+18), UnitGroup.ENERGY, R.string.kilocalorie_th, R.string.kilocalorie_th_short), - ) -} diff --git a/app/src/main/java/com/sadellie/unitto/data/units/collections/FileSize.kt b/app/src/main/java/com/sadellie/unitto/data/units/collections/FileSize.kt deleted file mode 100644 index dc10e339..00000000 --- a/app/src/main/java/com/sadellie/unitto/data/units/collections/FileSize.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.sadellie.unitto.data.units.collections - -import com.sadellie.unitto.R -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.MyUnit -import com.sadellie.unitto.data.units.MyUnitIDS -import com.sadellie.unitto.data.units.UnitGroup -import java.math.BigDecimal - -val DATA_COLLECTION: List by lazy { - listOf( - MyUnit(MyUnitIDS.bit, BigDecimal.valueOf(1), UnitGroup.DATA, R.string.bit, R.string.bit_short), - MyUnit(MyUnitIDS.kibibit, BigDecimal.valueOf(1_024), UnitGroup.DATA, R.string.kibibit, R.string.kibibit_short), - MyUnit(MyUnitIDS.kilobit, BigDecimal.valueOf(1_000), UnitGroup.DATA, R.string.kilobit, R.string.kilobit_short), - MyUnit(MyUnitIDS.megabit, BigDecimal.valueOf(1_000_000), UnitGroup.DATA, R.string.megabit, R.string.megabit_short), - MyUnit(MyUnitIDS.mebibit, BigDecimal.valueOf(1_048_576), UnitGroup.DATA, R.string.mebibit, R.string.mebibit_short), - MyUnit(MyUnitIDS.gigabit, BigDecimal.valueOf(1_000_000_000), UnitGroup.DATA, R.string.gigabit, R.string.gigabit_short), - MyUnit(MyUnitIDS.terabit, BigDecimal.valueOf(1_000_000_000_000), UnitGroup.DATA, R.string.terabit, R.string.terabit_short), - MyUnit(MyUnitIDS.petabit, BigDecimal.valueOf(1_000_000_000_000_000), UnitGroup.DATA, R.string.petabit, R.string.petabit_short), - MyUnit(MyUnitIDS.exabit, BigDecimal.valueOf(1_000_000_000_000_000_000), UnitGroup.DATA, R.string.exabit, R.string.exabit_short), - MyUnit(MyUnitIDS.byte, BigDecimal.valueOf(8), UnitGroup.DATA, R.string.byte_, R.string.byte_short), - MyUnit(MyUnitIDS.kibibyte, BigDecimal.valueOf(8_192), UnitGroup.DATA, R.string.kibibyte, R.string.kibibyte_short), - MyUnit(MyUnitIDS.kilobyte, BigDecimal.valueOf(8_000), UnitGroup.DATA, R.string.kilobyte, R.string.kilobyte_short), - MyUnit(MyUnitIDS.megabyte, BigDecimal.valueOf(8_000_000), UnitGroup.DATA, R.string.megabyte, R.string.megabyte_short), - MyUnit(MyUnitIDS.mebibyte, BigDecimal.valueOf(8_388_608), UnitGroup.DATA, R.string.mebibyte, R.string.mebibyte_short), - MyUnit(MyUnitIDS.gigabyte, BigDecimal.valueOf(8_000_000_000), UnitGroup.DATA, R.string.gigabyte, R.string.gigabyte_short), - MyUnit(MyUnitIDS.terabyte, BigDecimal.valueOf(8_000_000_000_000), UnitGroup.DATA, R.string.terabyte, R.string.terabyte_short), - MyUnit(MyUnitIDS.petabyte, BigDecimal.valueOf(8_000_000_000_000_000), UnitGroup.DATA, R.string.petabyte, R.string.petabyte_short), - MyUnit(MyUnitIDS.exabyte, BigDecimal.valueOf(8_000_000_000_000_000_000), UnitGroup.DATA, R.string.exabyte, R.string.exabyte_short), - ) -} \ No newline at end of file diff --git a/app/src/main/java/com/sadellie/unitto/data/units/collections/Length.kt b/app/src/main/java/com/sadellie/unitto/data/units/collections/Length.kt deleted file mode 100644 index 5510ac1e..00000000 --- a/app/src/main/java/com/sadellie/unitto/data/units/collections/Length.kt +++ /dev/null @@ -1,38 +0,0 @@ -package com.sadellie.unitto.data.units.collections - -import com.sadellie.unitto.R -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.MyUnit -import com.sadellie.unitto.data.units.MyUnitIDS -import com.sadellie.unitto.data.units.UnitGroup -import java.math.BigDecimal - -val LENGTH_COLLECTION: List by lazy { - listOf( - MyUnit(MyUnitIDS.attometer, BigDecimal.valueOf(1.0), UnitGroup.LENGTH, R.string.attometer, R.string.attometer_short), - MyUnit(MyUnitIDS.nanometer, BigDecimal.valueOf(1.0E+9), UnitGroup.LENGTH, R.string.nanometer, R.string.nanometer_short), - MyUnit(MyUnitIDS.micrometer, BigDecimal.valueOf(1.0E+12), UnitGroup.LENGTH, R.string.micrometer, R.string.micrometer_short), - MyUnit(MyUnitIDS.millimeter, BigDecimal.valueOf(1.0E+15), UnitGroup.LENGTH, R.string.millimeter, R.string.millimeter_short), - MyUnit(MyUnitIDS.centimeter, BigDecimal.valueOf(1.0E+16), UnitGroup.LENGTH, R.string.centimeter, R.string.centimeter_short), - MyUnit(MyUnitIDS.decimeter, BigDecimal.valueOf(1.0E+17), UnitGroup.LENGTH, R.string.decimeter, R.string.decimeter_short), - MyUnit(MyUnitIDS.meter, BigDecimal.valueOf(1.0E+18), UnitGroup.LENGTH, R.string.meter, R.string.meter_short), - MyUnit(MyUnitIDS.kilometer, BigDecimal.valueOf(1.0E+21), UnitGroup.LENGTH, R.string.kilometer, R.string.kilometer_short), - MyUnit(MyUnitIDS.inch, BigDecimal.valueOf(25_400_000_000_000_000), UnitGroup.LENGTH, R.string.inch, R.string.inch_short), - MyUnit(MyUnitIDS.foot, BigDecimal.valueOf(304_800_000_000_002_200), UnitGroup.LENGTH, R.string.foot, R.string.foot_short), - MyUnit(MyUnitIDS.yard, BigDecimal.valueOf(914_400_000_000_006_400), UnitGroup.LENGTH, R.string.yard, R.string.yard_short), - MyUnit(MyUnitIDS.mile, BigDecimal.valueOf(1_609_344_000_000_010_500_000.0), UnitGroup.LENGTH, R.string.mile, R.string.mile_short), - MyUnit(MyUnitIDS.light_year, BigDecimal.valueOf(9.460730472E+33), UnitGroup.LENGTH, R.string.light_year, R.string.light_year_short), - MyUnit(MyUnitIDS.parsec, BigDecimal.valueOf(3.08567758149136E+34), UnitGroup.LENGTH, R.string.parsec, R.string.parsec_short), - MyUnit(MyUnitIDS.kiloparsec, BigDecimal.valueOf(3.08567758149136E+37), UnitGroup.LENGTH, R.string.kiloparsec, R.string.kiloparsec_short), - MyUnit(MyUnitIDS.megaparsec, BigDecimal.valueOf(3.08567758149136E+40), UnitGroup.LENGTH, R.string.megaparsec, R.string.megaparsec_short), - MyUnit(MyUnitIDS.mercury_equatorial_radius, BigDecimal.valueOf(2.4397E+24), UnitGroup.LENGTH, R.string.mercury_equatorial_radius, R.string.mercury_equatorial_radius_short), - MyUnit(MyUnitIDS.venus_equatorial_radius, BigDecimal.valueOf(6.0518E+24), UnitGroup.LENGTH, R.string.venus_equatorial_radius, R.string.venus_equatorial_radius_short), - MyUnit(MyUnitIDS.earth_equatorial_radius, BigDecimal.valueOf(6.371E+24), UnitGroup.LENGTH, R.string.earth_equatorial_radius, R.string.earth_equatorial_radius_short), - MyUnit(MyUnitIDS.mars_equatorial_radius, BigDecimal.valueOf(3.3895E+24), UnitGroup.LENGTH, R.string.mars_equatorial_radius, R.string.mars_equatorial_radius_short), - MyUnit(MyUnitIDS.jupiter_equatorial_radius, BigDecimal.valueOf(6.9911E+25), UnitGroup.LENGTH, R.string.jupiter_equatorial_radius, R.string.jupiter_equatorial_radius_short), - MyUnit(MyUnitIDS.saturn_equatorial_radius, BigDecimal.valueOf(5.8232E+25), UnitGroup.LENGTH, R.string.saturn_equatorial_radius, R.string.saturn_equatorial_radius_short), - MyUnit(MyUnitIDS.uranus_equatorial_radius, BigDecimal.valueOf(2.5362E+25), UnitGroup.LENGTH, R.string.uranus_equatorial_radius, R.string.uranus_equatorial_radius_short), - MyUnit(MyUnitIDS.neptune_equatorial_radius, BigDecimal.valueOf(2.4622E+25), UnitGroup.LENGTH, R.string.neptune_equatorial_radius, R.string.neptune_equatorial_radius_short), - MyUnit(MyUnitIDS.sun_equatorial_radius, BigDecimal.valueOf(6.95508E+26), UnitGroup.LENGTH, R.string.sun_equatorial_radius, R.string.sun_equatorial_radius_short), - ) -} diff --git a/app/src/main/java/com/sadellie/unitto/data/units/collections/Mass.kt b/app/src/main/java/com/sadellie/unitto/data/units/collections/Mass.kt deleted file mode 100644 index 6c2daad5..00000000 --- a/app/src/main/java/com/sadellie/unitto/data/units/collections/Mass.kt +++ /dev/null @@ -1,32 +0,0 @@ -package com.sadellie.unitto.data.units.collections - -import com.sadellie.unitto.R -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.MyUnit -import com.sadellie.unitto.data.units.MyUnitIDS -import com.sadellie.unitto.data.units.UnitGroup -import java.math.BigDecimal - -val MASS_COLLECTION: List by lazy { - listOf( - MyUnit(MyUnitIDS.electron_mass_rest, BigDecimal.valueOf(9.1093897E-28), UnitGroup.MASS, R.string.electron_mass_rest, R.string.electron_mass_rest_short), - MyUnit(MyUnitIDS.atomic_mass_unit, BigDecimal.valueOf(1.6605402E-24), UnitGroup.MASS, R.string.atomic_mass_unit, R.string.atomic_mass_unit_short), - MyUnit(MyUnitIDS.milligram, BigDecimal.valueOf(1E-3), UnitGroup.MASS, R.string.milligram, R.string.milligram_short), - MyUnit(MyUnitIDS.gram, BigDecimal.valueOf(1), UnitGroup.MASS, R.string.gram, R.string.gram_short), - MyUnit(MyUnitIDS.kilogram, BigDecimal.valueOf(1E+3), UnitGroup.MASS, R.string.kilogram, R.string.kilogram_short), - MyUnit(MyUnitIDS.metric_ton, BigDecimal.valueOf(1E+6), UnitGroup.MASS, R.string.metric_ton, R.string.metric_ton_short), - MyUnit(MyUnitIDS.imperial_ton, BigDecimal.valueOf(1016046.9088), UnitGroup.MASS, R.string.imperial_ton, R.string.imperial_ton_short), - MyUnit(MyUnitIDS.ounce, BigDecimal.valueOf(28.349523125), UnitGroup.MASS, R.string.ounce, R.string.ounce_short), - MyUnit(MyUnitIDS.carat, BigDecimal.valueOf(0.2), UnitGroup.MASS, R.string.carat, R.string.carat_short), - MyUnit(MyUnitIDS.pound, BigDecimal.valueOf(453.59237), UnitGroup.MASS, R.string.pound, R.string.pound_short), - MyUnit(MyUnitIDS.mercury_mass, BigDecimal.valueOf(3.30104E+26), UnitGroup.MASS, R.string.mercury_mass, R.string.mercury_mass_short), - MyUnit(MyUnitIDS.venus_mass, BigDecimal.valueOf(4.86732E+27), UnitGroup.MASS, R.string.venus_mass, R.string.venus_mass_short), - MyUnit(MyUnitIDS.earth_mass, BigDecimal.valueOf(5.97219E+27), UnitGroup.MASS, R.string.earth_mass, R.string.earth_mass_short), - MyUnit(MyUnitIDS.mars_mass, BigDecimal.valueOf(6.41693E+26), UnitGroup.MASS, R.string.mars_mass, R.string.mars_mass_short), - MyUnit(MyUnitIDS.jupiter_mass, BigDecimal.valueOf(1.89813E+30), UnitGroup.MASS, R.string.jupiter_mass, R.string.jupiter_mass_short), - MyUnit(MyUnitIDS.saturn_mass, BigDecimal.valueOf(5.68319E+29), UnitGroup.MASS, R.string.saturn_mass, R.string.saturn_mass_short), - MyUnit(MyUnitIDS.uranus_mass, BigDecimal.valueOf(8.68103E+28), UnitGroup.MASS, R.string.uranus_mass, R.string.uranus_mass_short), - MyUnit(MyUnitIDS.neptune_mass, BigDecimal.valueOf(1.0241E+29), UnitGroup.MASS, R.string.neptune_mass, R.string.neptune_mass_short), - MyUnit(MyUnitIDS.sun_mass, BigDecimal.valueOf(1.9891E+33), UnitGroup.MASS, R.string.sun_mass, R.string.sun_mass_short), - ) -} diff --git a/app/src/main/java/com/sadellie/unitto/data/units/collections/Power.kt b/app/src/main/java/com/sadellie/unitto/data/units/collections/Power.kt deleted file mode 100644 index 78687ea5..00000000 --- a/app/src/main/java/com/sadellie/unitto/data/units/collections/Power.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.sadellie.unitto.data.units.collections - -import com.sadellie.unitto.R -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.MyUnit -import com.sadellie.unitto.data.units.MyUnitIDS -import com.sadellie.unitto.data.units.UnitGroup -import java.math.BigDecimal - -val POWER_COLLECTION: List by lazy { - listOf( - MyUnit(MyUnitIDS.attowatt, BigDecimal.valueOf(1), UnitGroup.POWER, R.string.attowatt, R.string.attowatt_short), - MyUnit(MyUnitIDS.watt, BigDecimal.valueOf(1_000_000_000_000_000_000), UnitGroup.POWER, R.string.watt, R.string.watt_short), - MyUnit(MyUnitIDS.kilowatt, BigDecimal.valueOf(1.0E+21), UnitGroup.POWER, R.string.kilowatt, R.string.kilowatt_short), - MyUnit(MyUnitIDS.megawatt, BigDecimal.valueOf(1.0E+24), UnitGroup.POWER, R.string.megawatt, R.string.megawatt_short), - MyUnit(MyUnitIDS.horse_power_mechanical, BigDecimal.valueOf(745_699_871_582_285_700_000.0), UnitGroup.POWER, R.string.horse_power_mechanical, R.string.horse_power_mechanical_short), - ) -} diff --git a/app/src/main/java/com/sadellie/unitto/data/units/collections/Pressure.kt b/app/src/main/java/com/sadellie/unitto/data/units/collections/Pressure.kt deleted file mode 100644 index 2bb60776..00000000 --- a/app/src/main/java/com/sadellie/unitto/data/units/collections/Pressure.kt +++ /dev/null @@ -1,35 +0,0 @@ -package com.sadellie.unitto.data.units.collections - -import com.sadellie.unitto.R -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.MyUnit -import com.sadellie.unitto.data.units.MyUnitIDS -import com.sadellie.unitto.data.units.UnitGroup -import java.math.BigDecimal - -val PRESSURE_COLLECTION: List by lazy { - listOf( - MyUnit(MyUnitIDS.attopascal, BigDecimal.valueOf(1), UnitGroup.PRESSURE, R.string.attopascal, R.string.attopascal_short), - MyUnit(MyUnitIDS.femtopascal, BigDecimal.valueOf(1E+3), UnitGroup.PRESSURE, R.string.femtopascal, R.string.femtopascal_short), - MyUnit(MyUnitIDS.picopascal, BigDecimal.valueOf(1E+6), UnitGroup.PRESSURE, R.string.picopascal, R.string.picopascal_short), - MyUnit(MyUnitIDS.nanopascal, BigDecimal.valueOf(1E+9), UnitGroup.PRESSURE, R.string.nanopascal, R.string.nanopascal_short), - MyUnit(MyUnitIDS.micropascal, BigDecimal.valueOf(1E+12), UnitGroup.PRESSURE, R.string.micropascal, R.string.micropascal_short), - MyUnit(MyUnitIDS.millipascal, BigDecimal.valueOf(1E+15), UnitGroup.PRESSURE, R.string.millipascal, R.string.millipascal_short), - MyUnit(MyUnitIDS.centipascal, BigDecimal.valueOf(1E+16), UnitGroup.PRESSURE, R.string.centipascal, R.string.centipascal_short), - MyUnit(MyUnitIDS.decipascal, BigDecimal.valueOf(1E+17), UnitGroup.PRESSURE, R.string.decipascal, R.string.decipascal_short), - MyUnit(MyUnitIDS.pascal, BigDecimal.valueOf(1E+18), UnitGroup.PRESSURE, R.string.pascal, R.string.pascal_short), - MyUnit(MyUnitIDS.dekapascal, BigDecimal.valueOf(1E+19), UnitGroup.PRESSURE, R.string.dekapascal, R.string.dekapascal_short), - MyUnit(MyUnitIDS.hectopascal, BigDecimal.valueOf(1E+20), UnitGroup.PRESSURE, R.string.hectopascal, R.string.hectopascal_short), - MyUnit(MyUnitIDS.bar, BigDecimal.valueOf(1E+23), UnitGroup.PRESSURE, R.string.bar, R.string.bar_short), - MyUnit(MyUnitIDS.megapascal, BigDecimal.valueOf(1E+24), UnitGroup.PRESSURE, R.string.megapascal, R.string.megapascal_short), - MyUnit(MyUnitIDS.gigapascal, BigDecimal.valueOf(1E+27), UnitGroup.PRESSURE, R.string.gigapascal, R.string.gigapascal_short), - MyUnit(MyUnitIDS.terapascal, BigDecimal.valueOf(1E+30), UnitGroup.PRESSURE, R.string.terapascal, R.string.terapascal_short), - MyUnit(MyUnitIDS.petapascal, BigDecimal.valueOf(1E+33), UnitGroup.PRESSURE, R.string.petapascal, R.string.petapascal_short), - MyUnit(MyUnitIDS.exapascal, BigDecimal.valueOf(1E+36), UnitGroup.PRESSURE, R.string.exapascal, R.string.exapascal_short), - MyUnit(MyUnitIDS.psi, BigDecimal.valueOf(6.8947572931783E+21), UnitGroup.PRESSURE, R.string.psi, R.string.psi_short), - MyUnit(MyUnitIDS.ksi, BigDecimal.valueOf(6.8947572931783E+24), UnitGroup.PRESSURE, R.string.ksi, R.string.ksi_short), - MyUnit(MyUnitIDS.standard_atmosphere, BigDecimal.valueOf(101.325E+21), UnitGroup.PRESSURE, R.string.standard_atmosphere, R.string.standard_atmosphere_short), - MyUnit(MyUnitIDS.torr, BigDecimal.valueOf(1.3332236842108281E+20), UnitGroup.PRESSURE, R.string.torr, R.string.torr_short), - MyUnit(MyUnitIDS.millimeter_of_mercury, BigDecimal.valueOf(1.3332236842108281E+20), UnitGroup.PRESSURE, R.string.millimeter_of_mercury, R.string.millimeter_of_mercury_short), - ) -} diff --git a/app/src/main/java/com/sadellie/unitto/data/units/collections/Speed.kt b/app/src/main/java/com/sadellie/unitto/data/units/collections/Speed.kt deleted file mode 100644 index 01fff370..00000000 --- a/app/src/main/java/com/sadellie/unitto/data/units/collections/Speed.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.sadellie.unitto.data.units.collections - -import com.sadellie.unitto.R -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.MyUnit -import com.sadellie.unitto.data.units.MyUnitIDS -import com.sadellie.unitto.data.units.UnitGroup -import java.math.BigDecimal - -val SPEED_COLLECTION: List by lazy { - listOf( - MyUnit(MyUnitIDS.millimeter_per_hour, BigDecimal.valueOf(1), UnitGroup.SPEED, R.string.millimeter_per_hour, R.string.millimeter_per_hour_short), - MyUnit(MyUnitIDS.millimeter_per_minute, BigDecimal.valueOf(60), UnitGroup.SPEED, R.string.millimeter_per_minute, R.string.millimeter_per_minute_short), - MyUnit(MyUnitIDS.millimeter_per_second, BigDecimal.valueOf(3_600), UnitGroup.SPEED, R.string.millimeter_per_second, R.string.millimeter_per_second_short), - MyUnit(MyUnitIDS.centimeter_per_hour, BigDecimal.valueOf(10), UnitGroup.SPEED, R.string.centimeter_per_hour, R.string.centimeter_per_hour_short), - MyUnit(MyUnitIDS.centimeter_per_minute, BigDecimal.valueOf(600), UnitGroup.SPEED, R.string.centimeter_per_minute, R.string.centimeter_per_minute_short), - MyUnit(MyUnitIDS.centimeter_per_second, BigDecimal.valueOf(36_000), UnitGroup.SPEED, R.string.centimeter_per_second, R.string.centimeter_per_second_short), - MyUnit(MyUnitIDS.meter_per_hour, BigDecimal.valueOf(1_000), UnitGroup.SPEED, R.string.meter_per_hour, R.string.meter_per_hour_short), - MyUnit(MyUnitIDS.meter_per_minute, BigDecimal.valueOf(60_000), UnitGroup.SPEED, R.string.meter_per_minute, R.string.meter_per_minute_short), - MyUnit(MyUnitIDS.meter_per_second, BigDecimal.valueOf(3_600_000), UnitGroup.SPEED, R.string.meter_per_second, R.string.meter_per_second_short), - MyUnit(MyUnitIDS.kilometer_per_hour, BigDecimal.valueOf(1_000_000), UnitGroup.SPEED, R.string.kilometer_per_hour, R.string.kilometer_per_hour_short), - MyUnit(MyUnitIDS.kilometer_per_minute, BigDecimal.valueOf(60_000_000), UnitGroup.SPEED, R.string.kilometer_per_minute, R.string.kilometer_per_minute_short), - MyUnit(MyUnitIDS.kilometer_per_second, BigDecimal.valueOf(3_600_000_000), UnitGroup.SPEED, R.string.kilometer_per_second, R.string.kilometer_per_second_short), - MyUnit(MyUnitIDS.foot_per_hour, BigDecimal.valueOf(304.8), UnitGroup.SPEED, R.string.foot_per_hour, R.string.foot_per_hour_short), - MyUnit(MyUnitIDS.foot_per_minute, BigDecimal.valueOf(18_288), UnitGroup.SPEED, R.string.foot_per_minute, R.string.foot_per_minute_short), - MyUnit(MyUnitIDS.foot_per_second, BigDecimal.valueOf(1_097_280), UnitGroup.SPEED, R.string.foot_per_second, R.string.foot_per_second_short), - MyUnit(MyUnitIDS.yard_per_hour, BigDecimal.valueOf(914.4), UnitGroup.SPEED, R.string.yard_per_hour, R.string.yard_per_hour_short), - MyUnit(MyUnitIDS.yard_per_minute, BigDecimal.valueOf(54_864), UnitGroup.SPEED, R.string.yard_per_minute, R.string.yard_per_minute_short), - MyUnit(MyUnitIDS.yard_per_second, BigDecimal.valueOf(3_291_840), UnitGroup.SPEED, R.string.yard_per_second, R.string.yard_per_second_short), - MyUnit(MyUnitIDS.mile_per_hour, BigDecimal.valueOf(1_609_344), UnitGroup.SPEED, R.string.mile_per_hour, R.string.mile_per_hour_short), - MyUnit(MyUnitIDS.mile_per_minute, BigDecimal.valueOf(96_560_640), UnitGroup.SPEED, R.string.mile_per_minute, R.string.mile_per_minute_short), - MyUnit(MyUnitIDS.mile_per_second, BigDecimal.valueOf(5_793_638_400), UnitGroup.SPEED, R.string.mile_per_second, R.string.mile_per_second_short), - MyUnit(MyUnitIDS.knot, BigDecimal.valueOf(1_852_000), UnitGroup.SPEED, R.string.knot, R.string.knot_short), - MyUnit(MyUnitIDS.velocity_of_light_in_vacuum, BigDecimal.valueOf(1_079_252_848_799_998), UnitGroup.SPEED, R.string.velocity_of_light_in_vacuum, R.string.velocity_of_light_in_vacuum_short), - MyUnit(MyUnitIDS.cosmic_velocity_first, BigDecimal.valueOf(28_440_000_000), UnitGroup.SPEED, R.string.cosmic_velocity_first, R.string.cosmic_velocity_first_short), - MyUnit(MyUnitIDS.cosmic_velocity_second, BigDecimal.valueOf(40_320_000_000), UnitGroup.SPEED, R.string.cosmic_velocity_second, R.string.cosmic_velocity_second_short), - MyUnit(MyUnitIDS.cosmic_velocity_third, BigDecimal.valueOf(60_012_000_000), UnitGroup.SPEED, R.string.cosmic_velocity_third, R.string.cosmic_velocity_third_short), - MyUnit(MyUnitIDS.earths_orbital_speed, BigDecimal.valueOf(107_154_000_000), UnitGroup.SPEED, R.string.earths_orbital_speed, R.string.earths_orbital_speed_short), - MyUnit(MyUnitIDS.mach, BigDecimal.valueOf(1_236_960_000), UnitGroup.SPEED, R.string.mach, R.string.mach_short), - MyUnit(MyUnitIDS.mach_si_standard, BigDecimal.valueOf(1_062_167_040), UnitGroup.SPEED, R.string.mach_si_standard, R.string.mach_si_standard_short),) -} diff --git a/app/src/main/java/com/sadellie/unitto/data/units/collections/Temperature.kt b/app/src/main/java/com/sadellie/unitto/data/units/collections/Temperature.kt deleted file mode 100644 index 994b2b4c..00000000 --- a/app/src/main/java/com/sadellie/unitto/data/units/collections/Temperature.kt +++ /dev/null @@ -1,98 +0,0 @@ -package com.sadellie.unitto.data.units.collections - -import com.sadellie.unitto.R -import com.sadellie.unitto.data.preferences.MAX_PRECISION -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.MyUnitIDS -import com.sadellie.unitto.data.units.UnitGroup -import com.sadellie.unitto.screens.setMinimumRequiredScale -import java.math.BigDecimal -import java.math.RoundingMode - -val TEMPERATURE_COLLECTION: List by lazy { - listOf( - object : AbstractUnit( - unitId = MyUnitIDS.celsius, - basicUnit = BigDecimal.ONE, - group = UnitGroup.TEMPERATURE, - displayName = R.string.celsius, - shortName = R.string.celsius_short, - ) { - override fun convert(unitTo: AbstractUnit, value: BigDecimal, scale: Int): BigDecimal { - return when (unitTo.unitId) { - MyUnitIDS.fahrenheit -> { - value - .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) - .times(BigDecimal.valueOf(1.8)) - .plus(BigDecimal(32)) - } - MyUnitIDS.kelvin -> { - value - .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) - .plus(BigDecimal.valueOf(273.15)) - } - else -> value - } - .setMinimumRequiredScale(scale) - .stripTrailingZeros() - } - }, - object : AbstractUnit( - unitId = MyUnitIDS.fahrenheit, - basicUnit = BigDecimal.ONE, - group = UnitGroup.TEMPERATURE, - displayName = R.string.fahrenheit, - shortName = R.string.fahrenheit_short, - ) { - override fun convert(unitTo: AbstractUnit, value: BigDecimal, scale: Int): BigDecimal { - return when (unitTo.unitId) { - MyUnitIDS.celsius -> { - value - .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) - .minus(BigDecimal(32)) - .times(BigDecimal(5)) - .div(BigDecimal(9)) - } - MyUnitIDS.kelvin -> { - value - .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) - .minus(BigDecimal(32)) - .times(BigDecimal(5)) - .div(BigDecimal(9)) - .add(BigDecimal.valueOf(273.15)) - } - else -> value - } - .setMinimumRequiredScale(scale) - .stripTrailingZeros() - } - }, - object : AbstractUnit( - unitId = MyUnitIDS.kelvin, - basicUnit = BigDecimal.ONE, - group = UnitGroup.TEMPERATURE, - displayName = R.string.kelvin, - shortName = R.string.kelvin_short, - ) { - override fun convert(unitTo: AbstractUnit, value: BigDecimal, scale: Int): BigDecimal { - return when (unitTo.unitId) { - MyUnitIDS.celsius -> { - value - .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) - .minus(BigDecimal(273.15)) - } - MyUnitIDS.fahrenheit -> { - value - .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN) - .minus(BigDecimal.valueOf(273.15)) - .times(BigDecimal.valueOf(1.8)) - .plus(BigDecimal(32)) - } - else -> value - } - .setMinimumRequiredScale(scale) - .stripTrailingZeros() - } - }, - ) -} diff --git a/app/src/main/java/com/sadellie/unitto/data/units/collections/Time.kt b/app/src/main/java/com/sadellie/unitto/data/units/collections/Time.kt deleted file mode 100644 index cfb63895..00000000 --- a/app/src/main/java/com/sadellie/unitto/data/units/collections/Time.kt +++ /dev/null @@ -1,23 +0,0 @@ -package com.sadellie.unitto.data.units.collections - -import com.sadellie.unitto.R -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.MyUnit -import com.sadellie.unitto.data.units.MyUnitIDS -import com.sadellie.unitto.data.units.UnitGroup -import java.math.BigDecimal - -val TIME_COLLECTION: List by lazy { - listOf( - MyUnit(MyUnitIDS.attosecond, BigDecimal.valueOf(1), UnitGroup.TIME, R.string.attosecond, R.string.attosecond_short), - MyUnit(MyUnitIDS.nanosecond, BigDecimal.valueOf(1_000_000_000), UnitGroup.TIME, R.string.nanosecond, R.string.nanosecond_short), - MyUnit(MyUnitIDS.microsecond, BigDecimal.valueOf(1_000_000_000_000), UnitGroup.TIME, R.string.microsecond, R.string.microsecond_short), - MyUnit(MyUnitIDS.millisecond, BigDecimal.valueOf(1_000_000_000_000_000), UnitGroup.TIME, R.string.millisecond, R.string.millisecond_short), - MyUnit(MyUnitIDS.jiffy, BigDecimal.valueOf(10_000_000_000_000_000), UnitGroup.TIME, R.string.jiffy, R.string.jiffy_short), - MyUnit(MyUnitIDS.second, BigDecimal.valueOf(1_000_000_000_000_000_000), UnitGroup.TIME, R.string.second, R.string.second_short), - MyUnit(MyUnitIDS.minute, BigDecimal.valueOf(60_000_000_000_000_000_000.0), UnitGroup.TIME, R.string.minute, R.string.minute_short), - MyUnit(MyUnitIDS.hour, BigDecimal.valueOf(3_600_000_000_000_000_000_000.0), UnitGroup.TIME, R.string.hour, R.string.hour_short), - MyUnit(MyUnitIDS.day, BigDecimal.valueOf(86_400_000_000_000_000_000_000.0), UnitGroup.TIME, R.string.day, R.string.day_short), - MyUnit(MyUnitIDS.week, BigDecimal.valueOf(604_800_000_000_000_000_000_000.0), UnitGroup.TIME, R.string.week, R.string.week_short), - ) -} diff --git a/app/src/main/java/com/sadellie/unitto/data/units/collections/Volume.kt b/app/src/main/java/com/sadellie/unitto/data/units/collections/Volume.kt deleted file mode 100644 index fcd3088d..00000000 --- a/app/src/main/java/com/sadellie/unitto/data/units/collections/Volume.kt +++ /dev/null @@ -1,34 +0,0 @@ -package com.sadellie.unitto.data.units.collections - -import com.sadellie.unitto.R -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.MyUnit -import com.sadellie.unitto.data.units.MyUnitIDS -import com.sadellie.unitto.data.units.UnitGroup -import java.math.BigDecimal - -val VOLUME_COLLECTION: List by lazy { - listOf( - MyUnit(MyUnitIDS.attoliter, BigDecimal.valueOf(1), UnitGroup.VOLUME, R.string.attoliter, R.string.attoliter_short), - MyUnit(MyUnitIDS.milliliter, BigDecimal.valueOf(1_000_000_000_000_000), UnitGroup.VOLUME, R.string.milliliter, R.string.milliliter_short), - MyUnit(MyUnitIDS.liter, BigDecimal.valueOf(1_000_000_000_000_000_000), UnitGroup.VOLUME, R.string.liter, R.string.liter_short), - MyUnit(MyUnitIDS.us_liquid_gallon, BigDecimal.valueOf(3_785_411_783_999_977_000), UnitGroup.VOLUME, R.string.us_liquid_gallon, R.string.us_liquid_gallon_short), - MyUnit(MyUnitIDS.us_liquid_quart, BigDecimal.valueOf(946_352_945_999_994_200), UnitGroup.VOLUME, R.string.us_liquid_quart, R.string.us_liquid_quart_short), - MyUnit(MyUnitIDS.us_liquid_pint, BigDecimal.valueOf(473_176_472_999_997_100), UnitGroup.VOLUME, R.string.us_liquid_pint, R.string.us_liquid_pint_short), - MyUnit(MyUnitIDS.us_legal_cup, BigDecimal.valueOf(236_588_236_499_998_560), UnitGroup.VOLUME, R.string.us_legal_cup, R.string.us_legal_cup_short), - MyUnit(MyUnitIDS.us_fluid_ounce, BigDecimal.valueOf(29_573_529_562_499_996), UnitGroup.VOLUME, R.string.us_fluid_ounce, R.string.us_fluid_ounce_short), - MyUnit(MyUnitIDS.us_tablespoon, BigDecimal.valueOf(14_786_764_781_249_998), UnitGroup.VOLUME, R.string.us_tablespoon, R.string.us_tablespoon_short), - MyUnit(MyUnitIDS.us_teaspoon, BigDecimal.valueOf(4_928_921_593_749_952), UnitGroup.VOLUME, R.string.us_teaspoon, R.string.us_teaspoon_short), - MyUnit(MyUnitIDS.imperial_gallon, BigDecimal.valueOf(4_546_089_999_999_954_400), UnitGroup.VOLUME, R.string.imperial_gallon, R.string.imperial_gallon_short), - MyUnit(MyUnitIDS.imperial_quart, BigDecimal.valueOf(1_136_522_500_000_001_400), UnitGroup.VOLUME, R.string.imperial_quart, R.string.imperial_quart_short), - MyUnit(MyUnitIDS.imperial_pint, BigDecimal.valueOf(568_261_250_000_000_700), UnitGroup.VOLUME, R.string.imperial_pint, R.string.imperial_pint_short), - MyUnit(MyUnitIDS.imperial_cup, BigDecimal.valueOf(284_130_625_000_000_350), UnitGroup.VOLUME, R.string.imperial_cup, R.string.imperial_cup_short), - MyUnit(MyUnitIDS.imperial_fluid_ounce, BigDecimal.valueOf(28_413_062_500_000_036), UnitGroup.VOLUME, R.string.imperial_fluid_ounce, R.string.imperial_fluid_ounce_short), - MyUnit(MyUnitIDS.imperial_tablespoon, BigDecimal.valueOf(17_758_164_062_500_148), UnitGroup.VOLUME, R.string.imperial_tablespoon, R.string.imperial_tablespoon_short), - MyUnit(MyUnitIDS.imperial_teaspoon, BigDecimal.valueOf(5_919_388_020_833_314), UnitGroup.VOLUME, R.string.imperial_teaspoon, R.string.imperial_teaspoon_short), - MyUnit(MyUnitIDS.cubic_millimeter, BigDecimal.valueOf(1_000_000_000_000), UnitGroup.VOLUME, R.string.cubic_millimeter, R.string.cubic_millimeter_short), - MyUnit(MyUnitIDS.cubic_centimeter, BigDecimal.valueOf(1_000_000_000_000_000), UnitGroup.VOLUME, R.string.cubic_centimeter, R.string.cubic_centimeter_short), - MyUnit(MyUnitIDS.cubic_meter, BigDecimal.valueOf(1.0E+21), UnitGroup.VOLUME, R.string.cubic_meter, R.string.cubic_meter_short), - MyUnit(MyUnitIDS.cubic_kilometer, BigDecimal.valueOf(1.0E+30), UnitGroup.VOLUME, R.string.cubic_kilometer, R.string.cubic_kilometer_short), - ) -} diff --git a/app/src/main/java/com/sadellie/unitto/screens/MainViewModel.kt b/app/src/main/java/com/sadellie/unitto/screens/MainViewModel.kt index fdaff43e..5c20ce23 100644 --- a/app/src/main/java/com/sadellie/unitto/screens/MainViewModel.kt +++ b/app/src/main/java/com/sadellie/unitto/screens/MainViewModel.kt @@ -17,20 +17,17 @@ import com.sadellie.unitto.data.preferences.MAX_PRECISION import com.sadellie.unitto.data.preferences.OutputFormat import com.sadellie.unitto.data.preferences.Separator import com.sadellie.unitto.data.preferences.UserPreferencesRepository -import com.sadellie.unitto.data.units.ALL_UNITS import com.sadellie.unitto.data.units.AbstractUnit +import com.sadellie.unitto.data.units.AllUnitsRepository import com.sadellie.unitto.data.units.MyUnitIDS import com.sadellie.unitto.data.units.UnitGroup -import com.sadellie.unitto.data.units.collections.CURRENCY_COLLECTION import com.sadellie.unitto.data.units.database.MyBasedUnit import com.sadellie.unitto.data.units.database.MyBasedUnitsRepository import com.sadellie.unitto.data.units.remote.CurrencyApi import com.sadellie.unitto.data.units.remote.CurrencyUnitResponse import dagger.hilt.android.lifecycle.HiltViewModel -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.first import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.math.BigDecimal import javax.inject.Inject @@ -39,7 +36,8 @@ import javax.inject.Inject class MainViewModel @Inject constructor( private val userPrefsRepository: UserPreferencesRepository, private val basedUnitRepository: MyBasedUnitsRepository, - private val application: Application + private val application: Application, + private val allUnitsRepository: AllUnitsRepository ) : ViewModel() { var currentTheme: Int by mutableStateOf(AppTheme.NOT_SET) @@ -105,13 +103,13 @@ class MainViewModel @Inject constructor( /** * Unit we converting from (left side) */ - var unitFrom: AbstractUnit by mutableStateOf(ALL_UNITS[0]) + var unitFrom: AbstractUnit by mutableStateOf(allUnitsRepository.getById(MyUnitIDS.kilometer)) private set /** * Unit we are converting to (right side) */ - var unitTo: AbstractUnit by mutableStateOf(ALL_UNITS[1]) + var unitTo: AbstractUnit by mutableStateOf(allUnitsRepository.getById(MyUnitIDS.mile)) private set /** @@ -120,17 +118,6 @@ class MainViewModel @Inject constructor( var mainUIState: MainScreenUIState by mutableStateOf(MainScreenUIState()) private set - var favoritesOnly: Boolean by mutableStateOf(false) - private set - - fun toggleFavoritesOnly() { - favoritesOnly = !favoritesOnly - } - - // This is a grouped list of units that is used for unit selection screen - var unitsToShow: Map> by mutableStateOf(emptyMap()) - private set - /** * This function takes local variables, converts values and then causes the UI to update */ @@ -166,14 +153,11 @@ class MainViewModel @Inject constructor( } // Now setting up right unit (pair for the left one) - unitTo = ALL_UNITS.first { - if (unitFrom.pairedUnit.isNullOrEmpty()) { - // No pair. Just getting unit from same group - it.group == unitFrom.group - } else { - // There is a paired unit - it.unitId == unitFrom.pairedUnit - } + unitTo = if (unitFrom.pairedUnit == null) { + // Dangerous btw + allUnitsRepository.getCollectionByGroup(unitFrom.group)!!.first() + } else { + allUnitsRepository.getById(unitFrom.pairedUnit!!) } viewModelScope.launch { @@ -243,7 +227,7 @@ class MainViewModel @Inject constructor( try { val pairs: CurrencyUnitResponse = CurrencyApi.retrofitService.getCurrencyPairs(unitFrom.unitId) - CURRENCY_COLLECTION.forEach { + allUnitsRepository.getCollectionByGroup(UnitGroup.CURRENCY)?.forEach { // Getting rates from map. We set ZERO as default so that it can be skipped val rate = pairs.currency.getOrElse(it.unitId) { BigDecimal.ZERO } // We make sure that we don't divide by zero @@ -379,25 +363,6 @@ class MainViewModel @Inject constructor( convertValue() } - /** - * Add or remove from favorites (changes to the opposite of current state) - */ - fun favoriteUnit(unit: AbstractUnit) { - viewModelScope.launch { - // Changing unit in list to the opposite - unit.isFavorite = !unit.isFavorite - // Updating it in database - basedUnitRepository.insertUnits( - MyBasedUnit( - unitId = unit.unitId, - isFavorite = unit.isFavorite, - pairedUnitId = unit.pairedUnit, - frequency = unit.counter - ) - ) - } - } - /** * Saves latest pair of units into datastore */ @@ -407,67 +372,6 @@ class MainViewModel @Inject constructor( } } - /** - * Filters and groups [ALL_UNITS] in coroutine - * - * @param query String search query - * @param chosenUnitGroup Currently selected [UnitGroup] (from chips list) - * @param leftSide Decide whether or not we are on left side. Need it because right side requires - * us to mark disabled currency units - */ - fun loadUnitsToShow( - query: String, - chosenUnitGroup: UnitGroup?, - leftSide: Boolean - ) { - viewModelScope.launch { - // Prevent user from seeing invalid list - unitsToShow = emptyMap() - - val filterGroup: Boolean = chosenUnitGroup != null - - // This is mostly not UI related stuff and viewModelScope.launch uses Dispatchers.Main - // So we switch to Default - withContext(Dispatchers.Default) { - // Basic filtering - var basicFilteredUnits = ALL_UNITS.asSequence() - basicFilteredUnits = when { - // Both sides, Chip is selected, Only favorites - (filterGroup) and (favoritesOnly) -> { - basicFilteredUnits.filter { (it.group == chosenUnitGroup) and it.isFavorite } - } - // Both sides, Chip is selected, NOT Only favorites - (filterGroup) and (!favoritesOnly) -> { - basicFilteredUnits.filter { it.group == chosenUnitGroup } - } - // Chip is NOT selected, Only favorites - (!filterGroup) and (favoritesOnly) -> { - basicFilteredUnits.filter { it.isFavorite } - } - // Chip is NOT selected, NOT Only favorites - else -> basicFilteredUnits - } - - // Hiding broken currency units - if (leftSide) { - basicFilteredUnits = basicFilteredUnits.filter { it.isEnabled } - } - - unitsToShow = if (query.isEmpty()) { - // Query is empty, i.e. we want to see all units and they need to be sorted by usage - basicFilteredUnits - .sortedByDescending { it.counter } - } else { - // We are searching for a specific unit, we don't care about popularity - // We need search accuracy - basicFilteredUnits.sortByLev(query) - } - // Group by unit group - .groupBy { it.group } - } - } - } - /** * Observes changes in user preferences and updated values in this ViewModel. * @@ -499,25 +403,24 @@ class MainViewModel @Inject constructor( // First we load latest pair of units unitFrom = try { - ALL_UNITS.first { it.unitId == snapshot.latestLeftSideUnit } + allUnitsRepository.getById(snapshot.latestLeftSideUnit) } catch (e: java.util.NoSuchElementException) { Log.w("MainViewModel", "No unit with the given unitId") - ALL_UNITS.first { it.unitId == MyUnitIDS.kilometer } + allUnitsRepository.getById(MyUnitIDS.kilometer) } unitTo = try { - ALL_UNITS - .first { it.unitId == snapshot.latestRightSideUnit } + allUnitsRepository.getById(snapshot.latestRightSideUnit) } catch (e: java.util.NoSuchElementException) { Log.w("MainViewModel", "No unit with the given unitId") - ALL_UNITS.first { it.unitId == MyUnitIDS.mile } + allUnitsRepository.getById(MyUnitIDS.mile) } mainUIState = mainUIState.copy(negateButtonEnabled = unitFrom.group.canNegate) // Now we load units data from database val allBasedUnits = basedUnitRepository.getAll() - ALL_UNITS.forEach { + allUnitsRepository.allUnits.forEach { // Loading unit names so that we can search through them it.renderedName = application.getString(it.displayName) val based = allBasedUnits.firstOrNull { based -> based.unitId == it.unitId } diff --git a/app/src/main/java/com/sadellie/unitto/screens/main/MainScreen.kt b/app/src/main/java/com/sadellie/unitto/screens/main/MainScreen.kt index e5232c9f..19136054 100644 --- a/app/src/main/java/com/sadellie/unitto/screens/main/MainScreen.kt +++ b/app/src/main/java/com/sadellie/unitto/screens/main/MainScreen.kt @@ -26,7 +26,6 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import com.sadellie.unitto.R -import com.sadellie.unitto.data.SECOND_SCREEN import com.sadellie.unitto.data.SETTINGS_SCREEN import com.sadellie.unitto.data.units.AbstractUnit import com.sadellie.unitto.screens.MainScreenUIState @@ -71,7 +70,7 @@ fun MainScreen( unitTo = viewModel.unitTo, portrait = LocalConfiguration.current.orientation == Configuration.ORIENTATION_PORTRAIT, mainScreenUIState = viewModel.mainUIState, - navControllerAction = { navControllerAction("$SECOND_SCREEN/${it}") }, + navControllerAction = { navControllerAction(it) }, swapMeasurements = { viewModel.swapUnits() }, processInput = { viewModel.processInput(it) }, deleteDigit = { viewModel.deleteDigit() }, @@ -89,7 +88,7 @@ private fun PortraitMainScreenContent( unitTo: AbstractUnit, portrait: Boolean = true, mainScreenUIState: MainScreenUIState = MainScreenUIState(), - navControllerAction: (Boolean) -> Unit = {}, + navControllerAction: (String) -> Unit = {}, swapMeasurements: () -> Unit = {}, processInput: (String) -> Unit = {}, deleteDigit: () -> Unit = {}, diff --git a/app/src/main/java/com/sadellie/unitto/screens/main/components/TopScreen.kt b/app/src/main/java/com/sadellie/unitto/screens/main/components/TopScreen.kt index e67a5491..58a4cdc0 100644 --- a/app/src/main/java/com/sadellie/unitto/screens/main/components/TopScreen.kt +++ b/app/src/main/java/com/sadellie/unitto/screens/main/components/TopScreen.kt @@ -14,6 +14,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.sadellie.unitto.R +import com.sadellie.unitto.data.LEFT_LIST_SCREEN +import com.sadellie.unitto.data.RIGHT_LIST_SCREEN import com.sadellie.unitto.data.units.AbstractUnit /** @@ -42,7 +44,7 @@ fun TopScreenPart( loadingDatabase: Boolean, loadingNetwork: Boolean, networkError: Boolean, - onUnitSelectionClick: (Boolean) -> Unit, + onUnitSelectionClick: (String) -> Unit, swapUnits: () -> Unit ) { Column( @@ -72,7 +74,7 @@ fun TopScreenPart( modifier = Modifier .fillMaxWidth() .weight(1f), - onClick = { onUnitSelectionClick(true) }, + onClick = { onUnitSelectionClick(LEFT_LIST_SCREEN) }, label = unitFrom.displayName, isLoading = loadingDatabase ) @@ -87,7 +89,7 @@ fun TopScreenPart( modifier = Modifier .fillMaxWidth() .weight(1f), - onClick = { onUnitSelectionClick(false) }, + onClick = { onUnitSelectionClick(RIGHT_LIST_SCREEN) }, label = unitTo.displayName, isLoading = loadingDatabase ) diff --git a/app/src/main/java/com/sadellie/unitto/screens/second/SecondScreen.kt b/app/src/main/java/com/sadellie/unitto/screens/second/SecondScreen.kt index e58cb020..ce672022 100644 --- a/app/src/main/java/com/sadellie/unitto/screens/second/SecondScreen.kt +++ b/app/src/main/java/com/sadellie/unitto/screens/second/SecondScreen.kt @@ -1,113 +1,199 @@ package com.sadellie.unitto.screens.second import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.ColumnScope import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.Scaffold import androidx.compose.material3.TopAppBarDefaults import androidx.compose.material3.rememberTopAppBarScrollState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.saveable.rememberSaveable -import androidx.compose.runtime.setValue 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.viewmodel.compose.viewModel import com.sadellie.unitto.R import com.sadellie.unitto.data.units.ALL_UNIT_GROUPS import com.sadellie.unitto.data.units.AbstractUnit import com.sadellie.unitto.data.units.UnitGroup -import com.sadellie.unitto.screens.MainViewModel +import com.sadellie.unitto.screens.Formatter import com.sadellie.unitto.screens.second.components.ChipsRow +import com.sadellie.unitto.screens.second.components.Header import com.sadellie.unitto.screens.second.components.SearchBar -import com.sadellie.unitto.screens.second.components.UnitsList +import com.sadellie.unitto.screens.second.components.SearchPlaceholder +import com.sadellie.unitto.screens.second.components.UnitListItem +import java.math.BigDecimal -/** Second screen which contains a list of measurements - * @param leftSide True if we have navigated to this screen by pressing the left button - * @param navigateUp Function to navigate to the previous screen from NavHost - * @param viewModel MainViewModel. Need it to access current state of the app +/** + * Basic Unit list screen for left and right sides screens. + * + * @param currentUnit Currently selected [AbstractUnit]. + * @param navigateUp Action to navigate up. Called when user click back button. + * @param selectAction Action to perform when user clicks on [UnitListItem]. + * @param viewModel [SecondViewModel]. + * @param chipsRow Composable that is placed under TopAppBar. See [ChipsRow] + * @param unitsListItem Composable that holds all units. See [UnitListItem]. + * @param noBrokenCurrencies When True will hide [AbstractUnit] with [AbstractUnit.isEnabled] set + * to False. + * @param title TopAppBar text. */ @Composable -fun SecondScreen( - leftSide: Boolean = true, +private fun BasicUnitListScreen( + currentUnit: AbstractUnit, navigateUp: () -> Unit, - viewModel: MainViewModel = viewModel() + selectAction: (AbstractUnit) -> Unit, + viewModel: SecondViewModel, + chipsRow: @Composable ColumnScope.(UnitGroup?, (UnitGroup) -> Unit, LazyListState) -> Unit = {_,_,_->}, + unitsListItem: @Composable (AbstractUnit, (AbstractUnit) -> Unit) -> Unit, + noBrokenCurrencies: Boolean, + title: String, ) { + val uiState = viewModel.uiState val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior(rememberTopAppBarScrollState()) - - var searchQuery: String by rememberSaveable { mutableStateOf(String()) } - val favoritesOnly: Boolean = viewModel.favoritesOnly val focusManager = LocalFocusManager.current - val unitsList: Map> = viewModel.unitsToShow val chipsRowLazyListState = rememberLazyListState() - val currentUnit = if (leftSide) viewModel.unitFrom else viewModel.unitTo - var chosenUnitGroup: UnitGroup? by rememberSaveable { mutableStateOf(currentUnit.group) } Scaffold( - modifier = Modifier - .nestedScroll(scrollBehavior.nestedScrollConnection), + modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection), topBar = { - SearchBar( - title = stringResource(id = if (leftSide) R.string.units_screen_from else R.string.units_screen_to), - value = searchQuery, - onValueChange = { - searchQuery = it - viewModel.loadUnitsToShow(searchQuery, chosenUnitGroup, leftSide) - }, - favoritesOnly = favoritesOnly, - favoriteAction = { - viewModel.toggleFavoritesOnly() - viewModel.loadUnitsToShow(searchQuery, chosenUnitGroup, leftSide) - }, - navigateUpAction = navigateUp, - focusManager = focusManager, - scrollBehavior = scrollBehavior - ) + Column { + SearchBar( + title = title, + value = uiState.searchQuery, + onValueChange = { + viewModel.onSearchQueryChange(it) + viewModel.loadUnitsToShow(noBrokenCurrencies) + }, + favoritesOnly = uiState.favoritesOnly, + favoriteAction = { + viewModel.toggleFavoritesOnly() + viewModel.loadUnitsToShow(noBrokenCurrencies) + }, + navigateUpAction = navigateUp, + focusManager = focusManager, + scrollBehavior = scrollBehavior + ) + chipsRow( + uiState.chosenUnitGroup, + { + viewModel.toggleSelectedChip(it) + viewModel.loadUnitsToShow(noBrokenCurrencies) + }, + chipsRowLazyListState + ) + } } ) { paddingValues -> - Column(modifier = Modifier.padding(paddingValues)) { - if (leftSide) { - ChipsRow( - lazyListState = chipsRowLazyListState, - items = ALL_UNIT_GROUPS, - chosenUnitGroup = chosenUnitGroup, - selectAction = { - chosenUnitGroup = if (it == chosenUnitGroup) null else it - viewModel.loadUnitsToShow(searchQuery, chosenUnitGroup, leftSide) + LazyColumn( + modifier = Modifier.padding(paddingValues) + ) { + if (uiState.unitsToShow.isEmpty()) { + item { SearchPlaceholder() } + return@LazyColumn + } + uiState.unitsToShow.forEach { (unitGroup, listOfUnits) -> + stickyHeader { Header(text = stringResource(id = unitGroup.res)) } + items(items = listOfUnits, key = { it.unitId }) { unit -> + unitsListItem( + unit + ) { + selectAction(it) + viewModel.onSearchQueryChange("") + focusManager.clearFocus(true) + navigateUp() } - ) - UnitsList( - groupedUnits = unitsList, - selectAction = { viewModel.changeUnitFrom(it); focusManager.clearFocus(true); navigateUp() }, - favoriteAction = { viewModel.favoriteUnit(it) }, - currentUnit = viewModel.unitFrom, - ) - } else { - UnitsList( - groupedUnits = unitsList, - selectAction = { viewModel.changeUnitTo(it); focusManager.clearFocus(true); navigateUp() }, - favoriteAction = { viewModel.favoriteUnit(it) }, - currentUnit = viewModel.unitTo, - input = viewModel.mainUIState.inputValue.toBigDecimal(), - unitFrom = viewModel.unitFrom - ) + } } } } // This block is called only once on initial composition LaunchedEffect(Unit) { + viewModel.setSelectedChip(currentUnit.group) /** * Telling viewModel that it needs to update the list */ - viewModel.loadUnitsToShow(searchQuery, chosenUnitGroup, leftSide) - // Scrolling chips to current group - chosenUnitGroup?.let { - chipsRowLazyListState.animateScrollToItem(ALL_UNIT_GROUPS.indexOf(chosenUnitGroup)) + viewModel.loadUnitsToShow(noBrokenCurrencies) + currentUnit.group.let { + chipsRowLazyListState.animateScrollToItem(ALL_UNIT_GROUPS.indexOf(it)) } } } + +/** + * Left side screen. Unit to convert from. + * + * @param currentUnit Currently selected [AbstractUnit]. + * @param navigateUp Action to navigate up. Called when user click back button. + * @param selectAction Action to perform when user clicks on [UnitListItem]. + * @param viewModel [SecondViewModel]. + */ +@Composable +fun LeftSideScreen( + currentUnit: AbstractUnit, + navigateUp: () -> Unit, + selectAction: (AbstractUnit) -> Unit, + viewModel: SecondViewModel +) = BasicUnitListScreen( + currentUnit = currentUnit, + navigateUp = navigateUp, + selectAction = selectAction, + viewModel = viewModel, + chipsRow = { chosenUnitGroup, selectUnitGroupAction, lazyListState -> + ChipsRow( + chosenUnitGroup = chosenUnitGroup, + selectAction = selectUnitGroupAction, + lazyListState = lazyListState + ) + }, + unitsListItem = { unit, selectUnitAction -> + UnitListItem( + unit = unit, + isSelected = currentUnit == unit, + selectAction = selectUnitAction, + favoriteAction = { viewModel.favoriteUnit(it) }, + ) + }, + noBrokenCurrencies = true, + title = stringResource(R.string.units_screen_from) +) + +/** + * Right side screen. Unit to convert from. + * + * @param currentUnit Currently selected [AbstractUnit]. + * @param navigateUp Action to navigate up. Called when user click back button. + * @param selectAction Action to perform when user clicks on [UnitListItem]. + * @param viewModel [SecondViewModel]. + * @param inputValue Current input value (upper text field on MainScreen) + * @param unitFrom Unit we are converting from. Need it for conversion. + */ +@Composable +fun RightSideScreen( + currentUnit: AbstractUnit, + navigateUp: () -> Unit, + selectAction: (AbstractUnit) -> Unit, + viewModel: SecondViewModel, + inputValue: BigDecimal, + unitFrom: AbstractUnit +) = BasicUnitListScreen( + currentUnit = currentUnit, + navigateUp = navigateUp, + selectAction = selectAction, + viewModel = viewModel, + unitsListItem = { unit, selectUnitAction -> + UnitListItem( + unit = unit, + isSelected = currentUnit == unit, + selectAction = selectUnitAction, + favoriteAction = { viewModel.favoriteUnit(it) }, + convertValue = { Formatter.format(unitFrom.convert(unit, inputValue, 3).toPlainString()) } + ) + }, + noBrokenCurrencies = false, + title = stringResource(R.string.units_screen_to) +) diff --git a/app/src/main/java/com/sadellie/unitto/screens/second/SecondScreenUIState.kt b/app/src/main/java/com/sadellie/unitto/screens/second/SecondScreenUIState.kt new file mode 100644 index 00000000..b6aa6adf --- /dev/null +++ b/app/src/main/java/com/sadellie/unitto/screens/second/SecondScreenUIState.kt @@ -0,0 +1,19 @@ +package com.sadellie.unitto.screens.second + +import com.sadellie.unitto.data.units.AbstractUnit +import com.sadellie.unitto.data.units.UnitGroup + +/** + * Second (unit list) screen UI state. + * + * @property favoritesOnly Whether or not show only favorite [AbstractUnit]s. + * @property unitsToShow Grouped list of [AbstractUnit]s. + * @property searchQuery Search query in search bar. + * @property chosenUnitGroup Currently selected chip. Nul means that no chip is selected. + */ +data class SecondScreenUIState( + val favoritesOnly: Boolean = false, + val unitsToShow: Map> = emptyMap(), + val searchQuery: String = "", + val chosenUnitGroup: UnitGroup? = null +) diff --git a/app/src/main/java/com/sadellie/unitto/screens/second/SecondViewModel.kt b/app/src/main/java/com/sadellie/unitto/screens/second/SecondViewModel.kt new file mode 100644 index 00000000..11249cc5 --- /dev/null +++ b/app/src/main/java/com/sadellie/unitto/screens/second/SecondViewModel.kt @@ -0,0 +1,104 @@ +package com.sadellie.unitto.screens.second + +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.sadellie.unitto.data.units.AbstractUnit +import com.sadellie.unitto.data.units.AllUnitsRepository +import com.sadellie.unitto.data.units.UnitGroup +import com.sadellie.unitto.data.units.database.MyBasedUnit +import com.sadellie.unitto.data.units.database.MyBasedUnitsRepository +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import javax.inject.Inject + +@HiltViewModel +class SecondViewModel @Inject constructor( + private val basedUnitRepository: MyBasedUnitsRepository, + private val allUnitsRepository: AllUnitsRepository +) : ViewModel() { + + var uiState: SecondScreenUIState by mutableStateOf(SecondScreenUIState()) + private set + + fun toggleFavoritesOnly() { + uiState = uiState.copy(favoritesOnly = !uiState.favoritesOnly) + } + + fun onSearchQueryChange(newValue: String) { + uiState = uiState.copy(searchQuery = newValue) + } + + /** + * Changes currently selected chip. + * + * @param unitGroup Chip to change to. + */ + fun setSelectedChip(unitGroup: UnitGroup) { + uiState = uiState.copy(chosenUnitGroup = unitGroup) + } + + /** + * Changes currently selected chip, but acts as toggle when the given [UnitGroup] is same as + * already set [UnitGroup]. For example, if currently selected [UnitGroup] is [UnitGroup.TIME] + * and the provided [UnitGroup] is also [UnitGroup.TIME], currently selected unit will be set + * to null (toggle). + * + * @param unitGroup [UnitGroup], currently selected chip. + */ + fun toggleSelectedChip(unitGroup: UnitGroup) { + val newUnitGroup = if (uiState.chosenUnitGroup == unitGroup) null else unitGroup + uiState = uiState.copy(chosenUnitGroup = newUnitGroup) + } + + /** + * Filters and groups [AllUnitsRepository.allUnits] in coroutine + * + * @param hideBrokenCurrencies Decide whether or not we are on left side. Need it because right side requires + * us to mark disabled currency units + */ + fun loadUnitsToShow( + hideBrokenCurrencies: Boolean + ) { + viewModelScope.launch { + // Prevent user from seeing invalid list + uiState = uiState.copy(unitsToShow = emptyMap()) + + // This is mostly not UI related stuff and viewModelScope.launch uses Dispatchers.Main + // So we switch to Default + withContext(Dispatchers.Default) { + val unitsToShow = allUnitsRepository.filterUnits( + hideBrokenCurrencies = hideBrokenCurrencies, + chosenUnitGroup = uiState.chosenUnitGroup, + favoritesOnly = uiState.favoritesOnly, + searchQuery = uiState.searchQuery + ) + + uiState = uiState.copy(unitsToShow = unitsToShow) + } + } + } + + /** + * Add or remove from favorites (changes to the opposite of current state, toggle) + */ + fun favoriteUnit(unit: AbstractUnit) { + viewModelScope.launch { + // Changing unit in list to the opposite + unit.isFavorite = !unit.isFavorite + // Updating it in database + basedUnitRepository.insertUnits( + MyBasedUnit( + unitId = unit.unitId, + isFavorite = unit.isFavorite, + pairedUnitId = unit.pairedUnit, + frequency = unit.counter + ) + ) + } + } +} diff --git a/app/src/main/java/com/sadellie/unitto/screens/second/components/ChipsRow.kt b/app/src/main/java/com/sadellie/unitto/screens/second/components/ChipsRow.kt index 48b063df..5dcac2bf 100644 --- a/app/src/main/java/com/sadellie/unitto/screens/second/components/ChipsRow.kt +++ b/app/src/main/java/com/sadellie/unitto/screens/second/components/ChipsRow.kt @@ -26,6 +26,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import com.sadellie.unitto.R +import com.sadellie.unitto.data.units.ALL_UNIT_GROUPS import com.sadellie.unitto.data.units.UnitGroup /** @@ -38,9 +39,9 @@ import com.sadellie.unitto.data.units.UnitGroup */ @Composable fun ChipsRow( - items: List, + items: List = ALL_UNIT_GROUPS, chosenUnitGroup: UnitGroup?, - selectAction: (UnitGroup?) -> Unit, + selectAction: (UnitGroup) -> Unit, lazyListState: LazyListState ) { val chipShape = RoundedCornerShape(8.dp) @@ -49,7 +50,7 @@ fun ChipsRow( contentPadding = PaddingValues(8.dp), horizontalArrangement = Arrangement.spacedBy(8.dp) ) { - items(items) { item -> + items(items, key = { it.name }) { item -> val isSelected: Boolean = item == chosenUnitGroup Row( modifier = Modifier diff --git a/app/src/main/java/com/sadellie/unitto/screens/second/components/Header.kt b/app/src/main/java/com/sadellie/unitto/screens/second/components/Header.kt new file mode 100644 index 00000000..41d82bc2 --- /dev/null +++ b/app/src/main/java/com/sadellie/unitto/screens/second/components/Header.kt @@ -0,0 +1,37 @@ +package com.sadellie.unitto.screens.second.components + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import com.sadellie.unitto.data.units.AbstractUnit +import com.sadellie.unitto.data.units.UnitGroup +import com.sadellie.unitto.screens.Formatter +import java.math.BigDecimal + + +/** + * Unit group header. + * + * @param text Unit group name. + */ +@Composable +fun Header(text: String) { + Text( + modifier = Modifier + .background(MaterialTheme.colorScheme.background) + .fillMaxWidth() + .padding(vertical = 12.dp, horizontal = 8.dp), + text = text, + style = MaterialTheme.typography.titleMedium, + color = MaterialTheme.colorScheme.primary + ) +} diff --git a/app/src/main/java/com/sadellie/unitto/screens/second/components/SearchBar.kt b/app/src/main/java/com/sadellie/unitto/screens/second/components/SearchBar.kt index 533ac83e..969830fd 100644 --- a/app/src/main/java/com/sadellie/unitto/screens/second/components/SearchBar.kt +++ b/app/src/main/java/com/sadellie/unitto/screens/second/components/SearchBar.kt @@ -56,12 +56,12 @@ import com.sadellie.unitto.R */ @Composable fun SearchBar( - title: String = String(), - value: String = String(), - onValueChange: (String) -> Unit = {}, + title: String, + value: String, + onValueChange: (String) -> Unit, favoritesOnly: Boolean, favoriteAction: () -> Unit, - navigateUpAction: () -> Unit = {}, + navigateUpAction: () -> Unit, focusManager: FocusManager, scrollBehavior: TopAppBarScrollBehavior ) { diff --git a/app/src/main/java/com/sadellie/unitto/screens/second/components/UnitListItem.kt b/app/src/main/java/com/sadellie/unitto/screens/second/components/UnitListItem.kt index 98fcde41..4165d0b0 100644 --- a/app/src/main/java/com/sadellie/unitto/screens/second/components/UnitListItem.kt +++ b/app/src/main/java/com/sadellie/unitto/screens/second/components/UnitListItem.kt @@ -129,7 +129,7 @@ fun UnitListItem( isSelected = isSelected, selectAction = selectAction, favoriteAction = favoriteAction, - stringResource(id = unit.shortName) + shortNameLabel = stringResource(id = unit.shortName) ) /** @@ -154,4 +154,4 @@ fun UnitListItem( selectAction = selectAction, favoriteAction = favoriteAction, shortNameLabel = "${convertValue(unit)} ${stringResource(id = unit.shortName)}" -) \ No newline at end of file +) diff --git a/app/src/main/java/com/sadellie/unitto/screens/second/components/UnitsList.kt b/app/src/main/java/com/sadellie/unitto/screens/second/components/UnitsList.kt deleted file mode 100644 index 3358d6e4..00000000 --- a/app/src/main/java/com/sadellie/unitto/screens/second/components/UnitsList.kt +++ /dev/null @@ -1,119 +0,0 @@ -package com.sadellie.unitto.screens.second.components - -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.items -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.unit.dp -import com.sadellie.unitto.data.units.AbstractUnit -import com.sadellie.unitto.data.units.UnitGroup -import com.sadellie.unitto.screens.Formatter -import java.math.BigDecimal - - -/** - * Component with grouped units. - * - * @param groupedUnits Grouped [AbstractUnit]s to be listed. - * @param selectAction Action to perform when clicking on a list item. - * @param favoriteAction Action to perform when clicking "favorite" button on list item. - * @param currentUnit Currently selected unit. Will be visually distinguishable. - */ -@Composable -fun UnitsList( - groupedUnits: Map>, - selectAction: (AbstractUnit) -> Unit, - favoriteAction: (AbstractUnit) -> Unit, - currentUnit: AbstractUnit, -) { - LazyColumn( - modifier = Modifier.fillMaxSize(), - content = { - if (groupedUnits.isEmpty()) { - item { SearchPlaceholder() } - return@LazyColumn - } - groupedUnits.forEach { (unitGroup, listOfUnits) -> - stickyHeader { Header(text = stringResource(id = unitGroup.res)) } - items(items = listOfUnits, key = { it.unitId }) { unit -> - UnitListItem( - unit = unit, - isSelected = currentUnit == unit, - selectAction = selectAction, - favoriteAction = favoriteAction - ) - } - } - } - ) -} - - -/** - * Component with grouped units/ - * - * @param groupedUnits Grouped [AbstractUnit]s to be listed. - * @param selectAction Action to perform when clicking on a list item. - * @param favoriteAction Action to perform when clicking "favorite" button on list item. - * @param currentUnit Currently selected unit. Will be visually distinguishable. - * @param unitFrom Unit to convert from. Used for conversion in short name field. - * @param input Current input value. Used for conversion in short name field. - */ -@Composable -fun UnitsList( - groupedUnits: Map>, - selectAction: (AbstractUnit) -> Unit, - favoriteAction: (AbstractUnit) -> Unit, - currentUnit: AbstractUnit, - unitFrom: AbstractUnit, - input: BigDecimal -) { - LazyColumn( - modifier = Modifier.fillMaxSize(), - content = { - if (groupedUnits.isEmpty()) { - item { SearchPlaceholder() } - return@LazyColumn - } - groupedUnits.forEach { (unitGroup, listOfUnits) -> - stickyHeader { Header(text = stringResource(id = unitGroup.res)) } - items(items = listOfUnits, key = { it.unitId }) { unit -> - UnitListItem( - unit = unit, - isSelected = currentUnit == unit, - selectAction = selectAction, - favoriteAction = favoriteAction, - convertValue = { - Formatter.format(unitFrom.convert(unit, input, 3).toPlainString()) - } - ) - } - } - } - ) -} - -/** - * Unit group header. - * - * @param text Unit group name. - */ -@Composable -private fun Header(text: String) { - Text( - modifier = Modifier - .background(MaterialTheme.colorScheme.background) - .fillMaxWidth() - .padding(vertical = 12.dp, horizontal = 8.dp), - text = text, - style = MaterialTheme.typography.titleMedium, - color = MaterialTheme.colorScheme.primary - ) -} \ No newline at end of file diff --git a/app/src/test/java/com/sadellie/unitto/data/units/AllUnitsRepositoryTest.kt b/app/src/test/java/com/sadellie/unitto/data/units/AllUnitsRepositoryTest.kt new file mode 100644 index 00000000..8847c7ac --- /dev/null +++ b/app/src/test/java/com/sadellie/unitto/data/units/AllUnitsRepositoryTest.kt @@ -0,0 +1,104 @@ +package com.sadellie.unitto.data.units + +import org.junit.Assert.assertEquals +import org.junit.Test + +class AllUnitsRepositoryTest { + + private val allUnitsRepository = AllUnitsRepository() + + @Test + fun filterAllUnitsNoFiltersLeft() { + // No filters applied, empty search query, from Left side list + val result = allUnitsRepository.filterUnits( + hideBrokenCurrencies = false, + chosenUnitGroup = null, + favoritesOnly = false, + searchQuery = "" + ) + assertEquals(allUnitsRepository.allUnits.groupBy { it.group }, result) + } + + @Test + fun filterAllUnitsAllFiltersLeft() { + allUnitsRepository + .getById(MyUnitIDS.kilometer_per_hour) + .apply { isFavorite = true; renderedName = "Kilometer per hour" } + + // All filters applied, from Left side list + val result = allUnitsRepository.filterUnits( + hideBrokenCurrencies = false, + chosenUnitGroup = UnitGroup.SPEED, + favoritesOnly = true, + searchQuery = "kilometer per hour" + ) + assertEquals( + mapOf(UnitGroup.SPEED to listOf(allUnitsRepository.getCollectionByGroup(UnitGroup.SPEED)?.first { it.unitId == MyUnitIDS.kilometer_per_hour })), + result + ) + } + + @Test + fun filterAllUnitsChosenGroupLeft() { + // Only specific group is needed, left side screen + val result = allUnitsRepository.filterUnits( + hideBrokenCurrencies = false, + chosenUnitGroup = UnitGroup.TIME, + favoritesOnly = false, + searchQuery = "" + ) + assertEquals(allUnitsRepository.allUnits.filter { it.group == UnitGroup.TIME } + .groupBy { it.group }, result) + } + + @Test + fun filterAllUnitsFavoritesOnlyLeft() { + allUnitsRepository.getById(MyUnitIDS.kilometer).isFavorite = true + // Only favorite units, left side screen + val result = allUnitsRepository.filterUnits( + hideBrokenCurrencies = false, + chosenUnitGroup = null, + favoritesOnly = true, + searchQuery = "" + ) + assertEquals(allUnitsRepository.allUnits.filter { it.unitId == MyUnitIDS.kilometer } + .groupBy { it.group }, result) + } + + @Test + fun filterAllUnitsSearchQueryOnlyLeft() { + allUnitsRepository + .getById(MyUnitIDS.kilometer_per_hour) + .apply { renderedName = "Kilometer per hour" } + + // Only search query is entered, other filters are not set, left side screen + val result = allUnitsRepository.filterUnits( + hideBrokenCurrencies = false, + chosenUnitGroup = null, + favoritesOnly = false, + searchQuery = "kilometer per hour" + ) + assertEquals( + mapOf(UnitGroup.SPEED to listOf(allUnitsRepository.getCollectionByGroup(UnitGroup.SPEED)?.first { it.unitId == MyUnitIDS.kilometer_per_hour })), + result + ) + } + + @Test + fun filterAllUnitsHideBrokenCurrencies() { + allUnitsRepository + .getById(MyUnitIDS.currency_btc) + .apply { isEnabled = false } + // Hide broken currencies (i.e. cannot be used for conversion at the moment) + val result = allUnitsRepository.filterUnits( + hideBrokenCurrencies = true, + chosenUnitGroup = UnitGroup.CURRENCY, + favoritesOnly = false, + searchQuery = "" + ) + assertEquals( + mapOf(UnitGroup.CURRENCY to allUnitsRepository.getCollectionByGroup(UnitGroup.CURRENCY)?.filter { it.unitId != MyUnitIDS.currency_btc }), + result + ) + } +} diff --git a/app/src/test/java/com/sadellie/unitto/data/units/AllUnitsTest.kt b/app/src/test/java/com/sadellie/unitto/data/units/AllUnitsTest.kt index 91f5a0cd..ea945e5c 100644 --- a/app/src/test/java/com/sadellie/unitto/data/units/AllUnitsTest.kt +++ b/app/src/test/java/com/sadellie/unitto/data/units/AllUnitsTest.kt @@ -13,6 +13,7 @@ class AllUnitsTest { // Group and it's tested unit ids var history: MutableMap> = mutableMapOf() + private val allUnitsRepository = AllUnitsRepository() @Test fun testAcceleration() { @@ -321,9 +322,9 @@ class AllUnitsTest { } private fun String.checkWith(checkingId: String, value: String, expected: String) { - val unit = ALL_UNITS.first { it.unitId == this } + val unit = allUnitsRepository.getById(this) val actual = unit - .convert(ALL_UNITS.first { it.unitId == checkingId }, BigDecimal(value), 5) + .convert(allUnitsRepository.getById(checkingId), BigDecimal(value), 5) .toPlainString() assertEquals("Failed at $this to $checkingId", expected, actual) println("PASSED: $this -> $expected == $actual") @@ -335,6 +336,6 @@ class AllUnitsTest { fun after() { val unitGroup = history.keys.first() // GROUP : testedCount / totalCount - println("${unitGroup.name} : ${history[unitGroup]?.size} / ${ALL_UNITS.filter { it.group == unitGroup }.size}") + println("${unitGroup.name} : ${history[unitGroup]?.size} / ${allUnitsRepository.getCollectionByGroup(unitGroup)?.size}") } }