You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
3.2 KiB
116 lines
3.2 KiB
//
|
|
// GMEAlertViewController.swift
|
|
// GME Remit
|
|
//
|
|
// Created by InKwon Devik Kim on 02/07/2019.
|
|
// Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class GMEAlertViewController: UIViewController {
|
|
|
|
@IBOutlet private weak var titleLabel: UILabel!
|
|
@IBOutlet private weak var messageLabel: UILabel!
|
|
@IBOutlet private weak var rightButton: UIButton!
|
|
@IBOutlet private weak var leftButton: UIButton!
|
|
@IBOutlet private weak var mainView: UIView!
|
|
@IBOutlet private weak var transParentView: UIView!
|
|
@IBOutlet private weak var checkMarkView: CheckMark!
|
|
@IBOutlet private weak var checkMarkContainerView: UIView!
|
|
|
|
private var rightButtonAction: (() -> Void)?
|
|
private var leftButtonAction: (() -> Void)?
|
|
|
|
private var titleText: String?
|
|
private var messageText: String?
|
|
private var rightButtonTitle: String?
|
|
private var leftButtonTitle: String?
|
|
|
|
private var type: AlertType = .normal
|
|
|
|
private let impact = UIImpactFeedbackGenerator()
|
|
|
|
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
|
|
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
|
|
}
|
|
|
|
required init?(coder aDecoder: NSCoder) {
|
|
super.init(coder: aDecoder)
|
|
}
|
|
|
|
init(
|
|
type: AlertType = .normal,
|
|
title: String? = "Alert",
|
|
message: String? = nil,
|
|
rightButtonTitle: String? = nil,
|
|
leftButtonTitle: String? = nil,
|
|
rightButtonAction: (() -> Void)? = nil,
|
|
leftButtonAction: (() -> Void)? = nil
|
|
) {
|
|
super.init(nibName: "GMEAlertViewController", bundle: nil)
|
|
|
|
self.type = type
|
|
self.titleText = title
|
|
self.messageText = message
|
|
self.rightButtonTitle = rightButtonTitle
|
|
self.leftButtonTitle = leftButtonTitle
|
|
|
|
self.rightButtonAction = rightButtonAction
|
|
self.leftButtonAction = leftButtonAction
|
|
|
|
modalPresentationStyle = .overFullScreen
|
|
modalTransitionStyle = .crossDissolve
|
|
}
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
mainView.layer.cornerRadius = 5
|
|
|
|
titleLabel.text = titleText
|
|
messageLabel.text = messageText
|
|
|
|
rightButton.setTitle(rightButtonTitle, for: .normal)
|
|
leftButton.setTitle(leftButtonTitle, for: .normal)
|
|
|
|
if leftButtonTitle == nil {
|
|
leftButton.isEnabled = false
|
|
leftButton.isHidden = true
|
|
}
|
|
|
|
titleLabel.textColor = .themeRed
|
|
|
|
rightButton.backgroundColor = .themeRed
|
|
transParentView.backgroundColor = .themeBackgroundGray
|
|
}
|
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
impact.impactOccurred()
|
|
mainView.popUpBouncy()
|
|
|
|
switch type {
|
|
case .normal:
|
|
checkMarkContainerView.isHidden = true
|
|
case .error:
|
|
checkMarkContainerView.isHidden = false
|
|
self.checkMarkView.animate(animationType: .error)
|
|
case .success:
|
|
checkMarkContainerView.isHidden = false
|
|
self.checkMarkView.animate(animationType: .success)
|
|
}
|
|
}
|
|
|
|
@IBAction func touchRightButton(_ sender: UIButton) {
|
|
self.dismiss(animated: false) {
|
|
self.rightButtonAction?()
|
|
}
|
|
}
|
|
|
|
@IBAction func touchLeftButton(_ sender: UIButton) {
|
|
self.dismiss(animated: false) {
|
|
self.leftButtonAction?()
|
|
}
|
|
}
|
|
|
|
}
|