@@ -2,194 +2,194 @@ import UIKit
22import CalendarKit
33
44final class CustomCalendarExampleController : DayViewController {
5- var data = [ [ " Breakfast at Tiffany's " ,
6- " New York, 5th avenue " ] ,
7-
8- [ " Workout " ,
9- " Tufteparken " ] ,
10-
11- [ " Meeting with Alex " ,
12- " Home " ,
13- " Oslo, Tjuvholmen " ] ,
14-
15- [ " Beach Volleyball " ,
16- " Ipanema Beach " ,
17- " Rio De Janeiro " ] ,
18-
19- [ " WWDC " ,
20- " Moscone West Convention Center " ,
21- " 747 Howard St " ] ,
22-
23- [ " Google I/O " ,
24- " Shoreline Amphitheatre " ,
25- " One Amphitheatre Parkway " ] ,
26-
27- [ " ✈️️ to Svalbard ❄️️❄️️❄️️❤️️ " ,
28- " Oslo Gardermoen " ] ,
29-
30- [ " 💻📲 Developing CalendarKit " ,
31- " 🌍 Worldwide " ] ,
32-
33- [ " Software Development Lecture " ,
34- " Mikpoli MB310 " ,
35- " Craig Federighi " ] ,
36-
37- ]
38-
39- var generatedEvents = [ EventDescriptor] ( )
40- var alreadyGeneratedSet = Set < Date > ( )
41-
42- var colors = [ UIColor . blue,
43- UIColor . yellow,
44- UIColor . green,
45- UIColor . red]
46-
47- private lazy var dateIntervalFormatter : DateIntervalFormatter = {
48- let dateIntervalFormatter = DateIntervalFormatter ( )
49- dateIntervalFormatter. dateStyle = . none
50- dateIntervalFormatter. timeStyle = . short
51-
52- return dateIntervalFormatter
53- } ( )
54-
55- override func loadView( ) {
56- calendar. timeZone = TimeZone ( identifier: " Europe/Paris " ) !
57-
58- dayView = DayView ( calendar: calendar)
59- view = dayView
60- }
61-
62- override func viewDidLoad( ) {
63- super. viewDidLoad ( )
64- title = " CalendarKit Demo "
65- navigationController? . navigationBar. isTranslucent = false
66- dayView. autoScrollToFirstEvent = true
67- reloadData ( )
68- }
69-
70- // MARK: EventDataSource
71-
72- override func eventsForDate( _ date: Date ) -> [ EventDescriptor ] {
73- if !alreadyGeneratedSet. contains ( date) {
74- alreadyGeneratedSet. insert ( date)
75- generatedEvents. append ( contentsOf: generateEventsForDate ( date) )
5+ var data = [ [ " Breakfast at Tiffany's " ,
6+ " New York, 5th avenue " ] ,
7+
8+ [ " Workout " ,
9+ " Tufteparken " ] ,
10+
11+ [ " Meeting with Alex " ,
12+ " Home " ,
13+ " Oslo, Tjuvholmen " ] ,
14+
15+ [ " Beach Volleyball " ,
16+ " Ipanema Beach " ,
17+ " Rio De Janeiro " ] ,
18+
19+ [ " WWDC " ,
20+ " Moscone West Convention Center " ,
21+ " 747 Howard St " ] ,
22+
23+ [ " Google I/O " ,
24+ " Shoreline Amphitheatre " ,
25+ " One Amphitheatre Parkway " ] ,
26+
27+ [ " ✈️️ to Svalbard ❄️️❄️️❄️️❤️️ " ,
28+ " Oslo Gardermoen " ] ,
29+
30+ [ " 💻📲 Developing CalendarKit " ,
31+ " 🌍 Worldwide " ] ,
32+
33+ [ " Software Development Lecture " ,
34+ " Mikpoli MB310 " ,
35+ " Craig Federighi " ] ,
36+
37+ ]
38+
39+ var generatedEvents = [ EventDescriptor] ( )
40+ var alreadyGeneratedSet = Set < Date > ( )
41+
42+ var colors = [ UIColor . blue,
43+ UIColor . yellow,
44+ UIColor . green,
45+ UIColor . red]
46+
47+ private lazy var dateIntervalFormatter : DateIntervalFormatter = {
48+ let dateIntervalFormatter = DateIntervalFormatter ( )
49+ dateIntervalFormatter. dateStyle = . none
50+ dateIntervalFormatter. timeStyle = . short
51+
52+ return dateIntervalFormatter
53+ } ( )
54+
55+ override func loadView( ) {
56+ calendar. timeZone = TimeZone ( identifier: " Europe/Paris " ) !
57+
58+ dayView = DayView ( calendar: calendar)
59+ view = dayView
60+ }
61+
62+ override func viewDidLoad( ) {
63+ super. viewDidLoad ( )
64+ title = " CalendarKit Demo "
65+ navigationController? . navigationBar. isTranslucent = false
66+ dayView. autoScrollToFirstEvent = true
67+ reloadData ( )
68+ }
69+
70+ // MARK: EventDataSource
71+
72+ override func eventsForDate( _ date: Date ) -> [ EventDescriptor ] {
73+ if !alreadyGeneratedSet. contains ( date) {
74+ alreadyGeneratedSet. insert ( date)
75+ generatedEvents. append ( contentsOf: generateEventsForDate ( date) )
76+ }
77+ return generatedEvents
78+ }
79+
80+ private func generateEventsForDate( _ date: Date ) -> [ EventDescriptor ] {
81+ var workingDate = Calendar . current. date ( byAdding: . hour, value: Int . random ( in: 1 ... 15 ) , to: date) !
82+ var events = [ Event] ( )
83+
84+ for i in 0 ... 4 {
85+ let event = Event ( )
86+
87+ let duration = Int . random ( in: 60 ... 160 )
88+ event. dateInterval = DateInterval ( start: workingDate, duration: TimeInterval ( duration * 60 ) )
89+
90+ var info = data. randomElement ( ) ?? [ ]
91+
92+ let timezone = dayView. calendar. timeZone
93+ print ( timezone)
94+
95+ info. append ( dateIntervalFormatter. string ( from: event. dateInterval. start, to: event. dateInterval. end) )
96+ event. text = info. reduce ( " " , { $0 + $1 + " \n " } )
97+ event. color = colors. randomElement ( ) ?? . red
98+ event. isAllDay = Bool . random ( )
99+ event. lineBreakMode = . byTruncatingTail
100+
101+ events. append ( event)
102+
103+ let nextOffset = Int . random ( in: 40 ... 250 )
104+ workingDate = Calendar . current. date ( byAdding: . minute, value: nextOffset, to: workingDate) !
105+ event. userInfo = String ( i)
106+ }
107+
108+ print ( " Events for \( date) " )
109+ return events
110+ }
111+
112+ // MARK: DayViewDelegate
113+
114+ private var createdEvent : EventDescriptor ?
115+
116+ override func dayViewDidSelectEventView( _ eventView: EventView ) {
117+ guard let descriptor = eventView. descriptor as? Event else {
118+ return
119+ }
120+ print ( " Event has been selected: \( descriptor) \( String ( describing: descriptor. userInfo) ) " )
121+ }
122+
123+ override func dayViewDidLongPressEventView( _ eventView: EventView ) {
124+ guard let descriptor = eventView. descriptor as? Event else {
125+ return
126+ }
127+ endEventEditing ( )
128+ print ( " Event has been longPressed: \( descriptor) \( String ( describing: descriptor. userInfo) ) " )
129+ beginEditing ( event: descriptor, animated: true )
130+ print ( Date ( ) )
131+ }
132+
133+ override func dayView( dayView: DayView , didTapTimelineAt date: Date ) {
134+ endEventEditing ( )
135+ print ( " Did Tap at date: \( date) " )
136+ }
137+
138+ override func dayViewDidBeginDragging( dayView: DayView ) {
139+ endEventEditing ( )
140+ print ( " DayView did begin dragging " )
76141 }
77- return generatedEvents
78- }
79-
80- private func generateEventsForDate( _ date: Date ) -> [ EventDescriptor ] {
81- var workingDate = Calendar . current. date ( byAdding: . hour, value: Int . random ( in: 1 ... 15 ) , to: date) !
82- var events = [ Event] ( )
83-
84- for i in 0 ... 4 {
85- let event = Event ( )
86-
87- let duration = Int . random ( in: 60 ... 160 )
88- event. dateInterval = DateInterval ( start: workingDate, duration: TimeInterval ( duration * 60 ) )
89-
90- var info = data. randomElement ( ) ?? [ ]
91-
92- let timezone = dayView. calendar. timeZone
93- print ( timezone)
94-
95- info. append ( dateIntervalFormatter. string ( from: event. dateInterval. start, to: event. dateInterval. end) )
96- event. text = info. reduce ( " " , { $0 + $1 + " \n " } )
97- event. color = colors. randomElement ( ) ?? . red
98- event. isAllDay = Bool . random ( )
99- event. lineBreakMode = . byTruncatingTail
100-
101- events. append ( event)
102-
103- let nextOffset = Int . random ( in: 40 ... 250 )
104- workingDate = Calendar . current. date ( byAdding: . minute, value: nextOffset, to: workingDate) !
105- event. userInfo = String ( i)
142+
143+ override func dayView( dayView: DayView , willMoveTo date: Date ) {
144+ print ( " DayView = \( dayView) will move to: \( date) " )
106145 }
107-
108- print ( " Events for \( date) " )
109- return events
110- }
111-
112- // MARK: DayViewDelegate
113-
114- private var createdEvent : EventDescriptor ?
115-
116- override func dayViewDidSelectEventView( _ eventView: EventView ) {
117- guard let descriptor = eventView. descriptor as? Event else {
118- return
146+
147+ override func dayView( dayView: DayView , didMoveTo date: Date ) {
148+ print ( " DayView = \( dayView) did move to: \( date) " )
119149 }
120- print ( " Event has been selected: \( descriptor) \( String ( describing: descriptor. userInfo) ) " )
121- }
122-
123- override func dayViewDidLongPressEventView( _ eventView: EventView ) {
124- guard let descriptor = eventView. descriptor as? Event else {
125- return
150+
151+ override func dayView( dayView: DayView , didLongPressTimelineAt date: Date ) {
152+ print ( " Did long press timeline at date \( date) " )
153+ // Cancel editing current event and start creating a new one
154+ endEventEditing ( )
155+ let event = generateEventNearDate ( date)
156+ print ( " Creating a new event " )
157+ create ( event: event, animated: true )
158+ createdEvent = event
126159 }
127- endEventEditing ( )
128- print ( " Event has been longPressed: \( descriptor) \( String ( describing: descriptor. userInfo) ) " )
129- beginEditing ( event: descriptor, animated: true )
130- print ( Date ( ) )
131- }
132-
133- override func dayView( dayView: DayView , didTapTimelineAt date: Date ) {
134- endEventEditing ( )
135- print ( " Did Tap at date: \( date) " )
136- }
137-
138- override func dayViewDidBeginDragging( dayView: DayView ) {
139- endEventEditing ( )
140- print ( " DayView did begin dragging " )
141- }
142-
143- override func dayView( dayView: DayView , willMoveTo date: Date ) {
144- print ( " DayView = \( dayView) will move to: \( date) " )
145- }
146-
147- override func dayView( dayView: DayView , didMoveTo date: Date ) {
148- print ( " DayView = \( dayView) did move to: \( date) " )
149- }
150-
151- override func dayView( dayView: DayView , didLongPressTimelineAt date: Date ) {
152- print ( " Did long press timeline at date \( date) " )
153- // Cancel editing current event and start creating a new one
154- endEventEditing ( )
155- let event = generateEventNearDate ( date)
156- print ( " Creating a new event " )
157- create ( event: event, animated: true )
158- createdEvent = event
159- }
160-
161- private func generateEventNearDate( _ date: Date ) -> EventDescriptor {
162- let duration = ( 60 ... 220 ) . randomElement ( ) !
163- let startDate = Calendar . current. date ( byAdding: . minute, value: - Int( Double ( duration) / 2 ) , to: date) !
164- let event = Event ( )
165-
166- event. dateInterval = DateInterval ( start: startDate, duration: TimeInterval ( duration * 60 ) )
167-
168- var info = data. randomElement ( ) !
169-
170- info. append ( dateIntervalFormatter. string ( from: event. dateInterval) !)
171- event. text = info. reduce ( " " , { $0 + $1 + " \n " } )
172- event. color = colors. randomElement ( ) !
173- event. editedEvent = event
174-
175- return event
176- }
177-
178- override func dayView( dayView: DayView , didUpdate event: EventDescriptor ) {
179- print ( " did finish editing \( event) " )
180- print ( " new startDate: \( event. dateInterval. start) new endDate: \( event. dateInterval. end) " )
181-
182- if let _ = event. editedEvent {
183- event. commitEditing ( )
160+
161+ private func generateEventNearDate( _ date: Date ) -> EventDescriptor {
162+ let duration = ( 60 ... 220 ) . randomElement ( ) !
163+ let startDate = Calendar . current. date ( byAdding: . minute, value: - Int( Double ( duration) / 2 ) , to: date) !
164+ let event = Event ( )
165+
166+ event. dateInterval = DateInterval ( start: startDate, duration: TimeInterval ( duration * 60 ) )
167+
168+ var info = data. randomElement ( ) !
169+
170+ info. append ( dateIntervalFormatter. string ( from: event. dateInterval) !)
171+ event. text = info. reduce ( " " , { $0 + $1 + " \n " } )
172+ event. color = colors. randomElement ( ) !
173+ event. editedEvent = event
174+
175+ return event
184176 }
185-
186- if let createdEvent = createdEvent {
187- createdEvent. editedEvent = nil
188- generatedEvents. append ( createdEvent)
189- self . createdEvent = nil
190- endEventEditing ( )
177+
178+ override func dayView( dayView: DayView , didUpdate event: EventDescriptor ) {
179+ print ( " did finish editing \( event) " )
180+ print ( " new startDate: \( event. dateInterval. start) new endDate: \( event. dateInterval. end) " )
181+
182+ if let _ = event. editedEvent {
183+ event. commitEditing ( )
184+ }
185+
186+ if let createdEvent = createdEvent {
187+ createdEvent. editedEvent = nil
188+ generatedEvents. append ( createdEvent)
189+ self . createdEvent = nil
190+ endEventEditing ( )
191+ }
192+
193+ reloadData ( )
191194 }
192-
193- reloadData ( )
194- }
195195}
0 commit comments