123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- //
- // KMCheckInViewItem.swift
- // PDF Reader Pro
- //
- // Created by User-Tangchao on 2024/12/24.
- //
- import Cocoa
- @objcMembers class KMGradientView: NSView {
- var colors: [NSColor] = [] {
- didSet {
- needsDisplay = true
- }
- }
-
- var xRadius: CGFloat = 0 {
- didSet {
- needsDisplay = true
- }
- }
-
- var yRadius: CGFloat = 0 {
- didSet {
- needsDisplay = true
- }
- }
-
- var angle: CGFloat = 0 {
- didSet {
- needsDisplay = true
- }
- }
-
- var contentInset: NSEdgeInsets = .init(top: 0, left: 0, bottom: 0, right: 0) {
- didSet {
- needsDisplay = true
- }
- }
-
- override func draw(_ dirtyRect: NSRect) {
- super.draw(dirtyRect)
-
- wantsLayer = true
-
- let gradient = NSGradient(colors: colors)
- let x = contentInset.left
- let y = contentInset.top
- let w = max(NSWidth(self.bounds)-x-contentInset.right, 0)
- let h = max(NSHeight(self.bounds)-y-contentInset.bottom, 0)
- let frame = NSMakeRect(x, y, w, h)
- let path = NSBezierPath(roundedRect: frame, xRadius: xRadius, yRadius: yRadius)
- gradient?.draw(in: path, angle: angle)
- }
- }
- class KMCheckInGiftItemView: KMCheckInItemView {
- private lazy var numLabel_: NSTextField = {
- let view = NSTextField(labelWithString: "")
- return view
- }()
- private lazy var creditsLabel_: NSTextField = {
- let view = NSTextField(labelWithString: "")
- return view
- }()
-
- private lazy var giftIv_: NSImageView = {
- let view = NSImageView()
- return view
- }()
-
- private lazy var gradientV_: KMGradientView = {
- let view = KMGradientView()
- return view
- }()
-
- var numLabel: NSTextField {
- get {
- return numLabel_
- }
- }
-
- var creditsLabel: NSTextField {
- get {
- return creditsLabel_
- }
- }
-
- var giftIv: NSImageView {
- get {
- return giftIv_
- }
- }
-
- var gradientView: KMGradientView {
- get {
- return gradientV_
- }
- }
-
- override func initSubviews() {
- super.initSubviews()
-
- checkIv.isHidden = true
-
- backgroundView.addSubview(gradientV_)
- gradientV_.frame = backgroundView.bounds
- gradientV_.autoresizingMask = [.width, .height]
-
- contentBox.contentView?.addSubview(numLabel_)
- contentBox.contentView?.addSubview(creditsLabel_)
- contentBox.contentView?.addSubview(giftIv)
-
- numLabel_.mas_makeConstraints { make in
- make?.top.mas_equalTo()(15)
- make?.centerX.mas_equalTo()(0)
- }
- creditsLabel_.mas_makeConstraints { make in
- make?.top.equalTo()(numLabel_.mas_bottom)
- make?.centerX.mas_equalTo()(0)
- }
-
- giftIv.mas_makeConstraints { make in
- make?.centerX.mas_equalTo()(0)
- make?.top.mas_equalTo()(53)
- make?.size.mas_equalTo()(NSMakeSize(24, 24))
- }
- }
- }
- class KMCheckInItemView: NSView {
- private lazy var contentBox_: NSBox = {
- let view = NSBox()
- view.boxType = .custom
- view.borderWidth = 0
- view.contentViewMargins = .init(width: 0, height: 0)
- view.titlePosition = .noTitle
- return view
- }()
-
- private lazy var backgroundView_: NSView = {
- let view = NSView()
- return view
- }()
-
- private lazy var iv_: NSImageView = {
- let view = NSImageView()
- return view
- }()
-
- private lazy var nameLabel_: NSTextField = {
- let view = NSTextField(labelWithString: "")
- return view
- }()
-
- var contentBox: NSBox {
- get {
- return contentBox_
- }
- }
-
- var backgroundView: NSView {
- get {
- return backgroundView_
- }
- }
- var checkIv: NSImageView {
- get {
- return iv_
- }
- }
- var nameLabel: NSTextField {
- get {
- return nameLabel_
- }
- }
-
- convenience init() {
- self.init(frame: .init(x: 0, y: 0, width: 200, height: 30))
-
- initSubviews()
- }
-
- override func awakeFromNib() {
- super.awakeFromNib()
-
- initSubviews()
- }
-
- func initSubviews() {
- addSubview(contentBox_)
-
- contentBox_.contentView?.addSubview(backgroundView_)
- contentBox_.contentView?.addSubview(iv_)
- contentBox_.contentView?.addSubview(nameLabel_)
-
- contentBox_.mas_makeConstraints { make in
- make?.edges.mas_equalTo()(0)
- }
- backgroundView_.mas_makeConstraints { make in
- make?.leading.mas_equalTo()(6)
- make?.trailing.mas_equalTo()(-6)
- make?.top.mas_equalTo()(5)
- make?.height.mas_equalTo()(83)
- }
- iv_.mas_makeConstraints { make in
- make?.center.equalTo()(backgroundView_)
- }
- nameLabel_.mas_makeConstraints { make in
- make?.centerX.mas_equalTo()(0)
- make?.bottom.mas_equalTo()(-5)
- }
- }
- }
- class KMCheckInViewItem: NSCollectionViewItem {
- private lazy var contentBox_: NSBox = {
- let view = NSBox()
- view.boxType = .custom
- view.borderWidth = 0
- view.contentViewMargins = .init(width: 0, height: 0)
- view.titlePosition = .noTitle
- return view
- }()
-
- var contentBox: NSBox {
- get {
- return contentBox_
- }
- }
-
- override func viewDidLoad() {
- super.viewDidLoad()
-
- view.addSubview(contentBox_)
- contentBox_.frame = view.bounds
- contentBox_.autoresizingMask = [.width, .height]
- }
- }
|