Source Code (Use browser search to find items of interest.)

Class Index

arts'VControl (./kdemultimedia/arts/tools/main.h:46)

class VControl : public QFrame {
	Q_OBJECT
protected:
	class VScale *left, *right;
	class FFTScopeView *scopeView;
	StereoVolumeControl svc;
	SimpleSoundServer server;
	long effectID;

public:
	VControl(QWidget *parent);
	~VControl();

public slots:
	void updateScales();
	void setVolume(int vol);
	void showScopeView();
	void removeScopeView();
};

arts'VControl::VControl() (./kdemultimedia/arts/tools/main.cpp:119)

VControl::VControl(QWidget *parent) : QFrame(parent), scopeView(0),
	server(Reference("global:Arts_SimpleSoundServer"))
{
	setMinimumSize(20,300);
   	if(server.isNull())
   	{
       	QMessageBox::critical( 0, "artscontrol",
       i18n("Connection to the soundserver failed - make sure that artsd is really running."));
		exit(1);
   	}
	show();
	QBoxLayout * l = new QHBoxLayout( this );
	//l->setAutoAdd(TRUE);
	left = new VScale(this);
	l->addWidget(left);
	right = new VScale(this);
	l->addWidget(right);

	// 0   => 4.0
	// 200 => 2.0
	// 400 => 1.0
	// 600 => 0.5
	// 800 => 0.25
	// 1000 => 0.125
	// 1200 => 0.0 (forced)

	QSlider *slider;
	slider = new QSlider(0,1200,100,400,QSlider::Vertical,this,"volumeslider");
	connect(slider, SIGNAL(valueChanged(int)), this, SLOT(setVolume(int)));
	slider->setTickmarks( QSlider::Right );
	l->addWidget(slider);
	l->activate();
	/*
	   create a stereo volume control and push it into the
	   effect chain
	*/
	{
		// create a new stereo volume control object on the server
		Object svcobj = server.createObject("StereoVolumeControl");
		assert(!svcobj.isNull());

		// cast from "Object" to "StereoVolumeControl"
		svc = Reference(svcobj._toString());
		assert(!svc.isNull());

		svc.start();

		// put it into the effect chain
		effectID = server.outstack().insertBottom(svc,"Volume Control");
	}

	QTimer *updatescalestimer = new QTimer(this);
	updatescalestimer->start(100);
	connect(updatescalestimer,SIGNAL(timeout()),this,SLOT(updateScales()));
}


arts'VControl::~VControl() (./kdemultimedia/arts/tools/main.cpp:175)

VControl::~VControl()
{
	removeScopeView();
	// remove effect from effect chain
	server.outstack().remove(effectID);
}


arts'VControl::updateScales() (./kdemultimedia/arts/tools/main.cpp:182)

void VControl::updateScales()
{
	left->setValue(svc.currentVolumeLeft());
	right->setValue(svc.currentVolumeRight());
}


arts'VControl::setVolume() (./kdemultimedia/arts/tools/main.cpp:188)

void VControl::setVolume(int vol)
{
	float volume = pow(2.0,(400.0 - vol)/200.0);
	if(vol == 1200) volume = 0.0;

	svc.scaleFactor(volume);
}


arts'VControl::showScopeView() (./kdemultimedia/arts/tools/main.cpp:196)

void VControl::showScopeView()
{
	if(!scopeView)
	{
		scopeView = new FFTScopeView(server);
		connect(scopeView,SIGNAL(closed()),this,SLOT(removeScopeView()));
	}
}


arts'VControl::removeScopeView() (./kdemultimedia/arts/tools/main.cpp:205)

void VControl::removeScopeView()
{
	if(scopeView) delete scopeView;
	scopeView = 0;
}