Impressia/Vernissage/Widgets/MainNavigationOptions.swift

129 lines
4.1 KiB
Swift

//
// https://mczachurski.dev
// Copyright © 2023 Marcin Czachurski and the repository contributors.
// Licensed under the Apache License 2.0.
//
import Foundation
import SwiftUI
import EnvironmentKit
struct MainNavigationOptions: View {
@Environment(ApplicationState.self) var applicationState
let onViewModeIconTap: (MainView.ViewMode) -> Void
@Binding var hiddenMenuItems: [MainView.ViewMode]
init(hiddenMenuItems: Binding<[MainView.ViewMode]>, onViewModeIconTap: @escaping (MainView.ViewMode) -> Void) {
self._hiddenMenuItems = hiddenMenuItems
self.onViewModeIconTap = onViewModeIconTap
}
var body: some View {
if !self.hiddenMenuItems.contains(where: { $0 == .home }) {
Button {
self.onViewModeIconTap(.home)
} label: {
HStack {
Text(MainView.ViewMode.home.title)
MainView.ViewMode.home.getImage(applicationState: applicationState)
}
}
}
if !self.hiddenMenuItems.contains(where: { $0 == .local }) {
Button {
self.onViewModeIconTap(.local)
} label: {
HStack {
Text(MainView.ViewMode.local.title)
MainView.ViewMode.local.getImage(applicationState: applicationState)
}
}
}
if !self.hiddenMenuItems.contains(where: { $0 == .federated }) {
Button {
self.onViewModeIconTap(.federated)
} label: {
HStack {
Text(MainView.ViewMode.federated.title)
MainView.ViewMode.federated.getImage(applicationState: applicationState)
}
}
}
if !self.hiddenMenuItems.contains(where: { $0 == .search }) {
Button {
self.onViewModeIconTap(.search)
} label: {
HStack {
Text(MainView.ViewMode.search.title)
MainView.ViewMode.search.getImage(applicationState: applicationState)
}
}
}
Divider()
Menu {
Button {
self.onViewModeIconTap(.trendingPhotos)
} label: {
HStack {
Text(MainView.ViewMode.trendingPhotos.title)
MainView.ViewMode.trendingPhotos.getImage(applicationState: applicationState)
}
}
Button {
self.onViewModeIconTap(.trendingTags)
} label: {
HStack {
Text(MainView.ViewMode.trendingTags.title)
MainView.ViewMode.trendingTags.getImage(applicationState: applicationState)
}
}
Button {
self.onViewModeIconTap(.trendingAccounts)
} label: {
HStack {
Text(MainView.ViewMode.trendingAccounts.title)
MainView.ViewMode.trendingAccounts.getImage(applicationState: applicationState)
}
}
} label: {
HStack {
Text("mainview.tab.trending", comment: "Trending menu section")
Image(systemName: "chart.line.uptrend.xyaxis")
}
}
Divider()
if !self.hiddenMenuItems.contains(where: { $0 == .profile }) {
Button {
self.onViewModeIconTap(.profile)
} label: {
HStack {
Text(MainView.ViewMode.profile.title)
MainView.ViewMode.profile.getImage(applicationState: applicationState)
}
}
}
if !self.hiddenMenuItems.contains(where: { $0 == .notifications }) {
Button {
self.onViewModeIconTap(.notifications)
} label: {
HStack {
Text(MainView.ViewMode.notifications.title)
MainView.ViewMode.notifications.getImage(applicationState: applicationState)
}
}
}
}
}