AzureCommunicationUI/sdk/AzureCommunicationUICalling/Sources/Presentation/SwiftUI/ViewComponents/Button/IconButtonViewModel.swift (75 lines of code) (raw):
//
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
//
import Foundation
import Combine
import SwiftUI
class IconButtonViewModel: ObservableObject {
enum ButtonType {
case controlButton
case roundedRectButton
case infoButton
case dismissButton
case cameraSwitchButtonPip
case cameraSwitchButtonFull
}
@Published var iconName: CompositeIcon?
@Published var icon: UIImage?
@Published var accessibilityLabel: String?
@Published var accessibilityValue: String?
@Published var accessibilityHint: String?
@Published var isDisabled: Bool
@Published var isVisible: Bool
var buttonType: ButtonType
var action: (() -> Void)
init(iconName: CompositeIcon?,
buttonType: ButtonType = .controlButton,
isDisabled: Bool = false,
isVisible: Bool = true,
action: @escaping (() -> Void) = {}) {
self.iconName = iconName
self.buttonType = buttonType
self.isDisabled = isDisabled
self.action = action
self.isVisible = isVisible
}
convenience init(icon: UIImage,
buttonType: ButtonType = .controlButton,
isDisabled: Bool = false,
isVisible: Bool = true,
action: @escaping (() -> Void) = {}) {
self.init(iconName: nil,
buttonType: buttonType,
isDisabled: isDisabled,
isVisible: isVisible,
action: action)
self.icon = icon
}
func update(iconName: CompositeIcon?) {
if iconName != nil && self.iconName != iconName {
self.iconName = iconName!
}
}
func update(accessibilityLabel: String) {
if self.accessibilityLabel != accessibilityLabel {
self.accessibilityLabel = accessibilityLabel
}
}
func update(accessibilityValue: String) {
if self.accessibilityValue != accessibilityValue {
self.accessibilityValue = accessibilityValue
}
}
func update(accessibilityHint: String) {
if self.accessibilityHint != accessibilityHint {
self.accessibilityHint = accessibilityHint
}
}
func update(isDisabled: Bool) {
if self.isDisabled != isDisabled {
self.isDisabled = isDisabled
}
}
func update(isVisible: Bool) {
if self.isVisible != isVisible {
self.isVisible = isVisible
}
}
}