Esempio n. 1
0
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;
    }
}
Esempio n. 2
0
Result SoundSource::writeTrackMetadata(
        const TrackMetadata& trackMetadata) const {
    return writeTrackMetadataIntoFile(trackMetadata, getLocalFileName());
}