diff --git a/app/src/main/java/net/youapps/calcyou/Destination.kt b/app/src/main/java/net/youapps/calcyou/Destination.kt index a107a26..842f5ca 100644 --- a/app/src/main/java/net/youapps/calcyou/Destination.kt +++ b/app/src/main/java/net/youapps/calcyou/Destination.kt @@ -4,21 +4,43 @@ import androidx.annotation.StringRes import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Carpenter import androidx.compose.material.icons.rounded.Coffee +import androidx.compose.material.icons.rounded.Compress +import androidx.compose.material.icons.rounded.DoubleArrow +import androidx.compose.material.icons.rounded.ElectricBolt import androidx.compose.material.icons.rounded.GraphicEq +import androidx.compose.material.icons.rounded.HourglassTop +import androidx.compose.material.icons.rounded.InvertColors +import androidx.compose.material.icons.rounded.Lightbulb +import androidx.compose.material.icons.rounded.LocalGasStation +import androidx.compose.material.icons.rounded.Rotate90DegreesCw import androidx.compose.material.icons.rounded.Scale import androidx.compose.material.icons.rounded.SdStorage import androidx.compose.material.icons.rounded.Speed import androidx.compose.material.icons.rounded.Square +import androidx.compose.material.icons.rounded.TextRotationAngleup import androidx.compose.material.icons.rounded.Thermostat +import androidx.compose.material.icons.rounded.WaterDrop +import androidx.compose.material.icons.rounded.WbSunny import androidx.compose.ui.graphics.vector.ImageVector +import net.youapps.calcyou.data.converters.AngleConverter import net.youapps.calcyou.data.converters.AreaConverter +import net.youapps.calcyou.data.converters.DensityConverter import net.youapps.calcyou.data.converters.DigitalStorageConverter +import net.youapps.calcyou.data.converters.EnergyConverter +import net.youapps.calcyou.data.converters.ForceConverter import net.youapps.calcyou.data.converters.FrequencyConverter +import net.youapps.calcyou.data.converters.FuelConverter import net.youapps.calcyou.data.converters.LengthConverter +import net.youapps.calcyou.data.converters.LightConverter import net.youapps.calcyou.data.converters.MassConverter +import net.youapps.calcyou.data.converters.PowerConverter +import net.youapps.calcyou.data.converters.PressureConverter import net.youapps.calcyou.data.converters.SpeedConverter import net.youapps.calcyou.data.converters.TemperatureConverter +import net.youapps.calcyou.data.converters.TimeConverter +import net.youapps.calcyou.data.converters.TorqueConverter import net.youapps.calcyou.data.converters.UnitConverter +import net.youapps.calcyou.data.converters.ViscosityConverter import net.youapps.calcyou.data.converters.VolumeConverter sealed class Destination(open val route: String) { @@ -81,9 +103,95 @@ sealed class Destination(open val route: String) { VolumeConverter() ) + object Angle : + Converter( + "angle", R.string.angle, Icons.Rounded.TextRotationAngleup, + AngleConverter() + ) + + object Power : + Converter( + "power", R.string.power, Icons.Rounded.Lightbulb, + PowerConverter() + ) + + object Viscosity : + Converter( + "viscosity", R.string.viscosity, Icons.Rounded.InvertColors, + ViscosityConverter() + ) + + object Force : + Converter( + "force", R.string.force, Icons.Rounded.DoubleArrow, + ForceConverter() + ) + + object Energy : + Converter( + "energy", R.string.energy, Icons.Rounded.ElectricBolt, + EnergyConverter() + ) + + object Torque : + Converter( + "torque", R.string.torque, Icons.Rounded.Rotate90DegreesCw, + TorqueConverter() + ) + + object Density : + Converter( + "density", R.string.density, Icons.Rounded.WaterDrop, + DensityConverter() + ) + + object Fuel : + Converter( + "fuel", R.string.fuel, Icons.Rounded.LocalGasStation, + FuelConverter() + ) + + object Time : + Converter( + "time", R.string.time, Icons.Rounded.HourglassTop, + TimeConverter() + ) + + object Pressure : + Converter( + "pressure", R.string.pressure, Icons.Rounded.Compress, + PressureConverter() + ) + + object Light : + Converter( + "light", R.string.light, Icons.Rounded.WbSunny, + LightConverter() + ) + companion object { val values: Array = - arrayOf(Temperature, Area, DigitalStorage, Frequency, Length, Mass, Speed, Volume) + arrayOf( + Temperature, + Area, + DigitalStorage, + Frequency, + Length, + Mass, + Speed, + Volume, + Angle, + Power, + Viscosity, + Force, + Energy, + Torque, + Density, + Fuel, + Time, + Pressure, + Light + ) } } } \ No newline at end of file diff --git a/app/src/main/java/net/youapps/calcyou/data/converters/AngleConverter.kt b/app/src/main/java/net/youapps/calcyou/data/converters/AngleConverter.kt new file mode 100644 index 0000000..c03c62c --- /dev/null +++ b/app/src/main/java/net/youapps/calcyou/data/converters/AngleConverter.kt @@ -0,0 +1,13 @@ +package net.youapps.calcyou.data.converters + +import net.youapps.calcyou.R + +class AngleConverter : UnitConverter { + override val units: List = listOf( + FactorUnit(R.string.degree, Math.PI / 180), + FactorUnit(R.string.radian, 1.0), + FactorUnit(R.string.gradian, Math.PI / 200), + FactorUnit(R.string.turn, 2 * Math.PI) + ) +} + diff --git a/app/src/main/java/net/youapps/calcyou/data/converters/DensityConverter.kt b/app/src/main/java/net/youapps/calcyou/data/converters/DensityConverter.kt new file mode 100644 index 0000000..b21346e --- /dev/null +++ b/app/src/main/java/net/youapps/calcyou/data/converters/DensityConverter.kt @@ -0,0 +1,12 @@ +package net.youapps.calcyou.data.converters + +import net.youapps.calcyou.R + +class DensityConverter : UnitConverter { + override val units: List = listOf( + FactorUnit(R.string.kilogram_per_cubic_meter, 1.0), + FactorUnit(R.string.gram_per_cubic_centimeter, 1E3), + FactorUnit(R.string.pound_per_cubic_foot, 16.018463), + FactorUnit(R.string.pound_per_gallon, 0.11982642) + ) +} \ No newline at end of file diff --git a/app/src/main/java/net/youapps/calcyou/data/converters/EnergyConverter.kt b/app/src/main/java/net/youapps/calcyou/data/converters/EnergyConverter.kt new file mode 100644 index 0000000..53ca953 --- /dev/null +++ b/app/src/main/java/net/youapps/calcyou/data/converters/EnergyConverter.kt @@ -0,0 +1,13 @@ +package net.youapps.calcyou.data.converters + +import net.youapps.calcyou.R + +class EnergyConverter : UnitConverter { + override val units: List = listOf( + FactorUnit(R.string.joule, 1.0), + FactorUnit(R.string.kilojoule, 1E3), + FactorUnit(R.string.megajoule, 1E6), + FactorUnit(R.string.calorie, 4.184), + FactorUnit(R.string.kilocalorie, 4.184E3) + ) +} \ No newline at end of file diff --git a/app/src/main/java/net/youapps/calcyou/data/converters/ForceConverter.kt b/app/src/main/java/net/youapps/calcyou/data/converters/ForceConverter.kt new file mode 100644 index 0000000..9aee4e7 --- /dev/null +++ b/app/src/main/java/net/youapps/calcyou/data/converters/ForceConverter.kt @@ -0,0 +1,13 @@ +package net.youapps.calcyou.data.converters + +import net.youapps.calcyou.R + +class ForceConverter : UnitConverter { + override val units: List = listOf( + FactorUnit(R.string.newton, 1.0), + FactorUnit(R.string.kilonewton, 1E3), + FactorUnit(R.string.dyne, 1E-5), + FactorUnit(R.string.pound_force, 4.448222), + FactorUnit(R.string.ounce_force, 0.2780139) + ) +} \ No newline at end of file diff --git a/app/src/main/java/net/youapps/calcyou/data/converters/FuelConverter.kt b/app/src/main/java/net/youapps/calcyou/data/converters/FuelConverter.kt new file mode 100644 index 0000000..26d020a --- /dev/null +++ b/app/src/main/java/net/youapps/calcyou/data/converters/FuelConverter.kt @@ -0,0 +1,12 @@ +package net.youapps.calcyou.data.converters + +import net.youapps.calcyou.R + +class FuelConverter : UnitConverter { + override val units: List = listOf( + FactorUnit(R.string.liter, 1.0), + FactorUnit(R.string.gallon_us, 3.78541), + FactorUnit(R.string.gallon_uk, 4.54609), + FactorUnit(R.string.barrel, 158.98729) + ) +} \ No newline at end of file diff --git a/app/src/main/java/net/youapps/calcyou/data/converters/LightConverter.kt b/app/src/main/java/net/youapps/calcyou/data/converters/LightConverter.kt new file mode 100644 index 0000000..0ecb0a5 --- /dev/null +++ b/app/src/main/java/net/youapps/calcyou/data/converters/LightConverter.kt @@ -0,0 +1,12 @@ +package net.youapps.calcyou.data.converters + +import net.youapps.calcyou.R + +class LightConverter : UnitConverter { + override val units: List = listOf( + FactorUnit(R.string.lumen, 1.0), + FactorUnit(R.string.candela, 1.0), + FactorUnit(R.string.lux, 1.0 / 3.14159), // Lumen per square meter + FactorUnit(R.string.footcandle, 10.7639104167097) + ) +} \ No newline at end of file diff --git a/app/src/main/java/net/youapps/calcyou/data/converters/PowerConverter.kt b/app/src/main/java/net/youapps/calcyou/data/converters/PowerConverter.kt new file mode 100644 index 0000000..7a05d4a --- /dev/null +++ b/app/src/main/java/net/youapps/calcyou/data/converters/PowerConverter.kt @@ -0,0 +1,13 @@ +package net.youapps.calcyou.data.converters + +import net.youapps.calcyou.R + +class PowerConverter : UnitConverter { + override val units: List = listOf( + FactorUnit(R.string.watt, 1.0), + FactorUnit(R.string.kilowatt, 1E3), + FactorUnit(R.string.megawatt, 1E6), + FactorUnit(R.string.horsepower, 745.7), + FactorUnit(R.string.btu_per_hour, 252.0) + ) +} \ No newline at end of file diff --git a/app/src/main/java/net/youapps/calcyou/data/converters/PressureConverter.kt b/app/src/main/java/net/youapps/calcyou/data/converters/PressureConverter.kt new file mode 100644 index 0000000..399d3cd --- /dev/null +++ b/app/src/main/java/net/youapps/calcyou/data/converters/PressureConverter.kt @@ -0,0 +1,16 @@ +package net.youapps.calcyou.data.converters + +import net.youapps.calcyou.R + +class PressureConverter : UnitConverter { + override val units: List = listOf( + FactorUnit(R.string.pascal, 1.0), + FactorUnit(R.string.kilopascal, 1E3), + FactorUnit(R.string.megapascal, 1E6), + FactorUnit(R.string.gigapascal, 1E9), + FactorUnit(R.string.bar, 1E5), + FactorUnit(R.string.millibar, 1E2), + FactorUnit(R.string.atmosphere, 101325.0), + FactorUnit(R.string.psi, 6894.757293168) // Pounds per Square Inch + ) +} \ No newline at end of file diff --git a/app/src/main/java/net/youapps/calcyou/data/converters/TimeConverter.kt b/app/src/main/java/net/youapps/calcyou/data/converters/TimeConverter.kt new file mode 100644 index 0000000..81828f0 --- /dev/null +++ b/app/src/main/java/net/youapps/calcyou/data/converters/TimeConverter.kt @@ -0,0 +1,13 @@ +package net.youapps.calcyou.data.converters + +import net.youapps.calcyou.R + +class TimeConverter : UnitConverter { + override val units: List = listOf( + FactorUnit(R.string.second, 1.0), + FactorUnit(R.string.minute, 60.0), + FactorUnit(R.string.hour, 3.6E3), + FactorUnit(R.string.day, 8.64E4), + FactorUnit(R.string.week, 6.048E5) + ) +} \ No newline at end of file diff --git a/app/src/main/java/net/youapps/calcyou/data/converters/TorqueConverter.kt b/app/src/main/java/net/youapps/calcyou/data/converters/TorqueConverter.kt new file mode 100644 index 0000000..bd48cbd --- /dev/null +++ b/app/src/main/java/net/youapps/calcyou/data/converters/TorqueConverter.kt @@ -0,0 +1,12 @@ +package net.youapps.calcyou.data.converters + +import net.youapps.calcyou.R + +class TorqueConverter : UnitConverter { + override val units: List = listOf( + FactorUnit(R.string.newton_meter, 1.0), + FactorUnit(R.string.kilonewton_meter, 1E3), + FactorUnit(R.string.pound_foot, 1.3558179), + FactorUnit(R.string.ounce_inch, 0.08333333) + ) +} \ No newline at end of file diff --git a/app/src/main/java/net/youapps/calcyou/data/converters/ViscosityConverter.kt b/app/src/main/java/net/youapps/calcyou/data/converters/ViscosityConverter.kt new file mode 100644 index 0000000..c6e1bd5 --- /dev/null +++ b/app/src/main/java/net/youapps/calcyou/data/converters/ViscosityConverter.kt @@ -0,0 +1,12 @@ +package net.youapps.calcyou.data.converters + +import net.youapps.calcyou.R + +class ViscosityConverter : UnitConverter { + override val units: List = listOf( + FactorUnit(R.string.pascal_second, 1.0), + FactorUnit(R.string.centipoise, 0.01), + FactorUnit(R.string.stoke, 1E4), + FactorUnit(R.string.poiseuille, 1E9) + ) +} \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 996a38d..2554652 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -82,4 +82,66 @@ Carriage Return Space Character Input + Degree + Radian + Gradian + Turn + Watt + Kilowatt + Megawatt + Horsepower + BTU per hour + Pascal-second + Centipoise + Stoke + Poiseuille + Newton + Kilonewton + Dyne + Pound-force + Ounce-force + Second + Minute + Hour + Day + Week + Gallon (US) + Gallon (UK) + Barrel + Joule + Kilojoule + Megajoule + Calorie + Kilocalorie + Newton-meter + Kilonewton-meter + Pound-foot + Ounce-inch + Kilogram per cubic meter + Gram per cubic centimeter + Pound per cubic foot + Pound per gallon + Pascal + KiloPascal + MegaPascal + GigaPascal + Bar + Millibar + Atmosphere + PSI + Lumen + Candela + Lux + Footcandle + Angle + Power + Viscosity + Force + Energy + Torque + Density + Fuel + Time + Pressure + Light \ No newline at end of file