Playlist View: Replace Cell-based table with View-based table. It needs some work still, though.
This commit is contained in:
parent
e8f4e5ece7
commit
2b4de1033d
6 changed files with 451 additions and 63 deletions
|
@ -32,9 +32,9 @@
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="KWC-Ti-8KY">
|
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="KWC-Ti-8KY">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="1000" height="378"/>
|
<rect key="frame" x="0.0" y="0.0" width="1000" height="378"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" alternatingRowBackgroundColors="YES" autosaveName="Playlist" rowHeight="18" headerView="1517" id="207" customClass="PlaylistView">
|
<tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" alternatingRowBackgroundColors="YES" autosaveName="Playlist" rowHeight="18" rowSizeStyle="automatic" headerView="1517" viewBased="YES" id="207" customClass="PlaylistView">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="1000" height="361"/>
|
<rect key="frame" x="0.0" y="0.0" width="1000" height="361"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<size key="intercellSpacing" width="3" height="6"/>
|
<size key="intercellSpacing" width="3" height="6"/>
|
||||||
|
@ -52,13 +52,32 @@
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
|
<prototypeCellViews>
|
||||||
|
<tableCellView id="5N3-SP-Y8z">
|
||||||
|
<rect key="frame" x="11" y="3" width="69" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="w5u-JQ-3Hf">
|
||||||
|
<rect key="frame" x="0.0" y="1" width="69" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="FMU-QZ-NdQ">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<connections>
|
||||||
|
<outlet property="textField" destination="w5u-JQ-3Hf" id="uqw-tc-LMI"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
<connections>
|
<connections>
|
||||||
<binding destination="218" name="value" keyPath="arrangedObjects.index" id="1356">
|
<binding destination="218" name="value" keyPath="arrangedObjects.index" id="1356">
|
||||||
<dictionary key="options">
|
<dictionary key="options">
|
||||||
<integer key="NSConditionallySetsEditable" value="1"/>
|
<integer key="NSConditionallySetsEditable" value="1"/>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
</binding>
|
</binding>
|
||||||
<binding destination="1689" name="fontSize" keyPath="values.fontSize" id="1913"/>
|
|
||||||
</connections>
|
</connections>
|
||||||
</tableColumn>
|
</tableColumn>
|
||||||
<tableColumn identifier="status" editable="NO" width="20" minWidth="20" maxWidth="20" id="1798">
|
<tableColumn identifier="status" editable="NO" width="20" minWidth="20" maxWidth="20" id="1798">
|
||||||
|
@ -70,14 +89,32 @@
|
||||||
<font key="font" metaFont="system"/>
|
<font key="font" metaFont="system"/>
|
||||||
</imageCell>
|
</imageCell>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
<connections>
|
<prototypeCellViews>
|
||||||
<binding destination="218" name="value" keyPath="arrangedObjects.status" id="1805">
|
<tableCellView id="Vw5-xt-0vG">
|
||||||
<dictionary key="options">
|
<rect key="frame" x="83" y="3" width="20" height="17"/>
|
||||||
<integer key="NSAllowsEditingMultipleValuesSelection" value="0"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<string key="NSValueTransformerName">StatusImageTransformer</string>
|
<subviews>
|
||||||
</dictionary>
|
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ERj-i9-caa">
|
||||||
</binding>
|
<rect key="frame" x="0.0" y="3" width="17" height="11"/>
|
||||||
</connections>
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||||
|
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageAlignment="top" imageScaling="proportionallyDown" id="8rO-fU-Njw"/>
|
||||||
|
</imageView>
|
||||||
|
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsExpansionToolTips="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5cp-JI-ogI">
|
||||||
|
<rect key="frame" x="23" y="0.0" width="4" height="17"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="wky-z8-Cj5">
|
||||||
|
<font key="font" metaFont="system"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<connections>
|
||||||
|
<outlet property="imageView" destination="ERj-i9-caa" id="TmP-fQ-D5k"/>
|
||||||
|
<outlet property="textField" destination="5cp-JI-ogI" id="OpS-BY-UJn"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
</tableColumn>
|
</tableColumn>
|
||||||
<tableColumn identifier="title" editable="NO" width="125.5" minWidth="96" maxWidth="1024" id="208">
|
<tableColumn identifier="title" editable="NO" width="125.5" minWidth="96" maxWidth="1024" id="208">
|
||||||
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Title">
|
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Title">
|
||||||
|
@ -91,13 +128,32 @@
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
<sortDescriptor key="sortDescriptorPrototype" selector="caseInsensitiveCompare:" sortKey="title"/>
|
<sortDescriptor key="sortDescriptorPrototype" selector="caseInsensitiveCompare:" sortKey="title"/>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
|
<prototypeCellViews>
|
||||||
|
<tableCellView id="ZCP-Dx-UBV">
|
||||||
|
<rect key="frame" x="106" y="3" width="126" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="exY-Bg-Mjm">
|
||||||
|
<rect key="frame" x="0.0" y="1" width="126" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="sdo-Sm-KPH">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<connections>
|
||||||
|
<outlet property="textField" destination="exY-Bg-Mjm" id="LVE-SN-zln"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
<connections>
|
<connections>
|
||||||
<binding destination="218" name="value" keyPath="arrangedObjects.title" id="814">
|
<binding destination="218" name="value" keyPath="arrangedObjects.title" id="814">
|
||||||
<dictionary key="options">
|
<dictionary key="options">
|
||||||
<integer key="NSConditionallySetsEditable" value="1"/>
|
<integer key="NSConditionallySetsEditable" value="1"/>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
</binding>
|
</binding>
|
||||||
<binding destination="1689" name="fontSize" keyPath="values.fontSize" id="1914"/>
|
|
||||||
</connections>
|
</connections>
|
||||||
</tableColumn>
|
</tableColumn>
|
||||||
<tableColumn identifier="albumartist" editable="NO" width="150" minWidth="96" maxWidth="1024" hidden="YES" id="yGV-gP-Wl6">
|
<tableColumn identifier="albumartist" editable="NO" width="150" minWidth="96" maxWidth="1024" hidden="YES" id="yGV-gP-Wl6">
|
||||||
|
@ -111,6 +167,26 @@
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
|
<prototypeCellViews>
|
||||||
|
<tableCellView id="x12-5b-Mmv">
|
||||||
|
<rect key="frame" x="1" y="3" width="0.0" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ZWb-jm-i9i">
|
||||||
|
<rect key="frame" x="0.0" y="1" width="4" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="3QN-Ok-QPu">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<connections>
|
||||||
|
<outlet property="textField" destination="ZWb-jm-i9i" id="EaM-6d-0Ni"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
<connections>
|
<connections>
|
||||||
<binding destination="218" name="value" keyPath="arrangedObjects.albumartist" id="OFk-g8-Jbd">
|
<binding destination="218" name="value" keyPath="arrangedObjects.albumartist" id="OFk-g8-Jbd">
|
||||||
<dictionary key="options">
|
<dictionary key="options">
|
||||||
|
@ -132,13 +208,32 @@
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
<sortDescriptor key="sortDescriptorPrototype" selector="caseInsensitiveCompare:" sortKey="artist"/>
|
<sortDescriptor key="sortDescriptorPrototype" selector="caseInsensitiveCompare:" sortKey="artist"/>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
|
<prototypeCellViews>
|
||||||
|
<tableCellView id="gpC-Oe-Rog">
|
||||||
|
<rect key="frame" x="234.5" y="3" width="149" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1WK-qN-Mgj">
|
||||||
|
<rect key="frame" x="0.0" y="1" width="149" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="71l-3L-S3g">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<connections>
|
||||||
|
<outlet property="textField" destination="1WK-qN-Mgj" id="RoA-Ff-UMU"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
<connections>
|
<connections>
|
||||||
<binding destination="218" name="value" keyPath="arrangedObjects.artist" id="815">
|
<binding destination="218" name="value" keyPath="arrangedObjects.artist" id="815">
|
||||||
<dictionary key="options">
|
<dictionary key="options">
|
||||||
<integer key="NSConditionallySetsEditable" value="1"/>
|
<integer key="NSConditionallySetsEditable" value="1"/>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
</binding>
|
</binding>
|
||||||
<binding destination="1689" name="fontSize" keyPath="values.fontSize" id="1916"/>
|
|
||||||
</connections>
|
</connections>
|
||||||
</tableColumn>
|
</tableColumn>
|
||||||
<tableColumn identifier="album" editable="NO" width="150.5" minWidth="96" maxWidth="1024" id="806">
|
<tableColumn identifier="album" editable="NO" width="150.5" minWidth="96" maxWidth="1024" id="806">
|
||||||
|
@ -153,13 +248,32 @@
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
<sortDescriptor key="sortDescriptorPrototype" selector="caseInsensitiveCompare:" sortKey="album"/>
|
<sortDescriptor key="sortDescriptorPrototype" selector="caseInsensitiveCompare:" sortKey="album"/>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
|
<prototypeCellViews>
|
||||||
|
<tableCellView id="1ed-gX-bct">
|
||||||
|
<rect key="frame" x="387" y="3" width="151" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nEt-s5-vRX">
|
||||||
|
<rect key="frame" x="0.0" y="1" width="151" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="moV-3G-GpB">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<connections>
|
||||||
|
<outlet property="textField" destination="nEt-s5-vRX" id="pMp-oO-lhp"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
<connections>
|
<connections>
|
||||||
<binding destination="218" name="value" keyPath="arrangedObjects.album" id="816">
|
<binding destination="218" name="value" keyPath="arrangedObjects.album" id="816">
|
||||||
<dictionary key="options">
|
<dictionary key="options">
|
||||||
<integer key="NSConditionallySetsEditable" value="1"/>
|
<integer key="NSConditionallySetsEditable" value="1"/>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
</binding>
|
</binding>
|
||||||
<binding destination="1689" name="fontSize" keyPath="values.fontSize" id="1917"/>
|
|
||||||
</connections>
|
</connections>
|
||||||
</tableColumn>
|
</tableColumn>
|
||||||
<tableColumn identifier="length" editable="NO" width="95.5" minWidth="43.62012" maxWidth="96" id="807">
|
<tableColumn identifier="length" editable="NO" width="95.5" minWidth="43.62012" maxWidth="96" id="807">
|
||||||
|
@ -173,6 +287,26 @@
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
|
<prototypeCellViews>
|
||||||
|
<tableCellView id="hhB-nv-e78">
|
||||||
|
<rect key="frame" x="540.5" y="3" width="95" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tHy-sM-HDB">
|
||||||
|
<rect key="frame" x="0.0" y="1" width="95" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="Igo-5f-yim">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<connections>
|
||||||
|
<outlet property="textField" destination="tHy-sM-HDB" id="Hae-Kh-oLV"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
<connections>
|
<connections>
|
||||||
<binding destination="218" name="value" keyPath="arrangedObjects.length" id="1658">
|
<binding destination="218" name="value" keyPath="arrangedObjects.length" id="1658">
|
||||||
<dictionary key="options">
|
<dictionary key="options">
|
||||||
|
@ -193,6 +327,26 @@
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
|
<prototypeCellViews>
|
||||||
|
<tableCellView id="q93-oh-i5T">
|
||||||
|
<rect key="frame" x="639" y="3" width="94" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bOi-LI-TDx">
|
||||||
|
<rect key="frame" x="0.0" y="1" width="94" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="C2Q-qG-dwX">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<connections>
|
||||||
|
<outlet property="textField" destination="bOi-LI-TDx" id="N91-MC-aPF"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
<connections>
|
<connections>
|
||||||
<binding destination="218" name="value" keyPath="arrangedObjects.year" id="851"/>
|
<binding destination="218" name="value" keyPath="arrangedObjects.year" id="851"/>
|
||||||
<binding destination="1689" name="fontSize" keyPath="values.fontSize" id="1921"/>
|
<binding destination="1689" name="fontSize" keyPath="values.fontSize" id="1921"/>
|
||||||
|
@ -210,6 +364,26 @@
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
<sortDescriptor key="sortDescriptorPrototype" selector="caseInsensitiveCompare:" sortKey="genre"/>
|
<sortDescriptor key="sortDescriptorPrototype" selector="caseInsensitiveCompare:" sortKey="genre"/>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
|
<prototypeCellViews>
|
||||||
|
<tableCellView id="rRl-p9-Awr">
|
||||||
|
<rect key="frame" x="735.5" y="3" width="144" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="yW6-2w-6mN">
|
||||||
|
<rect key="frame" x="0.0" y="1" width="144" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="js2-sT-U4M">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<connections>
|
||||||
|
<outlet property="textField" destination="yW6-2w-6mN" id="G7S-Se-0cY"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
<connections>
|
<connections>
|
||||||
<binding destination="218" name="value" keyPath="arrangedObjects.genre" id="852"/>
|
<binding destination="218" name="value" keyPath="arrangedObjects.genre" id="852"/>
|
||||||
<binding destination="1689" name="fontSize" keyPath="values.fontSize" id="1922"/>
|
<binding destination="1689" name="fontSize" keyPath="values.fontSize" id="1922"/>
|
||||||
|
@ -226,6 +400,26 @@
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
|
<prototypeCellViews>
|
||||||
|
<tableCellView id="hgh-VE-5kl">
|
||||||
|
<rect key="frame" x="882.5" y="3" width="38" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="yEY-MI-d3o">
|
||||||
|
<rect key="frame" x="0.0" y="1" width="38" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="tus-lr-RhS">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<connections>
|
||||||
|
<outlet property="textField" destination="yEY-MI-d3o" id="EwM-K6-z6F"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
<connections>
|
<connections>
|
||||||
<binding destination="218" name="value" keyPath="arrangedObjects.track" id="853"/>
|
<binding destination="218" name="value" keyPath="arrangedObjects.track" id="853"/>
|
||||||
<binding destination="1689" name="fontSize" keyPath="values.fontSize" id="1923"/>
|
<binding destination="1689" name="fontSize" keyPath="values.fontSize" id="1923"/>
|
||||||
|
@ -242,6 +436,26 @@
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
|
<prototypeCellViews>
|
||||||
|
<tableCellView id="d01-Wn-4bd">
|
||||||
|
<rect key="frame" x="1" y="3" width="0.0" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QFJ-4l-2O6">
|
||||||
|
<rect key="frame" x="0.0" y="1" width="4" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="gKK-cS-RP5">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<connections>
|
||||||
|
<outlet property="textField" destination="QFJ-4l-2O6" id="ATk-8F-J0f"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
<connections>
|
<connections>
|
||||||
<binding destination="218" name="value" keyPath="arrangedObjects.path" id="1788">
|
<binding destination="218" name="value" keyPath="arrangedObjects.path" id="1788">
|
||||||
<dictionary key="options">
|
<dictionary key="options">
|
||||||
|
@ -262,6 +476,26 @@
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
|
<prototypeCellViews>
|
||||||
|
<tableCellView id="ICT-dh-UfT">
|
||||||
|
<rect key="frame" x="1" y="3" width="0.0" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Qvd-sk-vRc">
|
||||||
|
<rect key="frame" x="0.0" y="1" width="4" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="YwT-z9-2d2">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<connections>
|
||||||
|
<outlet property="textField" destination="Qvd-sk-vRc" id="wzs-Gd-GjV"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
<connections>
|
<connections>
|
||||||
<binding destination="218" name="value" keyPath="arrangedObjects.filename" id="1787">
|
<binding destination="218" name="value" keyPath="arrangedObjects.filename" id="1787">
|
||||||
<dictionary key="options">
|
<dictionary key="options">
|
||||||
|
@ -282,6 +516,26 @@
|
||||||
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
</textFieldCell>
|
</textFieldCell>
|
||||||
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
|
||||||
|
<prototypeCellViews>
|
||||||
|
<tableCellView id="PuO-Ss-1Vs">
|
||||||
|
<rect key="frame" x="1" y="3" width="0.0" height="18"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="gXW-DX-EsQ">
|
||||||
|
<rect key="frame" x="0.0" y="1" width="4" height="16"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
|
||||||
|
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="vaJ-Bc-ebE">
|
||||||
|
<font key="font" usesAppearanceFont="YES"/>
|
||||||
|
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||||
|
</textFieldCell>
|
||||||
|
</textField>
|
||||||
|
</subviews>
|
||||||
|
<connections>
|
||||||
|
<outlet property="textField" destination="gXW-DX-EsQ" id="kM6-6c-0sa"/>
|
||||||
|
</connections>
|
||||||
|
</tableCellView>
|
||||||
|
</prototypeCellViews>
|
||||||
<connections>
|
<connections>
|
||||||
<binding destination="218" name="value" keyPath="arrangedObjects.codec" id="hO0-YW-E7w">
|
<binding destination="218" name="value" keyPath="arrangedObjects.codec" id="hO0-YW-E7w">
|
||||||
<dictionary key="options">
|
<dictionary key="options">
|
||||||
|
@ -293,6 +547,7 @@
|
||||||
</tableColumn>
|
</tableColumn>
|
||||||
</tableColumns>
|
</tableColumns>
|
||||||
<connections>
|
<connections>
|
||||||
|
<binding destination="1689" name="fontSize" keyPath="values.fontSize" id="IWY-vf-qDN"/>
|
||||||
<binding destination="1689" name="rowHeight" keyPath="values.fontSize" id="1927">
|
<binding destination="1689" name="rowHeight" keyPath="values.fontSize" id="1927">
|
||||||
<dictionary key="options">
|
<dictionary key="options">
|
||||||
<string key="NSValueTransformerName">FontSizetoLineHeightTransformer</string>
|
<string key="NSValueTransformerName">FontSizetoLineHeightTransformer</string>
|
||||||
|
@ -317,7 +572,7 @@
|
||||||
<rect key="frame" x="85" y="17" width="15" height="68"/>
|
<rect key="frame" x="85" y="17" width="15" height="68"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</scroller>
|
</scroller>
|
||||||
<tableHeaderView key="headerView" wantsLayer="YES" id="1517" customClass="PlaylistHeaderView">
|
<tableHeaderView key="headerView" wantsLayer="YES" id="1517">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="1000" height="17"/>
|
<rect key="frame" x="0.0" y="0.0" width="1000" height="17"/>
|
||||||
<autoresizingMask key="autoresizingMask"/>
|
<autoresizingMask key="autoresizingMask"/>
|
||||||
</tableHeaderView>
|
</tableHeaderView>
|
||||||
|
|
|
@ -176,7 +176,6 @@
|
||||||
8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
|
8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; };
|
||||||
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
|
8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
|
||||||
8E07AB790AAC930B00A4B32F /* PreferencesController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E07AB770AAC930B00A4B32F /* PreferencesController.m */; };
|
8E07AB790AAC930B00A4B32F /* PreferencesController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E07AB770AAC930B00A4B32F /* PreferencesController.m */; };
|
||||||
8E1296DB0A2BA9CE00443124 /* PlaylistHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E1296D90A2BA9CE00443124 /* PlaylistHeaderView.m */; };
|
|
||||||
8E6889240AAA403C00AD3950 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E6889230AAA403C00AD3950 /* Carbon.framework */; };
|
8E6889240AAA403C00AD3950 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E6889230AAA403C00AD3950 /* Carbon.framework */; };
|
||||||
8E75757109F31D5A0080F1EE /* DNDArrayController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E75752C09F31D5A0080F1EE /* DNDArrayController.m */; };
|
8E75757109F31D5A0080F1EE /* DNDArrayController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E75752C09F31D5A0080F1EE /* DNDArrayController.m */; };
|
||||||
8E75757209F31D5A0080F1EE /* PlaylistController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E75752E09F31D5A0080F1EE /* PlaylistController.m */; };
|
8E75757209F31D5A0080F1EE /* PlaylistController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E75752E09F31D5A0080F1EE /* PlaylistController.m */; };
|
||||||
|
@ -1013,8 +1012,6 @@
|
||||||
8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
|
||||||
8E07AB760AAC930B00A4B32F /* PreferencesController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PreferencesController.h; path = Preferences/PreferencesController.h; sourceTree = "<group>"; };
|
8E07AB760AAC930B00A4B32F /* PreferencesController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PreferencesController.h; path = Preferences/PreferencesController.h; sourceTree = "<group>"; };
|
||||||
8E07AB770AAC930B00A4B32F /* PreferencesController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PreferencesController.m; path = Preferences/PreferencesController.m; sourceTree = "<group>"; };
|
8E07AB770AAC930B00A4B32F /* PreferencesController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PreferencesController.m; path = Preferences/PreferencesController.m; sourceTree = "<group>"; };
|
||||||
8E1296D80A2BA9CE00443124 /* PlaylistHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PlaylistHeaderView.h; sourceTree = "<group>"; };
|
|
||||||
8E1296D90A2BA9CE00443124 /* PlaylistHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = PlaylistHeaderView.m; sourceTree = "<group>"; };
|
|
||||||
8E6889230AAA403C00AD3950 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
|
8E6889230AAA403C00AD3950 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
|
||||||
8E75752B09F31D5A0080F1EE /* DNDArrayController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DNDArrayController.h; sourceTree = "<group>"; };
|
8E75752B09F31D5A0080F1EE /* DNDArrayController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DNDArrayController.h; sourceTree = "<group>"; };
|
||||||
8E75752C09F31D5A0080F1EE /* DNDArrayController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = DNDArrayController.m; sourceTree = "<group>"; };
|
8E75752C09F31D5A0080F1EE /* DNDArrayController.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = DNDArrayController.m; sourceTree = "<group>"; };
|
||||||
|
@ -1760,8 +1757,6 @@
|
||||||
8E75752E09F31D5A0080F1EE /* PlaylistController.m */,
|
8E75752E09F31D5A0080F1EE /* PlaylistController.m */,
|
||||||
8E75753109F31D5A0080F1EE /* PlaylistView.h */,
|
8E75753109F31D5A0080F1EE /* PlaylistView.h */,
|
||||||
8E75753209F31D5A0080F1EE /* PlaylistView.m */,
|
8E75753209F31D5A0080F1EE /* PlaylistView.m */,
|
||||||
8E1296D80A2BA9CE00443124 /* PlaylistHeaderView.h */,
|
|
||||||
8E1296D90A2BA9CE00443124 /* PlaylistHeaderView.m */,
|
|
||||||
1755E1F60BA0D2B600CA3560 /* PlaylistLoader.h */,
|
1755E1F60BA0D2B600CA3560 /* PlaylistLoader.h */,
|
||||||
1755E1F70BA0D2B600CA3560 /* PlaylistLoader.m */,
|
1755E1F70BA0D2B600CA3560 /* PlaylistLoader.m */,
|
||||||
8E75752B09F31D5A0080F1EE /* DNDArrayController.h */,
|
8E75752B09F31D5A0080F1EE /* DNDArrayController.h */,
|
||||||
|
@ -2442,7 +2437,6 @@
|
||||||
8E75757309F31D5A0080F1EE /* PlaylistEntry.m in Sources */,
|
8E75757309F31D5A0080F1EE /* PlaylistEntry.m in Sources */,
|
||||||
8E75757409F31D5A0080F1EE /* PlaylistView.m in Sources */,
|
8E75757409F31D5A0080F1EE /* PlaylistView.m in Sources */,
|
||||||
8E75757509F31D5A0080F1EE /* Shuffle.m in Sources */,
|
8E75757509F31D5A0080F1EE /* Shuffle.m in Sources */,
|
||||||
8E1296DB0A2BA9CE00443124 /* PlaylistHeaderView.m in Sources */,
|
|
||||||
8E07AB790AAC930B00A4B32F /* PreferencesController.m in Sources */,
|
8E07AB790AAC930B00A4B32F /* PreferencesController.m in Sources */,
|
||||||
177EBFA70B8BC2A70000BC8C /* ImageTextCell.m in Sources */,
|
177EBFA70B8BC2A70000BC8C /* ImageTextCell.m in Sources */,
|
||||||
177EC0270B8BC2CF0000BC8C /* TrackingCell.m in Sources */,
|
177EC0270B8BC2CF0000BC8C /* TrackingCell.m in Sources */,
|
||||||
|
|
|
@ -38,6 +38,8 @@ typedef NS_ENUM(NSInteger, URLOrigin) {
|
||||||
IBOutlet SpotlightWindowController *spotlightWindowController;
|
IBOutlet SpotlightWindowController *spotlightWindowController;
|
||||||
IBOutlet PlaybackController *playbackController;
|
IBOutlet PlaybackController *playbackController;
|
||||||
|
|
||||||
|
NSValueTransformer * statusImageTransformer;
|
||||||
|
|
||||||
NSMutableArray *shuffleList;
|
NSMutableArray *shuffleList;
|
||||||
NSMutableArray *queueList;
|
NSMutableArray *queueList;
|
||||||
|
|
||||||
|
@ -48,45 +50,45 @@ typedef NS_ENUM(NSInteger, URLOrigin) {
|
||||||
NSUndoManager *undoManager;
|
NSUndoManager *undoManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@property(nonatomic, retain) PlaylistEntry *currentEntry;
|
@property(nonatomic, retain) PlaylistEntry * _Nullable currentEntry;
|
||||||
@property(retain) NSString *totalTime;
|
@property(retain) NSString * _Nullable totalTime;
|
||||||
|
|
||||||
// Private Methods
|
// Private Methods
|
||||||
- (void)updateTotalTime;
|
- (void)updateTotalTime;
|
||||||
- (void)updatePlaylistIndexes;
|
- (void)updatePlaylistIndexes;
|
||||||
- (IBAction)stopAfterCurrent:(id)sender;
|
- (IBAction)stopAfterCurrent:(id _Nullable )sender;
|
||||||
|
|
||||||
// PUBLIC METHODS
|
// PUBLIC METHODS
|
||||||
- (void)setShuffle:(ShuffleMode)s;
|
- (void)setShuffle:(ShuffleMode)s;
|
||||||
- (ShuffleMode)shuffle;
|
- (ShuffleMode)shuffle;
|
||||||
- (void)setRepeat:(RepeatMode)r;
|
- (void)setRepeat:(RepeatMode)r;
|
||||||
- (RepeatMode)repeat;
|
- (RepeatMode)repeat;
|
||||||
- (NSArray *)filterPlaylistOnAlbum:(NSString *)album;
|
- (NSArray * _Nullable)filterPlaylistOnAlbum:(NSString * _Nullable)album;
|
||||||
|
|
||||||
- (PlaylistEntry *)getNextEntry:(PlaylistEntry *)pe;
|
- (PlaylistEntry * _Nullable)getNextEntry:(PlaylistEntry * _Nullable)pe;
|
||||||
- (PlaylistEntry *)getPrevEntry:(PlaylistEntry *)pe;
|
- (PlaylistEntry * _Nullable)getPrevEntry:(PlaylistEntry * _Nullable)pe;
|
||||||
|
|
||||||
/* Methods for undoing various actions */
|
/* Methods for undoing various actions */
|
||||||
- (NSUndoManager *)undoManager;
|
- (NSUndoManager * _Nullable)undoManager;
|
||||||
|
|
||||||
- (IBAction)toggleShuffle:(id)sender;
|
- (IBAction)toggleShuffle:(id _Nullable)sender;
|
||||||
|
|
||||||
- (IBAction)toggleRepeat:(id)sender;
|
- (IBAction)toggleRepeat:(id _Nullable)sender;
|
||||||
|
|
||||||
- (IBAction)randomizeList:(id)sender;
|
- (IBAction)randomizeList:(id _Nullable)sender;
|
||||||
|
|
||||||
- (IBAction)removeDuplicates:(id)sender;
|
- (IBAction)removeDuplicates:(id _Nullable)sender;
|
||||||
- (IBAction)removeDeadItems:(id)sender;
|
- (IBAction)removeDeadItems:(id _Nullable)sender;
|
||||||
|
|
||||||
- (IBAction)showEntryInFinder:(id)sender;
|
- (IBAction)showEntryInFinder:(id _Nullable)sender;
|
||||||
- (IBAction)clearFilterPredicate:(id)sender;
|
- (IBAction)clearFilterPredicate:(id _Nullable)sender;
|
||||||
- (IBAction)clear:(id)sender;
|
- (IBAction)clear:(id _Nullable)sender;
|
||||||
|
|
||||||
//- (IBAction)showTagEditor:(id)sender;
|
//- (IBAction)showTagEditor:(id)sender;
|
||||||
|
|
||||||
// Spotlight
|
// Spotlight
|
||||||
- (IBAction)searchByArtist:(id)sender;
|
- (IBAction)searchByArtist:(id _Nullable)sender;
|
||||||
- (IBAction)searchByAlbum:(id)sender;
|
- (IBAction)searchByAlbum:(id _Nullable)sender;
|
||||||
|
|
||||||
// FUN PLAYLIST MANAGEMENT STUFF!
|
// FUN PLAYLIST MANAGEMENT STUFF!
|
||||||
- (BOOL)next;
|
- (BOOL)next;
|
||||||
|
@ -96,25 +98,25 @@ typedef NS_ENUM(NSInteger, URLOrigin) {
|
||||||
- (void)addShuffledListToFront;
|
- (void)addShuffledListToFront;
|
||||||
- (void)resetShuffleList;
|
- (void)resetShuffleList;
|
||||||
|
|
||||||
- (PlaylistEntry *)shuffledEntryAtIndex:(NSInteger)i;
|
- (PlaylistEntry * _Nullable)shuffledEntryAtIndex:(NSInteger)i;
|
||||||
- (PlaylistEntry *)entryAtIndex:(NSInteger)i;
|
- (PlaylistEntry * _Nullable)entryAtIndex:(NSInteger)i;
|
||||||
|
|
||||||
// Event inlets:
|
// Event inlets:
|
||||||
- (void)willInsertURLs:(NSArray *)urls origin:(URLOrigin)origin;
|
- (void)willInsertURLs:(NSArray * _Nullable)urls origin:(URLOrigin)origin;
|
||||||
- (void)didInsertURLs:(NSArray *)urls origin:(URLOrigin)origin;
|
- (void)didInsertURLs:(NSArray * _Nullable)urls origin:(URLOrigin)origin;
|
||||||
|
|
||||||
// queue methods
|
// queue methods
|
||||||
- (IBAction)toggleQueued:(id)sender;
|
- (IBAction)toggleQueued:(id _Nullable)sender;
|
||||||
- (IBAction)emptyQueueList:(id)sender;
|
- (IBAction)emptyQueueList:(id _Nullable)sender;
|
||||||
- (void)emptyQueueListUnsynced;
|
- (void)emptyQueueListUnsynced;
|
||||||
- (NSMutableArray *)queueList;
|
- (NSMutableArray * _Nullable)queueList;
|
||||||
|
|
||||||
// reload metadata of selection
|
// reload metadata of selection
|
||||||
- (IBAction)reloadTags:(id)sender;
|
- (IBAction)reloadTags:(id _Nullable)sender;
|
||||||
|
|
||||||
- (void)moveObjectsInArrangedObjectsFromIndexes:(NSIndexSet *)indexSet
|
- (void)moveObjectsInArrangedObjectsFromIndexes:(NSIndexSet * _Nullable)indexSet
|
||||||
toIndex:(NSUInteger)insertIndex;
|
toIndex:(NSUInteger)insertIndex;
|
||||||
|
|
||||||
- (void)insertObjectsUnsynced:(NSArray *)objects atArrangedObjectIndexes:(NSIndexSet *)indexes;
|
- (void)insertObjectsUnsynced:(NSArray * _Nullable)objects atArrangedObjectIndexes:(NSIndexSet * _Nullable)indexes;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -27,7 +27,13 @@
|
||||||
@synthesize currentEntry;
|
@synthesize currentEntry;
|
||||||
@synthesize totalTime;
|
@synthesize totalTime;
|
||||||
|
|
||||||
|
static NSArray * cellIdentifiers = nil;
|
||||||
|
|
||||||
+ (void)initialize {
|
+ (void)initialize {
|
||||||
|
cellIdentifiers = @[@"index", @"status", @"title", @"albumartist", @"artist",
|
||||||
|
@"album", @"length", @"year", @"genre", @"track", @"path",
|
||||||
|
@"filename", @"codec"];
|
||||||
|
|
||||||
NSValueTransformer *repeatNoneTransformer =
|
NSValueTransformer *repeatNoneTransformer =
|
||||||
[[RepeatModeTransformer alloc] initWithMode:RepeatModeNoRepeat];
|
[[RepeatModeTransformer alloc] initWithMode:RepeatModeNoRepeat];
|
||||||
[NSValueTransformer setValueTransformer:repeatNoneTransformer forName:@"RepeatNoneTransformer"];
|
[NSValueTransformer setValueTransformer:repeatNoneTransformer forName:@"RepeatNoneTransformer"];
|
||||||
|
@ -101,10 +107,13 @@
|
||||||
- (void)awakeFromNib {
|
- (void)awakeFromNib {
|
||||||
[super awakeFromNib];
|
[super awakeFromNib];
|
||||||
|
|
||||||
|
statusImageTransformer = [NSValueTransformer valueTransformerForName:@"StatusImageTransformer"];
|
||||||
|
|
||||||
[self addObserver:self
|
[self addObserver:self
|
||||||
forKeyPath:@"arrangedObjects"
|
forKeyPath:@"arrangedObjects"
|
||||||
options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld)
|
options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld)
|
||||||
context:nil];
|
context:nil];
|
||||||
|
[[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:@"values.fontSize" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionInitial) context:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)observeValueForKeyPath:(NSString *)keyPath
|
- (void)observeValueForKeyPath:(NSString *)keyPath
|
||||||
|
@ -115,6 +124,9 @@
|
||||||
[self updatePlaylistIndexes];
|
[self updatePlaylistIndexes];
|
||||||
[self updateTotalTime];
|
[self updateTotalTime];
|
||||||
}
|
}
|
||||||
|
else if ([keyPath isEqualToString:@"values.fontSize"]) {
|
||||||
|
[self updateRowSize];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void dispatch_sync_reentrant(dispatch_queue_t queue, dispatch_block_t block) {
|
static inline void dispatch_sync_reentrant(dispatch_queue_t queue, dispatch_block_t block) {
|
||||||
|
@ -215,19 +227,109 @@ static inline void dispatch_sync_reentrant(dispatch_queue_t queue, dispatch_bloc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)tableView:(NSTableView *)tableView didClickTableColumn:(NSTableColumn *)tableColumn {
|
- (NSView * _Nullable)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn * _Nullable)tableColumn row:(NSInteger)row {
|
||||||
if ([self shuffle] != ShuffleOff) [self resetShuffleList];
|
NSImage * cellImage = nil;
|
||||||
|
NSString * cellText = @"";
|
||||||
|
NSString * cellIdentifier = @"";
|
||||||
|
NSTextAlignment cellTextAlignment = NSTextAlignmentLeft;
|
||||||
|
|
||||||
|
PlaylistEntry * pe = [[self arrangedObjects] objectAtIndex:row];
|
||||||
|
|
||||||
|
float fontSize = [[[NSUserDefaultsController sharedUserDefaultsController] defaults] floatForKey:@"fontSize"];
|
||||||
|
|
||||||
|
if (pe) {
|
||||||
|
cellIdentifier = [tableColumn identifier];
|
||||||
|
NSUInteger index = [cellIdentifiers indexOfObject:cellIdentifier];
|
||||||
|
|
||||||
|
switch (index) {
|
||||||
|
case 0:
|
||||||
|
cellText = [NSString stringWithFormat:@"%ld", [pe index] + 1];
|
||||||
|
cellTextAlignment = NSTextAlignmentRight;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
cellImage = [statusImageTransformer transformedValue:[pe status]];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
if ([pe title]) cellText = [pe title];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
if ([pe albumartist]) cellText = [pe albumartist];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 4:
|
||||||
|
if ([pe artist]) cellText = [pe artist];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5:
|
||||||
|
if ([pe album]) cellText = [pe album];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 6:
|
||||||
|
cellText = [pe lengthText];
|
||||||
|
cellTextAlignment = NSTextAlignmentRight;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 7:
|
||||||
|
if ([pe year]) cellText = [NSString stringWithFormat:@"%@", [pe year]];
|
||||||
|
cellTextAlignment = NSTextAlignmentRight;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 8:
|
||||||
|
if ([pe genre]) cellText = [pe genre];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 9:
|
||||||
|
if ([pe track]) cellText = [NSString stringWithFormat:@"%@", [pe track]];
|
||||||
|
cellTextAlignment = NSTextAlignmentRight;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 10:
|
||||||
|
if ([pe path]) cellText = [pe path];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 11:
|
||||||
|
if ([pe filename]) cellText = [pe filename];
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 12:
|
||||||
|
if ([pe codec]) cellText = [pe codec];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
NSView * view = [tableView makeViewWithIdentifier:cellIdentifier owner:nil];
|
||||||
|
if (view) {
|
||||||
|
NSTableCellView * cellView = (NSTableCellView *) view;
|
||||||
|
if (cellView.textField) {
|
||||||
|
NSFont * font = [NSFont systemFontOfSize:fontSize];
|
||||||
|
|
||||||
|
cellView.textField.font = font;
|
||||||
|
cellView.textField.stringValue = cellText;
|
||||||
|
cellView.textField.alignment = cellTextAlignment;
|
||||||
|
|
||||||
|
if (cellView.textField.intrinsicContentSize.width > cellView.textField.frame.size.width - 8)
|
||||||
|
cellView.textField.toolTip = cellText;
|
||||||
|
else
|
||||||
|
cellView.textField.toolTip = [pe status];
|
||||||
|
}
|
||||||
|
if (cellView.imageView) {
|
||||||
|
cellView.imageView.image = cellImage;
|
||||||
|
}
|
||||||
|
cellView.rowSizeStyle = NSTableViewRowSizeStyleCustom;
|
||||||
|
}
|
||||||
|
|
||||||
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSString *)tableView:(NSTableView *)tv
|
- (void)updateRowSize {
|
||||||
toolTipForCell:(NSCell *)cell
|
[self.tableView reloadData];
|
||||||
rect:(NSRectPointer)rect
|
}
|
||||||
tableColumn:(NSTableColumn *)tc
|
|
||||||
row:(NSInteger)row
|
- (void)tableView:(NSTableView *)tableView didClickTableColumn:(NSTableColumn *)tableColumn {
|
||||||
mouseLocation:(NSPoint)mouseLocation {
|
if ([self shuffle] != ShuffleOff) [self resetShuffleList];
|
||||||
DLog(@"GETTING STATUS FOR ROW: %li: %@!", row,
|
|
||||||
[[[self arrangedObjects] objectAtIndex:row] statusMessage]);
|
|
||||||
return [[[self arrangedObjects] objectAtIndex:row] statusMessage];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)moveObjectsInArrangedObjectsFromIndexes:(NSIndexSet *)indexSet
|
- (void)moveObjectsInArrangedObjectsFromIndexes:(NSIndexSet *)indexSet
|
||||||
|
@ -865,6 +967,13 @@ static inline void dispatch_sync_reentrant(dispatch_queue_t queue, dispatch_bloc
|
||||||
|
|
||||||
pe.current = YES;
|
pe.current = YES;
|
||||||
|
|
||||||
|
NSMutableIndexSet * refreshSet = [[NSMutableIndexSet alloc] init];
|
||||||
|
|
||||||
|
if (currentEntry != nil) [refreshSet addIndex:currentEntry.index];
|
||||||
|
if (pe != nil) [refreshSet addIndex:pe.index];
|
||||||
|
|
||||||
|
[self.tableView reloadDataForRowIndexes:refreshSet columnIndexes:[NSIndexSet indexSetWithIndex:1]];
|
||||||
|
|
||||||
if (pe != nil) [self.tableView scrollRowToVisible:pe.index];
|
if (pe != nil) [self.tableView scrollRowToVisible:pe.index];
|
||||||
|
|
||||||
currentEntry = pe;
|
currentEntry = pe;
|
||||||
|
@ -957,6 +1066,8 @@ static inline void dispatch_sync_reentrant(dispatch_queue_t queue, dispatch_bloc
|
||||||
- (IBAction)toggleQueued:(id)sender {
|
- (IBAction)toggleQueued:(id)sender {
|
||||||
SQLiteStore *store = [SQLiteStore sharedStore];
|
SQLiteStore *store = [SQLiteStore sharedStore];
|
||||||
|
|
||||||
|
NSMutableIndexSet * refreshSet = [[NSMutableIndexSet alloc] init];
|
||||||
|
|
||||||
for (PlaylistEntry *queueItem in [self selectedObjects]) {
|
for (PlaylistEntry *queueItem in [self selectedObjects]) {
|
||||||
if (queueItem.queued) {
|
if (queueItem.queued) {
|
||||||
queueItem.queued = NO;
|
queueItem.queued = NO;
|
||||||
|
@ -964,7 +1075,7 @@ static inline void dispatch_sync_reentrant(dispatch_queue_t queue, dispatch_bloc
|
||||||
|
|
||||||
[queueList removeObject:queueItem];
|
[queueList removeObject:queueItem];
|
||||||
|
|
||||||
[store queueRemovePlaylistItems:@[queueItem]];
|
[store queueRemovePlaylistItems:@[[NSNumber numberWithInteger:[queueItem index]]]];
|
||||||
} else {
|
} else {
|
||||||
queueItem.queued = YES;
|
queueItem.queued = YES;
|
||||||
queueItem.queuePosition = (int) [queueList count];
|
queueItem.queuePosition = (int) [queueList count];
|
||||||
|
@ -974,9 +1085,13 @@ static inline void dispatch_sync_reentrant(dispatch_queue_t queue, dispatch_bloc
|
||||||
[store queueAddItem:[queueItem index]];
|
[store queueAddItem:[queueItem index]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[refreshSet addIndex:[queueItem index]];
|
||||||
|
|
||||||
DLog(@"TOGGLE QUEUED: %i", queueItem.queued);
|
DLog(@"TOGGLE QUEUED: %i", queueItem.queued);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[self.tableView reloadDataForRowIndexes:refreshSet columnIndexes:[NSIndexSet indexSetWithIndex:1]];
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (PlaylistEntry *cur in queueList) {
|
for (PlaylistEntry *cur in queueList) {
|
||||||
cur.queuePosition = i++;
|
cur.queuePosition = i++;
|
||||||
|
@ -986,14 +1101,20 @@ static inline void dispatch_sync_reentrant(dispatch_queue_t queue, dispatch_bloc
|
||||||
- (IBAction)removeFromQueue:(id)sender {
|
- (IBAction)removeFromQueue:(id)sender {
|
||||||
SQLiteStore *store = [SQLiteStore sharedStore];
|
SQLiteStore *store = [SQLiteStore sharedStore];
|
||||||
|
|
||||||
|
NSMutableIndexSet * refreshSet = [[NSMutableIndexSet alloc] init];
|
||||||
|
|
||||||
for (PlaylistEntry *queueItem in [self selectedObjects]) {
|
for (PlaylistEntry *queueItem in [self selectedObjects]) {
|
||||||
queueItem.queued = NO;
|
queueItem.queued = NO;
|
||||||
queueItem.queuePosition = -1;
|
queueItem.queuePosition = -1;
|
||||||
|
|
||||||
[queueList removeObject:queueItem];
|
[queueList removeObject:queueItem];
|
||||||
[store queueRemovePlaylistItems:@[queueItem]];
|
[store queueRemovePlaylistItems:@[queueItem]];
|
||||||
|
|
||||||
|
[refreshSet addIndex:[queueItem index]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[self.tableView reloadDataForRowIndexes:refreshSet columnIndexes:[NSIndexSet indexSetWithIndex:1]];
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (PlaylistEntry *cur in queueList) {
|
for (PlaylistEntry *cur in queueList) {
|
||||||
cur.queuePosition = i++;
|
cur.queuePosition = i++;
|
||||||
|
@ -1003,14 +1124,20 @@ static inline void dispatch_sync_reentrant(dispatch_queue_t queue, dispatch_bloc
|
||||||
- (IBAction)addToQueue:(id)sender {
|
- (IBAction)addToQueue:(id)sender {
|
||||||
SQLiteStore *store = [SQLiteStore sharedStore];
|
SQLiteStore *store = [SQLiteStore sharedStore];
|
||||||
|
|
||||||
|
NSMutableIndexSet * refreshSet = [[NSMutableIndexSet alloc] init];
|
||||||
|
|
||||||
for (PlaylistEntry *queueItem in [self selectedObjects]) {
|
for (PlaylistEntry *queueItem in [self selectedObjects]) {
|
||||||
queueItem.queued = YES;
|
queueItem.queued = YES;
|
||||||
queueItem.queuePosition = (int) [queueList count];
|
queueItem.queuePosition = (int) [queueList count];
|
||||||
|
|
||||||
[queueList addObject:queueItem];
|
[queueList addObject:queueItem];
|
||||||
[store queueAddItem:[queueItem index]];
|
[store queueAddItem:[queueItem index]];
|
||||||
|
|
||||||
|
[refreshSet addIndex:[queueItem index]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[self.tableView reloadDataForRowIndexes:refreshSet columnIndexes:[NSIndexSet indexSetWithIndex:1]];
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (PlaylistEntry *cur in queueList) {
|
for (PlaylistEntry *cur in queueList) {
|
||||||
cur.queuePosition = i++;
|
cur.queuePosition = i++;
|
||||||
|
@ -1019,6 +1146,10 @@ static inline void dispatch_sync_reentrant(dispatch_queue_t queue, dispatch_bloc
|
||||||
|
|
||||||
- (IBAction)stopAfterCurrent:(id)sender {
|
- (IBAction)stopAfterCurrent:(id)sender {
|
||||||
currentEntry.stopAfter = !currentEntry.stopAfter;
|
currentEntry.stopAfter = !currentEntry.stopAfter;
|
||||||
|
|
||||||
|
NSIndexSet * refreshSet = [NSIndexSet indexSetWithIndex:[currentEntry index]];
|
||||||
|
|
||||||
|
[self.tableView reloadDataForRowIndexes:refreshSet columnIndexes:[NSIndexSet indexSetWithIndex:1]];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
|
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
|
||||||
|
|
|
@ -762,6 +762,8 @@ static inline void dispatch_sync_reentrant(dispatch_queue_t queue, dispatch_bloc
|
||||||
|
|
||||||
if (count)
|
if (count)
|
||||||
{
|
{
|
||||||
|
NSMutableIndexSet * refreshSet = [[NSMutableIndexSet alloc] init];
|
||||||
|
|
||||||
[playlistController emptyQueueListUnsynced];
|
[playlistController emptyQueueListUnsynced];
|
||||||
|
|
||||||
for (i = 0; i < count; ++i)
|
for (i = 0; i < count; ++i)
|
||||||
|
@ -772,7 +774,11 @@ static inline void dispatch_sync_reentrant(dispatch_queue_t queue, dispatch_bloc
|
||||||
pe.queued = YES;
|
pe.queued = YES;
|
||||||
|
|
||||||
[[playlistController queueList] addObject:pe];
|
[[playlistController queueList] addObject:pe];
|
||||||
|
|
||||||
|
[refreshSet addIndex:[pe index]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[playlistView.documentView reloadDataForRowIndexes:refreshSet columnIndexes:[NSIndexSet indexSetWithIndex:1]];
|
||||||
}
|
}
|
||||||
|
|
||||||
//Clear the selection
|
//Clear the selection
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
// Convert from font size to height in playlist view
|
// Convert from font size to height in playlist view
|
||||||
- (id)transformedValue:(id)value {
|
- (id)transformedValue:(id)value {
|
||||||
NSFont *font = [NSFont systemFontOfSize:[(NSNumber *)value floatValue]];
|
NSFont *font = [NSFont systemFontOfSize:[(NSNumber *)value floatValue]];
|
||||||
NSLayoutManager *layoutManager = [[NSLayoutManager alloc]init];
|
NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init];
|
||||||
float fRowSize = [layoutManager defaultLineHeightForFont:font];
|
float fRowSize = [layoutManager defaultLineHeightForFont:font] * 1.2;
|
||||||
return [NSNumber numberWithFloat: fRowSize];
|
return [NSNumber numberWithFloat: fRowSize];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue