Adds ability to rename games
This commit is contained in:
parent
5c6c66c9a1
commit
01ed2b6a94
@ -49,6 +49,8 @@ class GameCollectionViewController: UICollectionViewController
|
|||||||
|
|
||||||
fileprivate var _performing3DTouchTransition = false
|
fileprivate var _performing3DTouchTransition = false
|
||||||
fileprivate weak var _destination3DTouchTransitionViewController: UIViewController?
|
fileprivate weak var _destination3DTouchTransitionViewController: UIViewController?
|
||||||
|
|
||||||
|
fileprivate var _renameAction: UIAlertAction?
|
||||||
}
|
}
|
||||||
|
|
||||||
//MARK: - UIViewController -
|
//MARK: - UIViewController -
|
||||||
@ -245,6 +247,10 @@ private extension GameCollectionViewController
|
|||||||
{
|
{
|
||||||
let cancelAction = Action(title: NSLocalizedString("Cancel", comment: ""), style: .cancel, action: nil)
|
let cancelAction = Action(title: NSLocalizedString("Cancel", comment: ""), style: .cancel, action: nil)
|
||||||
|
|
||||||
|
let renameAction = Action(title: NSLocalizedString("Rename", comment: ""), style: .default, action: { [unowned self] action in
|
||||||
|
self.rename(game)
|
||||||
|
})
|
||||||
|
|
||||||
let saveStatesAction = Action(title: NSLocalizedString("Save States", comment: ""), style: .default, action: { [unowned self] action in
|
let saveStatesAction = Action(title: NSLocalizedString("Save States", comment: ""), style: .default, action: { [unowned self] action in
|
||||||
self.viewSaveStates(for: game)
|
self.viewSaveStates(for: game)
|
||||||
})
|
})
|
||||||
@ -253,7 +259,7 @@ private extension GameCollectionViewController
|
|||||||
self.delete(game)
|
self.delete(game)
|
||||||
})
|
})
|
||||||
|
|
||||||
return [cancelAction, saveStatesAction, deleteAction]
|
return [cancelAction, renameAction, saveStatesAction, deleteAction]
|
||||||
}
|
}
|
||||||
|
|
||||||
func delete(_ game: Game)
|
func delete(_ game: Game)
|
||||||
@ -279,6 +285,50 @@ private extension GameCollectionViewController
|
|||||||
self.performSegue(withIdentifier: "showSaveStates", sender: game)
|
self.performSegue(withIdentifier: "showSaveStates", sender: game)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func rename(_ game: Game)
|
||||||
|
{
|
||||||
|
let alertController = UIAlertController(title: NSLocalizedString("Rename Game", comment: ""), message: nil, preferredStyle: .alert)
|
||||||
|
alertController.addTextField { (textField) in
|
||||||
|
textField.text = game.name
|
||||||
|
textField.placeholder = NSLocalizedString("Name", comment: "")
|
||||||
|
textField.autocapitalizationType = .words
|
||||||
|
textField.returnKeyType = .done
|
||||||
|
textField.enablesReturnKeyAutomatically = true
|
||||||
|
textField.addTarget(self, action: #selector(GameCollectionViewController.textFieldTextDidChange(_:)), for: .editingChanged)
|
||||||
|
}
|
||||||
|
alertController.addAction(UIAlertAction(title: NSLocalizedString("Cancel", comment: ""), style: .cancel, handler: { (action) in
|
||||||
|
self._renameAction = nil
|
||||||
|
}))
|
||||||
|
|
||||||
|
let renameAction = UIAlertAction(title: NSLocalizedString("Rename", comment: ""), style: .default, handler: { [unowned alertController] (action) in
|
||||||
|
self.rename(game, with: alertController.textFields?.first?.text ?? "")
|
||||||
|
})
|
||||||
|
alertController.addAction(renameAction)
|
||||||
|
self._renameAction = renameAction
|
||||||
|
|
||||||
|
self.present(alertController, animated: true, completion: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func rename(_ game: Game, with name: String)
|
||||||
|
{
|
||||||
|
guard name.characters.count > 0 else { return }
|
||||||
|
|
||||||
|
DatabaseManager.shared.performBackgroundTask { (context) in
|
||||||
|
let game = context.object(with: game.objectID) as! Game
|
||||||
|
game.name = name
|
||||||
|
|
||||||
|
context.saveWithErrorLogging()
|
||||||
|
}
|
||||||
|
|
||||||
|
self._renameAction = nil
|
||||||
|
}
|
||||||
|
|
||||||
|
@objc func textFieldTextDidChange(_ textField: UITextField)
|
||||||
|
{
|
||||||
|
let text = textField.text ?? ""
|
||||||
|
self._renameAction?.isEnabled = text.characters.count > 0
|
||||||
|
}
|
||||||
|
|
||||||
@objc func handleLongPressGesture(_ gestureRecognizer: UILongPressGestureRecognizer)
|
@objc func handleLongPressGesture(_ gestureRecognizer: UILongPressGestureRecognizer)
|
||||||
{
|
{
|
||||||
guard gestureRecognizer.state == .began else { return }
|
guard gestureRecognizer.state == .began else { return }
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user