@@ -7,12 +7,15 @@ import UIKit
7
7
class ResultDetailViewController : UIViewController {
8
8
private var tableView = UITableView ( )
9
9
private var mapView : MapView
10
+ private var feedbackButton : UIButton
10
11
11
12
var result : SearchResult
13
+ var searchEngine : SearchEngine
12
14
private var resultComponents : [ ( name: String , value: String ) ] = [ ]
13
15
14
- init ( result: SearchResult ) {
16
+ init ( result: SearchResult , searchEngine : SearchEngine ) {
15
17
self . result = result
18
+ self . searchEngine = searchEngine
16
19
self . resultComponents = result. toComponents ( )
17
20
18
21
let inset : CGFloat = 8
@@ -25,8 +28,36 @@ class ResultDetailViewController: UIViewController {
25
28
zoom: 15.5
26
29
) )
27
30
)
31
+ self . feedbackButton = UIButton ( )
32
+ feedbackButton. setTitle ( " Send feedback " , for: . normal)
33
+ feedbackButton. backgroundColor = . lightGray
28
34
29
35
super. init ( nibName: nil , bundle: nil )
36
+
37
+ feedbackButton. addTarget ( self , action: #selector( showFeedbackAlert) , for: . touchUpInside)
38
+ }
39
+
40
+ @objc func showFeedbackAlert( ) {
41
+ let alert = UIAlertController (
42
+ title: " Submit Feedback? " ,
43
+ message: nil ,
44
+ preferredStyle: . alert
45
+ )
46
+ let okAction = UIAlertAction ( title: " OK " , style: . default) { [ weak self] _ in
47
+ self ? . sendFeedback ( )
48
+ alert. dismiss ( animated: true )
49
+ }
50
+ alert. addAction ( okAction)
51
+ let cancelAction = UIAlertAction ( title: " Cancel " , style: . cancel) { _ in
52
+ alert. dismiss ( animated: true )
53
+ }
54
+ alert. addAction ( cancelAction)
55
+ present ( alert, animated: true , completion: nil )
56
+ }
57
+
58
+ func sendFeedback( ) {
59
+ let feedbackEvent = FeedbackEvent ( record: result, reason: FeedbackEvent . Reason. name. rawValue, text: nil )
60
+ try ? searchEngine. feedbackManager. sendEvent ( feedbackEvent)
30
61
}
31
62
32
63
@available ( * , unavailable)
@@ -39,8 +70,9 @@ class ResultDetailViewController: UIViewController {
39
70
40
71
tableView. dataSource = self
41
72
tableView. allowsSelection = false
73
+ view. backgroundColor = . systemBackground
42
74
43
- for child in [ tableView, mapView] {
75
+ for child in [ tableView, feedbackButton , mapView] {
44
76
child. translatesAutoresizingMaskIntoConstraints = false
45
77
view. addSubview ( child)
46
78
}
@@ -51,7 +83,12 @@ class ResultDetailViewController: UIViewController {
51
83
mapView. trailingAnchor. constraint ( equalTo: view. trailingAnchor) ,
52
84
mapView. heightAnchor. constraint ( equalTo: view. heightAnchor, multiplier: 0.4 ) ,
53
85
54
- tableView. topAnchor. constraint ( equalTo: mapView. bottomAnchor) ,
86
+ feedbackButton. heightAnchor. constraint ( equalToConstant: 44 ) ,
87
+ feedbackButton. leadingAnchor. constraint ( equalTo: view. leadingAnchor) ,
88
+ feedbackButton. trailingAnchor. constraint ( equalTo: view. trailingAnchor) ,
89
+ feedbackButton. topAnchor. constraint ( equalTo: mapView. bottomAnchor, constant: 20 ) ,
90
+
91
+ tableView. topAnchor. constraint ( equalTo: feedbackButton. bottomAnchor, constant: 20 ) ,
55
92
tableView. leadingAnchor. constraint ( equalTo: view. leadingAnchor) ,
56
93
tableView. trailingAnchor. constraint ( equalTo: view. trailingAnchor) ,
57
94
tableView. bottomAnchor. constraint ( equalTo: view. bottomAnchor) ,
0 commit comments