📄 transmdlg.cpp
字号:
can be queried and if data service is active
(check box is checked) */
if ((TransThread.DRMTransmitter.GetAudSrcEnc()->
GetTransStat(strCPictureName, rCPercent) == TRUE) &&
(CheckBoxEnableData->isChecked()))
{
/* Enable controls */
ProgressBarCurPict->setEnabled(TRUE);
TextLabelCurPict->setEnabled(TRUE);
/* We want to file name, not the complete path -> "QFileInfo" */
QFileInfo FileInfo(strCPictureName.c_str());
/* Show current file name and percentage */
TextLabelCurPict->setText(FileInfo.fileName());
ProgressBarCurPict->setProgress((int) (rCPercent * 100)); /* % */
}
else
{
/* Disable controls */
ProgressBarCurPict->setEnabled(FALSE);
TextLabelCurPict->setEnabled(FALSE);
}
}
}
void TransmDialog::OnButtonStartStop()
{
int i;
if (bIsStarted == TRUE)
{
/* Stop transmitter */
TransThread.Stop();
ButtonStartStop->setText(tr("&Start"));
EnableAllControlsForSet();
bIsStarted = FALSE;
}
else
{
/* Start transmitter */
/* Set text message */
TransThread.DRMTransmitter.GetAudSrcEnc()->ClearTextMessage();
for (i = 1; i < vecstrTextMessage.Size(); i++)
TransThread.DRMTransmitter.GetAudSrcEnc()->
SetTextMessage(vecstrTextMessage[i]);
/* Set file names for data application */
TransThread.DRMTransmitter.GetAudSrcEnc()->ClearPicFileNames();
/* Iteration through list view items. Code based on QT sample code for
list view items */
QListViewItemIterator it(ListViewFileNames);
for (; it.current(); it++)
{
/* Complete file path is in third column */
const QString strFileName = it.current()->text(2);
/* Extract format string */
QFileInfo FileInfo(strFileName);
const QString strFormat = FileInfo.extension(FALSE);
TransThread.DRMTransmitter.GetAudSrcEnc()->
SetPicFileName(strFileName.latin1(), strFormat.latin1());
}
TransThread.start();
ButtonStartStop->setText(tr("&Stop"));
DisableAllControlsForSet();
bIsStarted = TRUE;
}
}
void TransmDialog::OnToggleCheckBoxEnableTextMessage(bool bState)
{
EnableTextMessage(bState);
}
void TransmDialog::EnableTextMessage(const _BOOLEAN bFlag)
{
if (bFlag == TRUE)
{
/* Enable text message controls */
ComboBoxTextMessage->setEnabled(TRUE);
MultiLineEditTextMessage->setEnabled(TRUE);
PushButtonAddText->setEnabled(TRUE);
PushButtonClearAllText->setEnabled(TRUE);
/* Set text message flag in global struct */
TransThread.DRMTransmitter.GetParameters()->
Service[0].AudioParam.bTextflag = TRUE;
}
else
{
/* Disable text message controls */
ComboBoxTextMessage->setEnabled(FALSE);
MultiLineEditTextMessage->setEnabled(FALSE);
PushButtonAddText->setEnabled(FALSE);
PushButtonClearAllText->setEnabled(FALSE);
/* Set text message flag in global struct */
TransThread.DRMTransmitter.GetParameters()->
Service[0].AudioParam.bTextflag = FALSE;
}
}
void TransmDialog::OnToggleCheckBoxEnableAudio(bool bState)
{
EnableAudio(bState);
if (bState)
{
/* Set audio enable check box */
CheckBoxEnableData->setChecked(FALSE);
EnableData(FALSE);
}
else
{
/* Set audio enable check box */
CheckBoxEnableData->setChecked(TRUE);
EnableData(TRUE);
}
}
void TransmDialog::EnableAudio(const _BOOLEAN bFlag)
{
if (bFlag == TRUE)
{
/* Enable audio controls */
GroupBoxTextMessage->setEnabled(TRUE);
ComboBoxProgramType->setEnabled(TRUE);
/* Only one audio service */
TransThread.DRMTransmitter.GetParameters()->
iNumAudioService = 1;
TransThread.DRMTransmitter.GetParameters()->
iNumDataService = 0;
/* Audio flag of this service */
TransThread.DRMTransmitter.GetParameters()->
Service[0].eAudDataFlag = CParameter::SF_AUDIO;
/* Always use stream number 0 right now, TODO */
TransThread.DRMTransmitter.GetParameters()->
Service[0].AudioParam.iStreamID = 0;
/* Programme Type code, get it from combo box */
TransThread.DRMTransmitter.GetParameters()->
Service[0].iServiceDescr = ComboBoxProgramType->currentItem();
}
else
{
/* Disable audio controls */
GroupBoxTextMessage->setEnabled(FALSE);
ComboBoxProgramType->setEnabled(FALSE);
}
}
void TransmDialog::OnToggleCheckBoxEnableData(bool bState)
{
EnableData(bState);
if (bState)
{
/* Set audio enable check box */
CheckBoxEnableAudio->setChecked(FALSE);
EnableAudio(FALSE);
}
else
{
/* Set audio enable check box */
CheckBoxEnableAudio->setChecked(TRUE);
EnableAudio(TRUE);
}
}
void TransmDialog::EnableData(const _BOOLEAN bFlag)
{
if (bFlag == TRUE)
{
/* Enable data controls */
ListViewFileNames->setEnabled(TRUE);
PushButtonClearAllFileNames->setEnabled(TRUE);
PushButtonAddFile->setEnabled(TRUE);
/* Only one data service */
TransThread.DRMTransmitter.GetParameters()->
iNumAudioService = 0;
TransThread.DRMTransmitter.GetParameters()->
iNumDataService = 1;
/* Data flag for this service */
TransThread.DRMTransmitter.GetParameters()->
Service[0].eAudDataFlag = CParameter::SF_DATA;
/* Always use stream number 0, TODO */
TransThread.DRMTransmitter.GetParameters()->
Service[0].DataParam.iStreamID = 0;
/* Init SlideShow application */
TransThread.DRMTransmitter.GetParameters()->
Service[0].DataParam.iPacketLen = 45; /* TEST */
TransThread.DRMTransmitter.GetParameters()->
Service[0].DataParam.eDataUnitInd = CParameter::DU_DATA_UNITS;
TransThread.DRMTransmitter.GetParameters()->
Service[0].DataParam.eAppDomain = CParameter::AD_DAB_SPEC_APP;
/* The value 0 indicates that the application details are provided
solely by SDC data entity type 5 */
TransThread.DRMTransmitter.GetParameters()->
Service[0].iServiceDescr = 0;
}
else
{
/* Disable data controls */
ListViewFileNames->setEnabled(FALSE);
PushButtonClearAllFileNames->setEnabled(FALSE);
PushButtonAddFile->setEnabled(FALSE);
}
}
_BOOLEAN TransmDialog::GetMessageText(const int iID)
{
_BOOLEAN bTextIsNotEmpty = TRUE;
/* Check if text control is not empty */
if (MultiLineEditTextMessage->edited())
{
/* Check size of container. If not enough space, enlarge */
if (iID == vecstrTextMessage.Size())
vecstrTextMessage.Enlarge(1);
/* First line */
vecstrTextMessage[iID] =
MultiLineEditTextMessage->textLine(0).utf8();
/* Other lines */
const int iNumLines = MultiLineEditTextMessage->numLines();
for (int i = 1; i < iNumLines; i++)
{
/* Insert line break */
vecstrTextMessage[iID].append("\x0A");
/* Insert text of next line */
vecstrTextMessage[iID].
append(MultiLineEditTextMessage->textLine(i).utf8());
}
}
else
bTextIsNotEmpty = FALSE;
return bTextIsNotEmpty;
}
void TransmDialog::OnPushButtonAddText()
{
if (iIDCurrentText == 0)
{
/* Add new message */
if (GetMessageText(vecstrTextMessage.Size()) == TRUE)
{
/* If text was not empty, add new text in combo box */
const int iNewID = vecstrTextMessage.Size() - 1;
ComboBoxTextMessage->insertItem(QString().setNum(iNewID), iNewID);
/* Clear added text */
MultiLineEditTextMessage->clear();
MultiLineEditTextMessage->setEdited(FALSE);
}
}
else
{
/* Text was modified */
GetMessageText(iIDCurrentText);
}
}
void TransmDialog::OnButtonClearAllText()
{
/* Clear container */
vecstrTextMessage.Init(1);
iIDCurrentText = 0;
/* Clear combo box */
ComboBoxTextMessage->clear();
ComboBoxTextMessage->insertItem(tr("new"), 0);
/* Clear multi line edit */
MultiLineEditTextMessage->clear();
MultiLineEditTextMessage->setEdited(FALSE);
}
void TransmDialog::OnPushButtonAddFileName()
{
/* Show "open file" dialog. Let the user select more than one file */
QStringList list = QFileDialog::getOpenFileNames(
tr("Image Files (*.png *.jpg *.jpeg *.jfif)"), NULL, this);
/* Check if user not hit the cancel button */
if (!list.isEmpty())
{
/* Insert all selected file names */
for (QStringList::Iterator it = list.begin(); it != list.end(); it++)
{
QFileInfo FileInfo((*it));
/* Insert list view item. The object which is created here will be
automatically destroyed by QT when the parent
("ListViewFileNames") is destroyed */
ListViewFileNames->insertItem(
new QListViewItem(ListViewFileNames, FileInfo.fileName(),
QString().setNum((float) FileInfo.size() / 1000.0, 'f', 2),
FileInfo.filePath()));
}
}
}
void TransmDialog::OnButtonClearAllFileNames()
{
/* Clear list box for file names */
ListViewFileNames->clear();
}
void TransmDialog::OnComboBoxTextMessageHighlighted(int iID)
{
iIDCurrentText = iID;
/* Set text control with selected message */
MultiLineEditTextMessage->clear();
MultiLineEditTextMessage->setEdited(FALSE);
if (iID != 0)
{
/* Write stored text in multi line edit control */
MultiLineEditTextMessage->insertLine(vecstrTextMessage[iID].c_str());
}
}
void TransmDialog::OnTextChangedSndCrdIF(const QString& strIF)
{
/* Convert string to floating point value "toFloat()" */
TransThread.DRMTransmitter.SetCarOffset(strIF.toFloat());
}
void TransmDialog::OnTextChangedServiceID(const QString& strID)
{
/* Convert string to unsigned integer "toUInt()" */
TransThread.DRMTransmitter.GetParameters()->Service[0].iServiceID =
strID.toUInt();
}
void TransmDialog::OnTextChangedServiceLabel(const QString& strLabel)
{
/* Set additional text for log file. Conversion from QString to STL
string is needed (done with .utf8() function of QT string) */
TransThread.DRMTransmitter.GetParameters()->Service[0].strLabel =
strLabel.utf8();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -