mirror of
https://github.com/confirmedcode/Lockdown-iOS.git
synced 2025-12-21 12:14:02 +01:00
199 lines
8.3 KiB
Swift
199 lines
8.3 KiB
Swift
//
|
|
// WhatIsVpnViewController.swift
|
|
// Lockdown
|
|
//
|
|
// Created by Johnny Lin on 08/23/19.
|
|
// Copyright © 2019 Confirmed. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import UIKit
|
|
import AwesomeSpotlightView
|
|
import NicoProgress
|
|
|
|
class WhatIsVpnViewController: BaseViewController, AwesomeSpotlightViewDelegate {
|
|
|
|
var is4InchIphone = UIDevice.is4InchIphone
|
|
|
|
@IBOutlet weak var getStartedButton: UIButton!
|
|
@IBOutlet weak var dataFlow: NicoProgressBar!
|
|
@IBOutlet weak var descriptionLabel: UILabel!
|
|
|
|
@IBOutlet var descriptionLabelHeight: NSLayoutConstraint!
|
|
@IBOutlet weak var vpnActiveLabel: UILabel!
|
|
var privacyEnabled = false
|
|
@IBOutlet weak var locationLabel: UILabel!
|
|
@IBOutlet weak var ipLabel: UILabel!
|
|
@IBOutlet weak var dataLabel: UILabel!
|
|
@IBOutlet weak var toggleCircle: UIButton!
|
|
@IBOutlet weak var toggleAnimatedCircle: NVActivityIndicatorView!
|
|
@IBOutlet weak var button: UIButton!
|
|
|
|
var parentVC: HomeViewController? = nil
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
|
|
// iPhone SE
|
|
if self.is4InchIphone {
|
|
descriptionLabelHeight.constant = 0
|
|
}
|
|
|
|
if VPNController.shared.status() != .invalid {
|
|
self.getStartedButton.alpha = 0
|
|
}
|
|
|
|
setPrivacyState(state: false)
|
|
|
|
dataFlow.primaryColor = .orange
|
|
dataFlow.secondaryColor = .tunnelsWarning
|
|
}
|
|
|
|
@IBAction func getStartedTapped(_ sender: Any) {
|
|
self.dismiss(animated: true, completion: {
|
|
self.parentVC?.performSegue(withIdentifier: "showSignup", sender: self)
|
|
})
|
|
}
|
|
|
|
@IBAction func learnMoreTapped(_ sender: Any) {
|
|
showVPNDetails()
|
|
}
|
|
|
|
override func viewDidAppear(_ animated: Bool) {
|
|
super.viewDidAppear(animated)
|
|
let s1 = AwesomeSpotlight(withRect: getRectForView(toggleCircle).insetBy(dx: -20.0, dy: -20.0), shape: .circle, text: NSLocalizedString("Tap to see a demo of how Secure Tunnel protects and anonymizes you.", comment: ""))
|
|
let spotlightView = AwesomeSpotlightView(frame: view.frame,
|
|
spotlight: [s1])
|
|
spotlightView.cutoutRadius = 8
|
|
spotlightView.spotlightMaskColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.75);
|
|
spotlightView.enableArrowDown = true
|
|
spotlightView.textLabelFont = fontMedium16
|
|
spotlightView.labelSpacing = 24;
|
|
spotlightView.delegate = self
|
|
view.addSubview(spotlightView)
|
|
spotlightView.start()
|
|
}
|
|
|
|
func setPrivacyState(state: Bool) {
|
|
privacyEnabled = state
|
|
if (state == true) {
|
|
vpnActiveLabel.text = NSLocalizedString("Activating", comment: "").uppercased()
|
|
vpnActiveLabel.backgroundColor = .tunnelsBlue
|
|
|
|
toggleCircle.isHidden = true
|
|
toggleAnimatedCircle.color = .tunnelsBlue
|
|
toggleAnimatedCircle.startAnimating()
|
|
button.tintColor = .tunnelsBlue
|
|
|
|
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(1), execute: {
|
|
self.toggleAnimatedCircle.stopAnimating()
|
|
|
|
self.toggleCircle.isHidden = false
|
|
self.toggleCircle.tintColor = .tunnelsBlue
|
|
|
|
self.vpnActiveLabel.text = NSLocalizedString("Tunnel On", comment: "").uppercased()
|
|
self.vpnActiveLabel.backgroundColor = .tunnelsBlue
|
|
self.locationLabel.text = NSLocalizedString("Location: 🇯🇵", comment: "")
|
|
self.ipLabel.text = NSLocalizedString("IP: [Anonymized]", comment: "")
|
|
self.dataLabel.text = "AC90BD4B0A53ED74543425B269\n62179C21D8DAF733EB16F4B41F"
|
|
self.dataFlow.primaryColor = .blue
|
|
self.dataFlow.secondaryColor = .tunnelsBlue
|
|
self.descriptionLabel.attributedText = self.add(stringList: [
|
|
NSLocalizedString("Location changed and hidden", comment: ""),
|
|
NSLocalizedString("Anonymize IP against trackers", comment: ""),
|
|
NSLocalizedString("Encrypted, private connections", comment: "")
|
|
],
|
|
font: fontSemiBold15_5,
|
|
bulletFont: fontMedium18,
|
|
bullet: "•",
|
|
textColor: .tunnelsBlue,
|
|
bulletColor: .tunnelsBlue)
|
|
})
|
|
}
|
|
else {
|
|
|
|
toggleCircle.tintColor = .lightGray
|
|
toggleCircle.isHidden = false
|
|
toggleAnimatedCircle.stopAnimating()
|
|
button.tintColor = .lightGray
|
|
|
|
locationLabel.text = NSLocalizedString("Location: 🇺🇸", comment: "")
|
|
ipLabel.text = NSLocalizedString("IP: 18.132.2.87", comment: "")
|
|
dataLabel.text = NSLocalizedString("To: joe@email.com\nRe: Q4 2019 Finance Review", comment: "")
|
|
dataFlow.primaryColor = .orange
|
|
dataFlow.secondaryColor = .tunnelsWarning
|
|
vpnActiveLabel.text = NSLocalizedString("Tunnel Off", comment: "").uppercased()
|
|
vpnActiveLabel.backgroundColor = .tunnelsWarning
|
|
descriptionLabel.attributedText = add(stringList: [
|
|
NSLocalizedString("Precise location exposed", comment: ""),
|
|
NSLocalizedString("Unique IP address broadcasted", comment: ""),
|
|
NSLocalizedString("Readable browsing and data", comment: "")
|
|
],
|
|
font: fontSemiBold15_5,
|
|
bulletFont: fontMedium18,
|
|
bullet: "•",
|
|
textColor: .tunnelsWarning,
|
|
bulletColor: .tunnelsWarning)
|
|
}
|
|
}
|
|
|
|
@IBAction func privTapped(_ sender: Any) {
|
|
if(privacyEnabled == true) {
|
|
setPrivacyState(state: false)
|
|
}
|
|
else {
|
|
setPrivacyState(state: true)
|
|
}
|
|
}
|
|
|
|
@IBAction func closeTapped(_ sender: Any) {
|
|
self.dismiss(animated: true, completion: nil)
|
|
}
|
|
|
|
func add(stringList: [String],
|
|
font: UIFont,
|
|
bulletFont: UIFont,
|
|
bullet: String = "\u{2022}",
|
|
indentation: CGFloat = 17,
|
|
lineSpacing: CGFloat = 1.35,
|
|
paragraphSpacing: CGFloat = 6,
|
|
textColor: UIColor = .darkGray,
|
|
bulletColor: UIColor = .darkGray) -> NSAttributedString {
|
|
|
|
let textAttributes: [NSAttributedString.Key: Any] = [NSAttributedString.Key.font: font, NSAttributedString.Key.foregroundColor: textColor]
|
|
let bulletAttributes: [NSAttributedString.Key: Any] = [NSAttributedString.Key.font: bulletFont, NSAttributedString.Key.foregroundColor: bulletColor]
|
|
|
|
let paragraphStyle = NSMutableParagraphStyle()
|
|
let nonOptions = [NSTextTab.OptionKey: Any]()
|
|
paragraphStyle.tabStops = [
|
|
NSTextTab(textAlignment: .left, location: indentation, options: nonOptions)]
|
|
paragraphStyle.defaultTabInterval = indentation
|
|
paragraphStyle.lineSpacing = lineSpacing
|
|
paragraphStyle.paragraphSpacing = paragraphSpacing
|
|
paragraphStyle.headIndent = indentation
|
|
|
|
let bulletList = NSMutableAttributedString()
|
|
for string in stringList {
|
|
let formattedString = "\(bullet)\t\(string)\n"
|
|
let attributedString = NSMutableAttributedString(string: formattedString)
|
|
|
|
attributedString.addAttributes(
|
|
[NSAttributedString.Key.paragraphStyle : paragraphStyle],
|
|
range: NSMakeRange(0, attributedString.length))
|
|
|
|
attributedString.addAttributes(
|
|
textAttributes,
|
|
range: NSMakeRange(0, attributedString.length))
|
|
|
|
let string:NSString = NSString(string: formattedString)
|
|
let rangeForBullet:NSRange = string.range(of: bullet)
|
|
attributedString.addAttributes(bulletAttributes, range: rangeForBullet)
|
|
bulletList.append(attributedString)
|
|
}
|
|
|
|
return bulletList
|
|
}
|
|
|
|
}
|
|
|