Add tidal add/remove favorites + more tidal fixes
This commit is contained in:
@@ -301,9 +301,8 @@ void InternetCollectionView::contextMenuEvent(QContextMenuEvent *e) {
|
||||
|
||||
context_menu_->addSeparator();
|
||||
|
||||
//add_songs_ = context_menu_->addAction(IconLoader::Load("document-new"), tr("Add songs"), this, SLOT(AddSongs()));
|
||||
//remove_songs_ = context_menu_->addAction(IconLoader::Load("document-new"), tr("Remove songs"), this, SLOT(RemoveSongs()));
|
||||
//context_menu_->addSeparator();
|
||||
remove_songs_ = context_menu_->addAction(IconLoader::Load("document-new"), tr("Remove from favorites"), this, SLOT(RemoveSongs()));
|
||||
context_menu_->addSeparator();
|
||||
|
||||
if (filter_) context_menu_->addMenu(filter_->menu());
|
||||
|
||||
@@ -321,8 +320,7 @@ void InternetCollectionView::contextMenuEvent(QContextMenuEvent *e) {
|
||||
add_to_playlist_->setEnabled(songs_selected);
|
||||
open_in_new_playlist_->setEnabled(songs_selected);
|
||||
add_to_playlist_enqueue_->setEnabled(songs_selected);
|
||||
//add_songs_->setEnabled(songs_selected);
|
||||
//remove_songs_->setEnabled(songs_selected);
|
||||
remove_songs_->setEnabled(songs_selected);
|
||||
|
||||
context_menu_->popup(e->globalPos());
|
||||
|
||||
@@ -374,13 +372,6 @@ void InternetCollectionView::OpenInNewPlaylist() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
void InternetCollectionView::AddSongs() {
|
||||
|
||||
emit AddSongs(GetSelectedSongs());
|
||||
|
||||
}
|
||||
|
||||
void InternetCollectionView::RemoveSongs() {
|
||||
|
||||
emit RemoveSongs(GetSelectedSongs());
|
||||
|
||||
@@ -89,8 +89,7 @@ class InternetCollectionView : public AutoExpandingTreeView {
|
||||
void TotalArtistCountUpdated_();
|
||||
void TotalAlbumCountUpdated_();
|
||||
void Error(const QString &message);
|
||||
void AddSongs(const SongList songs);
|
||||
void RemoveSongs(const SongList songs);
|
||||
void RemoveSongs(const SongList &songs);
|
||||
|
||||
protected:
|
||||
// QWidget
|
||||
@@ -104,7 +103,6 @@ class InternetCollectionView : public AutoExpandingTreeView {
|
||||
void AddToPlaylistEnqueue();
|
||||
void AddToPlaylistEnqueueNext();
|
||||
void OpenInNewPlaylist();
|
||||
void AddSongs();
|
||||
void RemoveSongs();
|
||||
|
||||
private:
|
||||
@@ -131,8 +129,7 @@ class InternetCollectionView : public AutoExpandingTreeView {
|
||||
QAction *add_to_playlist_enqueue_;
|
||||
QAction *add_to_playlist_enqueue_next_;
|
||||
QAction *open_in_new_playlist_;
|
||||
//QAction *add_songs_;
|
||||
//QAction *remove_songs_;
|
||||
QAction *remove_songs_;
|
||||
|
||||
bool is_in_keyboard_search_;
|
||||
|
||||
|
||||
@@ -110,12 +110,15 @@ InternetSearchView::InternetSearchView(QWidget *parent)
|
||||
|
||||
InternetSearchView::~InternetSearchView() { delete ui_; }
|
||||
|
||||
void InternetSearchView::Init(Application *app, InternetSearch *engine, QString settings_group, SettingsDialog::Page settings_page) {
|
||||
void InternetSearchView::Init(Application *app, InternetSearch *engine, QString settings_group, SettingsDialog::Page settings_page, const bool artists, const bool albums, const bool songs) {
|
||||
|
||||
app_ = app;
|
||||
engine_ = engine;
|
||||
settings_group_ = settings_group;
|
||||
settings_page_ = settings_page;
|
||||
artists_ = artists;
|
||||
albums_ = albums;
|
||||
songs_ = songs;
|
||||
|
||||
front_model_ = new InternetSearchModel(engine_, this);
|
||||
back_model_ = new InternetSearchModel(engine_, this);
|
||||
@@ -435,6 +438,16 @@ bool InternetSearchView::ResultsContextMenuEvent(QContextMenuEvent *event) {
|
||||
|
||||
context_menu_->addSeparator();
|
||||
|
||||
if (artists_ || albums_ || songs_) {
|
||||
if (artists_)
|
||||
context_actions_ << context_menu_->addAction(IconLoader::Load("document-new"), tr("Add to artists"), this, SLOT(AddArtists()));
|
||||
if (albums_)
|
||||
context_actions_ << context_menu_->addAction(IconLoader::Load("document-new"), tr("Add to albums"), this, SLOT(AddAlbums()));
|
||||
if (songs_)
|
||||
context_actions_ << context_menu_->addAction(IconLoader::Load("document-new"), tr("Add to songs"), this, SLOT(AddSongs()));
|
||||
context_menu_->addSeparator();
|
||||
}
|
||||
|
||||
if (ui_->results->selectionModel() && ui_->results->selectionModel()->selectedRows().length() == 1) {
|
||||
context_actions_ << context_menu_->addAction(IconLoader::Load("search"), tr("Search for this"), this, SLOT(SearchForThis()));
|
||||
}
|
||||
@@ -593,3 +606,33 @@ void InternetSearchView::ProgressSetMaximum(int max) {
|
||||
void InternetSearchView::UpdateProgress(int progress) {
|
||||
ui_->progressbar->setValue(progress);
|
||||
}
|
||||
|
||||
void InternetSearchView::AddArtists() {
|
||||
|
||||
MimeData *data = SelectedMimeData();
|
||||
if (!data) return;
|
||||
if (const InternetSongMimeData *internet_song_data = qobject_cast<const InternetSongMimeData*>(data)) {
|
||||
emit AddArtistsSignal(internet_song_data->songs);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void InternetSearchView::AddAlbums() {
|
||||
|
||||
MimeData *data = SelectedMimeData();
|
||||
if (!data) return;
|
||||
if (const InternetSongMimeData *internet_song_data = qobject_cast<const InternetSongMimeData*>(data)) {
|
||||
emit AddAlbumsSignal(internet_song_data->songs);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void InternetSearchView::AddSongs() {
|
||||
|
||||
MimeData *data = SelectedMimeData();
|
||||
if (!data) return;
|
||||
if (const InternetSongMimeData *internet_song_data = qobject_cast<const InternetSongMimeData*>(data)) {
|
||||
emit AddSongsSignal(internet_song_data->songs);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ class InternetSearchView : public QWidget {
|
||||
InternetSearchView(QWidget *parent = nullptr);
|
||||
~InternetSearchView();
|
||||
|
||||
void Init(Application *app, InternetSearch *engine, QString settings_group, SettingsDialog::Page settings_page);
|
||||
void Init(Application *app, InternetSearch *engine, QString settings_group, SettingsDialog::Page settings_page, const bool artists = false, const bool albums = false, const bool songs = false);
|
||||
|
||||
static const int kSwapModelsTimeoutMsec;
|
||||
|
||||
@@ -75,8 +75,11 @@ class InternetSearchView : public QWidget {
|
||||
void FocusSearchField();
|
||||
void OpenSettingsDialog();
|
||||
|
||||
signals:
|
||||
signals:
|
||||
void AddToPlaylist(QMimeData *data);
|
||||
void AddArtistsSignal(SongList songs);
|
||||
void AddAlbumsSignal(SongList songs);
|
||||
void AddSongsSignal(SongList songs);
|
||||
|
||||
private slots:
|
||||
void SwapModels();
|
||||
@@ -104,6 +107,10 @@ signals:
|
||||
void SetSearchType(InternetSearch::SearchType type);
|
||||
void SetGroupBy(const CollectionModel::Grouping &g);
|
||||
|
||||
void AddArtists();
|
||||
void AddAlbums();
|
||||
void AddSongs();
|
||||
|
||||
private:
|
||||
MimeData *SelectedMimeData();
|
||||
|
||||
@@ -116,6 +123,9 @@ signals:
|
||||
SettingsDialog::Page settings_page_;
|
||||
Ui_InternetSearchView *ui_;
|
||||
QScopedPointer<GroupByDialog> group_by_dialog_;
|
||||
bool artists_;
|
||||
bool albums_;
|
||||
bool songs_;
|
||||
|
||||
QMenu *context_menu_;
|
||||
QList<QAction*> context_actions_;
|
||||
|
||||
@@ -109,7 +109,15 @@ class InternetService : public QObject {
|
||||
void SearchProgressSetMaximum(int max);
|
||||
void SearchUpdateProgress(int max);
|
||||
|
||||
void StreamURLFinished(const QUrl original_url, const QUrl stream_url, const Song::FileType, QString error = QString());
|
||||
void AddArtists(const SongList& songs);
|
||||
void AddAlbums(const SongList& songs);
|
||||
void AddSongs(const SongList& songs);
|
||||
|
||||
void RemoveArtists(const SongList& songs);
|
||||
void RemoveAlbums(const SongList& songs);
|
||||
void RemoveSongs(const SongList& songs);
|
||||
|
||||
void StreamURLFinished(const QUrl original_url, const QUrl stream_url, const Song::FileType filetype, QString error = QString());
|
||||
|
||||
protected:
|
||||
Application *app_;
|
||||
|
||||
@@ -45,7 +45,10 @@ InternetTabsView::InternetTabsView(Application *app, InternetService *service, I
|
||||
|
||||
ui_->setupUi(this);
|
||||
|
||||
ui_->search_view->Init(app, engine, settings_group, settings_page);
|
||||
ui_->search_view->Init(app, engine, settings_group, settings_page, service_->artists_collection_model(), service_->albums_collection_model(), service_->songs_collection_model());
|
||||
connect(ui_->search_view, SIGNAL(AddArtistsSignal(const SongList&)), service_, SIGNAL(AddArtists(const SongList&)));
|
||||
connect(ui_->search_view, SIGNAL(AddAlbumsSignal(const SongList&)), service_, SIGNAL(AddAlbums(const SongList&)));
|
||||
connect(ui_->search_view, SIGNAL(AddSongsSignal(const SongList&)), service_, SIGNAL(AddSongs(const SongList&)));
|
||||
|
||||
if (service_->artists_collection_model()) {
|
||||
ui_->artists_collection->stacked()->setCurrentWidget(ui_->artists_collection->internetcollection_page());
|
||||
@@ -55,6 +58,8 @@ 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->view(), SIGNAL(RemoveSongs(const SongList&)), service_, SIGNAL(RemoveArtists(const SongList&)));
|
||||
|
||||
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()));
|
||||
@@ -83,6 +88,8 @@ 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->view(), SIGNAL(RemoveSongs(const SongList&)), service_, SIGNAL(RemoveAlbums(const SongList&)));
|
||||
|
||||
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()));
|
||||
@@ -111,6 +118,8 @@ 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->view(), SIGNAL(RemoveSongs(const SongList&)), service_, SIGNAL(RemoveSongs(const SongList&)));
|
||||
|
||||
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()));
|
||||
|
||||
Reference in New Issue
Block a user