Untitled

 avatar
unknown
swift
a year ago
3.5 kB
3
Indexable
//
//  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()
    }
}