mirror of
https://github.com/dscyrescotti/Memola.git
synced 2026-05-17 21:27:09 +02:00
feat: adjust toolbar items
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user