From 8e5a9215de945cd6a6bc274c37bb1f2d31581bd5 Mon Sep 17 00:00:00 2001 From: Roopesh Chander Date: Sat, 9 Mar 2019 12:53:14 +0530 Subject: on-demand: iOS: Show list of SSIDs in a separate screen Signed-off-by: Roopesh Chander --- .../TunnelDetailTableViewController.swift | 42 ++++++++++++++++++---- 1 file changed, 36 insertions(+), 6 deletions(-) (limited to 'WireGuard/WireGuard/UI/iOS/ViewController/TunnelDetailTableViewController.swift') diff --git a/WireGuard/WireGuard/UI/iOS/ViewController/TunnelDetailTableViewController.swift b/WireGuard/WireGuard/UI/iOS/ViewController/TunnelDetailTableViewController.swift index 4ed75a6..abee818 100644 --- a/WireGuard/WireGuard/UI/iOS/ViewController/TunnelDetailTableViewController.swift +++ b/WireGuard/WireGuard/UI/iOS/ViewController/TunnelDetailTableViewController.swift @@ -76,10 +76,10 @@ class TunnelDetailTableViewController: UITableViewController { tableView.estimatedRowHeight = 44 tableView.rowHeight = UITableView.automaticDimension - tableView.allowsSelection = false tableView.register(SwitchCell.self) tableView.register(KeyValueCell.self) tableView.register(ButtonCell.self) + tableView.register(ChevronCell.self) restorationIdentifier = "TunnelDetailVC:\(tunnel.name)" } @@ -407,15 +407,26 @@ extension TunnelDetailTableViewController { } private func onDemandCell(for tableView: UITableView, at indexPath: IndexPath) -> UITableViewCell { - let cell: KeyValueCell = tableView.dequeueReusableCell(for: indexPath) let field = TunnelDetailTableViewController.onDemandFields[indexPath.row] - cell.key = field.localizedUIString if field == .onDemand { + let cell: KeyValueCell = tableView.dequeueReusableCell(for: indexPath) + cell.key = field.localizedUIString cell.value = onDemandViewModel.localizedInterfaceDescription - } else if field == .ssid { - cell.value = onDemandViewModel.ssidOption.localizedUIString + return cell + } else { + assert(field == .ssid) + if onDemandViewModel.ssidOption == .anySSID { + let cell: KeyValueCell = tableView.dequeueReusableCell(for: indexPath) + cell.key = field.localizedUIString + cell.value = onDemandViewModel.ssidOption.localizedUIString + return cell + } else { + let cell: ChevronCell = tableView.dequeueReusableCell(for: indexPath) + cell.message = field.localizedUIString + cell.detailMessage = onDemandViewModel.ssidOption.localizedUIString + return cell + } } - return cell } private func deleteConfigurationCell(for tableView: UITableView, at indexPath: IndexPath) -> UITableViewCell { @@ -438,3 +449,22 @@ extension TunnelDetailTableViewController { } } + +extension TunnelDetailTableViewController { + override func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? { + if case .onDemand = sections[indexPath.section], + case .ssid = TunnelDetailTableViewController.onDemandFields[indexPath.row] { + return indexPath + } + return nil + } + + override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + if case .onDemand = sections[indexPath.section], + case .ssid = TunnelDetailTableViewController.onDemandFields[indexPath.row] { + let ssidDetailVC = SSIDOptionDetailTableViewController(title: onDemandViewModel.ssidOption.localizedUIString, ssids: onDemandViewModel.selectedSSIDs) + navigationController?.pushViewController(ssidDetailVC, animated: true) + } + tableView.deselectRow(at: indexPath, animated: true) + } +} -- cgit v1.2.3-59-g8ed1b