AvatarEditView.swift 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. //
  2. // SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
  3. // SPDX-License-Identifier: GPL-3.0-or-later
  4. //
  5. import Foundation
  6. @objc protocol AvatarEditViewDelegate {
  7. @objc func avatarEditViewPresentCamera(_ controller: AvatarEditView?)
  8. @objc func avatarEditViewPresentPhotoLibrary(_ controller: AvatarEditView?)
  9. @objc optional func avatarEditViewPresentEmojiAvatarPicker(_ controller: AvatarEditView?)
  10. @objc func avatarEditViewRemoveAvatar(_ controller: AvatarEditView?)
  11. }
  12. @objcMembers class AvatarEditView: UIView, UIImagePickerControllerDelegate, UINavigationControllerDelegate, TOCropViewControllerDelegate {
  13. public weak var delegate: AvatarEditViewDelegate?
  14. @IBOutlet var contentView: UIView!
  15. @IBOutlet weak var avatarImageView: AvatarImageView!
  16. @IBOutlet weak var nameLabel: UILabel!
  17. @IBOutlet weak var editView: UIView!
  18. @IBOutlet weak var scopeButton: UIButton!
  19. @IBOutlet weak var cameraButton: UIButton!
  20. @IBOutlet weak var photoLibraryButton: UIButton!
  21. @IBOutlet weak var emojiButton: UIButton!
  22. @IBOutlet weak var trashButton: UIButton!
  23. override init(frame: CGRect) {
  24. super.init(frame: frame)
  25. commonInit()
  26. }
  27. required init?(coder aDecoder: NSCoder) {
  28. super.init(coder: aDecoder)
  29. commonInit()
  30. }
  31. func commonInit() {
  32. Bundle.main.loadNibNamed("AvatarEditView", owner: self, options: nil)
  33. contentView.frame = self.bounds
  34. contentView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
  35. self.avatarImageView.layer.masksToBounds = true
  36. self.addSubview(contentView)
  37. }
  38. override func layoutSubviews() {
  39. self.avatarImageView.layer.cornerRadius = self.avatarImageView.frame.size.height / 2
  40. }
  41. func changeButtonState(to state: Bool) {
  42. self.scopeButton.isEnabled = state
  43. self.cameraButton.isEnabled = state
  44. self.photoLibraryButton.isEnabled = state
  45. self.emojiButton.isEnabled = state
  46. self.trashButton.isEnabled = state
  47. }
  48. @IBAction func cameraButtonTouchUpInside(_ sender: Any) {
  49. self.delegate?.avatarEditViewPresentCamera(self)
  50. }
  51. @IBAction func photoLibraryTouchUpInside(_ sender: Any) {
  52. self.delegate?.avatarEditViewPresentPhotoLibrary(self)
  53. }
  54. @IBAction func trashTouchUpInside(_ sender: Any) {
  55. self.delegate?.avatarEditViewRemoveAvatar(self)
  56. }
  57. @IBAction func emojiTouchUpInside(_ sender: Any) {
  58. self.delegate?.avatarEditViewPresentEmojiAvatarPicker?(self)
  59. }
  60. }