bool BrowseTableModel::setData(const QModelIndex &index, const QVariant &value, int role) { Q_UNUSED(role); if (!index.isValid()) { return false; } qDebug() << "BrowseTableModel::setData(" << index.data() << ")"; int row = index.row(); int col = index.column(); Mixxx::TrackMetadata trackMetadata; // set tagger information trackMetadata.setArtist(this->index(row, COLUMN_ARTIST).data().toString()); trackMetadata.setTitle(this->index(row, COLUMN_TITLE).data().toString()); trackMetadata.setAlbum(this->index(row, COLUMN_ALBUM).data().toString()); trackMetadata.setKey(this->index(row, COLUMN_KEY).data().toString()); trackMetadata.setBpm(Mixxx::Bpm(this->index(row, COLUMN_BPM).data().toDouble())); trackMetadata.setComment(this->index(row, COLUMN_COMMENT).data().toString()); trackMetadata.setTrackNumber(this->index(row, COLUMN_TRACK_NUMBER).data().toString()); trackMetadata.setYear(this->index(row, COLUMN_YEAR).data().toString()); trackMetadata.setGenre(this->index(row, COLUMN_GENRE).data().toString()); trackMetadata.setComposer(this->index(row, COLUMN_COMPOSER).data().toString()); trackMetadata.setAlbumArtist(this->index(row, COLUMN_ALBUMARTIST).data().toString()); trackMetadata.setGrouping(this->index(row, COLUMN_GROUPING).data().toString()); // check if one the item were edited if (col == COLUMN_ARTIST) { trackMetadata.setArtist(value.toString()); } else if (col == COLUMN_TITLE) { trackMetadata.setTitle(value.toString()); } else if (col == COLUMN_ALBUM) { trackMetadata.setAlbum(value.toString()); } else if (col == COLUMN_BPM) { trackMetadata.setBpm(Mixxx::Bpm(value.toDouble())); } else if (col == COLUMN_KEY) { trackMetadata.setKey(value.toString()); } else if (col == COLUMN_TRACK_NUMBER) { trackMetadata.setTrackNumber(value.toString()); } else if (col == COLUMN_COMMENT) { trackMetadata.setComment(value.toString()); } else if (col == COLUMN_GENRE) { trackMetadata.setGenre(value.toString()); } else if (col == COLUMN_COMPOSER) { trackMetadata.setComposer(value.toString()); } else if (col == COLUMN_YEAR) { trackMetadata.setYear(value.toString()); } else if (col == COLUMN_ALBUMARTIST) { trackMetadata.setAlbumArtist(value.toString()); } else if (col == COLUMN_GROUPING) { trackMetadata.setGrouping(value.toString()); } else { qWarning() << "BrowseTableModel::setData(): no tagger column"; return false; } QStandardItem* item = itemFromIndex(index); QString track_location(getTrackLocation(index)); if (OK == writeTrackMetadataIntoFile(trackMetadata, track_location)) { // Modify underlying interalPointer object item->setText(value.toString()); item->setToolTip(item->text()); return true; } else { // reset to old value in error item->setText(index.data().toString()); item->setToolTip(item->text()); QMessageBox::critical( 0, tr("Mixxx Library"), tr("Could not update file metadata.") + "\n" +track_location); return false; } }
Result SoundSource::writeTrackMetadata( const TrackMetadata& trackMetadata) const { return writeTrackMetadataIntoFile(trackMetadata, getLocalFileName()); }