Commit Graph

429 Commits (6d772562ca291249a2d62ccaafa056cb06c800af)

Author SHA1 Message Date
Christopher Snowhill 74cd0f7da9 SQLite playlist store: Greatly improved performance of playlist sync operations 2022-01-14 22:42:57 -08:00
Christopher Snowhill d24a01a637 Implemented basic embedded CueSheet support 2022-01-14 16:46:35 -08:00
Christopher Snowhill 8a91bc1d09 Playlist loader: Allocate larger properties dictionary 2022-01-11 19:35:59 -08:00
Christopher Snowhill 7fe67b1630 Implement dock icon progress bar indicator for many processing operations, including adding tracks, removing tracks, and loading or reloading track metadata 2022-01-09 02:10:08 -08:00
Christopher Snowhill b40b506cc3 Remove unneeded header import 2022-01-07 02:16:55 -08:00
Christopher Snowhill 00052130a0 Revert ea589b2635, and fix reloading info for entries on Intel, by invoking the reloader in the background instead of directly calling it from the UI thread 2022-01-07 02:12:49 -08:00
Christopher Snowhill ea589b2635 Playlist loader: No longer do background metadata reading on Intel machines, where VGMStream mysteriously clobbers the stack at random when run in the background 2022-01-07 01:35:59 -08:00
Christopher Snowhill 098650099e Fix SQL playlist loader so it doesn't crash on an empty playlist 2021-12-25 16:42:28 -08:00
Christopher Snowhill 2445cc94a9 - Retrieve profile paths properly instead of hard coding
- Display playlist total duration in units up to weeks and down to just seconds, and only pluralize units as necessary
- Major change: Implemented a SQLite disk backed playlist, track data, and queue storage system, which will be synchronized from the player in real time, and will hopefully survive system or app crashes. Existing plist playlist will be imported on first run, and removed on shutdown.
2021-12-24 01:01:21 -08:00
Christopher Snowhill 9e6199b108 UI: Fix table column duplication and other mess, due to saved application state 2021-10-02 00:40:10 -07:00
Christopher Snowhill fdae7eec21 File info: Implemented support for Album Artist and Codec fields 2021-10-01 19:18:42 -07:00
Christopher Snowhill 217b3d4cf9 Attempt to clean up 10.13+ stuff with fallbacks to the old ways 2021-09-23 00:49:51 -07:00
Christopher Snowhill 922e657f0b Context menu: Add option to reload metadata from existing playlist entries 2021-07-03 15:32:13 -07:00
Dzmitry Neviadomski b69cb98240 Revert display regressions.
1. Revert "Merge pull request #148 from JanX2/two-gigaseconds-mini"

This reverts commit 7365174b11, reversing
changes made to c5ac86725d.

2. Revert "Two gigaseconds (#147)"

This reverts commit c5ac86725d.
2021-05-09 01:16:20 +03:00
Christopher Snowhill 5df4035568 Brought back background metadata and file info loading, still needs a progress indicator somewhere 2021-05-07 17:19:10 -07:00
Jan c5ac86725d
Two gigaseconds (#147)
* Fix look of position time field to match the rest of the UI.

* Fix typo.

* Improve position time display.

* Add days, hours support to position time display.

* Fix "Current Time" toolbar item geometry/layout.

* Don’t enforce leading double-digits in position time display.

* MainMenu.xib touched by Xcode.

* Implement and use MonospacedDigitTextFieldCell.
This way the digits of numbers in playlist columns consisting of mostly digits will be aligned vertically.

* Disable font scaling code without effect.

* Set "Current Time" toolbar item to use MonospacedDigitTextFieldCell.

* Improve SecondsFormatter.

* Merge in SecondsFormatter improvements from Play.

* Move formatter setup into XIB.

* Add CogTests.
These can later be used for integration tests.

* Add SecondsFormatterTests.
Tests are stubbed out.

* Pouring foundation for SecondsFormatterTests.

* Implement -testPositive.

* Replace unsigned with int in SecondsFormatter.

* Implement negative support, tests.

* Rewrite SecondsFormatter in preparation for better readability..

* Rewrite SecondsFormatter for better readability.

* Add negative zero support.

* Improve SecondsFormatter readability.

* Refactor into -stringForTimeInterval: in SecondsFormatter.

* Cleanup.

* Mark TimeField as space-indented.

* Replace custom time formatting code in TimeField with SecondsFormatter.

* Cleanup.

* Improve SecondsFormatter format strings.

* Add internal type for time calculations.

Co-authored-by: Jan Weiß <jan@geheimwerk.de>
2021-05-06 19:50:26 -07:00
Christopher Snowhill 13bd399b31 Clean up most warnings and update some dependencies 2021-04-29 18:16:24 -07:00
Christopher Snowhill ce8a1c230d Fix Playlist Loader so it only attempts to process track info for tracks that need it, and not the entire playlist every time 2021-04-06 16:50:17 -07:00
Christopher Snowhill 59477130bb Get rid of background tag loading, as it never worked properly anyway 2021-02-25 02:42:44 -08:00
Dzmitry Neviadomski 85e27e7496 Rework playback shortcuts again. 2021-02-19 08:23:13 +03:00
Dzmitry Neviadomski 9840d87127 Convert CogStatus enum to NS_ENUM 2021-02-07 00:22:19 +03:00
Christopher Snowhill 583b8f3cb4 Hopefully fix Drag and Drop for everyone 2021-02-06 00:02:55 -08:00
Dzmitry Neviadomski c1da9a66e1 Modernize several classes.
Use modern ObjC syntax.
Use new Pasteboard APIs.
Explicitly declare protocols.
2021-01-31 02:14:08 +03:00
Dzmitry Neviadomski 730276a7e7 Modernize DNDArrayController. 2021-01-28 01:09:09 +03:00
Dzmitry Neviadomski a0afe85130 Fix deprecations with replacemnt and reindent touched files. 2021-01-27 05:30:19 +03:00
Christopher Snowhill 0a99093af0 Fix status bar bodge so stopping manually doesn't prevent playback for 3 seconds 2021-01-06 02:18:09 -08:00
Christopher Snowhill 0f543a1b52 Guard background file info retrieval to prevent it in case only a single entry was added 2020-02-17 19:50:32 -08:00
Christopher Snowhill 7308aa5f7b Fall back on non-container file parsing, since VGMStream is too greedy with its extension list 2020-02-17 19:50:32 -08:00
Christopher Snowhill 072c4346cf Fix album shuffle again 2019-12-15 18:12:11 -08:00
Christopher Snowhill 61c6cf3285 Hopefully fixed metadata parsing for newly added tracks showing up in notifications 2019-12-05 19:04:46 -08:00
Christopher Snowhill 4c955ef806 Simplify metadata loader 2019-11-08 15:03:26 -08:00
Christopher Snowhill 2ad9584fb2 Rejigger shuffle list generator for albums mode, to insert the current album at the start of the list, starting from the current track 2019-10-24 17:18:51 -07:00
Christopher Snowhill c8f91c5092 Implemented album shuffle mode, which somehow wasn't implemented at all 2019-10-12 18:27:02 -07:00
Christopher Snowhill 39bc8df77c Implement spacebar for play/pause and enter for restart current track for the mini window, and implement left/right arrows for seeking forward and backward for both the mini window and the main window playlist view. 2018-09-26 20:32:23 -07:00
Christopher Snowhill 6eeb8a60da Add a safety check for attempting to add unsupported URLs. 2018-09-23 16:44:44 -07:00
Christopher Snowhill 505b8c3140 Fix playlist entry to return 0 length instead of NaN when metadata hasn't loaded yet. 2018-09-22 03:11:13 -07:00
Christopher Snowhill d9529d04a8 Fix refreshing table values when adding tracks to the playlist. 2018-09-22 03:10:44 -07:00
Christopher Snowhill 0513639842 Tidy up playlist info loader a bit. 2018-07-22 02:00:30 -07:00
Christopher Snowhill 67495009ff Updates for new build system. 2018-06-28 04:03:37 -07:00
Christopher Snowhill d14d69e3c4 Correctly invalidate playlist view's data when background metadata loader completes. 2018-05-23 00:34:22 -07:00
Christopher Snowhill 3b8e498e7f Fix total time display on startup, when all metadata is correctly loaded. 2018-05-23 00:32:47 -07:00
Christopher Snowhill 200701a2a3 Fix playlist info loading threading magic. 2018-02-18 20:19:18 -08:00
Christopher Snowhill 54bd1db745 Ignore RepeatOne only when manually skipping tracks, not when playing normally. 2017-12-23 23:55:33 -08:00
Christopher Snowhill 524e161789 Track skip no longer gets stuck on the current track when in Repeat One mode. 2017-12-23 23:33:11 -08:00
Chris Moeller 1b1721736e Fix PlaylistLoader to sort the contents of directories by the file path. 2017-12-16 19:05:17 -08:00
Christopher Snowhill bf501d9e12 Add error receiver for debugging. 2017-09-17 20:03:30 -07:00
Christopher Snowhill ac44ca33b0 Hopefully fixed total play time synchronizing with adding new tracks to the playlist. 2016-09-01 17:20:53 -07:00
Chris Moeller 86a6b2c22d Fix playlist metadata loading. 2016-07-02 02:58:38 -07:00
Chris Moeller 0d12f9e4e3 Fix file info load batching to operations of 16 files at a time. 2016-06-29 22:13:32 -07:00
Chris Moeller 17272ce43c Clean up lots of warnings and minor issues. 2016-06-29 22:10:29 -07:00
Chris Moeller 7876a4492f Handle background track metadata loading in a saner manner. 2016-06-28 19:33:48 -07:00
Chris Moeller ffa31e696d Remove unused function declaration. 2016-06-28 19:33:21 -07:00
Chris Moeller 03b825ced3 Hopefully fix the last of the Automatic Reference Counting issues that remained. 2016-06-19 12:57:18 -07:00
Chris Moeller ba9fe0534f Convert playlist metadata loader to use code blocks, which fixes references and stops crashes on adding new tracks. 2016-05-07 10:20:46 -07:00
Chris Moeller 0e3644177e Updated everything else to ARC, and plugged a release cycle. 2016-05-05 13:05:39 -07:00
Chris Moeller 25236a254a On second thought, let's not allow other repeat modes to wrap around the playlist boundary, either 2015-02-07 23:38:16 -08:00
Chris Moeller 321a5ea23f Fix repeat none and repeat all being swapped 2015-02-07 23:36:23 -08:00
o1 b3072709e4 Fixed possible track idx overflow causing crash 2015-01-07 15:10:33 +03:00
Chris Moeller 12dc73430b Last minute bug fixes 2014-12-03 22:34:13 -08:00
Chris Moeller da26e6757b Implemented a distributed notification for track information and playback status 2014-12-03 22:13:27 -08:00
Chris Moeller 0ccc0f4dae Fixed XML playlist saving on Yosemite 2014-09-16 18:27:14 -07:00
Chris Moeller 9cd138384d Setting Repeat One will now direct all synthesizing decoders to run forever, rather than merely restarting repeatedly. Playptmod now cuts off length detection after half an hour, in case some files' loops are not detected. 2014-02-13 21:16:18 -08:00
Chris Moeller 1b4ef20d19 Added 'days' to playlist total time, but only if the total hours is 24 or greater 2013-10-20 21:16:07 -07:00
Chris Moeller b461e774fd Fixed undo/redo handling when the playlist is sorted, including undo/redo interleaved with different sorting orders 2013-10-18 01:47:48 -07:00
Chris Moeller 3b8b948a1e Playlists are now saved as they have been rearranged in the UI 2013-10-18 00:43:55 -07:00
Chris Moeller aa2676f605 Made duplicate and dead item removal correctly remove the items by their arranged indexes 2013-10-18 00:25:37 -07:00
Chris Moeller 2f5769d668 Made arranged item remover actually remove the correct arranged items and use the correct indexes 2013-10-18 00:17:03 -07:00
Chris Moeller 7a9e4a720c Added Remove Dead Items command 2013-10-18 00:14:53 -07:00
Chris Moeller 2d5f340011 Added Remove Duplicate Items command 2013-10-18 00:13:27 -07:00
Chris Moeller 2c8f085a3d Clear the selection when adding items to the playlist, so that the info dialog will hopefully have some valid data next time a track is selected 2013-10-15 10:38:37 -07:00
Chris Moeller 088594dc8c Implemented clipboard support for the playlist view 2013-10-12 22:08:34 -07:00
Chris Moeller 759aeab4fb Implemented pause on startup 2013-10-12 19:16:47 -07:00
Chris Moeller e6a2773e8a XML playlists will no longer store metadataLoaded for files where an error occurred 2013-10-12 17:20:57 -07:00
Chris Moeller 697ed357a9 mamburu: Being unable to remove an entry from playlist is fixed 2013-10-11 12:39:05 -07:00
Chris Moeller 521eb67183 mamburu: Randomizing playlist is now undoable, adding playlist entry no longer causes un-randomization 2013-10-11 12:33:58 -07:00
Chris Moeller d1f6ec850e tuurngait: Major UI Improvements 2013-10-11 07:16:47 -07:00
Chris Moeller e5a648578b mamburu: Logging improved, no more excessive logging in release builds 2013-10-11 05:03:55 -07:00
Chris Moeller 8d19b2538a XML playlist now stores and loads the playback queue 2013-10-10 01:43:04 -07:00
Chris Moeller 7d6cfe50df Prevent XML playlists from being saved by the GUI 2013-10-10 00:39:35 -07:00
Chris Moeller 754a22166a XML playlists now store album art in an MD5 hash indexed dictionary, but continue to read the older format for backwards compatibility 2013-10-09 16:14:23 -07:00
Chris Moeller 555ccc9e87 Now storing all album art internally as its original format and synthesizing NSImage objects on demand 2013-10-09 13:53:13 -07:00
Chris Moeller d1e51ee9a1 We shouldn't be releasing objects that belong to something else 2013-10-09 11:51:41 -07:00
Chris Moeller 1743016e71 Fixed serialization of FilePlaylistEntry; Added serialization and unserialization of album art 2013-10-09 10:34:32 -07:00
Chris Moeller b5fd1207b8 Now saves and loads the default playlist in an XML plist format, so loaded metadata is cached 2013-10-09 08:45:16 -07:00
Chris Moeller 2837b12d32 Fix unsigned reporting, and can't match unsigned type declaration exactly 2013-10-07 11:26:23 -07:00
Chris Moeller 74b6188772 Implemented floating point sample format support into CogAudio and all relevant plug-ins 2013-10-05 14:15:09 -07:00
Chris Moeller b16ccd59f7 Fixed bitrate handler 2013-10-05 02:47:25 -07:00
Chris Moeller 7c5eaed629 Added now playing spam hotkey, currently format hard coded 2013-10-04 04:16:09 -07:00
Chris Moeller ec0e45381e Cleaned up most of the warnings, eliminated use of deprecated APIs, and fixed the hotkeys crashing. 2013-10-03 01:00:58 -07:00
Chris Moeller 4c0cf34250 More ReplayGain support, now with metadata handling, but only if the metadata is already loaded 2013-10-02 02:30:04 -07:00
Chris Moeller 6ea103b1c3 Implemented ReplayGain support, so far only in the HighlyComplete component. 2013-10-01 23:00:16 -07:00
Chris Moeller b9d451c96f Corrected base classes to silence warnings 2013-09-29 18:59:04 -07:00
Chris Moeller 25bf55459e Silenced some warnings 2013-09-29 17:27:55 -07:00
mscott 11352ab6de Enhancements to File Tree (contextual menu, sort order, etc.).
Added File Tree contextual menu (Add to Playlist, Show in Finder, etc.).
File Tree and additions to play list now use Finder sort order.
File Tree Root can be set via its popup menu or drag and drop from File Tree.
Alias names are now shown in File Tree (aliases are still resolved).
Added option to skip reading of cue sheets when adding a folder to play list.
2009-08-16 11:49:34 -05:00
vspader 7e3f257090 Fix shuffle. 2009-03-24 20:12:52 -07:00
vspader 7819210b96 Added interface for shuffle albums mode. 2009-03-09 21:04:46 -07:00
vspader 7491fd3bf0 Support for album art metadata. 2009-03-08 13:04:09 -07:00
vspader 4c7ee96f76 Added Info Inspector.
Moved Formatters into their own folder.
2009-03-07 14:31:57 -08:00
vspader d2235536c5 Fixed nil sent to NSAttributedString. 2009-03-07 11:52:42 -08:00
vspader 7cbebef352 Fixed up metadata loading so metadata isn't always read when you play. 2009-03-05 20:46:42 -08:00
vspader d6a0b0670e Playback events for last.fm and growl are now done in the background via an operation queue. Removed hack to load metadata for autoplay. Now metadata is reloaded for each file you play. 2009-03-05 20:37:44 -08:00
vspader bbd2c6c7f6 Always accept non-file URLs into the playlist. 2009-03-04 22:56:52 -08:00
vspader 6525d593f2 Fixed indentation. 2009-02-28 22:03:27 -08:00
vspader af6c5f343a Cleaned up logic a little. 2009-02-28 14:40:30 -08:00
vspader 03937f480b Cleaned up modified add behavior. 2009-02-28 14:22:33 -08:00
vspader 606cdef1d0 Fixed last commit. 2009-02-28 12:53:24 -08:00
vspader 3cd7402d3d Re-request the next stream when the shuffle/repeat mode changes. 2009-02-28 12:26:43 -08:00
vspader fda5d50712 If you change the playlist near the end of a song, it should now play the correct song. 2009-02-28 10:57:21 -08:00
vspader 489063ad33 Register defaults for shuffle/repeat. 2009-02-28 10:18:56 -08:00
vspader df2fa22a93 Shuffle/Repeat are now remembered. 2009-02-28 10:06:21 -08:00
vspader 3b9d20fdc5 Fixed sorting for non-0 padded files. 2009-02-28 09:41:37 -08:00
vspader c902c96a19 Fixed shuffle images. 2009-02-27 22:40:50 -08:00
vspader c6dbeb64ca Rearrange order of evaluation so URL is not dereferenced for file URLs unless there is no metadata. 2009-01-18 08:00:39 +00:00
lmsilva dda74d0608 fixed seek slider from becoming active & disabling it when STOP occurs 2008-11-21 15:14:23 +00:00
vurlix 38e6e9af62 fix some bugs reported by the clang static analyzer 2008-08-26 17:45:16 +00:00
vspader f53bfc861d Side pane say what? 2008-06-21 04:05:30 +00:00
vspader 32a5c7257f Slightly improved file-tracking playlist entry. Now will default to the last URL it looked up/received of the file if the path is no longer found, which helps in the case where a network share was disconnected. 2008-05-21 11:27:01 +00:00
vasfed 584710ffb1 Changed playlist behavior preferences to be pop-up buttons with choices 2008-05-18 09:38:53 +00:00
vasfed f9f0891f6c Fixed a bug in APL plugin with image files containing # in name 2008-05-18 08:04:46 +00:00
vasfed e063790e93 Updated APL plugin to use new protocol
Added support for behavior modifiers on addition/opening of files
Added Command+Control as modifier for open/enqueue
2008-05-09 21:24:49 +00:00
vspader 23124f7792 Fixed bug when play on add is enabled and the playlist is empty. 2008-05-04 22:29:02 +00:00
vspader 10669a2db3 Added preference for begin playback on add and clear on add. 2008-05-03 16:01:27 +00:00
vspader 345e57698f Cog now begins playback and clears the playlist when adding songs. 2008-05-03 15:15:45 +00:00
vspader 7314c6cba1 Fixed bug with loading non-multitrack files. 2008-03-24 12:31:55 +00:00
vspader 0a1630db7e Fix for multi-track files and the file move watching. 2008-03-15 04:45:37 +00:00
vspader fe3fd5cb21 Added file tracking to file playlist entries using filerefs. 2008-03-13 01:43:33 +00:00
vspader 0da67249fc Fixed up playlist context menu.
Removed album/artist name from menu thanks to Fiona Apple and some clever person who thought it would be funny to shove the entire album name into the tag.
2008-03-11 23:31:19 +00:00
vspader dbfa0363de Some cleanup and fixes for the toggle menu. 2008-03-09 02:53:13 +00:00
vspader 208065494c Fix for spotlight playlistentry dealloc and added missing fields to playlistentry dealloc. 2008-03-09 02:05:00 +00:00
matthewleon c94d31f6d9 Dealloc for PlaylistEntry seems to shrink memory leak. 2008-03-09 00:22:48 +00:00
vspader 637c0d598e Added transformers for menu item title. There must be a better way... 2008-03-08 23:58:52 +00:00
vspader 3375e15a83 Queue is now a toggle. 2008-03-08 23:57:54 +00:00
vspader 569a3e79cc Fixed scrolling behaviour. 2008-03-04 01:14:51 +00:00
vspader 5346f0dbde Fixed font-size changing. 2008-03-04 01:00:09 +00:00
vspader 79cd625152 Changed year to an NSNumber. Fixed up taglib plugin. Tracks/Years with 0 now show up as nothing. 2008-03-04 00:43:47 +00:00
vspader 16ccf5622d Fixed issues with big big playlists. 2008-03-04 00:35:20 +00:00
vspader 9af41d7542 A few taglib fixes. Reads id3v2 before ape for mp3 files. Added AutoReleasePool to backgrounded method. 2008-03-03 03:26:19 +00:00
vspader cf46d16a56 Remove concurrency! Mwahaha! Also, moved updateTotalTime so it's done after all operations. Now it's actually usable while loading time. 2008-03-03 02:25:52 +00:00
vspader 276176a80c Updated playlistLoader to be CONCURRENT! Mwahahaha!
total time is now automatically updated by observing PlaylistController.arrangedObjects.length
2008-03-03 02:09:56 +00:00
vspader 671d7021ae Added Current Entry Object controller to fix issue with currently playing not being updated when loading. 2008-03-02 20:03:22 +00:00
matthewleon 92be178bf2 Playlist entries are now processed on main thread. 2008-03-02 10:51:37 +00:00
matthewleon d84a12d596 Hack to fix display of newly added songs (no idea why this is should be necessary, maybe something wrong with KVO). 2008-03-01 19:56:10 +00:00
matthewleon 8dee65b8b6 Small threading memory leak fix. 2008-03-01 18:38:47 +00:00
matthewleon 4168bb43eb Redid threading for reading file info and metadata. Still a bit buggy. 2008-03-01 18:29:14 +00:00
matthewleon 666d803897 Code cleanup. 2008-03-01 15:04:46 +00:00
vspader d7826ee144 Clear stopAfter status when changing the song. Fixed bug where status wasn't dependant on stopAfter. 2008-03-01 03:35:27 +00:00
vspader 3cdca94207 Split status up into bunches of properties and made it a readonly property. 2008-03-01 03:29:21 +00:00
vspader 6c5ecf3701 Updated PlaylistView so status column header is blank. 2008-03-01 02:48:12 +00:00
matthewleon 23396a9747 More PlaylistEntry cleanup. 2008-02-29 21:56:01 +00:00
matthewleon 9e8173bc74 PlaylistEntry cleanup. 2008-02-29 21:54:09 +00:00