| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- //
- // RileyLinkListTableViewController.swift
- // RileyLink
- //
- // Created by Pete Schwamb on 5/11/16.
- // Copyright © 2016 Pete Schwamb. All rights reserved.
- //
- import UIKit
- import RileyLinkKit
- class RileyLinkListTableViewController: UITableViewController {
-
- // Retreive the managedObjectContext from AppDelegate
- let managedObjectContext = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
-
- override func viewDidLoad() {
- super.viewDidLoad()
- tableView.registerNib(RileyLinkDeviceTableViewCell.nib(), forCellReuseIdentifier: RileyLinkDeviceTableViewCell.className)
- dataManagerObserver = NSNotificationCenter.defaultCenter().addObserverForName(nil, object: dataManager, queue: nil) { [weak self = self] (note) -> Void in
- if let deviceManager = self?.dataManager.rileyLinkManager {
- switch note.name {
- case RileyLinkDeviceManager.DidDiscoverDeviceNotification:
- self?.tableView.insertRowsAtIndexPaths([NSIndexPath(forRow: deviceManager.devices.count - 1, inSection: 0)], withRowAnimation: .Automatic)
- case RileyLinkDeviceManager.ConnectionStateDidChangeNotification,
- RileyLinkDeviceManager.RSSIDidChangeNotification,
- RileyLinkDeviceManager.NameDidChangeNotification:
- if let device = note.userInfo?[RileyLinkDeviceManager.RileyLinkDeviceKey] as? RileyLinkDevice, index = deviceManager.devices.indexOf({ $0 === device }) {
- self?.tableView.reloadRowsAtIndexPaths([NSIndexPath(forRow: index, inSection: 0)], withRowAnimation: .None)
- }
- default:
- break
- }
- }
- }
- }
-
- deinit {
- dataManagerObserver = nil
- }
-
- private var dataManagerObserver: AnyObject? {
- willSet {
- if let observer = dataManagerObserver {
- NSNotificationCenter.defaultCenter().removeObserver(observer)
- }
- }
- }
-
- private var dataManager: DeviceDataManager {
- return DeviceDataManager.sharedManager
- }
-
- override func viewDidAppear(animated: Bool) {
- super.viewDidAppear(animated)
-
- dataManager.rileyLinkManager.deviceScanningEnabled = true
- }
- override func viewWillDisappear(animated: Bool) {
- super.viewWillDisappear(animated)
-
- dataManager.rileyLinkManager.deviceScanningEnabled = false
- }
-
- // MARK: Table view data source
-
- override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
- return 1
- }
- override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- return dataManager.rileyLinkManager.devices.count
- }
-
- override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
- let cell: UITableViewCell
-
- let deviceCell = tableView.dequeueReusableCellWithIdentifier(RileyLinkDeviceTableViewCell.className) as! RileyLinkDeviceTableViewCell
-
- let device = dataManager.rileyLinkManager.devices[indexPath.row]
-
- deviceCell.configureCellWithName(device.name,
- signal: device.RSSI,
- peripheralState: device.peripheral.state
- )
-
- deviceCell.connectSwitch.addTarget(self, action: #selector(deviceConnectionChanged(_:)), forControlEvents: .ValueChanged)
-
- cell = deviceCell
- return cell
- }
-
- func deviceConnectionChanged(connectSwitch: UISwitch) {
- let switchOrigin = connectSwitch.convertPoint(.zero, toView: tableView)
-
- if let indexPath = tableView.indexPathForRowAtPoint(switchOrigin)
- {
- let device = dataManager.rileyLinkManager.devices[indexPath.row]
-
- if connectSwitch.on {
- dataManager.connectToRileyLink(device)
- } else {
- dataManager.disconnectFromRileyLink(device)
- }
- }
- }
- // MARK: - UITableViewDelegate
- override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
- let vc = RileyLinkDeviceTableViewController()
- vc.device = dataManager.rileyLinkManager.devices[indexPath.row]
- showViewController(vc, sender: indexPath)
- }
-
- /*
- // Override to support conditional editing of the table view.
- - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
- // Return NO if you do not want the specified item to be editable.
- return YES;
- }
- */
-
- /*
- // Override to support editing the table view.
- - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
- if (editingStyle == UITableViewCellEditingStyleDelete) {
- // Delete the row from the data source
- [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
- } else if (editingStyle == UITableViewCellEditingStyleInsert) {
- // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
- }
- }
- */
-
- /*
- // Override to support rearranging the table view.
- - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
- }
- */
-
- /*
- // Override to support conditional rearranging of the table view.
- - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
- // Return NO if you do not want the item to be re-orderable.
- return YES;
- }
- */
- }
|