move to contentview

add homeView
respect show completed events in home
archive view
move inot contentview
new mac icon
remove mac icons from the variants
This commit is contained in:
neon443
2025-05-28 12:56:58 +01:00
parent dfc3a9290a
commit 1179810ac2
69 changed files with 136 additions and 469 deletions

View File

@@ -0,0 +1,33 @@
//
// ArchiveView.swift
// MacNearFuture
//
// Created by neon443 on 28/05/2025.
//
import SwiftUI
struct ArchiveView: View {
@StateObject var viewModel: EventViewModel
@StateObject var settingsModel: SettingsViewModel
var filteredEvents: [Event] {
return viewModel.events.filter { $0.complete }
}
var body: some View {
ScrollView {
ForEach(filteredEvents) { event in
EventListView(viewModel: viewModel, event: event)
}
}
.scrollContentBackground(.hidden)
}
}
#Preview {
ArchiveView(
viewModel: dummyEventViewModel(),
settingsModel: dummySettingsViewModel()
)
}

View File

@@ -8,16 +8,37 @@
import SwiftUI
struct ContentView: View {
@ObservedObject var viewModel: EventViewModel
@ObservedObject var settingsModel: SettingsViewModel
@StateObject var viewModel: EventViewModel
@StateObject var settingsModel: SettingsViewModel
var body: some View {
ScrollView {
ForEach(viewModel.events) { event in
EventListView(viewModel: viewModel, event: event)
NavigationSplitView(preferredCompactColumn: .constant(.sidebar)) {
List {
NavigationLink {
HomeView(
viewModel: viewModel,
settingsModel: settingsModel
)
} label: {
Image(systemName: "house")
Text("Home")
}
NavigationLink {
ArchiveView(
viewModel: viewModel,
settingsModel: settingsModel
)
} label: {
Image(systemName: "tray.full")
Text("Archive")
}
}
} detail: {
}
.scrollContentBackground(.hidden)
.tint(settingsModel.settings.tint.color)
.frame(minWidth: 450, minHeight: 550)
.containerBackground(.ultraThinMaterial, for: .window)
}
}

View File

@@ -0,0 +1,37 @@
//
// HomeView.swift
// MacNearFuture
//
// Created by neon443 on 28/05/2025.
//
import SwiftUI
struct HomeView: View {
@StateObject var viewModel: EventViewModel
@StateObject var settingsModel: SettingsViewModel
var filteredEvents: [Event] {
switch settingsModel.settings.showCompletedInHome {
case true:
return viewModel.events
case false:
return viewModel.events.filter { !$0.complete }
}
}
var body: some View {
ScrollView {
ForEach(filteredEvents) { event in
EventListView(viewModel: viewModel, event: event)
}
}
.scrollContentBackground(.hidden)
}
}
#Preview {
HomeView(
viewModel: dummyEventViewModel(),
settingsModel: dummySettingsViewModel()
)
}