Commit Graph

63 Commits

Author SHA1 Message Date
Jonas Kvinge daa2f25e3c Replace Q_ENUMS with Q_ENUM
Q_ENUMS is obsolete. See: https://doc.qt.io/qt-5/qobject-obsolete.html
The replacement is Q_ENUM which was introduced in Qt 5.5, and Clementine
requires Qt 5.6.
2021-07-14 10:19:28 +01:00
John Maguire 341dc7326f Reformat all C++ 2020-09-22 14:56:06 +01:00
Jim Broadus bc99ff80a9 Move LibraryDirectoryModel out of LibraryModel.
There are several instances of the LibraryModel class used in the system. Each
of these creates a LibraryDirectoryModel instance, but only the instance held
by the main library is every used. Move this out of the LibraryModel class and
into the Library class.
2020-02-11 08:09:22 +00:00
Jim Broadus 6a9276ec0a Fix LibraryModel async query crash.
A LibraryBackend may be deleted while an associated LibraryModel object is using
it. An example is an async query running while a connected device is removed.
To prevent this, use a share pointer for the LibraryBackend.

This fixes one case where LibraryBackend is used after deletion. However, the
raw pointer is still passed around in several other places. These should be
evaluated on a case-by-case basis to insure that circular depencencies aren't
introduced.
2020-01-14 21:47:31 -08:00
Jim Broadus f817e0de48 Prevent deletion of LibraryModel object while async query is running.
Create a thread pool for each LibraryModel object and block destruction until
all threads that are operating on this object are complete.

Note that this is not a complete solution. The async query also uses the library
backend which may still be deleted before the thread exits. This will be
addressed in a future change.
2020-01-12 12:24:21 -08:00
Jonas Kvinge d09c27f719 Remove extra ';' 2019-11-10 00:30:18 +01:00
Jacob Henner 203ec76973 Add contextual searches to playlists, library and global search. (#5649)
* Closes #5567: Contextual album/artist search in library search, global search, and playlists.

* Change artist/album search to 'search for this' in globalsearch

* Change artist/album search to 'search for this' in library

* Applying patch from @Fat-Zer to allow search incl year

* Re-adding missing schema definition
2017-08-09 14:12:36 +01:00
Nick Lanham 862b9a8635 Add saved grouping to the Group by menu 2015-12-11 15:58:06 -08:00
Nick Lanham 5c256f349a Add option to save current library grouping
- Adds saved groupings to the Group by menu
- Currently missing a way to manage saved groupings
- Saved groupings are in a new section of the config file as
   "GroupingName"->ByteArray serialization
2015-12-11 12:02:52 -08:00
John Maguire f300946c81 Remove most usages of QFutureWatcher 2015-11-27 14:28:12 +00:00
Eduardo Sánchez Muñoz e0816800b1 Add support for original year tags. 2015-06-30 18:34:34 +02:00
Mattias Andersson 82dcdd3a12 Sort discs numerically when using Group by disc. 2015-05-23 09:19:23 +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
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 192b60d965 Use nullptr as parent parameter default everywhere 2014-02-10 16:03:54 +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
John Maguire d309d4ab27 Use c++11 instead of boost where possible. 2014-02-06 16:51:39 +01: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
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
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
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
David Sansome 57865f82c2 Make the grouping of global search results configurable 2012-06-17 16:20: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
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 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
David Sansome e9253af931 Load cover art for the library in a background thread. Fixes issue 2243 2011-11-13 00:31:27 +00:00
Andrea Decorte ecda0ada4a Playlists get an automatic name, no more prompts. Fixes issue #423 2011-03-25 19:16:12 +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 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 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 82e92bb3ac library view has now three modes: 'all songs', 'duplicates only' and new 'untagged songs only' (check out the http://code.google.com/p/clementine-player/wiki/LibraryViewModes) - fixes issue #305
+ hiding the 'complexity' of QueryOptions filter and query_mode mutual exclusion behind it's API
2011-02-06 13:18:18 +00:00
Paweł Bara 2959dbff85 'show duplicates only' view for library where you can see which songs in your library are duplicated and delete unnecessary duplicates (fixes issue #1328) 2011-01-30 21:00:49 +00:00
David Sansome d78ad452f2 Make the "No cover" image the same size as the cover art when showing cover art in the library. Thanks markwatkinson. Fixes issue #785. 2011-01-02 18:58:52 +00:00
David Sansome 43940de195 Add an option to show cover art in the library view. Thanks markwatkinson. Fixes issue #785 2011-01-02 14:51:01 +00:00
David Sansome dd937fb06d Make searching more responsive on large libraries (Jamendo) 2010-11-27 20:20:26 +00:00
David Sansome af234763f2 Do library searching and grouping in a background thread 2010-11-27 20:09:00 +00:00
David Sansome e63c101223 Don't show the various artists node for Jamendo (there aren't any various artists albums) - making search a bit faster 2010-11-27 19:37:34 +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 23d1ea81ea Add dividers to the list of icecast stations 2010-11-24 21:34:54 +00:00
David Sansome e4a3a12a83 Show progress information while downloading and parsing Jamendo and Icecast catalogues. Also parse Jamendo in chunks rather than all in one go. 2010-11-23 18:53:08 +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