layout fixes

• Ensure counts do not wrap
• Reduces number of articles on large widget due to increased spacing.
• Consistent vertical spacing between articles and dividers
This commit is contained in:
Stuart Breckenridge 2020-11-29 17:12:53 +08:00
parent e5b97abe17
commit 9206463e46
No known key found for this signature in database
GPG Key ID: 1F11FD62007DC331
4 changed files with 18 additions and 13 deletions

View File

@ -16,8 +16,10 @@ import Articles
@available(iOS 14, *)
struct WidgetDataEncoder {
private static var log = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: "Application")
static func encodeWidgetData() {
os_log(.debug, "Starting encoding widget data.")
os_log(.debug, log: log, "Starting encoding widget data.")
do {
// Unread Articles
let unreadArticles = try SmartFeedsController.shared.unreadFeed.fetchArticles().sorted(by: { $0.datePublished ?? .distantPast > $1.datePublished ?? .distantPast })
@ -70,16 +72,16 @@ struct WidgetDataEncoder {
lastUpdateTime: Date())
let encodedData = try JSONEncoder().encode(latestData)
os_log(.debug, "Finished encoding widget data.")
os_log(.debug, log: log, "Finished encoding widget data.")
let appGroup = Bundle.main.object(forInfoDictionaryKey: "AppGroup") as! String
let containerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: appGroup)
let dataURL = containerURL?.appendingPathComponent("widget-data.json")
if FileManager.default.fileExists(atPath: dataURL!.path) {
try FileManager.default.removeItem(at: dataURL!)
os_log(.debug, "Removed widget data from container.")
os_log(.debug, log: log, "Removed widget data from container.")
}
if FileManager.default.createFile(atPath: dataURL!.path, contents: encodedData, attributes: nil) {
os_log(.debug, "Wrote widget data to container.")
os_log(.debug, log: log, "Wrote widget data to container.")
WidgetCenter.shared.reloadAllTimelines()
}
} catch {

View File

@ -25,7 +25,7 @@ struct StarredWidgetView : View {
VStack(alignment: .leading) {
starredImage
Spacer()
Text(L10n.localizedCount(entry.widgetData.currentStarredCount)).bold().font(Font.system(.footnote, design: .rounded))
Text(L10n.localizedCount(entry.widgetData.currentStarredCount)).bold().font(Font.system(.footnote, design: .rounded)).minimumScaleFactor(0.5).lineLimit(1)
Text(L10n.starred.lowercased()).bold().font(Font.system(.footnote).lowercaseSmallCaps()).minimumScaleFactor(0.5).lineLimit(1)
}
.frame(width: metrics.size.width * 0.15)
@ -37,7 +37,8 @@ struct StarredWidgetView : View {
Divider()
ArticleItemView(article: entry.widgetData.starredArticles[i],
deepLink: WidgetDeepLink.starredArticle(id: entry.widgetData.starredArticles[i].id).url)
.padding(.vertical, 6)
.padding(.top, 8)
.padding(.bottom, 4)
} else {
ArticleItemView(article: entry.widgetData.starredArticles[i],
deepLink: WidgetDeepLink.starredArticle(id: entry.widgetData.starredArticles[i].id).url)
@ -70,7 +71,7 @@ struct StarredWidgetView : View {
func maxCount() -> Int {
if family == .systemLarge {
return entry.widgetData.currentStarredCount > 8 ? 8 : entry.widgetData.currentStarredCount
return entry.widgetData.currentStarredCount > 7 ? 7 : entry.widgetData.currentStarredCount
}
return entry.widgetData.currentStarredCount > 3 ? 3 : entry.widgetData.currentStarredCount
}

View File

@ -25,7 +25,7 @@ struct TodayWidgetView : View {
VStack(alignment: .leading) {
todayImage
Spacer()
Text(L10n.localizedCount(entry.widgetData.currentTodayCount)).bold().font(Font.system(.footnote, design: .rounded))
Text(L10n.localizedCount(entry.widgetData.currentTodayCount)).bold().font(Font.system(.footnote, design: .rounded)).minimumScaleFactor(0.5).lineLimit(1)
Text(L10n.today.lowercased()).bold().font(Font.system(.footnote).lowercaseSmallCaps()).minimumScaleFactor(0.5).lineLimit(1)
}
.frame(width: metrics.size.width * 0.15)
@ -37,7 +37,8 @@ struct TodayWidgetView : View {
Divider()
ArticleItemView(article: entry.widgetData.todayArticles[i],
deepLink: WidgetDeepLink.todayArticle(id: entry.widgetData.todayArticles[i].id).url)
.padding(.vertical, 6)
.padding(.top, 8)
.padding(.bottom, 4)
} else {
ArticleItemView(article: entry.widgetData.unreadArticles[i],
deepLink: WidgetDeepLink.todayArticle(id: entry.widgetData.todayArticles[i].id).url)
@ -69,7 +70,7 @@ struct TodayWidgetView : View {
func maxCount() -> Int {
if family == .systemLarge {
return entry.widgetData.todayArticles.count > 8 ? 8 : entry.widgetData.todayArticles.count
return entry.widgetData.todayArticles.count > 7 ? 7 : entry.widgetData.todayArticles.count
}
return entry.widgetData.todayArticles.count > 3 ? 3 : entry.widgetData.todayArticles.count
}

View File

@ -25,7 +25,7 @@ struct UnreadWidgetView : View {
VStack(alignment: .leading) {
unreadImage
Spacer()
Text(L10n.localizedCount(entry.widgetData.currentUnreadCount)).bold().font(Font.system(.footnote, design: .rounded))
Text(L10n.localizedCount(entry.widgetData.currentUnreadCount)).bold().font(Font.system(.footnote, design: .rounded)).minimumScaleFactor(0.5).lineLimit(1)
Text(L10n.unread.lowercased()).bold().font(Font.system(.footnote).lowercaseSmallCaps()).minimumScaleFactor(0.5).lineLimit(1)
}
.frame(width: metrics.size.width * 0.15)
@ -37,7 +37,8 @@ struct UnreadWidgetView : View {
Divider()
ArticleItemView(article: entry.widgetData.unreadArticles[i],
deepLink: WidgetDeepLink.unreadArticle(id: entry.widgetData.unreadArticles[i].id).url)
.padding(.vertical, 6)
.padding(.top, 8)
.padding(.bottom, 4)
} else {
ArticleItemView(article: entry.widgetData.unreadArticles[i],
deepLink: WidgetDeepLink.unreadArticle(id: entry.widgetData.unreadArticles[i].id).url)
@ -69,7 +70,7 @@ struct UnreadWidgetView : View {
func maxCount() -> Int {
if family == .systemLarge {
return entry.widgetData.unreadArticles.count > 8 ? 8 : entry.widgetData.unreadArticles.count
return entry.widgetData.unreadArticles.count > 7 ? 7 : entry.widgetData.unreadArticles.count
}
return entry.widgetData.unreadArticles.count > 3 ? 3 : entry.widgetData.unreadArticles.count
}