@@ -56,47 +56,41 @@ final class AddNoteViewController: UIViewController {
5656
5757 private lazy var toolsBar : UIToolbar = {
5858 let bar = UIToolbar ( )
59- let button1 = UIButton ( type: . custom )
60- button1. setImage ( UIImage ( named: " linkkey.png " ) , for: . normal )
61- button1. addTarget ( self , action: #selector( addLinkMarkup) , for: . touchUpInside)
62- button1. frame = CGRect ( x: 0 , y: 0 , width: 53 , height: 51 )
63- button1. bounds = CGRect ( x: 0 , y: 0 , width: 53 , height: 51 )
64- let urlButton = UIBarButtonItem ( customView: button1 )
65- let button2 = UIButton ( type: . custom )
66- button2. setImage ( UIImage ( named: " datepick.png " ) , for: . normal )
67- button2. addTarget ( self , action: #selector( setDatePickerView) , for: . touchUpInside)
68- button2. frame = CGRect ( x: 0 , y: 0 , width: 53 , height: 51 )
69- button2. bounds = CGRect ( x: 0 , y: 0 , width: 53 , height: 51 )
70- let dateButton = UIBarButtonItem ( customView: button2 )
71- let spacer = UIBarButtonItem ( barButtonSystemItem: . flexibleSpace, target: nil , action: nil )
72- bar. items = [ urlButton, dateButton, spacer ]
59+ bar. items = [
60+ UIBarButtonItem ( title: " 🔗 " , style: . plain, target: self , action: #selector( addLinkMarkup) ) ,
61+ UIBarButtonItem ( title: " 📅 " , style: . plain, target: self , action: #selector( setDatePickerView) ) ,
62+ UIBarButtonItem ( barButtonSystemItem: . flexibleSpace, target: nil , action: nil )
63+ ]
7364 bar. sizeToFit ( )
7465 return bar
7566 } ( )
7667
7768 @objc func addLinkMarkup( ) {
78- guard self . textView. text != nil else { return } // If no selected text, ignore. Consider popup?
7969 if let range = self . textView. selectedTextRange, !range. isEmpty {
80- let selectedText = self . textView. text ( in: range )
81- self . textView. replace ( range, withText: " [[ \( selectedText!) ][]] " )
82- let newCursor = self . textView. position ( from: range. end, offset: 4 ) !
83- self . textView. selectedTextRange = self . textView. textRange ( from: newCursor, to: newCursor)
70+ guard let selectedText = self . textView. text ( in: range ) else { return }
71+ self . textView. replace ( range, withText: " [[ \( selectedText) ][]] " )
72+ if let newCursor = self . textView. position ( from: range. end, offset: 4 ) {
73+ self . textView. selectedTextRange = self . textView. textRange ( from: newCursor, to: newCursor)
74+ }
8475 }
8576 }
8677
87- let datePicker : UIDatePicker = {
88- let picker = UIDatePicker ( frame: CGRect ( x: 0 , y: 0 , width: UIScreen . main. bounds. width, height: 216 ) )
89- picker. datePickerMode = . dateAndTime
90- return picker
91- } ( )
78+ let datePicker = UIDatePicker ( )
79+
80+ enum DateType : String {
81+ case schedule = " Schd "
82+ case deadline = " Dead "
83+ case agenda = " Agenda "
84+ case plain = " Plain "
85+ }
9286
9387 private lazy var datePickBar : UIToolbar = {
9488 let bar = UIToolbar ( )
9589 let cancelButton = UIBarButtonItem ( title: " Cancel " , style: . plain, target: self , action: #selector( setDefaultInputView) )
96- let scheduleButton = UIBarButtonItem ( title: " Schd " , style: . plain, target: self , action: #selector( insertDateSchedule ) )
97- let deadlineButton = UIBarButtonItem ( title: " Dead " , style: . plain, target: self , action: #selector( insertDateDeadline ) )
98- let agendaButton = UIBarButtonItem ( title: " Agenda " , style: . plain, target: self , action: #selector( insertDateAgenda ) )
99- let plainButton = UIBarButtonItem ( title: " Plain " , style: . plain, target: self , action: #selector( insertDatePlain ) )
90+ let scheduleButton = UIBarButtonItem ( title: DateType . schedule . rawValue , style: . plain, target: self , action: #selector( insertDate ( _ : ) ) )
91+ let deadlineButton = UIBarButtonItem ( title: DateType . deadline . rawValue , style: . plain, target: self , action: #selector( insertDate ( _ : ) ) )
92+ let agendaButton = UIBarButtonItem ( title: DateType . agenda . rawValue , style: . plain, target: self , action: #selector( insertDate ( _ : ) ) )
93+ let plainButton = UIBarButtonItem ( title: DateType . plain . rawValue , style: . plain, target: self , action: #selector( insertDate ( _ : ) ) )
10094 let spacer = UIBarButtonItem ( barButtonSystemItem: . flexibleSpace, target: nil , action: nil )
10195 bar. items = [ scheduleButton, deadlineButton, agendaButton, plainButton, spacer, cancelButton ]
10296 bar. sizeToFit ( )
@@ -106,40 +100,29 @@ final class AddNoteViewController: UIViewController {
106100 private func datePicked( ) -> String {
107101 let dateFormatter = DateFormatter ( )
108102 dateFormatter. dateFormat = " YYYY-MM-dd E hh:mm "
109- //dateFormatter.formatOptions = [.withTime]
110103 return dateFormatter. string ( from: self . datePicker. date )
111104 }
112105
113106 private func replaceSelected( with newString: String ) {
114- print ( " replaceSelected " )
115- if self . textView. text != nil {
116- if let range = self . textView. selectedTextRange {
117- self . textView. replace ( range, withText: newString )
118- }
119- }
120- }
121-
122- @objc func insertDateSchedule( ) {
123- let date = datePicked ( )
124- replaceSelected ( with: " SCHEDULED: < \( date) > " )
125- self . setDefaultInputView ( )
126- }
127-
128- @objc func insertDateDeadline( ) {
129- let date = datePicked ( )
130- replaceSelected ( with: " DEADLINE: < \( date) > " )
131- self . setDefaultInputView ( )
107+ guard let range = self . textView. selectedTextRange else { return }
108+ self . textView. replace ( range, withText: newString )
132109 }
133110
134- @objc func insertDateAgenda( ) {
111+ @objc private func insertDate( _ sender: UIBarButtonItem ) {
112+ guard let title = sender. title else { return }
135113 let date = datePicked ( )
136- replaceSelected ( with: " < \( date) > " )
137- self . setDefaultInputView ( )
138- }
139-
140- @objc func insertDatePlain( ) {
141- let date = datePicked ( )
142- replaceSelected ( with: " [ \( date) ] " )
114+ switch DateType ( rawValue: title) {
115+ case . agenda:
116+ replaceSelected ( with: " < \( date) > " )
117+ case . deadline:
118+ replaceSelected ( with: " DEADLINE: < \( date) > " )
119+ case . plain:
120+ replaceSelected ( with: " [ \( date) ] " )
121+ case . schedule:
122+ replaceSelected ( with: " SCHEDULED: < \( date) > " )
123+ case . none:
124+ break
125+ }
143126 self . setDefaultInputView ( )
144127 }
145128
0 commit comments