示例#1
0
bool CrateDAO::removeTrackFromCrate(const int trackId, const int crateId) {
    QSqlQuery query(m_database);
    query.prepare("DELETE FROM " CRATE_TRACKS_TABLE " WHERE "
                  "crate_id = :crate_id AND track_id = :track_id");
    query.bindValue(":crate_id", crateId);
    query.bindValue(":track_id", trackId);

    if (!query.exec()) {
        LOG_FAILED_QUERY(query);
        return false;
    }

    emit(trackRemoved(crateId, trackId));
    emit(changed(crateId));
    return true;
}
void PlaylistModel::removeTrack(int position)
{
    if (position < 0 || position >= m_tracks.count())
    {
        return;
    }

    m_manager->removeTracks(KUrl::List(m_tracks.at(position)));

    m_tracks.removeAt(position);

    if (position <= m_currentTrack)
    {
        setCurrentTrack((m_currentTrack - 1), ((position == m_currentTrack && (m_manager->state() != StoppedState && isCurrent()))?StopReaction:NoReaction));
    }
    else
    {
        setCurrentTrack(m_currentTrack);
    }

    emit trackRemoved(position);
    emit modified();
}