diff --git a/Mac/MainWindow/LegacyArticleExtractorButton.swift b/Mac/MainWindow/LegacyArticleExtractorButton.swift deleted file mode 100644 index d6c2bbad6..000000000 --- a/Mac/MainWindow/LegacyArticleExtractorButton.swift +++ /dev/null @@ -1,111 +0,0 @@ -// -// ArticleExtractorButton.swift -// NetNewsWire -// -// Created by Maurice Parker on 9/18/19. -// Copyright © 2019 Ranchero Software. All rights reserved. -// - -import Foundation - -final class LegacyArticleExtractorButton: NSButton { - - var isError = false { - didSet { - if isError != oldValue { - needsDisplay = true - } - } - } - - var isInProgress = false { - didSet { - if isInProgress != oldValue { - needsDisplay = true - } - } - } - - override init(frame frameRect: NSRect) { - super.init(frame: frameRect) - wantsLayer = true - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - wantsLayer = true - } - - override func draw(_ dirtyRect: NSRect) { - super.draw(dirtyRect) - - guard let hostedLayer = self.layer else { - return - } - - if let imageLayer = hostedLayer.sublayers?[0] { - if needsToDraw(imageLayer.bounds) { - imageLayer.removeFromSuperlayer() - } else { - return - } - } - - let opacity: Float = isEnabled ? 1.0 : 0.5 - - switch true { - case isError: - addImageSublayer(to: hostedLayer, image: AppAssets.legacyArticleExtractorError, opacity: opacity) - case isInProgress: - addAnimatedSublayer(to: hostedLayer) - default: - if NSApplication.shared.isActive { - addImageSublayer(to: hostedLayer, image: AppAssets.legacyArticleExtractor, opacity: opacity) - } else { - if NSApplication.shared.effectiveAppearance.isDarkMode { - addImageSublayer(to: hostedLayer, image: AppAssets.legacyArticleExtractorInactiveDark, opacity: opacity) - } else { - addImageSublayer(to: hostedLayer, image: AppAssets.legacyArticleExtractorInactiveLight, opacity: opacity) - } - } - } - } - - private func makeLayerForImage(_ image: NSImage) -> CALayer { - let imageLayer = CALayer() - imageLayer.bounds = CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height) - imageLayer.position = CGPoint(x: bounds.midX, y: floor(bounds.midY)) - return imageLayer - } - - private func addImageSublayer(to hostedLayer: CALayer, image: NSImage, opacity: Float = 1.0) { - let imageLayer = makeLayerForImage(image) - imageLayer.contents = image - imageLayer.opacity = opacity - hostedLayer.addSublayer(imageLayer) - } - - private func addAnimatedSublayer(to hostedLayer: CALayer) { - let imageProgress1 = AppAssets.legacyArticleExtractorProgress1 - let imageProgress2 = AppAssets.legacyArticleExtractorProgress2 - let imageProgress3 = AppAssets.legacyArticleExtractorProgress3 - let imageProgress4 = AppAssets.legacyArticleExtractorProgress4 - let images = [imageProgress1, imageProgress2, imageProgress3, imageProgress4, imageProgress3, imageProgress2, imageProgress1] - - let imageLayer = CALayer() - imageLayer.bounds = CGRect(x: 0, y: 0, width: imageProgress1?.size.width ?? 0, height: imageProgress1?.size.height ?? 0) - imageLayer.position = CGPoint(x: bounds.midX, y: floor(bounds.midY)) - - hostedLayer.addSublayer(imageLayer) - - let animation = CAKeyframeAnimation(keyPath: "contents") - animation.calculationMode = CAAnimationCalculationMode.linear - animation.keyTimes = [0, 0.16, 0.32, 0.50, 0.66, 0.82, 1] - animation.duration = 2 - animation.values = images as [Any] - animation.repeatCount = HUGE - - imageLayer.add(animation, forKey: "contents") - } - -} diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index 32fa2187e..18d63ad1d 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -300,7 +300,6 @@ 51F85BF92274AA7B00C787DC /* UIBarButtonItem-Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51F85BF82274AA7B00C787DC /* UIBarButtonItem-Extensions.swift */; }; 51F85BFD2275DCA800C787DC /* SingleLineUILabelSizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51F85BFC2275DCA800C787DC /* SingleLineUILabelSizer.swift */; }; 51F9F3F723DF6DB200A314FD /* ArticleIconSchemeHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51F9F3F623DF6DB200A314FD /* ArticleIconSchemeHandler.swift */; }; - 51FA73B72332D5F70090D516 /* LegacyArticleExtractorButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51FA73B62332D5F70090D516 /* LegacyArticleExtractorButton.swift */; }; 51FD413B2342BD0500880194 /* TimelineUnreadCountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51FD413A2342BD0500880194 /* TimelineUnreadCountView.swift */; }; 51FE10032345529D0056195D /* UserNotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51FE10022345529D0056195D /* UserNotificationManager.swift */; }; 51FE10042345529D0056195D /* UserNotificationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51FE10022345529D0056195D /* UserNotificationManager.swift */; }; @@ -969,7 +968,6 @@ 51F85BF82274AA7B00C787DC /* UIBarButtonItem-Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIBarButtonItem-Extensions.swift"; sourceTree = ""; }; 51F85BFC2275DCA800C787DC /* SingleLineUILabelSizer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SingleLineUILabelSizer.swift; sourceTree = ""; }; 51F9F3F623DF6DB200A314FD /* ArticleIconSchemeHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleIconSchemeHandler.swift; sourceTree = ""; }; - 51FA73B62332D5F70090D516 /* LegacyArticleExtractorButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyArticleExtractorButton.swift; sourceTree = ""; }; 51FD413A2342BD0500880194 /* TimelineUnreadCountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineUnreadCountView.swift; sourceTree = ""; }; 51FE10022345529D0056195D /* UserNotificationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserNotificationManager.swift; sourceTree = ""; }; 51FFF0C3235EE8E5002762AA /* VibrantButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VibrantButton.swift; sourceTree = ""; }; @@ -1790,7 +1788,6 @@ 519B8D322143397200FA689C /* SharingServiceDelegate.swift */, 849EE72020391F560082A1EA /* SharingServicePickerDelegate.swift */, 5117715424E1EA0F00A2A836 /* ArticleExtractorButton.swift */, - 51FA73B62332D5F70090D516 /* LegacyArticleExtractorButton.swift */, 847CD6C9232F4CBF00FAC46D /* IconView.swift */, 844B5B6B1FEA224B00C7C76A /* Keyboard */, 849A975F1ED9EB95007D329B /* Sidebar */, @@ -3525,7 +3522,6 @@ 841ABA5E20145E9200980E11 /* FolderInspectorViewController.swift in Sources */, 84DEE56522C32CA4005FC42C /* SmartFeedDelegate.swift in Sources */, 845122722B8CEA9100480DB0 /* SidebarItem.swift in Sources */, - 51FA73B72332D5F70090D516 /* LegacyArticleExtractorButton.swift in Sources */, 849A97431ED9EAA9007D329B /* AddFolderWindowController.swift in Sources */, 8405DDA522168C62008CE1BF /* TimelineContainerViewController.swift in Sources */, 844B5B671FEA18E300C7C76A /* MainWIndowKeyboardHandler.swift in Sources */,