1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-09-07 04:30:43 +02:00

Compare commits

...

1324 Commits
0.2.2 ... vsxu

Author SHA1 Message Date
Dinesh Manajipet
ca369dea78 Initial commit. Embedded the standard VSXuWidget into tomahawk. still takes
audio from pulseaudio.
2012-02-07 01:57:38 +05:30
Dominik Schmidt
e3f6e61900 *sigh* Fix returning years in scriptresolvers 2012-02-04 01:53:54 +01:00
Christian Muehlhaeuser
c9b1daeba7 * Fixed TWK-670: Don't crash without a composer. 2012-02-03 17:10:03 +01:00
Jeff Mitchell
52531e9125 Use the faster method for actual comparison 2012-02-02 16:08:42 -05:00
Jeff Mitchell
72b6252ab5 Add id() to playlistinterface for comparison 2012-02-02 16:05:51 -05:00
Jeff Mitchell
95f3ead710 Remove extraneous local IP checks; let the plugin set the name and don't
try to adjust it based on IP.
2012-02-02 15:42:18 -05:00
Jeff Mitchell
07a9486e4d Some whitespace cleaning 2012-02-02 14:02:38 -05:00
Dominik Schmidt
7efceebb1c Merge pull request #74 from peretti/master
Added Brazilian Portuguese translation
2012-01-29 19:39:21 -08:00
Hugo Lindström
47529ee4d8 Add version controll to force cacheupdates on new sources. 2012-01-25 16:40:59 +01:00
Allan Peretti
6fdc49b6e5 Brazilian POrtuguese translation 2012-01-24 20:54:59 -06:00
Jeff Mitchell
78ad724bac Clean up some sourceplaylistinterface logic to hopefully prevent it
saying that a track couldn't be resolved when it gets resolved right
afterwards.

Also, have the latch mode changing (for instance on pause) affect the
source's icon.
2012-01-23 16:14:33 -05:00
Jeff Mitchell
fad6768955 Don't go QImage -> QPixmap -> QImage 2012-01-23 15:17:43 -05:00
Jeff Mitchell
03384c4e19 Be a bit safer 2012-01-23 15:14:57 -05:00
Jeff Mitchell
63e59e7e27 Fix crash from album cover refactoring. QPixmap was being put into a
QVariant and QImage being taken out.
2012-01-23 15:12:06 -05:00
Christian Muehlhaeuser
b768e84afe * Better highlighting for artist names in AlbumView. 2012-01-23 18:34:07 +01:00
Christian Muehlhaeuser
8fdddb501f * Better shutdown sequence. 2012-01-23 18:33:34 +01:00
Christian Muehlhaeuser
f6d00be6c1 * Fixed TreeModel's columns / data method. 2012-01-23 15:48:47 +01:00
Jeff Mitchell
783893f750 I wish Jreen would properly namespace their signals/slots. 2012-01-23 06:49:05 -05:00
Christian Muehlhaeuser
ff9074421a * Fixed spinner size. 2012-01-23 06:03:00 +01:00
Christian Muehlhaeuser
5a719f39bd * Fixed painting issues with BreadcrumbBar. 2012-01-23 05:52:39 +01:00
Christian Muehlhaeuser
39a40ce372 * Use proper sort order for Top Hits & Related Artists. 2012-01-23 04:48:31 +01:00
Christian Muehlhaeuser
fdb13a1f78 * Fixed alignment of playlist headers. 2012-01-23 03:20:49 +01:00
Christian Muehlhaeuser
9f99108701 * Let's make alignment a data-role as it's intended to be. 2012-01-23 03:12:55 +01:00
Dominik Schmidt
1e022bf627 Use only 'Show Queue' not 'Open Queue' additionally 2012-01-23 03:07:24 +01:00
Dominik Schmidt
354dad71d9 Fix context menu showing play when actually opening artist/album pages 2012-01-23 03:07:24 +01:00
Christian Muehlhaeuser
ea7dc6e057 * Properly center playlist items. 2012-01-23 03:00:12 +01:00
Dominik Schmidt
c9ceb5f813 Align some columns centered in playlistitemdelegate: albumpos, duration, etc 2012-01-23 02:46:00 +01:00
Christian Muehlhaeuser
576c66133e * Fixed search crash. 2012-01-23 00:36:26 +01:00
Christian Muehlhaeuser
0c704d2928 * Fixed column weights. 2012-01-23 00:25:02 +01:00
Christian Muehlhaeuser
d611bad383 * Fixed SQL Query. 2012-01-22 23:16:53 +01:00
Dominik Schmidt
3c2139ebeb taghandlers should be part of the core library not of the gui library 2012-01-22 22:22:56 +01:00
Dominik Schmidt
081102fee4 Read discnumber from script resolvers 2012-01-22 20:40:38 +01:00
Dominik Schmidt
c68772c9b5 Fix rebase fail 2012-01-22 20:40:04 +01:00
Teo Mrnjavac
68c421e00e Fix after borked merge. 2012-01-22 19:50:14 +01:00
Teo Mrnjavac
93722665af Get the discnumber in databaseimpl.cpp as well. 2012-01-22 19:50:14 +01:00
Teo Mrnjavac
b8a38f7eda Write a null value for the composer id if there's no composer. 2012-01-22 19:48:18 +01:00
Teo Mrnjavac
06374586e0 Fix header weights. 2012-01-22 19:48:18 +01:00
Teo Mrnjavac
a7fd04e1f3 Added disc numbers to the Playlist view as well. 2012-01-22 19:48:18 +01:00
Teo Mrnjavac
9661a38c10 Added Composer column to the collection and playlist model/views. 2012-01-22 19:48:18 +01:00
Teo Mrnjavac
47e9f27199 Fixed bug with null discnumbers and added discnumbers to view.
Fix bug in the taghandlers where a discnumber polluted null entries in
the database.
Also made the tree model so that the discnumber appears before the track
number if it's defined.
2012-01-22 19:48:18 +01:00
Teo Mrnjavac
4e59f1dc12 Added discnumber & composer to the DB schema and sorting by discnumber.
Added support for three new metadata elements of a track: Album Artist,
Composer and Disc Number. Since these are not supported in ID3v1 which
TagLib uses as common ground between the different metadata formats, I
had to handle the following cases separately: APE, ASF, ID3v1, ID3v2,
MP4 and OGG.
Modified the DB schema to include composer and discnumber. Provided the
dbmigrate file and bumped the schema version.
Added composer and discnumber data to all relevant queries.
Removed a bogus result->setYear from some queries in dbcmd_resolve.cpp.
2012-01-22 19:48:18 +01:00
Dominik Schmidt
68b146e560 Simplify setting the year on results in scriptresolver 2012-01-22 19:15:10 +01:00
Dominik Schmidt
b06d50be98 Read albumpos from scriptresolvers 2012-01-22 18:57:28 +01:00
Dominik Schmidt
cc6a7fd5c5 qInstallMsgHandler(blackboard); for(int i=0;i<1000;++i) qDebug() << "QPixmap::loadFromData returns bool,
not the pixmap itself"
2012-01-22 18:08:03 +01:00
Dominik Schmidt
0488aa10f8 Fix headless by using QByteArrays instead of QPixmap or QImage 2012-01-22 17:50:33 +01:00
Christian Muehlhaeuser
7dcd6e8edc * Added missing return. 2012-01-22 16:41:40 +01:00
Christian Muehlhaeuser
11c6d4cdca * Moved social actions from Result into Query. Added contextual menu entry for (un)loving. 2012-01-22 16:36:56 +01:00
Christian Muehlhaeuser
60b746c430 * Move database dumping into its own method. 2012-01-20 02:15:42 +01:00
Christian Muehlhaeuser
1f2cc33364 * Moved cover / image retrieval into Artist & Album classes. Huge model / view cleanup. 2012-01-20 02:15:42 +01:00
Jeff Mitchell
5d215b1326 Add a missing delquery.exec() in deletefiles, probably causing the
remote delete failures
2012-01-19 17:32:43 -05:00
Christian Muehlhaeuser
46723bf9d3 * Added a --dumpdb command line option. 2012-01-19 18:11:17 +01:00
Hugo Lindström
36789637a2 Forgot api url 2012-01-19 14:06:51 +01:00
Hugo Lindström
6e669fe530 Adding Soundcloudwall.com 2012-01-19 14:05:34 +01:00
Christian Muehlhaeuser
90c1a4ec51 * Custom layouts are annoying. 2012-01-19 13:12:50 +01:00
Christian Muehlhaeuser
3e7b2b72cf * Let's hope centering the text works better. 2012-01-19 12:29:24 +01:00
Christian Muehlhaeuser
de5df30941 * Fixed source painting for some weird fonts. 2012-01-19 11:51:57 +01:00
Dominik Schmidt
f5764906d6 Don't print passwords in the xml console. Thanks Elessar for the patch. 2012-01-17 19:26:37 +01:00
Christian Muehlhaeuser
f6dce6181e * Added more Jabber debug output for Jason. 2012-01-17 04:20:05 +01:00
Christian Muehlhaeuser
ba74c22663 * Potential malloc / race condition fix. 2012-01-16 13:33:10 +01:00
Jeff Mitchell
14fd0424a1 Working query-stores-its-own-pointer behavior 2012-01-15 18:17:25 -05:00
Jeff Mitchell
4d7945291e Fix a couple warnings and getPlaylistInterface->playlistInterface 2012-01-15 15:02:53 -05:00
Christian Muehlhaeuser
2eabaa0195 * Fixed QSharedPtr related warnings. 2012-01-15 15:29:57 +01:00
Christian Muehlhaeuser
7ffe53b745 * Use QSharedPointers in DbCmd_AllTracks. 2012-01-14 08:33:37 +01:00
Jeff Mitchell
ff9a033e1e Fix real-time being the default 2012-01-13 12:31:44 -05:00
Jeff Mitchell
ef41c80eb1 Move the mutex locker in the query's destructor to try to ensure that no part of the destructor can be happening while access happens some other way.
Also actually lock the mutex in refreshResults() and check for validity of the object.
2012-01-13 08:52:30 -05:00
Jeff Mitchell
25a67447d3 Add lock/unlock icons to toggle realtime listening along 2012-01-12 19:05:14 -05:00
Jeff Mitchell
9242a7c942 Add the ability to listen along in real-time. Won't automatically switch
if you (currently, might need to tweak) have <= 6 seconds left of the
current track...after a while if you get further behind it'll
automatically correct.

Can toggle via source context menu right now, need to work in an icon.

If you pause the music, it turns off real-time if it's on.
2012-01-12 17:55:33 -05:00
Christian Muehlhaeuser
7cd51a6108 * Use tDebug() when printing out a clucene error. 2012-01-11 10:30:17 +01:00
Hugo Lindström
82a2ff900b Fetches artistdata from infosystem 2012-01-11 01:22:22 +01:00
Jeff Mitchell
d6a533527e Fix signal/slot errors from playlistinterface refactor 2012-01-10 12:45:06 -05:00
Jeff Mitchell
758d65e018 Fix signal/slot signatures.
Fixes TWK-654.
2012-01-10 09:56:48 -05:00
Leo Franchi
1ccc368195 Don't blindly refresh top loved tracks all the time.
Refactor update function from xspfupdater into tomahawkutils, use it in the loved tracks backend.
also, a few misc cleanups
2012-01-06 17:14:42 -05:00
Leo Franchi
7abc185586 no need for queued connection any longer as clicking a collection item won't lead to a setplaylistinterface 2012-01-06 15:31:48 -05:00
Leo Franchi
4bf4cdda7b reclaim more copyrights :) 2012-01-06 15:31:31 -05:00
Leo Franchi
5fcb7e637a Reduce shared memory segment used as we don't allow more than once instance open at once 2012-01-06 12:38:51 -05:00
Christian Muehlhaeuser
ad9cf93f28 * Properly calculate item spacing in AlbumViews. 2012-01-06 08:16:33 +01:00
Christian Muehlhaeuser
c0c43441c1 * Hotfixes for non-KDE users. 2012-01-06 08:08:34 +01:00
Christian Muehlhaeuser
dc79dfe403 * Hardcoded a bunch of font-sizes. Should be properly fixed eventually. 2012-01-06 08:03:25 +01:00
Dominik Schmidt
ef5af2c7d8 Remove Jreen submodule. 2012-01-05 22:40:10 +01:00
Leo Franchi
d4e82d8c94 Merge pull request #73 from Horrendus/master
Fix Bugs handling Grooveshark Playlist URL Drops
2012-01-04 08:41:00 -08:00
Stefan Derkits
4f3ae14dbf Better function naming in shortenedlinkparser 2012-01-04 17:03:48 +01:00
Stefan Derkits
3655a2b537 Don't check whitelist everytime we want to resolve a redirect 2012-01-04 16:37:04 +01:00
Stefan Derkits
014c6e7344 Fix Bugs in GroovesharkParser & enable resolving of multiple redirects 2012-01-04 15:57:23 +01:00
Christian Muehlhaeuser
bea98a5e30 Merge pull request #72 from mgnz/master
Updated spanish translation! :)
2012-01-03 16:21:07 -08:00
mgnz
aff87e936a Update lang/tomahawk_es.ts 2012-01-04 01:17:24 +01:00
Christian Muehlhaeuser
5f0200b151 * Fixed not being able to collapse History item in the sidebar. 2012-01-02 14:14:14 +01:00
Jeff Mitchell
f1fb4a2ed8 Merge branch 'playlistinterface_ptr' of ssh://github.com/tomahawk-player/tomahawk into playlistinterface_ptr 2011-12-31 00:13:56 -05:00
Jeff Mitchell
20d1c2a5cc Possibly fix some of the qsharedptr warnings by making constructors explicit 2011-12-31 00:13:40 -05:00
Jeff Mitchell
9c8a9e0c52 Possibly fix some of the qsharedptr warnings by making constructors explicit 2011-12-31 00:05:50 -05:00
Jeff Mitchell
b72863a1ff Get rid of now-unneeded qsharedptr 2011-12-30 23:49:56 -05:00
Jeff Mitchell
2c3bf472bc Fix a few more signal/slot errors 2011-12-30 23:45:00 -05:00
Jeff Mitchell
05c0f3e2d3 Merge branch 'playlistinterface_ptr' of ssh://github.com/tomahawk-player/tomahawk into playlistinterface_ptr 2011-12-30 23:41:55 -05:00
Jeff Mitchell
8abf965447 Fix a couple signal/slot errors 2011-12-30 23:41:48 -05:00
Christian Muehlhaeuser
0460f6f776 * Fixed compiling MPRIS plugin. 2011-12-31 03:29:11 +01:00
Jeff Mitchell
2ea2b57d92 Finish refactoring playlistinterface...it's its own QObject, and it doesn't multiple inherit with any other classes for any implementations.
Dragons ahead, beware. Brave testers needed.
2011-12-30 20:35:53 -05:00
Jeff Mitchell
9fe40f0682 Separate out Playlist's interface. PlaylistPlaylistInterface isn't a great name, someone come up with something better. 2011-12-30 16:31:19 -05:00
Jeff Mitchell
f81db381be Merge branch 'master' into playlistinterface_ptr 2011-12-29 10:02:46 -05:00
Jeff Mitchell
9320d2f9c2 Fix some corner cases affecting the time slider, such as when the streaming fails 2011-12-29 10:02:09 -05:00
Christian Muehlhaeuser
1639d617f7 * Added shlwapi dependency. 2011-12-28 23:32:47 +01:00
Christian Muehlhaeuser
4341256594 Merge pull request #71 from mickael9/master
Use AssocQueryString on Windows for script resolvers (untested)
2011-12-28 14:20:26 -08:00
mickael9
584c4446b5 Use AssocQueryString on Windows for script resolvers
that are not .exe files (untested !)
2011-12-28 22:42:51 +01:00
Jeff Mitchell
424ac7a1d5 Separate album playlist interface 2011-12-28 12:27:25 -05:00
Jeff Mitchell
9bc38282e9 Merge remote branch 'origin/master' into playlistinterface_ptr 2011-12-28 11:54:40 -05:00
Dominik Schmidt
9011e4977e Rename CMakeLists..txt files to CMakeLists..cmake so we get proper syntax highlighting 2011-12-27 03:25:12 +01:00
Dominik Schmidt
4c2c4b7c6d Remove hardcoded install paths, port over to CMAKE_INSTALL_*DIR 2011-12-27 03:17:37 +01:00
Dominik Schmidt
a6a362944a Allow setting absolute paths in CMAKE_INSTALL_LIBEXECDIR 2011-12-27 02:39:34 +01:00
Dominik Schmidt
a059cc2e18 Include GNUInstallDirs before configuring config.h 2011-12-27 01:09:08 +01:00
Dominik Schmidt
9a13d475a6 Use python.exe as interpreter for .py files on windows. 2011-12-26 20:14:42 +01:00
Jeff Mitchell
1a240911f5 Separate Artist playlist interface 2011-12-26 13:19:24 -05:00
Jeff Mitchell
a4f65cbcc2 Fix some compilation errors from the merge 2011-12-26 12:29:56 -05:00
Jeff Mitchell
073cbbaad5 Merge branch 'master' into playlistinterface_ptr
Conflicts:
	src/libtomahawk/widgets/whatshotwidget.cpp
2011-12-26 12:24:27 -05:00
Leo Franchi
4c8fa37d0e Delete external resolvers when removing them from resolvers list 2011-12-25 19:56:33 -06:00
Leo Franchi
038daffab7 Merge pull request #70 from Horrendus/master
enable parsing of tinysong.com Grooveshark links
2011-12-25 06:55:02 -08:00
Stefan Derkits
bd893995c3 Allow parsing of grooveshark tinysong.com links 2011-12-24 22:44:05 +01:00
Leo Franchi
9634d3230f Go back to old way of sending artists in charts, as old data type may be cached 2011-12-24 11:11:05 -06:00
Christian Muehlhaeuser
01d6a22f92 Merge pull request #69 from Horrendus/master
fix grooveshark stuff by putting ifdefs around it
2011-12-23 13:20:46 -08:00
Stefan Derkits
b3c144b4bf put ifdefs around grooveshark parsing stuff 2011-12-23 22:17:31 +01:00
Christian Muehlhaeuser
3875f0b693 * Auto expand group items. 2011-12-23 20:01:08 +01:00
Leo Franchi
cf4d0fe465 utils to utilsgui 2011-12-23 09:56:07 -06:00
Leo Franchi
06ac5cffb6 debug-- 2011-12-23 08:02:37 -06:00
Leo Franchi
3987ce7690 Load chart data objects in a thread, as they call synchronous db methods 2011-12-23 08:02:37 -06:00
Leo Franchi
c4c74d84dc Show search widget on qt 4.8 2011-12-23 08:02:36 -06:00
Christian Muehlhaeuser
79c283b181 Merge pull request #68 from Horrendus/master
Parse Grooveshark.com Playlist
2011-12-22 15:09:09 -08:00
Stefan Derkits
2e25337cc1 Small changes in groovesharkparser 2011-12-22 23:59:16 +01:00
Stefan Derkits
e989bc1652 Parse Grooveshark playlists on drag & drop
not much error handling yet, but it works ;)
2011-12-21 23:53:09 +01:00
Jeff Mitchell
a8810e90c1 Some cleanup 2011-12-21 16:17:59 -05:00
Jeff Mitchell
daca5fa107 Don't store a source_ptr in SourcePlaylistInterface, since the Source has a playlistinterface_ptr down to it, causing a loop 2011-12-21 14:35:10 -05:00
Jeff Mitchell
d3fbbf778a Some normalization 2011-12-21 14:21:03 -05:00
Jeff Mitchell
44cbcd434e Merge branch 'master' into playlistinterface_ptr
Conflicts:
	src/libtomahawk/playlistinterface.h
2011-12-21 14:08:57 -05:00
Jeff Mitchell
9e80ef8aca Add suggestion from leo 2011-12-21 08:59:27 -05:00
Hugo Lindström
52cb7cebd9 Forgot about spotifyApiReply. 2011-12-17 18:06:44 +01:00
Christian Muehlhaeuser
54c203982f * Fixed resolving regression, which caused omitting some results. 2011-12-15 20:58:24 +01:00
Christian Muehlhaeuser
c3e8420b57 * Removed PhantomJS warning from tomahawk.js. 2011-12-14 17:05:38 +01:00
Jason Herskowitz
d59ffc55b1 Transparent spinner 2011-12-14 09:33:32 -05:00
Hugo Lindström
f32de6bece Use pong instead to check if spotifyApi is online 2011-12-14 13:01:05 +01:00
Christian Muehlhaeuser
4f4406ffb1 * Indent playlists / stations correctly. This is possibly causing issues with the OS X background color. Needs checking. 2011-12-14 11:24:30 +01:00
Christian Muehlhaeuser
6064b2029e * New sidebar style. Also, first steps towards reorganizing it. 2011-12-14 11:16:22 +01:00
Dominik Schmidt
31fb398b37 Update README concerning Jreen 2011-12-13 00:12:35 +01:00
Jason Herskowitz
3b8deef8c5 New spinner animation 2011-12-11 16:20:52 -05:00
Jeff Mitchell
075a5a0f14 Add some debug 2011-12-10 12:02:02 -05:00
Jeff Mitchell
2a96048b7c This doesn't actually help, but maybe is "correct"...? Or quite possibly not. 2011-12-10 02:46:03 -05:00
Jeff Mitchell
ce13d7fed5 Explicitly call clear on the shared pointer in the playlistinterface destructor 2011-12-10 02:27:32 -05:00
Jeff Mitchell
8ffbebb2b6 Porting of the rest of the non-QSharedPointer playlistinterface pointers 2011-12-10 02:15:14 -05:00
Jeff Mitchell
ce60d46fa6 Register playlistinterface_ptr type 2011-12-09 23:29:21 -05:00
Jeff Mitchell
93a31146b1 Fix logical mistake 2011-12-09 23:20:57 -05:00
Christian Muehlhaeuser
d22bccd9fb * A few cleanups. 2011-12-10 02:02:59 +01:00
Jeff Mitchell
3430535774 First bit of migrating PlaylistInterface* to playlistinterface_ptr
Compiles, but need to fix up signals and slots
2011-12-09 17:19:57 -05:00
Hugo Lindström
3c3c1414fe Allow symlinks in dirtree 2011-12-09 20:37:54 +01:00
Dominik Schmidt
64d220d9c5 Show localized wikipedia context 2011-12-09 03:03:28 +01:00
Christian Muehlhaeuser
41e908bb34 * Updated english translation. 2011-12-07 08:51:18 +01:00
Christian Muehlhaeuser
94b7ff59d5 * Updated german translation. 2011-12-07 08:47:28 +01:00
Christian Muehlhaeuser
0ea928ade7 Merge pull request #67 from zizzfizzix/tr
small changes to Polish translation once again
2011-12-06 23:30:49 -08:00
Kuba Serafinowski
d1db5441df small changes to Polish translation once again 2011-12-07 07:29:14 +00:00
Christian Muehlhaeuser
45f7cd2938 * Fixed button label. 2011-12-07 07:55:50 +01:00
Christian Muehlhaeuser
41b3ebf4e4 * Auto-switch to super collection mode when no official info is available on artist & album pages. 2011-12-07 07:19:30 +01:00
Christian Muehlhaeuser
330efc5833 * Source/style cleanup. 2011-12-05 21:10:32 +01:00
Christian Muehlhaeuser
6f4a26220d * Search for more albums / artists. 2011-12-05 21:07:53 +01:00
Christian Muehlhaeuser
919644d07a * Query's toString() supports fulltext search queries, now. 2011-12-05 21:07:09 +01:00
Christian Muehlhaeuser
30cabb304c * Implement limiting for index searching. 2011-12-05 21:05:05 +01:00
Jeff Mitchell
b80230c962 Use system proxy when no proxy is set, for windows/mac 2011-12-05 13:02:56 -05:00
Dominik Schmidt
e8563b119b Fix compilation on OSX 2011-12-05 16:32:45 +01:00
Dominik Schmidt
83051cd554 Split ExternalResolver 2011-12-05 14:25:05 +01:00
Dominik Schmidt
cfce10fbec Split Resolver classes into separate files 2011-12-05 14:25:04 +01:00
Christian Muehlhaeuser
09087e2a8e * Safe approach to prevent resizing of album items. 2011-12-05 10:15:07 +01:00
Christian Muehlhaeuser
3520a7d0d8 * Slight optimation. 2011-12-05 10:04:18 +01:00
Christian Muehlhaeuser
7b4d08a7f5 * Don't prioritize album-less tracks in edge cases. 2011-12-05 09:42:00 +01:00
Christian Muehlhaeuser
7e6b543a70 * Use bold font for painting artist items in the 'still so-wrongly-called' AlbumItemDelegate. 2011-12-05 08:34:55 +01:00
Christian Muehlhaeuser
41c79b931f * In Collection view with filter set: Don't jump to the selected item when expanding an artist. 2011-12-05 08:33:30 +01:00
Christian Muehlhaeuser
477202aa47 Merge pull request #66 from zizzfizzix/tr
update Polish translation
2011-12-04 22:54:24 -08:00
Christian Muehlhaeuser
ff0d9a9837 Merge pull request #65 from mgnz/master
Updated spanish translation... again!
2011-12-04 22:54:15 -08:00
Christian Muehlhaeuser
2c83807efc * Fixed DropJob's query counter as discussed on GitHub. 2011-12-05 07:53:36 +01:00
Christian Muehlhaeuser
3517726d92 * Basic implementation of artist & album searches. 2011-12-05 07:51:24 +01:00
Christian Muehlhaeuser
a00ea52b0b * Moved Attica to port 80. 2011-12-05 02:50:33 +01:00
Kuba Serafinowski
e4b11807f2 update Polish translation 2011-12-04 21:20:37 +00:00
mgnz
7b521b0690 Update lang/tomahawk_es.ts 2011-12-04 17:35:25 +01:00
mgnz
8f14777831 Fixed some typo errors. 2011-12-04 17:31:10 +01:00
Christian Muehlhaeuser
ef3246db9c * Fixed another sidebar issue with gtk styles. 2011-12-04 13:02:22 +01:00
Christian Muehlhaeuser
7726302103 * Fixed sidebar issues with gtk styles. 2011-12-04 12:55:06 +01:00
Christian Muehlhaeuser
2b85536625 * URL encode the mpris2 ArtUrl. 2011-12-04 07:58:37 +01:00
Christian Muehlhaeuser
2bfa77c1ff * Potential fix for TWK-618: ArtUrl not properly encoded. 2011-12-04 07:48:27 +01:00
Christian Muehlhaeuser
9d4974b174 * Remove nonsense. 2011-12-04 07:32:49 +01:00
Christian Muehlhaeuser
eaf9d806d1 * Give instant user feedback when scanner gets kicked off. 2011-12-04 07:31:46 +01:00
Christian Muehlhaeuser
152b07d816 * Updated ChangeLog. 2011-12-04 06:39:33 +01:00
Christian Muehlhaeuser
441fa10add Merge pull request #64 from mgnz/master
Updated spanish translation
2011-12-03 21:31:50 -08:00
Christian Muehlhaeuser
261149287c * Renamed Tomahawk / Music Player menu to Controls. Let's see how that feels cross-platform. 2011-12-04 05:54:33 +01:00
Leo Franchi
80320fcf4e More regression hunting: fix dynamic playlist spinner disappearing prematurely 2011-12-03 16:09:50 -08:00
Leo Franchi
de6c80f04d Fix regression from model refactor that changed function name 2011-12-03 15:15:36 -08:00
mgnz
a4891bc64d Update lang/tomahawk_es.ts 2011-12-03 16:17:54 +01:00
mgnz
13ecdb04ee Update lang/tomahawk_es.ts 2011-12-03 16:13:10 +01:00
Christian Muehlhaeuser
633dddf281 * Fixed tomahawk:// protocol handler on Windows (Firefox related). 2011-12-02 13:19:02 +01:00
Christian Muehlhaeuser
8941036105 * Fixed auto-scrolling with the current selection. 2011-12-02 13:02:28 +01:00
Christian Muehlhaeuser
f46d0803be * Made sure lists resolve top-to-bottom. 2011-12-02 10:00:07 +01:00
Christian Muehlhaeuser
eec1e56dda * Try to fix dupe Tomahawk menu on OSX. 2011-12-01 15:34:24 +01:00
Christian Muehlhaeuser
324f8a9515 * Show an error dialog when a playback problem occurred. 2011-12-01 08:09:54 +01:00
Christian Muehlhaeuser
793babcd12 * Fixed TWK-418: Context menu for now playing track. 2011-12-01 07:21:53 +01:00
Christian Muehlhaeuser
8fb15633d3 Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-12-01 06:08:02 +01:00
Dominik Schmidt
4b77b9525f Don't install .protocol file anymore, if it's not enforced with LEGACY_KDE_INTEGRATION. Does anyone have Qt >= 4.7 and KDE =< 4.6.0 2011-11-30 18:15:41 +01:00
Dominik Schmidt
eff08a7cbd Fix opening URLs with gvfs-open, why does firefox ignore it? why does epiphany ignore it? ... 2011-11-30 14:57:39 +01:00
Christian Muehlhaeuser
6c8550bf64 * Bit of spring cleanup. 2011-11-30 11:49:01 +01:00
Dominik Schmidt
29239e08d3 Boo for too pedantic desktop-file-validate 2011-11-29 14:02:18 +01:00
Dominik Schmidt
34677a9c85 Merge branch 'master' of git://github.com/tomahawk-player/tomahawk 2011-11-29 13:42:52 +01:00
Dominik Schmidt
66914824af Add MimeType=x-scheme-handler/tomahawk to tomahawk.desktop 2011-11-29 13:42:42 +01:00
Christian Muehlhaeuser
08f6970303 Merge pull request #63 from omniwired/master
Updated to the lastest version and polished some lines
2011-11-29 00:25:05 -08:00
OmniWired
4878784ebe * Updated to lastest version and polished some lines 2011-11-29 04:34:37 -03:00
Dominik Schmidt
7984d38628 Remove now unneeded files from windows installer 2011-11-29 03:08:45 +01:00
Dominik Schmidt
b5ab183504 Use new phonon(-vlc) builds in update-vlc.sh, yay for umlauts and no-track-skipping (hopefully) 2011-11-29 02:53:24 +01:00
Dominik Schmidt
91f8ab27ee ifdefs--: abstract QDesktopServices away once again in TomahawkSettings 2011-11-28 19:39:08 +01:00
Christian Muehlhaeuser
7c9fc46caa * Don't accept 0.0.0.0 as a visible / valid address. 2011-11-28 16:36:01 +01:00
Christian Muehlhaeuser
48d07a679b * Proper fix for TWK-422. 2011-11-28 15:54:53 +01:00
Christian Muehlhaeuser
f4d1bc8dfb * Potential fix for TWK-422: Disappearing (white on white) sidebar items for some styles (e.g. gtk/gnome). 2011-11-28 15:43:28 +01:00
Christian Muehlhaeuser
5c380b0b8c * Tomahawkified some sources. 2011-11-28 15:26:37 +01:00
Christian Muehlhaeuser
9787e3bc08 * Updated German translation. 2011-11-28 15:15:24 +01:00
Christian Muehlhaeuser
5e15808508 * Updated German translation. 2011-11-28 14:58:31 +01:00
Leo Franchi
9a4d4cc409 remove unneeded debug 2011-11-28 08:31:26 -05:00
Christian Muehlhaeuser
fd936617d7 * Fixing assert in JobStatusModel. 2011-11-28 14:31:07 +01:00
Christian Muehlhaeuser
ef02bd8fae * Updated german translation. 2011-11-28 11:45:39 +01:00
Christian Muehlhaeuser
ffe30498cb * More natural job view order. 2011-11-28 10:37:55 +01:00
Christian Muehlhaeuser
2585467f0a * Animate the JobStatusView when it changes its size. 2011-11-28 10:22:44 +01:00
Christian Muehlhaeuser
68cf583e4b * Remove silly deleteLater in M3uLoader. 2011-11-28 09:54:04 +01:00
Christian Muehlhaeuser
e2336b595d * Fixed M3U loader not appending tracks to an existing playlist. 2011-11-28 09:51:20 +01:00
Christian Muehlhaeuser
5911b51d05 * Fixed storing playlists after directly dropping stuff on the PlaylistModel. 2011-11-28 09:29:55 +01:00
Christian Muehlhaeuser
9e23315972 * Added a splitter to SourceInfoWidget. 2011-11-28 09:05:59 +01:00
Christian Muehlhaeuser
e536157a4f * Quietened up a bit. 2011-11-28 08:56:18 +01:00
Christian Muehlhaeuser
c850fa3520 * Fixed TWK-556: Auto switch to super collection mode if we don't have any 'offical' information available. 2011-11-28 08:16:43 +01:00
Christian Muehlhaeuser
a8b655fef8 * Fixed TWK-559: Be more consistent with our GUI text. 2011-11-28 06:45:29 +01:00
Christian Muehlhaeuser
3ed443456a * Support Footnotes in TreeViews. 2011-11-28 06:32:20 +01:00
Dominik Schmidt
0a46febf36 Disable unreachable code path in servent which depends on QtGui 2011-11-28 03:31:42 +01:00
Christian Muehlhaeuser
956243e570 * Center overlay widgets before showing them the first time. 2011-11-27 01:11:21 +01:00
Christian Muehlhaeuser
b86c0f5c5e * Added a few overlay info messages. 2011-11-26 09:59:27 +01:00
Christian Muehlhaeuser
7b96505d27 * Improved file scanning situation a bit. 2011-11-26 09:10:51 +01:00
Leo Franchi
ba80899ee5 Remove upcoming tracks not from selected but from playing item 2011-11-25 14:34:35 -05:00
Leo Franchi
f9b18a9c26 Update the tree on mac after /Volumes is shown to avoid a race condition 2011-11-25 14:30:49 -05:00
Hugo Lindström
ed306b00f0 Create playlist from M3U 2011-11-24 15:02:33 +01:00
Christian Muehlhaeuser
f38f6b2eed * Coding-style fixes for DropJob. 2011-11-24 13:57:25 +01:00
Christian Muehlhaeuser
5929adfa57 * Support a few more URL shorteners: ow.ly, fb.me, itun.es, tinyurl.com. 2011-11-24 13:30:20 +01:00
Christian Muehlhaeuser
758bb74603 * Updated german and english translations. 2011-11-24 12:57:12 +01:00
Christian Muehlhaeuser
7d33ca1dec * Removed obsolete m_isPlayingHttp boolean. 2011-11-24 10:30:34 +01:00
Frank Osterfeld
953a9d2f71 fix warnings (delete + incomplete type, initializer list ordering) 2011-11-24 08:23:50 +01:00
Christian Muehlhaeuser
c90f0efad2 * Try to fix headless compiling. 2011-11-24 06:33:04 +01:00
Christian Muehlhaeuser
e4ad727a6f * Fixed a few more translations. Could fix TWK-591. 2011-11-24 06:25:00 +01:00
Christian Muehlhaeuser
97e69f9dcc * Added debugging output to identify Windows special char issue. 2011-11-24 05:29:01 +01:00
Christian Muehlhaeuser
e5086f5b49 * Crash reporter can now be disabled in the settings. 2011-11-24 02:41:18 +01:00
Christian Muehlhaeuser
c5236b897e * Updated ChangeLog. 2011-11-24 01:50:10 +01:00
Christian Muehlhaeuser
383ae37ce5 * Updated ChangeLog. 2011-11-24 01:50:10 +01:00
Christian Muehlhaeuser
cd753265a1 * Updated ChangeLog. 2011-11-24 01:50:10 +01:00
Christian Muehlhaeuser
9a0b3409d9 * Use default locale if translation can't be found. 2011-11-24 01:30:16 +01:00
Christian Muehlhaeuser
8d620363b7 * Disable UbuntuUnityHack until it's working properly. 2011-11-24 01:24:12 +01:00
Christian Muehlhaeuser
1db24d9c01 Merge pull request #61 from omniwired/master
Updated the .ts to the lastest source version
2011-11-23 14:28:25 -08:00
OmniWired
ccd485290e * Updated to lastest version and polished some lines 2011-11-23 19:05:44 -03:00
Hugo Lindström
9f0b412626 Codestyle fix 2011-11-23 22:56:37 +01:00
Hugo Lindström
31945b9017 Begun M3u parsing 2011-11-23 22:53:21 +01:00
Jason Herskowitz
11a6f419aa Update changelog 2011-11-23 16:14:28 -05:00
Christian Muehlhaeuser
5f8b56ff85 * Support .oga files (ogg mimetype). 2011-11-23 20:50:15 +01:00
Christian Muehlhaeuser
fc5bf30a79 * Prevent stuck now playing indicator. 2011-11-23 12:28:34 +01:00
Christian Muehlhaeuser
8cff1f7b76 * Only open database once. Might speed up loading a bit. 2011-11-23 11:37:36 +01:00
Christian Muehlhaeuser
86860b6da3 * Should hopefully fix Windows SettingsDialog. 2011-11-23 10:46:13 +01:00
Christian Muehlhaeuser
1d3d7738ae * Try fixing SettingsDialog on Windows. 2011-11-23 10:32:48 +01:00
Christian Muehlhaeuser
f3f1c2d814 * Forgot to rename crash reporter in one more place. 2011-11-23 10:22:13 +01:00
Christian Muehlhaeuser
e63eef8faf * Updated new crash reporter binary name in release scripts. 2011-11-23 10:12:09 +01:00
Christian Muehlhaeuser
cb3a4cf66b * Call ensurePolished before creating buttons in SettingsDialog. 2011-11-23 09:57:08 +01:00
Christian Muehlhaeuser
cf771ae94b * DRY: Cleaned up DropJob / ShortenedLinkParser & handling spoti.fi urls now. 2011-11-23 09:33:31 +01:00
Christian Muehlhaeuser
1b09361c51 * DRY: Moved md5() helper method to TomahawkUtils. 2011-11-23 09:18:31 +01:00
Dominik Schmidt
6172ef3df4 * Merged FindCLucene fix. 2011-11-23 06:39:38 +01:00
Christian Muehlhaeuser
a0cda5cce6 * Moved charts & spotify parser to port 80. 2011-11-23 06:32:29 +01:00
Christian Muehlhaeuser
445d6ca84c * Prevented over-zealous assert in PlaylistModel. 2011-11-23 06:20:04 +01:00
Dominik Schmidt
2be3ebd90b * Merged CrashReporter changes into master. 2011-11-23 06:14:26 +01:00
Dominik Schmidt
8a9c8278e2 Search for *_tomahawkresolver in CMAKE_INSTALL_LIBEXECDIR 2011-11-23 05:47:49 +01:00
Christian Muehlhaeuser
7c66269ac1 * Look for CrashReporter in local and global dirs. 2011-11-23 05:47:43 +01:00
Christian Muehlhaeuser
30dcf3cebb * More reliable and easier to read version check. Moved to TomahawkUtils, too. 2011-11-23 05:32:46 +01:00
Christian Muehlhaeuser
f5d2251312 * Made sure we don't duplicate connections in WelcomeWidget. 2011-11-23 05:03:58 +01:00
Christian Muehlhaeuser
004ea967ad * Use the proper color for selected playlist items on the Dashboard. 2011-11-23 05:00:47 +01:00
Christian Muehlhaeuser
55ab72ee76 * Use the proper highlight color for painting hovered artist names in the AlbumItemDelegate. 2011-11-23 04:54:16 +01:00
Christian Muehlhaeuser
54b8def06a * Update SourceInfoWidget when collection changes. 2011-11-23 04:38:07 +01:00
Christian Muehlhaeuser
778f352c0f * Less furious logging. 2011-11-23 04:18:40 +01:00
Christian Muehlhaeuser
34fab0f210 * Update recent additions on welcome page whenever a collection changes. 2011-11-23 04:18:39 +01:00
Christian Muehlhaeuser
ddfe32eec3 Merge pull request #60 from omniwired/master
Spanish Translation
2011-11-22 18:05:32 -08:00
OmniWired
cf678ce89f * Added spanish translation. 2011-11-22 22:36:55 -03:00
Christian Muehlhaeuser
4cbcbd2cda Merge pull request #59 from zizzfizzix/tr
PL translation update + some fixes and cleanups
2011-11-22 16:49:44 -08:00
Kuba Serafinowski
8cba2c4727 small update 2011-11-23 00:00:11 +00:00
Kuba Serafinowski
24d524f558 moar strings to translate! 2011-11-23 00:00:11 +00:00
Kuba Serafinowski
f060b6fd6b update PL translation file 2011-11-23 00:00:11 +00:00
Kuba Serafinowski
2a98857af1 remove unneeded strings 2011-11-23 00:00:11 +00:00
Kuba Serafinowski
147364de84 tiny typo fix 2011-11-23 00:00:10 +00:00
Jeff Mitchell
9b895034df Hopefully fix a case where the seek slider travels on when Phonon is
buffering
2011-11-22 16:53:35 -05:00
Jeff Mitchell
ef575c4d6d More explicitly set DefaultProxy and NoProxy in respective cases, may
help jayniz
2011-11-22 12:54:14 -05:00
Leo Franchi
31a67ecd42 Merge pull request #58 from rotzbouw/master
Enhance resolver version comparison to a third point
2011-11-22 07:39:09 -08:00
Thierry Goeckel
5bc0a496ed Enhance version upgrading to include a third point. 2011-11-22 16:30:39 +01:00
Leo Franchi
38a7051bba Fix loading XSPFs with spaces in their name. 2011-11-22 08:57:04 -05:00
Christian Muehlhaeuser
b5167db7a3 * Revert back to using system locale. 2011-11-22 08:29:49 +01:00
Christian Muehlhaeuser
b62dd8e96a * Add a default english translation. Fallback to 'en' if locale is set to 'C'. 2011-11-22 07:37:09 +01:00
Christian Muehlhaeuser
f023bb2bc7 * Fixed translation issue in TomahawkUtils. 2011-11-22 07:24:20 +01:00
Christian Muehlhaeuser
8a4e75e8fb * Fixed window title in AudioControls. 2011-11-22 06:35:44 +01:00
Christian Muehlhaeuser
7197040026 Merge pull request #55 from zizzfizzix/translation_pl
add Polish translation
2011-11-21 20:34:46 -08:00
Christian Muehlhaeuser
c9bf8eb349 * Increased size of Get-New-Resolvers dialog. 2011-11-22 05:23:46 +01:00
Christian Muehlhaeuser
0fba1504f0 * Cleanup scanner if there were no new and no obsolete tracks found. 2011-11-22 04:16:27 +01:00
Christian Muehlhaeuser
1347736ead * Don't let the MusicScanner emit finished before all our stuff actually ended up in the database. 2011-11-22 04:07:38 +01:00
Christian Muehlhaeuser
360748dd0b * Re-enable grouping of dynamic playlist revisions. 2011-11-22 02:04:42 +01:00
Christian Muehlhaeuser
18a3f15101 * Remove bottom label of steering controls. Changes now take effect on clicking the apply button. 2011-11-22 02:00:57 +01:00
Christian Muehlhaeuser
eba1505e1d * Don't remove current index when restarting a track by activating it directly.
* Don't create new playlist revisions for a list that doesn't belong to you.
2011-11-22 01:52:24 +01:00
Christian Muehlhaeuser
0f21cde318 * Fixed crashing on playing from queue. 2011-11-22 01:36:22 +01:00
Christian Muehlhaeuser
1c1b6ea940 * Fixed updating result-hints for out-dated dynamic playlists. 2011-11-21 21:52:58 +01:00
Christian Muehlhaeuser
4f55c6aa9a * Fixed compiling on Fedora 16. 2011-11-21 20:24:40 +01:00
Christian Muehlhaeuser
83d48c99aa * Don't overwrite friendlyname with an empty one. 2011-11-21 18:04:03 +01:00
Dominik Schmidt
40248965be Add missing files 2011-11-21 16:15:54 +01:00
Dominik Schmidt
584fc8a1b6 ifdefs--: split TomahawkSettings 2011-11-21 16:14:04 +01:00
Dominik Schmidt
3d0421b0a6 ifdefs--: not needed anymore 2011-11-21 16:14:04 +01:00
Christian Muehlhaeuser
633ade23fc * Assert on empty friendlynames. 2011-11-21 14:46:29 +01:00
Leo Franchi
f6d377275b Merge pull request #57 from crabmanX/xspfdialog
fix xspf import QFileDialog filter
2011-11-21 05:05:13 -08:00
Leo Franchi
5053c3cc7a Don't return last factory result instead of correct one 2011-11-21 07:59:43 -05:00
Kilian Lackhove
eb03e2c912 fix xspf import QFileDialog filter 2011-11-21 13:55:32 +01:00
Dominik Schmidt
699a6583b2 Merge pull request #56 from zizzfizzix/TWK-583
Fix #TWK-583
2011-11-21 04:50:04 -08:00
Kuba Serafinowski
a760577924 fix TWK-583 for jabber too 2011-11-21 12:47:13 +00:00
Kuba Serafinowski
5e40409ed9 fix for TWK-583 2011-11-21 12:31:19 +00:00
Hugo Lindström
7eb361f514 Fix for broken compile 2011-11-21 08:43:06 +01:00
Christian Muehlhaeuser
3a500a6303 * Always set current name as friendlyname. 2011-11-21 06:45:32 +01:00
Christian Muehlhaeuser
de48898d34 * Fixed WelcomeWidget. 2011-11-21 05:21:57 +01:00
Leo Franchi
6b23a58678 Fix one compile error 2011-11-20 23:08:59 -05:00
Christian Muehlhaeuser
d650ea45b5 * Refactored Track-, Collection-, PlaylistModel. 2011-11-21 05:01:00 +01:00
Leo Franchi
3f139addc3 Add a 0.3.2 changelog 2011-11-20 22:51:57 -05:00
Leo Franchi
8488eac070 TWK-531: Show (-) on new item after deleting an item 2011-11-20 22:39:00 -05:00
Leo Franchi
1a338aa602 Reclaim copyright :) 2011-11-20 22:39:00 -05:00
Dominik Schmidt
118b074aa3 What was that include for boostcrap again? 2011-11-21 04:14:05 +01:00
Dominik Schmidt
4f46ba3e61 style++ 2011-11-21 04:05:24 +01:00
Dominik Schmidt
2bba9ba000 ifdefs--: make pipeline ready for tomahawk-core 2011-11-21 03:57:26 +01:00
Dominik Schmidt
4c2bb1dd28 Fix headless 2011-11-21 02:41:09 +01:00
Dominik Schmidt
8849577f82 ifdefs--: Same for QtScriptResolver, QtWebkit needs QtGui :( 2011-11-21 02:41:09 +01:00
Dominik Schmidt
cef3f3ef0d ifdefs--: GlobalActionManager is not part of the headless build anyways 2011-11-21 02:41:09 +01:00
Leo Franchi
0dda262c18 Clear upcoming station tracks when steering, and re-fetch two 2011-11-20 20:06:51 -05:00
Leo Franchi
eb7845092a use QFileSystemModel instead of deprecated QDirModel, and show /Volumes on mac 2011-11-20 18:05:02 -05:00
Leo Franchi
24bf86fc37 Reset source last played when going offline---not functional yet 2011-11-20 18:02:39 -05:00
Dominik Schmidt
ea7e641bdd ifdefs--: Move ActionCollection initialization code from AudioEngine to
Ac
2011-11-20 23:32:39 +01:00
Dominik Schmidt
0f3ba435d9 lalalalala 2011-11-20 22:39:50 +01:00
Dominik Schmidt
d199fe5ff0 ifdefs--: split TomahawkUtils 2011-11-20 22:35:34 +01:00
Leo Franchi
c63e56712e Use plugins/ instead of PlugIns/ as vlc hard-codes it internally. 2011-11-20 16:17:42 -05:00
Christian Muehlhaeuser
a14b3cf49a Merge pull request #52 from yeager/master
Enable Swedish translation
2011-11-20 12:08:20 -08:00
Leo Franchi
14f75a0f8c Increment job count when creating a new xspf job 2011-11-20 14:26:17 -05:00
Jeff Mitchell
52df44c40c Merge branch 'master' into serventfixing 2011-11-20 13:14:06 -05:00
Kuba Serafinowski
0fb232216c add Polish translation
initially ~76% done
2011-11-20 15:27:55 +00:00
Dominik Schmidt
0449557ab2 Merge pull request #54 from zizzfizzix/littlefixes
Littlefixes
2011-11-20 05:24:01 -08:00
Kuba Serafinowski
00e4faa690 make the string extract with lupdate 2011-11-20 13:07:26 +00:00
Kuba Serafinowski
9e354b4392 match the text with buttons in the dialog 2011-11-20 13:07:26 +00:00
Hugo Lindström
743bffc9a6 Try to append xspf 2011-11-20 11:26:04 +01:00
Hugo Lindström
23d30e6197 Unbreak url drops 2011-11-20 09:23:38 +01:00
Hugo Lindström
302bdd4c6d Fix for local xspf dropjob, also allow remotes 2011-11-19 22:29:39 +01:00
Daniel Nylander
3a53f96119 Enabling Swedish translation 2011-11-19 17:03:10 +01:00
Christian Muehlhaeuser
42f5ef4bc9 Merge pull request #51 from yeager/master
Swedish translation
2011-11-19 07:29:55 -08:00
Daniel Nylander
e7df308d2a Added Swedish translation 2011-11-19 16:25:58 +01:00
Christian Muehlhaeuser
c533778f3b Merge pull request #50 from zizzfizzix/cmake_quazip_fix
Fix misleading cmake message - thanks zizzfizzix!
2011-11-19 06:47:10 -08:00
Kuba Serafinowski
8defaa6be5 fix misleading cmake message 2011-11-19 13:29:40 +00:00
Leo Franchi
fe97fbe977 Show tooltip with full text in job view 2011-11-18 21:34:55 -05:00
Leo Franchi
96d8d8b2b2 Make clicking back to current track work on dashboard, charts, and artist/album pages 2011-11-18 21:12:29 -05:00
Leo Franchi
115c618fc2 Don't show speaker next to a playlist if not paused or playing 2011-11-18 21:12:29 -05:00
Jeff Mitchell
46793bbf99 Do the connection name fixing in a different way; always end up with a
QHostAddress.
2011-11-18 18:18:19 -05:00
Jeff Mitchell
ed11593b16 Remove some debugging 2011-11-18 17:35:23 -05:00
Jeff Mitchell
7cc4632761 Lots of debug and half the fixes for fixing hostnames 2011-11-18 17:12:45 -05:00
Jeff Mitchell
362f8fc622 Add application proxy factory back in, only have servent use noproxy
in favor of default proxy, as opposed to when a SOCKS proxy is set
2011-11-18 15:24:51 -05:00
Leo Franchi
708668ea0a Always clear spinner when no albums found to load in albumview 2011-11-18 13:04:04 -05:00
Leo Franchi
80e1946fa4 Only show JS errors in tomahawk debug builds 2011-11-18 12:48:36 -05:00
Christian Muehlhaeuser
85d70f3408 * Fixed TWK-579: Proper default width for the sidebar. 2011-11-18 17:01:57 +01:00
Christian Muehlhaeuser
b9537802e3 * This should fix sources being stuck in 'Parsing'. 2011-11-18 11:39:47 +01:00
Leo Franchi
0c0a2ea55c Put delcaration in ifdef 2011-11-17 14:37:21 -05:00
Leo Franchi
ca14fbf0aa Automatically upgrade resolvers 2011-11-17 14:19:11 -05:00
Jeff Mitchell
9f1ec0ce93 More cleanup, more actioncollectionifying, and fix a few signals 2011-11-17 13:26:50 -05:00
Jeff Mitchell
9a3cc63700 Move some more actions to the action collection, and remove some
unnecessary member variables from sourcetreeview.
2011-11-17 12:38:26 -05:00
Leo Franchi
9aaadad95b Set the timer with track duration calculated in 2011-11-16 23:07:15 -05:00
Leo Franchi
3bf6682fce fix rdio track loading 2011-11-16 23:06:35 -05:00
Leo Franchi
9f009f5979 Add an "apply steering" button to make it clearer how to steer
Remove some super spammy debug
2011-11-16 22:41:40 -05:00
Leo Franchi
cb072fcf2c Manually replace + with " " as QUrl::queryItems doesn't do it for us... 2011-11-16 22:41:40 -05:00
Leo Franchi
5a94949b94 Don't hook up signals twice for loading xspf 2011-11-16 22:41:40 -05:00
Leo Franchi
589202bde7 Make surer to show playlist once loaded 2011-11-16 22:41:40 -05:00
Leo Franchi
6dd12f1940 Don't show drop indicator for playlists in sidebar and always create new ones 2011-11-16 22:41:40 -05:00
Christian Muehlhaeuser
c5a50849ec * Added debug output to figure out naming weirdness. 2011-11-17 03:23:19 +01:00
Leo Franchi
6a68a1aa1d Make source visible in audiocontrols on os x 2011-11-16 17:46:49 -05:00
Thierry Göckel
aaa2417e74 Fix returning of external IP address for some routers. 2011-11-16 22:37:31 +01:00
Dominik Schmidt
add5308bc3 WIP: headless: fix crashes in sipjabber 2011-11-16 15:21:14 +01:00
Hugo Lindström
b431c34d5f Add cache for all charts. Later on move spotify and hypem to charts api. 2011-11-16 14:55:30 +01:00
Dominik Schmidt
4ba59c07f9 oops 2011-11-16 14:03:46 +01:00
Dominik Schmidt
681521e5a5 WIP: headless: compiles and links :) 2011-11-16 14:01:46 +01:00
Hugo Lindström
8731665257 Adding cache for charts 2011-11-16 12:26:02 +01:00
Christian Muehlhaeuser
e406fb90a9 * Fixed negative time values showing up in GUI. 2011-11-16 05:56:05 +01:00
Christian Muehlhaeuser
5dabdd73a1 * Make SetPlaylistRevision DBCmds groupable. 2011-11-16 05:13:56 +01:00
Christian Muehlhaeuser
179d84c39b * Set stats for the right collection. 2011-11-16 04:54:52 +01:00
Christian Muehlhaeuser
e5636a446e * Introducing groupable DatabaseCommands. 2011-11-16 04:37:29 +01:00
Christian Muehlhaeuser
27c7b3fc17 * Improved collection syncing.
* Improved dupe detection.
* Prevent sources from being stuck syncing.
2011-11-16 02:36:09 +01:00
Jeff Mitchell
7e35961874 Fix metatype registration of InfoStringHash 2011-11-15 16:03:52 -05:00
Dominik Schmidt
c0688dfc1f WIP: headless: libtomahawk compiles, but doesnt link 2011-11-15 05:30:03 +01:00
Dominik Schmidt
f6078403e0 WIP: headless 2011-11-15 05:10:35 +01:00
Leo Franchi
0569ee0f1a Don't accept button press events as well as release when handling latches 2011-11-14 16:03:57 -05:00
Jeff Mitchell
7badddb99c hacky fix for Jreen needing the application proxy set. Really we need to
get them to accept their own QNAM
2011-11-14 13:26:05 -05:00
Jeff Mitchell
d0e0d53ee7 Handle the worker/cache threads better in InfoSystem, and re-enable
deletion on shutdown, so we can test in windows nightlies.
2011-11-14 11:40:59 -05:00
Leo Franchi
6e176c77a6 Don't create QNRs for null urls, let audioengine handle it properly 2011-11-13 22:28:02 -05:00
Leo Franchi
ba8cfc3e91 Revert "Skip to next track if we have a QNR and it emits a failed signal"
This reverts commit 9418fd0fb8.
2011-11-13 22:27:49 -05:00
Leo Franchi
2f97ff63f3 Shrink font for playlist author 2011-11-13 15:50:26 -05:00
Leo Franchi
641759c362 Hide connect warning 2011-11-13 15:49:59 -05:00
Leo Franchi
ae938cf04c Add 0.3.1 fixes to Changelog 2011-11-13 14:06:55 -05:00
Christian Muehlhaeuser
8f13fcdda6 * Updated ChangeLog. 2011-11-13 19:27:13 +01:00
Christian Muehlhaeuser
29bca56e56 * Bumped version to 0.3.99. 2011-11-13 19:26:33 +01:00
Christian Muehlhaeuser
297b230669 * Force an index update after 0.3.1 upgrade. 2011-11-13 19:15:37 +01:00
Christian Muehlhaeuser
1c6c52056f * 'Fixed' Windows shutdown crash. 2011-11-13 18:39:00 +01:00
Dominik Schmidt
25bb7bd547 Remove unneccessary toString conversion 2011-11-13 17:22:02 +01:00
Kilian Lackhove
8c175b88c5 add command line option to hide main window on startup 2011-11-12 12:15:52 -05:00
Christian Muehlhaeuser
85c7cb4186 * Fixed creating index when there is only a local source. 2011-11-11 23:27:52 +01:00
Leo Franchi
09a7d790ad Only do setenv on linux, that's theonly time we'll have unity anyway 2011-11-11 17:04:53 -05:00
Leo Franchi
d49a43709d Hide red latch headphones on local source if the source you are latched on to goes offline 2011-11-11 17:00:07 -05:00
Leo Franchi
96fe10cc9f Add Unity systray hack from Clementine. 2011-11-11 17:00:07 -05:00
Leo Franchi
8626678d23 Add comment 2011-11-11 17:00:06 -05:00
Leo Franchi
2a27cbde0d Draw the author name as well as avatar in recent playlists 2011-11-11 17:00:06 -05:00
Leo Franchi
1f10444d5c Don't show in global menu in unity. Thanks davidsansome :) 2011-11-11 17:00:06 -05:00
Leo Franchi
1bb8ff97d4 Be a bit more resilient in setting the playlist to rename after creating 2011-11-11 17:00:06 -05:00
Leo Franchi
518546b525 Don't select a temp item when deleting it 2011-11-11 17:00:06 -05:00
Leo Franchi
17e1003714 Hide warning 2011-11-11 17:00:06 -05:00
Christian Muehlhaeuser
011ece182f * Prevent watch for changes interfering with running scan. 2011-11-11 19:46:52 +01:00
Leo Franchi
8e742a06d9 Build sparkle upgrade handler conditionally 2011-11-11 12:24:51 -05:00
Leo Franchi
3c024ab7ac Stop the timer on new track starting 2011-11-11 11:35:34 -05:00
Dominik Schmidt
f216a0fe82 Do some work towards tomahawk headless 2011-11-11 03:44:18 +01:00
Leo Franchi
f9b5bda925 Fix crash on Sparkle update when binary is replaced. 2011-11-10 18:30:22 -05:00
Christian Muehlhaeuser
edf47aefd1 * Bumped version to 0.3.0. 2011-11-10 15:55:08 +01:00
Leo Franchi
203b2b251c Change echonest API key for the win 2011-11-09 17:30:38 -05:00
Jeff Mitchell
987e6b97dc Revert "Go back to previous setNam, but functionality should really be identical."
Also remove some debug

This reverts commit e0177ed895.

Conflicts:

	src/libtomahawk/utils/tomahawkutils.cpp
2011-11-09 15:49:39 -05:00
Jeff Mitchell
4a93e54e63 More debugging, and change around how the static function works 2011-11-09 15:28:39 -05:00
Jeff Mitchell
658201eb98 Revert "This function is probably unnecessary now, remove it"
This reverts commit e9ed034dc7.
2011-11-09 15:19:05 -05:00
Jeff Mitchell
c0e486df3f Add nam debug 2011-11-09 14:48:23 -05:00
Jeff Mitchell
e0177ed895 Go back to previous setNam, but functionality should really be identical. 2011-11-09 14:12:48 -05:00
Jeff Mitchell
b325d9bf0f Don't use lastfm nam anymore, just use our in-built SOCKS support. 2011-11-09 13:00:07 -05:00
Jeff Mitchell
9e01e92839 Revert "First try to fix crash on win"
This reverts commit 2fb7c5c289.
2011-11-09 12:49:14 -05:00
Jeff Mitchell
83c53b7150 Probably a necessary safety measure, although I can only really see this maybe being a problem on close, not startup 2011-11-09 11:51:26 -05:00
Jeff Mitchell
2fb7c5c289 First try to fix crash on win 2011-11-09 11:49:34 -05:00
Jeff Mitchell
e9ed034dc7 This function is probably unnecessary now, remove it 2011-11-09 09:42:13 -05:00
Dominik Schmidt
f88ee0fc82 Don't show connected state in diag dialog, it's lying anyways 2011-11-08 19:44:33 +01:00
Jeff Mitchell
68188a7958 Remove unused variable 2011-11-08 13:08:50 -05:00
Christian Muehlhaeuser
b537a237a8 * Hide empty / 0 values for bitrate, year, age, filesize. 2011-11-08 19:03:00 +01:00
Jeff Mitchell
1fc3c4c2f2 Have lastfmplugin use the proper nam(), and same for echonest...echonest was only being given the nam for the gui thread 2011-11-08 10:39:37 -05:00
Jeff Mitchell
8d695c5091 Create scrobbler on startup 2011-11-08 10:29:17 -05:00
Jeff Mitchell
d3f4046396 Merge remote branch 'origin/master' into proxyrefactor 2011-11-08 10:15:18 -05:00
Christian Muehlhaeuser
b80f3717b8 * Properly exclude queries without album position. 2011-11-08 15:49:09 +01:00
Christian Muehlhaeuser
7f9fc557a9 * Remove debugging output. 2011-11-08 15:30:53 +01:00
Christian Muehlhaeuser
14639337d4 * Fixed album position & ordering for InfoSystem views. 2011-11-08 15:30:19 +01:00
Dominik Schmidt
0c136e6815 Don't show CMD window for CrashReporter 2011-11-08 14:16:30 +01:00
Christian Muehlhaeuser
3057cdab5d Merge branch 'proxyrefactor' 2011-11-08 12:02:39 +01:00
Jeff Mitchell
539f2eb700 Proxies are all we really set on nams, so reset proxy data on all threads when the main thread's nam changes 2011-11-08 04:52:06 -05:00
Jeff Mitchell
4c0c610b15 Refactor a ton of stuff. No crashes, but I'm not convinced it all works properly 2011-11-08 04:42:20 -05:00
Christian Muehlhaeuser
6ec8f127c0 * Fixed freezing when filtering out the current item in a tree-view and trying to advance to the next track. 2011-11-08 10:41:30 +01:00
Jeff Mitchell
5db219d571 Refactor proxy stuff...crashes in proxydialog saveSettings though 2011-11-08 03:08:31 -05:00
Jeff Mitchell
f3eb8fa30a Yikes, how did I write these two lines in the wrong file. So tired. 2011-11-08 00:55:41 -05:00
Jeff Mitchell
f70da74f46 Add private listening status showing 2011-11-07 20:47:04 -05:00
Jason Herskowitz
35bbfac2c5 Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-11-07 19:25:44 -05:00
Jason Herskowitz
b304bf008d First pass at a Private Listening icon 2011-11-07 19:24:43 -05:00
Jeff Mitchell
ebe39d9fac Populate private listening option in right-click on your source 2011-11-07 19:14:29 -05:00
Jeff Mitchell
4bafeb34fd Insert private listening actions into Tomahawk menu and tray icon menu.
Some visual feedback would be nice.
2011-11-07 18:45:42 -05:00
Hugo Lindström
8e1cefbbb7 Better use non local source :p 2011-11-08 00:18:39 +01:00
Hugo Lindström
2d4fb5e00b Adding ex.fm + If genre is not empty, use that instead of name 2011-11-08 00:16:50 +01:00
Jeff Mitchell
6e2ac3b931 Merge branch 'master' into privatelistening 2011-11-07 15:27:10 -05:00
Jeff Mitchell
3c7d73d4ae Use queuedconnection for both types of connections for latching, which
makes both work well (eventually, figure out where the bug is that makes
this required)
2011-11-07 15:25:48 -05:00
Christian Muehlhaeuser
fca7d05ed7 Revert "* Show Last.fm login test button on OSX again."
This reverts commit 7c5a4065df.
2011-11-07 21:06:26 +01:00
Jeff Mitchell
cf649cdafe Merge branch 'master' into privatelistening 2011-11-07 14:54:30 -05:00
Christian Muehlhaeuser
7c5a4065df * Show Last.fm login test button on OSX again. 2011-11-07 20:51:46 +01:00
Jeff Mitchell
475633c328 Remove all the QNAM-fuckery, since echonest and liblastfm are probably
good now.

(Note: will be pushing the change to liblastfm to libechonest as well)
2011-11-07 13:52:10 -05:00
Christian Muehlhaeuser
f542e97a70 * Register QList<unit> manually. 2011-11-07 16:33:05 +01:00
Christian Muehlhaeuser
c7ac6b5670 * Don't emit changed() twice in TomahawkSettings. 2011-11-07 15:42:02 +01:00
Leo Franchi
2d92cdade0 oops 2011-11-06 20:33:52 -05:00
Leo Franchi
b53f83aa95 Add fileid to result and rename dbid to trackid 2011-11-06 17:58:33 -05:00
Leo Franchi
fa5728d773 And add files 2011-11-06 17:58:20 -05:00
Leo Franchi
85662bb478 Port echonest catalog sync to new collection add/remove 2011-11-06 17:57:39 -05:00
Jeff Mitchell
a1b3538131 Work towards latch actions -- need to debug corner cases 2011-11-06 14:38:58 -05:00
Christian Muehlhaeuser
06ba09f357 * DbCmd_AddFiles should emit the file-IDs, not the track-IDs. 2011-11-06 19:53:23 +01:00
Jeff Mitchell
f70f61ac2f Add initial actioncollection skeleton 2011-11-06 13:43:23 -05:00
Jeff Mitchell
953a271bee Should really have put it here to begin with -- might well want persistence across restarts 2011-11-06 12:36:48 -05:00
Christian Muehlhaeuser
0ead914d02 * Updated / fixed ChangeLog a bit. 2011-11-06 11:56:43 +01:00
Christian Muehlhaeuser
ac8a4b5a3a * Don't duplicate signal / slot connections in TreeModel. 2011-11-06 11:45:50 +01:00
Christian Muehlhaeuser
e3bb4c9b14 * CrashReporter now also sends Tomahawk.log and the proper version number to our breakpad server. 2011-11-06 07:55:06 +01:00
Christian Muehlhaeuser
d88eaacf8d * Get rid of query_ptrs in Collection. 2011-11-06 06:49:26 +01:00
Jeff Mitchell
1a541c43ad Add in the hooks to control when listening information is sent. Now just need a UI for it... 2011-11-05 20:31:10 -04:00
Jeff Mitchell
edd69b30e0 Start of private listening work 2011-11-05 20:22:23 -04:00
Jeff Mitchell
d85291ae3e Update readme vis a vis QTweetLib 2011-11-05 10:34:09 -04:00
Jeff Mitchell
ff0ebfbcc1 Remove internal qtweetlib 2011-11-05 10:22:50 -04:00
Christian Muehlhaeuser
e0ca2178d0 * Refresh treeviews after adding / removing a collection's tracks. 2011-11-05 14:46:25 +01:00
Leo Franchi
69f1d776eb Revert "Remove the http iofactory. AudioEngine handles http:// urls by giving them to phonon directly. Lets not download an mp3 twice."
This reverts commit 1c14f562ad.
2011-11-04 21:29:45 -04:00
Leo Franchi
2ae503612b Update libechonest version in Readme 2011-11-04 20:01:08 -03:00
Leo Franchi
f53369089a Trim the address we get from upnp in case it's " ", otherwise it's not null 2011-11-04 12:59:38 -04:00
Christian Muehlhaeuser
2f5ebd2071 * Don't get stuck searching for another item if the TreeModel is empty. 2011-11-04 08:05:27 +01:00
Leo Franchi
56cb000130 Changelogify 0.3. Phew! 2011-11-03 23:30:36 -04:00
Leo Franchi
db5313129e Show rated resolver star in yellow, so it's clear what you have rated and can no longer change 2011-11-03 23:30:36 -04:00
Leo Franchi
844eb3868a Make sure to always hide the loading spinner, even if it's on a hidden page 2011-11-03 23:30:36 -04:00
Leo Franchi
1c14f562ad Remove the http iofactory. AudioEngine handles http:// urls by giving them to phonon directly. Lets not download an mp3 twice. 2011-11-03 23:30:36 -04:00
Leo Franchi
b26bd5e296 Don't assert on script output in debug mode, just show the error 2011-11-03 23:30:36 -04:00
Leo Franchi
52b77464f1 Don't re-fetch charts on nam change 2011-11-03 23:30:35 -04:00
Jeff Mitchell
8152207334 Cast and dereference so that the check actually works 2011-11-03 17:43:16 -04:00
Jeff Mitchell
e7826d725e Don't lose settings when you crash...sync immediately 2011-11-03 17:22:10 -04:00
Jeff Mitchell
3523609cad Don't always emit a new nam for plugins when it hasn't actually changed 2011-11-03 16:43:53 -04:00
Leo Franchi
663752010c Fix some rdio stuff 2011-11-02 23:17:13 -04:00
Leo Franchi
d6778a55cf Only animate when visible 2011-11-02 23:17:13 -04:00
Leo Franchi
9418fd0fb8 Skip to next track if we have a QNR and it emits a failed signal 2011-11-02 23:17:13 -04:00
Leo Franchi
124706afab Disable on-hovered stars when mouse moves away, make sure to repaint in that case 2011-11-02 23:17:13 -04:00
Leo Franchi
cf818f64c6 use Show/Hide Footnotes instead of just Footnotes. No other way to distinguish this is actually a button, and be consistent with Show/Hide Queue 2011-11-02 23:17:06 -04:00
Leo Franchi
b94445b32a Remove super spammy debug 2011-11-02 20:42:16 -04:00
Leo Franchi
f025edf095 Possible fix for multiple breadcrumbs. Erase buttons before resettin the model. 2011-11-02 20:41:57 -04:00
Hugo Lindström
09bbc9c28d Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-11-02 14:31:38 +01:00
Hugo Lindström
a98f6db089 Adding Rdio and WeAreHunted to charts 2011-11-02 14:29:34 +01:00
Dominik Schmidt
673fdf1b67 Automatically init && update submodules when using INTERNAL_* 2011-11-02 13:13:37 +01:00
Christian Muehlhaeuser
8ebbb55842 * I see why this broke. Fixed now? 2011-11-02 11:45:33 +01:00
Christian Muehlhaeuser
df31cbbe77 * Should fix mingw compilation. 2011-11-02 11:43:15 +01:00
Leo Franchi
5c700394a8 Try harder to make artist name hover disappear, not perfect yet 2011-11-01 22:27:14 -04:00
Leo Franchi
d442c2158a Show a loading spinner in album views so sourceinfopages etc don't look white for a few seconds 2011-11-01 20:00:52 -04:00
Leo Franchi
11779e2037 Load resolver cache after we know about which resolvers we have 2011-11-01 19:08:52 -04:00
Leo Franchi
855180f905 Fix animations in breadcrumb and remove some dead code 2011-11-01 19:00:45 -04:00
Leo Franchi
372eda8f2f fix rdio icon 2011-11-01 13:53:17 -04:00
Leo Franchi
e941f74f99 Add rdio 2011-11-01 13:06:31 -04:00
Hugo Lindström
4350fad789 Rdio parser for tracks, playlists, artists, albums. WIP 2011-11-01 13:03:31 -04:00
Leo Franchi
cce80ff535 did not mean to commit that debug 2011-10-31 17:16:45 -04:00
Leo Franchi
c82845d22a Fix offset querylabel due to wrong fontmetrics 2011-10-31 17:15:52 -04:00
Leo Franchi
7ab68fb418 Show the same mode as the source when clicking into an album from the collection 2011-10-30 22:36:14 -04:00
Leo Franchi
ae56d51076 Properly escape the ö in Hugo's name 2011-10-30 22:13:59 -04:00
Leo Franchi
aa8898a720 Do better th an QSizePolicy::Fixed by setting min/max heights too 2011-10-30 21:57:55 -04:00
Leo Franchi
e9ab459b30 Always accept playlist drops on the sidebar 2011-10-30 21:32:49 -04:00
Leo Franchi
65779b18eb Properly sort 2011-10-30 21:07:39 -04:00
Leo Franchi
ca0166d8fd Set the playlist in audioengine to null when setting the playlist to null 2011-10-30 20:52:51 -04:00
Leo Franchi
5f62c1abb2 Use the no-background cover image when there's no shadow 2011-10-30 20:52:51 -04:00
Leo Franchi
f94fd218a0 Fix some event loop reentrancy madness by creating the playlist on the event loop 2011-10-30 20:52:51 -04:00
Leo Franchi
f3dfc9631c fix some playlist drops on sidebar stuff 2011-10-30 20:52:51 -04:00
Leo Franchi
44fa85af6b sort chart dropdowns 2011-10-30 20:52:51 -04:00
Leo Franchi
cd04d027a0 support and fix search tomahawk link 2011-10-30 20:52:51 -04:00
Leo Franchi
7829be0936 darker background for highlight on osx 2011-10-30 20:52:01 -04:00
Dominik Schmidt
b98d591077 Remove unneeded include directory 2011-10-30 23:49:34 +01:00
Leo Franchi
29fa5c4cd9 Make artist names in album cover view clickable 2011-10-30 18:03:47 -04:00
Leo Franchi
70608158fe less verbose debug 2011-10-30 18:03:47 -04:00
Leo Franchi
106740abca Fix bug where all stars could actr as if they were hovered in all the items 2011-10-30 18:03:47 -04:00
Jason Herskowitz
1c50db9ce9 Re-add CD artwork with no jewel case so we can use if if we need it in certain places 2011-10-30 17:37:22 -04:00
Leo Franchi
2dfa25fbee Add support for tomahawk://view/album and tomahawk://view/artist urls 2011-10-30 15:23:50 -04:00
Leo Franchi
fa577aa018 Don't start playing if clicking a tomahawk link when paused 2011-10-30 15:02:48 -04:00
Leo Franchi
0e83e47f1a Don't make infobar bigger than needed 2011-10-30 14:57:45 -04:00
Leo Franchi
c1ee97fc40 Show a querylabel in the infobar if there's artist we can link it to 2011-10-30 14:57:09 -04:00
Leo Franchi
ec66cf29f3 Remove the iTunes Store: Top Songs in part of the itunes charts 2011-10-30 13:33:50 -04:00
Dominik Schmidt
f1200ac74d Find patched CLucene from Packman 2011-10-30 16:56:10 +01:00
Dominik Schmidt
be1827e554 Install tomahawk.svg to correct destination 2011-10-30 14:58:18 +01:00
Christian Muehlhaeuser
b46af3405e * Fixed TWK-537: Adding social actions for remote sources was broken. 2011-10-30 06:41:25 +01:00
Jeff Mitchell
6c2ed4baed Move timeout and all sources from getInfo into request data struct.
Add finished() signal that gives finished for a particular data type for a caller.
2011-10-29 14:45:09 -04:00
Jeff Mitchell
247e8ffbf4 Treemodel: don't consider an infosystem request resolved if it has invalid data returned 2011-10-29 14:15:52 -04:00
Jason Herskowitz
52d93e8881 Removed obsolete png again 2011-10-29 09:58:27 -04:00
Christian Muehlhaeuser
5d2e3f37f1 * Fixed setting echonest API key. 2011-10-29 15:43:15 +02:00
Jason Herskowitz
455136a722 Optizmize icon filesizes 2011-10-29 09:39:05 -04:00
Christian Muehlhaeuser
ec8fd589e0 * Removed obsolete png. 2011-10-29 09:21:55 +02:00
Christian Muehlhaeuser
5ea8586c59 * Should fix shutdown sequence. 2011-10-29 08:49:42 +02:00
Jason Herskowitz
47cd4de267 Downsize image in filesize and dimension size - don't let the cd touch the sides 2011-10-28 22:47:52 -04:00
Jason Herskowitz
22a502fd59 Put CD placeholder icon into jewel case 2011-10-28 22:35:34 -04:00
Christian Muehlhaeuser
fce45b1d8d * Commit dropshadow for reals. 2011-10-29 04:26:02 +02:00
Christian Muehlhaeuser
2b7623b6d5 * Added a drop shadow to cover images. At some point I'll make it perfect, good enough for now tho. 2011-10-29 04:16:20 +02:00
Jeff Mitchell
5f73c3fb0e If people reuse the same requestId, reassign it for them and print a
warning. Will cause problems if they are relying on the requestId to map
to something, but in that case they'd have problems mapping multiple
things to the same requestId in the first place...
2011-10-28 17:34:26 -04:00
Hugo Lindström
9476c3a3de And also dont break it, its so fragile 2011-10-28 23:33:00 +02:00
Hugo Lindström
5d13694530 Call it Hype Machine instead 2011-10-28 23:24:47 +02:00
Leo Franchi
5df328424d Add shuffle/repeat support to treeview 2011-10-28 17:13:23 -04:00
Hugo Lindström
51d89c7210 Adding hypem 2011-10-28 22:58:57 +02:00
Hugo Lindström
f8d48cc9fc Adding Hypem and fix race in spotify(?) 2011-10-28 22:57:54 +02:00
Leo Franchi
5f7bd6087f Helps to return when i want to return... 2011-10-28 16:49:22 -04:00
Leo Franchi
7549d73115 Don't crash if Rovi returns no results 2011-10-28 15:45:52 -04:00
Leo Franchi
5eef57f3b8 Fix regression in infosystem by working around it. Can't reuse requestData objects without changing their ids. 2011-10-28 15:45:05 -04:00
Leo Franchi
4ad6b2bebf Allow artist pages to have a random/repeat mode 2011-10-28 15:25:54 -04:00
Leo Franchi
af5211aada Switch to using Rovi search api instead of album api
This means we can search for albums with the artist name too, to avoid confusion
2011-10-28 13:19:33 -04:00
Leo Franchi
58b625ef03 Only cache spotify charts for a week, and send defaults 2011-10-28 12:30:45 -04:00
Leo Franchi
4ffbd839eb Actually use cache in musicbrainz plugin. We were caching the data but not fetching from the cache 2011-10-28 12:30:45 -04:00
Christian Muehlhaeuser
f8def37879 * Support clicking info button for unknown albums in TrackView. 2011-10-28 12:31:15 +02:00
Christian Muehlhaeuser
205bde833f * Fixed album spacing on non-X11. 2011-10-28 12:00:17 +02:00
Christian Muehlhaeuser
e2bb4d7340 * Properly center album icons. 2011-10-28 11:23:00 +02:00
Leo Franchi
b040870cf1 Try fixing chart loading race condition 2011-10-27 23:49:56 -04:00
Leo Franchi
4de60911cd Fix sizing and flicker 2011-10-27 22:44:38 -04:00
Leo Franchi
058808aa61 unused signal 2011-10-27 22:28:51 -04:00
Leo Franchi
253d65d5a3 fix chart defaults 2011-10-27 21:55:29 -04:00
Christian Muehlhaeuser
2b682a14ae * Unbreak compiling. 2011-10-28 03:10:59 +02:00
Leo Franchi
84d817c9d4 Fix and remove stale files 2011-10-27 21:05:51 -04:00
Leo Franchi
4db10f8195 first work on new breadcrumb 2011-10-27 21:05:51 -04:00
Leo Franchi
2277c14882 Shrink some iiimages 2011-10-27 17:24:53 -04:00
Leo Franchi
359fd9761d Don't show all stars as hovered over on launch till a mouse move 2011-10-27 15:08:42 -04:00
Leo Franchi
e9fa2259a7 Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-10-27 08:43:33 -04:00
Leo Franchi
746d24da50 shrink icon size 2011-10-27 08:43:04 -04:00
Jeff Mitchell
e341120f64 Finish making InfoSystem accept a requestId that clients can use for
tracking
2011-10-26 14:01:03 -04:00
Jeff Mitchell
4e71a56b18 Merge branch 'master' into infosystemrequestids 2011-10-26 11:48:39 -04:00
Hugo Lindström
6ec80ee427 Fix for fail 2011-10-26 14:06:54 +02:00
Hugo Lindström
28a8ca444b Merge pull request #47 from vinzv/patch-1
checked and completed translation except a few tags.
2011-10-26 04:39:20 -07:00
vinzv
a75e827d62 checked and completed translation except a few tags. 2011-10-26 13:22:31 +03:00
Leo Franchi
3dbb4fad41 Don't crash when dragging to the queue on osx 2011-10-25 14:38:16 -04:00
Hugo Lindström
ecf70e7b86 Call the mainmenu something else on Mac 2011-10-25 17:02:40 +02:00
Hugo Lindström
53c1e0986b Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-10-25 15:15:11 +02:00
Hugo Lindström
16f49b58a8 Menumerge as to TWK-213 2011-10-25 15:13:17 +02:00
Jeff Mitchell
1df01c77e3 Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-10-24 18:53:18 -04:00
Jeff Mitchell
27073eb4f4 Create default constructor for InfoRequest struct; include requestId in
InfoRequest struct; rework rest of InfoSystem to use that requestId
instead of internal one.
2011-10-24 18:49:36 -04:00
Jason Herskowitz
eb3d9553ed Make now playing speaker in sidebar gray instead of black 2011-10-24 17:18:51 -04:00
Jason Herskowitz
188dc0b3bd Fill star rating icons with color 2011-10-24 14:15:09 -04:00
Hugo Lindström
4e7672fd63 Really set the correct api url 2011-10-24 13:12:59 +02:00
Hugo Lindström
6c35a435f0 Correct api url 2011-10-24 13:09:19 +02:00
Hugo Lindström
5263b21138 Spotify InfoSystemPlugin 2011-10-24 12:45:54 +02:00
Leo Franchi
49d40186be debug-- 2011-10-23 15:40:12 -04:00
Leo Franchi
660a7cd059 Add rovi infoplugin for album tracks 2011-10-23 15:38:12 -04:00
Leo Franchi
ad739d0ce8 Set two default items for the charts
try listening to any changed and set default source

don't listen to indexchanged, do a manual set when setting default
2011-10-23 10:21:12 -04:00
Dominik Schmidt
4e8d0d46fe Fix mingw compilation on my machine, isn't broken on hudson whyever :\ 2011-10-22 02:48:11 +02:00
Hugo Lindström
02713c1661 Doesnt fix it 2011-10-22 00:11:01 +02:00
Hugo Lindström
8d561b5a56 Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-10-21 23:58:31 +02:00
Hugo Lindström
25ece740e2 Seems to not crash when chart is not fully loaded 2011-10-21 23:57:40 +02:00
Leo Franchi
1c66534cb8 search pages too 2011-10-21 17:45:29 -04:00
Leo Franchi
08610eee13 Use artist and album icons for temp pages 2011-10-21 17:39:28 -04:00
Leo Franchi
b8ccf9b2af Switch to stars, and show on-hover star animation when rating 2011-10-21 17:03:34 -04:00
Leo Franchi
537115fac5 Fix artist bios not loading after changes to infosystem types 2011-10-21 16:25:11 -04:00
Leo Franchi
3924521aed 5, not 6 2011-10-21 14:35:32 -04:00
Leo Franchi
8bbe15edee Limit to 5 temp pages at once 2011-10-21 14:35:32 -04:00
Leo Franchi
0a686337f8 Don't set focus on page automatically (this breaks delete-with-del on sourcetree), and it was done originally for the newplaylistwidget that is gone. 2011-10-21 14:35:32 -04:00
Leo Franchi
98d939a81b Show speaker icon for any playing playlist 2011-10-21 14:35:32 -04:00
Jason Herskowitz
e1c6e83b98 More abstract (wall of photos) and colorful Supercollection icon. Better or worse? 2011-10-21 14:34:11 -04:00
Hugo Lindström
d41e30c359 Dont need hack anymore 2011-10-21 20:16:10 +02:00
Jason Herskowitz
4bb63d428f Clean up now-playing-speaker-dark.png 2011-10-21 09:20:17 -04:00
Christian Muehlhaeuser
85f970ea2d * Don't crash without model. 2011-10-21 09:48:10 +02:00
Christian Muehlhaeuser
3411dde52f * Don't crash without a model. 2011-10-21 09:41:54 +02:00
Leo Franchi
4a63606c84 Draw a speaker next to the currently playing playlist 2011-10-20 23:11:35 -04:00
Leo Franchi
2d439ed959 remove spammy debug 2011-10-20 18:29:11 -04:00
Leo Franchi
0e213abfd4 Show error when a preview fails to load for a station 2011-10-20 18:02:52 -04:00
Leo Franchi
be737a24f2 Refresh stations preview whenever controls are changed 2011-10-20 17:24:23 -04:00
Jeff Mitchell
f796f1f133 Remove unnecessary Chart type from InfoSytem. It was just mapping
strings, so just use a string map we already have
2011-10-20 16:46:09 -04:00
Jeff Mitchell
b2dc6f1f3c Since InfoCriteriaHash is now being used for things that aren't
criteria, rename it to the more generic InfoStringHash
2011-10-20 16:26:08 -04:00
Jeff Mitchell
d73800bd5f Remove unnecessary custom types from info system 2011-10-20 16:24:00 -04:00
Jeff Mitchell
52bb303ffa More logical ordering of items 2011-10-20 16:13:49 -04:00
Leo Franchi
4e8c99554a Try harder for compile-on-sl run-fullscreen-on-lion 2011-10-20 14:43:15 -04:00
Leo Franchi
428dbe8f0e Runtime check for lion instead of compile-time 2011-10-20 14:31:41 -04:00
Jeff Mitchell
f24a25b370 It's funny, looking at a few likely commits doesn't show when this line
disappeared, but, it did. Fixes scanning never finishing
2011-10-20 13:47:00 -04:00
Leo Franchi
4107c01ad1 Don't run a dropjob for any drop unless it's a playlist. Show notifications for album db fetches 2011-10-19 22:55:11 -04:00
Leo Franchi
24c7b0074a Move removeDirectory to TomahawkUtils 2011-10-19 19:45:39 -04:00
Leo Franchi
378aae9567 Fix commit also with no attica 2011-10-19 19:37:46 -04:00
Leo Franchi
742f73f028 Only allow voting once; Show the user's set score if he has rated it over the server 2011-10-19 19:31:26 -04:00
Leo Franchi
52930918f2 Tomahawk-side support for resolver rating 2011-10-19 17:19:11 -04:00
Christian Muehlhaeuser
be0f2e7e45 * Use mobile wikipedia version for Footnotes. 2011-10-19 04:40:11 +02:00
Christian Muehlhaeuser
6134c4fdec * Properly sort recent additions / albums lists. 2011-10-19 04:00:54 +02:00
Christian Muehlhaeuser
5f1a2df610 * Properly get artists / albums when using external resolvers. 2011-10-19 03:23:41 +02:00
Christian Muehlhaeuser
d3d29acf09 * Auto resize OverlayButton and adjust helper texts. 2011-10-19 03:13:45 +02:00
Christian Muehlhaeuser
b32b84f8c7 * Properly deal with auto-creating artists & albums. 2011-10-19 02:46:28 +02:00
Christian Muehlhaeuser
95ce975d40 * Properly load albums from database when getting official releases. 2011-10-19 02:33:08 +02:00
Christian Muehlhaeuser
8532189b54 * Added OverlayButton. 2011-10-19 02:16:16 +02:00
Christian Muehlhaeuser
1223d3dac3 * Use tDebug in PortfwdThread. 2011-10-19 02:07:16 +02:00
Christian Muehlhaeuser
a6c838cd39 * Support official release on album pages. 2011-10-19 02:06:53 +02:00
Leo Franchi
03f0870f53 Update FindPhonon.cmake from KDE 2011-10-18 16:20:44 -04:00
Leo Franchi
931959ecc8 Make resolving dragged-in spotify playlists worka gain 2011-10-18 14:42:10 -04:00
Leo Franchi
b34037f26f Don't send multiple infosystem requests if one is queued 2011-10-18 08:05:38 -04:00
Leo Franchi
f95e2ad703 Select just-created spotify playlist when dragged in 2011-10-17 17:53:22 -04:00
Leo Franchi
5fac4a34bd Remove stray include 2011-10-17 17:46:11 -04:00
Leo Franchi
3f9c2366f2 Consistent size for all headers in the view 2011-10-17 17:45:06 -04:00
Leo Franchi
a708f37cd6 Include preview tracks in deduper 2011-10-17 17:44:57 -04:00
Leo Franchi
dd1071f180 debug for rotzbouw 2011-10-17 17:13:31 -04:00
Leo Franchi
576a886937 Try deduping better 2011-10-17 17:04:29 -04:00
Leo Franchi
1208035da3 Make sure not to sort, these are charts 2011-10-17 16:59:52 -04:00
Leo Franchi
7944c9f826 Extend deduper to whole station session 2011-10-17 16:05:26 -04:00
Leo Franchi
6ee7df9514 Resolve top-down 2011-10-17 12:36:56 -04:00
Leo Franchi
4a3b6aa1d3 Show youtube resolver in resolver list as well 2011-10-17 11:30:53 -04:00
Christian Muehlhaeuser
77b8224949 * Get rid of annoying Threads test. Fails left and right. 2011-10-17 17:23:03 +02:00
Leo Franchi
c4c94de1ac Expand breadcrumb fully when any item is selected 2011-10-16 23:21:55 -04:00
Leo Franchi
75cb466909 die die flicker 2011-10-16 23:21:55 -04:00
Jeff Mitchell
fd6235995f Prevent some spurious delete commands when you have no collection paths 2011-10-16 17:49:37 -04:00
Leo Franchi
840460d960 Mark peer as offline when we get a message from a peer that we knew about but is gone 2011-10-16 15:48:20 -04:00
Jeff Mitchell
3b46f3fe32 A bit of debugging for rotzbouw 2011-10-16 14:57:08 -04:00
Jeff Mitchell
a2281dcf58 Add an optimization to deletefiles 2011-10-16 14:45:07 -04:00
Leo Franchi
a19eb9c447 Be safer and don't create albums in the for charts browsing 2011-10-16 14:06:13 -04:00
Leo Franchi
ceffbb6a77 Header guard 2011-10-16 13:29:57 -04:00
Leo Franchi
c5439b4e7d Convert ISO country code to proper country names. 2011-10-16 13:26:35 -04:00
Leo Franchi
0b227eff42 Don't flicker all breadcrumbs when any breadcrumb combo is changed 2011-10-15 23:37:17 -04:00
Leo Franchi
033b4cc6cc less debug 2011-10-15 19:38:38 -04:00
Leo Franchi
4fdec44755 Make sure breadcrumb items are always the right size 2011-10-15 19:38:06 -04:00
Leo Franchi
6606bd4185 Cache models so we don't constantly re-fetch and re-resolve everything 2011-10-15 19:30:04 -04:00
Leo Franchi
7cc964dfc5 Don't crash if there's no model attached to a view when it's resized 2011-10-15 19:29:50 -04:00
Leo Franchi
b3bfc2b464 Fetch album covers if albums were added before model was attached to view 2011-10-15 19:29:27 -04:00
Leo Franchi
a937ac265c Fix grey background w hen breadcrumb adding/deleting is animating 2011-10-15 18:11:35 -04:00
Leo Franchi
1058dd93f1 Refactor the chartsplugin parsing 2011-10-14 19:09:42 -04:00
Leo Franchi
f4f9a148af Return the chart list if we receive it after the infosystem request 2011-10-14 16:07:14 -04:00
Leo Franchi
d07f191a1e Select newly created playlist when created via tomahawk link too 2011-10-13 22:44:29 -04:00
Leo Franchi
0ba9a9e076 Select the just-created xspf as soon as it is imported 2011-10-13 22:39:25 -04:00
Leo Franchi
ac7aadf615 Fix latching when switching directly between latches 2011-10-13 22:33:32 -04:00
Leo Franchi
3873189d79 Clean up auto-updating xspf handling to make it actually usable 2011-10-13 21:52:23 -04:00
Leo Franchi
891692d914 Fix catalog init properly 2011-10-13 17:51:38 -04:00
Leo Franchi
2d31de245f Remove unused signal connection 2011-10-13 17:50:29 -04:00
Leo Franchi
8c587e9b75 export and remove warning 2011-10-13 17:32:21 -04:00
Jeff Mitchell
84622380d6 Remove dir mode, just use file mode for scanning all the time 2011-10-13 17:19:58 -04:00
Leo Franchi
0736a65f2a Try to avoid race conditions 2011-10-13 17:17:08 -04:00
Hugo Lindström
658deb3bcd Maybe a fix for breadcrumb problems 2011-10-13 21:27:52 +02:00
Jeff Mitchell
cfed5be1ca Let's try this again 2011-10-13 10:43:42 -04:00
Jeff Mitchell
9fa4033b2a OK, actually properly escape 2011-10-13 10:35:05 -04:00
Jeff Mitchell
2c620ba440 Properly escape strings in sql command 2011-10-13 10:30:56 -04:00
Leo Franchi
01bf3a3818 Initialize to 0 in *all* constructors 2011-10-13 08:28:22 -04:00
Leo Franchi
8641222395 Make default artist type similar to, not limit to 2011-10-12 20:57:23 -04:00
Leo Franchi
b4aedd606c ohai style fix 2011-10-12 20:45:43 -04:00
Leo Franchi
ee1afc665f Merge branch 'autoupdate' 2011-10-12 20:34:32 -04:00
Leo Franchi
57e31e1319 Update defaults and do an update on enabling 2011-10-12 20:33:28 -04:00
Leo Franchi
46f6941325 Only auto-create in logplayback if there's a valid artist 2011-10-12 17:55:33 -04:00
Leo Franchi
61f3e1854c Don't auto-create when doing a load from the db. 2011-10-12 17:55:33 -04:00
Leo Franchi
5cb327af38 Don't show 41 years as an age for a result if it was default set to 0. 2011-10-12 17:55:33 -04:00
Leo Franchi
648b2d69f9 Only auto-create in logplayback if there's a valid artist 2011-10-12 17:54:35 -04:00
Leo Franchi
e4f8c229b4 Don't auto-create when doing a load from the db. 2011-10-12 17:41:15 -04:00
Leo Franchi
189e3ea348 Don't show 41 years as an age for a result if it was default set to 0. 2011-10-12 17:24:49 -04:00
Hugo Lindström
e2c71e7a18 Style fix and timeout fix 2011-10-12 22:31:25 +02:00
Hugo Lindström
3b1268bbfd Here comes the charts! 2011-10-12 22:09:26 +02:00
Hugo Lindström
248d26fe69 Merge pull request #46 from hugolm84/charts
Dont always assert on js failure
2011-10-12 10:02:21 -07:00
Hugo Lindström
afcac34208 Dont allways assert on js failure 2011-10-12 18:58:17 +02:00
Leo Franchi
9aa6e2a338 Clean up after ourselves 2011-10-12 11:00:39 -04:00
Leo Franchi
434acf21a4 osx tweaks 2011-10-12 10:56:35 -04:00
Leo Franchi
aaf0df736b Merge branch 'autoupdate' of github.com:lfranchi/tomahawk into autoupdate 2011-10-12 10:22:25 -04:00
Leo Franchi
bb0d82aa10 remote debug 2011-10-12 10:21:39 -04:00
Leo Franchi
9556414bf5 Add UI to auto-update and save/restore state 2011-10-12 10:20:55 -04:00
Leo Franchi
172ccd0428 Fix artist limit to 2011-10-12 08:49:04 -04:00
Leo Franchi
31a9c75c08 Fix artist limit to 2011-10-12 08:48:31 -04:00
Jeff Mitchell
fde7ef75af Remove extra debug 2011-10-11 18:02:59 -04:00
Jeff Mitchell
af7b20ee55 Work around QtSql bind bug to properly populate delete files for notifications to collections 2011-10-11 17:58:44 -04:00
Jeff Mitchell
0277d1213e Add some debug and fix a double-delete issue 2011-10-11 13:33:55 -04:00
Jeff Mitchell
c62c4fa1d9 Fix cache misses going to incorrect target 2011-10-11 12:55:57 -04:00
Jeff Mitchell
a520f7bff3 Remove InfoGenericMap 2011-10-11 09:08:55 -04:00
Jeff Mitchell
37f5b9114e More debugging 2011-10-11 08:57:30 -04:00
Jeff Mitchell
d2dc3082b1 Hopefully fix delete problems 2011-10-11 08:47:44 -04:00
Jeff Mitchell
bd4d5da641 Remove unused method 2011-10-11 08:29:01 -04:00
Leo Franchi
dad65da497 Use file ids not track ids for echonest catalog ids 2011-10-10 21:09:07 -04:00
Leo Franchi
49aadaab0e Use file ids not track ids for echonest catalog ids 2011-10-10 21:07:05 -04:00
Jeff Mitchell
864d665494 Some more debugging bits 2011-10-10 18:55:44 -04:00
Jeff Mitchell
719151b44e Add more debugging for the delete issue 2011-10-10 18:50:12 -04:00
Hugo Lindström
1c3a9da5ed Merge pull request #45 from hugolm84/charts
Fix bad parsing in liblastfm2 track
2011-10-10 09:56:48 -07:00
Hugo Lindström
154b672d47 Fix bad parsing 2011-10-10 18:56:06 +02:00
Jeff Mitchell
cfa2268c05 Debugging for delete files issue 2011-10-10 10:35:28 -04:00
Jeff Mitchell
d37fd8955c Optimize the full rescan path a bit, and add a check for safety (that should be a noop) 2011-10-10 09:53:55 -04:00
Hugo Lindström
a7d30582a6 Merge pull request #44 from hugolm84/charts
Dont sort ranked list
2011-10-10 04:39:01 -07:00
Hugo Lindström
0a570849c5 Dont sort ranked list 2011-10-10 13:38:01 +02:00
Hugo Lindström
442d1b2713 Merge pull request #43 from hugolm84/charts
Tomahawk Charts
2011-10-09 12:04:32 -07:00
Hugo Lindström
9749df00d1 Increase timer, fixes itunes breadcrumb init 2011-10-09 14:15:22 +02:00
Hugo Lindström
8a9a48fda1 Style fix 2011-10-09 14:13:39 +02:00
Hugo Lindström
777ebd77c8 Now fills itunes chart correctly 2011-10-09 13:28:43 +02:00
Hugo Lindström
36855783a7 Now supports charts from last.fm, billboard, itunes. Known issue:
sometimes fail to populate breadcrumb with itunes resource
2011-10-08 20:14:26 +02:00
Hugo Lindström
8595539dea Charts 2011-10-08 19:24:43 +02:00
Leo Franchi
687ed02df0 Updater work 2011-10-07 18:08:13 -04:00
Leo Franchi
3b861983e6 skeleton auto-updating for xspf playlists 2011-10-07 16:04:37 -04:00
Hugo Lindström
9caf9fc98f Adding charts for Billboard and Itunes 2011-10-06 23:00:19 +02:00
Leo Franchi
f58ba2926e Fix shorten link action when called from different thread 2011-10-06 14:26:19 -04:00
Hugo Lindström
049184bdfd Trying to add albums to whatshotview 2011-10-06 19:52:51 +02:00
Leo Franchi
6d6f51fdb6 TWK-532: Don't assert on a null artist, we can get artists we don't know about from resolver search results 2011-10-05 17:55:20 -04:00
Hugo Lindström
2ee085d13d Doing so for now. Need to create ui for specific albums 2011-10-05 22:33:08 +02:00
Hugo Lindström
fb8a761278 Adding charts infoplugin 2011-10-05 20:22:48 +02:00
Hugo Lindström
625a7b8fda Merge pull request #42 from hugolm84/master
Spotify artist browse now supports limit
2011-10-04 00:39:26 -07:00
Hugo Lindström
b15bef72df Artist browse with limit 2011-10-04 09:35:05 +02:00
Dominik Schmidt
0aa65e2d95 Comment out _set_purecall_handler to prevent the no-entry-point-error, let's find out the consequences :P 2011-10-04 02:24:15 +02:00
Dominik Schmidt
53acf6420e Hardcode product name for breakpad as the conversion code crashes 2011-10-04 02:22:35 +02:00
Dominik Schmidt
f54dee3ccc Fix windows installer 2011-10-04 02:06:16 +02:00
Leo Franchi
b494d5ae79 Note bumped liben requirement 2011-10-03 15:35:58 -04:00
Jeff Mitchell
7975140452 Pedantic warning fix 2011-10-03 12:26:53 -04:00
Jason Herskowitz
11ea67632c Fix those damn headphones once and for all 2011-10-03 09:50:55 -04:00
Jason Herskowitz
af09c04834 Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-10-03 07:13:36 -04:00
Jason Herskowitz
90d6492de6 Really square all the headphone pngs 2011-10-03 07:13:32 -04:00
Hugo Lindström
73bcbd2590 Merge pull request #41 from hugolm84/master
Fix for spotify playlist append action
2011-10-03 01:46:18 -07:00
Hugo Lindström
faf3558754 Also append playlist content 2011-10-03 10:43:46 +02:00
Hugo Lindström
37719a247e Merge pull request #40 from hugolm84/master
Allow dropping sources in to trackview/sourcetree and do appropriate action
2011-10-03 01:31:01 -07:00
Hugo Lindström
08df9f924f Less debug 2011-10-03 10:16:54 +02:00
Hugo Lindström
5812b2bec1 Support dropping sources in pl and sourcetree. Append or create 2011-10-03 10:14:18 +02:00
Leo Franchi
1d54be04e0 Handle multiple spotify/xspf links 2011-10-02 21:25:21 -04:00
Leo Franchi
de98665b00 less debug 2011-10-02 21:25:21 -04:00
Leo Franchi
f23af07f6a TWK-393: Play immediately when dropping something onto audiocontrols 2011-10-02 21:25:21 -04:00
Leo Franchi
9904367106 Proper append drop job type for playlist drops 2011-10-02 21:22:42 -04:00
Leo Franchi
46a73566f5 Don't create a new revision when resolvign is finished if we've been deleted meanwhile 2011-10-02 18:05:32 -04:00
Leo Franchi
2de19a1c94 TWK-471: Show config UI for resolvers that have one as soon as you add the resolver 2011-10-02 17:38:23 -04:00
Leo Franchi
5594e25dcf less debug 2011-10-02 17:25:38 -04:00
Leo Franchi
0c47327fc4 Open the queue on a drag-hover after a short delay, to allow drag-to-add when it's closed 2011-10-02 17:25:38 -04:00
Leo Franchi
d6bf6744d8 Fix appending spotify tracks 2011-10-02 17:25:38 -04:00
Leo Franchi
094e8653ff Properly name artist stations 2011-10-02 17:25:38 -04:00
Leo Franchi
5d6f31a25d nm, can't rely on activated() as that depends on per-platform click settings 2011-10-02 16:42:09 -04:00
Leo Franchi
545b6abfa1 Add itunes.png to resource file 2011-10-02 15:55:16 -04:00
Leo Franchi
d8270bddfa TWK-490: Work harder at not selecting inactive items 2011-10-02 15:54:09 -04:00
Leo Franchi
dfb03eabe6 Add itunes pixmap and fix job creation 2011-10-02 15:26:49 -04:00
Leo Franchi
6ea9dc4f1b Create artist filters when dragging a query from the artist in audiocontrols 2011-10-02 14:42:13 -04:00
Leo Franchi
acfaf3970e Check mimedata source on osx as Qt::DropAction is not reliable. Also, minor cleanups 2011-10-02 13:00:50 -04:00
Leo Franchi
4402bd8f03 Add files 2011-10-02 12:20:56 -04:00
Leo Franchi
56280db289 Support new spotify server-side parsing, courtesy of Hugo. Thanks! 2011-10-02 12:19:22 -04:00
Leo Franchi
6ebc103bc5 Add adventurousness as filter param 2011-10-02 11:12:04 -04:00
Leo Franchi
a40253da26 Don't do more work than we need to. Use track ids as unique catalog itemids 2011-10-01 09:44:16 -04:00
Leo Franchi
8f181bc4a0 Changed wording and add a tooltip 2011-09-30 19:03:03 -04:00
Leo Franchi
625dc0304b Handle catalogs more gracefully in dynamic playlists
Standardize some code

Propertify

Misc catalog fixes

Clean up by hacking
2011-09-30 18:39:24 -04:00
Leo Franchi
5f9c21120d Add keep-in-synch support to EchonestCatalogSynchronizer
be extra safe
2011-09-30 18:39:21 -04:00
Leo Franchi
1e6bbba189 More work on getting basic uploading to work, and showing in echonest controls 2011-09-30 18:38:11 -04:00
Leo Franchi
13ac8c093a Add a qnr mediastream WIP to support qnetworkreply QIODevices 2011-09-30 18:38:10 -04:00
Leo Franchi
d7e68f3a1d Add dbmigrate scrip, other misc work 2011-09-30 18:37:59 -04:00
Jeff Mitchell
d60b38b3aa Properly handle order in which mtime update and file delete commands are
run in relation to the rest of scanning
2011-09-30 18:28:01 -04:00
Jeff Mitchell
e47b750d21 Remove confusing manualFull variable that got passed all the way into
scanners, use faster delete command when doing a full rescan
2011-09-30 18:00:59 -04:00
Jeff Mitchell
ff764df4af Eep, a return is in order 2011-09-30 17:48:06 -04:00
Jeff Mitchell
630439cddf Pedantic whitespace fixing 2011-09-30 17:11:01 -04:00
Jeff Mitchell
8b477e1f71 I'm an idiot 2011-09-30 17:10:38 -04:00
Jeff Mitchell
e021695230 Next try :-) 2011-09-30 17:09:31 -04:00
Jeff Mitchell
70f00872a1 Fix deleteAll 2011-09-30 16:50:16 -04:00
Jeff Mitchell
f14ae332eb Make faster 2011-09-30 16:47:46 -04:00
Jeff Mitchell
76ff49a8ba Proper ID generation 2011-09-30 16:06:35 -04:00
Jeff Mitchell
dad726b6ca Remove unused return parameter 2011-09-30 14:53:18 -04:00
Jeff Mitchell
4aa8ec6bb8 Update deletefiles commands to, well, work. Maybe. 2011-09-30 14:46:36 -04:00
Leo Franchi
757f1c6175 Fix some moer stuff 2011-09-28 19:36:02 -04:00
Leo Franchi
cfa5c9932e Cleanup commented out code 2011-09-28 19:00:25 -04:00
Leo Franchi
4bbb07ee1f Add bigger headphone icon 2011-09-28 19:00:25 -04:00
Leo Franchi
66581fcaa2 Refactor latching into it's own manager for easier handling, and clean up some corner cases 2011-09-28 19:00:25 -04:00
Leo Franchi
b83e9bbf82 Better icon for spotify, and scale better 2011-09-28 19:00:25 -04:00
Jason Herskowitz
48a3ad29ff Center headphone icon on square canvas 2011-09-28 15:21:22 -04:00
Christian Muehlhaeuser
cede16bc50 * Fixed collection-less results being marked offline. 2011-09-28 12:47:16 +02:00
Christian Muehlhaeuser
e57105669c * Fixed showing a text-less job item for fulltext search queries. 2011-09-28 01:06:49 +02:00
Christian Muehlhaeuser
17480fd887 * Fixed not advancing to next track within official releases tree-view. 2011-09-28 01:02:39 +02:00
Christian Muehlhaeuser
42d8476ea1 * Fixed BreakPad on win32, I hope. 2011-09-28 00:21:17 +02:00
Christian Muehlhaeuser
d901f0ba86 * Fixed silly compiler warning. 2011-09-28 00:05:44 +02:00
Christian Muehlhaeuser
cea780b85b * Fixed moving tracks within a playlist. 2011-09-28 00:04:48 +02:00
Christian Muehlhaeuser
381e89d3df * Fixed mass-reresolving. 2011-09-27 23:47:12 +02:00
Christian Muehlhaeuser
b4a8e32f44 * Fixed re-resolving after sources / resolvers go offline. 2011-09-27 19:54:37 +02:00
Christian Muehlhaeuser
26a7d37298 * Only sync lucene index once (at most) per sync. 2011-09-27 18:18:05 +02:00
Jason Herskowitz
9291c75669 Bigger headphone image for when needed 2011-09-26 15:21:34 -04:00
Jeff Mitchell
f61d0a07b1 Add 60 second timer to send out zeroconf advertisements. Fixes issues with peers never appearing. 2011-09-24 13:13:41 -04:00
Jeff Mitchell
999e0ad4c2 Remove compile warnings 2011-09-24 08:15:16 -04:00
Christian Muehlhaeuser
1721a0b693 * Some more Windows-related Breakpad fixes. 2011-09-24 11:28:16 +02:00
Christian Muehlhaeuser
2ceb075706 * Also compile Breakpad class on all platforms. 2011-09-24 11:18:39 +02:00
Christian Muehlhaeuser
9a84a7deea * Helps to include headers. 2011-09-24 11:01:46 +02:00
Christian Muehlhaeuser
1f6323941b * Enable BreakPad on Windows. 2011-09-24 10:57:21 +02:00
Christian Muehlhaeuser
c6c91181ab * Added CrashReporter.exe to NSIS template. 2011-09-24 10:31:48 +02:00
Dominik Schmidt
e4e9f1bec8 Enable building breakpad on windows 2011-09-24 01:33:46 +02:00
Leo Franchi
18d9360ad3 Fix crash and shrink headphones 2011-09-23 12:44:07 -04:00
Leo Franchi
efbbdf1e72 Show headphone icon as on for the local source if you are listening along to someone 2011-09-23 12:44:07 -04:00
Leo Franchi
624c05bdf4 Allow script resolvers to register a url handler 2011-09-23 12:44:07 -04:00
Christian Muehlhaeuser
e0d63535a6 * Correctly sort recently played tracks on Dashboard and filter out irrelevant tracks, which speeds up syncing. 2011-09-23 18:32:47 +02:00
Leo Franchi
7832dd42b2 Guard against null source 2011-09-23 10:51:25 -04:00
Christian Muehlhaeuser
d49294d288 * Fixed TWK-522: Queries could not be activated in ArtistView. 2011-09-23 13:38:37 +02:00
Christian Muehlhaeuser
b84a884387 * Fixed TWK-523: Don't ignore tracks without an album name when filtering. 2011-09-23 13:29:22 +02:00
Christian Muehlhaeuser
9eeed5223c * Fixed crash in TreeProxyModel. 2011-09-23 12:23:37 +02:00
Leo Franchi
f520b6d5d0 Handle re-latches 2011-09-22 18:02:30 -04:00
Leo Franchi
d3ce2162ca Don't accept a drop (even though our flags should block it) to fall through if the playlist is busy 2011-09-22 17:44:24 -04:00
Leo Franchi
1cc1ba2b7a Show headphones next to a source's now playing track to listen along 2011-09-22 17:30:15 -04:00
Leo Franchi
6c0d984990 Prep for headphones-on-avatar 2011-09-22 17:30:15 -04:00
Leo Franchi
08e4da1c8a Enable mouse tracking so all platforms get temp page delete button 2011-09-22 12:40:01 -04:00
Jason Herskowitz
ba77ca4292 Add small red headphone png for use in sidebar 2011-09-21 22:03:25 -04:00
Jason Herskowitz
398d2c7cce Scale down headphone-off.png to 20px wide 2011-09-21 22:00:38 -04:00
Jason Herskowitz
b513a34fb8 Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-09-21 21:36:16 -04:00
Jason Herskowitz
272c31f132 Add icon to use for unselected Listen Along icon 2011-09-21 21:34:56 -04:00
Leo Franchi
ef9a790df0 Try an alternative Lion check 2011-09-21 16:49:09 -04:00
Leo Franchi
f020df31d2 Emit sizehint changed when row count changes, heh 2011-09-21 09:32:52 -04:00
Leo Franchi
d26cf3de9d fix flicker in showing/hiding jobsview 2011-09-20 22:50:44 -04:00
Leo Franchi
6af4ff6537 A bit more padding between the end of the main text and the right column 2011-09-20 22:36:48 -04:00
Leo Franchi
5c4a7dd273 increase size of row 2011-09-20 21:53:51 -04:00
Jason Herskowitz
41fb2ee1dc More darker greener downloader iconer 2011-09-20 21:52:07 -04:00
Leo Franchi
656221dcc0 Use new spotify png instead of jpg 2011-09-20 21:47:48 -04:00
Jason Herskowitz
2b8825f814 Darker green for downloading icon 2011-09-20 21:46:28 -04:00
Jason Herskowitz
020da4d5c8 Adding spotify icon as .png with transparent background to use in jobview 2011-09-20 21:43:23 -04:00
Jason Herskowitz
e0d1fb72a8 Some new and colorfied jobview icons 2011-09-20 21:35:40 -04:00
Leo Franchi
6d61173bca Avoid tomahawkapp.h in .mm files 2011-09-20 18:16:38 -04:00
Leo Franchi
0f4b1bc91b Try another way to Lion-check 2011-09-20 17:52:54 -04:00
Leo Franchi
36738fc9e4 Show Lion full-screen toggle if on Lion 2011-09-20 16:40:54 -04:00
Leo Franchi
5750f51bdd Fix shared pointer forward declaration 2011-09-20 14:00:41 -04:00
Leo Franchi
c569678a26 Fix jagged line in jobsview 2011-09-20 14:00:41 -04:00
Leo Franchi
af19a09a3c Smaller rows, and paint icon a bit bigger 2011-09-20 14:00:41 -04:00
Leo Franchi
92fb2dbb0d End listen along status job if the listener quits tomahawk 2011-09-20 14:00:40 -04:00
Leo Franchi
bc33bd8420 Unlatch whenever a user stops listening along 2011-09-20 14:00:40 -04:00
Leo Franchi
27c2bc1b2d CLean up some logic 2011-09-20 14:00:40 -04:00
Leo Franchi
337be1f989 Better handling of sourcepli 2011-09-20 14:00:40 -04:00
Leo Franchi
6c9c3ce7ec Fix sourcelist returning local source, and send stop listening along msg at right time 2011-09-20 14:00:40 -04:00
Leo Franchi
495fe05a75 Work on latched job action
fixes
2011-09-20 14:00:38 -04:00
Leo Franchi
ab61314e0f Don't accept all drops on playlist items, only what DropJob says we want 2011-09-20 14:00:29 -04:00
Leo Franchi
70c1cc8829 Add a transfer item to jobsview
Add files

work

add file
2011-09-20 14:00:16 -04:00
Leo Franchi
b6c1d06165 Add spotify support to jobsview 2011-09-20 14:00:15 -04:00
Leo Franchi
d40ed14d80 Add logo 2011-09-20 14:00:15 -04:00
Leo Franchi
6970ea39e4 Add new jobs status view 2011-09-20 14:00:10 -04:00
Leo Franchi
2ce5bb1fea fix another bad sharedpointer include 2011-09-20 13:59:39 -04:00
Leo Franchi
6fb920c826 Don't accept all drops on playlist items, only what DropJob says we want 2011-09-19 11:40:34 -04:00
Christian Muehlhaeuser
40dc30044f Merge pull request #38 from Horrendus/small_changes
Small changes to jabber SIP
2011-09-18 06:59:26 -07:00
Christian Muehlhaeuser
b9515d3408 * Potential fix for missing tracks in tree view. 2011-09-17 20:38:11 +02:00
Christian Muehlhaeuser
b99a1a753c * Fixed filter in TreeProxyModel. 2011-09-17 20:24:24 +02:00
Christian Muehlhaeuser
e1d4088d98 * Should fix internal quazip. 2011-09-17 17:06:37 +02:00
Christian Muehlhaeuser
a1cd3cf5bb * Fixed quazip includes. 2011-09-17 16:59:19 +02:00
Christian Muehlhaeuser
cf054875b5 * Make sure to always launch CrashReporter from the directory the Tomahawk executable lives in. 2011-09-17 06:51:52 +02:00
Christian Muehlhaeuser
61e934bacc * Accidentally committed build files in breakpad folder. 2011-09-16 18:21:36 +02:00
Christian Muehlhaeuser
13a1eed144 * Get rid of generic failed() signal in XSPFLoader. 2011-09-16 16:47:38 +02:00
Christian Muehlhaeuser
a2cc3ee2fd * XSPFLoader doesn't depend on QMessageBox any longer. 2011-09-16 16:28:10 +02:00
Christian Muehlhaeuser
483386e440 * Moved QMessageBox out of XSPFLoader and into TomahawkWindow. 2011-09-16 16:27:14 +02:00
Christian Muehlhaeuser
695902d962 * Add CrashReporter to DMG and fix deps. 2011-09-16 15:45:46 +02:00
Christian Muehlhaeuser
6d62fb8c1e * Fixed MacDeploy to look for Qt 4.7.4 (needs proper version check still). 2011-09-16 15:26:47 +02:00
Leo Franchi
9f0febe402 Helps to initialize variables to default values 2011-09-16 09:25:35 -04:00
Leo Franchi
bbb28032e7 Don't create qpixmaps on the stack as this struct is created after QCoreApplication exist sometimes 2011-09-16 09:09:13 -04:00
Stefan Derkits
97b57009c9 Small changes to jabber SIP
Access config less often and read more from member variables
2011-09-16 14:11:35 +02:00
Christian Muehlhaeuser
c96ecd9697 * Unbreak breakpad on Linux. 2011-09-16 13:44:58 +02:00
Christian Muehlhaeuser
e0edb2b15b * Different border for ToggleButtons. 2011-09-16 11:23:27 +02:00
Christian Muehlhaeuser
f32bab7733 * Fix ToggleButton some more. 2011-09-16 11:18:14 +02:00
Christian Muehlhaeuser
bc266e1f7c * Hopefully fixed ToggleButton for all platforms. 2011-09-16 11:00:54 +02:00
Leo Franchi
5b48442006 Create a new playlist from a spotify playlist if dropped anywhere on the sourcetree
Only generate the tracks directly if dragged into a playlist contents
2011-09-15 21:38:32 -04:00
Leo Franchi
bf009c8854 fix warning / hidden virtual function 2011-09-15 21:12:18 -04:00
Leo Franchi
898ad5804e Add some debug for jason 2011-09-15 21:06:47 -04:00
Leo Franchi
dfd36d459b Fix compile without libattica 2011-09-15 21:04:24 -04:00
Leo Franchi
5ceb04e571 More tomahawk debugs 2011-09-15 21:00:23 -04:00
Leo Franchi
4ca29feab1 Add upgrade support for resolvers 2011-09-15 21:00:15 -04:00
Leo Franchi
95e1d8c5a3 Use a richer internal model for attica resolvers, and store important things like version 2011-09-15 19:04:21 -04:00
Jeff Mitchell
22e69bbb8c When the DBID is reset, don't re-read all past DMs. Probably fixes
TWK-513.
2011-09-15 15:00:33 -04:00
Leo Franchi
b8aa4e1bc3 Minor cleanups 2011-09-15 11:13:40 -04:00
Leo Franchi
b6cc9dae09 Fix typo that led to attica script states being forgotten 2011-09-15 09:23:22 -04:00
Leo Franchi
e6a394e8e7 More scroll-by-pixel on all platforms 2011-09-15 09:23:22 -04:00
Leo Franchi
4e09f52b22 make compile with clang 2011-09-15 08:44:22 -04:00
Christian Muehlhaeuser
903ea66b36 * Remove file copy in CMakeLists.txt. 2011-09-15 10:33:03 +02:00
Christian Muehlhaeuser
525072f757 * Removed duplicate definitions. 2011-09-15 10:08:14 +02:00
Christian Muehlhaeuser
b741d163a1 * Added breakpad support for OS X. 2011-09-15 10:05:53 +02:00
Christian Muehlhaeuser
b1a135fff9 * Unbreak non-Linux compiling. 2011-09-15 07:34:07 +02:00
Christian Muehlhaeuser
d8d7347394 * Added breakpad support for Linux. 2011-09-15 07:27:31 +02:00
Christian Muehlhaeuser
d8b07cee9c * Fixed libquazip.dll still missing. 2011-09-15 05:44:44 +02:00
Christian Muehlhaeuser
729c9237fe * Added libattica.dll, too. 2011-09-15 05:27:09 +02:00
Christian Muehlhaeuser
b2fc9cb8ac * Fix Windows installers missing libquazip.dll. 2011-09-15 05:21:20 +02:00
Christian Muehlhaeuser
89c04ea3f6 * Don't abort symbol management when dir already exists. 2011-09-15 04:43:48 +02:00
Christian Muehlhaeuser
93bf2e1bb9 * Added bash helper script for managing minidump symbols. 2011-09-15 04:32:36 +02:00
Leo Franchi
0504bec81d Add a Tomahawk.asyncRequest for async calls, ALL RESOLVERS SHOULD USE THIS 2011-09-14 22:29:05 -04:00
Christian Muehlhaeuser
7f9ded7816 * Scroll by pixel (not item) on all platforms. 2011-09-15 00:56:54 +02:00
Leo Franchi
c915f2f161 TWK-510: Fix overlay not disappearing on new playlists being added to list 2011-09-14 18:47:59 -04:00
Leo Franchi
034510cdda Remove line that slipped in 2011-09-14 18:42:18 -04:00
Leo Franchi
6899b38944 Only auto-resolve if it's a single track or a list, not a playlist 2011-09-14 18:27:19 -04:00
Leo Franchi
b3aa6c9a6c Fix workaround 2011-09-14 18:14:28 -04:00
Leo Franchi
eddc7bbf4e Remove some features, fix up whitespace and a few misc other things
Some fixups, parse spotify tracks in result
2011-09-14 18:11:06 -04:00
hugolm84
9bc112090d Comments on workaround for playlist update
nothing
2011-09-14 18:10:09 -04:00
hugolm84
0b37514cfe Removed events, not needed
spotify things
2011-09-14 18:09:29 -04:00
hugolm84
e93ef1dd6e Adding export to Spotify 2011-09-14 18:09:02 -04:00
hugolm84
fe7b798cda Removed an action 2011-09-14 18:08:19 -04:00
hugolm84
a0cd7869bc Loop 2011-09-14 18:08:19 -04:00
hugolm84
c2d0382bae Just some more qDebug 2011-09-14 18:08:19 -04:00
hugolm84
bb09c15c30 Just some qDebug 2011-09-14 18:08:19 -04:00
hugolm84
0a68b36295 Added drop event to playlistview 2011-09-14 18:08:18 -04:00
hugolm84
b4a8154eae Fixed updaterevision on empty playlist from drag 2011-09-14 18:08:16 -04:00
hugolm84
869640b2e2 Fix indent 2011-09-14 18:07:24 -04:00
hugolm84
de982f8b50 Added itunes artist link support 2011-09-14 18:07:24 -04:00
hugolm84
0ed8e62de8 Added abillity to drop itunes album link aswell 2011-09-14 18:07:23 -04:00
hugolm84
5f677d4c83 Updated header 2011-09-14 18:07:23 -04:00
hugolm84
6218cec38a Adding Itunes parser 2011-09-14 18:07:23 -04:00
hugolm84
c2d9baa9d9 Updated checkFinished 2011-09-14 18:07:14 -04:00
Leo Franchi
8f6cc7846a GCC doesn't like forward-declared shared pointers as default args, CLang does. 2011-09-14 17:04:25 -04:00
Leo Franchi
a2f139c204 Fix warnings that led to shared pointers not being correctly deleted.
See upcoming email to tomahawk-devel@ for how to avoi them in the future, this was a PITA and I don't want to do it again.
2011-09-14 16:40:58 -04:00
Christian Muehlhaeuser
22d3048017 * Tried to fix OS X layout of ToggleButton. 2011-09-14 08:19:39 +02:00
Leo Franchi
1367d82006 A bit nicer resolver error handling 2011-09-13 22:35:30 -04:00
Christian Muehlhaeuser
9572c440ea * Fixed unbalanced QPainter save / restore. 2011-09-13 11:03:58 +02:00
Christian Muehlhaeuser
45b57b715f * Use a QWeakPointer to guard Connection pointers. 2011-09-13 10:47:10 +02:00
Christian Muehlhaeuser
48e3eb877d * Fixed issue where Servent would never emit ready when UPnP returns an invalid ip. 2011-09-13 09:02:23 +02:00
Christian Muehlhaeuser
9ec9fb9362 * Fixed playlist issues which caused dupe playlist_items. 2011-09-13 07:05:19 +02:00
Christian Muehlhaeuser
f32c1f1338 * Don't assert when creating a fresh playlist. 2011-09-12 21:06:42 +02:00
Leo Franchi
4f14ce96cb Fix hanging on shutdown introduced by refactor commit 2011-09-12 12:28:25 -04:00
Leo Franchi
aeeff01d64 Don't send config message to resolvers more than once 2011-09-12 11:20:51 -04:00
Christian Muehlhaeuser
2bc71743de * Fix for getting out of sync with locally changed playlists. 2011-09-12 15:17:37 +02:00
Christian Muehlhaeuser
0cffdf124a * Assert when optimistic locking fails. 2011-09-12 14:45:08 +02:00
Christian Muehlhaeuser
789b698e7a * Keep checking revision queue. 2011-09-12 13:55:55 +02:00
Christian Muehlhaeuser
0dbe87e2f4 * Don't update playlist revision with result hints if it's already out of date. 2011-09-12 13:52:54 +02:00
Christian Muehlhaeuser
0e069c6b88 * Eliminate extra margin on OSX. 2011-09-12 11:33:55 +02:00
Christian Muehlhaeuser
f4ccb9f802 * Updated README. 2011-09-12 11:09:47 +02:00
Christian Muehlhaeuser
3bf2fa1237 * Fixed not finding / using local libquazip. 2011-09-12 10:56:39 +02:00
Christian Muehlhaeuser
7609906994 * Fix compiling. 2011-09-12 10:46:48 +02:00
Christian Muehlhaeuser
c626a161cd * A 'little' spring cleaning. Or at least that's what it feels like. Exhausted. 2011-09-12 10:41:39 +02:00
Christian Muehlhaeuser
bcf84c2b8c * Store last processed dbcmd guid in Source in case a DBSyncConnection dies on us. 2011-09-12 08:30:36 +02:00
Christian Muehlhaeuser
d15878555f * Let's put an 'empty dbcmd list' assert in DBSyncConnection and see if we ever hit this condition. 2011-09-12 08:18:31 +02:00
Christian Muehlhaeuser
5121d060db * Moved more debug output to LOGVERBOSE level. 2011-09-12 07:58:15 +02:00
Christian Muehlhaeuser
f48c2c9b5c * Cleanup debug output a bit. 2011-09-12 07:28:40 +02:00
Christian Muehlhaeuser
2c9c5ea8bb * Fixed shutdown sequence while ongoing database replication. 2011-09-12 07:16:47 +02:00
Christian Muehlhaeuser
2b8a1fa2ca * Request last known guid from command queue if it's filled. 2011-09-12 06:33:22 +02:00
Christian Muehlhaeuser
6c55d1e510 * Make DBSyncConnection simpler and hopefully more fail-safe. 2011-09-12 06:29:40 +02:00
Christian Muehlhaeuser
577a706b9f * Remove breakpad related stuff again. 2011-09-12 02:54:59 +02:00
Christian Muehlhaeuser
e7d78ea52e * Moved AtticaManager and all its deps into libtomahawk. 2011-09-12 02:52:52 +02:00
Dominik Schmidt
2b947254d5 Convert quazip to unix linebreaks 2011-09-12 01:24:35 +02:00
Dominik Schmidt
32da3965f8 Fix win compilations 2011-09-12 01:21:10 +02:00
Leo Franchi
44e10db28d Slightly wider dialog 2011-09-11 18:16:24 -04:00
Leo Franchi
bc96846839 Merge branch 'ghns'
Conflicts:
	src/settingsdialog.cpp
	src/stackedsettingsdialog.ui
2011-09-11 18:15:30 -04:00
Leo Franchi
1425b68c39 Fix compile without libattica 2011-09-11 17:29:37 -04:00
Leo Franchi
f3e45bd240 Sort by download count for now, and only fetch a proper url 2011-09-11 17:18:51 -04:00
Leo Franchi
d2bd6b8744 Support resolver icons 2011-09-11 17:18:51 -04:00
Leo Franchi
dbb9d14deb Refactor the resolver system a bit so we have real objects instead of paths 2011-09-11 17:18:35 -04:00
Leo Franchi
6ec2fae320 Better title for dialog :) 2011-09-11 17:18:35 -04:00
Leo Franchi
ef81026ffb Enable as soon as we install a resolver 2011-09-11 17:18:34 -04:00
Leo Franchi
45a276cf33 Be safer 2011-09-11 17:18:29 -04:00
Leo Franchi
c6259d2feb make compile without attica 2011-09-11 17:18:28 -04:00
Leo Franchi
3a7cab851d Functional downloading, installing, uninstalling, managing 2011-09-11 17:18:22 -04:00
Leo Franchi
158bbff8de add quazip and some code to unpack 2011-09-11 17:18:22 -04:00
Leo Franchi
3f457d4a00 Add a view for libattica-provided GHNS resolvers 2011-09-11 17:17:56 -04:00
Christian Muehlhaeuser
9cb06d70b2 * Added .DS_Store to .gitignore. 2011-09-11 10:48:59 +02:00
Christian Muehlhaeuser
e616e33239 * Tweak some more on OS X. 2011-09-11 09:15:58 +02:00
Christian Muehlhaeuser
c2c6ace3e5 * Fix layout some more. 2011-09-11 08:58:11 +02:00
Christian Muehlhaeuser
7fa7fe3886 * Try to fix settings dialog margin a bit. 2011-09-11 08:54:34 +02:00
Christian Muehlhaeuser
8f61715b6d * Remove obsolete filepath picker method. 2011-09-11 08:46:36 +02:00
Christian Muehlhaeuser
e4918e777e * Fixed TWK-91: Support multi-folder scanning. 2011-09-11 08:41:29 +02:00
Jeff Mitchell
19da9ef754 Properly check for empty directory so the right code path for deleting individual files on scan is hit...doesn't fix update problems though, but at least the right file urls are now making it to Collection::deleteTracks 2011-09-10 17:39:51 -04:00
Jeff Mitchell
0a07750efb How about not telling the source list we're done until we're actually done 2011-09-10 17:13:42 -04:00
Jeff Mitchell
c78fe2f701 Actually remove deleted files from the collection 2011-09-10 14:49:19 -04:00
Jeff Mitchell
9ea1fa7f4b Pedantic whitespace fixing 2011-09-10 14:07:51 -04:00
Christian Muehlhaeuser
b9087ad7b7 * Make results singletons, based on its url. Now we can call Result's toQuery() without re-resolving. Much nicer. 2011-09-10 13:16:38 +02:00
Christian Muehlhaeuser
efaa1eb18f * If we couldn't shorten the url, emit the longUrl as shortUrl. 2011-09-10 12:07:22 +02:00
Christian Muehlhaeuser
89f39f1a1f * Use short-urls when copying track url to clipboard. 2011-09-10 12:00:30 +02:00
Christian Muehlhaeuser
b0ae9fead5 * Fix GlobalActionManager's shortenUrl. 2011-09-10 11:46:05 +02:00
Alejandro Wainzinger
983acfc7e4 Fix URL encoding. 2011-09-10 02:34:25 -07:00
Alejandro Wainzinger
79920efe4f Add error checking when can't get short url. 2011-09-10 02:16:15 -07:00
Alejandro Wainzinger
b250d13362 Add support for getting short links, make Adium use it by default. 2011-09-10 02:16:15 -07:00
Alejandro Wainzinger
df13198c5c First work at shorten-link stuff, does not compile. 2011-09-10 02:16:15 -07:00
Christian Muehlhaeuser
202c4b821e * No need to access SourceList's singleton inside SourceList. 2011-09-10 09:35:50 +02:00
Christian Muehlhaeuser
e789066b9b * Fixed SourceList's get( id ) for id being 0. 2011-09-10 09:34:17 +02:00
Christian Muehlhaeuser
46ffedf530 * Set current track's playlist correctly. 2011-09-10 09:29:17 +02:00
Christian Muehlhaeuser
fd72e7fa4e * Remove obsolete ruby scripts in liblastfm. 2011-09-10 09:28:40 +02:00
Christian Muehlhaeuser
a9e08a7104 * Gnah. Fix wrong include. 2011-09-10 08:44:21 +02:00
Christian Muehlhaeuser
442a933f9b * Fixed OS X compile, some more. 2011-09-10 08:41:51 +02:00
Christian Muehlhaeuser
a2d6d82d83 * Fix OS X compile. 2011-09-10 08:37:29 +02:00
Christian Muehlhaeuser
2a7adda968 * Manually crafted layout for the social actions in AudioControls. 2011-09-10 07:21:06 +02:00
Christian Muehlhaeuser
98aaec0ffd * Queue refreshs in RecentPlaylistsModel. Prevents nasty flickering on startup. 2011-09-10 07:02:43 +02:00
Christian Muehlhaeuser
c0183aa359 * Can't reparent nam in liblastfm. 2011-09-10 07:02:03 +02:00
Christian Muehlhaeuser
c3197a39b0 * Be consistent with 'My Collection'. 2011-09-10 06:16:00 +02:00
Christian Muehlhaeuser
6789c1f032 * Improved collection syncing, this should prevent any dupes. 2011-09-10 06:00:19 +02:00
Christian Muehlhaeuser
6fe1d178dd * Thread-safety for liblastfm. 2011-09-10 05:45:57 +02:00
Christian Muehlhaeuser
859d2e8641 * Fixed crash in AudioEngine. 2011-09-10 05:32:31 +02:00
Christian Muehlhaeuser
3787eefa48 * Added Xspf.h to moc headers. 2011-09-10 05:20:21 +02:00
Christian Muehlhaeuser
54f280f792 * Yet another final annoying win fix... :-/ 2011-09-10 05:11:10 +02:00
Christian Muehlhaeuser
401f691359 * Yet another final win fix... :-/ 2011-09-10 05:08:45 +02:00
Christian Muehlhaeuser
77b0adaf7f * Another final win fix... :-/ 2011-09-10 05:05:48 +02:00
Christian Muehlhaeuser
7b5ab89fef * Final win fix. 2011-09-10 05:02:45 +02:00
Christian Muehlhaeuser
464170cca9 * Try fix win compiling some more. 2011-09-10 04:59:38 +02:00
Christian Muehlhaeuser
dcdb937cf3 * Fixed ws.cpp with Qt 4.8. 2011-09-10 04:50:54 +02:00
Christian Muehlhaeuser
2c180c6123 * Try fixing win compile some more. 2011-09-10 04:45:44 +02:00
Christian Muehlhaeuser
1540b7b5bf * Fixed win32 compile. 2011-09-10 04:38:31 +02:00
Christian Muehlhaeuser
030b91ba9f * Updated liblastfm2 to latest snapshot. 2011-09-10 04:34:34 +02:00
Christian Muehlhaeuser
76d4821295 * Moved OS X definitions to CMakeLists.txt, so we can easily re-merge upstream of miniupnp. 2011-09-10 03:43:35 +02:00
Christian Muehlhaeuser
e72cf5423c * Updated README. 2011-09-09 13:07:59 +02:00
Christian Muehlhaeuser
ad7ac35422 * Fixed layout margins after adding QSplitters. 2011-09-09 13:04:06 +02:00
Christian Muehlhaeuser
ea21848811 * Greatly improved sidebar performance by pre-caching all QIcons. 2011-09-09 12:14:40 +02:00
Christian Muehlhaeuser
a65d037def * Fixed crash bug in AudioEngine: timer-events can arrive after we called stop. 2011-09-09 11:29:22 +02:00
Christian Muehlhaeuser
a667fbd8b4 * Fixed ToggleButton not staying 'down' as it should. 2011-09-09 10:42:00 +02:00
Christian Muehlhaeuser
92240b6e0c * Added InfoSystem support to TreeModel.
* Added 'Official Releases Only' toggle-button on Artist Page.
* Cleaned up a few sources.
2011-09-09 10:27:37 +02:00
Christian Muehlhaeuser
20eeaf73ac * Added ToggleButton, a header-style PushButton with a toggle state. 2011-09-09 10:24:29 +02:00
Christian Muehlhaeuser
a1314347f9 * Try to fix OS X compile. 2011-09-09 02:31:38 +02:00
Christian Muehlhaeuser
fab69e3cae * Updated miniupnp and added blocked devices support to libportfwd. 2011-09-09 02:26:22 +02:00
Christian Muehlhaeuser
cc2cc8397e * Added debug output to DBSyncConnection. 2011-09-07 20:32:47 +02:00
Christian Muehlhaeuser
fe7d128056 * Fixed TWK-499: Update playlist either wether it's been a move or a copy. 2011-09-07 05:33:13 +02:00
Christian Muehlhaeuser
d3a8f57e1c * Always use tr() when defining user visible text. 2011-09-07 05:23:29 +02:00
Christian Muehlhaeuser
96c279275e * On non X11 set our default volume to 75%. 2011-09-07 05:11:00 +02:00
Christian Muehlhaeuser
d6a504c38b * Fixed TWK-416: Show when a playlist was created. 2011-09-07 04:53:15 +02:00
Christian Muehlhaeuser
b1224c0a2b * Fixed TWK-379: Properly parent 'Export Playlist' dialog and store/restore last used path. 2011-09-07 04:42:05 +02:00
Christian Muehlhaeuser
694787c8d6 * Update ChangeLog. 2011-09-07 04:41:26 +02:00
Christian Muehlhaeuser
8a6254c47e * Fixed TWK-101: Don't cancel system logout / shutdown. 2011-09-07 04:17:11 +02:00
Dominik Schmidt
216d4511f7 Fix cmake for clang 2011-09-06 23:45:33 +02:00
Christian Muehlhaeuser
043aa8755d * Use Q_WS_* instead of WIN32 / Q_OS_*. 2011-09-06 08:53:08 +02:00
Christian Muehlhaeuser
e772dcecad * Fixed TWK-438: Get rid of splitter handles in the sidebar. 2011-09-06 08:16:43 +02:00
Christian Muehlhaeuser
ac99970bd4 * Get rid of compiler warning. 2011-09-06 08:13:47 +02:00
Christian Muehlhaeuser
7547250631 * Fixed TWK-464: Remove items from queue if you manually start them from there. 2011-09-06 07:45:42 +02:00
Christian Muehlhaeuser
06bd6edc8c * Fixed TWK-380: Added & cleaned up splitters on a few pages. 2011-09-06 07:26:26 +02:00
Christian Muehlhaeuser
98aa2a447e * Fixed TWK-436: Use search icon for search pages. 2011-09-06 06:52:39 +02:00
Christian Muehlhaeuser
00973e6365 * Use cached sortname instead of recalculating it over and over again. 2011-09-06 06:43:52 +02:00
Christian Muehlhaeuser
dc11760640 * Fixed TWK-281: Ignore leading the when sorting by artist name. 2011-09-06 06:35:14 +02:00
Christian Muehlhaeuser
1f955ae8d5 * Be prepared for avatar-less sources. 2011-09-06 05:59:47 +02:00
Christian Muehlhaeuser
8c6ef2f533 * Fixed TWK-378: Show source avatar when viewing a collection. 2011-09-06 05:49:33 +02:00
Christian Muehlhaeuser
d4f12d6d33 * Fixed TWK-481: New Playlist dialog is too small. 2011-09-06 05:35:01 +02:00
Christian Muehlhaeuser
00f2195dd2 * Cleaned up StyleHelper and use it in ContextWidget. 2011-09-06 05:14:45 +02:00
Christian Muehlhaeuser
23ecf1264f * Renamed contextual view to 'Footnotes'. 2011-09-06 04:55:50 +02:00
Christian Muehlhaeuser
7fcdbe9c9e * Improved score calculation and handling. Tomahawk now calculates all the scores internally and doesn't rely on resolvers providing it anymore. 2011-09-06 04:40:08 +02:00
Christian Muehlhaeuser
8fa8f9b733 * Fixed crashing when quickly resetting filter patterns in TreeProxyModel. 2011-09-06 03:45:13 +02:00
Christian Muehlhaeuser
7a731c0fa5 * Guard Connection pointers with a QWeakPointer. 2011-09-06 03:06:56 +02:00
Jason Herskowitz
700e53eb2c Adding images for footnotes and queue headers. Open, close, expand and collapse. 2011-09-05 08:45:25 -04:00
Christian Muehlhaeuser
5968d6c903 * Installing a scene filter doesn't work. Not needed either. 2011-09-05 12:28:46 +02:00
Christian Muehlhaeuser
c7317dbe54 * Updated ChangeLog. 2011-09-05 12:26:00 +02:00
Christian Muehlhaeuser
031f52f6b7 * Only linux seems to behave wrong here... maybe it's Oxygen-style. Need to investigate. 2011-09-05 11:58:07 +02:00
Christian Muehlhaeuser
fa6579f8f0 * Static gradient for InfoBar speeds up window resizing. 2011-09-05 11:04:02 +02:00
Christian Muehlhaeuser
c9c99d58ab * Fixed search-input layout on non-OSX. 2011-09-05 10:56:29 +02:00
Christian Muehlhaeuser
b9d6548243 * Moved infobar/ out of the playlist/ dir. 2011-09-05 10:40:12 +02:00
Christian Muehlhaeuser
914c02b7ab * Moved widgets out of utils/ dir. 2011-09-05 10:37:14 +02:00
Christian Muehlhaeuser
b83a7bed00 * Properly elide artist's biography on artist-page. 2011-09-05 10:28:21 +02:00
Christian Muehlhaeuser
f3c19779cd * Fine-tuned filtering tree-models. 2011-09-05 09:26:45 +02:00
Christian Muehlhaeuser
9ef5894685 * Move TreeModel filtering to TreeProxyModel. 2011-09-05 06:32:40 +02:00
Christian Muehlhaeuser
71117d3c42 * Filter word by word, not the total term, e.g. 'rock you we will' finds 'we will rock you'. 2011-09-05 05:50:08 +02:00
Casey Link
079f758b66 Update the WhatsHot widget to fetch and correctly display charts based on the selection in the breadcrumb. For the moment I've removed the right panel, but it will be coming back (probably). 2011-09-04 22:37:09 -05:00
Casey Link
dd83f121c8 When the selected crumb doesn't have any children, emit the parent as having been selected. 2011-09-04 22:37:09 -05:00
Casey Link
8f326ee41b Add a signal to tell the outside world when the crumb changed. 2011-09-04 22:37:09 -05:00
Casey Link
f32320fd67 Fix detection of tracks/artists charts in lastfm 2011-09-04 22:37:09 -05:00
Casey Link
0a7e49f6d5 Change how chart lists and charts are passed through the info system. 2011-09-04 22:37:09 -05:00
Christian Muehlhaeuser
33d8c0314c * Allow filtering by album name. 2011-09-05 04:56:11 +02:00
Christian Muehlhaeuser
b73d5b4424 * Fixed filtering by artist name. 2011-09-05 04:52:28 +02:00
Christian Muehlhaeuser
c4a450e5de * Add filter capabilities to TreeModel / -View. 2011-09-05 04:50:30 +02:00
Jason Herskowitz
b32ac0cf04 New filter icon if we can use it with native search component 2011-09-04 22:10:47 -04:00
Christian Muehlhaeuser
52c0e9993b * Fixed filter behaviour. 2011-09-05 03:52:41 +02:00
Christian Muehlhaeuser
1c3b3e9173 * Bring back the filter, move deps into libtomahawk/thirdparty/. 2011-09-05 02:51:41 +02:00
Christian Muehlhaeuser
9690276079 * Fixed TWK-278: Store columns after reordering and introduce ViewHeader as a base-class for self-restoring QHeaderViews. 2011-09-04 12:35:52 +02:00
Christian Muehlhaeuser
58362883b3 * Some more cleanups. 2011-09-04 08:58:09 +02:00
Christian Muehlhaeuser
5b8f35294b * Don't react to hover events unless TrackView is in Detailed mode. 2011-09-04 08:49:37 +02:00
Christian Muehlhaeuser
12c5b18b05 * Resize ContextPage's columns. 2011-09-04 08:45:31 +02:00
Christian Muehlhaeuser
05315b14bd * Add forgotten ui file. 2011-09-04 07:25:21 +02:00
Christian Muehlhaeuser
dd842a1393 * Removed ugly queue button for good. 2011-09-04 07:23:54 +02:00
Christian Muehlhaeuser
a467b8f2e8 * Added initial ContextView. Yikes. 2011-09-04 04:23:10 +02:00
Christian Muehlhaeuser
5dfb3ccc5c * Fixed TWK-492: Don't crash when pressing enter in an empty playlist. 2011-09-02 01:18:57 +02:00
Casey Link
776a2deb91 Make the root icon clickable and expose a signal. 2011-09-01 00:29:05 +00:00
Casey Link
c79985ad86 When there isn't enough room to display all the crumbs, collapse from the left. 2011-09-01 00:28:38 +00:00
Casey Link
aeaf569eb1 Remove slot/signal connection leftover from testing. 2011-08-31 17:02:16 -05:00
Casey Link
e05b8b1843 If the current crumb doesn't have any children, do not show the arrow. 2011-08-31 17:00:04 -05:00
Casey Link
a6452dbeee A little hack to force the second crumb to automatically expand. 2011-08-31 16:39:09 -05:00
Casey Link
d15daf4a85 Implement the data model for the breadcrumb in the whatshot widget. 2011-08-31 21:23:26 +00:00
Casey Link
16a2f94816 Fix bug in the breadcrumb that prevent buttons from showing up. 2011-08-31 21:23:26 +00:00
Casey Link
7a7de39bf7 Implement ChartInfoCapabilities in the lastfm plugin 2011-08-31 21:23:26 +00:00
Casey Link
37530eeeed Replace the comboboxes in the whatshot widget with the breadcrumb. No data model yet, that is coming soon. 2011-08-31 21:23:26 +00:00
Casey Link
c2fe912277 A breadcrumb widget, tomahawk style. 2011-08-31 21:23:26 +00:00
Christian Muehlhaeuser
0c3a9c61b5 * Don't retrieve anything for invalid TreeModelItems. 2011-08-31 13:01:52 +02:00
Christian Muehlhaeuser
e75e204007 * Fixed crash bug caused by cover fetching and a race condition. 2011-08-31 12:59:44 +02:00
Christian Muehlhaeuser
098999ca8c * Fixed crash bug in AlbumModel. 2011-08-31 11:37:22 +02:00
Alejandro Wainzinger
14e6a7fce4 Return 404 if content is null. 2011-08-30 22:07:53 -07:00
Jeff Mitchell
2bedc3bdd0 Extra safety 2011-08-30 11:55:47 -04:00
Leo Franchi
58bff6af4c style fix 2011-08-30 07:58:51 -04:00
Casey Link
bf03b7b756 Fetch charts data on the event loop to prevent a strange deadlock on startup. 2011-08-29 23:40:52 -05:00
Christian Muehlhaeuser
7f324bc45c * Unbreak OSX compile. 2011-08-30 03:11:47 +02:00
Casey Link
626f9acfac Add missing comma, doh 2011-08-29 19:41:36 -05:00
Casey Link
302dbd0224 Some test documentation for enumns.. lets see what doxygen does. 2011-08-29 19:34:14 -05:00
Casey Link
57dea3061b Add some documentation to the new classes 2011-08-29 19:34:14 -05:00
Christian Muehlhaeuser
3e12072dd9 * TomahawkWindow cleanup. 2011-08-30 02:29:45 +02:00
Christian Muehlhaeuser
be10085958 * Fixed ChangeLog typo. 2011-08-30 02:20:49 +02:00
Casey Link
6e6ff2ae53 Merge branch 'whatshot' 2011-08-29 18:56:12 -05:00
Casey Link
320e5a3252 Fix oopsies leftover from the playlist model rename 2011-08-29 23:55:37 +00:00
Jason Herskowitz
f031d25741 Added fix for Spotify links 2011-08-30 01:30:36 +02:00
Christian Muehlhaeuser
a554ee0fa8 * Fixed TWK-451: Properly parent the friends auth / add dialog. 2011-08-30 00:53:29 +02:00
Christian Muehlhaeuser
f774302623 * Fixed TWK-482: Don't close after showing a jabber friend request. 2011-08-30 00:26:58 +02:00
Leo Franchi
0cea650181 TWK-477: Restore code that was lost during file split, and add a proper license header 2011-08-29 18:10:49 -04:00
Jeff Mitchell
47c515caa4 Do please check your debug for null pointers :-) 2011-08-29 13:13:10 -04:00
Jeff Mitchell
0319e5f2f5 Don't show 0 when there is no albumpos for a track 2011-08-29 12:06:42 -04:00
Jeff Mitchell
39bbd128c2 Change the position of the albumpos column to be next to the album 2011-08-29 11:54:09 -04:00
Casey Link
a25d174f64 Merge branch 'master' into whatshot
Conflicts:
	src/libtomahawk/CMakeLists.txt
2011-08-29 10:43:10 -05:00
Leo Franchi
65709e92ff Add file 2011-08-29 11:27:50 -04:00
Christian Muehlhaeuser
89104fc27d * Added more debug output for playlist errors. 2011-08-29 17:12:25 +02:00
Leo Franchi
28e7413bdd Make QCA2 an optional dep, it's only required for HMAC(md5) for resolvers 2011-08-29 11:09:31 -04:00
Jeff Mitchell
d5a2e4b325 Remove dependency on XComposite on X11. It wasn't actually a dependency
on the library, just the development headers (used to check for th
existence of compositing at runtime, but not necessary for us).
2011-08-29 11:03:28 -04:00
Leo Franchi
bde3d93f6a Changelog++ 2011-08-29 10:50:59 -04:00
Leo Franchi
8ed476ccf6 Add QCA2 as an optional dep to tomahawk as well for HMAC signature generation for resolvers
Also add a helper JS function
2011-08-29 10:49:52 -04:00
Leo Franchi
5c5042769b Update overlay text 2011-08-29 10:49:52 -04:00
Christian Muehlhaeuser
6cca932bf4 * Stick to 80-char max-length for ChangeLog. 2011-08-29 16:20:33 +02:00
Leo Franchi
3b832576af Add new feature to 0.3 changelog 2011-08-29 10:18:46 -04:00
Leo Franchi
fa8746fc70 Sync changelog 2011-08-29 10:17:25 -04:00
Christian Muehlhaeuser
e44a78ba8d * Be safer. 2011-08-29 16:07:57 +02:00
Christian Muehlhaeuser
cf25f3c072 * Some debug and safety meassures. 2011-08-29 16:01:53 +02:00
Jeff Mitchell
4fc7c6415b Fix seeker getting "stuck" if it goes ahead on some tracks 2011-08-28 16:47:14 -04:00
Jeff Mitchell
271e6c480d Re-disable phonon seek checking, for now 2011-08-28 16:23:25 -04:00
Jeff Mitchell
57e72e53f9 Fix seeking for local files; also, disable dragging the seek slider if phonon reports that the object cannot be seeked, to not have ugly jumping around. 2011-08-28 16:13:27 -04:00
Jeff Mitchell
a9a9d11f97 Remove debugging 2011-08-28 14:41:02 -04:00
Jeff Mitchell
4b4cecc027 Finish making the seekslider the sleekslider 2011-08-28 14:38:33 -04:00
Jeff Mitchell
e5f6f40289 Initial work on the sleeker slider 2011-08-28 04:16:18 -04:00
Jeff Mitchell
d2af8a8a39 Fix null pointer crash in treeproxymodel 2011-08-28 03:47:11 -04:00
Jeff Mitchell
7166ba161f Update changelog 2011-08-28 02:23:23 -04:00
Jeff Mitchell
ea0fb3c099 Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-08-28 02:17:49 -04:00
Jeff Mitchell
ea6d892058 Fix regression in audioengine logic when encountering the end of the playlist 2011-08-28 02:16:27 -04:00
Christian Muehlhaeuser
dffb3deebe * Updated ChangeLog. 2011-08-28 06:08:45 +02:00
Christian Muehlhaeuser
c5876c0f9e * Absolutely prevent dupe temp commands from being executed twice. 2011-08-28 05:44:45 +02:00
Christian Muehlhaeuser
89aff8bcbb * Cleaned up database syncing a bit. 2011-08-28 04:50:31 +02:00
Jeff Mitchell
71339862b6 Changelogify Twitter issue 2011-08-27 22:09:45 -04:00
Jeff Mitchell
9e4d320cff Make public/mentions timelines check less often to offset bumping up the dm timer 2011-08-27 22:04:58 -04:00
Jeff Mitchell
cca1ac1532 Some further cleanup and make dms poll a bit more often while keeping the timelines longer 2011-08-27 22:04:24 -04:00
Jeff Mitchell
d8c09ff502 Hopefully really fix the twitter issue 2011-08-27 20:28:59 -04:00
Jeff Mitchell
678eeb1232 Fix twitter saved offer key issue, maybe 2011-08-27 18:00:24 -04:00
Jeff Mitchell
644135c88a Move libqnetwm down one level and hopefully fix building for leo 2011-08-27 16:21:19 -04:00
Jeff Mitchell
dc9f250322 Fix include path 2011-08-27 16:07:53 -04:00
Christian Muehlhaeuser
33a63a45e8 * Fixed mutex deadlock in SourceList. 2011-08-27 21:46:13 +02:00
Leo Franchi
50bce627a8 Show recently created playlists and stations instead of recently looked at. Old model is still there. 2011-08-27 15:28:02 -04:00
Michael Zanetti
49373bdfd0 dont crash when dropping an item with no album to album 2011-08-27 20:37:38 +02:00
Michael Zanetti
f39a982e00 fix dropping of query_ptrs to Top10 2011-08-27 20:37:38 +02:00
Jeff Mitchell
6a12e9fe04 Changelogify++ 2011-08-27 14:02:22 -04:00
Michael Zanetti
16e77cb144 fix dropping of top 10 for albums and tracks 2011-08-27 17:35:48 +02:00
Michael Zanetti
eaca242277 changed the colors to silver 2011-08-27 17:35:48 +02:00
Michael Zanetti
851f9124ba increase font size in dropmenu. People say it was too small for distinguishing normal and bold. 2011-08-27 17:35:48 +02:00
Michael Zanetti
01c2927339 paint the hovered item w/o QStyle::State_Selected but w/ QStyle::State_Active 2011-08-27 17:35:47 +02:00
Michael Zanetti
9f6dd0a104 fix font shrinking issue on OSX with the dragndrop menu 2011-08-27 17:35:47 +02:00
Michael Zanetti
52037d8847 cache the mimedata so we can paint the items after the dropLeaveEvent and made animations a bit faster 2011-08-27 17:35:47 +02:00
Michael Zanetti
39af693de1 remove styleoption selected before painting the text to avoid two selection boxes 2011-08-27 17:35:47 +02:00
Michael Zanetti
9cc919eb08 improved the animation 2011-08-27 17:35:47 +02:00
Jason Herskowitz
2e3e0afa7c Replace all songs drop zone icon with something that is more square. 2011-08-27 17:35:47 +02:00
Michael Zanetti
f0a05acf01 fix off-by-one painting bug in dropmenu 2011-08-27 17:35:47 +02:00
Michael Zanetti
a7d1275e52 replace BounceAnimaton with ExpoAnimation 2011-08-27 17:35:47 +02:00
Michael Zanetti
232097b06b make use of new drop icons 2011-08-27 17:35:47 +02:00
Jason Herskowitz
b1ed8d2419 Add drop zone icons for song and album. 2011-08-27 17:35:47 +02:00
Michael Zanetti
2c5040c638 improved animation 2011-08-27 17:35:47 +02:00
Michael Zanetti
f1dfd84213 make the dropmenu work with categoryitems 2011-08-27 17:35:47 +02:00
Michael Zanetti
74fa941159 fix bug where non expanded items were tracked expanded ones 2011-08-27 17:35:47 +02:00
Michael Zanetti
559433162f make top 10 really top 10 instead of top 50 2011-08-27 17:35:46 +02:00
Michael Zanetti
fbefe4185f fixes in dragndrop menu 2011-08-27 17:35:46 +02:00
Michael Zanetti
71a5888cba make use of new icons 2011-08-27 17:35:46 +02:00
Michael Zanetti
e7cd5bddc4 more work on the drag and drop menu 2011-08-27 17:35:46 +02:00
Jason Herskowitz
b70810da9c Icons for artist drop areas for playlist drawer 2011-08-27 17:35:46 +02:00
Michael Zanetti
4fe15984ce TWK-434: Added drag indicators for artist and album 2011-08-27 17:35:46 +02:00
Michael Zanetti
1d6c407003 TWK-411: Dragging an album/artist to "New Station" creates a station based on that artist instead of all the tracks 2011-08-27 17:35:46 +02:00
Michael Zanetti
a227ae4bcb more work on the drag and drop menu 2011-08-27 17:35:46 +02:00
Christian Muehlhaeuser
13db62b71c * Fixed always resolving top songs in DropJob. 2011-08-27 17:35:46 +02:00
Michael Zanetti
bb72c3efb2 correctly check for isNull 2011-08-27 17:35:46 +02:00
Michael Zanetti
34c8c79ef5 fixed order of filtering. initial work on the Top10 drop action (does actually Top50 for now and tracks can not be resolved yet) 2011-08-27 17:35:46 +02:00
Michael Zanetti
6aa7531623 dropping "All items" and "Only local items" works now 2011-08-27 17:35:46 +02:00
Michael Zanetti
eea5fa2826 cleanup 2011-08-27 17:35:46 +02:00
Michael Zanetti
a14db5e7f2 readded the editorEvent which somehow got lost in the previous merge and cleaned up a bit 2011-08-27 17:35:46 +02:00
Michael Zanetti
42508b7917 initial work on a menu for drag and drop 2011-08-27 17:35:46 +02:00
Jeff Mitchell
6b865eb4f2 Add account skeleton 2011-08-27 17:09:13 -04:00
Jeff Mitchell
87c86b6349 Hells. Yes. Make TH window come to front when launched with a URL. (X11, not sure if Win works yet.) 2011-08-27 02:47:17 -04:00
Jeff Mitchell
4b5caaceef Fix compile on mingw32 2011-08-27 02:37:50 -04:00
Jeff Mitchell
dccc4e6225 Add definitions for bringToFront. Can't test on X11 as TH crashes with database errors before I get the chance. 2011-08-27 02:29:05 -04:00
Jeff Mitchell
971cc742bb Add ability to query all sources with a getInfo call. Watch out for finished() :-) 2011-08-27 00:45:16 -04:00
Casey Link
2bff9e9a27 fix charts image in resources 2011-08-27 01:45:39 +00:00
Casey Link
6cba5c990e Change display name of whatshot widget to Charts and use the charts icon 2011-08-26 20:12:14 -05:00
Casey Link
a2f2fc7867 Merge branch 'master' into whatshot
Conflicts:
	src/tomahawkapp.cpp
2011-08-26 19:54:55 -05:00
Casey Link
ec2dec4faf Handle our own Arrow Drawing.
Adds AntiAliasing and uses our own colors.
2011-08-26 19:47:11 -05:00
Dominik Schmidt
e2fb440af4 Square the .svg version of tomahawk-icon (Larifari's first contribution) 2011-08-27 02:17:53 +02:00
Casey Link
ccc8d3b26a Use the new Header and ComboBox widgets in the whatshot widget. 2011-08-26 18:44:25 -05:00
Casey Link
e43e45cd76 Introduce StyleHelper, HeaderWidget and ComboBox
These are customized widgets for tomahawk that make headers pretty.
2011-08-26 18:43:35 -05:00
Jeff Mitchell
fc2de7721a None of this works, but maybe it's a start since Qt directly isn't
working
2011-08-26 18:40:19 -04:00
Jeff Mitchell
65a50c5a85 Better structuring 2011-08-26 17:47:08 -04:00
Jeff Mitchell
cd78b77784 Draw the battle lines 2011-08-26 17:03:49 -04:00
Jeff Mitchell
1c250b334b Handle checking queue in canGoNext so that we can use next() all the
time instead of randomly skipping it and using loadNextTrack directly
sometimes
2011-08-26 16:12:51 -04:00
Jeff Mitchell
d06c43bfe6 Use next() so that the hasNextTrack checks are run 2011-08-26 16:08:16 -04:00
Leo Franchi
1994ab33fe Don't depend on sender() as it can be null in queued events 2011-08-26 13:26:54 -04:00
Jeff Mitchell
9208257c96 Base64 encode our twitter credentials like elsewhere 2011-08-26 12:01:24 -04:00
Jeff Mitchell
f479fd4e7c Add logic back to audioengine, but simplify in sourcetreeview 2011-08-26 11:27:10 -04:00
Christian Muehlhaeuser
36486d10d1 * Notify user even when there's no album for the current track. 2011-08-26 17:11:34 +02:00
Jeff Mitchell
c7e2a5c1c1 Doh, smart pointers -- fix compile 2011-08-26 10:22:15 -04:00
Jeff Mitchell
a32ff26401 Fix crash; pointer safety! 2011-08-26 10:16:55 -04:00
Jeff Mitchell
b86f6301ff More sometimes-useful debug 2011-08-26 00:40:01 -04:00
Jeff Mitchell
146eaa226f Add debug and some logic to disconnect sourceplaylistinterface connections 2011-08-25 23:49:40 -04:00
Leo Franchi
3fa9fa337e TWK-441: Try to fix crash where sourcetreeitem would hold on to a dangling parent 2011-08-25 23:35:08 -04:00
Leo Franchi
597fec4982 Remove New Playlist widget for now, until we refactor the playlist UIs.
Also update the new playlist type widget to take into account the changes. Make the dialog a sheet on osx.
2011-08-25 23:11:57 -04:00
Jeff Mitchell
01b199c4a8 Fix listen along menu not resetting when you stop listening along 2011-08-25 22:57:14 -04:00
Jeff Mitchell
6dde11c89a Simplify logic -- I think this should still work fine with source playlist interface and also fix issues where someone has stopped playing a track 2011-08-25 20:28:25 -04:00
Dominik Schmidt
3c30ebd4d6 lfranchi: muesli: jherskowitz: awainzin: REMOVED LEGACY JABBER SUPPORT :P 2011-08-26 01:29:50 +02:00
Christian Muehlhaeuser
ff10760838 * Fixed TWK-469: Added album position as a TrackModel column. 2011-08-26 01:10:45 +02:00
Christian Muehlhaeuser
c4fbb6e0a7 * Fixed TWK-461: Always pre-sort searches by score column. 2011-08-26 00:48:39 +02:00
Christian Muehlhaeuser
67acb25da0 * Remove obsolete debug output. 2011-08-25 03:51:47 +02:00
Christian Muehlhaeuser
3e0092d299 * Guard pipeline against dupe queries. 2011-08-25 03:43:11 +02:00
Leo Franchi
9801370a47 Don't resolve a query twice. EchonestGenerator no longer gives out auto-resolving queries, resolve your own. 2011-08-24 21:39:35 -04:00
Christian Muehlhaeuser
2010cb41c7 * Add debug output. 2011-08-25 03:18:35 +02:00
Christian Muehlhaeuser
5f9f9481e7 * Refactor pipeline. 2011-08-25 02:55:31 +02:00
Leo Franchi
6f639ecf10 TWK-340: smooth transform for more pixmaps 2011-08-24 20:37:31 -04:00
Leo Franchi
50d00fc1bf TWK-447: Clear albums model before appending to it 2011-08-24 19:32:34 -04:00
Leo Franchi
def10a2e2b TWK-459: More rdio unbreaking and add support in rdioURI/rdioURL tomahawk urls 2011-08-24 19:13:54 -04:00
Leo Franchi
b7db4e0e6b TWK-323: Really fix rdio links 2011-08-24 19:11:54 -04:00
Michael Zanetti
92b612f44f make trackURLs work again
(cherry picked from commit 4327d61df7)
2011-08-24 07:42:54 -04:00
Christian Muehlhaeuser
d47cafbebf * Make sure onResolvingFinished gets called. 2011-08-24 03:02:26 +02:00
Christian Muehlhaeuser
895d65a24e * Cleaned up debugging in Servent. 2011-08-24 00:33:23 +02:00
Christian Muehlhaeuser
c9bf3035f2 * Don't assert out on too late results. 2011-08-23 18:15:23 +02:00
Leo Franchi
41f3193355 Don't double-delete playlists either 2011-08-23 10:20:26 -04:00
Leo Franchi
924c1b3a72 Changelog
(cherry picked from commit 1279b1fa12)
2011-08-22 19:17:55 -04:00
Leo Franchi
ac317eb0a6 TWK-431: Don't re-use the same infosystem caller id for every artistinfowidget. 2011-08-22 18:26:09 -04:00
Leo Franchi
36768db7e4 TWK-443: Don't double-delete dynamic widgets 2011-08-22 16:28:56 -04:00
Jason Herskowitz
97ee6f7d5e Edited ChangeLog via GitHub 2011-08-22 14:10:21 -03:00
Leo Franchi
e0c5108fb4 Changelog 2011-08-22 07:36:01 -04:00
Leo Franchi
fe77940545 Changelog. 2011-08-22 07:36:01 -04:00
Jason Herskowitz
51ae8fea77 Add icon for charts. 2011-08-21 22:19:25 -04:00
Christian Muehlhaeuser
c76c557ed1 * Fixed tray-icon's play / pause states. 2011-08-22 02:36:44 +02:00
Christian Muehlhaeuser
4200975576 Merge pull request #37 from Horrendus/master
Make a Play/Pause entry in Menu of the Trayicon
2011-08-21 17:25:09 -07:00
Casey Link
415d2e8ec7 ignore my ctags file 2011-08-21 18:55:53 -05:00
Stefan Derkits
612fd47293 Menu of TrayIcon now has a Play/Pause Entry
-) When starting Tomahawk the text is play
-) When playing a Song, the text is pause
-) When pausing a Song, the text is play

Action is connected to the playPause() slot of audioengine
2011-08-22 01:48:27 +02:00
Casey Link
ebb71321f6 Add a splitter to the charts widget. 2011-08-21 18:20:00 -05:00
Casey Link
fc235ccf1b Implement fetching and displaying of the Top Tracks Chart. 2011-08-21 18:04:44 -05:00
Casey Link
a21992a99a Either the lastfm XML output has changed, or this library was buggy all along. This patch fixes the parsing of <track> elements. 2011-08-21 18:03:21 -05:00
Alejandro Wainzinger
573e36fdfd Hopefully fix infinite loop caused by requesting a cover when the cache has issues and/or can't find the cover. 2011-08-21 14:26:30 -07:00
Christian Muehlhaeuser
48aeddc0a9 * Fixed filtering out unwanted dupes when viewing a local collection. 2011-08-21 22:50:41 +02:00
Casey Link
c6a104af93 Use a proxy model that doesn't sort, so we preserve the ranking order 2011-08-21 13:48:07 -05:00
Casey Link
68d3783b26 Implement chart.TopArtists in the lastfm plugin 2011-08-21 13:00:15 -05:00
Casey Link
228699863f Add new Chart InfoTypes for retrieving charts 2011-08-21 13:00:15 -05:00
Casey Link
a4a3c4fb17 Add What's Hot page with corresponding widget. 2011-08-21 12:56:41 -05:00
Christian Muehlhaeuser
13a93cfa45 * Bumped version no to 0.2.99 for master. 2011-08-21 04:55:53 +02:00
Christian Muehlhaeuser
3feee712bd * Updated ChangeLog. 2011-08-21 04:53:30 +02:00
Christian Muehlhaeuser
99e3e06716 * Fixed TWK-442: Provide stable sort ordering in Track- / TreeProxyModel. 2011-08-21 03:51:26 +02:00
Christian Muehlhaeuser
1653e16e7d * Fixed TWK-435: Don't block pipeline if a resolver times out. 2011-08-21 03:31:35 +02:00
Dominik Schmidt
977757cc7e TWK-410: possible fix 2011-08-21 03:23:29 +02:00
Christian Muehlhaeuser
71f6a3e81a * Don't filter out some wanted tracks, e.g. when multiple tracks of an album have the same name, but different tracks numbers. 2011-08-21 02:56:29 +02:00
Christian Muehlhaeuser
43bf42df6f * Fixed TWK-387: Stop showing a loading spinner, if there are no items to load. 2011-08-21 02:38:14 +02:00
Leo Franchi
552a07eee7 Be a bit safer if model changes 2011-08-20 11:50:37 -04:00
Michael Zanetti
97c694baba don't add duplicates when dropping albums or artists and fix losing items when combining synchronous and asynchrounous drop operations 2011-08-20 14:36:48 +02:00
Leo Franchi
5d512c180f Only remove playlists from saved list if that playlist was deleted and is still in our internal db 2011-08-20 01:09:34 -04:00
Leo Franchi
7f089714a6 bail out on a deleted widget 2011-08-20 00:58:32 -04:00
Leo Franchi
9737f765e5 TWK-414: Fix selecting newly created playlists and stations.
God this was a PITA. What is going on:

Playlists are created by collection item. SourcesModel::linkSourceItemToPage is called from *constructor* of PlaylistItem, so BEFORE
the CollectionItem calls endRowsAdded(). This means when the SourcesProxyModel does the mapFromSource() during the activateIndex() call
(from linkSourceItemToPage) it won't have the new index in the mapping yet as endRowsAdded() hasn't been called. So that will fail.

We have to queue the signal *from the source model to the proxy* not from the proxy to the view.

EUGH.

Also, fix a few logic errors from teh ViewManager/WeakPointer refactor that had bad logic
2011-08-20 00:47:53 -04:00
Leo Franchi
6521198127 TWK-401: Only update source stats after addfiles dbcmd is finished, instead of playing a race condition game. Also, refresh recent albums on stats change 2011-08-19 16:54:37 -04:00
Leo Franchi
498d7052de TWK-415: Don't crash if the trackproxymodel has an invalid current track 2011-08-19 15:45:21 -04:00
Leo Franchi
f0a6d4e8bb TWK-420: Show resolver wrench immediately after enabling a resolver. 2011-08-19 14:50:17 -04:00
Leo Franchi
e7bd29d228 remove stale include 2011-08-19 14:12:43 -04:00
Leo Franchi
5fd7505f7f fixes for linux 2011-08-19 13:54:15 -04:00
Leo Franchi
bc2ea013ac delete maclineedit 2011-08-19 13:41:01 -04:00
Leo Franchi
c1ecab349a Delete viewpages when we are done with them and remove Back/Forward buttons.
Remove toolbar and move search widget into top of sourcetree
2011-08-19 13:35:10 -04:00
Alejandro Wainzinger
2f4805c119 Temporary image cover goes in /tmp.
* Fixes TWK-430
2011-08-18 15:58:15 -07:00
Christian Muehlhaeuser
622150fca2 * Cleaned up icons a bit. 2011-08-18 23:25:39 +02:00
Jason Herskowitz
237de4f9a6 Add icons for artist, album and search temporary sidebar items. We should use these for drag indicators for album and artist drags 2011-08-18 17:11:21 -04:00
Leo Franchi
97d62b06c1 enable some stuff 2011-08-17 18:16:11 -04:00
Alejandro Wainzinger
25f37d692e ChangeLog++ 2011-08-18 00:13:10 +02:00
Christian Muehlhaeuser
33e2c4f935 * Updated ChangeLog. 2011-08-18 00:06:24 +02:00
Christian Muehlhaeuser
d24f2b2bb0 * Remember last used script path and store it. 2011-08-17 23:30:45 +02:00
Christian Muehlhaeuser
76bd0670d8 * No need for clucene in Tomahawk binary. 2011-08-17 22:11:54 +02:00
Leo Franchi
4abb53ccdf Fix resolvers on qt 4.8, baseUrl is required for html5 security policy stuff for localStorage 2011-08-17 14:35:27 -04:00
Leo Franchi
31d19196e2 remove offensively verbose debug 2011-08-17 13:46:12 -04:00
Jason Herskowitz
77d60fa02d De-decapitate avatar placeholder 2011-08-17 10:59:12 -04:00
Leo Franchi
178095acc0 and add semicolon 2011-08-17 10:12:29 -04:00
Leo Franchi
2c846c4ae2 Always select source item when new playlist/stations are created 2011-08-17 10:10:26 -04:00
Alejandro Wainzinger
ab462cd7b8 Actually, don't rely on Phonon's isSeekable. It sometimes lies. 2011-08-17 06:14:56 -07:00
Alejandro Wainzinger
a88afe34c2 Return false if can't seek in MPRIS plugin, a string is actually not a boolean.
awainzin--;
2011-08-17 05:58:02 -07:00
Alejandro Wainzinger
79356b9da8 Respect Phonon's isSeekable() function before seeking. 2011-08-17 05:53:39 -07:00
Alejandro Wainzinger
b74cefd72f Try to respect seek restrictions placed on the playlist. 2011-08-17 04:05:16 -07:00
Alejandro Wainzinger
1d222064fb Add the Seeked signal in MPRIS. 2011-08-17 03:17:31 -07:00
Alejandro Wainzinger
6b1d919518 Use full string in tempfile check. 2011-08-17 02:47:26 -07:00
Alejandro Wainzinger
016bd7eb47 Fix potential crash when temporary file doesn't exist, move coverfetching to metadata. 2011-08-17 02:14:15 -07:00
Leo Franchi
ae9d6f8df4 To temporary pages it is! 2011-08-16 23:14:29 -04:00
Alejandro Wainzinger
8beb3173c6 Clean up MPRIS album cover code a bit. 2011-08-16 19:32:32 -07:00
Alejandro Wainzinger
0bddfe3f0d MPRIS: create a new temp file for each new cover, deleting previous. Prevents caching on client side. 2011-08-16 19:18:45 -07:00
Christian Muehlhaeuser
24febc1066 * More verbose debug output in DBSyncConnection. 2011-08-17 04:14:52 +02:00
Alejandro Wainzinger
97b615da41 Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-08-16 19:05:59 -07:00
Alejandro Wainzinger
3ee5016230 Push album covers through MPRIS. 2011-08-16 19:05:25 -07:00
Leo Franchi
dae9718e35 remove useless code 2011-08-16 21:38:01 -04:00
Leo Franchi
ec2164b77e allow deleting of temporary item in source tree view 2011-08-16 21:36:06 -04:00
Christian Muehlhaeuser
35a7acd606 * Fixed sorting of identical items in Tree- & TrackProxyModel. 2011-08-17 03:33:31 +02:00
Christian Muehlhaeuser
ac3d410559 * Fixed sidebar sorting for items with identical names. 2011-08-17 03:18:39 +02:00
Christian Muehlhaeuser
b1d57df4fc * Moved the AudioControl QSlider stylesheets into SeekSlider. 2011-08-17 02:35:06 +02:00
Christian Muehlhaeuser
b78e2dd8b6 * No need for mouse tracking. 2011-08-17 02:24:42 +02:00
Christian Muehlhaeuser
c3419cb082 * Fixed TWK-212: Sliders should jump to the position they are clicked on. 2011-08-17 02:20:41 +02:00
Leo Franchi
713243cc5d Allow to show the setting dialog always, and disable +/- buttons till loaded 2011-08-16 19:06:34 -04:00
Leo Franchi
ee8da33e06 Show spinner on initial load while loading sip plugins in preferences. Disable Settings action till servent is loaded 2011-08-16 19:00:29 -04:00
Christian Muehlhaeuser
08f868c2ce * Fix sorting for real. 2011-08-17 00:17:01 +02:00
Christian Muehlhaeuser
4d012b156a * Fixed sidebar sorting. 2011-08-17 00:15:08 +02:00
Michael Zanetti
4c5d34ceb7 Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-08-16 23:34:44 +02:00
Michael Zanetti
8c4b4cd5a9 added drag capabilities to albumview ins sourceinfowidget and welcomewidget 2011-08-16 23:33:41 +02:00
Alejandro Wainzinger
c1498bbae0 Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-08-16 22:36:07 +02:00
Alejandro Wainzinger
89daf243f4 When settings have changed and adiumplugin reads it, don't try to clear adium status if plugin goes inactive. 2011-08-16 22:35:15 +02:00
Michael Zanetti
5b0cd3b458 fix copyright headers in SettingsListDelegate 2011-08-16 19:28:17 +02:00
Michael Zanetti
8aa18a7e03 fixed copyright headers 2011-08-16 19:25:50 +02:00
Michael Zanetti
e3b2c547d8 Created DropJob which will start a query for the dropped items and wait for the results 2011-08-16 19:25:50 +02:00
Michael Zanetti
6cb2677c9b more work to be able to drag and drop mixed mimetypes (e.g. an artist and some tracks) 2011-08-16 19:25:50 +02:00
Michael Zanetti
09de8c8387 added drag and drop to playlists for albums and artists 2011-08-16 19:25:50 +02:00
Christian Muehlhaeuser
e6778b5631 * Un-regress listen-along. 2011-08-16 03:24:17 +02:00
Christian Muehlhaeuser
9653918a63 Merge remote-tracking branch 'origin/stable' 2011-08-16 03:14:31 +02:00
Christian Muehlhaeuser
b7d231997d * Don't try to play unavailable results. 2011-08-16 03:08:11 +02:00
Christian Muehlhaeuser
3326e375ae Merge remote-tracking branch 'origin/stable' 2011-08-16 02:45:16 +02:00
Christian Muehlhaeuser
6d26361f4e * Don't crash when encountering an unknown artist in a search. 2011-08-16 01:44:07 +02:00
Christian Muehlhaeuser
611d2015f9 Merge remote-tracking branch 'origin/stable' 2011-08-16 01:30:09 +02:00
Christian Muehlhaeuser
29f88e29ab * Fixed Javascript resolvers not working / breaking Tomahawk. 2011-08-16 01:25:53 +02:00
Christian Muehlhaeuser
58d65c8605 Merge pull request #36 from xevix/master
MPRIS Support - fixed as discussed.
2011-08-15 15:55:30 -07:00
Alejandro Wainzinger
6947a59aa2 Merge branch 'master' of https://github.com/tomahawk-player/tomahawk 2011-08-15 15:53:39 -07:00
Alejandro Wainzinger
2dbf992e56 Properly fix deletion of worker and cache objects in separate threads that are not the GUI thread. 2011-08-15 15:51:39 -07:00
Alejandro Wainzinger
767602c0dc Merge branch 'master' of https://github.com/tomahawk-player/tomahawk 2011-08-15 13:30:59 -07:00
Alejandro Wainzinger
c1cbc3576c Merge branch 'master' of https://github.com/tomahawk-player/tomahawk 2011-08-14 07:04:48 -07:00
Alejandro Wainzinger
97e12f9b95 Create QThread subclasses for InfoSystemWorker and InfoSystemCache, so we don't try to delete them from a different thread (illegal in Qt), instead delete from QThread subclass' destructor. 2011-08-14 02:32:47 -07:00
Alejandro Wainzinger
d243a5f70e Merge branch 'master' of https://github.com/tomahawk-player/tomahawk 2011-08-13 02:14:11 -07:00
Alejandro Wainzinger
7eaed053f5 Merge branch 'master' of https://github.com/tomahawk-player/tomahawk 2011-08-12 19:45:52 -07:00
Alejandro Wainzinger
7354896a86 Implement remaining MPRIS PropertiesChanged update signals, seeking, etc. 2011-08-12 19:35:57 -07:00
Alejandro Wainzinger
ce396ab060 Implement PropertiesChanged for AudioState in MPRIS. 2011-08-12 07:25:33 -07:00
Alejandro Wainzinger
5f59b30a8c Add basic metadata MPRIS info. 2011-08-11 17:49:30 -07:00
Alejandro Wainzinger
49dcd70dd2 Implement most MPRIS methods, minus metadata and related methods. 2011-08-11 12:27:15 -07:00
Alejandro Wainzinger
6996c704eb Merge branch 'master' of https://github.com/tomahawk-player/tomahawk 2011-08-10 05:26:51 -07:00
Alejandro Wainzinger
d59dcda052 Add MprisPluginPlayerAdaptor skeleton. 2011-08-09 11:07:46 -07:00
Alejandro Wainzinger
c90c0a261d Initial skeleton for MPRIS support. 2011-08-09 02:31:54 -07:00
1932 changed files with 530538 additions and 16465 deletions

2
.gitignore vendored
View File

@@ -16,3 +16,5 @@ thirdparty/qtweetlib/WARNING-twitter-api-keys
clang/
win/
gcc/
tags
.DS_Store

6
.gitmodules vendored
View File

@@ -1,6 +0,0 @@
[submodule "thirdparty/jreen"]
path = thirdparty/jreen
url = git://github.com/euroelessar/jreen.git
[submodule "thirdparty/qtweetlib/QTweetLib"]
path = thirdparty/qtweetlib/QTweetLib
url = git://github.com/minimoog/QTweetLib.git

View File

@@ -15,8 +15,8 @@ SET( TOMAHAWK_APPLICATION_NAME "Tomahawk" )
SET( TOMAHAWK_DESCRIPTION_SUMMARY "The social media player" )
SET( TOMAHAWK_VERSION_MAJOR 0 )
SET( TOMAHAWK_VERSION_MINOR 2 )
SET( TOMAHAWK_VERSION_PATCH 1 )
SET( TOMAHAWK_VERSION_MINOR 3 )
SET( TOMAHAWK_VERSION_PATCH 99 )
#SET( TOMAHAWK_VERSION_RC 0 )
@@ -24,6 +24,7 @@ SET( TOMAHAWK_VERSION_PATCH 1 )
# build options
option(BUILD_GUI "Build Tomahawk with GUI" ON)
option(BUILD_RELEASE "Generate TOMAHAWK_VERSION without GIT info" OFF)
option(LEGACY_KDE_INTEGRATION "Install tomahawk.protocol file, deprecated since 4.6.0" OFF)
# generate version string
@@ -48,13 +49,15 @@ IF( NOT BUILD_RELEASE )
ENDIF()
# set paths
SET( THIRDPARTY_DIR ${CMAKE_SOURCE_DIR}/thirdparty )
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
# make predefined install dirs available everywhere
INCLUDE(GNUInstallDirs)
# installer creation
INCLUDE( TomahawkCPack.cmake )
@@ -72,6 +75,10 @@ ELSE()
LIST(APPEND NEEDED_QT4_COMPONENTS "QtGui" "QtWebkit" )
ENDIF()
IF( BUILD_GUI AND UNIX AND NOT APPLE )
FIND_PACKAGE( X11 )
ENDIF()
macro_optional_find_package(Qt4 4.7.0 COMPONENTS ${NEEDED_QT4_COMPONENTS} )
macro_log_feature(QT4_FOUND "Qt" "A cross-platform application and UI framework" "http://qt.nokia.com" TRUE "" "If you see this, although libqt4-devel is installed, check whether \n the qtwebkit-devel package is installed as well")
@@ -81,8 +88,8 @@ if(PHONON_FOUND)
message(STATUS "Phonon found; ensure that phonon-vlc is at least 0.4")
endif()
macro_optional_find_package(LibEchonest 1.1.7)
macro_log_feature(LIBECHONEST_FOUND "Echonest" "Qt library for communicating with The Echo Nest" "http://projects.kde.org/libechonest" TRUE "" "libechonest 1.1.8 is needed for dynamic playlists and the infosystem")
macro_optional_find_package(LibEchonest 1.1.10)
macro_log_feature(LIBECHONEST_FOUND "Echonest" "Qt library for communicating with The Echo Nest" "http://projects.kde.org/libechonest" TRUE "" "libechonest 1.1.10 is needed for dynamic playlists and the infosystem")
macro_optional_find_package(CLucene 0.9.23)
macro_log_feature(CLucene_FOUND "CLucene" "The open-source, C++ search engine" "http://clucene.sf.net" TRUE "" "CLucene is used for indexing the collection")
@@ -98,7 +105,35 @@ check_taglib_filename( COMPLEX_TAGLIB_FILENAME )
macro_optional_find_package(Boost)
macro_log_feature(Boost_FOUND "Boost" "Provides free peer-reviewed portable C++ source libraries" "http://www.boost.org" TRUE "" "") #FIXME: give useful explaination
macro_optional_find_package(QCA2)
macro_log_feature(QCA2_FOUND "QCA2" "Provides encryption and signing functions required for Grooveshark resolver" "http://delta.affinix.com/qca/" FALSE "" "")
macro_optional_find_package(LibAttica)
macro_log_feature(LIBATTICA_FOUND "libattica" "Provides support for automatic fetching and managing of resolvers from the tomahawk website" "https://projects.kde.org/projects/kdesupport/attica" FALSE "" "")
macro_optional_find_package(QuaZip)
macro_log_feature(QuaZip_FOUND "QuaZip" "Provides support for extracting downloaded resolvers automatically." "http://quazip.sourceforge.net/" FALSE "" "")
macro_optional_find_package(Jreen)
macro_log_feature(LIBJREEN_FOUND "Jreen" "Qt XMPP Library" "https://github.com/euroelessar/jreen" FALSE "" "Jreen is needed for the Jabber SIP plugin.\n")
macro_optional_find_package(QTweetLib)
macro_log_feature(QTWEETLIB_FOUND "QTweetLib" "Qt Twitter Library" "https://github.com/minimoog/QTweetLib" FALSE "" "QTweetLib is needed for the Twitter SIP plugin.\n")
macro_optional_find_package(VSXu)
macro_log_feature(VSXU_FOUND "VSXu" "Vovoid VSXu Ultra" "https://www.vsxu.com" FALSE "" "VSXu is needed for some really cool music visualization.\n")
IF( NOT QuaZip_FOUND )
add_subdirectory( ${CMAKE_SOURCE_DIR}/src/libtomahawk/thirdparty/quazip )
SET( QuaZip_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/libtomahawk/thirdparty/quazip )
SET( QuaZip_LIBRARY quazip )
SET( QuaZip_LIBRARIES ${QuaZip_LIBRARY} )
SET( QuaZip_FOUND true )
macro_log_feature(QuaZip_FOUND "QuaZip" "Provides support for extracting downloaded resolvers automatically. Building internal copy" "http://quazip.sourceforge.net/" FALSE "" "")
# copy headers to build/quazip so we can use proper includes inside the code
FILE( COPY ${CMAKE_SOURCE_DIR}/src/libtomahawk/thirdparty/quazip/quazip/ DESTINATION ${CMAKE_BINARY_DIR}/libtomahawk/thirdparty/quazip )
ENDIF()
# required
#While we distribute our own liblastfm2, don't need to look for it
@@ -106,34 +141,19 @@ macro_log_feature(Boost_FOUND "Boost" "Provides free peer-reviewed portable C++
#macro_log_feature(LIBLASTFM_FOUND "LastFm" "Qt library for the Last.fm webservices" "https://github.com/mxcl/liblastfm" FALSE "" "liblastfm is needed for scrobbling tracks to Last.fm and fetching cover artwork")
set(LIBLASTFM_FOUND true)
#### submodules start
# automatically init submodules here, don't delete this code we may add submodules again
# this installs headers and such and should really be handled in a separate package by packagers
IF( INTERNAL_JREEN )
ADD_SUBDIRECTORY( ${THIRDPARTY_DIR}/jreen )
SET( LIBJREEN_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/thirdparty/jreen/include )
SET( LIBJREEN_LIBRARY jreen )
SET( LIBJREEN_LIBRARIES ${LIBJREEN_LIBRARY} )
SET( LIBJREEN_FOUND true )
MESSAGE(STATUS "INTERNAL libjreen: ${LIBJREEN_INCLUDE_DIR}, ${LIBJREEN_LIBRARY}")
ELSE( INTERNAL_JREEN )
macro_optional_find_package(Jreen)
ENDIF( INTERNAL_JREEN )
macro_log_feature(LIBJREEN_FOUND "Jreen" "Qt XMPP Library" "https://github.com/euroelessar/jreen" FALSE "" "Jreen is needed for the Jabber SIP plugin. \n\n Use -DINTERNAL_JREEN=ON to build the git submodule inside Tomahawk \n Be aware this installs a full jreen with headers and everything!\n")
# this installs headers and such and should really be handled in a separate package by packagers
IF( INTERNAL_QTWEETLIB )
ADD_SUBDIRECTORY( ${THIRDPARTY_DIR}/qtweetlib )
# copy headers to build/QTweetLib so we can use proper includes inside the code
FILE( COPY ${CMAKE_SOURCE_DIR}/thirdparty/qtweetlib/QTweetLib/src/ DESTINATION ${CMAKE_BINARY_DIR}/QTweetLib )
SET( QTWEETLIB_INCLUDE_DIR ${CMAKE_BINARY_DIR} )
SET( QTWEETLIB_LIBRARY tomahawk_qtweetlib )
SET( QTWEETLIB_LIBRARIES ${QTWEETLIB_LIBRARY} )
SET( QTWEETLIB_FOUND true )
MESSAGE(STATUS "INTERNAL libQTweetLib: ${QTWEETLIB_INCLUDE_DIR}, ${QTWEETLIB_LIBRARY}")
ELSE( INTERNAL_QTWEETLIB )
macro_optional_find_package(QTweetLib)
ENDIF( INTERNAL_QTWEETLIB )
macro_log_feature(QTWEETLIB_FOUND "QTweetLib" "Qt Twitter Library" "https://github.com/minimoog/QTweetLib" FALSE "" "QTweetLib is needed for the Twitter SIP plugin. \n\n Use -DINTERNAL_QTWEETLIB=ON to build the git submodule inside Tomahawk \n")
# IF( FALSE )
# IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.gitmodules)
# EXECUTE_PROCESS(COMMAND git submodule init WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
# EXECUTE_PROCESS(COMMAND git submodule update WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} )
# ENDIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.gitmodules)
# ENDIF()
#### submodules end
### libportfwd
SET( LIBPORTFWD_INCLUDE_DIR ${THIRDPARTY_DIR}/libportfwd/include )
@@ -142,8 +162,8 @@ SET( LIBPORTFWD_LIBRARIES ${LIBPORTFWD_LIBRARY} )
ADD_SUBDIRECTORY( ${THIRDPARTY_DIR}/libportfwd )
# we need pthreads too
macro_optional_find_package(Threads)
macro_log_feature(THREADS_FOUND "Threads" "Threading Library" "" TRUE "" "Platform specific library for threading")
#macro_optional_find_package(Threads)
#macro_log_feature(THREADS_FOUND "Threads" "Threading Library" "" TRUE "" "Platform specific library for threading")
macro_optional_find_package(KDE4)
macro_optional_find_package(KDE4Installed)
@@ -153,9 +173,12 @@ macro_optional_find_package(KDE4Installed)
# macro_optional_find_package(KDE4)
IF(KDE4_FOUND)
#KDE4 adds and removes some compiler flags that we don't like
STRING( REPLACE "-std=iso9899:1990" "" CLEAN_C_FLAGS ${CMAKE_C_FLAGS} )
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions" )
IF( CMAKE_C_FLAGS )
# KDE4 adds and removes some compiler flags that we don't like
# (only for gcc not for clang e.g.)
STRING( REPLACE "-std=iso9899:1990" "" CLEAN_C_FLAGS ${CMAKE_C_FLAGS} )
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions" )
ENDIF()
ELSE()
SET( CLEAN_C_FLAGS ${CMAKE_C_FLAGS} )
ENDIF()
@@ -190,3 +213,9 @@ ADD_SUBDIRECTORY( src/libtomahawk )
SET( TOMAHAWK_LIBRARIES tomahawklib )
ADD_SUBDIRECTORY( src )
ADD_SUBDIRECTORY( admin )
IF( BUILD_GUI )
IF( NOT DISABLE_CRASHREPORTER )
ADD_SUBDIRECTORY( src/breakpad/CrashReporter )
ENDIF()
ENDIF()

View File

@@ -2,6 +2,7 @@
# This module looks for clucene (http://clucene.sf.net) support
# It will define the following values
#
# CLUCENE_INCLUDE_DIRS = CLUCENE_INCLUDE_DIR + CLUCENE_LIBRARY_DIR
# CLUCENE_INCLUDE_DIR = where CLucene/StdHeader.h can be found
# CLUCENE_LIBRARY_DIR = where CLucene/clucene-config.h can be found
# CLUCENE_LIBRARIES = the libraries to link against CLucene
@@ -12,7 +13,16 @@
INCLUDE(CheckSymbolExists)
INCLUDE(FindLibraryWithDebug)
# try to locate a patched unstable version (for comp's sake *sigh*) first
FIND_PACKAGE(CLuceneUnstable)
IF(CLUCENEUNSTABLE_FOUND)
SET(CLucene_FOUND TRUE)
SET(CLUCENE_INCLUDE_DIR ${CLUCENE_UNSTABLE_INCLUDE_DIRS})
SET(CLUCENE_INCLUDE_DIRS ${CLUCENE_INCLUDE_DIR})
SET(CLUCENE_LIBRARIES ${CLUCENE_UNSTABLE_LIBS})
#MESSAGE(FATAL_ERROR NARF)
ELSE(CLUCENEUNSTABLE_FOUND)
IF(CLucene_FIND_VERSION)
SET(CLUCENE_MIN_VERSION ${CLucene_FIND_VERSION})
ELSEIF()
@@ -98,8 +108,11 @@ ENDIF (CLUCENE_LIBRARY_DIR)
IF(CLUCENE_INCLUDE_DIR AND CLUCENE_LIBRARIES AND CLUCENE_LIBRARY_DIR AND CLUCENE_GOOD_VERSION)
SET(CLucene_FOUND TRUE)
SET(CLUCENE_INCLUDE_DIRS ${CLUCENE_LIBRARY_DIR} ${CLUCENE_INCLUDE_DIR})
ENDIF(CLUCENE_INCLUDE_DIR AND CLUCENE_LIBRARIES AND CLUCENE_LIBRARY_DIR AND CLUCENE_GOOD_VERSION)
ENDIF(CLUCENEUNSTABLE_FOUND)
IF(CLucene_FOUND)
IF(NOT CLucene_FIND_QUIETLY)
MESSAGE(STATUS "Found CLucene: ${CLUCENE_LIBRARIES} version ${CLUCENE_VERSION}")
@@ -111,7 +124,8 @@ ELSE(CLucene_FOUND)
ENDIF(CLucene_FOUND)
MARK_AS_ADVANCED(
CLUCENE_INCLUDE_DIR
CLUCENE_LIBRARY_DIR
CLUCENE_INCLUDE_DIRS
CLUCENE_INCLUDE_DIR
CLUCENE_LIBRARY_DIR
CLUCENE_LIBRARIES
)

View File

@@ -0,0 +1,37 @@
# - Try to find clucene-unstable
# This is a workaround for distros, that want to ship a recent enough clucene but don't want to replace the old version
#
# CLUCENEUNSTABLE_FOUND - system has clucene-unstable
# CLUCENE_UNSTABLE_INCLUDE_DIR - the clucene-unstable include directories
# CLUCENE_UNSTABLE_LIBS - link these to use clucene-unstable
#
# (c) Dominik Schmidt <dev@dominik-schmidt.de>
#
# Include dir
find_path(CLUCENE_UNSTABLE_INCLUDE_DIR
NAMES CLucene.h
PATH_SUFFIXES clucene-unstable
PATHS ${KDE4_INCLUDE_DIR}
)
# Finally the library itself
find_library(CLUCENE_UNSTABLE_SHARED_LIB
NAMES clucene-unstable-shared
PATHS ${KDE4_LIB_DIR}
)
find_library(CLUCENE_UNSTABLE_CORE_LIB
NAMES clucene-unstable-core
PATHS ${KDE4_LIB_DIR}
)
SET( CLUCENE_UNSTABLE_LIBS ${CLUCENE_UNSTABLE_SHARED_LIB} ${CLUCENE_UNSTABLE_CORE_LIB} )
SET( CLUCENE_UNSTABLE_INCLUDE_DIRS ${CLUCENE_UNSTABLE_INCLUDE_DIR})
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(CLuceneUnstable DEFAULT_MSG CLUCENE_UNSTABLE_LIBS CLUCENE_UNSTABLE_INCLUDE_DIRS)
MARK_AS_ADVANCED(CLUCENE_UNSTABLE_LIBS CLUCENE_UNSTABLE_INCLUDE_DIRS)

View File

@@ -0,0 +1,63 @@
# Try to find the Attica library
# Once done this will define
#
# LIBATTICA_FOUND Indicates that Attica was found
# LIBATTICA_LIBRARIES Libraries needed to use Attica
# LIBATTICA_LIBRARY_DIRS Paths needed for linking against Attica
# LIBATTICA_INCLUDE_DIR Path needed for finding Attica include files
#
# The minimum required version of LibAttica can be specified using the
# standard syntax, e.g. find_package(LibAttica 0.20)
# Copyright (c) 2009 Frederik Gladhorn <gladhorn@kde.org>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# Support LIBATTICA_MIN_VERSION for compatibility:
IF(NOT LibAttica_FIND_VERSION)
SET(LibAttica_FIND_VERSION "${LIBATTICA_MIN_VERSION}")
ENDIF(NOT LibAttica_FIND_VERSION)
# the minimum version of LibAttica we require
IF(NOT LibAttica_FIND_VERSION)
SET(LibAttica_FIND_VERSION "0.1.0")
ENDIF(NOT LibAttica_FIND_VERSION)
IF (NOT WIN32)
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
FIND_PACKAGE(PkgConfig)
PKG_CHECK_MODULES(PC_LIBATTICA QUIET libattica)
SET(LIBATTICA_DEFINITIONS ${PC_ATTICA_CFLAGS_OTHER})
ENDIF (NOT WIN32)
FIND_PATH(LIBATTICA_INCLUDE_DIR attica/provider.h
HINTS
${PC_LIBATTICA_INCLUDEDIR}
${PC_LIBATTICA_INCLUDE_DIRS}
PATH_SUFFIXES attica
)
# Store the version number in the cache, so we don't have to search everytime:
IF(LIBATTICA_INCLUDE_DIR AND NOT LIBATTICA_VERSION)
FILE(READ ${LIBATTICA_INCLUDE_DIR}/attica/version.h LIBATTICA_VERSION_CONTENT)
STRING (REGEX MATCH "LIBATTICA_VERSION_STRING \".*\"\n" LIBATTICA_VERSION_MATCH "${LIBATTICA_VERSION_CONTENT}")
IF(LIBATTICA_VERSION_MATCH)
STRING(REGEX REPLACE "LIBATTICA_VERSION_STRING \"(.*)\"\n" "\\1" _LIBATTICA_VERSION ${LIBATTICA_VERSION_MATCH})
ENDIF(LIBATTICA_VERSION_MATCH)
SET(LIBATTICA_VERSION "${_LIBATTICA_VERSION}" CACHE STRING "Version number of LibAttica" FORCE)
ENDIF(LIBATTICA_INCLUDE_DIR AND NOT LIBATTICA_VERSION)
FIND_LIBRARY(LIBATTICA_LIBRARIES NAMES attica libattica
HINTS
${PC_LIBATTICA_LIBDIR}
${PC_LIBATTICA_LIBRARY_DIRS}
)
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibAttica REQUIRED_VARS LIBATTICA_LIBRARIES LIBATTICA_INCLUDE_DIR
VERSION_VAR LIBATTICA_VERSION)
MARK_AS_ADVANCED(LIBATTICA_INCLUDE_DIR LIBATTICA_LIBRARIES)

View File

@@ -19,53 +19,19 @@ macro(_phonon_find_version)
file(READ ${_phonon_namespace_header_file} _phonon_header LIMIT 5000 OFFSET 1000)
string(REGEX MATCH "define PHONON_VERSION_STR \"(4\\.[0-9]+\\.[0-9a-z]+)\"" _phonon_version_match "${_phonon_header}")
set(PHONON_VERSION "${CMAKE_MATCH_1}")
message(STATUS "Phonon Version: ${PHONON_VERSION}")
endmacro(_phonon_find_version)
if(PHONON_FOUND)
# Already found, nothing more to do except figuring out the version
# the dirs listed with HINTS are searched before the default sets of dirs
find_library(PHONON_LIBRARY NAMES phonon HINTS ${KDE4_LIB_INSTALL_DIR} ${QT_LIBRARY_DIR})
find_path(PHONON_INCLUDE_DIR NAMES phonon/phonon_export.h HINTS ${KDE4_INCLUDE_INSTALL_DIR} ${QT_INCLUDE_DIR} ${INCLUDE_INSTALL_DIR} ${QT_LIBRARY_DIR})
if(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
set(PHONON_LIBS ${phonon_LIB_DEPENDS} ${PHONON_LIBRARY})
set(PHONON_INCLUDES ${PHONON_INCLUDE_DIR}/KDE ${PHONON_INCLUDE_DIR})
_phonon_find_version()
else(PHONON_FOUND)
if(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
set(PHONON_FIND_QUIETLY TRUE)
endif(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
endif(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
# As discussed on kde-buildsystem: first look at CMAKE_PREFIX_PATH, then at the suggested PATHS (kde4 install dir)
find_library(PHONON_LIBRARY NAMES phonon phonon4 PATHS ${KDE4_LIB_INSTALL_DIR} ${QT_LIBRARY_DIR})
# then at the default system locations (CMAKE_SYSTEM_PREFIX_PATH, i.e. /usr etc.)
find_library(PHONON_LIBRARY NAMES phonon phonon4)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Phonon DEFAULT_MSG PHONON_INCLUDE_DIR PHONON_LIBRARY)
find_path(PHONON_INCLUDE_DIR NAMES phonon/phonon_export.h PATHS ${KDE4_INCLUDE_INSTALL_DIR} ${QT_INCLUDE_DIR} ${INCLUDE_INSTALL_DIR} ${QT_LIBRARY_DIR})
find_path(PHONON_INCLUDE_DIR NAMES phonon/phonon_export.h)
_phonon_find_version()
if(PHONON_INCLUDE_DIR AND PHONON_LIBRARY AND NOT PHONON_VERSION VERSION_LESS ${Phonon_FIND_VERSION})
set(PHONON_LIBS ${phonon_LIB_DEPENDS} ${PHONON_LIBRARY})
set(PHONON_INCLUDES ${PHONON_INCLUDE_DIR}/KDE ${PHONON_INCLUDE_DIR})
set(PHONON_FOUND TRUE)
else(PHONON_INCLUDE_DIR AND PHONON_LIBRARY AND NOT PHONON_VERSION VERSION_LESS ${Phonon_FIND_VERSION})
set(PHONON_FOUND FALSE)
endif(PHONON_INCLUDE_DIR AND PHONON_LIBRARY AND NOT PHONON_VERSION VERSION_LESS ${Phonon_FIND_VERSION})
if(PHONON_FOUND)
if(NOT PHONON_FIND_QUIETLY)
message(STATUS "Found Phonon: ${PHONON_LIBRARY}")
message(STATUS "Found Phonon Includes: ${PHONON_INCLUDES}")
endif(NOT PHONON_FIND_QUIETLY)
else(PHONON_FOUND)
if(Phonon_FIND_REQUIRED)
if(NOT PHONON_INCLUDE_DIR)
message(STATUS "Phonon includes NOT found!")
endif(NOT PHONON_INCLUDE_DIR)
if(NOT PHONON_LIBRARY)
message(STATUS "Phonon library NOT found!")
endif(NOT PHONON_LIBRARY)
message(FATAL_ERROR "Phonon library or includes NOT found!")
else(Phonon_FIND_REQUIRED)
message(STATUS "Unable to find Phonon")
endif(Phonon_FIND_REQUIRED)
endif(PHONON_FOUND)
mark_as_advanced(PHONON_INCLUDE_DIR PHONON_LIBRARY PHONON_INCLUDES)
endif(PHONON_FOUND)
mark_as_advanced(PHONON_INCLUDE_DIR PHONON_LIBRARY)

View File

@@ -0,0 +1,48 @@
# - Try to find QCA2 (Qt Cryptography Architecture 2)
# Once done this will define
#
# QCA2_FOUND - system has QCA2
# QCA2_INCLUDE_DIR - the QCA2 include directory
# QCA2_LIBRARIES - the libraries needed to use QCA2
# QCA2_DEFINITIONS - Compiler switches required for using QCA2
#
# use pkg-config to get the directories and then use these values
# in the FIND_PATH() and FIND_LIBRARY() calls
# Copyright (c) 2006, Michael Larouche, <michael.larouche@kdemail.net>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
include(FindLibraryWithDebug)
if (QCA2_INCLUDE_DIR AND QCA2_LIBRARIES)
# in cache already
set(QCA2_FOUND TRUE)
else (QCA2_INCLUDE_DIR AND QCA2_LIBRARIES)
if (NOT WIN32)
find_package(PkgConfig)
pkg_check_modules(PC_QCA2 qca2)
set(QCA2_DEFINITIONS ${PC_QCA2_CFLAGS_OTHER})
endif (NOT WIN32)
find_library_with_debug(QCA2_LIBRARIES
WIN32_DEBUG_POSTFIX d
NAMES qca
HINTS ${PC_QCA2_LIBDIR} ${PC_QCA2_LIBRARY_DIRS}
)
find_path(QCA2_INCLUDE_DIR qca.h
HINTS ${PC_QCA2_INCLUDEDIR} ${PC_QCA2_INCLUDE_DIRS}
PATH_SUFFIXES QtCrypto)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(QCA2 DEFAULT_MSG QCA2_LIBRARIES QCA2_INCLUDE_DIR)
mark_as_advanced(QCA2_INCLUDE_DIR QCA2_LIBRARIES)
endif (QCA2_INCLUDE_DIR AND QCA2_LIBRARIES)

View File

@@ -0,0 +1,11 @@
find_package(Qt4)
find_path(QuaZip_INCLUDE_DIR quazip.h ${CMAKE_INSTALL_PREFIX}/include/quazip ${CMAKE_INSTALL_PREFIX}/include /usr/include/quazip /usr/local/include/quazip ${QT_INCLUDE_DIR}/quazip ${QT_INCLUDE_DIR} ${QUAZIP_DIR}/include/quazip ${QUAZIP_DIR}/quazip ${QUAZIP_DIR}/include)
find_library(QuaZip_LIBRARY NAMES quazip PATHS ${CMAKE_INSTALL_PREFIX}/lib64 ${CMAKE_INSTALL_PREFIX}/lib ${CMAKE_INSTALL_PREFIX}/Library/Frameworks ${QUAZIP_DIR}/lib64 ${QUAZIP_DIR}/lib ${QUAZIP_DIR}/quazip ${QUAZIP_DIR})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(quazip DEFAULT_MSG QuaZip_LIBRARY QuaZip_INCLUDE_DIR)
set(QuaZip_LIBRARIES ${QuaZip_LIBRARY})
mark_as_advanced(QuaZip_LIBRARY QuaZip_INCLUDE_DIR)
if(QuaZip_LIBRARY AND QuaZip_INCLUDE_DIR)
set(QuaZip_FOUND TRUE)
endif()

View File

@@ -0,0 +1,48 @@
# Find VSXU - JSON handling library for Qt
#
# This module defines
# VSXU_FOUND - whether the qsjon library was found
# VSXU_LIBRARIES - the vsxu library
# VSXU_INCLUDE_DIRS - the include path of the vsxu library
#
if (VSXU_INCLUDE_DIRS AND VSXU_LIBRARIES)
# Already in cache
set (VSXU_FOUND TRUE)
else (VSXU_INCLUDE_DIRS AND VSXU_LIBRARIES)
if (NOT WIN32)
# use pkg-config to get the values of VSXU_INCLUDE_DIRS
# and VSXU_LIBRARY_DIRS to add as hints to the find commands.
include (FindPkgConfig)
pkg_check_modules (VSXU REQUIRED libvsxu)
endif (NOT WIN32)
find_library (VSXU_LIBRARIES
NAMES
libvsxu_engine
PATHS
${VSXU_LIBRARY_DIRS}
${LIB_INSTALL_DIR}
${KDE4_LIB_DIR}
)
find_path (VSXU_INCLUDE_DIRS
NAMES
vsxu_platform.h
PATHS
${VSXU_INCLUDE_DIRS}
${INCLUDE_INSTALL_DIR}
${KDE4_INCLUDE_DIR}
)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(VSXu DEFAULT_MSG VSXU_LIBRARIES VSXU_INCLUDE_DIRS)
if ( UNIX AND NOT APPLE )
set ( VSXU_LIBRARIES "${VSXU_LIBRARIES} ${VSXU_LDFLAGS}" CACHE INTERNAL "")
endif ()
endif (VSXU_INCLUDE_DIRS AND VSXU_LIBRARIES)

View File

@@ -0,0 +1,182 @@
# - Define GNU standard installation directories
# Provides install directory variables as defined for GNU software:
# http://www.gnu.org/prep/standards/html_node/Directory-Variables.html
# Inclusion of this module defines the following variables:
# CMAKE_INSTALL_<dir> - destination for files of a given type
# CMAKE_INSTALL_FULL_<dir> - corresponding absolute path
# where <dir> is one of:
# BINDIR - user executables (bin)
# SBINDIR - system admin executables (sbin)
# LIBEXECDIR - program executables (libexec)
# SYSCONFDIR - read-only single-machine data (etc)
# SHAREDSTATEDIR - modifiable architecture-independent data (com)
# LOCALSTATEDIR - modifiable single-machine data (var)
# LIBDIR - object code libraries (lib or lib64)
# INCLUDEDIR - C header files (include)
# OLDINCLUDEDIR - C header files for non-gcc (/usr/include)
# DATAROOTDIR - read-only architecture-independent data root (share)
# DATADIR - read-only architecture-independent data (DATAROOTDIR)
# INFODIR - info documentation (DATAROOTDIR/info)
# LOCALEDIR - locale-dependent data (DATAROOTDIR/locale)
# MANDIR - man documentation (DATAROOTDIR/man)
# DOCDIR - documentation root (DATAROOTDIR/doc/PROJECT_NAME)
# Each CMAKE_INSTALL_<dir> value may be passed to the DESTINATION options of
# install() commands for the corresponding file type. If the includer does
# not define a value the above-shown default will be used and the value will
# appear in the cache for editing by the user.
# Each CMAKE_INSTALL_FULL_<dir> value contains an absolute path constructed
# from the corresponding destination by prepending (if necessary) the value
# of CMAKE_INSTALL_PREFIX.
#=============================================================================
# Copyright 2011 Nikita Krupen'ko <krnekit@gmail.com>
# Copyright 2011 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
# Installation directories
#
if(NOT DEFINED CMAKE_INSTALL_BINDIR)
set(CMAKE_INSTALL_BINDIR "bin" CACHE PATH "user executables (bin)")
endif()
if(NOT DEFINED CMAKE_INSTALL_SBINDIR)
set(CMAKE_INSTALL_SBINDIR "sbin" CACHE PATH "system admin executables (sbin)")
endif()
if(NOT DEFINED CMAKE_INSTALL_LIBEXECDIR)
set(CMAKE_INSTALL_LIBEXECDIR "libexec" CACHE PATH "program executables (libexec)")
endif()
if(NOT DEFINED CMAKE_INSTALL_SYSCONFDIR)
set(CMAKE_INSTALL_SYSCONFDIR "etc" CACHE PATH "read-only single-machine data (etc)")
endif()
if(NOT DEFINED CMAKE_INSTALL_SHAREDSTATEDIR)
set(CMAKE_INSTALL_SHAREDSTATEDIR "com" CACHE PATH "modifiable architecture-independent data (com)")
endif()
if(NOT DEFINED CMAKE_INSTALL_LOCALSTATEDIR)
set(CMAKE_INSTALL_LOCALSTATEDIR "var" CACHE PATH "modifiable single-machine data (var)")
endif()
if(NOT DEFINED CMAKE_INSTALL_LIBDIR)
set(_LIBDIR_DEFAULT "lib")
# Override this default 'lib' with 'lib64' iff:
# - we are on Linux system but NOT cross-compiling
# - we are NOT on debian
# - we are on a 64 bits system
# reason is: amd64 ABI: http://www.x86-64.org/documentation/abi.pdf
# Note that the future of multi-arch handling may be even
# more complicated than that: http://wiki.debian.org/Multiarch
if(CMAKE_SYSTEM_NAME MATCHES "Linux"
AND NOT CMAKE_CROSSCOMPILING
AND NOT EXISTS "/etc/debian_version")
if(NOT DEFINED CMAKE_SIZEOF_VOID_P)
message(AUTHOR_WARNING
"Unable to determine default CMAKE_INSTALL_LIBDIR directory because no target architecture is known. "
"Please enable at least one language before including GNUInstallDirs.")
else()
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
set(_LIBDIR_DEFAULT "lib64")
endif()
endif()
endif()
set(CMAKE_INSTALL_LIBDIR "${_LIBDIR_DEFAULT}" CACHE PATH "object code libraries (${_LIBDIR_DEFAULT})")
endif()
if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR)
set(CMAKE_INSTALL_INCLUDEDIR "include" CACHE PATH "C header files (include)")
endif()
if(NOT DEFINED CMAKE_INSTALL_OLDINCLUDEDIR)
set(CMAKE_INSTALL_OLDINCLUDEDIR "/usr/include" CACHE PATH "C header files for non-gcc (/usr/include)")
endif()
if(NOT DEFINED CMAKE_INSTALL_DATAROOTDIR)
set(CMAKE_INSTALL_DATAROOTDIR "share" CACHE PATH "read-only architecture-independent data root (share)")
endif()
#-----------------------------------------------------------------------------
# Values whose defaults are relative to DATAROOTDIR. Store empty values in
# the cache and store the defaults in local variables if the cache values are
# not set explicitly. This auto-updates the defaults as DATAROOTDIR changes.
if(NOT CMAKE_INSTALL_DATADIR)
set(CMAKE_INSTALL_DATADIR "" CACHE PATH "read-only architecture-independent data (DATAROOTDIR)")
set(CMAKE_INSTALL_DATADIR "${CMAKE_INSTALL_DATAROOTDIR}")
endif()
if(NOT CMAKE_INSTALL_INFODIR)
set(CMAKE_INSTALL_INFODIR "" CACHE PATH "info documentation (DATAROOTDIR/info)")
set(CMAKE_INSTALL_INFODIR "${CMAKE_INSTALL_DATAROOTDIR}/info")
endif()
if(NOT CMAKE_INSTALL_LOCALEDIR)
set(CMAKE_INSTALL_LOCALEDIR "" CACHE PATH "locale-dependent data (DATAROOTDIR/locale)")
set(CMAKE_INSTALL_LOCALEDIR "${CMAKE_INSTALL_DATAROOTDIR}/locale")
endif()
if(NOT CMAKE_INSTALL_MANDIR)
set(CMAKE_INSTALL_MANDIR "" CACHE PATH "man documentation (DATAROOTDIR/man)")
set(CMAKE_INSTALL_MANDIR "${CMAKE_INSTALL_DATAROOTDIR}/man")
endif()
if(NOT CMAKE_INSTALL_DOCDIR)
set(CMAKE_INSTALL_DOCDIR "" CACHE PATH "documentation root (DATAROOTDIR/doc/PROJECT_NAME)")
set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}")
endif()
#-----------------------------------------------------------------------------
mark_as_advanced(
CMAKE_INSTALL_BINDIR
CMAKE_INSTALL_SBINDIR
CMAKE_INSTALL_LIBEXECDIR
CMAKE_INSTALL_SYSCONFDIR
CMAKE_INSTALL_SHAREDSTATEDIR
CMAKE_INSTALL_LOCALSTATEDIR
CMAKE_INSTALL_LIBDIR
CMAKE_INSTALL_INCLUDEDIR
CMAKE_INSTALL_OLDINCLUDEDIR
CMAKE_INSTALL_DATAROOTDIR
CMAKE_INSTALL_DATADIR
CMAKE_INSTALL_INFODIR
CMAKE_INSTALL_LOCALEDIR
CMAKE_INSTALL_MANDIR
CMAKE_INSTALL_DOCDIR
)
# Result directories
#
foreach(dir
BINDIR
SBINDIR
LIBEXECDIR
SYSCONFDIR
SHAREDSTATEDIR
LOCALSTATEDIR
LIBDIR
INCLUDEDIR
OLDINCLUDEDIR
DATAROOTDIR
DATADIR
INFODIR
LOCALEDIR
MANDIR
DOCDIR
)
if(NOT IS_ABSOLUTE ${CMAKE_INSTALL_${dir}})
set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_${dir}}")
else()
set(CMAKE_INSTALL_FULL_${dir} "${CMAKE_INSTALL_${dir}}")
endif()
endforeach()

View File

@@ -203,7 +203,7 @@ Function PageReinstall
IntCmp $R0 ${VER_MINOR} build_check new_version older_version
build_check:
ReadRegDWORD $R0 HKLM "Software\Tomahawk" "VersionBuild"
IntCmp $R0 ${VER_BUILD} new_version older_version
IntCmp $R0 ${VER_BUILD} same_version new_version older_version
new_version:
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 1" "Text" "An older version of Tomahawk is installed on your system. It is recommended that you uninstall the current version before installing. Select the operation you want to perform and click Next to continue."
@@ -273,9 +273,13 @@ Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER
;Main executable.
File "${INSTALL_PATH}\bin\tomahawk.exe"
File "${INSTALL_PATH}\bin\tomahawk_crash_reporter.exe"
File "${INSTALL_PATH}\bin\libtomahawk_breakpad.dll"
File "${INSTALL_PATH}\bin\libqxtweb-standalone.dll"
File "${INSTALL_PATH}\bin\libtomahawk_portfwd.dll"
File "${INSTALL_PATH}\bin\libtomahawk_lastfm2.dll"
File "${INSTALL_PATH}\bin\libquazip.dll"
File "${INSTALL_PATH}\bin\libtomahawklib.dll"
File "${INSTALL_PATH}\lib\libtomahawk_sip*.dll"
!endif
@@ -283,10 +287,14 @@ Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER
;Main executable.
File "${BUILD_PATH}\tomahawk.exe"
File "${BUILD_PATH}\tomahawk_crash_reporter.exe"
File "${BUILD_PATH}\libtomahawk_breakpad.dll"
File "${BUILD_PATH}\libtomahawklib.dll"
File "${BUILD_PATH}\libqxtweb-standalone.dll"
File "${BUILD_PATH}\libtomahawk_portfwd.dll"
File "${BUILD_PATH}\libtomahawk_lastfm2.dll"
File "${BUILD_PATH}\libquazip.dll"
File "${BUILD_PATH}\libtomahawk_sip*.dll"
!endif
@@ -321,12 +329,6 @@ Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER
File "${MING_BIN}\libstdc++-6.dll"
;Phonon stuff
;Fix the phonon build to not use Dbus
File "${QT_DLL_PATH}\QtDbus4.dll"
File "${MING_BIN}\libdbus-1-3.dll"
File "${MING_BIN}\dbus-daemon.exe"
File "${VLC_BIN}\libphonon.dll"
SetOutPath "$INSTDIR\phonon_backend"
File "${VLC_BIN}\phonon_backend\phonon_vlc.dll"
@@ -339,13 +341,6 @@ Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER
SetOutPath "$INSTDIR\plugins"
File /r "${VLC_PLUGIN_PATH}\*.dll"
SetOutPath "$INSTDIR"
File "${MING_BIN}\libmad-0.dll" ; MP3
File "${MING_BIN}\libFLAC-8.dll" ; FLAC
File "${MING_BIN}\libogg-0.dll" ; OGG, FLAC
File "${MING_BIN}\libvorbis-0.dll" ; OGG
File "${MING_BIN}\libvorbisenc-2.dll" ; OGG
; Other
File "${MING_BIN}\libqjson.dll"
@@ -370,6 +365,7 @@ Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER
File "${MING_LIB}\libclucene-shared.dll"
File "${MING_BIN}\libqtsparkle.dll"
File "${MING_BIN}\libattica.dll"
SectionEnd
SectionGroup "Shortcuts"
@@ -459,7 +455,8 @@ Section -post
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Tomahawk" "NoRepair" "1"
; Register tomahawk:// protocol handler
WriteRegStr HKCR "tomahawk" "" "URL: Tomahawk Protocol"
WriteRegStr HKCR "tomahawk" "" "URL:Tomahawk Protocol"
WriteRegStr HKCR "tomahawk" "URL Protocol" ""
WriteRegStr HKCR "tomahawk\DefaultIcon" "" $INSTDIR\tomahawk.exe,1
WriteRegStr HKCR "tomahawk\shell" "" "open"
WriteRegStr HKCR "tomahawk\shell\open\command" "" '"$INSTDIR\tomahawk.exe" "%1"'

140
ChangeLog
View File

@@ -1,3 +1,143 @@
Version 0.3.3:
* Automatically load Super Collection tracks when no official release
information is available.
* Fixed stations not fetching new tracks under certain circumstances.
* Fixed Footnotes not always updating when selecting a new track.
* Added support for ow.ly, fb.me, itun.es and tinyurl.com URL shorteners.
* Fixed playback issues with non-latin filenames on Windows.
* Fixed tomahawk:// protocol not working properly on Windows.
* Fixed dupe menu entry appearing on OS X.
* Fixed invisible sidebar items on Linux.
Version 0.3.2:
* Improved syncing process, it's faster and more reliable now.
* Fixed UPnP issues.
* Fixed not updating collections and views after a collection changes.
* Fixed not showing a source's proper name at all times.
* Improved music scanner reliability.
* Fixed various labels not being painted in the right color when selected.
* Support .oga (ogg mimetype) files.
* Fixed stuck Now Playing indicator icon.
* Fixed sidebar width of settings dialog on Windows.
* Fixed not always showing delete icon on hovered temporary pages.
* Fixed inability to select externally mounted drives.
* Fixed bug where speaker would be stuck next to a playlist.
* Fixed bug where first startup would show a loading spinner in the
Dashboard's "Recent Additions" forever.
* Automatically upgrade resolvers when an update is found.
* Fixed last played track of a friend never expiring.
* Fixed parsing of rdio tracks.
* Changed steering mechanism in stations to be user-friendlier.
* Fixed loading biographies of artist names with special characters.
* Fixed behaviour of dropping Spotify playlists on the sidebar.
* Fixed hard to read source-name in the audio control area on OS X.
* Fixed crashes when playing Grooveshark tracks.
* Fixed bug where clicking the latch button would flicker and unlatch.
* Fixed Jabber accounts not connecting properly when proxy is in use.
Version 0.3.1:
* Fixed not resolving to local files.
* Fixed shutdown crash on Windows.
* Support more widget types in Javascript resolver configs.
* Fixed bug where red headphone would be visible on My Collection
when listened along to source went offline.
* Draw author name as well as avatar in recently played playlists.
* Fixed Tomahawk integration in Unity.
* Fixed incorrect item selected in source tree when deleting temporary
pages.
* Fixed currently played label disappearing after 10 minutes regardless
of length of track.
* Fixed crash on Sparkle upgrade on OS X.
Version 0.3.0:
* Make artist names in the album view clickable.
* Don't start playing if a tomahawk:// link was clicked while Tomahawk
is paused.
* Make artist name clickable in header of Album pages.
* Added a drop shadow to cover images, and put placeholder in jewel case.
* Added shuffle and repeat support to tree view.
* Draw a speaker next to the currently playing playlist.
* Refresh station previews whenever a filter is changed.
* Support and show official releases on album and track pages.
* Filter out duplicates from station previews and upcoming tracks.
* Added YouTube resolver.
* Fixed bug where going offline then online would not re-connect to many
peers.
* Added support for auto-updating live XSPF playlists.
* Don't show an age of 41 years for tracks that have no age information.
* Show config UI for resolvers that have them as soon as you add them.
* Add support for Echo Nest Personal Catalogs and User Radio. Synchronize
your catalog with The Echo Nest and enable personal recommendations
from you and your friends.
* Added support for Grooveshark resolver (requires Grooveshark Anywhere).
* Fixed re-resolving when resolvers or sources go off- / online.
* Correctly sort recently played tracks on the Dashboard.
* Show a Lion full-screen toggle button if running on Lion.
* Show a list of users who are currently listening along to you.
* Show headphone icon in source item to allow users to listen along; paint
headphones red on a source if you are currently listening along to it.
* Added new job status view in the bottom of the source list that displays
current jobs such as resolving, parsing playlists, and loading from
database.
* Parse and convert a Spotify playlist URL when dropped anywhere on the
sidebar.
* Convert resolvers to use asynchronous calls to avoid blocking Tomahawk's
UI, greatly increasing responsiveness of Tomahawk while resolving.
* Fixed no playlists overlay not disappearing when playlists were added.
* Add support for parsing itunes track, artist and album links.
* Fixed crash when syncing playlists with peers.
* Add support for browsing, downloading and rating resolvers from within
Tomahawk directly.
* Support multi-folder selection and scanning.
* Fixed handling of special characters in tomahawk:// links
* Improve sidebar performance by caching pixmaps and shrinking them.
* Send updated playlists to peers when tracks are moved/copied.
* Remove splitter handles in sidebar.
* Fixed Tomahawk preventing system shutdown / logout.
* Ignore leading 'The' when sorting artists.
* Added Charts page, which shows various sources' top hits & artists.
* The Collection tree-views can now be filtered.
* Fixed crash when pressing enter in an empty playlist.
* Moved the song queue to the bottom of the sidebar.
* Added Footnotes, a contextual view that you can slide it.
* Show recently added playlists in dashboard rather than recently opened
playlists.
* Fixed seek slider and give it some smooth animation between ticks.
* Fixed Twitter issue where it would repeatedly send DMs to friends.
* Add a new drag and drop menu when dropping items onto playlists,
allowing users to drop the dragged tracks, the whole album, or
the whole artists's tracks.
* Bring Tomahawk window to the front when clicking a Tomahawk link.
* Fixed crash in source list when initially syncing with remote sources.
* Open temporary artist, album, and search playlists as temporary items
in the sidebar.
* Fixed sorting of playlists and items in the artist view.
* Allow dragging and dropping albums and artists to playlists.
* Added MPRIS 2.1 support.
Version 0.2.3:
* Fixed opening Rdio and Spotify links.
* Fixed potential crash in sidebar during syncing of sources.
* When Listening Along, the last song a peer plays is no longer duplicated.
* Fixed an issue where the Twitter plugin could get out of sync if the
database was cleared, leading to eventual crashes when re-connecting.
* Fixed duplicate albums showing up on Dashboard.
* Automatically sort search results by score.
* Fixed stations being stuck not fetching more songs.
* Fixed issue where artist bio could be referring to a different artist.
* Opening a "tomahawk" URL (or other URL with Tomahawk) brings the Tomahawk
window to the foreground.
Version 0.2.2:
* Fixed crash pressing previous and next when playing a song from the Queue.
* Fixed issue where wrench for newly added resolvers would not show up.
* Fixed sidebar statistics not updating after collection scan finished.
* Fixed omitting a few tracks in the Collection tree-view.
* Fixed sidebar & track sorting issues.
* Seek- & volume sliders now directly jump to the position you clicked on.
* Added ability to drag artists and albums within Tomahawk.
* (OS X) Fixed Ogg Vorbis support.
Version 0.2.1:
* Fixed crashing trying to play an unavailable track.
* Fixed a crash caused by using Javascript resolvers.

27
README
View File

@@ -27,18 +27,25 @@ Doxygen Documentation
Dependencies
------------
CMake 2.8.0 http://www.cmake.org/
Qt 4.7.0 http://qt.nokia.com/
QJson 0.7.1 http://qjson.sourceforge.net/
SQLite 3.6.22 http://www.sqlite.org/
TagLib 1.6.2 http://developer.kde.org/~wheeler/taglib.html
Boost 1.3x http://www.boost.org/
CLucene 0.9.23 (0.9.21 will fail) http://clucene.sourceforge.net/download.shtml
libechonest 1.1.8 http://projects.kde.org/projects/playground/libs/libechonest/
CMake 2.8.0 - http://www.cmake.org/
Qt 4.7.0 - http://qt.nokia.com/
QJson 0.7.1 - http://qjson.sourceforge.net/
SQLite 3.6.22 - http://www.sqlite.org/
TagLib 1.6.2 - http://developer.kde.org/~wheeler/taglib.html
Boost 1.3 - http://www.boost.org/
CLucene 0.9.23 (0.9.21 will fail) - http://clucene.sourceforge.net/download.shtml
libechonest 1.2.0 - http://projects.kde.org/projects/playground/libs/libechonest/
The following dependencies are optional, but recommended:
Attica 0.2.0 - ftp://ftp.kde.org/pub/kde/stable/attica/
Jreen 1.0.1 - https://github.com/euroelessar/jreen
QTweetLib 0.3.0 - https://github.com/minimoog/QTweetLib
Third party libraries that we ship with our source:
MiniUPnP http://miniupnp.free.fr/
liblastfm 0.4.0 http://github.com/jonocole/liblastfm/
MiniUPnP 1.6 - http://miniupnp.free.fr/
liblastfm 0.4.0 - http://github.com/jonocole/liblastfm/
QuaZip 0.4.3 - http://quazip.sourceforge.net/
Enjoy!

View File

@@ -1,3 +1,3 @@
IF(WIN32)
INSTALL(DIRECTORY win DESTINATION share/tomahawk/admin )
ENDIF(WIN32)
ENDIF(WIN32)

5
admin/copy_syms.sh Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/sh
DUMPID=`head -n1 $1 | cut -f4 -d' '`
mkdir -p $2/$DUMPID
cp $1 $2/$DUMPID/

View File

@@ -41,7 +41,7 @@ VERSION=$1
header "Copying Sparkle framework"
cp -R /Library/Frameworks/Sparkle.framework Contents/Frameworks
header "Creating DMG"
cd ..

View File

@@ -207,7 +207,7 @@ TOMAHAWK_PLUGINS = [
]
QT_PLUGINS_SEARCH_PATH=[
'/usr/local/Cellar/qt/4.7.3/plugins',
'/usr/local/Cellar/qt/4.7.4/plugins',
]
@@ -250,7 +250,7 @@ frameworks_dir = os.path.join(bundle_dir, 'Contents', 'Frameworks')
commands.append(['mkdir', '-p', frameworks_dir])
resources_dir = os.path.join(bundle_dir, 'Contents', 'Resources')
commands.append(['mkdir', '-p', resources_dir])
plugins_dir = os.path.join(bundle_dir, 'Contents', 'PlugIns')
plugins_dir = os.path.join(bundle_dir, 'Contents', 'plugins')
binary = os.path.join(bundle_dir, 'Contents', 'MacOS', bundle_name)
fixed_libraries = []
@@ -500,6 +500,11 @@ try:
FixPlugin('spotify_tomahawkresolver', '../MacOS')
except:
print 'Failed to find spotify resolver'
try:
FixPlugin('tomahawk_crash_reporter', '../MacOS')
except:
print 'Failed to find tomahawk_crash_reporter'
for plugin in QT_PLUGINS:
FixPlugin(FindQtPlugin(plugin), os.path.dirname(plugin))

View File

@@ -4,8 +4,9 @@ Version=1.0
Name=Tomahawk
GenericName=Music Player
TryExec=tomahawk
Exec=tomahawk
Exec=tomahawk %u
Comment=Tomahawk - Social Music Player
Icon=tomahawk
Terminal=false
Categories=Qt;AudioVideo;Audio;Player;
MimeType=x-scheme-handler/tomahawk;

View File

@@ -1,22 +1,31 @@
#!/bin/bash
echo "Remove old vlc dir..."
mkdir -p vlc/
if [ "$1" = "-c" ] ; then
echo "Continuing last download.."
rm -rvf vlc/prefix/
else
echo "Remove old vlc dir..."
rm -rvf vlc/*
fi
cd vlc/
#rm -vf vlc-*.7z
#rm -rf vlc/
echo "Download specified binary..."
echo "Download phonon archive..."
#wget -c "http://downloads.sourceforge.net/project/vlc/1.1.9/win32/vlc-1.1.9-win32.7z?r=http%3A%2F%2Fwww.videolan.org%2Fvlc%2Fdownload-windows.html&ts=1306272584&use_mirror=leaseweb"
#wget -c "http://download.tomahawk-player.org/tomahawk-vlc-0.1.zip"
wget -c http://people.videolan.org/~jb/phonon/phonon-vlc-last.7z
#wget -c http://people.videolan.org/~jb/phonon/phonon-vlc-last.7z
wget -c http://people.videolan.org/~jb/phonon/phonon_phonon-vlc_20111128.7z
echo "Extract binary..."
7z x phonon-vlc-last.7z
7z x phonon*.7z
#mv -v vlc-*/ vlc/
#unzip tomahawk-vlc-0.1.zip
echo "Download phonon_vlc_no_video.dll..."
wget -c http://people.videolan.org/~jb/phonon/phonon_vlc_no_video.dll
cp -v phonon_vlc_no_video.dll prefix/bin/phonon_backend/phonon_vlc.dll
echo "Strip unneeded plugins from vlc/plugins..."
cd prefix/bin/plugins
rm -rvf libold* libvcd* libdvd* liblibass* libx264* libschroe* liblibmpeg2* \

View File

@@ -1,60 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="841.89px" height="595.28px" viewBox="0 0 841.89 595.28" enable-background="new 0 0 841.89 595.28" xml:space="preserve">
<path fill="#010101" d="M543.773,253.359c0-49.962-19.305-86.572-54.194-104.54C477.838,71.133,405.027,13.418,316.568,13.418
c-86.917,0-159.483,56.481-172.605,132.58c-38.049,16.818-59.889,55.24-59.889,107.361c0,27.029,7.186,51.825,20.321,71.748
c-1.816,1.566-3.444,3.283-4.768,5.24c0,0,2.582,2.36,3.689,3.374c-4.262,2.123-8.22,4.322-11.555,6.669
c0,0,3.022,7.355,5.898,14.352c-11.991,9.687-21.314,18.92-27.553,27.51c0,0,1.612,1.789,2.011,2.224
c-12.355,9.158-22.133,18.206-28.528,27.021c0,0,6.925,7.351,12.408,13.167c-17.824,28.759-43.348,74.85-43.348,102.987
c0,3.281,0.346,6.318,1.093,9.054c1.764,6.442,5.752,11.437,11.229,14.058c15.255,7.311,39.648-6.364,72.589-40.434
c-0.828,8.288-1.457,16.663-1.457,24.737c0,16.804,2.266,32.07,8.77,41.249c4.886,6.895,10.898,9.07,15.084,9.683
c6.721,0.989,26.375,3.796,57.992-61.296c2.678,0.705,5.421,1.179,8.235,1.179c8.798,0,17.067-3.425,23.287-9.639
c4.286-4.288,7.133-9.584,8.562-15.313c7.516-2.129,14.555-6.702,20.779-13.191c19.563,24.861,44.78,37.643,75.38,37.643
c7.318,0,14.474-0.755,21.281-2.243c0.392-0.075,2.555-0.622,2.555-0.622l0.62-0.167c23.05-5.824,42.463-20.41,58-43.254
c7.2,9.231,15.733,15.994,24.849,19.458c1.139,6.658,4.224,12.806,9.1,17.69c6.22,6.214,14.488,9.639,23.288,9.639
c8.798,0,17.065-3.425,23.285-9.639c6.221-6.228,9.649-14.494,9.649-23.292s-3.429-17.066-9.649-23.294
c-2.988-2.988-6.476-5.296-10.248-6.923c0.277-2.947,0.613-5.848,0.613-9.007c0-10.031-1.4-20.982-4.192-31.9
c-1.196-4.672-2.757-8.745-4.511-12.567c2.838-6.467,4.805-13.268,4.805-20.426c0-7.317-1.74-14.422-4.706-21.011
C509.263,358.346,543.773,313.068,543.773,253.359z M451.232,150.998c-33.395-54.619-88.048-93.359-134.569-85.472
c-49.024-7.864-102.777,30.64-135.326,85.018c-2.648,0.208-5.278,0.497-7.875,0.88c8.694-54.414,69.429-111.108,143.107-111.108
c74.113,0,135.141,57.197,143.269,112.08C457.013,151.799,454.137,151.348,451.232,150.998z"/>
<path fill="#010101" stroke="#FFFFFF" stroke-width="4.8437" d="M110.937,367.38c-72.03,93.07-97.843,163.348-81.865,170.997
c15.97,7.654,74.912-46.056,139.701-143.288c45.751-68.648,60.797-94.429,45.68-95.922l20.614-43.357l-10.685-6.644l-33.912,33.371
width="600px" height="600px" viewBox="0 0 600 600" enable-background="new 0 0 600 600" xml:space="preserve">
<path fill="#010101" d="M543.773,253.359c0-49.962-19.305-86.572-54.194-104.54C477.84,71.133,405.027,13.418,316.568,13.418
c-86.917,0-159.483,56.481-172.605,132.58c-38.049,16.818-59.889,55.24-59.889,107.361c0,27.029,7.188,51.824,20.321,71.749
c-1.816,1.565-3.444,3.282-4.77,5.239c0,0,2.582,2.359,3.689,3.373c-4.262,2.123-8.22,4.322-11.555,6.67
c0,0,3.021,7.355,5.896,14.353c-11.991,9.688-21.312,18.92-27.553,27.51c0,0,1.611,1.789,2.011,2.225
c-12.354,9.158-22.133,18.205-28.528,27.021c0,0,6.927,7.35,12.408,13.166c-17.824,28.76-43.348,74.85-43.348,102.988
c0,3.278,0.346,6.315,1.093,9.053c1.764,6.443,5.752,11.438,11.229,14.059c15.255,7.312,39.646-6.362,72.589-40.434
c-0.828,8.287-1.457,16.662-1.457,24.736c0,16.805,2.266,32.069,8.77,41.25c4.887,6.895,10.898,9.067,15.084,9.682
c6.723,0.99,26.375,3.797,57.992-61.295c2.678,0.705,5.421,1.178,8.235,1.178c8.798,0,17.065-3.424,23.287-9.639
c4.284-4.287,7.133-9.584,8.562-15.312c7.516-2.129,14.555-6.701,20.779-13.19c19.562,24.86,44.779,37.643,75.38,37.643
c7.317,0,14.474-0.754,21.281-2.242c0.392-0.073,2.555-0.623,2.555-0.623l0.62-0.166c23.05-5.823,42.463-20.409,58-43.254
c7.2,9.23,15.731,15.994,24.849,19.457c1.141,6.658,4.226,12.808,9.102,17.691c6.22,6.213,14.487,9.639,23.288,9.639
c8.798,0,17.063-3.426,23.285-9.639c6.221-6.229,9.647-14.494,9.647-23.293c0-8.797-3.429-17.066-9.647-23.293
c-2.988-2.988-6.478-5.297-10.248-6.924c0.275-2.947,0.611-5.849,0.611-9.009c0-10.028-1.398-20.979-4.19-31.897
c-1.196-4.672-2.757-8.746-4.513-12.568c2.84-6.467,4.807-13.268,4.807-20.426c0-7.316-1.74-14.422-4.706-21.01
C509.263,358.345,543.773,313.068,543.773,253.359z M451.232,150.998c-33.396-54.619-88.048-93.359-134.569-85.472
c-49.022-7.864-102.775,30.64-135.326,85.018c-2.646,0.208-5.276,0.497-7.875,0.88c8.694-54.414,69.431-111.108,143.107-111.108
c74.113,0,135.142,57.197,143.271,112.08C457.013,151.799,454.137,151.348,451.232,150.998z"/>
<path fill="#010101" stroke="#FFFFFF" stroke-width="4.8437" d="M110.937,367.38c-72.03,93.07-97.843,163.349-81.865,170.996
c15.97,7.654,74.912-46.055,139.701-143.287c45.751-68.647,60.797-94.43,45.68-95.922l20.614-43.357l-10.687-6.644l-33.91,33.371
C179.323,272.615,166.073,296.146,110.937,367.38z"/>
<path fill="#010101" stroke="#FFFFFF" stroke-width="4.8437" d="M140.932,379.755c-39.099,113.042-39.738,189.89-20.813,192.654
c18.912,2.787,59.039-67.616,89.306-182.6c21.381-81.178,27.255-111.03,11.438-108.001l5.133-48.806l-13.207-3.354l-22.194,42.936
<path fill="#010101" stroke="#FFFFFF" stroke-width="4.8437" d="M140.932,379.755c-39.101,113.041-39.738,189.89-20.813,192.654
c18.912,2.787,59.039-67.617,89.306-182.603c21.383-81.178,27.257-111.029,11.438-108l5.133-48.806l-13.207-3.354l-22.192,42.936
C175.736,266.142,170.865,293.244,140.932,379.755z"/>
<circle fill="none" stroke="#010101" stroke-width="4.8437" cx="410.28" cy="388.831" r="37.801"/>
<circle fill="none" stroke="#010101" stroke-width="4.8437" cx="410.28" cy="388.832" r="37.801"/>
<path fill="#ED2224" stroke="#010101" stroke-width="4.8437" d="M475.237,157.792c-7.115-73.197-76.231-130.645-160.495-130.645
c-83.402,0-152.009,56.27-160.306,128.393c-39.809,13.607-58.455,52.219-58.455,97.818c0,56.947,34.681,103.109,89.925,103.109
c35.784,0,67.089-19.432,84.771-48.551c14.01,3.533,28.778,5.463,44.066,5.463c13.16,0,25.932-1.438,38.173-4.077
c17.966,28.357,49.108,47.165,84.604,47.165c55.665,0,90.696-46.162,90.696-103.109
C528.216,210.073,512.208,173.073,475.237,157.792z M314.742,274.908c-10.501,0-20.723-0.878-30.584-2.506
c-83.402,0-152.009,56.27-160.306,128.393c-39.811,13.607-58.455,52.219-58.455,97.818c0,56.946,34.681,103.108,89.925,103.108
c35.784,0,67.089-19.432,84.771-48.551c14.01,3.533,28.776,5.463,44.064,5.463c13.16,0,25.934-1.438,38.173-4.076
c17.966,28.357,49.108,47.164,84.604,47.164c55.665,0,90.696-46.162,90.696-103.108
C528.218,210.073,512.209,173.073,475.237,157.792z M314.742,274.908c-10.501,0-20.723-0.878-30.584-2.506
c1.125-6.177,1.778-12.527,1.778-19.043c0-56.941-44.786-103.104-100.03-103.104c-4.858,0-9.597,0.478-14.271,1.169
c8.694-54.414,69.43-111.108,143.107-111.108c74.113,0,135.142,57.197,143.268,112.08c-6.617-1.398-13.471-2.141-20.49-2.141
c8.692-54.414,69.43-111.108,143.105-111.108c74.113,0,135.144,57.197,143.27,112.08c-6.617-1.398-13.473-2.141-20.49-2.141
c-55.675,0-100.801,46.163-100.801,103.104c0,6.852,0.687,13.536,1.931,20.013C330.872,274.364,322.888,274.908,314.742,274.908z"/>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-55.6953" y1="95.2363" x2="39.7773" y2="95.2363" gradientTransform="matrix(-0.3782 -0.8348 1.083 -0.4907 70.5233 338.0542)">
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-1087.6663" y1="191.4385" x2="-992.1917" y2="191.4385" gradientTransform="matrix(-0.3782 -0.8348 1.083 -0.4907 -423.9551 -476.2263)">
<stop offset="0" style="stop-color:#010101"/>
<stop offset="0.2606" style="stop-color:#3E221C"/>
<stop offset="0.7732" style="stop-color:#B03126"/>
<stop offset="1" style="stop-color:#ED2224"/>
</linearGradient>
<path fill="url(#SVGID_1_)" d="M153.69,260.35c31.322-14.19,65.739-18.887,77.129,6.254c11.391,25.14-4.763,57.027-36.091,71.213
c-31.323,14.194-65.948,5.312-77.338-19.829C106,292.849,122.366,274.543,153.69,260.35z"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-180.8516" y1="181.2642" x2="-85.3789" y2="181.2642" gradientTransform="matrix(-0.9008 -0.3607 0.555 -1.386 252.7537 479.2919)">
<path fill="url(#SVGID_1_)" d="M153.69,260.35c31.322-14.19,65.739-18.887,77.129,6.254c11.391,25.14-4.763,57.026-36.091,71.214
c-31.323,14.192-65.948,5.311-77.338-19.83C106,292.849,122.366,274.543,153.69,260.35z"/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="-1275.886" y1="215.5034" x2="-1180.4114" y2="215.5034" gradientTransform="matrix(-0.9008 -0.3607 0.555 -1.386 -752.6548 131.7681)">
<stop offset="0" style="stop-color:#B11F24"/>
<stop offset="0.1017" style="stop-color:#B62024"/>
<stop offset="1" style="stop-color:#ED2224"/>
</linearGradient>
<path fill="url(#SVGID_2_)" d="M427.738,265.165c16.043-40.085,41.342-74.985,68.473-64.122
c27.122,10.86,36.111,52.165,20.056,92.248c-16.053,40.089-51.062,63.772-78.189,52.911
<path fill="url(#SVGID_2_)" d="M427.738,265.165c16.043-40.085,41.342-74.985,68.475-64.122
c27.121,10.86,36.109,52.165,20.056,92.248c-16.053,40.089-51.062,63.773-78.189,52.912
C410.95,335.343,411.683,305.253,427.738,265.165z"/>
<path fill="#010101" stroke="#010101" stroke-width="4.8437" d="M448.219,425.226c7.776,30.397,3.982,62.358-14.521,62.358
c-16.301,0-34.904-17.333-42.675-47.733c-7.777-30.4,4.243-75.016,14.521-62.365C423.583,399.707,440.442,394.825,448.219,425.226z"
/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="217.0322" y1="557.499" x2="165.1699" y2="467.6709" gradientTransform="matrix(0.9868 0.0515 0.0515 0.7987 -5.5217 21.3475)">
<path fill="#010101" stroke="#010101" stroke-width="4.8437" d="M448.219,425.226c7.774,30.396,3.98,62.357-14.521,62.357
c-16.301,0-34.904-17.332-42.675-47.732c-7.777-30.399,4.243-75.016,14.521-62.364C423.584,399.707,440.442,394.826,448.219,425.226
z"/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="-639.5422" y1="548.502" x2="-691.4051" y2="458.673" gradientTransform="matrix(0.9868 0.0515 0.0515 0.7987 840.2104 72.6462)">
<stop offset="0" style="stop-color:#5B3E1D"/>
<stop offset="0.1121" style="stop-color:#42301B"/>
<stop offset="0.2377" style="stop-color:#2E2316"/>
@@ -64,29 +64,30 @@
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
<path fill="url(#SVGID_3_)" stroke="#010101" stroke-width="4.8437" d="M184.076,437.859c-6.111,23.875,1.745,46.508,17.54,50.549
c15.79,4.039,33.552-12.045,39.658-35.924c6.101-23.881-9.153-57.129-24.947-61.17C200.537,387.275,190.178,413.973,184.076,437.859
c15.79,4.039,33.552-12.045,39.658-35.924c6.101-23.882-9.153-57.129-24.947-61.17C200.537,387.275,190.178,413.972,184.076,437.859
z"/>
<path fill="#010101" stroke="#010101" stroke-width="4.8437" d="M314.837,65.525c72.755-12.333,165.503,89.311,165.503,187.528
c0,98.215-74.305,162.834-165.707,162.834"/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="194.4072" y1="374.3564" x2="358.2427" y2="90.5851">
<path fill="#010101" stroke="#010101" stroke-width="4.8437" d="M314.837,65.525c72.757-12.333,165.505,89.311,165.505,187.528
c0,98.213-74.307,162.833-165.707,162.833"/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-664.3811" y1="374.0068" x2="-500.546" y2="90.2362" gradientTransform="matrix(1 0 0 1 858.79 0.3506)">
<stop offset="0" style="stop-color:#000000"/>
<stop offset="1" style="stop-color:#5B3E1D"/>
</linearGradient>
<path fill="url(#SVGID_4_)" stroke="#010101" stroke-width="4.8437" d="M314.634,415.888c-91.402,0-165.297-64.619-165.297-162.834
<path fill="url(#SVGID_4_)" stroke="#010101" stroke-width="4.8437" d="M314.635,415.888c-91.402,0-165.299-64.619-165.299-162.833
c0-98.218,88.615-199.862,165.5-187.528"/>
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="297.3164" y1="139.4717" x2="418.2684" y2="-70.0234" gradientTransform="matrix(-0.6092 0.7802 -0.4118 -0.3216 476.7253 -96.4624)">
<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-760.302" y1="-37.9087" x2="-639.3506" y2="-247.4027" gradientTransform="matrix(-0.6092 0.7802 -0.4118 -0.3216 -240.6183 671.6459)">
<stop offset="0" style="stop-color:#8B654B"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
<path fill="url(#SVGID_5_)" d="M169.611,266.578c-27.578-21.539-16.863-81.354,23.935-133.604
c40.802-52.245,93.808-72.894,126.21-59.689c26.67,10.864,14.474,85.434-26.328,137.681
c40.804-52.245,93.81-72.894,126.21-59.689c26.672,10.864,14.476,85.434-26.326,137.681
C252.63,263.215,197.193,288.112,169.611,266.578z"/>
<circle fill="#010101" cx="214.367" cy="388.831" r="34.682"/>
<circle fill="#010101" cx="214.367" cy="388.832" r="34.682"/>
<g>
<path fill="#F4DFED" d="M131.831,427.709c-23.973,79.733-18.741,132.267-9.011,135.459c10.855,3.563,43.561-47.223,60.839-128.324
c12.189-57.265,11.727-83.75,0.009-81.625l3.505-31.111l-8.901-2.432l-14.271,32.445
C152.554,347.564,150.184,366.689,131.831,427.709z"/>
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="148.1519" y1="319.6758" x2="148.1518" y2="563.168">
<path fill="#F4DFED" d="M131.831,427.708c-23.973,79.734-18.741,132.268-9.011,135.459c10.854,3.564,43.561-47.223,60.839-128.324
c12.189-57.264,11.729-83.75,0.009-81.625l3.505-31.108l-8.899-2.435l-14.271,32.445
C152.554,347.564,150.184,366.689,131.831,427.708z"/>
<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-710.6404" y1="319.3252" x2="-710.6405" y2="562.8164" gradientTransform="matrix(1 0 0 1 858.79 0.3506)">
<stop offset="0" style="stop-color:#571A54"/>
<stop offset="0.2641" style="stop-color:#7C5378"/>
<stop offset="0.528" style="stop-color:#A78AA3"/>
@@ -94,11 +95,11 @@
<stop offset="0.9095" style="stop-color:#EAE1E8"/>
<stop offset="1" style="stop-color:#F9F3F8"/>
</linearGradient>
<path fill="url(#SVGID_6_)" d="M146.41,479.117l-22.914,19.186l35.325-65.182l4.683-17.371c0,0,3.098-26.758-24.228,14.713
c16.962-56.432,32.317-62.998,32.317-62.998l11.404-46.658l-4.725-1.131l-14.702,30.23c-11.429-4.588-13.859,14.521-32.392,75.485
c-24.224,79.655-20.501,124.085-8.358,137.776L146.41,479.117z"/>
<path fill="url(#SVGID_6_)" d="M146.41,479.117l-22.914,19.186l35.325-65.182l4.683-17.371c0,0,3.1-26.758-24.228,14.713
c16.962-56.432,32.317-62.998,32.317-62.998l11.402-46.658l-4.725-1.131l-14.702,30.23c-11.429-4.588-13.859,14.521-32.392,75.483
c-24.226,79.656-20.501,124.087-8.358,137.777L146.41,479.117z"/>
<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="75.7998" y1="402.9658" x2="43.9086" y2="490.7602" gradientTransform="matrix(0.9399 -0.3414 0.3414 0.9399 -44.7892 56.207)">
<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-789.3508" y1="444.1797" x2="-821.2424" y2="531.975" gradientTransform="matrix(0.9399 -0.3414 0.3414 0.9399 754.2939 -277.891)">
<stop offset="0" style="stop-color:#802986"/>
<stop offset="0.2641" style="stop-color:#9D66A2"/>
<stop offset="0.528" style="stop-color:#BE9BC2"/>
@@ -106,10 +107,10 @@
<stop offset="0.9095" style="stop-color:#F0E6F1"/>
<stop offset="1" style="stop-color:#F9F3F8"/>
</linearGradient>
<path fill="url(#SVGID_7_)" d="M147.332,501.478l31.839-92.4c0,0,6.608,60.692-7.474,93.405
c1.438-44.878-2.328-36.951-9.176-25.254C159.71,482.03,147.332,501.478,147.332,501.478z"/>
<path fill="url(#SVGID_7_)" d="M147.332,501.478l31.839-92.399c0,0,6.608,60.69-7.474,93.406
c1.438-44.879-2.328-36.951-9.176-25.257C159.71,482.031,147.332,501.478,147.332,501.478z"/>
<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="100.2559" y1="370.0205" x2="67.8228" y2="459.3065" gradientTransform="matrix(0.9399 -0.3414 0.3414 0.9399 -44.7892 56.207)">
<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-764.8928" y1="411.2344" x2="-797.3259" y2="500.5203" gradientTransform="matrix(0.9399 -0.3414 0.3414 0.9399 754.2939 -277.891)">
<stop offset="0" style="stop-color:#802986"/>
<stop offset="0.2641" style="stop-color:#9D66A2"/>
<stop offset="0.528" style="stop-color:#BE9BC2"/>
@@ -117,10 +118,10 @@
<stop offset="0.9095" style="stop-color:#F0E6F1"/>
<stop offset="1" style="stop-color:#F9F3F8"/>
</linearGradient>
<path fill="url(#SVGID_8_)" d="M156.286,463.716l38.825-93.952c0,0,2.251,62.278-11.831,94.991
c-0.298-44.249-5.388-28.089-8.538-23.508C165.662,454.416,156.286,463.716,156.286,463.716z"/>
<path fill="url(#SVGID_8_)" d="M156.286,463.716l38.825-93.953c0,0,2.251,62.279-11.831,94.992
c-0.298-44.25-5.388-28.09-8.538-23.508C165.662,454.416,156.286,463.716,156.286,463.716z"/>
<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="19.1768" y1="337.1123" x2="-32.4432" y2="389.2988" gradientTransform="matrix(0.711 -0.7032 0.7032 0.711 -56.5767 131.5096)">
<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="-872.7551" y1="422.8174" x2="-924.3751" y2="475.0038" gradientTransform="matrix(0.711 -0.7032 0.7032 0.711 517.3177 -556.6326)">
<stop offset="0" style="stop-color:#571A54"/>
<stop offset="0.2641" style="stop-color:#7C5378"/>
<stop offset="0.528" style="stop-color:#A78AA3"/>
@@ -128,21 +129,22 @@
<stop offset="0.9095" style="stop-color:#EAE1E8"/>
<stop offset="1" style="stop-color:#F9F3F8"/>
</linearGradient>
<path fill="url(#SVGID_9_)" d="M180.916,431.115l9.787-73.404c0,0,18.589,43.111,16.428,71.425
c-11.773-30.423-13.671-21.048-17.578-14.96C187.396,417.538,180.916,431.115,180.916,431.115z"/>
<path fill="#1E3D73" d="M174.914,335.556L158.76,362.31l-23.24,76.647c0,0,1.211-8.173,1.788-15.883l-18.783,50.773
c0,0,8.386-31.226,3.609-28.382c-4.777,2.84,4.225-21.91-23.102,13.729c5.316-18.514,20.495-39.508,33.324-54.9
c-2.172,0.474-7.1,4.788-18.387,18.374c4.38-15.232,14.957-32.934,25.358-47.898c-1.159-2.683-5.151-3.889-21.234,5.221
C134.366,356.719,174.914,335.556,174.914,335.556z"/>
<path fill="url(#SVGID_9_)" d="M180.916,431.115l9.787-73.404c0,0,18.589,43.111,16.428,71.426
c-11.771-30.424-13.671-21.049-17.576-14.961C187.396,417.539,180.916,431.115,180.916,431.115z"/>
<path fill="#1E3D73" d="M174.914,335.556L158.76,362.31l-23.24,76.646c0,0,1.211-8.172,1.788-15.883l-18.783,50.772
c0,0,8.386-31.227,3.607-28.383c-4.775,2.84,4.227-21.91-23.102,13.73c5.316-18.517,20.495-39.511,33.324-54.9
c-2.172,0.473-7.102,4.787-18.388,18.373c4.381-15.232,14.956-32.934,25.357-47.898c-1.159-2.682-5.151-3.889-21.234,5.224
C134.366,356.718,174.914,335.556,174.914,335.556z"/>
</g>
<g>
<path fill="#F4DFED" d="M94.453,401.163c-49.752,66.752-62.779,117.913-54.719,124.242c8.987,7.059,57.064-29.51,100.989-99.844
c31.011-49.657,39.62-74.709,27.879-76.714l13.916-28.052l-7.539-5.319L150.496,341.1
C141.291,332.911,132.531,350.072,94.453,401.163z"/>
<path fill="#656B84" d="M90.603,454.464L62.515,464.67l55.456-49.201l10.331-14.731c0,0,12.047-24.096-27.794,5.558
c35.211-47.255,51.89-48.182,51.89-48.182l26.641-39.956l-4.058-2.681l-24.133,23.399c-9.177-8.222-17.989,8.911-56.224,59.885
c-49.96,66.6-61.634,109.635-54.889,126.645L90.603,454.464z"/>
<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="106.2383" y1="485.0312" x2="121.9901" y2="395.6984">
<path fill="#F4DFED" d="M94.453,401.164c-49.752,66.752-62.779,117.912-54.719,124.242c8.987,7.059,57.062-29.513,100.989-99.847
c31.011-49.655,39.62-74.709,27.879-76.713l13.916-28.053l-7.539-5.318l-24.483,25.623
C141.291,332.912,132.531,350.072,94.453,401.164z"/>
<path fill="#656B84" d="M90.603,454.464l-28.088,10.205l55.456-49.201l10.331-14.729c0,0,12.047-24.097-27.796,5.559
c35.213-47.256,51.892-48.182,51.892-48.182l26.641-39.957l-4.058-2.683l-24.133,23.4c-9.179-8.223-17.989,8.91-56.226,59.885
c-49.96,66.601-61.634,109.635-54.889,126.646L90.603,454.464z"/>
<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="-752.551" y1="484.6816" x2="-736.7991" y2="395.3488" gradientTransform="matrix(1 0 0 1 858.79 0.3506)">
<stop offset="0" style="stop-color:#571A54"/>
<stop offset="0.2641" style="stop-color:#7C5378"/>
<stop offset="0.528" style="stop-color:#A78AA3"/>
@@ -150,9 +152,10 @@
<stop offset="0.9095" style="stop-color:#EAE1E8"/>
<stop offset="1" style="stop-color:#F9F3F8"/>
</linearGradient>
<path fill="url(#SVGID_10_)" d="M83.829,475.791l61.474-75.981c0,0-14.507,59.304-38.916,85.248
c16.678-41.696,12.058-33.368,0-26.873C101.491,460.821,83.829,475.791,83.829,475.791z"/>
<linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="130.9844" y1="453.7012" x2="146.8758" y2="363.5764">
<path fill="url(#SVGID_10_)" d="M83.829,475.791l61.476-75.98c0,0-14.509,59.306-38.916,85.248
c16.678-41.694,12.058-33.366,0-26.873C101.491,460.822,83.829,475.791,83.829,475.791z"/>
<linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="-727.8064" y1="453.3486" x2="-711.9149" y2="363.2233" gradientTransform="matrix(1 0 0 1 858.79 0.3506)">
<stop offset="0" style="stop-color:#571A54"/>
<stop offset="0.2641" style="stop-color:#7C5378"/>
<stop offset="0.528" style="stop-color:#A78AA3"/>
@@ -160,37 +163,36 @@
<stop offset="0.9095" style="stop-color:#EAE1E8"/>
<stop offset="1" style="stop-color:#F9F3F8"/>
</linearGradient>
<path fill="url(#SVGID_11_)" d="M105.143,443.356l68.564-75.05c0,0-19.143,59.297-43.551,85.248
c14.824-41.701,10.567-27.993,0-25.023C124.802,430.041,105.143,443.356,105.143,443.356z"/>
<path fill="#656B84" d="M139.423,421.124l34.26-65.654c0,0,2.748,46.867-8.945,72.74c-0.676-32.615-3.041-28.432-11.413-20.06
C150.5,410.974,139.423,421.124,139.423,421.124z"/>
<path fill="#656B84" d="M166.408,329.256l-24.322,19.63l-48.011,64.112c0,0,3.931-7.274,7.104-14.322l-34.994,41.313
c0,0,18.552-26.484,13.089-25.448c-5.464,1.04,11.451-19.148-26.399,5.019c11.313-15.587,32.751-30.137,50.064-40.227
c-2.205-0.298-8.316,2.077-23.552,10.989c9.313-12.818,25.302-25.842,40.183-36.357c-0.175-2.919-3.515-5.416-21.74-2.346
C121.065,335.3,166.408,329.256,166.408,329.256z"/>
<path fill="url(#SVGID_11_)" d="M105.143,443.357l68.562-75.052c0,0-19.143,59.297-43.551,85.248
c14.824-41.7,10.567-27.994,0-25.022C124.802,430.041,105.143,443.357,105.143,443.357z"/>
<path fill="#656B84" d="M139.423,421.125l34.262-65.654c0,0,2.748,46.867-8.945,72.74c-0.676-32.615-3.041-28.432-11.413-20.061
C150.5,410.974,139.423,421.125,139.423,421.125z"/>
<path fill="#656B84" d="M166.408,329.255l-24.322,19.631l-48.011,64.111c0,0,3.931-7.273,7.104-14.322L66.185,439.99
c0,0,18.552-26.484,13.089-25.449c-5.464,1.041,11.451-19.148-26.399,5.02c11.313-15.588,32.751-30.137,50.064-40.227
c-2.205-0.299-8.316,2.076-23.552,10.988c9.312-12.818,25.302-25.842,40.183-36.357c-0.175-2.918-3.515-5.416-21.74-2.346
C121.065,335.3,166.408,329.255,166.408,329.255z"/>
</g>
<g>
<path fill="#D9AF82" enable-background="new " d="M315.05,115.063c-50.514,0-83.218,15.021-109.641,64.839
c-2.502,4.713-0.232,14.337-2.796,19.152c-13.845,26.007-37.089,48.236-37.089,71.707c0,34.337,19.1,65.637,42.505,89.297
c12.185,71.644,34.7,151.593,104.339,151.593"/>
<path fill="#010101" d="M203.271,178.766c-1.519,2.855-1.59,6.774-1.656,10.562c-0.062,3.283-0.123,6.677-1.14,8.588
c-4.537,8.519-10.146,16.707-15.577,24.624c-11.21,16.353-21.797,31.798-21.797,48.221c0,30.307,15.166,62.382,42.666,90.413
c12.578,73.606,36.115,150.477,106.6,150.477v-1.546c-67.084,0-89.722-78.554-101.95-150.453l-0.127-0.748l-0.54-0.549
c-26.957-27.255-41.805-58.361-41.805-87.594c0-14.923,10.174-29.766,20.949-45.482c5.501-8.027,11.192-16.327,15.857-25.087
c1.56-2.935,1.636-6.92,1.707-10.773c0.057-3.221,0.118-6.551,1.088-8.381c24.256-45.734,54.398-65.974,107.503-65.974v-2.422
<path fill="#D9AF82" d="M315.05,115.063c-50.514,0-83.218,15.021-109.641,64.839c-2.502,4.713-0.23,14.337-2.796,19.152
c-13.845,26.007-37.089,48.236-37.089,71.707c0,34.335,19.1,65.637,42.505,89.296c12.185,71.646,34.7,151.595,104.339,151.595"/>
<path fill="#010101" d="M203.271,178.766c-1.521,2.855-1.59,6.774-1.656,10.562c-0.062,3.283-0.123,6.677-1.14,8.588
c-4.537,8.519-10.146,16.707-15.577,24.624c-11.21,16.353-21.797,31.798-21.797,48.221c0,30.307,15.166,62.38,42.666,90.412
c12.578,73.607,36.113,150.479,106.6,150.479v-1.547c-67.084,0-89.722-78.556-101.95-150.453l-0.127-0.748l-0.54-0.549
c-26.957-27.257-41.805-58.361-41.805-87.594c0-14.923,10.174-29.766,20.949-45.482c5.501-8.027,11.19-16.327,15.855-25.087
c1.562-2.935,1.638-6.92,1.707-10.773c0.059-3.221,0.118-6.551,1.088-8.381c24.258-45.734,54.398-65.974,107.503-65.974v-2.422
C259.849,112.641,228.506,131.181,203.271,178.766z"/>
</g>
<path fill="#8B654B" d="M312.368,511.65c72.045,0,92.163-79.949,104.338-151.593c23.405-23.66,42.512-54.96,42.512-89.297
c0-37.004-22.588-49.51-38.609-77.154c-5.681-9.798-1.496-24.634-8.084-33.382c-26.905-35.728-53.772-45.162-97.475-45.162"/>
<path fill="#8B654B" d="M312.368,511.65c72.045,0,92.163-79.949,104.338-151.595c23.405-23.657,42.514-54.959,42.514-89.296
c0-37.004-22.588-49.51-38.609-77.154c-5.681-9.798-1.496-24.634-8.084-33.382c-26.905-35.728-53.772-45.162-97.477-45.162"/>
<ellipse fill="#D9AF82" cx="313.792" cy="343.947" rx="21.906" ry="68.144"/>
<path fill="#8B654B" d="M342.916,373.454c0,7.813-14.98,12.535-27.275,12.535c-12.293,0-27.808-4.735-27.808-12.549
c3.43-3.43,15.246,4.886,27.544,4.886C334.789,378.326,342.916,312.495,342.916,373.454z"/>
<path fill="#D9AF82" d="M335.697,435.217c0,37.637-9.81,68.831-21.91,68.831c-12.096,0-21.901-31.194-21.901-68.831
c0-37.639,9.882-50.259,21.977-50.259C325.962,384.958,335.697,397.578,335.697,435.217z"/>
<path opacity="0.36" fill="#8A644B" d="M328.365,281.605c-1.826,24.681-14.186-7.573-34.757,20.974
c-8.672,12.026-23.23,10.877-38.845,10.877c-39.61,0-66.544-26.03-67.859-38.868c-2.517-24.557,29.024-39.586,71.464-39.586
<path fill="#8B654B" d="M342.916,373.455c0,7.812-14.979,12.535-27.273,12.535c-12.293,0-27.81-4.736-27.81-12.549
c3.432-3.433,15.246,4.885,27.544,4.885C334.789,378.326,342.916,312.496,342.916,373.455z"/>
<path fill="#D9AF82" d="M335.697,435.216c0,37.637-9.81,68.832-21.91,68.832c-12.096,0-21.899-31.195-21.899-68.832
c0-37.639,9.882-50.258,21.977-50.258C325.962,384.958,335.697,397.578,335.697,435.216z"/>
<path opacity="0.36" fill="#8A644B" enable-background="new " d="M328.365,281.605c-1.826,24.682-14.186-7.573-34.757,20.975
c-8.672,12.025-23.23,10.877-38.845,10.877c-39.61,0-66.544-26.031-67.859-38.869c-2.517-24.557,29.024-39.586,71.464-39.586
C297.028,235.002,329.255,269.622,328.365,281.605z"/>
<linearGradient id="SVGID_12_" gradientUnits="userSpaceOnUse" x1="214.7554" y1="341.0537" x2="290.4385" y2="341.0537">
<linearGradient id="SVGID_12_" gradientUnits="userSpaceOnUse" x1="-644.0354" y1="340.7031" x2="-568.3508" y2="340.7031" gradientTransform="matrix(1 0 0 1 858.79 0.3506)">
<stop offset="0" style="stop-color:#D9AF82"/>
<stop offset="0.0786" style="stop-color:#DFB791"/>
<stop offset="0.2053" style="stop-color:#E7C1A5"/>
@@ -199,40 +201,38 @@
<stop offset="0.6917" style="stop-color:#F4D3C7"/>
<stop offset="1" style="stop-color:#F5D4C9"/>
</linearGradient>
<path opacity="0.36" fill="url(#SVGID_12_)" d="M272.246,361.529c-28.722,19.46-56.346-24.299-57.491-43.314
c15.913,13.821,62.032,18.457,75.683-2.517L272.246,361.529z"/>
<path opacity="0.36" fill="#8A644B" d="M313.706,461.213c-38.167,0-61.231-13.681-61.231-31.63c0-6.048,15.651-24.078,37.32-49.365
c5.952-3.699,7.464,10.038,14.958,4.731C331.61,392.044,328.318,461.213,313.706,461.213z"/>
<path opacity="0.36" fill="url(#SVGID_12_)" enable-background="new " d="M272.246,361.529
c-28.722,19.461-56.346-24.299-57.491-43.314c15.913,13.822,62.032,18.457,75.685-2.516L272.246,361.529z"/>
<path opacity="0.36" fill="#8A644B" enable-background="new " d="M313.706,461.212c-38.167,0-61.229-13.68-61.229-31.629
c0-6.049,15.649-24.078,37.318-49.365c5.952-3.699,7.464,10.037,14.958,4.73C331.61,392.044,328.318,461.212,313.706,461.212z"/>
<g>
<path fill="#8A644B" d="M260.464,472.116c8.339,23.94,32.817,36.466,52.688,36.466v-4.845
C294.99,503.737,268.056,493.921,260.464,472.116L260.464,472.116z"/>
<path fill="#8A644B" d="M260.464,472.117c8.341,23.938,32.817,36.465,52.688,36.465v-4.844
C294.99,503.738,268.056,493.921,260.464,472.117L260.464,472.117z"/>
</g>
<g>
<path fill="#8A644B" d="M180.954,271.658c0,21.359,5.388,36.679,27.099,48.222c0.587,1.121,7.021,13.387,7.021,13.387
c8.916,16.375,19.02,34.94,19.02,54.406h4.844c0-20.699-10.416-39.839-19.612-56.725l-7.586-14.455l-0.709-0.426
C190.509,305.4,180.954,291.289,180.954,271.658L180.954,271.658z"/>
<path fill="#8A644B" d="M180.954,271.658c0,21.359,5.388,36.679,27.101,48.222c0.587,1.121,7.021,13.387,7.021,13.387
c8.916,16.375,19.021,34.939,19.021,54.406h4.844c0-20.699-10.416-39.84-19.612-56.725l-7.586-14.455l-0.709-0.426
C190.51,305.4,180.954,291.289,180.954,271.658L180.954,271.658z"/>
</g>
<g>
<path fill="#010101" d="M208.814,230.649l-0.104-0.97c-3.108-15.25-3.226-33.651-0.312-49.217l-4.764-0.889
<path fill="#010101" d="M208.814,230.649l-0.104-0.97c-3.106-15.25-3.226-33.651-0.312-49.217l-4.764-0.889
C200.613,195.722,205.583,214.815,208.814,230.649z"/>
</g>
<linearGradient id="SVGID_13_" gradientUnits="userSpaceOnUse" x1="191.0591" y1="310.5205" x2="451.5771" y2="310.5205">
<linearGradient id="SVGID_13_" gradientUnits="userSpaceOnUse" x1="-667.7327" y1="310.1709" x2="-407.218" y2="310.1709" gradientTransform="matrix(1 0 0 1 858.79 0.3506)">
<stop offset="0" style="stop-color:#5B3E1D"/>
<stop offset="1" style="stop-color:#010101"/>
</linearGradient>
<path fill="url(#SVGID_13_)" d="M423.943,199.054c-3.983-11.059-0.737-20.853-8.061-31.231
c-19.885-28.185-51.072-56.27-108.998-52.618l5.212,140.363c0,0-122.733-25.589-121.021,15.935c0.227,5.387,40.188,2.88,63.46,4.428
c-26.092,4.566-32.185,5.898-32.185,8.838c0,6.206,21.863,0.683,25.108,2.467c4.976,2.739-43.139,7.052-34.351,8.757
c10.057,1.951,44.474,3.086,57.444,3.086c28.929,0,41.077-25.412,41.077-4.485c7.346,27.893,14.739,59.24,13.972,69.882
c-1.475,20.662-19.62,20.188-19.62,20.188l5.089,24.285c-8.557,0.439-6.245-1.324-13.85-0.549
c-14.427,0-32.354,13.032-32.354,16.054l39.989,0.435c0,0-29.081,13.771-22.975,22.928c4.763,7.143,20.316,13.378,31.091,13.424
c0,0,3.273,8.55,3.273,22.352c0,13.811-4.035,22.565-4.035,22.565c46.171,0,67.49-49.036,80.324-118.446
c6.083-32.876,20.018-58.106,36.034-71.657c15.742-13.321,23.008-26.641,23.008-52.071
C451.577,249.847,443.574,230.354,423.943,199.054z"/>
<path fill="#D9AF82" d="M325.395,252.416l-13.297,4.328c0,0-65.848-96.356-46.493-121.312
c12.682-16.357,24.611-18.136,40.046-19.238c13.519-0.965,21.294,16.525,27.302,24.271
C350.375,162.927,325.395,252.416,325.395,252.416z"/>
<linearGradient id="SVGID_14_" gradientUnits="userSpaceOnUse" x1="260.7119" y1="113.4033" x2="349.5527" y2="113.4033" gradientTransform="matrix(0.676 0.6564 -0.9247 0.9523 168.3961 -132.5865)">
<path fill="url(#SVGID_13_)" d="M423.943,199.054c-3.983-11.059-0.737-20.853-8.062-31.231
c-19.885-28.185-51.07-56.271-108.998-52.618l5.214,140.363c0,0-122.733-25.589-121.021,15.935c0.229,5.387,40.188,2.88,63.46,4.428
c-26.092,4.566-32.185,5.898-32.185,8.838c0,6.206,21.861,0.683,25.106,2.467c4.978,2.739-43.139,7.052-34.351,8.757
c10.057,1.951,44.474,3.086,57.442,3.086c28.931,0,41.077-25.413,41.077-4.485c7.348,27.894,14.739,59.239,13.974,69.882
c-1.477,20.661-19.62,20.188-19.62,20.188l5.089,24.285c-8.557,0.438-6.245-1.324-13.85-0.549c-14.429,0-32.354,13.03-32.354,16.055
l39.989,0.434c0,0-29.081,13.771-22.977,22.931c4.765,7.143,20.316,13.377,31.093,13.424c0,0,3.271,8.549,3.271,22.352
c0,13.812-4.035,22.564-4.035,22.564c46.171,0,67.49-49.035,80.324-118.445c6.083-32.877,20.018-58.104,36.034-71.658
c15.742-13.319,23.008-26.64,23.008-52.07C451.577,249.847,443.574,230.354,423.943,199.054z"/>
<path fill="#D9AF82" d="M325.395,252.416l-13.297,4.328c0,0-65.85-96.356-46.493-121.312c12.682-16.357,24.609-18.136,40.046-19.238
c13.519-0.965,21.294,16.525,27.302,24.271C350.375,162.927,325.395,252.416,325.395,252.416z"/>
<linearGradient id="SVGID_14_" gradientUnits="userSpaceOnUse" x1="-629.0159" y1="50.6562" x2="-540.175" y2="50.6562" gradientTransform="matrix(0.676 0.6564 -0.9247 0.9523 711.8302 511.1852)">
<stop offset="0" style="stop-color:#FFFFFF"/>
<stop offset="0.0769" style="stop-color:#F4E9DD"/>
<stop offset="0.1814" style="stop-color:#EBD6BF"/>
@@ -242,10 +242,10 @@
<stop offset="0.7265" style="stop-color:#DAB084"/>
<stop offset="1" style="stop-color:#D9AF82"/>
</linearGradient>
<path fill="url(#SVGID_14_)" d="M305.253,199.27c-26.745,27.542-70.168,41.961-81.283,24.357
c-14.513-22.972-12.896-47.545,13.854-75.082c26.74-27.547,64.922-33.847,85.28-14.081
<path fill="url(#SVGID_14_)" d="M305.253,199.27c-26.745,27.542-70.168,41.961-81.281,24.357
c-14.515-22.972-12.896-47.545,13.854-75.082c26.74-27.547,64.922-33.847,85.28-14.081
C343.464,154.233,332.003,171.726,305.253,199.27z"/>
<linearGradient id="SVGID_15_" gradientUnits="userSpaceOnUse" x1="241.0796" y1="401.8057" x2="241.0796" y2="318.2148">
<linearGradient id="SVGID_15_" gradientUnits="userSpaceOnUse" x1="-617.7107" y1="401.4551" x2="-617.7107" y2="317.8633" gradientTransform="matrix(1 0 0 1 858.79 0.3506)">
<stop offset="0" style="stop-color:#D9AF82"/>
<stop offset="0.1127" style="stop-color:#BD936E"/>
<stop offset="0.2679" style="stop-color:#A57C5E"/>
@@ -253,27 +253,29 @@
<stop offset="0.6554" style="stop-color:#8D664D"/>
<stop offset="1" style="stop-color:#8A644B"/>
</linearGradient>
<path fill="url(#SVGID_15_)" d="M272.246,361.529c0,46.274-35.419,42.799-45.106,36.896c0-45.751-17.227-80.21-17.227-80.21
S249.882,354.221,272.246,361.529z"/>
<linearGradient id="SVGID_16_" gradientUnits="userSpaceOnUse" x1="175.4648" y1="345.0176" x2="128.5757" y2="362.0838" gradientTransform="matrix(-1 0 0 1 538.9277 0)">
<path fill="url(#SVGID_15_)" d="M272.246,361.529c0,46.272-35.419,42.799-45.104,36.896c0-45.752-17.229-80.211-17.229-80.211
S249.882,354.22,272.246,361.529z"/>
<linearGradient id="SVGID_16_" gradientUnits="userSpaceOnUse" x1="-925.8547" y1="344.666" x2="-972.7458" y2="361.7328" gradientTransform="matrix(-1 0 0 1 -562.3931 0.3506)">
<stop offset="0" style="stop-color:#382815"/>
<stop offset="0.4081" style="stop-color:#553E2B"/>
<stop offset="1" style="stop-color:#8B654B"/>
</linearGradient>
<path fill="url(#SVGID_16_)" d="M359.338,356.35c0,46.27,21.504,44.032,31.073,44.032c7.488-45.135,35.671-81.515,35.671-81.515
S381.703,349.045,359.338,356.35z"/>
<path fill="url(#SVGID_16_)" d="M359.338,356.349c0,46.271,21.506,44.033,31.073,44.033c7.488-45.135,35.671-81.516,35.671-81.516
S381.703,349.044,359.338,356.349z"/>
<path fill="none" stroke="#010101" stroke-width="4.8437" d="M173.934,294.978"/>
<g>
<path fill="#010101" d="M311.507,115.089c53.106,0,83.247,20.214,107.503,65.948c0.904,1.702,0.904,4.883,0.904,7.96
c-0.005,4.146-0.005,8.432,2.029,11.419c16.157,23.757,31.933,48.809,31.933,70.969c0,32.381-12.818,62.458-37.074,86.969
l-0.541,0.549l-0.128,0.748c-12.222,71.899-36.672,150.453-103.765,150.453v1.517c70.499,0,95.847-76.845,108.416-150.456
c24.801-25.335,37.935-56.354,37.935-89.78c0-23.537-16.19-49.311-32.774-73.694c-1.153-1.698-1.192-5.061-1.192-8.37
c0-0.109,0.004-0.537,0.004-0.646c0-3.567-0.041-7.221-1.469-9.91c-25.237-47.585-56.579-66.125-111.78-66.125V115.089z"/>
<path fill="#010101" d="M311.507,115.089c53.106,0,83.247,20.214,107.505,65.948c0.902,1.702,0.902,4.883,0.902,7.96
c-0.005,4.146-0.005,8.432,2.029,11.419c16.157,23.757,31.934,48.809,31.934,70.969c0,32.38-12.817,62.458-37.073,86.969
l-0.541,0.551l-0.13,0.748c-12.222,71.897-36.672,150.451-103.765,150.451v1.518c70.499,0,95.847-76.844,108.416-150.455
c24.803-25.336,37.937-56.355,37.937-89.781c0-23.537-16.19-49.311-32.774-73.694c-1.151-1.698-1.19-5.061-1.19-8.37
c0-0.109,0.004-0.537,0.004-0.646c0-3.567-0.041-7.221-1.471-9.91C398.053,131.18,366.71,112.64,311.51,112.64v2.449H311.507
L311.507,115.089z"/>
</g>
<polygon fill="#010101" points="339.974,84.79 334.59,115.675 300.608,113.719 312.435,66.413 "/>
<circle fill="#010101" stroke="#010101" stroke-width="4.8437" cx="452.06" cy="492.948" r="19.204"/>
<g>
<linearGradient id="SVGID_17_" gradientUnits="userSpaceOnUse" x1="109.1782" y1="336.3027" x2="170.7935" y2="336.3027">
<linearGradient id="SVGID_17_" gradientUnits="userSpaceOnUse" x1="-749.6116" y1="335.9512" x2="-687.9983" y2="335.9512" gradientTransform="matrix(1 0 0 1 858.79 0.3506)">
<stop offset="0" style="stop-color:#571A54"/>
<stop offset="0.2641" style="stop-color:#7C5378"/>
<stop offset="0.528" style="stop-color:#A78AA3"/>
@@ -281,10 +283,10 @@
<stop offset="0.9095" style="stop-color:#EAE1E8"/>
<stop offset="1" style="stop-color:#F9F3F8"/>
</linearGradient>
<path fill="url(#SVGID_17_)" d="M109.178,338.034c9.592-7.823,34.696,4.862,34.833,4.862l26.782-8.396
C170.211,334.501,120.246,321.648,109.178,338.034z"/>
<path fill="url(#SVGID_17_)" d="M109.178,338.035c9.592-7.824,34.694,4.861,34.833,4.861l26.78-8.396
C170.211,334.501,120.246,321.648,109.178,338.035z"/>
</g>
<linearGradient id="SVGID_18_" gradientUnits="userSpaceOnUse" x1="-102.0645" y1="221.0444" x2="-84.4219" y2="221.0444" gradientTransform="matrix(-0.0113 -0.7169 1.2476 -0.0198 36.6184 302.7065)">
<linearGradient id="SVGID_18_" gradientUnits="userSpaceOnUse" x1="-1081.0227" y1="320.6133" x2="-1063.3801" y2="320.6133" gradientTransform="matrix(-0.0113 -0.7169 1.2476 -0.0198 -98.6661 -397.1379)">
<stop offset="0" style="stop-color:#D9AF82"/>
<stop offset="0.0786" style="stop-color:#DFB791"/>
<stop offset="0.2053" style="stop-color:#E7C1A5"/>
@@ -293,10 +295,10 @@
<stop offset="0.6917" style="stop-color:#F4D3C7"/>
<stop offset="1" style="stop-color:#F5D4C9"/>
</linearGradient>
<path opacity="0.36" fill="url(#SVGID_18_)" d="M313.352,358.852c6.074-0.1,11.045,2.653,11.102,6.149
c0.058,3.49-4.829,6.399-10.907,6.498c-6.078,0.101-11.045-2.657-11.107-6.153C302.388,361.854,307.269,358.946,313.352,358.852z"/>
<path fill="#483218" d="M397.109,309.378c15.699-3.759,26.445-18.402,20.099-27.063c-38.74,19.354-75.295,11.369-85.531,9.147
<path opacity="0.36" fill="url(#SVGID_18_)" enable-background="new " d="M313.352,358.851c6.074-0.1,11.045,2.654,11.102,6.15
c0.06,3.49-4.829,6.398-10.907,6.498c-6.076,0.1-11.045-2.658-11.105-6.154C302.388,361.853,307.269,358.947,313.352,358.851z"/>
<path fill="#483218" d="M397.109,309.378c15.699-3.76,26.445-18.402,20.099-27.063c-38.738,19.354-75.295,11.369-85.529,9.147
C368.014,309.492,371.117,315.595,397.109,309.378z"/>
<path fill="#B4B4B4" d="M310.92,73.714c-38.372,0-93.118,22.758-117.549,74.944c-6.089,12.999-6.656,32.87,0.638,45.014
c0,0,18.604-81.43,108.231-86.494"/>
<path fill="#B4B4B4" d="M310.92,73.714c-38.372,0-93.116,22.758-117.549,74.944c-6.089,12.999-6.656,32.87,0.64,45.014
c0,0,18.604-81.43,108.229-86.494"/>
</svg>

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

After

Width:  |  Height:  |  Size: 4.9 KiB

BIN
data/images/album-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 KiB

BIN
data/images/apply-check.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
data/images/artist-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

BIN
data/images/charts.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
data/images/close.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
data/images/collapse.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

BIN
data/images/downloading.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
data/images/drop-album.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
data/images/drop-song.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

BIN
data/images/headphones.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
data/images/itunes.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
data/images/open.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
data/images/rdio.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
data/images/search-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
data/images/star-hover.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
data/images/starred.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 563 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
data/images/uploading.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -2,7 +2,7 @@
// if run in phantomjs add fake Tomahawk environment
if(window.Tomahawk === undefined)
{
alert("PHANTOMJS ENVIRONMENT");
// alert("PHANTOMJS ENVIRONMENT");
var Tomahawk = {
fakeEnv: function()
{
@@ -91,6 +91,11 @@ var TomahawkResolver = {
var configJson = JSON.stringify( config );
window.localStorage[ this.scriptPath() ] = configJson;
this.newConfigSaved();
},
newConfigSaved: function()
{
},
resolve: function( qid, artist, album, title )
{
@@ -179,6 +184,21 @@ Tomahawk.syncRequest = function(url)
}
};
Tomahawk.asyncRequest = function(url, callback)
{
var xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.open('GET', url, true);
xmlHttpRequest.onreadystatechange = function() {
if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {
callback.call(window, xmlHttpRequest);
} else if (xmlHttpRequest.readyState === 4) {
Tomahawk.log("Failed to do GET request: to: " + url);
Tomahawk.log("Status Code was: " + xmlHttpRequest.status);
}
}
xmlHttpRequest.send(null);
};
/**
*
* Secure Hash Algorithm (SHA256)

View File

@@ -0,0 +1,10 @@
-- Script to migate from db version 26 to 27
-- Nothing to do
CREATE TABLE IF NOT EXISTS collection_attributes (
id INTEGER REFERENCES source(id) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED, -- source id, null for local source
k TEXT NOT NULL,
v TEXT NOT NULL
);
UPDATE settings SET v = '27' WHERE k == 'schema_version';

View File

@@ -0,0 +1,7 @@
-- Script to migate from db version 27 to 28.
-- Added albumartist and discnumber to file_join
ALTER TABLE file_join ADD COLUMN composer INTEGER REFERENCES artist(id) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE file_join ADD COLUMN discnumber INTEGER;
UPDATE settings SET v = '28' WHERE k == 'schema_version';

File diff suppressed because it is too large Load Diff

3180
lang/tomahawk_en.ts Normal file

File diff suppressed because it is too large Load Diff

2698
lang/tomahawk_es.ts Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,9 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/lang">
<file>tomahawk_en.qm</file>
<file>tomahawk_de.qm</file>
<file>tomahawk_sv.qm</file>
<file>tomahawk_es.qm</file>
<file>tomahawk_pt_BR.qm</file>
</qresource>
</RCC>

3218
lang/tomahawk_pl.ts Normal file

File diff suppressed because it is too large Load Diff

3246
lang/tomahawk_pt_BR.ts Normal file

File diff suppressed because it is too large Load Diff

3396
lang/tomahawk_sv.ts Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,6 @@
<file>data/images/avatar-dude.png</file>
<file>data/images/back-pressed.png</file>
<file>data/images/back-rest.png</file>
<file>data/images/cover-shadow.png</file>
<file>data/images/filter.png</file>
<file>data/images/loved.png</file>
<file>data/images/not-loved.png</file>
@@ -13,6 +12,7 @@
<file>data/images/track-placeholder.png</file>
<file>data/images/now-playing-panel.png</file>
<file>data/images/now-playing-speaker.png</file>
<file>data/images/now-playing-speaker-dark.png</file>
<file>data/images/pause-pressed.png</file>
<file>data/images/pause-rest.png</file>
<file>data/images/play-pressed.png</file>
@@ -72,6 +72,7 @@
<file>data/images/music-icon.png</file>
<file>data/images/configure.png</file>
<file>data/images/create-playlist.png</file>
<file>data/images/private-listening.png</file>
<file>data/images/add.png</file>
<file>data/images/recently-played.png</file>
<file>data/images/supercollection.png</file>
@@ -85,8 +86,19 @@
<file>data/images/automatic-playlist.png</file>
<file>data/images/station.png</file>
<file>data/images/new-additions.png</file>
<file>data/images/charts.png</file>
<file>data/images/loved_playlist.png</file>
<file>data/images/dashboard.png</file>
<file>data/images/artist-icon.png</file>
<file>data/images/album-icon.png</file>
<file>data/images/search-icon.png</file>
<file>data/images/star-hover.png</file>
<file>data/images/starred.png</file>
<file>data/images/star-unstarred.png</file>
<file>data/images/track-icon-22x22.png</file>
<file>data/images/track-icon-32x32.png</file>
<file>data/images/track-icon-16x16.png</file>
<file>data/images/apply-check.png</file>
<file>data/stylesheets/topbar-radiobuttons.css</file>
<file>data/icons/tomahawk-icon-16x16.png</file>
<file>data/icons/tomahawk-icon-32x32.png</file>
@@ -94,9 +106,6 @@
<file>data/icons/tomahawk-icon-128x128.png</file>
<file>data/icons/tomahawk-icon-256x256.png</file>
<file>data/icons/tomahawk-icon-512x512.png</file>
<file>data/icons/audio-x-generic-22x22.png</file>
<file>data/icons/audio-x-generic-32x32.png</file>
<file>data/icons/audio-x-generic-16x16.png</file>
<file>data/www/auth.html</file>
<file>data/www/auth.na.html</file>
<file>data/www/tomahawk_banner_small.png</file>
@@ -104,7 +113,26 @@
<file>data/sql/dbmigrate-23_to_24.sql</file>
<file>data/sql/dbmigrate-24_to_25.sql</file>
<file>data/sql/dbmigrate-25_to_26.sql</file>
<file>data/sql/dbmigrate-26_to_27.sql</file>
<file>data/js/tomahawk.js</file>
<file>data/images/avatar_frame.png</file>
<file>data/images/drop-all-songs.png</file>
<file>data/images/drop-local-songs.png</file>
<file>data/images/drop-top-songs.png</file>
<file>data/images/drop-song.png</file>
<file>data/images/drop-album.png</file>
<file>data/images/spotify-logo.png</file>
<file>data/images/itunes.png</file>
<file>data/images/uploading.png</file>
<file>data/images/downloading.png</file>
<file>data/images/headphones.png</file>
<file>data/images/headphones-off.png</file>
<file>data/images/headphones-sidebar.png</file>
<file>data/images/closed-padlock.png</file>
<file>data/images/open-padlock.png</file>
<file>data/images/headphones-bigger.png</file>
<file>data/images/no-album-no-case.png</file>
<file>data/images/rdio.png</file>
<file>data/sql/dbmigrate-27_to_28.sql</file>
</qresource>
</RCC>

View File

@@ -1,15 +1,10 @@
SET( OS_SPECIFIC_LINK_LIBRARIES
${OS_SPECIFIC_LINK_LIBRARIES}
tomahawklib
)
FILE( GLOB _icons "${CMAKE_SOURCE_DIR}/data/icons/tomahawk-icon-*.png" )
FOREACH( _file ${_icons} )
STRING( REPLACE "${CMAKE_SOURCE_DIR}/data/icons/tomahawk-icon-" "" _res ${_file} )
STRING( REPLACE ".png" "" _res ${_res} )
INSTALL( FILES ${_file} RENAME tomahawk.png DESTINATION share/icons/hicolor/${_res}/apps )
INSTALL( FILES ${_file} RENAME tomahawk.png DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/${_res}/apps )
ENDFOREACH( _file )
INSTALL( FILES ${CMAKE_SOURCE_DIR}/data/icons/tomahawk-icon.svg RENAME tomahawk.svg DESTINATION share/icons/hicolor/scalable )
INSTALL( FILES ${CMAKE_SOURCE_DIR}/data/icons/tomahawk-icon.svg RENAME tomahawk.svg DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps )
INSTALL( FILES ${CMAKE_SOURCE_DIR}/admin/unix/tomahawk.desktop DESTINATION share/applications )
INSTALL( FILES ${CMAKE_SOURCE_DIR}/admin/unix/tomahawk.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications )

View File

@@ -1,10 +1,11 @@
SET( TOMAHAWK_LIBRARIES tomahawklib )
SET( TOMAHAWK_LIBRARIES tomahawklib )
SET( OS_SPECIFIC_LINK_LIBRARIES
${OS_SPECIFIC_LINK_LIBRARIES}
${COREAUDIO_LIBRARY}
${COREFOUNDATION_LIBRARY}
crypto
SPMediaKeyTap
/System/Library/Frameworks/AppKit.framework
@@ -26,12 +27,15 @@ if (APPLE)
# Uses Darwin kernel version.
# 9.8.0 -> 10.5/Leopard
# 10.4.0 -> 10.6/Snow Leopard
# 11.x.x -> Lion
string(REGEX MATCH "[0-9]+" DARWIN_VERSION ${CMAKE_HOST_SYSTEM_VERSION})
if (DARWIN_VERSION GREATER 9)
if (DARWIN_VERSION GREATER 10)
SET(LION 1)
elseif (DARWIN_VERSION GREATER 9)
SET(SNOW_LEOPARD 1)
elseif (DARWIN_VERSION GREATER 8)
SET(LEOPARD 1)
endif (DARWIN_VERSION GREATER 9)
endif (DARWIN_VERSION GREATER 10)
# Use two different sparkle update tracks for debug and release
# We have to change the URL in the Info.plist file :-/

View File

@@ -13,6 +13,8 @@ SET( QT_USE_QTNETWORK TRUE )
SET( QT_USE_QTXML TRUE )
SET( QT_USE_QTWEBKIT TRUE )
add_definitions( -DQT_SHAREDPOINTER_TRACK_POINTERS )
INCLUDE( ${QT_USE_FILE} )
INCLUDE( AddAppIconMacro )
@@ -37,12 +39,10 @@ ENDIF()
SET( tomahawkSources ${tomahawkSources}
web/api_v1.cpp
resolvers/scriptresolver.cpp
resolvers/qtscriptresolver.cpp
musicscanner.cpp
shortcuthandler.cpp
scanmanager.cpp
ubuntuunityhack.cpp
tomahawkapp.cpp
main.cpp
)
@@ -57,14 +57,19 @@ SET( tomahawkSourcesGui ${tomahawkSourcesGui}
sourcetree/sourcesmodel.cpp
sourcetree/sourcesproxymodel.cpp
sourcetree/sourcetreeview.cpp
sourcetree/sourcedelegate.cpp
sourcetree/animationhelper.cpp
sourcetree/items/sourcetreeitem.cpp
sourcetree/items/collectionitem.cpp
sourcetree/items/sourceitem.cpp
sourcetree/items/playlistitems.cpp
sourcetree/items/categoryitems.cpp
sourcetree/items/genericpageitems.cpp
sourcetree/items/temporarypageitem.cpp
sourcetree/items/groupitem.cpp
sourcetree/items/historyitem.cpp
breakpad/BreakPad.cpp
transferview.cpp
PipelineStatusView.cpp
tomahawktrayicon.cpp
audiocontrols.cpp
settingsdialog.cpp
@@ -75,6 +80,7 @@ SET( tomahawkSourcesGui ${tomahawkSourcesGui}
settingslistdelegate.cpp
resolversmodel.cpp
tomahawkwindow.cpp
LoadXSPFDialog.cpp
)
SET( tomahawkHeaders ${tomahawkHeaders}
@@ -82,11 +88,9 @@ SET( tomahawkHeaders ${tomahawkHeaders}
web/api_v1.h
resolvers/scriptresolver.h
resolvers/qtscriptresolver.h
musicscanner.h
scanmanager.h
ubuntuunityhack.h
shortcuthandler.h
)
@@ -96,19 +100,28 @@ IF(LIBLASTFM_FOUND)
)
ENDIF(LIBLASTFM_FOUND)
IF(LIBATTICA_FOUND)
SET( tomahawkSourcesGui ${tomahawkSourcesGui} GetNewStuffDialog.cpp GetNewStuffDelegate.cpp GetNewStuffModel.cpp )
SET( tomahawkHeadersGui ${tomahawkHeadersGui} GetNewStuffDialog.h GetNewStuffDelegate.h GetNewStuffModel.h )
INCLUDE_DIRECTORIES( ${LIBATTICA_INCLUDE_DIR} )
ENDIF(LIBATTICA_FOUND)
SET( tomahawkHeadersGui ${tomahawkHeadersGui}
sourcetree/sourcesmodel.h
sourcetree/sourcesproxymodel.h
sourcetree/sourcetreeview.h
sourcetree/sourcedelegate.h
sourcetree/animationhelper.h
sourcetree/items/sourcetreeitem.h
sourcetree/items/collectionitem.h
sourcetree/items/sourceitem.h
sourcetree/items/playlistitems.h
sourcetree/items/categoryitems.h
sourcetree/items/genericpageitems.h
sourcetree/items/temporarypageitem.h
sourcetree/items/groupitem.h
sourcetree/items/historyitem.h
transferview.h
PipelineStatusView.h
tomahawktrayicon.h
audiocontrols.h
settingsdialog.h
@@ -120,6 +133,7 @@ SET( tomahawkHeadersGui ${tomahawkHeadersGui}
resolversmodel.h
delegateconfigwrapper.h
tomahawkwindow.h
LoadXSPFDialog.h
)
SET( tomahawkUI ${tomahawkUI}
@@ -127,9 +141,11 @@ SET( tomahawkUI ${tomahawkUI}
diagnosticsdialog.ui
stackedsettingsdialog.ui
proxydialog.ui
searchbox.ui
audiocontrols.ui
GetNewStuffDialog.ui
LoadXSPFDialog.ui
)
INCLUDE_DIRECTORIES(
@@ -150,6 +166,7 @@ INCLUDE_DIRECTORIES(
${THIRDPARTY_DIR}/qxt/qxtweb-standalone/qxtweb
${THIRDPARTY_DIR}/qtweetlib/qtweetlib/src
${THIRDPARTY_DIR}/qtweetlib/tomahawk-custom
${THIRDPARTY_DIR}/breakpad
${TAGLIB_INCLUDES}
${PHONON_INCLUDES}
@@ -161,22 +178,21 @@ INCLUDE_DIRECTORIES(
SET( OS_SPECIFIC_LINK_LIBRARIES "" )
IF( WIN32 )
INCLUDE( "CMakeLists.win32.txt" )
INCLUDE( "CMakeLists.win32.cmake" )
ENDIF( WIN32 )
IF( UNIX )
INCLUDE( "CMakeLists.unix.txt" )
INCLUDE( "CMakeLists.unix.cmake" )
ENDIF( UNIX )
IF( APPLE )
INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/thirdparty/SPMediaKeyTap )
SET( tomahawkHeaders ${tomahawkHeaders} mac/tomahawkapp_mac.h mac/macshortcuthandler.h )
SET( tomahawkSources ${tomahawkSources} mac/tomahawkapp_mac.mm mac/macshortcuthandler.cpp )
SET( tomahawkHeaders ${tomahawkHeaders} mac/tomahawkapp_mac.h mac/macshortcuthandler.h )
SET( tomahawkSources ${tomahawkSources} mac/tomahawkapp_mac.mm mac/macshortcuthandler.cpp )
IF(HAVE_SPARKLE)
SET( tomahawkHeaders ${tomahawkHeaders} ${SPARKLE}/Headers )
ENDIF(HAVE_SPARKLE)
ENDIF( APPLE )
IF(GLOOX_FOUND)
@@ -186,10 +202,11 @@ IF(GLOOX_FOUND)
ENDIF(GLOOX_FOUND)
ADD_SUBDIRECTORY( sip )
kde4_add_app_icon( tomahawkSources "${CMAKE_SOURCE_DIR}/data/icons/tomahawk-icon-*.png" )
qt4_add_resources( RC_SRCS "../resources.qrc" )
qt4_wrap_cpp( tomahawkMoc ${tomahawkHeaders} )
IF(QCA2_FOUND)
INCLUDE_DIRECTORIES( ${QCA2_INCLUDE_DIR} )
ENDIF(QCA2_FOUND)
INCLUDE(GNUInstallDirs)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in
${CMAKE_CURRENT_BINARY_DIR}/config.h)
@@ -197,13 +214,17 @@ include( ${CMAKE_SOURCE_DIR}/lang/translations.cmake )
SET( final_src ${final_src} ${tomahawkMoc} ${tomahawkSources} ${tomahawkHeaders} ${trans_outfile})
IF( "${gui}" STREQUAL "no" )
ELSE()
IF( BUILD_GUI )
LIST(APPEND tomahawkHeaders ${tomahawkHeadersGui})
LIST(APPEND tomahawkSources ${tomahawkSourcesGui})
qt4_wrap_ui( tomahawkUI_H ${tomahawkUI} )
qt4_wrap_cpp( tomahawkMocGui ${tomahawkHeadersGui} )
SET( final_src ${final_src} ${tomahawkUI_H} ${tomahawkMocGui} ${tomahawkSourcesGui} ${RC_SRCS} )
ENDIF()
kde4_add_app_icon( tomahawkSources "${CMAKE_SOURCE_DIR}/data/icons/tomahawk-icon-*.png" )
qt4_add_resources( RC_SRCS "../resources.qrc" )
qt4_wrap_cpp( tomahawkMoc ${tomahawkHeaders} )
SET( final_src ${final_src} ${tomahawkUI_H} ${tomahawkMoc} ${tomahawkSources} ${RC_SRCS} )
IF( UNIX AND NOT APPLE )
ADD_EXECUTABLE( tomahawk ${final_src} )
ENDIF( UNIX AND NOT APPLE )
@@ -225,8 +246,12 @@ ENDIF(LIBLASTFM_FOUND)
IF(GLOOX_FOUND)
SET(LINK_LIBRARIES ${LINK_LIBRARIES} ${GLOOX_LIBRARIES} )
ENDIF(GLOOX_FOUND)
IF(QCA2_FOUND)
SET(LINK_LIBRARIES ${LINK_LIBRARIES} ${QCA2_LIBRARIES} )
ENDIF(QCA2_FOUND)
TARGET_LINK_LIBRARIES( tomahawk
tomahawk_breakpad
${LINK_LIBRARIES}
${TOMAHAWK_LIBRARIES}
${PHONON_LIBS}
@@ -237,10 +262,8 @@ TARGET_LINK_LIBRARIES( tomahawk
${QXTWEB_LIBRARIES}
${QJSON_LIBRARIES}
${TAGLIB_LIBRARIES}
${CLUCENE_LIBRARIES}
)
IF( APPLE )
IF(HAVE_SPARKLE)
MESSAGE("Sparkle Found, installing framekwork in bundle")
@@ -249,12 +272,12 @@ IF( APPLE )
ENDIF(HAVE_SPARKLE)
ENDIF( APPLE )
INSTALL( TARGETS tomahawk BUNDLE DESTINATION . RUNTIME DESTINATION bin )
INSTALL( TARGETS tomahawk BUNDLE DESTINATION . RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )
IF( UNIX AND NOT APPLE AND KDE4_INSTALLED ) #install protocol file
IF( UNIX AND NOT APPLE AND KDE4_INSTALLED AND LEGACY_KDE_INTEGRATION ) #install protocol file
FILE( READ ${CMAKE_SOURCE_DIR}/admin/unix/tomahawk.protocol protocol )
STRING( REPLACE "/path/to/binary" # match this
"${CMAKE_INSTALL_PREFIX}/bin/tomahawk" # this is linux (kde) so pretty safe I think
"${CMAKE_INSTALL_FULL_BINDIR}/tomahawk" # this is linux (kde) so pretty safe I think
edited_protocol # save in this variable
"${protocol}" # from the contents of this var
)
@@ -262,7 +285,7 @@ IF( UNIX AND NOT APPLE AND KDE4_INSTALLED ) #install protocol file
IF( ${SERVICES_INSTALL_DIR} )
SET( PROTOCOL_INSTALL_DIR ${SERVICES_INSTALL_DIR} )
ELSE()
SET( PROTOCOL_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/kde4/services" )
SET( PROTOCOL_INSTALL_DIR "${CMAKE_INSTALL_FULL_DATADIR}/kde4/services" )
ENDIF()
INSTALL( FILES ${CMAKE_BINARY_DIR}/tomahawk.protocol DESTINATION ${PROTOCOL_INSTALL_DIR} )
ENDIF()

View File

@@ -4,12 +4,12 @@ ADD_DEFINITIONS( -g )
ADD_DEFINITIONS( -fno-operator-names )
ADD_DEFINITIONS( -fPIC )
SET( QXTWEB_LIBRARIES qxtweb-standalone )
SET( QXTWEB_LIBRARIES qxtweb-standalone )
IF( APPLE )
INCLUDE( "CMakeLists.osx.txt" )
INCLUDE( "CMakeLists.osx.cmake" )
ENDIF( APPLE )
IF( UNIX AND NOT APPLE )
INCLUDE( "CMakeLists.linux.txt" )
INCLUDE( "CMakeLists.linux.cmake" )
ENDIF( UNIX AND NOT APPLE )

View File

@@ -3,6 +3,7 @@ SET( CMAKE_BUILD_TYPE "Release" )
ADD_DEFINITIONS( /DNOMINMAX )
ADD_DEFINITIONS( /DWIN32_LEAN_AND_MEAN )
ADD_DEFINITIONS( -static-libgcc )
ADD_DEFINITIONS( -DUNICODE )
SET( QXTWEB_LIBRARIES qxtweb-standalone )

323
src/GetNewStuffDelegate.cpp Normal file
View File

@@ -0,0 +1,323 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Tomahawk is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#include "GetNewStuffDelegate.h"
#include "GetNewStuffModel.h"
#include "utils/tomahawkutils.h"
#include "utils/logger.h"
#include <QtGui/QPainter>
#include <QApplication>
#include <QMouseEvent>
#include "AtticaManager.h"
#define PADDING 4
#define PADDING_BETWEEN_STARS 2
#define STAR_SIZE 12
#ifdef Q_WS_MAC
#define SIZEHINT_HEIGHT 70
#else
#define SIZEHINT_HEIGHT 60
#endif
GetNewStuffDelegate::GetNewStuffDelegate( QObject* parent )
: QStyledItemDelegate ( parent )
, m_widestTextWidth( 0 )
, m_hoveringOver( -1 )
{
m_defaultCover.load( RESPATH "images/sipplugin-online.png" );
m_ratingStarPositive.load( RESPATH "images/starred.png" );
m_ratingStarNegative.load( RESPATH "images/star-unstarred.png" );
m_onHoverStar.load( RESPATH "images/star-hover.png" );
m_ratingStarPositive = m_ratingStarPositive.scaled( STAR_SIZE, STAR_SIZE, Qt::KeepAspectRatio, Qt::SmoothTransformation );
m_ratingStarNegative = m_ratingStarNegative.scaled( STAR_SIZE, STAR_SIZE, Qt::KeepAspectRatio, Qt::SmoothTransformation );
m_onHoverStar = m_onHoverStar.scaled( STAR_SIZE, STAR_SIZE, Qt::KeepAspectRatio, Qt::SmoothTransformation );
const int w = SIZEHINT_HEIGHT - 2*PADDING;
m_defaultCover = m_defaultCover.scaled( w, w, Qt::KeepAspectRatio, Qt::SmoothTransformation );
// save the widest wifth
QFont f( QApplication::font() );
f.setPointSize( f.pointSize() - 1 );
QFontMetrics fm( f );
QStringList l = QStringList() << tr( "Installed" ) << tr( "Installing" ) << tr( "Failed" ) << tr( "Uninstalling" );
foreach ( const QString& str, l )
{
if ( fm.width( str ) > m_widestTextWidth )
m_widestTextWidth = fm.width( str );
}
}
void
GetNewStuffDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const
{
QStyleOptionViewItemV4 opt = option;
initStyleOption( &opt, index );
QApplication::style()->drawPrimitive( QStyle::PE_PanelItemViewItem, &opt, painter, opt.widget );
painter->setRenderHint( QPainter::Antialiasing );
QFont titleFont = opt.font;
titleFont.setBold( true );
titleFont.setPointSize( titleFont.pointSize() + 2 );
QFontMetrics titleMetrics( titleFont );
QFont authorFont = opt.font;
authorFont.setItalic( true );
authorFont.setPointSize( authorFont.pointSize() - 1 );
QFontMetrics authorMetrics( authorFont );
QFont descFont = authorFont;
descFont.setItalic( false );
QFontMetrics descMetrics( descFont );
QFont installFont = opt.font;
installFont.setPointSize( installFont.pointSize() - 1 );
QFontMetrics installMetrics( descFont );
const int height = opt.rect.height();
const int center = height / 2 + opt.rect.top();
// Pixmap
QPixmap p = index.data( Qt::DecorationRole ).value< QPixmap >();
const int pixmapWidth = height - 2*PADDING;
QRect pixmapRect( PADDING, PADDING + opt.rect.top(), pixmapWidth, pixmapWidth );
if ( p.isNull() ) // default image... TODO
p = m_defaultCover;
else
p = p.scaled( pixmapRect.size(), Qt::KeepAspectRatio, Qt::SmoothTransformation );
painter->drawPixmap( pixmapRect, p );
// Go from right edge now, stars, install button, and downloaded info
// install / status button
AtticaManager::ResolverState state = static_cast< AtticaManager::ResolverState >( index.data( GetNewStuffModel::StateRole ).toInt() );
QString actionText;
switch( state )
{
case AtticaManager::Uninstalled:
actionText = tr( "Install" );
break;
case AtticaManager::Installing:
actionText = tr( "Installing" );
break;
case AtticaManager::Upgrading:
actionText = tr( "Upgrading" );
break;
case AtticaManager::Failed:
actionText = tr( "Failed" );
break;
case AtticaManager::Installed:
actionText = tr( "Uninstall" );
break;
case AtticaManager::NeedsUpgrade:
actionText = tr( "Upgrade" );
break;
}
const int btnWidth = m_widestTextWidth + 7;
const int leftEdge = opt.rect.width() - PADDING - btnWidth - 3;
const QRect btnRect( leftEdge, center - ( installMetrics.height() + 4 ) / 2, btnWidth, installMetrics.height() + 4 );
m_cachedButtonRects[ QPair<int, int>(index.row(), index.column()) ] = btnRect;
QPen saved = painter->pen();
painter->setPen( opt.palette.color( QPalette::Active, QPalette::AlternateBase ) );
QPainterPath btnPath;
const int radius = 3;
//btnPath.addRoundedRect( btnRect, 3, 3 );
// draw top half gradient
const int btnCenter = btnRect.bottom() - ( btnRect.height() / 2 );
btnPath.moveTo( btnRect.left(), btnCenter );
btnPath.lineTo( btnRect.left(), btnRect.top() + radius );
btnPath.quadTo( QPoint( btnRect.topLeft() ), QPoint( btnRect.left() + radius, btnRect.top() ) );
btnPath.lineTo( btnRect.right() - radius, btnRect.top() );
btnPath.quadTo( QPoint( btnRect.topRight() ), QPoint( btnRect.right(), btnRect.top() + radius ) );
btnPath.lineTo( btnRect.right(),btnCenter );
btnPath.lineTo( btnRect.left(), btnCenter );
QLinearGradient g;
g.setColorAt( 0, QColor(54, 127, 211) );
g.setColorAt( 0.5, QColor(43, 104, 182) );
//painter->setPen( bg.darker() );
painter->fillPath( btnPath, g );
//painter->drawPath( btnPath );
btnPath = QPainterPath();
btnPath.moveTo( btnRect.left(), btnCenter );
btnPath.lineTo( btnRect.left(), btnRect.bottom() - radius );
btnPath.quadTo( QPoint( btnRect.bottomLeft() ), QPoint( btnRect.left() + radius, btnRect.bottom() ) );
btnPath.lineTo( btnRect.right() - radius, btnRect.bottom() );
btnPath.quadTo( QPoint( btnRect.bottomRight() ), QPoint( btnRect.right(), btnRect.bottom() - radius ) );
btnPath.lineTo( btnRect.right(), btnCenter );
btnPath.lineTo( btnRect.left(), btnCenter );
g.setColorAt( 0, QColor(34, 85, 159) );
g.setColorAt( 0.5, QColor(35, 79, 147) );
painter->fillPath( btnPath, g );
painter->setFont( installFont );
painter->drawText( btnRect, Qt::AlignCenter, actionText );
painter->setPen( saved );
// rating stars
int rating = index.data( GetNewStuffModel::RatingRole ).toInt();
const int ratingWidth = 5 * ( m_ratingStarPositive.width() + PADDING_BETWEEN_STARS );
int runningEdge = ( btnRect.right() - btnRect.width() / 2 ) - ratingWidth / 2;
for ( int i = 1; i < 6; i++ )
{
QRect r( runningEdge, btnRect.top() - m_ratingStarPositive.height() - PADDING, m_ratingStarPositive.width(), m_ratingStarPositive.height() );
if ( i == 1 )
m_cachedStarRects[ QPair<int, int>(index.row(), index.column()) ] = r;
const bool userHasRated = index.data( GetNewStuffModel::UserHasRatedRole ).toBool();
if ( !userHasRated && // Show on-hover animation if the user hasn't rated it yet, and is hovering over it
m_hoveringOver > -1 &&
m_hoveringItem == index )
{
if ( i <= m_hoveringOver ) // positive star
painter->drawPixmap( r, m_onHoverStar );
else
painter->drawPixmap( r, m_ratingStarNegative );
}
else
{
if ( i <= rating ) // positive or rated star
{
if ( userHasRated )
painter->drawPixmap( r, m_onHoverStar );
else
painter->drawPixmap( r, m_ratingStarPositive );
}
else
painter->drawPixmap( r, m_ratingStarNegative );
}
runningEdge += m_ratingStarPositive.width() + PADDING_BETWEEN_STARS;
}
// downloaded num times, underneath button
QString count = tr( "%1 downloads" ).arg( index.data( GetNewStuffModel::DownloadCounterRole ).toInt() );
const QRect countRect( btnRect.left(), btnRect.bottom() + PADDING, btnRect.width(), opt.rect.bottom() - PADDING - btnRect.bottom() );
QFont countFont = descFont;
countFont.setPointSize( countFont.pointSize() - 2 );
countFont.setBold( true );
painter->setFont( countFont );
painter->drawText( countRect, Qt::AlignCenter | Qt::TextWordWrap, count );
// author and version
QString author = index.data( GetNewStuffModel::AuthorRole ).toString();
const int authorWidth = authorMetrics.width( author );
const int topTextLine = opt.rect.top() + PADDING;
const QRect authorRect( btnRect.x() - 3*PADDING - authorWidth, topTextLine, authorWidth + 6, authorMetrics.height() );
painter->setFont( authorFont );
painter->drawText( authorRect, Qt::AlignCenter, author );
const QRect versionRect = authorRect.translated( 0, authorRect.height() );
QString version = index.data( GetNewStuffModel::VersionRole ).toString();
painter->drawText( versionRect, Qt::AlignCenter, version );
// title
QString title = index.data( Qt::DisplayRole ).toString();
const int rightTitleEdge = authorRect.left() - PADDING;
const int leftTitleEdge = pixmapRect.right() + PADDING;
const QRect textRect( leftTitleEdge, topTextLine, rightTitleEdge - leftTitleEdge, versionRect.bottom() - opt.rect.top() - PADDING );
painter->setFont( titleFont );
painter->drawText( textRect, Qt::AlignVCenter | Qt::AlignLeft, title );
// description
QString desc = index.data( GetNewStuffModel::DescriptionRole ).toString();
const int descWidth = btnRect.left() - leftTitleEdge - PADDING;
const QRect descRect( leftTitleEdge, versionRect.bottom(), descWidth, opt.rect.bottom() - versionRect.bottom() + PADDING );
painter->setFont( descFont );
painter->drawText( descRect, Qt::AlignLeft | Qt::TextWordWrap, desc );
}
QSize
GetNewStuffDelegate::sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const
{
Q_UNUSED( option );
Q_UNUSED( index );
return QSize( 200, SIZEHINT_HEIGHT );
}
bool
GetNewStuffDelegate::editorEvent( QEvent* event, QAbstractItemModel* model, const QStyleOptionViewItem& option, const QModelIndex& index )
{
Q_UNUSED( option );
if ( event->type() != QEvent::MouseButtonRelease &&
event->type() != QEvent::MouseMove )
return false;
if ( event->type() == QEvent::MouseButtonRelease && m_cachedButtonRects.contains( QPair<int, int>( index.row(), index.column() ) ) )
{
QRect rect = m_cachedButtonRects[ QPair<int, int>( index.row(), index.column() ) ];
QMouseEvent* me = static_cast< QMouseEvent* >( event );
if ( rect.contains( me->pos() ) )
{
model->setData( index, true );
return true;
}
}
if ( m_cachedStarRects.contains( QPair<int, int>( index.row(), index.column() ) ) )
{
QRect fullStars = m_cachedStarRects[ QPair<int, int>( index.row(), index.column() ) ];
const int starsWidth = 5 * ( m_ratingStarPositive.width() + PADDING_BETWEEN_STARS );
fullStars.setWidth( starsWidth );
QMouseEvent* me = static_cast< QMouseEvent* >( event );
if ( fullStars.contains( me->pos() ) )
{
const int eachStar = starsWidth / 5;
const int clickOffset = me->pos().x() - fullStars.x();
const int whichStar = (clickOffset / eachStar) + 1;
if ( event->type() == QEvent::MouseButtonRelease )
{
model->setData( index, whichStar, GetNewStuffModel::RatingRole );
}
else if ( event->type() == QEvent::MouseMove )
{
// 0-indexed
m_hoveringOver = whichStar;
m_hoveringItem = index;
}
return true;
}
}
if ( m_hoveringOver > -1 )
{
emit update( m_hoveringItem );
m_hoveringOver = -1;
m_hoveringItem = QPersistentModelIndex();
}
return false;
}

50
src/GetNewStuffDelegate.h Normal file
View File

@@ -0,0 +1,50 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Tomahawk is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef GETNEWSTUFFDELEGATE_H
#define GETNEWSTUFFDELEGATE_H
#include <QStyledItemDelegate>
class
GetNewStuffDelegate : public QStyledItemDelegate
{
Q_OBJECT
public:
explicit GetNewStuffDelegate( QObject* parent = 0 );
virtual void paint( QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index ) const;
virtual QSize sizeHint( const QStyleOptionViewItem& option, const QModelIndex& index ) const;
signals:
void update( const QModelIndex& idx );
protected:
virtual bool editorEvent( QEvent* event, QAbstractItemModel* model, const QStyleOptionViewItem& option, const QModelIndex& index );
private:
QPixmap m_defaultCover, m_onHoverStar, m_ratingStarPositive, m_ratingStarNegative;
int m_widestTextWidth;
int m_hoveringOver;
QPersistentModelIndex m_hoveringItem;
mutable QHash< QPair<int, int>, QRect > m_cachedButtonRects;
mutable QHash< QPair<int, int>, QRect > m_cachedStarRects;
};
#endif // GETNEWSTUFFDELEGATE_H

54
src/GetNewStuffDialog.cpp Normal file
View File

@@ -0,0 +1,54 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2011, Leo Franchi <lfranchi@kde.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Tomahawk is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#include "GetNewStuffDialog.h"
#include "ui_GetNewStuffDialog.h"
#include "GetNewStuffDelegate.h"
#include "GetNewStuffModel.h"
GetNewStuffDialog::GetNewStuffDialog( QWidget* parent, Qt::WindowFlags f )
: QDialog( parent, f )
, ui( new Ui::GetNewStuffDialog )
, m_model( new GetNewStuffModel( this ) )
{
ui->setupUi( this );
ui->listView->setModel( m_model );
GetNewStuffDelegate* del = new GetNewStuffDelegate( ui->listView );
connect( del, SIGNAL( update( QModelIndex ) ), ui->listView, SLOT( update( QModelIndex ) ) );
ui->listView->setItemDelegate( del );
ui->listView->setVerticalScrollMode( QAbstractItemView::ScrollPerPixel );
ui->listView->setMouseTracking( true );
setMinimumSize( 560, 350 );
#ifdef Q_WS_MAC
setMaximumSize( 560, 350 );
setSizeGripEnabled( false );
ui->listView->setAttribute( Qt::WA_MacShowFocusRect, false );
#endif
}
GetNewStuffDialog::~GetNewStuffDialog()
{
delete ui;
}

41
src/GetNewStuffDialog.h Normal file
View File

@@ -0,0 +1,41 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2011, Leo Franchi <lfranchi@kde.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Tomahawk is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef GETNEWSTUFFDIALOG_H
#define GETNEWSTUFFDIALOG_H
#include <QDialog>
class GetNewStuffModel;
namespace Ui {
class GetNewStuffDialog;
}
class GetNewStuffDialog : public QDialog
{
Q_OBJECT
public:
explicit GetNewStuffDialog( QWidget *parent = 0, Qt::WindowFlags f = 0 );
~GetNewStuffDialog();
private:
Ui::GetNewStuffDialog *ui;
GetNewStuffModel* m_model;
};
#endif // GETNEWSTUFFDIALOG_H

67
src/GetNewStuffDialog.ui Normal file
View File

@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>GetNewStuffDialog</class>
<widget class="QDialog" name="GetNewStuffDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>449</width>
<height>282</height>
</rect>
</property>
<property name="windowTitle">
<string>Download New Resolvers</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QListView" name="listView"/>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>GetNewStuffDialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>GetNewStuffDialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

156
src/GetNewStuffModel.cpp Normal file
View File

@@ -0,0 +1,156 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Tomahawk is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#include "GetNewStuffModel.h"
#include "utils/tomahawkutils.h"
#include "utils/logger.h"
#include <QPixmap>
#include <QUrl>
#include "AtticaManager.h"
GetNewStuffModel::GetNewStuffModel( QObject* parent )
: QAbstractListModel ( parent )
{
if ( AtticaManager::instance()->resolversLoaded() )
m_contentList = AtticaManager::instance()->resolvers();
connect( AtticaManager::instance(), SIGNAL( resolversReloaded( Attica::Content::List ) ), this, SLOT( resolversReloaded( Attica::Content::List ) ) );
connect( AtticaManager::instance(), SIGNAL( resolverStateChanged( QString ) ), this, SLOT( resolverStateChanged( QString ) ) );
}
GetNewStuffModel::~GetNewStuffModel()
{
}
void
GetNewStuffModel::resolversReloaded( const Attica::Content::List& resolvers )
{
beginResetModel();
m_contentList = resolvers;
endResetModel();
}
void
GetNewStuffModel::resolverStateChanged( const QString& resolverId )
{
for ( int i = 0; i < m_contentList.count(); i++ )
{
const Attica::Content resolver = m_contentList[ i ];
if ( resolver.id() == resolverId )
{
QModelIndex idx = index( i, 0, QModelIndex() );
emit dataChanged( idx, idx );
}
}
}
QVariant
GetNewStuffModel::data( const QModelIndex& index, int role ) const
{
if ( !index.isValid() || !hasIndex( index.row(), index.column(), index.parent() ) )
return QVariant();
Attica::Content resolver = m_contentList[ index.row() ];
switch ( role )
{
case Qt::DisplayRole:
return resolver.name();
case Qt::DecorationRole:
return QVariant::fromValue< QPixmap >( AtticaManager::instance()->iconForResolver( resolver ) );
case DownloadUrlRole:
// TODO
return QUrl();
case RatingRole:
return resolver.rating() / 20; // rating is out of 100
case DownloadCounterRole:
return resolver.downloads();
case VersionRole:
return resolver.version();
case DescriptionRole:
return resolver.description();
case TypeRole:
return ResolverType;
case AuthorRole:
return resolver.author();
case StateRole:
return (int)AtticaManager::instance()->resolverState( resolver );
case UserHasRatedRole:
return AtticaManager::instance()->userHasRated( resolver );
}
return QVariant();
}
int
GetNewStuffModel::rowCount( const QModelIndex& parent ) const
{
Q_UNUSED( parent );
return m_contentList.count();
}
bool
GetNewStuffModel::setData( const QModelIndex &index, const QVariant &value, int role )
{
Q_UNUSED( value );
if ( !hasIndex( index.row(), index.column(), index.parent() ) )
return false;
Attica::Content resolver = m_contentList[ index.row() ];
AtticaManager::ResolverState state = AtticaManager::instance()->resolverState( resolver );
if ( role == Qt::EditRole )
{
switch( state )
{
case AtticaManager::Uninstalled:
// install
AtticaManager::instance()->installResolver( resolver );
break;
case AtticaManager::Installing:
case AtticaManager::Upgrading:
// Do nothing, busy
break;
case AtticaManager::Installed:
// Uninstall
AtticaManager::instance()->uninstallResolver( resolver );
break;
case AtticaManager::NeedsUpgrade:
AtticaManager::instance()->upgradeResolver( resolver );
break;
default:
//FIXME -- this handles e.g. Failed
break;
};
} else if ( role == RatingRole )
{
// For now only allow rating if a resolver is installed!
if ( state != AtticaManager::Installed && state != AtticaManager::NeedsUpgrade )
return false;
if ( AtticaManager::instance()->userHasRated( resolver ) )
return false;
m_contentList[ index.row() ].setRating( value.toInt() * 20 );
AtticaManager::instance()->uploadRating( m_contentList[ index.row() ] );
}
emit dataChanged( index, index );
return true;
}

64
src/GetNewStuffModel.h Normal file
View File

@@ -0,0 +1,64 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Tomahawk is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef GETNEWSTUFFMODEL_H
#define GETNEWSTUFFMODEL_H
#include <QModelIndex>
#include <attica/content.h>
#include <QPixmap>
class GetNewStuffModel: public QAbstractListModel
{
Q_OBJECT
public:
enum NewStuffRoles {
// DisplayRole is title
// DecorationRole is qicon for item
DownloadUrlRole = Qt::UserRole + 1,
RatingRole = Qt::UserRole + 2,
DownloadCounterRole = Qt::UserRole + 3,
VersionRole = Qt::UserRole + 4,
DescriptionRole = Qt::UserRole + 5,
TypeRole = Qt::UserRole + 6, // Category in attica-speak. What sort of item this is (resolver, etc).
AuthorRole = Qt::UserRole + 7,
StateRole = Qt::UserRole + 8,
UserHasRatedRole = Qt::UserRole + 9
};
enum Types {
ResolverType = 0,
};
explicit GetNewStuffModel( QObject* parent = 0 );
virtual ~GetNewStuffModel();
virtual QVariant data( const QModelIndex& index, int role = Qt::DisplayRole ) const;
virtual int rowCount( const QModelIndex& parent = QModelIndex() ) const;
virtual bool setData( const QModelIndex &index, const QVariant &value, int role );
private slots:
void resolversReloaded( const Attica::Content::List& );
void resolverStateChanged( const QString& resolverId );
private:
Attica::Content::List m_contentList;
};
#endif // GETNEWSTUFFMODEL_H

61
src/LoadXSPFDialog.cpp Normal file
View File

@@ -0,0 +1,61 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Tomahawk is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#include "LoadXSPFDialog.h"
#include "ui_LoadXSPFDialog.h"
#include <QFileDialog>
LoadXSPFDialog::LoadXSPFDialog( QWidget* parent, Qt::WindowFlags f )
: QDialog( parent, f )
, m_ui( new Ui_LoadXSPF )
{
m_ui->setupUi( this );
#ifdef Q_WS_MAC
m_ui->horizontalLayout->setContentsMargins( 0, 0, 0, 0 );
m_ui->horizontalLayout->setSpacing( 5 );
m_ui->verticalLayout->setContentsMargins( 0, 10, 0, 0 );
m_ui->verticalLayout->setSpacing( 0 );
#endif
connect( m_ui->navigateButton, SIGNAL( clicked( bool ) ), this, SLOT( getLocalFile() ) );
}
LoadXSPFDialog::~LoadXSPFDialog()
{
}
void
LoadXSPFDialog::getLocalFile()
{
QString url = QFileDialog::getOpenFileName( this, tr( "Load XSPF File" ), QDir::homePath(), tr( "XSPF Files (*.xspf)" ) );
m_ui->lineEdit->setText( url );
}
QString
LoadXSPFDialog::xspfUrl() const
{
return m_ui->lineEdit->text();
}
bool
LoadXSPFDialog::autoUpdate() const
{
return m_ui->autoUpdate->isChecked();
}

43
src/LoadXSPFDialog.h Normal file
View File

@@ -0,0 +1,43 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Leo Franchi <lfranchi@kde.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Tomahawk is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef LOADXSPFDIALOG_H
#define LOADXSPFDIALOG_H
#include <QDialog>
class Ui_LoadXSPF;
class LoadXSPFDialog : public QDialog
{
Q_OBJECT
public:
explicit LoadXSPFDialog( QWidget* parent = 0, Qt::WindowFlags f = 0 );
virtual ~LoadXSPFDialog();
QString xspfUrl() const;
bool autoUpdate() const;
public slots:
void getLocalFile();
private:
Ui_LoadXSPF* m_ui;
};
#endif // LOADXSPFDIALOG_H

102
src/LoadXSPFDialog.ui Normal file
View File

@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>LoadXSPF</class>
<widget class="QDialog" name="LoadXSPF">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>444</width>
<height>121</height>
</rect>
</property>
<property name="windowTitle">
<string>Load XSPF</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Playlist Url</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit">
<property name="placeholderText">
<string>Enter URL...</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="navigateButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QCheckBox" name="autoUpdate">
<property name="text">
<string>Automatically update</string>
</property>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>LoadXSPF</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>LoadXSPF</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View File

@@ -1,6 +1,7 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
* Copyright 2011, Leo Franchi <lfranchi@kde.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,7 +17,7 @@
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#include "PipelineStatusView.h"
#include "JobStatusView.h"
#include <QHeaderView>
#include <QVBoxLayout>
@@ -28,7 +29,7 @@
using namespace Tomahawk;
PipelineStatusView::PipelineStatusView( AnimatedSplitter* parent )
JobStatusView::JobStatusView( AnimatedSplitter* parent )
: AnimatedWidget( parent )
, m_parent( parent )
{
@@ -76,7 +77,7 @@ PipelineStatusView::PipelineStatusView( AnimatedSplitter* parent )
void
PipelineStatusView::onPipelineUpdate( const query_ptr& query )
JobStatusView::onPipelineUpdate( const query_ptr& query )
{
QTreeWidgetItem* ti = m_tree->invisibleRootItem()->child( 0 );
@@ -100,7 +101,7 @@ PipelineStatusView::onPipelineUpdate( const query_ptr& query )
QSize
PipelineStatusView::sizeHint() const
JobStatusView::sizeHint() const
{
unsigned int y = 0;
y += m_tree->header()->height();

View File

@@ -1,6 +1,7 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
* Copyright 2011, Leo Franchi <lfranchi@kde.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -16,23 +17,24 @@
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PIPELINESTATUSVIEW_H
#define PIPELINESTATUSVIEW_H
#ifndef JOBSTATUSVIEW_H
#define JOBSTATUSVIEW_H
#include <QTreeWidget>
#include "typedefs.h"
#include "utils/animatedsplitter.h"
#include "widgets/animatedsplitter.h"
#include "query.h"
class StreamConnection;
class PipelineStatusView : public AnimatedWidget
class JobStatusView : public AnimatedWidget
{
Q_OBJECT
public:
explicit PipelineStatusView( AnimatedSplitter* parent );
virtual ~PipelineStatusView()
explicit JobStatusView( AnimatedSplitter* parent );
virtual ~JobStatusView()
{
}
@@ -42,8 +44,8 @@ private slots:
void onPipelineUpdate( const Tomahawk::query_ptr& query = Tomahawk::query_ptr() );
private:
QTreeWidget* m_tree;
QTreeView* m_tree;
AnimatedSplitter* m_parent;
};
#endif // TRANSFERVIEW_H
#endif // JOBSTATUSVIEW_H

View File

@@ -19,33 +19,30 @@
#include "audiocontrols.h"
#include "ui_audiocontrols.h"
#include <QNetworkReply>
#include <QDropEvent>
#include <QMouseEvent>
#include <QtNetwork/QNetworkReply>
#include <QtGui/QDropEvent>
#include <QtGui/QMouseEvent>
#include "audio/audioengine.h"
#include "viewmanager.h"
#include "playlist/playlistview.h"
#include "database/database.h"
#include "database/databasecommand_socialaction.h"
#include "album.h"
#include "utils/imagebutton.h"
#include "widgets/imagebutton.h"
#include "utils/tomahawkutils.h"
#include "utils/logger.h"
#include <globalactionmanager.h>
#include "album.h"
#include "dropjob.h"
#include "globalactionmanager.h"
#include "viewmanager.h"
using namespace Tomahawk;
static QString s_acInfoIdentifier = QString( "AUDIOCONTROLS" );
AudioControls::AudioControls( QWidget* parent )
: QWidget( parent )
, ui( new Ui::AudioControls )
, m_repeatMode( PlaylistInterface::NoRepeat )
, m_shuffled( false )
, m_lastSliderCheck( 0 )
{
ui->setupUi( this );
setAcceptDrops( true );
@@ -87,59 +84,26 @@ AudioControls::AudioControls( QWidget* parent )
ui->loveButton->setPixmap( RESPATH "images/not-loved.png" );
ui->loveButton->setCheckable( true );
#ifdef Q_WS_MAC
ui->ownerLabel->setForegroundRole( QPalette::Text );
#else
ui->ownerLabel->setForegroundRole( QPalette::Dark );
#endif
ui->metaDataArea->setStyleSheet( "QWidget#metaDataArea {\nborder-width: 4px;\nborder-image: url(" RESPATH "images/now-playing-panel.png) 4 4 4 4 stretch stretch; }" );
ui->seekSlider->setFixedHeight( 20 );
ui->seekSlider->setEnabled( true );
ui->seekSlider->setStyleSheet( "QSlider::groove::horizontal {"
"margin: 5px; border-width: 3px;"
"border-image: url(" RESPATH "images/seek-slider-bkg.png) 3 3 3 3 stretch stretch;"
"}"
"QSlider::sub-page:horizontal {"
"margin: 5px; border-width: 3px;"
"border-image: url(" RESPATH "images/seek-slider-level.png) 3 3 3 3 stretch stretch;"
"}"
"QSlider::handle::horizontal {"
"margin-bottom: -7px; margin-top: -7px;"
"margin-left: -4px; margin-right: -4px;"
"height: 17px; width: 16px;"
"background-image: url(" RESPATH "images/seek-and-volume-knob-rest.png);"
"background-repeat: no-repeat;"
"}" );
ui->volumeSlider->setFixedHeight( 20 );
ui->volumeSlider->setRange( 0, 100 );
ui->volumeSlider->setValue( AudioEngine::instance()->volume() );
ui->volumeSlider->setStyleSheet( "QSlider::groove::horizontal {"
"margin: 5px; border-width: 3px;"
"border-image: url(" RESPATH "images/volume-slider-bkg.png) 3 3 3 3 stretch stretch;"
"}"
"QSlider::sub-page:horizontal {"
"margin: 5px; border-width: 3px;"
"border-image: url(" RESPATH "images/seek-slider-level.png) 3 3 3 3 stretch stretch;"
"}"
m_phononTickCheckTimer.setSingleShot( true );
"QSlider::handle::horizontal {"
"margin-bottom: -7px; margin-top: -7px;"
"margin-left: -4px; margin-right: -4px;"
"height: 17px; width: 16px;"
"background-image: url(" RESPATH "images/seek-and-volume-knob-rest.png);"
"background-repeat: no-repeat;"
"}" );
m_sliderTimeLine.setCurveShape( QTimeLine::LinearCurve );
ui->seekSlider->setTimeLine( &m_sliderTimeLine );
/* m_playAction = new QAction( this );
m_pauseAction = new QAction( this );
m_prevAction = new QAction( this );
m_nextAction = new QAction( this );
m_defaultCover = QPixmap( RESPATH "images/no-album-no-case.png" ).scaled( ui->coverImage->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
connect( m_playAction, SIGNAL( triggered() ), (QObject*)APP->audioEngine(), SLOT( play() ) );
connect( m_pauseAction, SIGNAL( triggered() ), (QObject*)APP->audioEngine(), SLOT( pause() ) );
connect( m_prevAction, SIGNAL( triggered() ), (QObject*)APP->audioEngine(), SLOT( previous() ) );
connect( m_nextAction, SIGNAL( triggered() ), (QObject*)APP->audioEngine(), SLOT( next() ) ); */
connect( &m_phononTickCheckTimer, SIGNAL( timeout() ), SLOT( phononTickCheckTimeout() ) );
connect( &m_sliderTimeLine, SIGNAL( frameChanged( int ) ), ui->seekSlider, SLOT( setValue( int ) ) );
connect( ui->seekSlider, SIGNAL( valueChanged( int ) ), AudioEngine::instance(), SLOT( seek( int ) ) );
connect( ui->volumeSlider, SIGNAL( valueChanged( int ) ), AudioEngine::instance(), SLOT( setVolume( int ) ) );
@@ -150,8 +114,8 @@ AudioControls::AudioControls( QWidget* parent )
connect( ui->volumeLowButton, SIGNAL( clicked() ), AudioEngine::instance(), SLOT( lowerVolume() ) );
connect( ui->volumeHighButton, SIGNAL( clicked() ), AudioEngine::instance(), SLOT( raiseVolume() ) );
connect( ui->playPauseButton, SIGNAL( clicked() ), this, SIGNAL( playPressed() ) );
connect( ui->pauseButton, SIGNAL( clicked() ), this, SIGNAL( pausePressed() ) );
connect( ui->playPauseButton, SIGNAL( clicked() ), SIGNAL( playPressed() ) );
connect( ui->pauseButton, SIGNAL( clicked() ), SIGNAL( pausePressed() ) );
connect( ui->repeatButton, SIGNAL( clicked() ), SLOT( onRepeatClicked() ) );
connect( ui->shuffleButton, SIGNAL( clicked() ), SLOT( onShuffleClicked() ) );
@@ -167,19 +131,10 @@ AudioControls::AudioControls( QWidget* parent )
connect( AudioEngine::instance(), SIGNAL( paused() ), SLOT( onPlaybackPaused() ) );
connect( AudioEngine::instance(), SIGNAL( resumed() ), SLOT( onPlaybackResumed() ) );
connect( AudioEngine::instance(), SIGNAL( stopped() ), SLOT( onPlaybackStopped() ) );
connect( AudioEngine::instance(), SIGNAL( seeked( qint64 ) ), SLOT( onPlaybackSeeked( qint64 ) ) );
connect( AudioEngine::instance(), SIGNAL( timerMilliSeconds( qint64 ) ), SLOT( onPlaybackTimer( qint64 ) ) );
connect( AudioEngine::instance(), SIGNAL( volumeChanged( int ) ), SLOT( onVolumeChanged( int ) ) );
m_defaultCover = QPixmap( RESPATH "images/no-album-art-placeholder.png" )
.scaled( ui->coverImage->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
connect( Tomahawk::InfoSystem::InfoSystem::instance(),
SIGNAL( info( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ),
SLOT( infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData, QVariant ) ) );
connect( Tomahawk::InfoSystem::InfoSystem::instance(), SIGNAL( finished( QString ) ), SLOT( infoSystemFinished( QString ) ) );
ui->buttonAreaLayout->setSpacing( 0 );
ui->stackedLayout->setSpacing( 0 );
ui->stackedLayout->setContentsMargins( 0, 0, 0, 0 );
@@ -214,6 +169,13 @@ AudioControls::changeEvent( QEvent* e )
}
void
AudioControls::phononTickCheckTimeout()
{
onPlaybackTimer( m_lastSliderCheck );
}
void
AudioControls::onVolumeChanged( int volume )
{
@@ -226,116 +188,116 @@ AudioControls::onVolumeChanged( int volume )
void
AudioControls::onPlaybackStarted( const Tomahawk::result_ptr& result )
{
tDebug( LOGEXTRA ) << Q_FUNC_INFO;
onPlaybackLoading( result );
Tomahawk::InfoSystem::InfoCriteriaHash trackInfo;
trackInfo["artist"] = result->artist()->name();
trackInfo["album"] = result->album()->name();
Tomahawk::InfoSystem::InfoRequestData requestData;
requestData.caller = s_acInfoIdentifier;
requestData.type = Tomahawk::InfoSystem::InfoAlbumCoverArt;
requestData.input = QVariant::fromValue< Tomahawk::InfoSystem::InfoCriteriaHash >( trackInfo );
requestData.customData = QVariantMap();
Tomahawk::InfoSystem::InfoSystem::instance()->getInfo( requestData );
}
void
AudioControls::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QVariant output )
{
if ( requestData.caller != s_acInfoIdentifier || requestData.type != Tomahawk::InfoSystem::InfoAlbumCoverArt )
{
if ( result.isNull() )
return;
}
if ( m_currentTrack.isNull() )
{
tLog() << "Current track is null when trying to apply fetched cover art";
return;
}
if ( m_currentTrack.isNull() || ( !m_currentTrack.isNull() && m_currentTrack.data()->id() != result.data()->id() ) )
onPlaybackLoading( result );
if ( !output.canConvert< QVariantMap >() )
{
tDebug( LOGINFO ) << "Cannot convert fetched art from a QByteArray";
return;
}
qint64 duration = AudioEngine::instance()->currentTrackTotalTime();
QVariantMap returnedData = output.value< QVariantMap >();
const QByteArray ba = returnedData["imgbytes"].toByteArray();
if ( ba.length() )
{
QPixmap pm;
pm.loadFromData( ba );
if ( duration == -1 )
duration = result.data()->duration() * 1000;
if ( pm.isNull() )
ui->coverImage->setPixmap( m_defaultCover );
else
ui->coverImage->setPixmap( pm.scaled( ui->coverImage->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation ) );
}
}
ui->seekSlider->setRange( 0, duration );
ui->seekSlider->setValue( 0 );
m_phononTickCheckTimer.stop();
void
AudioControls::infoSystemFinished( QString target )
{
Q_UNUSED( target );
m_sliderTimeLine.stop();
m_sliderTimeLine.setDuration( duration );
m_sliderTimeLine.setFrameRange( 0, duration );
m_sliderTimeLine.setCurrentTime( 0 );
m_seekMsecs = -1;
ui->seekSlider->setVisible( true );
m_noTimeChange = false;
m_lastSliderCheck = 0;
}
void
AudioControls::onPlaybackLoading( const Tomahawk::result_ptr& result )
{
tDebug( LOGEXTRA ) << Q_FUNC_INFO;
if ( !m_currentTrack.isNull() )
{
disconnect( m_currentTrack->album().data(), SIGNAL( updated() ), this, SLOT( onAlbumCoverUpdated() ) );
disconnect( m_currentTrack->toQuery().data(), SIGNAL( socialActionsLoaded() ), this, SLOT( onSocialActionsLoaded() ) );
}
m_currentTrack = result;
connect( m_currentTrack->album().data(), SIGNAL( updated() ), SLOT( onAlbumCoverUpdated() ) );
connect( m_currentTrack->toQuery().data(), SIGNAL( socialActionsLoaded() ), SLOT( onSocialActionsLoaded() ) );
ui->artistTrackLabel->setResult( result );
ui->albumLabel->setResult( result );
ui->ownerLabel->setText( result->friendlySource() );
ui->coverImage->setPixmap( m_defaultCover );
const QString duration = TomahawkUtils::timeToString( result.data()->duration() );
ui->timeLabel->setFixedWidth( ui->timeLabel->fontMetrics().width( QString( duration.length(), QChar( '0' ) ) ) );
ui->timeLabel->setText( TomahawkUtils::timeToString( 0 ) );
ui->timeLeftLabel->setText( "-" + TomahawkUtils::timeToString( result->duration() ) );
ui->seekSlider->setRange( 0, m_currentTrack->duration() * 1000 );
ui->seekSlider->setValue( 0 );
ui->seekSlider->setVisible( true );
/* m_playAction->setEnabled( false );
m_pauseAction->setEnabled( true ); */
ui->timeLeftLabel->setFixedWidth( ui->timeLeftLabel->fontMetrics().width( QString( duration.length() + 1, QChar( '0' ) ) ) );
ui->timeLeftLabel->setText( "-" + duration );
ui->stackedLayout->setCurrentWidget( ui->pauseButton );
ui->loveButton->setEnabled( true );
ui->loveButton->setVisible( true );
result->loadSocialActions();
connect( result.data(), SIGNAL( socialActionsLoaded() ), this, SLOT( socialActionsLoaded() ) );
setAlbumCover();
setSocialActions();
}
void
AudioControls::socialActionsLoaded()
{
Result* r = qobject_cast< Result* >( sender() );
Q_ASSERT( r );
if ( m_currentTrack.data() == r )
void
AudioControls::onAlbumCoverUpdated()
{
Album* album = qobject_cast< Album* >( sender() );
if ( !album || album != m_currentTrack->album().data() )
return;
setAlbumCover();
}
void
AudioControls::setAlbumCover()
{
if ( !m_currentTrack->album()->cover().isNull() )
{
if ( m_currentTrack->loved() )
{
ui->loveButton->setPixmap( RESPATH "images/loved.png" );
ui->loveButton->setChecked( true );
}
else
{
ui->loveButton->setPixmap( RESPATH "images/not-loved.png" );
ui->loveButton->setChecked( false );
}
QPixmap cover;
cover.loadFromData( m_currentTrack->album()->cover() );
ui->coverImage->setPixmap( cover.scaled( ui->coverImage->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation ) );
}
else
ui->coverImage->setPixmap( m_defaultCover );
}
void
AudioControls::onSocialActionsLoaded()
{
Query* query = qobject_cast< Query* >( sender() );
if ( !query || query != m_currentTrack->toQuery().data() )
return;
setSocialActions();
}
void
AudioControls::setSocialActions()
{
if ( m_currentTrack->toQuery()->loved() )
{
ui->loveButton->setPixmap( RESPATH "images/loved.png" );
ui->loveButton->setChecked( true );
}
else
{
ui->loveButton->setPixmap( RESPATH "images/not-loved.png" );
ui->loveButton->setChecked( false );
}
}
@@ -343,26 +305,37 @@ AudioControls::socialActionsLoaded()
void
AudioControls::onPlaybackPaused()
{
/* m_pauseAction->setEnabled( false );
m_playAction->setEnabled( true ); */
tDebug( LOGEXTRA ) << Q_FUNC_INFO;
ui->stackedLayout->setCurrentWidget( ui->playPauseButton );
m_sliderTimeLine.setPaused( true );
}
void
AudioControls::onPlaybackResumed()
{
/* m_playAction->setEnabled( false );
m_pauseAction->setEnabled( true ); */
tDebug( LOGEXTRA ) << Q_FUNC_INFO;
ui->stackedLayout->setCurrentWidget( ui->pauseButton );
ui->loveButton->setVisible( true );
m_sliderTimeLine.resume();
}
void
AudioControls::onPlaybackSeeked( qint64 msec )
{
tDebug( LOGEXTRA ) << Q_FUNC_INFO << " setting current timer to " << msec;
m_sliderTimeLine.setPaused( true );
m_sliderTimeLine.setCurrentTime( msec );
m_lastSliderCheck = msec;
m_seekMsecs = msec;
}
void
AudioControls::onPlaybackStopped()
{
tDebug( LOGEXTRA ) << Q_FUNC_INFO;
m_currentTrack.clear();
ui->artistTrackLabel->setText( "" );
@@ -372,28 +345,72 @@ AudioControls::onPlaybackStopped()
ui->timeLeftLabel->setText( "" );
ui->coverImage->setPixmap( QPixmap() );
ui->seekSlider->setVisible( false );
m_sliderTimeLine.stop();
m_sliderTimeLine.setCurrentTime( 0 );
ui->stackedLayout->setCurrentWidget( ui->playPauseButton );
ui->loveButton->setEnabled( false );
ui->loveButton->setVisible( false );
/* m_pauseAction->setEnabled( false );
m_playAction->setEnabled( true ); */
}
void
AudioControls::onPlaybackTimer( qint64 msElapsed )
{
if ( m_currentTrack.isNull() )
//tDebug( LOGEXTRA ) << Q_FUNC_INFO << "msElapsed =" << msElapsed << "and timer current time =" << m_sliderTimeLine.currentTime() << "and m_seekMsecs =" << m_seekMsecs;
if ( msElapsed > 0 && msElapsed != m_lastSliderCheck && m_seekMsecs == -1 && msElapsed - 500 < m_lastSliderCheck )
return;
m_lastSliderCheck = msElapsed;
if ( m_currentTrack.isNull() )
{
m_sliderTimeLine.stop();
return;
}
ui->seekSlider->blockSignals( true );
if ( sender() != &m_phononTickCheckTimer )
m_phononTickCheckTimer.start( 1000 );
const int seconds = msElapsed / 1000;
ui->timeLabel->setText( TomahawkUtils::timeToString( seconds ) );
ui->timeLeftLabel->setText( "-" + TomahawkUtils::timeToString( m_currentTrack->duration() - seconds ) );
ui->seekSlider->setValue( msElapsed );
if ( m_noTimeChange )
{
if ( m_sliderTimeLine.currentTime() != msElapsed )
{
m_sliderTimeLine.setPaused( true );
m_noTimeChange = false;
m_sliderTimeLine.setCurrentTime( msElapsed );
m_seekMsecs = -1;
m_sliderTimeLine.resume();
}
}
else if ( m_sliderTimeLine.currentTime() >= msElapsed || m_seekMsecs != -1 )
{
m_sliderTimeLine.setPaused( true );
m_noTimeChange = false;
if ( m_sliderTimeLine.currentTime() == msElapsed )
m_noTimeChange = true;
m_sliderTimeLine.setCurrentTime( msElapsed );
m_seekMsecs = -1;
if ( AudioEngine::instance()->state() != AudioEngine::Paused && sender() != &m_phononTickCheckTimer )
m_sliderTimeLine.resume();
}
else if ( m_sliderTimeLine.duration() > msElapsed && m_sliderTimeLine.state() == QTimeLine::NotRunning && AudioEngine::instance()->state() == AudioEngine::Playing )
{
ui->seekSlider->setEnabled( AudioEngine::instance()->canSeek() );
m_sliderTimeLine.start();
}
else if ( m_sliderTimeLine.state() == QTimeLine::Paused && AudioEngine::instance()->state() != AudioEngine::Paused )
{
ui->seekSlider->setEnabled( AudioEngine::instance()->canSeek() );
m_sliderTimeLine.resume();
}
ui->seekSlider->blockSignals( false );
}
@@ -521,7 +538,7 @@ AudioControls::onTrackClicked()
void
AudioControls::dragEnterEvent( QDragEnterEvent* e )
{
if ( GlobalActionManager::instance()->acceptsMimeData( e->mimeData() ) )
if ( DropJob::acceptsMimeData( e->mimeData() ) )
e->acceptProposedAction();
}
@@ -538,10 +555,12 @@ void
AudioControls::dropEvent( QDropEvent* e )
{
tDebug() << "AudioControls got drop:" << e->mimeData()->formats();
if ( GlobalActionManager::instance()->acceptsMimeData( e->mimeData() ) )
if ( DropJob::acceptsMimeData( e->mimeData() ) )
{
connect( GlobalActionManager::instance(), SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( droppedTracks( QList<Tomahawk::query_ptr> ) ) );
GlobalActionManager::instance()->tracksFromMimeData( e->mimeData() );
DropJob *dj = new DropJob();
dj->setDropAction( DropJob::Append );
connect( dj, SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( droppedTracks( QList<Tomahawk::query_ptr> ) ) );
dj->tracksFromMimeData( e->mimeData() );
e->accept();
}
@@ -551,12 +570,10 @@ AudioControls::dropEvent( QDropEvent* e )
void
AudioControls::droppedTracks( QList< query_ptr > tracks )
{
disconnect( GlobalActionManager::instance(), SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( droppedTracks( QList<Tomahawk::query_ptr> ) ) );
if ( !tracks.isEmpty() )
{
// queue and play the first if nothign is playing
GlobalActionManager::instance()->handleOpenTrack( tracks.first() );
// queue and play the first no matter what
GlobalActionManager::instance()->handlePlayTrack( tracks.first() );
// just queue the rest
for ( int i = 1; i < tracks.size(); i++ )
@@ -570,30 +587,17 @@ AudioControls::droppedTracks( QList< query_ptr > tracks )
void
AudioControls::onLoveButtonClicked( bool checked )
{
Tomahawk::InfoSystem::InfoCriteriaHash trackInfo;
trackInfo["title"] = m_currentTrack->track();
trackInfo["artist"] = m_currentTrack->artist()->name();
trackInfo["album"] = m_currentTrack->album()->name();
if ( checked )
{
Tomahawk::InfoSystem::InfoSystem::instance()->pushInfo(
s_acInfoIdentifier, Tomahawk::InfoSystem::InfoLove,
QVariant::fromValue< Tomahawk::InfoSystem::InfoCriteriaHash >( trackInfo ) );
DatabaseCommand_SocialAction* cmd = new DatabaseCommand_SocialAction( m_currentTrack, QString( "Love" ), QString( "true") );
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>(cmd) );
ui->loveButton->setPixmap( RESPATH "images/loved.png" );
m_currentTrack->toQuery()->setLoved( true );
}
else
{
Tomahawk::InfoSystem::InfoSystem::instance()->pushInfo(
s_acInfoIdentifier, Tomahawk::InfoSystem::InfoUnLove,
QVariant::fromValue< Tomahawk::InfoSystem::InfoCriteriaHash >( trackInfo ) );
DatabaseCommand_SocialAction* cmd = new DatabaseCommand_SocialAction( m_currentTrack, QString( "Love" ), QString( "false" ) );
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>(cmd) );
ui->loveButton->setPixmap( RESPATH "images/not-loved.png" );
m_currentTrack->toQuery()->setLoved( false );
}
}

View File

@@ -19,15 +19,18 @@
#ifndef AUDIOCONTROLS_H
#define AUDIOCONTROLS_H
#include <QWidget>
#include <QtGui/QWidget>
#include <QtCore/QTimer>
#include <QtCore/QTimeLine>
#include "result.h"
#include "playlistinterface.h"
#include "infosystem/infosystem.h"
#include "query.h"
class QDropEvent;
class QDragEnterEvent;
class QDragMoveEvent;
namespace Ui
{
class AudioControls;
@@ -48,7 +51,7 @@ signals:
public slots:
void onRepeatModeChanged( Tomahawk::PlaylistInterface::RepeatMode mode );
void onShuffleModeChanged( bool enabled );
protected:
void changeEvent( QEvent* e );
void dragEnterEvent ( QDragEnterEvent* );
@@ -56,10 +59,13 @@ protected:
void dropEvent ( QDropEvent* );
private slots:
void phononTickCheckTimeout();
void onPlaybackStarted( const Tomahawk::result_ptr& result );
void onPlaybackLoading( const Tomahawk::result_ptr& result );
void onPlaybackPaused();
void onPlaybackResumed();
void onPlaybackSeeked( qint64 msec );
void onPlaybackStopped();
void onPlaybackTimer( qint64 msElapsed );
@@ -73,25 +79,29 @@ private slots:
void onTrackClicked();
void onLoveButtonClicked( bool );
void infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QVariant output );
void infoSystemFinished( QString target );
void onAlbumCoverUpdated();
void droppedTracks( QList<Tomahawk::query_ptr> );
void socialActionsLoaded();
private:
Ui::AudioControls *ui;
void onSocialActionsLoaded();
QAction* m_playAction;
QAction* m_pauseAction;
QAction* m_prevAction;
QAction* m_nextAction;
private:
void setAlbumCover();
void setSocialActions();
Ui::AudioControls *ui;
QPixmap m_defaultCover;
Tomahawk::result_ptr m_currentTrack;
Tomahawk::PlaylistInterface::RepeatMode m_repeatMode;
bool m_shuffled;
QTimer m_phononTickCheckTimer;
QTimeLine m_sliderTimeLine;
qint64 m_seekMsecs;
qint64 m_lastSliderCheck;
bool m_noTimeChange;
};
#endif // AUDIOCONTROLS_H

View File

@@ -28,9 +28,6 @@
<height>80</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="topMargin">
<number>0</number>
@@ -164,9 +161,6 @@
<height>58</height>
</size>
</property>
<property name="text">
<string>TextLabel</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
@@ -261,21 +255,56 @@
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="ImageButton" name="loveButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
<widget class="QLabel" name="ownerLabel">
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>love</string>
<string>Owner</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTop</set>
</property>
<property name="margin">
<number>0</number>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="socialLayout">
<item>
<spacer name="socialSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>1</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="ImageButton" name="loveButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="text">
<string>love</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
@@ -284,31 +313,13 @@
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>13</height>
<height>1</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="ownerLabel">
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>Owner</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<property name="margin">
<number>0</number>
</property>
</widget>
</item>
</layout>
</item>
<item>
@@ -334,10 +345,13 @@
<property name="text">
<string>Time</string>
</property>
<property name="alignment">
<set>Qt::AlignLeft|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QSlider" name="seekSlider">
<widget class="SeekSlider" name="seekSlider">
<property name="minimumSize">
<size>
<width>0</width>
@@ -360,6 +374,9 @@
<property name="text">
<string>Time Left</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
@@ -489,7 +506,7 @@
</widget>
</item>
<item>
<widget class="QSlider" name="volumeSlider">
<widget class="SeekSlider" name="volumeSlider">
<property name="minimumSize">
<size>
<width>0</width>
@@ -529,15 +546,20 @@
</layout>
</widget>
<customwidgets>
<customwidget>
<class>SeekSlider</class>
<extends>QSlider</extends>
<header location="global">widgets/SeekSlider.h</header>
</customwidget>
<customwidget>
<class>ImageButton</class>
<extends>QPushButton</extends>
<header>utils/imagebutton.h</header>
<header>widgets/imagebutton.h</header>
</customwidget>
<customwidget>
<class>QueryLabel</class>
<extends>QLabel</extends>
<header>utils/querylabel.h</header>
<header>widgets/querylabel.h</header>
</customwidget>
</customwidgets>
<resources/>

179
src/breakpad/BreakPad.cpp Normal file
View File

@@ -0,0 +1,179 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Tomahawk is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#include "BreakPad.h"
#include "config.h"
#include "utils/logger.h"
#include <QCoreApplication>
#include <QString>
#include <QFileInfo>
#include <string.h>
#define CRASH_REPORTER_BINARY "tomahawk_crash_reporter"
bool s_active = true;
#ifndef WIN32
#include <unistd.h>
static bool
LaunchUploader( const char* dump_dir, const char* minidump_id, void* that, bool succeeded )
{
// DON'T USE THE HEAP!!!
// So that indeed means, no QStrings, no qDebug(), no QAnything, seriously!
if ( !succeeded )
return false;
const char* crashReporter = static_cast<BreakPad*>(that)->crashReporter();
if ( !s_active || strlen( crashReporter ) == 0 )
return false;
pid_t pid = fork();
if ( pid == -1 ) // fork failed
return false;
if ( pid == 0 )
{
// we are the fork
execl( crashReporter,
crashReporter,
dump_dir,
minidump_id,
minidump_id,
(char*) 0 );
// execl replaces this process, so no more code will be executed
// unless it failed. If it failed, then we should return false.
printf( "Error: Can't launch CrashReporter!\n" );
return false;
}
// we called fork()
return true;
}
BreakPad::BreakPad( const QString& path, bool active )
#ifdef Q_OS_LINUX
: google_breakpad::ExceptionHandler( path.toStdString(), 0, LaunchUploader, this, true )
#else
: google_breakpad::ExceptionHandler( path.toStdString(), 0, LaunchUploader, this, true, 0 )
#endif
{
s_active = active;
QString reporter;
QString localReporter = QString( "%1/%2" ).arg( qApp->applicationDirPath() ).arg( CRASH_REPORTER_BINARY );
QString globalReporter = QString( "%1/%2" ).arg( CMAKE_INSTALL_FULL_LIBEXECDIR ).arg( CRASH_REPORTER_BINARY );
if ( QFileInfo( localReporter ).exists() )
reporter = localReporter;
else if ( QFileInfo( globalReporter ).exists() )
reporter = globalReporter;
else
tLog() << "Could not find \"" CRASH_REPORTER_BINARY "\" in \"" CMAKE_INSTALL_FULL_LIBEXECDIR "\" or application path";
char* creporter;
std::string sreporter = reporter.toStdString();
creporter = new char[ sreporter.size() + 1 ];
strcpy( creporter, sreporter.c_str() );
m_crashReporter = creporter;
}
#else
static bool
LaunchUploader( const wchar_t* dump_dir, const wchar_t* minidump_id, void* that, EXCEPTION_POINTERS *exinfo, MDRawAssertionInfo *assertion, bool succeeded )
{
if ( !succeeded )
return false;
// DON'T USE THE HEAP!!!
// So that indeed means, no QStrings, no qDebug(), no QAnything, seriously!
// broken in mingw, hardcode it for now
// const char* productName = static_cast<BreakPad*>(that)->productName();s
// convert productName to widechars, which sadly means the product name must be Latin1
wchar_t product_name[ 256 ] = L"tomahawk";;
// char* out = (char*)product_name;
// const char* in = productName - 1;
// do {
// *out++ = *++in; //latin1 chars fit in first byte of each wchar
// *out++ = '\0'; //every second byte is NULL
// }
// while (*in);
wchar_t command[MAX_PATH * 3 + 6];
wcscpy( command, CRASH_REPORTER_BINARY L" \"" );
wcscat( command, dump_dir );
wcscat( command, L"\" \"" );
wcscat( command, minidump_id );
wcscat( command, L"\" \"" );
wcscat( command, product_name );
wcscat( command, L"\"" );
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof( si ) );
si.cb = sizeof(si);
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_SHOWNORMAL;
ZeroMemory( &pi, sizeof(pi) );
if ( CreateProcess( NULL, command, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ) )
{
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
TerminateProcess( GetCurrentProcess(), 1 );
}
return false;
}
BreakPad::BreakPad( const QString& path, bool active )
: google_breakpad::ExceptionHandler( path.toStdWString(), 0, LaunchUploader, this, true )
{
s_active = active;
}
#endif // WIN32
void
BreakPad::setActive( bool enabled )
{
s_active = enabled;
}
bool
BreakPad::isActive()
{
return s_active;
}

Some files were not shown because too many files have changed in this diff Show More