Version 1.0 of TagTunes.
This commit is contained in:
127
TagTunes/TrackTableCellView.swift
Normal file
127
TagTunes/TrackTableCellView.swift
Normal file
@@ -0,0 +1,127 @@
|
||||
//
|
||||
// TrackTableCellView.swift
|
||||
// Harmony
|
||||
//
|
||||
// Created by Kim Wittenburg on 21.01.15.
|
||||
// Copyright (c) 2015 Das Code Kollektiv. All rights reserved.
|
||||
//
|
||||
|
||||
import Cocoa
|
||||
import AppKitPlus
|
||||
|
||||
/// A table cell view to display information for a `Track`. This class should
|
||||
/// only be initialized from a nib or storyboard.
|
||||
public class TrackTableCellView: AdvancedTableCellView {
|
||||
|
||||
// MARK: Properties
|
||||
|
||||
/// An outlet do display the track number. This acts as a secondary label.
|
||||
/// The text color is automatically adjusted based on the `backgroundStyle`
|
||||
/// of the receiver.
|
||||
///
|
||||
/// Intended to be used as accessory view
|
||||
@IBOutlet public lazy var trackNumberTextField: NSTextField? = {
|
||||
let trackNumberTextField = NSTextField()
|
||||
trackNumberTextField.bordered = false
|
||||
trackNumberTextField.drawsBackground = false
|
||||
trackNumberTextField.selectable = false
|
||||
trackNumberTextField.lineBreakMode = .ByTruncatingTail
|
||||
trackNumberTextField.font = NSFont.systemFontOfSize(0)
|
||||
trackNumberTextField.textColor = NSColor.secondaryLabelColor()
|
||||
trackNumberTextField.translatesAutoresizingMaskIntoConstraints = false
|
||||
return trackNumberTextField
|
||||
}()
|
||||
|
||||
/// Intended to be used as accessory view.
|
||||
///
|
||||
/// This property replaces `imageView`.
|
||||
@IBOutlet public lazy var savedImageView: NSImageView! = {
|
||||
let secondaryImageView = NSImageView()
|
||||
secondaryImageView.imageScaling = .ScaleProportionallyDown
|
||||
secondaryImageView.translatesAutoresizingMaskIntoConstraints = false
|
||||
return secondaryImageView
|
||||
}()
|
||||
|
||||
// MARK: Intitializers
|
||||
|
||||
override public func setupView() {
|
||||
leftAccessoryView = trackNumberTextField
|
||||
super.setupView()
|
||||
}
|
||||
|
||||
// MARK: Overrides
|
||||
|
||||
override public var backgroundStyle: NSBackgroundStyle {
|
||||
get {
|
||||
return super.backgroundStyle
|
||||
}
|
||||
set {
|
||||
super.backgroundStyle = newValue
|
||||
let trackNumberCell = self.trackNumberTextField?.cell as? NSTextFieldCell
|
||||
trackNumberCell?.backgroundStyle = newValue
|
||||
|
||||
switch newValue {
|
||||
case .Light:
|
||||
trackNumberTextField?.textColor = NSColor.secondaryLabelColor()
|
||||
case .Dark:
|
||||
trackNumberTextField?.textColor = NSColor.secondarySelectedControlColor()
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override public var imageView: NSImageView? {
|
||||
set {
|
||||
savedImageView = newValue
|
||||
}
|
||||
get {
|
||||
return savedImageView
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Methods
|
||||
|
||||
/// Sets up the receiver to display `track`.
|
||||
public func setupForTrack(track: Track) {
|
||||
style = track.album.hasSameArtistNameAsTracks ? .Simple : .CompactSubtitle
|
||||
|
||||
textField?.stringValue = track.name
|
||||
if track.associatedTracks.isEmpty {
|
||||
textField?.textColor = NSColor.disabledControlTextColor()
|
||||
} else if track.associatedTracks.count > 1 || track.associatedTracks[0].name != track.name {
|
||||
textField?.textColor = NSColor.redColor()
|
||||
} else {
|
||||
textField?.textColor = NSColor.controlTextColor()
|
||||
}
|
||||
secondaryTextField?.stringValue = track.artistName
|
||||
trackNumberTextField?.stringValue = "\(track.trackNumber)"
|
||||
if track.associatedTracks.isEmpty {
|
||||
imageView?.image = NSImage(named: "TickBW")
|
||||
} else {
|
||||
imageView?.image = NSImage(named: "Tick")
|
||||
}
|
||||
if track.saved {
|
||||
let aspectRatioConstraint = NSLayoutConstraint(
|
||||
item: savedImageView,
|
||||
attribute: .Width,
|
||||
relatedBy: .Equal,
|
||||
toItem: savedImageView,
|
||||
attribute: .Height,
|
||||
multiplier: 1,
|
||||
constant: 0)
|
||||
let widthConstraint = NSLayoutConstraint(
|
||||
item: savedImageView,
|
||||
attribute: .Width,
|
||||
relatedBy: .Equal,
|
||||
toItem: nil,
|
||||
attribute: .Width,
|
||||
multiplier: 1,
|
||||
constant: 17)
|
||||
setRightAccessoryView(savedImageView, withConstraints: [aspectRatioConstraint, widthConstraint])
|
||||
} else {
|
||||
rightAccessoryView = nil
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user