Adds languages to the editor.
This commit is contained in:
28
iOS/MonsterCards/Views/EditLanguage.swift
Normal file
28
iOS/MonsterCards/Views/EditLanguage.swift
Normal file
@@ -0,0 +1,28 @@
|
||||
//
|
||||
// EditLanguage.swift
|
||||
// MonsterCards
|
||||
//
|
||||
// Created by Tom Hicks on 3/24/21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct EditLanguage: View {
|
||||
@ObservedObject var viewModel: LanguageViewModel
|
||||
|
||||
var body: some View {
|
||||
MCTextField(
|
||||
label: "Name",
|
||||
value: $viewModel.name)
|
||||
.autocapitalization(.none)
|
||||
|
||||
Toggle("Speaks", isOn: $viewModel.speaks)
|
||||
}
|
||||
}
|
||||
|
||||
struct EditLanguage_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
let viewModel = LanguageViewModel()
|
||||
EditLanguage(viewModel: viewModel)
|
||||
}
|
||||
}
|
||||
48
iOS/MonsterCards/Views/EditLanguages.swift
Normal file
48
iOS/MonsterCards/Views/EditLanguages.swift
Normal file
@@ -0,0 +1,48 @@
|
||||
//
|
||||
// EditLanguages.swift
|
||||
// MonsterCards
|
||||
//
|
||||
// Created by Tom Hicks on 3/24/21.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct EditLanguages: View {
|
||||
@ObservedObject var viewModel: MonsterViewModel
|
||||
|
||||
var body: some View {
|
||||
let sortedLanguages = viewModel.languages.sorted()
|
||||
List {
|
||||
MCTextField(
|
||||
label: "Understands But",
|
||||
value: $viewModel.understandsBut)
|
||||
MCStepperField(label: "Telepathy", prefix: "", step: 5, suffix: " ft.", value: $viewModel.telepathy)
|
||||
ForEach(sortedLanguages/*viewModel.languages*/) { language in
|
||||
NavigationLink(language.name, destination: EditLanguage(viewModel: language))
|
||||
}
|
||||
|
||||
}
|
||||
.toolbar(content: {
|
||||
Button(
|
||||
action: {
|
||||
let newLanguage = LanguageViewModel("English")
|
||||
viewModel.languages.append(newLanguage)
|
||||
viewModel.languages = viewModel.languages.sorted()
|
||||
},
|
||||
label: {
|
||||
Image(systemName: "plus")
|
||||
}
|
||||
)
|
||||
})
|
||||
.onAppear(perform: {
|
||||
viewModel.languages = viewModel.languages.sorted()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
struct EditLanguages_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
let viewModel = MonsterViewModel()
|
||||
EditLanguages(viewModel: viewModel)
|
||||
}
|
||||
}
|
||||
@@ -65,6 +65,10 @@ struct EditMonster: View {
|
||||
NavigationLink(
|
||||
"Senses",
|
||||
destination: EditStrings(viewModel: monsterViewModel, path: \.senses, title: "Senses"))
|
||||
|
||||
NavigationLink(
|
||||
"Languages",
|
||||
destination: EditLanguages(viewModel: monsterViewModel))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -302,6 +302,11 @@ struct MonsterDetail_Previews: PreviewProvider {
|
||||
monster.wisdomSavingThrowProficiencyEnum = ProficiencyType.proficient
|
||||
monster.charismaSavingThrowAdvantageEnum = AdvantageType.disadvantage
|
||||
monster.charismaSavingThrowProficiencyEnum = ProficiencyType.none
|
||||
monster.telepathy = 1
|
||||
monster.languages = [
|
||||
LanguageViewModel("English", true),
|
||||
LanguageViewModel("French", false)
|
||||
]
|
||||
|
||||
return Group {
|
||||
MonsterDetail(monster: monster)
|
||||
|
||||
Reference in New Issue
Block a user