void SearchDialog::albumWasDoubleClicked(const QModelIndex &albumIndex) { const QStandardItemModel *m = qobject_cast<const QStandardItemModel*>(albumIndex.model()); QStandardItem *item = m->itemFromIndex(albumIndex); SqlDatabase db; QSqlQuery q(db); q.prepare("SELECT uri FROM cache WHERE album = ?"); qDebug() << Q_FUNC_INFO << item->data(Miam::DF_Album).toString(); q.addBindValue(item->data(Miam::DF_Album).toString()); if (q.exec()) { QList<QMediaContent> tracks; while (q.next()) { tracks.append(QMediaContent(QUrl::fromLocalFile(q.record().value(0).toString()))); } Playlist *p = _viewPlaylists->tabPlaylists->currentPlayList(); p->insertMedias(-1, tracks); } this->clear(); }
/** Redefined to accept D&D from another playlist or the library. */ void TabBar::dropEvent(QDropEvent *event) { int tab = this->tabAt(event->pos()); if (Playlist *origin = qobject_cast<Playlist*>(event->source())) { Playlist *target = tabPlaylist->playlist(tab); // Copy tracks in the target QList<QMediaContent> medias; for (QModelIndex index : origin->selectionModel()->selectedRows()) { medias.append(origin->mediaPlaylist()->media(index.row())); } // Append tracks at the end target->insertMedias(target->model()->rowCount(), medias); // Remove tracks from the current playlist if necessary if (!SettingsPrivate::instance()->copyTracksFromPlaylist()) { origin->removeSelectedTracks(); } } else if (TreeView *origin = qobject_cast<TreeView*>(event->source())) { tabPlaylist->setCurrentIndex(tab); origin->appendToPlaylist(); } }
void SearchDialog::trackWasDoubleClicked(const QModelIndex &track) { Playlist *p = _viewPlaylists->tabPlaylists->currentPlayList(); p->insertMedias(-1, { QMediaContent(QUrl::fromLocalFile(track.data(Miam::DF_URI).toString())) }); this->clear(); }
void SearchDialog::aboutToProcessRemoteTracks(const std::list<TrackDAO> &tracks) { Playlist *p = _viewPlaylists->tabPlaylists->currentPlayList(); p->insertMedias(-1, QList<TrackDAO>::fromStdList(tracks)); this->clear(); }