mirror of https://github.com/oxen-io/session-ios
Implement seed reminder view
Also fix up QR codes and give RSS feeds their own iconpull/68/head
parent
d05df87dd2
commit
1ab82341b9
@ -0,0 +1,84 @@
|
||||
|
||||
final class SeedReminderView : UIView {
|
||||
var title = NSAttributedString(string: "") { didSet { titleLabel.attributedText = title } }
|
||||
var subtitle = "" { didSet { subtitleLabel.text = subtitle } }
|
||||
var delegate: SeedReminderViewDelegate?
|
||||
|
||||
// MARK: Components
|
||||
private lazy var progressIndicatorView: UIProgressView = {
|
||||
let result = UIProgressView()
|
||||
result.progressViewStyle = .bar
|
||||
result.progressTintColor = Colors.accent
|
||||
result.backgroundColor = UIColor(hex: 0xFFFFFF).withAlphaComponent(0.1)
|
||||
result.set(.height, to: Values.progressBarThickness)
|
||||
return result
|
||||
}()
|
||||
|
||||
private lazy var titleLabel: UILabel = {
|
||||
let result = UILabel()
|
||||
result.textColor = Colors.text
|
||||
result.font = .boldSystemFont(ofSize: Values.smallFontSize)
|
||||
result.lineBreakMode = .byTruncatingTail
|
||||
return result
|
||||
}()
|
||||
|
||||
private lazy var subtitleLabel: UILabel = {
|
||||
let result = UILabel()
|
||||
result.textColor = Colors.text.withAlphaComponent(Values.unimportantElementOpacity)
|
||||
result.font = .systemFont(ofSize: Values.verySmallFontSize)
|
||||
result.lineBreakMode = .byTruncatingTail
|
||||
return result
|
||||
}()
|
||||
|
||||
// MARK: Lifecycle
|
||||
override init(frame: CGRect) {
|
||||
super.init(frame: frame)
|
||||
setUpViewHierarchy()
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
super.init(coder: coder)
|
||||
setUpViewHierarchy()
|
||||
}
|
||||
|
||||
private func setUpViewHierarchy() {
|
||||
// Set background color
|
||||
backgroundColor = Colors.cellBackground
|
||||
// Set up label stack view
|
||||
let labelStackView = UIStackView(arrangedSubviews: [ titleLabel, subtitleLabel ])
|
||||
labelStackView.axis = .vertical
|
||||
labelStackView.spacing = 4
|
||||
// Set up button
|
||||
let button = Button(style: .prominentOutline, size: .small)
|
||||
button.setTitle(NSLocalizedString("Continue", comment: ""), for: UIControl.State.normal)
|
||||
button.set(.width, to: 80)
|
||||
button.addTarget(self, action: #selector(handleContinueButtonTapped), for: UIControl.Event.touchUpInside)
|
||||
// Set up content stack view
|
||||
let contentStackView = UIStackView(arrangedSubviews: [ labelStackView, UIView.hStretchingSpacer(), button ])
|
||||
contentStackView.axis = .horizontal
|
||||
contentStackView.spacing = 4
|
||||
contentStackView.alignment = .center
|
||||
contentStackView.layoutMargins = UIEdgeInsets(top: 0, leading: Values.mediumSpacing + Values.accentLineThickness, bottom: 0, trailing: Values.mediumSpacing)
|
||||
contentStackView.isLayoutMarginsRelativeArrangement = true
|
||||
// Set up separator
|
||||
let separator = UIView()
|
||||
separator.set(.height, to: Values.separatorThickness)
|
||||
separator.backgroundColor = Colors.separator
|
||||
// Set up stack view
|
||||
let stackView = UIStackView(arrangedSubviews: [ progressIndicatorView, contentStackView, separator ])
|
||||
stackView.axis = .vertical
|
||||
stackView.spacing = Values.mediumSpacing
|
||||
addSubview(stackView)
|
||||
stackView.pin(to: self)
|
||||
}
|
||||
|
||||
// MARK: Updating
|
||||
func setProgress(_ progress: Float, animated isAnimated: Bool) {
|
||||
progressIndicatorView.setProgress(progress, animated: isAnimated)
|
||||
}
|
||||
|
||||
// MARK: Updating
|
||||
@objc private func handleContinueButtonTapped() {
|
||||
delegate?.handleContinueButtonTapped(from: self)
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
|
||||
protocol SeedReminderViewDelegate {
|
||||
|
||||
func handleContinueButtonTapped(from seedReminderView: SeedReminderView)
|
||||
}
|
Loading…
Reference in New Issue