diff --git a/3rdparty/SPMediaKeyTap/SPMediaKeyTap.m b/3rdparty/SPMediaKeyTap/SPMediaKeyTap.m index a349f5922..c418e0bca 100644 --- a/3rdparty/SPMediaKeyTap/SPMediaKeyTap.m +++ b/3rdparty/SPMediaKeyTap/SPMediaKeyTap.m @@ -98,7 +98,6 @@ static CGEventRef tapEventCallback(CGEventTapProxy proxy, CGEventType type, CGEv { return [NSArray arrayWithObjects: [[NSBundle mainBundle] bundleIdentifier], // your app - @"com.spotify.client", @"com.apple.iTunes", @"com.apple.QuickTimePlayerX", @"com.apple.quicktimeplayer", diff --git a/CMakeLists.txt b/CMakeLists.txt index 657efdbac..cd2484e47 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,6 @@ include(cmake/C++11Compat.cmake) include(cmake/Summary.cmake) include(cmake/Version.cmake) include(cmake/Deb.cmake) -include(cmake/SpotifyVersion.cmake) include(cmake/OptionalSource.cmake) include(cmake/Format.cmake) set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) @@ -72,7 +71,6 @@ pkg_check_modules(LIBMTP libmtp>=1.0) pkg_check_modules(LIBMYGPO_QT5 libmygpo-qt5>=1.0.9) pkg_check_modules(LIBPULSE libpulse) pkg_check_modules(LIBXML libxml-2.0) -pkg_check_modules(LIBSPOTIFY libspotify>=12.1.45) pkg_check_modules(TAGLIB taglib) if (WIN32) @@ -164,12 +162,6 @@ endif() if (APPLE) find_library(SPARKLE Sparkle) - find_library(LIBSPOTIFY libspotify) - - if(LIBSPOTIFY_FOUND) - set(LIBSPOTIFY_INCLUDE_DIRS ${LIBSPOTIFY}) - set(LIBSPOTIFY_LIBRARIES ${LIBSPOTIFY}) - endif(LIBSPOTIFY_FOUND) add_subdirectory(3rdparty/SPMediaKeyTap) set(SPMEDIAKEYTAP_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/SPMediaKeyTap) @@ -293,19 +285,6 @@ optional_component(UDISKS2 ON "Devices: DEPENDS "D-Bus support" Qt5DBus_FOUND ) -optional_component(SPOTIFY_BLOB ON "Spotify support: non-GPL binary helper" - DEPENDS "protobuf" PROTOBUF_FOUND PROTOBUF_PROTOC_EXECUTABLE - DEPENDS "libspotify" LIBSPOTIFY_FOUND -) - -if (CRYPTOPP_FOUND OR HAVE_SPOTIFY_BLOB) - set(CRYPTOPP_OR_HAVE_SPOTIFY_BLOB ON) -endif() - -optional_component(SPOTIFY ON "Spotify support" - DEPENDS "cryptopp or spotify blob" CRYPTOPP_OR_HAVE_SPOTIFY_BLOB -) - optional_component(MOODBAR ON "Moodbar support" DEPENDS "fftw3" FFTW3_FOUND ) @@ -339,9 +318,6 @@ endif() if(CRYPTOPP_FOUND) set(HAVE_CRYPTOPP ON) - if(HAVE_SPOTIFY) - set(HAVE_SPOTIFY_DOWNLOADER ON) - endif(HAVE_SPOTIFY) endif(CRYPTOPP_FOUND) # Remove GLU and GL from the link line - they're not really required @@ -451,9 +427,6 @@ add_subdirectory(ext/libclementine-commo add_subdirectory(ext/libclementine-tagreader) add_subdirectory(ext/clementine-tagreader) add_subdirectory(ext/libclementine-remote) -if(HAVE_SPOTIFY) - add_subdirectory(ext/libclementine-spotifyblob) -endif(HAVE_SPOTIFY) option(WITH_DEBIAN OFF) if(WITH_DEBIAN) @@ -464,10 +437,6 @@ if(HAVE_BREAKPAD) add_subdirectory(3rdparty/google-breakpad) endif(HAVE_BREAKPAD) -if(HAVE_SPOTIFY_BLOB) - add_subdirectory(ext/clementine-spotifyblob) -endif(HAVE_SPOTIFY_BLOB) - if(HAVE_MOODBAR) add_subdirectory(gst/moodbar) endif() diff --git a/data/data.qrc b/data/data.qrc index f7fff7c07..36b0c0927 100644 --- a/data/data.qrc +++ b/data/data.qrc @@ -3,7 +3,6 @@ Equifax_Secure_Certificate_Authority.pem blank.ttf clementine_remote_qr.png - clementine-spotify-public.pem currenttrack_bar_left.png currenttrack_bar_mid.png currenttrack_bar_right.png @@ -284,7 +284,7 @@ mainwindow.css nocover.png nomusic.png - nyancat.png + moognu.png oauthsuccess.html osd_background.png osd_shadow_corner.png @@ -350,7 +349,6 @@ providers/22x22/intergalacticfm.png providers/22x22/songkick.png providers/22x22/soundcloud.png - providers/22x22/spotify.png providers/22x22/subsonic.png providers/22x22/vk.png providers/22x22/wikipedia.png @@ -382,7 +380,6 @@ providers/32x32/intergalacticfm.png providers/32x32/songkick.png providers/32x32/soundcloud.png - providers/32x32/spotify.png providers/32x32/subsonic.png providers/32x32/vk.png providers/32x32/wikipedia.png @@ -414,7 +411,6 @@ providers/48x48/intergalacticfm.png providers/48x48/songkick.png providers/48x48/soundcloud.png - providers/48x48/spotify.png providers/48x48/subsonic.png providers/48x48/vk.png providers/48x48/wikipedia.png @@ -479,7 +475,6 @@ songinfo.css soundcloud-ca.pem spinner.gif - spotify-attribution.png star-off.png star-on.png tiny-pause.png diff --git a/dist/codesign.py b/dist/codesign.py index 5a682c5af..348ed6640 100755 --- a/dist/codesign.py +++ b/dist/codesign.py @@ -33,7 +33,7 @@ def main(): for file in files: if re.search(r'\.(dylib|so)$', file): SignPath(os.path.join(root, file), developer_id) - elif re.match(r'(clementine-spotifyblob|clementine-tagreader|gst-plugin-scanner)', file): + elif re.match(r'(clementine-tagreader|gst-plugin-scanner)', file): SignPath(os.path.join(root, file), developer_id) SignPath(app_bundle, developer_id, deep=False) diff --git a/dist/macdeploy.py b/dist/macdeploy.py index c60ad07..b4aa8e5 100755 --- a/dist/macdeploy.py +++ b/dist/macdeploy.py @@ -482,10 +482,7 @@ def main(): FixPlugin(FindGioModule('libgiognutls.so'), 'gio-modules') try: - FixPlugin('clementine-spotifyblob', '.') FixPlugin('clementine-tagreader', '.') - except: - print('Failed to find blob: %s' % traceback.format_exc()) for plugin in QT_PLUGINS: FixPlugin(FindQtPlugin(plugin), os.path.dirname(plugin)) diff --git a/dist/windows/clementine.nsi.in b/dist/windows/clementine.nsi.in index 90c5dfb..0969e4c 100644 --- a/dist/windows/clementine.nsi.in +++ b/dist/windows/clementine.nsi.in @@ -187,9 +187,6 @@ Section "Delete old files" oldfiles Delete "$INSTDIR\gstreamer-plugins\libgstqueue2.dll" Delete "$INSTDIR\gstreamer-plugins\libgstsoup.dll" - ; 1.0 prerelease - Delete "$INSTDIR\spotify.dll" - ; 1.0 Delete "$INSTDIR\libofa.dll" Delete "$INSTDIR\gstreamer-plugins\libgstofa.dll" @@ -302,7 +299,6 @@ Section "Clementine" Clementine File "clementine.exe" File "clementine-tagreader.exe" - File "clementine-spotifyblob.exe" File "clementine.ico" File "glew32.dll" File "libcdio-19.dll" @@ -355,7 +351,6 @@ Section "Clementine" Clementine File "libpsl-5.dll" File "libsoup-2.4-1.dll" File "libspeex-1.dll" - File "libspotify.dll" File "libssl-1_1.dll" File "libsqlite3-0.dll" File "libstdc++-6.dll" @@ -1137,7 +1132,6 @@ Section "Uninstall" ; Delete all the files Delete "$INSTDIR\clementine.exe" Delete "$INSTDIR\clementine-tagreader.exe" - Delete "$INSTDIR\clementine-spotifyblob.exe" Delete "$INSTDIR\clementine.ico" Delete "$INSTDIR\glew32.dll" Delete "$INSTDIR\libcdio-19.dll" @@ -1190,7 +1184,6 @@ Section "Uninstall" Delete "$INSTDIR\libpsl-5.dll" Delete "$INSTDIR\libsoup-2.4-1.dll" Delete "$INSTDIR\libspeex-1.dll" - Delete "$INSTDIR\libspotify.dll" Delete "$INSTDIR\libssl-1_1.dll" Delete "$INSTDIR\libsqlite3-0.dll" Delete "$INSTDIR\libstdc++-6.dll" diff --git a/ext/libclementine-common/core/logging.cpp b/ext/libclementine-common/core/logging.cpp index 8012c0c..872f19c 100644 --- a/ext/libclementine-common/core/logging.cpp +++ b/ext/libclementine-common/core/logging.cpp @@ -14,10 +14,6 @@ limitations under the License. */ -// Note: this file is licensed under the Apache License instead of GPL because -// it is used by the Spotify blob which links against libspotify and is not GPL -// compatible. - #include #include diff --git a/ext/libclementine-common/core/logging.h b/ext/libclementine-common/core/logging.h index 0433da5aa..8f6efe561 100644 --- a/ext/libclementine-common/core/logging.h +++ b/ext/libclementine-common/core/logging.h @@ -14,10 +14,6 @@ limitations under the License. */ -// Note: this file is licensed under the Apache License instead of GPL because -// it is used by the Spotify blob which links against libspotify and is not GPL -// compatible. - #ifndef LOGGING_H #define LOGGING_H diff --git a/ext/libclementine-common/core/messagehandler.cpp b/ext/libclementine-common/core/messagehandler.cpp index 065964d5f..8a8381b46 100644 --- a/ext/libclementine-common/core/messagehandler.cpp +++ b/ext/libclementine-common/core/messagehandler.cpp @@ -14,10 +14,6 @@ limitations under the License. */ -// Note: this file is licensed under the Apache License instead of GPL because -// it is used by the Spotify blob which links against libspotify and is not GPL -// compatible. - #include "messagehandler.h" #include "core/logging.h" diff --git a/ext/libclementine-common/core/messagehandler.h b/ext/libclementine-common/core/messagehandler.h index 5a7f8f2c8..7df58df05 100644 --- a/ext/libclementine-common/core/messagehandler.h +++ b/ext/libclementine-common/core/messagehandler.h @@ -14,10 +14,6 @@ limitations under the License. */ -// Note: this file is licensed under the Apache License instead of GPL because -// it is used by the Spotify blob which links against libspotify and is not GPL -// compatible. - #ifndef MESSAGEHANDLER_H #define MESSAGEHANDLER_H diff --git a/ext/libclementine-common/core/override.h b/ext/libclementine-common/core/override.h index 98c2764d5..ca3713700 100644 --- a/ext/libclementine-common/core/override.h +++ b/ext/libclementine-common/core/override.h @@ -14,10 +14,6 @@ limitations under the License. */ -// Note: this file is licensed under the Apache License instead of GPL because -// it is used by the Spotify blob which links against libspotify and is not GPL -// compatible. - #ifndef OVERRIDE_H #define OVERRIDE_H diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d635aee7c..56e01c09d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -47,10 +47,6 @@ include_directories(${CMAKE_SOURCE_DIR}/ include_directories(${CMAKE_BINARY_DIR}/ext/libclementine-tagreader) include_directories(${CMAKE_SOURCE_DIR}/ext/libclementine-remote) include_directories(${CMAKE_BINARY_DIR}/ext/libclementine-remote) -if(HAVE_SPOTIFY) - include_directories(${CMAKE_SOURCE_DIR}/ext/libclementine-spotifyblob) - include_directories(${CMAKE_BINARY_DIR}/ext/libclementine-spotifyblob) -endif(HAVE_SPOTIFY) cmake_policy(SET CMP0011 NEW) include(../cmake/ParseArguments.cmake) @@ -303,7 +299,6 @@ set(SOURCES songinfo/songkickconcerts.cpp songinfo/songkickconcertwidget.cpp songinfo/songplaystats.cpp - songinfo/spotifyimages.cpp songinfo/streamdiscoverer.cpp songinfo/taglyricsinfoprovider.cpp songinfo/ultimatelyricslyric.cpp @@ -593,7 +588,6 @@ set(HEADERS songinfo/songkickconcerts.h songinfo/songkickconcertwidget.h songinfo/songplaystats.h - songinfo/spotifyimages.h songinfo/streamdiscoverer.h songinfo/taglyricsinfoprovider.h songinfo/ultimatelyricslyric.h @@ -837,33 +831,6 @@ optional_source(HAVE_LIBLASTFM internet/lastfm/lastfmsettingspage.ui ) -# Spotify support -optional_source(HAVE_SPOTIFY - SOURCES - internet/spotify/spotifyserver.cpp - internet/spotify/spotifyservice.cpp - internet/spotify/spotifysettingspage.cpp - globalsearch/spotifysearchprovider.cpp - HEADERS - globalsearch/spotifysearchprovider.h - internet/spotify/spotifyserver.h - internet/spotify/spotifyservice.h - internet/spotify/spotifysettingspage.h - UI - internet/spotify/spotifysettingspage.ui -) - -if(HAVE_SPOTIFY) - optional_source(HAVE_SPOTIFY_DOWNLOADER - SOURCES - internet/spotify/spotifyblobdownloader.cpp - HEADERS - internet/spotify/spotifyblobdownloader.h - INCLUDE_DIRECTORIES - ${CRYPTOPP_INCLUDE_DIRS} - ) -endif(HAVE_SPOTIFY) - # Platform specific - OS X optional_source(APPLE INCLUDE_DIRECTORIES @@ -1306,17 +1273,6 @@ if(HAVE_BREAKPAD) endif (LINUX) endif(HAVE_BREAKPAD) -if(HAVE_SPOTIFY) - target_link_libraries(clementine_lib clementine-spotifyblob-messages) -endif(HAVE_SPOTIFY) - -if(HAVE_SPOTIFY_DOWNLOADER) - target_link_libraries(clementine_lib - ${CRYPTOPP_LIBRARIES} - ) - link_directories(${CRYPTOPP_LIBRARY_DIRS}) -endif(HAVE_SPOTIFY_DOWNLOADER) - if(HAVE_LIBPULSE) target_link_libraries(clementine_lib ${LIBPULSE_LIBRARIES}) endif() @@ -1404,10 +1360,6 @@ target_link_libraries(clementine clementine_lib ) -# macdeploy.py relies on the blob being built first. -if(HAVE_SPOTIFY_BLOB) - add_dependencies(clementine clementine-spotifyblob) -endif(HAVE_SPOTIFY_BLOB) add_dependencies(clementine clementine-tagreader) set_target_properties(clementine PROPERTIES diff --git a/src/analyzers/rainbowanalyzer.cpp b/src/analyzers/rainbowanalyzer.cpp index 7cb0b44c2..25bfb843d 100644 --- a/src/analyzers/rainbowanalyzer.cpp +++ b/src/analyzers/rainbowanalyzer.cpp @@ -42,7 +42,7 @@ const int Rainbow::RainbowAnalyzer::kRai const int Rainbow::RainbowAnalyzer::kRainbowOverlap[] = {13, 15}; const int Rainbow::RainbowAnalyzer::kSleepingHeight[] = {24, 33}; -const char* Rainbow::NyanCatAnalyzer::kName = "Nyanalyzer Cat"; +const char* Rainbow::NyanCatAnalyzer::kName = "MooGNU"; const char* Rainbow::RainbowDashAnalyzer::kName = "Rainbow Dash"; const float Rainbow::RainbowAnalyzer::kPixelScale = 0.02f; @@ -59,7 +59,7 @@ Rainbow::RainbowAnalyzer::RainbowAnalyze x_offset_(0), background_brush_(QColor(0x0f, 0x43, 0x73)) { rainbowtype = rbtype; - cat_dash_[0] = QPixmap(":/nyancat.png"); + cat_dash_[0] = QPixmap(":/moognu.png"); cat_dash_[1] = QPixmap(":/rainbowdash.png"); memset(history_, 0, sizeof(history_)); @@ -193,8 +193,8 @@ void Rainbow::RainbowAnalyzer::analyze(Q // Draw the buffer on to the widget p.drawPixmap(0, 0, buffer_[current_buffer_], x_offset_, 0, 0, 0); - // Draw rainbow analyzer (nyan cat or rainbowdash) - // Nyan nyan nyan nyan dash dash dash dash. + // Draw rainbow analyzer (moo gnu or rainbowdash) + // Moo moo moo moo dash dash dash dash. if (!is_playing_) { // Ssshhh! p.drawPixmap(SleepingDestRect(rainbowtype), cat_dash_[rainbowtype], diff --git a/src/config.h.in b/src/config.h.in index 20427754b..4dbd44405 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -42,12 +42,10 @@ #cmakedefine HAVE_SEAFILE #cmakedefine HAVE_SKYDRIVE #cmakedefine HAVE_SPARKLE -#cmakedefine HAVE_SPOTIFY_DOWNLOADER #cmakedefine HAVE_UDISKS2 #cmakedefine HAVE_WIIMOTEDEV #cmakedefine HAVE_OPENGL #cmakedefine HAVE_TRANSLATIONS -#cmakedefine HAVE_SPOTIFY #cmakedefine TAGLIB_HAS_OPUS #cmakedefine USE_INSTALL_PREFIX #cmakedefine USE_SYSTEM_PROJECTM diff --git a/src/core/backgroundstreams.cpp b/src/core/backgroundstreams.cpp index 2e6ac60e2..e62504c70 100644 --- a/src/core/backgroundstreams.cpp +++ b/src/core/backgroundstreams.cpp @@ -28,8 +28,6 @@ const char* BackgroundStreams::kSettingsGroup = "BackgroundStreams"; const char* BackgroundStreams::kHypnotoadUrl = "hypnotoad:///"; -const char* BackgroundStreams::kRainUrl = - "http://data.clementine-player.org/rainymood"; const char* BackgroundStreams::kEnterpriseUrl = "enterprise:///"; BackgroundStreams::BackgroundStreams(EngineBase* engine, QObject* parent) @@ -44,7 +42,6 @@ void BackgroundStreams::LoadStreams() { int version = s.value("version", 0).toInt(); if (version < 1) { AddStream(QT_TR_NOOP("Hypnotoad"), QUrl(kHypnotoadUrl)); - AddStream(QT_TR_NOOP("Rain"), QUrl(kRainUrl)); } if (version < kVersion) { diff --git a/src/core/timeconstants.h b/src/core/timeconstants.h index 67d022794..49020d809 100644 --- a/src/core/timeconstants.h +++ b/src/core/timeconstants.h @@ -16,10 +16,6 @@ limitations under the License. */ -// Note: this file is licensed under the Apache License instead of GPL because -// it is used by the Spotify blob which links against libspotify and is not GPL -// compatible. - #ifndef CORE_TIMECONSTANTS_H_ #define CORE_TIMECONSTANTS_H_ diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index fe106e2b7..54defd7fd 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -391,9 +391,6 @@ QString GetConfigPath(ConfigPath config) return QDir::homePath(); #endif - case Path_LocalSpotifyBlob: - return GetConfigPath(Path_Root) + "/spotifyblob"; - default: qFatal("%s", Q_FUNC_INFO); return QString::null; diff --git a/src/core/utilities.h b/src/core/utilities.h index 021ded6cf..841ec4061 100644 --- a/src/core/utilities.h +++ b/src/core/utilities.h @@ -130,7 +130,6 @@ enum ConfigPath { Path_NetworkCache, Path_GstreamerRegistry, Path_DefaultMusicLibrary, - Path_LocalSpotifyBlob, Path_MoodbarCache, Path_CacheRoot, }; diff --git a/src/covers/albumcoverloader.cpp b/src/covers/albumcoverloader.cpp index a04cd923a..c982fd8f4 100644 --- a/src/covers/albumcoverloader.cpp +++ b/src/covers/albumcoverloader.cpp @@ -34,18 +34,12 @@ #include "core/tagreaderclient.h" #include "core/utilities.h" #include "internet/core/internetmodel.h" -#ifdef HAVE_SPOTIFY -#include "internet/spotify/spotifyservice.h" -#endif AlbumCoverLoader::AlbumCoverLoader(QObject* parent) : QObject(parent), stop_requested_(false), next_id_(1), - network_(new NetworkAccessManager(this)), - connected_spotify_(false) { - setObjectName("Album cover loader"); -} + network_(new NetworkAccessManager(this)) {} QString AlbumCoverLoader::ImageCacheDir() { return Utilities::GetConfigPath(Utilities::Path_AlbumCovers); @@ -179,29 +175,6 @@ AlbumCoverLoader::TryLoadResult AlbumCov remote_tasks_.insert(reply, task); return TryLoadResult(true, false, QImage()); } -#ifdef HAVE_SPOTIFY - else if (filename.toLower().startsWith("spotify://image/")) { - // HACK: we should add generic image URL handlers - SpotifyService* spotify = InternetModel::Service(); - - if (!connected_spotify_) { - connect(spotify, SIGNAL(ImageLoaded(QString, QImage)), - SLOT(SpotifyImageLoaded(QString, QImage))); - connected_spotify_ = true; - } - - QString id = QUrl(filename).path(); - if (id.startsWith('/')) { - id.remove(0, 1); - } - remote_spotify_tasks_.insert(id, task); - - // Need to schedule this in the spotify service's thread - QMetaObject::invokeMethod(spotify, "LoadImage", Qt::QueuedConnection, - Q_ARG(QString, id)); - return TryLoadResult(true, false, QImage()); - } -#endif else if (filename.isEmpty()) { // Avoid "QFSFileEngine::open: No file name specified" messages if we know that the filename is empty return TryLoadResult(false, false, task.options.default_output_image_); @@ -213,18 +186,6 @@ AlbumCoverLoader::TryLoadResult AlbumCov image.isNull() ? task.options.default_output_image_ : image); } -#ifdef HAVE_SPOTIFY -void AlbumCoverLoader::SpotifyImageLoaded(const QString& id, - const QImage& image) { - if (!remote_spotify_tasks_.contains(id)) return; - - Task task = remote_spotify_tasks_.take(id); - QImage scaled = ScaleAndPad(task.options, image); - emit ImageLoaded(task.id, scaled); - emit ImageLoaded(task.id, scaled, image); -} -#endif - void AlbumCoverLoader::RemoteFetchFinished(QNetworkReply* reply) { reply->deleteLater(); diff --git a/src/covers/albumcoverloader.h b/src/covers/albumcoverloader.h index c5fae6b4c..ff68c6cf1 100644 --- a/src/covers/albumcoverloader.h +++ b/src/covers/albumcoverloader.h @@ -67,9 +67,6 @@ class AlbumCoverLoader : public QObject protected slots: void ProcessTasks(); void RemoteFetchFinished(QNetworkReply* reply); -#ifdef HAVE_SPOTIFY - void SpotifyImageLoaded(const QString& url, const QImage& image); -#endif protected: enum State { State_TryingManual, State_TryingAuto, }; @@ -106,13 +103,10 @@ class AlbumCoverLoader : public QObject QMutex mutex_; QQueue tasks_; QMap remote_tasks_; - QMap remote_spotify_tasks_; quint64 next_id_; NetworkAccessManager* network_; - bool connected_spotify_; - static const int kMaxRedirects = 3; }; diff --git a/src/engines/gstenginepipeline.cpp b/src/engines/gstenginepipeline.cpp index 56cabd1..807d4a9 100644 --- a/src/engines/gstenginepipeline.cpp +++ b/src/engines/gstenginepipeline.cpp @@ -36,10 +36,6 @@ #include "devices/cddadevice.h" #endif #include "internet/core/internetmodel.h" -#ifdef HAVE_SPOTIFY -#include "internet/spotify/spotifyserver.h" -#include "internet/spotify/spotifyservice.h" -#endif const int GstEnginePipeline::kGstStateTimeoutNanosecs = 10000000; const int GstEnginePipeline::kFaderFudgeMsec = 2000; @@ -168,45 +164,6 @@ QByteArray GstEnginePipeline::GstUriFromUrl(const QUrl& url) { GstElement* GstEnginePipeline::CreateDecodeBinFromUrl(const QUrl& url) { GstElement* new_bin = nullptr; -#ifdef HAVE_SPOTIFY - if (url.scheme() == "spotify") { - new_bin = gst_bin_new("spotify_bin"); - if (!new_bin) return nullptr; - - // Create elements - GstElement* src = engine_->CreateElement("tcpserversrc", new_bin); - if (!src) { - gst_object_unref(GST_OBJECT(new_bin)); - return nullptr; - } - GstElement* gdp = engine_->CreateElement("gdpdepay", new_bin); - if (!gdp) { - gst_object_unref(GST_OBJECT(new_bin)); - return nullptr; - } - - // Pick a port number - const int port = Utilities::PickUnusedPort(); - g_object_set(G_OBJECT(src), "host", "127.0.0.1", nullptr); - g_object_set(G_OBJECT(src), "port", port, nullptr); - - // Link the elements - gst_element_link(src, gdp); - - // Add a ghost pad - GstPad* pad = gst_element_get_static_pad(gdp, "src"); - gst_element_add_pad(GST_ELEMENT(new_bin), gst_ghost_pad_new("src", pad)); - gst_object_unref(GST_OBJECT(pad)); - - // Tell spotify to start sending data to us. - SpotifyServer* spotify_server = - InternetModel::Service()->server(); - // Need to schedule this in the spotify server's thread - QMetaObject::invokeMethod( - spotify_server, "StartPlayback", Qt::QueuedConnection, - Q_ARG(QString, url.toString()), Q_ARG(quint16, port)); - } else { -#endif QByteArray uri = GstUriFromUrl(url); new_bin = engine_->CreateElement("uridecodebin"); if (!new_bin) return nullptr; @@ -216,9 +173,6 @@ GstElement* GstEnginePipeline::CreateDecodeBinFromUrl(const QUrl& url) { CHECKED_GCONNECT(G_OBJECT(new_bin), "pad-added", &NewPadCallback, this); CHECKED_GCONNECT(G_OBJECT(new_bin), "notify::source", &SourceSetupCallback, this); -#ifdef HAVE_SPOTIFY - } -#endif return new_bin; } @@ -1064,14 +1018,7 @@ void GstEnginePipeline::SourceDrainedCallback(GstURIDecodeBin* bin, gpointer self) { GstEnginePipeline* instance = reinterpret_cast(self); - if (instance->has_next_valid_url() && - // I'm not sure why, but calling this when previous track is a local song - // and the next track is a Spotify song is buggy: the Spotify song will - // not start or with some offset. So just do nothing here: when the song - // finished, EndOfStreamReached/TrackEnded will be emitted anyway so - // NextItem will be called. - !(instance->current_.url_.scheme() != "spotify" && - instance->next_.url_.scheme() == "spotify")) { + if (instance->has_next_valid_url()) { instance->TransitionToNext(); } } @@ -1189,26 +1136,6 @@ GstState GstEnginePipeline::state() const { } QFuture GstEnginePipeline::SetState(GstState state) { -#ifdef HAVE_SPOTIFY - if (current_.url_.scheme() == "spotify" && !buffering_) { - const GstState current_state = this->state(); - - if (state == GST_STATE_PAUSED && current_state == GST_STATE_PLAYING) { - SpotifyService* spotify = InternetModel::Service(); - - // Need to schedule this in the spotify service's thread - QMetaObject::invokeMethod(spotify, "SetPaused", Qt::QueuedConnection, - Q_ARG(bool, true)); - } else if (state == GST_STATE_PLAYING && - current_state == GST_STATE_PAUSED) { - SpotifyService* spotify = InternetModel::Service(); - - // Need to schedule this in the spotify service's thread - QMetaObject::invokeMethod(spotify, "SetPaused", Qt::QueuedConnection, - Q_ARG(bool, false)); - } - } -#endif return ConcurrentRun::Run( &set_state_threadpool_, &gst_element_set_state, pipeline_, state); } diff --git a/src/internet/core/internetmodel.cpp b/src/internet/core/internetmodel.cpp index 756d48073..ab3f8e4fe 100644 --- a/src/internet/core/internetmodel.cpp +++ b/src/internet/core/internetmodel.cpp @@ -59,9 +59,6 @@ #ifdef HAVE_SEAFILE #include "internet/seafile/seafileservice.h" #endif -#ifdef HAVE_SPOTIFY -#include "internet/spotify/spotifyservice.h" -#endif using smart_playlists::Generator; using smart_playlists::GeneratorMimeData; @@ -94,9 +91,6 @@ InternetModel::InternetModel(Application AddService(new RadioTunesService(app, this)); AddService(new SomaFMService(app, this)); AddService(new IntergalacticFMService(app, this)); -#ifdef HAVE_SPOTIFY - AddService(new SpotifyService(app, this)); -#endif AddService(new SubsonicService(app, this)); #ifdef HAVE_BOX AddService(new BoxService(app, this)); diff --git a/src/main.cpp b/src/main.cpp index ecf47b9d4..8b8143f4a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -145,8 +145,6 @@ void SetEnv(const char* key, const QStri #endif } -// This must be done early so that the spotify blob process also picks up -// these environment variables. void SetGstreamerEnvironment() { QString scanner_path; QString plugin_path; diff --git a/src/playlist/playlistbackend.h b/src/playlist/playlistbackend.h index f9d347c4e..320c0fb9b 100644 --- a/src/playlist/playlistbackend.h +++ b/src/playlist/playlistbackend.h @@ -47,8 +47,6 @@ class PlaylistBackend : public QObject { QString dynamic_backend; QByteArray dynamic_data; - // Special playlists have different behaviour, eg. the "spotify-search" - // type has a spotify search box at the top, replacing the ordinary filter. QString special_type; }; typedef QList PlaylistList; diff --git a/src/playlist/playlistdelegates.cpp b/src/playlist/playlistdelegates.cpp index daf896e73..d74b74a56 100644 --- a/src/playlist/playlistdelegates.cpp +++ b/src/playlist/playlistdelegates.cpp @@ -458,9 +458,7 @@ QPixmap SongSourceDelegate::LookupPixmap if (handler) { icon = handler->icon(); } else { - if (url.scheme() == "spotify") { - icon = IconLoader::Load("spotify", IconLoader::Provider); - } else if (url.scheme() == "file") { + if (url.scheme() == "file") { icon = IconLoader::Load("folder-sound", IconLoader::Base); } else if (url.host() == "api.jamendo.com") { icon = IconLoader::Load("jamendo", IconLoader::Provider); diff --git a/src/songinfo/artistinfoview.cpp b/src/songinfo/artistinfoview.cpp index 8a1f775..eda16d4 100644 --- a/src/songinfo/artistinfoview.cpp +++ b/src/songinfo/artistinfoview.cpp @@ -20,12 +20,10 @@ #include "songinfo/artistbiography.h" #include "songinfo/songinfofetcher.h" #include "songinfo/songkickconcerts.h" -#include "songinfo/spotifyimages.h" #include "widgets/prettyimageview.h" ArtistInfoView::ArtistInfoView(QWidget* parent) : SongInfoBase(parent) { fetcher_->AddProvider(new SongkickConcerts); - fetcher_->AddProvider(new SpotifyImages); fetcher_->AddProvider(new ArtistBiography); } diff --git a/src/ui/about.cpp b/src/ui/about.cpp index 0314a380f..f3d9c6944 100644 --- a/src/ui/about.cpp +++ b/src/ui/about.cpp @@ -88,7 +88,6 @@ QString About::MakeHtml() const { ret += QString("
%1

").arg(tr("...and all the Amarok contributors")); ret += QString("

%1").arg(tr("And:")); - ret += QString("
Rainy Mood"); ret += QString( "
Scott " "Smitelli"); @@ -96,11 +95,6 @@ QString About::MakeHtml() const { "
Allie " "Brosh

"); - ret += - "

This product uses Music by Spotify but is not endorsed, certified " - "or otherwise approved in any way by Spotify. Spotify is the registered " - "trade mark of the Spotify Group.

"; - return ret; } diff --git a/src/ui/settingsdialog.cpp b/src/ui/settingsdialog.cpp index 354187ade..80f2820e7 100644 --- a/src/ui/settingsdialog.cpp +++ b/src/ui/settingsdialog.cpp @@ -77,10 +77,6 @@ #include "internet/seafile/seafilesettingspage.h" #endif -#ifdef HAVE_SPOTIFY -#include "internet/spotify/spotifysettingspage.h" -#endif - #include #include #include @@ -177,10 +173,6 @@ SettingsDialog::SettingsDialog(Applicati AddPage(Page_Skydrive, new SkydriveSettingsPage(this), providers); #endif -#ifdef HAVE_SPOTIFY - AddPage(Page_Spotify, new SpotifySettingsPage(this), providers); -#endif - #ifdef HAVE_SEAFILE AddPage(Page_Seafile, new SeafileSettingsPage(this), providers); #endif diff --git a/src/ui/settingsdialog.h b/src/ui/settingsdialog.h index f45f72983..dc4eeb6c4 100644 --- a/src/ui/settingsdialog.h +++ b/src/ui/settingsdialog.h @@ -69,7 +69,6 @@ class SettingsDialog : public QDialog { Page_Library, Page_Lastfm, Page_SoundCloud, - Page_Spotify, Page_Magnatune, Page_DigitallyImported, Page_BackgroundStreams,