Files
Attractor/App/Script Policy UI/ScriptPolicyControl.swift

74 lines
2.3 KiB
Swift
Raw Normal View History

2020-07-24 19:26:35 -07:00
//
// ScriptPolicyControl.swift
// SBrowser
//
// Created by James Magahern on 7/24/20.
//
import UIKit
class ScriptPolicyControl: UIControl
{
enum PolicyStatus {
case allowed
case blocked
}
var policyStatus: PolicyStatus = .blocked {
didSet { setNeedsLayout() }
2020-07-24 19:26:35 -07:00
}
2020-08-14 17:40:01 -07:00
private let allowButton = ReliefButton()
private let denyButton = ReliefButton()
private let segmentContainer = SegmentedReliefButton(children: [])
2020-07-24 19:26:35 -07:00
convenience init() {
self.init(frame: .zero)
2020-08-14 17:40:01 -07:00
segmentContainer.children = [ allowButton, denyButton ]
addSubview(segmentContainer)
allowButton.showsTouchWhenHighlighted = false
allowButton.addAction(UIAction(handler: { [unowned self] _ in
self.policyStatus = .allowed
self.sendActions(for: .valueChanged)
2020-07-24 19:26:35 -07:00
}), for: .touchUpInside)
allowButton.imageView?.contentMode = .scaleAspectFit
denyButton.showsTouchWhenHighlighted = false
denyButton.addAction(UIAction(handler: { [unowned self] _ in
self.policyStatus = .blocked
self.sendActions(for: .valueChanged)
2020-07-24 19:26:35 -07:00
}), for: .touchUpInside)
denyButton.imageView?.contentMode = .scaleAspectFit
}
override var intrinsicContentSize: CGSize {
CGSize(width: 100.0, height: UIView.noIntrinsicMetric)
}
override func layoutSubviews() {
super.layoutSubviews()
2020-08-14 17:40:01 -07:00
segmentContainer.frame = bounds
2020-07-24 19:26:35 -07:00
if policyStatus == .allowed {
allowButton.tintColor = .blue
allowButton.remainsPressed = true
2020-07-24 19:26:35 -07:00
allowButton.setImage(UIImage(systemName: "play.circle.fill"), for: .normal)
denyButton.tintColor = nil
denyButton.remainsPressed = false
2020-07-24 19:26:35 -07:00
denyButton.setImage(UIImage(systemName: "stop.circle"), for: .normal)
} else {
allowButton.tintColor = nil
allowButton.remainsPressed = false
2020-07-24 19:26:35 -07:00
allowButton.setImage(UIImage(systemName: "play.circle"), for: .normal)
denyButton.tintColor = .red
denyButton.remainsPressed = true
2020-07-24 19:26:35 -07:00
denyButton.setImage(UIImage(systemName: "stop.circle.fill"), for: .normal)
}
}
}