Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
Material
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dmitriy Stepanets
Material
Commits
ff3a3716
Unverified
Commit
ff3a3716
authored
May 14, 2017
by
Daniel Dahan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
development: renamed Reminders to Event
parent
4b41d8fb
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
108 additions
and
107 deletions
+108
-107
Material.xcodeproj/project.pbxproj
+11
-10
Sources/iOS/Events/Event.swift
+83
-83
Sources/iOS/Events/EventController.swift
+14
-14
No files found.
Material.xcodeproj/project.pbxproj
View file @
ff3a3716
...
...
@@ -40,8 +40,8 @@
96328B9E1E05C24E009A4C90
/* TableView.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96328B961E05C0BB009A4C90
/* TableView.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
96328B9F1E05C24E009A4C90
/* TableViewController.swift in Headers */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96328B981E05C0CE009A4C90
/* TableViewController.swift */
;
settings
=
{
ATTRIBUTES
=
(
Public
,
);
};
};
96334EF61C8B84660083986B
/* Assets.xcassets in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96334EF51C8B84660083986B
/* Assets.xcassets */
;
};
9639526C1EC3882F004BA9DE
/*
Reminders.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9639526A1EC3882F004BA9DE
/* Reminders
.swift */
;
};
9639526D1EC3882F004BA9DE
/*
RemindersController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9639526B1EC3882F004BA9DE
/* Reminders
Controller.swift */
;
};
9639526C1EC3882F004BA9DE
/*
Event.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9639526A1EC3882F004BA9DE
/* Event
.swift */
;
};
9639526D1EC3882F004BA9DE
/*
EventController.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
9639526B1EC3882F004BA9DE
/* Event
Controller.swift */
;
};
965E80CC1DD4C50600D61E4B
/* Bar.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7981CB40DC500C806FE
/* Bar.swift */
;
};
965E80CD1DD4C50600D61E4B
/* Button.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB7701CB40DC500C806FE
/* Button.swift */
;
};
965E80CE1DD4C50600D61E4B
/* FABButton.swift in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
96BCB75F1CB40DC500C806FE
/* FABButton.swift */
;
};
...
...
@@ -206,8 +206,8 @@
96328B981E05C0CE009A4C90
/* TableViewController.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
TableViewController.swift
;
sourceTree
=
"<group>"
;
};
96334EF51C8B84660083986B
/* Assets.xcassets */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
folder.assetcatalog
;
path
=
Assets.xcassets
;
sourceTree
=
"<group>"
;
};
963832361B88DFD80015F710
/* Material.framework */
=
{
isa
=
PBXFileReference
;
explicitFileType
=
wrapper.framework
;
includeInIndex
=
0
;
path
=
Material.framework
;
sourceTree
=
BUILT_PRODUCTS_DIR
;
};
9639526A1EC3882F004BA9DE
/*
Reminders.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
Reminders
.swift
;
sourceTree
=
"<group>"
;
};
9639526B1EC3882F004BA9DE
/*
RemindersController.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
Reminders
Controller.swift
;
sourceTree
=
"<group>"
;
};
9639526A1EC3882F004BA9DE
/*
Event.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
Event
.swift
;
sourceTree
=
"<group>"
;
};
9639526B1EC3882F004BA9DE
/*
EventController.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
Event
Controller.swift
;
sourceTree
=
"<group>"
;
};
963FBEFC1D669510008F8512
/* Snackbar.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
Snackbar.swift
;
sourceTree
=
"<group>"
;
};
965532281E47E388005C2792
/* SpringAnimation.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
SpringAnimation.swift
;
sourceTree
=
"<group>"
;
};
9658F2161CD6FA4700B902C1
/* IconButton.swift */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.swift
;
path
=
IconButton.swift
;
sourceTree
=
"<group>"
;
};
...
...
@@ -394,12 +394,13 @@
name
=
Products
;
sourceTree
=
"<group>"
;
};
963952691EC3882F004BA9DE
/* Event
s
*/
=
{
963952691EC3882F004BA9DE
/* Event */
=
{
isa
=
PBXGroup
;
children
=
(
9639526A1EC3882F004BA9DE
/*
Reminders
.swift */
,
9639526B1EC3882F004BA9DE
/*
Reminders
Controller.swift */
,
9639526A1EC3882F004BA9DE
/*
Event
.swift */
,
9639526B1EC3882F004BA9DE
/*
Event
Controller.swift */
,
);
name
=
Event
;
path
=
Events
;
sourceTree
=
"<group>"
;
};
...
...
@@ -508,7 +509,7 @@
96328B9A1E05C135009A4C90
/* Data */
,
96BCB80B1CB410CC00C806FE
/* Device */
,
96230AB61D6A51FD00AF47DC
/* Divider */
,
963952691EC3882F004BA9DE
/* Event
s
*/
,
963952691EC3882F004BA9DE
/* Event */
,
96BCB80A1CB410A100C806FE
/* Extension */
,
963FBF021D6696D0008F8512
/* FABMenu */
,
96BCB8071CB4101C00C806FE
/* Font */
,
...
...
@@ -935,11 +936,11 @@
965E81191DD4D5C800D61E4B
/* SnackbarController.swift in Sources */
,
965E811A1DD4D5C800D61E4B
/* StatusBarController.swift in Sources */
,
965E811B1DD4D5C800D61E4B
/* Switch.swift in Sources */
,
9639526C1EC3882F004BA9DE
/*
Reminders
.swift in Sources */
,
9639526C1EC3882F004BA9DE
/*
Event
.swift in Sources */
,
965E811C1DD4D5C800D61E4B
/* TabBar.swift in Sources */
,
965E811D1DD4D5C800D61E4B
/* TableViewCell.swift in Sources */
,
965E811E1DD4D5C800D61E4B
/* TextField.swift in Sources */
,
9639526D1EC3882F004BA9DE
/*
Reminders
Controller.swift in Sources */
,
9639526D1EC3882F004BA9DE
/*
Event
Controller.swift in Sources */
,
965E811F1DD4D5C800D61E4B
/* ErrorTextField.swift in Sources */
,
965E81211DD4D5C800D61E4B
/* TextStorage.swift in Sources */
,
965E81221DD4D5C800D61E4B
/* TextView.swift in Sources */
,
...
...
Sources/iOS/Events/
Reminders
.swift
→
Sources/iOS/Events/
Event
.swift
View file @
ff3a3716
...
...
@@ -30,96 +30,96 @@
import
EventKit
@objc(
Reminders
AuthorizationStatus)
public
enum
Reminders
AuthorizationStatus
:
Int
{
@objc(
EventReminder
AuthorizationStatus)
public
enum
EventReminder
AuthorizationStatus
:
Int
{
case
authorized
case
denied
}
@objc(
Reminders
Priority)
public
enum
Reminders
Priority
:
Int
{
@objc(
EventReminder
Priority)
public
enum
EventReminder
Priority
:
Int
{
case
none
case
high
=
1
case
medium
=
5
case
low
=
9
}
@objc(
Reminders
Delegate)
public
protocol
Reminders
Delegate
{
@objc(
Event
Delegate)
public
protocol
Event
Delegate
{
/**
A delegation method that is executed when the Reminders status is updated.
- Parameter
reminders
: A reference to the Reminders.
- Parameter status: A reference to the ReminderAuthorizationStatus.
- Parameter
event
: A reference to the Reminders.
- Parameter status: A reference to the
Event
ReminderAuthorizationStatus.
*/
@objc
optional
func
reminders
(
reminders
:
Reminders
,
status
:
Reminders
AuthorizationStatus
)
optional
func
event
(
event
:
Event
,
status
:
EventReminder
AuthorizationStatus
)
/**
A delegation method that is executed when
reminders
authorization is authorized.
- Parameter
reminders
: A reference to the Reminders.
A delegation method that is executed when
event
authorization is authorized.
- Parameter
event
: A reference to the Reminders.
*/
@objc
optional
func
reminders
(
authorized
reminders
:
Reminders
)
optional
func
event
(
authorized
event
:
Event
)
/**
A delegation method that is executed when
reminders
authorization is denied.
- Parameter
reminders
: A reference to the Reminders.
A delegation method that is executed when
event
authorization is denied.
- Parameter
event
: A reference to the Reminders.
*/
@objc
optional
func
reminders
(
denied
reminders
:
Reminders
)
optional
func
event
(
denied
event
:
Event
)
/**
A delegation method that is executed when a new calendar is created
- Parameter
reminders
: A reference to the Reminders.
- Parameter
event
: A reference to the Reminders.
- Parameter calendar: An optional reference to the calendar created.
- Parameter error: An optional error if the calendar failed to be created.
*/
@objc
optional
func
reminders
(
reminders
:
Reminders
,
createdCalendar
calendar
:
EKCalendar
?,
error
:
Error
?)
optional
func
event
(
event
:
Event
,
createdCalendar
calendar
:
EKCalendar
?,
error
:
Error
?)
/**
A delegation method that is executed when a new calendar is created.
- Parameter
reminders: A reference to the Reminder
.
- Parameter
event: A reference to the Reminders
.
- Parameter removed calendar: A reference to the calendar created.
- Parameter error: An optional error if the calendar failed to be removed.
*/
@objc
optional
func
reminders
(
reminders
:
Reminders
,
removedCalendar
calendar
:
EKCalendar
,
error
:
Error
?)
optional
func
event
(
event
:
Event
,
removedCalendar
calendar
:
EKCalendar
,
error
:
Error
?)
/**
A delegation method that is executed when a new reminder is created.
- Parameter
reminders
: A reference to the Reminders.
- Parameter
event
: A reference to the Reminders.
- Parameter calendar: An optional reference to the reminder created.
- Parameter error: An optional error if the reminder failed to be created.
*/
@objc
optional
func
reminders
(
reminders
:
Reminders
,
createdReminder
reminder
:
EKReminder
?,
error
:
Error
?)
optional
func
event
(
event
:
Event
,
createdReminders
reminder
:
EKReminder
?,
error
:
Error
?)
/**
A delegation method that is executed when a new Reminders list is created
- Parameter
reminders: A reference to the Reminder
.
- Parameter
event: A reference to the Reminders
.
- Parameter deleted: A boolean describing if the operation succeeded or not.
- Parameter error: An optional error if the reminder failed to be removed.
*/
@objc
optional
func
reminders
(
reminders
:
Reminders
,
removedReminder
reminder
:
EKReminder
,
error
:
Error
?)
optional
func
event
(
event
:
Event
,
removedReminders
reminder
:
EKReminder
,
error
:
Error
?)
}
@objc(
Reminders
)
open
class
Reminders
:
NSObject
{
@objc(
Event
)
open
class
Event
:
NSObject
{
/// A reference to the eventStore.
fileprivate
let
eventS
tore
=
EKEventStore
()
fileprivate
let
s
tore
=
EKEventStore
()
/// The current ReminderAuthorizationStatus.
open
var
authorizationStatus
:
Reminders
AuthorizationStatus
{
/// The current
Event
ReminderAuthorizationStatus.
open
var
authorizationStatus
:
EventReminder
AuthorizationStatus
{
return
.
authorized
==
EKEventStore
.
authorizationStatus
(
for
:
.
reminder
)
?
.
authorized
:
.
denied
}
/// A reference to a RemindersDelegate.
open
weak
var
delegate
:
Reminders
Delegate
?
open
weak
var
delegate
:
Event
Delegate
?
open
func
request
Authorization
(
_
completion
:
((
Reminders
AuthorizationStatus
)
->
Void
)?
=
nil
)
{
eventS
tore
.
requestAccess
(
to
:
.
reminder
)
{
[
weak
self
,
completion
=
completion
]
(
isAuthorized
,
_
)
in
open
func
request
RemindersAuthorization
(
_
completion
:
((
EventReminder
AuthorizationStatus
)
->
Void
)?
=
nil
)
{
s
tore
.
requestAccess
(
to
:
.
reminder
)
{
[
weak
self
,
completion
=
completion
]
(
isAuthorized
,
_
)
in
DispatchQueue
.
main
.
async
{
[
weak
self
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
return
...
...
@@ -127,63 +127,63 @@ open class Reminders: NSObject {
guard
isAuthorized
else
{
completion
?(
.
denied
)
s
.
delegate
?
.
reminders
?(
reminders
:
s
,
status
:
.
denied
)
s
.
delegate
?
.
reminders
?(
denied
:
s
)
s
.
delegate
?
.
event
?(
event
:
s
,
status
:
.
denied
)
s
.
delegate
?
.
event
?(
denied
:
s
)
return
}
completion
?(
.
authorized
)
s
.
delegate
?
.
reminders
?(
reminders
:
s
,
status
:
.
authorized
)
s
.
delegate
?
.
reminders
?(
authorized
:
s
)
s
.
delegate
?
.
event
?(
event
:
s
,
status
:
.
authorized
)
s
.
delegate
?
.
event
?(
authorized
:
s
)
}
}
}
}
extension
Reminders
{
extension
Event
{
/**
Creates a predicate for the
reminders
Array of calendars.
Creates a predicate for the
event
Array of calendars.
- Parameter in calendars: An optional Array of EKCalendars.
*/
open
func
predicateForReminders
(
in
calendars
:
[
EKCalendar
])
->
NSPredicate
{
return
eventS
tore
.
predicateForReminders
(
in
:
calendars
)
return
s
tore
.
predicateForReminders
(
in
:
calendars
)
}
/**
Creates a predicate for the
reminders
Array of calendars that
Creates a predicate for the
event
Array of calendars that
are incomplete and have a given start and end date.
- Parameter starting: A Date.
- Parameter ending: A Date.
- Parameter calendars: An optional Array of [EKCalendar].
*/
open
func
predicateForIncompleteReminders
(
starting
:
Date
,
ending
:
Date
,
calendars
:
[
EKCalendar
]?
=
nil
)
->
NSPredicate
{
return
eventS
tore
.
predicateForIncompleteReminders
(
withDueDateStarting
:
starting
,
ending
:
ending
,
calendars
:
calendars
)
return
s
tore
.
predicateForIncompleteReminders
(
withDueDateStarting
:
starting
,
ending
:
ending
,
calendars
:
calendars
)
}
/**
Creates a predicate for the
reminders
Array of calendars that
Creates a predicate for the
event
Array of calendars that
are completed and have a given start and end date.
- Parameter starting: A Date.
- Parameter ending: A Date.
- Parameter calendars: An optional Array of [EKCalendar].
*/
open
func
predicateForCompletedReminders
(
starting
:
Date
,
ending
:
Date
,
calendars
:
[
EKCalendar
]?
=
nil
)
->
NSPredicate
{
return
eventS
tore
.
predicateForCompletedReminders
(
withCompletionDateStarting
:
starting
,
ending
:
ending
,
calendars
:
calendars
)
return
s
tore
.
predicateForCompletedReminders
(
withCompletionDateStarting
:
starting
,
ending
:
ending
,
calendars
:
calendars
)
}
}
extension
Reminders
{
extension
Event
{
/**
A method for retrieving reminder calendars in alphabetical order.
- Parameter completion: A completion call back
*/
open
func
calendars
(
completion
:
@escaping
([
EKCalendar
])
->
Void
)
{
open
func
calendars
ForReminders
(
completion
:
@escaping
([
EKCalendar
])
->
Void
)
{
DispatchQueue
.
global
(
qos
:
.
default
)
.
async
{
[
weak
self
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
return
}
let
calendar
=
s
.
eventS
tore
.
calendars
(
for
:
.
reminder
)
.
sorted
(
by
:
{
(
a
,
b
)
->
Bool
in
let
calendar
=
s
.
s
tore
.
calendars
(
for
:
.
reminder
)
.
sorted
(
by
:
{
(
a
,
b
)
->
Bool
in
return
a
.
title
<
b
.
title
})
...
...
@@ -197,22 +197,22 @@ extension Reminders {
A method for retrieving events with a predicate in date sorted order.
- Parameter predicate: A NSPredicate.
- Parameter completion: A completion call back.
- Returns: A fetch
reminders
request identifier.
- Returns: A fetch
event
request identifier.
*/
@discardableResult
open
func
reminders
(
matching
predicate
:
NSPredicate
,
completion
:
@escaping
([
EKReminder
])
->
Void
)
->
Any
{
return
eventStore
.
fetchReminders
(
matching
:
predicate
,
completion
:
{
[
completion
=
completion
]
(
reminders
)
in
return
store
.
fetchReminders
(
matching
:
predicate
,
completion
:
{
[
completion
=
completion
]
(
event
)
in
DispatchQueue
.
main
.
async
{
[
completion
=
completion
]
in
completion
(
reminders
??
[])
completion
(
event
??
[])
}
})
}
/**
Fetch all the
reminders
in a given Array of calendars.
Fetch all the
event
in a given Array of calendars.
- Parameter in calendars: An Array of EKCalendars.
- Parameter completion: A completion call back.
- Returns: A fetch
reminders
request identifier.
- Returns: A fetch
event
request identifier.
*/
@discardableResult
open
func
reminders
(
in
calendars
:
[
EKCalendar
],
completion
:
@escaping
([
EKReminder
])
->
Void
)
->
Any
{
...
...
@@ -220,64 +220,64 @@ extension Reminders {
}
/**
Fetch all the
reminders
in a given Array of calendars that
Fetch all the
event
in a given Array of calendars that
are incomplete, given a start and end date.
- Parameter starting: A Date.
- Parameter ending: A Date.
- Parameter calendars: An Array of EKCalendars.
- Parameter completion: A completion call back.
- Returns: A fetch
reminders
request identifier.
- Returns: A fetch
event
request identifier.
*/
@discardableResult
open
func
incomplete
(
starting
:
Date
,
ending
:
Date
,
calendars
:
[
EKCalendar
]?
=
nil
,
completion
:
@escaping
([
EKReminder
])
->
Void
)
->
Any
{
open
func
incomplete
Reminders
(
starting
:
Date
,
ending
:
Date
,
calendars
:
[
EKCalendar
]?
=
nil
,
completion
:
@escaping
([
EKReminder
])
->
Void
)
->
Any
{
return
reminders
(
matching
:
predicateForIncompleteReminders
(
starting
:
starting
,
ending
:
ending
,
calendars
:
calendars
),
completion
:
completion
)
}
/**
Fetch all the
reminders
in a given Array of calendars that
Fetch all the
event
in a given Array of calendars that
are completed, given a start and end date.
- Parameter starting: A Date.
- Parameter ending: A Date.
- Parameter calendars: An Array of EKCalendars.
- Parameter completion: A completion call back.
- Returns: A fetch
reminders
request identifier.
- Returns: A fetch
event
request identifier.
*/
@discardableResult
open
func
completed
(
starting
:
Date
,
ending
:
Date
,
calendars
:
[
EKCalendar
]?
=
nil
,
completion
:
@escaping
([
EKReminder
])
->
Void
)
->
Any
{
open
func
completed
Reminders
(
starting
:
Date
,
ending
:
Date
,
calendars
:
[
EKCalendar
]?
=
nil
,
completion
:
@escaping
([
EKReminder
])
->
Void
)
->
Any
{
return
reminders
(
matching
:
predicateForCompletedReminders
(
starting
:
starting
,
ending
:
ending
,
calendars
:
calendars
),
completion
:
completion
)
}
/**
Cancels an active
reminders
request.
Cancels an active
event
request.
- Parameter _ identifier: An identifier.
*/
open
func
cancel
(
_
identifier
:
Any
)
{
eventS
tore
.
cancelFetchRequest
(
identifier
)
s
tore
.
cancelFetchRequest
(
identifier
)
}
}
extension
Reminders
{
extension
Event
{
/**
A method for creating new Reminder calendar.
A method for creating new Reminder
s
calendar.
- Parameter calendar title: the name of the list.
- Parameter completion: An optional completion call back.
*/
open
func
create
(
calendar
title
:
String
,
completion
:
((
EKCalendar
?,
Error
?)
->
Void
)?
=
nil
)
{
open
func
create
CalendarForReminders
(
title
:
String
,
completion
:
((
EKCalendar
?,
Error
?)
->
Void
)?
=
nil
)
{
DispatchQueue
.
global
(
qos
:
.
default
)
.
async
{
[
weak
self
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
return
}
let
calendar
=
EKCalendar
(
for
:
.
reminder
,
eventStore
:
s
.
eventS
tore
)
let
calendar
=
EKCalendar
(
for
:
.
reminder
,
eventStore
:
s
.
s
tore
)
calendar
.
title
=
title
calendar
.
source
=
s
.
eventS
tore
.
defaultCalendarForNewReminders
()
.
source
calendar
.
source
=
s
.
s
tore
.
defaultCalendarForNewReminders
()
.
source
var
success
=
false
var
error
:
Error
?
do
{
try
s
.
eventS
tore
.
saveCalendar
(
calendar
,
commit
:
true
)
try
s
.
s
tore
.
saveCalendar
(
calendar
,
commit
:
true
)
success
=
true
}
catch
let
e
{
error
=
e
...
...
@@ -289,7 +289,7 @@ extension Reminders {
}
completion
?(
success
?
calendar
:
nil
,
error
)
s
.
delegate
?
.
reminders
?(
reminders
:
s
,
createdCalendar
:
success
?
calendar
:
nil
,
error
:
error
)
s
.
delegate
?
.
event
?(
event
:
s
,
createdCalendar
:
success
?
calendar
:
nil
,
error
:
error
)
}
}
}
...
...
@@ -299,7 +299,7 @@ extension Reminders {
- Parameter calendar identifier: The EKCalendar identifier String.
- Parameter completion: An optional completion call back.
*/
open
func
remove
(
calendar
identifier
:
String
,
completion
:
((
Bool
,
Error
?)
->
Void
)?
=
nil
)
{
open
func
remove
Calendar
(
identifier
:
String
,
completion
:
((
Bool
,
Error
?)
->
Void
)?
=
nil
)
{
DispatchQueue
.
global
(
qos
:
.
default
)
.
async
{
[
weak
self
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
return
...
...
@@ -308,18 +308,18 @@ extension Reminders {
var
success
=
false
var
error
:
Error
?
guard
let
calendar
=
s
.
eventS
tore
.
calendar
(
withIdentifier
:
identifier
)
else
{
guard
let
calendar
=
s
.
s
tore
.
calendar
(
withIdentifier
:
identifier
)
else
{
var
userInfo
=
[
String
:
Any
]()
userInfo
[
NSLocalizedDescriptionKey
]
=
"[Material Error: Cannot fix remove calendar with identifier
\(
identifier
)
.]"
userInfo
[
NSLocalizedFailureReasonErrorKey
]
=
"[Material Error: Cannot fix remove calendar with identifier
\(
identifier
)
.]"
error
=
NSError
(
domain
:
"com.cosmicmind.material.
reminders
"
,
code
:
0001
,
userInfo
:
userInfo
)
error
=
NSError
(
domain
:
"com.cosmicmind.material.
event
"
,
code
:
0001
,
userInfo
:
userInfo
)
completion
?(
success
,
error
)
return
}
do
{
try
s
.
eventS
tore
.
removeCalendar
(
calendar
,
commit
:
true
)
try
s
.
s
tore
.
removeCalendar
(
calendar
,
commit
:
true
)
success
=
true
}
catch
let
e
{
error
=
e
...
...
@@ -331,38 +331,38 @@ extension Reminders {
}
completion
?(
success
,
error
)
s
.
delegate
?
.
reminders
?(
reminders
:
s
,
removedCalendar
:
calendar
,
error
:
error
)
s
.
delegate
?
.
event
?(
event
:
s
,
removedCalendar
:
calendar
,
error
:
error
)
}
}
}
}
extension
Reminders
{
extension
Event
{
// FIX ME: Should we use the calendar identifier here instead of the title for finding the right cal?
/**
A method for adding a new reminder to an optionally existing list.
if the list does not exist it will be added to the default
reminders
list.
if the list does not exist it will be added to the default
event
list.
- Parameter completion: optional A completion call back
*/
open
func
create
(
reminder
title
:
String
,
calendar
:
EKCalendar
,
startDateComponents
:
DateComponents
?
=
nil
,
dueDateComponents
:
DateComponents
?
=
nil
,
priority
:
Reminders
Priority
?
=
.
none
,
notes
:
String
?,
completion
:
((
EKReminder
?,
Error
?)
->
Void
)?
=
nil
)
{
open
func
create
Reminder
(
title
:
String
,
calendar
:
EKCalendar
,
startDateComponents
:
DateComponents
?
=
nil
,
dueDateComponents
:
DateComponents
?
=
nil
,
priority
:
EventReminder
Priority
?
=
.
none
,
notes
:
String
?,
completion
:
((
EKReminder
?,
Error
?)
->
Void
)?
=
nil
)
{
DispatchQueue
.
global
(
qos
:
.
default
)
.
async
{
[
weak
self
,
calendar
=
calendar
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
return
}
let
reminder
=
EKReminder
(
eventStore
:
s
.
eventS
tore
)
let
reminder
=
EKReminder
(
eventStore
:
s
.
s
tore
)
reminder
.
title
=
title
reminder
.
calendar
=
calendar
reminder
.
startDateComponents
=
startDateComponents
reminder
.
dueDateComponents
=
dueDateComponents
reminder
.
priority
=
priority
?
.
rawValue
??
Reminders
Priority
.
none
.
rawValue
reminder
.
priority
=
priority
?
.
rawValue
??
EventReminder
Priority
.
none
.
rawValue
reminder
.
notes
=
notes
var
success
=
false
var
error
:
Error
?
do
{
try
s
.
eventS
tore
.
save
(
reminder
,
commit
:
true
)
try
s
.
s
tore
.
save
(
reminder
,
commit
:
true
)
success
=
true
}
catch
let
e
{
error
=
e
...
...
@@ -374,17 +374,17 @@ extension Reminders {
}
completion
?(
success
?
reminder
:
nil
,
error
)
s
.
delegate
?
.
reminders
?(
reminders
:
s
,
createdReminder
:
success
?
reminder
:
nil
,
error
:
error
)
s
.
delegate
?
.
event
?(
event
:
s
,
createdReminders
:
success
?
reminder
:
nil
,
error
:
error
)
}
}
}
/**
A method for removing existing reminder,
- Parameter reminder identifier: The EKReminder identifier String.
- Parameter reminder identifier: The EKReminder
s
identifier String.
- Parameter completion: An optional completion call back.
*/
open
func
remove
(
reminder
identifier
:
String
,
completion
:
((
Bool
,
Error
?)
->
Void
)?
=
nil
)
{
open
func
remove
Reminder
(
identifier
:
String
,
completion
:
((
Bool
,
Error
?)
->
Void
)?
=
nil
)
{
DispatchQueue
.
global
(
qos
:
.
default
)
.
async
{
[
weak
self
,
completion
=
completion
]
in
guard
let
s
=
self
else
{
return
...
...
@@ -393,18 +393,18 @@ extension Reminders {
var
success
=
false
var
error
:
Error
?
guard
let
reminder
=
s
.
eventS
tore
.
calendarItem
(
withIdentifier
:
identifier
)
as?
EKReminder
else
{
guard
let
reminder
=
s
.
s
tore
.
calendarItem
(
withIdentifier
:
identifier
)
as?
EKReminder
else
{
var
userInfo
=
[
String
:
Any
]()
userInfo
[
NSLocalizedDescriptionKey
]
=
"[Material Error: Cannot fix remove calendar with identifier
\(
identifier
)
.]"
userInfo
[
NSLocalizedFailureReasonErrorKey
]
=
"[Material Error: Cannot fix remove calendar with identifier
\(
identifier
)
.]"
error
=
NSError
(
domain
:
"com.cosmicmind.material.
reminders
"
,
code
:
0001
,
userInfo
:
userInfo
)
error
=
NSError
(
domain
:
"com.cosmicmind.material.
event
"
,
code
:
0001
,
userInfo
:
userInfo
)
completion
?(
success
,
error
)
return
}
do
{
try
s
.
eventS
tore
.
remove
(
reminder
,
commit
:
true
)
try
s
.
s
tore
.
remove
(
reminder
,
commit
:
true
)
success
=
true
}
catch
let
e
{
error
=
e
...
...
@@ -416,7 +416,7 @@ extension Reminders {
}
completion
?(
success
,
error
)
s
.
delegate
?
.
reminders
?(
reminders
:
s
,
removedReminder
:
reminder
,
error
:
error
)
s
.
delegate
?
.
event
?(
event
:
s
,
removedReminders
:
reminder
,
error
:
error
)
}
}
}
...
...
Sources/iOS/Events/
Reminders
Controller.swift
→
Sources/iOS/Events/
Event
Controller.swift
View file @
ff3a3716
...
...
@@ -32,15 +32,15 @@ import UIKit
extension
UIViewController
{
/**
A convenience property that provides access to the
Reminders
Controller.
This is the recommended method of accessing the
Reminders
Controller
A convenience property that provides access to the
Event
Controller.
This is the recommended method of accessing the
Event
Controller
through child UIViewControllers.
*/
public
var
remindersController
:
Reminders
Controller
?
{
public
var
eventController
:
Event
Controller
?
{
var
viewController
:
UIViewController
?
=
self
while
nil
!=
viewController
{
if
viewController
is
Reminders
Controller
{
return
viewController
as?
Reminders
Controller
if
viewController
is
Event
Controller
{
return
viewController
as?
Event
Controller
}
viewController
=
viewController
?
.
parent
}
...
...
@@ -48,9 +48,9 @@ extension UIViewController {
}
}
open
class
Reminders
Controller
:
UIViewController
{
/// A reference to a
Reminder
.
open
let
reminders
=
Reminders
()
open
class
Event
Controller
:
UIViewController
{
/// A reference to a
n Event instance
.
open
let
event
=
Event
()
open
override
func
viewDidLoad
()
{
super
.
viewDidLoad
()
...
...
@@ -68,15 +68,15 @@ open class RemindersController: UIViewController {
view
.
clipsToBounds
=
true
view
.
backgroundColor
=
.
white
view
.
contentScaleFactor
=
Screen
.
scale
prepare
Reminders
()
prepare
Event
()
}
}
extension
Reminders
Controller
{
/// Prepares the
reminders
.
fileprivate
func
prepare
Reminders
()
{
reminders
.
delegate
=
self
extension
Event
Controller
{
/// Prepares the
event instance
.
fileprivate
func
prepare
Event
()
{
event
.
delegate
=
self
}
}
extension
RemindersController
:
Reminders
Delegate
{}
extension
EventController
:
Event
Delegate
{}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment