Proyectos de Subversion Iphone Microlearning - Nuevo Interface

Rev

Rev 1 | Rev 11 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
//
2
//  PdfView.swift
3
//  twogetskills
4
//
5
//  Created by Efrain Yanez Recanatini on 4/26/22.
6
//
7
 
8
import Foundation
9
import SwiftUI
10
import PDFKit
8 efrain 11
import NavigationStack
1 efrain 12
 
13
 
14
struct PdfViewerView: View {
15
 
8 efrain 16
    @State private var backToGallery : Bool = false
17
 
1 efrain 18
    @State private var isCompleted : Bool = false
19
 
8 efrain 20
 
21
    private var slideModel : SlideModel
22
    private var slideTitle : String
23
 
1 efrain 24
    private var url : URL?
25
 
26
 
27
 
8 efrain 28
    init(slideUuid : String)
1 efrain 29
    {
8 efrain 30
        let slideDao = SlideDao.sharedInstance
31
        self.slideModel = slideDao.selectByUuid(uuid: slideUuid)
1 efrain 32
 
8 efrain 33
        if self.slideModel.name.count > Constants.APP_BAR_TITLE_MAX_LENGTH {
34
            slideTitle = String(Array(self.slideModel.name)[0...Constants.APP_BAR_TITLE_MAX_LENGTH]) + "..."
35
        } else {
36
            slideTitle = self.slideModel.name
37
        }
38
 
39
 
40
        print("Viewer PDF: \(slideModel.file) ")
41
 
42
        self.url = URL(string: slideModel.file)
1 efrain 43
 
8 efrain 44
 
45
 
1 efrain 46
    }
47
 
48
    var body: some View {
8 efrain 49
        VStack(spacing: 0) {
50
            PopView(
51
                destination: .root,
52
                isActive: self.$backToGallery,
53
                label: {
54
                    Text("")
55
 
56
                }
57
            ).frame( height: 0)
58
 
59
            HStack {
60
                Button(action: {
61
                    let dataService = DataService()
62
                    if self.isCompleted {
63
 
64
 
65
                        dataService.completeSlide(slide: slideModel)
66
                    } else {
67
                        dataService.incompleteSlide(slide: slideModel)
68
                    }
69
 
70
 
71
 
72
                    self.backToGallery.toggle()
73
 
74
 
75
 
76
                }, label: {
77
 
78
 
79
                    Image(systemName: "chevron.backward")
80
                    .frame(width: 32, height: 32, alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
81
                    .aspectRatio(contentMode: .fit)
82
                    .foregroundColor(Color("color_app_bar_foreground"))
83
                })
84
                .padding(.leading, 16)
85
 
86
                Text(self.slideTitle)
87
                .font(Font.custom(Config.FONT_NAME_REGULAR, size: Config.FONT_SIZE_APP_BAR_HEAD1 ))
88
                .foregroundColor(Color("color_app_bar_foreground"))
89
                    .padding(.leading, 4)
90
 
91
                Spacer()
92
            }
93
            .background(Color("color_app_bar_background"))
94
            .edgesIgnoringSafeArea(.top)
95
            .frame(height: 50)
96
            Divider()
97
 
98
            GeometryReader { geometry in
99
 
100
            PDFKitRepresentedView(url!)
101
                .frame(
1 efrain 102
                    width: geometry.size.width,
103
                    height: geometry.size.height,
104
                    alignment: /*@START_MENU_TOKEN@*/.center/*@END_MENU_TOKEN@*/)
8 efrain 105
                .border(/*@START_MENU_TOKEN@*/Color.black/*@END_MENU_TOKEN@*/, width: /*@START_MENU_TOKEN@*/1/*@END_MENU_TOKEN@*/)
1 efrain 106
 
107
            }
8 efrain 108
 
1 efrain 109
 
110
        }
111
    }
112
}
113
 
114
 
115
struct PdfViewerView_Previews: PreviewProvider {
116
    static var previews: some View {
8 efrain 117
        PdfViewerView(slideUuid: "S123")
1 efrain 118
    }
119
}
120
 
121
 
122