mirror of
https://codeberg.org/comaps/comaps
synced 2026-01-21 18:53:51 +00:00
126 lines
3.5 KiB
Swift
126 lines
3.5 KiB
Swift
import UIKit
|
|
|
|
class BottomMenuLayersCell: UITableViewCell {
|
|
@IBOutlet weak var closeButton: CircleImageButton!
|
|
|
|
@IBOutlet private var defaultButton: BottomMenuLayerButton! {
|
|
didSet {
|
|
updateDefaultButton()
|
|
}
|
|
}
|
|
@IBOutlet private var hikingButton: BottomMenuLayerButton! {
|
|
didSet {
|
|
updateHikingButton()
|
|
}
|
|
}
|
|
@IBOutlet private var cyclingButton: BottomMenuLayerButton! {
|
|
didSet {
|
|
updateCyclingButton()
|
|
}
|
|
}
|
|
@IBOutlet private var drivingButton: BottomMenuLayerButton! {
|
|
didSet {
|
|
updateDrivingButton()
|
|
}
|
|
}
|
|
@IBOutlet private var publicTransportButton: BottomMenuLayerButton! {
|
|
didSet {
|
|
updatePublicTransportButton()
|
|
}
|
|
}
|
|
|
|
var onClose: (()->())?
|
|
|
|
override func awakeFromNib() {
|
|
super.awakeFromNib()
|
|
MapOverlayManager.add(self)
|
|
closeButton.setImage(UIImage(named: "ic_close"))
|
|
setupButtons()
|
|
}
|
|
|
|
private func setupButtons() {
|
|
defaultButton.setupWith(image: UIImage(resource: .btnMenuOutdoors), text: L("button_layer_default"))
|
|
hikingButton.setupWith(image: UIImage(resource: .btnMenuOutdoors), text: L("button_layer_hiking"))
|
|
cyclingButton.setupWith(image: UIImage(resource: .btnMenuOutdoors), text: L("button_layer_cycling"))
|
|
drivingButton.setupWith(image: UIImage(resource: .btnMenuOutdoors), text: L("button_layer_driving"))
|
|
publicTransportButton.setupWith(image: UIImage(resource: .btnMenuOutdoors), text: L("button_layer_publictransport"))
|
|
}
|
|
|
|
deinit {
|
|
MapOverlayManager.remove(self)
|
|
}
|
|
|
|
override func setSelected(_ selected: Bool, animated: Bool) {
|
|
super.setSelected(selected, animated: animated)
|
|
}
|
|
|
|
private func updateDefaultButton() {
|
|
defaultButton.setStyleAndApply(styleFor(MapOverlayManager.mapMode() == .default))
|
|
}
|
|
|
|
private func updateHikingButton() {
|
|
hikingButton.setStyleAndApply(styleFor(MapOverlayManager.mapMode() == .hiking))
|
|
}
|
|
|
|
private func updateCyclingButton() {
|
|
cyclingButton.setStyleAndApply(styleFor(MapOverlayManager.mapMode() == .cycling))
|
|
}
|
|
|
|
private func updateDrivingButton() {
|
|
drivingButton.setStyleAndApply(styleFor(MapOverlayManager.mapMode() == .driving))
|
|
}
|
|
|
|
private func updatePublicTransportButton() {
|
|
publicTransportButton.setStyleAndApply(styleFor(MapOverlayManager.mapMode() == .publicTransport))
|
|
}
|
|
|
|
@IBAction func onCloseButtonPressed(_ sender: Any) {
|
|
onClose?()
|
|
}
|
|
|
|
@IBAction func onDefaultButton(_ sender: Any) {
|
|
MapOverlayManager.setMapMode(MapMode.default)
|
|
}
|
|
|
|
@IBAction func onHikingButton(_ sender: Any) {
|
|
MapOverlayManager.setMapMode(MapMode.hiking)
|
|
}
|
|
|
|
@IBAction func onCyclingButton(_ sender: Any) {
|
|
MapOverlayManager.setMapMode(MapMode.cycling)
|
|
}
|
|
|
|
@IBAction func onDrivingButton(_ sender: Any) {
|
|
MapOverlayManager.setMapMode(MapMode.driving)
|
|
}
|
|
|
|
@IBAction func onPublicTransportButton(_ sender: Any) {
|
|
MapOverlayManager.setMapMode(MapMode.publicTransport)
|
|
}
|
|
}
|
|
|
|
extension BottomMenuLayersCell: MapOverlayManagerObserver {
|
|
func onMapModeUpdated() {
|
|
updateDefaultButton()
|
|
updateHikingButton()
|
|
updateCyclingButton()
|
|
updateDrivingButton()
|
|
updatePublicTransportButton()
|
|
}
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|