forked from AcaMate/AcaMate_iOS
99 lines
2.7 KiB
Swift
99 lines
2.7 KiB
Swift
//
|
|
// ButtonViewModel.swift
|
|
// AcaMate
|
|
//
|
|
// Created by TAnine on 2/6/25.
|
|
//
|
|
|
|
import SwiftUI
|
|
import Combine
|
|
|
|
class ButtonViewModel: ObservableObject {
|
|
@Published var btnStates: [UUID: ButtonState] = [:]
|
|
|
|
func setImage(for id: UUID, newImage: Image){
|
|
var state = btnStates[id] ?? ButtonState()
|
|
state.image = newImage
|
|
btnStates[id] = state
|
|
objectWillChange.send()
|
|
}
|
|
|
|
func setText(for id: UUID, newText: String?, newFont: Font?) {
|
|
var state = btnStates[id] ?? ButtonState()
|
|
|
|
state.title = newText
|
|
state.font = newFont
|
|
|
|
btnStates[id] = state
|
|
objectWillChange.send()
|
|
}
|
|
|
|
func setSize(for id: UUID, newWidth: CGFloat?, newHeight: CGFloat?){
|
|
var state = btnStates[id] ?? ButtonState()
|
|
|
|
state.width = newWidth ?? 0
|
|
state.height = newHeight ?? 0
|
|
|
|
btnStates[id] = state
|
|
objectWillChange.send()
|
|
}
|
|
|
|
func setAction(for id: UUID, newAction: @escaping VOID_TO_VOID) {
|
|
var state = btnStates[id] ?? ButtonState()
|
|
state.action = newAction
|
|
btnStates[id] = state
|
|
objectWillChange.send()
|
|
}
|
|
|
|
func setTextColor(for id: UUID, newColor: Color) {
|
|
var state = btnStates[id] ?? ButtonState()
|
|
|
|
state.textColor = newColor
|
|
|
|
btnStates[id] = state
|
|
objectWillChange.send()
|
|
}
|
|
|
|
func setIsUsable(for id: UUID, newValue: Bool) {
|
|
var state = btnStates[id] ?? ButtonState()
|
|
state.isUsable = newValue
|
|
btnStates[id] = state
|
|
objectWillChange.send()
|
|
}
|
|
|
|
// -- CircleBtn 전용 -- //
|
|
|
|
func setIsSelected(for id: UUID, newValue: Bool){
|
|
var state = btnStates[id] ?? ButtonState()
|
|
state.isSelected = newValue
|
|
state.foreColor = newValue ? Color(.Second.normal) : Color(.Disable.normal)
|
|
btnStates[id] = state
|
|
objectWillChange.send()
|
|
}
|
|
|
|
func setIsReverse(for id: UUID, newValue: Bool){
|
|
var state = btnStates[id] ?? ButtonState()
|
|
state.isReverse = newValue
|
|
state.backColor = newValue ? Color(.Second.light) : Color(.Normal.normal)
|
|
btnStates[id] = state
|
|
objectWillChange.send()
|
|
}
|
|
|
|
// func setBackColor(for id: UUID, newColor: Color) {
|
|
// var state = btnStates[id] ?? ButtonState()
|
|
//
|
|
// state.backColor = newColor
|
|
//
|
|
// btnStates[id] = state
|
|
// objectWillChange.send()
|
|
// }
|
|
// func setForeColor(for id: UUID, newColor: Color) {
|
|
// var state = btnStates[id] ?? ButtonState()
|
|
//
|
|
// state.foreColor = newColor
|
|
//
|
|
// btnStates[id] = state
|
|
// objectWillChange.send()
|
|
// }
|
|
}
|