diff options
| author | Fuwn <[email protected]> | 2025-07-05 05:59:04 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-07-05 05:59:04 -0700 |
| commit | 6381fe585268bda17d0859937568290205575e2c (patch) | |
| tree | 2db111ba87535288d75e785b92e5277b5632c09f /Sora/Views/Settings | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-6381fe585268bda17d0859937568290205575e2c.tar.xz sora-testing-6381fe585268bda17d0859937568290205575e2c.zip | |
feat: Development commit
Diffstat (limited to 'Sora/Views/Settings')
3 files changed, 83 insertions, 0 deletions
diff --git a/Sora/Views/Settings/Collections/SettingsCollectionsListView.swift b/Sora/Views/Settings/Collections/SettingsCollectionsListView.swift new file mode 100644 index 0000000..c474b79 --- /dev/null +++ b/Sora/Views/Settings/Collections/SettingsCollectionsListView.swift @@ -0,0 +1,16 @@ +import SwiftUI + +struct SettingsCollectionsListView: View { + @EnvironmentObject private var settings: SettingsManager + + var body: some View { + List { + ForEach(settings.folders) { folder in + NavigationLink(destination: SettingsCollectionsView(folder: folder)) { + Text(folder.name) + } + } + } + .navigationTitle("Collections") + } +} diff --git a/Sora/Views/Settings/Collections/SettingsCollectionsView.swift b/Sora/Views/Settings/Collections/SettingsCollectionsView.swift new file mode 100644 index 0000000..a7ce5a7 --- /dev/null +++ b/Sora/Views/Settings/Collections/SettingsCollectionsView.swift @@ -0,0 +1,61 @@ +import SwiftUI + +struct SettingsCollectionsView: View { + @EnvironmentObject private var settings: SettingsManager + + @State private var isDeleteConfirmationPresented = false + @State private var isRenameAlertPresented = false + @State private var newCollectionName = "" + let folder: SettingsFolder + + var body: some View { + Form { + Section(header: Text("Actions")) { + Button(action: { + newCollectionName = folder.name + isRenameAlertPresented = true + }) { + Label("Rename", systemImage: "pencil") + } + + Button( + role: .destructive, + action: { + isDeleteConfirmationPresented = true + } + ) { + Label("Delete", systemImage: "trash") + } + } + } + .navigationTitle(folder.name) + .alert( + "Rename Collection", + isPresented: $isRenameAlertPresented + ) { + TextField("Collection Name", text: $newCollectionName) + + Button("Cancel", role: .cancel) { + newCollectionName = "" + isRenameAlertPresented = false + } + + Button("Rename") { + settings.renameFolder(folder, to: newCollectionName) + + newCollectionName = "" + isRenameAlertPresented = false + } + } + .alert( + "Are you sure you want to delete this collection?", + isPresented: $isDeleteConfirmationPresented + ) { + Button("Delete", role: .destructive) { + settings.folders.removeAll { $0.id == folder.id } + } + + Button("Cancel", role: .cancel) { () } + } + } +} diff --git a/Sora/Views/Settings/SettingsView.swift b/Sora/Views/Settings/SettingsView.swift index 1cd5255..3315301 100644 --- a/Sora/Views/Settings/SettingsView.swift +++ b/Sora/Views/Settings/SettingsView.swift @@ -20,6 +20,12 @@ struct SettingsView: View { SettingsSearchView() } + Section(header: Text("Collections")) { + NavigationLink(destination: SettingsCollectionsListView()) { + Text("Manage Collections") + } + } + Section(header: Text("Settings")) { SettingsSettingsView() } |