123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- /*****************************************************************************
- * EditButtons.swift
- *
- * Copyright © 2019 VLC authors and VideoLAN
- *
- * Authors: Edgar Fouillet <vlc # edgar.fouillet.eu>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
- enum EditButtonType {
- case addToPlaylist
- case rename
- case delete
- case share
- }
- class EditButton {
- var identifier: EditButtonType
- var title: String
- var image: String
- var accessibilityLabel: String
- var accessibilityHint: String
- init(identifier: EditButtonType, title: String, image: String, accessibilityLabel: String, accessibilityHint: String) {
- self.identifier = identifier
- self.title = title
- self.image = image
- self.accessibilityLabel = accessibilityLabel
- self.accessibilityHint = accessibilityHint
- }
- func button(_ selector: Selector) -> UIButton {
- let generatedButton = UIButton(type: .system)
- generatedButton.setImage(UIImage(named: image), for: .normal)
- generatedButton.contentHorizontalAlignment = .left
- generatedButton.addTarget(self, action: selector, for: .touchUpInside)
- generatedButton.widthAnchor.constraint(equalToConstant: 44).isActive = true
- generatedButton.tintColor = .orange
- generatedButton.accessibilityLabel = accessibilityLabel
- generatedButton.accessibilityHint = accessibilityHint
- return generatedButton
- }
- }
- class EditButtonsFactory {
- static func buttonList(for file: VLCMLObject?) -> [EditButtonType] {
- var actionList = [EditButtonType]()
- if let file = file {
- actionList.append(.addToPlaylist)
- if !(file is VLCMLArtist) && !(file is VLCMLGenre) && !(file is VLCMLAlbum) && !(file is VLCMLVideoGroup) {
- actionList.append(.rename)
- }
- if !(file is VLCMLVideoGroup) {
- actionList.append(.delete)
- }
- actionList.append(.share)
- }
- return actionList
- }
- static func generate(buttons: [EditButtonType]) -> [EditButton] {
- var editButtons = [EditButton]()
- for button in buttons {
- switch button {
- case .addToPlaylist:
- editButtons.append(EditButton(identifier: button,
- title: NSLocalizedString("ADD_TO_PLAYLIST", comment: ""),
- image: "addToPlaylist",
- accessibilityLabel: NSLocalizedString("ADD_TO_PLAYLIST", comment: ""),
- accessibilityHint: NSLocalizedString("ADD_TO_PLAYLIST_HINT", comment: "")))
- case .rename:
- editButtons.append(EditButton(identifier: button,
- title: NSLocalizedString("BUTTON_RENAME", comment: ""),
- image: "rename",
- accessibilityLabel: NSLocalizedString("BUTTON_RENAME", comment: ""),
- accessibilityHint: NSLocalizedString("RENAME_HINT", comment: "")))
- case .delete:
- editButtons.append(EditButton(identifier: button,
- title: NSLocalizedString("BUTTON_DELETE", comment: ""),
- image: "delete",
- accessibilityLabel: NSLocalizedString("BUTTON_DELETE", comment: ""),
- accessibilityHint: NSLocalizedString("DELETE_HINT", comment: "")))
- case .share:
- editButtons.append(EditButton(identifier: button,
- title: NSLocalizedString("SHARE_LABEL", comment: ""),
- image: "share",
- accessibilityLabel: NSLocalizedString("SHARE_LABEL", comment: ""),
- accessibilityHint: NSLocalizedString("SHARE_HINT", comment: "")))
- }
- }
- return editButtons
- }
- }
|