diff --git a/Cartfile b/Cartfile index 8551d3a..7f7fc57 100644 --- a/Cartfile +++ b/Cartfile @@ -1,3 +1,3 @@ -github "ReactiveCocoa/ReactiveCocoa" == 2.4.7 -github "sparkle-project/Sparkle" == 1.9.0 +github "ReactiveCocoa/ReactiveCocoa" "v4.0.0-RC.1" +github "sparkle-project/Sparkle" ~> 1.9.0 github "calebd/MediaKeys" == 0.1.0 diff --git a/Cartfile.resolved b/Cartfile.resolved index aecaa19..96f3e90 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,3 +1,4 @@ github "calebd/MediaKeys" "v0.1.0" -github "ReactiveCocoa/ReactiveCocoa" "v2.4.7" -github "sparkle-project/Sparkle" "1.9.0" +github "antitypical/Result" "1.0.1" +github "sparkle-project/Sparkle" "1.13.0" +github "ReactiveCocoa/ReactiveCocoa" "v4.0.0-RC.1" diff --git a/Cloudy.xcodeproj/project.pbxproj b/Cloudy.xcodeproj/project.pbxproj index e945c11..c8c460f 100644 --- a/Cloudy.xcodeproj/project.pbxproj +++ b/Cloudy.xcodeproj/project.pbxproj @@ -7,14 +7,14 @@ objects = { /* Begin PBXBuildFile section */ - 3B0206EC1AE7461400E45D53 /* NowPlayingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B0206EB1AE7461400E45D53 /* NowPlayingController.swift */; }; + 3AE739B31C44E7350004A7A5 /* Result.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3AE739B11C44E5F40004A7A5 /* Result.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 3AF748D01C46394700216897 /* Cloudy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AF748CF1C46394700216897 /* Cloudy.swift */; }; 3B1A19201B4E681A005CE283 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3BA5FE361AF35A8E00A5622B /* Sparkle.framework */; }; 3B430E261AE0A88F00AEBFBC /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B430E251AE0A88F00AEBFBC /* AppDelegate.swift */; }; 3B430E281AE0A88F00AEBFBC /* PlaybackViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B430E271AE0A88F00AEBFBC /* PlaybackViewController.swift */; }; 3B430E2A1AE0A88F00AEBFBC /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3B430E291AE0A88F00AEBFBC /* Images.xcassets */; }; 3B430E2D1AE0A88F00AEBFBC /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3B430E2B1AE0A88F00AEBFBC /* Main.storyboard */; }; 3B430E441AE0B20700AEBFBC /* cloudy.js in Resources */ = {isa = PBXBuildFile; fileRef = 3B430E431AE0B20700AEBFBC /* cloudy.js */; }; - 3B430E461AE0C0FE00AEBFBC /* Defines.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B430E451AE0C0FE00AEBFBC /* Defines.swift */; }; 3B430E4A1AE0C66200AEBFBC /* MainWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B430E491AE0C66200AEBFBC /* MainWindowController.swift */; }; 3BA5FE391AF35A9800A5622B /* Sparkle.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3BA5FE361AF35A8E00A5622B /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 3BB0D1B91AE2263100AB4A33 /* ReactiveCocoa.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B2332D41AE1BA48005C6654 /* ReactiveCocoa.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -31,6 +31,7 @@ files = ( 3BB0D1B91AE2263100AB4A33 /* ReactiveCocoa.framework in Embed Frameworks */, 3BFB222C1AFA071300127AF1 /* MediaKeys.framework in Embed Frameworks */, + 3AE739B31C44E7350004A7A5 /* Result.framework in Embed Frameworks */, 3BA5FE391AF35A9800A5622B /* Sparkle.framework in Embed Frameworks */, ); name = "Embed Frameworks"; @@ -39,7 +40,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 3B0206EB1AE7461400E45D53 /* NowPlayingController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NowPlayingController.swift; sourceTree = ""; }; + 3AE739B11C44E5F40004A7A5 /* Result.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Result.framework; path = Carthage/Build/Mac/Result.framework; sourceTree = ""; }; + 3AF748CF1C46394700216897 /* Cloudy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Cloudy.swift; sourceTree = ""; }; 3B2332D41AE1BA48005C6654 /* ReactiveCocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReactiveCocoa.framework; path = Carthage/Build/Mac/ReactiveCocoa.framework; sourceTree = ""; }; 3B430E201AE0A88F00AEBFBC /* Cloudy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Cloudy.app; sourceTree = BUILT_PRODUCTS_DIR; }; 3B430E241AE0A88F00AEBFBC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -48,7 +50,6 @@ 3B430E291AE0A88F00AEBFBC /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 3B430E2C1AE0A88F00AEBFBC /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 3B430E431AE0B20700AEBFBC /* cloudy.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = cloudy.js; sourceTree = ""; }; - 3B430E451AE0C0FE00AEBFBC /* Defines.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Defines.swift; sourceTree = ""; }; 3B430E491AE0C66200AEBFBC /* MainWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainWindowController.swift; sourceTree = ""; }; 3BA5FE361AF35A8E00A5622B /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = Carthage/Build/Mac/Sparkle.framework; sourceTree = ""; }; 3BFB22291AFA070C00127AF1 /* MediaKeys.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaKeys.framework; path = Carthage/Build/Mac/MediaKeys.framework; sourceTree = ""; }; @@ -70,6 +71,7 @@ 3B2332D81AE1BA84005C6654 /* Frameworks */ = { isa = PBXGroup; children = ( + 3AE739B11C44E5F40004A7A5 /* Result.framework */, 3BFB22291AFA070C00127AF1 /* MediaKeys.framework */, 3BA5FE361AF35A8E00A5622B /* Sparkle.framework */, 3B2332D41AE1BA48005C6654 /* ReactiveCocoa.framework */, @@ -100,8 +102,7 @@ 3B430E251AE0A88F00AEBFBC /* AppDelegate.swift */, 3B430E491AE0C66200AEBFBC /* MainWindowController.swift */, 3B430E271AE0A88F00AEBFBC /* PlaybackViewController.swift */, - 3B0206EB1AE7461400E45D53 /* NowPlayingController.swift */, - 3B430E451AE0C0FE00AEBFBC /* Defines.swift */, + 3AF748CF1C46394700216897 /* Cloudy.swift */, 3B430E421AE0A93000AEBFBC /* Resources */, ); path = Cloudy; @@ -146,7 +147,8 @@ 3B430E181AE0A88F00AEBFBC /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0630; + LastSwiftUpdateCheck = 0720; + LastUpgradeCheck = 0720; ORGANIZATIONNAME = "Caleb Davenport"; TargetAttributes = { 3B430E1F1AE0A88F00AEBFBC = { @@ -197,11 +199,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3B0206EC1AE7461400E45D53 /* NowPlayingController.swift in Sources */, 3B430E281AE0A88F00AEBFBC /* PlaybackViewController.swift in Sources */, 3B430E261AE0A88F00AEBFBC /* AppDelegate.swift in Sources */, 3B430E4A1AE0C66200AEBFBC /* MainWindowController.swift in Sources */, - 3B430E461AE0C0FE00AEBFBC /* Defines.swift in Sources */, + 3AF748D01C46394700216897 /* Cloudy.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -239,6 +240,7 @@ COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -301,7 +303,6 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "Developer ID Application"; COMBINE_HIDPI_IMAGES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -310,6 +311,7 @@ INFOPLIST_FILE = Cloudy/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; OTHER_SWIFT_FLAGS = "-DDEBUG"; + PRODUCT_BUNDLE_IDENTIFIER = com.calebd.cloudy; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -318,7 +320,6 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "Developer ID Application"; COMBINE_HIDPI_IMAGES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -326,6 +327,7 @@ ); INFOPLIST_FILE = Cloudy/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.calebd.cloudy; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/Cloudy.xcodeproj/xcshareddata/xcschemes/Cloudy.xcscheme b/Cloudy.xcodeproj/xcshareddata/xcschemes/Cloudy.xcscheme index 1855b63..9ff1c76 100644 --- a/Cloudy.xcodeproj/xcshareddata/xcschemes/Cloudy.xcscheme +++ b/Cloudy.xcodeproj/xcshareddata/xcschemes/Cloudy.xcscheme @@ -1,6 +1,6 @@ + shouldUseLaunchSchemeArgsEnv = "YES"> @@ -38,15 +38,18 @@ ReferencedContainer = "container:Cloudy.xcodeproj"> + + @@ -62,10 +65,10 @@ diff --git a/Cloudy/AppDelegate.swift b/Cloudy/AppDelegate.swift index 05a6d9f..c735eb8 100644 --- a/Cloudy/AppDelegate.swift +++ b/Cloudy/AppDelegate.swift @@ -8,64 +8,64 @@ import Cocoa -private func DockMenu(#item: PlaybackItem?, #playing: Bool) -> NSMenu? { - if item == nil { - return nil - } - - let menu = NSMenu() - menu.autoenablesItems = false - - let nowPlayingItem = NSMenuItem() - nowPlayingItem.title = "Now Playing" - nowPlayingItem.enabled = false - menu.addItem(nowPlayingItem) - - let showNameItem = NSMenuItem() - showNameItem.title = item?.show ?? "Now Show Title" - showNameItem.indentationLevel = 1 - showNameItem.enabled = false - menu.addItem(showNameItem) - - let episodeNameItem = NSMenuItem() - episodeNameItem.title = item?.episode ?? "Now Episode Title" - episodeNameItem.indentationLevel = 1 - episodeNameItem.enabled = false - menu.addItem(episodeNameItem) - - menu.addItem(NSMenuItem.separatorItem()) - - let togglePlaybackItem = NSMenuItem(title: playing ? "Pause" : "Play", action: "togglePlaybackState:", keyEquivalent: "") - menu.addItem(togglePlaybackItem) - - return menu -} - -private func GetPlaybackViewController() -> PlaybackViewController? { - let windows = NSApplication.sharedApplication().windows as? [NSWindow] ?? [] - for window in windows { - if let controller = window.contentViewController as? PlaybackViewController { - return controller - } - } - return nil -} +//private func DockMenu(#item: PlaybackItem?, #playing: Bool) -> NSMenu? { +// if item == nil { +// return nil +// } +// +// let menu = NSMenu() +// menu.autoenablesItems = false +// +// let nowPlayingItem = NSMenuItem() +// nowPlayingItem.title = "Now Playing" +// nowPlayingItem.enabled = false +// menu.addItem(nowPlayingItem) +// +// let showNameItem = NSMenuItem() +// showNameItem.title = item?.show ?? "Now Show Title" +// showNameItem.indentationLevel = 1 +// showNameItem.enabled = false +// menu.addItem(showNameItem) +// +// let episodeNameItem = NSMenuItem() +// episodeNameItem.title = item?.episode ?? "Now Episode Title" +// episodeNameItem.indentationLevel = 1 +// episodeNameItem.enabled = false +// menu.addItem(episodeNameItem) +// +// menu.addItem(NSMenuItem.separatorItem()) +// +// let togglePlaybackItem = NSMenuItem(title: playing ? "Pause" : "Play", action: "togglePlaybackState:", keyEquivalent: "") +// menu.addItem(togglePlaybackItem) +// +// return menu +//} + +//private func GetPlaybackViewController() -> PlaybackViewController? { +// let windows = NSApplication.sharedApplication().windows as? [NSWindow] ?? [] +// for window in windows { +// if let controller = window.contentViewController as? PlaybackViewController { +// return controller +// } +// } +// return nil +//} @NSApplicationMain final class AppDelegate: NSObject, NSApplicationDelegate { // MARK: - NSApplicationDelegate - func applicationDockMenu(sender: NSApplication) -> NSMenu? { - return DockMenu( - item: NowPlayingController.shared().nowPlayingItem, - playing: NowPlayingController.shared().playing - ) - } +// func applicationDockMenu(sender: NSApplication) -> NSMenu? { +// return DockMenu( +// item: NowPlayingController.shared().nowPlayingItem, +// playing: NowPlayingController.shared().playing +// ) +// } // MARK: - Private - @objc private func togglePlaybackState(sender: AnyObject?) { - GetPlaybackViewController()?.togglePlaybackState(self) - } +// @objc private func togglePlaybackState(sender: AnyObject?) { +// GetPlaybackViewController()?.togglePlaybackState(self) +// } } diff --git a/Cloudy/Base.lproj/Main.storyboard b/Cloudy/Base.lproj/Main.storyboard index 04def86..5c9dbe1 100644 --- a/Cloudy/Base.lproj/Main.storyboard +++ b/Cloudy/Base.lproj/Main.storyboard @@ -1,7 +1,7 @@ - + - + @@ -663,10 +663,10 @@ - - + + - + @@ -681,7 +681,7 @@