void AudioEditor::slotSourceFileClicked() { QString fn; /* Create a file open dialog */ QFileDialog dialog(this); dialog.setWindowTitle(tr("Open Audio File")); dialog.setAcceptMode(QFileDialog::AcceptOpen); /* Append file filters to the dialog */ QStringList extList = Audio::getCapabilities(); QStringList filters; qDebug() << Q_FUNC_INFO << "Extensions: " << extList.join(" "); filters << tr("Audio Files (%1)").arg(extList.join(" ")); #if defined(WIN32) || defined(Q_OS_WIN) filters << tr("All Files (*.*)"); #else filters << tr("All Files (*)"); #endif dialog.setNameFilters(filters); /* Append useful URLs to the dialog */ QList <QUrl> sidebar; sidebar.append(QUrl::fromLocalFile(QDir::homePath())); sidebar.append(QUrl::fromLocalFile(QDir::rootPath())); dialog.setSidebarUrls(sidebar); /* Get file name */ if (dialog.exec() != QDialog::Accepted) return; fn = dialog.selectedFiles().first(); if (fn.isEmpty() == true) return; if (m_audio->isRunning()) m_audio->stopAndWait(); m_audio->setSourceFileName(fn); m_filenameLabel->setText(m_audio->getSourceFileName()); AudioDecoder *adec = m_audio->getAudioDecoder(); if (adec != NULL) { AudioParameters ap = adec->audioParameters(); m_durationLabel->setText(Function::speedToString(m_audio->getDuration())); m_srateLabel->setText(QString("%1 Hz").arg(ap.sampleRate())); m_channelsLabel->setText(QString("%1").arg(ap.channels())); m_bitrateLabel->setText(QString("%1 kb/s").arg(adec->bitrate())); } }
QVariant AudioEditor::mediaInfo() const { QVariantMap infoMap; if (m_audio == nullptr) return QVariant(); AudioDecoder *adec = m_audio->getAudioDecoder(); if (adec == nullptr) return QVariant(); AudioParameters ap = adec->audioParameters(); infoMap.insert("duration", Function::speedToString(m_audio->totalDuration())); infoMap.insert("sampleRate", QString("%1 Hz").arg(ap.sampleRate())); infoMap.insert("channels", ap.channels()); infoMap.insert("bitrate", QString("%1 kb/s").arg(adec->bitrate())); return QVariant::fromValue(infoMap); }
AudioEditor::AudioEditor(QWidget* parent, Audio *audio, Doc* doc) : QWidget(parent) , m_doc(doc) , m_audio(audio) , m_speedDials(NULL) { Q_ASSERT(doc != NULL); Q_ASSERT(audio != NULL); setupUi(this); m_nameEdit->setText(m_audio->name()); m_nameEdit->setSelection(0, m_nameEdit->text().length()); m_fadeInEdit->setText(Function::speedToString(audio->fadeInSpeed())); m_fadeOutEdit->setText(Function::speedToString(audio->fadeOutSpeed())); connect(m_nameEdit, SIGNAL(textEdited(const QString&)), this, SLOT(slotNameEdited(const QString&))); connect(m_fileButton, SIGNAL(clicked()), this, SLOT(slotSourceFileClicked())); connect(m_speedDialButton, SIGNAL(toggled(bool)), this, SLOT(slotSpeedDialToggle(bool))); connect(m_fadeInEdit, SIGNAL(returnPressed()), this, SLOT(slotFadeInEdited())); connect(m_fadeOutEdit, SIGNAL(returnPressed()), this, SLOT(slotFadeOutEdited())); connect(m_previewButton, SIGNAL(toggled(bool)), this, SLOT(slotPreviewToggled(bool))); AudioDecoder *adec = m_audio->getAudioDecoder(); m_filenameLabel->setText(m_audio->getSourceFileName()); if (adec != NULL) { AudioParameters ap = adec->audioParameters(); m_durationLabel->setText(Function::speedToString(m_audio->getDuration())); m_srateLabel->setText(QString("%1 Hz").arg(ap.sampleRate())); m_channelsLabel->setText(QString("%1").arg(ap.channels())); m_bitrateLabel->setText(QString("%1 kb/s").arg(adec->bitrate())); } QList<AudioDeviceInfo> devList; #if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) #if defined( __APPLE__) || defined(Q_OS_MAC) devList = AudioRendererPortAudio::getDevicesInfo(); #elif defined(WIN32) || defined(Q_OS_WIN) devList = AudioRendererWaveOut::getDevicesInfo(); #else devList = AudioRendererAlsa::getDevicesInfo(); #endif #else devList = AudioRendererQt::getDevicesInfo(); #endif QSettings settings; QString outputName; int i = 0, selIdx = 0; m_audioDevCombo->addItem(tr("Default device"), "__qlcplusdefault__"); if (m_audio->audioDevice().isEmpty()) { QVariant var = settings.value(SETTINGS_AUDIO_OUTPUT_DEVICE); if (var.isValid() == true) outputName = var.toString(); } else outputName = m_audio->audioDevice(); foreach( AudioDeviceInfo info, devList) { if (info.capabilities & AUDIO_CAP_OUTPUT) { m_audioDevCombo->addItem(info.deviceName, info.privateName); if (info.privateName == outputName) selIdx = i; i++; } } m_audioDevCombo->setCurrentIndex(selIdx); connect(m_audioDevCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(slotAudioDeviceChanged(int))); // Set focus to the editor m_nameEdit->setFocus(); }