diff --git a/core/base/src/main/res/values/strings.xml b/core/base/src/main/res/values/strings.xml
index 337f9d35..e10b7ee5 100644
--- a/core/base/src/main/res/values/strings.xml
+++ b/core/base/src/main/res/values/strings.xml
@@ -92,10 +92,12 @@ Used in this dialog window. Should be short -->
AMOLED Dark
Use black background for dark themes
Auto
+
+
+ Back up
History view
Clear cache
- Clear input
- Start new expression when clicking \"=\" and any button
Color scheme
Color theme
Pick a theming mode
@@ -138,6 +140,9 @@ Maybe this can be labeled better? Let me know. It should be something that can d
Privacy Policy
Rate this app
Reorder unit group
+
+
+ Restore
Selected color
Selected style
Separator
@@ -828,6 +833,10 @@ Maybe this can be labeled better? Let me know. It should be something that can d
Gt
Gigaweber
GWb
+
+
+ Grain
+ gr
Gram
Gram-force
Gram-force centimeter
@@ -875,6 +884,10 @@ Maybe this can be labeled better? Let me know. It should be something that can d
Horsepower
hp
Hour
+ Hour/kilometer
+ h/km
+ Hour/mile
+ h/mi
h
Imperial cup
cup
@@ -1133,6 +1146,10 @@ Maybe this can be labeled better? Let me know. It should be something that can d
Milliweber
mWb
Minute
+ Minute/kilometer
+ m/km
+ Minute/mile
+ m/mi
m
m
Nanofarad
diff --git a/data/converter/src/main/java/com/sadellie/unitto/data/converter/MyUnitIDS.kt b/data/converter/src/main/java/com/sadellie/unitto/data/converter/MyUnitIDS.kt
index b3a8b660..cfacf6b4 100644
--- a/data/converter/src/main/java/com/sadellie/unitto/data/converter/MyUnitIDS.kt
+++ b/data/converter/src/main/java/com/sadellie/unitto/data/converter/MyUnitIDS.kt
@@ -57,6 +57,7 @@ object MyUnitIDS {
const val atomic_mass_unit = "atomic_mass_unit"
const val microgram = "microgram"
const val milligram = "milligram"
+ const val grain = "grain"
const val gram = "gram"
const val kilogram = "kilogram"
const val metric_ton = "metric_ton"
@@ -101,6 +102,10 @@ object MyUnitIDS {
const val mile_per_hour = "mile_per_hour"
const val mile_per_minute = "mile_per_minute"
const val mile_per_second = "mile_per_second"
+ const val minute_per_kilometer = "minute_per_kilometer"
+ const val minute_per_mile = "minute_per_mile"
+ const val hour_per_kilometer = "hour_per_kilometer"
+ const val hour_per_mile = "hour_per_mile"
const val knot = "knot"
const val velocity_of_light_in_vacuum = "velocity_of_light_in_vacuum"
const val cosmic_velocity_first = "cosmic_velocity_first"
diff --git a/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/FuelConsumption.kt b/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/FuelConsumption.kt
index 7690b2b9..9e6a8f56 100644
--- a/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/FuelConsumption.kt
+++ b/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/FuelConsumption.kt
@@ -19,24 +19,24 @@
package com.sadellie.unitto.data.converter.collections
import com.sadellie.unitto.core.base.R
+import com.sadellie.unitto.data.converter.MyUnitIDS
import com.sadellie.unitto.data.model.UnitGroup
import com.sadellie.unitto.data.model.unit.AbstractUnit
-import com.sadellie.unitto.data.model.unit.FuelBackward
-import com.sadellie.unitto.data.model.unit.FuelForward
-import com.sadellie.unitto.data.converter.MyUnitIDS
+import com.sadellie.unitto.data.model.unit.BackwardUnit
+import com.sadellie.unitto.data.model.unit.NormalUnit
import java.math.BigDecimal
val fuelConsumptionCollection: List by lazy {
listOf(
- FuelForward(MyUnitIDS.kilometer_per_liter, BigDecimal.valueOf(1), UnitGroup.FUEL_CONSUMPTION, R.string.unit_km_per_l, R.string.unit_km_per_l_short),
- FuelBackward(MyUnitIDS.liter_per_kilometer, BigDecimal.valueOf(1), UnitGroup.FUEL_CONSUMPTION, R.string.unit_l_per_km, R.string.unit_l_per_km_short),
- FuelBackward(MyUnitIDS.liter_per_100_kilometer, BigDecimal.valueOf(100), UnitGroup.FUEL_CONSUMPTION, R.string.unit_l_per_100_km, R.string.unit_l_per_100_km_short),
- FuelForward(MyUnitIDS.mile_per_gallon_uk, BigDecimal.valueOf(0.35400619), UnitGroup.FUEL_CONSUMPTION, R.string.unit_mi_per_gallon_uk, R.string.unit_mi_per_gallon_uk_short),
- FuelForward(MyUnitIDS.mile_per_gallon_us, BigDecimal.valueOf(0.4251437075), UnitGroup.FUEL_CONSUMPTION, R.string.unit_mi_per_gallon_us, R.string.unit_mi_per_gallon_us_short),
- FuelForward(MyUnitIDS.mile_us_per_liter, BigDecimal.valueOf(1.609344), UnitGroup.FUEL_CONSUMPTION, R.string.unit_mi_us_per_l, R.string.unit_mi_us_per_l_short),
- FuelBackward(MyUnitIDS.gallon_us_per_mile, BigDecimal.valueOf(0.4251437075), UnitGroup.FUEL_CONSUMPTION, R.string.unit_gallon_us_per_mile, R.string.unit_gallon_us_per_mile_short),
- FuelBackward(MyUnitIDS.gallon_uk_per_mile, BigDecimal.valueOf(0.35400619), UnitGroup.FUEL_CONSUMPTION, R.string.unit_gallon_uk_per_mile, R.string.unit_gallon_uk_per_mile_short),
- FuelBackward(MyUnitIDS.gallon_us_per_100_mile, BigDecimal.valueOf(42.51437075), UnitGroup.FUEL_CONSUMPTION, R.string.unit_gallon_us_per_100_mile, R.string.unit_gallon_us_per_100_mile_short),
- FuelBackward(MyUnitIDS.gallon_uk_per_100_mile, BigDecimal.valueOf(35.400618996), UnitGroup.FUEL_CONSUMPTION, R.string.unit_gallon_uk_per_100_mile, R.string.unit_gallon_uk_per_100_mile_short),
+ NormalUnit( MyUnitIDS.kilometer_per_liter, BigDecimal.valueOf(1), UnitGroup.FUEL_CONSUMPTION, R.string.unit_km_per_l, R.string.unit_km_per_l_short),
+ BackwardUnit(MyUnitIDS.liter_per_kilometer, BigDecimal.valueOf(1), UnitGroup.FUEL_CONSUMPTION, R.string.unit_l_per_km, R.string.unit_l_per_km_short),
+ BackwardUnit(MyUnitIDS.liter_per_100_kilometer, BigDecimal.valueOf(100), UnitGroup.FUEL_CONSUMPTION, R.string.unit_l_per_100_km, R.string.unit_l_per_100_km_short),
+ NormalUnit( MyUnitIDS.mile_per_gallon_uk, BigDecimal.valueOf(0.35400619), UnitGroup.FUEL_CONSUMPTION, R.string.unit_mi_per_gallon_uk, R.string.unit_mi_per_gallon_uk_short),
+ NormalUnit( MyUnitIDS.mile_per_gallon_us, BigDecimal.valueOf(0.4251437075), UnitGroup.FUEL_CONSUMPTION, R.string.unit_mi_per_gallon_us, R.string.unit_mi_per_gallon_us_short),
+ NormalUnit( MyUnitIDS.mile_us_per_liter, BigDecimal.valueOf(1.609344), UnitGroup.FUEL_CONSUMPTION, R.string.unit_mi_us_per_l, R.string.unit_mi_us_per_l_short),
+ BackwardUnit(MyUnitIDS.gallon_us_per_mile, BigDecimal.valueOf(0.4251437075), UnitGroup.FUEL_CONSUMPTION, R.string.unit_gallon_us_per_mile, R.string.unit_gallon_us_per_mile_short),
+ BackwardUnit(MyUnitIDS.gallon_uk_per_mile, BigDecimal.valueOf(0.35400619), UnitGroup.FUEL_CONSUMPTION, R.string.unit_gallon_uk_per_mile, R.string.unit_gallon_uk_per_mile_short),
+ BackwardUnit(MyUnitIDS.gallon_us_per_100_mile, BigDecimal.valueOf(42.51437075), UnitGroup.FUEL_CONSUMPTION, R.string.unit_gallon_us_per_100_mile, R.string.unit_gallon_us_per_100_mile_short),
+ BackwardUnit(MyUnitIDS.gallon_uk_per_100_mile, BigDecimal.valueOf(35.400618996), UnitGroup.FUEL_CONSUMPTION, R.string.unit_gallon_uk_per_100_mile, R.string.unit_gallon_uk_per_100_mile_short),
)
}
diff --git a/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/Mass.kt b/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/Mass.kt
index c311378c..cb5a098c 100644
--- a/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/Mass.kt
+++ b/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/Mass.kt
@@ -19,10 +19,10 @@
package com.sadellie.unitto.data.converter.collections
import com.sadellie.unitto.core.base.R
+import com.sadellie.unitto.data.converter.MyUnitIDS
import com.sadellie.unitto.data.model.UnitGroup
import com.sadellie.unitto.data.model.unit.AbstractUnit
import com.sadellie.unitto.data.model.unit.NormalUnit
-import com.sadellie.unitto.data.converter.MyUnitIDS
import java.math.BigDecimal
internal val massCollection: List by lazy {
@@ -31,6 +31,7 @@ internal val massCollection: List by lazy {
NormalUnit(MyUnitIDS.atomic_mass_unit, BigDecimal.valueOf(1.6605402E-24), UnitGroup.MASS, R.string.unit_atomic_mass_unit, R.string.unit_atomic_mass_unit_short),
NormalUnit(MyUnitIDS.microgram, BigDecimal(1E-6), UnitGroup.MASS, R.string.unit_microgram, R.string.unit_microgram_short),
NormalUnit(MyUnitIDS.milligram, BigDecimal.valueOf(1E-3), UnitGroup.MASS, R.string.unit_milligram, R.string.unit_milligram_short),
+ NormalUnit(MyUnitIDS.grain, BigDecimal.valueOf(0.06479891), UnitGroup.MASS, R.string.unit_grain, R.string.unit_grain_short),
NormalUnit(MyUnitIDS.gram, BigDecimal.valueOf(1), UnitGroup.MASS, R.string.unit_gram, R.string.unit_gram_short),
NormalUnit(MyUnitIDS.kilogram, BigDecimal.valueOf(1E+3), UnitGroup.MASS, R.string.unit_kilogram, R.string.unit_kilogram_short),
NormalUnit(MyUnitIDS.metric_ton, BigDecimal.valueOf(1E+6), UnitGroup.MASS, R.string.unit_metric_ton, R.string.unit_metric_ton_short),
diff --git a/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/Speed.kt b/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/Speed.kt
index cf0d682d..f09f3267 100644
--- a/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/Speed.kt
+++ b/data/converter/src/main/java/com/sadellie/unitto/data/converter/collections/Speed.kt
@@ -19,42 +19,47 @@
package com.sadellie.unitto.data.converter.collections
import com.sadellie.unitto.core.base.R
+import com.sadellie.unitto.data.converter.MyUnitIDS
import com.sadellie.unitto.data.model.UnitGroup
import com.sadellie.unitto.data.model.unit.AbstractUnit
+import com.sadellie.unitto.data.model.unit.BackwardUnit
import com.sadellie.unitto.data.model.unit.NormalUnit
-import com.sadellie.unitto.data.converter.MyUnitIDS
import java.math.BigDecimal
internal val speedCollection: List by lazy {
listOf(
- NormalUnit(MyUnitIDS.millimeter_per_hour, BigDecimal.valueOf(1), UnitGroup.SPEED, R.string.unit_millimeter_per_hour, R.string.unit_millimeter_per_hour_short),
- NormalUnit(MyUnitIDS.millimeter_per_minute, BigDecimal.valueOf(60), UnitGroup.SPEED, R.string.unit_millimeter_per_minute, R.string.unit_millimeter_per_minute_short),
- NormalUnit(MyUnitIDS.millimeter_per_second, BigDecimal.valueOf(3_600), UnitGroup.SPEED, R.string.unit_millimeter_per_second, R.string.unit_millimeter_per_second_short),
- NormalUnit(MyUnitIDS.centimeter_per_hour, BigDecimal.valueOf(10), UnitGroup.SPEED, R.string.unit_centimeter_per_hour, R.string.unit_centimeter_per_hour_short),
- NormalUnit(MyUnitIDS.centimeter_per_minute, BigDecimal.valueOf(600), UnitGroup.SPEED, R.string.unit_centimeter_per_minute, R.string.unit_centimeter_per_minute_short),
- NormalUnit(MyUnitIDS.centimeter_per_second, BigDecimal.valueOf(36_000), UnitGroup.SPEED, R.string.unit_centimeter_per_second, R.string.unit_centimeter_per_second_short),
- NormalUnit(MyUnitIDS.meter_per_hour, BigDecimal.valueOf(1_000), UnitGroup.SPEED, R.string.unit_meter_per_hour, R.string.unit_meter_per_hour_short),
- NormalUnit(MyUnitIDS.meter_per_minute, BigDecimal.valueOf(60_000), UnitGroup.SPEED, R.string.unit_meter_per_minute, R.string.unit_meter_per_minute_short),
- NormalUnit(MyUnitIDS.meter_per_second, BigDecimal.valueOf(3_600_000), UnitGroup.SPEED, R.string.unit_meter_per_second, R.string.unit_meter_per_second_short),
- NormalUnit(MyUnitIDS.kilometer_per_hour, BigDecimal.valueOf(1_000_000), UnitGroup.SPEED, R.string.unit_kilometer_per_hour, R.string.unit_kilometer_per_hour_short),
- NormalUnit(MyUnitIDS.kilometer_per_minute, BigDecimal.valueOf(60_000_000), UnitGroup.SPEED, R.string.unit_kilometer_per_minute, R.string.unit_kilometer_per_minute_short),
- NormalUnit(MyUnitIDS.kilometer_per_second, BigDecimal.valueOf(3_600_000_000), UnitGroup.SPEED, R.string.unit_kilometer_per_second, R.string.unit_kilometer_per_second_short),
- NormalUnit(MyUnitIDS.foot_per_hour, BigDecimal.valueOf(304.8), UnitGroup.SPEED, R.string.unit_foot_per_hour, R.string.unit_foot_per_hour_short),
- NormalUnit(MyUnitIDS.foot_per_minute, BigDecimal.valueOf(18_288), UnitGroup.SPEED, R.string.unit_foot_per_minute, R.string.unit_foot_per_minute_short),
- NormalUnit(MyUnitIDS.foot_per_second, BigDecimal.valueOf(1_097_280), UnitGroup.SPEED, R.string.unit_foot_per_second, R.string.unit_foot_per_second_short),
- NormalUnit(MyUnitIDS.yard_per_hour, BigDecimal.valueOf(914.4), UnitGroup.SPEED, R.string.unit_yard_per_hour, R.string.unit_yard_per_hour_short),
- NormalUnit(MyUnitIDS.yard_per_minute, BigDecimal.valueOf(54_864), UnitGroup.SPEED, R.string.unit_yard_per_minute, R.string.unit_yard_per_minute_short),
- NormalUnit(MyUnitIDS.yard_per_second, BigDecimal.valueOf(3_291_840), UnitGroup.SPEED, R.string.unit_yard_per_second, R.string.unit_yard_per_second_short),
- NormalUnit(MyUnitIDS.mile_per_hour, BigDecimal.valueOf(1_609_344), UnitGroup.SPEED, R.string.unit_mile_per_hour, R.string.unit_mile_per_hour_short),
- NormalUnit(MyUnitIDS.mile_per_minute, BigDecimal.valueOf(96_560_640), UnitGroup.SPEED, R.string.unit_mile_per_minute, R.string.unit_mile_per_minute_short),
- NormalUnit(MyUnitIDS.mile_per_second, BigDecimal.valueOf(5_793_638_400), UnitGroup.SPEED, R.string.unit_mile_per_second, R.string.unit_mile_per_second_short),
- NormalUnit(MyUnitIDS.knot, BigDecimal.valueOf(1_852_000), UnitGroup.SPEED, R.string.unit_knot, R.string.unit_knot_short),
- NormalUnit(MyUnitIDS.velocity_of_light_in_vacuum, BigDecimal.valueOf(1_079_252_848_799_998), UnitGroup.SPEED, R.string.unit_velocity_of_light_in_vacuum, R.string.unit_velocity_of_light_in_vacuum_short),
- NormalUnit(MyUnitIDS.cosmic_velocity_first, BigDecimal.valueOf(28_440_000_000), UnitGroup.SPEED, R.string.unit_cosmic_velocity_first, R.string.unit_cosmic_velocity_first_short),
- NormalUnit(MyUnitIDS.cosmic_velocity_second, BigDecimal.valueOf(40_320_000_000), UnitGroup.SPEED, R.string.unit_cosmic_velocity_second, R.string.unit_cosmic_velocity_second_short),
- NormalUnit(MyUnitIDS.cosmic_velocity_third, BigDecimal.valueOf(60_012_000_000), UnitGroup.SPEED, R.string.unit_cosmic_velocity_third, R.string.unit_cosmic_velocity_third_short),
- NormalUnit(MyUnitIDS.earths_orbital_speed, BigDecimal.valueOf(107_154_000_000), UnitGroup.SPEED, R.string.unit_earths_orbital_speed, R.string.unit_earths_orbital_speed_short),
- NormalUnit(MyUnitIDS.mach, BigDecimal.valueOf(1_236_960_000), UnitGroup.SPEED, R.string.unit_mach, R.string.unit_mach_short),
- NormalUnit(MyUnitIDS.mach_si_standard, BigDecimal.valueOf(1_062_167_040), UnitGroup.SPEED, R.string.unit_mach_si_standard, R.string.unit_mach_si_standard_short),
+ NormalUnit( MyUnitIDS.millimeter_per_hour, BigDecimal.valueOf(1), UnitGroup.SPEED, R.string.unit_millimeter_per_hour, R.string.unit_millimeter_per_hour_short),
+ NormalUnit( MyUnitIDS.millimeter_per_minute, BigDecimal.valueOf(60), UnitGroup.SPEED, R.string.unit_millimeter_per_minute, R.string.unit_millimeter_per_minute_short),
+ NormalUnit( MyUnitIDS.millimeter_per_second, BigDecimal.valueOf(3_600), UnitGroup.SPEED, R.string.unit_millimeter_per_second, R.string.unit_millimeter_per_second_short),
+ NormalUnit( MyUnitIDS.centimeter_per_hour, BigDecimal.valueOf(10), UnitGroup.SPEED, R.string.unit_centimeter_per_hour, R.string.unit_centimeter_per_hour_short),
+ NormalUnit( MyUnitIDS.centimeter_per_minute, BigDecimal.valueOf(600), UnitGroup.SPEED, R.string.unit_centimeter_per_minute, R.string.unit_centimeter_per_minute_short),
+ NormalUnit( MyUnitIDS.centimeter_per_second, BigDecimal.valueOf(36_000), UnitGroup.SPEED, R.string.unit_centimeter_per_second, R.string.unit_centimeter_per_second_short),
+ NormalUnit( MyUnitIDS.meter_per_hour, BigDecimal.valueOf(1_000), UnitGroup.SPEED, R.string.unit_meter_per_hour, R.string.unit_meter_per_hour_short),
+ NormalUnit( MyUnitIDS.meter_per_minute, BigDecimal.valueOf(60_000), UnitGroup.SPEED, R.string.unit_meter_per_minute, R.string.unit_meter_per_minute_short),
+ NormalUnit( MyUnitIDS.meter_per_second, BigDecimal.valueOf(3_600_000), UnitGroup.SPEED, R.string.unit_meter_per_second, R.string.unit_meter_per_second_short),
+ NormalUnit( MyUnitIDS.kilometer_per_hour, BigDecimal.valueOf(1_000_000), UnitGroup.SPEED, R.string.unit_kilometer_per_hour, R.string.unit_kilometer_per_hour_short),
+ NormalUnit( MyUnitIDS.kilometer_per_minute, BigDecimal.valueOf(60_000_000), UnitGroup.SPEED, R.string.unit_kilometer_per_minute, R.string.unit_kilometer_per_minute_short),
+ NormalUnit( MyUnitIDS.kilometer_per_second, BigDecimal.valueOf(3_600_000_000), UnitGroup.SPEED, R.string.unit_kilometer_per_second, R.string.unit_kilometer_per_second_short),
+ NormalUnit( MyUnitIDS.foot_per_hour, BigDecimal.valueOf(304.8), UnitGroup.SPEED, R.string.unit_foot_per_hour, R.string.unit_foot_per_hour_short),
+ NormalUnit( MyUnitIDS.foot_per_minute, BigDecimal.valueOf(18_288), UnitGroup.SPEED, R.string.unit_foot_per_minute, R.string.unit_foot_per_minute_short),
+ NormalUnit( MyUnitIDS.foot_per_second, BigDecimal.valueOf(1_097_280), UnitGroup.SPEED, R.string.unit_foot_per_second, R.string.unit_foot_per_second_short),
+ NormalUnit( MyUnitIDS.yard_per_hour, BigDecimal.valueOf(914.4), UnitGroup.SPEED, R.string.unit_yard_per_hour, R.string.unit_yard_per_hour_short),
+ NormalUnit( MyUnitIDS.yard_per_minute, BigDecimal.valueOf(54_864), UnitGroup.SPEED, R.string.unit_yard_per_minute, R.string.unit_yard_per_minute_short),
+ NormalUnit( MyUnitIDS.yard_per_second, BigDecimal.valueOf(3_291_840), UnitGroup.SPEED, R.string.unit_yard_per_second, R.string.unit_yard_per_second_short),
+ NormalUnit( MyUnitIDS.mile_per_hour, BigDecimal.valueOf(1_609_344), UnitGroup.SPEED, R.string.unit_mile_per_hour, R.string.unit_mile_per_hour_short),
+ NormalUnit( MyUnitIDS.mile_per_minute, BigDecimal.valueOf(96_560_640), UnitGroup.SPEED, R.string.unit_mile_per_minute, R.string.unit_mile_per_minute_short),
+ NormalUnit( MyUnitIDS.mile_per_second, BigDecimal.valueOf(5_793_638_400), UnitGroup.SPEED, R.string.unit_mile_per_second, R.string.unit_mile_per_second_short),
+ BackwardUnit(MyUnitIDS.minute_per_kilometer, BigDecimal.valueOf(60_000_000), UnitGroup.SPEED, R.string.unit_minute_per_kilometer, R.string.unit_minute_per_kilometer_short),
+ BackwardUnit(MyUnitIDS.minute_per_mile, BigDecimal.valueOf(96_560_640), UnitGroup.SPEED, R.string.unit_minute_per_mile, R.string.unit_minute_per_mile_short),
+ BackwardUnit(MyUnitIDS.hour_per_kilometer, BigDecimal.valueOf(1_000_000), UnitGroup.SPEED, R.string.unit_hour_per_kilometer, R.string.unit_hour_per_kilometer_short),
+ BackwardUnit(MyUnitIDS.hour_per_mile, BigDecimal.valueOf(1_609_344), UnitGroup.SPEED, R.string.unit_hour_per_mile, R.string.unit_hour_per_mile_short),
+ NormalUnit( MyUnitIDS.knot, BigDecimal.valueOf(1_852_000), UnitGroup.SPEED, R.string.unit_knot, R.string.unit_knot_short),
+ NormalUnit( MyUnitIDS.velocity_of_light_in_vacuum, BigDecimal.valueOf(1_079_252_848_799_998), UnitGroup.SPEED, R.string.unit_velocity_of_light_in_vacuum, R.string.unit_velocity_of_light_in_vacuum_short),
+ NormalUnit( MyUnitIDS.cosmic_velocity_first, BigDecimal.valueOf(28_440_000_000), UnitGroup.SPEED, R.string.unit_cosmic_velocity_first, R.string.unit_cosmic_velocity_first_short),
+ NormalUnit( MyUnitIDS.cosmic_velocity_second, BigDecimal.valueOf(40_320_000_000), UnitGroup.SPEED, R.string.unit_cosmic_velocity_second, R.string.unit_cosmic_velocity_second_short),
+ NormalUnit( MyUnitIDS.cosmic_velocity_third, BigDecimal.valueOf(60_012_000_000), UnitGroup.SPEED, R.string.unit_cosmic_velocity_third, R.string.unit_cosmic_velocity_third_short),
+ NormalUnit( MyUnitIDS.earths_orbital_speed, BigDecimal.valueOf(107_154_000_000), UnitGroup.SPEED, R.string.unit_earths_orbital_speed, R.string.unit_earths_orbital_speed_short),
+ NormalUnit( MyUnitIDS.mach, BigDecimal.valueOf(1_236_960_000), UnitGroup.SPEED, R.string.unit_mach, R.string.unit_mach_short),
+ NormalUnit( MyUnitIDS.mach_si_standard, BigDecimal.valueOf(1_062_167_040), UnitGroup.SPEED, R.string.unit_mach_si_standard, R.string.unit_mach_si_standard_short),
)
}
diff --git a/data/converter/src/test/java/com/sadellie/unitto/data/converter/AllUnitsTest.kt b/data/converter/src/test/java/com/sadellie/unitto/data/converter/AllUnitsTest.kt
index 59f6bfb3..83b4f1da 100644
--- a/data/converter/src/test/java/com/sadellie/unitto/data/converter/AllUnitsTest.kt
+++ b/data/converter/src/test/java/com/sadellie/unitto/data/converter/AllUnitsTest.kt
@@ -235,6 +235,7 @@ class AllUnitsTest {
fun testMass() = testWithUnits {
electron_mass_rest.checkWith(milligram, "1500000000000000000", "0.000001")
atomic_mass_unit.checkWith(electron_mass_rest, "150", "273433.27951")
+ grain.checkWith(milligram, "1500", "97198.365")
microgram.checkWith(gram, "1500", "0.0015")
milligram.checkWith(ounce, "1500", "0.05291")
gram.checkWith(ounce, "1500", "52.91094")
@@ -321,6 +322,10 @@ class AllUnitsTest {
mile_per_hour.checkWith(foot_per_hour, "396", "2090880")
mile_per_minute.checkWith(foot_per_hour, "396", "125452800")
mile_per_second.checkWith(foot_per_hour, "396", "7527168000")
+ minute_per_kilometer.checkWith(kilometer_per_minute, "396", "0.00253")
+ minute_per_mile.checkWith(mile_per_minute, "396", "0.00253")
+ hour_per_kilometer.checkWith(kilometer_per_hour, "396", "0.00253")
+ hour_per_mile.checkWith(mile_per_hour, "396", "0.00253")
knot.checkWith(meter_per_hour, "396", "733392")
velocity_of_light_in_vacuum.checkWith(meter_per_second, "1", "299792458")
cosmic_velocity_first.checkWith(meter_per_second, "1", "7900")
diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/FuelBackward.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/BackwardUnit.kt
similarity index 93%
rename from data/model/src/main/java/com/sadellie/unitto/data/model/unit/FuelBackward.kt
rename to data/model/src/main/java/com/sadellie/unitto/data/model/unit/BackwardUnit.kt
index e349de33..e249018a 100644
--- a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/FuelBackward.kt
+++ b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/BackwardUnit.kt
@@ -1,6 +1,6 @@
/*
* Unitto is a unit converter for Android
- * Copyright (c) 2023 Elshan Agaev
+ * Copyright (c) 2024 Elshan Agaev
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -24,7 +24,7 @@ import com.sadellie.unitto.data.model.UnitGroup
import java.math.BigDecimal
import java.math.RoundingMode
-data class FuelBackward(
+data class BackwardUnit(
override val id: String,
override val basicUnit: BigDecimal,
override val group: UnitGroup,
@@ -39,17 +39,17 @@ data class FuelBackward(
if (unitTo.basicUnit.isEqualTo(BigDecimal.ZERO)) return BigDecimal.ZERO
return when (unitTo) {
- is FuelForward -> this
+ is NormalUnit -> this
.basicUnit
.setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
.div(unitTo.basicUnit)
.div(value)
- is FuelBackward -> unitTo
+ is BackwardUnit -> unitTo
.basicUnit
.setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
- .div(this.basicUnit)
.multiply(value)
+ .div(this.basicUnit)
else -> BigDecimal.ZERO
}
@@ -64,7 +64,7 @@ data class FuelBackward(
isFavorite: Boolean,
pairId: String?,
counter: Int,
- ): FuelBackward = copy(
+ ): BackwardUnit = copy(
id = id,
basicUnit = basicUnit,
group = group,
diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/FuelForward.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/FuelForward.kt
deleted file mode 100644
index 19278567..00000000
--- a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/FuelForward.kt
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Unitto is a unit converter for Android
- * Copyright (c) 2023 Elshan Agaev
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
-package com.sadellie.unitto.data.model.unit
-
-import com.sadellie.unitto.core.base.MAX_PRECISION
-import com.sadellie.unitto.data.common.isEqualTo
-import com.sadellie.unitto.data.model.UnitGroup
-import java.math.BigDecimal
-import java.math.RoundingMode
-
-data class FuelForward(
- override val id: String,
- override val basicUnit: BigDecimal,
- override val group: UnitGroup,
- override val displayName: Int,
- override val shortName: Int,
- override val isFavorite: Boolean = false,
- override val pairId: String? = null,
- override val counter: Int = 0,
-) : DefaultUnit {
- override fun convert(unitTo: DefaultUnit, value: BigDecimal): BigDecimal {
- // Avoid division by zero
- if (unitTo.basicUnit.isEqualTo(BigDecimal.ZERO)) return BigDecimal.ZERO
-
- return when (unitTo) {
- is FuelForward -> this
- .basicUnit
- .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
- .div(unitTo.basicUnit).multiply(value)
-
- is FuelBackward -> unitTo
- .basicUnit
- .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
- .div(this.basicUnit)
- .div(value)
-
- else -> BigDecimal.ZERO
- }
- }
-
- override fun clone(
- id: String,
- basicUnit: BigDecimal,
- group: UnitGroup,
- displayName: Int,
- shortName: Int,
- isFavorite: Boolean,
- pairId: String?,
- counter: Int,
- ): FuelForward = copy(
- id = id,
- basicUnit = basicUnit,
- group = group,
- displayName = displayName,
- shortName = shortName,
- isFavorite = isFavorite,
- pairId = pairId,
- counter = counter,
- )
-}
diff --git a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/NormalUnit.kt b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/NormalUnit.kt
index 4554b58d..061b8577 100644
--- a/data/model/src/main/java/com/sadellie/unitto/data/model/unit/NormalUnit.kt
+++ b/data/model/src/main/java/com/sadellie/unitto/data/model/unit/NormalUnit.kt
@@ -38,11 +38,21 @@ data class NormalUnit(
// Avoid division by zero
if (unitTo.basicUnit.isEqualTo(BigDecimal.ZERO)) return BigDecimal.ZERO
- return this
- .basicUnit
- .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
- .multiply(value)
- .div(unitTo.basicUnit)
+ return when (unitTo) {
+ is NormalUnit -> this
+ .basicUnit
+ .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
+ .multiply(value)
+ .div(unitTo.basicUnit)
+
+ is BackwardUnit -> unitTo
+ .basicUnit
+ .setScale(MAX_PRECISION, RoundingMode.HALF_EVEN)
+ .div(this.basicUnit)
+ .div(value)
+
+ else -> BigDecimal.ZERO
+ }
}
override fun clone(