From ab009dbb0c49a06f8fb95931a5b269937f8516b9 Mon Sep 17 00:00:00 2001 From: "johan.lachenal" Date: Tue, 21 May 2024 13:47:53 +0200 Subject: [PATCH] Create(DoushiQiPicker) --- .../ArkitDoushiQi.xcodeproj/project.pbxproj | 4 ++ .../Preview Content/DoushiQiPicker.swift | 65 +++++++++++++++++++ ArkitDoushiQi/Picker.swift | 20 ++++++ 3 files changed, 89 insertions(+) create mode 100644 ArkitDoushiQi/ArkitDoushiQi/Preview Content/DoushiQiPicker.swift create mode 100644 ArkitDoushiQi/Picker.swift diff --git a/ArkitDoushiQi/ArkitDoushiQi.xcodeproj/project.pbxproj b/ArkitDoushiQi/ArkitDoushiQi.xcodeproj/project.pbxproj index 1697619..03529f2 100644 --- a/ArkitDoushiQi/ArkitDoushiQi.xcodeproj/project.pbxproj +++ b/ArkitDoushiQi/ArkitDoushiQi.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + C20310D62BFCB5FB0031657D /* DoushiQiPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = C20310D52BFCB5FB0031657D /* DoushiQiPicker.swift */; }; C205A2B72BF373360097BD93 /* ArkitDoushiQiApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = C205A2B62BF373360097BD93 /* ArkitDoushiQiApp.swift */; }; C205A2B92BF373360097BD93 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C205A2B82BF373360097BD93 /* ContentView.swift */; }; C205A2BB2BF373380097BD93 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C205A2BA2BF373380097BD93 /* Assets.xcassets */; }; @@ -36,6 +37,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + C20310D52BFCB5FB0031657D /* DoushiQiPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DoushiQiPicker.swift; sourceTree = ""; }; C205A2B32BF373360097BD93 /* ArkitDoushiQi.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ArkitDoushiQi.app; sourceTree = BUILT_PRODUCTS_DIR; }; C205A2B62BF373360097BD93 /* ArkitDoushiQiApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArkitDoushiQiApp.swift; sourceTree = ""; }; C205A2B82BF373360097BD93 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; @@ -112,6 +114,7 @@ C205A2BD2BF373380097BD93 /* Preview Assets.xcassets */, C24659E42BF5FE09004E80D5 /* MainMenu.swift */, C24659E82BF60FAA004E80D5 /* MainMenuButton.swift */, + C20310D52BFCB5FB0031657D /* DoushiQiPicker.swift */, ); path = "Preview Content"; sourceTree = ""; @@ -267,6 +270,7 @@ C24659E92BF60FAA004E80D5 /* MainMenuButton.swift in Sources */, C24659E52BF5FE09004E80D5 /* MainMenu.swift in Sources */, C205A2B72BF373360097BD93 /* ArkitDoushiQiApp.swift in Sources */, + C20310D62BFCB5FB0031657D /* DoushiQiPicker.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/ArkitDoushiQi/ArkitDoushiQi/Preview Content/DoushiQiPicker.swift b/ArkitDoushiQi/ArkitDoushiQi/Preview Content/DoushiQiPicker.swift new file mode 100644 index 0000000..7a47cd0 --- /dev/null +++ b/ArkitDoushiQi/ArkitDoushiQi/Preview Content/DoushiQiPicker.swift @@ -0,0 +1,65 @@ +// +// DoushiQiPicker.swift +// ArkitDoushiQi +// +// Created by Johan LACHENAL on 21/05/2024. +// + +import SwiftUI + +enum AI: String, CaseIterable, Identifiable, Hashable { + case RandomAction = "IA Random" + case EasyTrainedAI = "IA Facile" + case MediumTrainedAI = "IA Intermédiaire" + + var id: String { self.rawValue } +} + +struct DoushiQiPicker: View where EnumType.RawValue == String, EnumType.AllCases: RandomAccessCollection { + let title: String + @Binding var selectedOption: EnumType + + init(title: String, selectedOption: Binding) { + self.title = title + self._selectedOption = selectedOption + } + + var body: some View { + Menu { + Picker(title, selection: $selectedOption) { + ForEach(EnumType.allCases) { option in + Text(option.rawValue.description) + .tag(option) + } + } + .labelsHidden() + .pickerStyle(InlinePickerStyle()) + } label: { + HStack { + Text(title) + .foregroundColor(.white) + .padding() + Spacer() + Text(selectedOption.rawValue.description) + .foregroundColor(.white) + .padding() + } + .frame(maxWidth: .infinity) + .padding(EdgeInsets(top: 10, leading: 32, bottom: 10, trailing: 32)) + .background(Color.black) + .clipShape(Capsule()) + } + } +} + +struct DoushiQiPicker_Previews: PreviewProvider { + @State static var selectedItem = AI.RandomAction + + static var previews: some View { + DoushiQiPicker(title: "Selectionne une IA :", selectedOption: $selectedItem) + } +} + + + + diff --git a/ArkitDoushiQi/Picker.swift b/ArkitDoushiQi/Picker.swift new file mode 100644 index 0000000..57d1bd5 --- /dev/null +++ b/ArkitDoushiQi/Picker.swift @@ -0,0 +1,20 @@ +/ +// Picker.swift +// ArkitDoushiQi +// +// Created by Johan LACHENAL on 21/05/2024. +// + +import SwiftUI + +struct Picker: View { + var body: some View { + Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) + } +} + +struct Picker_Previews: PreviewProvider { + static var previews: some View { + Picker() + } +}