107 lines
2.7 KiB
Swift
107 lines
2.7 KiB
Swift
import UIKit
|
|
|
|
class BottomMenuLayersCell: UITableViewCell {
|
|
@IBOutlet weak var closeButton: CircleImageButton!
|
|
|
|
@IBOutlet private var subwayButton: BottomMenuLayerButton! {
|
|
didSet {
|
|
updateSubwayButton()
|
|
}
|
|
}
|
|
@IBOutlet private var isoLinesButton: BottomMenuLayerButton! {
|
|
didSet {
|
|
updateIsoLinesButton()
|
|
}
|
|
}
|
|
@IBOutlet private var outdoorButton: BottomMenuLayerButton! {
|
|
didSet {
|
|
updateOutdoorButton()
|
|
}
|
|
}
|
|
|
|
var onClose: (()->())?
|
|
|
|
override func awakeFromNib() {
|
|
super.awakeFromNib()
|
|
MapOverlayManager.add(self)
|
|
closeButton.setImage(UIImage(named: "ic_close"))
|
|
setupButtons()
|
|
}
|
|
|
|
private func setupButtons() {
|
|
outdoorButton.setupWith(image: UIImage(resource: .btnMenuOutdoors), text: L("button_layer_outdoor"))
|
|
isoLinesButton.setupWith(image: UIImage(resource: .btnMenuIsomaps), text: L("button_layer_isolines"))
|
|
subwayButton.setupWith(image: UIImage(resource: .btnMenuSubway), text: L("button_layer_subway"))
|
|
}
|
|
|
|
deinit {
|
|
MapOverlayManager.remove(self)
|
|
}
|
|
|
|
override func setSelected(_ selected: Bool, animated: Bool) {
|
|
super.setSelected(selected, animated: animated)
|
|
}
|
|
|
|
private func updateSubwayButton() {
|
|
let enabled = MapOverlayManager.transitEnabled()
|
|
subwayButton.setStyleAndApply(styleFor(enabled))
|
|
}
|
|
|
|
private func updateIsoLinesButton() {
|
|
let enabled = MapOverlayManager.isoLinesEnabled()
|
|
isoLinesButton.setStyleAndApply(styleFor(enabled))
|
|
}
|
|
|
|
private func updateOutdoorButton() {
|
|
let enabled = MapOverlayManager.outdoorEnabled()
|
|
outdoorButton.setStyleAndApply(styleFor(enabled))
|
|
}
|
|
|
|
@IBAction func onCloseButtonPressed(_ sender: Any) {
|
|
onClose?()
|
|
}
|
|
|
|
@IBAction func onSubwayButton(_ sender: Any) {
|
|
let enable = !MapOverlayManager.transitEnabled()
|
|
MapOverlayManager.setTransitEnabled(enable)
|
|
}
|
|
|
|
@IBAction func onIsoLinesButton(_ sender: Any) {
|
|
let enable = !MapOverlayManager.isoLinesEnabled()
|
|
MapOverlayManager.setIsoLinesEnabled(enable)
|
|
}
|
|
|
|
@IBAction func onOutdoorButton(_ sender: Any) {
|
|
let enable = !MapOverlayManager.outdoorEnabled()
|
|
MapOverlayManager.setOutdoorEnabled(enable)
|
|
}
|
|
}
|
|
|
|
extension BottomMenuLayersCell: MapOverlayManagerObserver {
|
|
func onTransitStateUpdated() {
|
|
updateSubwayButton()
|
|
}
|
|
|
|
func onIsoLinesStateUpdated() {
|
|
updateIsoLinesButton()
|
|
}
|
|
|
|
func onOutdoorStateUpdated() {
|
|
updateOutdoorButton()
|
|
}
|
|
}
|
|
|
|
private extension BottomMenuLayersCell {
|
|
func styleFor(_ enabled: Bool) -> MapStyleSheet {
|
|
enabled ? .mapMenuButtonEnabled : .mapMenuButtonDisabled
|
|
}
|
|
}
|
|
|
|
private extension BottomMenuLayerButton {
|
|
func setupWith(image: UIImage, text: String) {
|
|
self.image = image
|
|
spacing = 10
|
|
numberOfLines = 2
|
|
localizedText = text
|
|
}
|
|
}
|