-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathImageAction.swift
More file actions
executable file
·66 lines (51 loc) · 1.82 KB
/
ImageAction.swift
File metadata and controls
executable file
·66 lines (51 loc) · 1.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//
// ImageAction.swift
// ImagePickerSheet
//
// Created by Laurin Brandner on 24/05/15.
// Copyright (c) 2015 Laurin Brandner. All rights reserved.
//
import Foundation
public enum ImageActionStyle {
case Default
case Cancel
}
public typealias Title = Int -> String
public class ImageAction {
public typealias Handler = (ImageAction) -> ()
public typealias SecondaryHandler = (ImageAction, Int) -> ()
let title: String
let secondaryTitle: Title
let style: ImageActionStyle
let handler: Handler?
let secondaryHandler: SecondaryHandler?
public convenience init(title: String, secondaryTitle: String? = nil, style: ImageActionStyle = .Default, handler: Handler? = nil, secondaryHandler: SecondaryHandler? = nil) {
self.init(title: title, secondaryTitle: secondaryTitle.map { string in { _ in string }}, style: style, handler: handler, secondaryHandler: secondaryHandler)
}
public init(title: String, secondaryTitle: Title?, style: ImageActionStyle = .Default, handler: Handler? = nil, var secondaryHandler: SecondaryHandler? = nil) {
if let handler = handler where secondaryTitle == nil && secondaryHandler == nil {
secondaryHandler = { action, _ in
handler(action)
}
}
self.title = title
self.secondaryTitle = secondaryTitle ?? { _ in title }
self.style = style
self.handler = handler
self.secondaryHandler = secondaryHandler
}
func handle(numberOfPhotos: Int = 0) {
if numberOfPhotos > 0 {
secondaryHandler?(self, numberOfPhotos)
}
else {
handler?(self)
}
}
}
func ?? (left: Title?, right: Title) -> Title {
if let left = left {
return left
}
return right
}