123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- //
- // KMRemovePasswordResultTipView.swift
- // PDF Reader Pro
- //
- // Created by tangchao on 2022/11/29.
- //
- import Cocoa
- enum KMRemovePasswordResult: Int {
- case success = 1
- case failure = 2
- }
- class KMRemovePasswordResultTipView: NSView {
- private var iconImageView = NSImageView()
- private var iconSelectImageView = NSImageView()
- private var label = NSTextField(labelWithString: "")
-
- private var myResult: KMRemovePasswordResult = .success
- var result: KMRemovePasswordResult {
- get {
- return myResult
- }
- set {
- myResult = newValue
-
- if myResult == .success {
- label.stringValue = NSLocalizedString("The file has been successfully decrypted.", comment: "")
- iconImageView.image = NSImage(named: "KMImageNameNewTipSelected")
- } else {
- label.stringValue = NSLocalizedString("Decryption failed with unknown error.", comment: "")
- iconImageView.image = NSImage(named: "KMImageNameSecureTipFailure")
- }
- }
- }
- override init(frame frameRect: NSRect) {
- super.init(frame: frameRect)
-
- wantsLayer = true
- self.layer?.backgroundColor = NSColor.km_init(hex: "#36383B").cgColor
- layer?.cornerRadius = 4
- self.shadow = NSShadow()
- self.layer?.shadowColor = NSColor.km_init(hex: "#00000029").cgColor
- self.layer?.shadowOpacity = 1
- self.layer?.shadowRadius = 8
- self.layer?.shadowOffset = CGSize(width: 0, height: -3)
-
- addSubview(iconImageView)
- addSubview(label)
- // self.iconImageView.addSubview(self.iconSelectImageView)
- self.label.textColor = NSColor.white
- label.font = NSFont.systemFont(ofSize: 14)
- // iconImageView.image = NSImage(named: "KMImageNameTipSelectedBackgroud")
- // self.iconSelectImageView.image = NSImage(named: "KMImageNameTipSelected")
- }
-
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- override func layout() {
- super.layout()
-
- let width = NSWidth(self.bounds)
- let heigth = NSHeight(self.bounds)
-
- let iconSize: CGFloat = 14
- iconImageView.frame = NSMakeRect(17, (heigth-iconSize)*0.5, iconSize, iconSize)
- self.iconSelectImageView.frame = NSMakeRect(3, 3, 8, 8)
-
- let labelX = iconImageView.frame.maxX + 5
- let labelH: CGFloat = 22
- label.frame = NSMakeRect(labelX, (heigth-labelH)*0.5, width-labelX, labelH)
- }
-
- func showInView(superView: NSView) {
- var style = NSMutableParagraphStyle()
- style.lineBreakMode = .byWordWrapping
- var attribute = [NSAttributedString.Key.font : NSFont.systemFont(ofSize: 14), NSAttributedString.Key.paragraphStyle : style]
- let size = label.stringValue.boundingRect(with: NSMakeSize(min(NSWidth(superView.frame)-80, 500), NSHeight(superView.frame)-40), options: NSString.DrawingOptions(rawValue: 3), attributes: attribute).size
- let offsetSize = NSMakeSize(size.width+60, size.height+20)
- self.frame = NSMakeRect((NSWidth(superView.frame)-offsetSize.width)*0.5, NSHeight(superView.frame)-offsetSize.height-10, offsetSize.width, offsetSize.height)
- superView.addSubview(self)
- let ani = CABasicAnimation(keyPath: "opacity")
- ani.fromValue = 0
- ani.toValue = 1
- ani.duration = 0.5
- layer?.add(ani, forKey: "animation")
-
- DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()+0.3, execute: {
- DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()+2, execute: {
- let ani = CABasicAnimation(keyPath: "opacity")
- ani.fromValue = 1
- ani.toValue = 0
- ani.duration = 0.5
- self.layer?.add(ani, forKey: "animation")
- DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()+0.3, execute: {
- self.removeFromSuperview()
- })
- })
- })
- }
- }
|