//
// ContentView.swift
// Unit Converter
//
// Created by Arkar Min Tun on 14/08/2023.
//
import SwiftUI
struct ContentView: View {
@State private var selectedConversion = "Temperature"
let conversions = ["Temperature", "Length", "Time", "Volume"]
@State private var temperatureInput = 0.0
@State private var temperatureFromUnit: UnitTemperature = .celsius
@State private var temperatureToUnit: UnitTemperature = .celsius
let temperatureConversions: [UnitTemperature] = [.celsius, .kelvin, .fahrenheit]
var temperatureResult: String {
var measurement = Measurement(value: temperatureInput, unit: temperatureFromUnit)
measurement.convert(to: temperatureToUnit)
return measurement.formatted()
}
func getTemperatureUnit(_ temp: UnitTemperature) -> String {
switch temp {
case .celsius:
return "Celcius"
case .fahrenheit:
return "Fahrenheit"
case .kelvin:
return "Kelvin"
default:
return "Unsupport"
}
}
var body: some View {
NavigationView {
Form {
Section {
Picker("Conversion Type", selection: $selectedConversion) {
ForEach(conversions, id: \.self) {
Text($0)
}
}
}
switch selectedConversion {
case "Temperature":
Section {
HStack {
TextField(
"Temperature",
value: $temperatureInput,
format: .number
)
Picker("", selection: $temperatureFromUnit) {
ForEach(temperatureConversions, id: \.self) {
Text(getTemperatureUnit($0))
}
}
}
} header: {
Text("Temperature Conversion")
}
Section {
Picker("Unit To", selection: $temperatureToUnit) {
ForEach(temperatureConversions, id: \.self) {
Text(getTemperatureUnit($0))
}
}
.pickerStyle(.segmented)
} header: {
Text("Convert To")
}
Section {
Text(temperatureResult)
} header: {
Text("Result")
}
default:
Section {
Text("HELLO")
} header: {
Text("Others")
}
}
}
.navigationTitle("Unit Converter")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}