4#include <QCameraDevice>
5#include <QMediaDevices>
8#include <QStandardPaths>
9#include <QMediaRecorder>
10#include <QMediaFormat>
11#include <QLoggingCategory>
13#include <QGuiApplication>
17#include "ui_DlgPlayer.h"
19static Q_LOGGING_CATEGORY(log,
"Player.Connect")
23 , m_pParameters(pPara)
27 if(!m_pParameters->GetName().isEmpty())
28 ui->leName->setText(m_pParameters->GetName());
30 if(QMediaDevices::videoInputs().size() > 0)
32 ui->cmbType->addItem(tr(
"Camera"), (
int)CParameterPlayer::TYPE::Camera);
33 foreach(
const QCameraDevice &cameraDevice, QMediaDevices::videoInputs()) {
34 ui->cmbCamera->addItem(cameraDevice.description());
36 if(m_pParameters->GetCamera() > -1)
37 ui->cmbCamera->setCurrentIndex(m_pParameters->GetCamera());
40 ui->cmbType->addItem(tr(
"Url"), (
int)CParameterPlayer::TYPE::Url);
41 ui->leUrl->setText(m_pParameters->GetUrl());
43 int nIndex = ui->cmbType->findData((
int)m_pParameters->GetType());
45 ui->cmbType->setCurrentIndex(nIndex);
46 on_cmbType_currentIndexChanged(nIndex);
49 foreach(
auto ai, QMediaDevices::audioInputs())
51 ui->cmbAudioInput->addItem(ai.description());
53 ui->gbAudioInput->setCheckable(
true);
54 if(QMediaDevices::audioInputs().size() > 0)
55 ui->gbAudioInput->setChecked(m_pParameters->GetEnableAudioInput());
57 ui->gbAudioInput->setEnabled(
false);
58 ui->gbAudioInput->setChecked(
false);
60 if(m_pParameters->GetAudioInput() != -1)
61 ui->cmbAudioInput->setCurrentIndex(m_pParameters->GetAudioInput());
62 ui->cbAudioInputMuted->setChecked(m_pParameters->GetAudioInputMuted());
63 ui->dsAudioInputVolume->setValue(m_pParameters->GetAudioInputVolume());
65 foreach(
auto ao, QMediaDevices::audioOutputs())
66 ui->cmbAudioOutput->addItem(ao.description());
67 ui->gbAudioOutput->setCheckable(
true);
68 if(QMediaDevices::audioOutputs().size() > 0)
69 ui->gbAudioOutput->setChecked(m_pParameters->GetEnableAudioOutput());
71 ui->gbAudioOutput->setEnabled(
false);
72 ui->gbAudioOutput->setChecked(
false);
74 if(m_pParameters->GetAudioOutput() != -1)
75 ui->cmbAudioOutput->setCurrentIndex(m_pParameters->GetAudioOutput());
76 ui->cbAudioOutputMuted->setCheckable(
true);
77 ui->cbAudioOutputMuted->setChecked(m_pParameters->GetAudioOutputMuted());
78 ui->dsAudioOutputVolume->setValue(m_pParameters->GetAudioOutputVolume());
80 ui->cbEnableSubtitle->setCheckable(
true);
81 ui->cbEnableSubtitle->setChecked(m_pParameters->GetSubtitle());
84 m_pRecordUI->SetParameter(&m_pParameters->m_Record);
85 ui->tabWidget->addTab(m_pRecordUI, m_pRecordUI->windowIcon(), m_pRecordUI->windowTitle());
88CDlgPlayer::~CDlgPlayer()
93void CDlgPlayer::accept()
97 if(!ui->leName->text().isEmpty())
98 m_pParameters->SetName(ui->leName->text());
99 if((ui->cmbType->currentData().value<CParameterPlayer::TYPE>()
100 == CParameterPlayer::TYPE::Url) && ui->leUrl->text().isEmpty()) {
101 ui->leUrl->setFocus();
102 ui->tabWidget->setCurrentIndex(0);
103 QString szErr = tr(
"The url is empty. please set!");
104 QMessageBox::critical(
this, tr(
"Error"), szErr);
105 qCritical(log) << szErr;
110 ui->tabWidget->setCurrentWidget(m_pRecordUI);
114 m_pParameters->SetType(
115 ui->cmbType->currentData().value<CParameterPlayer::TYPE>());
116 m_pParameters->SetUrl(ui->leUrl->text());
117 m_pParameters->SetCamera(ui->cmbCamera->currentIndex());
118 switch(m_pParameters->GetType()) {
119 case CParameterPlayer::TYPE::Camera: {
120 int nIndex = m_pParameters->GetCamera();
121 if(-1 < nIndex && nIndex < QMediaDevices::videoInputs().size())
122 if(ui->leName->text().isEmpty())
123 m_pParameters->SetName(
125 + QMediaDevices::videoInputs().at(nIndex).description());
128 case CParameterPlayer::TYPE::Url:
129 QFileInfo fi(m_pParameters->GetUrl());
130 if(ui->leName->text().isEmpty())
131 m_pParameters->SetName(tr(
"Url: ") + fi.fileName());
135 m_pParameters->SetSubtitle(ui->cbEnableSubtitle->isChecked());
136 m_pParameters->SetEnableAudioInput(ui->gbAudioInput->isChecked());
137 m_pParameters->SetAudioInput(ui->cmbAudioInput->currentIndex());
138 m_pParameters->SetAudioInputMuted(ui->cbAudioInputMuted->isChecked());
139 m_pParameters->SetAudioInputVolume(ui->dsAudioInputVolume->value());
140 m_pParameters->SetEnableAudioOutput(ui->gbAudioOutput->isChecked());
141 m_pParameters->SetAudioOutput(ui->cmbAudioOutput->currentIndex());
142 m_pParameters->SetAudioOutputMuted(ui->cbAudioOutputMuted->isChecked());
143 m_pParameters->SetAudioOutputVolume(ui->dsAudioOutputVolume->value());
145 nRet = m_pRecordUI->Accept();
152void CDlgPlayer::on_cmbType_currentIndexChanged(
int index)
154 ui->cmbCamera->setVisible(
false);
155 ui->leUrl->setVisible(
false);
156 ui->pbUrlBrowse->setVisible(
false);
158 CParameterPlayer::TYPE type
159 = (CParameterPlayer::TYPE)ui->cmbType->itemData(index).toInt();
161 case CParameterPlayer::TYPE::Camera:
162 ui->cmbCamera->setVisible(
true);
163 ui->gbAudioInput->setChecked(
true);
164 ui->cbEnableSubtitle->hide();
166 case CParameterPlayer::TYPE::Url:
167 ui->leUrl->setVisible(
true);
168 ui->pbUrlBrowse->setVisible(
true);
169 ui->gbAudioInput->setChecked(
false);
170 ui->cbEnableSubtitle->show();
177void CDlgPlayer::on_pbUrlBrowse_clicked()
186 QString szFilter(tr(
"Media files(* wmv *.aac *.WebM *.mtk *.ogg *.mp4 *.mov *.avi);;All files(*.*)"));
187 QString szFile = QFileDialog::getOpenFileName(
188 this, tr(
"Open file"),
189 QStandardPaths::writableLocation(QStandardPaths::MoviesLocation),
191 if(!szFile.isEmpty())
192 ui->leUrl->setText(szFile);
virtual Q_INVOKABLE bool CheckValidity(bool validity=false)
检查参数的有效性