Skip to content

Commit

Permalink
feat: add new converters
Browse files Browse the repository at this point in the history
  • Loading branch information
SuhasDissa committed Dec 9, 2023
1 parent 451f37c commit 98190bb
Show file tree
Hide file tree
Showing 13 changed files with 312 additions and 1 deletion.
110 changes: 109 additions & 1 deletion app/src/main/java/net/youapps/calcyou/Destination.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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<Converter> =
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
)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package net.youapps.calcyou.data.converters

import net.youapps.calcyou.R

class AngleConverter : UnitConverter {
override val units: List<ConverterUnit> = 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)
)
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package net.youapps.calcyou.data.converters

import net.youapps.calcyou.R

class DensityConverter : UnitConverter {
override val units: List<ConverterUnit> = 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)
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package net.youapps.calcyou.data.converters

import net.youapps.calcyou.R

class EnergyConverter : UnitConverter {
override val units: List<ConverterUnit> = 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)
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package net.youapps.calcyou.data.converters

import net.youapps.calcyou.R

class ForceConverter : UnitConverter {
override val units: List<ConverterUnit> = 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)
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package net.youapps.calcyou.data.converters

import net.youapps.calcyou.R

class FuelConverter : UnitConverter {
override val units: List<ConverterUnit> = 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)
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package net.youapps.calcyou.data.converters

import net.youapps.calcyou.R

class LightConverter : UnitConverter {
override val units: List<ConverterUnit> = 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)
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package net.youapps.calcyou.data.converters

import net.youapps.calcyou.R

class PowerConverter : UnitConverter {
override val units: List<ConverterUnit> = 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)
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package net.youapps.calcyou.data.converters

import net.youapps.calcyou.R

class PressureConverter : UnitConverter {
override val units: List<ConverterUnit> = 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
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package net.youapps.calcyou.data.converters

import net.youapps.calcyou.R

class TimeConverter : UnitConverter {
override val units: List<ConverterUnit> = 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)
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package net.youapps.calcyou.data.converters

import net.youapps.calcyou.R

class TorqueConverter : UnitConverter {
override val units: List<ConverterUnit> = 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)
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package net.youapps.calcyou.data.converters

import net.youapps.calcyou.R

class ViscosityConverter : UnitConverter {
override val units: List<ConverterUnit> = listOf(
FactorUnit(R.string.pascal_second, 1.0),
FactorUnit(R.string.centipoise, 0.01),
FactorUnit(R.string.stoke, 1E4),
FactorUnit(R.string.poiseuille, 1E9)
)
}
62 changes: 62 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -82,4 +82,66 @@
<string name="carriage_return">Carriage Return</string>
<string name="space">Space</string>
<string name="character_input">Character Input</string>
<string name="degree">Degree</string>
<string name="radian">Radian</string>
<string name="gradian">Gradian</string>
<string name="turn">Turn</string>
<string name="watt">Watt</string>
<string name="kilowatt">Kilowatt</string>
<string name="megawatt">Megawatt</string>
<string name="horsepower">Horsepower</string>
<string name="btu_per_hour">BTU per hour</string>
<string name="pascal_second">Pascal-second</string>
<string name="centipoise">Centipoise</string>
<string name="stoke">Stoke</string>
<string name="poiseuille">Poiseuille</string>
<string name="newton">Newton</string>
<string name="kilonewton">Kilonewton</string>
<string name="dyne">Dyne</string>
<string name="pound_force">Pound-force</string>
<string name="ounce_force">Ounce-force</string>
<string name="second">Second</string>
<string name="minute">Minute</string>
<string name="hour">Hour</string>
<string name="day">Day</string>
<string name="week">Week</string>
<string name="gallon_us">Gallon (US)</string>
<string name="gallon_uk">Gallon (UK)</string>
<string name="barrel">Barrel</string>
<string name="joule">Joule</string>
<string name="kilojoule">Kilojoule</string>
<string name="megajoule">Megajoule</string>
<string name="calorie">Calorie</string>
<string name="kilocalorie">Kilocalorie</string>
<string name="newton_meter">Newton-meter</string>
<string name="kilonewton_meter">Kilonewton-meter</string>
<string name="pound_foot">Pound-foot</string>
<string name="ounce_inch">Ounce-inch</string>
<string name="kilogram_per_cubic_meter">Kilogram per cubic meter</string>
<string name="gram_per_cubic_centimeter">Gram per cubic centimeter</string>
<string name="pound_per_cubic_foot">Pound per cubic foot</string>
<string name="pound_per_gallon">Pound per gallon</string>
<string name="pascal">Pascal</string>
<string name="kilopascal">KiloPascal</string>
<string name="megapascal">MegaPascal</string>
<string name="gigapascal">GigaPascal</string>
<string name="bar">Bar</string>
<string name="millibar">Millibar</string>
<string name="atmosphere">Atmosphere</string>
<string name="psi">PSI</string>
<string name="lumen">Lumen</string>
<string name="candela">Candela</string>
<string name="lux">Lux</string>
<string name="footcandle">Footcandle</string>
<string name="angle">Angle</string>
<string name="power">Power</string>
<string name="viscosity">Viscosity</string>
<string name="force">Force</string>
<string name="energy">Energy</string>
<string name="torque">Torque</string>
<string name="density">Density</string>
<string name="fuel">Fuel</string>
<string name="time">Time</string>
<string name="pressure">Pressure</string>
<string name="light">Light</string>
</resources>

0 comments on commit 98190bb

Please sign in to comment.