, NSToolbarDelegate {
@MainActor required dynamic init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
-
- public func configureToolbar() {
- let toolbar = NSToolbar(identifier: NSToolbar.Identifier("netnewswire.about.toolbar"))
- toolbar.delegate = self
- toolbar.autosavesConfiguration = false
- toolbar.allowsUserCustomization = false
- view.window?.toolbar = toolbar
- view.window?.toolbarStyle = .unified
- toolbar.insertItem(withItemIdentifier: .flexibleSpace, at: 0)
- toolbar.insertItem(withItemIdentifier: .flexibleSpace, at: 2)
- }
-
- // MARK: NSToolbarDelegate
-
- func toolbar(_ toolbar: NSToolbar, itemForItemIdentifier itemIdentifier: NSToolbarItem.Identifier, willBeInsertedIntoToolbar flag: Bool) -> NSToolbarItem? {
- switch itemIdentifier {
-
- case .aboutGroup:
- let toolbarItem = NSToolbarItem(itemIdentifier: .aboutGroup)
- toolbarItem.view = segmentedControl
- toolbarItem.autovalidates = true
- return toolbarItem
- default:
- return nil
- }
- }
-
- func toolbarAllowedItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
- return [.aboutGroup]
- }
-
- func toolbarWillAddItem(_ notification: Notification) {
- //
- }
-
- func toolbarDidRemoveItem(_ notification: Notification) {
- //
- }
-
- func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
- return [.aboutGroup]
- }
-
- func toolbarSelectableItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
- return []
- }
-
- // MARK: - Target/Action
- @objc
- func segmentedControlSelectionChanged(_ sender: NSSegmentedControl) {
- if sender.selectedSegment == 0 {
- rootView = AnyView(AboutNetNewsWireView())
- } else {
- rootView = AnyView(CreditsNetNewsWireView())
- }
- }
-
}
diff --git a/Mac/MainWindow/About/CreditsNetNewsWireView.swift b/Mac/MainWindow/About/CreditsNetNewsWireView.swift
deleted file mode 100644
index d2c68c7de..000000000
--- a/Mac/MainWindow/About/CreditsNetNewsWireView.swift
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// CreditsNetNewsWireView.swift
-// NetNewsWire
-//
-// Created by Stuart Breckenridge on 03/10/2022.
-// Copyright © 2022 Ranchero Software. All rights reserved.
-//
-
-import SwiftUI
-import WebKit
-import Html
-
-@available(macOS 12, *)
-struct WebView: NSViewRepresentable {
-
- var htmlString: String
-
- func makeNSView(context: Context) -> WKWebView {
- let view = WKWebView()
- view.loadHTMLString(htmlString, baseURL: nil)
- return view
- }
-
- func updateNSView(_ webView: WKWebView, context: Context) {
-
- }
-}
-
-@available(macOS 12, *)
-struct CreditsNetNewsWireView: View, LoadableAboutData {
- var body: some View {
- VStack {
- Image("About")
- .resizable()
- .frame(width: 75, height: 75)
-
- Text(verbatim: "NetNewsWire")
- .font(.headline)
-
- Text("\(Bundle.main.versionNumber) (\(Bundle.main.buildNumber))")
- .foregroundColor(.secondary)
- .font(.callout)
-
- Text("label.text.netnewswire-byline", comment: "By Brent Simmons and the NetNewsWire team.")
- .font(.subheadline)
-
- Text("label.markdown.netnewswire-website", comment: "Markdown formatted link to netnewswire.com")
- .font(.callout)
-
- WebView(htmlString: AboutHTML().renderedDocument())
- }
-
- .frame(width: 500, height: 700)
- }
-
-}
-
-@available(macOS 12, *)
-struct CreditsNetNewsWireView_Previews: PreviewProvider {
- static var previews: some View {
- CreditsNetNewsWireView()
- }
-}
diff --git a/Mac/Resources/en-GB.lproj/Localizable.strings b/Mac/Resources/en-GB.lproj/Localizable.strings
index 321c90737..20a466e6d 100644
--- a/Mac/Resources/en-GB.lproj/Localizable.strings
+++ b/Mac/Resources/en-GB.lproj/Localizable.strings
@@ -592,6 +592,15 @@
/* Subreddit */
"label.text.subreddit" = "Subreddit";
+/* Thanks */
+"label.text.thanks" = "Thanks";
+
+/* Thanks - Dedication */
+"label.text.thanks-details" = "
+Thanks to Sheila and my family; thanks to my friends in Seattle and around the globe; thanks to the ever-patient and ever-awesome NetNewsWire beta testers.
+Thanks to Gus Mueller for FMDB by Flying Meat Software. Thanks to GitHub and Slack for making open source collaboration easy and fun. Thanks to Ben Ubois at Feedbin for all the extra help with syncing and article rendering — and for hosting the server for the Reader view.
+NetNewsWire 6 is dedicated to everyone working to save democracy around the world.
";
+
/* Built-in */
"label.text.themes-builtin" = "Built-in Themes";
diff --git a/Mac/Resources/en.lproj/Localizable.strings b/Mac/Resources/en.lproj/Localizable.strings
index bf195c5df..729706083 100644
--- a/Mac/Resources/en.lproj/Localizable.strings
+++ b/Mac/Resources/en.lproj/Localizable.strings
@@ -585,6 +585,15 @@
/* Subreddit */
"label.text.subreddit" = "Subreddit";
+/* Thanks */
+"label.text.thanks" = "Thanks";
+
+/* Thanks - Dedication */
+"label.text.thanks-details" = "
+Thanks to Sheila and my family; thanks to my friends in Seattle and around the globe; thanks to the ever-patient and ever-awesome NetNewsWire beta testers.
+Thanks to Gus Mueller for FMDB by Flying Meat Software. Thanks to GitHub and Slack for making open source collaboration easy and fun. Thanks to Ben Ubois at Feedbin for all the extra help with syncing and article rendering — and for hosting the server for the Reader view.
+NetNewsWire 6 is dedicated to everyone working to save democracy around the world.
";
+
/* Built-in */
"label.text.themes-builtin" = "Built-in Themes";
diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj
index 05f7dabd3..cf07cc4fd 100644
--- a/NetNewsWire.xcodeproj/project.pbxproj
+++ b/NetNewsWire.xcodeproj/project.pbxproj
@@ -871,8 +871,7 @@
DFC14F0F28EA55BD00F6EE86 /* AboutWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC14F0E28EA55BD00F6EE86 /* AboutWindowController.swift */; };
DFC14F1228EA5DC500F6EE86 /* AboutData.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF790D6128E990A900455FC7 /* AboutData.swift */; };
DFC14F1328EA677C00F6EE86 /* Bundle-Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51F85BF42273625800C787DC /* Bundle-Extensions.swift */; };
- DFC14F1528EB177000F6EE86 /* AboutNetNewsWireView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC14F1428EB177000F6EE86 /* AboutNetNewsWireView.swift */; };
- DFC14F1728EB17A800F6EE86 /* CreditsNetNewsWireView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC14F1628EB17A800F6EE86 /* CreditsNetNewsWireView.swift */; };
+ DFC14F1728EB17A800F6EE86 /* AboutNewNewsWireView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC14F1628EB17A800F6EE86 /* AboutNewNewsWireView.swift */; };
DFCE4F9128EF26F100405869 /* About.plist in Resources */ = {isa = PBXBuildFile; fileRef = DFCE4F9028EF26F000405869 /* About.plist */; };
DFCE4F9228EF26F100405869 /* About.plist in Resources */ = {isa = PBXBuildFile; fileRef = DFCE4F9028EF26F000405869 /* About.plist */; };
DFCE4F9428EF278300405869 /* Thanks.md in Resources */ = {isa = PBXBuildFile; fileRef = DFCE4F9328EF278300405869 /* Thanks.md */; };
@@ -1652,8 +1651,7 @@
DFBB4EAB2951BC0200639228 /* NNWThemeDocument.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NNWThemeDocument.swift; sourceTree = ""; };
DFBB4EAF2951BCAC00639228 /* ArticleThemeManagerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArticleThemeManagerView.swift; sourceTree = ""; };
DFC14F0E28EA55BD00F6EE86 /* AboutWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutWindowController.swift; sourceTree = ""; };
- DFC14F1428EB177000F6EE86 /* AboutNetNewsWireView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutNetNewsWireView.swift; sourceTree = ""; };
- DFC14F1628EB17A800F6EE86 /* CreditsNetNewsWireView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CreditsNetNewsWireView.swift; sourceTree = ""; };
+ DFC14F1628EB17A800F6EE86 /* AboutNewNewsWireView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutNewNewsWireView.swift; sourceTree = ""; };
DFCE4F9028EF26F000405869 /* About.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = About.plist; sourceTree = ""; };
DFCE4F9328EF278300405869 /* Thanks.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = Thanks.md; sourceTree = ""; };
DFD406F4291F79C900C02962 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; };
@@ -2714,7 +2712,6 @@
isa = PBXGroup;
children = (
849C64671ED37A5D003D8FC0 /* Assets.xcassets */,
- DF5124CB2A22D62600BBAB1F /* AboutHTML.swift */,
84C9FC8922629E8F00D921D6 /* Credits.rtf */,
DF93DB2D296A319000586C0E /* Localizable.stringsdict */,
84C9FC8A22629E8F00D921D6 /* NetNewsWire.sdef */,
@@ -3011,8 +3008,8 @@
isa = PBXGroup;
children = (
DFC14F0E28EA55BD00F6EE86 /* AboutWindowController.swift */,
- DFC14F1428EB177000F6EE86 /* AboutNetNewsWireView.swift */,
- DFC14F1628EB17A800F6EE86 /* CreditsNetNewsWireView.swift */,
+ DFC14F1628EB17A800F6EE86 /* AboutNewNewsWireView.swift */,
+ DF5124CB2A22D62600BBAB1F /* AboutHTML.swift */,
);
path = About;
sourceTree = "";
@@ -4485,7 +4482,6 @@
849A97801ED9EC42007D329B /* DetailViewController.swift in Sources */,
173A64172547BE0900267F6E /* AccountType+Helpers.swift in Sources */,
518C3193237B00D9004D740F /* DetailIconSchemeHandler.swift in Sources */,
- DFC14F1528EB177000F6EE86 /* AboutNetNewsWireView.swift in Sources */,
84C9FC6722629B9000D921D6 /* AppDelegate.swift in Sources */,
510C417F24E5D1AE008226FD /* ExtensionContainersFile.swift in Sources */,
84C9FC7A22629E1200D921D6 /* PreferencesTableViewBackgroundView.swift in Sources */,
@@ -4493,7 +4489,7 @@
DFC14F1328EA677C00F6EE86 /* Bundle-Extensions.swift in Sources */,
8426119E1FCB6ED40086A189 /* HTMLMetadataDownloader.swift in Sources */,
849A976E1ED9EBC8007D329B /* TimelineViewController.swift in Sources */,
- DFC14F1728EB17A800F6EE86 /* CreditsNetNewsWireView.swift in Sources */,
+ DFC14F1728EB17A800F6EE86 /* AboutNewNewsWireView.swift in Sources */,
5154368B229404D1005E1CDF /* FaviconGenerator.swift in Sources */,
5183CCE6226F4E110010922C /* RefreshInterval.swift in Sources */,
849A97771ED9EC04007D329B /* TimelineCellData.swift in Sources */,