Make progress on CrashReportWindowController.

This commit is contained in:
Brent Simmons 2018-12-28 22:56:43 -08:00
parent 844a69446d
commit 1906dff715
2 changed files with 61 additions and 21 deletions

View File

@ -10,14 +10,6 @@ import Cocoa
final class CrashReportWindowController: NSWindowController { final class CrashReportWindowController: NSWindowController {
private var crashLog: CrashLog!
private static let windowName = "CrashReporterWindow"
convenience init(crashLog: CrashLog) {
self.init(windowNibName: CrashReportWindowController.windowName)
self.crashLog = crashLog
}
@IBOutlet var textView: NSTextView! { @IBOutlet var textView: NSTextView! {
didSet { didSet {
textView.font = NSFont.userFixedPitchFont(ofSize: 0.0) textView.font = NSFont.userFixedPitchFont(ofSize: 0.0)
@ -26,27 +18,60 @@ final class CrashReportWindowController: NSWindowController {
} }
} }
override func windowDidLoad() { @IBOutlet var sendCrashLogButton: NSButton!
super.windowDidLoad() @IBOutlet var dontSendButton: NSButton!
windowFrameAutosaveName = CrashReportWindowController.windowName
var testing = false // If true, crashLog wont actually be sent.
private var crashLog: CrashLog!
private var didSendCrashLog = false {
didSet {
sendCrashLogButton.isEnabled = !didSendCrashLog
dontSendButton.isEnabled = !didSendCrashLog
}
}
convenience init(crashLog: CrashLog) {
self.init(windowNibName: "CrashReporterWindow")
self.crashLog = crashLog
}
override func showWindow(_ sender: Any?) {
super.showWindow(sender)
window!.center()
window!.makeKeyAndOrderFront(sender)
} }
// MARK: - Actions // MARK: - Actions
@IBAction func sendCrashReport(_ sender: Any?) { @IBAction func sendCrashReport(_ sender: Any?) {
guard !didSendCrashLog else {
return
}
didSendCrashLog = true
if !testing {
CrashReporter.sendCrashLog(crashLog) CrashReporter.sendCrashLog(crashLog)
// TODO: some kind of acknowledgement }
showThanksSheet()
} }
@IBAction func cancel(_ sender: Any?) { @IBAction func dontSendCrashReport(_ sender: Any?) {
close() close()
} }
@IBAction func showPrivacyPolicy(_ sender: Any?) {
Browser.open(AppConstants.privacyPolicyURL, inBackground: false)
}
} }
private extension CrashReportWindowController { private extension CrashReportWindowController {
func showThanksSheet() {
guard let window = window else {
return
}
let alert = NSAlert()
alert.alertStyle = .informational
alert.messageText = NSLocalizedString("Crash Report Sent", comment: "Crash Report Window")
alert.informativeText = NSLocalizedString("Thank you! This helps us to know about crashing bugs, so we can fix them.", comment: "Crash Report Window")
alert.beginSheetModal(for: window)
}
} }

View File

@ -5,7 +5,13 @@
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
<customObject id="-2" userLabel="File's Owner"/> <customObject id="-2" userLabel="File's Owner" customClass="CrashReportWindowController" customModule="NetNewsWire" customModuleProvider="target">
<connections>
<outlet property="dontSendButton" destination="o4V-7L-v6D" id="Sxa-iT-OTj"/>
<outlet property="sendCrashLogButton" destination="fcK-kG-dtY" id="T04-pD-qZq"/>
<outlet property="textView" destination="hW5-cq-81L" id="RLj-Ti-pGC"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/> <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/> <customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window title="Crash Log Reporter" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="QvC-M9-y7g"> <window title="Crash Log Reporter" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="QvC-M9-y7g">
@ -84,7 +90,7 @@
<rect key="frame" x="18" y="61" width="460" height="51"/> <rect key="frame" x="18" y="61" width="460" height="51"/>
<textFieldCell key="cell" allowsUndo="NO" id="nou-5k-c1U"> <textFieldCell key="cell" allowsUndo="NO" id="nou-5k-c1U">
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
<string key="title">You can skip this window in the future by telling NetNewsWire to automatically send crash reports. You can also turn this setting on and off in the Preferences window, in the Advanced section.</string> <string key="title">You can skip this window in the future by telling NetNewsWire to automatically send crash logs. You can also turn this setting on and off in the Preferences window, in the Advanced section.</string>
<color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/> <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/> <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell> </textFieldCell>
@ -98,6 +104,9 @@
DQ DQ
</string> </string>
</buttonCell> </buttonCell>
<connections>
<action selector="sendCrashReport:" target="-2" id="mob-bL-tRb"/>
</connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="o4V-7L-v6D"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="o4V-7L-v6D">
<rect key="frame" x="208" y="13" width="137" height="32"/> <rect key="frame" x="208" y="13" width="137" height="32"/>
@ -108,6 +117,9 @@ DQ
Gw Gw
</string> </string>
</buttonCell> </buttonCell>
<connections>
<action selector="dontSendCrashReport:" target="-2" id="r3y-TC-h8U"/>
</connections>
</button> </button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fEy-Fg-JhO"> <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fEy-Fg-JhO">
<rect key="frame" x="14" y="13" width="137" height="32"/> <rect key="frame" x="14" y="13" width="137" height="32"/>
@ -115,6 +127,9 @@ Gw
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/> <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/> <font key="font" metaFont="system"/>
</buttonCell> </buttonCell>
<connections>
<action selector="showPrivacyPolicy:" target="-1" id="7TB-8O-Edu"/>
</connections>
</button> </button>
</subviews> </subviews>
<constraints> <constraints>