mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
Implement iOS progress view #2162
This commit is contained in:
57
Multiplatform/Shared/Sidebar/RefreshProgressView.swift
Normal file
57
Multiplatform/Shared/Sidebar/RefreshProgressView.swift
Normal file
@@ -0,0 +1,57 @@
|
||||
//
|
||||
// RefreshProgressView.swift
|
||||
// NetNewsWire
|
||||
//
|
||||
// Created by Phil Viso on 7/2/20.
|
||||
// Copyright © 2020 Ranchero Software. All rights reserved.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct RefreshProgressView: View {
|
||||
|
||||
@EnvironmentObject var refreshProgressModel: RefreshProgressModel
|
||||
|
||||
@ViewBuilder var body: some View {
|
||||
switch refreshProgressModel.state {
|
||||
case .refreshProgress(let progress):
|
||||
ProgressView(value: progress)
|
||||
.frame(width: progressViewWidth())
|
||||
case .lastRefreshDateText(let text):
|
||||
Text(text)
|
||||
.lineLimit(1)
|
||||
.font(.caption)
|
||||
.foregroundColor(.secondary)
|
||||
case .none:
|
||||
EmptyView()
|
||||
}
|
||||
}
|
||||
|
||||
// MARK -
|
||||
|
||||
private func progressViewWidth() -> CGFloat {
|
||||
#if os(iOS)
|
||||
return 100.0
|
||||
#endif
|
||||
|
||||
#if os(macOS)
|
||||
return 40.0
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
struct RefreshProgressView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
Group {
|
||||
RefreshProgressView()
|
||||
.environmentObject(refreshProgressModel(lastRefreshDate: nil, tasksCompleted: 1, totalTasks: 2))
|
||||
.previewDisplayName("Refresh in progress")
|
||||
|
||||
RefreshProgressView()
|
||||
.environmentObject(refreshProgressModel(lastRefreshDate: Date(timeIntervalSinceNow: -120.0), tasksCompleted: 0, totalTasks: 0))
|
||||
.previewDisplayName("Last refreshed with date")
|
||||
}
|
||||
.previewLayout(.sizeThatFits)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user