diff --git a/Delta/Base.lproj/Settings.storyboard b/Delta/Base.lproj/Settings.storyboard index 4be6b9a..ccc0c50 100644 --- a/Delta/Base.lproj/Settings.storyboard +++ b/Delta/Base.lproj/Settings.storyboard @@ -226,11 +226,11 @@ - + - + @@ -249,27 +249,20 @@ - + - + - + - + - - - - - - - @@ -318,6 +311,7 @@ + @@ -812,7 +806,7 @@ - + @@ -852,7 +846,7 @@ - + diff --git a/Delta/Settings/SettingsViewController.swift b/Delta/Settings/SettingsViewController.swift index 46b9bce..3927d46 100644 --- a/Delta/Settings/SettingsViewController.swift +++ b/Delta/Settings/SettingsViewController.swift @@ -36,9 +36,10 @@ private extension SettingsViewController case gbc } - enum SyncingRow: Int + enum SyncingRow: Int, CaseIterable { case service + case status } } @@ -46,12 +47,17 @@ class SettingsViewController: UITableViewController { @IBOutlet private var controllerOpacityLabel: UILabel! @IBOutlet private var controllerOpacitySlider: UISlider! + @IBOutlet private var versionLabel: UILabel! + @IBOutlet private var syncingServiceLabel: UILabel! + private var selectionFeedbackGenerator: UISelectionFeedbackGenerator? private var previousSelectedRowIndexPath: IndexPath? + private var syncingConflictsCount = 0 + required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) @@ -65,9 +71,6 @@ class SettingsViewController: UITableViewController { super.viewDidLoad() - self.controllerOpacitySlider.value = Float(Settings.translucentControllerSkinOpacity) - self.updateControllerOpacityLabel() - if let version = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String { self.versionLabel.text = NSLocalizedString(String(format: "Delta %@", version), comment: "Delta Version") @@ -93,6 +96,8 @@ class SettingsViewController: UITableViewController self.tableView.deselectRow(at: indexPath, animated: true) } + + self.update() } override func didReceiveMemoryWarning() @@ -133,6 +138,26 @@ class SettingsViewController: UITableViewController private extension SettingsViewController { + func update() + { + self.controllerOpacitySlider.value = Float(Settings.translucentControllerSkinOpacity) + self.updateControllerOpacityLabel() + + self.syncingServiceLabel.text = Settings.syncingService.localizedName + + do + { + let records = try SyncManager.shared.recordController.fetchConflictedRecords() + self.syncingConflictsCount = records.count + } + catch + { + print(error) + } + + self.tableView.reloadData() + } + func updateControllerOpacityLabel() { let percentage = String(format: "%.f", Settings.translucentControllerSkinOpacity * 100) + "%" @@ -255,7 +280,17 @@ extension SettingsViewController } case .controllerSkins: cell.textLabel?.text = System.supportedSystems[indexPath.row].localizedName - case .syncing: cell.detailTextLabel?.text = Settings.syncingService.localizedName + case .syncing: + switch SyncingRow.allCases[indexPath.row] + { + case .status: + let cell = cell as! BadgedTableViewCell + cell.badgeLabel.text = self.syncingConflictsCount.description + cell.badgeLabel.isHidden = (self.syncingConflictsCount == 0) + + case .service: break + } + case .controllerOpacity, .threeDTouch: break } diff --git a/External/Harmony b/External/Harmony index ef2c685..c562f42 160000 --- a/External/Harmony +++ b/External/Harmony @@ -1 +1 @@ -Subproject commit ef2c685333abe1cce9ee0a43150656634ab06081 +Subproject commit c562f4213f8e7f351873435a7add8d755d45f350