diff --git a/iOS/AppAssets.swift b/iOS/AppAssets.swift index 02c3836b4..a0ce2fc62 100644 --- a/iOS/AppAssets.swift +++ b/iOS/AppAssets.swift @@ -36,26 +36,21 @@ struct AppAssets { return RSImage(named: "faviconTemplateImage")! }() - static var feedColor: UIColor = { - return UIColor(named: "feedColor")! - }() - static var feedImage: RSImage = { - let image = RSImage(named: "feedImage")! - return image.maskWithColor(color: AppAssets.feedColor.cgColor)! + return RSImage(named: "feedImage")! }() static var masterFolderColor: UIColor = { return UIColor(named: "masterFolderColor")! }() - + static var masterFolderImage: RSImage = { let image = RSImage(named: "folderImage")! return image.maskWithColor(color: AppAssets.masterFolderColor.cgColor)! }() - static var selectionBackgroundColor: UIColor = { - return UIColor(named: "selectionBackgroundColor")! + static var netNewsWireBlueColor: UIColor = { + return UIColor(named: "netNewsWireBlueColor")! }() static var smartFeedColor: UIColor = { @@ -84,14 +79,6 @@ struct AppAssets { return image.maskWithColor(color: AppAssets.starColor.cgColor)! }() - static var timelineTextPrimaryColor: UIColor = { - return UIColor(named: "timelineTextPrimaryColor")! - }() - - static var timelineTextSecondaryColor: UIColor = { - return UIColor(named: "timelineTextSecondaryColor")! - }() - static var timelineUnreadCircleColor: UIColor = { return UIColor(named: "timelineUnreadCircleColor")! }() diff --git a/iOS/AppDelegate.swift b/iOS/AppDelegate.swift index 0fa232d3f..0f1bc5551 100644 --- a/iOS/AppDelegate.swift +++ b/iOS/AppDelegate.swift @@ -71,6 +71,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele navigationController.topViewController!.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem splitViewController.delegate = self + window!.tintColor = AppAssets.netNewsWireBlueColor + AppDefaults.registerDefaults() let isFirstRun = AppDefaults.isFirstRun if isFirstRun { diff --git a/iOS/MasterFeed/Cell/MasterFeedTableViewCell.swift b/iOS/MasterFeed/Cell/MasterFeedTableViewCell.swift index 492f9d350..7f34a65cc 100644 --- a/iOS/MasterFeed/Cell/MasterFeedTableViewCell.swift +++ b/iOS/MasterFeed/Cell/MasterFeedTableViewCell.swift @@ -144,7 +144,7 @@ private extension MasterFeedTableViewCell { func theme() { let bgView = UIView() - bgView.backgroundColor = AppAssets.selectionBackgroundColor + bgView.backgroundColor = AppAssets.netNewsWireBlueColor selectedBackgroundView = bgView } diff --git a/iOS/MasterTimeline/Cell/MasterTimelineCellLayout.swift b/iOS/MasterTimeline/Cell/MasterTimelineCellLayout.swift index 1b8066be7..f4b25aff5 100644 --- a/iOS/MasterTimeline/Cell/MasterTimelineCellLayout.swift +++ b/iOS/MasterTimeline/Cell/MasterTimelineCellLayout.swift @@ -28,7 +28,7 @@ extension MasterTimelineCellLayout { var r = CGRect.zero r.size = CGSize(width: MasterTimelineDefaultCellLayout.unreadCircleDimension, height: MasterTimelineDefaultCellLayout.unreadCircleDimension) r.origin.x = point.x - r.origin.y = point.y + 4 + r.origin.y = point.y + 5 return r } @@ -38,7 +38,7 @@ extension MasterTimelineCellLayout { r.size.width = MasterTimelineDefaultCellLayout.starDimension r.size.height = MasterTimelineDefaultCellLayout.starDimension r.origin.x = floor(point.x - ((MasterTimelineDefaultCellLayout.starDimension - MasterTimelineDefaultCellLayout.unreadCircleDimension) / 2.0)) - r.origin.y = point.y + 2 + r.origin.y = point.y + 3 return r } diff --git a/iOS/MasterTimeline/Cell/MasterTimelineDefaultCellLayout.swift b/iOS/MasterTimeline/Cell/MasterTimelineDefaultCellLayout.swift index 323278956..e43802c3e 100644 --- a/iOS/MasterTimeline/Cell/MasterTimelineDefaultCellLayout.swift +++ b/iOS/MasterTimeline/Cell/MasterTimelineDefaultCellLayout.swift @@ -23,25 +23,21 @@ struct MasterTimelineDefaultCellLayout: MasterTimelineCellLayout { static let avatarMarginRight = CGFloat(integerLiteral: 8) static let avatarCornerRadius = CGFloat(integerLiteral: 4) - static let titleColor = AppAssets.timelineTextPrimaryColor static var titleFont: UIFont { return UIFont.preferredFont(forTextStyle: .headline) } static let titleBottomMargin = CGFloat(integerLiteral: 1) - static let feedColor = AppAssets.timelineTextSecondaryColor static var feedNameFont: UIFont { return UIFont.preferredFont(forTextStyle: .footnote) } static let feedRightMargin = CGFloat(integerLiteral: 8) - static let dateColor = AppAssets.timelineTextSecondaryColor static var dateFont: UIFont { return UIFont.preferredFont(forTextStyle: .footnote) } static let dateMarginBottom = CGFloat(integerLiteral: 1) - static let summaryColor = AppAssets.timelineTextPrimaryColor static var summaryFont: UIFont { return UIFont.preferredFont(forTextStyle: .body) } diff --git a/iOS/MasterTimeline/Cell/MasterTimelineTableViewCell.swift b/iOS/MasterTimeline/Cell/MasterTimelineTableViewCell.swift index a58034611..d87dddece 100644 --- a/iOS/MasterTimeline/Cell/MasterTimelineTableViewCell.swift +++ b/iOS/MasterTimeline/Cell/MasterTimelineTableViewCell.swift @@ -123,7 +123,7 @@ private extension MasterTimelineTableViewCell { func theme() { let bgView = UIView() - bgView.backgroundColor = AppAssets.selectionBackgroundColor + bgView.backgroundColor = AppAssets.netNewsWireBlueColor selectedBackgroundView = bgView } @@ -141,19 +141,19 @@ private extension MasterTimelineTableViewCell { func updateTitleView() { titleView.font = MasterTimelineDefaultCellLayout.titleFont - titleView.textColor = MasterTimelineDefaultCellLayout.titleColor + titleView.textColor = .label updateTextFieldText(titleView, cellData?.title) } func updateSummaryView() { summaryView.font = MasterTimelineDefaultCellLayout.summaryFont - summaryView.textColor = MasterTimelineDefaultCellLayout.summaryColor + summaryView.textColor = .label updateTextFieldText(summaryView, cellData?.summary) } func updateDateView() { dateView.font = MasterTimelineDefaultCellLayout.dateFont - dateView.textColor = MasterTimelineDefaultCellLayout.dateColor + dateView.textColor = .secondaryLabel updateTextFieldText(dateView, cellData.dateString) } @@ -170,7 +170,7 @@ private extension MasterTimelineTableViewCell { if cellData.showFeedName { showView(feedNameView) feedNameView.font = MasterTimelineDefaultCellLayout.feedNameFont - feedNameView.textColor = MasterTimelineDefaultCellLayout.feedColor + feedNameView.textColor = .secondaryLabel updateTextFieldText(feedNameView, cellData.feedName) } else { hideView(feedNameView) diff --git a/iOS/MasterTimeline/MasterTimelineViewController.swift b/iOS/MasterTimeline/MasterTimelineViewController.swift index 0ac2aa9cf..4b35170a8 100644 --- a/iOS/MasterTimeline/MasterTimelineViewController.swift +++ b/iOS/MasterTimeline/MasterTimelineViewController.swift @@ -139,7 +139,7 @@ class MasterTimelineViewController: ProgressTableViewController, UndoableCommand } readAction.image = AppAssets.circleClosedImage - readAction.backgroundColor = AppAssets.timelineUnreadCircleColor + readAction.backgroundColor = AppAssets.netNewsWireBlueColor // Set up the star action let starTitle = article.status.starred ? diff --git a/iOS/Resources/Assets.xcassets/feedColor.colorset/Contents.json b/iOS/Resources/Assets.xcassets/feedColor.colorset/Contents.json deleted file mode 100644 index 54b47afc7..000000000 --- a/iOS/Resources/Assets.xcassets/feedColor.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - }, - "colors" : [ - { - "idiom" : "universal", - "color" : { - "color-space" : "srgb", - "components" : { - "red" : "20", - "alpha" : "1.000", - "blue" : "243", - "green" : "140" - } - } - } - ] -} \ No newline at end of file diff --git a/iOS/Resources/Assets.xcassets/netNewsWireBlueColor.colorset/Contents.json b/iOS/Resources/Assets.xcassets/netNewsWireBlueColor.colorset/Contents.json new file mode 100644 index 000000000..bfb477048 --- /dev/null +++ b/iOS/Resources/Assets.xcassets/netNewsWireBlueColor.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + }, + "colors" : [ + { + "idiom" : "universal", + "color" : { + "color-space" : "srgb", + "components" : { + "red" : "0x08", + "alpha" : "1.000", + "blue" : "0xEE", + "green" : "0x6A" + } + } + }, + { + "idiom" : "universal", + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "red" : "0x44", + "alpha" : "1.000", + "blue" : "0xE2", + "green" : "0x90" + } + } + } + ] +} \ No newline at end of file diff --git a/iOS/Resources/Assets.xcassets/selectionBackgroundColor.colorset/Contents.json b/iOS/Resources/Assets.xcassets/selectionBackgroundColor.colorset/Contents.json deleted file mode 100644 index 728894ebe..000000000 --- a/iOS/Resources/Assets.xcassets/selectionBackgroundColor.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - }, - "colors" : [ - { - "idiom" : "universal", - "color" : { - "color-space" : "srgb", - "components" : { - "red" : "111", - "alpha" : "1.000", - "blue" : "250", - "green" : "175" - } - } - } - ] -} \ No newline at end of file diff --git a/iOS/Resources/Assets.xcassets/timelineTextPrimaryColor.colorset/Contents.json b/iOS/Resources/Assets.xcassets/timelineTextPrimaryColor.colorset/Contents.json deleted file mode 100644 index ee1c5bc2a..000000000 --- a/iOS/Resources/Assets.xcassets/timelineTextPrimaryColor.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - }, - "colors" : [ - { - "idiom" : "universal", - "color" : { - "color-space" : "srgb", - "components" : { - "red" : "0x22", - "alpha" : "1.000", - "blue" : "0x22", - "green" : "0x22" - } - } - } - ] -} \ No newline at end of file diff --git a/iOS/Resources/Assets.xcassets/timelineTextSecondaryColor.colorset/Contents.json b/iOS/Resources/Assets.xcassets/timelineTextSecondaryColor.colorset/Contents.json deleted file mode 100644 index fc67a140c..000000000 --- a/iOS/Resources/Assets.xcassets/timelineTextSecondaryColor.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - }, - "colors" : [ - { - "idiom" : "universal", - "color" : { - "color-space" : "srgb", - "components" : { - "red" : "0x80", - "alpha" : "1.000", - "blue" : "0x80", - "green" : "0x80" - } - } - } - ] -} \ No newline at end of file diff --git a/iOS/Settings/SettingsAddAccountView.swift b/iOS/Settings/SettingsAddAccountView.swift index 00b9107d8..22fd2ca7c 100644 --- a/iOS/Settings/SettingsAddAccountView.swift +++ b/iOS/Settings/SettingsAddAccountView.swift @@ -11,7 +11,7 @@ import Account struct SettingsAddAccountView : View { var body: some View { - List { + Form { PresentationButton(destination: SettingsLocalAccountView(name: "")) { SettingsAccountLabelView(accountImage: "accountLocal", accountLabel: Account.defaultLocalAccountName) } @@ -21,7 +21,6 @@ struct SettingsAddAccountView : View { } .padding(4) } - .listStyle(.grouped) .navigationBarTitle(Text("Add Account"), displayMode: .inline) } } diff --git a/iOS/Settings/SettingsDetailAccountView.swift b/iOS/Settings/SettingsDetailAccountView.swift index dab8f30ce..606a6f487 100644 --- a/iOS/Settings/SettingsDetailAccountView.swift +++ b/iOS/Settings/SettingsDetailAccountView.swift @@ -17,7 +17,7 @@ struct SettingsDetailAccountView : View { @State private var showFeedbinCredentials = false var body: some View { - List { + Form { Section { HStack { Text("Name") @@ -63,7 +63,6 @@ struct SettingsDetailAccountView : View { } } } - .listStyle(.grouped) .navigationBarTitle(Text(verbatim: viewModel.nameForDisplay), displayMode: .inline) } diff --git a/iOS/Settings/SettingsFeedbinAccountView.swift b/iOS/Settings/SettingsFeedbinAccountView.swift index 59d7a7094..1b3f370fb 100644 --- a/iOS/Settings/SettingsFeedbinAccountView.swift +++ b/iOS/Settings/SettingsFeedbinAccountView.swift @@ -19,7 +19,7 @@ struct SettingsFeedbinAccountView : View { var body: some View { NavigationView { - List { + Form { Section(header: SettingsAccountLabelView(accountImage: "accountFeedbin", accountLabel: "Feedbin").padding() ) { @@ -57,7 +57,6 @@ struct SettingsFeedbinAccountView : View { } } .disabled(busy) - .listStyle(.grouped) .navigationBarTitle(Text(""), displayMode: .inline) .navigationBarItems(leading: Button(action: { self.dismiss() }) { Text("Cancel") } diff --git a/iOS/Settings/SettingsLocalAccountView.swift b/iOS/Settings/SettingsLocalAccountView.swift index 6247aea77..0c2b68569 100644 --- a/iOS/Settings/SettingsLocalAccountView.swift +++ b/iOS/Settings/SettingsLocalAccountView.swift @@ -15,7 +15,7 @@ struct SettingsLocalAccountView : View { var body: some View { NavigationView { - List { + Form { Section(header: SettingsAccountLabelView(accountImage: "accountLocal", accountLabel: Account.defaultLocalAccountName).padding() ) { @@ -35,7 +35,6 @@ struct SettingsLocalAccountView : View { } } } - .listStyle(.grouped) .navigationBarTitle(Text(""), displayMode: .inline) .navigationBarItems(leading: Button(action: { self.dismiss() }) { Text("Cancel") } ) } diff --git a/iOS/Settings/SettingsView.swift b/iOS/Settings/SettingsView.swift index 73a734db5..5cc2a4863 100644 --- a/iOS/Settings/SettingsView.swift +++ b/iOS/Settings/SettingsView.swift @@ -19,7 +19,7 @@ struct SettingsView : View { var body: some View { NavigationView { - List { + Form { Section(header: Text("ACCOUNTS")) { ForEach(viewModel.accounts.identified(by: \.self)) { account in @@ -32,27 +32,6 @@ struct SettingsView : View { } } - Section(header: Text("ABOUT")) { - Text("About NetNewsWire") - PresentationButton(destination: SafariView(url: URL(string: "https://ranchero.com/netnewswire/")!)) { - Text("Website") - } - PresentationButton(destination: SafariView(url: URL(string: "https://github.com/brentsimmons/NetNewsWire")!)) { - Text("Github Repository") - } - PresentationButton(destination: SafariView(url: URL(string: "https://github.com/brentsimmons/NetNewsWire/issues")!)) { - Text("Bug Tracker") - } - PresentationButton(destination: SafariView(url: URL(string: "https://github.com/brentsimmons/NetNewsWire/tree/master/Technotes")!)) { - Text("Technotes") - } - PresentationButton(destination: SafariView(url: URL(string: "https://github.com/brentsimmons/NetNewsWire/blob/master/Technotes/HowToSupportNetNewsWire.markdown")!)) { - Text("How to Support NetNewsWire") - } - Text("Add NetNewsWire News Feed") - } - .foregroundColor(.primary) - Section(header: Text("TIMELINE")) { Toggle(isOn: $viewModel.sortOldestToNewest) { Text("Sort Oldest to Newest") @@ -85,8 +64,28 @@ struct SettingsView : View { } .foregroundColor(.primary) + Section(header: Text("ABOUT"), footer: buildFooter) { + Text("About NetNewsWire") + PresentationButton(destination: SafariView(url: URL(string: "https://ranchero.com/netnewswire/")!)) { + Text("Website") + } + PresentationButton(destination: SafariView(url: URL(string: "https://github.com/brentsimmons/NetNewsWire")!)) { + Text("Github Repository") + } + PresentationButton(destination: SafariView(url: URL(string: "https://github.com/brentsimmons/NetNewsWire/issues")!)) { + Text("Bug Tracker") + } + PresentationButton(destination: SafariView(url: URL(string: "https://github.com/brentsimmons/NetNewsWire/tree/master/Technotes")!)) { + Text("Technotes") + } + PresentationButton(destination: SafariView(url: URL(string: "https://github.com/brentsimmons/NetNewsWire/blob/master/Technotes/HowToSupportNetNewsWire.markdown")!)) { + Text("How to Support NetNewsWire") + } + Text("Add NetNewsWire News Feed") + } + .foregroundColor(.primary) + } - .listStyle(.grouped) .navigationBarTitle(Text("Settings"), displayMode: .inline) } @@ -118,6 +117,12 @@ struct SettingsView : View { return ActionSheet(title: Text("Export Subscriptions..."), message: Text("Select the account to export out of."), buttons: buttons) } + var buildFooter: some View { + return Text(verbatim: "\(Bundle.main.appName) v \(Bundle.main.versionNumber) (Build \(Bundle.main.buildNumber))") + .font(.footnote) + .foregroundColor(.secondary) + } + // MARK: ViewModel class ViewModel: BindableObject { diff --git a/iOS/Settings/UIKit/DetailAccountViewController.swift b/iOS/Settings/UIKit/DetailAccountViewController.swift index e44fc0099..43b281ada 100644 --- a/iOS/Settings/UIKit/DetailAccountViewController.swift +++ b/iOS/Settings/UIKit/DetailAccountViewController.swift @@ -59,7 +59,7 @@ extension DetailAccountViewController { } let bgView = UIView() - bgView.backgroundColor = AppAssets.selectionBackgroundColor + bgView.backgroundColor = AppAssets.netNewsWireBlueColor cell.selectedBackgroundView = bgView return cell } diff --git a/iOS/Settings/UIKit/RefreshIntervalViewController.swift b/iOS/Settings/UIKit/RefreshIntervalViewController.swift index 4d933edae..f03c5cd4e 100644 --- a/iOS/Settings/UIKit/RefreshIntervalViewController.swift +++ b/iOS/Settings/UIKit/RefreshIntervalViewController.swift @@ -25,7 +25,7 @@ class RefreshIntervalViewController: UITableViewController { cell.textLabel?.adjustsFontForContentSizeCategory = true let bgView = UIView() - bgView.backgroundColor = AppAssets.selectionBackgroundColor + bgView.backgroundColor = AppAssets.netNewsWireBlueColor cell.selectedBackgroundView = bgView let userRefreshInterval = AppDefaults.refreshInterval diff --git a/iOS/Settings/UIKit/SettingsViewController.swift b/iOS/Settings/UIKit/SettingsViewController.swift index 52c7da5f7..28984738e 100644 --- a/iOS/Settings/UIKit/SettingsViewController.swift +++ b/iOS/Settings/UIKit/SettingsViewController.swift @@ -93,7 +93,7 @@ class SettingsViewController: UITableViewController { } let bgView = UIView() - bgView.backgroundColor = AppAssets.selectionBackgroundColor + bgView.backgroundColor = AppAssets.netNewsWireBlueColor cell.selectedBackgroundView = bgView return cell diff --git a/iOS/Settings/UIKit/TimelineNumberOfLinesViewController.swift b/iOS/Settings/UIKit/TimelineNumberOfLinesViewController.swift index ea0442d8a..e0f72ea69 100644 --- a/iOS/Settings/UIKit/TimelineNumberOfLinesViewController.swift +++ b/iOS/Settings/UIKit/TimelineNumberOfLinesViewController.swift @@ -25,7 +25,7 @@ class TimelineNumberOfLinesViewController: UITableViewController { cell.textLabel?.adjustsFontForContentSizeCategory = true let bgView = UIView() - bgView.backgroundColor = AppAssets.selectionBackgroundColor + bgView.backgroundColor = AppAssets.netNewsWireBlueColor cell.selectedBackgroundView = bgView cell.textLabel?.text = "\(2 + indexPath.row)" + NSLocalizedString(" lines", comment: "Lines")