Commit graph

361 commits

Author SHA1 Message Date
Christopher Snowhill
7cea254f4c Implement framework for dynamic metadata updates
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-08 21:21:53 -08:00
Christopher Snowhill
b927f4c02b Replace more NSDictionary use with literals
Use literals to initialize fixed NSDictionary objects in various places.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-08 19:56:04 -08:00
Christopher Snowhill
6120fce40a Metadata: Fix length field on track reloading
This fixes the dynamic length field not updating correctly after a track
info reload, which breaks the seekbar when reloading the current track.

Fixes #227

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-07 03:03:39 -08:00
Christopher Snowhill
95fb65527f Playlist Entry / SQLite: Add channel config field
Add channel config field to PlaylistEntry and the SQLite backing store.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-07 01:11:30 -08:00
Christopher Snowhill
85c7073649 Reformat my own source code with clang-format
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-06 21:49:27 -08:00
Christopher Snowhill
6d9f1be7ea Playlist Controller: Stop when deleting current
When deleting the currently playing track, stop playback, because the
player engine doesn't like dealing with the current playing track not
actually having a playlist reference to go with it. Better stop playback
instead, as a safety check.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-04 19:54:43 -08:00
Christopher Snowhill
85fd3836c0 Debug logging: Added logging of playback and tags
Added a logging method that indicates starting playback of a given URL,
and added a debug build only logging of every metadata load event.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-01-29 16:34:43 -08:00
Christopher Snowhill
2541633c17 Playlist Entry: Display full URL for remotes
For Playlist Entries that are not File URLs, return the full absolute
URL for path queries, so the playlist path column will show the full
URL instead of a useless reduced path string.

Fixes #214.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-01-27 00:11:14 -08:00
Christopher Snowhill
d8b16e44c7 SQLite Store / Drag and Drop: Now correctly store changes made by dragging playlist entries around to the database 2022-01-24 06:07:13 -08:00
Christopher Snowhill
8e5c62f185 Info Inspector: Now displays ReplayGain info as tooltip for status text 2022-01-22 20:44:06 -08:00
Christopher Snowhill
b54b10861b Playlist View: Enable column text tightening before truncation 2022-01-22 15:03:30 -08:00
Christopher Snowhill
5bf5830b17 Info Inspector: Now displays ReplayGain tag presence 2022-01-21 23:49:07 -08:00
Christopher Snowhill
9bfc51cbf4 Info Inspector: Add field to display whether a track has an embedded CUE Sheet 2022-01-21 23:19:32 -08:00
Christopher Snowhill
0c4d5002f6 Metadata: Now supports storing cuesheet tags and encoding quality status properties 2022-01-21 22:38:54 -08:00
Christopher Snowhill
2165d37144 Metadata: Now supports disc number field where possible 2022-01-21 21:49:17 -08:00
Christopher Snowhill
bde3f552d9 Drag and Drop: Fixed jank with dragging, especially undo and redo 2022-01-21 16:11:24 -08:00
Christopher Snowhill
391fc474f3 Drag and Drop: Made DND undo possibly less janky 2022-01-21 15:00:27 -08:00
Christopher Snowhill
297b7b2909 Playlist View: Fix default sorting and playlist refreshing, which fixes playlist search bugging out 2022-01-21 00:16:29 -08:00
Christopher Snowhill
0f90dd3b3e Playlist View: Support undoing and redoing Drag and Drop operations within the playlist 2022-01-20 21:48:23 -08:00
Christopher Snowhill
c07b268288 Playlist View: Adjust threshold for expansion tooltip assignment 2022-01-20 18:18:05 -08:00
Christopher Snowhill
4e918fc868 Playlist View: Refresh playlist entries when queue is emptied 2022-01-20 17:58:24 -08:00
Christopher Snowhill
973664f3b3 Playlist View: Correctly refresh playlist tooltips when queue is manipulated 2022-01-20 17:54:02 -08:00
Christopher Snowhill
7cc4ee22f7 Playlist View: Fix centering and sizing of status icons 2022-01-20 17:37:56 -08:00
Christopher Snowhill
8c63e8fde3 Playlist View: Now using monospaced numbers on all fields 2022-01-20 17:26:30 -08:00
Christopher Snowhill
b317bfcdc2 Playlist View: Remove some bugs in the sizing 2022-01-20 17:02:34 -08:00
Christopher Snowhill
db867c841c Playlist View: Add status tooltip to status icon 2022-01-20 15:54:40 -08:00
Christopher Snowhill
a4c3509e75 Playlist View: Refresh entire rows on status changes to refresh tooltips 2022-01-20 15:51:24 -08:00
Christopher Snowhill
b78e55a50c Playlist View: Fix status message tooltip 2022-01-20 15:39:29 -08:00
Christopher Snowhill
2b4de1033d Playlist View: Replace Cell-based table with View-based table. It needs some work still, though. 2022-01-20 14:59:26 -08:00
Christopher Snowhill
6f0f9d7617 Playlist Entry: Made copy contsructor proper 2022-01-20 14:54:42 -08:00
Christopher Snowhill
ba5f5b8694 Playlist Entry: Made object copyable 2022-01-19 23:23:17 -08:00
Christopher Snowhill
684951bdc0 Change a bunch of NSArray declarations to const collection literals 2022-01-18 18:12:57 -08:00
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