Commit Graph

86 Commits (fda16cc4015e5187deebfb48afb521950b9f41a2)

Author SHA1 Message Date
Christopher Snowhill 39f4d09c1a Use NSNumber Literals as much as possible
Replaced a bunch of [NSNumber numberWith...] with NSNumber Literals.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-06-17 06:39:02 -07:00
Christopher Snowhill 8db2e41049 [Event Handling] Add context to all observers
Add context field to all observers that support it, in case it's useful.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-06-15 16:47:43 -07:00
Christopher Snowhill e5ff6cd23d [Position Slider] Fix invalid duration setting
Fix NaN condition occurring when an invalid file is played.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-06-13 02:01:26 -07:00
Christopher Snowhill 7c8a270ed2 [Dialogs] Renamed HDCD toolbar items to be unique
The two toolbars seem to require unique identifiers for each of their
items, even when they're separate toolbars in separate windows.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-06-11 13:37:51 -07:00
Christopher Snowhill 0ba766023e Playlist/Time: Simplify font initialization
Apparently this simpler API already existed on a minimum of 10.11 for
creating a system font with monospaced digits.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-06-03 16:46:37 -07:00
Christopher Snowhill f9040dd1d3 Fixed Mini Window appearing topmost on startup
This stupid setLevel default was something suggested when making a
window a drag target, and I was observing a setLevel for a window
control, not for a window itself. I should not have set that in the
first place.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-21 20:31:35 -08:00
Christopher Snowhill 763f4c8cd5 Shrink the time field on macOS 10.13 and older
Since 10.13 doesn't want to observe the auto sizing attribute of the
field properly, gotta use the tiny font size that the field is already
configured to use.

Should fix #243

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-21 16:51:46 -08:00
Christopher Snowhill 7ef583340d Equalizer: Replace dialog with custom job
New custom equalizer dialog, painstakingly hand assembled.
2022-02-13 11:05:32 -08:00
Christopher Snowhill 421eb8ed82 Replace playback buttons with SF Symbols on 11.0+
On macOS Big Sur and newer, replace the playback buttons with system
symbols.

Should fix #96

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-10 01:18:34 -08:00
Christopher Snowhill 60a7052868 Fix volume control tooltip appearance on the left
Increasing the threshold for the width of the tooltip to the right of
its intended location to a more generous value, makes it appear on the
left side sooner rather than later, but should fix positioning issues.

Fixes #226

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-09 22:51:39 -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 61a30c959c Bundled resources: Use NSBundle interface
These methods should use NSBundle, rather than CF* C functions

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-01 14:40:02 -08:00
Christopher Snowhill 54ccad7c5d Volume Slider: Fix appearance of tooltip
Tooltip should appear on the left side when the volume bar is close to
the right side of the screen.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-01-30 14:05:12 -08:00
Christopher Snowhill 808710b881 Volume Control: Fix linear 100% range control
Range is now linear on 100%, like it should be.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-01-30 00:18:07 -08:00
Christopher Snowhill 77a079bd53 Mini Window: Fix saving and restoring position
Fixes #212

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-01-29 18:00:34 -08:00
Christopher Snowhill abffadef4e Equalizer: Prevent circular application of presets
This prevents the apply presets function from resaving the preset number
and retriggering itself repeatedly, which would cause a crash.

Fixes #223

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-01-29 17:27:10 -08:00
Christopher Snowhill e695e36599 Equalizer: Store custom presets on change
Store custom presets on value changes, on half second intervals, as the
listener observes the user changing the settings.

Fixes #222

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-01-29 17:21:43 -08:00
Dzmitry Neviadomski 050a3d3112 Scale VolumeSlider linearly if volume is limited.
Fixes #198
2022-01-29 05:57:19 +03:00
Christopher Snowhill 9caf704630 Equalizer: Better handle interpolating presets
The old quadra method was broken, too. Now it uses a simple linear
difference sliding scale for the extra points, which seems to work much
better for the 20 kHz band. And the 16 kHz band doesn't get predicted to
heck any more, either.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-01-27 14:30:14 -08:00
Christopher Snowhill 4567df54b7 Playback Buttons: Correctly assign tooltips on button changes 2022-01-24 22:11:54 -08:00
Christopher Snowhill 4bc3a2a1f3 Playback Buttons: Made stop button optional, hidden by default 2022-01-24 22:05:00 -08:00
Christopher Snowhill fa67b79b22 Mini Window: Window now acts as a drop target for files, sending them to the end of the playlist 2022-01-24 21:30:36 -08:00
Christopher Snowhill e471945a08 Equalizer: Implemented new presets contributed by Oleg-Chashko 2022-01-24 20:01:22 -08:00
Christopher Snowhill 9e42df41bd Equalizer: Adjust dialog somewhat again, changing the splitter style, and cleaning up the effects of changing the bands manually, and bringing back the Flatten button 2022-01-23 22:34:41 -08:00
Christopher Snowhill f35c632f00 Equalizer: Fix the app switching presets in the background versus the open equalizer dialog
This should fix #198
2022-01-23 20:40:48 -08:00
Christopher Snowhill 26e0e0cead HDCD Decoding: Add HDCD indicator 2022-01-20 23:53:45 -08:00
Christopher Snowhill 3a2d360d24 Play Time Field: Rename function used to count digits 2022-01-20 22:33:15 -08:00
Christopher Snowhill 6e68494f09 Play Time Field: Now pads with spaces up to the duration size plus hyphen, as necessary 2022-01-20 22:30:31 -08:00
Christopher Snowhill 71347aab83 Play Time Field: Changed how control achieves monospace numbers, and changed font 2022-01-20 22:03:59 -08:00
Christopher Snowhill f2feb3bcd7 Equalizer: Fix applying equalizer presets on automatic track change 2022-01-19 01:23:59 -08:00
Christopher Snowhill 2c7d083588 Equalizer: JSON parser can now read the equalizer preset items out of order, and supports an 'altGenres' field, which should be an array of strings, alternate genre names to match for a given preset 2022-01-18 20:24:52 -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 96166f9e8d Equalizer: Hide stock control's 'Flatten EQ' button 2022-01-17 23:19:18 -08:00
Christopher Snowhill 7a0c1d230e Volume control: Make preamp optional, defaulting to a limit of 100% volume 2022-01-17 22:41:26 -08:00
Christopher Snowhill 4aa6ef0b14 Equalizer: Load presets when first used by genre tracking if dialog hasn't been opened yet 2022-01-17 21:16:39 -08:00
Christopher Snowhill c56852437d Equalizer: Track band count changes 2022-01-17 21:10:57 -08:00
Christopher Snowhill 83ad969d9b Equalizer: Add option for presets to track the music genre tags 2022-01-17 20:43:08 -08:00
Christopher Snowhill 147de11d89 Equalizer: Interpolate to reach bands outside of presets 2022-01-17 18:45:59 -08:00
Christopher Snowhill dbc0698cee Equalizer: Implemented stock presets 2022-01-17 06:37:38 -08:00
Christopher Snowhill 87c771c67c Equalizer: Add option to toggle the equalizer on or off 2022-01-17 01:22:15 -08:00
Christopher Snowhill 71b2f7a4f2 Implement graphic equalizer 2022-01-16 07:32:47 -08:00
Christopher Snowhill 669c52e63d Use numeric minus sign for time remaining 2022-01-16 00:18:29 -08:00
Christopher Snowhill 297b6247cc Show volume slider tooltip on the left side of the slider if it would otherwise run off the screen 2022-01-16 00:15:56 -08: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
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
Dzmitry Neviadomski e5e9dffe0f Update Mini Player minimum width to lower value. 2021-03-03 22:47:31 +03:00
Dzmitry Neviadomski ac44ae12be Mini window UI fixes.
Fix Toolbar customization panel overlapping window.
Fix minimum size to not exceed screen width.
2021-02-28 18:48:15 -08:00
Dzmitry Neviadomski 85e27e7496 Rework playback shortcuts again. 2021-02-19 08:23:13 +03:00
Dzmitry Neviadomski 18896dcc3e Rework Titlebar.
Show Album art in info button.
2021-02-19 02:58:57 +03:00
Dzmitry Neviadomski b08263159e Show Now Playing bar only when needed.
Fixes #101
Fixes #105
2021-02-19 01:07:05 +03:00