aboutsummaryrefslogtreecommitdiff
path: root/LibreTasks
diff options
context:
space:
mode:
authorChristian Cleberg <hello@cleberg.net>2023-05-22 15:35:40 -0500
committerChristian Cleberg <hello@cleberg.net>2023-05-22 15:35:40 -0500
commitaf1dc021544a1980374125868b2ab1a71d54a651 (patch)
tree6ab354fcc1684cc6834ff3dc6578ba99bb480dc3 /LibreTasks
downloadlibre-tasks-af1dc021544a1980374125868b2ab1a71d54a651.tar.gz
libre-tasks-af1dc021544a1980374125868b2ab1a71d54a651.tar.bz2
libre-tasks-af1dc021544a1980374125868b2ab1a71d54a651.zip
initial commit
Diffstat (limited to 'LibreTasks')
-rw-r--r--LibreTasks/Assets.xcassets/AccentColor.colorset/Contents.json11
-rw-r--r--LibreTasks/Assets.xcassets/AppIcon.appiconset/1024.pngbin0 -> 68145 bytes
-rw-r--r--LibreTasks/Assets.xcassets/AppIcon.appiconset/114.pngbin0 -> 4034 bytes
-rw-r--r--LibreTasks/Assets.xcassets/AppIcon.appiconset/120.pngbin0 -> 4276 bytes
-rw-r--r--LibreTasks/Assets.xcassets/AppIcon.appiconset/180.pngbin0 -> 6678 bytes
-rw-r--r--LibreTasks/Assets.xcassets/AppIcon.appiconset/29.pngbin0 -> 899 bytes
-rw-r--r--LibreTasks/Assets.xcassets/AppIcon.appiconset/40.pngbin0 -> 1359 bytes
-rw-r--r--LibreTasks/Assets.xcassets/AppIcon.appiconset/57.pngbin0 -> 1951 bytes
-rw-r--r--LibreTasks/Assets.xcassets/AppIcon.appiconset/58.pngbin0 -> 1926 bytes
-rw-r--r--LibreTasks/Assets.xcassets/AppIcon.appiconset/60.pngbin0 -> 2047 bytes
-rw-r--r--LibreTasks/Assets.xcassets/AppIcon.appiconset/80.pngbin0 -> 2852 bytes
-rw-r--r--LibreTasks/Assets.xcassets/AppIcon.appiconset/87.pngbin0 -> 3076 bytes
-rw-r--r--LibreTasks/Assets.xcassets/AppIcon.appiconset/Contents.json1
-rw-r--r--LibreTasks/Assets.xcassets/Contents.json6
-rw-r--r--LibreTasks/Assets.xcassets/appstore.pngbin0 -> 68145 bytes
-rw-r--r--LibreTasks/ContentView.swift100
-rw-r--r--LibreTasks/DataStore.swift19
-rw-r--r--LibreTasks/LibreTasksApp.swift16
-rw-r--r--LibreTasks/Preview Content/Preview Assets.xcassets/Contents.json6
19 files changed, 159 insertions, 0 deletions
diff --git a/LibreTasks/Assets.xcassets/AccentColor.colorset/Contents.json b/LibreTasks/Assets.xcassets/AccentColor.colorset/Contents.json
new file mode 100644
index 0000000..eb87897
--- /dev/null
+++ b/LibreTasks/Assets.xcassets/AccentColor.colorset/Contents.json
@@ -0,0 +1,11 @@
+{
+ "colors" : [
+ {
+ "idiom" : "universal"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/1024.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/1024.png
new file mode 100644
index 0000000..6c2a7b2
--- /dev/null
+++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/1024.png
Binary files differ
diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/114.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/114.png
new file mode 100644
index 0000000..992a173
--- /dev/null
+++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/114.png
Binary files differ
diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/120.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/120.png
new file mode 100644
index 0000000..0c8500d
--- /dev/null
+++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/120.png
Binary files differ
diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/180.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/180.png
new file mode 100644
index 0000000..7cd7bb4
--- /dev/null
+++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/180.png
Binary files differ
diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/29.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/29.png
new file mode 100644
index 0000000..ee402bc
--- /dev/null
+++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/29.png
Binary files differ
diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/40.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/40.png
new file mode 100644
index 0000000..335d011
--- /dev/null
+++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/40.png
Binary files differ
diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/57.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/57.png
new file mode 100644
index 0000000..a4115d4
--- /dev/null
+++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/57.png
Binary files differ
diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/58.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/58.png
new file mode 100644
index 0000000..8d44b24
--- /dev/null
+++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/58.png
Binary files differ
diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/60.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/60.png
new file mode 100644
index 0000000..b8e4956
--- /dev/null
+++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/60.png
Binary files differ
diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/80.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/80.png
new file mode 100644
index 0000000..0e0fdf3
--- /dev/null
+++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/80.png
Binary files differ
diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/87.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/87.png
new file mode 100644
index 0000000..4749e30
--- /dev/null
+++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/87.png
Binary files differ
diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/Contents.json b/LibreTasks/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000..73d3b7f
--- /dev/null
+++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1 @@
+{"images":[{"size":"60x60","expected-size":"180","filename":"180.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"40x40","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"60x60","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"57x57","expected-size":"57","filename":"57.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"87","filename":"87.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"57x57","expected-size":"114","filename":"114.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"60","filename":"60.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"1024x1024","filename":"1024.png","expected-size":"1024","idiom":"ios-marketing","folder":"Assets.xcassets/AppIcon.appiconset/","scale":"1x"}]} \ No newline at end of file
diff --git a/LibreTasks/Assets.xcassets/Contents.json b/LibreTasks/Assets.xcassets/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/LibreTasks/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/LibreTasks/Assets.xcassets/appstore.png b/LibreTasks/Assets.xcassets/appstore.png
new file mode 100644
index 0000000..6c2a7b2
--- /dev/null
+++ b/LibreTasks/Assets.xcassets/appstore.png
Binary files differ
diff --git a/LibreTasks/ContentView.swift b/LibreTasks/ContentView.swift
new file mode 100644
index 0000000..4203e91
--- /dev/null
+++ b/LibreTasks/ContentView.swift
@@ -0,0 +1,100 @@
+//
+// ContentView.swift
+// LibreTasks
+//
+//
+
+import SwiftUI
+import Combine
+
+struct ContentView: View {
+ @ObservedObject var taskStore = TaskDataStore()
+ @State var newTask : String = ""
+ @State private var query = ""
+ @State var newTaskDate: Date = Date()
+
+ var filteredTasks: [Task] {
+ if query.isEmpty {
+ return self.taskStore.tasks
+ } else {
+ return taskStore.tasks.filter {
+ $0.taskItem.localizedCaseInsensitiveContains(query)
+ }
+ }
+ }
+
+ 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),
+ taskItem: newTask,
+ taskDate: newTaskDate
+ ))
+ self.newTask = ""
+ }
+
+ var body: some View {
+ NavigationView {
+ VStack {
+ addTaskBar.padding()
+ List {
+ ForEach(filteredTasks) { task in
+ VStack(alignment: .leading) {
+ Text(task.taskItem)
+ Spacer()
+ if (Date() > task.taskDate) {
+ HStack {
+ Text(task.taskDate, style: .date)
+ .foregroundColor(.red)
+ .font(.caption)
+ Text(task.taskDate, style: .time)
+ .foregroundColor(.red)
+ .font(.caption)
+ }
+ } else {
+ HStack {
+ Text(task.taskDate, style: .date)
+ .font(.caption)
+ Text(task.taskDate, style: .time)
+ .font(.caption)
+ }
+ }
+ }
+ }
+ .onDelete(perform: self.deleteTask)
+ }
+ .navigationBarTitle("Tasks")
+ .toolbar {
+ ToolbarItemGroup(placement: .navigationBarTrailing) {
+ EditButton()
+ }
+ }
+ }
+ }
+ .searchable(text: $query, prompt: "Search tasks")
+ }
+
+ func deleteTask(at offsets: IndexSet) {
+ taskStore.tasks.remove(atOffsets: offsets)
+ }
+
+}
+
+struct ContentView_Previews: PreviewProvider {
+ static var previews: some View {
+ ContentView()
+ }
+}
diff --git a/LibreTasks/DataStore.swift b/LibreTasks/DataStore.swift
new file mode 100644
index 0000000..1628979
--- /dev/null
+++ b/LibreTasks/DataStore.swift
@@ -0,0 +1,19 @@
+//
+// DataStore.swift
+// LibreTasks
+//
+//
+
+import Foundation
+import SwiftUI
+import Combine
+
+struct Task: Identifiable {
+ var id = String()
+ var taskItem = String()
+ var taskDate = Date()
+}
+
+class TaskDataStore: ObservableObject {
+ @Published var tasks = [Task]()
+}
diff --git a/LibreTasks/LibreTasksApp.swift b/LibreTasks/LibreTasksApp.swift
new file mode 100644
index 0000000..e9ccbe8
--- /dev/null
+++ b/LibreTasks/LibreTasksApp.swift
@@ -0,0 +1,16 @@
+//
+// LibreTasksApp.swift
+// LibreTasks
+//
+//
+
+import SwiftUI
+
+@main
+struct LibreTasksApp: App {
+ var body: some Scene {
+ WindowGroup {
+ ContentView()
+ }
+ }
+}
diff --git a/LibreTasks/Preview Content/Preview Assets.xcassets/Contents.json b/LibreTasks/Preview Content/Preview Assets.xcassets/Contents.json
new file mode 100644
index 0000000..73c0059
--- /dev/null
+++ b/LibreTasks/Preview Content/Preview Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}