// // KMAIToolsForCheckInGuideView.swift // PDF Reader Pro // // Created by User-Tangchao on 2024/12/31. // import Cocoa class KMMessageDiscountGuideView: NSView { private lazy var targetView_: KMGuideTargetView = { let view = KMGuideTargetView(frame: NSRect(x: 0, y: 0, width: 56, height: 56)) view.lineWidth = 3 view.strokeColor = NSColor(hex: "#7471FF").withAlphaComponent(0.4) view.style = .round view.xRadius = 25 view.yRadius = 25 return view }() private lazy var contentView_: NSView = { let view = NSView() view.wantsLayer = true view.layer?.backgroundColor = NSColor(hex: "#F0EDFF").cgColor view.layer?.cornerRadius = 8 view.layer?.borderWidth = 1 view.layer?.borderColor = NSColor(hex: "#7471FF").cgColor return view }() private lazy var titleLabel_: NSTextField = { let view = NSTextField(labelWithString: NSLocalizedString("Welcome Gift For You", comment: "")) view.font = .SFProTextBoldFont(14) view.textColor = NSColor(hex: "#273C62") return view }() private lazy var subTitleLabel_: NSTextField = { let view = NSTextField(wrappingLabelWithString: NSLocalizedString("Get new user coupons or get a 7-day free trial of all features!", comment: "")) view.font = .SFProTextRegularFont(12) view.textColor = NSColor(hex: "#273C62") return view }() private lazy var closeButton_: NSButton = { let view = NSButton() view.isBordered = false view.title = "" view.imagePosition = .imageOnly view.image = NSImage(named: "KMImageNewUserGiftGuideClose") view.target = self view.action = #selector(buttonAction) return view }() private lazy var iv_: NSImageView = { let view = NSImageView() view.image = NSImage(named: "KMImageNewUserGiftGuideDiscount") return view }() var contentView: NSView { get { return contentView_ } } var titleLabel: NSTextField { get { return titleLabel_ } } var subTitleLabel: NSTextField { get { return subTitleLabel_ } } private var viewSize_: NSSize = .zero var viewSize: NSSize { get { return viewSize_ } } var itemClick: KMCommonClickBlock? convenience init() { self.init(frame: .init(x: 0, y: 0, width: 200, height: 116)) initSubviews() } func initSubviews() { addSubview(targetView_) addSubview(contentView_) contentView_.addSubview(titleLabel_) contentView_.addSubview(subTitleLabel_) contentView_.addSubview(closeButton_) contentView_.addSubview(iv_) let margin: CGFloat = 5 viewSize_ = .zero viewSize_.height += margin viewSize_.width += margin let targetWH: CGFloat = 56 viewSize_.height += targetWH targetView_.mas_makeConstraints { make in make?.size.mas_equalTo()(NSMakeSize(166, 50)) make?.centerX.mas_equalTo()(0) make?.top.mas_equalTo()(margin) } let vSpace: CGFloat = 8 viewSize_.height += vSpace let contentH: CGFloat = 129 viewSize_.height += contentH let width = max(titleWidth() + 20 * 2, 194) viewSize_.width += width contentView_.mas_makeConstraints { make in make?.height.mas_equalTo()(contentH) make?.top.equalTo()(targetView_.mas_bottom)?.offset()(vSpace) make?.width.mas_equalTo()(width) // make?.bottom.mas_equalTo()(-5) make?.leading.mas_equalTo()(margin) make?.centerX.mas_equalTo()(0) } titleLabel_.mas_makeConstraints { make in make?.top.mas_equalTo()(24) make?.centerX.mas_equalTo()(0) } subTitleLabel_.mas_makeConstraints { make in make?.top.equalTo()(titleLabel_.mas_bottom)?.offset()(8) make?.leading.mas_equalTo()(20) make?.centerX.mas_equalTo()(0) } closeButton_.mas_makeConstraints { make in make?.top.mas_equalTo()(8) make?.trailing.mas_equalTo()(-6) make?.size.mas_equalTo()(NSMakeSize(16, 16)) } iv_.mas_makeConstraints { make in make?.size.mas_equalTo()(NSMakeSize(60, 49)) make?.trailing.mas_equalTo()(0) make?.bottom.mas_equalTo()(0) } viewSize_.height += margin viewSize_.width += margin viewSize_.width = max(viewSize_.width, targetWH) } func titleWidth() -> CGFloat { let stringV = titleLabel_.stringValue let size = stringV.getTextRectSize(font: .SFProTextBoldFont(14), size: NSMakeSize(CGFLOAT_MAX, 24)) return size.width } @objc func buttonAction() { itemClick?(1) } override func updateLayer() { super.updateLayer() KMMainThreadExecute { if KMAppearance.isDarkMode() { self.contentView.layer?.backgroundColor = NSColor(hex: "#5D5B66").cgColor // self.titleLabel.textColor = NSColor(hex: " #FCFDFF") // self.subTitleLabel.textColor = NSColor(hex: " #FCFDFF") self.titleLabel.textColor = .white self.subTitleLabel.textColor = .white } else { self.contentView.layer?.backgroundColor = NSColor(hex: "#F0EDFF").cgColor self.titleLabel.textColor = NSColor(hex: "#273C62") self.subTitleLabel.textColor = NSColor(hex: "#273C62") } } } } class KMAIToolsForCheckInGuideView: NSView { private lazy var targetView_: KMGuideTargetView = { let view = KMGuideTargetView(frame: NSRect(x: 0, y: 0, width: 56, height: 56)) view.lineWidth = 2 view.strokeColor = NSColor(red: 34/255, green: 122/255, blue: 255/255, alpha: 0.7) return view }() private lazy var contentView: NSView = { let view = NSView() view.wantsLayer = true view.layer?.backgroundColor = .white view.layer?.cornerRadius = 10 view.layer?.borderWidth = 2 view.layer?.borderColor = NSColor(hex: "#4982E6").cgColor return view }() private lazy var titleLabel: NSTextField = { let view = NSTextField(labelWithString: NSLocalizedString("Try AI Tools Now", comment: "")) view.font = .SFProTextBoldFont(14) view.textColor = NSColor(hex: "#273C62") return view }() private lazy var button_: NSButton = { let view = NSButton() view.isBordered = false view.title = "" view.target = self view.action = #selector(buttonAction) return view }() private var viewSize_: NSSize = .zero var viewSize: NSSize { get { return viewSize_ } } var itemClick: KMCommonClickBlock? convenience init() { self.init(frame: .init(x: 0, y: 0, width: 200, height: 116)) initSubviews() } func initSubviews() { addSubview(targetView_) addSubview(contentView) contentView.addSubview(titleLabel) contentView.addSubview(button_) let margin: CGFloat = 5 viewSize_ = .zero viewSize_.height += margin viewSize_.width += margin let targetWH: CGFloat = 56 viewSize_.height += targetWH targetView_.mas_makeConstraints { make in make?.size.mas_equalTo()(NSMakeSize(targetWH, targetWH)) make?.centerX.mas_equalTo()(0) make?.top.mas_equalTo()(margin) } let vSpace: CGFloat = 8 viewSize_.height += vSpace let contentH: CGFloat = 42 viewSize_.height += contentH let width = titleWidth() + 36 * 2 viewSize_.width += width contentView.mas_makeConstraints { make in make?.height.mas_equalTo()(contentH) make?.top.equalTo()(targetView_.mas_bottom)?.offset()(vSpace) make?.width.mas_equalTo()(width) // make?.bottom.mas_equalTo()(-5) make?.leading.mas_equalTo()(margin) make?.centerX.mas_equalTo()(0) } titleLabel.mas_makeConstraints { make in make?.center.mas_equalTo()(0) } button_.mas_makeConstraints { make in make?.edges.mas_equalTo()(0) } viewSize_.height += margin viewSize_.width += margin viewSize_.width = max(viewSize_.width, targetWH) } func titleWidth() -> CGFloat { let stringV = titleLabel.stringValue let size = stringV.getTextRectSize(font: .SFProTextBoldFont(14), size: NSMakeSize(CGFLOAT_MAX, 24)) return size.width } @objc func buttonAction() { itemClick?(1) } }