2021-04-28 23:00:17 +00:00
|
|
|
//
|
|
|
|
// PollOptionView.swift
|
|
|
|
// Tusker
|
|
|
|
//
|
|
|
|
// Created by Shadowfacts on 4/25/21.
|
|
|
|
// Copyright © 2021 Shadowfacts. All rights reserved.
|
|
|
|
//
|
|
|
|
|
|
|
|
import UIKit
|
|
|
|
import Pachyderm
|
|
|
|
|
|
|
|
class PollOptionView: UIView {
|
|
|
|
|
|
|
|
private let unselectedBackgroundColor = UIColor(white: 0.5, alpha: 0.25)
|
|
|
|
|
|
|
|
let checkbox: PollOptionCheckboxView
|
|
|
|
|
|
|
|
init(poll: Poll, option: Poll.Option) {
|
|
|
|
checkbox = PollOptionCheckboxView(multiple: poll.multiple)
|
|
|
|
|
|
|
|
super.init(frame: .zero)
|
|
|
|
|
|
|
|
let minHeight: CGFloat = 35
|
|
|
|
layer.cornerRadius = 0.1 * minHeight
|
|
|
|
backgroundColor = unselectedBackgroundColor
|
|
|
|
|
|
|
|
checkbox.translatesAutoresizingMaskIntoConstraints = false
|
|
|
|
addSubview(checkbox)
|
|
|
|
|
|
|
|
let label = EmojiLabel()
|
|
|
|
label.translatesAutoresizingMaskIntoConstraints = false
|
|
|
|
label.numberOfLines = 0
|
|
|
|
label.text = option.title
|
|
|
|
label.setEmojis(poll.emojis, identifier: poll.id)
|
|
|
|
addSubview(label)
|
|
|
|
|
|
|
|
if (poll.voted ?? false) || poll.effectiveExpired,
|
|
|
|
let optionVotes = option.votesCount {
|
|
|
|
let fillView = UIView()
|
|
|
|
fillView.translatesAutoresizingMaskIntoConstraints = false
|
|
|
|
fillView.backgroundColor = tintColor.withAlphaComponent(0.6)
|
|
|
|
fillView.layer.zPosition = -1
|
|
|
|
fillView.layer.cornerRadius = layer.cornerRadius
|
|
|
|
addSubview(fillView)
|
|
|
|
|
|
|
|
NSLayoutConstraint.activate([
|
|
|
|
fillView.leadingAnchor.constraint(equalTo: leadingAnchor),
|
2021-04-29 01:47:38 +00:00
|
|
|
fillView.widthAnchor.constraint(equalTo: widthAnchor, multiplier: poll.votesCount == 0 ? 0 : CGFloat(optionVotes) / CGFloat(poll.votesCount)),
|
2021-04-28 23:00:17 +00:00
|
|
|
fillView.topAnchor.constraint(equalTo: topAnchor),
|
|
|
|
fillView.bottomAnchor.constraint(equalTo: bottomAnchor),
|
|
|
|
])
|
|
|
|
}
|
|
|
|
|
|
|
|
let minHeightConstraint = heightAnchor.constraint(greaterThanOrEqualToConstant: minHeight)
|
|
|
|
// on the first layout, something is weird and this becomes ambiguous even though it's fine on subsequent layouts
|
|
|
|
// this keeps autolayout from complaining
|
|
|
|
minHeightConstraint.priority = .required - 1
|
|
|
|
|
|
|
|
NSLayoutConstraint.activate([
|
|
|
|
minHeightConstraint,
|
|
|
|
|
|
|
|
checkbox.centerYAnchor.constraint(equalTo: centerYAnchor),
|
|
|
|
checkbox.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 8),
|
|
|
|
|
|
|
|
label.topAnchor.constraint(equalTo: topAnchor),
|
|
|
|
label.bottomAnchor.constraint(equalTo: bottomAnchor),
|
|
|
|
label.leadingAnchor.constraint(equalTo: checkbox.trailingAnchor, constant: 8),
|
|
|
|
label.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -8),
|
|
|
|
])
|
|
|
|
}
|
|
|
|
|
|
|
|
required init?(coder: NSCoder) {
|
|
|
|
fatalError("init(coder:) has not been implemented")
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|