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
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
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
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
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
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
Ilya Kasnacheev
682acad53f
Preserve the current song in the library view when filtering. Fixes issue 2936
2012-08-26 13:36:44 +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
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
Alan Briolat
336750f15c
Treat "albumartist" as artist, not album
2012-01-29 15:47:15 +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
6d45415b00
Consistently use "Various artists" with a lower case "a"
2011-10-30 16:53:39 +00:00
Arnaud Bienner
f7859f591c
Adding CD devices in devices tab. Fixes issue 701.
2011-08-05 02:15:16 +02: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
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
Andrea Decorte
c6c4902d3f
Added two new options for date queries in smart playlists. Fixes issue
...
1141
2011-04-24 17:52:16 +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
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
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
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
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