From 2aa59a084a55873b11d6af61efb454350944ea40 Mon Sep 17 00:00:00 2001 From: Trey t Date: Sat, 29 Jan 2022 11:22:59 -0600 Subject: [PATCH] build out enable delete option but cant use b/c list view is not a list re-arrange the content view --- Shared/Models/UserDefaultsStore.swift | 1 + Shared/views/ContentView.swift | 114 +++++++++++++------------- Shared/views/SettingsView.swift | 43 ++++++---- en.lproj/Localizable.strings | 1 + 4 files changed, 89 insertions(+), 70 deletions(-) diff --git a/Shared/Models/UserDefaultsStore.swift b/Shared/Models/UserDefaultsStore.swift index 66ffdc6..f69bc15 100644 --- a/Shared/Models/UserDefaultsStore.swift +++ b/Shared/Models/UserDefaultsStore.swift @@ -12,6 +12,7 @@ class UserDefaultsStore { case savedOnboardingData case needsOnboarding case useCloudKit + case deleteEnable } static func getOnboarding() -> OnboardingData { diff --git a/Shared/views/ContentView.swift b/Shared/views/ContentView.swift index 6952f84..88768e1 100644 --- a/Shared/views/ContentView.swift +++ b/Shared/views/ContentView.swift @@ -12,7 +12,8 @@ import Charts struct ContentView: View { @Environment(\.managedObjectContext) private var viewContext @AppStorage(UserDefaultsStore.Keys.needsOnboarding.rawValue, store: GroupUserDefaults.groupDefaults) private var needsOnboarding = true - + @AppStorage(UserDefaultsStore.Keys.deleteEnable.rawValue, store: GroupUserDefaults.groupDefaults) private var deleteEnabled = true + @State private var showingSheet = false @State private var showTodayInput = true @State private var selectedEntry: MoodEntry? @@ -155,30 +156,7 @@ struct ContentView: View { ForEach(months.sorted(by: { $0.key > $1.key }), id: \.key) { month, entries in - Section(header: - HStack{ - Text(monthName(fromMonthInt: month)) - .font(.title2) - .foregroundColor(Color(UIColor.label)) - Text(String(year)) - .font(.title2) - .foregroundColor(Color(UIColor.label)) - }) { - // for reach all entries - ForEach(entries.sorted(by: { - return $0.forDate! > $1.forDate! - }), id: \.self) { entry in - entryListView(entry: entry) - .onTapGesture(perform: { - selectedEntry = entry - showUpdateEntryAlert = true - }) - }.onDelete(perform: { offsets in - withAnimation { - viewModel.delete(offsets: offsets, inMonth: month, inYear: year) - } - }) - } + monthListView(month: month, year: year, entries: entries) } } } @@ -194,6 +172,36 @@ struct ContentView: View { } } + private func monthListView(month: Int, year: Int, entries: [MoodEntry]) -> some View { + Section(header: + HStack{ + Text(monthName(fromMonthInt: month)) + .font(.title2) + .foregroundColor(Color(UIColor.label)) + Text(String(year)) + .font(.title2) + .foregroundColor(Color(UIColor.label)) + }) { + // for reach all entries + ForEach(entries.sorted(by: { + return $0.forDate! > $1.forDate! + }), id: \.self) { entry in + entryListView(entry: entry) + .onTapGesture(perform: { + selectedEntry = entry + showUpdateEntryAlert = true + }) + } +// if deleteEnabled { +// .onDelete(perform: { offsets in +// withAnimation { +// viewModel.delete(offsets: offsets, inMonth: month, inYear: year) +// } +// }) +// } + } + } + private func entryListView(entry: MoodEntry) -> some View { HStack { entry.mood.icon @@ -274,40 +282,34 @@ struct ContentView: View { } private var mainView: some View { - ZStack { - BGView().equatable() - - VStack{ - settingsButtonView - .padding(.top, 50) - - if viewModel.hasNoData { - Spacer() - emptyView - Spacer() - } else { - ZStack { - VStack { - headerView - Spacer() - } - .opacity(headerOpacity) - - VStack { - SmallRollUpHeaderView(fakeData: false, backDays: 30) - .padding([.leading, .trailing]) - Spacer() - } - .opacity(1 - headerOpacity) - - listView - .padding([.leading, .trailing]) - .padding(.top, headerHeight+10) - .padding(.bottom, 60) + VStack { + settingsButtonView + if viewModel.hasNoData { + Spacer() + emptyView + Spacer() + } else { + ZStack { + VStack { + headerView + Spacer() } + .opacity(headerOpacity) + + VStack { + SmallRollUpHeaderView(fakeData: false, backDays: 30) + .padding([.leading, .trailing]) + Spacer() + } + .opacity(1 - headerOpacity) } + .frame(height: headerHeight + 20) + listView + .padding([.leading, .trailing]) } - } + }.background( + BGView().equatable() + ) } } diff --git a/Shared/views/SettingsView.swift b/Shared/views/SettingsView.swift index cbf5e20..f49753a 100644 --- a/Shared/views/SettingsView.swift +++ b/Shared/views/SettingsView.swift @@ -21,26 +21,28 @@ struct SettingsView: View { @ObservedObject var syncMonitor = SyncMonitor.shared @AppStorage(UserDefaultsStore.Keys.useCloudKit.rawValue, store: GroupUserDefaults.groupDefaults) private var useCloudKit = false - + @AppStorage(UserDefaultsStore.Keys.deleteEnable.rawValue, store: GroupUserDefaults.groupDefaults) private var deleteEnabled = true + var body: some View { ZStack { Color(UIColor.secondarySystemBackground) VStack { - closeButtonView - .padding() - cloudKitEnable - addTestDataCell - clearDB - changeIcon - showOnboardingButton - whyBackgroundMode - specialThanksCell - - if useCloudKit { - cloudKitStatus + Group { + closeButtonView + .padding() + cloudKitEnable + addTestDataCell + clearDB + changeIcon + showOnboardingButton + whyBackgroundMode + specialThanksCell + + if useCloudKit { + cloudKitStatus + } } - Spacer() } .padding() @@ -230,6 +232,19 @@ struct SettingsView: View { .fixedSize(horizontal: false, vertical: true) .clipShape(RoundedRectangle(cornerRadius: 25, style: .continuous)) } + + private var canDelete: some View { + ZStack { + Color(UIColor.systemBackground) + VStack { + Toggle(String(localized: "settings_use_delete_enable"), + isOn: $deleteEnabled) + .padding() + } + } + .fixedSize(horizontal: false, vertical: true) + .clipShape(RoundedRectangle(cornerRadius: 25, style: .continuous)) + } } struct SettingsView_Previews: PreviewProvider { diff --git a/en.lproj/Localizable.strings b/en.lproj/Localizable.strings index 7aacb08..c820e21 100644 --- a/en.lproj/Localizable.strings +++ b/en.lproj/Localizable.strings @@ -54,6 +54,7 @@ "settings_view_show_onboarding" = "Show onboarding"; "settings_use_cloudkit_title" = "Use CloudKit"; "settings_use_cloudkit_body" = "CloudKit fucking sucks"; +"settings_use_delete_enable" = "Allow deletion of entry"; "mood_value_great" = "Great"; "mood_value_good" = "Good";