Commit Graph

43 Commits

Author SHA1 Message Date
Arnaud Bienner db5fbe2059 Update issue 1175:
Add an option in preferences to save all ratings/statistics into files, for all songs
2013-03-26 23:56:46 +01:00
Arnaud Bienner b157c307e7 Add preference to save ratings and statistics in files 2013-02-24 18:36:37 +01:00
Arnaud Bienner 08d40f5fca Handle statistics tags apart, and write them to file when they change.
Next step: add a preference to activate this (should be deactivated by default IMO).
2013-02-24 17:45:25 +01:00
Tony Motakis 207225d620 HasCompilations() implementation local to the LibraryModel
Instead of relying on the backend to provide us with the information
of whether there are compilations in the whole of the library, we instead
look into the query we are currently working with for compilations. This
way we can be as granular as we want in the future.

This also means we now have to add the Various artists node at the time we
do the query with RunQuery() instead at BeginReset().
2012-10-27 16:30:08 -07:00
David Sansome 48f15c9fc7 Refactoring: instead of passing individual pointers to useful core classes (like TaskManager or LibraryBackend) to each class that uses them, pass one singleton-like Application instance everywhere. 2012-02-26 14:40:51 +00:00
Angus Gratton f33d9b82d4 Prompt user if they are adding one part of a larger compilation to Various Artists. Fixes issue 2725 2012-02-19 13:55:30 +00:00
Angus Gratton c5c581a4f1 Autodetect compilations based on effective_albumartist not artist (Fixes issue 509) 2011-11-28 11:04:38 +00:00
Angus Gratton 2cf6875c6d Fix bug caused by adding Various Artists for albumartist, where nodes would sometimes not move under Various Artists due to album node never being empty (Issue 509) 2011-11-28 11:04:38 +00:00
David Sansome e6b2e5bcae Make the DeleteSongs function actually delete songs again, and make a new MarkUnavailable function that is called when songs are deleted from disk (and stop it from removing the song from the search index). 2011-07-06 20:07:56 +00:00
David Sansome 7415d85dce When initialising a song from a library query, don't always assume the metadata originally came from a file (which means icycast tags are ignored when it is played). Fixes issue 1857 2011-06-17 20:00:10 +00:00
David Sansome 792352be3b When songs disappear from the filesystem (either they're deleted or are on a removable media that was unmounted), mark them as unavailable instead of removing them from the database. Thanks google@robbertkrebbers.nl. Fixes issue 401 2011-05-14 13:43:57 +00:00
David Sansome ccb9f8cf94 Use URLs everywhere instead of filenames. Move the URL parsing and song loading code out of individual playlist parsers and into the base class. Fix the playlist parser unit tests. 2011-04-28 12:27:53 +00:00
David Sansome 002ae13817 Use the canonical file path (resolve symlinks and '..') when adding directories to the library, and when adding files to the playlist. Fixes issue #1494 2011-03-13 14:43:03 +00:00
David Sansome 507c5e2632 Change the fields in Song from seconds to nanoseconds 2011-02-13 18:34:30 +00:00
Paweł Bara 9a9d8ad177 don't let invalid CUE related media files into library (invalid == those which were not recognized by TagLib)
better logging of erroneous DB queries (error + query + bound values instead of just error)
2011-02-05 13:43:04 +00:00
Paweł Bara ddd3f119d3 CUE songs are now properly updated in library - you can delete a CUE sheet, add it, you can change section markers in it etc. and everything should work as expected
Song now knows it's cue path (if any)
2011-01-15 18:46:23 +00:00
Paweł Bara 4f7e804638 library: watcher now updates CUE associated songs + ignores the not-CUE-associated songs in a CUE sheet
CueParser: properly update length for the last song from every FILE in multifile CUE sheet
new 'playlist_path' argument in the 'Load' part of PlaylistParser's API
2011-01-11 23:09:59 +00:00
David Sansome 9b82ecbb72 Add tag completers for albumartist, composer and genre, and load completion models in background threads 2010-12-25 13:11:09 +00:00
David Sansome 8cdce2767b Implement the reset play counts button 2010-12-25 11:54:21 +00:00
David Sansome 69d3d89b0f Have a different list of smart playlists for Jamendo and the normal Library. Only add default Jamendo smart playlists once. 2010-11-27 17:52:08 +00:00
David Sansome b85ddbb380 Put the Jamendo songs in a separate database that gets attached to the main database. "Reload" it by deleting the file, which is much faster than DELETEing all the songs inside. Make reloading the Jamendo, Icecast and Magnatune databases always bypass the network cache. Store the Jamendo track IDs in a separate table - for some reason this makes inserts faster. Fix the Jamendo model after the inital database load. Make the Jamendo dymanic playlist use the entries that are already in the local database rather than fetching the song metadata again. 2010-11-27 16:14:09 +00:00
David Sansome 4e60558053 Use the Jamendo track id as the ROWID for tracks, and implement reloading the database. 2010-11-25 23:05:37 +00:00
David Sansome 7d54549213 Add support for dynamic playlists. A dynamic playlist is just a smart playlist that chooses and adds a new track when you finish listening to a song. 2010-11-20 18:49:54 +00:00
David Sansome ed1a25693c Add missing licenses to debian/copyright, and add copyright information to each source file 2010-11-20 13:27:10 +00:00
David Sansome 1f267881fe Put all smart playlist classes in their own namespace 2010-11-18 20:19:33 +00:00
David Sansome 9e20ef13bc Automatic scoring. Thanks Arnaud Bienner. Fixes issue #141 2010-11-01 21:15:52 +00:00
David Sansome 2a480f7b1c Somewhat-working smart playlist preview widget for the wizard. Still needs a lot of polish. 2010-10-29 18:41:49 +00:00
David Sansome 30afc130a4 Start of some work for smart/dynamic playlists. Only simple generators based on sql queries are supported, and the UI still needs polish. 2010-10-24 15:38:12 +00:00
David Sansome f706c21be6 Add a library backend function to set song ratings 2010-10-17 20:53:48 +00:00
David Sansome 0a42a9efb5 Don't ever restructure or reset the library model when statistics on a song are changed. 2010-10-17 19:34:45 +00:00
David Sansome a13e0ba3f3 Increment play and skip counts when playing or skipping songs from the library 2010-10-17 19:27:31 +00:00
John Maguire 214d77bc0e Fix test and fix song loader infinite loop. 2010-08-31 21:24:57 +00:00
John Maguire 36264e0b2b Separate out UniversalEncodingHandler. 2010-08-03 19:29:49 +00:00
John Maguire e67f9a66c8 Load playlist in separate threads on startup. 2010-08-03 18:57:17 +00:00
David Sansome 0d0f1521f2 Show embedded cover art in the album cover manager too, but only for the first file in an album 2010-07-19 18:08:25 +00:00
David Sansome 4a8bff5f4e Cope with removable media changing mount point 2010-07-04 12:10:44 +00:00
David Sansome 492d8fec87 Use sqlite's Full Text Search on the songs table 2010-06-20 16:30:10 +00:00
David Sansome 7eb83634b7 Update the library view when album covers get set by the cover manager 2010-06-18 13:47:11 +00:00
David Sansome 7e1b54a779 Fix the height of items in the album cover manager, don't show artists with no albums, and add a status bar (currently unused) 2010-06-11 22:35:41 +00:00
David Sansome c834a5f31f Do the compilation processing in the database thread, and make everything lock on the database to ensure two threads don't access it at once. 2010-06-02 16:22:20 +00:00
David Sansome 03d876a599 Put the Database object in its own thread, and create the Library and Playlist backends in that database thread. The database calls don't happen in the database thread yet, but this is the first step towards making sure sqlite access is thread safe. 2010-06-02 15:58:07 +00:00
David Sansome a95fb6d1e6 Do UpdateCompilations in the library scanner thread so as to not block
the GUI on startup.
2010-05-20 12:27:48 +00:00
David Sansome 1aee5e4667 Split all the source files up into seven new directories. 2010-05-10 21:50:31 +00:00