krz/libre-tasks

A free and private task manager for iOS. ios privacy swift tasks

Commit c6ca318706

c6ca3187066f3be4b28b6daf3bd3e2b410b3ae62

parent: 3f77f5ee38

Unsigned

cmc <hello@cleberg.net> · 2024-01-04 03:15 UTC

feat: move task creation to popover

Layout: unified · split

LibreTasks/ContentView.swift +31 −15
@@ -12,6 +12,7 @@ struct ContentView: View {
12 @State var newTask : String = "" 12 @State var newTask : String = ""
13 @State private var query = "" 13 @State private var query = ""
14 @State var newTaskDate: Date = Date() 14 @State var newTaskDate: Date = Date()
15 @State private var showingPopover = false
15 16
16 var filteredTasks: [Task] { 17 var filteredTasks: [Task] {
17 if query.isEmpty { 18 if query.isEmpty {
@@ -23,20 +24,6 @@ struct ContentView: View {
23 } 24 }
24 } 25 }
25 26
26 var addTaskBar: some View {
27 HStack {
28 VStack {
29 TextField("Add Task: ", text: self.$newTask)
30 DatePicker("Date: ", selection: $newTaskDate)
31 .datePickerStyle(CompactDatePickerStyle())
32 }
33 Button(action: self.addNewTask, label: {
34 Text("Add New")
35 })
36 }
37 .padding()
38 }
39
40 func addNewTask() { 27 func addNewTask() {
41 taskStore.tasks.append(Task( 28 taskStore.tasks.append(Task(
42 id: String(taskStore.tasks.count + 1), 29 id: String(taskStore.tasks.count + 1),
@@ -44,12 +31,12 @@ struct ContentView: View {
44 taskDate: newTaskDate 31 taskDate: newTaskDate
45 )) 32 ))
46 self.newTask = "" 33 self.newTask = ""
34 self.showingPopover = false
47 } 35 }
48 36
49 var body: some View { 37 var body: some View {
50 NavigationView { 38 NavigationView {
51 VStack { 39 VStack {
52 addTaskBar.padding()
53 List { 40 List {
54 ForEach(filteredTasks) { task in 41 ForEach(filteredTasks) { task in
55 VStack(alignment: .leading) { 42 VStack(alignment: .leading) {
@@ -79,6 +66,35 @@ struct ContentView: View {
79 .toolbar { 66 .toolbar {
80 ToolbarItemGroup(placement: .navigationBarTrailing) { 67 ToolbarItemGroup(placement: .navigationBarTrailing) {
81 EditButton() 68 EditButton()
69 Button {
70 showingPopover = true
71 } label: {
72 Image(systemName: "square.and.pencil")
73 }.popover(isPresented: $showingPopover) {
74 HStack {
75 Button {
76 showingPopover = false
77 } label: {
78 Text("Close")
79 }
80 Spacer()
81 Text("Add New Task")
82 Spacer()
83 Button(action: self.addNewTask, label: {
84 Text("Save")
85 })
86 }
87 .padding()
88 HStack {
89 VStack {
90 TextField("Add Task: ", text: self.$newTask)
91 DatePicker("Scheduled: ", selection: $newTaskDate)
92 .datePickerStyle(CompactDatePickerStyle())
93 }
94 }
95 .padding()
96 Spacer()
97 }
82 } 98 }
83 } 99 }
84 } 100 }
README.md +2 −1
@@ -18,7 +18,8 @@ in Swift.
18### Backlog 18### Backlog
19 19
20- [ ] Notification reminders for upcoming tasks 20- [ ] Notification reminders for upcoming tasks
21- [ ] Possibly a settings page for app themes, credits/licensing, etc. 21- [ ] Recurring reminders
22- [ ] Support for tags, priorities, groups, etc.
22 23
23## Collaboration 24## Collaboration
24 25