mobile-ios/CovidSafe/SelectStateTerritoryViewController.swift
2021-02-02 11:04:43 +11:00

152 lines
5.5 KiB
Swift

//
// SelectStateTerritoryViewController.swift
// CovidSafe
//
// Copyright © 2020 Australian Government. All rights reserved.
//
import UIKit
let statisticsStateTerritorySelectedKey = "statisticsStateTerritorySelectedKey"
class SelectStateTerritoryViewController: UITableViewController {
var delegate: StateTerritorySelectionDelegate?
lazy var stateTerritoryConfig: StateTerritory = {
guard let value = UserDefaults.standard.string(forKey: statisticsStateTerritorySelectedKey) else {
return StateTerritory.AU
}
return StateTerritory(rawValue: value)!
}(){
didSet {
UserDefaults.standard.set(stateTerritoryConfig.rawValue, forKey: statisticsStateTerritorySelectedKey)
}
}
override func viewDidLoad() {
super.viewDidLoad()
title = "select_state_territory_heading".localizedString()
tableView.isScrollEnabled = false
let buttonTitle = "global_cancel_button_title".localizedString()
let item = UIBarButtonItem(
title: buttonTitle,
style: .plain,
target: self,
action: #selector(dismissView)
)
item.tintColor = .covidSafeColor
navigationItem.rightBarButtonItem = item
tableView.register(UINib(nibName: "StateTerritoryTableViewCell", bundle: nil), forCellReuseIdentifier: "StateTerritoryCell")
}
@objc func dismissView() {
dismiss(animated: true, completion: nil)
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 2
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return 1
}
return 8
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "StateTerritoryCell", for: indexPath) as! StateTerritoryTableViewCell
// Configure the cell...
if indexPath.section == 0 {
cell.stateTerritoryLabel.text = "country_region_name_au".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.AU
} else {
switch indexPath.row {
case 0:
cell.stateTerritoryLabel.text = "australian_capital_territory".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.ACT
case 1:
cell.stateTerritoryLabel.text = "new_south_wales".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.NSW
case 2:
cell.stateTerritoryLabel.text = "northern_territory".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.NT
case 3:
cell.stateTerritoryLabel.text = "queensland".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.QLD
case 4:
cell.stateTerritoryLabel.text = "south_australia".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.SA
case 5:
cell.stateTerritoryLabel.text = "tasmania".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.TAS
case 6:
cell.stateTerritoryLabel.text = "victoria".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.VIC
case 7:
cell.stateTerritoryLabel.text = "western_australia".localizedString()
cell.isSelectedTickView.isHidden = stateTerritoryConfig != StateTerritory.WA
default:
cell.stateTerritoryLabel.text = ""
cell.setSelected(false, animated: false)
}
}
return cell
}
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if section == 0 {
return nil
}
return "states_territories".localizedString()
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.section == 0 {
stateTerritoryConfig = StateTerritory.AU
} else {
switch indexPath.row {
case 0:
stateTerritoryConfig = StateTerritory.ACT
case 1:
stateTerritoryConfig = StateTerritory.NSW
case 2:
stateTerritoryConfig = StateTerritory.NT
case 3:
stateTerritoryConfig = StateTerritory.QLD
case 4:
stateTerritoryConfig = StateTerritory.SA
case 5:
stateTerritoryConfig = StateTerritory.TAS
case 6:
stateTerritoryConfig = StateTerritory.VIC
case 7:
stateTerritoryConfig = StateTerritory.WA
default:
stateTerritoryConfig = StateTerritory.AU
}
}
delegate?.didChangeStateTerritory(selectedState: stateTerritoryConfig)
dismissView()
}
}
enum StateTerritory: String {
case AU, ACT, NSW, NT, QLD, SA, TAS, VIC, WA
}
protocol StateTerritorySelectionDelegate {
func didChangeStateTerritory( selectedState: StateTerritory )
}