1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-09-12 23:12:05 +02:00

Compare commits

...

679 Commits
0.1.0 ... 0.2.1

Author SHA1 Message Date
Christian Muehlhaeuser
b6fcae3a4a * Updated ChangeLog. 2011-08-16 02:44:46 +02:00
Christian Muehlhaeuser
2e2ff63a7a * Don't crash when encountering an unknown artist in a search. 2011-08-16 01:45:05 +02:00
Christian Muehlhaeuser
7b24444010 * Update to version 0.2.1. 2011-08-16 01:28:39 +02:00
Christian Muehlhaeuser
7c6304beea * Fixed Javascript resolvers not working / breaking Tomahawk. 2011-08-16 01:27:07 +02:00
Dominik Schmidt
2cd4d7a682 He iiis iiis ... release breaker.. iiis iis release breaker! 2011-08-15 23:54:29 +02:00
Christian Muehlhaeuser
1ff6cfa31f * This makes it official then: 0.2.0 is released. 2011-08-15 21:50:07 +02:00
Leo Franchi
cd8e187bfe paint album selection rect on windows 2011-08-15 14:00:55 -04:00
Christian Muehlhaeuser
33a3ec4c4c * Added logging to Servent. 2011-08-15 19:07:09 +02:00
Leo Franchi
f9c623d654 use correct servicetype in portforward delete as well as create 2011-08-15 11:02:21 -04:00
Leo Franchi
283a3bd216 oops, didn't mean to commit that 2011-08-15 01:47:29 -04:00
Leo Franchi
a8513d41ea Fix sparkle. Again. No, undefined macros are not fun when #ifed. 2011-08-15 01:45:42 -04:00
Leo Franchi
b8394003e8 draw selection rect in settings dialog on windows too. hope it looks okay... 2011-08-15 00:20:40 -04:00
Christian Muehlhaeuser
ae1095217c * Fixed header resizing issues, which were caused by varying column counts. 2011-08-15 04:59:55 +02:00
Leo Franchi
e159698bfd Use update.php instead of sparkle.xml to save stats 2011-08-14 22:40:30 -04:00
Leo Franchi
cd07bd4f71 Add system profiling 2011-08-14 22:26:25 -04:00
Leo Franchi
825903f294 Fix copying automatic playlists and stations 2011-08-14 22:23:14 -04:00
Christian Muehlhaeuser
a5596e0288 * ChangeLog cleanup. 2011-08-15 02:54:12 +02:00
Jason Herskowitz
53c9d0fcde Changelogging 2011-08-14 20:27:23 -04:00
Christian Muehlhaeuser
277c8c4275 Merge remote-tracking branch 'origin/async' 2011-08-15 02:01:34 +02:00
Christian Muehlhaeuser
3d28293250 * Set fixed widths for add / remove buttons in the settings dialog. 2011-08-15 01:55:41 +02:00
Leo Franchi
3df2c2a104 TWK-123: Re-resolve queries when their resolved-to result goes offline. 2011-08-14 18:39:04 -04:00
Christian Muehlhaeuser
65b2f42463 * Fixed TWK-386. Renamed Music to Collection in settings dialog. 2011-08-15 00:10:17 +02:00
Leo Franchi
0e7fae2b5a Tighten up margins in diagnostics dialog 2011-08-14 17:54:16 -04:00
Leo Franchi
afbe74bc13 Add Michael Zanetti to Thanks To... 2011-08-14 17:49:38 -04:00
Leo Franchi
ae32b0b368 TWK-216: reset the proper view mode toggle when changing to a different view mode automatically 2011-08-14 17:44:43 -04:00
Leo Franchi
7d2c284a3e Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-08-14 17:16:02 -04:00
Leo Franchi
198ad22f09 Fix strange padding due to QPushButton incorrect layouting rect on OS X 2011-08-14 17:15:46 -04:00
Leo Franchi
f9af1e0520 Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-08-14 16:39:27 -04:00
Michael Zanetti
f2e76803cc fixed offset issue with icons in settings list 2011-08-14 22:37:55 +02:00
Leo Franchi
a11ec10748 Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-08-14 15:32:37 -04:00
Leo Franchi
a887232fff Fix some margins and fonts on settings dialog 2011-08-14 15:29:07 -04:00
Jason Herskowitz
7e249b91d8 Make dashboard.png not be huge 2011-08-14 15:01:34 -04:00
Leo Franchi
83b3758a25 Change New Additions page to fit other pages more, with title and description and icon. 2011-08-14 14:38:44 -04:00
Leo Franchi
9313de5b17 Show treeview in artistinfowidget with only one column 2011-08-14 14:27:44 -04:00
Leo Franchi
99a298edb5 Manually encode "'" as %27 for QUrls which is legal and makes more apps happy 2011-08-14 14:17:06 -04:00
Leo Franchi
65405682aa Elide description label for long playlist names force window resizes 2011-08-14 14:04:23 -04:00
Leo Franchi
d32e177583 local results should only load social actions by the local source 2011-08-14 13:50:27 -04:00
Dominik Schmidt
4db7228d0c Add async api for returning results in a qtscriptresolver 2011-08-14 16:42:21 +02:00
Jason Herskowitz
56ddbfe93d Make dashboard icon more white like other icons 2011-08-14 10:37:11 -04:00
Dominik Schmidt
4f24e9c5f8 Add some aliases to tomahawk.js 2011-08-14 14:37:16 +02:00
Dominik Schmidt
9b7db84a9e Move result parsing in qtscriptresolver to a method 2011-08-14 14:32:59 +02:00
Dominik Schmidt
e7aa846a0f Remove all references to installer revision 2011-08-14 14:29:55 +02:00
Alejandro Wainzinger
0aa07d62fd Wait for script QProcess to properly exit. 2011-08-14 13:30:22 +02:00
Christian Muehlhaeuser
5449154ee9 * Fixed and cleaned up Logger class. 2011-08-14 08:19:48 +02:00
Christian Muehlhaeuser
2dc94021e2 * You can't expand anything in the track view of the album page. 2011-08-14 06:41:47 +02:00
Christian Muehlhaeuser
33a237086c * Fixed queue button flickering. Much smoother animation. QSplitter, I'll meet you in hell. 2011-08-14 06:29:07 +02:00
Christian Muehlhaeuser
aff34a9dc5 * Removed debugging utility. 2011-08-14 06:19:25 +02:00
Christian Muehlhaeuser
15f5212fa0 * Fixed TWK-375: TreeItemDelegate's painting for tracks was broken. 2011-08-14 04:54:45 +02:00
Christian Muehlhaeuser
add8515111 * Fixed wording on album page. 2011-08-14 04:28:03 +02:00
Christian Muehlhaeuser
37367bc5da * Further cleanups and fixed QPixmap warning: We need to store Source's QPixmaps as pointers, since a Source is being constructed in a thread. 2011-08-14 04:13:38 +02:00
Christian Muehlhaeuser
9ec9901e14 * Remove WebCollection altogether. We've established it's not quite gonna work out that way. 2011-08-14 03:28:35 +02:00
Christian Muehlhaeuser
1fb0af1d97 * Don't initialise a WebCollection. 2011-08-14 03:23:12 +02:00
Christian Muehlhaeuser
989243914c * Fixed queue not allowing to remove items from it. 2011-08-14 03:14:39 +02:00
Dominik Schmidt
7d8e29a932 Removed revision.txt. No warranty, I'm drnuk 2011-08-14 02:47:45 +02:00
Christian Muehlhaeuser
001c42f19f * Removed obsolete tomahawk.nsi. 2011-08-14 02:29:53 +02:00
Dominik Schmidt
d871762897 Remove another obsoleted file 2011-08-14 02:20:20 +02:00
Christian Muehlhaeuser
c5bfb4827d * Removed obsolete files. 2011-08-14 01:46:47 +02:00
Christian Muehlhaeuser
6dd1952ad3 * Fixed TWK-373: Auto-load covers, without waiting for the scrollbar to be triggered. 2011-08-14 01:33:12 +02:00
Christian Muehlhaeuser
28e18b66a6 * Fixed TWK-366: Don't accept drops unless we are using a backing playlist. 2011-08-14 01:25:54 +02:00
Christian Muehlhaeuser
99c61d1731 * Removed debug. 2011-08-14 00:54:56 +02:00
Christian Muehlhaeuser
65835fc2b2 * Fixed cut-off text in WelcomeWidget on non-OSX. 2011-08-14 00:54:56 +02:00
Leo Franchi
4732db07d1 draw a border on osx around album covers as there's no selection background 2011-08-13 18:39:03 -04:00
Leo Franchi
67763df201 use a grey instead of blue for osx selection rect 2011-08-13 17:20:05 -04:00
Leo Franchi
1ef2be9f3c Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-08-13 17:13:30 -04:00
Leo Franchi
3b148c66ad Paint a selection rect around items in the config dialog on osx 2011-08-13 17:13:05 -04:00
Dominik Schmidt
968bee2a62 Gooooood mooooorniiiing, viiieeetnaaam! 2011-08-13 23:00:00 +02:00
Christian Muehlhaeuser
a7a4b97df8 * Fixed TWK-362: Only display other albums on album page. 2011-08-13 22:56:51 +02:00
Dominik Schmidt
999b9bae22 Restructure version string generation 2011-08-13 22:42:08 +02:00
Dominik Schmidt
e6bb2877ee Fix building installers for windows 2011-08-13 22:18:44 +02:00
Leo Franchi
e367e49039 Remove assertion---happens easily on shutdown if you quit too early while tomahawk is loading, and i've never seen it otherwise. 2011-08-13 16:08:27 -04:00
Dominik Schmidt
47a92664df Recover from apachalogger's "fixes" :P 2011-08-13 21:51:31 +02:00
Leo Franchi
29b0b4e431 Draw whole row background on osx 2011-08-13 15:15:50 -04:00
Leo Franchi
9ca97d2e1a Paint proper text color in tree item delegate 2011-08-13 14:57:03 -04:00
Leo Franchi
50267afe06 Fix cutting off playlistview column in short with avatar mode 2011-08-13 10:14:20 -04:00
Christian Muehlhaeuser
3766edcc43 * Cleaned up tomahawkapp.cpp. 2011-08-13 07:28:15 +02:00
Christian Muehlhaeuser
51b39b5302 * Source & warning cleanup. 2011-08-13 07:25:58 +02:00
Christian Muehlhaeuser
35fdb26b77 * Confusing. It was just working a second ago. 2011-08-13 06:04:43 +02:00
Christian Muehlhaeuser
74d52e3208 * Fixed cross compiling with MinGW. 2011-08-13 05:58:05 +02:00
Christian Muehlhaeuser
db4437cf62 * Fixed adding tracks to the top-level in TreeModel. 2011-08-13 05:37:30 +02:00
Christian Muehlhaeuser
b766f6808f * Fix cross compiling with MinGW and try to unbreak the MainWindow a bit more. 2011-08-13 04:49:09 +02:00
Christian Muehlhaeuser
dce31156db * Another attempt. 2011-08-13 04:46:56 +02:00
Christian Muehlhaeuser
637ec28ab1 * Try to fix ViewManager, too. 2011-08-13 04:38:08 +02:00
Christian Muehlhaeuser
f15dd8153f * Try to fix OS X painting glitch. 2011-08-13 04:23:37 +02:00
Christian Muehlhaeuser
aa68229ac6 * Fixed TWK-107: paint dividers between toolbar, central widget and status bar. 2011-08-13 04:16:04 +02:00
Michael Zanetti
5e6751dc64 merge lfranchi's commit 2011-08-13 04:07:29 +02:00
Michael Zanetti
aff075f2ad added --help command line option 2011-08-13 03:23:00 +02:00
Michael Zanetti
7baf43e3d7 shrink font in newplaylistwidget und allow wordwrap for the text 2011-08-12 22:38:03 +02:00
Leo Franchi
b43fe66409 Hide header for track list in welcome widget 2011-08-12 15:34:21 -04:00
Leo Franchi
809d1139d4 Never sh ow horiz scrollbar in welcomewidget trackview 2011-08-12 15:13:03 -04:00
Jason Herskowitz
009be45dc3 Cha-cha-cha-changelog 2011-08-12 14:51:59 -04:00
Leo Franchi
7d90bc7426 support rd.io shortened links too 2011-08-12 13:04:12 -04:00
Leo Franchi
bb0e7e7631 changelog 2011-08-12 12:52:13 -04:00
Leo Franchi
01c5012028 use artist-description radio instead of song-radio when no artist/song elements are present. fixes TWK-355 2011-08-12 12:50:49 -04:00
Leo Franchi
b9f7bf2656 misc avatar and welcome widget work 2011-08-12 12:30:33 -04:00
Jason Herskowitz
70b0203acd More changelogging. 2011-08-12 09:27:40 -04:00
Dominik Schmidt
1245ae7ac2 Fix linking against QtUiTools on windows 2011-08-12 15:22:06 +02:00
Christian Muehlhaeuser
eda6f8ff8f * We're officially 0.2.0 (rc1) now. 2011-08-12 15:11:34 +02:00
Leo Franchi
4bef594b53 actually fix things :) 2011-08-12 09:11:05 -04:00
Leo Franchi
a72ef2bf6e qt.conf, not info.plist 2011-08-12 09:06:53 -04:00
Harald Sitter
1d6697f11d use cmake_module_path for includes of cmakemodules 2011-08-12 14:25:42 +02:00
Dominik Schmidt
6be91dd558 Fix cross-compilation in cmake 2.8.5 2011-08-12 14:05:47 +02:00
Dominik Schmidt
dc34262445 Hopefully fix AddAppIconMacro inclusion problems for everyone 2011-08-12 13:59:43 +02:00
Leo Franchi
bb1a06a636 mac-specific tweaks 2011-08-12 00:18:38 -04:00
Leo Franchi
1fa1ed42e9 Paint a nicer playlist delegate, and number count backdrop 2011-08-12 00:10:31 -04:00
Christian Muehlhaeuser
fe15fcd1f5 * Remove obsolete method. 2011-08-12 04:18:51 +02:00
Dominik Schmidt
7169aa352e cmake: check for QtWebkit 2011-08-12 04:01:39 +02:00
Dominik Schmidt
4da0b72ded cmake: check for boost 2011-08-12 03:56:30 +02:00
Leo Franchi
7a4a2f5b70 didn't mean to commit that change, doing a partial update of the playlist delegate isn't great 2011-08-11 21:26:05 -04:00
Christian Muehlhaeuser
744f31bb45 Added almost-finished AlbumInfoWidget. 2011-08-12 03:23:46 +02:00
Christian Muehlhaeuser
53f812ed42 * Used tLog() instead of qDebug() for jabber errors. 2011-08-12 03:23:46 +02:00
Leo Franchi
91525bf5d9 reload top loved tracks playlist with love by local source as well 2011-08-11 21:19:57 -04:00
Leo Franchi
595d0cf987 Update playlists when revision info comes in 2011-08-11 21:11:59 -04:00
Leo Franchi
78d867b16f add rdio link parsing 2011-08-11 20:37:17 -04:00
Leo Franchi
2a061b5bf1 change Recently Played for super collection to Dashboard 2011-08-11 18:37:31 -04:00
Leo Franchi
11f7f4a25e re-enable avatars in recently played tracks list, as per TWK-346 2011-08-11 18:24:39 -04:00
Leo Franchi
a9c0d5f820 only show infinity icon for stations, not auto playlists 2011-08-11 18:10:55 -04:00
Leo Franchi
c99fff2b16 Polish up the playlist widget a whole bunch. TWK-348 2011-08-11 18:06:48 -04:00
Michael Zanetti
eda5893012 removed unused function 2011-08-11 23:59:11 +02:00
Michael Zanetti
0e6c79b921 auto-expand the local collections on startup 2011-08-11 23:51:56 +02:00
Christian Muehlhaeuser
c8ba2ee171 Revert "Use 512x512 icon on osx as lion has bigger icon previews"
This reverts commit b7649a3281.
2011-08-11 22:27:31 +02:00
Leo Franchi
206c212767 Don't install Info.plist at cmake time, as it is only valid for releases 2011-08-11 16:07:12 -04:00
Leo Franchi
b0d01ec0fb Add a new macdeploy.py script that intelligently handles osx bundling
Add sip plugins and spotify

Remove old scripts and update build-release-osx.sh to use new macdeploy

Remove old files
2011-08-11 14:40:12 -04:00
Christian Muehlhaeuser
d7100c0e8e * Generally prioritize resolving newer queries to make the GUI feel more responsive. 2011-08-11 18:10:06 +02:00
Christian Muehlhaeuser
6d82ae0c4d * Don't try to resolve search queries when appending them to the SearchWidget's TrackModel. 2011-08-11 15:48:27 +02:00
Jason Herskowitz
649d30e11b Add album art drop shadow. Take 1. 2011-08-11 09:15:07 -04:00
Jason Herskowitz
f36cf0e5fa Make light gray on track placeholder icon match the gray used on album placeholder image. 2011-08-11 08:19:49 -04:00
Christian Muehlhaeuser
e0b406e7ef * Fixed TWK-325: Show a spinner animation while searching for tracks. 2011-08-11 13:58:22 +02:00
Leo Franchi
ca65bb2ccc Don't disable play/pause ever now that we have a stacked layout 2011-08-10 23:17:32 -04:00
Leo Franchi
3a890ee929 Use QStackedLayout instead of show/hide for play/pause widget. Fixes flicker. Extra 2px of spacing i can't get rid of... will work harder. TWK-128 2011-08-10 22:52:50 -04:00
Leo Franchi
c7333a2f1f Merge branch 'leo-test' 2011-08-10 22:51:52 -04:00
Christian Muehlhaeuser
0dd29ffa3d * Use track-placeholder.png in the PlaylistItemDelegate. 2011-08-11 02:48:28 +02:00
Christian Muehlhaeuser
503de73c7f * Use smaller fonts for PipelineStatus- & TransferView. 2011-08-11 02:40:08 +02:00
Christian Muehlhaeuser
5377ff718d Merge pull request #33 from Horrendus/patch-1
Corrected the Path for Jreen
2011-08-10 16:55:04 -07:00
Stefan Derkits
caef0ccdbd Corrected the Path for Jreen 2011-08-11 02:54:32 +03:00
Christian Muehlhaeuser
9e901dba2d * Disable horizontal scrollbars in TransferView. 2011-08-11 01:51:25 +02:00
Christian Muehlhaeuser
291035db9c * Fixed TWK-343, wording in SourceInfoWidget. 2011-08-11 01:30:09 +02:00
Christian Muehlhaeuser
a065480f75 * Let headless users trigger a rescan with --filescan. 2011-08-11 00:57:33 +02:00
Michael Zanetti
3fa64c76ee make use of the avatar frame in recently played 2011-08-11 00:14:20 +02:00
Jason Herskowitz
554a688077 Add track placeholder image for artist pages (Top Hits) and New Additions pages (Latest Additions). 2011-08-10 16:56:02 -04:00
Jason Herskowitz
c1f043d2d1 Mo' better avatar frame 2011-08-10 16:20:50 -04:00
Michael Zanetti
bc3662a997 added the avatar frame also to the Collection and SuperCollection icons
BUG: TWK-337
2011-08-10 17:23:02 +02:00
Michael Zanetti
d3ab32d06a changed color of score bars to match the rest of the color palette
BUG-252
2011-08-10 17:23:02 +02:00
Leo Franchi
c36373569a Check for KDE4 dev headers, in order for sip icons to show up in delegate. No, I don't have any clue why this fixes it. Stop asking. Go Away. 2011-08-09 22:46:50 -04:00
Michael Zanetti
3dbc426954 fixed the off-by-one issue with avatar frames 2011-08-10 04:10:16 +02:00
Jason Herskowitz
4415aa59f8 Make 32px image actually be 32px 2011-08-09 21:55:31 -04:00
Christian Muehlhaeuser
6fdec28f50 * Silly whitespace fixes. 2011-08-10 03:47:46 +02:00
Christian Muehlhaeuser
ef2514e95c * Added convenient new Album::get method. 2011-08-10 03:47:46 +02:00
Michael Zanetti
27480f8cdb added SettingsListDelegate to center the items in SettingsDialogList
BUG: 314
2011-08-10 03:41:02 +02:00
Jason Herskowitz
fbcfb552ad Make inner square of frame a square instead of a rectangle so the image doesn't look off-center. 2011-08-09 21:16:50 -04:00
Michael Zanetti
25012ecc26 changed slider button stylesheets to allow moving them to the end
BUG: TWK-289
2011-08-10 00:14:03 +02:00
Michael Zanetti
c29ce585a5 Added a frame to the avatars as requested in bug TWK-106.
The frame image must be in displayed size and the avatar takes 80% of the available space centered.
2011-08-10 00:14:03 +02:00
Leo Franchi
3af34a8581 Only show loved tracks (not loved or unloved) in playlist. Update existing social action instead of duplicating it.. 2011-08-09 10:48:26 -04:00
Leo Franchi
9ec284bfa5 Merge branch 'master' into leo-test
Conflicts:
	src/libtomahawk/playlist/dynamic/DynamicPlaylist.h
	src/libtomahawk/widgets/welcomeplaylistmodel.cpp
2011-08-09 07:26:26 -04:00
Leo Franchi
585bfcdc49 debug-- 2011-08-09 07:12:55 -04:00
Leo Franchi
339710c86a Find playlist/dynplaylist item to activate if opened from non-sidebar. TWK-300. Ugh. 2011-08-08 23:24:24 -04:00
Christian Muehlhaeuser
fc43a6a851 * Hide the last.fm test button on OS X - for the 0.2 release. 2011-08-09 03:41:06 +02:00
Christian Muehlhaeuser
4b2c6e8d89 * 50 fps is enough for our AnimatedSplitter animation. 2011-08-09 03:36:16 +02:00
Christian Muehlhaeuser
6cba708640 * BUG: TWK-312 - Fixed AnimatedSplitter cutting off child widgets. 2011-08-09 03:21:55 +02:00
Dominik Schmidt
a46aadd843 Use filter.png for the filter in the topbar 2011-08-09 03:20:54 +02:00
Leo Franchi
d7dd3292ff be safer and don't crash. TWK-333 2011-08-08 21:07:49 -04:00
Dominik Schmidt
6b62265708 Show what you've actually searched for in the sidebar 2011-08-09 02:52:01 +02:00
Christian Muehlhaeuser
304981c28b * We should still remove the query from the pending list in Pipeline. 2011-08-09 02:00:03 +02:00
Dominik Schmidt
ba0c21e111 Show tomahawk version in the diagnostics dialog 2011-08-09 01:48:20 +02:00
Christian Muehlhaeuser
023be21950 * Fixed the preemptive onResolvingFinished() call triggered by the Pipeline. Fixes stations, I bet. 2011-08-09 00:54:56 +02:00
Michael Zanetti
fb95568196 Start playing on ENTER in artistview
BUG: TWK-204
2011-08-09 00:45:37 +02:00
Christian Muehlhaeuser
d9a4b718ed * Use setPixelSize instead of setPointSize. Should fix HeaderLabel weirdness on some systems. 2011-08-08 21:55:39 +02:00
Christian Muehlhaeuser
72add01e66 * Prevent multiple resolvingFinished() signals being emitted from Query. 2011-08-08 21:32:54 +02:00
Dominik Schmidt
f05c58150e Fix FindPhonon.cmake to respect find_version 2011-08-08 14:54:54 +02:00
Dominik Schmidt
7dc1e94ae6 Fix FindCLucene.cmake to respect find_version 2011-08-08 14:53:35 +02:00
Dominik Schmidt
8e07eb5c55 Use macro_optional_find_package everywhere. FindPhonon needs to be fixed
to respect the version number.
2011-08-08 14:08:17 +02:00
Leo Franchi
44aa85b51e support spotifyURL and spotifyURI in track/open, track/queue, and track/play links 2011-08-07 17:43:48 -04:00
Jason Herskowitz
dcf1ebb70f Don't forget one of the drag indicator icon sizes (22x22) 2011-08-07 17:37:27 -04:00
Leo Franchi
0865741733 Don't draw white text on light background 2011-08-07 17:09:18 -04:00
Leo Franchi
58c18acd01 Load automatic playlists and stations in Newest Stations and Playlists list... 2011-08-07 17:09:18 -04:00
Leo Franchi
4630b238bf Merge branch 'master' into leo-test
Conflicts:
	src/audiocontrols.cpp
2011-08-07 17:00:16 -04:00
Jason Herskowitz
f3dc1a0800 Trying some new matching icons for the drag indictors for songs 2011-08-07 16:44:57 -04:00
Leo Franchi
7df6e8c153 use avatar icon in recently played tracks for not-found avatars 2011-08-07 12:41:29 -04:00
Leo Franchi
566880365a Better copy for loved tracks playlist, and show all without limit. 2011-08-07 12:41:29 -04:00
Dominik Schmidt
dd54736e76 Unbreak clang compilation. 2011-08-07 15:56:06 +02:00
Leo Franchi
2c8fac1f8c Actually draw speaker icon in playlist delegate. I'm assuming this was a typo... 2011-08-06 23:59:41 -04:00
Leo Franchi
ce4328c0c3 Hide headers for related artists treeview in artistinfowidget. Don't ask my why it has to happen when it's already displayed.
Fixes TWK-310
2011-08-06 23:34:14 -04:00
Leo Franchi
c6a65a5ba4 Use a lighter color on os x as highlight color for score bar is way too bright. 2011-08-06 20:41:21 -04:00
Leo Franchi
8230e8bfac Asynchronously update on social action loading so loved tracks show up loaded 2011-08-06 18:30:17 -04:00
Leo Franchi
23ea7537e6 Report social action changes and refresh loved playlists 2011-08-06 18:06:21 -04:00
Leo Franchi
b9733249ee Sort by time and show source's own loved tracks 2011-08-06 17:24:05 -04:00
Leo Franchi
ffd5a2f81e Ooops, use true not 1 2011-08-06 16:58:07 -04:00
Leo Franchi
eefc6fd5da OSX Compile 2011-08-06 16:21:01 -04:00
Leo Franchi
d69b10c148 Merge branch 'databasegenerator' 2011-08-06 14:41:59 -04:00
Leo Franchi
9fbbcb6b53 Hide generator combobox until we have more than one generator 2011-08-06 14:41:47 -04:00
Leo Franchi
c6eee1324b Paint dynamic controls the same hue as overlay widget. TWK-309 2011-08-06 14:41:47 -04:00
Leo Franchi
b960be9d97 Get top 60 loved tracks, not 30 2011-08-06 14:41:35 -04:00
Leo Franchi
cdfd6a3464 dd proper loved tracks queries 2011-08-06 14:35:51 -04:00
Leo Franchi
4cfd039c40 social action stuff 2011-08-06 12:40:29 -04:00
Frank Osterfeld
8e4ea5e88f Link on OS X 2011-08-06 18:28:55 +02:00
Jason Herskowitz
76fbe88e95 More changelogging 2011-08-05 17:47:27 -04:00
Leo Franchi
1759d1ea19 Add a loved tracks playlist, and aggregate loved tracks playlist, minus the actual valid tracks 2011-08-05 17:17:28 -04:00
Leo Franchi
703823f553 fix up some copyrights from muesli's script 2011-08-05 16:05:53 -04:00
Leo Franchi
aeb949aa23 Fix merge 2011-08-05 15:39:04 -04:00
Leo Franchi
b15d3162de Merge branch 'master' into databasegenerator
Conflicts:
	src/libtomahawk/CMakeLists.txt
	src/libtomahawk/globalactionmanager.cpp
2011-08-05 15:38:26 -04:00
Leo Franchi
b2deebe0c2 Hide generator combobox until we have more than one generator 2011-08-05 15:36:04 -04:00
Leo Franchi
5d5b5fa3af Paint dynamic controls the same hue as overlay widget. TWK-309 2011-08-05 14:55:39 -04:00
Leo Franchi
f151b59431 Show search and artist pages as temporary pages in sidebar
Remove margins and spacing from searchwidget
Remove "Cancel" button as no other view pages have cancel buttons, and we can't delete a page if we show it as a temporary page anymore
2011-08-05 14:36:52 -04:00
Leo Franchi
c7c12eef93 Show drop indicator after last track if it's dropped below 2011-08-05 14:22:34 -04:00
Leo Franchi
b67623e649 Don't redefine signals 2011-08-05 14:14:59 -04:00
Leo Franchi
8834bf81fa save styles/moods to file, instead of loading on demand sillyness. Fixes TWK-308 2011-08-05 14:06:39 -04:00
Leo Franchi
0877b17a58 Handle multiply-shortened urls. 2011-08-05 12:46:37 -04:00
Leo Franchi
7df1f7a8b8 Expand bit.ly, t.co, and j.mp links to spotify tracks 2011-08-05 12:38:16 -04:00
Leo Franchi
453bf6206c Only accept spotify tracks by default 2011-08-05 12:00:57 -04:00
Leo Franchi
4d31eac5f6 Emit trackCountChanged when dropping tracks in a playlist. Handle Qt/Mac bug where drops from outside the app are Qt::MoveAction not Qt::CopyAction 2011-08-05 11:57:42 -04:00
Leo Franchi
7feb9d5249 Draw proper drop index, since on some platforms (OS X :( ) visualRect() and indexAt() aren't commutative... 2011-08-05 11:46:18 -04:00
Alejandro Wainzinger
0c4746430b Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-08-05 17:33:22 +02:00
Alejandro Wainzinger
ec02854490 Do not backwards the signals connect for next/previous.
* Fixed TWK-313 - fix signal/slot connection for next/previous actionmenu items.
2011-08-05 17:31:31 +02:00
Leo Franchi
ae48c151d0 Show indicator on osx too. NO CLUE why this fixes it.. 2011-08-05 11:21:26 -04:00
Leo Franchi
57dfd6b4b2 Set drop rect from left edge to right edge always, don't rely on QAIV for native drag-drops 2011-08-05 11:14:08 -04:00
Leo Franchi
0e2dd37559 allow dropping onto AudioControls to start playing 2011-08-05 10:39:08 -04:00
Leo Franchi
98030c9b05 Merge branch 'dragndrop' 2011-08-05 07:57:26 -04:00
Leo Franchi
89cec23815 On OS X drops from outside the apps are Qt::MoveActions.... 2011-08-05 07:53:30 -04:00
Dominik Schmidt
e476251c5e Remove ugly dash from rc version 2011-08-05 02:56:57 +02:00
Leo Franchi
4a3bca9bf4 Factor out dragndrop support across tomahawk into GlobalActionManager, add spotify support 2011-08-04 19:01:41 -04:00
Jason Herskowitz
0ad60299ef Cleaned up formatting a bit. 2011-08-04 18:29:59 -03:00
Jason Herskowitz
1d13bc2e40 Stop repeating myself in changelog 2011-08-04 15:30:55 -04:00
Jason Herskowitz
04bff62705 Couple of edits to changelog. Added desktop notifications (linux) and removed libpng entry. 2011-08-04 15:26:44 -04:00
Jason Herskowitz
e4893be501 More changelogifying. Take a look and see if I missed anything or added too much. 2011-08-04 15:23:12 -04:00
Jason Herskowitz
fe762d4fc5 Changelogifying 2011-08-04 14:35:31 -03:00
Jason Herskowitz
dbb7c64807 de-biggified the info.png icon by adding padding to image 2011-08-04 10:12:15 -04:00
Jason Herskowitz
2fdab5c9a1 New 16x16 info.png. May play around with different icons, but scales well now. 2011-08-04 07:51:24 -04:00
Christian Muehlhaeuser
18628defa4 * Fixed info.png's size. 2011-08-04 06:34:36 +02:00
Christian Muehlhaeuser
4a34b97e8c * This should fix the Windows local file playback issues. 2011-08-04 06:11:14 +02:00
Leo Franchi
9d88c9a0f7 Add support for JSPF playlists, remote and local. TWK-303 2011-08-03 23:35:10 -04:00
Leo Franchi
a9111267e8 Merge branch 'master' into databasegenerator
Conflicts:
	src/libtomahawk/CMakeLists.txt
	src/libtomahawk/database/databasecommand_createplaylist.cpp
	src/libtomahawk/playlist/dynamic/DynamicPlaylist.h
2011-08-03 23:31:25 -04:00
Leo Franchi
d3eb8df91a Add support for JSPF playlists, remote and local 2011-08-03 23:26:24 -04:00
Christian Muehlhaeuser
f010736e0d * Call setVisible on the lineEdit... just to be sure. 2011-08-04 05:24:46 +02:00
Christian Muehlhaeuser
9a1ac2f505 * Ignore empty searches. 2011-08-04 05:21:33 +02:00
Christian Muehlhaeuser
8c3ea50301 * Added native MacLineEdit widget and used it in TomahawkWindow's toolbar. 2011-08-04 05:11:12 +02:00
Leo Franchi
5fd8e2181d support playing spotify track urls (http://open.spotify.com or spotify:track). No drag-n-drop yet. 2011-08-03 18:06:49 -04:00
Christian Muehlhaeuser
92efd0da7f * Hopefully fixes the file:// issues on Windows. 2011-08-03 23:47:02 +02:00
Leo Franchi
326b75aefe Don't crash if user rapidly regenerates automatic playlists 2011-08-03 16:58:24 -04:00
Christian Muehlhaeuser
5e4b5fa0d0 * Fixed race condition in AudioEngine. 2011-08-03 16:45:41 +02:00
Leo Franchi
8f4ea6d95d Crash less 2011-08-03 10:44:14 -04:00
Christian Muehlhaeuser
d803a36915 * Possible fix for windows filename issues. 2011-08-03 15:33:21 +02:00
Leo Franchi
12f6d1f780 Always trigger sync for local playlist creation 2011-08-02 23:28:51 -04:00
Leo Franchi
5c58bc1d58 Be safer when deleting playlist category items, this might fix some weirdness 2011-08-02 23:28:51 -04:00
Jason Herskowitz
ae66fb8c5c Add share icon to use for tweet/post action 2011-08-02 21:52:14 -04:00
Jason Herskowitz
4a93bb97fc Adding an icon for 'filter' so we don't have to use the same magnifying glass we use for search 2011-08-01 21:36:00 -04:00
Jeff Mitchell
35c3eedd93 Some Changelogifying. 2011-08-01 12:35:44 -04:00
Leo Franchi
ea69fe158a be careful 2011-08-01 11:39:03 -04:00
Christian Muehlhaeuser
de508c049b * A few more improvements to TrackView & PlaylistItemDelegate. 2011-08-01 09:51:24 +02:00
Christian Muehlhaeuser
cf56819b0c * Lower the FuncTimeouts again. I can't reproduce any issues here. 2011-08-01 09:38:49 +02:00
Christian Muehlhaeuser
2f7d13588f * Slightly improved flat-view's painting speed. 2011-08-01 09:32:08 +02:00
Christian Muehlhaeuser
7b2189cd6f * Disable mimetype checking for now. 2011-08-01 05:57:51 +02:00
Christian Muehlhaeuser
37e77f4fd7 * Removed InfoBar from welcome page. 2011-08-01 04:52:58 +02:00
Christian Muehlhaeuser
7ee6db41d6 * Ignore results with unsupported mimetypes. 2011-08-01 04:47:28 +02:00
Christian Muehlhaeuser
a8e72c3b26 * Never elide caption in InfoBar to avoid silly eliding problems. 2011-08-01 04:24:46 +02:00
Christian Muehlhaeuser
a41e84ae78 * Try to fix AnimatedSplitter. 2011-08-01 04:04:13 +02:00
Jason Herskowitz
bf37bad98a Another try on info.png 2011-07-31 21:47:18 -04:00
Christian Muehlhaeuser
374e6a0983 * Use info.png for contextual links. 2011-08-01 03:15:49 +02:00
Christian Muehlhaeuser
c06b5ea2f6 * Always wait for DatabaseResolvers to finish before shunting queries. 2011-08-01 02:37:55 +02:00
Christian Muehlhaeuser
243997b06e * Use new default artist placeholder image. 2011-08-01 02:27:12 +02:00
Christian Muehlhaeuser
d0858efd7d * Fixed warnings and removed weird margin on ArtistInfoWidget. 2011-08-01 02:20:46 +02:00
Leo Franchi
7ea0de753e remove empty Playlists or Stations entry if all are deleted from peers 2011-07-31 19:46:24 -04:00
Leo Franchi
432d6af37c Delete playlists from peers in the UI as well 2011-07-31 19:41:06 -04:00
Leo Franchi
e1943e6f64 Queue too-fast revision changes and replay them in order to avoid crashes while fast editing 2011-07-31 19:30:45 -04:00
Leo Franchi
e3dddea777 Fix external resolvers that depend on setup message 2011-07-31 13:16:10 -04:00
Leo Franchi
3e1d58463d Change Search to Filter in filter line edit for collections 2011-07-31 12:39:11 -04:00
Leo Franchi
8e51953427 Switch to using direct GenericSelect command 2011-07-31 11:44:23 -04:00
Leo Franchi
91bdfec734 Limit results to what was asked for 2011-07-30 17:16:56 -04:00
Leo Franchi
808901d192 Merge branch 'master' into databasegenerator 2011-07-30 17:06:06 -04:00
Leo Franchi
ce60c173b7 Add support for track, artist, and album generic queries 2011-07-30 17:05:01 -04:00
Leo Franchi
9c36b32e8e add migrate script 2011-07-30 16:13:29 -04:00
Leo Franchi
c76fabbc2b Create and load database-backed special dynamic playlists, and fix some debugs and stuff 2011-07-30 15:35:32 -04:00
Jeff Mitchell
75596c6744 Add initial configuration message support to external resolvers, send proxy info 2011-07-30 14:36:03 -04:00
Leo Franchi
ca467fb5bc Add support for non-autoloaded dynamic playlists that can be used for custom displays
Add a SocialPlaylistWidget that will display some cool social stats and lists, but none right now
2011-07-29 14:06:44 -04:00
Leo Franchi
9120f6436c Scroll per pixel on osx since that's how other apps do it, feels more natural with a trackpad 2011-07-28 16:18:19 -04:00
Leo Franchi
b7649a3281 Use 512x512 icon on osx as lion has bigger icon previews 2011-07-27 08:46:11 -04:00
Thierry Goeckel
10ec1f4f89 Correct minor mistakes according online lint. 2011-07-26 20:20:35 +02:00
Leo Franchi
9fdddbf04e Slow down pipeline a bit to fix spotify resolver; need to talk to chris about why the timeout change broke it. 2011-07-26 09:25:24 -04:00
Leo Franchi
0380379634 Fix obscene filename of class 2011-07-25 18:16:37 -04:00
Leo Franchi
72bfeba65a add to cmakelists 2011-07-25 18:15:46 -04:00
Leo Franchi
4a8b851ba5 Initial database generators 2011-07-25 18:15:39 -04:00
Jason Herskowitz
5fca433805 New album placeholder artwork. Better or worse? 2011-07-25 16:53:17 -04:00
Leo Franchi
cb75c10390 Attempt to stop eliding on osx and also keep things sane elsewhere 2011-07-25 11:58:26 -04:00
Leo Franchi
b7432c8b6c Try using non-escaped path for QFile::exists() 2011-07-25 11:01:25 -04:00
Leo Franchi
df6dc711fc qDebug()-- 2011-07-25 10:52:31 -04:00
Leo Franchi
6a8febcdce Make compile on lion 2011-07-25 10:32:42 -04:00
Christian Muehlhaeuser
ff4e52c398 * Fixed CPack.txt package details. 2011-07-25 14:48:31 +02:00
Christian Muehlhaeuser
2cf9cdab88 * Added QPixmap-caches to Album- & PlaylistItem delegates, too. 2011-07-25 04:01:23 +02:00
Christian Muehlhaeuser
1a3cae012e * Add a QPixmap-cache to the TreeView delegate. 2011-07-25 03:55:02 +02:00
Christian Muehlhaeuser
d4ccbdfa56 * Fixed QTimeLine warning and give the biography on the Artist-Page as much space as possible. 2011-07-25 03:44:05 +02:00
Christian Muehlhaeuser
87531a7ac9 * Get rid of dupe qsrand()s. We do that on startup. 2011-07-25 03:26:58 +02:00
Christian Muehlhaeuser
0c5673ca79 * Filter out duplicate tracks in the Tree Collection. 2011-07-25 03:07:36 +02:00
Christian Muehlhaeuser
ff7012a65d * Start tomahawk with --verbose to get full logging and console output, again. 2011-07-25 01:57:10 +02:00
Christian Muehlhaeuser
601b513da3 * Cleaned up more logging. 2011-07-25 01:41:49 +02:00
Christian Muehlhaeuser
cf6a3c9448 * Further cleanups & logging. 2011-07-25 00:48:40 +02:00
Christian Muehlhaeuser
8c78c0dc08 * Added logging levels. 2011-07-25 00:48:40 +02:00
Christian Muehlhaeuser
bb4b3b4faf * Added tDebug and a debug-level. Don't log qDebug to disk _ever_. 2011-07-25 00:48:40 +02:00
Christian Muehlhaeuser
4caf6d6a28 * Logging cleanups. 2011-07-25 00:48:39 +02:00
Dominik Schmidt
499f45402f Build installers with phonon-vlc and vlc from 0.1 time because currently mingw32-phonon-vlc is broken 2011-07-25 00:32:35 +02:00
Christian Muehlhaeuser
ddedc74501 * GPL headers for AvatarManager. 2011-07-24 20:08:58 +02:00
Christian Muehlhaeuser
0526d4071d * Fixed a few more GPL headers. 2011-07-24 20:07:04 +02:00
Christian Muehlhaeuser
7555c06c0f * Added GPL header to Logger. 2011-07-24 20:05:14 +02:00
Christian Muehlhaeuser
55bef176d3 * Make tLog() work properly. 2011-07-24 19:22:44 +02:00
Christian Muehlhaeuser
9c341bb3e6 * Disable qDebug() logging for release builds. Use tLog() for logging from NOW on. 2011-07-24 18:36:58 +02:00
Christian Muehlhaeuser
41f1a562fd * Fixed DatabaseWorker logic. 2011-07-24 18:36:58 +02:00
Dominik Schmidt
34c618ed94 Fix windows deployment to use local vlc plugins again 2011-07-24 00:36:34 +02:00
Jeff Mitchell
a9e3b716f2 Make things a little safer and also try setting an explicit nam configuration on liblastfm2 in settings dialog to see if that fixes the Mac problem 2011-07-23 13:15:20 -04:00
Jeff Mitchell
287990ca96 Don't reconnect twitter on settings change if it wasn't already connected 2011-07-23 11:46:15 -04:00
Jeff Mitchell
9e54917ff8 Remove now-unnecessary and buggy proxy code in jabber plugin 2011-07-23 11:37:32 -04:00
Jeff Mitchell
40d44c31d0 Add more debug 2011-07-23 11:30:02 -04:00
Jeff Mitchell
f4be7f09e6 Merge branch 'master' into proxytesting 2011-07-23 10:32:20 -04:00
Jeff Mitchell
794d6f870c Add weird debug output from jabber sip 2011-07-22 16:42:27 -04:00
Leo Franchi
8f6a567bee Work harder to hide the header 2011-07-22 14:35:38 -04:00
Leo Franchi
ea3171038b Make playlist album rows the same size as track album rows 2011-07-22 13:54:30 -04:00
Leo Franchi
ee3fb6b47e Don't paint selected text as white on osx, there's no selection rect. 2011-07-22 13:13:20 -04:00
Leo Franchi
b194d8c9cd Use new no-album-cover found image, nicer 2011-07-22 13:13:20 -04:00
Leo Franchi
a7308cddcc Scale pixmaps smoothly to avoid horrible jagged edges 2011-07-22 13:13:20 -04:00
Leo Franchi
7f890e571d Hide header as it's not needed 2011-07-22 13:13:20 -04:00
Christian Muehlhaeuser
4a5a8e5d15 * Don't artificially slow down the Pipeline. 2011-07-22 18:31:10 +02:00
Leo Franchi
66b1e21f31 Use QSplitter to get a 1px handle to avoid merging different alternate-color rows 2011-07-22 11:11:29 -04:00
Leo Franchi
36573c2342 Load album before adding to view to avoid flashing empty playlist message 2011-07-22 11:11:13 -04:00
Leo Franchi
0b9822d689 make compile on non-osx 2011-07-21 16:25:58 -04:00
Leo Franchi
f36b95fe6b OSX: Don't quit on window close, to conform to OSX expectations. Add Show/Hide action to tray icon. 2011-07-21 16:21:45 -04:00
Leo Franchi
1da74e4d81 Add a stretch factor to the title of the playlist header, things like "My Collection" don't get elided to My...tion 2011-07-21 14:55:57 -04:00
Leo Franchi
c0ee4751a0 make link manager adapt to pipeline reportresult changes 2011-07-21 13:34:44 -04:00
Christian Muehlhaeuser
aa5fb8bc53 * Fixed GStreamer pausing - even more. Sigh for Phonon's states. 2011-07-21 18:49:22 +02:00
Leo Franchi
57cdd0d960 Bring to front on mac when a tomahawkurl is opened in Tomahawk. Will add linux and win-specific code as well. 2011-07-21 11:22:26 -04:00
Alejandro Wainzinger
4ac6c32a45 Use clear() to clear text, not a QString(). 2011-07-21 05:16:09 -07:00
Alejandro Wainzinger
00c122b05c * Fixed TWK-249 - Add a bit more widget spacing to fix clipping of search box. 2011-07-21 05:14:31 -07:00
Alejandro Wainzinger
bcf7d9d689 * Fixed TWK-261 - Make "show offline sources" a checkable option, and save its value in settings. 2011-07-21 01:57:41 -07:00
Christian Muehlhaeuser
dbf31d704a * Cleaned up QtScriptResolver and added vital debug output. 2011-07-21 00:59:26 +02:00
Christian Muehlhaeuser
7f4d64d8dc * Always apply ProxyStyle. 2011-07-21 00:43:15 +02:00
Jeff Mitchell
2f95e0b191 Fix mistaken logic not using the map created especially for its
purpose...
2011-07-20 18:35:50 -04:00
Jeff Mitchell
86ac66a258 Use the enum value, to avoid out-of-order documentation mixup 2011-07-20 18:24:32 -04:00
Leo Franchi
f5e39c216e properly decode escaped characters coming from the HTTP api 2011-07-20 14:12:17 -04:00
Leo Franchi
5336700050 find LIBLASTFM_FOUND properly instead of always finding it as false 2011-07-20 07:43:01 -04:00
Christian Muehlhaeuser
bb8c60c939 * Removed obsolete includes from TomahawkWindow. 2011-07-20 08:26:16 +02:00
Christian Muehlhaeuser
48b2c77e6b * Cleaned up TomahawkWindow. 2011-07-20 08:22:38 +02:00
Christian Muehlhaeuser
900be23fa0 * A few updates to the german translation. 2011-07-20 07:37:49 +02:00
Christian Muehlhaeuser
fbb9e74537 * Fixed german translation setting a global quit shortcut on the key 'Q'. 2011-07-20 07:20:32 +02:00
Christian Muehlhaeuser
21abd78de5 * Remove not-working CMake cache solution. 2011-07-20 07:15:10 +02:00
Christian Muehlhaeuser
0a5f9ba290 * Use the same unique revision identifier as git itself. 2011-07-20 06:56:31 +02:00
Christian Muehlhaeuser
8d06d2ca38 * Try to force empty TOMAHAWK_VERSION in CMake cache. 2011-07-20 06:55:08 +02:00
Christian Muehlhaeuser
bbe81050f3 * Fixed sparkle updating and introduced TomahawkUtils::appFriendlyVersion(). 2011-07-20 06:01:58 +02:00
Christian Muehlhaeuser
751b76948e * Show which version is build during CMake debug output. 2011-07-20 05:51:40 +02:00
Christian Muehlhaeuser
485b40b22b * Added branch name to version string. 2011-07-20 05:47:13 +02:00
Christian Muehlhaeuser
4c8ba931d3 * Stop temporary query timer after it's been triggered. 2011-07-20 05:22:37 +02:00
Christian Muehlhaeuser
463eb2bfd8 * And even more Pipeline cleanups. 2011-07-20 04:53:43 +02:00
Christian Muehlhaeuser
7ab0a3093e * Few debug cleanups in Pipeline. 2011-07-20 04:41:59 +02:00
Leo Franchi
dabbd38cc7 Handle resolver file paths becoming invalid properly. Show user file is not found, etc. 2011-07-19 22:27:02 -04:00
Christian Muehlhaeuser
efd7911efc * Fixed another pipeline bug. 2011-07-20 04:25:44 +02:00
Christian Muehlhaeuser
9b8d69a21f * Fixed assert bug in pipeline. 2011-07-20 03:59:02 +02:00
Christian Muehlhaeuser
b39029743e * Fixed painting tracks with foreign charsets in sidebar. 2011-07-20 02:32:20 +02:00
Christian Muehlhaeuser
b771a23e23 * Fixed checking date executable variable. 2011-07-20 02:05:16 +02:00
Christian Muehlhaeuser
ffd4ba4edf * Fixed TWK-243: Show git revision in version number. 2011-07-20 02:02:37 +02:00
Christian Muehlhaeuser
6bfbbce05f * Fixed TWK-279 - Play first track of a playlist if play is clicked and nothing is playing yet. 2011-07-20 01:52:19 +02:00
Christian Muehlhaeuser
4a3f157718 * Fixed GStreamer skipping to the next track on pausing. 2011-07-20 00:17:15 +02:00
Christian Muehlhaeuser
920b239dc1 * Removed some more debug output from resolvers. 2011-07-19 23:40:21 +02:00
Christian Muehlhaeuser
1a81a292fc * Remove obsolete debug output. 2011-07-19 23:34:59 +02:00
Christian Muehlhaeuser
066aac7e26 * Fixed not properly ending drag and drop operation when leaving the sidebar. 2011-07-19 23:33:35 +02:00
Christian Muehlhaeuser
ac726faf1b * Also release non-temporary queries in Pipeline. 2011-07-19 23:13:16 +02:00
Christian Muehlhaeuser
dc5c0394f7 * Release unused queries in Pipeline. 2011-07-19 22:53:35 +02:00
Christian Muehlhaeuser
4098cc2709 * PlaylistInterface now provides getSharedPointer(). AudioEngine makes use of it and doesn't crash when encountering a deleted playlist. 2011-07-19 17:54:10 +02:00
Christian Muehlhaeuser
63aa26f607 * Fixed init procedure: don't setup Servent before database and sources are loaded. 2011-07-17 01:02:32 +02:00
Jason Herskowitz
4238327ebc Added icon for info icon/arrow that takes you to artist or album page. 2011-07-16 15:49:39 -04:00
Jason Herskowitz
120ee995f1 Placeholder images for missing album art, user avatar and artist image. Also sidebar icon for Loved Tracks. 2011-07-16 15:43:00 -04:00
Jeff Mitchell
7d7650f97c Fix twitter copy and also size issues. Fixes TWK-209. 2011-07-16 13:36:59 -04:00
Jeff Mitchell
b5d5db434a Change infosystem timeout values 2011-07-14 14:10:04 -04:00
Leo Franchi
a4a274531c Fix shortcuts on OS X 2011-07-14 10:42:27 +02:00
Jeff Mitchell
3a1083d2b3 Insert some code which is most likely totally do-nothing in the
offchance it solves jherskowitz's random crash...
2011-07-12 18:00:55 -04:00
Jeff Mitchell
e79604b598 Modify qHash/criteriamd5 algorithm to guarantee order of adding values
to the md5sum, since order matters in md5 and isn't guaranteed by
default in a QHash.

Requires a cache clear, which is done automatically.
2011-07-12 17:51:27 -04:00
Jeff Mitchell
43a1b38a49 Fix some objects in cache being "lost", such as similar artists/top
artist songs
2011-07-12 16:38:16 -04:00
Jeff Mitchell
e83be2b9cd Fix stupid C&P mistake that broke scrobbling. 2011-07-12 12:01:00 -04:00
Christian Muehlhaeuser
fcfc344627 * Fixed JavaScript resolvers not working. 2011-07-12 01:10:37 +02:00
Jeff Mitchell
28d34a84ad Add a cache versioning system, and invalidate the cache in the upgrade
to version 1
2011-07-11 16:01:53 -04:00
Christian Muehlhaeuser
3bd6bd540f * Updated .gitignore. 2011-07-11 16:59:43 +02:00
Christian Muehlhaeuser
c35d7c964a * Removed some InfoSystem debug output. 2011-07-11 16:59:15 +02:00
Christian Muehlhaeuser
15805aa32c * Improved AlbumView and cover fetching in Artist / Album-Model. 2011-07-11 16:52:09 +02:00
Christian Muehlhaeuser
6f14277821 * Updated .gitignore. 2011-07-11 03:36:11 +02:00
Christian Muehlhaeuser
2d66feb5b2 * Fixed default flat collection view sorting. 2011-07-11 03:24:33 +02:00
Christian Muehlhaeuser
a6944c49ae * Hide the origin column in the default flat collection view. 2011-07-11 03:05:14 +02:00
Christian Muehlhaeuser
3ad6826779 * Fixed bogus column widths when loading a flat collection view. 2011-07-11 02:59:13 +02:00
Christian Muehlhaeuser
0e04e8970b * Try to force updates when hovered item in a TrackView changes. 2011-07-11 02:49:46 +02:00
Christian Muehlhaeuser
76af86dc4b * Added direct links to Artist / Album - pages in TrackView. 2011-07-11 02:02:32 +02:00
Christian Muehlhaeuser
3d289c0f77 * Added musicbrainz InfoPlugin to CMakeLists.txt 2011-07-09 02:12:01 +02:00
Christopher Reichert
d7ea7e3eee Doxygen documentation for DatabaseCommand_LoadSocialAction. 2011-07-08 13:26:28 -05:00
Jeff Mitchell
e0b5597149 Huge overhaul of InfoSystem, using InfoRequestData structs to pass things around, making it far more clean (and easier to extend in the future) 2011-07-07 11:07:52 -04:00
Jeff Mitchell
d7950472bc Fix Mac compilation 2011-07-06 22:50:22 -04:00
Dominik Schmidt
dd311d99c4 Add more build dirs to the .gitignore 2011-07-07 04:18:18 +02:00
Dominik Schmidt
a634d09126 cpack: build proper source tarballs 2011-07-07 04:16:28 +02:00
Dominik Schmidt
7c5d6033d4 Add date and git revision to non-release package names 2011-07-07 03:18:12 +02:00
Dominik Schmidt
18aba6856b Use CPack for building the windows installer 2011-07-07 02:52:31 +02:00
Jeff Mitchell
51fba9ae62 Rename SavedRequestData and promote it 2011-07-06 17:32:02 -04:00
Jeff Mitchell
eb7f3fdab4 Enable caching of two more infotypes 2011-07-06 16:20:20 -04:00
Jeff Mitchell
0bfc873559 Handle timeouts of getInfo requests 2011-07-06 16:00:05 -04:00
Jeff Mitchell
226f823354 Add timeout functionality -- mostly. Still have to figure out the best
way to store items in case too much time has elapsed.
2011-07-06 14:58:56 -04:00
Jeff Mitchell
6bb26ecde8 Move almost all of the rest of the logic of infosystem to the worker
thread
2011-07-06 12:49:58 -04:00
Jeff Mitchell
5d0c734187 Add requestId tracking to InfoSystem in preparation for timeouts 2011-07-06 12:33:16 -04:00
Jeff Mitchell
ce7040d1fd Replace InfoCustomData with QVariantMap 2011-07-06 11:28:17 -04:00
Dominik Schmidt
7c9c046b17 Merge branch 'js-resolver' 2011-07-05 13:17:23 +02:00
Christopher Reichert
8f0984c5ac Added doxygen comments for DatabaseCommand_SocialAction. 2011-07-03 21:25:56 -05:00
Christian Muehlhaeuser
5e9fa24008 * Fixed crashing after a right-click on the Super Collection. 2011-07-04 02:42:42 +02:00
Christian Muehlhaeuser
15cdc8f910 * Let's start doxygen-ing new classes. 2011-07-03 17:04:49 +02:00
Christian Muehlhaeuser
dc095ec963 * Added ArtistInfoWidget, our new Artist page and ViewManager's default show(artist) action. 2011-07-03 02:18:28 +02:00
Christian Muehlhaeuser
8017bcacc7 * Fixed compiling on non-OS X. 2011-07-02 21:10:59 +02:00
Christian Muehlhaeuser
eaf8cad990 * Fixed compiling and error. 2011-07-02 21:03:04 +02:00
Christopher Reichert
40fb61b9a9 Do not allow same jabber credentials more than once. 2011-07-02 12:27:57 -05:00
Jeff Mitchell
11c0519165 Remove extra > 2011-07-01 16:52:35 -04:00
Dominik Schmidt
25775b5051 Make the Resolver API expect a widgetName instead of a widgetPath
We dont have gazillions of widgets in one dialog, so make the API a bit easier to use :)
2011-06-30 01:27:58 +02:00
Dominik Schmidt
3d297795c2 Be simplistic :D 2011-06-30 01:03:15 +02:00
Dominik Schmidt
925da80431 Merge remote branch 'origin/master' into js-resolver 2011-06-29 01:34:42 +02:00
Dominik Schmidt
1416c40172 Be compatible with the old resolvers *shrug* 2011-06-28 22:30:29 +02:00
Dominik Schmidt
c9fb103627 More API cleanup for QtScriptResolver 2011-06-28 21:29:44 +02:00
Jeff Mitchell
3f48e93a89 Show album covers in notifications when playing a track instead of the
source image. Need to implement some sort of timeout for getInfo.
2011-06-28 14:16:31 -04:00
Jeff Mitchell
07d9360a65 Massive cleanup of echonest plugin, also some cleanup for lastfmplugin. Hope I didn't break anything. :-) 2011-06-28 09:00:46 -04:00
Dominik Schmidt
c276e58c55 Add default implementations of search and resolve to the QtScriptResolver API 2011-06-28 13:47:35 +02:00
Dominik Schmidt
6f0321f585 Add tomahawk.js 2011-06-27 21:33:44 +02:00
Dominik Schmidt
d35fbd5048 Make debug output more readable and assert on javascript failures 2011-06-27 21:07:22 +02:00
Dominik Schmidt
75ec478cae Fix streaming from https-links 2011-06-27 21:06:36 +02:00
Jeff Mitchell
bb6da0daa9 Fix broken proxying. Not sure when it broke but this is a more robust
solution considering that both lastfm and echonest manager their own
nams. See notes; liblastfm may be problematic on Windows and Mac.
2011-06-27 15:00:25 -04:00
Dominik Schmidt
bf46ca7b71 Add more api for qtscriptresolvers 2011-06-27 04:22:40 +02:00
Dominik Schmidt
931ed5b918 Fix loading images from qtscriptresolvers 2011-06-27 00:12:29 +02:00
Dominik Schmidt
5d21dded5c Implement new js-resolver api 2011-06-26 22:42:58 +02:00
Jeff Mitchell
e983742c9b When notifying of a played track, show the source's image. Ideally we'd show the album cover but I can't find a good way to get at that (yet). 2011-06-26 13:25:55 -04:00
Jeff Mitchell
c6d2a5df89 Remove extraneous code 2011-06-26 12:58:51 -04:00
Christian Muehlhaeuser
ee70b9e3a7 * Set minimum size for recently-played tracks in WelcomeWidget. 2011-06-26 15:35:42 +02:00
Christian Muehlhaeuser
97986d8d3e * Use QTextOption to v-center HeaderLabel properly. 2011-06-26 15:20:50 +02:00
Christian Muehlhaeuser
39409ed861 * Don't cut off fonts in HeaderLabel. 2011-06-26 13:28:04 +02:00
Christian Muehlhaeuser
1e62c117e4 * A few more improvements for and around HeaderLabels. 2011-06-26 08:26:44 +02:00
Christian Muehlhaeuser
61f9fd5c99 * Fixed CMakeLists.txt. 2011-06-26 07:24:57 +02:00
Christian Muehlhaeuser
fe7c79ff31 * Added HeaderLabel to replace our old ugly labels. 2011-06-26 07:21:14 +02:00
Dominik Schmidt
de74c0c3fe Add newlines for muesli being able to read the code 2011-06-26 05:22:06 +02:00
Dominik Schmidt
80797d6538 Add ConfigUi api to QtScriptResolver 2011-06-26 05:18:27 +02:00
Christian Muehlhaeuser
e0c72c911a * Fixed loveButton not being re-enabled again. 2011-06-26 05:15:05 +02:00
Christian Muehlhaeuser
8f69369807 * Fixed not disabling loveButton. 2011-06-26 05:13:18 +02:00
Jason Herskowitz
451713c946 Make love icon not be invisibile on linux 2011-06-25 23:11:11 -04:00
Christian Muehlhaeuser
cf01884515 * Show a PointingHand cursor when hovering the love icon. 2011-06-26 05:10:01 +02:00
Jason Herskowitz
3913611ffa Temporary preference icon size fix, color tweaks, and added and icon for Post action 2011-06-25 23:01:18 -04:00
Jason Herskowitz
7bff379d05 Make gray outline of loved icons match source name color 2011-06-25 22:23:07 -04:00
Christopher Reichert
3769ef3208 Send UnLove track to LastFm. 2011-06-25 21:03:45 -05:00
Jason Herskowitz
10f607b348 Make loved icon right size 2011-06-25 21:08:40 -04:00
Jason Herskowitz
62df210cdc Make loved icon a bit darker red 2011-06-25 20:57:34 -04:00
Christopher Reichert
bdf8a0a353 Moved the loveButton to a reasonable place in audiocontrols.
Also changed the PlaylistTypeSelectorDlg to not be lop-sided.
2011-06-25 17:47:57 -05:00
Christian Muehlhaeuser
f380317775 * Fixed ageToString() for time differences below 60 seconds. 2011-06-25 06:04:50 +02:00
Christian Muehlhaeuser
8e99dbf01e * Show when a track was played in the recently played tracks history. 2011-06-25 04:12:23 +02:00
Christopher Reichert
0685754481 Database command for loading social actions.
Used for allowing a result to be aware of whether or not
it has various social attributes. e.g. loved.
2011-06-24 20:54:57 -05:00
Jason Herskowitz
5429698661 Icon for home screen/dashboard. Needs to be wired up. 2011-06-24 20:16:37 -04:00
Christian Muehlhaeuser
2dad4fbe2c * Fixed broken splitter-handle on OS X. 2011-06-25 01:39:35 +02:00
Jeff Mitchell
3b0292d9d9 Cleanup 2011-06-24 12:57:42 -04:00
Jeff Mitchell
f3ba4beffc Only emit if there are actually results 2011-06-24 12:26:44 -04:00
Christian Muehlhaeuser
6be00f832d * Removed un-moc-able headers in thirdparty/qtweetlib. 2011-06-24 11:48:44 +02:00
Christian Muehlhaeuser
4674ed35f0 * Fixed the warning mess. Hope I didn't break anything :-) 2011-06-24 11:38:15 +02:00
Christian Muehlhaeuser
26e12157f2 * Silly whitespace cleanup. 2011-06-24 09:32:00 +02:00
Christian Muehlhaeuser
9758324128 * Fixed broken database schema for dynamic_playlist table. 2011-06-24 09:32:00 +02:00
Dominik Schmidt
bfec4043f6 Merge branch 'master' of git://github.com/tomahawk-player/tomahawk
Conflicts:
	src/resolvers/qtscriptresolver.h
2011-06-24 08:25:50 +02:00
Christian Muehlhaeuser
e0cd07c442 * Giving domme a style-lesson ;-) 2011-06-24 08:22:39 +02:00
Dominik Schmidt
cbd8caa171 Add compress-method to Tomahawk-Object in QtScriptResolvers 2011-06-24 08:18:41 +02:00
Christian Muehlhaeuser
3f4140e023 * Don't offer a play action if the user selected multiple items. 2011-06-24 08:18:22 +02:00
Dominik Schmidt
903617fd50 Add Tomahawk object to resolver scope, currently offers a readFile method 2011-06-24 08:12:59 +02:00
Christian Muehlhaeuser
4abb52d198 * Added context menus for Artists & Albums, too. 2011-06-24 08:08:33 +02:00
Christian Muehlhaeuser
1c820a2beb * Guard some more. 2011-06-24 05:49:20 +02:00
Christian Muehlhaeuser
b65d9d5809 * Guard AudioEngine against null-ptr PlaylistInterfaces. 2011-06-24 05:46:08 +02:00
Christian Muehlhaeuser
251599e36e * Removed silly debug which slowed down sorting massively. 2011-06-24 04:52:30 +02:00
Christian Muehlhaeuser
1ecab22b4d * Added new helper class ContextMenu. Made it easy to support context-menus in the TreeView, too. 2011-06-24 04:48:03 +02:00
Alejandro Wainzinger
a639b89ebc Add reference to Doxygen docs in README. 2011-06-23 19:41:01 -07:00
Jeff Mitchell
bf015d241a Rip out retry timer and move to a push solution. Untested, will test
later.
2011-06-23 16:03:24 -04:00
Jeff Mitchell
555adeaac7 Cleanup 2011-06-23 15:15:31 -04:00
Jeff Mitchell
d455270c05 Add (if verbose is turned on in config) play/stop notifications 2011-06-23 15:13:57 -04:00
Christian Muehlhaeuser
d5266f7147 * Fix the styling of the now playing row in the TreeView. 2011-06-23 20:02:26 +02:00
Christian Muehlhaeuser
2ef67f5b28 * Mark the now playing item in the TreeView, just like we do in the TrackView. 2011-06-23 19:25:59 +02:00
Christian Muehlhaeuser
337c4e6e9c * Recalculate collection stats after finish scanning. 2011-06-23 18:02:09 +02:00
Christian Muehlhaeuser
1a4ed2e551 * Never word-wrap in the short-mode PlaylistItemDelegate. 2011-06-23 17:42:52 +02:00
Christian Muehlhaeuser
dca4a7c591 * Fixed TWK-226. Never advertise ourselves with an unroutable / internal-only IP address. 2011-06-23 16:54:27 +02:00
Jeff Mitchell
660176477a Remove reset; handle dbid changes locally in twitter sip 2011-06-23 09:16:33 -04:00
Jeff Mitchell
f2d5a9dadc Make SipPlugin reset pure virtual and implement 2011-06-23 08:54:29 -04:00
Jeff Mitchell
7e45779132 Put reset() in sipplugin 2011-06-23 07:03:09 -04:00
Jeff Mitchell
a25d4719c9 Remove unneeded bits 2011-06-22 17:57:38 -04:00
Jeff Mitchell
69f459682a Make notifications work on Linux, including icon. 2011-06-22 13:47:16 -04:00
Jeff Mitchell
0f1dec1783 Fix notification logic and possible crash 2011-06-22 11:50:02 -04:00
Christian Muehlhaeuser
8240b8379b * Don't do separate thread pools per command anymore. 2011-06-22 10:07:19 +02:00
Jeff Mitchell
8d1f0e1646 Use the types shown by qdbusviewer 2011-06-21 18:22:15 -04:00
Jeff Mitchell
59346f014a Rename the plugin to be more truthful 2011-06-21 17:45:39 -04:00
Jeff Mitchell
ef5f40864e Fix up libnotify plugin (not actually using libnotify though) 2011-06-21 17:39:31 -04:00
Jeff Mitchell
69818f8c96 Start of libnotify plugin 2011-06-21 14:52:23 -04:00
Jeff Mitchell
55c894743a Drat. Actually fix build 2011-06-21 13:58:50 -04:00
Jeff Mitchell
3c096f16e0 Crap, I meant to include these in the previous commit 2011-06-21 13:50:52 -04:00
Jeff Mitchell
fa7e34972c Make dirs for os-dependent (and non-os-dependent) infoplugins 2011-06-21 12:04:03 -04:00
Alejandro Wainzinger
9d390aa0ed Style. 2011-06-21 02:35:14 -07:00
Alejandro Wainzinger
a59768ee9b Add tooltip for Artist and Flat View. 2011-06-21 02:30:47 -07:00
Christian Muehlhaeuser
20181affd1 * Fixed a few playlist issues: don't lose current track when dropping / moving items on the playlist. 2011-06-21 08:10:30 +02:00
Christian Muehlhaeuser
08426e2822 * Fixed getting list of recently played playlists. 2011-06-21 07:06:30 +02:00
Christian Muehlhaeuser
659b8fa0d5 * Set the proper playback source on LogPlayback queries. 2011-06-21 06:36:34 +02:00
Christian Muehlhaeuser
b5180f33b8 * No need to fetch collection stats manually after adding files. 2011-06-21 06:32:45 +02:00
Christian Muehlhaeuser
4006452d15 * Don't steal the logfile when starting a secondary instance of Tomahawk. 2011-06-21 05:40:07 +02:00
Christian Muehlhaeuser
eb70419203 * Yay, even more WIP: New Home Screen. 2011-06-21 05:26:32 +02:00
Christian Muehlhaeuser
c0a970872b * Made deleting tracks from a collction a little faster. 2011-06-21 04:03:12 +02:00
jherskowitz
7caf66b086 Few more new/replacement icons 2011-06-20 21:09:13 -04:00
Dominik Schmidt
7c36fb68c6 Use ccache for windows builds 2011-06-20 21:59:58 +02:00
Jeff Mitchell
189f3b4aff Add reset logic to interface for use by all; fixes bug when re-listening to a source before a track change 2011-06-20 08:27:58 -04:00
Jeff Mitchell
ec83adcd39 Merge branch 'master' into more-generic-pi 2011-06-20 07:59:19 -04:00
Jeff Mitchell
97cf05c37c Initial generalizing work 2011-06-20 07:58:27 -04:00
Dominik Schmidt
5112d9356b Small clang fix 2011-06-20 04:51:57 +02:00
Jeff Mitchell
8f69b9b680 Fix catch-up functionality 2011-06-19 16:28:50 -04:00
Jeff Mitchell
989a16db7d Port logic from STV to audioengine regarding next track when listening along 2011-06-19 14:44:01 -04:00
Christian Muehlhaeuser
a687ca635f * Removed assert in portfwd module to make it compile on OS X. 2011-06-19 17:30:02 +02:00
Christian Muehlhaeuser
3552106e18 Merge pull request #32 from pawelprazak/master
Proposed Fix for bug TWK-221
2011-06-19 08:20:56 -07:00
jherskowitz
b0b266a639 Go back to other lightbulb icons 2011-06-19 11:07:07 -04:00
jherskowitz
792cf99b22 Bunch of tweaked and cleaned up icons 2011-06-19 09:39:29 -04:00
Jeff Mitchell
33ed1373e8 Simplify logic, de-duplicate 2011-06-19 09:23:56 -04:00
Leo Franchi
8939af7407 fix a bunch of warnings 2011-06-19 00:39:53 -04:00
Leo Franchi
0efe65d738 Fix signal/slot connection so stations work again 2011-06-18 22:18:18 -04:00
Jeff Mitchell
02414e8269 Update output location of .exe to be in build/ and update version number 2011-06-18 11:36:30 -04:00
Jeff Mitchell
c760d26b68 Listen along -- fix bug where catching up to the same track would stop audio. Also allow option to stop listening. 2011-06-18 11:12:34 -04:00
Jeff Mitchell
0abb46f3e6 bump nsi revision 2011-06-18 11:12:26 -04:00
Paweł Prażak
093e960af2 Fix for bug TWK-221, Segfault at start due to UPnP device description XML download fail.
Further work
FIXME: Figure out how to make it use the proper port (81 eg. instaed of standard 80)
       maybe it's upnpDiscover() that's not working correcly
2011-06-18 17:09:20 +02:00
Jeff Mitchell
c9c1cc5b17 Fix some paths in nsi file 2011-06-17 22:47:49 -04:00
Jeff Mitchell
d4adc55d67 Whitespace cleanup 2011-06-17 18:19:51 -04:00
Jeff Mitchell
3e7368bc32 Change latch menu item to "Catch Up" if you're already listening to that source, and allow Next button to catch you up too. 2011-06-17 18:17:33 -04:00
Jeff Mitchell
473d8994c8 When you are latched onto someone, if there is a track you can't resolve, keep trying to play the next track periodically, so that you'll pick back up with their stream when they next play a track that you can resolve. I can't test this now due to
firewall but I believe the code should be safe.
2011-06-17 16:11:20 -04:00
Leo Franchi
5615488284 Don't check for duration---it's not needed for loving 2011-06-17 15:26:33 -04:00
Jeff Mitchell
461854d158 Don't endlessely loop on a track when following if the person you're following stops playing. Also don't crash if they go away or time out. 2011-06-17 13:34:25 -04:00
Leo Franchi
56ed1c4ace set volume to 75% on startup on osx---it's not the system volume there 2011-06-17 13:25:20 -04:00
Leo Franchi
2805b08989 Compile on osx 2011-06-17 13:25:09 -04:00
Leo Franchi
e2b99b2628 don't crash so much on exit, it's not nice 2011-06-17 13:22:55 -04:00
Jeff Mitchell
b31ff998ee Don't allow yourself to follow...yourself. 2011-06-17 12:47:39 -04:00
Jeff Mitchell
f9dff94ab2 GCC suggests parens to make the logic obvious, so make it nice and obvious 2011-06-17 12:47:21 -04:00
Leo Franchi
f72c60969b allow dropping of results as well as queries on the categoryadd items
Fixes TWK-232
2011-06-17 12:40:30 -04:00
Leo Franchi
2088e78020 Notify of resolving finished when timeout is reached for resolvers that don't report back 2011-06-17 11:44:04 -04:00
Leo Franchi
994ed90ed6 When getting a query from a result, add the result itself to the query.
Fixes TWK-231
2011-06-17 11:44:04 -04:00
Jeff Mitchell
19acd9d47f Following is working now :-D 2011-06-17 10:24:54 -04:00
Jeff Mitchell
541fe95789 Add follow option to context menu, not quite working yet... 2011-06-17 09:54:37 -04:00
Christian Muehlhaeuser
570913a3b9 * Killed a few warnings. 2011-06-17 05:07:44 +02:00
Jeff Mitchell
e3a22ba4ee Fix stupid mistake that borked next/prev/seek 2011-06-16 22:27:07 -04:00
Christian Muehlhaeuser
c7b8acbdf6 * Also added new resolver settings icon. 2011-06-17 04:13:19 +02:00
Christian Muehlhaeuser
1bbbf93196 * Updated a few more icons. 2011-06-17 04:12:26 +02:00
Christian Muehlhaeuser
a557324d98 * New icons. WIP. 2011-06-17 03:30:19 +02:00
Christian Muehlhaeuser
1d28ddc3c8 * Removed old, obsolete icons. 2011-06-17 02:59:56 +02:00
Christopher Reichert
3efe0ff22b Added the love button.
Its in an odd place for now but Muesli is going to correct the
positioning manually. We need to get this button to switch to
notLoved.png when a track is no longer loved. More implementation
coming soon. For now this will send love status to lastfm.
2011-06-16 18:51:09 -05:00
Christian Muehlhaeuser
d7d97d60db * Added a WIP short style for our TrackViews. 2011-06-17 01:44:22 +02:00
Jeff Mitchell
32f6a42791 Fix some more incorrect signal/slot signatures 2011-06-16 18:19:46 -04:00
Jeff Mitchell
818636721a Update PlaylistInterface slot signatures 2011-06-16 18:08:57 -04:00
Jeff Mitchell
64cd6e584f Initial work on latch functionality 2011-06-16 18:02:41 -04:00
Christian Muehlhaeuser
00252e4e53 * This probably needs fixing some connects() now: Moved PlaylistInterface into Tomahawk namespace. 2011-06-16 23:05:40 +02:00
Jeff Mitchell
53ea9b2589 Less cryptic 2011-06-16 16:43:04 -04:00
Jeff Mitchell
3f05f4ea8b Add pliface_ptr 2011-06-16 16:41:09 -04:00
Leo Franchi
8a33a9edf4 new icons 2011-06-16 15:01:20 -04:00
Christian Muehlhaeuser
fcce5568b2 * Forgot to add new Query class, too. 2011-06-16 12:21:59 +02:00
Christian Muehlhaeuser
6337e3a498 * Refactored pipeline a bit further. 2011-06-16 12:17:41 +02:00
Jeff Mitchell
e6bb53c9f5 Delete lister after it's done, before returning 2011-06-15 09:08:13 -04:00
Jeff Mitchell
fb7f98c1fc Don't unconditionally watch for changes 2011-06-15 08:59:38 -04:00
Jeff Mitchell
be86cdd97c This shouldn't really be needed but maybe it fixes zizzifizzix's problem (or at least, anyone else from having it) 2011-06-15 08:46:01 -04:00
Alejandro Wainzinger
1c59840dd1 Pause timer should be single shot. 2011-06-15 00:33:26 -07:00
Alejandro Wainzinger
a306bdf53f Only clear Adium status on exit if plugin is actually in use. 2011-06-15 00:27:55 -07:00
Christian Muehlhaeuser
46fc9cb20a * Be cleverer with database threads, too. 2011-06-15 04:15:27 +02:00
Christian Muehlhaeuser
78e064e1c5 * Made the pipeline cleverer when it comes to using threads. 2011-06-15 04:08:32 +02:00
Jeff Mitchell
f5d61a60f8 Replace text with end-user version 2011-06-14 19:37:14 -04:00
Leo Franchi
e8b02406d5 put jreen back in its place 2011-06-14 19:33:00 -04:00
Leo Franchi
51e13ce11e 30 items backlog 2011-06-14 19:31:31 -04:00
Leo Franchi
bfda50e604 dedup my kthxbbw TWK-45 2011-06-14 19:27:17 -04:00
Christopher Reichert
bef7a63732 Added database commands for Social action.
Love button in audiocontrols sends message through info system
to sync love status with local database. The only social action
that is currently setup is lastfm's "love".
2011-06-14 16:12:56 -05:00
Jeff Mitchell
80ef9d6053 Some more scan logic fixes, and stop the scan timer while it's already performing a scan 2011-06-14 15:02:06 -04:00
Jeff Mitchell
6d4af9301c Fix some settings dialog logic 2011-06-14 14:14:52 -04:00
Jeff Mitchell
43c2aba4d2 Update some values/logic before it gets too public 2011-06-14 14:03:58 -04:00
Jeff Mitchell
4337a220b6 Remove warnings in adium plugin 2011-06-14 13:54:25 -04:00
Jeff Mitchell
019499632a Make twitter sync every 2.5 minutes 2011-06-14 13:48:29 -04:00
Jeff Mitchell
6f1d4a465e Merge branch 'master' into watchforchanges-ng 2011-06-14 13:44:02 -04:00
Leo Franchi
bc814e759f be less clever and waste more bandwidth 2011-06-14 12:07:23 -04:00
Jeff Mitchell
169917fd53 Merge remote branch 'origin/master' into watchforchanges-ng
Conflicts:
	src/tomahawkwindow.ui
2011-06-13 15:11:14 -04:00
Alejandro Wainzinger
508bed5ef4 Add consistent display of artist before song title in Adium Plugin. Fixes TWK-225. 2011-06-13 01:39:41 -07:00
Leo Franchi
6ff43b8aed guard against a null error-condition, c.f. TWK-224 2011-06-12 16:45:31 -04:00
Christian Muehlhaeuser
d4c68ddd27 * Try different highlight color for now-playing items. 2011-06-12 20:53:35 +02:00
Christian Muehlhaeuser
e3daa8c2d5 * Display unresolved queries greyed-out again. 2011-06-12 19:06:50 +02:00
Christian Muehlhaeuser
13d758d3eb * Fixed build scripts to ship app with libpng. 2011-06-12 18:36:27 +02:00
Leo Franchi
09be5a1a60 pita wip 2011-06-12 12:13:27 -04:00
Christian Muehlhaeuser
fbdf53de50 * Made sure we always restore the painter after using it. 2011-06-12 18:06:29 +02:00
Leo Franchi
298d0a08a0 Try harder to fix audiocontrol flickering 2011-06-12 11:05:13 -04:00
Christian Muehlhaeuser
327ce84e46 * Static method was meant to be public. 2011-06-12 08:33:47 +02:00
Christian Muehlhaeuser
22e2800e9e * Fixed two bugs I introduced with my last commit. 2011-06-12 06:19:03 +02:00
Christian Muehlhaeuser
8c10bdfb07 * WIP: Fulltext resolving, score bars and score column.
* Added social_attributes table to the database.
* Added db migration script.
* Fixed database migration.
2011-06-12 05:57:57 +02:00
Leo Franchi
35590c381c Don't flicker when pressing play/pause on osx 2011-06-11 14:26:16 -04:00
Leo Franchi
9874606929 Add workaround for QtCurve, so we don't set our own proxy style. Warning: WILL LOOK LIKE CRAP 2011-06-11 14:01:09 -04:00
Leo Franchi
9bf44b1e52 Hide now-playing push groupbox unless on osx 2011-06-11 13:53:15 -04:00
Leo Franchi
9d4642b453 make adium plugin build 2011-06-11 13:43:51 -04:00
Leo Franchi
5cfbcae95e Generate toma.hk urls instead of tomahawk://, so they can be shortened 2011-06-11 13:32:33 -04:00
Leo Franchi
419a0c806f Add Play/Next/Prev to menu and make space a global shortcut 2011-06-11 13:10:16 -04:00
Leo Franchi
badfe28626 Explicitly set Content-Type of POST to application/x-www-form-urlencoded, as Qt 4.8 changed teh default 2011-06-11 12:42:13 -04:00
Leo Franchi
1c43cabd7e don't crash when jason tries to use tomahawk 2011-06-11 12:18:12 -04:00
Leo Franchi
efc29a1c92 Remove deleted playlists from the UI immediately, not after dbcmd is completed
Otherwise if the DB is busy the user can delete playlists multiple times, crashing all his peers
2011-06-11 12:05:52 -04:00
Leo Franchi
ac7e547d1d Disable unindenting until I iron all the bugs out 2011-06-10 23:36:58 -04:00
Leo Franchi
5e3f465824 Allow qtscript resolvers to use QWebkit LocalStorage and DatabaseStorage HTML5 API 2011-06-10 23:32:40 -04:00
Leo Franchi
f3b9a7bdec Place editor properly: 2011-06-10 23:32:40 -04:00
Leo Franchi
c014ccdf33 enclose path in quotes on windows so it works with paths with spaces 2011-06-10 23:32:40 -04:00
Leo Franchi
0b2302a675 Move the indentation in a bit 2011-06-10 23:32:40 -04:00
Leo Franchi
92805d37c1 Add a "New Additions" entry to each source to show the SourceInfoWidget 2011-06-10 23:32:40 -04:00
Alejandro Wainzinger
5a38219754 Escape quotes, or Applescript gets confused. 2011-06-09 19:52:33 -07:00
Alejandro Wainzinger
112184c8fa If paused for a minute, clear Adium status. 2011-06-09 18:34:19 -07:00
Jeff Mitchell
6b3bb259d8 Merge branch 'master' into watchforchanges-ng
There's some ugliness on the music page...

Conflicts:
	src/settingsdialog.cpp
	src/stackedsettingsdialog.ui
2011-06-09 14:07:11 -04:00
Alejandro Wainzinger
3da78d7cee Adium plugin now does nothing on pause, and clears status on stop. 2011-06-08 17:56:14 -07:00
Alejandro Wainzinger
3277ad7802 Parse the "+" of a Tomahawk link as a space. Adium plugin defaults to using toma.hk links now. 2011-06-08 01:37:52 -07:00
Alejandro Wainzinger
8ca84e9ba2 Use just openLink in GAM to avoid including InfoSystem, and deal with the InfoCriteriaHash in the plguin. 2011-06-07 18:50:27 -07:00
Alejandro Wainzinger
23a9be18c6 Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-06-07 18:14:18 -07:00
Alejandro Wainzinger
b392151c56 Make Tomahawk link handling cleaner and less hackish (lfranchi++). Move openLinkFromHash to GlobalActionManager, to keep Tomahawk link handling simple. 2011-06-07 18:12:38 -07:00
Leo Franchi
1ff142616e remove old settings dialog.ui, just caused confusion 2011-06-07 16:59:19 -04:00
Leo Franchi
21479dbe0b set volume on startup too, from phonon 2011-06-07 16:59:19 -04:00
Leo Franchi
24502d8856 Update tomahawk volume when phonon volume is updated externally, lessen deafness 2011-06-07 16:59:19 -04:00
Frank Osterfeld
bee2a7165a Fix sorting by file size (Don't sort the formatted strings, but the actual file size).
Also, use TrackModel::Column enum instead of int constants.
2011-06-07 19:54:29 +02:00
Alejandro Wainzinger
3ec9308916 debug-- 2011-06-06 23:39:57 -07:00
Alejandro Wainzinger
df83239ad3 Style fix. 2011-06-06 23:22:44 -07:00
Alejandro Wainzinger
dd78a2097a Decode percent-encoded Tomahawk links. 2011-06-06 23:19:53 -07:00
Alejandro Wainzinger
3f8d27695e Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-06-06 21:24:30 -07:00
Alejandro Wainzinger
f0b1d49f6b Add tomahawk link to currently playing song, to Adium now-playing status. 2011-06-06 21:23:55 -07:00
Leo Franchi
8d3760f71e Merge branch 'master' of github.com:tomahawk-player/tomahawk 2011-06-06 08:39:09 -04:00
Alejandro Wainzinger
4f8165cc8a Check if Adium is running before setting status. Be more efficient about forming the Applescript string. 2011-06-05 17:57:33 -07:00
Christian Muehlhaeuser
1021e9c1b5 * Improved AudioEngine's internal phonon-state handling. 2011-06-05 23:20:09 +02:00
Leo Franchi
7cac0ed9bc Really don't go overboard asking for moods/styles 2011-06-05 16:47:32 -04:00
Leo Franchi
aa076684dc fix up checking for moods and styles 2011-06-05 16:40:35 -04:00
Christopher Reichert
5ec7e3340b re-resolve tracks when a resolver is added or removed.
The pipeline emits a signal to queries when a resolver is added/removed. The queries
take action based on their solved() status and if not solved() inform the pipeline to
re-resolve them.
2011-06-05 14:03:40 -05:00
Leo Franchi
7742e3091a show summary for songs as well 2011-06-05 13:56:23 -04:00
Christian Muehlhaeuser
297161c766 * Update thirdparty/jreen submodule. 2011-06-05 17:20:21 +02:00
Christian Muehlhaeuser
95a335813d Merge pull request #31 from euroelessar/master
Changes due to modified Jreen API
2011-06-05 06:33:10 -07:00
Leo Franchi
424424cf7b Allow for omitting @foo.com domains for jabber and google.
Also, make sip plugins clean up the config after themselves
2011-06-04 21:59:39 -04:00
Leo Franchi
4e2c5b23f7 Show google-specific text in add contact popup, fixes TWK-217 2011-06-04 21:09:29 -04:00
Leo Franchi
73e5828d41 attempt strange fix 2011-06-04 20:07:12 -04:00
Leo Franchi
e5bdab9f9b osx doesn't like hidden widgets added to layouts and shown later 2011-06-04 19:55:56 -04:00
Leo Franchi
d8d88826f5 rename SearchWidget to GlobalSearchWidget 2011-06-04 17:11:22 -04:00
Christian Muehlhaeuser
33a9391ee7 * Try to fix SearchWidget crash. 2011-06-04 22:58:58 +02:00
Christian Muehlhaeuser
2a43c7df78 * Try it with a parent. 2011-06-04 22:39:15 +02:00
Christian Muehlhaeuser
65c33e70f5 * Fixed OS X compilation. 2011-06-04 21:10:14 +02:00
Christian Muehlhaeuser
83ca3a1502 * Forgot to add some search widgets. 2011-06-04 20:50:49 +02:00
Christian Muehlhaeuser
2e9dc42696 * Added basic search widget. 2011-06-04 20:47:45 +02:00
Ruslan Nigmatullin
2d3f712f95 Fixes due to changed Jreen API 2011-06-04 23:48:27 +06:00
Christian Muehlhaeuser
34d9a723dd * Fixed potential memleak. 2011-06-04 14:43:31 +02:00
Jeff Mitchell
c2ffbbc5ac Fix compile, doh 2011-06-03 11:07:53 -04:00
Jeff Mitchell
95e2b84559 No sense having it in two places... 2011-06-03 11:05:01 -04:00
Jeff Mitchell
aed838193f See if defines are causing the twitter issues on Win 2011-06-03 11:01:27 -04:00
Christian Muehlhaeuser
6f4b43f9ff * Fixed AudioEngine deleting a sharedptr while it's being used by Phonon. 2011-06-03 15:27:34 +02:00
Alejandro Wainzinger
4619cd420a More style fixes. 2011-06-02 21:13:57 -07:00
Alejandro Wainzinger
e5cc13ac57 Fixes for style. 2011-06-02 18:53:36 -07:00
Alejandro Wainzinger
6500af65c0 Merge branch 'master' into adiumpush 2011-06-02 18:23:20 -07:00
Leo Franchi
59452f6163 Try to avoid showing the window before placing it 2011-06-02 17:24:44 -04:00
Leo Franchi
e130fc41ed resize dialog when it changes size, and hide/show
otherwise osx goes CRAZY PANTS
2011-06-01 20:29:54 -04:00
Leo Franchi
b4e0674e2b SHow initial config dialog as sheet on osx, WIP 2011-06-01 17:41:44 -04:00
Christian Muehlhaeuser
aeedf286eb * Added Pipeline status view. WIP. 2011-06-01 04:21:35 +02:00
Christian Muehlhaeuser
c52e7e4cdb * Allow seeking in songs - if possible. 2011-06-01 04:21:01 +02:00
Leo Franchi
b356798229 Add an 'Add to my ' option for non-local playlists to copy locally 2011-05-31 22:10:37 -04:00
Leo Franchi
615b2ff5cb And remove cruft. 2011-05-31 18:21:41 -04:00
Leo Franchi
7176b7f0a9 Add the SPMediaKeyTap thirdparty lib. 2011-05-31 18:20:29 -04:00
Leo Franchi
5cd9e49629 Add support for SPMediaKeyTap.
This lets tomahawk stop iTunes from opening when a user presses one of the media keys. Thanks to
the Clementine project and tyler.s.rhodes@gmail.com for much of the code in this patch.
2011-05-31 18:17:46 -04:00
Jeff Mitchell
7c3d0eba95 Merge branch 'master' into watchforchanges-ng 2011-05-31 13:15:36 -04:00
Christopher Reichert
30323c2d8a Shuffle Mode and Repeat mode are now stored on a playlist by playlist basis
in Tomahawk.conf
2011-05-31 10:43:45 -05:00
Jeff Mitchell
c98842935d Merge branch 'master' into watchforchanges-ng
Conflicts:
	src/libtomahawk/infosystem/infosystem.cpp
	src/musicscanner.cpp
	src/scanmanager.cpp
	src/tomahawkapp.cpp
	src/tomahawkwindow.ui
2011-05-30 09:56:45 -04:00
Christian Muehlhaeuser
b5b8ba5a96 * Fixed shutdown freezes. 2011-05-29 11:14:20 +02:00
muesli
5d03b35101 Revert "Was trying to work on the crash on shutdown by making sure we explicitly delete items in tomahawkapp. Except where there are FIXMEs all are now explicitly deleted, in reverse order of instantiation. So far no help, but figured might as well keep the changes."
This reverts commit 6e19a85d73.
2011-05-28 16:51:04 +02:00
Jeff Mitchell
52b7465cf6 more debug 2011-05-28 10:24:35 -04:00
Jeff Mitchell
840e877456 More debug for chris 2011-05-28 10:15:37 -04:00
Jeff Mitchell
89f690a9e2 Add some extra debug 2011-05-28 10:11:01 -04:00
Jeff Mitchell
02c1cfe14e Update text to say what's actually going on 2011-05-28 10:01:33 -04:00
Jeff Mitchell
86f35ae304 Don't say we're processing events when we aren't anymore 2011-05-28 09:54:03 -04:00
Jeff Mitchell
2c48983aa1 Merge branch 'master' into watchforchanges-ng 2011-05-28 09:40:43 -04:00
Alejandro Wainzinger
cfe335ff8a Merge branch 'master' into adiumpush 2011-05-26 22:57:22 -07:00
Alejandro Wainzinger
a2b6463b04 Merge branch 'adiumpush' of github.com:tomahawk-player/tomahawk into adiumpush 2011-05-26 22:55:55 -07:00
Jeff Mitchell
c1c8e1c9a7 Make scanning more async so if you quit in the middle you don't have to sit there waiting for the entire scan to finish 2011-05-23 04:59:54 -04:00
Jeff Mitchell
c0772e5076 Merge remote branch 'origin/master' into watchforchanges-ng 2011-05-22 22:08:02 -04:00
Jeff Mitchell
0ea35a9b3e Add options for controlling scanning time and mode 2011-05-21 14:58:23 -04:00
Jeff Mitchell
345d6858ff Merge remote branch 'origin/master' into watchforchanges-ng 2011-05-21 11:02:37 -04:00
Jeff Mitchell
c297dcaf9e Merge remote branch 'origin/master' into watchforchanges-ng 2011-05-20 19:43:01 -04:00
Jeff Mitchell
ea6a86016a Merge branch 'master' into watchforchanges-ng 2011-05-20 19:42:43 -04:00
Jeff Mitchell
32c84b84bd Finish (for now) the file scanning code. (Also adds an update/rescan difference to the options, where one fully rescans and the other runs a normal update). N.B.: This code is currently hard-coded to watch for changes at 120 seconds and to use filemtimes, not dirmtimes. 2011-05-20 19:41:03 -04:00
Jeff Mitchell
c2884e696f More updates for file-mtime scanning 2011-05-20 14:46:55 -04:00
Jeff Mitchell
0a8e0daa57 WIP towards file mtime scanning 2011-05-20 14:01:10 -04:00
Jeff Mitchell
7a86391d7b Watching for changes works at a folder granularity now 2011-05-20 10:38:18 -04:00
Jeff Mitchell
98a23c6585 Merge branch 'master' into adiumpush
Conflicts:
	thirdparty/jreen
2011-05-16 22:06:41 -04:00
Alejandro Wainzinger
195f6921c0 Merge branch 'master' into adiumpush
Conflicts:
	thirdparty/jreen
2011-05-11 22:36:29 -07:00
Alejandro Wainzinger
df996769f8 Make layout a bit more aligned. 2011-05-07 15:58:16 -07:00
Alejandro Wainzinger
69a01c252a Add a few more guards for OS X. 2011-05-07 15:50:48 -07:00
Alejandro Wainzinger
0bac06b2c0 Add setting to enable/disable Adium now-playing (defaults to off, and only shows up on macs). 2011-05-07 15:45:34 -07:00
Alejandro Wainzinger
f4b4a021ee Add resumed, stopped, paused info. 2011-05-07 13:26:21 -07:00
Alejandro Wainzinger
8cc0277cca Catch up to the InfoSystem. 2011-05-07 12:25:17 -07:00
Alejandro Wainzinger
09817a7836 Merge branch 'master' into adiumpush
Conflicts:
	src/libtomahawk/infosystem/infosystemworker.cpp
2011-05-07 12:12:58 -07:00
Alejandro Wainzinger
fb9069320e Build AdiumPlugin, now a pushInfo-using InfoPlugin. 2011-05-07 12:03:52 -07:00
Alejandro Wainzinger
ccc4db2270 Copy over Adium files from Adium branch. 2011-05-05 22:14:30 -07:00
494 changed files with 19559 additions and 7051 deletions

6
.gitignore vendored
View File

@@ -11,4 +11,8 @@ moc_*
/tomahawk
thirdparty/qtweetlib/WARNING-twitter-api-keys
.kdev4
tomahawk.kdev4
*.kdev4
*.kate-swp
clang/
win/
gcc/

View File

@@ -1,5 +1,6 @@
PROJECT( tomahawk )
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
SET( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules" )
IF( ${CMAKE_VERSION} VERSION_GREATER 2.8.3 )
CMAKE_POLICY(SET CMP0017 NEW)
@@ -11,41 +12,73 @@ ENDIF( ${CMAKE_VERSION} VERSION_GREATER 2.8.3 )
SET( TOMAHAWK_ORGANIZATION_NAME "Tomahawk" )
SET( TOMAHAWK_ORGANIZATION_DOMAIN "tomahawk-player.org" )
SET( TOMAHAWK_APPLICATION_NAME "Tomahawk" )
SET( TOMAHAWK_VERSION "0.1.0" )
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_RC 0 )
# build options
option(BUILD_GUI "Build Tomahawk with GUI" ON)
option(BUILD_RELEASE "Generate TOMAHAWK_VERSION without GIT info" OFF)
# generate version string
# base string used in release and unstable builds
SET( TOMAHAWK_VERSION ${TOMAHAWK_VERSION_MAJOR}.${TOMAHAWK_VERSION_MINOR}.${TOMAHAWK_VERSION_PATCH} )
IF( TOMAHAWK_VERSION_RC )
SET( TOMAHAWK_VERSION ${TOMAHAWK_VERSION}rc${TOMAHAWK_VERSION_RC} )
ENDIF()
# additional info for non-release builds
IF( NOT BUILD_RELEASE )
INCLUDE( CMakeDateStamp )
SET( TOMAHAWK_VERSION_DATE "${CMAKE_DATESTAMP_YEAR}${CMAKE_DATESTAMP_MONTH}${CMAKE_DATESTAMP_DAY}" )
IF( ${TOMAHAWK_VERSION_DATE} GREATER 0)
SET( TOMAHAWK_VERSION ${TOMAHAWK_VERSION}.${TOMAHAWK_VERSION_DATE} )
ENDIF()
INCLUDE( CMakeVersionSource )
IF( CMAKE_VERSION_SOURCE )
SET( TOMAHAWK_VERSION ${TOMAHAWK_VERSION}-${CMAKE_VERSION_SOURCE} )
ENDIF()
ENDIF()
# set paths
SET( CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_SOURCE_DIR}/CMakeModules" )
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}")
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}" )
# Check if we need qtgui:
IF( "${gui}" STREQUAL "no" )
ADD_DEFINITIONS( -DENABLE_HEADLESS )
MESSAGE( STATUS "Building in HEADLESS mode ***" )
FIND_PACKAGE( Qt4 4.7.0 COMPONENTS QtCore QtXml QtNetwork REQUIRED )
ELSE()
MESSAGE( STATUS "Building full GUI version ***" )
FIND_PACKAGE( Qt4 4.7.0 COMPONENTS QtGui QtCore QtXml QtNetwork REQUIRED )
ENDIF()
# installer creation
INCLUDE( TomahawkCPack.cmake )
#deps
INCLUDE( MacroOptionalFindPackage )
INCLUDE( MacroLogFeature )
# required
#While we distribute our own liblastfm2, don't need to look for it
#macro_optional_find_package(LibLastFm 0.3.3)
#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)
# Check if we need qtgui:
SET(NEEDED_QT4_COMPONENTS QtCore QtXml QtNetwork )
IF( NOT BUILD_GUI )
ADD_DEFINITIONS( -DENABLE_HEADLESS )
MESSAGE( STATUS "Building Tomahawk ${TOMAHAWK_VERSION} in HEADLESS mode ***" )
ELSE()
MESSAGE( STATUS "Building Tomahawk ${TOMAHAWK_VERSION} full GUI version ***" )
LIST(APPEND NEEDED_QT4_COMPONENTS "QtGui" "QtWebkit" )
ENDIF()
find_package(Phonon REQUIRED)
if(PHONON_VERSION STRLESS "4.5.0")
message(FATAL_ERROR "Phonon version 4.5.0 or higher is required, you have version ${PHONON_VERSION}")
else()
message(STATUS "Phonon found; ensure that phonon-vlc is at least 0.4")
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")
macro_optional_find_package(Phonon 4.5.0)
macro_log_feature(PHONON_FOUND "Phonon" "The Phonon multimedia library" "http://phonon.kde.org" TRUE "" "")
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)
@@ -59,6 +92,20 @@ macro_log_feature(QJSON_FOUND "QJson" "Qt library that maps JSON data to QVarian
macro_optional_find_package(Taglib 1.6.0)
macro_log_feature(TAGLIB_FOUND "TagLib" "Audio Meta-Data Library" "http://developer.kde.org/~wheeler/taglib.html" TRUE "" "taglib is needed for reading meta data from audio files")
include( CheckTagLibFileName )
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
# required
#While we distribute our own liblastfm2, don't need to look for it
#macro_optional_find_package(LibLastFm 0.3.3)
#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)
# this installs headers and such and should really be handled in a separate package by packagers
IF( INTERNAL_JREEN )
@@ -71,7 +118,7 @@ IF( INTERNAL_JREEN )
ELSE( INTERNAL_JREEN )
macro_optional_find_package(Jreen)
ENDIF( INTERNAL_JREEN )
macro_log_feature(LIBJREEN_FOUND "Jreen" "Qt XMPP Library" "http://gitorious.org/jreen/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")
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 )
@@ -95,10 +142,16 @@ SET( LIBPORTFWD_LIBRARIES ${LIBPORTFWD_LIBRARY} )
ADD_SUBDIRECTORY( ${THIRDPARTY_DIR}/libportfwd )
# we need pthreads too
find_package(Threads)
macro_optional_find_package(Threads)
macro_log_feature(THREADS_FOUND "Threads" "Threading Library" "" TRUE "" "Platform specific library for threading")
find_package(KDE4Installed)
find_package(KDE4)
macro_optional_find_package(KDE4)
macro_optional_find_package(KDE4Installed)
# this was used before we had FindKDE4Installed, just leaving it here to keep the flags
# for future kde integration
# 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} )
@@ -107,9 +160,6 @@ ELSE()
SET( CLEAN_C_FLAGS ${CMAKE_C_FLAGS} )
ENDIF()
include( CheckTagLibFileName )
check_taglib_filename( COMPLEX_TAGLIB_FILENAME )
IF( WIN32 )
find_library(QTSPARKLE_LIBRARIES qtsparkle)
ENDIF( WIN32 )

View File

@@ -1,3 +1,5 @@
SET(WINDRES_EXECUTABLE ${CMAKE_RC_COMPILER})
# This macro is taken from kdelibs/cmake/modules/KDE4Macros.cmake.
#
# Copyright (c) 2006-2009 Alexander Neundorf, <neundorf@kde.org>

View File

@@ -0,0 +1,23 @@
find_program(DATE_EXECUTABLE NAMES date)
mark_as_advanced(DATE_EXECUTABLE)
if(DATE_EXECUTABLE)
execute_process(
COMMAND ${DATE_EXECUTABLE} +%Y
OUTPUT_VARIABLE CMAKE_DATESTAMP_YEAR
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
execute_process(
COMMAND ${DATE_EXECUTABLE} +%m
OUTPUT_VARIABLE CMAKE_DATESTAMP_MONTH
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
execute_process(
COMMAND ${DATE_EXECUTABLE} +%d
OUTPUT_VARIABLE CMAKE_DATESTAMP_DAY
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
endif()

View File

@@ -0,0 +1,45 @@
# Try to identify the current development source version.
set(CMAKE_VERSION_SOURCE "")
if(EXISTS ${CMAKE_SOURCE_DIR}/.git/HEAD)
find_program(GIT_EXECUTABLE NAMES git git.cmd)
mark_as_advanced(GIT_EXECUTABLE)
if(GIT_EXECUTABLE)
execute_process(
COMMAND ${GIT_EXECUTABLE} rev-parse --verify -q --short=7 HEAD
OUTPUT_VARIABLE head
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
if(head)
set(branch "")
execute_process(
COMMAND ${GIT_EXECUTABLE} name-rev HEAD
OUTPUT_VARIABLE branch
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
string(REGEX REPLACE "HEAD " "" branch "${branch}")
set(CMAKE_VERSION_SOURCE "git-${branch}-${head}")
execute_process(
COMMAND ${GIT_EXECUTABLE} update-index -q --refresh
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
execute_process(
COMMAND ${GIT_EXECUTABLE} diff-index --name-only HEAD --
OUTPUT_VARIABLE dirty
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
if(dirty)
set(CMAKE_VERSION_SOURCE "${CMAKE_VERSION_SOURCE}-dirty")
endif()
endif()
endif()
elseif(EXISTS ${CMAKE_SOURCE_DIR}/CVS/Repository)
file(READ ${CMAKE_SOURCE_DIR}/CVS/Repository repo)
set(branch "")
if("${repo}" MATCHES "\\.git/")
string(REGEX REPLACE ".*\\.git/([^\r\n]*).*" "-\\1" branch "${repo}")
endif()
set(CMAKE_VERSION_SOURCE "cvs${branch}")
endif()

View File

@@ -12,9 +12,12 @@
INCLUDE(CheckSymbolExists)
INCLUDE(FindLibraryWithDebug)
if(NOT CLUCENE_MIN_VERSION)
set(CLUCENE_MIN_VERSION "0.9.23")
endif(NOT CLUCENE_MIN_VERSION)
IF(CLucene_FIND_VERSION)
SET(CLUCENE_MIN_VERSION ${CLucene_FIND_VERSION})
ELSEIF()
SET(CLUCENE_MIN_VERSION "0.9.23")
ENDIF(CLucene_FIND_VERSION)
IF(EXISTS ${PROJECT_CMAKE}/CLuceneConfig.cmake)
INCLUDE(${PROJECT_CMAKE}/CLuceneConfig.cmake)

View File

@@ -38,14 +38,14 @@ else(PHONON_FOUND)
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)
if(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
_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)
_phonon_find_version()
else(PHONON_INCLUDE_DIR AND PHONON_LIBRARY)
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)
endif(PHONON_INCLUDE_DIR AND PHONON_LIBRARY AND NOT PHONON_VERSION VERSION_LESS ${Phonon_FIND_VERSION})
if(PHONON_FOUND)
if(NOT PHONON_FIND_QUIETLY)

View File

@@ -0,0 +1,24 @@
[Settings]
NumFields=3
[Field 1]
Type=Label
Left=0
Right=-1
Top=0
Bottom=24
[Field 2]
Type=RadioButton
Left=30
Right=-1
Top=50
Bottom=58
State=1
[Field 3]
Type=RadioButton
Left=30
Right=-1
Top=70
Bottom=78

View File

@@ -20,53 +20,54 @@
!endif
!define MING_BIN "${MING_PATH}/bin"
!define MING_LIB "${MING_PATH}/lib"
!define ROOT_PATH "..\..\.." ; assuming the script is in ROOT/admin/win/nsi
!define BUILD_PATH "${ROOT_PATH}\build"
!define BUILD_PATH "@CMAKE_BINARY_DIR@"
!define SOURCE_PATH "@CMAKE_SOURCE_DIR@"
!define QT_DLL_PATH "${MING_BIN}"
!define SQLITE_DLL_PATH "${MING_LIB}/qt4/plugins/sqldrivers"
!define IMAGEFORMATS_DLL_PATH "${MING_LIB}/qt4/plugins/imageformats"
!define VLC_PATH "${ROOT_PATH}\..\vlc"
!define VLC_PLUGIN_PATH "${VLC_PATH}\plugins"
; We use official release plugins
; mingw32-vlc from obs misses a lot and has even broken ones probably
!define VLC_PATH "${SOURCE_PATH}\admin\win\vlc\prefix" ; SIC! ^
!define VLC_BIN "${VLC_PATH}\bin"
!define VLC_PLUGIN_PATH "${VLC_BIN}\plugins"
!define NSI_PATH "${SOURCE_PATH}/admin/win/nsi"
;-----------------------------------------------------------------------------
; Increment installer revision number as part of this script.
; Installer version
;-----------------------------------------------------------------------------
!define /file REVISION_LAST revision.txt
!define /math REVISION ${REVISION_LAST} + 1
!delfile revision.txt
!appendfile revision.txt ${REVISION}
!ifndef VER_MAJOR && VER_MINOR && VER_BUILD
!define VER_MAJOR "0"
!define VER_MINOR "1"
!define VER_BUILD "0rc2"
!endif
!define VERSION "${VER_MAJOR}.${VER_MINOR}.${VER_BUILD}"
!define VER_MAJOR "@CPACK_PACKAGE_VERSION_MAJOR@"
!define VER_MINOR "@CPACK_PACKAGE_VERSION_MINOR@"
!define VER_BUILD "@CPACK_PACKAGE_VERSION_PATCH@"
!define VERSION "@CPACK_PACKAGE_VERSION@"
;-----------------------------------------------------------------------------
; Installer build timestamp.
;-----------------------------------------------------------------------------
!define /date BUILD_TIME "built on %Y/%m/%d at %I:%M %p (rev. ${REVISION})"
!define /date BUILD_TIME "built on %Y/%m/%d at %I:%M %p"
;-----------------------------------------------------------------------------
; Initial installer setup and definitions.
;-----------------------------------------------------------------------------
Name "Tomahawk"
Name "@CPACK_NSIS_PACKAGE_NAME@"
Caption "Tomahawk Installer"
BrandingText "Tomahawk ${VERSION} -- ${BUILD_TIME}"
OutFile "tomahawk-${VERSION}.exe"
InstallDir "$PROGRAMFILES\Tomahawk"
OutFile "@CPACK_TOPLEVEL_DIRECTORY@/@CPACK_OUTPUT_FILE_NAME@"
InstallDir "$PROGRAMFILES\@CPACK_PACKAGE_INSTALL_DIRECTORY@"
InstallDirRegKey HKCU "Software\Tomahawk" ""
InstType Standard
InstType Full
InstType Minimal
CRCCheck On
SetCompressor /SOLID lzma
SetCompressor @CPACK_NSIS_COMPRESSOR@
RequestExecutionLevel user ;Now using the UAC plugin.
ReserveFile tomahawk.ini
ReserveFile NSIS.InstallOptions.ini
ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll"
@CPACK_NSIS_SECTION_SELECTED_VARS@
;-----------------------------------------------------------------------------
; Include some required header files.
;-----------------------------------------------------------------------------
@@ -89,17 +90,17 @@ ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll"
; Modern User Interface (MUI) defintions and setup.
;-----------------------------------------------------------------------------
!define MUI_ABORTWARNING
!define MUI_ICON installer.ico
!define MUI_UNICON installer.ico
!define MUI_WELCOMEFINISHPAGE_BITMAP welcome.bmp
!define MUI_WELCOMEPAGE_TITLE "Tomahawk ${VERSION} Setup$\r$\nInstaller Build Revision ${REVISION}"
!define MUI_ICON ${NSI_PATH}\installer.ico
!define MUI_UNICON ${NSI_PATH}\installer.ico
!define MUI_WELCOMEFINISHPAGE_BITMAP ${NSI_PATH}\welcome.bmp
!define MUI_WELCOMEPAGE_TITLE "@CPACK_PACKAGE_NAME@ ${VERSION} Setup$\r$\nInstaller"
!define MUI_WELCOMEPAGE_TEXT "This wizard will guide you through the installation.$\r$\n$\r$\n$_CLICK"
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP page_header.bmp
!define MUI_HEADERIMAGE_BITMAP ${NSI_PATH}\page_header.bmp
!define MUI_COMPONENTSPAGE_SMALLDESC
!define MUI_FINISHPAGE_TITLE "Tomahawk Install Completed"
!define MUI_FINISHPAGE_LINK "Click here to visit the Tomahawk website."
!define MUI_FINISHPAGE_LINK_LOCATION "http://tomahawk-player.org/"
!define MUI_FINISHPAGE_TITLE "@CPACK_PACKAGE_NAME@ Install Completed"
!define MUI_FINISHPAGE_LINK "Click here to visit the @CPACK_PACKAGE_NAME@ website."
!define MUI_FINISHPAGE_LINK_LOCATION "http://@TOMAHAWK_ORGANIZATION_DOMAIN@"
!define MUI_FINISHPAGE_NOREBOOTSUPPORT
!ifdef OPTION_FINISHPAGE_RELEASE_NOTES
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
@@ -202,40 +203,37 @@ Function PageReinstall
IntCmp $R0 ${VER_MINOR} build_check new_version older_version
build_check:
ReadRegDWORD $R0 HKLM "Software\Tomahawk" "VersionBuild"
IntCmp $R0 ${VER_BUILD} revision_check new_version older_version
revision_check:
ReadRegDWORD $R0 HKLM "Software\Tomahawk" "VersionRevision"
IntCmp $R0 ${REVISION} same_version new_version older_version
IntCmp $R0 ${VER_BUILD} new_version older_version
new_version:
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.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."
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 2" "Text" "Uninstall before installing"
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 3" "Text" "Do not uninstall"
!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."
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 2" "Text" "Uninstall before installing"
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 3" "Text" "Do not uninstall"
!insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install Tomahawk."
StrCpy $R0 "1"
Goto reinst_start
older_version:
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 1" "Text" "A newer version of Tomahawk is already installed! It is not recommended that you install an older version. If you really want to install this older version, it is better to uninstall the current version first. Select the operation you want to perform and click Next to continue."
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 2" "Text" "Uninstall before installing"
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 3" "Text" "Do not uninstall"
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 1" "Text" "A newer version of Tomahawk is already installed! It is not recommended that you install an older version. If you really want to install this older version, it is better to uninstall the current version first. Select the operation you want to perform and click Next to continue."
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 2" "Text" "Uninstall before installing"
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 3" "Text" "Do not uninstall"
!insertmacro MUI_HEADER_TEXT "Already Installed" "Choose how you want to install Tomahawk."
StrCpy $R0 "1"
Goto reinst_start
same_version:
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 1" "Text" "Tomahawk ${VERSION} is already installed.\r\nSelect the operation you want to perform and click Next to continue."
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 2" "Text" "Add/Reinstall components"
!insertmacro INSTALLOPTIONS_WRITE "tomahawk.ini" "Field 3" "Text" "Uninstall Tomahawk"
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 1" "Text" "Tomahawk ${VERSION} is already installed.\r\nSelect the operation you want to perform and click Next to continue."
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 2" "Text" "Add/Reinstall components"
!insertmacro INSTALLOPTIONS_WRITE "NSIS.InstallOptions.ini" "Field 3" "Text" "Uninstall Tomahawk"
!insertmacro MUI_HEADER_TEXT "Already Installed" "Choose the maintenance option to perform."
StrCpy $R0 "2"
reinst_start:
!insertmacro INSTALLOPTIONS_DISPLAY "tomahawk.ini"
!insertmacro INSTALLOPTIONS_DISPLAY "NSIS.InstallOptions.ini"
FunctionEnd
Function PageLeaveReinstall
!insertmacro INSTALLOPTIONS_READ $R1 "tomahawk.ini" "Field 2" "State"
!insertmacro INSTALLOPTIONS_READ $R1 "NSIS.InstallOptions.ini" "Field 2" "State"
StrCmp $R0 "1" 0 +2
StrCmp $R1 "1" reinst_uninstall reinst_done
StrCmp $R0 "2" 0 +3
@@ -262,7 +260,6 @@ FunctionEnd
# INSTALLER SECTIONS #
# #
##############################################################################
Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER
SectionIn 1 2 3 RO
SetDetailsPrint listonly
@@ -294,8 +291,8 @@ Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER
!endif
;License & release notes.
File "${ROOT_PATH}\LICENSE.txt"
File /oname=NOTES.txt RELEASE_NOTES.txt
File "@CPACK_RESOURCE_FILE_LICENSE@"
File /oname=NOTES.txt ${NSI_PATH}\RELEASE_NOTES.txt
;QT stuff:
File "${QT_DLL_PATH}\QtCore4.dll"
@@ -330,15 +327,15 @@ Section "Tomahawk Player" SEC_TOMAHAWK_PLAYER
File "${MING_BIN}\libdbus-1-3.dll"
File "${MING_BIN}\dbus-daemon.exe"
File "${MING_BIN}\libphonon.dll"
File "${VLC_BIN}\libphonon.dll"
SetOutPath "$INSTDIR\phonon_backend"
File "${MING_BIN}\phonon_backend\phonon_vlc.dll"
File "${VLC_BIN}\phonon_backend\phonon_vlc.dll"
SetOutPath "$INSTDIR"
;VLC
;SetOutPath "$INSTDIR\phonon_backend"
File "${VLC_PATH}\libvlc.dll"
File "${VLC_PATH}\libvlccore.dll"
File "${VLC_BIN}\libvlc.dll"
File "${VLC_BIN}\libvlccore.dll"
SetOutPath "$INSTDIR\plugins"
File /r "${VLC_PLUGIN_PATH}\*.dll"
SetOutPath "$INSTDIR"
@@ -566,7 +563,7 @@ SectionEnd
##############################################################################
Function .onInit
!insertmacro INSTALLOPTIONS_EXTRACT "tomahawk.ini"
!insertmacro INSTALLOPTIONS_EXTRACT "NSIS.InstallOptions.ini"
;Remove Quick Launch option from Windows 7, as no longer applicable - usually.
${IfNot} ${AtMostWinVista}

77
CPackOptions.cmake.in Normal file
View File

@@ -0,0 +1,77 @@
# This file is configured at cmake time, and loaded at cpack time.
# To pass variables to cpack from cmake, they must be configured
# in this file.
if(CPACK_GENERATOR MATCHES "NSIS")
if( NOT EXISTS "@CMAKE_SOURCE_DIR@/admin/win/vlc/")
MESSAGE(FATAL_ERROR "\n You don't have vlc in your admin/win/ dir. \n Please change into that dir and execute 'sh update-vlc.sh'" )
endif()
#SET(CPACK_NSIS_INSTALL_ROOT "@CPACK_NSIS_INSTALL_ROOT@")
# set the install/unistall icon used for the installer itself
# There is a bug in NSI that does not handle full unix paths properly.
#SET(CPACK_NSIS_MUI_ICON "@CMake_SOURCE_DIR@/Utilities/Release\\CMakeLogo.ico")
#SET(CPACK_NSIS_MUI_UNIICON "@CMake_SOURCE_DIR@/Utilities/Release\\CMakeLogo.ico")
# set the package header icon for MUI
#SET(CPACK_PACKAGE_ICON "@CMake_SOURCE_DIR@/Utilities/Release\\CMakeInstall.bmp")
# tell cpack to create links to the doc files
#SET(CPACK_NSIS_MENU_LINKS
# "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake-gui.html" "cmake-gui Help"
# "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake.html" "CMake Help"
# "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake-properties.html"
# "CMake Properties and Variables Help"
# "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/ctest.html" "CTest Help"
# "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake-modules.html" "CMake Modules Help"
# "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cmake-commands.html" "CMake Commands Help"
# "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/cpack.html" "CPack Help"
# "http://www.cmake.org" "CMake Web Site"
# )
# Use the icon from cmake-gui for add-remove programs
#SET(CPACK_NSIS_INSTALLED_ICON_NAME "bin\\cmake-gui.exe")
#
#SET(CPACK_NSIS_PACKAGE_NAME "@CPACK_NSIS_PACKAGE_NAME@")
#SET(CPACK_NSIS_DISPLAY_NAME "@CPACK_NSIS_PACKAGE_NAME@, a cross-platform, open-source build system")
#SET(CPACK_NSIS_HELP_LINK "http://www.cmake.org")
#SET(CPACK_NSIS_URL_INFO_ABOUT "http://www.kitware.com")
#SET(CPACK_NSIS_CONTACT @CPACK_PACKAGE_CONTACT@)
#SET(CPACK_NSIS_MODIFY_PATH ON)
##### all options
#CPACK_NSIS_MUI_ICON The icon file (.ico) for the generated install program. Both this and CPACK_NSIS_MUI_UNIICON need to set for this to have any effect. installer.ico
#CPACK_NSIS_MUI_UNIICON The icon file (.ico) for the generated uninstall program. Both this and CPACK_NSIS_MUI_ICON need to set for this to have any effect. uninstaller.ico
SET( CPACK_PACKAGE_ICON @CMAKE_SOURCE_DIR@/admin/win/nsi/installer.ico ) # A branding image that will be displayed on the top bar inside the installer. installer.bmp
#CPACK_NSIS_EXTRA_INSTALL_COMMANDS Extra NSIS commands that will be added to the install Section. ExecWait '\\\"$INSTDIR\\\\vcredist_x86.exe\\\" /q:a'
#CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS Extra NSIS commands that will be added to the uninstall Section.
SET( CPACK_NSIS_COMPRESSOR "/SOLID lzma" ) # The arguments that will be passed to the NSIS SetCompressor command. /SOLID lzma
#CPACK_NSIS_MODIFY_PATH If this is set to "ON", then an extra page will appear in the installer that will allow the user to choose whether the program directory should be added to the system PATH variable. ON
#CPACK_NSIS_DISPLAY_NAME Undocumented. "${CPACK_PACKAGE_INSTALL_DIRECTORY} My Famous Project"
#CPACK_NSIS_INSTALLED_ICON_NAME Set the icon used for the Windows "Add or Remove Programs" tool. "bin\\\\MyExecutable.exe"
#CPACK_NSIS_HELP_LINK Adds link to registry. URI. "http:\\\\\\\\www.my-project-home-page.org"
#CPACK_NSIS_URL_INFO_ABOUT Adds link to registry and the vendor in add/remove programs' "Click here for support information" in program entry links here. "http:\\\\\\\\www.my-personal-home-page.com"
#CPACK_NSIS_CONTACT Adds link to add/remove programs' "Click here for support information" in program entry. "me@my-personal-home-page.com"
#CPACK_NSIS_CREATE_ICONS_EXTRA Additional NSIS commands for creating start menu shortcuts. set(CPACK_NSIS_CREATE_ICONS "CreateShortCut '\$SMPROGRAMS\\\\$STARTMENU_FOLDER\\\\${PROJECT_NAME}.lnk' '\$INSTDIR\\\\${PROJECT_NAME}.exe'")
#CPACK_NSIS_DELETE_ICONS_EXTRA Undocumented. Possibly: Additional NSIS commands to uninstall start menu shortcuts.
#CPACK_NSIS_MENU_LINKS Used to override the Start Menu links. "doc/cmake-@CMake_VERSION_MAJOR@.@CMake_VERSION_MINOR@/CMakeSetup.html" "CMakeSetup Help"
#CPACK_NSIS_MUI_FINISHPAGE_RUN If used, will make it possible for user to choose (on an additional page, displayed at the end of the installation) to run intalled program. Should point to program name to run, seemingly without any sub-directories of the installation directory in case program installed in such sub-directories (but please check generated NSIS script if you can't make it work). "MyExecutable.exe"
endif(CPACK_GENERATOR MATCHES "NSIS")
## include the cpack options for qt dialog if they exisit
## they might not if qt was not enabled for the build
#INCLUDE("@QT_DIALOG_CPACK_OPTIONS_FILE@" OPTIONAL)
#if("${CPACK_GENERATOR}" STREQUAL "PackageMaker")
# if(CMAKE_PACKAGE_QTGUI)
# set(CPACK_PACKAGE_DEFAULT_LOCATION "/Applications")
# else(CMAKE_PACKAGE_QTGUI)
# set(CPACK_PACKAGE_DEFAULT_LOCATION "/usr")
# endif(CMAKE_PACKAGE_QTGUI)
#endif("${CPACK_GENERATOR}" STREQUAL "PackageMaker")
SET( CMAKE_SOURCE_DIR @CMAKE_SOURCE_DIR@ )
SET( CMAKE_BINARY_DIR @CMAKE_BINARY_DIR@ )

View File

@@ -1,22 +1,87 @@
Version 0.2.1:
* Fixed a crash caused by using Javascript resolvers.
* Fixed searching with Javascript resolvers.
Version 0.2.0:
* Re-resolve queries when their resolved-to source goes offline.
* Cleanup formatting of Preference/Configure and Diagnostics windows.
* Add selection indicator on album art.
* Fix inability to create Echonest playlists based solely on style or mood.
* Created new Artist & Album page, showing various related information.
* Update playlists in dashboard to keep them in sync.
* Support Rdio track URLs and ability to drop them onto Tomahawk.
* Change "Recently Played" page to "Dashboard".
* Prioritize resolving newer queries to make GUI more responsive.
* Automatically expand local collection node in sidebar on launch.
* Display spinner animation while searching for tracks.
* Let Tomahawk-headless users trigger a rescan with --filescan.
* Include Stations and Automatic Playlists in "New Stations and Playlists".
* Always keep current page and sidebar selection in sync.
* New icon theme and many design tweaks.
* Fixed bug where drop indicator wouldn't show below the last track of a
playlist.
* Added support for "playing" Spotify track URLs (and t.co and bit.ly
shortened track URLs) and ability to drag/drop them into Tomahawk.
* Added support for JSPF playlists (XSPF via JSON).
* Scroll per pixel to making scrolling feel more natural.
* Filter out duplicate tracks in Collection tree view.
* Spotify resolver now honors SOCKS5 proxy settings.
* Made "show offline sources" menu option a toggle instead of two separate
entries.
* Properly decode escaped characters coming from HTTP API.
* Handle/display resolver file paths becoming invalid in Preferences.
* Fixed track skipping-on-pause bug when using Gstreamer backend.
* Fixed a few crashes that could occur when fetching data from Last.fm.
* Made Twitter dialog more readable/understandable.
* Fixed streaming from https:// links.
* Implement new Javascript resolver API and ability to present config
dialogs for resolvers.
* Show when a track was played in the Recently Played tracks history.
* Added context menus for Artists and Albums.
* Fixed playlist bugs that would cause track to stop playing when dropping
or moving items in the same playlist.
* Set volume to 75% on startup.
* Added "listen along" feature (and ability to "catch up").
* Added "love" feature - also "loves" track on Last.fm.
* Twitter checks for updates less often now, saving user API calls from
running out when using multiple clients.
* Added score column and score bars to indicate resolver match certainty.
* Added "New Additions" page for each source.
* Improved tomahawk:// link handling. Added support for http://toma.hk/.
* Fixed sorting by file size.
* Improved the way Adium status is updated with now-playing information.
* Re-resolve tracks when a resolver is added/removed/enabled/disabled.
* Added global search function that searches all available sources.
* Collection scanner can now run automatically, watching files and dirs for
changes.
* Added Pipeline status view.
* Allow seeking in songs - if supported by audio backend.
* Added ability to make a copy of a peer's playlist.
* Shuffle and Repeat settings are stored on a playlist by playlist basis.
* (Linux) Desktop notifications for now playing.
* (OS X) Removed "test login" button from Last.fm settings.
* (OS X) Added MediaKey support.
* (OS X) Don't quit on window close to conform to best practices.
Version 0.1.0:
* Fixed stations so they resolve against all available sources instead of
only local and friend's collections.
* Add a Song seed for stations and automatic playlists, and allow dragging of
any tracks to the New Stations entry to create a pre-seeded station.
* Add a Song seed for stations and automatic playlists, and allow dragging
of any tracks to the New Stations entry to create a pre-seeded station.
* Added auto-completion for artists while filling in a station or automatic
playlist.
* SOCKS5 proxy support. Noproxy hosts are also supported but no wildcard
support (yet).
* Support loading of - and exporting to - .xspf playlists
* Added Tomahawk:// protocol support and share links for many things including
tracks, playlists, and stations.
* Support loading of - and exporting to - .xspf playlists.
* Added Tomahawk:// protocol support and share links for many things
including tracks, playlists, and stations.
* Autoload automatically detected resolvers on startup.
* Fix issue where track resolving spinner never stopped if tracks were
removed from playlist while resolving.
* Twitter & Jabber profile pictures are shown.
* Fix issues with stations where multiple tracks could be added at once.
* Allow multiple accounts of the same type.
* Add new Google account type that is a thin wrapper around a Jabber plugin.
* Add new Google account type, a thin wrapper around a Jabber plugin.
* Overhaul the settings dialog interface.
* Resolvers can now be enabled and disabled, and some can be configured
directly in Tomahawk, for example the new Spotify resolver.
@@ -24,21 +89,21 @@ Version 0.1.0:
as a node under the Super Collection.
* Fix massive speed bottleneck on startup in the case of many recently
played playlists.
* Removed filter and song view from Super Collection, coming back in the next
release.
* Removed filter and song view from Super Collection, coming back in the
next release.
* Browse and play collections in our snappy tree-mode, which also shows
images for artists and albums.
* Fixed crash that could occur when playing a track from a browser.
* Fixed a crash caused by sources going on or offline.
* Huge optimizations in the resolving pipeline.
* Improved the handling of automatic status messages for Google Talk
* Improved the handling of automatic status messages for Google Talk.
* Switch to Phonon sound system, allowing us to support a wide variety
of audio formats.
* UI tweaks and cleanup.
* (OS X) Open configuration dialogs as sliding sheets.
* (OS X) Increase our available file watches to the maximum that the system
reports.
* (OS X) Added 'Window' menu with zoom/minimize actions
* (OS X) Added 'Window' menu with zoom/minimize actions.
Version 0.0.3:
* Show spinner while resolving playlists.
@@ -57,8 +122,9 @@ Version 0.0.3:
* Faster painting of playlists with lots of unresolved tracks.
* Prefer local results when results' score is equal.
* (Windows) The tomahawk:// protocol handler works on Windows now.
* (Windows) Fixed launching Tomahawk from Windows installer with admin privileges.
* (Windows) Prevent launching a second instance on Windows.
* (Windows) Fixed launching Tomahawk from Windows installer with admin
privileges.
Version 0.0.2:
* Don't reconnect to Jabber if the settings dialog is closed successfully

4
README
View File

@@ -19,6 +19,10 @@ Detailed building instructions for OS X
---------------------------------------
See: http://wiki.tomahawk-player.org/mediawiki/index.php/Building_OS_X_Application_Bundle_on_Snow_Leopard_(10.6)
Doxygen Documentation
---------------------
See: http://dev.tomahawk-player.org/api/classes.html
Dependencies
------------

53
TomahawkCPack.cmake Normal file
View File

@@ -0,0 +1,53 @@
INCLUDE( InstallRequiredSystemLibraries )
SET( CPACK_PACKAGE_CONTACT "Dominik Schmidt <domme@tomahawk-player.org>" )
SET( CPACK_PACKAGE_FILE_NAME tomahawk-${TOMAHAWK_VERSION} ) # Package file name without extension. Also a directory of installer cmake-2.5.0-Linux-i686
# CPACK_GENERATOR CPack generator to be used STGZ;TGZ;TZ
# CPACK_INCLUDE_TOPLEVEL_DIRECTORY Controls whether CPack adds a top-level directory, usually of the form ProjectName-Version-OS, to the top of package tree. 0 to disable, 1 to enable
# CPACK_INSTALL_CMAKE_PROJECTS List of four values: Build directory, Project Name, Project Component, Directory in the package /home/andy/vtk/CMake-bin;CMake;ALL;/
SET( CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README" ) # File used as a description of a project /path/to/project/ReadMe.txt
SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${TOMAHAWK_DESCRIPTION_SUMMARY} ) # Description summary of a project
# CPACK_PACKAGE_EXECUTABLES List of pairs of executables and labels. Used by the NSIS generator to create Start Menu shortcuts. ccmake;CMake
SET( CPACK_PACKAGE_INSTALL_DIRECTORY ${TOMAHAWK_APPLICATION_NAME} ) # Installation directory on the target system -> C:\Program Files\fellody
SET( CPACK_PACKAGE_INSTALL_REGISTRY_KEY ${TOMAHAWK_APPLICATION_NAME} ) # Registry key used when installing this project CMake 2.5.0
SET( CPACK_PACKAGE_NAME ${TOMAHAWK_APPLICATION_NAME} ) # Package name, defaults to the project name
SET( CPACK_PACKAGE_VENDOR ${TOMAHAWK_ORGANIZATION_NAME} ) # Package vendor name
SET( CPACK_PACKAGE_VERSION_MAJOR ${TOMAHAWK_VERSION_MAJOR} )
SET( CPACK_PACKAGE_VERSION_MINOR ${TOMAHAWK_VERSION_MINOR} )
SET( CPACK_PACKAGE_VERSION_PATCH ${TOMAHAWK_VERSION_PATCH} )
# CPACK_SOURCE_GENERATOR List of generators used for the source package TGZ;TZ
SET( CPACK_SOURCE_GENERATOR TGZ )
SET( CPACK_SOURCE_IGNORE_FILES "/\\\\.git/" ".*~$" ".kate-swp$" "/build_dir/" "/clang/" "/gcc/" "/build/" "/win/" ) # Pattern of files in the source tree that won't be packaged
SET( CPACK_SOURCE_PACKAGE_FILE_NAME tomahawk-${TOMAHAWK_VERSION} ) # Name of the source package
# CPACK_SOURCE_STRIP_FILES List of files in the source tree that will be stripped. Starting with CMake 2.6.0 CPACK_SOURCE_STRIP_FILES will be a boolean variable which enables stripping of all files (a list of files evaluates to TRUE in CMake, so this change is compatible).
# CPACK_STRIP_FILES List of files to be stripped. Starting with CMake 2.6.0 CPACK_STRIP_FILES will be a boolean variable which enables stripping of all files (a list of files evaluates to TRUE in CMake, so this change is compatible). bin/ccmake;bin/cmake;bin/cpack;bin/ctest
# CPACK_SYSTEM_NAME System name, defaults to the value of ${CMAKE_SYSTEM_NAME}. Linux-i686
# Advanced settings
# CPACK_CMAKE_GENERATOR What CMake generator should be used if the project is CMake project. Defaults to the value of CMAKE_GENERATOR. Unix Makefiles
SET( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt" ) # License file for the project, used by the STGZ, NSIS, and PackageMaker generators. /home/andy/vtk/CMake/Copyright.txt
# CPACK_RESOURCE_FILE_README ReadMe file for the project, used by PackageMaker generator. /home/andy/vtk/CMake/Templates/CPack.GenericDescription.txt
# CPACK_RESOURCE_FILE_WELCOME Welcome file for the project, used by PackageMaker generator. /home/andy/vtk/CMake/Templates/CPack.GenericWelcome.txt
SET( CPACK_PACKAGE_VERSION ${TOMAHAWK_VERSION} )
SET( CPACK_TOPLEVEL_TAG "narf" ) # Directory for the installed files. - needed to provide anything to avoid an error# CPACK_INSTALL_COMMANDS Extra commands to install components.
# CPACK_INSTALL_DIRECTORIES Extra directories to install.
# CPACK_MONOLITHIC_INSTALL When set disables the component-based installer.
# CPACK_PACKAGING_INSTALL_PREFIX Sets the default root that the generated package installs into, '/usr' is the default for the debian and redhat generators /usr/local
##
# INSTALL DEPS
##
# Set the options file that needs to be included inside CMakeCPackOptions.cmake
#SET(QT_DIALOG_CPACK_OPTIONS_FILE ${CMake_BINARY_DIR}/Source/QtDialog/QtDialogCPack.cmake)
configure_file("${CMAKE_SOURCE_DIR}/CPackOptions.cmake.in"
"${CMAKE_BINARY_DIR}/CPackOptions.cmake" @ONLY)
set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_BINARY_DIR}/CPackOptions.cmake") # File included at cpack time, once per generator after setting CPACK_GENERATOR to the actual generator being used; allows per-generator setting of CPACK_* variables at cpack time. ${PROJECT_BINARY_DIR}/CPackOptions.cmake
include(CPack)

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
@@ -23,40 +23,42 @@
<key>CFBundleName</key>
<string>Tomahawk</string>
<key>LSMinimumSystemVersion</key>
<string>10.5.0</string>
<key>SUFeedURL</key>
<string>http://download.tomahawk-player.org/sparkle</string>
<key>SUPublicDSAKeyFile</key>
<string>sparkle_pub.pem</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>Tomahawk URL</string>
<key>CFBundleURLSchemes</key>
<array>
<string>tomahawk</string>
</array>
</dict>
</array>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>xspf</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>Generic.icns</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/xspf+xml</string>
</array>
<key>CFBundleTypeName</key>
<string>XSPF Playlist</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
</array>
<string>10.5.0</string>
<key>SUFeedURL</key>
<string>http://download.tomahawk-player.org/sparkle/update.php</string>
<key>SUPublicDSAKeyFile</key>
<string>sparkle_pub.pem</string>
<key>SUEnableSystemProfiling</key>
<true/>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>Tomahawk URL</string>
<key>CFBundleURLSchemes</key>
<array>
<string>tomahawk</string>
</array>
</dict>
</array>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>xspf</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>Generic.icns</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/xspf+xml</string>
</array>
<key>CFBundleTypeName</key>
<string>XSPF Playlist</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
</dict>
</array>
</dict>
</plist>

View File

@@ -1,64 +0,0 @@
#!/bin/sh
# author: max@last.fm
# usage: Run from inside the bundle root directory, eg. Last.fm.app
# The first parameter should be the QtFrameworks to copy.
# Remaining parameters are plugins to copy, directories and files are
# valid.
# eg: add-Qt-to-bundle.sh 'QtCore QtGui QtXml' \
# imageformats \
# sqldrivers/libsqlite.dylib
################################################################################
QT_FRAMEWORKS_DIR="$QTDIR/lib"
QT_PLUGINS_DIR="$QTDIR/plugins"
if [[ ! -d "$QTDIR/lib/QtCore.framework" ]]
then
# this dir is the location of install for the official Trolltech dmg
if [[ -d /Library/Frameworks/QtCore.framework ]]
then
QT_FRAMEWORKS_DIR=/Library/Frameworks
QT_PLUGINS_DIR=/Developer/Applications/Qt/plugins
fi
fi
echo "Plugins go to: $QT_PLUGINS_DIR"
if [ -z $QTDIR ]
then
echo QTDIR must be set, or install the official Qt dmg
exit 1
fi
################################################################################
#first frameworks
mkdir -p Contents/Frameworks
for x in $1
do
echo "C $x"
cp -R $QT_FRAMEWORKS_DIR/$x.framework Contents/Frameworks/
chmod -R u+rw Contents/Frameworks/
done
#plugins
shift
mkdir -p Contents/MacOS
mkdir -p Contents/MacOS/sqldrivers
mkdir -p Contents/MacOS/imageformats
mkdir -p Contents/MacOS/phonon_backend
mkdir -p Contents/MacOS/crypto
cp -R $QT_PLUGINS_DIR/sqldrivers/libqsqlite.dylib Contents/MacOS/sqldrivers/
cp -R $QT_PLUGINS_DIR/imageformats/libqgif.dylib Contents/MacOS/imageformats/
cp -R $QT_PLUGINS_DIR/imageformats/libqjpeg.dylib Contents/MacOS/imageformats/
cp -R $QT_PLUGINS_DIR/imageformats/libqico.dylib Contents/MacOS/imageformats/
cp -R $QT_PLUGINS_DIR/imageformats/libqmng.dylib Contents/MacOS/imageformats/
cp -R $QT_PLUGINS_DIR/imageformats/libqsvg.dylib Contents/MacOS/imageformats/
cp -R $QT_PLUGINS_DIR/imageformats/libqtiff.dylib Contents/MacOS/imageformats/
cp -R $QT_PLUGINS_DIR/crypto/libqca-ossl.dylib Contents/MacOS/crypto/
cp -R $QT_PLUGINS_DIR/phonon_backend/phonon_vlc.so Contents/MacOS/phonon_backend/
#cleanup
find Contents/Frameworks -name Headers -o -name \*.prl -o -name \*_debug | xargs rm -rf
find Contents -name \*_debug -o -name \*_debug.dylib | xargs rm

View File

@@ -1,16 +0,0 @@
#!/bin/sh
# author: lfranchi@kde.org
# usage: Run from inside the bundle root directory, eg. Tomahawk.app
# The first parameter should be the spotify resolver binary to copy.
# eg: add-spotify.sh /path/to/spotify_tomahawkresolver
################################################################################
mkdir -p Contents/Frameworks
cp -R /Library/Frameworks/libspotify.framework Contents/Frameworks
install_name_tool -change /usr/local/Cellar/qt/4.7.3/lib/QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore $1
install_name_tool -change /usr/local/Cellar/qt/4.7.3/lib/QtNetwork.framework/Versions/4/QtNetwork @executable_path/../Frameworks/QtNetwork.framework/Versions/4/QtNetwork $1
install_name_tool -change libqjson.0.dylib @executable_path/libqjson.0.7.1.dylib $1
install_name_tool -change /usr/local/Cellar/qjson/0.7.1/lib/libqjson.0.7.1.dylib @executable_path/libqjson.0.7.1.dylib $1
mkdir -p Contents/MacOS
cp $1 Contents/MacOS/

View File

@@ -23,65 +23,28 @@ then
fi
ROOT=`pwd`
QTDIR=`which qmake`
LINKDIR=`readlink $QTDIR`
QTDIR=`dirname $QTDIR`
QTDIR=$QTDIR/`dirname $LINKDIR`
QTDIR=`dirname $QTDIR`
test -L "$QTDIR" && QTDIR=`readlink $QTDIR`
echo "Goes here: $QTDIR"
export QMAKESPEC='macx-g++'
export QTDIR
export VERSION
export QTVERSION='4.7.3'
################################################################################
CLEAN='1'
BUILD='1'
NOTQUICK='1'
CREATEDMG='1'
VERSION=$1
header "Adding Qt to app bundle"
cd tomahawk.app
$ROOT/../admin/mac/add-Qt-to-bundle.sh \
'QtCore QtGui QtXml QtNetwork QtSql QtXmlPatterns QtWebKit phonon'
# 'QtCore QtGui QtXml QtNetwork QtSql QtXmlPatterns QtWebKit QtDbus phonon'
################################################################################
header "Renaming files"
mv tomahawk.app Tomahawk.app
mv Tomahawk.app/Contents/MacOS/tomahawk Tomahawk.app/Contents/MacOS/Tomahawk
header "Fixing and copying libraries"
$ROOT/../admin/mac/macdeploy.py Tomahawk.app quiet
cd Tomahawk.app
header "Renaming icon"
mv Contents/Resources/tomahawkSources.icns Contents/Resources/Tomahawk.icns
mv Contents/MacOS/tomahawk Contents/MacOS/Tomahawk
# cp $ROOT/../admin/mac/Info.plist Contents/Info.plist
cp $ROOT/../admin/mac/qt.conf Contents/Resources/qt.conf
header "Copying VLC plugins into bundle"
mkdir -p Contents/plugins
cp -R /usr/local/Cellar/vlc-git/HEAD/lib/vlc/plugins/ Contents/plugins
rm -rf Contents/plugins/video_* Contents/plugins/gui Contents/plugins/*/libold* Contents/plugins/*/libvcd* Contents/plugins/*/libdvd* \
Contents/plugins/*/liblibass* Contents/plugins/*/libx264* Contents/plugins/*/libschroe* Contents/plugins/*/liblibmpeg2* \
Contents/plugins/*/libstream_out_* Contents/plugins/*/libmjpeg_plugin* Contents/plugins/*/libh264_plugin* Contents/plugins/*/libzvbi_plugin* Contents/plugins/*/lib*sub*
header "Running install_name_tool"
$ROOT/../admin/mac/deposx.sh
header "Copying Sparkle pubkey & framework, and qt.conf"
cp $ROOT/../admin/mac/sparkle_pub.pem Contents/Resources
header "Copying Sparkle framework"
cp -R /Library/Frameworks/Sparkle.framework Contents/Frameworks
cp $ROOT/../admin/mac/qt.conf Contents/Resources
header "Adding spotify resolver to bundle if spotify_tomahawkresolver found in $ROOT"
if [ -e $ROOT/spotify_tomahawkresolver ]
then
header "Found, so adding spotify resolver."ac
$ROOT/../admin/mac/add-spotify.sh $ROOT/spotify_tomahawkresolver
fi
header "Creating DMG"
cd ..
mv tomahawk.app Tomahawk.app
$ROOT/../admin/mac/create-dmg.sh Tomahawk.app
mv Tomahawk.dmg Tomahawk-$VERSION.dmg

View File

@@ -1,164 +0,0 @@
#!/bin/sh
# author: max@last.fm, chris@last.fm
################################################################################
if [ -z $QTDIR ]
then
echo QTDIR must be set
exit 1
fi
if [ -z $QTVERSION ]
then
echo QTVERSION must be set
exit 1
fi
cd ..
ORIGROOT=`pwd`
cd -
cd Contents
QTLIBS=`ls Frameworks | cut -d. -f1`
LIBS=`cd MacOS && ls -fR1 | grep dylib`
PLUGINFOLDERS=`ls plugins | cut -d. -f1`
################################################################################
function import_lib
{
echo "L \`$1'"
cp -R -L $1 MacOS/`basename $1`
chmod u+rw MacOS/`basename $1`
deplib_change MacOS/`basename $1`
deposx_change MacOS/`basename $1`
}
function deposx_change
{
echo "D \`$1'"
echo $QTDIR
for y in $QTLIBS
do
install_name_tool -change $QTDIR/lib/$y.framework/Versions/4/$y \
@executable_path/../Frameworks/$y.framework/Versions/4/$y \
"$1"
install_name_tool -change /usr/local/Cellar/qt/$QTVERSION/lib/$y.framework/Versions/4/$y \
@executable_path/../Frameworks/$y.framework/Versions/4/$y \
"$1"
done
for y in $LIBS
do
install_name_tool -change $y \
@executable_path/$y \
"$1"
done
}
function deplib_change
{
install_name_tool -change /usr/local/Cellar/qjson/0.7.1/lib/libqjson.0.7.1.dylib @executable_path/libqjson.0.7.1.dylib $1
install_name_tool -change /usr/local/lib/libechonest.1.1.dylib @executable_path/libechonest.1.1.dylib $1
install_name_tool -change /usr/local/lib/libclucene-core.1.dylib @executable_path/libclucene-core.1.dylib $1
install_name_tool -change /usr/local/lib/libclucene-shared.1.dylib @executable_path/libclucene-shared.1.dylib $1
install_name_tool -change /usr/local/Cellar/taglib/1.7/lib/libtag.1.7.0.dylib @executable_path/libtag.1.7.0.dylib $1
# install_name_tool -change /usr/local/Cellar/gloox/1.0/lib/libgloox.8.dylib @executable_path/libgloox.8.dylib $1
# install_name_tool -change /usr/local/Cellar/libogg/1.2.0/lib/libogg.0.dylib @executable_path/libogg.0.dylib $1
# install_name_tool -change /usr/local/Cellar/libvorbis/1.3.1/lib/libvorbis.0.dylib @executable_path/libvorbis.0.dylib $1
# install_name_tool -change /usr/local/Cellar/libvorbis/1.3.1/lib/libvorbisfile.3.dylib @executable_path/libvorbisfile.3.dylib $1
# install_name_tool -change /usr/local/Cellar/mad/0.15.1b/lib/libmad.0.dylib @executable_path/libmad.0.dylib $1
# install_name_tool -change /usr/local/Cellar/flac/1.2.1/lib/libFLAC++.6.dylib @executable_path/libFLAC++.6.dylib $1
# install_name_tool -change /usr/local/Cellar/flac/1.2.1/lib/libFLAC.8.dylib @executable_path/libFLAC.8.dylib $1
install_name_tool -change /usr/local/Cellar/kde-phonon/4.5.0/lib/libphonon.4.dylib @executable_path/libphonon.4.dylib $1
install_name_tool -change /usr/local/Cellar/kde-phonon/4.5.0/lib/libphonon.4.5.0.dylib @executable_path/libphonon.4.dylib $1
install_name_tool -change $ORIGROOT/libtomahawklib.dylib @executable_path/libtomahawklib.dylib $1
install_name_tool -change $ORIGROOT/libtomahawk_sipjabber.dylib @executable_path/libtomahawk_sipjabber.dylib $1
install_name_tool -change $ORIGROOT/libtomahawk_sipgoogle.dylib @executable_path/libtomahawk_sipgoogle.dylib $1
install_name_tool -change $ORIGROOT/libtomahawk_siptwitter.dylib @executable_path/libtomahawk_siptwitter.dylib $1
install_name_tool -change $ORIGROOT/libtomahawk_sipzeroconf.dylib @executable_path/libtomahawk_sipzeroconf.dylib $1
install_name_tool -change $ORIGROOT/libtomahawk_qtweetlib.dylib @executable_path/libtomahawk_qtweetlib.dylib $1
install_name_tool -change $ORIGROOT/libtomahawk_portfwd.dylib @executable_path/libtomahawk_portfwd.dylib $1
install_name_tool -change $ORIGROOT/libjreen.dylib @executable_path/libjreen.dylib $1
install_name_tool -change /usr/local/Cellar/jreen/HEAD/lib/libjreen.dylib @executable_path/libjreen.dylib $1
install_name_tool -change /usr/local/Cellar/qca/2.0.2/lib/qca.framework/Versions/2/qca @executable_path/../Frameworks/qca.framework/Versions/2/qca $1
install_name_tool -change /usr/local/Cellar/gettext/0.18.1.1/lib/libintl.8.dylib @executable_path/libintl.8.dylib $1
install_name_tool -change /usr/local/Cellar/vlc-git/HEAD/lib/libvlc.5.dylib @executable_path/libvlc.5.dylib $1
install_name_tool -change /usr/local/Cellar/vlc-git/HEAD/lib/libvlccore.4.dylib @executable_path/libvlccore.4.dylib $1
install_name_tool -change libqjson.0.dylib @executable_path/libqjson.0.7.1.dylib $1
install_name_tool -change libechonest.1.1.dylib @executable_path/libechonest.1.1.dylib $1
install_name_tool -change libclucene-core.1.dylib @executable_path/libclucene-core.1.dylib $1
install_name_tool -change libclucene-shared.1.dylib @executable_path/libclucene-shared.1.dylib $1
}
################################################################################
# first all libraries and executables
find MacOS -type f -a -perm -100 | while read x
do
echo $x
y=$(file "$x" | grep 'Mach-O')
deposx_change "$x"
deplib_change "$x"
done
import_lib /usr/local/Cellar/qjson/0.7.1/lib/libqjson.0.7.1.dylib
import_lib /usr/local/Cellar/taglib/1.7/lib/libtag.1.7.0.dylib
#import_lib /usr/local/Cellar/gloox/1.0/lib/libgloox.8.dylib
#import_lib /usr/local/Cellar/libogg/1.2.0/lib/libogg.0.dylib
#import_lib /usr/local/Cellar/libvorbis/1.3.1/lib/libvorbis.0.dylib
#import_lib /usr/local/Cellar/libvorbis/1.3.1/lib/libvorbisfile.3.dylib
#import_lib /usr/local/Cellar/mad/0.15.1b/lib/libmad.0.dylib
#import_lib /usr/local/Cellar/flac/1.2.1/lib/libFLAC++.6.dylib
#import_lib /usr/local/Cellar/flac/1.2.1/lib/libFLAC.8.dylib
import_lib /usr/local/lib/libechonest.1.1.dylib
import_lib /usr/local/lib/libclucene-core.1.dylib
import_lib /usr/local/lib/libclucene-shared.1.dylib
import_lib /usr/local/Cellar/kde-phonon/4.5.0/lib/libphonon.4.dylib
import_lib /usr/local/Cellar/vlc-git/HEAD/lib/libvlc.5.dylib
import_lib /usr/local/Cellar/vlc-git/HEAD/lib/libvlccore.4.dylib
import_lib /usr/local/Cellar/gettext/0.18.1.1/lib/libintl.8.dylib
import_lib $ORIGROOT/libjreen.dylib
import_lib $ORIGROOT/libtomahawklib.dylib
import_lib $ORIGROOT/libtomahawk_sipjabber.dylib
import_lib $ORIGROOT/libtomahawk_sipgoogle.dylib
import_lib $ORIGROOT/libtomahawk_siptwitter.dylib
import_lib $ORIGROOT/libtomahawk_sipzeroconf.dylib
import_lib $ORIGROOT/libtomahawk_qtweetlib.dylib
import_lib $ORIGROOT/libtomahawk_portfwd.dylib
cp -R /usr/local/Cellar/qca/2.0.2/lib/qca.framework Frameworks/
chmod 644 Frameworks/qca.framework/Versions/2/qca
deplib_change Frameworks/qca.framework/Versions/2/qca
deposx_change Frameworks/qca.framework/Versions/2/qca
# now Qt
for x in $QTLIBS
do
echo `pwd`
# ls -l Frameworks/$x.framework/Versions/4/$x
deposx_change Frameworks/$x.framework/Versions/4/$x
install_name_tool -id @executable_path/../Frameworks/$x.framework/Versions/4/$x \
Frameworks/$x.framework/Versions/4/$x
deplib_change "Frameworks/$x.framework/Versions/4/$x"
done
# now VLC plugins
for x in plugins/$PLUGINFOLDERS
do
for plugin in `ls plugins/$x | cut -f1`
do
echo "Fixing VLC plugin: $plugin"
chmod 644 plugins/$x/$plugin
deplib_change plugins/$x/$plugin
done
done

517
admin/mac/macdeploy.py Executable file
View File

@@ -0,0 +1,517 @@
#!/usr/bin/python
# This file is part of Clementine.
#
# Clementine 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.
#
# Clementine 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 Clementine. If not, see <http://www.gnu.org/licenses/>.
import os
import re
import subprocess
import sys
FRAMEWORK_SEARCH_PATH=[
'/Library/Frameworks',
os.path.join(os.environ['HOME'], 'Library/Frameworks')
]
LIBRARY_SEARCH_PATH=['/usr/local/lib', '/usr/local/Cellar/gettext/0.18.1.1/lib', '.']
VLC_PLUGINS=[
'access/libaccess_attachment_plugin.dylib',
#'access/libaccess_avio_plugin.dylib',
'access/libaccess_fake_plugin.dylib',
'access/libaccess_ftp_plugin.dylib',
'access/libaccess_http_plugin.dylib',
'access/libaccess_imem_plugin.dylib',
'access/libaccess_mmap_plugin.dylib',
'access/libaccess_mms_plugin.dylib',
'access/libaccess_realrtsp_plugin.dylib',
'access/libaccess_tcp_plugin.dylib',
'access/libaccess_udp_plugin.dylib',
'access/libcdda_plugin.dylib',
'access/libfilesystem_plugin.dylib',
'access/libqtcapture_plugin.dylib',
'access/librtp_plugin.dylib',
'access/libzip_plugin.dylib',
'access_output/libaccess_output_dummy_plugin.dylib',
'access_output/libaccess_output_file_plugin.dylib',
'access_output/libaccess_output_http_plugin.dylib',
'access_output/libaccess_output_shout_plugin.dylib',
'access_output/libaccess_output_udp_plugin.dylib',
'audio_filter/liba52tofloat32_plugin.dylib',
'audio_filter/liba52tospdif_plugin.dylib',
'audio_filter/libaudio_format_plugin.dylib',
'audio_filter/libaudiobargraph_a_plugin.dylib',
'audio_filter/libchorus_flanger_plugin.dylib',
'audio_filter/libconverter_fixed_plugin.dylib',
'audio_filter/libdolby_surround_decoder_plugin.dylib',
'audio_filter/libdtstofloat32_plugin.dylib',
'audio_filter/libdtstospdif_plugin.dylib',
'audio_filter/libequalizer_plugin.dylib',
'audio_filter/libheadphone_channel_mixer_plugin.dylib',
'audio_filter/libmono_plugin.dylib',
'audio_filter/libmpgatofixed32_plugin.dylib',
'audio_filter/libnormvol_plugin.dylib',
'audio_filter/libparam_eq_plugin.dylib',
'audio_filter/libscaletempo_plugin.dylib',
'audio_filter/libsimple_channel_mixer_plugin.dylib',
'audio_filter/libspatializer_plugin.dylib',
'audio_filter/libtrivial_channel_mixer_plugin.dylib',
'audio_filter/libugly_resampler_plugin.dylib',
'audio_mixer/libfloat32_mixer_plugin.dylib',
'audio_mixer/libspdif_mixer_plugin.dylib',
'audio_mixer/libtrivial_mixer_plugin.dylib',
'audio_output/libaout_file_plugin.dylib',
'audio_output/libauhal_plugin.dylib',
'codec/liba52_plugin.dylib',
'codec/libadpcm_plugin.dylib',
'codec/libaes3_plugin.dylib',
'codec/libaraw_plugin.dylib',
'codec/libavcodec_plugin.dylib',
'codec/libcc_plugin.dylib',
'codec/libcdg_plugin.dylib',
'codec/libdts_plugin.dylib',
'codec/libfaad_plugin.dylib',
'codec/libfake_plugin.dylib',
'codec/libflac_plugin.dylib',
'codec/libfluidsynth_plugin.dylib',
'codec/libinvmem_plugin.dylib',
'codec/liblpcm_plugin.dylib',
'codec/libmpeg_audio_plugin.dylib',
'codec/libpng_plugin.dylib',
'codec/librawvideo_plugin.dylib',
'codec/libspeex_plugin.dylib',
'codec/libspudec_plugin.dylib',
'codec/libtheora_plugin.dylib',
'codec/libtwolame_plugin.dylib',
'codec/libvorbis_plugin.dylib',
'control/libgestures_plugin.dylib',
'control/libhotkeys_plugin.dylib',
'control/libmotion_plugin.dylib',
'control/libnetsync_plugin.dylib',
'control/libsignals_plugin.dylib',
'demux/libaiff_plugin.dylib',
'demux/libasf_plugin.dylib',
'demux/libau_plugin.dylib',
#'demux/libavformat_plugin.dylib',
'demux/libavi_plugin.dylib',
'demux/libdemux_cdg_plugin.dylib',
'demux/libdemuxdump_plugin.dylib',
'demux/libdirac_plugin.dylib',
'demux/libes_plugin.dylib',
'demux/libflacsys_plugin.dylib',
'demux/liblive555_plugin.dylib',
'demux/libmkv_plugin.dylib',
'demux/libmod_plugin.dylib',
'demux/libmp4_plugin.dylib',
'demux/libmpc_plugin.dylib',
'demux/libmpgv_plugin.dylib',
'demux/libnsc_plugin.dylib',
'demux/libnsv_plugin.dylib',
'demux/libnuv_plugin.dylib',
'demux/libogg_plugin.dylib',
'demux/libplaylist_plugin.dylib',
'demux/libps_plugin.dylib',
'demux/libpva_plugin.dylib',
'demux/librawaud_plugin.dylib',
'demux/librawdv_plugin.dylib',
'demux/librawvid_plugin.dylib',
'demux/libreal_plugin.dylib',
'demux/libsmf_plugin.dylib',
'demux/libts_plugin.dylib',
'demux/libtta_plugin.dylib',
'demux/libty_plugin.dylib',
'demux/libvc1_plugin.dylib',
'demux/libvoc_plugin.dylib',
'demux/libwav_plugin.dylib',
'demux/libxa_plugin.dylib',
'meta_engine/libfolder_plugin.dylib',
'meta_engine/libtaglib_plugin.dylib',
'misc/libaudioscrobbler_plugin.dylib',
'misc/libdummy_plugin.dylib',
'misc/libexport_plugin.dylib',
'misc/libfreetype_plugin.dylib',
'misc/libgnutls_plugin.dylib',
'misc/liblogger_plugin.dylib',
'misc/liblua_plugin.dylib',
'misc/libosd_parser_plugin.dylib',
'misc/libquartztext_plugin.dylib',
'misc/libstats_plugin.dylib',
'misc/libvod_rtsp_plugin.dylib',
'misc/libxml_plugin.dylib',
'misc/libxtag_plugin.dylib',
'mmx/libi420_rgb_mmx_plugin.dylib',
'mmx/libi420_yuy2_mmx_plugin.dylib',
'mmx/libi422_yuy2_mmx_plugin.dylib',
'mmx/libmemcpymmx_plugin.dylib',
'mmxext/libmemcpymmxext_plugin.dylib',
'mux/libmux_asf_plugin.dylib',
'mux/libmux_avi_plugin.dylib',
'mux/libmux_dummy_plugin.dylib',
'mux/libmux_mp4_plugin.dylib',
'mux/libmux_mpjpeg_plugin.dylib',
'mux/libmux_ogg_plugin.dylib',
'mux/libmux_ps_plugin.dylib',
'mux/libmux_ts_plugin.dylib',
'mux/libmux_wav_plugin.dylib',
'packetizer/libpacketizer_copy_plugin.dylib',
'packetizer/libpacketizer_dirac_plugin.dylib',
'packetizer/libpacketizer_flac_plugin.dylib',
'packetizer/libpacketizer_h264_plugin.dylib',
'packetizer/libpacketizer_mlp_plugin.dylib',
'packetizer/libpacketizer_mpeg4audio_plugin.dylib',
'packetizer/libpacketizer_mpeg4video_plugin.dylib',
'packetizer/libpacketizer_mpegvideo_plugin.dylib',
'packetizer/libpacketizer_vc1_plugin.dylib',
'sse2/libi420_rgb_sse2_plugin.dylib',
'sse2/libi420_yuy2_sse2_plugin.dylib',
'sse2/libi422_yuy2_sse2_plugin.dylib',
'stream_filter/libdecomp_plugin.dylib',
'stream_filter/libstream_filter_rar_plugin.dylib',
'stream_filter/libstream_filter_record_plugin.dylib',
'visualization/libvisual_plugin.dylib',
]
VLC_SEARCH_PATH=[
'/usr/local/lib/vlc/plugins/',
]
QT_PLUGINS = [
'crypto/libqca-ossl.dylib',
'phonon_backend/phonon_vlc.so',
'sqldrivers/libqsqlite.dylib',
'imageformats/libqgif.dylib',
'imageformats/libqico.dylib',
'imageformats/libqjpeg.dylib',
'imageformats/libqmng.dylib',
]
TOMAHAWK_PLUGINS = [
'libtomahawk_sipjabber.dylib',
'libtomahawk_sipgoogle.dylib',
'libtomahawk_siptwitter.dylib',
'libtomahawk_sipzeroconf.dylib',
'libtomahawk_qtweetlib.dylib',
]
QT_PLUGINS_SEARCH_PATH=[
'/usr/local/Cellar/qt/4.7.3/plugins',
]
class Error(Exception):
pass
class CouldNotFindQtPluginErrorFindFrameworkError(Error):
pass
class InstallNameToolError(Error):
pass
class CouldNotFindQtPluginError(Error):
pass
class CouldNotFindVLCPluginError(Error):
pass
class CouldNotFindScriptPluginError(Error):
pass
if len(sys.argv) < 2:
print 'Usage: %s <bundle.app>' % sys.argv[0]
bundle_dir = sys.argv[1]
bundle_name = os.path.basename(bundle_dir).split('.')[0]
commands = []
binary_dir = os.path.join(bundle_dir, 'Contents', 'MacOS')
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')
binary = os.path.join(bundle_dir, 'Contents', 'MacOS', bundle_name)
fixed_libraries = []
fixed_frameworks = []
def GetBrokenLibraries(binary):
#print "Checking libs for binary: %s" % binary
output = subprocess.Popen(['otool', '-L', binary], stdout=subprocess.PIPE).communicate()[0]
broken_libs = {
'frameworks': [],
'libs': []}
for line in [x.split(' ')[0].lstrip() for x in output.split('\n')[1:]]:
#print "Checking line: %s" % line
if not line: # skip empty lines
continue
if os.path.basename(binary) == os.path.basename(line):
#print "mnope %s-%s" % (os.path.basename(binary), os.path.basename(line))
continue
if re.match(r'^\s*/System/', line):
continue # System framework
elif re.match(r'^\s*/usr/lib/', line):
#print "unix style system lib"
continue # unix style system library
elif re.match(r'Breakpad', line):
continue # Manually added by cmake.
elif re.match(r'^\s*@executable_path', line) or re.match(r'^\s*@loader_path', line):
# Potentially already fixed library
if '.framework' in line:
relative_path = os.path.join(*line.split('/')[3:])
if not os.path.exists(os.path.join(frameworks_dir, relative_path)):
broken_libs['frameworks'].append(relative_path)
else:
relative_path = os.path.join(*line.split('/')[1:])
#print "RELPATH %s %s" % (relative_path, os.path.join(binary_dir, relative_path))
if not os.path.exists(os.path.join(binary_dir, relative_path)):
broken_libs['libs'].append(relative_path)
elif re.search(r'\w+\.framework', line):
broken_libs['frameworks'].append(line)
else:
broken_libs['libs'].append(line)
return broken_libs
def FindFramework(path):
for search_path in FRAMEWORK_SEARCH_PATH:
abs_path = os.path.join(search_path, path)
if os.path.exists(abs_path):
return abs_path
raise CouldNotFindFrameworkError(path)
def FindLibrary(path):
if os.path.exists(path):
return path
for search_path in LIBRARY_SEARCH_PATH:
abs_path = os.path.join(search_path, path)
if os.path.exists(abs_path):
return abs_path
else: # try harder---look for lib name in library folders
newpath = os.path.join(search_path,os.path.basename(path))
if os.path.exists(newpath):
return newpath
return ""
#raise CouldNotFindFrameworkError(path)
def FixAllLibraries(broken_libs):
for framework in broken_libs['frameworks']:
FixFramework(framework)
for lib in broken_libs['libs']:
FixLibrary(lib)
def FixFramework(path):
if path in fixed_libraries:
return
else:
fixed_libraries.append(path)
abs_path = FindFramework(path)
broken_libs = GetBrokenLibraries(abs_path)
FixAllLibraries(broken_libs)
new_path = CopyFramework(abs_path)
id = os.sep.join(new_path.split(os.sep)[3:])
FixFrameworkId(new_path, id)
for framework in broken_libs['frameworks']:
FixFrameworkInstallPath(framework, new_path)
for library in broken_libs['libs']:
FixLibraryInstallPath(library, new_path)
def FixLibrary(path):
if path in fixed_libraries or FindSystemLibrary(os.path.basename(path)) is not None:
return
else:
fixed_libraries.append(path)
abs_path = FindLibrary(path)
if abs_path == "":
print "Could not resolve %s, not fixing!" % path
return
broken_libs = GetBrokenLibraries(abs_path)
FixAllLibraries(broken_libs)
new_path = CopyLibrary(abs_path)
FixLibraryId(new_path)
for framework in broken_libs['frameworks']:
FixFrameworkInstallPath(framework, new_path)
for library in broken_libs['libs']:
FixLibraryInstallPath(library, new_path)
def FixVLCPlugin(abs_path, subdir):
broken_libs = GetBrokenLibraries(abs_path)
FixAllLibraries(broken_libs)
#print "Copying plugin....%s %s %s" % (plugins_dir, subdir, os.path.join(abs_path.split('/')[-2:]))
plugindir = abs_path.split('/')[-2]
new_path = os.path.join(plugins_dir, subdir, plugindir, os.path.basename(abs_path))
args = ['mkdir', '-p', os.path.dirname(new_path)]
commands.append(args)
args = ['ditto', '--arch=i386', '--arch=x86_64', abs_path, new_path]
commands.append(args)
args = ['chmod', 'u+w', new_path]
commands.append(args)
for framework in broken_libs['frameworks']:
FixFrameworkInstallPath(framework, new_path)
for library in broken_libs['libs']:
FixLibraryInstallPath(library, new_path)
def FixPlugin(abs_path, subdir):
broken_libs = GetBrokenLibraries(abs_path)
FixAllLibraries(broken_libs)
new_path = CopyPlugin(abs_path, subdir)
for framework in broken_libs['frameworks']:
FixFrameworkInstallPath(framework, new_path)
for library in broken_libs['libs']:
FixLibraryInstallPath(library, new_path)
def FixBinary(path):
broken_libs = GetBrokenLibraries(path)
FixAllLibraries(broken_libs)
for framework in broken_libs['frameworks']:
FixFrameworkInstallPath(framework, path)
for library in broken_libs['libs']:
FixLibraryInstallPath(library, path)
def CopyLibrary(path):
new_path = os.path.join(frameworks_dir, os.path.basename(path))
args = ['ditto', '--arch=i386', '--arch=x86_64', path, new_path]
commands.append(args)
args = ['chmod', 'u+w', new_path]
commands.append(args)
return new_path
def CopyPlugin(path, subdir):
new_path = os.path.join(plugins_dir, subdir, os.path.basename(path))
args = ['mkdir', '-p', os.path.dirname(new_path)]
commands.append(args)
args = ['ditto', '--arch=i386', '--arch=x86_64', path, new_path]
commands.append(args)
args = ['chmod', 'u+w', new_path]
commands.append(args)
return new_path
def CopyFramework(path):
parts = path.split(os.sep)
for i, part in enumerate(parts):
if re.match(r'\w+\.framework', part):
full_path = os.path.join(frameworks_dir, *parts[i:-1])
break
args = ['mkdir', '-p', full_path]
commands.append(args)
args = ['ditto', '--arch=i386', '--arch=x86_64', path, full_path]
commands.append(args)
args = ['chmod', 'u+w', os.path.join(full_path, parts[-1])]
commands.append(args)
menu_nib = os.path.join(os.path.split(path)[0], 'Resources', 'qt_menu.nib')
if os.path.exists(menu_nib):
args = ['cp', '-r', menu_nib, resources_dir]
commands.append(args)
return os.path.join(full_path, parts[-1])
def FixId(path, library_name):
id = '@executable_path/../Frameworks/%s' % library_name
args = ['install_name_tool', '-id', id, path]
commands.append(args)
def FixLibraryId(path):
library_name = os.path.basename(path)
FixId(path, library_name)
def FixFrameworkId(path, id):
FixId(path, id)
def FixInstallPath(library_path, library, new_path):
args = ['install_name_tool', '-change', library_path, new_path, library]
commands.append(args)
def FindSystemLibrary(library_name):
for path in ['/lib', '/usr/lib']:
full_path = os.path.join(path, library_name)
if os.path.exists(full_path):
return full_path
return None
def FixLibraryInstallPath(library_path, library):
system_library = FindSystemLibrary(os.path.basename(library_path))
if system_library is None:
new_path = '@executable_path/../Frameworks/%s' % os.path.basename(library_path)
FixInstallPath(library_path, library, new_path)
else:
FixInstallPath(library_path, library, system_library)
def FixFrameworkInstallPath(library_path, library):
parts = library_path.split(os.sep)
for i, part in enumerate(parts):
if re.match(r'\w+\.framework', part):
full_path = os.path.join(*parts[i:])
break
new_path = '@executable_path/../Frameworks/%s' % full_path
FixInstallPath(library_path, library, new_path)
def FindQtPlugin(name):
for path in QT_PLUGINS_SEARCH_PATH:
if os.path.exists(path):
if os.path.exists(os.path.join(path, name)):
return os.path.join(path, name)
raise CouldNotFindQtPluginError(name)
def FindVLCPlugin(name):
for path in VLC_SEARCH_PATH:
if os.path.exists(path):
if os.path.exists(os.path.join(path, name)):
return os.path.join(path, name)
raise CouldNotFindVLCPluginError(name)
FixBinary(binary)
for plugin in VLC_PLUGINS:
FixVLCPlugin(FindVLCPlugin(plugin), '.')
for plugin in TOMAHAWK_PLUGINS:
FixPlugin(plugin, '../MacOS')
try:
FixPlugin('spotify_tomahawkresolver', '../MacOS')
except:
print 'Failed to find spotify resolver'
for plugin in QT_PLUGINS:
FixPlugin(FindQtPlugin(plugin), os.path.dirname(plugin))
if len(sys.argv) <= 2:
print 'Would run %d commands:' % len(commands)
for command in commands:
print ' '.join(command)
print 'OK?'
raw_input()
for command in commands:
p = subprocess.Popen(command)
os.waitpid(p.pid, 0)

View File

@@ -1,2 +1,2 @@
[Paths]
Plugins = plugins
Plugins = PlugIns

View File

@@ -1,20 +1,27 @@
SET(MINGW_PREFIX "i686-w64-mingw32")
# this one is important
SET(CMAKE_SYSTEM_NAME Windows)
# specify the cross compiler
SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc)
SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++)
SET(CMAKE_C_COMPILER ccache ${MINGW_PREFIX}-gcc)
SET(CMAKE_CXX_COMPILER ccache ${MINGW_PREFIX}-g++)
SET(CMAKE_RC_COMPILER /usr/bin/${MINGW_PREFIX}-windres)
# where is the target environment containing libraries
SET(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32/sys-root/mingw)
SET(CMAKE_FIND_ROOT_PATH /usr/${MINGW_PREFIX}/sys-root/mingw)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# windres executable for application icon support
SET(WINDRES_EXECUTABLE /usr/bin/i686-w64-mingw32-windres)
# libs with broken find modules
SET(TAGLIB_FOUND true)
SET(TAGLIB_LIBRARIES ${CMAKE_FIND_ROOT_PATH}/lib/libtag.dll.a)
SET(TAGLIB_INCLUDES ${CMAKE_FIND_ROOT_PATH}/include/taglib)
SET(QT_PLUGINS_DIR ${CMAKE_FIND_ROOT_PATH}/lib/qt4/plugins/)
SET(QT_QTUITOOLS_LIBRARY_RELEASE ${CMAKE_FIND_ROOT_PATH}/lib/libQtUiTools.a)
SET(QT_QTUITOOLS_LIBRARY_DEBUG ${CMAKE_FIND_ROOT_PATH}/lib/libQtUiToolsd.a)
SET(QT_QTUITOOLS_LIBRARY ${QT_QTUITOOLS_LIBRARY_RELEASE})

View File

@@ -1 +0,0 @@
105

View File

@@ -1,20 +1,49 @@
#!/bin/bash
echo "Remove old vlc dir..."
mkdir -p vlc/
cd vlc/
#rm -vf vlc-*.7z
rm -rf vlc/
#rm -rf vlc/
echo "Download specified binary..."
#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://nightlies.videolan.org/build/win32/trunk-20110524-1321/vlc-1.2.0-git-20110524-1321-win32.7z"
#wget -c "http://download.tomahawk-player.org/tomahawk-vlc-0.1.zip"
wget -c http://people.videolan.org/~jb/phonon/phonon-vlc-last.7z
echo "Extract binary..."
7z x vlc-*.7z
mv -v vlc-*/ vlc/
7z x phonon-vlc-last.7z
#mv -v vlc-*/ vlc/
#unzip tomahawk-vlc-0.1.zip
echo "Strip unneeded plugins from vlc/plugins..."
cd vlc/plugins/
rm -rvf video_*/ gui/ */libold* */libvcd* */libdvd* */liblibass* */libx264* */libschroe* */liblibmpeg2* \
*/libstream_out_* */libmjpeg_plugin* */libh264_plugin* */libzvbi_plugin* */lib*sub*
cd prefix/bin/plugins
rm -rvf libold* libvcd* libdvd* liblibass* libx264* libschroe* liblibmpeg2* \
libstream_out_* libmjpeg_plugin* libh264_plugin* libzvbi_plugin* lib*sub* \
*qt4* *skins2* libaccess_bd_plugin.dll \
libaudiobargraph_* libball_plugin.dll \
libdirac_plugin.dll \
libgnutls_plugin.dll \
libcaca_plugin.dll \
libfreetype_plugin.dll \
libaccess_output_shout_plugin.dll \
libremoteosd_plugin.dll \
libsdl_image_plugin.dll \
libvout_sdl_plugin.dll \
libpng_plugin.dll \
libgoom_plugin.dll \
libatmo_plugin.dll \
libmux_ts_plugin.dll \
libkate_plugin.dll \
libtaglib_plugin.dll
# this is for vlc-1.2
# rm -rvf video_*/ gui/ */libold* */libvcd* */libdvd* */liblibass* */libx264* */libschroe* */liblibmpeg2* \
# */libstream_out_* */libmjpeg_plugin* */libh264_plugin* */libzvbi_plugin* */lib*sub* \
# services_discover/ visualization/ control/ misc/
echo "Downloaded and stripped VLC"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 643 B

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 856 B

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 691 B

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 666 B

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 650 B

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 717 B

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
data/images/dashboard.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

BIN
data/images/filter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
data/images/info.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 564 B

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 332 B

After

Width:  |  Height:  |  Size: 13 KiB

BIN
data/images/loved.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

BIN
data/images/not-loved.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 500 B

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
data/images/post.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

BIN
data/images/share.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 771 B

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 325 B

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 844 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 858 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

BIN
data/images/station.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 589 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 530 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 931 B

After

Width:  |  Height:  |  Size: 2.0 KiB

320
data/js/tomahawk.js Normal file
View File

@@ -0,0 +1,320 @@
// if run in phantomjs add fake Tomahawk environment
if(window.Tomahawk === undefined)
{
alert("PHANTOMJS ENVIRONMENT");
var Tomahawk = {
fakeEnv: function()
{
return true;
},
resolverData: function()
{
return {
scriptPath: function()
{
return "/home/tomahawk/resolver.js";
}
};
},
log: function( message )
{
console.log( message );
}
};
}
Tomahawk.resolver = {
scriptPath: Tomahawk.resolverData().scriptPath
};
Tomahawk.timestamp = function() {
return Math.round( new Date()/1000 );
};
Tomahawk.dumpResult = function( result ) {
var results = result.results;
Tomahawk.log("Dumping " + results.length + " results for query " + result.qid + "...");
for(var i=0; i<results.length;i++)
{
var result1 = results[i];
Tomahawk.log( result1.artist + " - " + result1.track + " | " + result1.url );
}
Tomahawk.log("Done.");
};
// javascript part of Tomahawk-Object API
Tomahawk.extend = function(object, members) {
var F = function() {};
F.prototype = object;
var newObject = new F;
for(var key in members)
{
newObject[key] = members[key];
}
return newObject;
};
// Resolver BaseObject, inherit it to implement your own resolver
var TomahawkResolver = {
init: function()
{
},
scriptPath: function()
{
return Tomahawk.resolverData().scriptPath;
},
getConfigUi: function()
{
return {};
},
getUserConfig: function()
{
var configJson = window.localStorage[ this.scriptPath() ];
if( configJson === undefined )
{
configJson = "{}";
}
var config = JSON.parse( configJson );
return config;
},
saveUserConfig: function()
{
var config = Tomahawk.resolverData().config;
var configJson = JSON.stringify( config );
window.localStorage[ this.scriptPath() ] = configJson;
},
resolve: function( qid, artist, album, title )
{
return {
qid: qid
};
},
search: function( qid, searchString )
{
return this.resolve( qid, "", "", searchString );
}
};
/**** begin example implementation of a resolver ****/
// implement the resolver
/*
* var DemoResolver = Tomahawk.extend(TomahawkResolver,
* {
* getSettings: function()
* {
* return {
* name: "Demo Resolver",
* weigth: 95,
* timeout: 5,
* limit: 10
};
},
resolve: function( qid, artist, album, track )
{
return {
qid: qid,
results: [
{
artist: "Mokele",
album: "You Yourself are Me Myself and I am in Love",
track: "Hiding In Your Insides (php)",
source: "Mokele.co.uk",
url: "http://play.mokele.co.uk/music/Hiding%20In%20Your%20Insides.mp3",
bitrate: 160,
duration: 248,
size: 4971780,
score: 1.0,
extension: "mp3",
mimetype: "audio/mpeg"
}
]
};
}
}
);
// register the resolver
Tomahawk.resolver.instance = DemoResolver;*/
/**** end example implementation of a resolver ****/
// help functions
Tomahawk.valueForSubNode = function(node, tag)
{
if(node === undefined)
{
throw new Error("Tomahawk.valueForSubnode: node is undefined!");
}
var element = node.getElementsByTagName(tag)[0];
if( element === undefined )
{
return undefined;
}
return element.textContent;
};
Tomahawk.syncRequest = function(url)
{
var xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.open('GET', url, false);
xmlHttpRequest.send(null);
if (xmlHttpRequest.status == 200){
return xmlHttpRequest.responseText;
}
};
/**
*
* Secure Hash Algorithm (SHA256)
* http://www.webtoolkit.info/
*
* Original code by Angel Marin, Paul Johnston.
*
**/
Tomahawk.sha256=function(s){
var chrsz = 8;
var hexcase = 0;
function safe_add (x, y) {
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
function S (X, n) { return ( X >>> n ) | (X << (32 - n)); }
function R (X, n) { return ( X >>> n ); }
function Ch(x, y, z) { return ((x & y) ^ ((~x) & z)); }
function Maj(x, y, z) { return ((x & y) ^ (x & z) ^ (y & z)); }
function Sigma0256(x) { return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); }
function Sigma1256(x) { return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); }
function Gamma0256(x) { return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); }
function Gamma1256(x) { return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); }
function core_sha256 (m, l) {
var K = new Array(0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, 0xFC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x6CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2);
var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19);
var W = new Array(64);
var a, b, c, d, e, f, g, h, i, j;
var T1, T2;
m[l >> 5] |= 0x80 << (24 - l % 32);
m[((l + 64 >> 9) << 4) + 15] = l;
for ( i = 0; i<m.length; i+=16 ) {
a = HASH[0];
b = HASH[1];
c = HASH[2];
d = HASH[3];
e = HASH[4];
f = HASH[5];
g = HASH[6];
h = HASH[7];
for ( j = 0; j<64; j++) {
if (j < 16)
{
W[j] = m[j + i];
}
else
{
W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]);
}
T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]);
T2 = safe_add(Sigma0256(a), Maj(a, b, c));
h = g;
g = f;
f = e;
e = safe_add(d, T1);
d = c;
c = b;
b = a;
a = safe_add(T1, T2);
}
HASH[0] = safe_add(a, HASH[0]);
HASH[1] = safe_add(b, HASH[1]);
HASH[2] = safe_add(c, HASH[2]);
HASH[3] = safe_add(d, HASH[3]);
HASH[4] = safe_add(e, HASH[4]);
HASH[5] = safe_add(f, HASH[5]);
HASH[6] = safe_add(g, HASH[6]);
HASH[7] = safe_add(h, HASH[7]);
}
return HASH;
}
function str2binb (str) {
var bin = Array();
var mask = (1 << chrsz) - 1;
for(var i = 0; i < str.length * chrsz; i += chrsz) {
bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i%32);
}
return bin;
}
function Utf8Encode(string) {
string = string.replace(/\r\n/g,"\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
}
else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}
else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
}
function binb2hex (binarray) {
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
var str = "";
for(var i = 0; i < binarray.length * 4; i++) {
str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
}
return str;
}
s = Utf8Encode(s);
return binb2hex(core_sha256(str2binb(s), s.length * chrsz));
};
// some aliases
Tomahawk.setTimeout = window.setTimeout;
Tomahawk.setInterval = window.setInterval;

View File

@@ -0,0 +1,22 @@
-- Script to migate from db version 23 to 24.
-- Added the social_attributes table.
--
-- Separate each command with %%
CREATE TABLE IF NOT EXISTS social_attributes (
id INTEGER REFERENCES track(id) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED, -- track id
source INTEGER REFERENCES source(id) ON DELETE CASCADE ON UPDATE CASCADE, -- DEFERRABLE INITIALLY DEFERRED,
k TEXT NOT NULL,
v TEXT NOT NULL,
timestamp INTEGER NOT NULL DEFAULT 0
);
CREATE INDEX social_attrib_id ON social_attributes(id);
CREATE INDEX social_attrib_source ON social_attributes(source);
CREATE INDEX social_attrib_k ON social_attributes(k);
CREATE INDEX social_attrib_timestamp ON social_attributes(timestamp);
UPDATE settings SET v = '24' WHERE k == 'schema_version';

View File

@@ -0,0 +1,17 @@
-- Script to migate from db version 24 to 25.
-- Added the social_attributes table.
--
ALTER TABLE dynamic_playlist RENAME TO tmp_dynamic_playlist;
CREATE TABLE IF NOT EXISTS dynamic_playlist (
guid TEXT NOT NULL REFERENCES playlist(guid) ON DELETE CASCADE ON UPDATE CASCADE DEFERRABLE INITIALLY DEFERRED,
pltype TEXT, -- the generator type
plmode INTEGER -- the mode of this playlist
);
INSERT INTO dynamic_playlist( guid, pltype, plmode ) SELECT guid, pltype, plmode FROM tmp_dynamic_playlist;
DROP TABLE tmp_dynamic_playlist;
UPDATE settings SET v = '25' WHERE k == 'schema_version';

View File

@@ -0,0 +1,8 @@
-- Script to migate from db version 25 to 26.
-- Added the "autoload" column to dynamic_playlist
--
ALTER TABLE dynamic_playlist ADD COLUMN autoload BOOLEAN DEFAULT 'true';
UPDATE settings SET v = '26' WHERE k == 'schema_version';

View File

@@ -119,22 +119,22 @@
<message>
<location filename="src/libtomahawk/playlist/collectionmodel.cpp" line="168"/>
<source>Name</source>
<translation type="unfinished">Name</translation>
<translation>Name</translation>
</message>
<message>
<location filename="src/libtomahawk/playlist/collectionmodel.cpp" line="168"/>
<source>Tracks</source>
<translation type="unfinished">Stücke</translation>
<translation>Stücke</translation>
</message>
<message>
<location filename="src/libtomahawk/playlist/collectionmodel.cpp" line="168"/>
<source>Duration</source>
<translation type="unfinished">Spieldauer</translation>
<translation>Spieldauer</translation>
</message>
<message>
<location filename="src/libtomahawk/playlist/collectionmodel.cpp" line="168"/>
<source>Origin</source>
<translation type="unfinished">Quelle</translation>
<translation>Quelle</translation>
</message>
</context>
<context>
@@ -142,17 +142,17 @@
<message>
<location filename="src/libtomahawk/playlist/collectionview.cpp" line="75"/>
<source>&amp;Play</source>
<translation type="unfinished">&amp;Abspielen</translation>
<translation>&amp;Abspielen</translation>
</message>
<message>
<location filename="src/libtomahawk/playlist/collectionview.cpp" line="76"/>
<source>Add to &amp;Queue</source>
<translation type="unfinished">Zur &amp;Warteschlange hinzufügen</translation>
<translation>In &amp;Warteschlange einreihen</translation>
</message>
<message>
<location filename="src/libtomahawk/playlist/collectionview.cpp" line="108"/>
<source>This collection is empty.</source>
<translation type="unfinished">Diese Sammlung ist leer.</translation>
<translation>Diese Sammlung ist leer.</translation>
</message>
</context>
<context>
@@ -175,19 +175,19 @@
<message>
<location filename="src/sip/jabber/jabber.cpp" line="124"/>
<source>Add Friend...</source>
<translation type="unfinished">Freund hinzufügen</translation>
<translation>Freund hinzufügen</translation>
</message>
<message>
<location filename="src/sip/jabber/jabber.cpp" line="169"/>
<location filename="src/sip/jreen/jabber.cpp" line="183"/>
<source>Add Friend</source>
<translation type="unfinished">Freund hinzufügen</translation>
<translation>Freund hinzufügen</translation>
</message>
<message>
<location filename="src/sip/jabber/jabber.cpp" line="170"/>
<location filename="src/sip/jreen/jabber.cpp" line="184"/>
<source>Enter Jabber ID:</source>
<translation type="unfinished">Jabber-ID eingeben:</translation>
<translation>Jabber-ID eingeben:</translation>
</message>
</context>
<context>
@@ -208,27 +208,27 @@
<message>
<location filename="src/libtomahawk/widgets/newplaylistwidget.ui" line="22"/>
<source>Enter a title for the new playlist:</source>
<translation type="unfinished">Gib einen Titel für die neue Playliste ein:</translation>
<translation>Gib einen Titel für die neue Playliste ein:</translation>
</message>
<message>
<location filename="src/libtomahawk/widgets/newplaylistwidget.ui" line="44"/>
<source>Tomahawk offers a variety of ways to help you create playlists and find music you enjoy!</source>
<translation type="unfinished">Tomahawk bietet verschiedene Wege, Playlisten zu erstellen und Musik zu finden, die du magst!</translation>
<translation>Tomahawk bietet verschiedene Wege, Playlisten zu erstellen und Musik zu finden, die du magst!</translation>
</message>
<message>
<location filename="src/libtomahawk/widgets/newplaylistwidget.ui" line="59"/>
<source>Just enter a genre or tag name and Tomahawk will suggest a few songs to get you started with your new playlist:</source>
<translation type="unfinished">Gib einfach ein Genre oder einen Tagnamen ein und Tomahawk wird dir einige Lieder vorschlagen, um dir zu helfen, eine neue Playliste zu erstellen:</translation>
<translation>Gib einfach ein Genre oder einen Tagnamen ein, und Tomahawk wird dir einige Lieder vorschlagen und dir helfen eine neue Playliste zu erstellen:</translation>
</message>
<message>
<location filename="src/libtomahawk/widgets/newplaylistwidget.cpp" line="45"/>
<source>&amp;Create Playlist</source>
<translation type="unfinished">Playliste &amp;erstellen</translation>
<translation>Playliste &amp;erstellen</translation>
</message>
<message>
<location filename="src/libtomahawk/widgets/newplaylistwidget.h" line="51"/>
<source>Create a new playlist</source>
<translation type="unfinished">Erstelle eine neue Playliste</translation>
<translation>Erstelle eine neue Playliste</translation>
</message>
</context>
<context>
@@ -270,27 +270,27 @@
<message>
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="74"/>
<source>&amp;Play</source>
<translation type="unfinished">&amp;Abspielen</translation>
<translation>&amp;Abspielen</translation>
</message>
<message>
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="75"/>
<source>Add to &amp;Queue</source>
<translation type="unfinished">In &amp;Warteschlange einreihen</translation>
<translation>In &amp;Warteschlange einreihen</translation>
</message>
<message>
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="79"/>
<source>&amp;Delete Items</source>
<translation type="unfinished">Elemente &amp;entfernen</translation>
<translation>Elemente &amp;entfernen</translation>
</message>
<message>
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="79"/>
<source>&amp;Delete Item</source>
<translation type="unfinished">Element &amp;entfernen</translation>
<translation>Element &amp;entfernen</translation>
</message>
<message>
<location filename="src/libtomahawk/playlist/playlistview.cpp" line="143"/>
<source>This playlist is currently empty. Add some tracks to it and enjoy the music!</source>
<translation type="unfinished">Die Playliste ist derzeit leer. Füge einige Stücke hinzu und genieße die Musik!</translation>
<translation>Die Playliste ist derzeit leer. Füge einige Stücke hinzu und genieße die Musik!</translation>
</message>
</context>
<context>
@@ -359,18 +359,18 @@
<message>
<location filename="src/settingsdialog.ui" line="30"/>
<source>Jabber</source>
<translation type="unfinished">Jabber</translation>
<translation>Jabber</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="53"/>
<source>Jabber ID:</source>
<translation type="unfinished">Jabber-ID:</translation>
<translation>Jabber-ID:</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="79"/>
<location filename="src/settingsdialog.ui" line="524"/>
<source>Password:</source>
<translation type="unfinished">Passwort:</translation>
<translation>Passwort:</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="132"/>
@@ -380,138 +380,138 @@
<message>
<location filename="src/settingsdialog.ui" line="152"/>
<source>Server:</source>
<translation type="unfinished">Server:</translation>
<translation>Server:</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="175"/>
<source>Port:</source>
<translation type="unfinished">Port:</translation>
<translation>Port:</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="238"/>
<source>Network</source>
<translation type="unfinished">Netzwerk</translation>
<translation>Netzwerk</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="250"/>
<source>Advanced Network Settings</source>
<translation type="unfinished">Erweiterte Netzwerkeinstellungen</translation>
<translation>Erweiterte Netzwerkeinstellungen</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="267"/>
<source>If you&apos;re having difficulty connecting to peers, try setting this to your external IP address/host name and a port number (default 50210). Make sure to forward that port to this machine!</source>
<translation type="unfinished">Wenn du Schwierigkeiten hast, zu anderen Leuten zu verbinden, versuche diene externe IP-Addresse/Rechnernamen und eine Portnummer (Standard 50210) hier einzutragen. Stelle sicher, den Port entsprechend an diesen Rechner weiterzuleiten!</translation>
<translation>Wenn du Schwierigkeiten hast, dich mit anderen Leuten zu verbinden, versuche deine externe IP-Adresse/Rechnernamen und eine Portnummer (Standard 50210) hier einzutragen. Stelle sicher, den Port entsprechend an diesen Rechner weiterzuleiten!</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="285"/>
<source>Static Host Name:</source>
<translation type="unfinished">Statischer Rechnername:</translation>
<translation>Statischer Rechnername:</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="301"/>
<source>Static Port:</source>
<translation type="unfinished">Statischer Port:</translation>
<translation>Statischer Port:</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="323"/>
<source>Always use static host name/port? (Overrides UPnP discovery/port forwarding)</source>
<translation type="unfinished">Statischen Rechnernamen/Port immer benutzen? (Überschreibt UPnP-discovery/Portweiterleitung)</translation>
<translation>Statischen Rechnernamen/Port immer benutzen? (Überschreibt UPnP-discovery/Portweiterleitung)</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="347"/>
<source>Proxy Settings...</source>
<translation type="unfinished">Proxy-Einstellungen</translation>
<translation>Proxy-Einstellungen</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="385"/>
<source>Playdar HTTP API</source>
<translation type="unfinished">Playdar HTTP API</translation>
<translation>Playdar HTTP API</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="398"/>
<source>Connect automatically when Tomahawk starts</source>
<translation type="unfinished">Automatisch beim Start von Tomahawk verbinden</translation>
<translation>Automatisch beim Start von Tomahawk verbinden</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="411"/>
<source>Use UPnP to establish port forward</source>
<translation type="unfinished">Benutze UPnP um die Portweiterleitung zu konfigurieren</translation>
<translation>Benutze UPnP um die Portweiterleitung einzurichten</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="425"/>
<source>Local Music</source>
<translation type="unfinished">Lokale Musik</translation>
<translation>Lokale Musik</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="436"/>
<source>Path to scan for music files:</source>
<translation type="unfinished">Pfad zu den Musikdateien:</translation>
<translation>Pfad zu den Musikdateien:</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="448"/>
<source>...</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="490"/>
<source>Last.fm</source>
<translation type="unfinished">Last.fm</translation>
<translation>Last.fm</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="499"/>
<source>Scrobble tracks to Last.fm</source>
<translation type="unfinished">Gespielte Stücke an Last.fm übertragen</translation>
<translation>Gespielte Stücke an Last.fm übertragen</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="506"/>
<source>Last.fm Login</source>
<translation type="unfinished">Last.fm Anmeldung</translation>
<translation>Last.fm Anmeldung</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="514"/>
<source>Username:</source>
<translation type="unfinished">Benutzername:</translation>
<translation>Benutzername:</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="540"/>
<source>Test Login</source>
<translation type="unfinished">Anmeldung Testen</translation>
<translation>Anmeldung testen</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="564"/>
<source>Script Resolvers</source>
<translation type="unfinished"></translation>
<translation>Script Resolver</translation>
</message>
<message>
<location filename="src/settingsdialog.ui" line="570"/>
<source>Loaded script resolvers:</source>
<translation type="unfinished"></translation>
<translation>Geladene Script Resolver:</translation>
</message>
<message>
<location filename="src/settingsdialog.cpp" line="163"/>
<source>Select Music Folder</source>
<translation type="unfinished">Musikordner auswählen</translation>
<translation>Musikordner auswählen</translation>
</message>
<message>
<location filename="src/settingsdialog.cpp" line="250"/>
<location filename="src/settingsdialog.cpp" line="262"/>
<source>Failed</source>
<translation type="unfinished">Fehlgeschlagen</translation>
<translation>Fehlgeschlagen</translation>
</message>
<message>
<location filename="src/settingsdialog.cpp" line="255"/>
<source>Success</source>
<translation type="unfinished">Erfolgreich</translation>
<translation>Erfolgreich</translation>
</message>
<message>
<location filename="src/settingsdialog.cpp" line="268"/>
<source>Could not contact server</source>
<translation type="unfinished">Konnte den Server nicht erreichen</translation>
<translation>Konnte den Server nicht erreichen</translation>
</message>
<message>
<location filename="src/settingsdialog.cpp" line="338"/>
<source>Load script resolver file</source>
<translation type="unfinished"></translation>
<translation>Script Resolver laden</translation>
</message>
</context>
<context>
@@ -519,17 +519,17 @@
<message>
<location filename="src/sourcetree/sourcetreeview.cpp" line="558"/>
<source>Offline</source>
<translation type="unfinished">Nicht Verbunden</translation>
<translation>Nicht Verbunden</translation>
</message>
<message>
<location filename="src/sourcetree/sourcetreeview.cpp" line="560"/>
<source>All available tracks</source>
<translation type="unfinished">Alle verfügbaren Stücke</translation>
<translation>Alle verfügbaren Stücke</translation>
</message>
<message>
<location filename="src/sourcetree/sourcetreeview.cpp" line="564"/>
<source>Online</source>
<translation type="unfinished">Verbunden</translation>
<translation>Verbunden</translation>
</message>
</context>
<context>
@@ -537,27 +537,27 @@
<message>
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.ui" line="26"/>
<source>Recent Albums</source>
<translation type="unfinished">Aktuelle Alben</translation>
<translation>Aktuelle Alben</translation>
</message>
<message>
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.ui" line="68"/>
<source>Latest Additions to their Collection</source>
<translation type="unfinished">Zuletzt zur Sammlung hinzugefügte Stücke</translation>
<translation>Zuletzt zur Sammlung hinzugefügt</translation>
</message>
<message>
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.ui" line="89"/>
<source>Recently played Tracks</source>
<translation type="unfinished">Aktuell gespiele Stücke</translation>
<translation>Zuletzt gespiele Stücke</translation>
</message>
<message>
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.cpp" line="65"/>
<source>Info about %1</source>
<translation type="unfinished">Information über %1</translation>
<translation>Information über %1</translation>
</message>
<message>
<location filename="src/libtomahawk/widgets/infowidgets/sourceinfowidget.cpp" line="65"/>
<source>Your Collection</source>
<translation type="unfinished">Deine Sammlung</translation>
<translation>Deine Sammlung</translation>
</message>
</context>
<context>
@@ -654,17 +654,17 @@
<message>
<location filename="src/sourcetree/sourcetreeview.cpp" line="125"/>
<source>&amp;Load Playlist</source>
<translation type="unfinished">&amp;Lade Playliste</translation>
<translation>&amp;Lade Playliste</translation>
</message>
<message>
<location filename="src/sourcetree/sourcetreeview.cpp" line="126"/>
<source>&amp;Rename Playlist</source>
<translation type="unfinished">Playliste &amp;umbenennen</translation>
<translation>Playliste &amp;umbenennen</translation>
</message>
<message>
<location filename="src/sourcetree/sourcetreeview.cpp" line="128"/>
<source>&amp;Delete Playlist</source>
<translation type="unfinished">Playliste &amp;löschen</translation>
<translation>Playliste &amp;löschen</translation>
</message>
</context>
<context>
@@ -698,7 +698,7 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
<message>
<location filename="src/libtomahawk/playlist/dynamic/widgets/DynamicSetupWidget.cpp" line="62"/>
<source>Generate</source>
<translation type="unfinished">Erzeugen</translation>
<translation>Erzeugen</translation>
</message>
</context>
<context>
@@ -706,17 +706,17 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
<message>
<location filename="src/libtomahawk/playlist/dynamic/DynamicView.cpp" line="135"/>
<source>Add some filters above to seed this station!</source>
<translation type="unfinished">Füge einige Filter hinzu, um diese Station zu initialisieren!</translation>
<translation>Füge einige Filter hinzu, um diese Station zu starten!</translation>
</message>
<message>
<location filename="src/libtomahawk/playlist/dynamic/DynamicView.cpp" line="140"/>
<source>Press Generate to get started!</source>
<translation type="unfinished">Drücke Erzeugen, um zu beginnen!</translation>
<translation>Drücke Erzeugen, und los geht&apos;s!</translation>
</message>
<message>
<location filename="src/libtomahawk/playlist/dynamic/DynamicView.cpp" line="142"/>
<source>Add some filters above, and press Generate to get started!</source>
<translation type="unfinished">Füge oben einige Filter hinzu und drücke Erzeugen um zu beginnen!</translation>
<translation>Füge oben einige Filter hinzu und drücke Erzeugen um loszulegen!</translation>
</message>
</context>
<context>
@@ -1091,53 +1091,53 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
<message>
<location filename="src/tomahawkwindow.ui" line="14"/>
<source>Tomahawk</source>
<translation type="unfinished">Tomahawk</translation>
<translation>Tomahawk</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="43"/>
<source>&amp;Settings</source>
<translation type="unfinished">&amp;Einstellungen</translation>
<translation>&amp;Einstellungen</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="49"/>
<source>&amp;Music Player</source>
<translation type="unfinished">&amp;Abspielprogramm</translation>
<translation>&amp;Music Player</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="60"/>
<source>&amp;Playlist</source>
<translation type="unfinished">&amp;Playliste</translation>
<translation>&amp;Playliste</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="70"/>
<source>&amp;Network</source>
<translation type="unfinished">&amp;Netzwerk</translation>
<translation>&amp;Netzwerk</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="77"/>
<source>&amp;Help</source>
<translation type="unfinished">&amp;Hilfe</translation>
<translation>&amp;Hilfe</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="90"/>
<source>&amp;Quit</source>
<translation type="unfinished">&amp;Verlassen</translation>
<translation>&amp;Verlassen</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="93"/>
<source>Ctrl+Q</source>
<translation type="unfinished">Strg+Q</translation>
<translation>Ctrl+Q</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="101"/>
<location filename="src/tomahawkwindow.cpp" line="471"/>
<source>Go &amp;online</source>
<translation type="unfinished">&amp;Verbindung herstellen</translation>
<translation>&amp;Verbindung herstellen</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="106"/>
<source>Add &amp;Friend...</source>
<translation type="unfinished">Freund &amp;hinzufügen</translation>
<translation>Freund &amp;hinzufügen</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="111"/>
@@ -1147,58 +1147,58 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
<message>
<location filename="src/tomahawkwindow.ui" line="116"/>
<source>&amp;Configure Tomahawk...</source>
<translation type="unfinished">Tomahawk &amp;einrichten</translation>
<translation>Tomahawk &amp;einrichten</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="124"/>
<source>Load &amp;XSPF...</source>
<translation type="unfinished">&amp;XSPF-Datei laden</translation>
<translation>&amp;XSPF laden</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="129"/>
<source>Create &amp;New Playlist...</source>
<translation type="unfinished">Neue &amp;Playliste erstellen</translation>
<translation>Neue &amp;Playliste erstellen</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="134"/>
<source>About &amp;Tomahawk...</source>
<translation type="unfinished">Über &amp;Tomahawk</translation>
<translation>Über &amp;Tomahawk</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="142"/>
<source>Create New &amp;Automatic Playlist</source>
<translation type="unfinished">Neue, &amp;automatische Playliste erstellen</translation>
<translation>Neue &amp;automatische Playliste erstellen</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="147"/>
<source>Create New &amp;Station</source>
<translation type="unfinished">Neue &amp;Station erstellen</translation>
<translation>Neue &amp;Station erstellen</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="152"/>
<source>Show Offline Sources</source>
<translation type="unfinished">Nicht-Verfügbare Quellen anzeigen</translation>
<translation>Nicht-Verfügbare Quellen anzeigen</translation>
</message>
<message>
<location filename="src/tomahawkwindow.ui" line="157"/>
<source>Hide Offline Sources</source>
<translation type="unfinished">Nicht-Verfügbare Quellen ausblenden</translation>
<translation>Nicht-Verfügbare Quellen ausblenden</translation>
</message>
<message>
<location filename="src/tomahawkwindow.cpp" line="150"/>
<location filename="src/tomahawkwindow.cpp" line="166"/>
<source>Check for updates...</source>
<translation type="unfinished">Teste auf updates</translation>
<translation type="unfinished">Suche nach Updates</translation>
</message>
<message>
<location filename="src/tomahawkwindow.cpp" line="170"/>
<source>Back</source>
<translation type="unfinished">Zurück</translation>
<translation>Zurück</translation>
</message>
<message>
<location filename="src/tomahawkwindow.cpp" line="171"/>
<source>Forward</source>
<translation type="unfinished">Forwärts</translation>
<translation>Vorwärts</translation>
</message>
<message>
<location filename="src/tomahawkwindow.cpp" line="172"/>
@@ -1210,37 +1210,37 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
<location filename="src/tomahawkwindow.cpp" line="339"/>
<location filename="src/tomahawkwindow.cpp" line="347"/>
<source>Connect To Peer</source>
<translation type="unfinished">Zu Gegenstelle verbinden</translation>
<translation>Zu Gegenstelle verbinden</translation>
</message>
<message>
<location filename="src/tomahawkwindow.cpp" line="333"/>
<source>Enter peer address:</source>
<translation type="unfinished">Gib die Adresse der Gegenstelle ein:</translation>
<translation>Gib die Adresse der Gegenstelle ein:</translation>
</message>
<message>
<location filename="src/tomahawkwindow.cpp" line="340"/>
<source>Enter peer port:</source>
<translation type="unfinished">Gib den Port der Gegenstelle ein:</translation>
<translation>Gib den Port der Gegenstelle ein:</translation>
</message>
<message>
<location filename="src/tomahawkwindow.cpp" line="348"/>
<source>Enter peer key:</source>
<translation type="unfinished">Gib den Schlüssel der Gegenstelle ein:</translation>
<translation>Gib den Schlüssel der Gegenstelle ein:</translation>
</message>
<message>
<location filename="src/tomahawkwindow.cpp" line="464"/>
<source>Go &amp;offline</source>
<translation type="unfinished">Verbindung &amp;trennen</translation>
<translation>Verbindung &amp;trennen</translation>
</message>
<message>
<location filename="src/tomahawkwindow.cpp" line="481"/>
<source>Authentication Error</source>
<translation type="unfinished">Authentifizierungsfehler</translation>
<translation>Authentifizierungsfehler</translation>
</message>
<message>
<location filename="src/tomahawkwindow.cpp" line="496"/>
<source>by</source>
<translation type="unfinished">von</translation>
<translation>von</translation>
</message>
<message>
<location filename="src/tomahawkwindow.cpp" line="506"/>
@@ -1357,17 +1357,17 @@ Bitte ändere den Filter oder versuche es erneut.</translation>
<message>
<location filename="src/transferview.cpp" line="46"/>
<source>Peer</source>
<translation type="unfinished">Gegenstelle</translation>
<translation>Gegenstelle</translation>
</message>
<message>
<location filename="src/transferview.cpp" line="46"/>
<source>Rate</source>
<translation type="unfinished">Rate</translation>
<translation>Rate</translation>
</message>
<message>
<location filename="src/transferview.cpp" line="46"/>
<source>Track</source>
<translation type="unfinished">Stück</translation>
<translation>Stück</translation>
</message>
</context>
<context>
@@ -1435,22 +1435,22 @@ If connections to peers seem to have been lost, just press the appropriate butto
<message>
<location filename="src/libtomahawk/widgets/welcomewidget.ui" line="22"/>
<source>Recently played playlists:</source>
<translation type="unfinished">Aktuell gespielte Playlisten:</translation>
<translation>Zuletzt gespielte Playlisten:</translation>
</message>
<message>
<location filename="src/libtomahawk/widgets/welcomewidget.ui" line="37"/>
<source>Recently played tracks:</source>
<translation type="unfinished">Aktuell gespielte Stücke:</translation>
<translation>Zuletzt gespielte Stücke:</translation>
</message>
<message>
<location filename="src/libtomahawk/widgets/welcomewidget.cpp" line="81"/>
<source>You have not played any playlists yet.</source>
<translation type="unfinished">Du hast bisher keine Playlisten abgespielt.</translation>
<translation>Du hast bisher keine Playlisten abgespielt.</translation>
</message>
<message>
<location filename="src/libtomahawk/widgets/welcomewidget.h" line="106"/>
<source>Welcome to Tomahawk</source>
<translation type="unfinished">Willkommen bei Tomahawk</translation>
<translation>Willkommen bei Tomahawk</translation>
</message>
</context>
<context>

View File

@@ -1,106 +1,110 @@
<RCC>
<qresource>
<file>./data/images/add-friend-button-pressed.png</file>
<file>./data/images/add-friend-button-rest.png</file>
<file>./data/images/avatar-dude-plus.png</file>
<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/magnifying-glass.png</file>
<file>./data/images/no-album-art-placeholder.png</file>
<file>./data/images/now-playing-panel.png</file>
<file>./data/images/now-playing-speaker.png</file>
<file>./data/images/pause-pressed.png</file>
<file>./data/images/pause-rest.png</file>
<file>./data/images/play-pressed.png</file>
<file>./data/images/play-rest.png</file>
<file>./data/images/sipplugin-add.png</file>
<file>./data/images/sipplugin-remove.png</file>
<file>./data/images/playlist-icon.png</file>
<file>./data/images/repeat-1-on-pressed.png</file>
<file>./data/images/repeat-1-on-rest.png</file>
<file>./data/images/repeat-all-on-pressed.png</file>
<file>./data/images/repeat-all-on-rest.png</file>
<file>./data/images/repeat-off-pressed.png</file>
<file>./data/images/repeat-off-rest.png</file>
<file>./data/images/search-box-dismiss-x.png</file>
<file>./data/images/search-box.png</file>
<file>./data/images/seek-and-volume-knob-pressed.png</file>
<file>./data/images/seek-and-volume-knob-rest.png</file>
<file>./data/images/seek-slider-bkg.png</file>
<file>./data/images/seek-slider-level.png</file>
<file>./data/images/shuffle-off-pressed.png</file>
<file>./data/images/shuffle-off-rest.png</file>
<file>./data/images/shuffle-on-pressed.png</file>
<file>./data/images/shuffle-on-rest.png</file>
<file>./data/images/skip-pressed.png</file>
<file>./data/images/skip-rest.png</file>
<file>./data/images/source-info.png</file>
<file>./data/images/source-off-pressed.png</file>
<file>./data/images/source-off-rest.png</file>
<file>./data/images/source-on-pressed.png</file>
<file>./data/images/source-on-rest.png</file>
<file>./data/images/status-alert-icon.png</file>
<file>./data/images/status-bar-bkg.png</file>
<file>./data/images/status-dismiss-x.png</file>
<file>./data/images/user-avatar.png</file>
<file>./data/images/view-toggle-active-centre.png</file>
<file>./data/images/view-toggle-active-left.png</file>
<file>./data/images/view-toggle-active-right.png</file>
<file>./data/images/view-toggle-icon-artist-active.png</file>
<file>./data/images/view-toggle-icon-artist-inactive.png</file>
<file>./data/images/view-toggle-icon-cloud-active.png</file>
<file>./data/images/view-toggle-icon-cloud-inactive.png</file>
<file>./data/images/view-toggle-icon-list-active.png</file>
<file>./data/images/view-toggle-icon-list-inactive.png</file>
<file>./data/images/view-toggle-inactive-centre.png</file>
<file>./data/images/view-toggle-inactive-left.png</file>
<file>./data/images/view-toggle-inactive-right.png</file>
<file>./data/images/view-toggle-pressed-centre.png</file>
<file>./data/images/view-toggle-pressed-left.png</file>
<file>./data/images/view-toggle-pressed-right.png</file>
<file>./data/images/list-add.png</file>
<file>./data/images/list-remove.png</file>
<file>./data/images/arrow-up-double.png</file>
<file>./data/images/arrow-down-double.png</file>
<file>./data/images/volume-icon-full.png</file>
<file>./data/images/arrow-right-double.png</file>
<file>./data/images/view-refresh.png</file>
<file>./data/images/volume-icon-muted.png</file>
<file>./data/images/volume-slider-bkg.png</file>
<file>./data/images/volume-slider-level.png</file>
<file>./data/images/echonest_logo.png</file>
<file>./data/images/loading-animation.gif</file>
<file>./data/images/home.png</file>
<file>./data/images/back.png</file>
<file>./data/images/forward.png</file>
<file>./data/images/music-icon.png</file>
<file>./data/images/configure.png</file>
<file>./data/images/create-playlist.png</file>
<file>./data/images/add.png</file>
<file>./data/images/recently-played.png</file>
<file>./data/images/supercollection.png</file>
<file>./data/images/sipplugin-online.png</file>
<file>./data/images/sipplugin-offline.png</file>
<file>./data/images/advanced-settings.png</file>
<file>./data/images/account-settings.png</file>
<file>./data/images/music-settings.png</file>
<file>./data/images/resolvers-settings.png</file>
<file>./data/images/lastfm-settings.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>
<file>./data/icons/tomahawk-icon-64x64.png</file>
<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>
<file>./data/sql/dbmigrate-22_to_23.sql</file>
</qresource>
<qresource prefix="/">
<file>data/images/avatar-dude-plus.png</file>
<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>
<file>data/images/no-album-art-placeholder.png</file>
<file>data/images/no-artist-image-placeholder.png</file>
<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/pause-pressed.png</file>
<file>data/images/pause-rest.png</file>
<file>data/images/play-pressed.png</file>
<file>data/images/play-rest.png</file>
<file>data/images/sipplugin-add.png</file>
<file>data/images/sipplugin-remove.png</file>
<file>data/images/playlist-icon.png</file>
<file>data/images/repeat-1-on-pressed.png</file>
<file>data/images/repeat-1-on-rest.png</file>
<file>data/images/repeat-all-on-pressed.png</file>
<file>data/images/repeat-all-on-rest.png</file>
<file>data/images/repeat-off-pressed.png</file>
<file>data/images/repeat-off-rest.png</file>
<file>data/images/search-box-dismiss-x.png</file>
<file>data/images/seek-and-volume-knob-pressed.png</file>
<file>data/images/seek-and-volume-knob-rest.png</file>
<file>data/images/seek-slider-bkg.png</file>
<file>data/images/seek-slider-level.png</file>
<file>data/images/shuffle-off-pressed.png</file>
<file>data/images/shuffle-off-rest.png</file>
<file>data/images/shuffle-on-pressed.png</file>
<file>data/images/shuffle-on-rest.png</file>
<file>data/images/skip-pressed.png</file>
<file>data/images/skip-rest.png</file>
<file>data/images/user-avatar.png</file>
<file>data/images/view-toggle-active-centre.png</file>
<file>data/images/view-toggle-active-left.png</file>
<file>data/images/view-toggle-active-right.png</file>
<file>data/images/view-toggle-icon-artist-active.png</file>
<file>data/images/view-toggle-icon-artist-inactive.png</file>
<file>data/images/view-toggle-icon-cloud-active.png</file>
<file>data/images/view-toggle-icon-cloud-inactive.png</file>
<file>data/images/view-toggle-icon-list-active.png</file>
<file>data/images/view-toggle-icon-list-inactive.png</file>
<file>data/images/view-toggle-inactive-centre.png</file>
<file>data/images/view-toggle-inactive-left.png</file>
<file>data/images/view-toggle-inactive-right.png</file>
<file>data/images/view-toggle-pressed-centre.png</file>
<file>data/images/view-toggle-pressed-left.png</file>
<file>data/images/view-toggle-pressed-right.png</file>
<file>data/images/list-add.png</file>
<file>data/images/list-remove.png</file>
<file>data/images/arrow-up-double.png</file>
<file>data/images/arrow-down-double.png</file>
<file>data/images/volume-icon-full.png</file>
<file>data/images/arrow-right-double.png</file>
<file>data/images/view-refresh.png</file>
<file>data/images/volume-icon-muted.png</file>
<file>data/images/volume-slider-bkg.png</file>
<file>data/images/volume-slider-level.png</file>
<file>data/images/echonest_logo.png</file>
<file>data/images/loading-animation.gif</file>
<file>data/images/info.png</file>
<file>data/images/home.png</file>
<file>data/images/back.png</file>
<file>data/images/forward.png</file>
<file>data/images/music-icon.png</file>
<file>data/images/configure.png</file>
<file>data/images/create-playlist.png</file>
<file>data/images/add.png</file>
<file>data/images/recently-played.png</file>
<file>data/images/supercollection.png</file>
<file>data/images/sipplugin-online.png</file>
<file>data/images/sipplugin-offline.png</file>
<file>data/images/advanced-settings.png</file>
<file>data/images/account-settings.png</file>
<file>data/images/music-settings.png</file>
<file>data/images/resolvers-settings.png</file>
<file>data/images/lastfm-settings.png</file>
<file>data/images/automatic-playlist.png</file>
<file>data/images/station.png</file>
<file>data/images/new-additions.png</file>
<file>data/images/loved_playlist.png</file>
<file>data/images/dashboard.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>
<file>data/icons/tomahawk-icon-64x64.png</file>
<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>
<file>data/sql/dbmigrate-22_to_23.sql</file>
<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/js/tomahawk.js</file>
<file>data/images/avatar_frame.png</file>
</qresource>
</RCC>

View File

@@ -5,6 +5,8 @@ SET( OS_SPECIFIC_LINK_LIBRARIES
${COREAUDIO_LIBRARY}
${COREFOUNDATION_LIBRARY}
SPMediaKeyTap
/System/Library/Frameworks/AppKit.framework
/System/Library/Frameworks/Carbon.framework
/System/Library/Frameworks/DiskArbitration.framework
@@ -39,12 +41,17 @@ if (APPLE)
edited_plist # save in this variable
"${plist}" # from the contents of this var
)
IF( NOT CMAKE_BUILD_TYPE STREQUAL "Release" )
STRING( REPLACE "http://download.tomahawk-player.org/sparkle" # match this
"http://download.tomahawk-player.org/sparkle-debug" #replace with debug url
edited_plist # save in this variable
"${edited_plist}" # from the contents of this var
)
ENDIF()
# Disable non-release sparkle for now. We haven't used it yet.
# IF( NOT CMAKE_BUILD_TYPE STREQUAL "Release" )
# STRING( REPLACE "http://download.tomahawk-player.org/sparkle" # match this
# "http://download.tomahawk-player.org/sparkle-debug" #replace with debug url
# edited_plist # save in this variable
# "${edited_plist}" # from the contents of this var
# )
# ENDIF()
FILE( WRITE ${CMAKE_BINARY_DIR}/Info.plist "${edited_plist}" )
FILE(COPY ${CMAKE_SOURCE_DIR}/admin/mac/sparkle_pub.pem
DESTINATION "${CMAKE_BINARY_DIR}/tomahawk.app/Contents/Resources")
endif (APPLE)

View File

@@ -4,13 +4,17 @@ CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
IF( "${gui}" STREQUAL "no" )
SET( QT_DONT_USE_QTGUI TRUE )
ENDIF()
IF( UNIX AND NOT APPLE )
SET( QT_USE_QTDBUS TRUE )
ENDIF( UNIX AND NOT APPLE )
SET( QT_USE_QTSQL TRUE )
SET( QT_USE_QTNETWORK TRUE )
SET( QT_USE_QTXML TRUE )
SET( QT_USE_QTWEBKIT TRUE )
INCLUDE( ${QT_USE_FILE} )
INCLUDE( ${CMAKE_MODULE_PATH}/AddAppIconMacro.cmake )
INCLUDE( AddAppIconMacro )
#SET( CMAKE_BUILD_TYPE "Release" )
SET( CMAKE_VERBOSE_MAKEFILE ON )
@@ -60,6 +64,7 @@ SET( tomahawkSourcesGui ${tomahawkSourcesGui}
sourcetree/items/genericpageitems.cpp
transferview.cpp
PipelineStatusView.cpp
tomahawktrayicon.cpp
audiocontrols.cpp
settingsdialog.cpp
@@ -67,6 +72,7 @@ SET( tomahawkSourcesGui ${tomahawkSourcesGui}
configdelegatebase.cpp
sipconfigdelegate.cpp
resolverconfigdelegate.cpp
settingslistdelegate.cpp
resolversmodel.cpp
tomahawkwindow.cpp
)
@@ -102,6 +108,7 @@ SET( tomahawkHeadersGui ${tomahawkHeadersGui}
sourcetree/items/genericpageitems.h
transferview.h
PipelineStatusView.h
tomahawktrayicon.h
audiocontrols.h
settingsdialog.h
@@ -109,6 +116,7 @@ SET( tomahawkHeadersGui ${tomahawkHeadersGui}
configdelegatebase.h
resolverconfigdelegate.h
sipconfigdelegate.h
settingslistdelegate.h
resolversmodel.h
delegateconfigwrapper.h
tomahawkwindow.h
@@ -116,10 +124,10 @@ SET( tomahawkHeadersGui ${tomahawkHeadersGui}
SET( tomahawkUI ${tomahawkUI}
tomahawkwindow.ui
settingsdialog.ui
diagnosticsdialog.ui
stackedsettingsdialog.ui
proxydialog.ui
searchbox.ui
audiocontrols.ui
)
@@ -160,6 +168,8 @@ IF( UNIX )
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 )
@@ -256,4 +266,5 @@ IF( UNIX AND NOT APPLE AND KDE4_INSTALLED ) #install protocol file
ENDIF()
INSTALL( FILES ${CMAKE_BINARY_DIR}/tomahawk.protocol DESTINATION ${PROTOCOL_INSTALL_DIR} )
ENDIF()
#INCLUDE( "CPack.txt" )

View File

@@ -1,70 +0,0 @@
# cd build ; cmake -DCPACK_GENERATOR=DEB .. ; make package
INCLUDE(InstallRequiredSystemLibraries)
set(CPACK_PACKAGING_INSTALL_PREFIX /usr/local)
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Tomahawk desktop player")
SET(CPACK_PACKAGE_NAME "tomahawk")
SET(CPACK_PACKAGE_VENDOR "tomahawk.org")
SET(CPACK_PACKAGE_CONTACT "Richard Jones")
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "rj@tomahawk.org")
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../README")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/../LICENSE.txt")
SET(CPACK_PACKAGE_VERSION_MAJOR "0")
SET(CPACK_PACKAGE_VERSION_MINOR "0")
SET(CPACK_PACKAGE_VERSION_PATCH "1")
SET(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
#SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "i386") # Default: Output of dpkg --print-architecture or i386
# Copied from generator script, needs to be set for inclusion into filename of package:
# $ dpkg --print-architecture
FIND_PROGRAM(DPKG_CMD dpkg)
IF(NOT DPKG_CMD)
MESSAGE(STATUS "Can not find dpkg in your path, default to i386.")
SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE i386)
ELSE(NOT DPKG_CMD)
EXECUTE_PROCESS(COMMAND "${DPKG_CMD}" --print-architecture
OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
ENDIF(NOT DPKG_CMD)
EXECUTE_PROCESS(COMMAND "date" "+%s"
OUTPUT_VARIABLE TIMEMARK
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# eg: tomahawk-i386-1.0.0
SET(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}-${CPACK_PACKAGE_VERSION}_${TIMEMARK}")
SET(CPACK_PACKAGE_INSTALL_DIRECTORY "CMake ${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}")
IF(WIN32 AND NOT UNIX)
###
ELSE(WIN32 AND NOT UNIX)
# SET(CPACK_STRIP_FILES "tomahawk")
# SET(CPACK_SOURCE_STRIP_FILES "")
ENDIF(WIN32 AND NOT UNIX)
# Nsis only? SET(CPACK_PACKAGE_EXECUTABLES "tomahawk" "tomahawk")
#gnutls is in here because gloox needs it, and we link statically to gloox:
SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libqtgui4 (>=4:4.7.0-0ubuntu1), libtag1c2a (>=1.6.2-0ubuntu1), liblastfm-dev (>=0.4.0~really0.3.3-0ubuntu1), libqt4-sql-sqlite (>=4:4.7.0-0ubuntu1), libvorbis0a (>=1.2.3-3ubuntu1), libmad0 (>=0.15.1b-4ubuntu1), libasound2 (>=1.0.22-0ubuntu7), zlib1g (>=1:1.2.3.3.dfsg-15ubuntu1), libqjson-dev (>=0.7.1-1), libgnutls26 (>= 2.7.14-0), libgloox8 (>=1.0-1)")
#SET(CPACK_DEBIAN_PACKAGE_SECTION "music")
INSTALL(
TARGETS tomahawk DESTINATION bin
RUNTIME DESTINATION bin
# LIBRARY DESTINATION lib${LIB_SUFFIX}
# ARCHIVE DESTINATION lib${LIB_SUFFIX}
)
INSTALL(
PROGRAMS ${CMAKE_BINARY_DIR}/tomahawk
DESTINATION bin
)
INCLUDE(CPack)

116
src/PipelineStatusView.cpp Normal file
View File

@@ -0,0 +1,116 @@
/* === 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 "PipelineStatusView.h"
#include <QHeaderView>
#include <QVBoxLayout>
#include "libtomahawk/pipeline.h"
#include "utils/logger.h"
using namespace Tomahawk;
PipelineStatusView::PipelineStatusView( AnimatedSplitter* parent )
: AnimatedWidget( parent )
, m_parent( parent )
{
setHiddenSize( QSize( 0, 0 ) );
setLayout( new QVBoxLayout() );
m_tree = new QTreeWidget( this );
layout()->setMargin( 0 );
layout()->addWidget( m_tree );
QStringList headers;
headers << tr( "Searching For" ) << tr( "Pending" );
m_tree->setHeaderLabels( headers );
m_tree->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOff );
m_tree->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Ignored );
m_tree->setColumnCount( 2 );
m_tree->setColumnWidth( 0, 200 );
m_tree->setColumnWidth( 1, 50 );
m_tree->header()->setStretchLastSection( true );
m_tree->setRootIsDecorated( false );
m_tree->setFrameShape( QFrame::NoFrame );
m_tree->setAttribute( Qt::WA_MacShowFocusRect, 0 );
new QTreeWidgetItem( m_tree );
connect( Pipeline::instance(), SIGNAL( resolving( Tomahawk::query_ptr ) ), SLOT( onPipelineUpdate( Tomahawk::query_ptr ) ) );
connect( Pipeline::instance(), SIGNAL( idle() ), SLOT( onPipelineUpdate() ) );
#ifndef Q_WS_WIN
QFont f = font();
f.setPointSize( f.pointSize() - 1 );
setFont( f );
#endif
#ifdef Q_WS_MAC
f.setPointSize( f.pointSize() - 2 );
setFont( f );
#endif
onPipelineUpdate();
}
void
PipelineStatusView::onPipelineUpdate( const query_ptr& query )
{
QTreeWidgetItem* ti = m_tree->invisibleRootItem()->child( 0 );
if ( Pipeline::instance()->activeQueryCount() && !query.isNull() )
{
ti->setText( 0, QString( "%1 - %2" ).arg( query->artist() ).arg( query->track() ) );
ti->setText( 1, QString( "%1" ).arg( Pipeline::instance()->activeQueryCount() + Pipeline::instance()->pendingQueryCount() ) );
if ( isHidden() )
emit showWidget();
}
else
{
ti->setText( 0, tr( "Idle" ) );
ti->setText( 1, QString( "None" ) );
if ( !isHidden() )
emit hideWidget();
}
}
QSize
PipelineStatusView::sizeHint() const
{
unsigned int y = 0;
y += m_tree->header()->height();
y += m_tree->contentsMargins().top() + m_tree->contentsMargins().bottom();
if ( m_tree->invisibleRootItem()->childCount() )
{
unsigned int rowheight = m_tree->sizeHintForRow( 0 );
y += rowheight * m_tree->invisibleRootItem()->childCount() + 2;
}
return QSize( 0, y );
}

View File

@@ -16,49 +16,34 @@
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
#include "dummytranscode.h"
#ifndef PIPELINESTATUSVIEW_H
#define PIPELINESTATUSVIEW_H
#include <QDebug>
#include <QTreeWidget>
DummyTranscode::DummyTranscode()
: m_init( false )
#include "typedefs.h"
#include "utils/animatedsplitter.h"
class StreamConnection;
class PipelineStatusView : public AnimatedWidget
{
qDebug() << Q_FUNC_INFO;
}
Q_OBJECT
DummyTranscode::~DummyTranscode()
{
qDebug() << Q_FUNC_INFO;
}
void
DummyTranscode::processData( const QByteArray &buffer, bool finish )
{
Q_UNUSED( finish );
m_buffer.append( buffer );
// qDebug() << "DUMMYTRANSCODING:" << buffer.size();
if( !m_init && m_buffer.size() >= 16364 ) {
m_init = true;
emit streamInitialized( 44100, 2 );
public:
explicit PipelineStatusView( AnimatedSplitter* parent );
virtual ~PipelineStatusView()
{
}
}
QSize sizeHint() const;
void
DummyTranscode::onSeek( int seconds )
{
Q_UNUSED( seconds );
m_buffer.clear();
}
private slots:
void onPipelineUpdate( const Tomahawk::query_ptr& query = Tomahawk::query_ptr() );
private:
QTreeWidget* m_tree;
AnimatedSplitter* m_parent;
};
void
DummyTranscode::clearBuffers()
{
m_buffer.clear();
m_init = false;
}
#endif // TRANSFERVIEW_H

View File

@@ -20,14 +20,24 @@
#include "ui_audiocontrols.h"
#include <QNetworkReply>
#include <QDropEvent>
#include <QMouseEvent>
#include "audio/audioengine.h"
#include "viewmanager.h"
#include "utils/imagebutton.h"
#include "utils/tomahawkutils.h"
#include "playlist/playlistview.h"
#include "database/database.h"
#include "database/databasecommand_socialaction.h"
#include "album.h"
#include "utils/imagebutton.h"
#include "utils/tomahawkutils.h"
#include "utils/logger.h"
#include <globalactionmanager.h>
using namespace Tomahawk;
static QString s_acInfoIdentifier = QString( "AUDIOCONTROLS" );
@@ -38,14 +48,13 @@ AudioControls::AudioControls( QWidget* parent )
, m_shuffled( false )
{
ui->setupUi( this );
ui->buttonAreaLayout->setSpacing( 2 );
setAcceptDrops( true );
QFont font( ui->artistTrackLabel->font() );
font.setPixelSize( 12 );
#ifdef Q_WS_MAC
font.setPointSize( font.pointSize() - 2 );
font.setPixelSize( font.pixelSize() - 2 );
#endif
ui->artistTrackLabel->setFont( font );
@@ -75,32 +84,31 @@ AudioControls::AudioControls( QWidget* parent )
ui->repeatButton->setPixmap( RESPATH "images/repeat-off-pressed.png", QIcon::Off, QIcon::Active );
ui->volumeLowButton->setPixmap( RESPATH "images/volume-icon-muted.png" );
ui->volumeHighButton->setPixmap( RESPATH "images/volume-icon-full.png" );
ui->loveButton->setPixmap( RESPATH "images/not-loved.png" );
ui->loveButton->setCheckable( true );
ui->ownerLabel->setForegroundRole( QPalette::Dark );
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( false );
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::handle::horizontal {"
"margin-left: 5px; margin-right: -5px; "
"width: 0px;"
//"margin-bottom: -7px; margin-top: -7px;"
//"height: 17px; width: 16px;"
//"background-image: url(" RESPATH "images/seek-and-volume-knob-rest.png);"
//"background-repeat: no-repeat;"
"}"
"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 );
@@ -117,12 +125,11 @@ AudioControls::AudioControls( QWidget* parent )
"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_playAction = new QAction( this );
m_pauseAction = new QAction( this );
@@ -134,6 +141,7 @@ AudioControls::AudioControls( QWidget* parent )
connect( m_prevAction, SIGNAL( triggered() ), (QObject*)APP->audioEngine(), SLOT( previous() ) );
connect( m_nextAction, SIGNAL( triggered() ), (QObject*)APP->audioEngine(), SLOT( next() ) ); */
connect( ui->seekSlider, SIGNAL( valueChanged( int ) ), AudioEngine::instance(), SLOT( seek( int ) ) );
connect( ui->volumeSlider, SIGNAL( valueChanged( int ) ), AudioEngine::instance(), SLOT( setVolume( int ) ) );
connect( ui->prevButton, SIGNAL( clicked() ), AudioEngine::instance(), SLOT( previous() ) );
connect( ui->playPauseButton, SIGNAL( clicked() ), AudioEngine::instance(), SLOT( play() ) );
@@ -142,7 +150,6 @@ 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() ) );
@@ -152,6 +159,7 @@ AudioControls::AudioControls( QWidget* parent )
connect( ui->artistTrackLabel, SIGNAL( clickedArtist() ), SLOT( onArtistClicked() ) );
connect( ui->artistTrackLabel, SIGNAL( clickedTrack() ), SLOT( onTrackClicked() ) );
connect( ui->albumLabel, SIGNAL( clickedAlbum() ), SLOT( onAlbumClicked() ) );
connect( ui->loveButton, SIGNAL( clicked( bool ) ), SLOT( onLoveButtonClicked( bool ) ) );
// <From AudioEngine>
connect( AudioEngine::instance(), SIGNAL( loading( Tomahawk::result_ptr ) ), SLOT( onPlaybackLoading( Tomahawk::result_ptr ) ) );
@@ -166,11 +174,20 @@ AudioControls::AudioControls( QWidget* parent )
.scaled( ui->coverImage->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
connect( Tomahawk::InfoSystem::InfoSystem::instance(),
SIGNAL( info( QString, Tomahawk::InfoSystem::InfoType, QVariant, QVariant, Tomahawk::InfoSystem::InfoCustomData ) ),
SLOT( infoSystemInfo( QString, Tomahawk::InfoSystem::InfoType, QVariant, QVariant, Tomahawk::InfoSystem::InfoCustomData ) ) );
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 );
ui->stackedLayout->setMargin( 0 );
ui->playPauseButton->setContentsMargins( 0, 0, 0, 0 );
ui->pauseButton->setContentsMargins( 0, 0, 0, 0 );
ui->stackedLayout->setSizeConstraint( QLayout::SetFixedSize );
onPlaybackStopped(); // initial state
}
@@ -209,7 +226,7 @@ AudioControls::onVolumeChanged( int volume )
void
AudioControls::onPlaybackStarted( const Tomahawk::result_ptr& result )
{
qDebug() << Q_FUNC_INFO;
tDebug( LOGEXTRA ) << Q_FUNC_INFO;
onPlaybackLoading( result );
@@ -217,38 +234,37 @@ AudioControls::onPlaybackStarted( const Tomahawk::result_ptr& result )
trackInfo["artist"] = result->artist()->name();
trackInfo["album"] = result->album()->name();
Tomahawk::InfoSystem::InfoSystem::instance()->getInfo(
s_acInfoIdentifier, Tomahawk::InfoSystem::InfoAlbumCoverArt,
QVariant::fromValue< Tomahawk::InfoSystem::InfoCriteriaHash >( trackInfo ), Tomahawk::InfoSystem::InfoCustomData() );
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( QString caller, Tomahawk::InfoSystem::InfoType type, QVariant input, QVariant output, Tomahawk::InfoSystem::InfoCustomData customData )
AudioControls::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QVariant output )
{
Q_UNUSED( input );
Q_UNUSED( customData );
qDebug() << Q_FUNC_INFO << caller << type << s_acInfoIdentifier << Tomahawk::InfoSystem::InfoAlbumCoverArt;
if ( caller != s_acInfoIdentifier || type != Tomahawk::InfoSystem::InfoAlbumCoverArt )
if ( requestData.caller != s_acInfoIdentifier || requestData.type != Tomahawk::InfoSystem::InfoAlbumCoverArt )
{
qDebug() << "Info of wrong type or not with our identifier";
return;
}
if ( m_currentTrack.isNull() )
{
qDebug() << "Current track is null when trying to apply fetched cover art";
tLog() << "Current track is null when trying to apply fetched cover art";
return;
}
if ( !output.canConvert< Tomahawk::InfoSystem::InfoCustomData >() )
if ( !output.canConvert< QVariantMap >() )
{
qDebug() << "Cannot convert fetched art from a QByteArray";
tDebug( LOGINFO ) << "Cannot convert fetched art from a QByteArray";
return;
}
Tomahawk::InfoSystem::InfoCustomData returnedData = output.value< Tomahawk::InfoSystem::InfoCustomData >();
QVariantMap returnedData = output.value< QVariantMap >();
const QByteArray ba = returnedData["imgbytes"].toByteArray();
if ( ba.length() )
{
@@ -267,14 +283,13 @@ void
AudioControls::infoSystemFinished( QString target )
{
Q_UNUSED( target );
qDebug() << Q_FUNC_INFO;
}
void
AudioControls::onPlaybackLoading( const Tomahawk::result_ptr& result )
{
qDebug() << Q_FUNC_INFO;
tDebug( LOGEXTRA ) << Q_FUNC_INFO;
m_currentTrack = result;
@@ -283,22 +298,45 @@ AudioControls::onPlaybackLoading( const Tomahawk::result_ptr& result )
ui->ownerLabel->setText( result->friendlySource() );
ui->coverImage->setPixmap( m_defaultCover );
if ( ui->timeLabel->text().isEmpty() )
ui->timeLabel->setText( TomahawkUtils::timeToString( 0 ) );
if ( ui->timeLeftLabel->text().isEmpty() )
ui->timeLeftLabel->setText( "-" + TomahawkUtils::timeToString( result->duration() ) );
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->pauseButton->setEnabled( true );
ui->pauseButton->setVisible( true );
ui->playPauseButton->setVisible( false );
ui->playPauseButton->setEnabled( false );
ui->stackedLayout->setCurrentWidget( ui->pauseButton );
ui->loveButton->setEnabled( true );
ui->loveButton->setVisible( true );
result->loadSocialActions();
connect( result.data(), SIGNAL( socialActionsLoaded() ), this, SLOT( socialActionsLoaded() ) );
}
void
AudioControls::socialActionsLoaded()
{
Result* r = qobject_cast< Result* >( sender() );
Q_ASSERT( r );
if ( m_currentTrack.data() == r )
{
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 );
}
}
}
@@ -308,23 +346,17 @@ AudioControls::onPlaybackPaused()
/* m_pauseAction->setEnabled( false );
m_playAction->setEnabled( true ); */
ui->pauseButton->setVisible( false );
ui->pauseButton->setEnabled( false );
ui->playPauseButton->setEnabled( true );
ui->playPauseButton->setVisible( true );
ui->stackedLayout->setCurrentWidget( ui->playPauseButton );
}
void
AudioControls::onPlaybackResumed()
{
/* m_playAction->setEnabled( false );
m_pauseAction->setEnabled( true ); */
ui->pauseButton->setVisible( true );
ui->pauseButton->setEnabled( true );
ui->playPauseButton->setVisible( false );
ui->playPauseButton->setEnabled( false );
ui->stackedLayout->setCurrentWidget( ui->pauseButton );
ui->loveButton->setVisible( true );
}
@@ -341,10 +373,9 @@ AudioControls::onPlaybackStopped()
ui->coverImage->setPixmap( QPixmap() );
ui->seekSlider->setVisible( false );
ui->pauseButton->setVisible( false );
ui->pauseButton->setEnabled( false );
ui->playPauseButton->setEnabled( true );
ui->playPauseButton->setVisible( true );
ui->stackedLayout->setCurrentWidget( ui->playPauseButton );
ui->loveButton->setEnabled( false );
ui->loveButton->setVisible( false );
/* m_pauseAction->setEnabled( false );
m_playAction->setEnabled( true ); */
@@ -357,10 +388,14 @@ AudioControls::onPlaybackTimer( qint64 msElapsed )
if ( m_currentTrack.isNull() )
return;
ui->seekSlider->blockSignals( true );
const int seconds = msElapsed / 1000;
ui->timeLabel->setText( TomahawkUtils::timeToString( seconds ) );
ui->timeLeftLabel->setText( "-" + TomahawkUtils::timeToString( m_currentTrack->duration() - seconds ) );
ui->seekSlider->setValue( msElapsed );
ui->seekSlider->blockSignals( false );
}
@@ -481,3 +516,84 @@ AudioControls::onTrackClicked()
{
ViewManager::instance()->showCurrentTrack();
}
void
AudioControls::dragEnterEvent( QDragEnterEvent* e )
{
if ( GlobalActionManager::instance()->acceptsMimeData( e->mimeData() ) )
e->acceptProposedAction();
}
void
AudioControls::dragMoveEvent( QDragMoveEvent* /* e */ )
{
// if ( GlobalActionManager::instance()->acceptsMimeData( e->mimeData() ) )
// e->acceptProposedAction();
}
void
AudioControls::dropEvent( QDropEvent* e )
{
tDebug() << "AudioControls got drop:" << e->mimeData()->formats();
if ( GlobalActionManager::instance()->acceptsMimeData( e->mimeData() ) )
{
connect( GlobalActionManager::instance(), SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( droppedTracks( QList<Tomahawk::query_ptr> ) ) );
GlobalActionManager::instance()->tracksFromMimeData( e->mimeData() );
e->accept();
}
}
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() );
// just queue the rest
for ( int i = 1; i < tracks.size(); i++ )
{
ViewManager::instance()->queue()->model()->append( tracks[ i ] );
}
}
}
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" );
}
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" );
}
}

View File

@@ -25,6 +25,9 @@
#include "playlistinterface.h"
#include "infosystem/infosystem.h"
class QDropEvent;
class QDragEnterEvent;
class QDragMoveEvent;
namespace Ui
{
class AudioControls;
@@ -43,11 +46,14 @@ signals:
void pausePressed();
public slots:
void onRepeatModeChanged( PlaylistInterface::RepeatMode mode );
void onRepeatModeChanged( Tomahawk::PlaylistInterface::RepeatMode mode );
void onShuffleModeChanged( bool enabled );
protected:
void changeEvent( QEvent* e );
void dragEnterEvent ( QDragEnterEvent* );
void dragMoveEvent ( QDragMoveEvent* );
void dropEvent ( QDropEvent* );
private slots:
void onPlaybackStarted( const Tomahawk::result_ptr& result );
@@ -65,10 +71,14 @@ private slots:
void onArtistClicked();
void onAlbumClicked();
void onTrackClicked();
void onLoveButtonClicked( bool );
void infoSystemInfo( QString caller, Tomahawk::InfoSystem::InfoType type, QVariant input, QVariant output, Tomahawk::InfoSystem::InfoCustomData customData );
void infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData requestData, QVariant output );
void infoSystemFinished( QString target );
void droppedTracks( QList<Tomahawk::query_ptr> );
void socialActionsLoaded();
private:
Ui::AudioControls *ui;
@@ -80,7 +90,7 @@ private:
QPixmap m_defaultCover;
Tomahawk::result_ptr m_currentTrack;
PlaylistInterface::RepeatMode m_repeatMode;
Tomahawk::PlaylistInterface::RepeatMode m_repeatMode;
bool m_shuffled;
};

View File

@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>939</width>
<width>929</width>
<height>80</height>
</rect>
</property>
@@ -60,7 +60,7 @@
</property>
<layout class="QHBoxLayout" name="buttonAreaLayout">
<item>
<spacer name="horizontalSpacer">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@@ -80,18 +80,25 @@
</widget>
</item>
<item>
<widget class="ImageButton" name="playPauseButton">
<property name="text">
<string>Play</string>
<layout class="QStackedLayout" name="stackedLayout">
<property name="spacing">
<number>0</number>
</property>
</widget>
</item>
<item>
<widget class="ImageButton" name="pauseButton">
<property name="text">
<string>Pause</string>
</property>
</widget>
<item>
<widget class="ImageButton" name="playPauseButton">
<property name="text">
<string>Play</string>
</property>
</widget>
</item>
<item>
<widget class="ImageButton" name="pauseButton">
<property name="text">
<string>Pause</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<widget class="ImageButton" name="nextButton">
@@ -101,7 +108,7 @@
</widget>
</item>
<item>
<spacer name="horizontalSpacer_2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@@ -251,6 +258,39 @@
</property>
</spacer>
</item>
<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>
</property>
<property name="text">
<string>love</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>13</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QLabel" name="ownerLabel">
<property name="font">

View File

@@ -18,12 +18,13 @@
#include "configdelegatebase.h"
#include "utils/tomahawkutils.h"
#include <QPainter>
#include <QApplication>
#include <QMouseEvent>
#include "utils/tomahawkutils.h"
#include "utils/logger.h"
ConfigDelegateBase::ConfigDelegateBase ( QObject* parent )
: QStyledItemDelegate ( parent )
{
@@ -97,13 +98,13 @@ ConfigDelegateBase::editorEvent ( QEvent* event, QAbstractItemModel* model, cons
return false;
// eat the double click events inside the check rect
if( event->type() == QEvent::MouseButtonDblClick ) {
return true;
}
if( event->type() == QEvent::MouseButtonDblClick ) {
return true;
}
Qt::CheckState curState = static_cast< Qt::CheckState >( index.data( Qt::CheckStateRole ).toInt() );
Qt::CheckState newState = curState == Qt::Checked ? Qt::Unchecked : Qt::Checked;
return model->setData( index, newState, Qt::CheckStateRole );
Qt::CheckState curState = static_cast< Qt::CheckState >( index.data( Qt::CheckStateRole ).toInt() );
Qt::CheckState newState = curState == Qt::Checked ? Qt::Unchecked : Qt::Checked;
return model->setData( index, newState, Qt::CheckStateRole );
} else if( event->type() == QEvent::MouseButtonPress ) {
QMouseEvent* me = static_cast< QMouseEvent* >( event );

View File

@@ -21,6 +21,7 @@
#include <QDialog>
#include <QDialogButtonBox>
#include <QVBoxLayout>
#include <QPushButton>
class DelegateConfigWrapper : public QDialog
{
@@ -28,8 +29,10 @@ class DelegateConfigWrapper : public QDialog
public:
DelegateConfigWrapper( QWidget* conf, const QString& title, QWidget* parent, Qt::WindowFlags flags = 0 ) : QDialog( parent, flags ), m_widget( conf )
{
m_widget->setVisible( true );
m_widget->setWindowFlags( Qt::Sheet );
#ifdef Q_OS_MAC
m_widget->setVisible( true );
#endif
setWindowTitle( title );
QVBoxLayout* v = new QVBoxLayout( this );
@@ -37,6 +40,7 @@ public:
v->addWidget( m_widget );
QDialogButtonBox* buttons = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this );
m_okButton = buttons->button( QDialogButtonBox::Ok );
connect( buttons, SIGNAL( clicked( QAbstractButton*) ), this, SLOT( closed( QAbstractButton* ) ) );
connect( this, SIGNAL( rejected() ), this, SLOT( rejected() ) );
v->addWidget( buttons );
@@ -47,9 +51,19 @@ public:
setSizeGripEnabled( false );
setMinimumSize( sizeHint() );
setMaximumSize( sizeHint() ); // to remove the resize grip on osx this is the only way
connect( conf, SIGNAL( sizeHintChanged() ), this, SLOT( updateSizeHint() ) );
#else
m_widget->setVisible( true );
#endif
}
public slots:
void toggleOkButton( bool dataError )
{
// if dataError is True we want to set the button enabled to false
m_okButton->setEnabled( !dataError );
}
void closed( QAbstractButton* b )
{
// let the config widget live to see another day
@@ -72,8 +86,18 @@ public slots:
m_widget->setVisible( false );
}
void updateSizeHint() {
hide();
setSizeGripEnabled( false );
setMinimumSize( sizeHint() );
setMaximumSize( sizeHint() );
show();
}
private:
QWidget* m_widget;
QPushButton* m_okButton;
};
#endif

View File

@@ -19,17 +19,21 @@
#include "diagnosticsdialog.h"
#include "ui_diagnosticsdialog.h"
#include "config.h"
#include <sip/SipHandler.h>
#include <network/servent.h>
#include <sourcelist.h>
#include <QTextEdit>
#include <QDebug>
#include <QDialogButtonBox>
#include <QPushButton>
#include <QApplication>
#include <QClipboard>
#include "utils/logger.h"
DiagnosticsDialog::DiagnosticsDialog( QWidget *parent )
: QDialog( parent )
, ui( new Ui::DiagnosticsDialog )
@@ -52,6 +56,11 @@ void DiagnosticsDialog::updateLogView()
.arg( QDateTime::currentDateTime().toString() )
);
// network
log.append(
"TOMAHAWK-VERSION: " TOMAHAWK_VERSION "\n\n\n"
);
// network
log.append(
"NETWORK:\n"

View File

@@ -20,7 +20,6 @@
#define DIAGNOSTICSDIALOG_H
#include <QDialog>
#include <QDebug>
namespace Ui
{

View File

@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>621</width>
<height>434</height>
<width>724</width>
<height>433</height>
</rect>
</property>
<property name="minimumSize">
@@ -20,6 +20,9 @@
<string>Tomahawk Diagnostics</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="margin">
<number>4</number>
</property>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
@@ -57,8 +60,6 @@
</item>
</layout>
</widget>
<resources>
<include location="../resources.qrc"/>
</resources>
<resources/>
<connections/>
</ui>

View File

@@ -22,8 +22,7 @@
#ifdef ENABLE_HEADLESS
#define TOMAHAWK_APPLICATION QCoreApplication
#define TOMAHAWK_HEADLESS
#include <QApplication>>
#include <QApplication>
#else

View File

@@ -21,15 +21,16 @@ set( libSources
artist.cpp
album.cpp
collection.cpp
webcollection.cpp
playlist.cpp
resolver.cpp
query.cpp
result.cpp
source.cpp
sourceplaylistinterface.cpp
viewpage.cpp
viewmanager.cpp
globalactionmanager.cpp
contextmenu.cpp
sip/SipPlugin.cpp
sip/SipHandler.cpp
@@ -54,6 +55,7 @@ set( libSources
database/databasecommand_addfiles.cpp
database/databasecommand_deletefiles.cpp
database/databasecommand_dirmtimes.cpp
database/databasecommand_filemtimes.cpp
database/databasecommand_loadfile.cpp
database/databasecommand_logplayback.cpp
database/databasecommand_addsource.cpp
@@ -73,19 +75,24 @@ set( libSources
database/databasecommand_setdynamicplaylistrevision.cpp
database/databasecommand_createdynamicplaylist.cpp
database/databasecommand_loaddynamicplaylist.cpp
database/databasecommand_loaddynamicplaylistentries.cpp
database/databasecommand_loadallautoplaylists.cpp
database/databasecommand_loadallstations.cpp
database/databasecommand_deletedynamicplaylist.cpp
database/databasecommand_addclientauth.cpp
database/databasecommand_clientauthvalid.cpp
database/databasecommand_socialaction.cpp
database/databasecommand_loadsocialactions.cpp
database/databasecommand_genericselect.cpp
database/database.cpp
infosystem/infosystemcache.cpp
infosystem/infosystem.cpp
infosystem/infosystemworker.cpp
infosystem/infoplugins/echonestplugin.cpp
infosystem/infoplugins/lastfmplugin.cpp
infosystem/infoplugins/musixmatchplugin.cpp
infosystem/infoplugins/generic/echonestplugin.cpp
infosystem/infoplugins/generic/lastfmplugin.cpp
infosystem/infoplugins/generic/musixmatchplugin.cpp
infosystem/infoplugins/generic/musicbrainzPlugin.cpp
playlist/treemodel.cpp
playlist/treeproxymodel.cpp
@@ -112,6 +119,7 @@ set( libSources
playlist/albumitemdelegate.cpp
playlist/albumview.cpp
playlist/artistview.cpp
playlist/customplaylistview.cpp
playlist/topbar/topbar.cpp
playlist/topbar/clearbutton.cpp
@@ -138,6 +146,8 @@ set( libSources
playlist/dynamic/widgets/CollapsibleControls.cpp
playlist/dynamic/widgets/DynamicSetupWidget.cpp
playlist/dynamic/widgets/LoadingSpinner.cpp
playlist/dynamic/database/DatabaseControl.cpp
playlist/dynamic/database/DatabaseGenerator.cpp
network/bufferiodevice.cpp
network/msgprocessor.cpp
@@ -153,19 +163,28 @@ set( libSources
utils/querylabel.cpp
utils/elidedlabel.cpp
utils/imagebutton.cpp
utils/progresstreeview.cpp
utils/logger.cpp
utils/proxystyle.cpp
utils/widgetdragfilter.cpp
utils/animatedsplitter.cpp
utils/xspfloader.cpp
utils/xspfgenerator.cpp
utils/jspfloader.cpp
utils/spotifyparser.cpp
utils/rdioparser.cpp
utils/shortenedlinkparser.cpp
widgets/newplaylistwidget.cpp
widgets/searchwidget.cpp
widgets/playlisttypeselectordlg.cpp
widgets/welcomewidget.cpp
widgets/welcomeplaylistmodel.cpp
widgets/overlaywidget.cpp
widgets/HeaderLabel.cpp
widgets/SocialPlaylistWidget.cpp
widgets/infowidgets/sourceinfowidget.cpp
widgets/infowidgets/ArtistInfoWidget.cpp
widgets/infowidgets/AlbumInfoWidget.cpp
kdsingleapplicationguard/kdsingleapplicationguard.cpp
kdsingleapplicationguard/kdsharedmemorylocker.cpp
@@ -181,18 +200,17 @@ set( libHeaders
aclsystem.h
collection.h
webcollection.h
query.h
resolver.h
result.h
source.h
viewpage.h
sourceplaylistinterface.h
viewmanager.h
globalactionmanager.h
contextmenu.h
artist.h
album.h
track.h
playlist.h
sip/SipPlugin.h
@@ -216,6 +234,7 @@ set( libHeaders
database/databasecommand_addfiles.h
database/databasecommand_deletefiles.h
database/databasecommand_dirmtimes.h
database/databasecommand_filemtimes.h
database/databasecommand_loadfile.h
database/databasecommand_logplayback.h
database/databasecommand_addsource.h
@@ -237,18 +256,23 @@ set( libHeaders
database/databasecommand_setdynamicplaylistrevision.h
database/databasecommand_createdynamicplaylist.h
database/databasecommand_loaddynamicplaylist.h
database/databasecommand_loaddynamicplaylistentries.h
database/databasecommand_deletedynamicplaylist.h
database/databasecommand_loadallautoplaylists.h
database/databasecommand_loadallstations.h
database/databasecommand_addclientauth.h
database/databasecommand_clientauthvalid.h
database/databasecommand_socialaction.h
database/databasecommand_loadsocialactions.h
database/databasecommand_genericselect.h
infosystem/infosystem.h
infosystem/infosystemworker.h
infosystem/infosystemcache.h
infosystem/infoplugins/echonestplugin.h
infosystem/infoplugins/lastfmplugin.h
infosystem/infoplugins/musixmatchplugin.h
infosystem/infoplugins/generic/echonestplugin.h
infosystem/infoplugins/generic/lastfmplugin.h
infosystem/infoplugins/generic/musixmatchplugin.h
infosystem/infoplugins/generic/musicbrainzPlugin.h
network/bufferiodevice.h
network/msgprocessor.h
@@ -285,6 +309,7 @@ set( libHeaders
playlist/albumitemdelegate.h
playlist/albumview.h
playlist/artistview.h
playlist/customplaylistview.h
playlist/topbar/topbar.h
playlist/topbar/clearbutton.h
@@ -297,7 +322,6 @@ set( libHeaders
playlist/dynamic/DynamicPlaylist.h
playlist/dynamic/DynamicControl.h
playlist/dynamic/GeneratorFactory.h
playlist/dynamic/GeneratorInterface.h
playlist/dynamic/DynamicView.h
playlist/dynamic/DynamicModel.h
@@ -312,39 +336,57 @@ set( libHeaders
playlist/dynamic/widgets/CollapsibleControls.h
playlist/dynamic/widgets/DynamicSetupWidget.h
playlist/dynamic/widgets/LoadingSpinner.h
playlist/dynamic/database/DatabaseControl.h
playlist/dynamic/database/DatabaseGenerator.h
utils/tomahawkutils.h
utils/querylabel.h
utils/elidedlabel.h
utils/animatedcounterlabel.h
utils/imagebutton.h
utils/progresstreeview.h
utils/widgetdragfilter.h
utils/animatedsplitter.h
utils/xspfloader.h
utils/xspfgenerator.h
utils/jspfloader.h
utils/spotifyparser.h
utils/rdioparser.h
utils/shortenedlinkparser.h
widgets/newplaylistwidget.h
widgets/searchwidget.h
widgets/playlisttypeselectordlg.h
widgets/welcomewidget.h
widgets/welcomeplaylistmodel.h
widgets/overlaywidget.h
widgets/HeaderLabel.h
widgets/SocialPlaylistWidget.h
widgets/infowidgets/sourceinfowidget.h
widgets/infowidgets/ArtistInfoWidget.h
widgets/infowidgets/AlbumInfoWidget.h
kdsingleapplicationguard/kdsingleapplicationguard.h
kdsingleapplicationguard/kdsharedmemorylocker.h
kdsingleapplicationguard/kdtoolsglobal.h
kdsingleapplicationguard/kdlockedsharedmemorypointer.h
)
set( libHeaders_NoMOC
playlist/dynamic/GeneratorInterface.h
viewpage.h
infosystem/infoplugins/unix/imageconverter.h
playlist/dynamic/GeneratorInterface.h
playlist/dynamic/GeneratorFactory.h
utils/tomahawkutils.h
)
set( libUI ${libUI}
widgets/playlisttypeselectordlg.ui
widgets/newplaylistwidget.ui
widgets/searchwidget.ui
widgets/welcomewidget.ui
widgets/SocialPlaylistWidget.ui
widgets/infowidgets/sourceinfowidget.ui
widgets/infowidgets/ArtistInfoWidget.ui
widgets/infowidgets/AlbumInfoWidget.ui
playlist/topbar/topbar.ui
playlist/infobar/infobar.ui
)
@@ -367,6 +409,14 @@ include_directories( . ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/.
${CMAKE_BINARY_DIR}/thirdparty/liblastfm2/src
)
IF( UNIX AND NOT APPLE )
SET( libSources ${libSources}
infosystem/infoplugins/unix/fdonotifyplugin.cpp
infosystem/infoplugins/unix/imageconverter.cpp )
SET( libHeaders ${libHeaders}
infosystem/infoplugins/unix/fdonotifyplugin.h )
ENDIF( UNIX AND NOT APPLE )
IF( WIN32 )
SET( OS_SPECIFIC_LINK_LIBRARIES
@@ -384,13 +434,30 @@ ENDIF( WIN32 )
IF( APPLE )
FIND_LIBRARY( COREAUDIO_LIBRARY CoreAudio )
FIND_LIBRARY( COREFOUNDATION_LIBRARY CoreFoundation )
MARK_AS_ADVANCED( COREAUDIO_LIBRARY COREFOUNDATION_LIBRARY )
FIND_LIBRARY( FOUNDATION_LIBRARY Foundation )
FIND_LIBRARY( SCRIPTINGBRIDGE_LIBRARY ScriptingBridge )
MARK_AS_ADVANCED( COREAUDIO_LIBRARY COREFOUNDATION_LIBRARY FOUNDATION_LIBRARY SCRIPTINGBRIDGE_LIBRARY )
SET( libSources ${libSources}
infosystem/infoplugins/mac/adium.mm
infosystem/infoplugins/mac/adiumplugin.cpp
widgets/maclineedit.mm
utils/tomahawkutils_mac.mm )
SET( libHeaders ${libHeaders}
widgets/maclineedit.h
infosystem/infoplugins/mac/adium.h
infosystem/infoplugins/mac/adiumplugin.h )
SET( OS_SPECIFIC_LINK_LIBRARIES
${OS_SPECIFIC_LINK_LIBRARIES}
# System
${COREAUDIO_LIBRARY}
${COREFOUNDATION_LIBRARY}
${FOUNDATION_LIBRARY}
${SCRIPTINGBRIDGE_LIBRARY}
/System/Library/Frameworks/AppKit.framework
)
ENDIF( APPLE )
@@ -415,6 +482,7 @@ target_link_libraries( tomahawklib
${TAGLIB_LIBRARIES}
${CLUCENE_LIBRARIES}
${LIBECHONEST_LIBRARY}
${QT_QTUITOOLS_LIBRARY}
${QT_LIBRARIES}
${OS_SPECIFIC_LINK_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}

View File

@@ -18,12 +18,14 @@
#include "aclsystem.h"
#include <QtDebug>
#include <QMutexLocker>
#include <QVariant>
#include <tomahawksettings.h>
#include "utils/logger.h"
ACLSystem* ACLSystem::s_instance = 0;
ACLSystem*

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