NetNewsWire/Multiplatform/Shared/Sidebar/SidebarItemView.swift

107 lines
2.1 KiB
Swift
Raw Normal View History

2020-06-29 23:58:10 +02:00
//
// SidebarItemView.swift
// NetNewsWire
//
// Created by Maurice Parker on 6/29/20.
// Copyright © 2020 Ranchero Software. All rights reserved.
//
import SwiftUI
2020-06-30 03:09:11 +02:00
import Account
2020-06-29 23:58:10 +02:00
struct SidebarItemView: View {
2020-06-30 03:09:11 +02:00
@StateObject var feedImageLoader = FeedImageLoader()
2020-06-29 23:58:10 +02:00
var sidebarItem: SidebarItem
var body: some View {
HStack {
2020-06-30 03:09:11 +02:00
if let image = feedImageLoader.image {
IconImageView(iconImage: image)
}
2020-06-29 23:58:10 +02:00
Text(verbatim: sidebarItem.nameForDisplay)
Spacer()
if sidebarItem.unreadCount > 0 {
UnreadCountView(count: sidebarItem.unreadCount)
}
}
2020-06-30 03:09:11 +02:00
.onAppear {
if let feed = sidebarItem.represented as? Feed {
feedImageLoader.loadImage(for: feed)
}
2020-06-30 04:31:50 +02:00
}.contextMenu(menuItems: {
if let _ = sidebarItem.represented as? PseudoFeed {
Button(action: {}) {
HStack {
Text("Mark All as Read")
Spacer()
Image("markAllAsRead")
.resizable()
.aspectRatio(contentMode: .fit)
}
}
} else if let _ = sidebarItem.represented as? Feed {
Button(action: {}) {
HStack {
Text("Mark All as Read")
Spacer()
Image("markAllAsRead")
.resizable()
.aspectRatio(contentMode: .fit)
}
}
Divider()
Button(action: {
}) {
HStack {
Text("Open Home Page")
Spacer()
Image(systemName: "safari")
}
}
Divider()
Button(action: {}) {
HStack {
Text("Copy Feed URL")
Spacer()
Image(systemName: "doc.on.doc")
}
}
Button(action: {}) {
HStack {
Text("Copy Home Page URL")
Spacer()
Image(systemName: "doc.on.doc")
}
}
Divider()
Button(action: {}) {
HStack {
Text("Rename")
Spacer()
Image(systemName: "textformat")
}
}
Button(action: {}) {
HStack {
Text("Delete").foregroundColor(.red)
Spacer()
Image(systemName: "trash").foregroundColor(.red)
}
}
} else {
Button(action: {}) {
HStack {
Text("Mark All As Read in \(sidebarItem.nameForDisplay)")
Spacer()
Image("markAllAsRead")
.resizable()
.aspectRatio(contentMode: .fit)
}
}
}
})
2020-06-29 23:58:10 +02:00
}
}