feat: adjust toolbar items

This commit is contained in:
dscyrescotti
2024-06-27 22:30:47 +07:00
parent c75506c10d
commit 657fb3bf07
+66 -21
View File
@@ -8,7 +8,8 @@
import SwiftUI import SwiftUI
struct MemosView: View { struct MemosView: View {
@Environment(\.managedObjectContext) var managedObjectContext @Environment(\.colorScheme) var colorScheme
@Environment(\.horizontalSizeClass) var horizontalSizeClass
@FetchRequest var memoObjects: FetchedResults<MemoObject> @FetchRequest var memoObjects: FetchedResults<MemoObject>
@@ -39,10 +40,14 @@ struct MemosView: View {
var body: some View { var body: some View {
NavigationStack { NavigationStack {
memoGrid memoGrid
.navigationTitle("Memola")
.searchable(text: $query, placement: .toolbar, prompt: Text("Search")) .searchable(text: $query, placement: .toolbar, prompt: Text("Search"))
.toolbar { .toolbar {
ToolbarItemGroup(placement: .primaryAction) { ToolbarItem(placement: .topBarLeading) {
Text("Memola")
.font(.title3)
.fontWeight(.bold)
}
ToolbarItemGroup(placement: .topBarTrailing) {
HStack(spacing: 5) { HStack(spacing: 5) {
Button { Button {
createMemo(title: "Untitled") createMemo(title: "Untitled")
@@ -50,27 +55,50 @@ struct MemosView: View {
Image(systemName: "square.and.pencil") Image(systemName: "square.and.pencil")
} }
.hoverEffect(.lift) .hoverEffect(.lift)
Menu { if horizontalSizeClass == .compact {
Picker("", selection: $sort) { Menu {
ForEach(Sort.all) { sort in VStack {
Text(sort.name) Picker("", selection: $sort) {
.tag(sort) ForEach(Sort.all) { sort in
Text(sort.name)
.tag(sort)
}
}
.pickerStyle(.automatic)
Picker("", selection: $filter) {
ForEach(Filter.all) { filter in
Text(filter.name)
.tag(filter)
}
}
.pickerStyle(.automatic)
} }
} label: {
Image(systemName: "ellipsis.circle")
} }
} label: { } else {
Image(systemName: "arrow.up.arrow.down.circle") Menu {
} Picker("", selection: $sort) {
.hoverEffect(.lift) ForEach(Sort.all) { sort in
Menu { Text(sort.name)
Picker("", selection: $filter) { .tag(sort)
ForEach(Filter.all) { filter in }
Text(filter.name)
.tag(filter)
} }
} label: {
Image(systemName: "arrow.up.arrow.down.circle")
}
.hoverEffect(.lift)
Menu {
Picker("", selection: $filter) {
ForEach(Filter.all) { filter in
Text(filter.name)
.tag(filter)
}
}
.pickerStyle(.automatic)
} label: {
Image(systemName: "line.3.horizontal.decrease.circle")
} }
.pickerStyle(.automatic)
} label: {
Image(systemName: "line.3.horizontal.decrease.circle")
} }
} }
} }
@@ -128,6 +156,23 @@ struct MemosView: View {
Rectangle() Rectangle()
.frame(height: cellHeight) .frame(height: cellHeight)
.clipShape(RoundedRectangle(cornerRadius: 10)) .clipShape(RoundedRectangle(cornerRadius: 10))
.overlay(alignment: .topTrailing) {
Image(systemName: memoObject.isFavorite ? "star.fill" : "star")
.foregroundStyle(memoObject.isFavorite ? .yellow : .white)
.frame(width: 20, height: 20)
.padding(5)
.background(.black.opacity(0.5))
.cornerRadius(5)
.contentShape(Rectangle())
.onTapGesture {
memoObject.isFavorite.toggle()
withPersistence(\.viewContext) { context in
try context.saveIfNeeded()
}
}
.contentTransition(.symbolEffect(.replace))
.padding(5)
}
VStack(alignment: .leading, spacing: 2) { VStack(alignment: .leading, spacing: 2) {
Text(memoObject.title) Text(memoObject.title)
.font(.headline) .font(.headline)
@@ -149,7 +194,7 @@ struct MemosView: View {
memoObject.createdAt = .now memoObject.createdAt = .now
memoObject.updatedAt = .now memoObject.updatedAt = .now
let canvasObject = CanvasObject(context: managedObjectContext) let canvasObject = CanvasObject(\.viewContext)
canvasObject.width = 8_000 canvasObject.width = 8_000
canvasObject.height = 8_000 canvasObject.height = 8_000
canvasObject.gridMode = 1 canvasObject.gridMode = 1