Skip to content

Commit

Permalink
to present the WidgetConfigurationViewController modally, the LeftNav…
Browse files Browse the repository at this point in the history
…igationButton was removed, and the RightNavigationButton (Done) was added. (#4172)
  • Loading branch information
tigrim authored Dec 10, 2024
1 parent fef672c commit d21fd11
Showing 1 changed file with 51 additions and 43 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import Foundation

@objc(OAWidgetConfigurationViewController)
@objcMembers
class WidgetConfigurationViewController: OABaseButtonsViewController, WidgetStateDelegate {
final class WidgetConfigurationViewController: OABaseButtonsViewController, WidgetStateDelegate {

var widgetInfo: MapWidgetInfo!
var widgetPanel: WidgetsPanel!
Expand All @@ -26,15 +26,20 @@ class WidgetConfigurationViewController: OABaseButtonsViewController, WidgetStat

lazy private var widgetRegistry = OARootViewController.instance().mapPanel.mapWidgetRegistry

var isCreateNewAndSimilarAlreadyExist: Bool {
createNew && similarAlreadyExist
}

override func viewDidLoad() {
super.viewDidLoad()

tableView.setContentOffset(CGPoint(x: 0, y: 1), animated: false)
if isCreateNewAndSimilarAlreadyExist || (createNew && !WidgetType.isComplexWidget(widgetInfo.widget.widgetType?.id ?? "")) {
widgetConfigurationParams = ["selectedAppMode": selectedAppMode!]
}
configureNavigationButtons()
}

override func registerCells() {
addCell(SegmentImagesWithRightLabelTableViewCell.reuseIdentifier)
}
Expand Down Expand Up @@ -209,41 +214,6 @@ class WidgetConfigurationViewController: OABaseButtonsViewController, WidgetStat
return outCell
}

var isCreateNewAndSimilarAlreadyExist: Bool {
createNew && similarAlreadyExist
}

@objc func onSwitchClick(_ sender: Any) -> Bool {
guard let sw = sender as? UISwitch else {
return false
}

let indexPath = IndexPath(row: sw.tag & 0x3FF, section: sw.tag >> 10)
let data = tableData!.item(for: indexPath)

if isCreateNewAndSimilarAlreadyExist {
if widgetKey == WidgetType.averageSpeed.id {
widgetConfigurationParams?[AverageSpeedWidget.SKIP_STOPS_PREF_ID] = sw.isOn
} else {
fatalError("You need implement value handler for widgetKey")
}
} else {
let pref = data.obj(forKey: "pref") as! OACommonBoolean
pref.set(sw.isOn, mode: selectedAppMode)
}
if createNew, !WidgetType.isComplexWidget(widgetInfo.widget.widgetType?.id ?? "") {
widgetConfigurationParams?["isVisibleIcon"] = sw.isOn
}
if let cell = self.tableView.cellForRow(at: indexPath) as? OASwitchTableViewCell, !cell.leftIconView.isHidden {
UIView.animate(withDuration: 0.2) {
cell.leftIconView.image = UIImage.templateImageNamed(sw.isOn ? data.iconName : data.string(forKey: "hide_icon"))
cell.leftIconView.tintColor = sw.isOn ? self.selectedAppMode.getProfileColor() : UIColor.iconColorDisabled
}
}

return false
}

override func onRowSelected(_ indexPath: IndexPath!) {
let item = tableData.item(for: indexPath)
if item.key == "delete_widget_key" {
Expand Down Expand Up @@ -338,6 +308,19 @@ class WidgetConfigurationViewController: OABaseButtonsViewController, WidgetStat
tableView.reloadData()
}

private func configureNavigationButtons() {
if navigationController?.viewControllers.count == 1 {
navigationItem.setLeftBarButton(nil, animated: false)
navigationItem.setRightBarButton(UIBarButtonItem(title: localizedString("shared_string_done"),
style: .plain,
target: self,
action: #selector(onRightNavbarButtonPressed)),
animated: false)
} else {
navigationItem.setRightBarButton(nil, animated: false)
}
}

private func onWidgetDeleted() {
let widgetRegistry = OARootViewController.instance().mapPanel.mapWidgetRegistry
widgetRegistry.enableDisableWidget(for: selectedAppMode, widgetInfo: widgetInfo, enabled: false, recreateControls: true)
Expand All @@ -357,6 +340,37 @@ class WidgetConfigurationViewController: OABaseButtonsViewController, WidgetStat
.compactMap { $0.widget as? OATextInfoWidget }
.forEach { $0.updateWith(style: widget.widgetSizeStyle, appMode: selectedAppMode) }
}

@objc private func onSwitchClick(_ sender: Any) -> Bool {
guard let sw = sender as? UISwitch else {
return false
}

let indexPath = IndexPath(row: sw.tag & 0x3FF, section: sw.tag >> 10)
let data = tableData!.item(for: indexPath)

if isCreateNewAndSimilarAlreadyExist {
if widgetKey == WidgetType.averageSpeed.id {
widgetConfigurationParams?[AverageSpeedWidget.SKIP_STOPS_PREF_ID] = sw.isOn
} else {
fatalError("You need implement value handler for widgetKey")
}
} else {
let pref = data.obj(forKey: "pref") as! OACommonBoolean
pref.set(sw.isOn, mode: selectedAppMode)
}
if createNew, !WidgetType.isComplexWidget(widgetInfo.widget.widgetType?.id ?? "") {
widgetConfigurationParams?["isVisibleIcon"] = sw.isOn
}
if let cell = self.tableView.cellForRow(at: indexPath) as? OASwitchTableViewCell, !cell.leftIconView.isHidden {
UIView.animate(withDuration: 0.2) {
cell.leftIconView.image = UIImage.templateImageNamed(sw.isOn ? data.iconName : data.string(forKey: "hide_icon"))
cell.leftIconView.tintColor = sw.isOn ? self.selectedAppMode.getProfileColor() : UIColor.iconColorDisabled
}
}

return false
}
}

// MARK: Appearance
Expand All @@ -374,12 +388,6 @@ extension WidgetConfigurationViewController {
false
}

override func getLeftNavbarButtonTitle() -> String! {
navigationController?.viewControllers.count == 1
? localizedString("shared_string_cancel")
: nil
}

override func getTableHeaderDescriptionAttr() -> NSAttributedString! {
guard let widgetType = widgetInfo.getWidgetType() else { return NSAttributedString(string: "") }
let attrStr = NSMutableAttributedString(string: widgetType.descr)
Expand Down

0 comments on commit d21fd11

Please sign in to comment.