void PlaylistDialog::populatePreviewFromSaved(const QItemSelection &, const QItemSelection &) { static const int MAX_TRACKS_PREVIEW_AREA = 30; QModelIndexList indexes = savedPlaylists->selectionModel()->selectedIndexes(); bool empty = indexes.isEmpty(); this->clearPreview(!empty); if (indexes.size() == 1) { uint playlistId = _savedPlaylistModel->itemFromIndex(indexes.first())->data(PlaylistID).toUInt(); QList<TrackDAO> tracks = SqlDatabase::instance()->selectPlaylistTracks(playlistId); for (int i = 0; i < tracks.size(); i++) { TrackDAO track = tracks.at(i); QTreeWidgetItem *item = new QTreeWidgetItem; item->setText(0, QString("%1 (%2 - %3)").arg(track.title(), track.artist(), track.album())); previewPlaylist->addTopLevelItem(item); if (i + 1 == MAX_TRACKS_PREVIEW_AREA) { QTreeWidgetItem *item = new QTreeWidgetItem; item->setText(0, tr("And more tracks...")); previewPlaylist->addTopLevelItem(item); break; } } } loadPlaylists->setDisabled(empty); deletePlaylists->setDisabled(empty); exportPlaylists->setEnabled(indexes.size() == 1); // Some work for the Save button if (empty) { savePlaylists->setEnabled(false); } else { bool allPlaylistsAreModified = true; QMap<uint, Playlist*> map; for (int i = 0; i < _playlists.count(); i++) { Playlist *p = _playlists.at(i); map.insert(p->id(), p); } for (QModelIndex idx : indexes) { uint playlistId = idx.data(PlaylistID).toUInt(); if (map.contains(playlistId)) { Playlist *p = map.value(playlistId); allPlaylistsAreModified = allPlaylistsAreModified && p->isModified(); } } savePlaylists->setEnabled(allPlaylistsAreModified); } }
void RemoteControl::sendTrackInfos(const QString &track) { if (!_webSocket) { return; } QStringList args; args << QString::number(CMD_Track); SqlDatabase db; TrackDAO dao = db.selectTrackByURI(track); args << dao.uri(); args << dao.artistAlbum(); args << dao.album(); args << dao.title(); args << dao.trackNumber(); args << QString::number(dao.rating()); _webSocket->sendTextMessage(args.join(QChar::Null)); // Send cover if any if (Cover *cover = db.selectCoverFromURI(track)) { _webSocket->sendBinaryMessage(cover->byteArray()); } }