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

📄 audiocontrol.cpp

📁 KphoneSI (kpsi) is a SIP (Session Initiation Protocol) user agent for Linux, with which you can in
💻 CPP
字号:
#include <qvbox.h>#include <qlabel.h>#include <qvbuttongroup.h>#include <qhgroupbox.h>#include <qhbuttongroup.h>#include <qradiobutton.h>#include <qpushbutton.h>#include <qlineedit.h>#include <qsettings.h>#include <qlayout.h>#include <qdialog.h>#include "../config.h"#include "sessioncontrol.h"#include "dspoutoss.h"#include "audiocontrol.h"#include "kstatics.h"AudioControl::AudioControl( SessionControl *sessioncontrol, QWidget *parent, const char *name )	: QDialog( parent, QString( name ) + "Audio Properties", true ){	a = sessioncontrol;	QVBox *vbox = new QVBox( this );	vbox->setMargin( 1 );	vbox->setSpacing( 1 );	QVBoxLayout *vboxl = new QVBoxLayout( this);// , 5 );	vboxl->addWidget( vbox );	pFix = QString::fromAscii( name);	debug=KStatics::debugLevel;#ifdef ALSA_SUPPORT	bg4 = new QHButtonGroup( "Audio Mode", vbox );	ossButton = new QRadioButton( "OSS", bg4 );	bg4->insert( ossButton, oss );	connect( ossButton, SIGNAL( clicked() ), this, SLOT( ossButtonClicked() ) );	alsaButton = new QRadioButton( "ALSA", bg4 );	bg4->insert( alsaButton, alsa );	connect( alsaButton, SIGNAL( clicked() ), this, SLOT( alsaButtonClicked() ) );#endif	bg2 = new QHButtonGroup( "OSS Device Mode", vbox );	rwButton = new QRadioButton( "ReadWrite", bg2 );	bg2->insert( rwButton, rw );	rowoButton = new QRadioButton( "ReadOnly / WriteOnly", bg2 );	bg2->insert( rowoButton, rowo );	connect( rwButton, SIGNAL( clicked() ), this, SLOT( rwButtonClicked() ) );	connect( rowoButton, SIGNAL( clicked() ), this, SLOT( rowoButtonClicked() ) );	(void) new QLabel( "Device for WriteOnly or ReadWrite:", vbox );	dspdev = new QLineEdit( a->getOSSFilename(), vbox );	dspdev->setMinimumWidth( fontMetrics().maxWidth() * 20 );	dspdev->setText( a->getOSSFilename() );	(void) new QLabel( "Device for ReadOnly:", vbox );	dspdev2 = new QLineEdit( a->getOSSFilename2(), vbox );	dspdev2->setMinimumWidth( fontMetrics().maxWidth() * 20 );	dspdev2->setText( a->getOSSFilename2() );QSettings settings;	audioMode = settings.readEntry( KStatics::dBase+pFix+"/Audio/audio", "oss" );#ifdef ALSA_SUPPORT     	if( audioMode == "alsa" ) {		a->setAudioSys( SessionControl::isALSA );		alsaButton->setChecked(TRUE);		rwButton->setEnabled(FALSE);		rowoButton->setEnabled(FALSE);		dspdev->setEnabled(TRUE);		dspdev->setText(a->getALSAFilename());		dspdev2->setEnabled(FALSE);	} else {		a->setAudioSys( SessionControl::isOSS );		ossButton->setChecked(TRUE);		rowoButton->setEnabled(TRUE);		rwButton->setEnabled(TRUE);		QString mode = settings.readEntry( KStatics::dBase+pFix+"/Audio/mode", "readonly_writeonly" );		if( mode == "readwrite" ) {			rwButton->setChecked(TRUE);			rowoButton->setChecked(FALSE);			dspdev2->setEnabled(FALSE);		} else {			rwButton->setChecked(FALSE);			rowoButton->setChecked(TRUE);			dspdev2->setEnabled(TRUE);		}	}#endif			QString pcodec=settings.readEntry( KStatics::dBase+pFix+"/Audio/poscodec0","0");	QString scodec=settings.readEntry( KStatics::dBase+pFix+"/Audio/poscodec1","1");	QString tcodec=settings.readEntry( KStatics::dBase+pFix+"/Audio/poscodec2","2");	QString qcodec=settings.readEntry( KStatics::dBase+pFix+"/Audio/poscodec3","3");#ifdef SPEEX	codecBox = new QHGroupBox( "Audio Codec Position (values: 0 highest to 4 lowest; -1 disables codec)",vbox);	QString fcodec=settings.readEntry( KStatics::dBase+pFix+"/Audio/poscodec4","4");#else 	QString fcodec=settings.readEntry( KStatics::dBase+pFix+"/Audio/poscodec4","-1");	codecBox = new QHGroupBox( "Audio Codec Position (values: 0 highest to 3 lowest; -1 disables codec)",vbox);#endif	(void) new QLabel( "        ULAW", codecBox );		codecEdit0 = new QLineEdit( pcodec, codecBox );	codecEdit0->setMaxLength(2);	(void) new QLabel( "        ALAW", codecBox );		codecEdit1 = new QLineEdit( scodec, codecBox );	codecEdit1->setMaxLength(2);	(void) new QLabel("        GSM", codecBox );		codecEdit2 = new QLineEdit( tcodec, codecBox );	codecEdit2->setMaxLength(2);	(void) new QLabel( "        ILBC", codecBox );		codecEdit3 = new QLineEdit( qcodec, codecBox );	codecEdit3->setMaxLength(2);#ifdef SPEEX	(void) new QLabel( "       Speex", codecBox );		codecEdit4 = new QLineEdit( fcodec, codecBox );	codecEdit4->setMaxLength(2);#endif		// Size of Payload	bg3 = new QHButtonGroup( "Size of Payload", vbox );	QRadioButton *s80 = new QRadioButton( "80 (10 ms Sample)", bg3 );	bg3->insert( s80, size80 );	QRadioButton *s160 = new QRadioButton( "160 (20 ms Sample)", bg3 );	bg3->insert( s160, size160 );	QRadioButton *s240 = new QRadioButton( "240 (30 ms Sample)", bg3 );	bg3->insert( s240, size240 );	int s=  settings.readNumEntry( KStatics::dBase+pFix+"/dsp/SizeOfPayload", 160 );	switch(s ) {		case 80: 			s80->setChecked(TRUE); 			s160->setChecked(FALSE); 			s240->setChecked(FALSE); 			break;		case 160: 			s80->setChecked(FALSE); 			s160->setChecked(TRUE); 			s240->setChecked(FALSE); 			break;		case 240: 			s80->setChecked(FALSE); 			s160->setChecked(FALSE); 			s240->setChecked(TRUE); 			break;	}	// Ringing tone	rtb = new QHButtonGroup( "Ringtone", vbox );	QRadioButton *rtb0 = new QRadioButton( "No", rtb );	rtb->insert( rtb0, rtbS0 );	QRadioButton *rtb1 = new QRadioButton( "Yes", rtb );					switch( settings.readNumEntry( KStatics::dBase+pFix+"/General/Ringtone", 0 ) ) {		case 0: rtb0->setChecked(TRUE); break;		case 1: rtb1->setChecked(TRUE); break;			}	//Ring devices		(void) new QLabel("Ringtone device for local ringing:",  vbox );	ringtonedevice = new QLineEdit( vbox );	ringtonedevice->setMinimumWidth( fontMetrics().maxWidth() * 20 );	ringtonedevice->setText( a->getRingtonedevice() );	(void) new QLabel("application for ringing:",  vbox );	ringtoneapp = new QLineEdit( vbox );	ringtoneapp->setMinimumWidth( fontMetrics().maxWidth() * 20 );	ringtoneapp->setText( a->getRingtoneapp() );	(void) new QLabel("Ringtone parameters:",  vbox );	ringtoneP = new QLineEdit( vbox );	ringtoneP->setMinimumWidth( fontMetrics().maxWidth() * 20 );	ringtoneP->setText( a->getRingtoneP() );	(void) new QLabel("Ringtone sound file:",  vbox );	ringtonefile = new QLineEdit( vbox );	ringtonefile->setMinimumWidth( fontMetrics().maxWidth() * 20 );	ringtonefile->setText( a->getRingtonefile() );		QHBoxLayout *buttonBox;	buttonBox = new QHBoxLayout( vboxl, 6 ); 	okPushButton = new QPushButton( this, "ok button" );	okPushButton->setText( "OK" );	okPushButton->setDefault( TRUE );	buttonBox->addWidget( okPushButton );	cancelPushButton = new QPushButton( this, "cancel button" );	cancelPushButton->setText( "Cancel" );	cancelPushButton->setAccel( Key_Escape );	buttonBox->addWidget( cancelPushButton );	connect( okPushButton, SIGNAL( clicked() ), this, SLOT( slotOk() ) );	connect( cancelPushButton, SIGNAL( clicked() ), this, SLOT( slotCancel() ) );}AudioControl::~AudioControl( void ){}void AudioControl::ossButtonClicked( void ){	bg2->setEnabled(TRUE);	rowoButton->setEnabled(TRUE);	rwButton->setEnabled(TRUE);	dspdev->setEnabled(TRUE);	dspdev2->setEnabled(TRUE);	dspdev->setText( a->getOSSFilename() );	dspdev2->setText( a->getOSSFilename2() );}void AudioControl::alsaButtonClicked( void ){	bg2->setEnabled(FALSE);	dspdev->setEnabled(TRUE);	dspdev2->setEnabled(FALSE);	dspdev->setText( a->getALSAFilename() );	}void AudioControl::rwButtonClicked( void ){	dspdev2->setEnabled(FALSE);	}void AudioControl::rowoButtonClicked( void ){	dspdev2->setEnabled(TRUE);}void AudioControl::slotOk( void ){	slotApply();	QDialog::accept();}void AudioControl::slotApply( void ){	bool ok;	QSettings settings;#ifdef SPEEX	a->initCodecAudio( codecEdit0->text().toInt(&ok,10),codecEdit1->text().toInt(&ok,10),codecEdit2->text().toInt(&ok,10),codecEdit3->text().toInt(&ok,10),codecEdit4->text().toInt(&ok,10) );#else		a->initCodecAudio( codecEdit0->text().toInt(&ok,10),codecEdit1->text().toInt(&ok,10),codecEdit2->text().toInt(&ok,10),codecEdit3->text().toInt(&ok,10), -1 );#endif	switch( bg2->id( bg2->selected() ) ) {		case rw:			settings.writeEntry( KStatics::dBase+pFix+"/Audio/mode", "readwrite");			a->setAudioRW(true);			if(debug >=  2) printf( "=====Audio: OSS in readwrite mode\n");			break;		case rowo:			settings.writeEntry( KStatics::dBase+pFix+"/Audio/mode", "readonly_writeonly");			a->setAudioRW(false);			if(debug >=  2) printf( "=====Audio: OSS in readonlywriteonly mode\n");			break;	}		switch( bg4->id( bg4->selected() ) ) {#ifdef ALSA_SUPPORT		case alsa:			settings.writeEntry( KStatics::dBase+pFix+"/Audio/audio", "alsa");			a->setAudioSys( SessionControl::isALSA );			audioMode = "alsa";			break;#endif		default:			settings.writeEntry( KStatics::dBase+pFix+"/Audio/audio", "oss");			a->setAudioSys( SessionControl::isOSS );			audioMode = "oss";			break;	}		if(debug >=  2) printf( "=====Audio: audio system=%s\n",audioMode.latin1());	int payload;	switch( bg3->id( bg3->selected() ) ) {		case size80:			payload = 80;			break;		case size160:			payload = 160;			break;		case size240:			payload = 240;			break;		default:			payload = 240;	}	a->setPayload( payload );	settings.writeEntry( KStatics::dBase+pFix+"/dsp/SizeOfPayload", payload );	int rtbSel;switch( rtb->id( rtb->selected() ) ) {		case 0:		rtbSel=0;		break;	case 1:		rtbSel=1;		break;	default:		rtbSel=1;		break;}		a->setRinging( rtbSel );	settings.writeEntry( KStatics::dBase+pFix+"/General/Ringtone",rtbSel );		QString of1 = dspdev->text();	QString of2 = dspdev2->text();	QString rf  = ringtonefile->text();	QString rp  = ringtoneP->text();	QString ra  = ringtoneapp->text();	QString rd  = ringtonedevice->text();		if(audioMode == "alsa") {		a->setALSAFilename( of1 );		settings.writeEntry( KStatics::dBase+pFix+"/Audio/alsa-filename", of1 );	} else {		a->setOSSFilename( of1 );		settings.writeEntry( KStatics::dBase+pFix+"/Audio/oss-filename", of1 );		a->setOSSFilename2( of2);		settings.writeEntry( KStatics::dBase+pFix+"/Audio/oss-filename2", of2);	}	a->setRingtonefile( rf );	settings.writeEntry( KStatics::dBase+pFix+"/Audio/ringtone-file", rf );	a->setRingtoneapp( ra );	settings.writeEntry( KStatics::dBase+pFix+"/Audio/ringtone-application", ra );		a->setRingtonedevice(rd );	settings.writeEntry( KStatics::dBase+pFix+"/Audio/ringtone-device",rd);		a->setRingtoneP( rp );	settings.writeEntry( KStatics::dBase+pFix+"/Audio/ringtone-parameters" ,rp );	}void AudioControl::slotCancel( void ){	dspdev->setText( a->getOSSFilename() );	dspdev2->setText( a->getOSSFilename2() );	ringtoneP->setText( a->getRingtoneP() );	ringtoneapp->setText(a->getRingtoneapp() );	ringtonedevice->setText( a->getRingtonedevice() );	ringtonefile->setText( a->getRingtonefile() );		QDialog::reject();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -