NetNewsWire/Multiplatform/Shared/Article/ArticleToolbarModifier.swift

121 lines
2.7 KiB
Swift

//
// ArticleToolbarModifier.swift
// NetNewsWire
//
// Created by Maurice Parker on 7/5/20.
// Copyright © 2020 Ranchero Software. All rights reserved.
//
import SwiftUI
struct ArticleToolbarModifier: ViewModifier {
@EnvironmentObject private var sceneModel: SceneModel
@State private var showActivityView = false
func body(content: Content) -> some View {
content
.toolbar {
#if os(iOS)
ToolbarItem(placement: .primaryAction) {
HStack(spacing: 20) {
Button {
} label: {
AppAssets.prevArticleImage
.font(.title3)
}
.help("Previouse Unread")
Button {
} label: {
AppAssets.nextArticleImage.font(.title3)
}
.help("Next Unread")
}
}
ToolbarItem(placement: .bottomBar) {
Button {
sceneModel.toggleReadStatusForSelectedArticles()
} label: {
if sceneModel.readButtonState == true {
AppAssets.readClosedImage
} else {
AppAssets.readOpenImage
}
}
.disabled(sceneModel.readButtonState == nil)
.help(sceneModel.readButtonState ?? false ? "Mark as Unread" : "Mark as Read")
}
ToolbarItem(placement: .bottomBar) {
Spacer()
}
ToolbarItem(placement: .bottomBar) {
Button {
sceneModel.toggleStarredStatusForSelectedArticles()
} label: {
if sceneModel.starButtonState ?? false {
AppAssets.starClosedImage
} else {
AppAssets.starOpenImage
}
}
.disabled(sceneModel.starButtonState == nil)
.help(sceneModel.starButtonState ?? false ? "Mark as Unstarred" : "Mark as Starred")
}
ToolbarItem(placement: .bottomBar) {
Spacer()
}
ToolbarItem(placement: .bottomBar) {
Button {
sceneModel.goToNextUnread()
} label: {
AppAssets.nextUnreadArticleImage.font(.title3)
}
.disabled(sceneModel.nextUnreadButtonState == nil)
.help("Next Unread")
}
ToolbarItem(placement: .bottomBar) {
Spacer()
}
ToolbarItem(placement: .bottomBar) {
Button {
} label: {
AppAssets.articleExtractorOff
.font(.title3)
}
.disabled(sceneModel.extractorButtonState == nil)
.help("Reader View")
}
ToolbarItem(placement: .bottomBar) {
Spacer()
}
ToolbarItem(placement: .bottomBar) {
Button {
showActivityView.toggle()
} label: {
AppAssets.shareImage.font(.title3)
}
.disabled(sceneModel.shareButtonState == nil)
.help("Share")
.sheet(isPresented: $showActivityView) {
if let article = sceneModel.selectedArticles.first, let link = article.preferredLink, let url = URL(string: link) {
ActivityViewController(title: article.title, url: url)
}
}
}
#endif
}
}
}