diff --git a/Shared/Models/UserDefaultsStore.swift b/Shared/Models/UserDefaultsStore.swift index 58bf27c..407a4dd 100644 --- a/Shared/Models/UserDefaultsStore.swift +++ b/Shared/Models/UserDefaultsStore.swift @@ -15,6 +15,10 @@ class UserDefaultsStore { case deleteEnable case mainViewTopHeaderIndex case theme + + case contentViewHeaderTag + case contentViewHeaderTagViewOneViewType + case contentViewHeaderTagViewTwoViewType } static func getOnboarding() -> OnboardingData { diff --git a/Shared/views/ContentView.swift b/Shared/views/ContentView.swift index 7f3fddd..9000f22 100644 --- a/Shared/views/ContentView.swift +++ b/Shared/views/ContentView.swift @@ -20,24 +20,22 @@ struct ContentView: View { @AppStorage(UserDefaultsStore.Keys.deleteEnable.rawValue, store: GroupUserDefaults.groupDefaults) private var deleteEnabled = true @AppStorage(UserDefaultsStore.Keys.mainViewTopHeaderIndex.rawValue, store: GroupUserDefaults.groupDefaults) private var mainViewTopHeaderIndex = 0 @AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system + @AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var currentSelectedHeaderViewBackDays: Int = 30 + @AppStorage(UserDefaultsStore.Keys.contentViewHeaderTagViewOneViewType.rawValue, store: GroupUserDefaults.groupDefaults) private var firstSwichableHeaderViewType: MainSwitchableViewType = .total + @AppStorage(UserDefaultsStore.Keys.contentViewHeaderTagViewTwoViewType.rawValue, store: GroupUserDefaults.groupDefaults) private var secondSwichableHeaderViewType: MainSwitchableViewType = .total + @AppStorage(UserDefaultsStore.Keys.contentViewHeaderTag.rawValue, store: GroupUserDefaults.groupDefaults) private var switchableViewSelectedIndex = 1 @State private var showingSheet = false @State private var showTodayInput = true @State private var selectedEntry: MoodEntry? @State private var showUpdateEntryAlert = false @State private var headerHeight: CGFloat = ContentViewConstants.maxHeaderHeight - - @State private var switchableViewSelectedIndex = 1 @State private var headerViewType: MainSwitchableViewType = .total - @State private var currentSelectedHeaderViewViewType: MainSwitchableViewType = .total - @State private var currentSelectedHeaderViewBackDays: Int = 30 - @State private var firstSwichableHeaderViewType: MainSwitchableViewType = .total - @State private var secondSwichableHeaderViewType: MainSwitchableViewType = .total + @State private var headerOpacity: Double = 1.0 let minHeaderHeight = ContentViewConstants.minHeaderHeight let maxHeaderHeight = ContentViewConstants.maxHeaderHeight - @State private var headerOpacity: Double = 1.0 @ObservedObject var viewModel = ContentModeViewModel() @@ -296,7 +294,9 @@ struct ContentView: View { } else { // selection hre doesn't work ... TabView(selection: $switchableViewSelectedIndex) { - SwitchableView(daysBack: 30, headerTypeChanged: { viewType in + SwitchableView(daysBack: 30, + viewType: $firstSwichableHeaderViewType, + headerTypeChanged: { viewType in firstSwichableHeaderViewType = viewType currentSelectedHeaderViewViewType = firstSwichableHeaderViewType }) @@ -305,7 +305,9 @@ struct ContentView: View { .frame(minWidth: 0, maxWidth: .infinity) .contentShape(Rectangle()) - SwitchableView(daysBack: 7, headerTypeChanged: { viewType in + SwitchableView(daysBack: 7, + viewType: $secondSwichableHeaderViewType, + headerTypeChanged: { viewType in secondSwichableHeaderViewType = viewType currentSelectedHeaderViewViewType = secondSwichableHeaderViewType }) diff --git a/Shared/views/SwitchableView.swift b/Shared/views/SwitchableView.swift index 6347552..10b784d 100644 --- a/Shared/views/SwitchableView.swift +++ b/Shared/views/SwitchableView.swift @@ -23,15 +23,16 @@ enum MainSwitchableViewType: Int, CaseIterable { } struct SwitchableView: View { - @State var viewType: MainSwitchableViewType = .total + @Binding var viewType: MainSwitchableViewType var headerTypeChanged: ((MainSwitchableViewType) -> Void) let daysBack: Int @AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system - init(daysBack: Int, headerTypeChanged: @escaping ((MainSwitchableViewType) -> Void)) { + init(daysBack: Int, viewType: Binding, headerTypeChanged: @escaping ((MainSwitchableViewType) -> Void)) { self.daysBack = daysBack self.headerTypeChanged = headerTypeChanged + self._viewType = viewType } var body: some View { @@ -88,7 +89,7 @@ struct SwitchableView: View { struct SwitchableView_Previews: PreviewProvider { static var previews: some View { - SwitchableView(daysBack: 30, headerTypeChanged: { _ in + SwitchableView(daysBack: 30, viewType: .constant(.total), headerTypeChanged: { _ in }) } }