Refactored battery saving preference and clean up about and settings view controller

This commit is contained in:
Raimund Wege committed 2016-07-04 11:30:27 +02:00
1 parent 001ef06861
commit 434811fce0
5 files changed
+89 -71

No files matched your search

@@ -2,42 +2,46 @@
// AboutViewController.swift
// SAPTracker
//
// Created by computing on 11/11/14.
// Copyright (c) 2014 com.sap.sailing. All rights reserved.
// Created by Raimund Wege on 04.07.16.
// Copyright © 2016 com.sap.sailing. All rights reserved.
//
import Foundation
class AboutViewController: UIViewController {
@IBOutlet weak var textView: UITextView!
@IBOutlet weak var versionDescriptionLabel: UILabel!
@IBOutlet weak var versionLabel: UILabel!
@IBOutlet weak var textView: UITextView!
override func viewDidLoad() {
super.viewDidLoad();
versionDescriptionLabel.text = NSLocalizedString("Version", comment: "")
if let text = NSBundle.mainBundle().infoDictionary?["CFBundleVersion"] as? String {
versionLabel.text = text
} else {
versionLabel.text = "-"
}
// add logo to top left
let imageView = UIImageView(image: UIImage(named: "sap_logo"))
let barButtonItem = UIBarButtonItem(customView: imageView)
navigationItem.leftBarButtonItem = barButtonItem
setupNavigationBar()
setupVersion()
}
override func viewDidLayoutSubviews() {
textView.scrollRectToVisible(CGRect(x: 0, y: 0, width: 1, height: 1), animated: false)
}
@IBAction func done(sender: AnyObject) {
// MARK: - Setups
private func setupNavigationBar() {
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: UIImageView(image: UIImage(named: "sap_logo")))
}
private func setupVersion() {
versionDescriptionLabel.text = NSLocalizedString("Version", comment: "")
versionLabel.text = NSBundle.mainBundle().infoDictionary?["CFBundleVersion"] as? String ?? "-"
}
// MARK: - Actions
@IBAction func doneButtonTapped(sender: AnyObject) {
presentingViewController!.dismissViewControllerAnimated(true, completion: nil)
}
@IBAction func openEULA(sender: AnyObject) {
@IBAction func eulaButtonTapped(sender: AnyObject) {
UIApplication.sharedApplication().openURL(URLs.EULA)
}
@@ -1512,7 +1512,7 @@ Cg
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
</userDefinedRuntimeAttributes>
<connections>
<action selector="openEULA:" destination="WMr-pC-C12" eventType="touchUpInside" id="PhA-bf-yMV"/>
<action selector="eulaButtonTapped:" destination="WMr-pC-C12" eventType="touchUpInside" id="zYu-4g-apZ"/>
</connections>
</button>
</subviews>
@@ -1603,7 +1603,7 @@ Cg
<navigationItem key="navigationItem" title="About" id="8o6-Yh-CuN">
<barButtonItem key="rightBarButtonItem" systemItem="done" id="Bw1-bK-skL">
<connections>
<action selector="done:" destination="WMr-pC-C12" id="dtz-fc-tKq"/>
<action selector="doneButtonTapped:" destination="WMr-pC-C12" id="3lp-4Z-r8w"/>
</connections>
</barButtonItem>
</navigationItem>
@@ -1739,7 +1739,7 @@ Cg
<navigationItem key="navigationItem" title="Settings" id="SbA-xV-4ro">
<barButtonItem key="rightBarButtonItem" systemItem="done" id="Ta8-ro-B8t">
<connections>
<action selector="done:" destination="H1Q-9y-gn2" id="ely-kW-9Sw"/>
<action selector="doneButtonTapped:" destination="H1Q-9y-gn2" id="z8A-RW-CAd"/>
</connections>
</barButtonItem>
</navigationItem>
@@ -1,46 +1,21 @@
//
// BatterySavingController.swift
// BatteryManager.swift
// SAPTracker
//
// Created by computing on 07/11/14.
// Copyright (c) 2014 com.sap.sailing. All rights reserved.
// Created by Raimund Wege on 04.07.16.
// Copyright © 2016 com.sap.sailing. All rights reserved.
//
import Foundation
/* Needs to be sublass of NSObject for receiving NSNotifications */
class BatteryManager: NSObject {
/* NSUserDefaultsKey */
private let BatterySavingDefaultsKey = "BatterySaving"
/* Reference to device needed for reading battery level */
private let device = UIDevice.currentDevice()
/* Minimum battery level for sending data is 20% */
private let minBatteryLevel: Float = 0.2
/* User preference for saving battery */
var batterySavingPreference: Bool {
get {
let preferences = NSUserDefaults.standardUserDefaults()
return preferences.boolForKey(BatterySavingDefaultsKey)
}
set {
let preferences = NSUserDefaults.standardUserDefaults()
preferences.setBool(newValue, forKey: BatterySavingDefaultsKey)
preferences.synchronize()
}
struct BatteryLevel {
static let Min: Float = 0.2
}
/* Is battery saving on? */
var batterySaving: Bool {
get {
return batterySavingPreference || device.batteryLevel < minBatteryLevel && (device.batteryState == UIDeviceBatteryState.Unplugged || device.batteryState == UIDeviceBatteryState.Unknown)
}
}
/* Singleton */
private let device: UIDevice!
class var sharedManager: BatteryManager {
struct Singleton {
static let sharedManager = BatteryManager()
@@ -48,11 +23,26 @@ class BatteryManager: NSObject {
return Singleton.sharedManager
}
/* Register for battery events */
override init() {
device = UIDevice.currentDevice()
super.init()
// register for battery events
device.batteryMonitoringEnabled = true;
setupDevice()
}
}
// MARK: - Setup
private func setupDevice() {
device.batteryMonitoringEnabled = true
}
// MARK: - Properties
var batterySaving: Bool { get { return Preferences.batterySaving || forceBatterySaving() } }
// MARK: - Helper
private func forceBatterySaving() -> Bool {
return device.batteryLevel < BatteryLevel.Min && (device.batteryState == .Unplugged || device.batteryState == .Unknown)
}
}
@@ -52,4 +52,16 @@ class Preferences: NSObject {
return uuid
}()
// MARK: - BatterySaving
class var batterySaving: Bool {
get {
return preferences.boolForKey(PreferenceKey.BatterySaving)
}
set(value) {
preferences.setBool(value, forKey: PreferenceKey.BatterySaving)
preferences.synchronize()
}
}
}
@@ -2,8 +2,8 @@
// SettingsViewController.swift
// SAPTracker
//
// Created by computing on 10/11/14.
// Copyright (c) 2014 com.sap.sailing. All rights reserved.
// Created by Raimund Wege on 04.07.16.
// Copyright © 2016 com.sap.sailing. All rights reserved.
//
import Foundation
@@ -15,20 +15,32 @@ class SettingsViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
batterySavingSwitch.setOn(BatteryManager.sharedManager.batterySavingPreference, animated: true)
// add logo to top left
let imageView = UIImageView(image: UIImage(named: "sap_logo"))
let barButtonItem = UIBarButtonItem(customView: imageView)
navigationItem.leftBarButtonItem = barButtonItem
self.deviceIdentifierLabel.text = Preferences.uuid
}
@IBAction func batterySavingChanged(sender: UISwitch) {
BatteryManager.sharedManager.batterySavingPreference = sender.on
setupBatterySavingSwitch()
setupDeviceIdentifierLabel()
setupNavigationBar()
}
@IBAction func done(sender: AnyObject) {
// MARK: - Setups
private func setupBatterySavingSwitch() {
batterySavingSwitch.setOn(Preferences.batterySaving, animated: true)
}
private func setupDeviceIdentifierLabel() {
deviceIdentifierLabel.text = Preferences.uuid
}
private func setupNavigationBar() {
navigationItem.leftBarButtonItem = UIBarButtonItem(customView: UIImageView(image: UIImage(named: "sap_logo")))
}
// MARK: - Actions
@IBAction func batterySavingChanged(sender: UISwitch) {
Preferences.batterySaving = sender.on
}
@IBAction func doneButtonTapped(sender: AnyObject) {
presentingViewController!.dismissViewControllerAnimated(true, completion: nil)
}