diff --git a/TraccarClient.xcodeproj/project.pbxproj b/TraccarClient.xcodeproj/project.pbxproj index ea4f213af996a5fb4f3083317de4aa46ffe94fa0..c8befd0ec26b972734b9db0dad227d94032ffef8 100644 --- a/TraccarClient.xcodeproj/project.pbxproj +++ b/TraccarClient.xcodeproj/project.pbxproj @@ -100,6 +100,10 @@ 53F10AEC2AF06556004D0529 /* UIImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F10AEB2AF06556004D0529 /* UIImage.swift */; }; 53F10AEE2AF06785004D0529 /* UITextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F10AED2AF06785004D0529 /* UITextField.swift */; }; 53F10AF02AF06906004D0529 /* UIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F10AEF2AF06906004D0529 /* UIImageView.swift */; }; + 53F10AF42AF0F306004D0529 /* ConnectViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F10AF22AF0F306004D0529 /* ConnectViewController.swift */; }; + 53F10AF52AF0F306004D0529 /* ConnectViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 53F10AF32AF0F306004D0529 /* ConnectViewController.xib */; }; + 53F10AF72AF101DB004D0529 /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F10AF62AF101DB004D0529 /* UIColor.swift */; }; + 53F10AF92AF101EC004D0529 /* Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F10AF82AF101EC004D0529 /* Color.swift */; }; 5E394EBE28A9CC7600396F33 /* BatteryStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E394EBD28A9CC7600396F33 /* BatteryStatus.swift */; }; 5E716A271F63A0B100A2DBC3 /* DistanceCalculator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E716A261F63A0B100A2DBC3 /* DistanceCalculator.swift */; }; 5E716A291F63A45A00A2DBC3 /* RequestManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E716A281F63A45A00A2DBC3 /* RequestManager.swift */; }; @@ -247,6 +251,10 @@ 53F10AEB2AF06556004D0529 /* UIImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImage.swift; sourceTree = "<group>"; }; 53F10AED2AF06785004D0529 /* UITextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UITextField.swift; sourceTree = "<group>"; }; 53F10AEF2AF06906004D0529 /* UIImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIImageView.swift; sourceTree = "<group>"; }; + 53F10AF22AF0F306004D0529 /* ConnectViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectViewController.swift; sourceTree = "<group>"; }; + 53F10AF32AF0F306004D0529 /* ConnectViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ConnectViewController.xib; sourceTree = "<group>"; }; + 53F10AF62AF101DB004D0529 /* UIColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColor.swift; sourceTree = "<group>"; }; + 53F10AF82AF101EC004D0529 /* Color.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Color.swift; sourceTree = "<group>"; }; 5E394EBD28A9CC7600396F33 /* BatteryStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BatteryStatus.swift; sourceTree = "<group>"; }; 5E716A261F63A0B100A2DBC3 /* DistanceCalculator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DistanceCalculator.swift; sourceTree = "<group>"; }; 5E716A281F63A45A00A2DBC3 /* RequestManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestManager.swift; sourceTree = "<group>"; }; @@ -430,6 +438,8 @@ 53F10AEB2AF06556004D0529 /* UIImage.swift */, 53F10AED2AF06785004D0529 /* UITextField.swift */, 53F10AEF2AF06906004D0529 /* UIImageView.swift */, + 53F10AF62AF101DB004D0529 /* UIColor.swift */, + 53F10AF82AF101EC004D0529 /* Color.swift */, ); name = helpers; sourceTree = "<group>"; @@ -527,6 +537,7 @@ 532683C42AEA5DB000A364C0 /* Controllers */ = { isa = PBXGroup; children = ( + 53F10AF12AF0F267004D0529 /* MainViewController */, 53D62E3C2AEFA2F800C80BAC /* InitialViewController */, 532683B62AEA505C00A364C0 /* LoginViewController */, 53157ECB2AEE55AB003C9B6A /* KNViewController.swift */, @@ -576,6 +587,16 @@ path = InitialViewController; sourceTree = "<group>"; }; + 53F10AF12AF0F267004D0529 /* MainViewController */ = { + isa = PBXGroup; + children = ( + CBAA0F7E1F68E807008BBBBE /* MainViewController.swift */, + 53F10AF22AF0F306004D0529 /* ConnectViewController.swift */, + 53F10AF32AF0F306004D0529 /* ConnectViewController.xib */, + ); + path = MainViewController; + sourceTree = "<group>"; + }; CED4870F17DB1BF6007FCF57 = { isa = PBXGroup; children = ( @@ -623,7 +644,6 @@ 5326838E2AE947D900A364C0 /* Network */, CB4197921F674A3E008F301C /* DatabaseHelper.swift */, 5E716A261F63A0B100A2DBC3 /* DistanceCalculator.swift */, - CBAA0F7E1F68E807008BBBBE /* MainViewController.swift */, CB4197981F67724F008F301C /* NetworkManager.swift */, CB7ED07F1F6602CD00A33FCF /* Position.swift */, 5E394EBD28A9CC7600396F33 /* BatteryStatus.swift */, @@ -805,6 +825,7 @@ 5326835D2AE91A6F00A364C0 /* Montserrat-Bold.ttf in Resources */, 53554AE32AED1B480018BAEE /* KNButtonView.xib in Resources */, 532683542AE91A6F00A364C0 /* Montserrat-LightItalic.ttf in Resources */, + 53F10AF52AF0F306004D0529 /* ConnectViewController.xib in Resources */, 5326835C2AE91A6F00A364C0 /* Montserrat-ThinItalic.ttf in Resources */, 53157ED12AEE563C003C9B6A /* KNSpinnerView.xib in Resources */, 532683562AE91A6F00A364C0 /* Montserrat-MediumItalic.ttf in Resources */, @@ -865,6 +886,7 @@ 53554AE02AED1B480018BAEE /* KNButtonViewHelper.swift in Sources */, 53157EDC2AEE5841003C9B6A /* UIWindow.swift in Sources */, 53554AE22AED1B480018BAEE /* ButtonTableViewCell.swift in Sources */, + 53F10AF92AF101EC004D0529 /* Color.swift in Sources */, 532683832AE928F900A364C0 /* KNTableViewCell.swift in Sources */, 5326837C2AE923A500A364C0 /* KNField.swift in Sources */, 53157ECA2AEE4DFE003C9B6A /* DeviceModel.swift in Sources */, @@ -877,6 +899,7 @@ 53F10AE82AF05EB5004D0529 /* Coordinatable.swift in Sources */, 53D62E3F2AEFA31200C80BAC /* InitialViewController.swift in Sources */, 532683AD2AE94BFC00A364C0 /* Logs.swift in Sources */, + 53F10AF72AF101DB004D0529 /* UIColor.swift in Sources */, 5E394EBE28A9CC7600396F33 /* BatteryStatus.swift in Sources */, 53157ED32AEE56FE003C9B6A /* Globals.swift in Sources */, 53F10AF02AF06906004D0529 /* UIImageView.swift in Sources */, @@ -923,6 +946,7 @@ 532683C32AEA537F00A364C0 /* UITableView.swift in Sources */, 5326839B2AE9482300A364C0 /* NetworkRequest.swift in Sources */, CB4197931F674A3E008F301C /* DatabaseHelper.swift in Sources */, + 53F10AF42AF0F306004D0529 /* ConnectViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/TraccarClient.xcodeproj/project.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate b/TraccarClient.xcodeproj/project.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate index ed8e56072da3416147a9f55a7d4db96802839e7f..8a1f03e5d991331a6485087c84605cabedc4218c 100644 Binary files a/TraccarClient.xcodeproj/project.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate and b/TraccarClient.xcodeproj/project.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/TraccarClient/.DS_Store b/TraccarClient/.DS_Store index 686a648a6a50c5bbc9ee4436a0b2d1044d78c75b..135acbc6c8039c0b8e0c571828429ae70828cb24 100644 Binary files a/TraccarClient/.DS_Store and b/TraccarClient/.DS_Store differ diff --git a/TraccarClient/AppDelegate.swift b/TraccarClient/AppDelegate.swift index 2e6c6848aa29ab1cff2a37b3745bb8e3061d9c43..dff0a86fe4de5950d08e5a08b2f5fad2c93d7148 100644 --- a/TraccarClient/AppDelegate.swift +++ b/TraccarClient/AppDelegate.swift @@ -42,7 +42,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, PositionProviderDelegate IQKeyboardManager.shared.enable = true IQKeyboardManager.shared.shouldResignOnTouchOutside = true IQKeyboardManager.shared.previousNextDisplayMode = .alwaysShow - IQKeyboardManager.shared.toolbarTintColor = .purple + IQKeyboardManager.shared.toolbarTintColor = .main UIDevice.current.isBatteryMonitoringEnabled = true diff --git a/TraccarClient/Base.lproj/MainStoryboard.storyboard b/TraccarClient/Base.lproj/MainStoryboard.storyboard index c0daa302d746771589d9d60df0011bc2df702feb..d599670c497818a8170b15871071c18eea3ed2d9 100644 --- a/TraccarClient/Base.lproj/MainStoryboard.storyboard +++ b/TraccarClient/Base.lproj/MainStoryboard.storyboard @@ -33,7 +33,7 @@ <!--Status View Controller--> <scene sceneID="El5-px-WCe"> <objects> - <tableViewController id="LmD-5n-dPz" customClass="StatusViewController" customModule="TraccarClient" customModuleProvider="target" sceneMemberID="viewController"> + <tableViewController storyboardIdentifier="StatusViewController" id="LmD-5n-dPz" customClass="StatusViewController" customModule="TraccarClient" customModuleProvider="target" sceneMemberID="viewController"> <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="18" sectionFooterHeight="18" id="fdn-aT-LfP"> <rect key="frame" x="0.0" y="0.0" width="375" height="667"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> diff --git a/TraccarClient/Color.swift b/TraccarClient/Color.swift new file mode 100644 index 0000000000000000000000000000000000000000..3b32b625b3b261096db8856a7e6a12595a5f3102 --- /dev/null +++ b/TraccarClient/Color.swift @@ -0,0 +1,15 @@ +// +// Color.swift +// TraccarClient +// +// Created by George Makhoul on 31/10/2023. +// Copyright © 2023 Traccar. All rights reserved. +// + + +import UIKit + +extension UIColor { + + static let main = hex("#62389F") +} diff --git a/TraccarClient/Custom/BMTextFieldView/KNTextFieldView.swift b/TraccarClient/Custom/BMTextFieldView/KNTextFieldView.swift index b721959add6d70ed192eb124b640c6b4b8f3d6a8..ba133fbee37e20eb92f8198582cc3035f19034db 100644 --- a/TraccarClient/Custom/BMTextFieldView/KNTextFieldView.swift +++ b/TraccarClient/Custom/BMTextFieldView/KNTextFieldView.swift @@ -114,7 +114,7 @@ final class KNTextFieldView: KNComponentView { userNameLabel_leading.set(0) textField_leading.set(12) - borderView.addBorder(radius: 13, width: 1, color: .purple) + borderView.addBorder(radius: 13, width: 1, color: .main) titleLabel.set(text: "", color: .black, font: .semibold(12)) titleLabel.numberOfLines = 1 @@ -122,7 +122,7 @@ final class KNTextFieldView: KNComponentView { infoLabel.set(text: "", color: .black, font: .regular(12)) infoLabel.numberOfLines = 0 - countLabel.set(text: "", color: .purple, font: .medium(12)) + countLabel.set(text: "", color: .main, font: .medium(12)) countLabel.numberOfLines = 1 countLabel.align(to: .left) @@ -132,7 +132,7 @@ final class KNTextFieldView: KNComponentView { textField.placeholder = "" textField.delegate = self textField.isUserInteractionEnabled = true - textField.tintColor = .purple + textField.tintColor = .main textField.textAlignment = .left accessoryViewLabel.set(text: "", color: .gray, font: .medium(16)) @@ -176,7 +176,7 @@ final class KNTextFieldView: KNComponentView { guard let helper = helper else { return } // - borderView.addBorder(radius: 13, width: 1, color: .purple) + borderView.addBorder(radius: 13, width: 1, color: .main) textField.textAlignment = .left textField.semanticContentAttribute = .forceLeftToRight @@ -218,7 +218,7 @@ final class KNTextFieldView: KNComponentView { if text.count > 0 { strongSelf.borderView.addBorder(radius: 13, width: 2, - color: .purple) + color: .main) if strongSelf.field?.field != .email || strongSelf.field?.field != .shipping_address_email || strongSelf.field?.field != .billing_address_email { strongSelf.field?.error.value = "" @@ -238,7 +238,7 @@ final class KNTextFieldView: KNComponentView { field.value.value = text if text.count > 0 { - strongSelf.borderView.addBorder(radius: 13, width: 2, color: .purple) + strongSelf.borderView.addBorder(radius: 13, width: 2, color: .main) } //strongSelf.validate() @@ -287,7 +287,7 @@ final class KNTextFieldView: KNComponentView { if strongSelf.isUnitMeasurement.dropdown { return } if text.count > 0 { - strongSelf.borderView.addBorder(radius: 13, width: 2, color: .purple) + strongSelf.borderView.addBorder(radius: 13, width: 2, color: .main) strongSelf.set(error: text) strongSelf.delegate?.updateUI(for: field) } @@ -318,7 +318,7 @@ final class KNTextFieldView: KNComponentView { if isUnitMeasurement.dropdown { return } if text.count > 0 { - borderView.addBorder(radius: 13, width: 2, color: .purple) + borderView.addBorder(radius: 13, width: 2, color: .main) } } textField.textAlignment = .left diff --git a/TraccarClient/Custom/KNButtonView/KNButtonView.swift b/TraccarClient/Custom/KNButtonView/KNButtonView.swift index abd50edb31759c0b3da10a4bf34a988212dfe810..884c6d6309f700e06f9c907d03700c75599cae44 100644 --- a/TraccarClient/Custom/KNButtonView/KNButtonView.swift +++ b/TraccarClient/Custom/KNButtonView/KNButtonView.swift @@ -16,7 +16,7 @@ final class KNButtonView: KNComponentView { @IBOutlet private weak var button: UIButton! // MARK: - Properties - private var color: UIColor = .purple + private var color: UIColor = .main private var title: String = "" private var cornerRadius: CGFloat = 10.0 private var titleColor: UIColor = .white @@ -186,10 +186,10 @@ final class KNButtonView: KNComponentView { boxView.addCorners(10) if action == .retryPayment || action == .trackOrder { - boxView.backgroundColor = .purple + boxView.backgroundColor = .main } else { - boxView.backgroundColor = .purple + boxView.backgroundColor = .main } @@ -197,12 +197,12 @@ final class KNButtonView: KNComponentView { var font: UIFont = .semibold(17) if style == .transparent { - boxView.backgroundColor = .purple + boxView.backgroundColor = .main - color = .purple + color = .main font = .semibold(14) }else if style == .transperantExtraBlue { - boxView.backgroundColor = .purple + boxView.backgroundColor = .main titleColor = .white titleFont = .semibold(14) @@ -216,7 +216,7 @@ final class KNButtonView: KNComponentView { private func updateTertiary() { boxView.addCorners(10) - boxView.backgroundColor = .purple + boxView.backgroundColor = .main adjustSpaceBetweenTitleAndIcon() adjustIconPlacement() @@ -241,7 +241,7 @@ final class KNButtonView: KNComponentView { self.delegate = delegate boxView.addCorners(cornerRadius) - boxView.backgroundColor = .purple + boxView.backgroundColor = .main titleColor = .white titleFont = .semibold(17) diff --git a/TraccarClient/Images.xcassets/.DS_Store b/TraccarClient/Images.xcassets/.DS_Store index cf59f693fc5726c57280ef274cc28e817a562ed0..e473d4f10f5fd7d90e926cfa5d4813cb9f5d28e8 100644 Binary files a/TraccarClient/Images.xcassets/.DS_Store and b/TraccarClient/Images.xcassets/.DS_Store differ diff --git a/TraccarClient/Images.xcassets/connectedButton.imageset/ConnectedButton.png b/TraccarClient/Images.xcassets/connectedButton.imageset/ConnectedButton.png new file mode 100644 index 0000000000000000000000000000000000000000..fb45de7959ffc21216331fcf742fb36b1991a06a Binary files /dev/null and b/TraccarClient/Images.xcassets/connectedButton.imageset/ConnectedButton.png differ diff --git a/TraccarClient/Images.xcassets/connectedButton.imageset/Contents.json b/TraccarClient/Images.xcassets/connectedButton.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..b8ac21dbfa2f847f0371b7294694ed67eb920b49 --- /dev/null +++ b/TraccarClient/Images.xcassets/connectedButton.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "ConnectedButton.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "connectedButtonx2.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "connectedButtonx3.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/TraccarClient/Images.xcassets/connectedButton.imageset/connectedButtonx2.png b/TraccarClient/Images.xcassets/connectedButton.imageset/connectedButtonx2.png new file mode 100644 index 0000000000000000000000000000000000000000..7582e23da7f50e3be9dac5e9c13c40df17f5f742 Binary files /dev/null and b/TraccarClient/Images.xcassets/connectedButton.imageset/connectedButtonx2.png differ diff --git a/TraccarClient/Images.xcassets/connectedButton.imageset/connectedButtonx3.png b/TraccarClient/Images.xcassets/connectedButton.imageset/connectedButtonx3.png new file mode 100644 index 0000000000000000000000000000000000000000..d678af4f4971377ed5dcc9a8016c51b876dc1672 Binary files /dev/null and b/TraccarClient/Images.xcassets/connectedButton.imageset/connectedButtonx3.png differ diff --git a/TraccarClient/Images.xcassets/connectedLogo.imageset/Contents.json b/TraccarClient/Images.xcassets/connectedLogo.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..2d2351f3da08d6bbba5d69d32303b5756112bc8e --- /dev/null +++ b/TraccarClient/Images.xcassets/connectedLogo.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "connectedLogo1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "connectedLogo2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "connectedLogo3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo1x.png b/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo1x.png new file mode 100644 index 0000000000000000000000000000000000000000..aac01020a4090267a71ebf96e714d5586d4c9583 Binary files /dev/null and b/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo1x.png differ diff --git a/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo2x.png b/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c41b1493f6c2d34b5297a2e212d0eaa8f5650685 Binary files /dev/null and b/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo2x.png differ diff --git a/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo3x.png b/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo3x.png new file mode 100644 index 0000000000000000000000000000000000000000..37089390e148c15d84cf4ef2bd5a4c52fe0e64f1 Binary files /dev/null and b/TraccarClient/Images.xcassets/connectedLogo.imageset/connectedLogo3x.png differ diff --git a/TraccarClient/Images.xcassets/disconnectedButton.imageset/Contents.json b/TraccarClient/Images.xcassets/disconnectedButton.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..593fb721e98f3b5e76d8f5426035d46461cf9f91 --- /dev/null +++ b/TraccarClient/Images.xcassets/disconnectedButton.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "disconnectedButton.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "disconnectedButton2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "disconnectedButton3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton.png b/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton.png new file mode 100644 index 0000000000000000000000000000000000000000..5141671fccc9c3296f6f8b491b556459ffeb6d69 Binary files /dev/null and b/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton.png differ diff --git a/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton2x.png b/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton2x.png new file mode 100644 index 0000000000000000000000000000000000000000..460221fd74aadbdcac0847395e91b97ed0d5dbb4 Binary files /dev/null and b/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton2x.png differ diff --git a/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton3x.png b/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton3x.png new file mode 100644 index 0000000000000000000000000000000000000000..2a4e2b913aa23c584092c3bfb542f9d9b8afb40b Binary files /dev/null and b/TraccarClient/Images.xcassets/disconnectedButton.imageset/disconnectedButton3x.png differ diff --git a/TraccarClient/Images.xcassets/disconnectedLogo.imageset/Contents.json b/TraccarClient/Images.xcassets/disconnectedLogo.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..2b680612832bdc675b0923951c13fee31347c0e4 --- /dev/null +++ b/TraccarClient/Images.xcassets/disconnectedLogo.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "disconnectedLogo1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "disconnectedLogo2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "disconnectedLogo3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo1x.png b/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo1x.png new file mode 100644 index 0000000000000000000000000000000000000000..436b50313e1546904ccbecc4d5f04b06289a929d Binary files /dev/null and b/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo1x.png differ diff --git a/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo2x.png b/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo2x.png new file mode 100644 index 0000000000000000000000000000000000000000..aad4df9985fd62b391e194846f9b491917bd28a6 Binary files /dev/null and b/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo2x.png differ diff --git a/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo3x.png b/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo3x.png new file mode 100644 index 0000000000000000000000000000000000000000..00d66394b77225e19b11a2035f6c05c74a6132b2 Binary files /dev/null and b/TraccarClient/Images.xcassets/disconnectedLogo.imageset/disconnectedLogo3x.png differ diff --git a/TraccarClient/Images.xcassets/nmoLogo.imageset/Contents.json b/TraccarClient/Images.xcassets/nmoLogo.imageset/Contents.json new file mode 100644 index 0000000000000000000000000000000000000000..834da7f296a4b0144ffb253c19d5fefc98ebf452 --- /dev/null +++ b/TraccarClient/Images.xcassets/nmoLogo.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "nmoAiLogo.pdf", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/TraccarClient/Images.xcassets/nmoLogo.imageset/nmoAiLogo.pdf b/TraccarClient/Images.xcassets/nmoLogo.imageset/nmoAiLogo.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1c7ffdd4a7b407b6f4358e5703c2924554c169fc --- /dev/null +++ b/TraccarClient/Images.xcassets/nmoLogo.imageset/nmoAiLogo.pdf @@ -0,0 +1,523 @@ +%PDF-1.7 + +1 0 obj + << >> +endobj + +2 0 obj + << /Length 3 0 R >> +stream +/DeviceRGB CS +/DeviceRGB cs +q +1.000000 0.000000 -0.000000 1.000000 9.889221 65.726501 cm +0.000000 0.000000 0.000000 scn +28.289259 25.178450 m +28.333239 25.102062 28.377218 25.102062 28.421198 25.178450 c +31.783325 30.969532 35.126415 36.742985 38.450470 42.498810 c +39.057648 43.550606 39.849937 44.861923 40.827332 46.432762 c +41.772560 47.951698 42.872372 48.911438 44.759876 48.911438 c +52.226532 48.911438 59.693180 48.911438 67.159836 48.911438 c +68.332512 48.911438 69.437248 48.471722 69.793678 47.295551 c +70.186539 45.999901 68.999100 44.384014 68.374847 43.317528 c +60.715542 30.226877 53.157646 17.078444 45.492432 3.990730 c +43.154957 -0.000023 37.709057 0.079304 35.381432 4.009338 c +33.043304 7.956020 30.733068 11.924580 28.450735 15.915005 c +28.443670 15.927208 28.433701 15.937508 28.421715 15.944988 c +28.409727 15.952465 28.396099 15.956890 28.382051 15.957859 c +28.368004 15.958832 28.353973 15.956318 28.341215 15.950550 c +28.328459 15.944778 28.317375 15.935932 28.308952 15.924801 c +28.223619 15.811852 28.135004 15.675396 28.043106 15.515438 c +26.025305 12.033607 24.002907 8.554714 21.975916 5.078758 c +20.766809 3.005527 19.525211 1.366138 16.919924 1.095844 c +16.405956 1.042305 15.536214 1.008678 14.310698 0.994968 c +10.806129 0.954491 7.301562 0.961674 3.796993 1.016518 c +2.711949 1.033165 1.482167 0.856888 0.673799 1.707920 c +-0.319676 2.756779 -0.091247 3.807598 0.565491 4.942638 c +5.747841 13.887802 10.942991 22.825129 16.150942 31.754623 c +17.270447 33.675083 18.117214 35.270405 20.661455 35.102940 c +22.000530 35.014801 22.995975 34.176498 23.681267 33.033623 c +25.254025 30.410988 26.790022 27.792599 28.289259 25.178450 c +h +44.840614 44.499573 m +40.212933 36.557240 35.629555 28.616865 31.025501 20.630461 c +31.011417 20.606022 31.004000 20.578402 31.004000 20.550381 c +31.004000 20.522360 31.011417 20.494925 31.025501 20.470829 c +34.021355 15.316311 37.003090 10.176811 39.970715 5.052322 c +40.094776 4.838177 40.221138 4.614559 40.349796 4.381481 c +40.355457 4.370941 40.363827 4.362091 40.374054 4.355820 c +40.384281 4.349548 40.396000 4.346081 40.408009 4.345783 c +40.420021 4.345486 40.431896 4.348362 40.442425 4.354115 c +40.452957 4.359871 40.461758 4.368301 40.467945 4.378544 c +42.037418 6.933609 43.508434 9.531757 45.011936 12.123055 c +51.276707 22.919146 57.548367 33.726986 63.826920 44.546581 c +63.831612 44.554817 63.834076 44.564137 63.834072 44.573601 c +63.834068 44.583065 63.831596 44.592339 63.826900 44.600483 c +63.822208 44.608627 63.815456 44.615360 63.807335 44.619995 c +63.799213 44.624634 63.790005 44.627007 63.780640 44.626884 c +45.062153 44.626884 l +45.017246 44.626858 44.973133 44.615078 44.934246 44.592731 c +44.895359 44.570385 44.863071 44.538258 44.840614 44.499573 c +h +6.095081 5.276585 m +9.683014 5.243290 13.257819 5.245247 16.819494 5.282463 c +16.844648 5.282742 16.869314 5.289570 16.891069 5.302277 c +16.912823 5.314983 16.930912 5.333130 16.943554 5.354931 c +19.766769 10.254173 22.604101 15.144928 25.455542 20.027195 c +25.635725 20.336662 25.710558 20.557009 25.514620 20.895857 c +23.794827 23.878883 22.068140 26.858322 20.334564 29.834167 c +20.329636 29.842804 20.322498 29.849966 20.313860 29.854944 c +20.305222 29.859922 20.295387 29.862541 20.285330 29.862541 c +20.275272 29.862541 20.265345 29.859922 20.256535 29.854944 c +20.247726 29.849966 20.240343 29.842804 20.235119 29.834167 c +6.051758 5.351017 l +6.047479 5.343449 6.045257 5.334904 6.045311 5.326221 c +6.045366 5.317539 6.047694 5.309021 6.052068 5.301506 c +6.056441 5.293991 6.062710 5.287739 6.070253 5.283371 c +6.077796 5.278999 6.086353 5.276661 6.095081 5.276585 c +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 121.956116 61.554810 cm +0.000000 0.000000 0.000000 scn +11.015539 4.624681 m +5.515640 2.890245 -0.343581 7.152311 0.015734 12.890951 c +0.532869 21.130749 11.795703 23.457382 15.897054 16.300995 c +18.518463 11.728124 15.934778 6.176752 11.015539 4.624681 c +h +8.470775 7.588645 m +9.745420 7.593040 10.966049 8.106825 11.864154 9.016968 c +12.762259 9.927112 13.264263 11.159060 13.259730 12.441803 c +13.257486 13.076952 13.130956 13.705456 12.887355 14.291424 c +12.643754 14.877394 12.287865 15.409353 11.839993 15.856934 c +11.392123 16.304514 10.861045 16.658945 10.277088 16.899996 c +9.693131 17.141047 9.067735 17.263996 8.436594 17.261820 c +7.161949 17.257423 5.941308 16.743643 5.043203 15.833500 c +4.145098 14.923356 3.643093 13.691404 3.647626 12.408662 c +3.649870 11.773512 3.776402 11.145010 4.020002 10.559040 c +4.263602 9.973071 4.619504 9.441113 5.067375 8.993534 c +5.515246 8.545954 6.046312 8.191522 6.630268 7.950471 c +7.214225 7.709420 7.839634 7.586469 8.470775 7.588645 c +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 79.760864 66.237793 cm +0.000000 0.000000 0.000000 scn +3.679535 13.451571 m +3.686775 13.338743 3.720997 13.330264 3.782205 13.426135 c +4.775366 14.988432 6.538576 15.728984 8.345220 15.732897 c +10.539847 15.736810 12.434350 14.880824 13.467000 12.887110 c +14.102781 11.658403 14.206442 10.347521 14.208416 8.981855 c +14.213681 6.055525 14.216316 3.112890 14.216316 0.153950 c +14.216316 0.129302 14.206433 0.105663 14.188845 0.088235 c +14.171256 0.070806 14.147401 0.061013 14.122527 0.061013 c +10.584272 0.055144 l +10.570658 0.055144 10.557596 0.060398 10.547969 0.069755 c +10.538342 0.079111 10.532934 0.091805 10.532934 0.105037 c +10.511215 3.024846 10.504963 5.934872 10.514176 8.835115 c +10.518126 10.126431 10.232815 11.283725 9.076759 11.984166 c +8.187259 12.522215 7.024292 12.578953 6.034093 12.242428 c +4.413050 11.690683 3.737779 10.370022 3.720009 8.725550 c +3.689075 5.849437 3.674926 2.958974 3.677558 0.054165 c +3.677560 0.047658 3.676250 0.041218 3.673708 0.035219 c +3.671166 0.029220 3.667442 0.023784 3.662754 0.019229 c +3.658065 0.014674 3.652503 0.011090 3.646400 0.008691 c +3.640297 0.006290 3.633773 0.005121 3.627208 0.005251 c +2.468192 0.042425 1.297657 0.042098 0.115605 0.004272 c +0.104598 0.003878 0.093624 0.005689 0.083338 0.009592 c +0.073052 0.013495 0.063666 0.019412 0.055740 0.026991 c +0.047815 0.034571 0.041514 0.043657 0.037212 0.053705 c +0.032910 0.063752 0.030697 0.074555 0.030704 0.085470 c +0.026755 3.573980 0.017868 7.069339 0.004047 10.571545 c +-0.000889 11.900035 0.027744 13.525919 0.001088 15.004085 c +-0.004835 15.331805 0.000103 15.455068 0.379202 15.426698 c +0.581256 15.411046 0.783966 15.408112 0.987337 15.417893 c +1.860055 15.460938 2.702495 15.453437 3.514662 15.395392 c +3.635763 15.386914 3.693028 15.322675 3.686446 15.202673 c +3.650248 14.545928 3.647943 13.962228 3.679535 13.451571 c +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 97.001953 66.072205 cm +0.000000 0.000000 0.000000 scn +12.106738 13.399842 m +12.118659 13.392098 12.132051 13.386855 12.146087 13.384436 c +12.160121 13.382016 12.174508 13.382473 12.188359 13.385775 c +12.202211 13.389075 12.215237 13.395153 12.226637 13.403634 c +12.238037 13.412115 12.247563 13.422820 12.254646 13.435093 c +12.927791 14.589161 13.908911 15.326119 15.198009 15.645968 c +16.895004 16.067974 18.653139 16.016081 20.120386 15.066324 c +22.199970 13.719041 22.542128 11.381855 22.534239 9.104397 c +22.524378 6.157213 22.507284 3.210030 22.482962 0.262847 c +22.482719 0.249168 22.477354 0.236117 22.467978 0.226439 c +22.458599 0.216763 22.445950 0.211210 22.432684 0.210950 c +19.007130 0.169828 l +18.989923 0.169518 18.972853 0.172787 18.956959 0.179432 c +18.941067 0.186077 18.926706 0.195957 18.914770 0.208451 c +18.902836 0.220946 18.893572 0.235788 18.887579 0.252053 c +18.881586 0.268319 18.878990 0.285658 18.879936 0.302988 c +18.892756 0.510564 18.851339 0.743599 18.854298 0.941383 c +18.897684 3.825902 18.940083 6.671257 18.778370 9.618441 c +18.728081 10.530991 18.475655 11.395563 17.783447 11.996749 c +16.656389 12.975880 15.042212 12.798656 14.014747 11.729445 c +13.047429 10.722898 13.029683 9.409885 13.031655 7.880483 c +13.033628 6.350101 13.033627 4.821679 13.055320 3.292277 c +13.070439 2.267454 13.022126 1.244913 12.910373 0.224659 c +12.908912 0.211174 12.902563 0.198705 12.892547 0.189663 c +12.882530 0.180621 12.869552 0.175647 12.856135 0.175702 c +9.439475 0.212910 l +9.425694 0.213161 9.412545 0.218710 9.402799 0.228388 c +9.393052 0.238067 9.387464 0.251116 9.387211 0.264801 c +9.341195 2.975035 9.347764 5.660467 9.406927 8.321093 c +9.445383 10.034571 9.142669 12.469668 6.921094 12.580310 c +5.649744 12.643627 4.723189 12.152103 4.141419 11.105740 c +3.646420 10.213751 3.670076 9.428488 3.663174 8.191846 c +3.650027 5.556679 3.636889 2.921512 3.623741 0.286345 c +3.623741 0.279787 3.622486 0.273292 3.620058 0.267233 c +3.617630 0.261174 3.614073 0.255669 3.609586 0.251032 c +3.605099 0.246395 3.599776 0.242719 3.593914 0.240209 c +3.588052 0.237700 3.581759 0.236408 3.575414 0.236408 c +0.130154 0.194306 l +0.118806 0.194177 0.107550 0.196309 0.097028 0.200582 c +0.086507 0.204853 0.076933 0.211177 0.068862 0.219191 c +0.060792 0.227205 0.054374 0.236749 0.050001 0.247267 c +0.045627 0.257785 0.043381 0.269073 0.043381 0.280470 c +0.000000 15.412934 l +0.000000 15.436337 0.004631 15.459511 0.013650 15.481132 c +0.022668 15.502752 0.035888 15.522397 0.052553 15.538944 c +0.069217 15.555492 0.089001 15.568616 0.110774 15.577572 c +0.132548 15.586527 0.155889 15.591137 0.179456 15.591137 c +3.434415 15.591137 l +3.481692 15.591162 3.527107 15.572961 3.560994 15.540409 c +3.594881 15.507856 3.614561 15.463525 3.615845 15.416852 c +3.667122 13.657354 l +3.671066 13.532025 3.705912 13.530067 3.771649 13.651480 c +4.651207 15.260191 6.185499 15.882918 7.981100 15.894669 c +9.686970 15.906418 11.098007 14.999743 11.958831 13.572170 c +12.008790 13.489270 12.058093 13.431828 12.106738 13.399842 c +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 152.959839 75.769958 cm +0.000000 0.000000 0.000000 scn +1.209899 -0.000006 m +1.878109 -0.000006 2.419798 0.507829 2.419798 1.134276 c +2.419798 1.760722 1.878109 2.268555 1.209899 2.268555 c +0.541689 2.268555 0.000000 1.760722 0.000000 1.134276 c +0.000000 0.507829 0.541689 -0.000006 1.209899 -0.000006 c +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 142.524414 65.460449 cm +0.000000 0.000000 0.000000 scn +6.958498 1.760666 m +6.961141 1.827145 6.939000 1.836272 6.892084 1.788043 c +5.934606 0.797387 4.758741 0.442510 3.364484 0.723413 c +-0.280079 1.458583 -1.030404 5.952703 1.440603 8.318544 c +2.884750 9.700900 5.528224 9.844612 6.868297 8.259890 c +6.967414 8.142575 7.008051 8.159516 6.990210 8.310722 c +6.909918 8.995056 l +6.892738 9.138440 6.955515 9.210461 7.098245 9.211112 c +8.808027 9.216000 l +8.823079 9.216128 8.838004 9.213293 8.851948 9.207651 c +8.865891 9.202010 8.878585 9.193677 8.889275 9.183133 c +8.899964 9.172590 8.908444 9.160045 8.914235 9.146222 c +8.920026 9.132399 8.923007 9.117573 8.923007 9.102598 c +8.892275 0.865169 l +8.892267 0.858409 8.891006 0.851717 8.888548 0.845484 c +8.886091 0.839252 8.882496 0.833600 8.877974 0.828866 c +8.873451 0.824133 8.868091 0.820413 8.862208 0.817917 c +8.856325 0.815421 8.850033 0.814199 8.843708 0.814331 c +6.972363 0.836821 l +6.965765 0.836934 6.959267 0.838399 6.953234 0.841128 c +6.947201 0.843858 6.941763 0.847793 6.937239 0.852710 c +6.932715 0.857627 6.929189 0.863427 6.926882 0.869763 c +6.924574 0.876100 6.923526 0.882846 6.923797 0.889609 c +6.958498 1.760666 l +h +4.651721 2.463910 m +4.984127 2.482813 5.309412 2.567626 5.609009 2.713500 c +5.908606 2.859375 6.176650 3.063452 6.397826 3.314088 c +6.619002 3.564725 6.788990 3.857008 6.898073 4.174250 c +7.007157 4.491492 7.053202 4.827478 7.033586 5.163028 c +6.993969 5.840700 6.689293 6.475453 6.186583 6.927643 c +5.683873 7.379833 5.024300 7.612421 4.352976 7.574243 c +4.020569 7.555339 3.695285 7.470527 3.395688 7.324653 c +3.096091 7.178778 2.828060 6.974701 2.606883 6.724064 c +2.385707 6.473427 2.215719 6.181145 2.106636 5.863903 c +1.997553 5.546660 1.951507 5.210674 1.971123 4.875124 c +2.010740 4.197452 2.315415 3.562699 2.818126 3.110509 c +3.320836 2.658319 3.980397 2.425731 4.651721 2.463910 c +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 153.111023 66.224426 cm +0.000000 0.000000 0.000000 scn +1.188121 0.089630 m +0.845249 0.077963 0.477835 0.053984 0.085885 0.017688 c +0.079239 0.017148 0.072550 0.017925 0.066239 0.019979 c +0.059928 0.022032 0.054132 0.025317 0.049227 0.029615 c +0.044322 0.033914 0.040411 0.039135 0.037744 0.044949 c +0.035077 0.050761 0.033713 0.057036 0.033737 0.063378 c +0.000000 8.334813 l +0.000092 8.357801 0.009012 8.379938 0.025050 8.396981 c +0.041088 8.414025 0.063114 8.424778 0.086908 8.427173 c +0.758337 8.491986 1.388524 8.503976 1.977472 8.463143 c +1.995065 8.461782 2.011554 8.454456 2.023941 8.442500 c +2.036328 8.430544 2.043792 8.414748 2.044959 8.398003 c +2.100855 7.628672 2.124366 6.882029 2.115505 6.158068 c +2.090965 4.203956 2.094034 2.247899 2.078697 0.292815 c +2.077333 0.155412 2.004737 0.082822 1.860908 0.075045 c +1.635962 0.063378 1.387504 0.096435 1.188121 0.089630 c +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 135.113770 50.239502 cm +0.000000 0.000000 0.000000 scn +4.332519 1.357412 m +1.696231 1.333972 l +1.672828 1.333706 1.649673 1.325538 1.629807 1.310544 c +1.609941 1.295551 1.594296 1.274432 1.584937 1.249972 c +1.257012 0.404159 l +1.211302 0.285002 1.119216 0.221189 0.980760 0.212725 c +0.153013 0.164867 l +0.009920 0.156403 -0.032813 0.221842 0.024822 0.361184 c +2.443495 6.207669 l +2.459521 6.246005 2.483502 6.280954 2.514044 6.310471 c +2.544586 6.339987 2.581068 6.363479 2.621359 6.379568 c +3.136095 6.584673 3.490190 6.457380 3.683630 5.997683 c +4.456066 4.163453 5.241084 2.284618 6.038693 0.361184 c +6.046862 0.341335 6.050473 0.319957 6.049270 0.298579 c +6.048068 0.277200 6.042087 0.256349 6.031743 0.237505 c +6.021398 0.218662 6.006953 0.202295 5.989432 0.189571 c +5.971912 0.176847 5.951747 0.168076 5.930383 0.163890 c +5.685270 0.117660 5.402726 0.110174 5.082755 0.141428 c +4.927737 0.157055 4.829032 0.238446 4.786634 0.385601 c +4.693889 0.708561 4.567363 1.017521 4.407046 1.312482 c +4.399570 1.326048 4.388698 1.337386 4.375581 1.345293 c +4.362463 1.353200 4.347588 1.357388 4.332519 1.357412 c +h +2.028123 2.347781 m +2.023411 2.336388 2.021609 2.324027 2.022883 2.311792 c +2.024158 2.299558 2.028474 2.287817 2.035438 2.277599 c +2.042402 2.267380 2.051802 2.258996 2.062828 2.253181 c +2.073854 2.247366 2.086159 2.244304 2.098672 2.244251 c +3.933050 2.237414 l +3.945646 2.237306 3.958076 2.240257 3.969234 2.246004 c +3.980392 2.251751 3.989933 2.260113 3.997012 2.270356 c +4.004090 2.280598 4.008486 2.292403 4.009809 2.304717 c +4.011132 2.317029 4.009338 2.329473 4.004593 2.340943 c +3.095356 4.572685 l +3.089679 4.586645 3.079878 4.598610 3.067214 4.607039 c +3.054549 4.615469 3.039605 4.619976 3.024310 4.619976 c +3.009014 4.619976 2.994070 4.615469 2.981405 4.607039 c +2.968741 4.598610 2.958941 4.586645 2.953264 4.572685 c +2.028123 2.347781 l +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 150.237549 49.961853 cm +0.000000 0.000000 0.000000 scn +1.316243 3.443716 m +0.366053 3.767904 0.027942 5.038213 0.484578 5.829585 c +1.184105 7.041130 2.853247 6.931436 3.903509 6.235067 c +3.921693 6.223088 3.937257 6.207486 3.949241 6.189222 c +3.961226 6.170959 3.969388 6.150419 3.973210 6.128863 c +3.977032 6.107307 3.976434 6.085195 3.971467 6.063878 c +3.966500 6.042560 3.957261 6.022492 3.944319 6.004905 c +3.810243 5.822080 3.656087 5.678429 3.481853 5.573957 c +3.452133 5.556102 3.418246 5.546590 3.383724 5.546417 c +3.349203 5.546245 3.315312 5.555418 3.285595 5.572977 c +2.818273 5.851133 1.858367 6.110683 1.452253 5.588651 c +0.877086 4.848208 2.659913 4.153800 3.108776 4.003948 c +4.933375 3.394748 4.769183 0.769897 2.831882 0.451584 c +1.840238 0.289001 0.955460 0.511984 0.177560 1.120531 c +-0.241185 1.448637 0.174650 1.812978 0.462234 1.973603 c +0.588537 2.044122 0.703186 2.028453 0.806171 1.926593 c +1.368708 1.370282 2.480167 0.825721 3.090310 1.679777 c +3.762633 2.621001 1.906955 3.242934 1.316243 3.443716 c +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 142.524414 50.296021 cm +0.000000 0.000000 0.000000 scn +5.219440 4.179065 m +4.652850 3.148113 4.011464 2.140057 3.295284 1.154896 c +3.284713 1.140182 3.270642 1.128266 3.254307 1.120202 c +3.237972 1.112138 3.219887 1.108176 3.201634 1.108661 c +3.183381 1.109146 3.165525 1.114061 3.149652 1.122981 c +3.133779 1.131901 3.120369 1.144547 3.110614 1.159801 c +1.222212 4.112341 l +1.152050 4.221585 1.116631 4.212102 1.115969 4.083888 c +1.093136 0.227628 l +1.092883 0.203517 1.084746 0.180226 1.070011 0.161401 c +1.055276 0.142577 1.034771 0.129285 1.011715 0.123617 c +0.733053 0.057547 0.423615 0.074885 0.083397 0.175625 c +0.059284 0.182796 0.038159 0.197451 0.023137 0.217422 c +0.008115 0.237394 -0.000001 0.261620 0.000000 0.286505 c +0.005963 6.233772 l +0.006014 6.248657 0.010255 6.263146 0.018180 6.275503 c +0.026104 6.287860 0.037370 6.297561 0.050637 6.303442 c +0.311427 6.419228 0.599350 6.443758 0.914417 6.377034 c +0.947663 6.370236 0.979254 6.356631 1.007254 6.337058 c +1.035255 6.317484 1.059075 6.292353 1.077247 6.263207 c +3.111608 3.051626 l +3.188389 2.931261 3.265508 2.931917 3.342951 3.053591 c +5.378306 6.254380 l +5.395798 6.281249 5.420642 6.302394 5.449789 6.315216 c +5.786036 6.458477 6.122287 6.451933 6.458534 6.295590 c +6.471844 6.289442 6.483105 6.279627 6.491015 6.267292 c +6.498926 6.254957 6.503155 6.240608 6.503208 6.225920 c +6.503208 0.239402 l +6.503141 0.219820 6.496643 0.200759 6.484664 0.185034 c +6.472686 0.169309 6.455858 0.157756 6.436682 0.152077 c +6.111025 0.056570 5.770816 0.040537 5.416035 0.103991 c +5.402335 0.106518 5.389958 0.113794 5.381070 0.124551 c +5.372181 0.135308 5.367343 0.148869 5.367386 0.162869 c +5.365401 1.299139 5.378307 4.230086 5.291928 4.232049 c +5.279098 4.232037 5.265542 4.227088 5.252757 4.217741 c +5.239972 4.208395 5.228442 4.195014 5.219440 4.179065 c +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 124.073425 50.326477 cm +0.000000 0.000000 0.000000 scn +0.359116 5.695424 m +0.042952 5.737637 -0.043367 5.901578 0.018862 6.192157 c +0.042951 6.305379 0.114213 6.362316 0.232649 6.362970 c +4.565596 6.387512 l +4.580573 6.387451 4.595070 6.382706 4.606861 6.374013 c +4.618652 6.365319 4.627083 6.353161 4.630839 6.339410 c +4.698421 6.094643 4.706449 5.884886 4.654926 5.710146 c +4.643048 5.670670 4.617739 5.635938 4.582700 5.611031 c +4.547662 5.586123 4.504729 5.572350 4.460204 5.571731 c +3.106223 5.556026 l +3.059875 5.555486 3.015588 5.535829 2.982918 5.501304 c +2.950247 5.466779 2.931812 5.420151 2.931581 5.371469 c +2.882401 0.129258 l +2.882441 0.115131 2.877455 0.101429 2.868299 0.090503 c +2.859143 0.079578 2.846387 0.072111 2.832217 0.069376 c +2.483600 0.000004 2.147023 0.037310 1.822495 0.181290 c +1.809014 0.187479 1.797608 0.197499 1.789611 0.210188 c +1.781613 0.222878 1.777359 0.237711 1.777334 0.252952 c +1.783356 1.856374 1.801762 3.459467 1.832542 5.062235 c +1.835219 5.216687 1.826855 5.348235 1.807450 5.456875 c +1.801808 5.489129 1.785117 5.518548 1.760132 5.540310 c +1.735147 5.562072 1.703352 5.574881 1.669944 5.576638 c +1.226312 5.598889 0.789365 5.638486 0.359116 5.695424 c +h +f +n +Q +q +1.000000 0.000000 -0.000000 1.000000 130.122925 50.322998 cm +0.000000 0.000000 0.000000 scn +3.920699 0.821025 m +3.939731 0.820701 3.958411 0.814934 3.974696 0.804343 c +3.990980 0.793753 4.004254 0.778745 4.013083 0.760948 c +4.103840 0.576445 4.106754 0.377168 4.021832 0.163118 c +4.012613 0.139789 3.996883 0.119755 3.976630 0.105554 c +3.956378 0.091353 3.932510 0.083623 3.908057 0.083343 c +0.076829 0.039021 l +0.066659 0.039022 0.056585 0.041043 0.047201 0.044966 c +0.037817 0.048889 0.029302 0.054638 0.022156 0.061876 c +0.015010 0.069114 0.009376 0.077696 0.005573 0.087130 c +0.001770 0.096563 -0.000122 0.106656 0.000006 0.116826 c +0.024316 6.311791 l +0.024319 6.324683 0.029410 6.337059 0.038501 6.346266 c +0.047591 6.355474 0.059956 6.360778 0.072936 6.361036 c +1.208694 6.388613 2.344780 6.397150 3.481186 6.386644 c +3.740816 6.383689 3.983910 6.429978 4.035447 6.090191 c +4.056839 5.949023 4.023451 5.808839 3.935287 5.669641 c +3.927226 5.656926 3.916007 5.646411 3.902609 5.639025 c +3.889211 5.631639 3.874055 5.627609 3.858476 5.627291 c +1.377894 5.573123 l +1.199622 5.569184 1.111449 5.483500 1.113394 5.316069 c +1.132849 3.962829 l +1.133120 3.940956 1.142429 3.920048 1.158785 3.904586 c +1.175141 3.889124 1.197247 3.880335 1.220367 3.880096 c +3.594949 3.846607 l +3.625578 3.846123 3.655161 3.835048 3.678834 3.815186 c +3.702508 3.795324 3.718877 3.767854 3.725258 3.737285 c +3.768044 3.535711 3.766743 3.344318 3.721365 3.163098 c +3.710557 3.119444 3.685295 3.080657 3.649563 3.052845 c +3.613831 3.025033 3.569652 3.009767 3.523966 3.009449 c +1.204805 2.988771 l +1.188207 2.988511 1.172376 2.981443 1.160732 2.969096 c +1.149087 2.956748 1.142562 2.940116 1.142570 2.922785 c +1.148411 1.048534 l +1.148422 1.001764 1.166975 0.956865 1.200081 0.923517 c +1.233187 0.890170 1.278190 0.871046 1.325381 0.870269 c +3.920699 0.821025 l +h +f +n +Q + +endstream +endobj + +3 0 obj + 20776 +endobj + +4 0 obj + << /Annots [] + /Type /Page + /MediaBox [ 0.000000 0.000000 165.000000 165.000000 ] + /Resources 1 0 R + /Contents 2 0 R + /Parent 5 0 R + >> +endobj + +5 0 obj + << /Kids [ 4 0 R ] + /Count 1 + /Type /Pages + >> +endobj + +6 0 obj + << /Pages 5 0 R + /Type /Catalog + >> +endobj + +xref +0 7 +0000000000 65535 f +0000000010 00000 n +0000000034 00000 n +0000020866 00000 n +0000020890 00000 n +0000021065 00000 n +0000021139 00000 n +trailer +<< /ID [ (some) (id) ] + /Root 6 0 R + /Size 7 +>> +startxref +21198 +%%EOF \ No newline at end of file diff --git a/TraccarClient/InitialViewController/InitialViewController.swift b/TraccarClient/InitialViewController/InitialViewController.swift index 6f21ce423b7c62c3c89a009a0f6ea006b3cff9c2..4f3a5baae3be06d4bd0956b6863eeac63537fa64 100644 --- a/TraccarClient/InitialViewController/InitialViewController.swift +++ b/TraccarClient/InitialViewController/InitialViewController.swift @@ -52,14 +52,21 @@ extension InitialViewController { window?.makeKeyAndVisible() } else { - let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil) - if let mainViewController = storyboard.instantiateViewController(withIdentifier: "MainViewController") as? MainViewController { - let navigation = KNNavigationController(rootViewController: mainViewController) - navigation.modalPresentationStyle = .overFullScreen - window?.rootViewController = navigation - window?.makeKeyAndVisible() +// let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil) +// if let mainViewController = storyboard.instantiateViewController(withIdentifier: "MainViewController") as? MainViewController { +// let navigation = KNNavigationController(rootViewController: mainViewController) +// navigation.modalPresentationStyle = .overFullScreen +// window?.rootViewController = navigation +// window?.makeKeyAndVisible() +// +// } + let connect = ConnectViewController() + let navigation = KNNavigationController(rootViewController: connect) + navigation.modalPresentationStyle = .overFullScreen + + window?.rootViewController = navigation + window?.makeKeyAndVisible() - } } } } diff --git a/TraccarClient/KNAlert/KNAlertViewController.swift b/TraccarClient/KNAlert/KNAlertViewController.swift index 7fb23562c59c89ddab15e0971e44dea1eaf6732c..15383940bbd9fb567525446337fdbb1d2f08f380 100644 --- a/TraccarClient/KNAlert/KNAlertViewController.swift +++ b/TraccarClient/KNAlert/KNAlertViewController.swift @@ -35,7 +35,7 @@ final class KNAlertViewController: KNViewController { // MARK: - Properties - private let dimViewColor: UIColor = UIColor.purple.withAlphaComponent(0.6) + private let dimViewColor: UIColor = UIColor.main.withAlphaComponent(0.6) private var type: KNAlertViewType = .none private var content_height: CGFloat = 150 @@ -110,7 +110,7 @@ extension KNAlertViewController { // text messageTextView.textAlignment = .center - messageTextView.textColor = .purple + messageTextView.textColor = .main messageTextView.font = .medium(16) messageTextView.text = "" messageTextView.isEditable = false @@ -125,11 +125,11 @@ extension KNAlertViewController { // buttons confirmationButton.set(localized: confirmButtonTitle, color: .white, font: .semibold(17)) confirmationButton.addCorners(20) - confirmationButton.backgroundColor = .purple + confirmationButton.backgroundColor = .main confirmationButton.addTarget(self, action: #selector(confirmationButtonTapped), for: .touchUpInside) - destructiveButton.set(localized: destructiveButtonTitle, color: .purple, font: .semibold(17)) + destructiveButton.set(localized: destructiveButtonTitle, color: .main, font: .semibold(17)) destructiveButton.addCorners(20) destructiveButton.backgroundColor = .white @@ -210,9 +210,9 @@ extension KNAlertViewController { confirmationButton.set(localized: confirmButtonTitle, color: .white, font: .semibold(17)) confirmationButton.addCorners(20) - confirmationButton.backgroundColor = .purple + confirmationButton.backgroundColor = .main - destructiveButton.set(title: destructiveButtonTitle, color: .purple, font: .semibold(17)) + destructiveButton.set(title: destructiveButtonTitle, color: .main, font: .semibold(17)) destructiveButton.addCorners(20) destructiveButton.backgroundColor = .white } diff --git a/TraccarClient/KNTextField.swift b/TraccarClient/KNTextField.swift index b2eae200ea88a12c07d4ca3ad6135441514eeb9a..988fcb579fa2d8f6384028d32eba5793ab30cbe3 100644 --- a/TraccarClient/KNTextField.swift +++ b/TraccarClient/KNTextField.swift @@ -35,7 +35,7 @@ public class KNTextField: UITextField { func setupUI() { borderStyle = .none backgroundColor = .clear - tintColor = .purple + tintColor = .main padding = .zero @@ -102,7 +102,7 @@ final class MATextFieldCode: KNTextField { override func setupUI() { autocorrectionType = .no textAlignment = .center - tintColor = .purple + tintColor = .main } override func deleteBackward() { diff --git a/TraccarClient/LoginViewController/Model/LoginModelController.swift b/TraccarClient/LoginViewController/Model/LoginModelController.swift index e63bc8226dbaa75e64ca5d3d2c12fcd70b5a24ff..682e181bfcc8ec79c53f2dbc44e556f3b5b21d89 100644 --- a/TraccarClient/LoginViewController/Model/LoginModelController.swift +++ b/TraccarClient/LoginViewController/Model/LoginModelController.swift @@ -81,13 +81,15 @@ extension LoginModelController { guard let strongSelf = self else {return} if result.success { -// strongSelf.setupTracking() - let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil) - if let mainViewController = storyboard.instantiateViewController(withIdentifier: "MainViewController") as? MainViewController { - strongSelf.viewController.navigationController?.pushViewController(mainViewController, animated: true) - } - + // let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil) + // if let mainViewController = storyboard.instantiateViewController(withIdentifier: "MainViewController") as? MainViewController { + // strongSelf.viewController.navigationController?.pushViewController(mainViewController, animated: true) + // } + + let connect = ConnectViewController() + strongSelf.viewController.navigationController?.pushViewController(connect, animated: true) + } else { if result.statusCode == 401 { do { diff --git a/TraccarClient/MainViewController/ConnectViewController.swift b/TraccarClient/MainViewController/ConnectViewController.swift new file mode 100644 index 0000000000000000000000000000000000000000..f14745e4da5779efcbaa55ea0fc3e27138cf202c --- /dev/null +++ b/TraccarClient/MainViewController/ConnectViewController.swift @@ -0,0 +1,73 @@ +// +// ConnectViewController.swift +// TraccarClient +// +// Created by George Makhoul on 31/10/2023. +// Copyright © 2023 Traccar. All rights reserved. +// + +import UIKit +import InAppSettingsKit + +final class ConnectViewController: KNViewController { + // MARK: - Outlets + @IBOutlet weak var connectButton: UIButton! + @IBOutlet private weak var connectionStatusLogo: UIImageView! + @IBOutlet private weak var discLabel: UILabel! + @IBOutlet private weak var statusLabel: UILabel! + @IBOutlet private weak var statusButton: UIButton! + + // MARK: - Properties + let userDefaults = UserDefaults.standard + var trackingController: TrackingController? + + // MARK: - LifeCycle + override func viewDidLoad() { + super.viewDidLoad() + setupUI() + } + + private func setupUI() { + isBackButtonHidden = true + statusButton.set(title: "Status", color: .main, font: .medium(16)) + connectButton.set(title: "") + discLabel.set(text: "We're currently tracking your journey. Drive safely!", color: .black, font: .medium(12)) + discLabel.textAlignment = .center + let status = userDefaults.bool(forKey: "service_status_preference") + statusChanged(to: status) + } + + private func statusChanged(to: Bool) { + connectionStatusLogo.set(icon: to ? .connectedLogo : .disconnectedLogo) + connectButton.set(icon: to ? .connectedButton : .disconnectedButton) + statusLabel.set(text: to ? "You're on the map!" : "Tracking stopped.", color: .black, font: .bold(20)) + + } + + // MARK: - Actions + @IBAction func connectTapped(_ sender: UIButton) { + let status = userDefaults.bool(forKey: "service_status_preference") + if status { + userDefaults.set(false, forKey: "service_status_preference") + statusChanged(to: false) + StatusViewController.addMessage(NSLocalizedString("Service destroyed", comment: "")) + AppDelegate.instance.trackingController?.stop() + AppDelegate.instance.trackingController = nil + + } else { + userDefaults.set(true, forKey: "service_status_preference") + statusChanged(to: true) + StatusViewController.addMessage(NSLocalizedString("Service created", comment: "")) + trackingController = TrackingController() + trackingController?.start() + } + + } + + @IBAction func statusTapped(_ sender: UIButton) { + let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil) + if let statusViewController = storyboard.instantiateViewController(withIdentifier: "StatusViewController") as? StatusViewController { + self.navigationController?.pushViewController(statusViewController, animated: true) + } + } +} diff --git a/TraccarClient/MainViewController/ConnectViewController.xib b/TraccarClient/MainViewController/ConnectViewController.xib new file mode 100644 index 0000000000000000000000000000000000000000..9d75ac6fb69ef70d10777fb8b7065d73a2113ad6 --- /dev/null +++ b/TraccarClient/MainViewController/ConnectViewController.xib @@ -0,0 +1,107 @@ +<?xml version="1.0" encoding="UTF-8"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22155" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> + <device id="retina6_12" orientation="portrait" appearance="light"/> + <dependencies> + <deployment identifier="iOS"/> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22131"/> + <capability name="Safe area layout guides" minToolsVersion="9.0"/> + <capability name="System colors in document resources" minToolsVersion="11.0"/> + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> + </dependencies> + <objects> + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="ConnectViewController" customModule="TraccarClient" customModuleProvider="target"> + <connections> + <outlet property="connectButton" destination="CkC-Ms-GkO" id="b3W-8l-sFQ"/> + <outlet property="connectionStatusLogo" destination="zub-LG-NJa" id="WSa-Cl-2dv"/> + <outlet property="discLabel" destination="GMM-3p-jRe" id="4fG-9o-848"/> + <outlet property="statusButton" destination="HS8-B5-jBo" id="vWq-SO-K1o"/> + <outlet property="statusLabel" destination="3f0-IX-LtZ" id="2fh-ed-xJp"/> + <outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> + </connections> + </placeholder> + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> + <view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT"> + <rect key="frame" x="0.0" y="0.0" width="393" height="873"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="nmoLogo" translatesAutoresizingMaskIntoConstraints="NO" id="nK6-XO-h2t"> + <rect key="frame" x="114" y="0.0" width="165" height="165"/> + <constraints> + <constraint firstAttribute="height" constant="165" id="nip-ho-zT0"/> + <constraint firstAttribute="width" constant="165" id="pbW-5n-K0u"/> + </constraints> + </imageView> + <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="disconnectedLogo" translatesAutoresizingMaskIntoConstraints="NO" id="zub-LG-NJa"> + <rect key="frame" x="73" y="175" width="247" height="253"/> + <constraints> + <constraint firstAttribute="height" constant="253" id="B4E-Zl-biZ"/> + <constraint firstAttribute="width" constant="247" id="k8d-KL-54m"/> + </constraints> + </imageView> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GMM-3p-jRe"> + <rect key="frame" x="73" y="448" width="247" height="20.333333333333314"/> + <fontDescription key="fontDescription" type="system" pointSize="17"/> + <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CkC-Ms-GkO"> + <rect key="frame" x="114" y="518.33333333333337" width="165" height="165"/> + <constraints> + <constraint firstAttribute="width" constant="165" id="9th-Vo-PUR"/> + <constraint firstAttribute="height" constant="165" id="BmZ-pN-ikQ"/> + </constraints> + <state key="normal" title="Button"/> + <buttonConfiguration key="configuration" style="plain" image="disconnectedButton"/> + <connections> + <action selector="connectTapped:" destination="-1" eventType="touchUpInside" id="dfA-BM-yu6"/> + </connections> + </button> + <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3f0-IX-LtZ"> + <rect key="frame" x="170.33333333333334" y="723.33333333333337" width="52.333333333333343" height="24"/> + <constraints> + <constraint firstAttribute="height" constant="24" id="htr-pN-8Wx"/> + </constraints> + <fontDescription key="fontDescription" name="HelveticaNeue-Bold" family="Helvetica Neue" pointSize="20"/> + <nil key="textColor"/> + <nil key="highlightedColor"/> + </label> + <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="HS8-B5-jBo"> + <rect key="frame" x="302" y="0.0" width="75" height="39"/> + <state key="normal" title="Button"/> + <buttonConfiguration key="configuration" style="plain" title="Button"/> + <connections> + <action selector="statusTapped:" destination="-1" eventType="touchUpInside" id="uDg-3P-81p"/> + </connections> + </button> + </subviews> + <viewLayoutGuide key="safeArea" id="fnl-2z-Ty3"/> + <color key="backgroundColor" systemColor="systemBackgroundColor"/> + <constraints> + <constraint firstItem="3f0-IX-LtZ" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="2ff-id-KKY"/> + <constraint firstItem="zub-LG-NJa" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="4fj-2R-IeS"/> + <constraint firstItem="nK6-XO-h2t" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="6o2-bx-S2k"/> + <constraint firstItem="GMM-3p-jRe" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="ClB-52-WWZ"/> + <constraint firstItem="nK6-XO-h2t" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="LZN-ga-CaE"/> + <constraint firstItem="GMM-3p-jRe" firstAttribute="trailing" secondItem="zub-LG-NJa" secondAttribute="trailing" id="MmD-WW-7cj"/> + <constraint firstItem="GMM-3p-jRe" firstAttribute="top" secondItem="zub-LG-NJa" secondAttribute="bottom" constant="20" id="QJn-Ap-lcV"/> + <constraint firstItem="fnl-2z-Ty3" firstAttribute="trailing" secondItem="HS8-B5-jBo" secondAttribute="trailing" constant="16" id="RSv-Bk-T1j"/> + <constraint firstItem="CkC-Ms-GkO" firstAttribute="top" secondItem="GMM-3p-jRe" secondAttribute="bottom" constant="50" id="S7D-8h-M4g"/> + <constraint firstItem="GMM-3p-jRe" firstAttribute="leading" secondItem="zub-LG-NJa" secondAttribute="leading" id="XEg-qX-IP0"/> + <constraint firstItem="CkC-Ms-GkO" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="Yfb-ej-e93"/> + <constraint firstItem="zub-LG-NJa" firstAttribute="top" secondItem="nK6-XO-h2t" secondAttribute="bottom" constant="10" id="fQE-Oi-c8X"/> + <constraint firstItem="HS8-B5-jBo" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="lQQ-Kk-H7l"/> + <constraint firstItem="3f0-IX-LtZ" firstAttribute="top" secondItem="CkC-Ms-GkO" secondAttribute="bottom" constant="40" id="spU-lY-vSm"/> + </constraints> + <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> + <point key="canvasLocation" x="-31.297709923664122" y="27.112676056338028"/> + </view> + </objects> + <resources> + <image name="disconnectedButton" width="160" height="160"/> + <image name="disconnectedLogo" width="247" height="247"/> + <image name="nmoLogo" width="165" height="165"/> + <systemColor name="systemBackgroundColor"> + <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> + </systemColor> + </resources> +</document> diff --git a/TraccarClient/MainViewController.swift b/TraccarClient/MainViewController/MainViewController.swift similarity index 100% rename from TraccarClient/MainViewController.swift rename to TraccarClient/MainViewController/MainViewController.swift diff --git a/TraccarClient/UIColor.swift b/TraccarClient/UIColor.swift new file mode 100644 index 0000000000000000000000000000000000000000..92110861b662bced5ffd7bd4cb0139bedcb8fec3 --- /dev/null +++ b/TraccarClient/UIColor.swift @@ -0,0 +1,65 @@ +// +// UIColor.swift +// TraccarClient +// +// Created by George Makhoul on 31/10/2023. +// Copyright © 2023 Traccar. All rights reserved. +// + +import UIKit + +extension UIColor { + /** + Creates an UIColor from HEX String in "#363636" format + - parameter hexString: HEX String in "#363636" format + - returns: UIColor from HexString + */ + convenience init(hexString: String, alpha: CGFloat = 1.0) { + + var hexString: String = hexString.trimmingCharacters(in: .whitespacesAndNewlines) + + if hexString.hasPrefix("#") { + hexString.remove(at: hexString.startIndex) + } + + var color: UInt64 = 0 + Scanner(string: hexString).scanHexInt64(&color) + + let red = CGFloat((color & 0xFF0000) >> 16) / 255.0 + let green = CGFloat((color & 0x00FF00) >> 8) / 255.0 + let blue = CGFloat(color & 0x0000FF) / 255.0 + + self.init(red: red, green: green, blue: blue, alpha: alpha) + } + + /** + Creates an UIColor Object based on provided RGB value in integer + - parameter red: Red Value in integer (0-255) + - parameter green: Green Value in integer (0-255) + - parameter blue: Blue Value in integer (0-255) + - returns: UIColor with specified RGB values + */ + convenience init(red: Int, green: Int, blue: Int) { + self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: 1.0) + } + + convenience init(red: Int, green: Int, blue: Int, alpha: CGFloat) { + self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: alpha) + } + + class func hex(_ hexCode: String) -> UIColor { + return UIColor(hexString: hexCode) + } + + class func hex(code: String, alpha: CGFloat) -> UIColor { + return UIColor(hexString: code, alpha: alpha) + } + + class func rgb(_ red: Int, _ green: Int, _ blue: Int) -> UIColor { + return UIColor(red: red, green: green, blue: blue) + } + + class func rgba(_ red: Int, _ green: Int, _ blue: Int, alpha: CGFloat) -> UIColor { + return UIColor(red: red, green: green, blue: blue, alpha: alpha) + } +} diff --git a/TraccarClient/UIImage.swift b/TraccarClient/UIImage.swift index d1b809fb08ff2816e38eeffe26bd726be90037d7..46cc3eafae1257c3847773bdab8393d8eda64c97 100644 --- a/TraccarClient/UIImage.swift +++ b/TraccarClient/UIImage.swift @@ -13,6 +13,10 @@ extension UIImage { // MARK: - Field Icons static let field_show_password = img("field_show_password") static let field_hide_password = img("field_hide_password") + static let connectedLogo = img("connectedLogo") + static let disconnectedLogo = img("disconnectedLogo") + static let connectedButton = img("connectedButton") + static let disconnectedButton = img("disconnectedButton") } func img(_ name: String) -> UIImage { diff --git a/TraccarClient/UITableView.swift b/TraccarClient/UITableView.swift index b3ccd8a9454fabbdc17a138aa07bcecfa3cb003e..3a7a557b32fc13105ffe3f081b79407e33f78fc5 100644 --- a/TraccarClient/UITableView.swift +++ b/TraccarClient/UITableView.swift @@ -89,7 +89,7 @@ extension UITableView { func prefetchSpinner() { let spinner = UIActivityIndicatorView(style: .medium) - spinner.color = .purple + spinner.color = .main spinner.startAnimating() spinner.frame = CGRect(x: CGFloat(0), y: CGFloat(0), width: bounds.width, height: CGFloat(44)) tableFooterView = spinner