// // KMBotaLeftView.swift // PDF Reader Pro // // Created by tangchao on 2023/11/22. // import Cocoa class KMBotaLeftView: NSView { var segmentedControl: KMSegmentedControl = { let view = KMSegmentedControl() return view }() var helpButton: KMCoverButton = { let view = KMCoverButton() view.title = "" view.image = NSImage(named: "KMImgNameUserFbHelpIcon") view.isBordered = false return view }() var ttsButton: NSButton = { let view = NSButton() view.title = "" view.image = NSImage(named: "KMImageNameBotaNewUserTTSGuide") view.isBordered = false view.imageScaling = NSImageScaling.scaleAxesIndependently return view }() private lazy var newUserGuideButton_: NSButton = { let view = NSButton() view.title = "" view.image = NSImage(named: "KMImageNameBotaNewUserGuide") view.isBordered = false view.imageScaling = NSImageScaling.scaleAxesIndependently return view }() var itemClick: KMItemClickBlock? override init(frame frameRect: NSRect) { super.init(frame: frameRect) self.initSubview() self.initDefaultValue() } required init?(coder: NSCoder) { super.init(coder: coder) self.initSubview() self.initDefaultValue() } func initSubview() { self.addSubview(self.segmentedControl) self.addSubview(self.helpButton) self.addSubview(self.ttsButton) self.addSubview(self.newUserGuideButton_) self.ttsButton.target = self self.ttsButton.action = #selector(ttsAction) newUserGuideButton_.target = self newUserGuideButton_.action = #selector(newUserGuideAction) } func initDefaultValue() { self.segmentedControl.direction = .vertical self.segmentedControl.setSegmentCount(6, with: 44) self.segmentedControl.setImage(NSImage(named: KMImageNameUXIconSidetabbarSearchNor)!, for: 0) self.segmentedControl.setImage(NSImage(named: KMImageNameUXIconSidetabbarThumbnailNor)!, for: 1) self.segmentedControl.setImage(NSImage(named: KMImageNameUXIconSidetabbarOutlineNor)!, for: 2) self.segmentedControl.setImage(NSImage(named: KMImageNameUXIconSidetabbarAnnotationNor)!, for: 3) self.segmentedControl.setImage(NSImage(named: "KMImageNameSidebarBookMarkNor")!, for: 4) self.segmentedControl.setImage(NSImage(named: KMImageNameUXIconSidetabbarSnapshotNor)!, for: 5) self.segmentedControl.setToolTip(KMLocalizedString("Search", nil), for: 0) self.segmentedControl.setToolTip(KMLocalizedString("View Thumbnails", nil), for: 1) self.segmentedControl.setToolTip(KMLocalizedString("View Outline", nil), for: 2) self.segmentedControl.setToolTip(KMLocalizedString("View Notes", nil), for: 3) self.segmentedControl.setToolTip(KMLocalizedString("View Bookmarks", nil), for: 4) self.segmentedControl.setToolTip(KMLocalizedString("View Snapshots", nil), for: 5) self.segmentedControl.selectedSegment = UInt8.max self.segmentedControl.wantsLayer = true self.segmentedControl.layer?.backgroundColor = KMAppearance.Layout.l_1Color().cgColor } override func layout() { super.layout() self.segmentedControl.frame = self.bounds let leftMargin: CGFloat = 4 let buttonSize: CGFloat = 36 self.helpButton.frame = NSMakeRect(leftMargin, 0, buttonSize, buttonSize) let ttsButtonSize: CGFloat = 16 let ttsButtonLeft = (buttonSize-ttsButtonSize)*0.5 + leftMargin self.ttsButton.frame = NSMakeRect(ttsButtonLeft, NSMaxY(self.helpButton.frame)+6, ttsButtonSize, ttsButtonSize) let newUserGuideSize = ttsButtonSize let newUserGuideLeft = (buttonSize-newUserGuideSize)*0.5 + leftMargin let newUserGuideTop = NSMaxY(self.ttsButton.frame)+16 self.newUserGuideButton_.frame = NSMakeRect(newUserGuideLeft, newUserGuideTop, newUserGuideSize, newUserGuideSize) } override func draw(_ dirtyRect: NSRect) { super.draw(dirtyRect) } override func interfaceThemeDidChanged(_ appearance: NSAppearance.Name) { super.interfaceThemeDidChanged(appearance) self.segmentedControl.appearance = .init(named: appearance) self.segmentedControl.wantsLayer = true // self.segmentedControl.layer?.backgroundColor = KMAppearance.Layout.l_1Color().cgColor if KMAppearance.isDarkMode() { self.segmentedControl.layer?.backgroundColor = NSColor.km_init(hex: "#393B3E", alpha: 1).cgColor } else { self.segmentedControl.layer?.backgroundColor = NSColor.km_init(hex: "#EBECF0", alpha: 1).cgColor } } @objc func ttsAction() { self.itemClick?(self, 1) } @objc func newUserGuideAction() { self.itemClick?(self, 2) } }