krz/libre-tasks

A free and private task manager for iOS.

clone: git clone https://gitbay.org/krz/libre-tasks.git

c6ca3187066f3be4b28b6daf3bd3e2b410b3ae62

unsigned

author: Christian Cleberg <hello@cleberg.net> · 2024-01-04T03:15:48Z

feat: move task creation to popover
 LibreTasks/ContentView.swift | 46 +++++++++++++++++++++++++++++---------------
 README.md                    |  3 ++-
 2 files changed, 33 insertions(+), 16 deletions(-)

diff --git a/LibreTasks/ContentView.swift b/LibreTasks/ContentView.swift
index b382020..226db4d 100644
--- a/LibreTasks/ContentView.swift
+++ b/LibreTasks/ContentView.swift
@@ -12,6 +12,7 @@ struct ContentView: View {
     @State var newTask : String = ""
     @State private var query = ""
     @State var newTaskDate: Date = Date()
+    @State private var showingPopover = false
     
     var filteredTasks: [Task] {
         if query.isEmpty {
@@ -23,20 +24,6 @@ struct ContentView: View {
         }
     }
     
-    var addTaskBar: some View {
-        HStack {
-            VStack {
-                TextField("Add Task: ", text: self.$newTask)
-                DatePicker("Date: ", selection: $newTaskDate)
-                    .datePickerStyle(CompactDatePickerStyle())
-            }
-            Button(action: self.addNewTask, label: {
-                Text("Add New")
-            })
-        }
-        .padding()
-    }
-    
     func addNewTask() {
         taskStore.tasks.append(Task(
             id: String(taskStore.tasks.count + 1),
@@ -44,12 +31,12 @@ struct ContentView: View {
             taskDate: newTaskDate
         ))
         self.newTask = ""
+        self.showingPopover = false
     }
 
     var body: some View {
         NavigationView {
             VStack {
-                addTaskBar.padding()
                 List {
                     ForEach(filteredTasks) { task in
                         VStack(alignment: .leading) {
@@ -79,6 +66,35 @@ struct ContentView: View {
                 .toolbar {
                     ToolbarItemGroup(placement: .navigationBarTrailing) {
                         EditButton()
+                        Button {
+                            showingPopover = true
+                        } label: {
+                            Image(systemName: "square.and.pencil")
+                        }.popover(isPresented: $showingPopover) {
+                            HStack {
+                                Button {
+                                    showingPopover = false
+                                } label: {
+                                    Text("Close")
+                                }
+                                Spacer()
+                                Text("Add New Task")
+                                Spacer()
+                                Button(action: self.addNewTask, label: {
+                                    Text("Save")
+                                })
+                            }
+                            .padding()
+                            HStack {
+                                VStack {
+                                    TextField("Add Task: ", text: self.$newTask)
+                                    DatePicker("Scheduled: ", selection: $newTaskDate)
+                                        .datePickerStyle(CompactDatePickerStyle())
+                                }
+                            }
+                            .padding()
+                            Spacer()
+                        }
                     }
                 }
             }
diff --git a/README.md b/README.md
index 015adfe..2f224b0 100644
--- a/README.md
+++ b/README.md
@@ -18,7 +18,8 @@ in Swift.
 ### Backlog
 
 - [ ] Notification reminders for upcoming tasks
-- [ ] Possibly a settings page for app themes, credits/licensing, etc.
+- [ ] Recurring reminders
+- [ ] Support for tags, priorities, groups, etc.
 
 ## Collaboration