Rename QueryType to Type
This commit is contained in:
parent
6200fed224
commit
2a4fd346f9
|
@ -48,7 +48,7 @@ class QobuzBaseRequest : public QObject {
|
||||||
explicit QobuzBaseRequest(QobuzService *service, SharedPtr<NetworkAccessManager> network, QObject *parent = nullptr);
|
explicit QobuzBaseRequest(QobuzService *service, SharedPtr<NetworkAccessManager> network, QObject *parent = nullptr);
|
||||||
~QobuzBaseRequest();
|
~QobuzBaseRequest();
|
||||||
|
|
||||||
enum class QueryType {
|
enum class Type {
|
||||||
None,
|
None,
|
||||||
Artists,
|
Artists,
|
||||||
Albums,
|
Albums,
|
||||||
|
|
|
@ -57,7 +57,7 @@ constexpr int kMaxConcurrentAlbumCoverRequests = 1;
|
||||||
constexpr int kFlushRequestsDelay = 200;
|
constexpr int kFlushRequestsDelay = 200;
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
QobuzRequest::QobuzRequest(QobuzService *service, QobuzUrlHandler *url_handler, Application *app, SharedPtr<NetworkAccessManager> network, const QueryType query_type, QObject *parent)
|
QobuzRequest::QobuzRequest(QobuzService *service, QobuzUrlHandler *url_handler, Application *app, SharedPtr<NetworkAccessManager> network, const Type query_type, QObject *parent)
|
||||||
: QobuzBaseRequest(service, network, parent),
|
: QobuzBaseRequest(service, network, parent),
|
||||||
service_(service),
|
service_(service),
|
||||||
url_handler_(url_handler),
|
url_handler_(url_handler),
|
||||||
|
@ -124,22 +124,22 @@ QobuzRequest::~QobuzRequest() {
|
||||||
void QobuzRequest::Process() {
|
void QobuzRequest::Process() {
|
||||||
|
|
||||||
switch (query_type_) {
|
switch (query_type_) {
|
||||||
case QueryType::Artists:
|
case Type::Artists:
|
||||||
GetArtists();
|
GetArtists();
|
||||||
break;
|
break;
|
||||||
case QueryType::Albums:
|
case Type::Albums:
|
||||||
GetAlbums();
|
GetAlbums();
|
||||||
break;
|
break;
|
||||||
case QueryType::Songs:
|
case Type::Songs:
|
||||||
GetSongs();
|
GetSongs();
|
||||||
break;
|
break;
|
||||||
case QueryType::SearchArtists:
|
case Type::SearchArtists:
|
||||||
ArtistsSearch();
|
ArtistsSearch();
|
||||||
break;
|
break;
|
||||||
case QueryType::SearchAlbums:
|
case Type::SearchAlbums:
|
||||||
AlbumsSearch();
|
AlbumsSearch();
|
||||||
break;
|
break;
|
||||||
case QueryType::SearchSongs:
|
case Type::SearchSongs:
|
||||||
SongsSearch();
|
SongsSearch();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -226,18 +226,18 @@ void QobuzRequest::FlushArtistsRequests() {
|
||||||
Request request = artists_requests_queue_.dequeue();
|
Request request = artists_requests_queue_.dequeue();
|
||||||
|
|
||||||
ParamList params;
|
ParamList params;
|
||||||
if (query_type_ == QueryType::Artists) {
|
if (query_type_ == Type::Artists) {
|
||||||
params << Param(QStringLiteral("type"), QStringLiteral("artists"));
|
params << Param(QStringLiteral("type"), QStringLiteral("artists"));
|
||||||
params << Param(QStringLiteral("user_auth_token"), user_auth_token());
|
params << Param(QStringLiteral("user_auth_token"), user_auth_token());
|
||||||
}
|
}
|
||||||
else if (query_type_ == QueryType::SearchArtists) params << Param(QStringLiteral("query"), search_text_);
|
else if (query_type_ == Type::SearchArtists) params << Param(QStringLiteral("query"), search_text_);
|
||||||
if (request.limit > 0) params << Param(QStringLiteral("limit"), QString::number(request.limit));
|
if (request.limit > 0) params << Param(QStringLiteral("limit"), QString::number(request.limit));
|
||||||
if (request.offset > 0) params << Param(QStringLiteral("offset"), QString::number(request.offset));
|
if (request.offset > 0) params << Param(QStringLiteral("offset"), QString::number(request.offset));
|
||||||
QNetworkReply *reply = nullptr;
|
QNetworkReply *reply = nullptr;
|
||||||
if (query_type_ == QueryType::Artists) {
|
if (query_type_ == Type::Artists) {
|
||||||
reply = CreateRequest(QStringLiteral("favorite/getUserFavorites"), params);
|
reply = CreateRequest(QStringLiteral("favorite/getUserFavorites"), params);
|
||||||
}
|
}
|
||||||
else if (query_type_ == QueryType::SearchArtists) {
|
else if (query_type_ == Type::SearchArtists) {
|
||||||
reply = CreateRequest(QStringLiteral("artist/search"), params);
|
reply = CreateRequest(QStringLiteral("artist/search"), params);
|
||||||
}
|
}
|
||||||
if (!reply) continue;
|
if (!reply) continue;
|
||||||
|
@ -278,18 +278,18 @@ void QobuzRequest::FlushAlbumsRequests() {
|
||||||
Request request = albums_requests_queue_.dequeue();
|
Request request = albums_requests_queue_.dequeue();
|
||||||
|
|
||||||
ParamList params;
|
ParamList params;
|
||||||
if (query_type_ == QueryType::Albums) {
|
if (query_type_ == Type::Albums) {
|
||||||
params << Param(QStringLiteral("type"), QStringLiteral("albums"));
|
params << Param(QStringLiteral("type"), QStringLiteral("albums"));
|
||||||
params << Param(QStringLiteral("user_auth_token"), user_auth_token());
|
params << Param(QStringLiteral("user_auth_token"), user_auth_token());
|
||||||
}
|
}
|
||||||
else if (query_type_ == QueryType::SearchAlbums) params << Param(QStringLiteral("query"), search_text_);
|
else if (query_type_ == Type::SearchAlbums) params << Param(QStringLiteral("query"), search_text_);
|
||||||
if (request.limit > 0) params << Param(QStringLiteral("limit"), QString::number(request.limit));
|
if (request.limit > 0) params << Param(QStringLiteral("limit"), QString::number(request.limit));
|
||||||
if (request.offset > 0) params << Param(QStringLiteral("offset"), QString::number(request.offset));
|
if (request.offset > 0) params << Param(QStringLiteral("offset"), QString::number(request.offset));
|
||||||
QNetworkReply *reply = nullptr;
|
QNetworkReply *reply = nullptr;
|
||||||
if (query_type_ == QueryType::Albums) {
|
if (query_type_ == Type::Albums) {
|
||||||
reply = CreateRequest(QStringLiteral("favorite/getUserFavorites"), params);
|
reply = CreateRequest(QStringLiteral("favorite/getUserFavorites"), params);
|
||||||
}
|
}
|
||||||
else if (query_type_ == QueryType::SearchAlbums) {
|
else if (query_type_ == Type::SearchAlbums) {
|
||||||
reply = CreateRequest(QStringLiteral("album/search"), params);
|
reply = CreateRequest(QStringLiteral("album/search"), params);
|
||||||
}
|
}
|
||||||
if (!reply) continue;
|
if (!reply) continue;
|
||||||
|
@ -330,18 +330,18 @@ void QobuzRequest::FlushSongsRequests() {
|
||||||
Request request = songs_requests_queue_.dequeue();
|
Request request = songs_requests_queue_.dequeue();
|
||||||
|
|
||||||
ParamList params;
|
ParamList params;
|
||||||
if (query_type_ == QueryType::Songs) {
|
if (query_type_ == Type::Songs) {
|
||||||
params << Param(QStringLiteral("type"), QStringLiteral("tracks"));
|
params << Param(QStringLiteral("type"), QStringLiteral("tracks"));
|
||||||
params << Param(QStringLiteral("user_auth_token"), user_auth_token());
|
params << Param(QStringLiteral("user_auth_token"), user_auth_token());
|
||||||
}
|
}
|
||||||
else if (query_type_ == QueryType::SearchSongs) params << Param(QStringLiteral("query"), search_text_);
|
else if (query_type_ == Type::SearchSongs) params << Param(QStringLiteral("query"), search_text_);
|
||||||
if (request.limit > 0) params << Param(QStringLiteral("limit"), QString::number(request.limit));
|
if (request.limit > 0) params << Param(QStringLiteral("limit"), QString::number(request.limit));
|
||||||
if (request.offset > 0) params << Param(QStringLiteral("offset"), QString::number(request.offset));
|
if (request.offset > 0) params << Param(QStringLiteral("offset"), QString::number(request.offset));
|
||||||
QNetworkReply *reply = nullptr;
|
QNetworkReply *reply = nullptr;
|
||||||
if (query_type_ == QueryType::Songs) {
|
if (query_type_ == Type::Songs) {
|
||||||
reply = CreateRequest(QStringLiteral("favorite/getUserFavorites"), params);
|
reply = CreateRequest(QStringLiteral("favorite/getUserFavorites"), params);
|
||||||
}
|
}
|
||||||
else if (query_type_ == QueryType::SearchSongs) {
|
else if (query_type_ == Type::SearchSongs) {
|
||||||
reply = CreateRequest(QStringLiteral("track/search"), params);
|
reply = CreateRequest(QStringLiteral("track/search"), params);
|
||||||
}
|
}
|
||||||
if (!reply) continue;
|
if (!reply) continue;
|
||||||
|
@ -534,8 +534,8 @@ void QobuzRequest::ArtistsFinishCheck(const int limit, const int offset, const i
|
||||||
if ((limit == 0 || limit > artists_received) && artists_received_ < artists_total_) {
|
if ((limit == 0 || limit > artists_received) && artists_received_ < artists_total_) {
|
||||||
int offset_next = offset + artists_received;
|
int offset_next = offset + artists_received;
|
||||||
if (offset_next > 0 && offset_next < artists_total_) {
|
if (offset_next > 0 && offset_next < artists_total_) {
|
||||||
if (query_type_ == QueryType::Artists) AddArtistsRequest(offset_next);
|
if (query_type_ == Type::Artists) AddArtistsRequest(offset_next);
|
||||||
else if (query_type_ == QueryType::SearchArtists) AddArtistsSearchRequest(offset_next);
|
else if (query_type_ == Type::SearchArtists) AddArtistsSearchRequest(offset_next);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -689,7 +689,7 @@ void QobuzRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
|
||||||
}
|
}
|
||||||
QJsonArray array_items = value_items.toArray();
|
QJsonArray array_items = value_items.toArray();
|
||||||
if (array_items.isEmpty()) {
|
if (array_items.isEmpty()) {
|
||||||
if ((query_type_ == QueryType::Albums || query_type_ == QueryType::SearchAlbums) && offset_requested == 0) {
|
if ((query_type_ == Type::Albums || query_type_ == Type::SearchAlbums) && offset_requested == 0) {
|
||||||
no_results_ = true;
|
no_results_ = true;
|
||||||
}
|
}
|
||||||
AlbumsFinishCheck(artist_requested);
|
AlbumsFinishCheck(artist_requested);
|
||||||
|
@ -755,7 +755,7 @@ void QobuzRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (query_type_ == QueryType::Albums || query_type_ == QueryType::SearchAlbums) {
|
if (query_type_ == Type::Albums || query_type_ == Type::SearchAlbums) {
|
||||||
albums_received_ += albums_received;
|
albums_received_ += albums_received;
|
||||||
emit UpdateProgress(query_id_, GetProgress(albums_received_, albums_total_));
|
emit UpdateProgress(query_id_, GetProgress(albums_received_, albums_total_));
|
||||||
}
|
}
|
||||||
|
@ -772,14 +772,14 @@ void QobuzRequest::AlbumsFinishCheck(const Artist &artist, const int limit, cons
|
||||||
int offset_next = offset + albums_received;
|
int offset_next = offset + albums_received;
|
||||||
if (offset_next > 0 && offset_next < albums_total) {
|
if (offset_next > 0 && offset_next < albums_total) {
|
||||||
switch (query_type_) {
|
switch (query_type_) {
|
||||||
case QueryType::Albums:
|
case Type::Albums:
|
||||||
AddAlbumsRequest(offset_next);
|
AddAlbumsRequest(offset_next);
|
||||||
break;
|
break;
|
||||||
case QueryType::SearchAlbums:
|
case Type::SearchAlbums:
|
||||||
AddAlbumsSearchRequest(offset_next);
|
AddAlbumsSearchRequest(offset_next);
|
||||||
break;
|
break;
|
||||||
case QueryType::Artists:
|
case Type::Artists:
|
||||||
case QueryType::SearchArtists:
|
case Type::SearchArtists:
|
||||||
AddArtistAlbumsRequest(artist, offset_next);
|
AddArtistAlbumsRequest(artist, offset_next);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -984,7 +984,7 @@ void QobuzRequest::SongsReceived(QNetworkReply *reply, const Artist &artist_requ
|
||||||
|
|
||||||
QJsonArray array_items = value_items.toArray();
|
QJsonArray array_items = value_items.toArray();
|
||||||
if (array_items.isEmpty()) {
|
if (array_items.isEmpty()) {
|
||||||
if ((query_type_ == QueryType::Songs || query_type_ == QueryType::SearchSongs) && offset_requested == 0) {
|
if ((query_type_ == Type::Songs || query_type_ == Type::SearchSongs) && offset_requested == 0) {
|
||||||
no_results_ = true;
|
no_results_ = true;
|
||||||
}
|
}
|
||||||
SongsFinishCheck(album_artist, album, limit_requested, offset_requested, songs_total);
|
SongsFinishCheck(album_artist, album, limit_requested, offset_requested, songs_total);
|
||||||
|
@ -1018,7 +1018,7 @@ void QobuzRequest::SongsReceived(QNetworkReply *reply, const Artist &artist_requ
|
||||||
songs_.insert(song.song_id(), song);
|
songs_.insert(song.song_id(), song);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (query_type_ == QueryType::Songs || query_type_ == QueryType::SearchSongs) {
|
if (query_type_ == Type::Songs || query_type_ == Type::SearchSongs) {
|
||||||
songs_received_ += songs_received;
|
songs_received_ += songs_received;
|
||||||
emit UpdateProgress(query_id_, GetProgress(songs_received_, songs_total_));
|
emit UpdateProgress(query_id_, GetProgress(songs_received_, songs_total_));
|
||||||
}
|
}
|
||||||
|
@ -1035,16 +1035,16 @@ void QobuzRequest::SongsFinishCheck(const Artist &artist, const Album &album, co
|
||||||
int offset_next = offset + songs_received;
|
int offset_next = offset + songs_received;
|
||||||
if (offset_next > 0 && offset_next < songs_total) {
|
if (offset_next > 0 && offset_next < songs_total) {
|
||||||
switch (query_type_) {
|
switch (query_type_) {
|
||||||
case QueryType::Songs:
|
case Type::Songs:
|
||||||
AddSongsRequest(offset_next);
|
AddSongsRequest(offset_next);
|
||||||
break;
|
break;
|
||||||
case QueryType::SearchSongs:
|
case Type::SearchSongs:
|
||||||
AddSongsSearchRequest(offset_next);
|
AddSongsSearchRequest(offset_next);
|
||||||
break;
|
break;
|
||||||
case QueryType::Artists:
|
case Type::Artists:
|
||||||
case QueryType::SearchArtists:
|
case Type::SearchArtists:
|
||||||
case QueryType::Albums:
|
case Type::Albums:
|
||||||
case QueryType::SearchAlbums:
|
case Type::SearchAlbums:
|
||||||
AddAlbumSongsRequest(artist, album, offset_next);
|
AddAlbumSongsRequest(artist, album, offset_next);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -53,7 +53,7 @@ class QobuzRequest : public QobuzBaseRequest {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
explicit QobuzRequest(QobuzService *service, QobuzUrlHandler *url_handler, Application *app, SharedPtr<NetworkAccessManager> network, const QueryType query_type, QObject *parent = nullptr);
|
explicit QobuzRequest(QobuzService *service, QobuzUrlHandler *url_handler, Application *app, SharedPtr<NetworkAccessManager> network, const Type query_type, QObject *parent = nullptr);
|
||||||
~QobuzRequest() override;
|
~QobuzRequest() override;
|
||||||
|
|
||||||
void ReloadSettings();
|
void ReloadSettings();
|
||||||
|
@ -121,8 +121,8 @@ class QobuzRequest : public QobuzBaseRequest {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
bool IsQuery() { return (query_type_ == QueryType::Artists || query_type_ == QueryType::Albums || query_type_ == QueryType::Songs); }
|
bool IsQuery() const { return (query_type_ == Type::Artists || query_type_ == Type::Albums || query_type_ == Type::Songs); }
|
||||||
bool IsSearch() { return (query_type_ == QueryType::SearchArtists || query_type_ == QueryType::SearchAlbums || query_type_ == QueryType::SearchSongs); }
|
bool IsSearch() const { return (query_type_ == Type::SearchArtists || query_type_ == Type::SearchAlbums || query_type_ == Type::SearchSongs); }
|
||||||
|
|
||||||
void StartRequests();
|
void StartRequests();
|
||||||
void FlushRequests();
|
void FlushRequests();
|
||||||
|
@ -177,7 +177,7 @@ class QobuzRequest : public QobuzBaseRequest {
|
||||||
SharedPtr<NetworkAccessManager> network_;
|
SharedPtr<NetworkAccessManager> network_;
|
||||||
QTimer *timer_flush_requests_;
|
QTimer *timer_flush_requests_;
|
||||||
|
|
||||||
const QueryType query_type_;
|
const Type query_type_;
|
||||||
int query_id_;
|
int query_id_;
|
||||||
QString search_text_;
|
QString search_text_;
|
||||||
|
|
||||||
|
|
|
@ -519,7 +519,7 @@ void QobuzService::GetArtists() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ResetArtistsRequest();
|
ResetArtistsRequest();
|
||||||
artists_request_.reset(new QobuzRequest(this, url_handler_, app_, network_, QobuzBaseRequest::QueryType::Artists), [](QobuzRequest *request) { request->deleteLater(); });
|
artists_request_.reset(new QobuzRequest(this, url_handler_, app_, network_, QobuzBaseRequest::Type::Artists), [](QobuzRequest *request) { request->deleteLater(); });
|
||||||
QObject::connect(&*artists_request_, &QobuzRequest::Results, this, &QobuzService::ArtistsResultsReceived);
|
QObject::connect(&*artists_request_, &QobuzRequest::Results, this, &QobuzService::ArtistsResultsReceived);
|
||||||
QObject::connect(&*artists_request_, &QobuzRequest::UpdateStatus, this, &QobuzService::ArtistsUpdateStatusReceived);
|
QObject::connect(&*artists_request_, &QobuzRequest::UpdateStatus, this, &QobuzService::ArtistsUpdateStatusReceived);
|
||||||
QObject::connect(&*artists_request_, &QobuzRequest::UpdateProgress, this, &QobuzService::ArtistsUpdateProgressReceived);
|
QObject::connect(&*artists_request_, &QobuzRequest::UpdateProgress, this, &QobuzService::ArtistsUpdateProgressReceived);
|
||||||
|
@ -569,7 +569,7 @@ void QobuzService::GetAlbums() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ResetAlbumsRequest();
|
ResetAlbumsRequest();
|
||||||
albums_request_.reset(new QobuzRequest(this, url_handler_, app_, network_, QobuzBaseRequest::QueryType::Albums), [](QobuzRequest *request) { request->deleteLater(); });
|
albums_request_.reset(new QobuzRequest(this, url_handler_, app_, network_, QobuzBaseRequest::Type::Albums), [](QobuzRequest *request) { request->deleteLater(); });
|
||||||
QObject::connect(&*albums_request_, &QobuzRequest::Results, this, &QobuzService::AlbumsResultsReceived);
|
QObject::connect(&*albums_request_, &QobuzRequest::Results, this, &QobuzService::AlbumsResultsReceived);
|
||||||
QObject::connect(&*albums_request_, &QobuzRequest::UpdateStatus, this, &QobuzService::AlbumsUpdateStatusReceived);
|
QObject::connect(&*albums_request_, &QobuzRequest::UpdateStatus, this, &QobuzService::AlbumsUpdateStatusReceived);
|
||||||
QObject::connect(&*albums_request_, &QobuzRequest::UpdateProgress, this, &QobuzService::AlbumsUpdateProgressReceived);
|
QObject::connect(&*albums_request_, &QobuzRequest::UpdateProgress, this, &QobuzService::AlbumsUpdateProgressReceived);
|
||||||
|
@ -619,7 +619,7 @@ void QobuzService::GetSongs() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ResetSongsRequest();
|
ResetSongsRequest();
|
||||||
songs_request_.reset(new QobuzRequest(this, url_handler_, app_, network_, QobuzBaseRequest::QueryType::Songs), [](QobuzRequest *request) { request->deleteLater(); });
|
songs_request_.reset(new QobuzRequest(this, url_handler_, app_, network_, QobuzBaseRequest::Type::Songs), [](QobuzRequest *request) { request->deleteLater(); });
|
||||||
QObject::connect(&*songs_request_, &QobuzRequest::Results, this, &QobuzService::SongsResultsReceived);
|
QObject::connect(&*songs_request_, &QobuzRequest::Results, this, &QobuzService::SongsResultsReceived);
|
||||||
QObject::connect(&*songs_request_, &QobuzRequest::UpdateStatus, this, &QobuzService::SongsUpdateStatusReceived);
|
QObject::connect(&*songs_request_, &QobuzRequest::UpdateStatus, this, &QobuzService::SongsUpdateStatusReceived);
|
||||||
QObject::connect(&*songs_request_, &QobuzRequest::UpdateProgress, this, &QobuzService::SongsUpdateProgressReceived);
|
QObject::connect(&*songs_request_, &QobuzRequest::UpdateProgress, this, &QobuzService::SongsUpdateProgressReceived);
|
||||||
|
@ -684,17 +684,17 @@ void QobuzService::CancelSearch() {
|
||||||
|
|
||||||
void QobuzService::SendSearch() {
|
void QobuzService::SendSearch() {
|
||||||
|
|
||||||
QobuzBaseRequest::QueryType query_type = QobuzBaseRequest::QueryType::None;
|
QobuzBaseRequest::Type query_type = QobuzBaseRequest::Type::None;
|
||||||
|
|
||||||
switch (pending_search_type_) {
|
switch (pending_search_type_) {
|
||||||
case StreamingSearchView::SearchType::Artists:
|
case StreamingSearchView::SearchType::Artists:
|
||||||
query_type = QobuzBaseRequest::QueryType::SearchArtists;
|
query_type = QobuzBaseRequest::Type::SearchArtists;
|
||||||
break;
|
break;
|
||||||
case StreamingSearchView::SearchType::Albums:
|
case StreamingSearchView::SearchType::Albums:
|
||||||
query_type = QobuzBaseRequest::QueryType::SearchAlbums;
|
query_type = QobuzBaseRequest::Type::SearchAlbums;
|
||||||
break;
|
break;
|
||||||
case StreamingSearchView::SearchType::Songs:
|
case StreamingSearchView::SearchType::Songs:
|
||||||
query_type = QobuzBaseRequest::QueryType::SearchSongs;
|
query_type = QobuzBaseRequest::Type::SearchSongs;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ class SpotifyBaseRequest : public QObject {
|
||||||
public:
|
public:
|
||||||
explicit SpotifyBaseRequest(SpotifyService *service, NetworkAccessManager *network, QObject *parent = nullptr);
|
explicit SpotifyBaseRequest(SpotifyService *service, NetworkAccessManager *network, QObject *parent = nullptr);
|
||||||
|
|
||||||
enum class QueryType {
|
enum class Type {
|
||||||
None,
|
None,
|
||||||
Artists,
|
Artists,
|
||||||
Albums,
|
Albums,
|
||||||
|
|
|
@ -53,7 +53,7 @@ const int kMaxConcurrentAlbumCoverRequests = 10;
|
||||||
const int kFlushRequestsDelay = 200;
|
const int kFlushRequestsDelay = 200;
|
||||||
}
|
}
|
||||||
|
|
||||||
SpotifyRequest::SpotifyRequest(SpotifyService *service, Application *app, NetworkAccessManager *network, QueryType type, QObject *parent)
|
SpotifyRequest::SpotifyRequest(SpotifyService *service, Application *app, NetworkAccessManager *network, Type type, QObject *parent)
|
||||||
: SpotifyBaseRequest(service, network, parent),
|
: SpotifyBaseRequest(service, network, parent),
|
||||||
service_(service),
|
service_(service),
|
||||||
app_(app),
|
app_(app),
|
||||||
|
@ -129,22 +129,22 @@ void SpotifyRequest::Process() {
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (type_) {
|
switch (type_) {
|
||||||
case QueryType::Artists:
|
case Type::Artists:
|
||||||
GetArtists();
|
GetArtists();
|
||||||
break;
|
break;
|
||||||
case QueryType::Albums:
|
case Type::Albums:
|
||||||
GetAlbums();
|
GetAlbums();
|
||||||
break;
|
break;
|
||||||
case QueryType::Songs:
|
case Type::Songs:
|
||||||
GetSongs();
|
GetSongs();
|
||||||
break;
|
break;
|
||||||
case QueryType::SearchArtists:
|
case Type::SearchArtists:
|
||||||
ArtistsSearch();
|
ArtistsSearch();
|
||||||
break;
|
break;
|
||||||
case QueryType::SearchAlbums:
|
case Type::SearchAlbums:
|
||||||
AlbumsSearch();
|
AlbumsSearch();
|
||||||
break;
|
break;
|
||||||
case QueryType::SearchSongs:
|
case Type::SearchSongs:
|
||||||
SongsSearch();
|
SongsSearch();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -233,7 +233,7 @@ void SpotifyRequest::FlushArtistsRequests() {
|
||||||
Request request = artists_requests_queue_.dequeue();
|
Request request = artists_requests_queue_.dequeue();
|
||||||
|
|
||||||
ParamList parameters = ParamList() << Param(QStringLiteral("type"), QStringLiteral("artist"));
|
ParamList parameters = ParamList() << Param(QStringLiteral("type"), QStringLiteral("artist"));
|
||||||
if (type_ == QueryType::SearchArtists) {
|
if (type_ == Type::SearchArtists) {
|
||||||
parameters << Param(QStringLiteral("q"), search_text_);
|
parameters << Param(QStringLiteral("q"), search_text_);
|
||||||
}
|
}
|
||||||
if (request.limit > 0) {
|
if (request.limit > 0) {
|
||||||
|
@ -243,10 +243,10 @@ void SpotifyRequest::FlushArtistsRequests() {
|
||||||
parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
|
parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
|
||||||
}
|
}
|
||||||
QNetworkReply *reply = nullptr;
|
QNetworkReply *reply = nullptr;
|
||||||
if (type_ == QueryType::Artists) {
|
if (type_ == Type::Artists) {
|
||||||
reply = CreateRequest(QStringLiteral("me/following"), parameters);
|
reply = CreateRequest(QStringLiteral("me/following"), parameters);
|
||||||
}
|
}
|
||||||
if (type_ == QueryType::SearchArtists) {
|
if (type_ == Type::SearchArtists) {
|
||||||
reply = CreateRequest(QStringLiteral("search"), parameters);
|
reply = CreateRequest(QStringLiteral("search"), parameters);
|
||||||
}
|
}
|
||||||
if (!reply) continue;
|
if (!reply) continue;
|
||||||
|
@ -287,7 +287,7 @@ void SpotifyRequest::FlushAlbumsRequests() {
|
||||||
Request request = albums_requests_queue_.dequeue();
|
Request request = albums_requests_queue_.dequeue();
|
||||||
|
|
||||||
ParamList parameters;
|
ParamList parameters;
|
||||||
if (type_ == QueryType::SearchAlbums) {
|
if (type_ == Type::SearchAlbums) {
|
||||||
parameters << Param(QStringLiteral("type"), QStringLiteral("album"));
|
parameters << Param(QStringLiteral("type"), QStringLiteral("album"));
|
||||||
parameters << Param(QStringLiteral("q"), search_text_);
|
parameters << Param(QStringLiteral("q"), search_text_);
|
||||||
}
|
}
|
||||||
|
@ -297,10 +297,10 @@ void SpotifyRequest::FlushAlbumsRequests() {
|
||||||
if (request.limit > 0) parameters << Param(QStringLiteral("limit"), QString::number(request.limit));
|
if (request.limit > 0) parameters << Param(QStringLiteral("limit"), QString::number(request.limit));
|
||||||
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
|
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
|
||||||
QNetworkReply *reply = nullptr;
|
QNetworkReply *reply = nullptr;
|
||||||
if (type_ == QueryType::Albums) {
|
if (type_ == Type::Albums) {
|
||||||
reply = CreateRequest(QStringLiteral("me/albums"), parameters);
|
reply = CreateRequest(QStringLiteral("me/albums"), parameters);
|
||||||
}
|
}
|
||||||
if (type_ == QueryType::SearchAlbums) {
|
if (type_ == Type::SearchAlbums) {
|
||||||
reply = CreateRequest(QStringLiteral("search"), parameters);
|
reply = CreateRequest(QStringLiteral("search"), parameters);
|
||||||
}
|
}
|
||||||
if (!reply) continue;
|
if (!reply) continue;
|
||||||
|
@ -341,7 +341,7 @@ void SpotifyRequest::FlushSongsRequests() {
|
||||||
Request request = songs_requests_queue_.dequeue();
|
Request request = songs_requests_queue_.dequeue();
|
||||||
|
|
||||||
ParamList parameters;
|
ParamList parameters;
|
||||||
if (type_ == QueryType::SearchSongs) {
|
if (type_ == Type::SearchSongs) {
|
||||||
parameters << Param(QStringLiteral("type"), QStringLiteral("track"));
|
parameters << Param(QStringLiteral("type"), QStringLiteral("track"));
|
||||||
parameters << Param(QStringLiteral("q"), search_text_);
|
parameters << Param(QStringLiteral("q"), search_text_);
|
||||||
}
|
}
|
||||||
|
@ -352,10 +352,10 @@ void SpotifyRequest::FlushSongsRequests() {
|
||||||
parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
|
parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
|
||||||
}
|
}
|
||||||
QNetworkReply *reply = nullptr;
|
QNetworkReply *reply = nullptr;
|
||||||
if (type_ == QueryType::Songs) {
|
if (type_ == Type::Songs) {
|
||||||
reply = CreateRequest(QStringLiteral("me/tracks"), parameters);
|
reply = CreateRequest(QStringLiteral("me/tracks"), parameters);
|
||||||
}
|
}
|
||||||
if (type_ == QueryType::SearchSongs) {
|
if (type_ == Type::SearchSongs) {
|
||||||
reply = CreateRequest(QStringLiteral("search"), parameters);
|
reply = CreateRequest(QStringLiteral("search"), parameters);
|
||||||
}
|
}
|
||||||
if (!reply) continue;
|
if (!reply) continue;
|
||||||
|
@ -539,8 +539,8 @@ void SpotifyRequest::ArtistsFinishCheck(const int limit, const int offset, const
|
||||||
if ((limit == 0 || limit > artists_received) && artists_received_ < artists_total_) {
|
if ((limit == 0 || limit > artists_received) && artists_received_ < artists_total_) {
|
||||||
int offset_next = offset + artists_received;
|
int offset_next = offset + artists_received;
|
||||||
if (offset_next > 0 && offset_next < artists_total_) {
|
if (offset_next > 0 && offset_next < artists_total_) {
|
||||||
if (type_ == QueryType::Artists) AddArtistsRequest(offset_next);
|
if (type_ == Type::Artists) AddArtistsRequest(offset_next);
|
||||||
else if (type_ == QueryType::SearchArtists) AddArtistsSearchRequest(offset_next);
|
else if (type_ == Type::SearchArtists) AddArtistsSearchRequest(offset_next);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -655,7 +655,7 @@ void SpotifyRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_a
|
||||||
int offset = json_obj[QLatin1String("offset")].toInt();
|
int offset = json_obj[QLatin1String("offset")].toInt();
|
||||||
int albums_total = json_obj[QLatin1String("total")].toInt();
|
int albums_total = json_obj[QLatin1String("total")].toInt();
|
||||||
|
|
||||||
if (type_ == QueryType::Albums || type_ == QueryType::SearchAlbums) {
|
if (type_ == Type::Albums || type_ == Type::SearchAlbums) {
|
||||||
albums_total_ = albums_total;
|
albums_total_ = albums_total;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -672,7 +672,7 @@ void SpotifyRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_a
|
||||||
}
|
}
|
||||||
QJsonArray array_items = value_items.toArray();
|
QJsonArray array_items = value_items.toArray();
|
||||||
if (array_items.isEmpty()) {
|
if (array_items.isEmpty()) {
|
||||||
if ((type_ == QueryType::Albums || type_ == QueryType::SearchAlbums || (type_ == QueryType::SearchSongs && fetchalbums_)) && offset_requested == 0) {
|
if ((type_ == Type::Albums || type_ == Type::SearchAlbums || (type_ == Type::SearchSongs && fetchalbums_)) && offset_requested == 0) {
|
||||||
no_results_ = true;
|
no_results_ = true;
|
||||||
}
|
}
|
||||||
AlbumsFinishCheck(artist_artist);
|
AlbumsFinishCheck(artist_artist);
|
||||||
|
@ -801,7 +801,7 @@ void SpotifyRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_a
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type_ == QueryType::Albums || type_ == QueryType::SearchAlbums) {
|
if (type_ == Type::Albums || type_ == Type::SearchAlbums) {
|
||||||
albums_received_ += albums_received;
|
albums_received_ += albums_received;
|
||||||
emit UpdateProgress(query_id_, GetProgress(albums_received_, albums_total_));
|
emit UpdateProgress(query_id_, GetProgress(albums_received_, albums_total_));
|
||||||
}
|
}
|
||||||
|
@ -818,14 +818,14 @@ void SpotifyRequest::AlbumsFinishCheck(const Artist &artist, const int limit, co
|
||||||
int offset_next = offset + albums_received;
|
int offset_next = offset + albums_received;
|
||||||
if (offset_next > 0 && offset_next < albums_total) {
|
if (offset_next > 0 && offset_next < albums_total) {
|
||||||
switch (type_) {
|
switch (type_) {
|
||||||
case QueryType::Albums:
|
case Type::Albums:
|
||||||
AddAlbumsRequest(offset_next);
|
AddAlbumsRequest(offset_next);
|
||||||
break;
|
break;
|
||||||
case QueryType::SearchAlbums:
|
case Type::SearchAlbums:
|
||||||
AddAlbumsSearchRequest(offset_next);
|
AddAlbumsSearchRequest(offset_next);
|
||||||
break;
|
break;
|
||||||
case QueryType::Artists:
|
case Type::Artists:
|
||||||
case QueryType::SearchArtists:
|
case Type::SearchArtists:
|
||||||
AddArtistAlbumsRequest(artist, offset_next);
|
AddArtistAlbumsRequest(artist, offset_next);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -868,7 +868,7 @@ void SpotifyRequest::SongsReplyReceived(QNetworkReply *reply, const int limit_re
|
||||||
|
|
||||||
--songs_requests_active_;
|
--songs_requests_active_;
|
||||||
++songs_requests_received_;
|
++songs_requests_received_;
|
||||||
if (type_ == QueryType::SearchSongs && fetchalbums_) {
|
if (type_ == Type::SearchSongs && fetchalbums_) {
|
||||||
AlbumsReceived(reply, Artist(), limit_requested, offset_requested);
|
AlbumsReceived(reply, Artist(), limit_requested, offset_requested);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -956,7 +956,7 @@ void SpotifyRequest::SongsReceived(QNetworkReply *reply, const Artist &artist, c
|
||||||
int offset = json_obj[QLatin1String("offset")].toInt();
|
int offset = json_obj[QLatin1String("offset")].toInt();
|
||||||
int songs_total = json_obj[QLatin1String("total")].toInt();
|
int songs_total = json_obj[QLatin1String("total")].toInt();
|
||||||
|
|
||||||
if (type_ == QueryType::Songs || type_ == QueryType::SearchSongs) {
|
if (type_ == Type::Songs || type_ == Type::SearchSongs) {
|
||||||
songs_total_ = songs_total;
|
songs_total_ = songs_total;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -974,7 +974,7 @@ void SpotifyRequest::SongsReceived(QNetworkReply *reply, const Artist &artist, c
|
||||||
|
|
||||||
QJsonArray array_items = json_value.toArray();
|
QJsonArray array_items = json_value.toArray();
|
||||||
if (array_items.isEmpty()) {
|
if (array_items.isEmpty()) {
|
||||||
if ((type_ == QueryType::Songs || type_ == QueryType::SearchSongs) && offset_requested == 0) {
|
if ((type_ == Type::Songs || type_ == Type::SearchSongs) && offset_requested == 0) {
|
||||||
no_results_ = true;
|
no_results_ = true;
|
||||||
}
|
}
|
||||||
SongsFinishCheck(artist, album, limit_requested, offset_requested, songs_total, 0);
|
SongsFinishCheck(artist, album, limit_requested, offset_requested, songs_total, 0);
|
||||||
|
@ -1016,7 +1016,7 @@ void SpotifyRequest::SongsReceived(QNetworkReply *reply, const Artist &artist, c
|
||||||
songs_.insert(song.song_id(), song);
|
songs_.insert(song.song_id(), song);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type_ == QueryType::Songs || type_ == QueryType::SearchSongs) {
|
if (type_ == Type::Songs || type_ == Type::SearchSongs) {
|
||||||
songs_received_ += songs_received;
|
songs_received_ += songs_received;
|
||||||
emit UpdateProgress(query_id_, GetProgress(songs_received_, songs_total_));
|
emit UpdateProgress(query_id_, GetProgress(songs_received_, songs_total_));
|
||||||
}
|
}
|
||||||
|
@ -1033,20 +1033,20 @@ void SpotifyRequest::SongsFinishCheck(const Artist &artist, const Album &album,
|
||||||
int offset_next = offset + songs_received;
|
int offset_next = offset + songs_received;
|
||||||
if (offset_next > 0 && offset_next < songs_total) {
|
if (offset_next > 0 && offset_next < songs_total) {
|
||||||
switch (type_) {
|
switch (type_) {
|
||||||
case QueryType::Songs:
|
case Type::Songs:
|
||||||
AddSongsRequest(offset_next);
|
AddSongsRequest(offset_next);
|
||||||
break;
|
break;
|
||||||
case QueryType::SearchSongs:
|
case Type::SearchSongs:
|
||||||
// If artist_id and album_id isn't zero it means that it's a songs search where we fetch all albums too. So fallthrough.
|
// If artist_id and album_id isn't zero it means that it's a songs search where we fetch all albums too. So fallthrough.
|
||||||
if (artist.artist_id.isEmpty() && album.album_id.isEmpty()) {
|
if (artist.artist_id.isEmpty() && album.album_id.isEmpty()) {
|
||||||
AddSongsSearchRequest(offset_next);
|
AddSongsSearchRequest(offset_next);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// fallthrough
|
// fallthrough
|
||||||
case QueryType::Artists:
|
case Type::Artists:
|
||||||
case QueryType::SearchArtists:
|
case Type::SearchArtists:
|
||||||
case QueryType::Albums:
|
case Type::Albums:
|
||||||
case QueryType::SearchAlbums:
|
case Type::SearchAlbums:
|
||||||
AddAlbumSongsRequest(artist, album, offset_next);
|
AddAlbumSongsRequest(artist, album, offset_next);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -49,7 +49,7 @@ class SpotifyRequest : public SpotifyBaseRequest {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit SpotifyRequest(SpotifyService *service, Application *app, NetworkAccessManager *network, QueryType type, QObject *parent);
|
explicit SpotifyRequest(SpotifyService *service, Application *app, NetworkAccessManager *network, Type type, QObject *parent);
|
||||||
~SpotifyRequest() override;
|
~SpotifyRequest() override;
|
||||||
|
|
||||||
void ReloadSettings();
|
void ReloadSettings();
|
||||||
|
@ -117,8 +117,8 @@ class SpotifyRequest : public SpotifyBaseRequest {
|
||||||
private:
|
private:
|
||||||
void StartRequests();
|
void StartRequests();
|
||||||
|
|
||||||
bool IsQuery() const { return (type_ == QueryType::Artists || type_ == QueryType::Albums || type_ == QueryType::Songs); }
|
bool IsQuery() const { return (type_ == Type::Artists || type_ == Type::Albums || type_ == Type::Songs); }
|
||||||
bool IsSearch() const { return (type_ == QueryType::SearchArtists || type_ == QueryType::SearchAlbums || type_ == QueryType::SearchSongs); }
|
bool IsSearch() const { return (type_ == Type::SearchArtists || type_ == Type::SearchAlbums || type_ == Type::SearchSongs); }
|
||||||
|
|
||||||
void GetArtists();
|
void GetArtists();
|
||||||
void GetAlbums();
|
void GetAlbums();
|
||||||
|
@ -167,7 +167,7 @@ class SpotifyRequest : public SpotifyBaseRequest {
|
||||||
NetworkAccessManager *network_;
|
NetworkAccessManager *network_;
|
||||||
QTimer *timer_flush_requests_;
|
QTimer *timer_flush_requests_;
|
||||||
|
|
||||||
QueryType type_;
|
Type type_;
|
||||||
bool fetchalbums_;
|
bool fetchalbums_;
|
||||||
QString coversize_;
|
QString coversize_;
|
||||||
|
|
||||||
|
|
|
@ -519,7 +519,7 @@ void SpotifyService::GetArtists() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ResetArtistsRequest();
|
ResetArtistsRequest();
|
||||||
artists_request_.reset(new SpotifyRequest(this, app_, network_, SpotifyBaseRequest::QueryType::Artists, this), [](SpotifyRequest *request) { request->deleteLater(); });
|
artists_request_.reset(new SpotifyRequest(this, app_, network_, SpotifyBaseRequest::Type::Artists, this), [](SpotifyRequest *request) { request->deleteLater(); });
|
||||||
QObject::connect(&*artists_request_, &SpotifyRequest::Results, this, &SpotifyService::ArtistsResultsReceived);
|
QObject::connect(&*artists_request_, &SpotifyRequest::Results, this, &SpotifyService::ArtistsResultsReceived);
|
||||||
QObject::connect(&*artists_request_, &SpotifyRequest::UpdateStatus, this, &SpotifyService::ArtistsUpdateStatusReceived);
|
QObject::connect(&*artists_request_, &SpotifyRequest::UpdateStatus, this, &SpotifyService::ArtistsUpdateStatusReceived);
|
||||||
QObject::connect(&*artists_request_, &SpotifyRequest::ProgressSetMaximum, this, &SpotifyService::ArtistsProgressSetMaximumReceived);
|
QObject::connect(&*artists_request_, &SpotifyRequest::ProgressSetMaximum, this, &SpotifyService::ArtistsProgressSetMaximumReceived);
|
||||||
|
@ -571,7 +571,7 @@ void SpotifyService::GetAlbums() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ResetAlbumsRequest();
|
ResetAlbumsRequest();
|
||||||
albums_request_.reset(new SpotifyRequest(this, app_, network_, SpotifyBaseRequest::QueryType::Albums, this), [](SpotifyRequest *request) { request->deleteLater(); });
|
albums_request_.reset(new SpotifyRequest(this, app_, network_, SpotifyBaseRequest::Type::Albums, this), [](SpotifyRequest *request) { request->deleteLater(); });
|
||||||
QObject::connect(&*albums_request_, &SpotifyRequest::Results, this, &SpotifyService::AlbumsResultsReceived);
|
QObject::connect(&*albums_request_, &SpotifyRequest::Results, this, &SpotifyService::AlbumsResultsReceived);
|
||||||
QObject::connect(&*albums_request_, &SpotifyRequest::UpdateStatus, this, &SpotifyService::AlbumsUpdateStatusReceived);
|
QObject::connect(&*albums_request_, &SpotifyRequest::UpdateStatus, this, &SpotifyService::AlbumsUpdateStatusReceived);
|
||||||
QObject::connect(&*albums_request_, &SpotifyRequest::ProgressSetMaximum, this, &SpotifyService::AlbumsProgressSetMaximumReceived);
|
QObject::connect(&*albums_request_, &SpotifyRequest::ProgressSetMaximum, this, &SpotifyService::AlbumsProgressSetMaximumReceived);
|
||||||
|
@ -623,7 +623,7 @@ void SpotifyService::GetSongs() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ResetSongsRequest();
|
ResetSongsRequest();
|
||||||
songs_request_.reset(new SpotifyRequest(this, app_, network_, SpotifyBaseRequest::QueryType::Songs, this), [](SpotifyRequest *request) { request->deleteLater(); });
|
songs_request_.reset(new SpotifyRequest(this, app_, network_, SpotifyBaseRequest::Type::Songs, this), [](SpotifyRequest *request) { request->deleteLater(); });
|
||||||
QObject::connect(&*songs_request_, &SpotifyRequest::Results, this, &SpotifyService::SongsResultsReceived);
|
QObject::connect(&*songs_request_, &SpotifyRequest::Results, this, &SpotifyService::SongsResultsReceived);
|
||||||
QObject::connect(&*songs_request_, &SpotifyRequest::UpdateStatus, this, &SpotifyService::SongsUpdateStatusReceived);
|
QObject::connect(&*songs_request_, &SpotifyRequest::UpdateStatus, this, &SpotifyService::SongsUpdateStatusReceived);
|
||||||
QObject::connect(&*songs_request_, &SpotifyRequest::ProgressSetMaximum, this, &SpotifyService::SongsProgressSetMaximumReceived);
|
QObject::connect(&*songs_request_, &SpotifyRequest::ProgressSetMaximum, this, &SpotifyService::SongsProgressSetMaximumReceived);
|
||||||
|
@ -694,17 +694,17 @@ void SpotifyService::CancelSearch() {
|
||||||
|
|
||||||
void SpotifyService::SendSearch() {
|
void SpotifyService::SendSearch() {
|
||||||
|
|
||||||
SpotifyBaseRequest::QueryType type = SpotifyBaseRequest::QueryType::None;
|
SpotifyBaseRequest::Type type = SpotifyBaseRequest::Type::None;
|
||||||
|
|
||||||
switch (pending_search_type_) {
|
switch (pending_search_type_) {
|
||||||
case StreamingSearchView::SearchType::Artists:
|
case StreamingSearchView::SearchType::Artists:
|
||||||
type = SpotifyBaseRequest::QueryType::SearchArtists;
|
type = SpotifyBaseRequest::Type::SearchArtists;
|
||||||
break;
|
break;
|
||||||
case StreamingSearchView::SearchType::Albums:
|
case StreamingSearchView::SearchType::Albums:
|
||||||
type = SpotifyBaseRequest::QueryType::SearchAlbums;
|
type = SpotifyBaseRequest::Type::SearchAlbums;
|
||||||
break;
|
break;
|
||||||
case StreamingSearchView::SearchType::Songs:
|
case StreamingSearchView::SearchType::Songs:
|
||||||
type = SpotifyBaseRequest::QueryType::SearchSongs;
|
type = SpotifyBaseRequest::Type::SearchSongs;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
//Error("Invalid search type.");
|
//Error("Invalid search type.");
|
||||||
|
|
|
@ -48,7 +48,7 @@ class TidalBaseRequest : public QObject {
|
||||||
public:
|
public:
|
||||||
explicit TidalBaseRequest(TidalService *service, SharedPtr<NetworkAccessManager> network, QObject *parent = nullptr);
|
explicit TidalBaseRequest(TidalService *service, SharedPtr<NetworkAccessManager> network, QObject *parent = nullptr);
|
||||||
|
|
||||||
enum class QueryType {
|
enum class Type {
|
||||||
None,
|
None,
|
||||||
Artists,
|
Artists,
|
||||||
Albums,
|
Albums,
|
||||||
|
|
|
@ -58,7 +58,7 @@ constexpr int kMaxConcurrentAlbumCoverRequests = 1;
|
||||||
constexpr int kFlushRequestsDelay = 200;
|
constexpr int kFlushRequestsDelay = 200;
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
TidalRequest::TidalRequest(TidalService *service, TidalUrlHandler *url_handler, Application *app, SharedPtr<NetworkAccessManager> network, QueryType query_type, QObject *parent)
|
TidalRequest::TidalRequest(TidalService *service, TidalUrlHandler *url_handler, Application *app, SharedPtr<NetworkAccessManager> network, Type query_type, QObject *parent)
|
||||||
: TidalBaseRequest(service, network, parent),
|
: TidalBaseRequest(service, network, parent),
|
||||||
service_(service),
|
service_(service),
|
||||||
url_handler_(url_handler),
|
url_handler_(url_handler),
|
||||||
|
@ -148,22 +148,22 @@ void TidalRequest::Process() {
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (query_type_) {
|
switch (query_type_) {
|
||||||
case QueryType::Artists:
|
case Type::Artists:
|
||||||
GetArtists();
|
GetArtists();
|
||||||
break;
|
break;
|
||||||
case QueryType::Albums:
|
case Type::Albums:
|
||||||
GetAlbums();
|
GetAlbums();
|
||||||
break;
|
break;
|
||||||
case QueryType::Songs:
|
case Type::Songs:
|
||||||
GetSongs();
|
GetSongs();
|
||||||
break;
|
break;
|
||||||
case QueryType::SearchArtists:
|
case Type::SearchArtists:
|
||||||
ArtistsSearch();
|
ArtistsSearch();
|
||||||
break;
|
break;
|
||||||
case QueryType::SearchAlbums:
|
case Type::SearchAlbums:
|
||||||
AlbumsSearch();
|
AlbumsSearch();
|
||||||
break;
|
break;
|
||||||
case QueryType::SearchSongs:
|
case Type::SearchSongs:
|
||||||
SongsSearch();
|
SongsSearch();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -250,14 +250,14 @@ void TidalRequest::FlushArtistsRequests() {
|
||||||
Request request = artists_requests_queue_.dequeue();
|
Request request = artists_requests_queue_.dequeue();
|
||||||
|
|
||||||
ParamList parameters;
|
ParamList parameters;
|
||||||
if (query_type_ == QueryType::SearchArtists) parameters << Param(QStringLiteral("query"), search_text_);
|
if (query_type_ == Type::SearchArtists) parameters << Param(QStringLiteral("query"), search_text_);
|
||||||
if (request.limit > 0) parameters << Param(QStringLiteral("limit"), QString::number(request.limit));
|
if (request.limit > 0) parameters << Param(QStringLiteral("limit"), QString::number(request.limit));
|
||||||
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
|
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
|
||||||
QNetworkReply *reply = nullptr;
|
QNetworkReply *reply = nullptr;
|
||||||
if (query_type_ == QueryType::Artists) {
|
if (query_type_ == Type::Artists) {
|
||||||
reply = CreateRequest(QStringLiteral("users/%1/favorites/artists").arg(service_->user_id()), parameters);
|
reply = CreateRequest(QStringLiteral("users/%1/favorites/artists").arg(service_->user_id()), parameters);
|
||||||
}
|
}
|
||||||
if (query_type_ == QueryType::SearchArtists) {
|
if (query_type_ == Type::SearchArtists) {
|
||||||
reply = CreateRequest(QStringLiteral("search/artists"), parameters);
|
reply = CreateRequest(QStringLiteral("search/artists"), parameters);
|
||||||
}
|
}
|
||||||
if (!reply) continue;
|
if (!reply) continue;
|
||||||
|
@ -298,14 +298,14 @@ void TidalRequest::FlushAlbumsRequests() {
|
||||||
Request request = albums_requests_queue_.dequeue();
|
Request request = albums_requests_queue_.dequeue();
|
||||||
|
|
||||||
ParamList parameters;
|
ParamList parameters;
|
||||||
if (query_type_ == QueryType::SearchAlbums) parameters << Param(QStringLiteral("query"), search_text_);
|
if (query_type_ == Type::SearchAlbums) parameters << Param(QStringLiteral("query"), search_text_);
|
||||||
if (request.limit > 0) parameters << Param(QStringLiteral("limit"), QString::number(request.limit));
|
if (request.limit > 0) parameters << Param(QStringLiteral("limit"), QString::number(request.limit));
|
||||||
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
|
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
|
||||||
QNetworkReply *reply = nullptr;
|
QNetworkReply *reply = nullptr;
|
||||||
if (query_type_ == QueryType::Albums) {
|
if (query_type_ == Type::Albums) {
|
||||||
reply = CreateRequest(QStringLiteral("users/%1/favorites/albums").arg(service_->user_id()), parameters);
|
reply = CreateRequest(QStringLiteral("users/%1/favorites/albums").arg(service_->user_id()), parameters);
|
||||||
}
|
}
|
||||||
if (query_type_ == QueryType::SearchAlbums) {
|
if (query_type_ == Type::SearchAlbums) {
|
||||||
reply = CreateRequest(QStringLiteral("search/albums"), parameters);
|
reply = CreateRequest(QStringLiteral("search/albums"), parameters);
|
||||||
}
|
}
|
||||||
if (!reply) continue;
|
if (!reply) continue;
|
||||||
|
@ -346,14 +346,14 @@ void TidalRequest::FlushSongsRequests() {
|
||||||
Request request = songs_requests_queue_.dequeue();
|
Request request = songs_requests_queue_.dequeue();
|
||||||
|
|
||||||
ParamList parameters;
|
ParamList parameters;
|
||||||
if (query_type_ == QueryType::SearchSongs) parameters << Param(QStringLiteral("query"), search_text_);
|
if (query_type_ == Type::SearchSongs) parameters << Param(QStringLiteral("query"), search_text_);
|
||||||
if (request.limit > 0) parameters << Param(QStringLiteral("limit"), QString::number(request.limit));
|
if (request.limit > 0) parameters << Param(QStringLiteral("limit"), QString::number(request.limit));
|
||||||
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
|
if (request.offset > 0) parameters << Param(QStringLiteral("offset"), QString::number(request.offset));
|
||||||
QNetworkReply *reply = nullptr;
|
QNetworkReply *reply = nullptr;
|
||||||
if (query_type_ == QueryType::Songs) {
|
if (query_type_ == Type::Songs) {
|
||||||
reply = CreateRequest(QStringLiteral("users/%1/favorites/tracks").arg(service_->user_id()), parameters);
|
reply = CreateRequest(QStringLiteral("users/%1/favorites/tracks").arg(service_->user_id()), parameters);
|
||||||
}
|
}
|
||||||
if (query_type_ == QueryType::SearchSongs) {
|
if (query_type_ == Type::SearchSongs) {
|
||||||
reply = CreateRequest(QStringLiteral("search/tracks"), parameters);
|
reply = CreateRequest(QStringLiteral("search/tracks"), parameters);
|
||||||
}
|
}
|
||||||
if (!reply) continue;
|
if (!reply) continue;
|
||||||
|
@ -532,8 +532,8 @@ void TidalRequest::ArtistsFinishCheck(const int limit, const int offset, const i
|
||||||
if ((limit == 0 || limit > artists_received) && artists_received_ < artists_total_) {
|
if ((limit == 0 || limit > artists_received) && artists_received_ < artists_total_) {
|
||||||
int offset_next = offset + artists_received;
|
int offset_next = offset + artists_received;
|
||||||
if (offset_next > 0 && offset_next < artists_total_) {
|
if (offset_next > 0 && offset_next < artists_total_) {
|
||||||
if (query_type_ == QueryType::Artists) AddArtistsRequest(offset_next);
|
if (query_type_ == Type::Artists) AddArtistsRequest(offset_next);
|
||||||
else if (query_type_ == QueryType::SearchArtists) AddArtistsSearchRequest(offset_next);
|
else if (query_type_ == Type::SearchArtists) AddArtistsSearchRequest(offset_next);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -766,7 +766,7 @@ void TidalRequest::AlbumsReceived(QNetworkReply *reply, const Artist &artist_req
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (query_type_ == QueryType::Albums || query_type_ == QueryType::SearchAlbums) {
|
if (query_type_ == Type::Albums || query_type_ == Type::SearchAlbums) {
|
||||||
albums_received_ += albums_received;
|
albums_received_ += albums_received;
|
||||||
emit UpdateProgress(query_id_, GetProgress(albums_received_, albums_total_));
|
emit UpdateProgress(query_id_, GetProgress(albums_received_, albums_total_));
|
||||||
}
|
}
|
||||||
|
@ -783,14 +783,14 @@ void TidalRequest::AlbumsFinishCheck(const Artist &artist, const int limit, cons
|
||||||
int offset_next = offset + albums_received;
|
int offset_next = offset + albums_received;
|
||||||
if (offset_next > 0 && offset_next < albums_total) {
|
if (offset_next > 0 && offset_next < albums_total) {
|
||||||
switch (query_type_) {
|
switch (query_type_) {
|
||||||
case QueryType::Albums:
|
case Type::Albums:
|
||||||
AddAlbumsRequest(offset_next);
|
AddAlbumsRequest(offset_next);
|
||||||
break;
|
break;
|
||||||
case QueryType::SearchAlbums:
|
case Type::SearchAlbums:
|
||||||
AddAlbumsSearchRequest(offset_next);
|
AddAlbumsSearchRequest(offset_next);
|
||||||
break;
|
break;
|
||||||
case QueryType::Artists:
|
case Type::Artists:
|
||||||
case QueryType::SearchArtists:
|
case Type::SearchArtists:
|
||||||
AddArtistAlbumsRequest(artist, offset_next);
|
AddArtistAlbumsRequest(artist, offset_next);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -832,7 +832,7 @@ void TidalRequest::SongsReplyReceived(QNetworkReply *reply, const int limit_requ
|
||||||
|
|
||||||
--songs_requests_active_;
|
--songs_requests_active_;
|
||||||
++songs_requests_received_;
|
++songs_requests_received_;
|
||||||
if (query_type_ == QueryType::SearchSongs && fetchalbums_) {
|
if (query_type_ == Type::SearchSongs && fetchalbums_) {
|
||||||
AlbumsReceived(reply, Artist(), limit_requested, offset_requested, offset_requested == 0);
|
AlbumsReceived(reply, Artist(), limit_requested, offset_requested, offset_requested == 0);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -972,7 +972,7 @@ void TidalRequest::SongsReceived(QNetworkReply *reply, const Artist &artist, con
|
||||||
songs_.insert(song.song_id(), song);
|
songs_.insert(song.song_id(), song);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (query_type_ == QueryType::Songs || query_type_ == QueryType::SearchSongs) {
|
if (query_type_ == Type::Songs || query_type_ == Type::SearchSongs) {
|
||||||
songs_received_ += songs_received;
|
songs_received_ += songs_received;
|
||||||
emit UpdateProgress(query_id_, GetProgress(songs_received_, songs_total_));
|
emit UpdateProgress(query_id_, GetProgress(songs_received_, songs_total_));
|
||||||
}
|
}
|
||||||
|
@ -989,20 +989,20 @@ void TidalRequest::SongsFinishCheck(const Artist &artist, const Album &album, co
|
||||||
int offset_next = offset + songs_received;
|
int offset_next = offset + songs_received;
|
||||||
if (offset_next > 0 && offset_next < songs_total) {
|
if (offset_next > 0 && offset_next < songs_total) {
|
||||||
switch (query_type_) {
|
switch (query_type_) {
|
||||||
case QueryType::Songs:
|
case Type::Songs:
|
||||||
AddSongsRequest(offset_next);
|
AddSongsRequest(offset_next);
|
||||||
break;
|
break;
|
||||||
case QueryType::SearchSongs:
|
case Type::SearchSongs:
|
||||||
// If artist_id and album_id isn't zero it means that it's a songs search where we fetch all albums too. So fallthrough.
|
// If artist_id and album_id isn't zero it means that it's a songs search where we fetch all albums too. So fallthrough.
|
||||||
if (artist.artist_id.isEmpty() && album.album_id.isEmpty()) {
|
if (artist.artist_id.isEmpty() && album.album_id.isEmpty()) {
|
||||||
AddSongsSearchRequest(offset_next);
|
AddSongsSearchRequest(offset_next);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
[[fallthrough]];
|
[[fallthrough]];
|
||||||
case QueryType::Artists:
|
case Type::Artists:
|
||||||
case QueryType::SearchArtists:
|
case Type::SearchArtists:
|
||||||
case QueryType::Albums:
|
case Type::Albums:
|
||||||
case QueryType::SearchAlbums:
|
case Type::SearchAlbums:
|
||||||
AddAlbumSongsRequest(artist, album, offset_next);
|
AddAlbumSongsRequest(artist, album, offset_next);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -53,7 +53,7 @@ class TidalRequest : public TidalBaseRequest {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit TidalRequest(TidalService *service, TidalUrlHandler *url_handler, Application *app, SharedPtr<NetworkAccessManager> network, QueryType query_type, QObject *parent);
|
explicit TidalRequest(TidalService *service, TidalUrlHandler *url_handler, Application *app, SharedPtr<NetworkAccessManager> network, Type query_type, QObject *parent);
|
||||||
~TidalRequest() override;
|
~TidalRequest() override;
|
||||||
|
|
||||||
void ReloadSettings();
|
void ReloadSettings();
|
||||||
|
@ -124,8 +124,8 @@ class TidalRequest : public TidalBaseRequest {
|
||||||
void LoginComplete(const bool success, const QString &error = QString());
|
void LoginComplete(const bool success, const QString &error = QString());
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool IsQuery() { return (query_type_ == QueryType::Artists || query_type_ == QueryType::Albums || query_type_ == QueryType::Songs); }
|
bool IsQuery() const { return (query_type_ == Type::Artists || query_type_ == Type::Albums || query_type_ == Type::Songs); }
|
||||||
bool IsSearch() { return (query_type_ == QueryType::SearchArtists || query_type_ == QueryType::SearchAlbums || query_type_ == QueryType::SearchSongs); }
|
bool IsSearch() const { return (query_type_ == Type::SearchArtists || query_type_ == Type::SearchAlbums || query_type_ == Type::SearchSongs); }
|
||||||
|
|
||||||
void StartRequests();
|
void StartRequests();
|
||||||
void FlushRequests();
|
void FlushRequests();
|
||||||
|
@ -178,7 +178,7 @@ class TidalRequest : public TidalBaseRequest {
|
||||||
SharedPtr<NetworkAccessManager> network_;
|
SharedPtr<NetworkAccessManager> network_;
|
||||||
QTimer *timer_flush_requests_;
|
QTimer *timer_flush_requests_;
|
||||||
|
|
||||||
const QueryType query_type_;
|
const Type query_type_;
|
||||||
const bool fetchalbums_;
|
const bool fetchalbums_;
|
||||||
const QString coversize_;
|
const QString coversize_;
|
||||||
|
|
||||||
|
|
|
@ -732,7 +732,7 @@ void TidalService::GetArtists() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ResetArtistsRequest();
|
ResetArtistsRequest();
|
||||||
artists_request_.reset(new TidalRequest(this, url_handler_, app_, network_, TidalBaseRequest::QueryType::Artists, this), [](TidalRequest *request) { request->deleteLater(); });
|
artists_request_.reset(new TidalRequest(this, url_handler_, app_, network_, TidalBaseRequest::Type::Artists, this), [](TidalRequest *request) { request->deleteLater(); });
|
||||||
QObject::connect(&*artists_request_, &TidalRequest::RequestLogin, this, &TidalService::SendLogin);
|
QObject::connect(&*artists_request_, &TidalRequest::RequestLogin, this, &TidalService::SendLogin);
|
||||||
QObject::connect(&*artists_request_, &TidalRequest::Results, this, &TidalService::ArtistsResultsReceived);
|
QObject::connect(&*artists_request_, &TidalRequest::Results, this, &TidalService::ArtistsResultsReceived);
|
||||||
QObject::connect(&*artists_request_, &TidalRequest::UpdateStatus, this, &TidalService::ArtistsUpdateStatusReceived);
|
QObject::connect(&*artists_request_, &TidalRequest::UpdateStatus, this, &TidalService::ArtistsUpdateStatusReceived);
|
||||||
|
@ -787,7 +787,7 @@ void TidalService::GetAlbums() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ResetAlbumsRequest();
|
ResetAlbumsRequest();
|
||||||
albums_request_.reset(new TidalRequest(this, url_handler_, app_, network_, TidalBaseRequest::QueryType::Albums, this), [](TidalRequest *request) { request->deleteLater(); });
|
albums_request_.reset(new TidalRequest(this, url_handler_, app_, network_, TidalBaseRequest::Type::Albums, this), [](TidalRequest *request) { request->deleteLater(); });
|
||||||
QObject::connect(&*albums_request_, &TidalRequest::RequestLogin, this, &TidalService::SendLogin);
|
QObject::connect(&*albums_request_, &TidalRequest::RequestLogin, this, &TidalService::SendLogin);
|
||||||
QObject::connect(&*albums_request_, &TidalRequest::Results, this, &TidalService::AlbumsResultsReceived);
|
QObject::connect(&*albums_request_, &TidalRequest::Results, this, &TidalService::AlbumsResultsReceived);
|
||||||
QObject::connect(&*albums_request_, &TidalRequest::UpdateStatus, this, &TidalService::AlbumsUpdateStatusReceived);
|
QObject::connect(&*albums_request_, &TidalRequest::UpdateStatus, this, &TidalService::AlbumsUpdateStatusReceived);
|
||||||
|
@ -842,7 +842,7 @@ void TidalService::GetSongs() {
|
||||||
}
|
}
|
||||||
|
|
||||||
ResetSongsRequest();
|
ResetSongsRequest();
|
||||||
songs_request_.reset(new TidalRequest(this, url_handler_, app_, network_, TidalBaseRequest::QueryType::Songs, this), [](TidalRequest *request) { request->deleteLater(); });
|
songs_request_.reset(new TidalRequest(this, url_handler_, app_, network_, TidalBaseRequest::Type::Songs, this), [](TidalRequest *request) { request->deleteLater(); });
|
||||||
QObject::connect(&*songs_request_, &TidalRequest::RequestLogin, this, &TidalService::SendLogin);
|
QObject::connect(&*songs_request_, &TidalRequest::RequestLogin, this, &TidalService::SendLogin);
|
||||||
QObject::connect(&*songs_request_, &TidalRequest::Results, this, &TidalService::SongsResultsReceived);
|
QObject::connect(&*songs_request_, &TidalRequest::Results, this, &TidalService::SongsResultsReceived);
|
||||||
QObject::connect(&*songs_request_, &TidalRequest::UpdateStatus, this, &TidalService::SongsUpdateStatusReceived);
|
QObject::connect(&*songs_request_, &TidalRequest::UpdateStatus, this, &TidalService::SongsUpdateStatusReceived);
|
||||||
|
@ -916,17 +916,17 @@ void TidalService::CancelSearch() {
|
||||||
|
|
||||||
void TidalService::SendSearch() {
|
void TidalService::SendSearch() {
|
||||||
|
|
||||||
TidalBaseRequest::QueryType query_type = TidalBaseRequest::QueryType::None;
|
TidalBaseRequest::Type query_type = TidalBaseRequest::Type::None;
|
||||||
|
|
||||||
switch (pending_search_type_) {
|
switch (pending_search_type_) {
|
||||||
case StreamingSearchView::SearchType::Artists:
|
case StreamingSearchView::SearchType::Artists:
|
||||||
query_type = TidalBaseRequest::QueryType::SearchArtists;
|
query_type = TidalBaseRequest::Type::SearchArtists;
|
||||||
break;
|
break;
|
||||||
case StreamingSearchView::SearchType::Albums:
|
case StreamingSearchView::SearchType::Albums:
|
||||||
query_type = TidalBaseRequest::QueryType::SearchAlbums;
|
query_type = TidalBaseRequest::Type::SearchAlbums;
|
||||||
break;
|
break;
|
||||||
case StreamingSearchView::SearchType::Songs:
|
case StreamingSearchView::SearchType::Songs:
|
||||||
query_type = TidalBaseRequest::QueryType::SearchSongs;
|
query_type = TidalBaseRequest::Type::SearchSongs;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
//Error("Invalid search type.");
|
//Error("Invalid search type.");
|
||||||
|
|
Loading…
Reference in New Issue