Rev 9 | Rev 20 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
//// GridGalleryView.swift// twogetskills//// Created by Efrain Yanez Recanatini on 3/7/22.//import Foundationimport SwiftUIclass GridGalleryTabController: ObservableObject {@Published var activeTab : Int = 0func open( tab: Int) {activeTab = tab}}struct GridGalleryView: View {@EnvironmentObject private var networkMonitor : NetworkMonitor@EnvironmentObject private var appNavigation : AppNavigation@State private var selectedTab : Int = 0private let appDao = AppDao.sharedInstanceprivate let slidePositionInitial : Intprivate var capsuleTitle : String = ""private var viewModel : GalleryGridViewModel = GalleryGridViewModel()//init(capsuleUuid : String, position : Int)init(){let appData = appDao.selectOne()self.slidePositionInitial = appData.slidePositionInitialself.viewModel.fetch(capsuleUuid: appData.capsuleUuidActive, userUuid: appData.userUuid)let capsuleDao = CapsuleDao.sharedInstancelet capsule = capsuleDao.selectByUuid(uuid: appData.capsuleUuidActive)if capsule.name.count > Constants.APP_BAR_TITLE_MAX_LENGTH {capsuleTitle = String(Array(capsule.name)[0...Constants.APP_BAR_TITLE_MAX_LENGTH]) + "..."} else {capsuleTitle = capsule.name}}var body: some View {GeometryReader { geometry inZStack {if self.selectedTab > 0 {Button(action: {self.selectedTab = self.selectedTab - 1}, label: {Image(systemName: "arrow.left")}).frame(width: 40.0, height: 40.0, alignment: .center).cornerRadius(/*@START_MENU_TOKEN@*/3.0/*@END_MENU_TOKEN@*/).background(Color("color_button_gallery_background")).foregroundColor(Color("color_button_gallery_foreground")).offset(x: -1 * ((geometry.size.width / 2) - 30), y : 25).zIndex(10000)}if self.selectedTab < (self.viewModel.slides.count - 1) {Button(action: {self.selectedTab = self.selectedTab + 1}, label: {Image(systemName: "arrow.right")}).frame(width: 40.0, height: 40.0, alignment: .center).background(Color("color_button_gallery_background")).foregroundColor(Color("color_button_gallery_foreground")).offset(x: ((geometry.size.width / 2) - 30), y : 25).zIndex(10000)}VStack(spacing: 0) {HStack {Button(action: {var appData = appDao.selectOne()appData.slideUuidActive = ""print("update query : 12")appDao.update(model: appData)appNavigation.subpageActive = .slides}, label: {Image(systemName: "chevron.backward").frame(width: 32, height: 32, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/).aspectRatio(contentMode: .fit).foregroundColor(networkMonitor.status == .disconnected ? Color("color_network_disconnected_foreground") : Color("color_app_bar_foreground"))}).padding(.leading, 16)Text(networkMonitor.status == .disconnected ? Config.LANG_ERROR_NETWORK_MESSAGE_SHORT : capsuleTitle).font(Font.custom(Config.FONT_NAME_REGULAR, size: Config.FONT_SIZE_APP_BAR_HEAD1 )).foregroundColor(networkMonitor.status == .disconnected ? Color("color_network_disconnected_foreground") : Color("color_app_bar_foreground")).padding(.leading, 4)Spacer()}.edgesIgnoringSafeArea(.top).frame(height: 50).background(networkMonitor.status == .disconnected ? Color("color_network_disconnected_background") : Color("color_app_bar_background"))Divider().background(networkMonitor.status == .disconnected ? Color("color_network_disconnected_background") : Color("color_app_bar_background"))TabView(selection: self.$selectedTab) {ForEach(0..<self.viewModel.slides.count) { index inCardGalleryView(slideUuid: self.viewModel.slides[index].uuid).environmentObject(appNavigation).tag(index).transition(.slide)}}//.tabViewStyle(PageTabViewStyle()).tabViewStyle(PageTabViewStyle(indexDisplayMode: .never)).onChange(of: self.selectedTab) { selectedTab incompleteSlide(position: self.selectedTab)}.onAppear {self.selectedTab = self.slidePositionInitialcompleteSlide(position: self.selectedTab)}}}}}private func completeSlide(position: Int){if self.viewModel.slides[position].type == Constants.SLIDE_TYPE_IMAGE {let dataService = DataService()dataService.completeSlide(slide: self.viewModel.slides[position])}}}struct GridGalleryView_Previews: PreviewProvider {static var previews: some View {//GridGalleryView(capsuleUuid: "C123", position: 2)GridGalleryView()}}