Files
Attractor/App/Script Policy UI/ScriptControllerIconView.swift
2020-08-14 15:55:08 -07:00

76 lines
2.0 KiB
Swift

//
// ScriptControllerIconView.swift
// SBrowser
//
// Created by James Magahern on 7/24/20.
//
import UIKit
class ScriptControllerIconView: ReliefButton
{
public var shieldsDown: Bool = false {
didSet { setNeedsLayout() }
}
public var someScriptsAllowed: Bool = false {
didSet { setNeedsLayout() }
}
private let labelView = UILabel(frame: .zero)
private let shieldsDownImage = UIImage(systemName: "shield.slash")
private let shieldsUpImage = UIImage(systemName: "shield")
private let shieldsPartiallyUpImage = UIImage(systemName: "shield.lefthalf.fill")
override init() {
super.init()
addSubview(labelView)
imageView?.contentMode = .scaleAspectFit
labelView.backgroundColor = .systemRed
labelView.textAlignment = .center
labelView.layer.cornerRadius = 4.0
labelView.layer.masksToBounds = true
labelView.font = .boldSystemFont(ofSize: 8)
labelView.textColor = .white
setBlockedScriptsNumber(0)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
public func setBlockedScriptsNumber(_ num: Int) {
if num > 0 {
labelView.isHidden = false
labelView.text = "\(num)"
} else {
labelView.isHidden = true
}
setNeedsLayout()
}
override func layoutSubviews() {
super.layoutSubviews()
labelView.sizeToFit()
labelView.center = CGPoint(x: bounds.center.x + 10, y: bounds.center.y + 10)
labelView.bounds = labelView.bounds.insetBy(dx: -3.0, dy: -2.0)
if shieldsDown {
setImage(shieldsDownImage, for: .normal)
} else {
if someScriptsAllowed {
setImage(shieldsPartiallyUpImage, for: .normal)
} else {
setImage(shieldsUpImage, for: .normal)
}
}
}
}