EditButtons.swift 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /*****************************************************************************
  2. * EditButtons.swift
  3. *
  4. * Copyright © 2019 VLC authors and VideoLAN
  5. *
  6. * Authors: Edgar Fouillet <vlc # edgar.fouillet.eu>
  7. *
  8. * Refer to the COPYING file of the official project for license.
  9. *****************************************************************************/
  10. enum EditButtonType {
  11. case addToPlaylist
  12. case rename
  13. case delete
  14. case share
  15. }
  16. class EditButton {
  17. var identifier: EditButtonType
  18. var title: String
  19. var image: String
  20. var accessibilityLabel: String
  21. var accessibilityHint: String
  22. init(identifier: EditButtonType, title: String, image: String, accessibilityLabel: String, accessibilityHint: String) {
  23. self.identifier = identifier
  24. self.title = title
  25. self.image = image
  26. self.accessibilityLabel = accessibilityLabel
  27. self.accessibilityHint = accessibilityHint
  28. }
  29. func button(_ selector: Selector) -> UIButton {
  30. let generatedButton = UIButton(type: .system)
  31. generatedButton.setImage(UIImage(named: image), for: .normal)
  32. generatedButton.contentHorizontalAlignment = .left
  33. generatedButton.addTarget(self, action: selector, for: .touchUpInside)
  34. generatedButton.widthAnchor.constraint(equalToConstant: 44).isActive = true
  35. generatedButton.tintColor = .orange
  36. generatedButton.accessibilityLabel = accessibilityLabel
  37. generatedButton.accessibilityHint = accessibilityHint
  38. return generatedButton
  39. }
  40. }
  41. class EditButtonsFactory {
  42. static func buttonList(for file: VLCMLObject?) -> [EditButtonType] {
  43. var actionList = [EditButtonType]()
  44. if let file = file {
  45. actionList.append(.addToPlaylist)
  46. if !(file is VLCMLArtist) && !(file is VLCMLGenre) && !(file is VLCMLAlbum) && !(file is VLCMLVideoGroup) {
  47. actionList.append(.rename)
  48. }
  49. if !(file is VLCMLVideoGroup) {
  50. actionList.append(.delete)
  51. }
  52. actionList.append(.share)
  53. }
  54. return actionList
  55. }
  56. static func generate(buttons: [EditButtonType]) -> [EditButton] {
  57. var editButtons = [EditButton]()
  58. for button in buttons {
  59. switch button {
  60. case .addToPlaylist:
  61. editButtons.append(EditButton(identifier: button,
  62. title: NSLocalizedString("ADD_TO_PLAYLIST", comment: ""),
  63. image: "addToPlaylist",
  64. accessibilityLabel: NSLocalizedString("ADD_TO_PLAYLIST", comment: ""),
  65. accessibilityHint: NSLocalizedString("ADD_TO_PLAYLIST_HINT", comment: "")))
  66. case .rename:
  67. editButtons.append(EditButton(identifier: button,
  68. title: NSLocalizedString("BUTTON_RENAME", comment: ""),
  69. image: "rename",
  70. accessibilityLabel: NSLocalizedString("BUTTON_RENAME", comment: ""),
  71. accessibilityHint: NSLocalizedString("RENAME_HINT", comment: "")))
  72. case .delete:
  73. editButtons.append(EditButton(identifier: button,
  74. title: NSLocalizedString("BUTTON_DELETE", comment: ""),
  75. image: "delete",
  76. accessibilityLabel: NSLocalizedString("BUTTON_DELETE", comment: ""),
  77. accessibilityHint: NSLocalizedString("DELETE_HINT", comment: "")))
  78. case .share:
  79. editButtons.append(EditButton(identifier: button,
  80. title: NSLocalizedString("SHARE_LABEL", comment: ""),
  81. image: "share",
  82. accessibilityLabel: NSLocalizedString("SHARE_LABEL", comment: ""),
  83. accessibilityHint: NSLocalizedString("SHARE_HINT", comment: "")))
  84. }
  85. }
  86. return editButtons
  87. }
  88. }