Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // DetailedView.swift
- // Dashy
- //
- // Created by Георгий Александров on 15.04.2020.
- // Copyright © 2020 Георгий Александров. All rights reserved.
- //
- import EventKit
- import SwiftUI
- struct DetailedView: View {
- @State private var showShareSheet = false
- @State var calendarShow = false
- func addEventToCalendar(title: String, description: String?, startDate: Date, endDate _: Date, completion: ((_ success: Bool, _ error: NSError?) -> Void)? = nil) {
- let eventStore = EKEventStore()
- eventStore.requestAccess(to: .event, completion: { granted, error in
- if granted, error == nil {
- let event = EKEvent(eventStore: eventStore)
- event.title = title
- event.startDate = startDate
- event.endDate = startDate
- event.notes = description
- event.calendar = eventStore.defaultCalendarForNewEvents
- do {
- try eventStore.save(event, span: .thisEvent)
- } catch let e as NSError {
- completion?(false, e)
- return
- }
- self.calendarShow = true
- completion?(true, nil)
- } else {
- completion?(false, error as NSError?)
- }
- })
- }
- @State var daysCount: String = ""
- var task: Task = Task(title: "Раз два три четыре пять шесть", description: "", classs: [:], materials: "", id: 1, deadline: "", class_pid: "", public_id: "")
- var body: some View {
- ScrollView {
- VStack {
- HStack {
- Text(task.title).font(.system(size: 37, weight: .semibold)).padding(.trailing).lineLimit(100).fixedSize(horizontal: false, vertical: true)
- Spacer()
- Image(systemName: "square.and.arrow.up").onTapGesture {
- self.showShareSheet = true
- }
- }.padding()
- HStack {
- Text(task.description).font(.system(size: 24, weight: .medium)).fixedSize(horizontal: false, vertical: true)
- Spacer()
- }.padding(.horizontal)
- HStack {
- Text(self.daysCount).font(.system(size: 18, weight: .regular)).onAppear(perform: {
- let dateFormatter = DateFormatter()
- dateFormatter.dateFormat = "dd-MM-yyyy"
- let date = dateFormatter.date(from: self.task.deadline)
- self.daysCount = getDateObservation(date: date!)
- })
- Spacer()
- }.padding(.horizontal)
- Divider().padding()
- HStack {
- Text("Дедлайн").font(.system(size: 24, weight: .medium))
- Spacer()
- Image(systemName: "calendar.badge.plus").offset(x: 0, y: 10).onTapGesture {
- let dateFormatter = DateFormatter()
- dateFormatter.dateFormat = "dd-MM-yyyy"
- let date = dateFormatter.date(from: self.task.deadline)
- self.addEventToCalendar(title: self.task.title, description: self.task.description, startDate: date!, endDate: date!)
- }.alert(isPresented: $calendarShow, content: {
- Alert(title: Text("Добавлено в календарь"), message: Text("Задание «\(self.task.title)» успешно добавлено в календарь"), dismissButton: .default(Text("ОК")))
- })
- }.padding(.horizontal)
- HStack {
- Text(task.deadline).font(.system(size: 18, weight: .regular))
- Spacer()
- }.padding(.horizontal)
- Divider().padding()
- HStack {
- Text("Материалы к уроку").font(.system(size: 24, weight: .medium))
- Spacer()
- }.padding(.horizontal)
- HStack {
- Text(task.materials).font(.system(size: 18, weight: .regular)).fixedSize(horizontal: false, vertical: true)
- Spacer()
- }.padding(.horizontal)
- .sheet(isPresented: $showShareSheet) {
- ShareSheet(activityItems: ["Задание «\(self.task.title)» \nПосмотреть на Dashy: alxndrv.pythonanywhere.com/task/\(self.task.public_id)"])
- }
- Spacer()
- .edgesIgnoringSafeArea(.all)
- }
- Spacer()
- }
- }
- }
- struct DetailedView_Previews: PreviewProvider {
- static var previews: some View {
- DetailedView().previewDevice("iPhone 11")
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment