86 lines
2.4 KiB
Swift
86 lines
2.4 KiB
Swift
import SwiftUI
|
|
import SFSafeSymbols
|
|
|
|
|
|
enum ContentDisplayType {
|
|
case markdown
|
|
case html
|
|
case rendered
|
|
}
|
|
|
|
@main
|
|
struct CHDataManagementApp: App {
|
|
|
|
private var navigationTitle: String {
|
|
""
|
|
}
|
|
|
|
@StateObject
|
|
private var content: Content = .init()
|
|
|
|
@State
|
|
private var selectedLanguage: ContentLanguage = .english
|
|
|
|
var body: some Scene {
|
|
WindowGroup {
|
|
TabView {
|
|
Tab("Posts", systemImage: SFSymbol.rectangleAndPencilAndEllipsis.rawValue) {
|
|
PostList()
|
|
}
|
|
Tab("Pages", systemImage: SFSymbol.textBelowPhoto.rawValue) {
|
|
PageListView()
|
|
}
|
|
Tab("Tags", systemImage: SFSymbol.tag.rawValue) {
|
|
TagsListView()
|
|
}
|
|
Tab("Images", systemImage: SFSymbol.photo.rawValue) {
|
|
ImagesView()
|
|
}
|
|
Tab("Files", systemImage: SFSymbol.doc.rawValue) {
|
|
FilesView()
|
|
}
|
|
Tab("Settings", systemImage: SFSymbol.gear.rawValue) {
|
|
SettingsView()
|
|
}
|
|
}
|
|
.environment(\.language, selectedLanguage)
|
|
.environmentObject(content)
|
|
.toolbar {
|
|
ToolbarItem(placement: .primaryAction) {
|
|
Picker("", selection: $selectedLanguage) {
|
|
Text("English")
|
|
.tag(ContentLanguage.english)
|
|
Text("German")
|
|
.tag(ContentLanguage.german)
|
|
}.pickerStyle(.segmented)
|
|
}
|
|
}
|
|
.onAppear(perform: importOldContent)
|
|
.onReceive(Timer.publish(every: 60.0, on: .main, in: .common).autoconnect()) { _ in
|
|
save()
|
|
}
|
|
.toolbar {
|
|
ToolbarItem(placement: .navigation) {
|
|
Button(action: save) {
|
|
Text("Save")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private func save() {
|
|
// Save all changed files
|
|
content.saveToDisk()
|
|
}
|
|
|
|
private func importOldContent() {
|
|
do {
|
|
try content.loadFromDisk()
|
|
//content.importOldContent()
|
|
} catch {
|
|
print("Failed to load content: \(error.localizedDescription)")
|
|
}
|
|
}
|
|
}
|