Queue tidal requests

This commit is contained in:
Jonas Kvinge
2019-05-30 18:06:48 +02:00
parent 2b7d48ce77
commit f26f932fd7
10 changed files with 788 additions and 293 deletions

View File

@@ -48,7 +48,9 @@ class InternetCollectionViewContainer : public QWidget {
QWidget *internetcollection_page() const { return ui_->internetcollection_page; }
InternetCollectionView *view() const { return ui_->view; }
CollectionFilterWidget *filter() const { return ui_->filter; }
QPushButton *refresh() const { return ui_->refresh; }
QPushButton *button_refresh() const { return ui_->refresh; }
QPushButton *button_close() const { return ui_->close; }
QPushButton *button_abort() const { return ui_->abort; }
QLabel *status() const { return ui_->status; }
QProgressBar *progressbar() const { return ui_->progressbar; }
void ReloadSettings() { view()->ReloadSettings(); }

View File

@@ -69,6 +69,37 @@
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="layout_buttons">
<item>
<spacer name="spacer_buttons">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="close">
<property name="text">
<string>Close</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="abort">
<property name="text">
<string>Abort</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">

View File

@@ -67,6 +67,9 @@ class InternetService : public QObject {
virtual void GetArtists() = 0;
virtual void GetAlbums() = 0;
virtual void GetSongs() = 0;
virtual void ResetArtistsRequest() = 0;
virtual void ResetAlbumsRequest() = 0;
virtual void ResetSongsRequest() = 0;
signals:
void Login();

View File

@@ -55,9 +55,11 @@ InternetTabsView::InternetTabsView(Application *app, InternetService *service, I
ui_->artists_collection->filter()->SetCollectionModel(service_->artists_collection_model());
connect(ui_->artists_collection->view(), SIGNAL(GetSongs()), SLOT(GetArtists()));
connect(ui_->artists_collection->refresh(), SIGNAL(clicked()), SLOT(GetArtists()));
connect(ui_->artists_collection->button_refresh(), SIGNAL(clicked()), SLOT(GetArtists()));
connect(ui_->artists_collection->button_close(), SIGNAL(clicked()), SLOT(AbortGetArtists()));
connect(ui_->artists_collection->button_abort(), SIGNAL(clicked()), SLOT(AbortGetArtists()));
connect(service_, SIGNAL(ArtistsResults(SongList)), SLOT(ArtistsFinished(SongList)));
connect(service_, SIGNAL(ArtistsError(QString)), ui_->artists_collection->status(), SLOT(setText(QString)));
connect(service_, SIGNAL(ArtistsError(QString)), SLOT(ArtistsError(QString)));
connect(service_, SIGNAL(ArtistsUpdateStatus(QString)), ui_->artists_collection->status(), SLOT(setText(QString)));
connect(service_, SIGNAL(ArtistsProgressSetMaximum(int)), ui_->artists_collection->progressbar(), SLOT(setMaximum(int)));
connect(service_, SIGNAL(ArtistsUpdateProgress(int)), ui_->artists_collection->progressbar(), SLOT(setValue(int)));
@@ -81,9 +83,11 @@ InternetTabsView::InternetTabsView(Application *app, InternetService *service, I
ui_->albums_collection->filter()->SetCollectionModel(service_->albums_collection_model());
connect(ui_->albums_collection->view(), SIGNAL(GetSongs()), SLOT(GetAlbums()));
connect(ui_->albums_collection->refresh(), SIGNAL(clicked()), SLOT(GetAlbums()));
connect(ui_->albums_collection->button_refresh(), SIGNAL(clicked()), SLOT(GetAlbums()));
connect(ui_->albums_collection->button_close(), SIGNAL(clicked()), SLOT(AbortGetAlbums()));
connect(ui_->albums_collection->button_abort(), SIGNAL(clicked()), SLOT(AbortGetAlbums()));
connect(service_, SIGNAL(AlbumsResults(SongList)), SLOT(AlbumsFinished(SongList)));
connect(service_, SIGNAL(AlbumsError(QString)), ui_->albums_collection->status(), SLOT(setText(QString)));
connect(service_, SIGNAL(AlbumsError(QString)), SLOT(AlbumsError(QString)));
connect(service_, SIGNAL(AlbumsUpdateStatus(QString)), ui_->albums_collection->status(), SLOT(setText(QString)));
connect(service_, SIGNAL(AlbumsProgressSetMaximum(int)), ui_->albums_collection->progressbar(), SLOT(setMaximum(int)));
connect(service_, SIGNAL(AlbumsUpdateProgress(int)), ui_->albums_collection->progressbar(), SLOT(setValue(int)));
@@ -107,9 +111,11 @@ InternetTabsView::InternetTabsView(Application *app, InternetService *service, I
ui_->songs_collection->filter()->SetCollectionModel(service_->songs_collection_model());
connect(ui_->songs_collection->view(), SIGNAL(GetSongs()), SLOT(GetSongs()));
connect(ui_->songs_collection->refresh(), SIGNAL(clicked()), SLOT(GetSongs()));
connect(ui_->songs_collection->button_refresh(), SIGNAL(clicked()), SLOT(GetSongs()));
connect(ui_->songs_collection->button_close(), SIGNAL(clicked()), SLOT(AbortGetSongs()));
connect(ui_->songs_collection->button_abort(), SIGNAL(clicked()), SLOT(AbortGetSongs()));
connect(service_, SIGNAL(SongsResults(SongList)), SLOT(SongsFinished(SongList)));
connect(service_, SIGNAL(SongsError(QString)), ui_->songs_collection->status(), SLOT(setText(QString)));
connect(service_, SIGNAL(SongsError(QString)), SLOT(SongsError(QString)));
connect(service_, SIGNAL(SongsUpdateStatus(QString)), ui_->songs_collection->status(), SLOT(setText(QString)));
connect(service_, SIGNAL(SongsProgressSetMaximum(int)), ui_->songs_collection->progressbar(), SLOT(setMaximum(int)));
connect(service_, SIGNAL(SongsUpdateProgress(int)), ui_->songs_collection->progressbar(), SLOT(setValue(int)));
@@ -129,7 +135,6 @@ InternetTabsView::InternetTabsView(Application *app, InternetService *service, I
s.beginGroup(settings_group_);
QString tab = s.value("tab", "artists").toString().toLower();
s.endGroup();
qLog(Debug) << tab;
if (tab == "artists") {
ui_->tabs->setCurrentWidget(ui_->artists);
@@ -165,12 +170,34 @@ void InternetTabsView::contextMenuEvent(QContextMenuEvent *e) {
void InternetTabsView::GetArtists() {
ui_->artists_collection->stacked()->setCurrentWidget(ui_->artists_collection->help_page());
ui_->artists_collection->status()->clear();
ui_->artists_collection->progressbar()->show();
ui_->artists_collection->button_abort()->show();
ui_->artists_collection->button_close()->hide();
ui_->artists_collection->stacked()->setCurrentWidget(ui_->artists_collection->help_page());
service_->GetArtists();
}
void InternetTabsView::AbortGetArtists() {
service_->ResetArtistsRequest();
ui_->artists_collection->progressbar()->setValue(0);
ui_->artists_collection->status()->clear();
ui_->artists_collection->stacked()->setCurrentWidget(ui_->artists_collection->internetcollection_page());
}
void InternetTabsView::ArtistsError(QString error) {
ui_->artists_collection->status()->setText(error);
ui_->artists_collection->progressbar()->setValue(0);
ui_->artists_collection->progressbar()->hide();
ui_->artists_collection->button_abort()->hide();
ui_->artists_collection->button_close()->show();
}
void InternetTabsView::ArtistsFinished(SongList songs) {
service_->artists_collection_backend()->DeleteAll();
@@ -182,11 +209,34 @@ void InternetTabsView::ArtistsFinished(SongList songs) {
void InternetTabsView::GetAlbums() {
ui_->albums_collection->status()->clear();
ui_->albums_collection->progressbar()->show();
ui_->albums_collection->button_abort()->show();
ui_->albums_collection->button_close()->hide();
ui_->albums_collection->stacked()->setCurrentWidget(ui_->albums_collection->help_page());
service_->GetAlbums();
}
void InternetTabsView::AbortGetAlbums() {
service_->ResetAlbumsRequest();
ui_->albums_collection->progressbar()->setValue(0);
ui_->albums_collection->status()->clear();
ui_->albums_collection->stacked()->setCurrentWidget(ui_->albums_collection->internetcollection_page());
}
void InternetTabsView::AlbumsError(QString error) {
ui_->albums_collection->status()->setText(error);
ui_->albums_collection->progressbar()->setValue(0);
ui_->albums_collection->progressbar()->hide();
ui_->albums_collection->button_abort()->hide();
ui_->albums_collection->button_close()->show();
}
void InternetTabsView::AlbumsFinished(SongList songs) {
service_->albums_collection_backend()->DeleteAll();
@@ -198,11 +248,34 @@ void InternetTabsView::AlbumsFinished(SongList songs) {
void InternetTabsView::GetSongs() {
ui_->songs_collection->status()->clear();
ui_->songs_collection->progressbar()->show();
ui_->songs_collection->button_abort()->show();
ui_->songs_collection->button_close()->hide();
ui_->songs_collection->stacked()->setCurrentWidget(ui_->songs_collection->help_page());
service_->GetSongs();
}
void InternetTabsView::AbortGetSongs() {
service_->ResetSongsRequest();
ui_->songs_collection->progressbar()->setValue(0);
ui_->songs_collection->status()->clear();
ui_->songs_collection->stacked()->setCurrentWidget(ui_->songs_collection->internetcollection_page());
}
void InternetTabsView::SongsError(QString error) {
ui_->songs_collection->status()->setText(error);
ui_->songs_collection->progressbar()->setValue(0);
ui_->songs_collection->progressbar()->hide();
ui_->songs_collection->button_abort()->hide();
ui_->songs_collection->button_close()->show();
}
void InternetTabsView::SongsFinished(SongList songs) {
service_->songs_collection_backend()->DeleteAll();

View File

@@ -59,6 +59,12 @@ class InternetTabsView : public QWidget {
void GetArtists();
void GetAlbums();
void GetSongs();
void AbortGetArtists();
void AbortGetAlbums();
void AbortGetSongs();
void ArtistsError(QString error);
void AlbumsError(QString error);
void SongsError(QString error);
void ArtistsFinished(SongList songs);
void AlbumsFinished(SongList songs);
void SongsFinished(SongList songs);

View File

@@ -11,25 +11,10 @@
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QTabWidget" name="tabs">
<property name="currentIndex">
<number>3</number>
<number>0</number>
</property>
<widget class="QWidget" name="artists">
<attribute name="title">
@@ -102,6 +87,18 @@
<string>Search</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="InternetSearchView" name="search_view" native="true"/>
</item>