diff options
author | Roopesh Chander <roop@roopc.net> | 2019-03-09 09:47:35 +0530 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-03-18 06:46:55 +0100 |
commit | 64925cab898b646e4e6d6b0bab10a723ffa99231 (patch) | |
tree | 857f70902b3036d84cb528b2090c9f469d77cb35 | |
parent | on-demand: Remove ActivateOnDemandSetting type (diff) | |
download | wireguard-apple-64925cab898b646e4e6d6b0bab10a723ffa99231.tar.xz wireguard-apple-64925cab898b646e4e6d6b0bab10a723ffa99231.zip |
on-demand: iOS: SSIDs view: Always show the selected SSIDs section
Signed-off-by: Roopesh Chander <roop@roopc.net>
3 files changed, 38 insertions, 25 deletions
diff --git a/WireGuard/WireGuard/Base.lproj/Localizable.strings b/WireGuard/WireGuard/Base.lproj/Localizable.strings index fa271ca..de2a8c2 100644 --- a/WireGuard/WireGuard/Base.lproj/Localizable.strings +++ b/WireGuard/WireGuard/Base.lproj/Localizable.strings @@ -90,8 +90,9 @@ "tunnelOnDemandOnlySelectedSSIDs" = "Only selected SSIDs"; "tunnelOnDemandExceptSelectedSSIDs" = "Except selected SSIDs"; -"tunnelOnDemandSelectionViewTitle" = "Select SSIDs"; -"tunnelOnDemandSectionTitleSelectedSSIDs" = "Selected SSIDs"; +"tunnelOnDemandSSIDViewTitle" = "SSIDs"; +"tunnelOnDemandSectionTitleSelectedSSIDs" = "SSIDs"; +"tunnelOnDemandNoSSIDs" = "No SSIDs"; "tunnelOnDemandSectionTitleAddSSIDs" = "Add SSIDs"; "tunnelOnDemandAddMessageAddNewSSID" = "Add manually"; "tunnelOnDemandAddMessageAddConnectedSSID (%@)" = "Connected: %@"; diff --git a/WireGuard/WireGuard/UI/iOS/View/TextCell.swift b/WireGuard/WireGuard/UI/iOS/View/TextCell.swift index 303f9c7..ba9b37f 100644 --- a/WireGuard/WireGuard/UI/iOS/View/TextCell.swift +++ b/WireGuard/WireGuard/UI/iOS/View/TextCell.swift @@ -17,8 +17,18 @@ class TextCell: UITableViewCell { fatalError("init(coder:) has not been implemented") } + func setTextColor(_ color: UIColor) { + textLabel?.textColor = color + } + + func setTextAlignment(_ alignment: NSTextAlignment) { + textLabel?.textAlignment = alignment + } + override func prepareForReuse() { super.prepareForReuse() message = "" + setTextColor(.black) + setTextAlignment(.left) } } diff --git a/WireGuard/WireGuard/UI/iOS/ViewController/SSIDOptionEditTableViewController.swift b/WireGuard/WireGuard/UI/iOS/ViewController/SSIDOptionEditTableViewController.swift index f83d478..1256f56 100644 --- a/WireGuard/WireGuard/UI/iOS/ViewController/SSIDOptionEditTableViewController.swift +++ b/WireGuard/WireGuard/UI/iOS/ViewController/SSIDOptionEditTableViewController.swift @@ -50,7 +50,7 @@ class SSIDOptionEditTableViewController: UITableViewController { override func viewDidLoad() { super.viewDidLoad() - title = tr("tunnelOnDemandSelectionViewTitle") + title = tr("tunnelOnDemandSSIDViewTitle") tableView.estimatedRowHeight = 44 tableView.rowHeight = UITableView.automaticDimension @@ -66,9 +66,7 @@ class SSIDOptionEditTableViewController: UITableViewController { sections.removeAll() sections.append(.ssidOption) if selectedOption != .anySSID { - if !selectedSSIDs.isEmpty { - sections.append(.selectedSSIDs) - } + sections.append(.selectedSSIDs) sections.append(.addSSIDs) } } @@ -112,7 +110,7 @@ extension SSIDOptionEditTableViewController { case .ssidOption: return ssidOptionFields.count case .selectedSSIDs: - return selectedSSIDs.count + return selectedSSIDs.isEmpty ? 1 : selectedSSIDs.count case .addSSIDs: return addSSIDRows.count } @@ -123,7 +121,11 @@ extension SSIDOptionEditTableViewController { case .ssidOption: return ssidOptionCell(for: tableView, at: indexPath) case .selectedSSIDs: - return selectedSSIDCell(for: tableView, at: indexPath) + if !selectedSSIDs.isEmpty { + return selectedSSIDCell(for: tableView, at: indexPath) + } else { + return noSSIDsCell(for: tableView, at: indexPath) + } case .addSSIDs: return addSSIDCell(for: tableView, at: indexPath) } @@ -133,7 +135,9 @@ extension SSIDOptionEditTableViewController { switch sections[indexPath.section] { case .ssidOption: return false - case .selectedSSIDs, .addSSIDs: + case .selectedSSIDs: + return !selectedSSIDs.isEmpty + case .addSSIDs: return true } } @@ -169,6 +173,14 @@ extension SSIDOptionEditTableViewController { return cell } + private func noSSIDsCell(for tableView: UITableView, at indexPath: IndexPath) -> UITableViewCell { + let cell: TextCell = tableView.dequeueReusableCell(for: indexPath) + cell.message = tr("tunnelOnDemandNoSSIDs") + cell.setTextColor(.gray) + cell.setTextAlignment(.center) + return cell + } + private func selectedSSIDCell(for tableView: UITableView, at indexPath: IndexPath) -> UITableViewCell { let cell: EditableTextCell = tableView.dequeueReusableCell(for: indexPath) cell.message = selectedSSIDs[indexPath.row] @@ -203,18 +215,15 @@ extension SSIDOptionEditTableViewController { case .selectedSSIDs: assert(editingStyle == .delete) selectedSSIDs.remove(at: indexPath.row) - loadSections() - let hasSelectedSSIDsSection = sections.contains(.selectedSSIDs) - if hasSelectedSSIDsSection { + if !selectedSSIDs.isEmpty { tableView.deleteRows(at: [indexPath], with: .automatic) } else { - tableView.deleteSections(IndexSet(integer: indexPath.section), with: .automatic) + tableView.reloadRows(at: [indexPath], with: .automatic) } loadAddSSIDRows() updateTableViewAddSSIDRows() case .addSSIDs: assert(editingStyle == .insert) - let hasSelectedSSIDsSection = sections.contains(.selectedSSIDs) let newSSID: String switch addSSIDRows[indexPath.row] { case .addConnectedSSID(let connectedSSID): @@ -226,8 +235,8 @@ extension SSIDOptionEditTableViewController { loadSections() let selectedSSIDsSection = sections.firstIndex(of: .selectedSSIDs)! let indexPath = IndexPath(row: selectedSSIDs.count - 1, section: selectedSSIDsSection) - if !hasSelectedSSIDsSection { - tableView.insertSections(IndexSet(integer: selectedSSIDsSection), with: .automatic) + if selectedSSIDs.count == 1 { + tableView.reloadRows(at: [indexPath], with: .automatic) } else { tableView.insertRows(at: [indexPath], with: .automatic) } @@ -240,12 +249,6 @@ extension SSIDOptionEditTableViewController { } } } - - func lastSelectedSSIDItemIndexPath() -> IndexPath? { - guard !selectedSSIDs.isEmpty else { return nil } - guard let section = sections.firstIndex(of: .selectedSSIDs) else { return nil } - return IndexPath(row: selectedSSIDs.count - 1, section: section) - } } extension SSIDOptionEditTableViewController { @@ -262,15 +265,14 @@ extension SSIDOptionEditTableViewController { switch sections[indexPath.section] { case .ssidOption: let previousOption = selectedOption - let previousSectionCount = sections.count selectedOption = ssidOptionFields[indexPath.row] loadSections() if previousOption == .anySSID { - let indexSet = selectedSSIDs.isEmpty ? IndexSet(integer: 1) : IndexSet(1 ... 2) + let indexSet = IndexSet(1 ... 2) tableView.insertSections(indexSet, with: .fade) } if selectedOption == .anySSID { - let indexSet = previousSectionCount == 2 ? IndexSet(integer: 1) : IndexSet(1 ... 2) + let indexSet = IndexSet(1 ... 2) tableView.deleteSections(indexSet, with: .fade) } tableView.reloadSections(IndexSet(integer: indexPath.section), with: .none) |