Commit Graph

404 Commits

Author SHA1 Message Date
Mattias Andersson 60918ef7f8 Return result directly. 2015-05-26 21:51:04 +02:00
Mattias Andersson aaf2ec25b3 Run make format. 2015-05-23 09:19:23 +02:00
Mattias Andersson 82dcdd3a12 Sort discs numerically when using Group by disc. 2015-05-23 09:19:23 +02:00
Chocobozzz e986ab5a4b Merge master branch and adapt it to qt5 2015-04-16 17:16:34 +02:00
Chocobozzz 8b226c2171 Update non optionnals sources to qt5 2015-04-11 23:24:07 +02:00
Arnaud Bienner 946c0381d1 Don't set thread priority in LibraryWatcher constructor, as this is executed in the main thread.
Do it when thread actually starts (create a new Thread class for this purpose).
Fixes #4523.
2015-02-28 16:44:32 +01:00
Ignas Kaziukenas 0a2a358d8b "Green Day Problem" solved. Year-Album grouping also obeys grouping tag that allows to order albums released in the same year non-alphabetically 2014-10-29 15:29:45 +02:00
Ignas Kaziukenas a2df43c830 Reverted changes amde to groupby_performer 2014-10-27 15:49:11 +02:00
Ignas Kaziukenas 7516438c8b Added disc to the groupby interface. Replced groupby_performer to groupby_disc 2014-10-27 14:47:04 +02:00
Gavin Howard 0e030b5461 Ran make format. 2014-08-26 10:54:05 -06:00
Gavin Howard 54742de613 A quick patch to have the library ignore all articles when sorting. 2014-08-25 21:22:53 -06:00
David Sansome 01ae151f8a Delay writing WMA ratings and play counts until playback has finished. Fixes #3593 2014-06-07 15:29:23 +10:00
David Sansome f6a72828a9 Write statistics and ratings in Library, not LibraryBackend. 2014-06-07 15:19:43 +10:00
Mark Furneaux b463f32459 Fix memory leak in pixmap disk cache 2014-05-28 17:30:07 -04:00
Mark Furneaux b2bd7828c4 More style changes 2014-05-27 20:18:24 -04:00
Mark Furneaux 94b391e0c9 Optimizations and style changes 2014-05-27 18:21:30 -04:00
Mark Furneaux 2332a74bbe Add persistent disk cache for library pixmaps
I'll reference #4379

When viewing the library with album covers visible, the covers load very slowly the first time
as they have to wait on the tagreaders. If I scroll down the library, it takes minutes for the
tagreader to catch up. The nice thing is that the pixmaps are cached. However, once
Clementine is restarted, the whole process has to happen again.

This patch adds a persistent disk cache in the form of a QNetworkDiskCache to store the
pixmaps on disk and load them into the QPixmapCache as required.

I've noted literally night and day performance improvements, not only when scrolling through the library.
There is much better interface responsiveness when searching, and I no longer see the no_cover_icon
temporarily anymore.
2014-05-27 17:40:25 -04:00
John Maguire 24a4cff807 Merge pull request #4288 from sundrythoughts/rating-optimization
Increase performance of mass rating changes.
2014-05-20 12:42:39 +01:00
Joseph Freeman fe4a80b2d5 Removed commented-out code and ran make format. 2014-04-25 19:41:04 -04:00
Joseph Freeman 156728390d Increase performance of mass rating changes. 2014-04-25 19:37:46 -04:00
Mattias Andersson 5fffbbc689 Add explanatory comment to last commit. 2014-04-22 12:25:59 +02:00
Mattias Andersson 56dade2598 Fix slow library search on sqlite 3.8. 2014-04-19 14:23:50 +02:00
Mattias Andersson cdf5363320 Prevent translation of the names of the available fields in the tool tip for the library search field. 2014-02-22 18:21:58 +01:00
John Maguire 5146bcdebc Some more NULL -> nullptr conversions. 2014-02-21 17:30:46 +01:00
Mattias Andersson 3b01247df9 Iterate over a copy of the parents container since we are removing elements from the original. 2014-02-13 10:41:24 +01:00
John Maguire 192b60d965 Use nullptr as parent parameter default everywhere 2014-02-10 16:03:54 +01:00
John Maguire 3323c2d094 Convert all instances of foreach() to a C++11 for
find ext src -name '*.cpp' -exec \
    sed -i -e 's/foreach(\([^,]\+\),/for (\1 :/' {} \;
2014-02-10 14:43:32 +01:00
Mattias Andersson 175827f73f Add a tool tip to the library search field. 2014-02-08 14:50:12 +01:00
John Maguire bebd781fdf Reformat all non-3rd-party C/C++/Objective-C++.
Command line:
find src ext -regex '.*\.\(h\|cpp\|mm\)' -exec clang-format -i
 -style='{BasedOnStyle: Google, DerivePointerBinding: false}' {} \;
2014-02-07 16:34:20 +01:00
David Sansome eaf182a59a Merge pull request #4161 from BrummbQ/master
don't rescan unchanged files if library has been unavailable.  Fixes #3032
2014-02-07 22:45:55 +11:00
Gregor Tätzner 0cab75b28f removed useless debug log 2014-02-06 19:27:36 +01:00
John Maguire 8d1f4612db Hide use of boost multi-index behind pimpl. 2014-02-06 17:53:33 +01:00
John Maguire 71893e4847 Use nullptr instead of NULL everywhere. 2014-02-06 17:29:59 +01:00
John Maguire d309d4ab27 Use c++11 instead of boost where possible. 2014-02-06 16:51:39 +01:00
Gregor Tätzner 7317b6792e don't rescan unchanged files if library has been unavailable 2014-02-01 20:21:28 +01:00
Arnaud Bienner 08a4629565 '-' is considered as 'NOT' operator by FTS, leading to unexpected results. Not sure how to escape it, better to replace it for now 2014-01-16 16:35:09 +01:00
Mattias Andersson bd880dcafe Tweak the replacement of colons.
Make sure that there are no trailing whitspaces on tokens before appending "* ".
2014-01-14 01:09:24 +01:00
Mattias Andersson 3f4e8e5b88 Check if token is a valid column name in the fts table before treating it as such. 2014-01-13 16:16:33 +01:00
goetzc ad0f8a6f90 playlist context menu entry: Show in library 2014-01-11 15:03:32 -05:00
GitAnt a39e559425 Implemented sort by bitrate 2013-12-17 16:07:20 +01:00
GitAnt d53bcde897 Consistently added GroupBy_Bitrate enum item 2013-12-16 19:18:02 +01:00
Andreas 98dd001a4f Further work on portable version. 2013-10-03 17:08:42 +02:00
Andreas acb18cdcde First tries on a portable version. 2013-09-29 10:43:34 +02:00
Mateusz Kowalczyk ff71138079 Change file deletion question dialogs to warnings. 2013-06-01 16:23:37 +10:00
Arnaud Bienner 88918d45c5 Update issue 1175:
Save rating and statistics in two distinct ways, and let users activate them separately in preferences.
2013-03-30 23:42:29 +01:00
Arnaud Bienner 6108a8a46a Oops 2013-03-27 00:13:11 +01:00
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
Uwe Klotz a6d3b48231 Extend tag support: performer, grouping
The transaction handling while upgrading the database schema had to be revised.
Furthermore some QSqlQuery statements needed to be finished properly.

Fixes issue 2556
2013-03-10 18:16:03 +11: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
David Sansome e3c8caa613 Preserve user stats like play/skip counts when reloading song metadata when opening the edit tag dialog. Fixes issue 3359. 2012-12-26 00:50:32 +11:00
David Sansome 2302b80d52 Fix some style issues 2012-10-27 16:30:13 -07:00
Tony Motakis 09580b6df2 Various artists node now will appear in any GroupBy level
With this patch, compilations will be grouped under Various artists not
only when Artist is used as the top most Group By setting, but also in
lower levels as well. For example the user can set the top level Group By
to 'Genre' and still get compilations organized separately under each genre
when using Artist or AlbumArtist for the second nested Group By level.

Fixes issue 2757
2012-10-27 16:30:13 -07:00
Tony Motakis 25685e7cba Postpone CreateCompilationArtistNode() until PostQuery()
With the previous patch the Various artists node creation is oved to
RunQuery, which means that a later call to BeginReset() will delete it.
In this patch, we keep the logic deciding whether we need the node in
RunQuery(), but postpone the actual creation until PostQuery().
2012-10-27 16:30:10 -07: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
Tony Motakis 14eca258a2 Refactor duplicate code in LazyPopulate and ResetAsync
There is no reason why these need to reimplement the same thing;
put the common functionality in RunQuery() and PostQuery() and re use
the code. Less code paths to keep track of make it easier to implement
new features and fixes.
2012-10-27 16:30:05 -07:00
Arnaud Bienner 09596e3732 Don't get stuck when exiting Clementine while library is being created/updated 2012-08-30 00:01:28 +02:00
Ilya Kasnacheev 682acad53f Preserve the current song in the library view when filtering. Fixes issue 2936 2012-08-26 13:36:44 +01:00
John Maguire 6b87318710 Revert "Typedef QSearchField to old LineEdit on non Mac, and make it compatible with QSearchField"
This reverts commit 59517f5b4e.

Update issue 3047
Status: Accepted
Breaks the mac build. We should do a proper fix for this.
2012-07-12 14:04:29 +02:00
Arnaud Bienner 59517f5b4e Typedef QSearchField to old LineEdit on non Mac, and make it compatible with QSearchField
Fixes issue 3047. (for now)
2012-07-10 00:44:05 +02:00
John Maguire b01a0de8d6 Re-enable a few disabled features from the Qocoa porting. 2012-06-28 12:35:20 +02:00
John Maguire 35a7c7284b Fix placeholder text in library & icecast filters. 2012-06-28 11:40:09 +02:00
John Maguire f97fe9c69b Mostly port LibraryFilterWidget to qocoa. 2012-06-28 11:39:59 +02:00
Arnaud Bienner 2fe212e68b Display item's tooltip if it has one 2012-06-27 00:57:31 +02:00
David Sansome f95afa4cb3 Check whether .cue files exist instead of assuming Qt will return an invalid datetime for non-existent files. 2012-06-19 20:28:10 +01:00
David Sansome 57865f82c2 Make the grouping of global search results configurable 2012-06-17 16:20:40 +01:00
David Sansome b427fc8a24 Merge branch 'globalsearch-tree'
Fixes issue 2238
Fixes issue 2241
Fixes issue 2368
Fixes issue 2375
Fixes issue 2843
Fixes issue 2872
Fixes issue 2938
2012-06-16 21:24:29 +01:00
David Sansome 21fbd40f9f Don't try to initialise the library model until after the grouping settings have been read from the config. Fixes issue 3005 2012-06-16 20:54:08 +01:00
David Sansome 7b4ff1d2ee Update the Search settings page, use the configured provider order 2012-06-11 16:26:33 +01:00
David Sansome b669dd64fa Search simple providers properly, use the bigger album cover icon, disable the divider items, align the dividers' icons properly 2012-06-10 17:36:40 +01:00
David Sansome 41fab25569 Auto-expand tree items and lazy load album cover art 2012-06-10 17:15:32 +01:00
David Sansome 9c36cfa199 Replace the global search widget with a "Search" view on the sidebar. Organise results in a tree automatically. 2012-06-10 16:36:15 +01:00
Norman Back 704c87b267 Use hidden album art images when scanning the library
Fixes issue 2973
2012-06-05 18:42:11 +01:00
David Sansome 27a4bd426e Cache album art in the library model between resets (to prevent flickering when filtering), and don't load art for the same album multiple times.
Fixes issue 2528
2012-06-02 14:52:30 +01:00
David Sansome ba2f4ddedc Fix a crash in the smart playlist preview when the moodbar column is enabled 2012-05-30 11:06:25 +01:00
David Sansome 7d9f2b7b7d Use LineEdit::set_focus() instead of QWidget::setFocus() on LineEdit widgets that might be OS X search widgets
Fixes issue 2823
2012-03-25 21:14:39 +01:00
David Sansome ab5ccf69da Refactoring: remove BackgroundThread 2012-02-26 15:05:46 +00:00
David Sansome bacef04405 Refactoring: remove a couple of the AlbumCoverLoader instances and instead use a shared CurrentArtLoader. 2012-02-26 14:40:51 +00: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
David Sansome 281d69581c Add Edit file information and Show in file browser actions to the files view. Fixes issue 2559 2012-01-29 18:44:00 +00:00
David Sansome facb366017 Remove subdirectory watches after a directory is removed from the library. Otherwise subdirectories that changed after the directory was removed would be re-scanned and re-added. 2012-01-29 17:39:28 +00:00
Alan Briolat 336750f15c Treat "albumartist" as artist, not album 2012-01-29 15:47:15 +00:00
Alan Briolat 0508fa450c Fixed "Album artist" string in "group by" dialog to reuse existing translations
Fixes issue 2675
2012-01-29 14:50:15 +00:00
David Sansome 626ce20ec0 Merge branch 'external-tagreader' 2012-01-08 18:38:48 +00:00
David Sansome d4b4606068 Create the FilesystemWatcherInterface directly in the LibraryWatcher, fixing a crash when trying to add a new device. 2012-01-08 18:37:46 +00:00
David Sansome 2e49e89e7b Fix a crash on startup after disabling watching the library for changes. Fixes issue 2585 2012-01-08 12:55:06 +00:00
David Sansome 4618651cf4 Merge branch 'master' into external-tagreader 2012-01-07 22:52:18 +00:00
David Sansome 9be641ee87 The external tagreader mostly works now:
* Make TagReaderClient a singleton until it's easier to pass dependencies around
 * Add a WaitForSignal() that uses a local event loop to wait for a signal to be emitted
 * Add a WaitForFinished() to _MessageReplyBase that blocks using a semaphore
 * Add blocking versions of all TagReaderClient methods
 * Use the TagReaderClient everywhere that Song::InitFromFile and friends were used before
2012-01-07 00:26:07 +00:00
John Maguire 483c36748e const& and tweaks to Mac directory canonicalisation. 2012-01-05 16:11:39 +00:00
John Maguire 761737eb4d Add more robust subdirectory detection in LibraryWatcher. 2012-01-05 15:56:46 +00:00
John Maguire 55e9fd8dc3 Disable watching for FS updates when requested. 2012-01-05 15:01:43 +00:00
John Maguire 9fdfb52225 Use FSEvent-based filesystem watcher on Mac. 2012-01-05 14:51:23 +00:00
David Sansome 9306efef99 Fix compilation on windows due to #defines leaking out of windows headers 2011-11-28 19:13:01 +00:00
David Sansome b873209d39 Remove the <xiphcomment.h> include from song.h so that windows headers don't infect everything else. Also move other bits of song.h into song.cpp, and reduce the number of includes in song.h. 2011-11-28 13:56:55 +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
Angus Gratton b158f6788d Add support for Various Artists in Album Artist library mode (Issue 509) 2011-11-28 11:04:38 +00:00
Angus Gratton edb9b0b4fe Add album effective_artist filter that falls back to artist when unavailable (Issue 509) 2011-11-28 11:04:38 +00:00
David Sansome e9253af931 Load cover art for the library in a background thread. Fixes issue 2243 2011-11-13 00:31:27 +00:00
David Sansome b37f679c36 Implement the options to hide/show the global search box, and to hide/show all other search boxes. 2011-11-05 19:09:37 +00:00
David Sansome 6d45415b00 Consistently use "Various artists" with a lower case "a" 2011-10-30 16:53:39 +00:00
John Maguire a1ece63f3a Use URLs for openInFileBrowser. 2011-10-26 14:54:24 +02:00
David Sansome c1041ed6d4 Support for playing tracks from local library 2011-08-29 03:32:41 +01:00
David Sansome dad76b78dd Move all the settings pages to their own widgets and classes 2011-08-14 00:07:10 +01:00
Arnaud Bienner f7859f591c Adding CD devices in devices tab. Fixes issue 701. 2011-08-05 02:15:16 +02:00
David Sansome 38100f5e59 Make CoverProviders not a singleton 2011-07-23 19:34:41 +01:00
David Sansome dd3eee63e5 Remove python scripting support 2011-07-23 15:32:12 +01: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
Arnaud Bienner 63300d79db Set tr function's codec to system encoding. Should (finally) resolve problems with already translated strings 2011-06-22 20:41:48 +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
John Maguire 02e4d30354 Fix compile error. 2011-06-14 16:13:48 +00:00
David Sansome ccd7afed17 Replace LibraryModel assertions with error logging 2011-06-14 15:33:51 +00:00
David Sansome 42fe215443 Don't treat the smart playlist node in the library like a regular container when applying filters - fixes an assertion when clicking the smart playlist node with None/None/None grouping. Fixes issue 1913 2011-06-14 15:27:07 +00:00
John Maguire 3fd8d4f78e Fix showing hint in library filter widget on mac. 2011-05-23 12:52:27 +00:00
John Maguire 20534811c8 Fix crash in mac library filter widget.
Fixes issue #1914
Thanks to: tyler.s.rhodes@gmail.com
2011-05-23 09:41:08 +00:00
David Sansome 147bbb9928 Add some more python bindings 2011-05-19 23:02:15 +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
John Maguire c9a0318553 Revert to not scanning hidden directories. 2011-05-13 16:56:42 +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 b15156a7a3 Handle bigger protobuf messages, add spotify searching to the UI 2011-04-27 16:38:28 +00:00
Andrea Decorte c6c4902d3f Added two new options for date queries in smart playlists. Fixes issue
1141
2011-04-24 17:52:16 +00:00
David Sansome 3eedc916ad Add a new logging system 2011-04-22 16:50:29 +00:00
Arnaud Bienner 41a4393b24 Translate dynamic playlist names at runtime. 2011-04-19 21:39:02 +00:00
Paweł Bara 032b5f7e48 initial commit of "multiple covers providers" feature:
- simple API for cover providers (both C++ and SIP)
- a new "package" for cover related code
2011-04-02 13:34:06 +00:00
Andrea Decorte ecda0ada4a Playlists get an automatic name, no more prompts. Fixes issue #423 2011-03-25 19:16:12 +00:00
David Sansome d91aaa880c Make the library watcher pick up hidden files too. 2011-03-23 16:50:19 +00:00
Paweł Bara e619d7a280 fixing a bug where streams were removed from playlist during Clementine's startup 2011-03-20 16:07:24 +00:00
Paweł Bara bfb068a6d1 conditionally hide some context menu actions in library view and playlist view
Song.is_stream()
2011-03-20 12:43:10 +00:00
Paweł Bara a4bf317f33 minor deleted items handling fixes 2011-03-18 21:54:22 +00:00
David Sansome 9086ab8ed4 Add a "Show in file browser..." to the library context menu as well. Fixes issue #1563 2011-03-17 19:52:21 +00:00
David Sansome 0594fc53af Enable the "Edit track information..." item in the library context menu when right-clicking an un-expanded node 2011-03-17 19:52:15 +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 3d593e696c Make escape and backspace work in the library and radio views. Fixes issue 1510 2011-03-13 14:14:16 +00:00
Andrea Decorte f62f1a6df8 Middle click to append to playlist now works in the other views. Fixes issue #1546 2011-03-10 12:42:35 +00:00
Andrea Decorte b8a008aaeb Added middleclick to enqueue to playlist. Fixes issue #865 2011-03-06 15:53:08 +00:00
Andrea Decorte cfe6b9e652 Added option to hide dividers in library view. Fixes issue #1125 2011-03-05 15:20:27 +00:00
David Sansome dacc7c1a2d Remove " characters from the library filter text before doing an FTS query. Fixes issue #1504 2011-03-04 21:10:10 +00:00
David Sansome 2b08d27a88 Show loading indicators in the library model and the status bar when asynchronously loading songs during initialisation. 2011-02-26 14:27:57 +00:00
David Sansome 62b6d052de Fix the library model test 2011-02-26 13:34:31 +00:00
Paweł Bara aa6c3ab35b a way to mark DB schema versions as requiring a full library rescan
message dialog for a user when he's reached a full library rescan requiring schema version (like the final one of CUE sheet support)
2011-02-25 20:10:41 +00:00
Arnaud Bienner 609f882e27 Making library init async. Prevent from freezing GUI with large collection (especially Jamendo) when loading from DB for the first time since startup 2011-02-24 23:29:45 +00:00
Paweł Bara 5c8c5c5413 making availability of library view's context menu items saner (?). also makes the CUEs readonly from library view 2011-02-21 20:06:44 +00:00
Paweł Bara 05cbe241e9 just changed a duplicated translation string 2011-02-20 16:23:30 +00:00
Paweł Bara 677a93b359 minor changes 2011-02-20 15:05:05 +00:00
Paweł Bara 832b258b55 me no speaky english 2011-02-17 20:04:58 +00:00
Paweł Bara 20658989c3 full library rescan feature - should already work as expected 2011-02-17 19:57:14 +00:00
Paweł Bara 7de912d3a1 moving the responsibility for naming playlists into mimeData() methods (into models)
this means that pretty names for new playlists now also work when double clicking (in certain mode) or dragging and dropping
fixes issue #1477
2011-02-16 18:29:35 +00:00
Arnaud Bienner b8bf93fc23 Being consistent: use already defined name_for_new_playlist_ field and GetNameForNewPlaylist function, to have the same behavior through the 'Open in a new playlist' action than with drag and drop 2011-02-16 01:04:48 +00:00
Paweł Bara fb33ba4cce lookout for smart playlists in 'open in new playlists' functionality (Fixes issue #1465) 2011-02-15 19:16:45 +00:00