diff options
Diffstat (limited to 'LibreTasks')
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 Binary files differnew file mode 100644 index 0000000..6c2a7b2 --- /dev/null +++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/1024.png diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/114.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/114.png Binary files differnew file mode 100644 index 0000000..992a173 --- /dev/null +++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/114.png diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/120.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/120.png Binary files differnew file mode 100644 index 0000000..0c8500d --- /dev/null +++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/120.png diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/180.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/180.png Binary files differnew file mode 100644 index 0000000..7cd7bb4 --- /dev/null +++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/180.png diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/29.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/29.png Binary files differnew file mode 100644 index 0000000..ee402bc --- /dev/null +++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/29.png diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/40.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/40.png Binary files differnew file mode 100644 index 0000000..335d011 --- /dev/null +++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/40.png diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/57.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/57.png Binary files differnew file mode 100644 index 0000000..a4115d4 --- /dev/null +++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/57.png diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/58.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/58.png Binary files differnew file mode 100644 index 0000000..8d44b24 --- /dev/null +++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/58.png diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/60.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/60.png Binary files differnew file mode 100644 index 0000000..b8e4956 --- /dev/null +++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/60.png diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/80.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/80.png Binary files differnew file mode 100644 index 0000000..0e0fdf3 --- /dev/null +++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/80.png diff --git a/LibreTasks/Assets.xcassets/AppIcon.appiconset/87.png b/LibreTasks/Assets.xcassets/AppIcon.appiconset/87.png Binary files differnew file mode 100644 index 0000000..4749e30 --- /dev/null +++ b/LibreTasks/Assets.xcassets/AppIcon.appiconset/87.png 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 Binary files differnew file mode 100644 index 0000000..6c2a7b2 --- /dev/null +++ b/LibreTasks/Assets.xcassets/appstore.png 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 + } +} |