示例#1
0
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();
}
示例#2
0
/** 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();
	}
}
示例#3
0
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();
}
示例#4
0
void SearchDialog::aboutToProcessRemoteTracks(const std::list<TrackDAO> &tracks)
{
	Playlist *p = _viewPlaylists->tabPlaylists->currentPlayList();
	p->insertMedias(-1, QList<TrackDAO>::fromStdList(tracks));
	this->clear();
}