void SamplerBank::slotSaveSamplerBank(double v) { if (v == 0.0f) return; QString s = QFileDialog::getSaveFileName(NULL, tr("Save Sampler Bank")); QFile file(s); if (!file.open(QIODevice::WriteOnly)) { QMessageBox::warning(NULL, tr("Error Saving Sampler Bank"), tr("Could not write the sampler bank to '%1'.").arg(s)); return; } QDomDocument doc("SamplerBank"); QDomElement root = doc.createElement("samplerbank"); doc.appendChild(root); for (unsigned int i = 0; i < m_pPlayerManager->numSamplers(); ++i) { Sampler* pSampler = m_pPlayerManager->getSampler(i); QDomElement samplerNode = doc.createElement(QString("sampler")); samplerNode.setAttribute("group", pSampler->getGroup()); TrackPointer pTrack = PlayerInfo::instance().getTrackInfo(pSampler->getGroup()); if (pTrack) { QString samplerLocation = pTrack->getLocation(); samplerNode.setAttribute("location", samplerLocation); } root.appendChild(samplerNode); } QString docStr = doc.toString(); file.write(docStr.toUtf8().constData()); file.close(); }
void SamplerBank::slotSaveSamplerBank(double v) { if (v == 0.0 || m_pPlayerManager == NULL) { return; } QString filefilter = tr("Mixxx Sampler Banks (*.xml)"); QString samplerBankPath = QFileDialog::getSaveFileName( NULL, tr("Save Sampler Bank"), QString(), tr("Mixxx Sampler Banks (*.xml)"), &filefilter); if (samplerBankPath.isNull() || samplerBankPath.isEmpty()) { return; } // Manually add extension due to bug in QFileDialog // via https://bugreports.qt-project.org/browse/QTBUG-27186 // Can be removed after switch to Qt5 QFileInfo fileName(samplerBankPath); if (fileName.suffix().isEmpty()) { QString ext = filefilter.section(".",1,1); ext.chop(1); samplerBankPath.append(".").append(ext); } // The user has picked a new directory via a file dialog. This means the // system sandboxer (if we are sandboxed) has granted us permission to this // folder. We don't need access to this file on a regular basis so we do not // register a security bookmark. QFile file(samplerBankPath); if (!file.open(QIODevice::WriteOnly)) { QMessageBox::warning(NULL, tr("Error Saving Sampler Bank"), tr("Could not write the sampler bank to '%1'.") .arg(samplerBankPath)); return; } QDomDocument doc("SamplerBank"); QDomElement root = doc.createElement("samplerbank"); doc.appendChild(root); for (unsigned int i = 0; i < m_pPlayerManager->numSamplers(); ++i) { Sampler* pSampler = m_pPlayerManager->getSampler(i + 1); if (pSampler == NULL) { continue; } QDomElement samplerNode = doc.createElement(QString("sampler")); samplerNode.setAttribute("group", pSampler->getGroup()); TrackPointer pTrack = pSampler->getLoadedTrack(); if (pTrack) { QString samplerLocation = pTrack->getLocation(); samplerNode.setAttribute("location", samplerLocation); } root.appendChild(samplerNode); } QString docStr = doc.toString(); file.write(docStr.toUtf8().constData()); file.close(); }