diff --git a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/Property List.plist b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/BalanceInfo.plist
similarity index 85%
rename from SynchronyFinancial/SynchronyFinancial WatchKit Extension/Property List.plist
rename to SynchronyFinancial/SynchronyFinancial WatchKit Extension/BalanceInfo.plist
index 5d70c64..6767858 100644
--- a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/Property List.plist
+++ b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/BalanceInfo.plist
@@ -1,24 +1,21 @@
-
- Account1
+
2000
8000
2
- Account2
1300
5000
5
- Account 3
4000
10000
3
-
+
diff --git a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/BalanceInterfaceController.swift b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/BalanceInterfaceController.swift
index a8491f8..32773b4 100644
--- a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/BalanceInterfaceController.swift
+++ b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/BalanceInterfaceController.swift
@@ -11,20 +11,27 @@ import Foundation
class BalanceInterfaceController: WKInterfaceController {
+ var util: Int?
+ var didAnimate: Bool = false
@IBOutlet weak var image2: WKInterfaceImage!
override func awake(withContext context: Any?) {
super.awake(withContext: context)
+
+ // get plist data to generate balance metric
+ var plistValues = PlistUtil.readPlist(for: .balance)
+ let balance = plistValues[0][0]
+ let credit = plistValues[0][1] > 0 ? plistValues[0][1] : 1
+
+ util = Int(round((Double(balance)/Double(credit)) * 100))
}
+
override func didAppear() {
- // Called when watch interface is visible to user
- /*var plistValues = [String]()
- plistValues = PlistUtil.readPlist(namePlist: "PropertyList", key: "Account1")
- let balance: Int = Int(plistValues[0])!
- let credit: Int = Int(plistValues[1])!
- let util = (balance/credit * 10)*/
image2.setImageNamed("scores")
- image2.startAnimatingWithImages(in: NSRange(location: 0, length: 66), duration: 1.5, repeatCount: 1)
+ if !didAnimate {
+ image2.startAnimatingWithImages(in: NSRange(location: 0, length: util ?? 0), duration: 1.5, repeatCount: 1)
+ didAnimate = true
+ }
//image2.stopAnimating()
}
diff --git a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/PlistUtil.swift b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/PlistUtil.swift
index 6f6420c..f5a9313 100644
--- a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/PlistUtil.swift
+++ b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/PlistUtil.swift
@@ -8,36 +8,27 @@
import Foundation
+public enum PlistDataType: String {
+ case balance = "BalanceInfo"
+ case transaction = "Transcation"
+ case account = "Account"
+}
+
class PlistUtil {
- static func readPlist(namePlist: String, key: String) -> [String]{
- let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) as NSArray
- let documentsDirectory = paths.object(at: 0) as! NSString
- let path = documentsDirectory.appendingPathComponent(namePlist+".plist")
-
- var output:AnyObject = false as AnyObject
-
- if let dict = NSMutableDictionary(contentsOfFile: path){
- output = dict.object(forKey: key)! as AnyObject
- }else{
- if let privPath = Bundle.main.path(forResource: namePlist, ofType: "plist"){
- if let dict = NSMutableDictionary(contentsOfFile: privPath){
- output = dict.object(forKey: key)! as AnyObject
- }else{
- output = false as AnyObject
- print("error_read")
- }
- }else{
- output = false as AnyObject
- print("error_read")
+ static func readPlist(for data: PlistDataType) -> [[Int]] {
+ var balances = [[Int]]()
+ if let file = Bundle.main.path(forResource: data.rawValue, ofType: "plist"),
+ let array = NSArray.init(contentsOfFile: file) {
+ array.forEach {
+ guard let balance = $0 as? [AnyHashable],
+ let b = balance[0] as? Int,
+ let credit = balance[1] as? Int,
+ let age = balance[2] as? Int else { return }
+ balances.append([b, credit, age])
}
}
- print("plist_read \(output)")
- return output as! [String]
+
+ return balances
}
-
-
}
-
-/*Borrowed from
- https://github.com/soonin/IOS-Swift-PlistReadAndWrite/blob/master/IOS-Swift-PlistReadAndWrite/PlistReadAndWrite.swift */
diff --git a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/UtilizationfaceController.swift b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/UtilizationfaceController.swift
index ec28e5d..7e762a5 100644
--- a/SynchronyFinancial/SynchronyFinancial WatchKit Extension/UtilizationfaceController.swift
+++ b/SynchronyFinancial/SynchronyFinancial WatchKit Extension/UtilizationfaceController.swift
@@ -9,18 +9,29 @@
import WatchKit
import Foundation
-
class UtilizationInterfaceController: WKInterfaceController {
+ var didAnimate: Bool = false
+ var util: Int?
@IBOutlet weak var image3: WKInterfaceImage!
+
override func awake(withContext context: Any?) {
super.awake(withContext: context)
+
+ // get plist data to generate utilization metric
+ var plistValues = PlistUtil.readPlist(for: .balance)
+ let balance = plistValues[0][0]
+ let credit = plistValues[0][1] > 0 ? plistValues[0][1] : 1
+
+ util = Int(round((Double(balance)/Double(credit)) * 100))
}
override func didAppear() {
- // Called when watch interface is visible to user
- image3.setImageNamed("scores")
- image3.startAnimatingWithImages(in: NSRange(location: 0, length: 46), duration: 1.5, repeatCount: 1)
+ if !didAnimate {
+ image3.setImageNamed("scores")
+ image3.startAnimatingWithImages(in: NSRange(location: 1, length: util ?? 0), duration: 1.5, repeatCount: 1)
+ didAnimate = true
+ }
}
override func willActivate() {
diff --git a/SynchronyFinancial/SynchronyFinancial.xcodeproj/project.pbxproj b/SynchronyFinancial/SynchronyFinancial.xcodeproj/project.pbxproj
index f2157ce..c1c6b1a 100644
--- a/SynchronyFinancial/SynchronyFinancial.xcodeproj/project.pbxproj
+++ b/SynchronyFinancial/SynchronyFinancial.xcodeproj/project.pbxproj
@@ -26,7 +26,7 @@
67C8DD8321ED323B0063A01B /* CircleIndicator.sks in Resources */ = {isa = PBXBuildFile; fileRef = 67C8DD8221ED323B0063A01B /* CircleIndicator.sks */; };
67C8DD8521ED3B5A0063A01B /* WellnessInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67C8DD8421ED3B5A0063A01B /* WellnessInterfaceController.swift */; };
9BCE39732227138E00B7A992 /* BalanceInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BCE39722227138E00B7A992 /* BalanceInterfaceController.swift */; };
- 9BCE39752227712500B7A992 /* Property List.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9BCE39742227712500B7A992 /* Property List.plist */; };
+ 9BCE39752227712500B7A992 /* BalanceInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 9BCE39742227712500B7A992 /* BalanceInfo.plist */; };
9BCE39772227731800B7A992 /* UtilizationfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BCE39762227731800B7A992 /* UtilizationfaceController.swift */; };
9BCE39792227839B00B7A992 /* AccountNumberInterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BCE39782227839B00B7A992 /* AccountNumberInterfaceController.swift */; };
9BCE397D222F5A2800B7A992 /* PlistUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BCE397C222F5A2800B7A992 /* PlistUtil.swift */; };
@@ -99,7 +99,7 @@
67C8DD8221ED323B0063A01B /* CircleIndicator.sks */ = {isa = PBXFileReference; lastKnownFileType = file.sks; path = CircleIndicator.sks; sourceTree = ""; };
67C8DD8421ED3B5A0063A01B /* WellnessInterfaceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WellnessInterfaceController.swift; sourceTree = ""; };
9BCE39722227138E00B7A992 /* BalanceInterfaceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BalanceInterfaceController.swift; sourceTree = ""; };
- 9BCE39742227712500B7A992 /* Property List.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Property List.plist"; sourceTree = ""; };
+ 9BCE39742227712500B7A992 /* BalanceInfo.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = BalanceInfo.plist; sourceTree = ""; };
9BCE39762227731800B7A992 /* UtilizationfaceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UtilizationfaceController.swift; sourceTree = ""; };
9BCE39782227839B00B7A992 /* AccountNumberInterfaceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountNumberInterfaceController.swift; sourceTree = ""; };
9BCE397C222F5A2800B7A992 /* PlistUtil.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlistUtil.swift; sourceTree = ""; };
@@ -192,7 +192,7 @@
9BCE397C222F5A2800B7A992 /* PlistUtil.swift */,
67BAC291219E254900713FEF /* Assets.xcassets */,
67BAC293219E254900713FEF /* Info.plist */,
- 9BCE39742227712500B7A992 /* Property List.plist */,
+ 9BCE39742227712500B7A992 /* BalanceInfo.plist */,
);
path = "SynchronyFinancial WatchKit Extension";
sourceTree = "";
@@ -335,7 +335,7 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- 9BCE39752227712500B7A992 /* Property List.plist in Resources */,
+ 9BCE39752227712500B7A992 /* BalanceInfo.plist in Resources */,
67BAC292219E254900713FEF /* Assets.xcassets in Resources */,
67C8DD8321ED323B0063A01B /* CircleIndicator.sks in Resources */,
);