Skip to content

Commit

Permalink
next/previous track buttons function, tag editor fields accept first …
Browse files Browse the repository at this point in the history
…responder, smart playlist editing
  • Loading branch information
jcm93 committed Aug 23, 2017
1 parent 6644fa9 commit 5156472
Show file tree
Hide file tree
Showing 11 changed files with 135 additions and 62 deletions.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,11 @@
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "jmc/Delegate:Main Window Controller/MainWindowController.swift"
timestampString = "522965633.725996"
timestampString = "525195075.94561"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "331"
endingLineNumber = "331"
startingLineNumber = "335"
endingLineNumber = "335"
landmarkName = "tempBreak(_:)"
landmarkType = "7">
</BreakpointContent>
Expand Down
4 changes: 2 additions & 2 deletions jmc/Backend/GlobalFunctions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -604,8 +604,8 @@ let DEFAULT_COLUMN_VISIBILITY_DICTIONARY_CONSOLIDATOR: [String : Int] = [
]


func shuffleArray(_ array: [AnyObject]) -> [AnyObject]? {
guard array.count > 0 else {return nil}
func shuffleArray(_ array: [AnyObject]) -> [AnyObject] {
guard array.count > 0 else { return array }
var newArray = array
for i in 0..<array.count - 1 {
let j = Int(arc4random_uniform(UInt32(array.count - i))) + i
Expand Down
2 changes: 1 addition & 1 deletion jmc/Delegate:Main Window Controller/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
if let item = sender as? NSMenuItem {
item.state = item.state == NSOnState ? NSOffState : NSOnState
}
mainWindowController?.toggleFilterVisibility(self)
mainWindowController?.advancedFilterButtonPressed(self)
}

@IBAction func testyThing(_ sender: AnyObject) {
Expand Down
37 changes: 10 additions & 27 deletions jmc/Delegate:Main Window Controller/MainWindowController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,11 @@ class MainWindowController: NSWindowController, NSSearchFieldDelegate, NSWindowD
delegate?.shuffleMenuItem.state = shuffleButton.state
}

@IBAction func skipBackward(_ sender: Any) {
self.skipBackward()
}
@IBAction func tempBreak(_ sender: AnyObject) {
self.skip()
print("dongels")
}
@IBAction func addPlaylistButton(_ sender: AnyObject) {
Expand Down Expand Up @@ -558,52 +562,31 @@ class MainWindowController: NSWindowController, NSSearchFieldDelegate, NSWindowD
}
}
@IBAction func advancedFilterButtonPressed(_ sender: AnyObject) {
if sender is AppDelegate {
self.advancedSearchToggle.state = self.advancedSearchToggle.state == NSOnState ? NSOffState : NSOnState
}
if advancedSearchToggle.state == NSOnState {
showAdvancedFilter()
} else {
hideAdvancedFilter()
}
}

@IBAction func toggleFilterVisibility(_ sender: AnyObject) {
if advancedFilterViewController?.view != nil {
advancedSearchToggle.state = NSOffState
advancedFilterViewController!.view.removeFromSuperview()
currentTableViewController?.trackViewArrayController.filterPredicate = nil
//librarySplitView.removeArrangedSubview(advancedFilterViewController!.view)
advancedFilterViewController = nil
currentTableViewController?.advancedFilterVisible = false
} else {
advancedSearchToggle.state = NSOnState
self.advancedFilterViewController = AdvancedFilterViewController(nibName: "AdvancedFilterViewController", bundle: nil)
advancedFilterViewController!.mainWindowController = self
librarySplitView.insertArrangedSubview(advancedFilterViewController!.view, at: 0)
advancedFilterViewController?.predicateEditor!.bind("value", to: currentTableViewController!.trackViewArrayController, withKeyPath: "filterPredicate", options: nil)
currentTableViewController?.advancedFilterVisible = true
advancedFilterViewController?.initializePredicateEditor()
}
}

func showAdvancedFilter() {
if advancedFilterViewController?.view == nil {
self.advancedFilterViewController = AdvancedFilterViewController(nibName: "AdvancedFilterViewController", bundle: nil)
self.advancedFilterViewController = AdvancedFilterViewController(tableViewController: self.currentTableViewController!)
//self.advancedFilterViewController = AdvancedFilterViewController(nibName: "AdvancedFilterViewController", bundle: nil)
advancedFilterViewController!.mainWindowController = self
librarySplitView.insertArrangedSubview(advancedFilterViewController!.view, at: 0)
advancedFilterViewController?.predicateEditor!.bind("value", to: currentTableViewController!.trackViewArrayController, withKeyPath: "filterPredicate", options: nil)
currentTableViewController?.advancedFilterVisible = true
advancedFilterViewController?.initializePredicateEditor()
advancedSearchToggle.state = NSOnState
}
}

func hideAdvancedFilter() {
if advancedFilterViewController != nil {
advancedFilterViewController!.view.removeFromSuperview()
currentTableViewController?.trackViewArrayController.filterPredicate = nil
//librarySplitView.removeArrangedSubview(advancedFilterViewController!.view)
advancedFilterViewController = nil
self.advancedFilterViewController = nil
currentTableViewController?.advancedFilterVisible = false
advancedSearchToggle.state = NSOffState
}
}

Expand Down
15 changes: 9 additions & 6 deletions jmc/Delegate:Main Window Controller/MainWindowController.xib
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,9 @@
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="skipBackward:" target="-2" id="OTK-xq-TPJ"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="jia-N3-aQf">
<rect key="frame" x="48" y="1" width="26" height="26"/>
Expand Down Expand Up @@ -346,7 +349,7 @@
<real value="3.4028234663852886e+38"/>
</customSpacing>
</stackView>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="qNB-cP-szA">
<button toolTip="Toggle shuffle" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="qNB-cP-szA">
<rect key="frame" x="20" y="4" width="44" height="25"/>
<constraints>
<constraint firstAttribute="height" constant="22" id="LmL-mZ-ewB"/>
Expand All @@ -361,7 +364,7 @@
<binding destination="-2" name="value" keyPath="self.shuffle" id="bQc-Re-Dbd"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eg4-23-xqc" userLabel="Repeat Button">
<button toolTip="Toggle track repeat" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eg4-23-xqc" userLabel="Repeat Button">
<rect key="frame" x="72" y="4" width="44" height="25"/>
<constraints>
<constraint firstAttribute="height" constant="22" id="PRo-qA-k4d"/>
Expand Down Expand Up @@ -394,7 +397,7 @@
</binding>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="rfk-1e-A3X" userLabel="Sharing Button">
<button toolTip="Toggle library sharing" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="rfk-1e-A3X" userLabel="Sharing Button">
<rect key="frame" x="176" y="4" width="44" height="25"/>
<constraints>
<constraint firstAttribute="height" constant="22" id="2rr-OL-nC8"/>
Expand All @@ -405,7 +408,7 @@
<font key="font" metaFont="system"/>
</buttonCell>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0eg-hu-JdK" userLabel="Sharing Button">
<button toolTip="Toggle advanced search" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0eg-hu-JdK" userLabel="Sharing Button">
<rect key="frame" x="228" y="4" width="44" height="25"/>
<constraints>
<constraint firstAttribute="height" constant="22" id="GHm-oO-umr"/>
Expand All @@ -430,7 +433,7 @@
<binding destination="-2" name="value" keyPath="self.infoString" id="pea-7J-Wc9"/>
</connections>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aLT-7j-MYS" userLabel="Sharing Button">
<button toolTip="Hide or show album art" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aLT-7j-MYS" userLabel="Sharing Button">
<rect key="frame" x="124" y="4" width="44" height="25"/>
<constraints>
<constraint firstAttribute="width" constant="44" id="Iw5-0h-g0a"/>
Expand All @@ -445,7 +448,7 @@
<binding destination="-2" name="value" keyPath="self.showsArtwork" id="4Jq-aQ-Coe"/>
</connections>
</button>
<segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mb6-nw-TjG" customClass="AddPlaylistButton" customModule="jmc" customModuleProvider="target">
<segmentedControl toolTip="Add a playlist (Hold down to add a folder or Smart Playlist)" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="mb6-nw-TjG" customClass="AddPlaylistButton" customModule="jmc" customModuleProvider="target">
<rect key="frame" x="280" y="4" width="44" height="25"/>
<constraints>
<constraint firstAttribute="height" constant="22" id="8fu-YF-rDI"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,11 +134,6 @@ class LibraryTableViewController: NSViewController, NSMenuDelegate {
guard tableView!.selectedRow >= 0 else {
return
}
/*
single
let item = (trackViewArrayController?.arrangedObjects as! [TrackView])[tableView!.selectedRow].track
mainWindowController!.playSong(item!, row: tableView!.selectedRow)
*/
var items = (trackViewArrayController.selectedObjects as! [TrackView]).map({return $0.track!})
if mainWindowController!.playSong(items.removeFirst(), row: nil) {
mainWindowController?.trackQueueViewController?.addTracksToQueue(nil, tracks: items)
Expand Down Expand Up @@ -304,7 +299,7 @@ class LibraryTableViewController: NSViewController, NSMenuDelegate {
if smart_criteria?.ordering_criterion != nil {
switch smart_criteria!.ordering_criterion! {
case "random":
results = shuffleArray(results as! [Track]) as! NSArray
results = shuffleArray(results as! [Track]) as NSArray
case "name":
results = results!.sortedArray(using: #selector(Track.compareName)) as NSArray
case "artist":
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

import Cocoa

private var my_context = 0

class AdvancedFilterViewController: NSViewController {

@IBOutlet weak var predicateEditor: NSPredicateEditor!
Expand All @@ -18,22 +20,93 @@ class AdvancedFilterViewController: NSViewController {
@IBOutlet weak var itemLimitField: NSTextField!
@IBOutlet weak var playlistSelectionCriteriaSelector: NSPopUpButton!

var mainWindowController: MainWindowController?
var mainWindowController: MainWindowController!
var tableViewController: LibraryTableViewController!
var editingSmartPlaylist = false
var isInitialized = false

@IBAction func lengthDeterminantChanged(_ sender: AnyObject) {
init(tableViewController: LibraryTableViewController) {
super.init(nibName: "AdvancedFilterViewController", bundle: nil)!
self.tableViewController = tableViewController
self.tableViewController.advancedFilterVisible = true
}

required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

@IBAction func doesLimitChanged(_ sender: Any) {
guard let button = sender as? NSButton else { return }
if button.state == NSOnState {
self.tableViewController.playlist?.smart_criteria?.fetch_limit = self.itemLimitField.integerValue as NSNumber?
self.tableViewController.playlist?.smart_criteria?.fetch_limit_type = self.playlistLengthDeterminantSelector.titleOfSelectedItem!
self.tableViewController.playlist?.smart_criteria?.ordering_criterion = self.playlistSelectionCriteriaSelector.titleOfSelectedItem!
} else {
self.tableViewController.playlist?.smart_criteria?.fetch_limit = nil
self.tableViewController.playlist?.smart_criteria?.fetch_limit_type = nil
self.tableViewController.playlist?.smart_criteria?.ordering_criterion = nil
}
self.tableViewController.initializeSmartPlaylist()
self.tableViewController.initializeForPlaylist()

}

@IBAction func fetchLimitChanged(_ sender: Any) {
guard let textField = sender as? NSTextField else { return }
guard limitCheck.state == NSOnState else { return }
self.tableViewController.playlist?.smart_criteria?.fetch_limit = textField.integerValue as NSNumber?
self.tableViewController.initializeSmartPlaylist()
self.tableViewController.initializeForPlaylist()
}

@IBAction func lengthDeterminantChanged(_ sender: AnyObject) {
guard let popUpButton = sender as? NSPopUpButton else { return }
guard limitCheck.state == NSOnState else { return }
self.tableViewController.playlist?.smart_criteria?.fetch_limit_type = popUpButton.titleOfSelectedItem!
self.tableViewController.initializeSmartPlaylist()
self.tableViewController.initializeForPlaylist()
}

@IBAction func orderingCriterionChanged(_ sender: AnyObject) {

guard let popUpButton = sender as? NSPopUpButton else { return }
guard limitCheck.state == NSOnState else { return }
self.tableViewController.playlist?.smart_criteria?.ordering_criterion = popUpButton.titleOfSelectedItem!
self.tableViewController.initializeSmartPlaylist()
self.tableViewController.initializeForPlaylist()
}

func initializePredicateEditor() {
if let smartCriteria = self.tableViewController.playlist?.smart_criteria {
self.predicateEditor.objectValue = smartCriteria.predicate
self.itemLimitField.stringValue = smartCriteria.fetch_limit?.stringValue ?? ""
self.limitCheck.state = smartCriteria.fetch_limit != nil ? NSOnState : NSOffState
if smartCriteria.fetch_limit_type != nil {
self.playlistLengthDeterminantSelector.selectItem(withTitle: smartCriteria.fetch_limit_type!)
}
if smartCriteria.ordering_criterion != nil {
self.playlistSelectionCriteriaSelector.selectItem(withTitle: smartCriteria.ordering_criterion!)
}
} else {
self.predicateEditor.objectValue = self.tableViewController.trackViewArrayController.filterPredicate
}
if predicateEditor.predicate == nil {
predicateEditor.addRow(nil)
}
}

@IBAction func predicateEditorAction(_ sender: Any) {
print("predicate value changed")
if self.tableViewController.playlist?.smart_criteria != nil {
if self.editingSmartPlaylist == false {
self.tableViewController.trackViewArrayController.content = nil
self.editingSmartPlaylist = true
}
self.tableViewController.playlist!.smart_criteria!.predicate = self.predicateEditor.predicate!
self.tableViewController.initializeSmartPlaylist()
self.tableViewController.initializeForPlaylist()
}
}

@IBAction func createSmartPlaylistButtonPressed(_ sender: AnyObject) {
let newSmartCriteria = NSEntityDescription.insertNewObject(forEntityName: "SmartCriteria", into: managedContext) as! SmartCriteria
if limitCheck.state == NSOnState {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="doesLimitChanged:" target="-2" id="PPZ-Bp-IYI"/>
</connections>
</button>
<popUpButton verticalHuggingPriority="750" misplaced="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hJp-25-SH6">
<rect key="frame" x="504" y="2" width="76" height="26"/>
Expand Down Expand Up @@ -99,6 +102,9 @@
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<action selector="fetchLimitChanged:" target="-2" id="kIS-dS-AgJ"/>
</connections>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" misplaced="YES" allowsCharacterPickerTouchBarItem="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Uwd-Rw-Gqo">
<rect key="frame" x="583" y="8" width="81" height="17"/>
Expand Down Expand Up @@ -1403,6 +1409,9 @@
</popUpMenus>
</predicateEditorRowTemplate>
</rowTemplates>
<connections>
<action selector="predicateEditorAction:" target="-2" id="TOo-0K-bMC"/>
</connections>
</predicateEditor>
</subviews>
<constraints>
Expand Down
Loading

0 comments on commit 5156472

Please sign in to comment.