different home screen layouts
This commit is contained in:
@@ -22,6 +22,7 @@ struct DayView: View {
|
||||
@AppStorage(UserDefaultsStore.Keys.moodImages.rawValue, store: GroupUserDefaults.groupDefaults) private var imagePack: MoodImages = .FontAwesome
|
||||
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default
|
||||
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = DefaultTextColor.textColor
|
||||
@AppStorage(UserDefaultsStore.Keys.dayViewStyle.rawValue, store: GroupUserDefaults.groupDefaults) private var dayViewStyle: DayViewStyle = .classic
|
||||
|
||||
// store a value that gets changed when user updates custom colors to update the view since the moodTint doesn't change
|
||||
@AppStorage(UserDefaultsStore.Keys.customMoodTintUpdateNumber.rawValue, store: GroupUserDefaults.groupDefaults) private var customMoodTintUpdateNumber: Int = 0
|
||||
@@ -162,13 +163,23 @@ extension DayView {
|
||||
.background(.ultraThinMaterial)
|
||||
}
|
||||
|
||||
private var gridColumns: [GridItem] {
|
||||
[
|
||||
GridItem(.flexible(), spacing: 10),
|
||||
GridItem(.flexible(), spacing: 10),
|
||||
GridItem(.flexible(), spacing: 10)
|
||||
]
|
||||
}
|
||||
|
||||
@ViewBuilder
|
||||
private func monthListView(month: Int, year: Int, entries: [MoodEntryModel]) -> some View {
|
||||
VStack(spacing: 12) {
|
||||
// for reach all entries
|
||||
ForEach(entries.sorted(by: {
|
||||
return $0.forDate > $1.forDate
|
||||
}), id: \.self) { entry in
|
||||
if filteredDays.currentFilters.contains(entry.weekDay) {
|
||||
let filteredEntries = entries.sorted(by: { $0.forDate > $1.forDate })
|
||||
.filter { filteredDays.currentFilters.contains($0.weekDay) }
|
||||
|
||||
if dayViewStyle.isGridLayout {
|
||||
// Grid layout - 3 per row
|
||||
LazyVGrid(columns: gridColumns, spacing: 10) {
|
||||
ForEach(filteredEntries, id: \.self) { entry in
|
||||
EntryListView(entry: entry)
|
||||
.contentShape(Rectangle())
|
||||
.onTapGesture(perform: {
|
||||
@@ -177,9 +188,23 @@ extension DayView {
|
||||
})
|
||||
}
|
||||
}
|
||||
.padding(.horizontal, 12)
|
||||
.padding(.top, 8)
|
||||
} else {
|
||||
// Standard vertical layout
|
||||
VStack(spacing: 12) {
|
||||
ForEach(filteredEntries, id: \.self) { entry in
|
||||
EntryListView(entry: entry)
|
||||
.contentShape(Rectangle())
|
||||
.onTapGesture(perform: {
|
||||
selectedEntry = entry
|
||||
showUpdateEntryAlert = true
|
||||
})
|
||||
}
|
||||
}
|
||||
.padding(.horizontal, 12)
|
||||
.padding(.top, 8)
|
||||
}
|
||||
.padding(.horizontal, 12)
|
||||
.padding(.top, 8)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user