67 lines
1.7 KiB
Swift
Raw Normal View History

2020-06-30 11:03:33 -05:00
//
// TimelineView.swift
// NetNewsWire
//
// Created by Maurice Parker on 6/30/20.
// Copyright © 2020 Ranchero Software. All rights reserved.
//
import SwiftUI
struct TimelineView: View {
2020-07-01 11:13:11 -05:00
@EnvironmentObject private var timelineModel: TimelineModel
2020-07-11 18:22:47 -05:00
@State var navigate = false
2020-07-01 11:13:11 -05:00
2020-07-11 18:22:47 -05:00
@ViewBuilder var body: some View {
#if os(macOS)
2020-07-12 14:43:52 -05:00
VStack {
HStack {
2020-07-12 19:43:25 -05:00
TimelineSortOrderView()
2020-07-12 14:43:52 -05:00
Spacer()
Button (action: {
withAnimation {
timelineModel.toggleReadFilter()
2020-07-12 14:43:52 -05:00
}
}, label: {
if timelineModel.isReadFiltered ?? false {
2020-07-12 14:43:52 -05:00
AppAssets.filterActiveImage
} else {
AppAssets.filterInactiveImage
}
})
.hidden(timelineModel.isReadFiltered == nil)
2020-07-12 14:43:52 -05:00
.padding(.top, 8).padding(.trailing)
.buttonStyle(PlainButtonStyle())
.help(timelineModel.isReadFiltered ?? false ? "Show Read Articles" : "Filter Read Articles")
2020-07-12 14:43:52 -05:00
}
ZStack {
2020-07-16 11:14:05 -05:00
NavigationLink(destination: ArticleContainerView(), isActive: $navigate) {
2020-07-12 14:43:52 -05:00
EmptyView()
}.hidden()
List(timelineModel.timelineItems, selection: $timelineModel.selectedArticleIDs) { timelineItem in
TimelineItemView(timelineItem: timelineItem)
}
}
.onChange(of: timelineModel.selectedArticleIDs) { ids in
navigate = !ids.isEmpty
2020-07-05 18:53:18 -05:00
}
2020-07-11 18:22:47 -05:00
}
.navigationTitle(Text(verbatim: timelineModel.nameForDisplay))
2020-07-11 18:22:47 -05:00
#else
List(timelineModel.timelineItems) { timelineItem in
ZStack {
TimelineItemView(timelineItem: timelineItem)
2020-07-16 11:42:07 -05:00
NavigationLink(destination: ArticleContainerView(),
tag: timelineItem.article.articleID,
selection: $timelineModel.selectedArticleID) {
EmptyView()
}.buttonStyle(PlainButtonStyle())
}
2020-07-11 18:22:47 -05:00
}
.navigationBarTitle(Text(verbatim: timelineModel.nameForDisplay), displayMode: .inline)
2020-07-11 18:22:47 -05:00
#endif
2020-06-30 11:03:33 -05:00
}
2020-07-11 18:22:47 -05:00
2020-06-30 11:03:33 -05:00
}