From af1dc021544a1980374125868b2ab1a71d54a651 Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Mon, 22 May 2023 15:35:40 -0500 Subject: initial commit --- .../AccentColor.colorset/Contents.json | 11 +++ .../Assets.xcassets/AppIcon.appiconset/1024.png | Bin 0 -> 68145 bytes .../Assets.xcassets/AppIcon.appiconset/114.png | Bin 0 -> 4034 bytes .../Assets.xcassets/AppIcon.appiconset/120.png | Bin 0 -> 4276 bytes .../Assets.xcassets/AppIcon.appiconset/180.png | Bin 0 -> 6678 bytes .../Assets.xcassets/AppIcon.appiconset/29.png | Bin 0 -> 899 bytes .../Assets.xcassets/AppIcon.appiconset/40.png | Bin 0 -> 1359 bytes .../Assets.xcassets/AppIcon.appiconset/57.png | Bin 0 -> 1951 bytes .../Assets.xcassets/AppIcon.appiconset/58.png | Bin 0 -> 1926 bytes .../Assets.xcassets/AppIcon.appiconset/60.png | Bin 0 -> 2047 bytes .../Assets.xcassets/AppIcon.appiconset/80.png | Bin 0 -> 2852 bytes .../Assets.xcassets/AppIcon.appiconset/87.png | Bin 0 -> 3076 bytes .../AppIcon.appiconset/Contents.json | 1 + LibreTasks/Assets.xcassets/Contents.json | 6 ++ LibreTasks/Assets.xcassets/appstore.png | Bin 0 -> 68145 bytes LibreTasks/ContentView.swift | 100 +++++++++++++++++++++ LibreTasks/DataStore.swift | 19 ++++ LibreTasks/LibreTasksApp.swift | 16 ++++ .../Preview Assets.xcassets/Contents.json | 6 ++ 19 files changed, 159 insertions(+) create mode 100644 LibreTasks/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 LibreTasks/Assets.xcassets/AppIcon.appiconset/1024.png create mode 100644 LibreTasks/Assets.xcassets/AppIcon.appiconset/114.png create mode 100644 LibreTasks/Assets.xcassets/AppIcon.appiconset/120.png create mode 100644 LibreTasks/Assets.xcassets/AppIcon.appiconset/180.png create mode 100644 LibreTasks/Assets.xcassets/AppIcon.appiconset/29.png create mode 100644 LibreTasks/Assets.xcassets/AppIcon.appiconset/40.png create mode 100644 LibreTasks/Assets.xcassets/AppIcon.appiconset/57.png create mode 100644 LibreTasks/Assets.xcassets/AppIcon.appiconset/58.png create mode 100644 LibreTasks/Assets.xcassets/AppIcon.appiconset/60.png create mode 100644 LibreTasks/Assets.xcassets/AppIcon.appiconset/80.png create mode 100644 LibreTasks/Assets.xcassets/AppIcon.appiconset/87.png create mode 100644 LibreTasks/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 LibreTasks/Assets.xcassets/Contents.json create mode 100644 LibreTasks/Assets.xcassets/appstore.png create mode 100644 LibreTasks/ContentView.swift create mode 100644 LibreTasks/DataStore.swift create mode 100644 LibreTasks/LibreTasksApp.swift create mode 100644 LibreTasks/Preview Content/Preview Assets.xcassets/Contents.json (limited to 'LibreTasks') 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 Binary files /dev/null and b/LibreTasks/Assets.xcassets/AppIcon.appiconset/1024.png 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 Binary files /dev/null and b/LibreTasks/Assets.xcassets/AppIcon.appiconset/114.png 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 Binary files /dev/null and b/LibreTasks/Assets.xcassets/AppIcon.appiconset/120.png 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 Binary files /dev/null and b/LibreTasks/Assets.xcassets/AppIcon.appiconset/180.png 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 Binary files /dev/null and b/LibreTasks/Assets.xcassets/AppIcon.appiconset/29.png 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 Binary files /dev/null and b/LibreTasks/Assets.xcassets/AppIcon.appiconset/40.png 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 Binary files /dev/null and b/LibreTasks/Assets.xcassets/AppIcon.appiconset/57.png 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 Binary files /dev/null and b/LibreTasks/Assets.xcassets/AppIcon.appiconset/58.png 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 Binary files /dev/null and b/LibreTasks/Assets.xcassets/AppIcon.appiconset/60.png 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 Binary files /dev/null and b/LibreTasks/Assets.xcassets/AppIcon.appiconset/80.png 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 Binary files /dev/null and b/LibreTasks/Assets.xcassets/AppIcon.appiconset/87.png 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 Binary files /dev/null and b/LibreTasks/Assets.xcassets/appstore.png 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 + } +} -- cgit v1.2.3-70-g09d2