ContactItemCell.swift 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. //
  2. // ContactItemCell.swift
  3. // O2Platform
  4. //
  5. // Created by 刘振兴 on 16/7/12.
  6. // Copyright © 2016年 zoneland. All rights reserved.
  7. //
  8. import UIKit
  9. import Alamofire
  10. import AlamofireImage
  11. import AlamofireObjectMapper
  12. class ContactItemCell: UITableViewCell {
  13. @IBOutlet weak var iconImageView: UIImageView!
  14. @IBOutlet weak var nameLabel: UILabel!
  15. @IBOutlet weak var headBarView: UITextView!
  16. @IBOutlet weak var iconTagLabel: UILabel!
  17. var cellViewModel:CellViewModel? {
  18. didSet {
  19. configCellViewModel()
  20. }
  21. }
  22. override func awakeFromNib() {
  23. }
  24. override func setSelected(_ selected: Bool, animated: Bool) {
  25. super.setSelected(selected, animated: animated)
  26. }
  27. private func configCompany(){
  28. self.nameLabel.text = cellViewModel?.name
  29. self.iconTagLabel.isHidden = true
  30. self.iconImageView.image = UIImage(named: "contact_org_icon")
  31. self.iconImageView.layer.masksToBounds = true
  32. self.iconImageView.layer.cornerRadius = self.iconImageView.width / 2.0
  33. }
  34. private func configDepart(){
  35. nameLabel.text = cellViewModel?.name
  36. iconTagLabel.isHidden = false
  37. iconImageView.image = UIImage(named: "pic_oval")
  38. iconImageView.frame = CGRect(x: 18, y: 5, width: 40, height: 40)
  39. iconImageView.layer.masksToBounds = true
  40. iconImageView.layer.cornerRadius = 40 / 2.0
  41. if let orgName = cellViewModel?.name,orgName != "" {
  42. iconTagLabel.text = NSString(string: orgName).substring(to: 1)
  43. iconTagLabel.center = iconImageView.center
  44. }
  45. nameLabel.font = UIFont(name: "PingFang SC", size: 14)
  46. nameLabel.frame.x = 66
  47. }
  48. private func configGroup(){
  49. self.nameLabel.text = cellViewModel?.name
  50. self.iconTagLabel.isHidden = true
  51. self.iconImageView.image = UIImage(named: "contact_org_icon")
  52. self.iconImageView.layer.masksToBounds = true
  53. self.iconImageView.layer.cornerRadius = self.iconImageView.width / 2.0
  54. }
  55. private func configPerson(_ p:PersonV2){
  56. self.nameLabel.text = cellViewModel?.name
  57. self.iconTagLabel.isHidden = true
  58. self.iconImageView.layer.masksToBounds = true
  59. self.iconImageView.layer.cornerRadius = self.iconImageView.width / 2.0
  60. let person = p
  61. let urlstr = AppDelegate.o2Collect.generateURLWithAppContextKey(ContactContext.contactsContextKeyV2, query: ContactContext.personIconByNameQueryV2, parameter: ["##name##":person.id as AnyObject], generateTime: false)
  62. let url = URL(string: urlstr!)
  63. self.iconImageView.hnk_setImageFromURL(url!)
  64. }
  65. private func configIdentity(_ i:IdentityV2){
  66. self.nameLabel.text = cellViewModel?.name
  67. self.iconTagLabel.isHidden = true
  68. self.iconImageView.layer.masksToBounds = true
  69. self.iconImageView.layer.cornerRadius = self.iconImageView.width / 2.0
  70. let identity = i
  71. let urlstr = AppDelegate.o2Collect.generateURLWithAppContextKey(ContactContext.contactsContextKeyV2, query: ContactContext.personIconByNameQueryV2, parameter: ["##name##":identity.person as AnyObject], generateTime: false)
  72. let url = URL(string: urlstr!)
  73. self.iconImageView.hnk_setImageFromURL(url!)
  74. }
  75. private func configTitle(_ t:HeadTitle){
  76. let title = t
  77. if title.isBar {
  78. headBarView.textContainer.maximumNumberOfLines = 1
  79. headBarView.textContainer.lineBreakMode = .byTruncatingTail
  80. headBarView.text = ""
  81. if let bars = title.barText {
  82. bars.forEachEnumerated { (index, bar) in
  83. if bars.count == (index+1) {
  84. self.headBarView.appendLinkString(string: bar.name ?? "")
  85. }else{
  86. self.headBarView.appendLinkString(string: (bar.name ?? "") + " > ", withURLString: "reloadto:\(bar.id ?? "")")
  87. }
  88. }
  89. }
  90. }else{
  91. nameLabel.text = cellViewModel?.name
  92. iconTagLabel.isHidden = true
  93. iconImageView.image = UIImage(named: title.icon!)
  94. iconImageView.frame = CGRect(x: 8, y: 10, width: 30, height: 30)
  95. iconImageView.layer.masksToBounds = true
  96. iconImageView.layer.cornerRadius = 15.0
  97. nameLabel.font = UIFont(name: "PingFang SC", size: 16.0)
  98. nameLabel.frame.x = 66
  99. }
  100. }
  101. func configCellViewModel() {
  102. let dataType = cellViewModel?.dataType
  103. switch dataType! {
  104. case .company(_):
  105. configCompany()
  106. break
  107. case .depart(_):
  108. configDepart()
  109. break
  110. case .group(_):
  111. configGroup()
  112. break
  113. case .person(let p):
  114. configPerson(p as! PersonV2)
  115. break
  116. case .identity(let i):
  117. configIdentity(i as! IdentityV2)
  118. case .title(let t):
  119. configTitle(t as! HeadTitle)
  120. break
  121. default:
  122. break
  123. }
  124. }
  125. }