diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000..6dc3402f Binary files /dev/null and b/.DS_Store differ diff --git a/Todoey.xcodeproj/project.pbxproj b/Todoey.xcodeproj/project.pbxproj index 423123ef..b4f609d6 100644 --- a/Todoey.xcodeproj/project.pbxproj +++ b/Todoey.xcodeproj/project.pbxproj @@ -7,17 +7,23 @@ objects = { /* Begin PBXBuildFile section */ + 253DFDAB26177B2900FC7E5A /* K.swift in Sources */ = {isa = PBXBuildFile; fileRef = 253DFDAA26177B2900FC7E5A /* K.swift */; }; + 2589B58D261B9F7500B2CDB6 /* DataModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 2589B58B261B9F7500B2CDB6 /* DataModel.xcdatamodeld */; }; + 25E07C1426207FD80002F188 /* CategoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25E07C1326207FD80002F188 /* CategoryViewController.swift */; }; EB2BE4FA239524DB00FB933B /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB2BE4F9239524DB00FB933B /* AppDelegate.swift */; }; - EB2BE4FE239524DB00FB933B /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB2BE4FD239524DB00FB933B /* ViewController.swift */; }; + EB2BE4FE239524DB00FB933B /* ToDoListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB2BE4FD239524DB00FB933B /* ToDoListViewController.swift */; }; EB2BE501239524DB00FB933B /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EB2BE4FF239524DB00FB933B /* Main.storyboard */; }; EB2BE503239524DC00FB933B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EB2BE502239524DC00FB933B /* Assets.xcassets */; }; EB2BE506239524DC00FB933B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EB2BE504239524DC00FB933B /* LaunchScreen.storyboard */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 253DFDAA26177B2900FC7E5A /* K.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = K.swift; sourceTree = ""; }; + 2589B58C261B9F7500B2CDB6 /* DataModel.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = DataModel.xcdatamodel; sourceTree = ""; }; + 25E07C1326207FD80002F188 /* CategoryViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CategoryViewController.swift; sourceTree = ""; }; EB2BE4F6239524DB00FB933B /* Todoey.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Todoey.app; sourceTree = BUILT_PRODUCTS_DIR; }; EB2BE4F9239524DB00FB933B /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - EB2BE4FD239524DB00FB933B /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + EB2BE4FD239524DB00FB933B /* ToDoListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToDoListViewController.swift; sourceTree = ""; }; EB2BE500239524DB00FB933B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; EB2BE502239524DC00FB933B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; EB2BE505239524DC00FB933B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; @@ -35,6 +41,42 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 2589B57A261A1F1800B2CDB6 /* Controller */ = { + isa = PBXGroup; + children = ( + EB2BE4FD239524DB00FB933B /* ToDoListViewController.swift */, + 25E07C1326207FD80002F188 /* CategoryViewController.swift */, + ); + path = Controller; + sourceTree = ""; + }; + 2589B57C261A1F1E00B2CDB6 /* View */ = { + isa = PBXGroup; + children = ( + EB2BE4FF239524DB00FB933B /* Main.storyboard */, + ); + path = View; + sourceTree = ""; + }; + 2589B57E261A1F3F00B2CDB6 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + EB2BE502239524DC00FB933B /* Assets.xcassets */, + EB2BE4F9239524DB00FB933B /* AppDelegate.swift */, + 253DFDAA26177B2900FC7E5A /* K.swift */, + EB2BE504239524DC00FB933B /* LaunchScreen.storyboard */, + ); + path = "Supporting Files"; + sourceTree = ""; + }; + 2589B584261A247900B2CDB6 /* Model */ = { + isa = PBXGroup; + children = ( + 2589B58B261B9F7500B2CDB6 /* DataModel.xcdatamodeld */, + ); + path = Model; + sourceTree = ""; + }; EB2BE4ED239524DB00FB933B = { isa = PBXGroup; children = ( @@ -54,12 +96,11 @@ EB2BE4F8239524DB00FB933B /* Todoey */ = { isa = PBXGroup; children = ( - EB2BE4F9239524DB00FB933B /* AppDelegate.swift */, - EB2BE4FD239524DB00FB933B /* ViewController.swift */, - EB2BE4FF239524DB00FB933B /* Main.storyboard */, - EB2BE502239524DC00FB933B /* Assets.xcassets */, - EB2BE504239524DC00FB933B /* LaunchScreen.storyboard */, EB2BE507239524DC00FB933B /* Info.plist */, + 2589B584261A247900B2CDB6 /* Model */, + 2589B57C261A1F1E00B2CDB6 /* View */, + 2589B57A261A1F1800B2CDB6 /* Controller */, + 2589B57E261A1F3F00B2CDB6 /* Supporting Files */, ); path = Todoey; sourceTree = ""; @@ -91,7 +132,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 1120; - LastUpgradeCheck = 1120; + LastUpgradeCheck = 1240; ORGANIZATIONNAME = "App Brewery"; TargetAttributes = { EB2BE4F5239524DB00FB933B = { @@ -135,7 +176,10 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - EB2BE4FE239524DB00FB933B /* ViewController.swift in Sources */, + 25E07C1426207FD80002F188 /* CategoryViewController.swift in Sources */, + 2589B58D261B9F7500B2CDB6 /* DataModel.xcdatamodeld in Sources */, + 253DFDAB26177B2900FC7E5A /* K.swift in Sources */, + EB2BE4FE239524DB00FB933B /* ToDoListViewController.swift in Sources */, EB2BE4FA239524DB00FB933B /* AppDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -188,6 +232,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -248,6 +293,7 @@ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; @@ -281,13 +327,14 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = BSWZ8YLAG5; INFOPLIST_FILE = Todoey/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.londonappbrewery.todoey-ios13.Todoey"; + PRODUCT_BUNDLE_IDENTIFIER = com.renovatio.todoey; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -299,13 +346,14 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = BSWZ8YLAG5; INFOPLIST_FILE = Todoey/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = "com.londonappbrewery.todoey-ios13.Todoey"; + PRODUCT_BUNDLE_IDENTIFIER = com.renovatio.todoey; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -334,6 +382,19 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCVersionGroup section */ + 2589B58B261B9F7500B2CDB6 /* DataModel.xcdatamodeld */ = { + isa = XCVersionGroup; + children = ( + 2589B58C261B9F7500B2CDB6 /* DataModel.xcdatamodel */, + ); + currentVersion = 2589B58C261B9F7500B2CDB6 /* DataModel.xcdatamodel */; + path = DataModel.xcdatamodeld; + sourceTree = ""; + versionGroupType = wrapper.xcdatamodel; + }; +/* End XCVersionGroup section */ }; rootObject = EB2BE4EE239524DB00FB933B /* Project object */; } diff --git a/Todoey.xcodeproj/project.xcworkspace/xcuserdata/ran.xcuserdatad/UserInterfaceState.xcuserstate b/Todoey.xcodeproj/project.xcworkspace/xcuserdata/ran.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 00000000..16f11aa5 Binary files /dev/null and b/Todoey.xcodeproj/project.xcworkspace/xcuserdata/ran.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/Todoey.xcodeproj/xcuserdata/ran.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Todoey.xcodeproj/xcuserdata/ran.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 00000000..99a2a179 --- /dev/null +++ b/Todoey.xcodeproj/xcuserdata/ran.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,6 @@ + + + diff --git a/Todoey.xcodeproj/xcuserdata/ran.xcuserdatad/xcschemes/xcschememanagement.plist b/Todoey.xcodeproj/xcuserdata/ran.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000..a6e80f53 --- /dev/null +++ b/Todoey.xcodeproj/xcuserdata/ran.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Todoey.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/Todoey/.DS_Store b/Todoey/.DS_Store new file mode 100644 index 00000000..0a23057b Binary files /dev/null and b/Todoey/.DS_Store differ diff --git a/Todoey/AppDelegate.swift b/Todoey/AppDelegate.swift deleted file mode 100644 index 9fbce18a..00000000 --- a/Todoey/AppDelegate.swift +++ /dev/null @@ -1,46 +0,0 @@ -// -// AppDelegate.swift -// Destini -// -// Created by Philipp Muellauer on 01/09/2015. -// Copyright (c) 2015 London App Brewery. All rights reserved. -// - -import UIKit - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - // Override point for customization after application launch. - return true - } - - func applicationWillResignActive(_ application: UIApplication) { - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. - } - - func applicationDidEnterBackground(_ application: UIApplication) { - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. - } - - func applicationWillEnterForeground(_ application: UIApplication) { - // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. - } - - func applicationDidBecomeActive(_ application: UIApplication) { - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. - } - - func applicationWillTerminate(_ application: UIApplication) { - // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. - } - - -} - diff --git a/Todoey/Base.lproj/Main.storyboard b/Todoey/Base.lproj/Main.storyboard deleted file mode 100644 index 25a76385..00000000 --- a/Todoey/Base.lproj/Main.storyboard +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Todoey/Controller/CategoryViewController.swift b/Todoey/Controller/CategoryViewController.swift new file mode 100644 index 00000000..573158c6 --- /dev/null +++ b/Todoey/Controller/CategoryViewController.swift @@ -0,0 +1,95 @@ +// +// CategoryViewController.swift +// Todoey +// +// Created by Ran on 09/04/2021. +// Copyright © 2021 App Brewery. All rights reserved. +// + +import UIKit +import CoreData + +class CategoryViewController: UITableViewController { + + var itemArray = [Category]() + let dataFilePath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent("Category.plist") + let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext + + override func viewDidLoad() { + super.viewDidLoad() + + loadCategories() + } + + + + //MARK: - TableViewDataSource Methods + + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return itemArray.count + } + + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + + let category = itemArray[indexPath.row].name + let cell = tableView.dequeueReusableCell(withIdentifier: K.CategoryCell, for: indexPath) + + cell.textLabel?.text = category + + return cell + + } +// +// tableview override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { +// performSegue(withIdentifier: <#T##String#>, sender: <#T##Any?#>) +// } + + + //MARK: - Save and load methods + + func saveCategories() { + + do { + try context.save() + } catch { + print(error) + } + + tableView.reloadData() + } + + func loadCategories(with request: NSFetchRequest = Category.fetchRequest()){ + + do { + itemArray = try context.fetch(request) + } catch { + print("Error fetching data from Category context \(error)") + } + } + + //MARK: - Add a new item + @IBAction func addButtonPressed(_ sender: UIBarButtonItem) { + + var textField = UITextField() + + let alert = UIAlertController(title: "Add a new category", message: "", preferredStyle: .alert) + + alert.addTextField { (alertTextField) in + alertTextField.placeholder = "Create a new category" + textField = alertTextField + } + + let action = UIAlertAction(title: "Add Category", style: .default) { (action) in + let newCategory = Category(context: self.context) + newCategory.name = textField.text! + self.itemArray.append(newCategory) + self.saveCategories() + } + + alert.addAction(action) + present(alert, animated: true, completion: nil) + } + + + +} diff --git a/Todoey/Controller/ToDoListViewController.swift b/Todoey/Controller/ToDoListViewController.swift new file mode 100644 index 00000000..d2cacd17 --- /dev/null +++ b/Todoey/Controller/ToDoListViewController.swift @@ -0,0 +1,138 @@ +// +// ViewController.swift +// Todoey +// +// Created by Philipp Muellauer on 02/12/2019. +// Copyright © 2019 App Brewery. All rights reserved. +// + +import UIKit +import CoreData + +class ToDoListViewController: UITableViewController { + + var itemArray = [Item]() + let dataFilePath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent("Items.plist") + let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext + + + override func viewDidLoad() { + super.viewDidLoad() + + loadItems() + } + + + + + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return itemArray.count + } + + override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + + + let todo = itemArray[indexPath.row].title + let cell = tableView.dequeueReusableCell(withIdentifier: K.cell, for: indexPath) + + let item = itemArray[indexPath.row] + + cell.textLabel?.text = todo + + //Turnary Expression + cell.accessoryType = item.done ? .checkmark : .none + + + return cell + } + + override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + + // Make it the opposite + itemArray[indexPath.row].done = !itemArray[indexPath.row].done + + saveItems() + + //To create an animation of deselection + tableView.deselectRow(at: indexPath, animated: true) + } + + //MARK: - Add New Items + + @IBAction func addButtonPressed(_ sender: UIBarButtonItem) { + + + var textField = UITextField() + let alert = UIAlertController(title: "Add a New To Do Item", message: "This is a message", preferredStyle: .alert) + + + alert.addTextField { (alertTextField) in + alertTextField.placeholder = "Create new item" + textField = alertTextField + //Passing reference, so that the bubble is now pointing to a more global textfield rather than the one in the closure + } + + + let action = UIAlertAction(title: "Add Item", style: .default) { (action) in + //New way of initialising Items + let newItem = Item(context: self.context) + newItem.title = textField.text! + newItem.done = false + self.itemArray.append(newItem) + self.saveItems() + } + + alert.addAction(action) + present(alert, animated: true, completion: nil) + + } + + + func saveItems() { + + do { + try context.save() + } catch { + print(error) + } + + tableView.reloadData() + } + + //Providing a default parameter + func loadItems(with request : NSFetchRequest = Item.fetchRequest()) { + //Have to let Swift know the data type <> + + do { + itemArray = try context.fetch(request) + } catch { + print("Error fetching data from context \(error)") + } + tableView.reloadData() + } +} + +//MARK: - UISearchDelegate + +extension ToDoListViewController: UISearchBarDelegate { + func searchBarSearchButtonClicked(_ searchBar : UISearchBar) { + let request : NSFetchRequest = Item.fetchRequest() + + request.predicate = NSPredicate(format: "title CONTAINS[cd] %@", searchBar.text!) + + request.sortDescriptors = [NSSortDescriptor(key: "title", ascending: true)] //has to be an array + + loadItems(with: request) + } + + func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { + if searchBar.text?.count == 0 { + loadItems() + // updating UI therefore: + DispatchQueue.main.async { + searchBar.resignFirstResponder() + } + } + } +} + diff --git a/Todoey/Model/DataModel.xcdatamodeld/DataModel.xcdatamodel/contents b/Todoey/Model/DataModel.xcdatamodeld/DataModel.xcdatamodel/contents new file mode 100644 index 00000000..1a1b5d8c --- /dev/null +++ b/Todoey/Model/DataModel.xcdatamodeld/DataModel.xcdatamodel/contents @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Todoey/Supporting Files/.DS_Store b/Todoey/Supporting Files/.DS_Store new file mode 100644 index 00000000..62927af5 Binary files /dev/null and b/Todoey/Supporting Files/.DS_Store differ diff --git a/Todoey/Supporting Files/AppDelegate.swift b/Todoey/Supporting Files/AppDelegate.swift new file mode 100644 index 00000000..81ed1589 --- /dev/null +++ b/Todoey/Supporting Files/AppDelegate.swift @@ -0,0 +1,72 @@ +// +// AppDelegate.swift +// Destini +// +// Created by Philipp Muellauer on 01/09/2015. +// Copyright (c) 2015 London App Brewery. All rights reserved. +// + +import UIKit +import CoreData + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + return true + } + + func applicationWillTerminate(_ application: UIApplication) { + self.saveContext() + } + + // MARK: - Core Data stack + + lazy var persistentContainer: NSPersistentContainer = { + /* + The persistent container for the application. This implementation + creates and returns a container, having loaded the store for the + application to it. This property is optional since there are legitimate + error conditions that could cause the creation of the store to fail. + */ + let container = NSPersistentContainer(name: "DataModel") + container.loadPersistentStores(completionHandler: { (storeDescription, error) in + if let error = error as NSError? { + // Replace this implementation with code to handle the error appropriately. + // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + + /* + Typical reasons for an error here include: + * The parent directory does not exist, cannot be created, or disallows writing. + * The persistent store is not accessible, due to permissions or data protection when the device is locked. + * The device is out of space. + * The store could not be migrated to the current model version. + Check the error message to determine what the actual problem was. + */ + fatalError("Unresolved error \(error), \(error.userInfo)") + } + }) + return container + }() + + // MARK: - Core Data Saving support + + func saveContext () { + let context = persistentContainer.viewContext + if context.hasChanges { + do { + try context.save() + } catch { + // Replace this implementation with code to handle the error appropriately. + // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. + let nserror = error as NSError + fatalError("Unresolved error \(nserror), \(nserror.userInfo)") + } + } + } +} + diff --git a/Todoey/Assets.xcassets/AppIcon.appiconset/Contents.json b/Todoey/Supporting Files/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Todoey/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Todoey/Supporting Files/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Todoey/Assets.xcassets/Contents.json b/Todoey/Supporting Files/Assets.xcassets/Contents.json similarity index 100% rename from Todoey/Assets.xcassets/Contents.json rename to Todoey/Supporting Files/Assets.xcassets/Contents.json diff --git a/Todoey/Base.lproj/LaunchScreen.storyboard b/Todoey/Supporting Files/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from Todoey/Base.lproj/LaunchScreen.storyboard rename to Todoey/Supporting Files/Base.lproj/LaunchScreen.storyboard diff --git a/Todoey/Supporting Files/K.swift b/Todoey/Supporting Files/K.swift new file mode 100644 index 00000000..4eb7ab96 --- /dev/null +++ b/Todoey/Supporting Files/K.swift @@ -0,0 +1,17 @@ +// +// K.swift +// Todoey +// +// Created by Ran on 02/04/2021. +// Copyright © 2021 App Brewery. All rights reserved. +// + +import Foundation + +struct K { + static let cell = "ToDoItemCell" + static let defaultsArrayKey = "TodoListArray" + + static let goToItemsSeg = "goToItems" + static let CategoryCell = "CategoryItemCell" +} diff --git a/Todoey/View/.DS_Store b/Todoey/View/.DS_Store new file mode 100644 index 00000000..70bbfc58 Binary files /dev/null and b/Todoey/View/.DS_Store differ diff --git a/Todoey/View/Base.lproj/Main.storyboard b/Todoey/View/Base.lproj/Main.storyboard new file mode 100644 index 00000000..0ecdcc95 --- /dev/null +++ b/Todoey/View/Base.lproj/Main.storyboard @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Todoey/ViewController.swift b/Todoey/ViewController.swift deleted file mode 100644 index 4a475a34..00000000 --- a/Todoey/ViewController.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// ViewController.swift -// Todoey -// -// Created by Philipp Muellauer on 02/12/2019. -// Copyright © 2019 App Brewery. All rights reserved. -// - -import UIKit - -class ViewController: UIViewController { - - override func viewDidLoad() { - super.viewDidLoad() - // Do any additional setup after loading the view. - } - - -} -