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    foreach(
auto ai, QMediaDevices::audioInputs())
 
   32        ui->cmbAudioInput->addItem(ai.description());
 
   34    ui->gbAudioInput->setCheckable(
true);
 
   35    if(QMediaDevices::audioInputs().size() > 0)
 
   36        ui->gbAudioInput->setChecked(m_pParameters->GetEnableAudioInput());
 
   38        ui->gbAudioInput->setEnabled(
false);
 
   39        ui->gbAudioInput->setChecked(
false);
 
   41    if(m_pParameters->GetAudioInput() != -1)
 
   42        ui->cmbAudioInput->setCurrentIndex(m_pParameters->GetAudioInput());
 
   43    ui->cbAudioInputMuted->setChecked(m_pParameters->GetAudioInputMuted());
 
   44    ui->dsAudioInputVolume->setValue(m_pParameters->GetAudioInputVolume());
 
   46    foreach(
auto ao, QMediaDevices::audioOutputs())
 
   47        ui->cmbAudioOutput->addItem(ao.description());
 
   48    ui->gbAudioOutput->setCheckable(
true);
 
   49    if(QMediaDevices::audioOutputs().size() > 0)
 
   50        ui->gbAudioOutput->setChecked(m_pParameters->GetEnableAudioOutput());
 
   52        ui->gbAudioOutput->setEnabled(
false);
 
   53        ui->gbAudioOutput->setChecked(
false);
 
   55    if(m_pParameters->GetAudioOutput() != -1)
 
   56        ui->cmbAudioOutput->setCurrentIndex(m_pParameters->GetAudioOutput());
 
   57    ui->cbAudioOutputMuted->setCheckable(
true);
 
   58    ui->cbAudioOutputMuted->setChecked(m_pParameters->GetAudioOutputMuted());
 
   59    ui->dsAudioOutputVolume->setValue(m_pParameters->GetAudioOutputVolume());
 
   61    ui->cbEnableSubtitle->setCheckable(
true);
 
   62    ui->cbEnableSubtitle->setChecked(m_pParameters->GetSubtitle());
 
   64    if(QMediaDevices::videoInputs().size() > 0)
 
   66        ui->cmbType->addItem(tr(
"Camera"), (
int)CParameterPlayer::TYPE::Camera);
 
   67        foreach(
const QCameraDevice &cameraDevice, QMediaDevices::videoInputs()) {
 
   68            ui->cmbCamera->addItem(cameraDevice.description());
 
   70        if(m_pParameters->GetCamera() > -1)
 
   71            ui->cmbCamera->setCurrentIndex(m_pParameters->GetCamera());
 
   74    ui->cmbType->addItem(tr(
"Url"), (
int)CParameterPlayer::TYPE::Url);
 
   75    ui->leUrl->setText(m_pParameters->GetUrl());
 
   77    int nIndex = ui->cmbType->findData((
int)m_pParameters->GetType());
 
   79        ui->cmbType->setCurrentIndex(nIndex);
 
   80        on_cmbType_currentIndexChanged(nIndex);
 
   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 bool CheckValidity(bool validity=false)
Check parameters validity.