remove-nonfree-artwork-and-spotify.patch 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864
  1. diff --git a/3rdparty/SPMediaKeyTap/SPMediaKeyTap.m b/3rdparty/SPMediaKeyTap/SPMediaKeyTap.m
  2. index a349f5922..c418e0bca 100644
  3. --- a/3rdparty/SPMediaKeyTap/SPMediaKeyTap.m
  4. +++ b/3rdparty/SPMediaKeyTap/SPMediaKeyTap.m
  5. @@ -98,7 +98,6 @@ static CGEventRef tapEventCallback(CGEventTapProxy proxy, CGEventType type, CGEv
  6. {
  7. return [NSArray arrayWithObjects:
  8. [[NSBundle mainBundle] bundleIdentifier], // your app
  9. - @"com.spotify.client",
  10. @"com.apple.iTunes",
  11. @"com.apple.QuickTimePlayerX",
  12. @"com.apple.quicktimeplayer",
  13. diff --git a/CMakeLists.txt b/CMakeLists.txt
  14. index 657efdbac..cd2484e47 100644
  15. --- a/CMakeLists.txt
  16. +++ b/CMakeLists.txt
  17. @@ -7,7 +7,6 @@ include(cmake/C++11Compat.cmake)
  18. include(cmake/Summary.cmake)
  19. include(cmake/Version.cmake)
  20. include(cmake/Deb.cmake)
  21. -include(cmake/SpotifyVersion.cmake)
  22. include(cmake/OptionalSource.cmake)
  23. include(cmake/Format.cmake)
  24. set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
  25. @@ -72,7 +71,6 @@ pkg_check_modules(LIBMTP libmtp>=1.0)
  26. pkg_check_modules(LIBMYGPO_QT5 libmygpo-qt5>=1.0.9)
  27. pkg_check_modules(LIBPULSE libpulse)
  28. pkg_check_modules(LIBXML libxml-2.0)
  29. -pkg_check_modules(LIBSPOTIFY libspotify>=12.1.45)
  30. pkg_check_modules(TAGLIB taglib)
  31. if (WIN32)
  32. @@ -164,12 +162,6 @@ endif()
  33. if (APPLE)
  34. find_library(SPARKLE Sparkle)
  35. - find_library(LIBSPOTIFY libspotify)
  36. -
  37. - if(LIBSPOTIFY_FOUND)
  38. - set(LIBSPOTIFY_INCLUDE_DIRS ${LIBSPOTIFY})
  39. - set(LIBSPOTIFY_LIBRARIES ${LIBSPOTIFY})
  40. - endif(LIBSPOTIFY_FOUND)
  41. add_subdirectory(3rdparty/SPMediaKeyTap)
  42. set(SPMEDIAKEYTAP_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/SPMediaKeyTap)
  43. @@ -293,19 +285,6 @@ optional_component(UDISKS2 ON "Devices:
  44. DEPENDS "D-Bus support" Qt5DBus_FOUND
  45. )
  46. -optional_component(SPOTIFY_BLOB ON "Spotify support: non-GPL binary helper"
  47. - DEPENDS "protobuf" PROTOBUF_FOUND PROTOBUF_PROTOC_EXECUTABLE
  48. - DEPENDS "libspotify" LIBSPOTIFY_FOUND
  49. -)
  50. -
  51. -if (CRYPTOPP_FOUND OR HAVE_SPOTIFY_BLOB)
  52. - set(CRYPTOPP_OR_HAVE_SPOTIFY_BLOB ON)
  53. -endif()
  54. -
  55. -optional_component(SPOTIFY ON "Spotify support"
  56. - DEPENDS "cryptopp or spotify blob" CRYPTOPP_OR_HAVE_SPOTIFY_BLOB
  57. -)
  58. -
  59. optional_component(MOODBAR ON "Moodbar support"
  60. DEPENDS "fftw3" FFTW3_FOUND
  61. )
  62. @@ -339,9 +318,6 @@ endif()
  63. if(CRYPTOPP_FOUND)
  64. set(HAVE_CRYPTOPP ON)
  65. - if(HAVE_SPOTIFY)
  66. - set(HAVE_SPOTIFY_DOWNLOADER ON)
  67. - endif(HAVE_SPOTIFY)
  68. endif(CRYPTOPP_FOUND)
  69. # Remove GLU and GL from the link line - they're not really required
  70. @@ -451,9 +427,6 @@ add_subdirectory(ext/libclementine-commo
  71. add_subdirectory(ext/libclementine-tagreader)
  72. add_subdirectory(ext/clementine-tagreader)
  73. add_subdirectory(ext/libclementine-remote)
  74. -if(HAVE_SPOTIFY)
  75. - add_subdirectory(ext/libclementine-spotifyblob)
  76. -endif(HAVE_SPOTIFY)
  77. option(WITH_DEBIAN OFF)
  78. if(WITH_DEBIAN)
  79. @@ -464,10 +437,6 @@ if(HAVE_BREAKPAD)
  80. add_subdirectory(3rdparty/google-breakpad)
  81. endif(HAVE_BREAKPAD)
  82. -if(HAVE_SPOTIFY_BLOB)
  83. - add_subdirectory(ext/clementine-spotifyblob)
  84. -endif(HAVE_SPOTIFY_BLOB)
  85. -
  86. if(HAVE_MOODBAR)
  87. add_subdirectory(gst/moodbar)
  88. endif()
  89. diff --git a/data/data.qrc b/data/data.qrc
  90. index f7fff7c07..36b0c0927 100644
  91. --- a/data/data.qrc
  92. +++ b/data/data.qrc
  93. @@ -3,7 +3,6 @@
  94. <file>Equifax_Secure_Certificate_Authority.pem</file>
  95. <file>blank.ttf</file>
  96. <file>clementine_remote_qr.png</file>
  97. - <file>clementine-spotify-public.pem</file>
  98. <file>currenttrack_bar_left.png</file>
  99. <file>currenttrack_bar_mid.png</file>
  100. <file>currenttrack_bar_right.png</file>
  101. @@ -284,7 +284,7 @@
  102. <file>mainwindow.css</file>
  103. <file>nocover.png</file>
  104. <file>nomusic.png</file>
  105. - <file>nyancat.png</file>
  106. + <file>moognu.png</file>
  107. <file>oauthsuccess.html</file>
  108. <file>osd_background.png</file>
  109. <file>osd_shadow_corner.png</file>
  110. @@ -350,7 +349,6 @@
  111. <file>providers/22x22/intergalacticfm.png</file>
  112. <file>providers/22x22/songkick.png</file>
  113. <file>providers/22x22/soundcloud.png</file>
  114. - <file>providers/22x22/spotify.png</file>
  115. <file>providers/22x22/subsonic.png</file>
  116. <file>providers/22x22/vk.png</file>
  117. <file>providers/22x22/wikipedia.png</file>
  118. @@ -382,7 +380,6 @@
  119. <file>providers/32x32/intergalacticfm.png</file>
  120. <file>providers/32x32/songkick.png</file>
  121. <file>providers/32x32/soundcloud.png</file>
  122. - <file>providers/32x32/spotify.png</file>
  123. <file>providers/32x32/subsonic.png</file>
  124. <file>providers/32x32/vk.png</file>
  125. <file>providers/32x32/wikipedia.png</file>
  126. @@ -414,7 +411,6 @@
  127. <file>providers/48x48/intergalacticfm.png</file>
  128. <file>providers/48x48/songkick.png</file>
  129. <file>providers/48x48/soundcloud.png</file>
  130. - <file>providers/48x48/spotify.png</file>
  131. <file>providers/48x48/subsonic.png</file>
  132. <file>providers/48x48/vk.png</file>
  133. <file>providers/48x48/wikipedia.png</file>
  134. @@ -479,7 +475,6 @@
  135. <file>songinfo.css</file>
  136. <file>soundcloud-ca.pem</file>
  137. <file>spinner.gif</file>
  138. - <file>spotify-attribution.png</file>
  139. <file>star-off.png</file>
  140. <file>star-on.png</file>
  141. <file>tiny-pause.png</file>
  142. diff --git a/dist/codesign.py b/dist/codesign.py
  143. index 5a682c5af..348ed6640 100755
  144. --- a/dist/codesign.py
  145. +++ b/dist/codesign.py
  146. @@ -33,7 +33,7 @@ def main():
  147. for file in files:
  148. if re.search(r'\.(dylib|so)$', file):
  149. SignPath(os.path.join(root, file), developer_id)
  150. - elif re.match(r'(clementine-spotifyblob|clementine-tagreader|gst-plugin-scanner)', file):
  151. + elif re.match(r'(clementine-tagreader|gst-plugin-scanner)', file):
  152. SignPath(os.path.join(root, file), developer_id)
  153. SignPath(app_bundle, developer_id, deep=False)
  154. diff --git a/dist/macdeploy.py b/dist/macdeploy.py
  155. index c60ad07..b4aa8e5 100755
  156. --- a/dist/macdeploy.py
  157. +++ b/dist/macdeploy.py
  158. @@ -482,10 +482,7 @@ def main():
  159. FixPlugin(FindGioModule('libgiognutls.so'), 'gio-modules')
  160. try:
  161. - FixPlugin('clementine-spotifyblob', '.')
  162. FixPlugin('clementine-tagreader', '.')
  163. - except:
  164. - print('Failed to find blob: %s' % traceback.format_exc())
  165. for plugin in QT_PLUGINS:
  166. FixPlugin(FindQtPlugin(plugin), os.path.dirname(plugin))
  167. diff --git a/dist/windows/clementine.nsi.in b/dist/windows/clementine.nsi.in
  168. index 90c5dfb..0969e4c 100644
  169. --- a/dist/windows/clementine.nsi.in
  170. +++ b/dist/windows/clementine.nsi.in
  171. @@ -187,9 +187,6 @@ Section "Delete old files" oldfiles
  172. Delete "$INSTDIR\gstreamer-plugins\libgstqueue2.dll"
  173. Delete "$INSTDIR\gstreamer-plugins\libgstsoup.dll"
  174. - ; 1.0 prerelease
  175. - Delete "$INSTDIR\spotify.dll"
  176. -
  177. ; 1.0
  178. Delete "$INSTDIR\libofa.dll"
  179. Delete "$INSTDIR\gstreamer-plugins\libgstofa.dll"
  180. @@ -302,7 +299,6 @@ Section "Clementine" Clementine
  181. File "clementine.exe"
  182. File "clementine-tagreader.exe"
  183. - File "clementine-spotifyblob.exe"
  184. File "clementine.ico"
  185. File "glew32.dll"
  186. File "libcdio-19.dll"
  187. @@ -355,7 +351,6 @@ Section "Clementine" Clementine
  188. File "libpsl-5.dll"
  189. File "libsoup-2.4-1.dll"
  190. File "libspeex-1.dll"
  191. - File "libspotify.dll"
  192. File "libssl-1_1.dll"
  193. File "libsqlite3-0.dll"
  194. File "libstdc++-6.dll"
  195. @@ -1137,7 +1132,6 @@ Section "Uninstall"
  196. ; Delete all the files
  197. Delete "$INSTDIR\clementine.exe"
  198. Delete "$INSTDIR\clementine-tagreader.exe"
  199. - Delete "$INSTDIR\clementine-spotifyblob.exe"
  200. Delete "$INSTDIR\clementine.ico"
  201. Delete "$INSTDIR\glew32.dll"
  202. Delete "$INSTDIR\libcdio-19.dll"
  203. @@ -1190,7 +1184,6 @@ Section "Uninstall"
  204. Delete "$INSTDIR\libpsl-5.dll"
  205. Delete "$INSTDIR\libsoup-2.4-1.dll"
  206. Delete "$INSTDIR\libspeex-1.dll"
  207. - Delete "$INSTDIR\libspotify.dll"
  208. Delete "$INSTDIR\libssl-1_1.dll"
  209. Delete "$INSTDIR\libsqlite3-0.dll"
  210. Delete "$INSTDIR\libstdc++-6.dll"
  211. diff --git a/ext/libclementine-common/core/logging.cpp b/ext/libclementine-common/core/logging.cpp
  212. index 8012c0c..872f19c 100644
  213. --- a/ext/libclementine-common/core/logging.cpp
  214. +++ b/ext/libclementine-common/core/logging.cpp
  215. @@ -14,10 +14,6 @@
  216. limitations under the License.
  217. */
  218. -// Note: this file is licensed under the Apache License instead of GPL because
  219. -// it is used by the Spotify blob which links against libspotify and is not GPL
  220. -// compatible.
  221. -
  222. #include <cxxabi.h>
  223. #include <QtGlobal>
  224. diff --git a/ext/libclementine-common/core/logging.h b/ext/libclementine-common/core/logging.h
  225. index 0433da5aa..8f6efe561 100644
  226. --- a/ext/libclementine-common/core/logging.h
  227. +++ b/ext/libclementine-common/core/logging.h
  228. @@ -14,10 +14,6 @@
  229. limitations under the License.
  230. */
  231. -// Note: this file is licensed under the Apache License instead of GPL because
  232. -// it is used by the Spotify blob which links against libspotify and is not GPL
  233. -// compatible.
  234. -
  235. #ifndef LOGGING_H
  236. #define LOGGING_H
  237. diff --git a/ext/libclementine-common/core/messagehandler.cpp b/ext/libclementine-common/core/messagehandler.cpp
  238. index 065964d5f..8a8381b46 100644
  239. --- a/ext/libclementine-common/core/messagehandler.cpp
  240. +++ b/ext/libclementine-common/core/messagehandler.cpp
  241. @@ -14,10 +14,6 @@
  242. limitations under the License.
  243. */
  244. -// Note: this file is licensed under the Apache License instead of GPL because
  245. -// it is used by the Spotify blob which links against libspotify and is not GPL
  246. -// compatible.
  247. -
  248. #include "messagehandler.h"
  249. #include "core/logging.h"
  250. diff --git a/ext/libclementine-common/core/messagehandler.h b/ext/libclementine-common/core/messagehandler.h
  251. index 5a7f8f2c8..7df58df05 100644
  252. --- a/ext/libclementine-common/core/messagehandler.h
  253. +++ b/ext/libclementine-common/core/messagehandler.h
  254. @@ -14,10 +14,6 @@
  255. limitations under the License.
  256. */
  257. -// Note: this file is licensed under the Apache License instead of GPL because
  258. -// it is used by the Spotify blob which links against libspotify and is not GPL
  259. -// compatible.
  260. -
  261. #ifndef MESSAGEHANDLER_H
  262. #define MESSAGEHANDLER_H
  263. diff --git a/ext/libclementine-common/core/override.h b/ext/libclementine-common/core/override.h
  264. index 98c2764d5..ca3713700 100644
  265. --- a/ext/libclementine-common/core/override.h
  266. +++ b/ext/libclementine-common/core/override.h
  267. @@ -14,10 +14,6 @@
  268. limitations under the License.
  269. */
  270. -// Note: this file is licensed under the Apache License instead of GPL because
  271. -// it is used by the Spotify blob which links against libspotify and is not GPL
  272. -// compatible.
  273. -
  274. #ifndef OVERRIDE_H
  275. #define OVERRIDE_H
  276. diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
  277. index d635aee7c..56e01c09d 100644
  278. --- a/src/CMakeLists.txt
  279. +++ b/src/CMakeLists.txt
  280. @@ -47,10 +47,6 @@ include_directories(${CMAKE_SOURCE_DIR}/
  281. include_directories(${CMAKE_BINARY_DIR}/ext/libclementine-tagreader)
  282. include_directories(${CMAKE_SOURCE_DIR}/ext/libclementine-remote)
  283. include_directories(${CMAKE_BINARY_DIR}/ext/libclementine-remote)
  284. -if(HAVE_SPOTIFY)
  285. - include_directories(${CMAKE_SOURCE_DIR}/ext/libclementine-spotifyblob)
  286. - include_directories(${CMAKE_BINARY_DIR}/ext/libclementine-spotifyblob)
  287. -endif(HAVE_SPOTIFY)
  288. cmake_policy(SET CMP0011 NEW)
  289. include(../cmake/ParseArguments.cmake)
  290. @@ -303,7 +299,6 @@ set(SOURCES
  291. songinfo/songkickconcerts.cpp
  292. songinfo/songkickconcertwidget.cpp
  293. songinfo/songplaystats.cpp
  294. - songinfo/spotifyimages.cpp
  295. songinfo/streamdiscoverer.cpp
  296. songinfo/taglyricsinfoprovider.cpp
  297. songinfo/ultimatelyricslyric.cpp
  298. @@ -593,7 +588,6 @@ set(HEADERS
  299. songinfo/songkickconcerts.h
  300. songinfo/songkickconcertwidget.h
  301. songinfo/songplaystats.h
  302. - songinfo/spotifyimages.h
  303. songinfo/streamdiscoverer.h
  304. songinfo/taglyricsinfoprovider.h
  305. songinfo/ultimatelyricslyric.h
  306. @@ -837,33 +831,6 @@ optional_source(HAVE_LIBLASTFM
  307. internet/lastfm/lastfmsettingspage.ui
  308. )
  309. -# Spotify support
  310. -optional_source(HAVE_SPOTIFY
  311. - SOURCES
  312. - internet/spotify/spotifyserver.cpp
  313. - internet/spotify/spotifyservice.cpp
  314. - internet/spotify/spotifysettingspage.cpp
  315. - globalsearch/spotifysearchprovider.cpp
  316. - HEADERS
  317. - globalsearch/spotifysearchprovider.h
  318. - internet/spotify/spotifyserver.h
  319. - internet/spotify/spotifyservice.h
  320. - internet/spotify/spotifysettingspage.h
  321. - UI
  322. - internet/spotify/spotifysettingspage.ui
  323. -)
  324. -
  325. -if(HAVE_SPOTIFY)
  326. - optional_source(HAVE_SPOTIFY_DOWNLOADER
  327. - SOURCES
  328. - internet/spotify/spotifyblobdownloader.cpp
  329. - HEADERS
  330. - internet/spotify/spotifyblobdownloader.h
  331. - INCLUDE_DIRECTORIES
  332. - ${CRYPTOPP_INCLUDE_DIRS}
  333. - )
  334. -endif(HAVE_SPOTIFY)
  335. -
  336. # Platform specific - OS X
  337. optional_source(APPLE
  338. INCLUDE_DIRECTORIES
  339. @@ -1306,17 +1273,6 @@ if(HAVE_BREAKPAD)
  340. endif (LINUX)
  341. endif(HAVE_BREAKPAD)
  342. -if(HAVE_SPOTIFY)
  343. - target_link_libraries(clementine_lib clementine-spotifyblob-messages)
  344. -endif(HAVE_SPOTIFY)
  345. -
  346. -if(HAVE_SPOTIFY_DOWNLOADER)
  347. - target_link_libraries(clementine_lib
  348. - ${CRYPTOPP_LIBRARIES}
  349. - )
  350. - link_directories(${CRYPTOPP_LIBRARY_DIRS})
  351. -endif(HAVE_SPOTIFY_DOWNLOADER)
  352. -
  353. if(HAVE_LIBPULSE)
  354. target_link_libraries(clementine_lib ${LIBPULSE_LIBRARIES})
  355. endif()
  356. @@ -1404,10 +1360,6 @@ target_link_libraries(clementine
  357. clementine_lib
  358. )
  359. -# macdeploy.py relies on the blob being built first.
  360. -if(HAVE_SPOTIFY_BLOB)
  361. - add_dependencies(clementine clementine-spotifyblob)
  362. -endif(HAVE_SPOTIFY_BLOB)
  363. add_dependencies(clementine clementine-tagreader)
  364. set_target_properties(clementine PROPERTIES
  365. diff --git a/src/analyzers/rainbowanalyzer.cpp b/src/analyzers/rainbowanalyzer.cpp
  366. index 7cb0b44c2..25bfb843d 100644
  367. --- a/src/analyzers/rainbowanalyzer.cpp
  368. +++ b/src/analyzers/rainbowanalyzer.cpp
  369. @@ -42,7 +42,7 @@ const int Rainbow::RainbowAnalyzer::kRai
  370. const int Rainbow::RainbowAnalyzer::kRainbowOverlap[] = {13, 15};
  371. const int Rainbow::RainbowAnalyzer::kSleepingHeight[] = {24, 33};
  372. -const char* Rainbow::NyanCatAnalyzer::kName = "Nyanalyzer Cat";
  373. +const char* Rainbow::NyanCatAnalyzer::kName = "MooGNU";
  374. const char* Rainbow::RainbowDashAnalyzer::kName = "Rainbow Dash";
  375. const float Rainbow::RainbowAnalyzer::kPixelScale = 0.02f;
  376. @@ -59,7 +59,7 @@ Rainbow::RainbowAnalyzer::RainbowAnalyze
  377. x_offset_(0),
  378. background_brush_(QColor(0x0f, 0x43, 0x73)) {
  379. rainbowtype = rbtype;
  380. - cat_dash_[0] = QPixmap(":/nyancat.png");
  381. + cat_dash_[0] = QPixmap(":/moognu.png");
  382. cat_dash_[1] = QPixmap(":/rainbowdash.png");
  383. memset(history_, 0, sizeof(history_));
  384. @@ -193,8 +193,8 @@ void Rainbow::RainbowAnalyzer::analyze(Q
  385. // Draw the buffer on to the widget
  386. p.drawPixmap(0, 0, buffer_[current_buffer_], x_offset_, 0, 0, 0);
  387. - // Draw rainbow analyzer (nyan cat or rainbowdash)
  388. - // Nyan nyan nyan nyan dash dash dash dash.
  389. + // Draw rainbow analyzer (moo gnu or rainbowdash)
  390. + // Moo moo moo moo dash dash dash dash.
  391. if (!is_playing_) {
  392. // Ssshhh!
  393. p.drawPixmap(SleepingDestRect(rainbowtype), cat_dash_[rainbowtype],
  394. diff --git a/src/config.h.in b/src/config.h.in
  395. index 20427754b..4dbd44405 100644
  396. --- a/src/config.h.in
  397. +++ b/src/config.h.in
  398. @@ -42,12 +42,10 @@
  399. #cmakedefine HAVE_SEAFILE
  400. #cmakedefine HAVE_SKYDRIVE
  401. #cmakedefine HAVE_SPARKLE
  402. -#cmakedefine HAVE_SPOTIFY_DOWNLOADER
  403. #cmakedefine HAVE_UDISKS2
  404. #cmakedefine HAVE_WIIMOTEDEV
  405. #cmakedefine HAVE_OPENGL
  406. #cmakedefine HAVE_TRANSLATIONS
  407. -#cmakedefine HAVE_SPOTIFY
  408. #cmakedefine TAGLIB_HAS_OPUS
  409. #cmakedefine USE_INSTALL_PREFIX
  410. #cmakedefine USE_SYSTEM_PROJECTM
  411. diff --git a/src/core/backgroundstreams.cpp b/src/core/backgroundstreams.cpp
  412. index 2e6ac60e2..e62504c70 100644
  413. --- a/src/core/backgroundstreams.cpp
  414. +++ b/src/core/backgroundstreams.cpp
  415. @@ -28,8 +28,6 @@
  416. const char* BackgroundStreams::kSettingsGroup = "BackgroundStreams";
  417. const char* BackgroundStreams::kHypnotoadUrl = "hypnotoad:///";
  418. -const char* BackgroundStreams::kRainUrl =
  419. - "http://data.clementine-player.org/rainymood";
  420. const char* BackgroundStreams::kEnterpriseUrl = "enterprise:///";
  421. BackgroundStreams::BackgroundStreams(EngineBase* engine, QObject* parent)
  422. @@ -44,7 +42,6 @@ void BackgroundStreams::LoadStreams() {
  423. int version = s.value("version", 0).toInt();
  424. if (version < 1) {
  425. AddStream(QT_TR_NOOP("Hypnotoad"), QUrl(kHypnotoadUrl));
  426. - AddStream(QT_TR_NOOP("Rain"), QUrl(kRainUrl));
  427. }
  428. if (version < kVersion) {
  429. diff --git a/src/core/timeconstants.h b/src/core/timeconstants.h
  430. index 67d022794..49020d809 100644
  431. --- a/src/core/timeconstants.h
  432. +++ b/src/core/timeconstants.h
  433. @@ -16,10 +16,6 @@
  434. limitations under the License.
  435. */
  436. -// Note: this file is licensed under the Apache License instead of GPL because
  437. -// it is used by the Spotify blob which links against libspotify and is not GPL
  438. -// compatible.
  439. -
  440. #ifndef CORE_TIMECONSTANTS_H_
  441. #define CORE_TIMECONSTANTS_H_
  442. diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp
  443. index fe106e2b7..54defd7fd 100644
  444. --- a/src/core/utilities.cpp
  445. +++ b/src/core/utilities.cpp
  446. @@ -391,9 +391,6 @@ QString GetConfigPath(ConfigPath config)
  447. return QDir::homePath();
  448. #endif
  449. - case Path_LocalSpotifyBlob:
  450. - return GetConfigPath(Path_Root) + "/spotifyblob";
  451. -
  452. default:
  453. qFatal("%s", Q_FUNC_INFO);
  454. return QString::null;
  455. diff --git a/src/core/utilities.h b/src/core/utilities.h
  456. index 021ded6cf..841ec4061 100644
  457. --- a/src/core/utilities.h
  458. +++ b/src/core/utilities.h
  459. @@ -130,7 +130,6 @@ enum ConfigPath {
  460. Path_NetworkCache,
  461. Path_GstreamerRegistry,
  462. Path_DefaultMusicLibrary,
  463. - Path_LocalSpotifyBlob,
  464. Path_MoodbarCache,
  465. Path_CacheRoot,
  466. };
  467. diff --git a/src/covers/albumcoverloader.cpp b/src/covers/albumcoverloader.cpp
  468. index a04cd923a..c982fd8f4 100644
  469. --- a/src/covers/albumcoverloader.cpp
  470. +++ b/src/covers/albumcoverloader.cpp
  471. @@ -34,18 +34,12 @@
  472. #include "core/tagreaderclient.h"
  473. #include "core/utilities.h"
  474. #include "internet/core/internetmodel.h"
  475. -#ifdef HAVE_SPOTIFY
  476. -#include "internet/spotify/spotifyservice.h"
  477. -#endif
  478. AlbumCoverLoader::AlbumCoverLoader(QObject* parent)
  479. : QObject(parent),
  480. stop_requested_(false),
  481. next_id_(1),
  482. - network_(new NetworkAccessManager(this)),
  483. - connected_spotify_(false) {
  484. - setObjectName("Album cover loader");
  485. -}
  486. + network_(new NetworkAccessManager(this)) {}
  487. QString AlbumCoverLoader::ImageCacheDir() {
  488. return Utilities::GetConfigPath(Utilities::Path_AlbumCovers);
  489. @@ -179,29 +175,6 @@ AlbumCoverLoader::TryLoadResult AlbumCov
  490. remote_tasks_.insert(reply, task);
  491. return TryLoadResult(true, false, QImage());
  492. }
  493. -#ifdef HAVE_SPOTIFY
  494. - else if (filename.toLower().startsWith("spotify://image/")) {
  495. - // HACK: we should add generic image URL handlers
  496. - SpotifyService* spotify = InternetModel::Service<SpotifyService>();
  497. -
  498. - if (!connected_spotify_) {
  499. - connect(spotify, SIGNAL(ImageLoaded(QString, QImage)),
  500. - SLOT(SpotifyImageLoaded(QString, QImage)));
  501. - connected_spotify_ = true;
  502. - }
  503. -
  504. - QString id = QUrl(filename).path();
  505. - if (id.startsWith('/')) {
  506. - id.remove(0, 1);
  507. - }
  508. - remote_spotify_tasks_.insert(id, task);
  509. -
  510. - // Need to schedule this in the spotify service's thread
  511. - QMetaObject::invokeMethod(spotify, "LoadImage", Qt::QueuedConnection,
  512. - Q_ARG(QString, id));
  513. - return TryLoadResult(true, false, QImage());
  514. - }
  515. -#endif
  516. else if (filename.isEmpty()) {
  517. // Avoid "QFSFileEngine::open: No file name specified" messages if we know that the filename is empty
  518. return TryLoadResult(false, false, task.options.default_output_image_);
  519. @@ -213,18 +186,6 @@ AlbumCoverLoader::TryLoadResult AlbumCov
  520. image.isNull() ? task.options.default_output_image_ : image);
  521. }
  522. -#ifdef HAVE_SPOTIFY
  523. -void AlbumCoverLoader::SpotifyImageLoaded(const QString& id,
  524. - const QImage& image) {
  525. - if (!remote_spotify_tasks_.contains(id)) return;
  526. -
  527. - Task task = remote_spotify_tasks_.take(id);
  528. - QImage scaled = ScaleAndPad(task.options, image);
  529. - emit ImageLoaded(task.id, scaled);
  530. - emit ImageLoaded(task.id, scaled, image);
  531. -}
  532. -#endif
  533. -
  534. void AlbumCoverLoader::RemoteFetchFinished(QNetworkReply* reply) {
  535. reply->deleteLater();
  536. diff --git a/src/covers/albumcoverloader.h b/src/covers/albumcoverloader.h
  537. index c5fae6b4c..ff68c6cf1 100644
  538. --- a/src/covers/albumcoverloader.h
  539. +++ b/src/covers/albumcoverloader.h
  540. @@ -67,9 +67,6 @@ class AlbumCoverLoader : public QObject
  541. protected slots:
  542. void ProcessTasks();
  543. void RemoteFetchFinished(QNetworkReply* reply);
  544. -#ifdef HAVE_SPOTIFY
  545. - void SpotifyImageLoaded(const QString& url, const QImage& image);
  546. -#endif
  547. protected:
  548. enum State { State_TryingManual, State_TryingAuto, };
  549. @@ -106,13 +103,10 @@ class AlbumCoverLoader : public QObject
  550. QMutex mutex_;
  551. QQueue<Task> tasks_;
  552. QMap<QNetworkReply*, Task> remote_tasks_;
  553. - QMap<QString, Task> remote_spotify_tasks_;
  554. quint64 next_id_;
  555. NetworkAccessManager* network_;
  556. - bool connected_spotify_;
  557. -
  558. static const int kMaxRedirects = 3;
  559. };
  560. diff --git a/src/engines/gstenginepipeline.cpp b/src/engines/gstenginepipeline.cpp
  561. index 56cabd1..807d4a9 100644
  562. --- a/src/engines/gstenginepipeline.cpp
  563. +++ b/src/engines/gstenginepipeline.cpp
  564. @@ -36,10 +36,6 @@
  565. #include "devices/cddadevice.h"
  566. #endif
  567. #include "internet/core/internetmodel.h"
  568. -#ifdef HAVE_SPOTIFY
  569. -#include "internet/spotify/spotifyserver.h"
  570. -#include "internet/spotify/spotifyservice.h"
  571. -#endif
  572. const int GstEnginePipeline::kGstStateTimeoutNanosecs = 10000000;
  573. const int GstEnginePipeline::kFaderFudgeMsec = 2000;
  574. @@ -168,45 +164,6 @@ QByteArray GstEnginePipeline::GstUriFromUrl(const QUrl& url) {
  575. GstElement* GstEnginePipeline::CreateDecodeBinFromUrl(const QUrl& url) {
  576. GstElement* new_bin = nullptr;
  577. -#ifdef HAVE_SPOTIFY
  578. - if (url.scheme() == "spotify") {
  579. - new_bin = gst_bin_new("spotify_bin");
  580. - if (!new_bin) return nullptr;
  581. -
  582. - // Create elements
  583. - GstElement* src = engine_->CreateElement("tcpserversrc", new_bin);
  584. - if (!src) {
  585. - gst_object_unref(GST_OBJECT(new_bin));
  586. - return nullptr;
  587. - }
  588. - GstElement* gdp = engine_->CreateElement("gdpdepay", new_bin);
  589. - if (!gdp) {
  590. - gst_object_unref(GST_OBJECT(new_bin));
  591. - return nullptr;
  592. - }
  593. -
  594. - // Pick a port number
  595. - const int port = Utilities::PickUnusedPort();
  596. - g_object_set(G_OBJECT(src), "host", "127.0.0.1", nullptr);
  597. - g_object_set(G_OBJECT(src), "port", port, nullptr);
  598. -
  599. - // Link the elements
  600. - gst_element_link(src, gdp);
  601. -
  602. - // Add a ghost pad
  603. - GstPad* pad = gst_element_get_static_pad(gdp, "src");
  604. - gst_element_add_pad(GST_ELEMENT(new_bin), gst_ghost_pad_new("src", pad));
  605. - gst_object_unref(GST_OBJECT(pad));
  606. -
  607. - // Tell spotify to start sending data to us.
  608. - SpotifyServer* spotify_server =
  609. - InternetModel::Service<SpotifyService>()->server();
  610. - // Need to schedule this in the spotify server's thread
  611. - QMetaObject::invokeMethod(
  612. - spotify_server, "StartPlayback", Qt::QueuedConnection,
  613. - Q_ARG(QString, url.toString()), Q_ARG(quint16, port));
  614. - } else {
  615. -#endif
  616. QByteArray uri = GstUriFromUrl(url);
  617. new_bin = engine_->CreateElement("uridecodebin");
  618. if (!new_bin) return nullptr;
  619. @@ -216,9 +173,6 @@ GstElement* GstEnginePipeline::CreateDecodeBinFromUrl(const QUrl& url) {
  620. CHECKED_GCONNECT(G_OBJECT(new_bin), "pad-added", &NewPadCallback, this);
  621. CHECKED_GCONNECT(G_OBJECT(new_bin), "notify::source", &SourceSetupCallback,
  622. this);
  623. -#ifdef HAVE_SPOTIFY
  624. - }
  625. -#endif
  626. return new_bin;
  627. }
  628. @@ -1064,14 +1018,7 @@ void GstEnginePipeline::SourceDrainedCallback(GstURIDecodeBin* bin,
  629. gpointer self) {
  630. GstEnginePipeline* instance = reinterpret_cast<GstEnginePipeline*>(self);
  631. - if (instance->has_next_valid_url() &&
  632. - // I'm not sure why, but calling this when previous track is a local song
  633. - // and the next track is a Spotify song is buggy: the Spotify song will
  634. - // not start or with some offset. So just do nothing here: when the song
  635. - // finished, EndOfStreamReached/TrackEnded will be emitted anyway so
  636. - // NextItem will be called.
  637. - !(instance->current_.url_.scheme() != "spotify" &&
  638. - instance->next_.url_.scheme() == "spotify")) {
  639. + if (instance->has_next_valid_url()) {
  640. instance->TransitionToNext();
  641. }
  642. }
  643. @@ -1189,26 +1136,6 @@ GstState GstEnginePipeline::state() const {
  644. }
  645. QFuture<GstStateChangeReturn> GstEnginePipeline::SetState(GstState state) {
  646. -#ifdef HAVE_SPOTIFY
  647. - if (current_.url_.scheme() == "spotify" && !buffering_) {
  648. - const GstState current_state = this->state();
  649. -
  650. - if (state == GST_STATE_PAUSED && current_state == GST_STATE_PLAYING) {
  651. - SpotifyService* spotify = InternetModel::Service<SpotifyService>();
  652. -
  653. - // Need to schedule this in the spotify service's thread
  654. - QMetaObject::invokeMethod(spotify, "SetPaused", Qt::QueuedConnection,
  655. - Q_ARG(bool, true));
  656. - } else if (state == GST_STATE_PLAYING &&
  657. - current_state == GST_STATE_PAUSED) {
  658. - SpotifyService* spotify = InternetModel::Service<SpotifyService>();
  659. -
  660. - // Need to schedule this in the spotify service's thread
  661. - QMetaObject::invokeMethod(spotify, "SetPaused", Qt::QueuedConnection,
  662. - Q_ARG(bool, false));
  663. - }
  664. - }
  665. -#endif
  666. return ConcurrentRun::Run<GstStateChangeReturn, GstElement*, GstState>(
  667. &set_state_threadpool_, &gst_element_set_state, pipeline_, state);
  668. }
  669. diff --git a/src/internet/core/internetmodel.cpp b/src/internet/core/internetmodel.cpp
  670. index 756d48073..ab3f8e4fe 100644
  671. --- a/src/internet/core/internetmodel.cpp
  672. +++ b/src/internet/core/internetmodel.cpp
  673. @@ -59,9 +59,6 @@
  674. #ifdef HAVE_SEAFILE
  675. #include "internet/seafile/seafileservice.h"
  676. #endif
  677. -#ifdef HAVE_SPOTIFY
  678. -#include "internet/spotify/spotifyservice.h"
  679. -#endif
  680. using smart_playlists::Generator;
  681. using smart_playlists::GeneratorMimeData;
  682. @@ -94,9 +91,6 @@ InternetModel::InternetModel(Application
  683. AddService(new RadioTunesService(app, this));
  684. AddService(new SomaFMService(app, this));
  685. AddService(new IntergalacticFMService(app, this));
  686. -#ifdef HAVE_SPOTIFY
  687. - AddService(new SpotifyService(app, this));
  688. -#endif
  689. AddService(new SubsonicService(app, this));
  690. #ifdef HAVE_BOX
  691. AddService(new BoxService(app, this));
  692. diff --git a/src/main.cpp b/src/main.cpp
  693. index ecf47b9d4..8b8143f4a 100644
  694. --- a/src/main.cpp
  695. +++ b/src/main.cpp
  696. @@ -145,8 +145,6 @@ void SetEnv(const char* key, const QStri
  697. #endif
  698. }
  699. -// This must be done early so that the spotify blob process also picks up
  700. -// these environment variables.
  701. void SetGstreamerEnvironment() {
  702. QString scanner_path;
  703. QString plugin_path;
  704. diff --git a/src/playlist/playlistbackend.h b/src/playlist/playlistbackend.h
  705. index f9d347c4e..320c0fb9b 100644
  706. --- a/src/playlist/playlistbackend.h
  707. +++ b/src/playlist/playlistbackend.h
  708. @@ -47,8 +47,6 @@ class PlaylistBackend : public QObject {
  709. QString dynamic_backend;
  710. QByteArray dynamic_data;
  711. - // Special playlists have different behaviour, eg. the "spotify-search"
  712. - // type has a spotify search box at the top, replacing the ordinary filter.
  713. QString special_type;
  714. };
  715. typedef QList<Playlist> PlaylistList;
  716. diff --git a/src/playlist/playlistdelegates.cpp b/src/playlist/playlistdelegates.cpp
  717. index daf896e73..d74b74a56 100644
  718. --- a/src/playlist/playlistdelegates.cpp
  719. +++ b/src/playlist/playlistdelegates.cpp
  720. @@ -458,9 +458,7 @@ QPixmap SongSourceDelegate::LookupPixmap
  721. if (handler) {
  722. icon = handler->icon();
  723. } else {
  724. - if (url.scheme() == "spotify") {
  725. - icon = IconLoader::Load("spotify", IconLoader::Provider);
  726. - } else if (url.scheme() == "file") {
  727. + if (url.scheme() == "file") {
  728. icon = IconLoader::Load("folder-sound", IconLoader::Base);
  729. } else if (url.host() == "api.jamendo.com") {
  730. icon = IconLoader::Load("jamendo", IconLoader::Provider);
  731. diff --git a/src/songinfo/artistinfoview.cpp b/src/songinfo/artistinfoview.cpp
  732. index 8a1f775..eda16d4 100644
  733. --- a/src/songinfo/artistinfoview.cpp
  734. +++ b/src/songinfo/artistinfoview.cpp
  735. @@ -20,12 +20,10 @@
  736. #include "songinfo/artistbiography.h"
  737. #include "songinfo/songinfofetcher.h"
  738. #include "songinfo/songkickconcerts.h"
  739. -#include "songinfo/spotifyimages.h"
  740. #include "widgets/prettyimageview.h"
  741. ArtistInfoView::ArtistInfoView(QWidget* parent) : SongInfoBase(parent) {
  742. fetcher_->AddProvider(new SongkickConcerts);
  743. - fetcher_->AddProvider(new SpotifyImages);
  744. fetcher_->AddProvider(new ArtistBiography);
  745. }
  746. diff --git a/src/ui/about.cpp b/src/ui/about.cpp
  747. index 0314a380f..f3d9c6944 100644
  748. --- a/src/ui/about.cpp
  749. +++ b/src/ui/about.cpp
  750. @@ -88,7 +88,6 @@ QString About::MakeHtml() const {
  751. ret += QString("<br />%1</p>").arg(tr("...and all the Amarok contributors"));
  752. ret += QString("<p><b>%1</b>").arg(tr("And:"));
  753. - ret += QString("<br /><a href=\"http://rainymood.com\">Rainy Mood</a>");
  754. ret += QString(
  755. "<br /><a href=\"http://www.smitelli.com/?page=blog&p=54\">Scott "
  756. "Smitelli</a>");
  757. @@ -96,11 +95,6 @@ QString About::MakeHtml() const {
  758. "<br /><a href=\"http://hyperboleandahalf.blogspot.com\">Allie "
  759. "Brosh</a></p>");
  760. - ret +=
  761. - "<p>This product uses Music by Spotify but is not endorsed, certified "
  762. - "or otherwise approved in any way by Spotify. Spotify is the registered "
  763. - "trade mark of the Spotify Group.</p>";
  764. -
  765. return ret;
  766. }
  767. diff --git a/src/ui/settingsdialog.cpp b/src/ui/settingsdialog.cpp
  768. index 354187ade..80f2820e7 100644
  769. --- a/src/ui/settingsdialog.cpp
  770. +++ b/src/ui/settingsdialog.cpp
  771. @@ -77,10 +77,6 @@
  772. #include "internet/seafile/seafilesettingspage.h"
  773. #endif
  774. -#ifdef HAVE_SPOTIFY
  775. -#include "internet/spotify/spotifysettingspage.h"
  776. -#endif
  777. -
  778. #include <QAbstractButton>
  779. #include <QDesktopWidget>
  780. #include <QPainter>
  781. @@ -177,10 +173,6 @@ SettingsDialog::SettingsDialog(Applicati
  782. AddPage(Page_Skydrive, new SkydriveSettingsPage(this), providers);
  783. #endif
  784. -#ifdef HAVE_SPOTIFY
  785. - AddPage(Page_Spotify, new SpotifySettingsPage(this), providers);
  786. -#endif
  787. -
  788. #ifdef HAVE_SEAFILE
  789. AddPage(Page_Seafile, new SeafileSettingsPage(this), providers);
  790. #endif
  791. diff --git a/src/ui/settingsdialog.h b/src/ui/settingsdialog.h
  792. index f45f72983..dc4eeb6c4 100644
  793. --- a/src/ui/settingsdialog.h
  794. +++ b/src/ui/settingsdialog.h
  795. @@ -69,7 +69,6 @@ class SettingsDialog : public QDialog {
  796. Page_Library,
  797. Page_Lastfm,
  798. Page_SoundCloud,
  799. - Page_Spotify,
  800. Page_Magnatune,
  801. Page_DigitallyImported,
  802. Page_BackgroundStreams,