Jonas Kvinge
5154d7ac84
Song: Rename MP3 to MPEG
2023-10-21 04:59:33 +02:00
Jonas Kvinge
9211b6f0c0
GstStartup: Remove macOS libsoup workarounds
2023-10-21 03:05:04 +02:00
Strawbs Bot
ab6a0ed6dd
Update translations
2023-10-21 01:33:19 +02:00
Jonas Kvinge
bf52afa21d
GstStartup: Add back LIBSOUP3_LIBRARY_PATH
2023-10-15 07:46:49 +02:00
Jonas Kvinge
fda56dda25
main: Use Utilities::SetEnv
2023-10-14 23:18:16 +02:00
Jonas Kvinge
310b7b9065
CollectionQuery: Add F for float
2023-10-14 22:08:50 +02:00
Jonas Kvinge
cd534bbda7
CMake: Remove USE_BUNDLE_DIR
2023-10-14 03:30:09 +02:00
Jonas Kvinge
1a66eaf7bf
GstStartup: Refactor environment code
2023-10-14 03:29:54 +02:00
Jonas Kvinge
54cfb2bbc4
main: Don't override library paths
2023-10-14 03:28:28 +02:00
Jonas Kvinge
99a5aee8b3
GstEnginePipeline: Change debug logging for active/inactive
2023-10-13 23:38:19 +02:00
Jonas Kvinge
89d2a23dac
CollectionBackend: Use QString::arg()
2023-10-13 23:06:29 +02:00
Jonas Kvinge
ee1bf47f5c
DeviceInfo: Simplify hint
2023-10-13 22:58:53 +02:00
Jonas Kvinge
13ac20f8b3
Add/remove reference for parameters
2023-10-13 22:58:18 +02:00
Jonas Kvinge
adef05bbdf
Use QString::arg()
2023-10-13 22:55:20 +02:00
Jonas Kvinge
f03ff452b8
SavePlaylistsDialog: Add parent to ctor
2023-10-13 22:53:27 +02:00
Jonas Kvinge
c39489060b
Mpris2: Add static_cast
2023-10-13 22:52:36 +02:00
Jonas Kvinge
002fa8f4aa
Fix mismatched definition
2023-10-13 22:49:20 +02:00
Jonas Kvinge
d2c747258c
Song: Add MPC to FiletypeByMimetype and FiletypeByDescription
2023-10-12 01:16:40 +02:00
Jonas Kvinge
f542f1c854
GstEnginePipeline: Remove volume sync for Auto
...
Workaround crash in #1123
2023-10-10 23:17:03 +02:00
Jonas Kvinge
33041ffa75
GstEnginePipeline: Delay seek when when resetting next URI
...
When seeking after the next URI is set, we set the state to READY to switch the URI back. The seek in after going to ready sometimes does not work, delay the seek to workaround this.
Fixes #1258
2023-10-10 23:00:11 +02:00
Jonas Kvinge
1493164df9
CollectionQuery: Strip off whitespaces after colon and simplify code
...
Fixes #1290
2023-10-10 19:15:20 +02:00
Strawbs Bot
8ffef558ff
Update translations
2023-10-10 01:37:19 +02:00
Jonas Kvinge
2706529006
DeviceDatabaseBackend: Add missing ebur128 fields
2023-10-10 01:27:39 +02:00
Jonas Kvinge
7e331a2055
DeviceManager: Fix creating connected device
2023-10-10 01:26:47 +02:00
Jonas Kvinge
505329730c
Improve lyrics match
2023-10-08 23:55:05 +02:00
Jonas Kvinge
eee0c40132
Playlist: Use InternetServicePtr
2023-10-07 17:05:51 +02:00
Jonas Kvinge
567bad33e1
Playlist: Use PlaylistItemPtr
2023-10-07 17:05:36 +02:00
Jonas Kvinge
b5c0e93989
FancyTabWidget: Use QApplication::style(), not style()
2023-10-07 15:36:49 +02:00
Jonas Kvinge
ac17df2a86
PlaylistContainer: Remove unused signals
2023-10-07 15:34:37 +02:00
Jonas Kvinge
a9a5899252
FancyTabWidgetProxyStyle: Create proxy style from application style
2023-10-07 15:23:41 +02:00
Jonas Kvinge
395d85c1b4
Move PlaylistProxyStyle to it's own file
2023-10-07 15:16:39 +02:00
Jonas Kvinge
52ba1ce17f
PlaylistView: Fix build with Qt 5
2023-10-07 15:04:00 +02:00
Jonas Kvinge
604a246fe8
PlaylistProxyStyle: Use CE_HeaderLabel instead of CE_Header
2023-10-07 14:50:46 +02:00
Jonas Kvinge
e172c4871c
PlaylistView: Create proxy style based on application style
...
Fixes #1275
2023-10-07 14:48:40 +02:00
Jonas Kvinge
76fa4745d0
GstEnginePipeline: Only update last known position when possible
...
Fixes flaky seeking where gst_element_query_position() returns -1 when seeking.
2023-10-07 02:47:12 +02:00
Strawbs Bot
6f4d26e9d3
Update translations
2023-10-04 00:33:42 +02:00
Jonas Kvinge
f40f43861d
EngineBase: Use enum class for TrackChangeType
2023-10-03 20:18:52 +02:00
Jonas Kvinge
79c69e1b1e
CollectionWatcher: Match extension case-insensitive
2023-10-02 17:39:10 +02:00
Jonas Kvinge
8fc95e08dc
CollectionWatcher: Ignore compressed files
...
Fixes #1274
2023-10-02 17:23:47 +02:00
Strawbs Bot
c10a64f08a
Update translations
2023-09-25 02:37:58 +02:00
Jonas Kvinge
e3666e5bf3
Remove OTHER_SOURCES
2023-09-24 19:53:49 +02:00
Jonas Kvinge
6a018f3e25
MainWindow: Add sponsorship mesage
2023-09-24 15:09:20 +02:00
Jonas Kvinge
ab26d422e9
MainWindow: Update rosetta message
2023-09-24 15:08:57 +02:00
Jonas Kvinge
f4e18fb87c
MessageDialog: Set minimum width
2023-09-24 15:08:35 +02:00
Jonas Kvinge
0ef50e1b6d
Remove unused variables
2023-09-23 23:55:49 +02:00
Jonas Kvinge
8393cdb2de
Add lyrics from elyrics.net and lyricsmode.com
2023-09-20 19:02:28 +02:00
Jonas Kvinge
da19272eb6
HtmlLyricsProvider: Rename GetUrl to Url
2023-09-20 17:39:44 +02:00
Jonas Kvinge
60fb83d770
HtmlLyricsProvider: Remove <script> tags and content between
2023-09-20 17:38:45 +02:00
Jonas Kvinge
1c90b03476
Add HTML lyrics provider
2023-09-20 01:09:08 +02:00
Jonas Kvinge
50502ce720
Add azlyrics.com lyrics provider
2023-09-19 22:47:07 +02:00
Jonas Kvinge
39f9d02454
Add songlyrics.com lyrics provider
2023-09-19 16:56:10 +02:00
Jonas Kvinge
cdb4980337
CollectionBackend: Don't expire unavailable songs part of playlists
2023-09-17 21:54:27 +02:00
Jonas Kvinge
e201f71a74
CMake: Simplify Qt detection
2023-09-16 14:55:42 +02:00
buckmelanoma
7e684885cf
Capitalize column names
...
Capitalize column names for consistency with OS
2023-09-15 15:33:07 +02:00
Jonas Kvinge
7cd6f372e6
MacOsDeviceLister: Move kind variable inside #ifdef HAVE_AUDIOCD
2023-09-05 23:42:32 +02:00
Jonas Kvinge
dc01a18b87
Remove lyrics.com lyrics provider
...
Does not provider full lyrics in API. The URL we used only points to a page with "Get the lyrics for <song> at Lyrics.com" now.
2023-08-31 23:22:22 +02:00
Strawbs Bot
7be0e284c2
Update translations
2023-08-31 22:52:37 +02:00
Jonas Kvinge
6dd79d5b8f
MainWindow: Bound volume between 0 and 100
...
Fixes #1262
2023-08-30 21:43:52 +02:00
Jonas Kvinge
45ad84a9bc
Fix build with macOS < 12.0
2023-08-27 13:54:23 +02:00
Jonas Kvinge
59f716563f
QSearchField: Use static_cast
2023-08-27 01:15:01 +02:00
Jonas Kvinge
6815f8c9b7
MacOsDeviceFinder: Rename kAudioObjectPropertyElementMaster to kAudioObjectPropertyElementMain
2023-08-27 01:14:42 +02:00
Jonas Kvinge
8e5360ac38
MacOsDeviceLister: Rename kIOMasterPortDefault to kIOMainPortDefault
2023-08-27 01:14:24 +02:00
Jonas Kvinge
aa6809ad5f
DeviceManager: Use pointer directly
2023-08-27 01:14:00 +02:00
Jonas Kvinge
d8a7d427c3
BehaviourSettingsPage: Simplify Load
2023-08-27 01:12:38 +02:00
Jonas Kvinge
bc1b45d912
MainWindow: Fix build on macOS
2023-08-27 00:09:49 +02:00
Jonas Kvinge
50c5283599
BehaviourSettingsPage: Use QSystemTrayIcon::isSystemTrayAvailable directly
2023-08-26 21:21:31 +02:00
Jonas Kvinge
02ef65bcfd
MainWindow: Only keep running when system tray icon is enabled
2023-08-26 21:20:50 +02:00
Jonas Kvinge
904245bb21
keymapper_x11: Qt::Key_mu renamed Qt::Key_micro from Qt 6.7
2023-08-26 21:15:26 +02:00
Jonas Kvinge
bfb95d503a
ErrorDialog: Clear messages on close instead of hide
...
Fixes an issue where the error dialog is cleared because the hide event gets triggered.
2023-08-07 19:38:48 +02:00
Jonas Kvinge
d1b4736ef9
ErrorDialog: Give name to layouts
2023-08-07 19:36:20 +02:00
Jonas Kvinge
e56e58b634
GstEnginePipeline: Always set use-buffering
2023-08-06 13:44:57 +02:00
Jonas Kvinge
fed5b6b695
GstEnginePipeline: Rename ebur128 volume variable
2023-08-06 13:36:25 +02:00
Jonas Kvinge
acda7c13b2
GlobalShortcutsBackendMacOSPrivate: Replace boost::noncopyable with Q_DISABLE_COPY
2023-08-04 03:36:01 +02:00
Jonas Kvinge
7d5c7f8493
MacOsDeviceLister: Replace BOOST_SCOPE_EXIT with QScopeGuard
2023-08-04 03:36:01 +02:00
Jonas Kvinge
f81bd26649
MergedProxyModelPrivate: Formatting
2023-08-03 20:03:48 +02:00
Jonas Kvinge
2a407bfe47
ScopedTransaction: Replace boost::noncopyable with Q_DISABLE_COPY
2023-08-03 19:58:16 +02:00
Jonas Kvinge
f70f126f76
AlsaDeviceFinder: Replace BOOST_SCOPE_EXIT with QScopeGuard
2023-08-03 17:29:42 +02:00
Jonas Kvinge
f06591fde8
Database: Replace BOOST_SCOPE_EXIT with QScopeGuard
2023-08-03 17:29:11 +02:00
Strawbs Bot
e0c9a9dc17
Update translations
2023-08-03 01:03:54 +02:00
Dakes
7aa7cdf6f3
Add filtering of numerical cols to collection
...
CollectionFilterWidget: Updated the tooltip, to reflect the changes.
CollectionQuery: Add parsing for SQL operators and insert right SQL
"where" searches.
Song: Add list of numerical columns
playlistfilterparser.cpp/FilterParser: move time and rating parsing
functions to new file:
searchparserutils.cpp: Contains common code used to parse search terms
in playlist and collection filters.
2023-08-02 16:52:27 +02:00
Dakes
82a8a890de
PlaylistContainer: Add tooltip to search field
2023-08-02 16:52:27 +02:00
Dakes
f8df901963
PlaylistFilter: Add playcount and skipcount
2023-08-02 16:52:27 +02:00
Jonas Kvinge
8b08d1d599
Mpris2: Always use QGuiApplication::desktopFileName
2023-08-02 15:27:24 +02:00
Jonas Kvinge
f3ddba3edc
main: Set desktop filename
...
Fixes #1254
2023-08-02 14:37:24 +02:00
Jonas Kvinge
acbec6db7e
main: Set application display name
2023-08-02 14:25:40 +02:00
Jonas Kvinge
e273d64be3
Player: Always stop after 100 errors
...
Fixes #1199
2023-08-01 16:59:43 +02:00
Jonas Kvinge
2a90256d32
GstEnginePipeline: Disable volume sync on Windows
...
Fixes #1220
2023-08-01 16:39:57 +02:00
Jonas Kvinge
560712db21
ebur128analysis: Check for valid channel-mask
2023-07-30 03:18:48 +02:00
Jonas Kvinge
483b42d2b8
GstStartup: Use directsoundsink as primary sink
2023-07-29 22:54:49 +02:00
Dakes
f5a55abf58
Mpris2: Add new property to read/write the rating
2023-07-27 11:24:19 +02:00
Jonas Kvinge
0bc94b90d7
SmartPlaylistSearchTerm: Handle unrated (-1) as zero
...
Fixes #1244
2023-07-26 01:45:28 +02:00
Strawbs Bot
9ed4bd9366
Update translations
2023-07-24 09:46:20 +02:00
Jonas Kvinge
d3352e476f
Remove `< 0` check on unsigned
2023-07-21 07:17:58 +02:00
Jonas Kvinge
4b4c5fc0ab
Use const reference for `AlbumCoverLoaderOptions::Types`
2023-07-21 07:17:26 +02:00
Jonas Kvinge
38b9c7c38a
MusixmatchCoverProvider: Add const
2023-07-21 07:16:32 +02:00
Jonas Kvinge
c71ce41c83
LastFMImport: Move variable declaration
2023-07-21 07:16:23 +02:00
Jonas Kvinge
4cd030215d
Transcoder: Remove useless empty check
2023-07-21 07:16:08 +02:00
Jonas Kvinge
2ce5d6f727
Database: Add missing const
2023-07-21 07:15:55 +02:00
Jonas Kvinge
b55a0df8e1
CollectionView: Remove useless variable
2023-07-21 07:15:42 +02:00
Jonas Kvinge
ee5fa23a7a
LocalRedirectServer: Remove unused https variable
2023-07-21 07:15:08 +02:00
Jonas Kvinge
75ab6f25f4
Check return of QSqlQuery::prepare
2023-07-21 07:12:20 +02:00
Jonas Kvinge
eaed82c9b2
CollectionItemDelegate: Remove check for nullptr, already done
2023-07-21 07:11:21 +02:00
Jonas Kvinge
2a4be6fcd7
BoomAnalyzer: Move variable declaration
2023-07-21 07:10:31 +02:00
Jonas Kvinge
e6198500f7
BlockAnalyzer: Remove useless continue
2023-07-21 07:10:17 +02:00
Jonas Kvinge
7db36c83c1
MainWindow: Don't use our network manager for Qt Sparkle
2023-07-21 06:20:46 +02:00
Jonas Kvinge
0e1921698c
TidalUrlHandler: service is already a pointer
2023-07-21 06:11:16 +02:00
Jonas Kvinge
95eed1ecec
Fix QtConcurrent::run build with Qt 5
2023-07-21 06:10:44 +02:00
Jonas Kvinge
2e61235403
Application: Use shared pointers
...
Fixes #1239
2023-07-21 05:55:24 +02:00
Jonas Kvinge
d6b53f78ab
Cleanup includes
2023-07-21 05:25:57 +02:00
Jonas Kvinge
a2c7ff63df
Formatting
2023-07-21 05:11:27 +02:00
Roman Lebedev
9fb15545bd
GstEnginePipeline: Perform EBU R 128 Loudness Normalization in floating-point
2023-07-19 03:07:22 +02:00
Jonas Kvinge
56180ca419
LocalRedirectServer: Remove https option and gnutls dependency
2023-07-18 19:44:45 +02:00
Jonas Kvinge
dc65753a0b
ebur128analysis: Remove extra semicolon
2023-07-16 23:26:17 +02:00
Jonas Kvinge
d8857d8e72
Add missing QMetaType include
2023-07-12 18:13:02 +02:00
Jonas Kvinge
fdc3e0a5f5
LyricsSearchResult: Add missing QList include
2023-07-12 18:12:48 +02:00
Jonas Kvinge
8f7180eb6c
Song: Pass double by value
2023-07-12 18:12:08 +02:00
Jonas Kvinge
8945602eae
Song: Add missing newlines between functions
2023-07-12 18:11:43 +02:00
Jonas Kvinge
7826f77425
Formatting
2023-07-12 16:27:59 +02:00
Jonas Kvinge
00372e85c5
FilterParser: Silence double / float warning
2023-07-12 16:27:28 +02:00
Jonas Kvinge
a1ffc5c33b
ebur128analysis: Rename dsc variable
2023-07-12 16:26:39 +02:00
Jonas Kvinge
8a44a41abb
ebur128analysis: Initialize variables to silence warnings
2023-07-12 16:26:17 +02:00
Jonas Kvinge
23f0c56eba
Song: Move ebur128 functions
2023-07-12 16:23:27 +02:00
Jonas Kvinge
3d25863ccb
CollectionWatcher: Make PerformEBUR128Analysis const
2023-07-12 16:22:17 +02:00
Roman Lebedev
4bd993b1e3
GstEngine/GstEnginePipeline: support gap-less playback w/ loudness-normalizing gain
...
Ok, it does appear that it is that simple.
In principle this (even the non-update case) results in volume jumps,
so maybe we'll want gradual gain change...
Notably, i thought we'd always seek if the pipeline
was already operating on the same URL as the new one,
but apparently only for adjacent songs?
2023-07-12 14:34:04 +02:00
Roman Lebedev
f81816b0cd
EBUR128Analysis: handle channel map
...
Loudness measurement is channel-dependent.
This perhaps matters most for mono audio.
2023-07-12 14:34:04 +02:00
Roman Lebedev
94ab788032
GstEnginePipeline: actually perform (EBU R 128) loudness normalization
...
The magic: if EBU R 128 loudness normalization is enabled,
just insert `volume` GST element into the pipeline
(where ReplayGain would be inserted) and configure it.
We currently don't support changing said gain after the pipeline
was created. We might need to, though, for a number of reasons.
2023-07-12 14:34:04 +02:00
Roman Lebedev
e3a333564a
`GstEngine::Load()`: different loudness-normalizing gain means new pipeline
...
This is a bit of a gotcha, there should be a point (where we seek?)
where we'd be able to change said gain, but for now this is a simple[r]
stop-gap fix.
2023-07-12 14:34:04 +02:00
Roman Lebedev
13d6cf201f
Engine: pipe-in the EBU R 128 loudness normalization gain stuff
...
The idea is that Integrated Loudness is an integral part
of the song, much like knowing it's beginning / ending
in the file, and we must handle it the exact same way,
and pipe it through all the way.
At the same time, `EngineBase` knows Target Level (from settings),
and these two combined tell us the Gain needed to normalize the
Loudness of the particular Song (`EngineBase::Load()` does that).
So the actual backend only needs to handle the Volume.
We don't currently support changing Target Level on the fly.
We don't currently support changing Loudness-normalizing Gain on the fly.
This does not handle the case when the song is loaded from URL
and thus the EBU R 128 measures, that exist, are not nessesairly correct.
2023-07-12 14:34:04 +02:00
Roman Lebedev
40ef3191fc
`EBUR128Analysis`: place a `queue` before `appsink`
...
This improves the performance of the analysis (by 2x!),
by offloading non-`libebur128`-computations (i.e. decode-convert)
to a separate thread, thus reducing walltime.
2023-07-12 14:34:04 +02:00
Roman Lebedev
bda2b91c92
Collectionwatcher: sink `PerformEBUR128Analysis()` into `ScanNewFile` & friends
2023-07-12 14:34:04 +02:00
Roman Lebedev
1462bfa297
CollectionWatcher: support EBU R 128 analysis
...
Again, somewhat pretty similar to the existing fingerprint analysis,
we must support performing it both for the new files,
and re-performing it on (some of) already-existing songs,
because it might have been disabled before.
Admittedly, i quite don't like some of this code,
maybe this can be done in a more concise way.
NOTE: this only supports scanning each separate songs.
Should we ever want to support per-album loudness normalization,
this will need massive changes...
2023-07-12 14:34:04 +02:00
Roman Lebedev
bafcb97fa1
Implement `EBUR128Analysis`
...
The most juicy bit!
This is based on Song Fingerprint Analysis,
but here we must know the actual song, and not just the file.
The library supports only interleaved S16/S32/F32/F64,
so we must be sure we insert `audioconvert` into pipeline.
One point of contention here for me, is whether we should
feed the frames to the library the moment we get them
in `NewBufferCallback`, or collect them in a buffer
and pass them all at once. I've gone with the former,
because it seems like that is not the worst choice:
https://github.com/strawberrymusicplayer/strawberry/pull/1216#issuecomment-1610075876
In principle, the analysis *could* fail,
so we want to handle that gracefully.
2023-07-12 14:34:04 +02:00
Roman Lebedev
f905676b1c
CollectionBackend/CollectionWatcher: add `HasSongsWithMissingLoudnessCharacteristics` logic
...
Exactly identical to the "missing fingerprint" logic,
just for the two new fields being added.
2023-07-12 14:34:04 +02:00
Roman Lebedev
0ea81b13b9
BackendSettingsPage: add "EBU R 128 loudness normalization"-related settings
...
Change `Use Replay Gain metadata if it is available` checkbox
into a radio button and add button to disable any loudness normalization.
Add second group(+radio button), for EBU R 128 loudness normalization.
There is only one tunable: Target Level,
defaulting to EBU R 128-recommended `-23 LUFS`.
Care should be taken when changing Target Level!
You probably don't want to go outside of `-30..-16` range!
At least as implemented, there is only support for per-song normalization,
i.e. no per-album normalization.
We do not do anything with loudness range,
although i have some further thoughts about compression.
We do not do anything about clipping / peak level.
NOTE: we do not need `libebur128` to *perform* the audio normalization,
only for the initial analysis.
Co-authored-by: Jonas Kvinge <jonas@jkvinge.net>
2023-07-12 14:34:04 +02:00
Roman Lebedev
9a7949297e
CollectionSettingsPage: add option to toggle `libebur128`-based song analysis
...
Much like song fingerprinting, performing EBU R 128 analysis is optional.
If you will want to enable EBU R 128 loudness normalization
(which does not depend on the presence of `libebur128`!)
you will probably want to enable it, but it is not enabled by default.
There will be support for rescanning songs for which it is missing.
2023-07-12 14:34:04 +02:00
Roman Lebedev
29342fa9ac
CMake: when optional component `EBUR128` is detected, link to `libebur128`
2023-07-12 14:34:04 +02:00
Roman Lebedev
b2c66c9cda
Playlist: add newly-added columns
...
Still mostly boilter-plate-y. It is somewhat interesting to see that info
in playlist view, so add the two fileds as columns.
At least for Integrated loudness, since it's normally negative,
we need to add a specialized Delegate.
2023-07-12 14:34:04 +02:00
Roman Lebedev
44e5c32bcb
ContextView: show newly-added fields
...
And still very boilerplate-y, same as in previous change,
just show the two new Song fields in `Context` view.
2023-07-12 14:34:04 +02:00
Roman Lebedev
e7fc4e7f89
EditTagDialog: show newly-added fields (read-only)
...
Still very boilerplate-y. Add two placeholders to the UI
(in the middle of the existing table, so the diff is a mess),
and populate them with data.
2023-07-12 14:34:04 +02:00
Roman Lebedev
e589486907
Song: add pretty-printers for EBU R 128 Integrated Loudness and Loudness Range fields
...
They end up being used in a quite a number of places later on,
it makes sense to have them in a common place.
Integrated Loudness (LUFS) is *usually* negative, so we really want to
always print a sign. But Loudness Range is non-negative.
I think it makes sense to print one or at most two decimal places for these.
2023-07-12 14:34:04 +02:00
Roman Lebedev
459c4c5d86
Song: add EBU R 128 Integrated Loudness and Loudness Range fields, DB [de]serialization
...
Again, pretty boring boilerplate, rather identical to the handling of
other fields. We do need to be careful when [de]serializing it, though,
we don't want to accidentally loose the `NULL` (i.e. unknown) state!
2023-07-12 14:34:04 +02:00
Roman Lebedev
73c56f038e
SqlQuery: add `BindDoubleOrNullValue()` method
...
To facilitate serializing of the two DB fields added by the previous change.
2023-07-12 14:34:04 +02:00
Roman Lebedev
0a4888f861
Database scheme: add EBU R 128 Integrated Loudness and Loudness Range columns
...
Nothing really ground-breaking, just add those two fields
to each table that already has `bitrate`/`samplerate`/`bitdepth` fields.
Those new fields do need to be able to represent an invalid state
which is their default state, thus they are non-`NOT NULL`.
In principle, the actual field type could be `INTEGER`
(i.e. fixed point w/ 2 fractional digits), but unless we really want to
save a few bytes, it doesn't seem worthwhile.
FIXME: i'm not sure if `device-schema` should be changed too.
2023-07-12 14:34:04 +02:00
Strawbs Bot
0a26c295a0
Update translations
2023-07-02 14:10:05 +02:00
Jonas Kvinge
e66651a4cb
Song: Remove unused application include
2023-07-02 00:29:30 +02:00
Jonas Kvinge
1d9a052870
AlbumCoverChoiceController: Move result declaration
2023-07-02 00:29:19 +02:00
Jonas Kvinge
fa04eb67db
Convert old embedded and unset art in the new schema
2023-06-29 20:21:50 +02:00
Jonas Kvinge
5f4d6dffef
AlbumCoverLoader: Fix loading existing album covers from disk
2023-06-29 00:44:00 +02:00
Jonas Kvinge
b9c7510946
AlbumCoverLoader: Fix Handling default image in finish task
2023-06-28 23:52:39 +02:00
Jonas Kvinge
e690be1bdd
DeviceDatabaseBackend: Fix device schema version mismatch
...
schema_version in device-schema.sql is 4.
2023-06-26 20:06:11 +02:00
Jonas Kvinge
6ed5190276
Remove AudD lyrics
2023-06-25 01:14:12 +02:00
Jonas Kvinge
354b55cbbc
Use QFileInfo::path instead of QUrl::RemoveFilename
2023-06-15 21:06:18 +02:00
Jonas Kvinge
b87a950357
CoverUtils: Only create path if it doesn't exist
2023-06-15 21:04:11 +02:00
Jonas Kvinge
950c236720
AlbumCoverManager: Fix clear and unset actions
2023-06-15 20:35:41 +02:00
Jonas Kvinge
32982be4f2
EditTagDialog: Allow clearing unset cover
2023-06-15 20:34:03 +02:00
Jonas Kvinge
f467331934
Add ifdefs around #pragma GCC diagnostic
2023-06-15 20:10:25 +02:00
Dakes
1deacaecf9
FilterParser: Add ability to filter by rating
...
Playlists can now be filtered by the rating from 0-5 like:
rating:0 rating:<3 rating:!=0
or by a float value, like:
rating:f0.1 rating:>=f0.5
2023-06-09 21:31:15 +02:00
Jonas Kvinge
b0849d21f3
TidalStreamURLRequest: Ignore different track ID
2023-06-08 17:36:24 +02:00
Jonas Kvinge
5b60ea8e77
MainWindow: Remove F2 from edit tag shortcut
...
Fixes #1210
2023-06-07 19:38:59 +02:00
Jonas Kvinge
6d55eb5974
CollectionModel: Fix icon disk cache
2023-06-07 00:51:53 +02:00
Jonas Kvinge
972053c699
MoodbarLoader: Fix loading cached moodbars
2023-06-07 00:50:35 +02:00
Jonas Kvinge
9db7896828
Prefix class for ReloadSettings
2023-06-06 23:20:42 +02:00
Jonas Kvinge
be6f93735d
Simplify if statements
2023-06-06 23:19:45 +02:00
Jonas Kvinge
8ee32dfa88
Add static_cast to silence narrowing conversion warnings
2023-06-06 23:18:49 +02:00
Jonas Kvinge
e2f9411b46
EditTagDialog: Initialize cover_action
2023-06-06 23:17:29 +02:00
Jonas Kvinge
50fcda2763
OSDDBus: Remove use of QImage::isGrayscale, Always expect RGB
...
Fixes #1205
2023-06-06 21:43:05 +02:00
Jonas Kvinge
331aa382f9
Rewrite album cover loader
2023-06-06 20:41:01 +02:00
Jonas Kvinge
716e80fb84
UWPDeviceFinder: Fix EngineDeviceList
2023-06-01 21:35:48 +02:00
Jonas Kvinge
80067b806d
TranscodeDialog: Append number to filename if it already exists
...
Fixes #1200
2023-06-01 20:42:47 +02:00
Jonas Kvinge
315073f9a7
Add EngineDevice class
2023-06-01 19:31:19 +02:00
Jonas Kvinge
a1dbbba1a1
ContextView: Remove engine and device
2023-06-01 19:29:52 +02:00
Jonas Kvinge
cb8a0b6853
ContextSettingsPage: Remove engine and device
2023-06-01 19:29:52 +02:00
Jonas Kvinge
a5a29f7ad3
DeviceFinder: Add typedef DeviceList
2023-06-01 18:43:43 +02:00
Jonas Kvinge
8e14ef7c0c
GstStartup: Set rank for directsoundsink higher than wasapisink for MinGW
...
Fixes #1204
2023-06-01 18:31:55 +02:00
Jonas Kvinge
e466cb6e30
Add UWP device finder
2023-06-01 18:11:30 +02:00
Jonas Kvinge
f0df9dc0fb
GstEngine: Append "2" to wasapi2sink description
2023-06-01 17:22:11 +02:00
Strawbs Bot
b31c08083a
Update translations
2023-05-30 01:02:07 +02:00
Jonas Kvinge
60d7a4e7ee
AlbumCoverManager: Fix invalid reference
2023-05-29 11:24:41 +02:00
Strawbs Bot
000cf5fd5a
Update translations
2023-05-13 01:01:35 +02:00
Strawbs Bot
1aff69d3cf
Update translations
2023-05-06 01:02:19 +02:00
Robert Marshall
f2f63a703e
class CueParser Process composer metadata in cue files
...
Use composer as an alternative to songwriter
..and move a misplaced comment
2023-05-05 17:47:37 +02:00
Jonas Kvinge
97e6b17f96
ContextView: QFontDatabase::families is not static in Qt 5
2023-05-05 17:46:02 +02:00
Jonas Kvinge
b90d284b08
ContextView: Check for default font family
2023-05-05 16:43:34 +02:00
Jonas Kvinge
840a65c630
ContextSettingsPage: Use constant for default font family
2023-05-05 16:43:01 +02:00
Strawbs Bot
7c7724e41c
Update translations
2023-05-05 01:29:26 +02:00
Jonas Kvinge
919ff414e6
Replace SingleApplication with KDSingleApplication
2023-05-04 09:44:54 +02:00
Strawbs Bot
b861703dad
Update translations
2023-05-04 01:15:19 +02:00
Jonas Kvinge
2f17647cd3
Use const reference for AlbumCoverLoaderResult
2023-05-03 21:43:22 +02:00
Jonas Kvinge
f8d2c7eba3
Bump required Qt version to 5.12
2023-05-03 20:50:58 +02:00
Jonas Kvinge
e511b2faf9
Use new connect syntax for QMetaObject::invokeMethod
2023-05-03 20:08:51 +02:00
Jonas Kvinge
301e6b194a
Replace 0 msec singleshot with invoke method
2023-05-03 19:55:58 +02:00
Jonas Kvinge
1208ca3ad4
ContextView: Simplify font code
2023-05-03 01:59:13 +02:00
Jonas Kvinge
84e7cd0df8
CollectionWatcher: Connect PathChanged signal once
2023-05-03 01:17:10 +02:00
Strawbs Bot
7e1077426e
Update translations
2023-05-02 01:01:40 +02:00
Jonas Kvinge
1e2c437a08
CMakeLists: Remove hardcoded sqlite3 link with MSVC
2023-05-01 19:20:00 +02:00
Jonas Kvinge
1d3223e9c6
Add getopt supporting unicode
...
Fixes #1191
2023-05-01 16:44:18 +02:00
Strawbs Bot
ee4cd11ae1
Update translations
2023-04-29 01:01:40 +02:00
Strawbs Bot
3df29ed2a9
Update translations
2023-04-25 01:01:22 +02:00
Jonas Kvinge
69658f2022
AlbumCoverChoiceController: Check for nullptr in SearchForCover
2023-04-23 19:27:01 +02:00
Jonas Kvinge
5fd0a0831f
GstEngine: Include all outputs that starts with "Sink/Audio"
2023-04-23 01:28:52 +02:00