62 lines
2.2 KiB
Swift
62 lines
2.2 KiB
Swift
//
|
|
// Copyright 2019 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
//
|
|
|
|
import Foundation
|
|
import SignalServiceKit
|
|
|
|
public final class NonContactTableViewCell: UITableViewCell, ReusableTableViewCell {
|
|
|
|
public static let reuseIdentifier = "NonContactTableViewCell"
|
|
|
|
private let iconView: UIImageView = {
|
|
let avatarSize = CGFloat(AvatarBuilder.smallAvatarSizePoints)
|
|
let iconView = UIImageView()
|
|
iconView.contentMode = .center
|
|
iconView.autoSetDimensions(to: CGSize(square: avatarSize))
|
|
iconView.layer.cornerRadius = avatarSize * 0.5
|
|
iconView.clipsToBounds = true
|
|
return iconView
|
|
}()
|
|
|
|
private let labelView: UILabel = {
|
|
let labelView = UILabel()
|
|
labelView.font = OWSTableItem.primaryLabelFont
|
|
return labelView
|
|
}()
|
|
|
|
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
|
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
|
|
|
OWSTableItem.configureCell(self)
|
|
|
|
let stackView = UIStackView()
|
|
stackView.spacing = ContactCellView.avatarTextHSpacing
|
|
stackView.addArrangedSubview(iconView)
|
|
stackView.addArrangedSubview(labelView)
|
|
contentView.addSubview(stackView)
|
|
stackView.autoPinWidthToSuperviewMargins()
|
|
stackView.autoPinHeightToSuperview(withMargin: 7)
|
|
}
|
|
|
|
required init?(coder aDecoder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
private func configureWithTitle(_ title: String, imageName: String) {
|
|
iconView.setTemplateImageName(imageName, tintColor: Theme.isDarkThemeEnabled ? .ows_gray02 : .ows_gray75)
|
|
iconView.backgroundColor = Theme.isDarkThemeEnabled ? .ows_gray75 : .ows_gray10
|
|
labelView.textColor = Theme.primaryTextColor
|
|
labelView.text = title
|
|
}
|
|
|
|
public func configureWithUsername(_ username: String) {
|
|
configureWithTitle(username, imageName: "search-20")
|
|
}
|
|
|
|
public func configureWithPhoneNumber(_ phoneNumber: String) {
|
|
let formattedPhoneNumber = PhoneNumber.bestEffortFormatPartialUserSpecifiedTextToLookLikeAPhoneNumber(phoneNumber)
|
|
configureWithTitle(formattedPhoneNumber, imageName: "person-20")
|
|
}
|
|
}
|