123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- //
- // 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)
- }
- }
|