Skip to content

Commit 741ce01

Browse files
author
Douglas Mennella
committed
Incorporate @dive's suggestions
Prefer guard for style consistency
1 parent c6a50bc commit 741ce01

4 files changed

Lines changed: 38 additions & 63 deletions

File tree

Classes/Capture/AddNoteViewController.swift

Lines changed: 38 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -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

MobileOrg.xcodeproj/project.pbxproj

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,6 @@
124124
83B1312C234AD16D0043D955 /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83B1312B234AD16D0043D955 /* CloudKit.framework */; };
125125
CE67A65B23A5CDD900B2B0BD /* SwiftyDropbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE67A65923A5CB6500B2B0BD /* SwiftyDropbox.framework */; };
126126
CE67A65F23A5CE1800B2B0BD /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE67A65E23A5CE1800B2B0BD /* Alamofire.framework */; };
127-
F02A539B245F8B1E005A1948 /* linkkey@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F02A5399245F8B1E005A1948 /* linkkey@2x.png */; };
128-
F02A539C245F8B1E005A1948 /* datepick@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F02A539A245F8B1E005A1948 /* datepick@2x.png */; };
129127
/* End PBXBuildFile section */
130128

131129
/* Begin PBXContainerItemProxy section */
@@ -306,8 +304,6 @@
306304
CECD59F923B8D6C200348D89 /* MobileOrg-Shared.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = "MobileOrg-Shared.xcconfig"; path = "Configuration/MobileOrg-Shared.xcconfig"; sourceTree = "<group>"; };
307305
CECD59FA23B8D6C200348D89 /* MobileOrg-Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = "MobileOrg-Debug.xcconfig"; path = "Configuration/MobileOrg-Debug.xcconfig"; sourceTree = "<group>"; };
308306
CECD59FB23B8D6C200348D89 /* MobileOrg-AppStore.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = "MobileOrg-AppStore.xcconfig"; path = "Configuration/MobileOrg-AppStore.xcconfig"; sourceTree = "<group>"; };
309-
F02A5399245F8B1E005A1948 /* linkkey@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "linkkey@2x.png"; sourceTree = "<group>"; };
310-
F02A539A245F8B1E005A1948 /* datepick@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "datepick@2x.png"; sourceTree = "<group>"; };
311307
/* End PBXFileReference section */
312308

313309
/* Begin PBXFrameworksBuildPhase section */
@@ -686,8 +682,6 @@
686682
79BA55681073A7DF00D67917 /* Images */ = {
687683
isa = PBXGroup;
688684
children = (
689-
F02A539A245F8B1E005A1948 /* datepick@2x.png */,
690-
F02A5399245F8B1E005A1948 /* linkkey@2x.png */,
691685
79F87A9810854FEA00A54CA9 /* cant-sync-offline.png */,
692686
8322ED6B176AE93C008B37C7 /* cant-sync-offline@2x.png */,
693687
79F87A9910854FEA00A54CA9 /* please-configure.png */,
@@ -854,7 +848,6 @@
854848
buildActionMask = 2147483647;
855849
files = (
856850
28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */,
857-
F02A539B245F8B1E005A1948 /* linkkey@2x.png in Resources */,
858851
7998AE2410794DBF0000ED49 /* AlertTextField.png in Resources */,
859852
7998B06B1079847C0000ED49 /* back.png in Resources */,
860853
7998B06C1079847C0000ED49 /* capture.png in Resources */,
@@ -866,7 +859,6 @@
866859
7998B0711079847C0000ED49 /* forward.png in Resources */,
867860
7998B0721079847C0000ED49 /* home.png in Resources */,
868861
7998B0731079847C0000ED49 /* inbox.png in Resources */,
869-
F02A539C245F8B1E005A1948 /* datepick@2x.png in Resources */,
870862
7998B0741079847C0000ED49 /* noflag.png in Resources */,
871863
7998B0751079847C0000ED49 /* note_entry.png in Resources */,
872864
743C12F41DFED37F0051EC6F /* Images.xcassets in Resources */,

Resources/Images/datepick@2x.png

-2.45 KB
Binary file not shown.

Resources/Images/linkkey@2x.png

-3.61 KB
Binary file not shown.

0 commit comments

Comments
 (0)