⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transmdlg.cpp

📁 Dream.exe soft source (Visual C++)
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		   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 + -