121 lines
3.9 KiB
Swift
121 lines
3.9 KiB
Swift
//
|
|
// SettingsViewController.swift
|
|
// Delta
|
|
//
|
|
// Created by Riley Testut on 9/4/15.
|
|
// Copyright © 2015 Riley Testut. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
import DeltaCore
|
|
|
|
private enum SettingsSection: Int
|
|
{
|
|
case controllers
|
|
}
|
|
|
|
private enum SettingsSegues: String
|
|
{
|
|
case Controllers = "controllersSegue"
|
|
}
|
|
|
|
class SettingsViewController: UITableViewController
|
|
{
|
|
required init?(coder aDecoder: NSCoder)
|
|
{
|
|
super.init(coder: aDecoder)
|
|
|
|
NotificationCenter.default.addObserver(self, selector: #selector(SettingsViewController.externalControllerDidConnect(_:)), name: ExternalControllerDidConnectNotification, object: nil)
|
|
NotificationCenter.default.addObserver(self, selector: #selector(SettingsViewController.externalControllerDidDisconnect(_:)), name: ExternalControllerDidDisconnectNotification, object: nil)
|
|
}
|
|
|
|
override func viewDidLoad()
|
|
{
|
|
super.viewDidLoad()
|
|
}
|
|
|
|
override func viewWillAppear(_ animated: Bool)
|
|
{
|
|
super.viewWillAppear(animated)
|
|
|
|
if let indexPath = self.tableView.indexPathForSelectedRow
|
|
{
|
|
self.tableView.deselectRow(at: indexPath, animated: true)
|
|
}
|
|
}
|
|
|
|
override func didReceiveMemoryWarning()
|
|
{
|
|
super.didReceiveMemoryWarning()
|
|
}
|
|
|
|
override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?)
|
|
{
|
|
if segue.identifier == SettingsSegues.Controllers.rawValue
|
|
{
|
|
let controllersSettingsViewController = segue.destinationViewController as! ControllersSettingsViewController
|
|
controllersSettingsViewController.playerIndex = (self.tableView.indexPathForSelectedRow as NSIndexPath?)?.row
|
|
}
|
|
}
|
|
}
|
|
|
|
private extension SettingsViewController
|
|
{
|
|
@IBAction func unwindFromControllersSettingsViewController(_ segue: UIStoryboardSegue)
|
|
{
|
|
let indexPath = self.tableView.indexPathForSelectedRow
|
|
|
|
self.tableView.reloadSections(IndexSet(integer: SettingsSection.controllers.rawValue), with: .none)
|
|
|
|
self.tableView.selectRow(at: indexPath, animated: true, scrollPosition: UITableViewScrollPosition.none)
|
|
}
|
|
}
|
|
|
|
private extension SettingsViewController
|
|
{
|
|
dynamic func externalControllerDidConnect(_ notification: Notification)
|
|
{
|
|
self.tableView.reloadSections(IndexSet(integer: SettingsSection.controllers.rawValue), with: .none)
|
|
}
|
|
|
|
dynamic func externalControllerDidDisconnect(_ notification: Notification)
|
|
{
|
|
self.tableView.reloadSections(IndexSet(integer: SettingsSection.controllers.rawValue), with: .none)
|
|
}
|
|
}
|
|
|
|
extension SettingsViewController
|
|
{
|
|
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
|
|
{
|
|
let cell = super.tableView(tableView, cellForRowAt: indexPath)
|
|
|
|
if (indexPath as NSIndexPath).section == SettingsSection.controllers.rawValue
|
|
{
|
|
if (indexPath as NSIndexPath).row == Settings.localControllerPlayerIndex
|
|
{
|
|
cell.detailTextLabel?.text = UIDevice.current().name
|
|
}
|
|
else if let index = ExternalControllerManager.sharedManager.connectedControllers.index(where: { $0.playerIndex == (indexPath as NSIndexPath).row })
|
|
{
|
|
let controller = ExternalControllerManager.sharedManager.connectedControllers[index]
|
|
cell.detailTextLabel?.text = controller.name
|
|
}
|
|
else
|
|
{
|
|
cell.detailTextLabel?.text = nil
|
|
}
|
|
}
|
|
|
|
return cell
|
|
}
|
|
|
|
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
|
|
{
|
|
if (indexPath as NSIndexPath).section == SettingsSection.controllers.rawValue
|
|
{
|
|
self.performSegue(withIdentifier: SettingsSegues.Controllers.rawValue, sender: self)
|
|
}
|
|
}
|
|
}
|