Close the finding-feed progress window once the feed has been found. Fix #145.

This commit is contained in:
Brent Simmons 2017-11-12 11:01:17 -08:00
parent 861afa06c7
commit 7207598cdc
1 changed files with 42 additions and 9 deletions

View File

@ -8,7 +8,48 @@
import Cocoa
class IndeterminateProgressWindowController: NSWindowController {
func runIndeterminateProgressWithMessage(_ message: String) {
IndeterminateProgressController.beginProgressWithMessage(message)
}
func stopIndeterminateProgress() {
IndeterminateProgressController.endProgress()
}
private final class IndeterminateProgressController {
static var windowController: IndeterminateProgressWindowController?
static var runningProgressWindow = false
static func beginProgressWithMessage(_ message: String) {
if runningProgressWindow {
assertionFailure("Expected !runningProgressWindow.")
endProgress()
}
runningProgressWindow = true
windowController = IndeterminateProgressWindowController(message: message)
NSApplication.shared.runModal(for: windowController!.window!)
}
static func endProgress() {
if !runningProgressWindow {
assertionFailure("Expected runningProgressWindow.")
return
}
runningProgressWindow = false
NSApplication.shared.stopModal()
windowController?.close()
windowController = nil
}
}
private final class IndeterminateProgressWindowController: NSWindowController {
@IBOutlet var messageLabel: NSTextField!
@IBOutlet var progressIndicator: NSProgressIndicator!
@ -26,13 +67,5 @@ class IndeterminateProgressWindowController: NSWindowController {
}
}
func runIndeterminateProgressWithMessage(_ message: String) {
let windowController = IndeterminateProgressWindowController(message: message)
NSApplication.shared.runModal(for: windowController.window!)
}
func stopIndeterminateProgress() {
NSApplication.shared.stopModal()
}