Refactored Units list screens

Added second ViewModel
AllUnitsRepository instead of a simple list
Added some tests
Left and right side screen are now separate
This commit is contained in:
Sad Ellie 2022-06-17 23:47:46 +03:00
parent 0c0f7d9c35
commit a6f1ddee7d
33 changed files with 1189 additions and 1111 deletions

View File

@ -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)
}
}
}

View File

@ -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() })
}
}
}

View File

@ -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"

View File

@ -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<AbstractUnit> 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<AbstractUnit> 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<AbstractUnit>? {
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<UnitGroup, List<AbstractUnit>> {
var basicFilteredUnits: Sequence<AbstractUnit> =
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<AbstractUnit> 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<AbstractUnit> 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<AbstractUnit> 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<AbstractUnit> 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<AbstractUnit> 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<AbstractUnit> 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<AbstractUnit> 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<AbstractUnit> 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<AbstractUnit> 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<AbstractUnit> 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<AbstractUnit> 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<AbstractUnit> 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<AbstractUnit> 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<AbstractUnit> 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<AbstractUnit> 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),
)
}
}

View File

@ -8,8 +8,8 @@ val ALL_UNIT_GROUPS: List<UnitGroup> 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),

View File

@ -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<AbstractUnit> 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),
)
}

View File

@ -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<AbstractUnit> 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),
)
}

View File

@ -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<AbstractUnit> 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),
)
}

View File

@ -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<AbstractUnit> 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),
)
}

View File

@ -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<AbstractUnit> 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),
)
}

View File

@ -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<AbstractUnit> 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),
)
}

View File

@ -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<AbstractUnit> 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),
)
}

View File

@ -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<AbstractUnit> 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),
)
}

View File

@ -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<AbstractUnit> 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),
)
}

View File

@ -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<AbstractUnit> 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),
)
}

View File

@ -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<AbstractUnit> 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),
)
}

View File

@ -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<AbstractUnit> 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),)
}

View File

@ -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<AbstractUnit> 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()
}
},
)
}

View File

@ -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<AbstractUnit> 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),
)
}

View File

@ -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<AbstractUnit> 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),
)
}

View File

@ -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<UnitGroup, List<AbstractUnit>> 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 }

View File

@ -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 = {},

View File

@ -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
)

View File

@ -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<UnitGroup, List<AbstractUnit>> = 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)
)

View File

@ -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<UnitGroup, List<AbstractUnit>> = emptyMap(),
val searchQuery: String = "",
val chosenUnitGroup: UnitGroup? = null
)

View File

@ -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
)
)
}
}
}

View File

@ -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<UnitGroup>,
items: List<UnitGroup> = 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

View File

@ -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
)
}

View File

@ -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
) {

View File

@ -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)}"
)
)

View File

@ -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<UnitGroup, List<AbstractUnit>>,
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<UnitGroup, List<AbstractUnit>>,
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
)
}

View File

@ -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
)
}
}

View File

@ -13,6 +13,7 @@ class AllUnitsTest {
// Group and it's tested unit ids
var history: MutableMap<UnitGroup, Set<String>> = 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}")
}
}