From 47d12f4fe7038f648febf8022f82fa16529f9386 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Thu, 24 Dec 2020 08:45:07 +0800 Subject: [PATCH 1/2] Widget Accessibility Reduces article count on display when using larger text sizes --- NetNewsWire.xcodeproj/project.pbxproj | 4 ++++ Widget/Shared Views/SizeCategories.swift | 26 ++++++++++++++++++++++++ Widget/Widget Views/StarredWidget.swift | 12 ++++++++--- Widget/Widget Views/TodayWidget.swift | 12 ++++++++--- Widget/Widget Views/UnreadWidget.swift | 12 ++++++++--- 5 files changed, 57 insertions(+), 9 deletions(-) create mode 100644 Widget/Shared Views/SizeCategories.swift diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index b00224239..445e0738f 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -132,6 +132,7 @@ 17D5F17124B0BC6700375168 /* SidebarToolbarModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17D5F17024B0BC6700375168 /* SidebarToolbarModel.swift */; }; 17D5F17224B0BC6700375168 /* SidebarToolbarModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17D5F17024B0BC6700375168 /* SidebarToolbarModel.swift */; }; 17D5F19524B0C1DD00375168 /* SidebarToolbarModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 172199F024AB716900A31D04 /* SidebarToolbarModifier.swift */; }; + 17E0084625941887000C23F0 /* SizeCategories.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17E0084525941887000C23F0 /* SizeCategories.swift */; }; 17E4DBD624BFC53E00FE462A /* AdvancedPreferencesModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17E4DBD524BFC53E00FE462A /* AdvancedPreferencesModel.swift */; }; 3B3A32A5238B820900314204 /* FeedWranglerAccountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B3A328B238B820900314204 /* FeedWranglerAccountViewController.swift */; }; 3B826DCB2385C84800FC1ADB /* AccountsFeedWrangler.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3B826DB02385C84800FC1ADB /* AccountsFeedWrangler.xib */; }; @@ -1474,6 +1475,7 @@ 17D232A724AFF10A0005F075 /* AddWebFeedModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddWebFeedModel.swift; sourceTree = ""; }; 17D3CEE2257C4D2300E74939 /* AddAccountSignUp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddAccountSignUp.swift; sourceTree = ""; }; 17D5F17024B0BC6700375168 /* SidebarToolbarModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SidebarToolbarModel.swift; sourceTree = ""; }; + 17E0084525941887000C23F0 /* SizeCategories.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SizeCategories.swift; sourceTree = ""; }; 17E4DBD524BFC53E00FE462A /* AdvancedPreferencesModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdvancedPreferencesModel.swift; sourceTree = ""; }; 3B3A328B238B820900314204 /* FeedWranglerAccountViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedWranglerAccountViewController.swift; sourceTree = ""; }; 3B826DB02385C84800FC1ADB /* AccountsFeedWrangler.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AccountsFeedWrangler.xib; sourceTree = ""; }; @@ -2290,6 +2292,7 @@ isa = PBXGroup; children = ( 176814562564BD0600D98635 /* ArticleItemView.swift */, + 17E0084525941887000C23F0 /* SizeCategories.swift */, ); path = "Shared Views"; sourceTree = ""; @@ -4545,6 +4548,7 @@ 176814652564BD7F00D98635 /* WidgetData.swift in Sources */, 1768145E2564BD7B00D98635 /* WidgetDataDecoder.swift in Sources */, 176814132564BC8A00D98635 /* WidgetBundle.swift in Sources */, + 17E0084625941887000C23F0 /* SizeCategories.swift in Sources */, 176814462564BCD200D98635 /* StarredWidget.swift in Sources */, 176814572564BD0600D98635 /* ArticleItemView.swift in Sources */, 1768144E2564BCE000D98635 /* SmartFeedSummaryWidget.swift in Sources */, diff --git a/Widget/Shared Views/SizeCategories.swift b/Widget/Shared Views/SizeCategories.swift new file mode 100644 index 000000000..ecc1d632f --- /dev/null +++ b/Widget/Shared Views/SizeCategories.swift @@ -0,0 +1,26 @@ +// +// SizeCategories.swift +// NetNewsWire iOS Widget Extension +// +// Created by Stuart Breckenridge on 24/12/2020. +// Copyright © 2020 Ranchero Software. All rights reserved. +// + +import SwiftUI + +struct SizeCategories { + + let largeSizeCategories: [ContentSizeCategory] = [.extraExtraLarge, + .extraExtraExtraLarge, + .accessibilityMedium, + .accessibilityLarge, + .accessibilityExtraLarge, + .accessibilityExtraExtraLarge, + .accessibilityExtraExtraExtraLarge] + + + func isSizeCategoryLarge(category: ContentSizeCategory) -> Bool { + largeSizeCategories.filter{ $0 == category }.count == 1 + } + +} diff --git a/Widget/Widget Views/StarredWidget.swift b/Widget/Widget Views/StarredWidget.swift index 919d2819e..685f52c5d 100644 --- a/Widget/Widget Views/StarredWidget.swift +++ b/Widget/Widget Views/StarredWidget.swift @@ -12,6 +12,7 @@ import SwiftUI struct StarredWidgetView : View { @Environment(\.widgetFamily) var family: WidgetFamily + @Environment(\.sizeCategory) var sizeCategory: ContentSizeCategory var entry: Provider.Entry @@ -64,10 +65,15 @@ struct StarredWidgetView : View { } func maxCount() -> Int { - if family == .systemLarge { - return entry.widgetData.currentStarredCount > 7 ? 7 : entry.widgetData.currentStarredCount + var reduceAccessibilityCount: Int = 0 + if SizeCategories().isSizeCategoryLarge(category: sizeCategory) { + reduceAccessibilityCount = 1 } - return entry.widgetData.currentStarredCount > 3 ? 3 : entry.widgetData.currentStarredCount + + if family == .systemLarge { + return entry.widgetData.currentStarredCount >= 7 ? (7 - reduceAccessibilityCount) : entry.widgetData.currentStarredCount + } + return entry.widgetData.currentStarredCount >= 3 ? (3 - reduceAccessibilityCount) : entry.widgetData.currentStarredCount } var inboxZero: some View { diff --git a/Widget/Widget Views/TodayWidget.swift b/Widget/Widget Views/TodayWidget.swift index 653c35d14..f2481b000 100644 --- a/Widget/Widget Views/TodayWidget.swift +++ b/Widget/Widget Views/TodayWidget.swift @@ -12,6 +12,7 @@ import SwiftUI struct TodayWidgetView : View { @Environment(\.widgetFamily) var family: WidgetFamily + @Environment(\.sizeCategory) var sizeCategory: ContentSizeCategory var entry: Provider.Entry @@ -63,10 +64,15 @@ struct TodayWidgetView : View { } func maxCount() -> Int { - if family == .systemLarge { - return entry.widgetData.todayArticles.count > 7 ? 7 : entry.widgetData.todayArticles.count + var reduceAccessibilityCount: Int = 0 + if SizeCategories().isSizeCategoryLarge(category: sizeCategory) { + reduceAccessibilityCount = 1 } - return entry.widgetData.todayArticles.count > 3 ? 3 : entry.widgetData.todayArticles.count + + if family == .systemLarge { + return entry.widgetData.todayArticles.count >= 7 ? (7 - reduceAccessibilityCount) : entry.widgetData.todayArticles.count + } + return entry.widgetData.todayArticles.count >= 3 ? (3 - reduceAccessibilityCount) : entry.widgetData.todayArticles.count } var inboxZero: some View { diff --git a/Widget/Widget Views/UnreadWidget.swift b/Widget/Widget Views/UnreadWidget.swift index 21f42319d..c05aab2c0 100644 --- a/Widget/Widget Views/UnreadWidget.swift +++ b/Widget/Widget Views/UnreadWidget.swift @@ -12,6 +12,7 @@ import SwiftUI struct UnreadWidgetView : View { @Environment(\.widgetFamily) var family: WidgetFamily + @Environment(\.sizeCategory) var sizeCategory: ContentSizeCategory var entry: Provider.Entry @@ -63,10 +64,15 @@ struct UnreadWidgetView : View { } func maxCount() -> Int { - if family == .systemLarge { - return entry.widgetData.unreadArticles.count > 7 ? 7 : entry.widgetData.unreadArticles.count + var reduceAccessibilityCount: Int = 0 + if SizeCategories().isSizeCategoryLarge(category: sizeCategory) { + reduceAccessibilityCount = 1 } - return entry.widgetData.unreadArticles.count > 3 ? 3 : entry.widgetData.unreadArticles.count + + if family == .systemLarge { + return entry.widgetData.unreadArticles.count >= 7 ? (7 - reduceAccessibilityCount) : entry.widgetData.unreadArticles.count + } + return entry.widgetData.unreadArticles.count >= 3 ? (3 - reduceAccessibilityCount) : entry.widgetData.unreadArticles.count } var inboxZero: some View { From adf5a6d33ec184744866bf273ef380a2d25d9a26 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Thu, 24 Dec 2020 08:50:45 +0800 Subject: [PATCH 2/2] images are sized the same --- Widget/Widget Views/StarredWidget.swift | 2 +- Widget/Widget Views/TodayWidget.swift | 2 +- Widget/Widget Views/UnreadWidget.swift | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Widget/Widget Views/StarredWidget.swift b/Widget/Widget Views/StarredWidget.swift index 685f52c5d..6a6b6dce9 100644 --- a/Widget/Widget Views/StarredWidget.swift +++ b/Widget/Widget Views/StarredWidget.swift @@ -59,7 +59,7 @@ struct StarredWidgetView : View { var starredImage: some View { Image(systemName: "star.fill") .resizable() - .frame(width: 25, height: 25, alignment: .center) + .frame(width: 30, height: 30, alignment: .center) .cornerRadius(4) .foregroundColor(.yellow) } diff --git a/Widget/Widget Views/TodayWidget.swift b/Widget/Widget Views/TodayWidget.swift index f2481b000..d4dc64fe2 100644 --- a/Widget/Widget Views/TodayWidget.swift +++ b/Widget/Widget Views/TodayWidget.swift @@ -58,7 +58,7 @@ struct TodayWidgetView : View { var todayImage: some View { Image(systemName: "sun.max.fill") .resizable() - .frame(width: 25, height: 25, alignment: .center) + .frame(width: 30, height: 30, alignment: .center) .cornerRadius(4) .foregroundColor(.orange) } diff --git a/Widget/Widget Views/UnreadWidget.swift b/Widget/Widget Views/UnreadWidget.swift index c05aab2c0..afd270986 100644 --- a/Widget/Widget Views/UnreadWidget.swift +++ b/Widget/Widget Views/UnreadWidget.swift @@ -58,7 +58,7 @@ struct UnreadWidgetView : View { var unreadImage: some View { Image(systemName: "largecircle.fill.circle") .resizable() - .frame(width: 25, height: 25, alignment: .center) + .frame(width: 30, height: 30, alignment: .center) .cornerRadius(4) .foregroundColor(.accentColor) }