mirror of
https://github.com/confirmedcode/Lockdown-iOS.git
synced 2025-12-21 12:14:02 +01:00
112 lines
3.1 KiB
Swift
112 lines
3.1 KiB
Swift
//
|
|
// CustomTableHeader.swift
|
|
// LockdownSandbox
|
|
//
|
|
// Created by Aliaksandr Dvoineu on 24.03.23.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
enum Section: Int, CaseIterable, CustomStringConvertible {
|
|
|
|
case lists
|
|
case domains
|
|
|
|
var description: String {
|
|
switch self {
|
|
case .lists: return "Lists"
|
|
case .domains: return "Domains"
|
|
}
|
|
}
|
|
}
|
|
|
|
class CustomBlockedTableHeader: UITableViewHeaderFooterView {
|
|
static let id = "CustomBlockedTableHeader"
|
|
|
|
private(set) var addButtonCallback: () -> () = { }
|
|
private(set) var editButtonCallback: () -> () = { }
|
|
|
|
lazy var listsTitleLabel: UILabel = {
|
|
let label = UILabel()
|
|
label.textColor = .label
|
|
label.textAlignment = .center
|
|
label.font = fontBold18
|
|
return label
|
|
}()
|
|
|
|
lazy var addButton: UIButton = {
|
|
let button = UIButton(type: .system)
|
|
let symbolConfig = UIImage.SymbolConfiguration(pointSize: 14, weight: .bold, scale: .large)
|
|
button.setImage(UIImage(systemName: "plus", withConfiguration: symbolConfig), for: .normal)
|
|
button.tintColor = .tunnelsBlue
|
|
button.addTarget(self, action: #selector(addButtonDidPress), for: .touchUpInside)
|
|
return button
|
|
}()
|
|
|
|
lazy var editButton: UIButton = {
|
|
let button = UIButton(type: .system)
|
|
let symbolConfig = UIImage.SymbolConfiguration(pointSize: 14, weight: .bold, scale: .large)
|
|
button.setImage(UIImage(named: "icn_edit"), for: .normal)
|
|
button.tintColor = .tunnelsBlue
|
|
button.addTarget(self, action: #selector(editButtonDidPress), for: .touchUpInside)
|
|
button.isHidden = true
|
|
return button
|
|
}()
|
|
|
|
var category: Section = .lists {
|
|
didSet {
|
|
switch category {
|
|
case .lists:
|
|
listsTitleLabel.text = category.description
|
|
|
|
case .domains:
|
|
listsTitleLabel.text = category.description
|
|
}
|
|
}
|
|
}
|
|
|
|
override init(reuseIdentifier: String?) {
|
|
super.init(reuseIdentifier: reuseIdentifier)
|
|
configure()
|
|
}
|
|
|
|
func configure() {
|
|
contentView.addSubview(listsTitleLabel)
|
|
contentView.addSubview(addButton)
|
|
contentView.addSubview(editButton)
|
|
|
|
listsTitleLabel.anchors.leading.pin()
|
|
listsTitleLabel.anchors.bottom.marginsPin()
|
|
|
|
addButton.anchors.trailing.pin()
|
|
addButton.anchors.bottom.marginsPin()
|
|
|
|
editButton.anchors.trailing.spacing(12, to: addButton.anchors.leading)
|
|
editButton.anchors.bottom.marginsPin()
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
@discardableResult
|
|
func onAddButtonPressed(_ callback: @escaping () -> ()) -> Self {
|
|
addButtonCallback = callback
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
func onEditButtonPressed(_ callback: @escaping () -> ()) -> Self {
|
|
editButtonCallback = callback
|
|
return self
|
|
}
|
|
|
|
@objc func addButtonDidPress() {
|
|
addButtonCallback()
|
|
}
|
|
|
|
@objc func editButtonDidPress() {
|
|
editButtonCallback()
|
|
}
|
|
}
|