blob: 27dd250d2a72a6a74dc3ac4601ea89f9994aeeb1 [file] [log] [blame]
/**
* projectM -- Milkdrop-esque visualisation SDK
* Copyright (C)2003-2004 projectM Team
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* See 'LICENSE.txt' included within this release
*
*/
#include "QPulseAudioDeviceChooser.hpp"
#include <QSettings>
#include <QtDebug>
#include <QHBoxLayout>
void QPulseAudioDeviceChooser::writeSettings()
{
QSettings settings ( "projectM", "qprojectM-pulseaudio" );
settings.setValue ( "tryFirstAvailablePlaybackMonitor",
this->tryFirstPlayBackMonitorCheckBox->checkState() == Qt::Checked );
if ( _qpulseAudioThread != 0 && (_qpulseAudioThread->devices().size() > 0) && _qpulseAudioThread->sourcePosition() != _qpulseAudioThread->devices().end())
settings.setValue("pulseAudioDeviceName", *_qpulseAudioThread->sourcePosition());
}
void QPulseAudioDeviceChooser::readSettings()
{
QSettings settings ( "projectM", "qprojectM-pulseaudio" );
bool tryFirst = settings.value
( "tryFirstAvailablePlaybackMonitor", true ).toBool() ;
this->tryFirstPlayBackMonitorCheckBox->setCheckState
( tryFirst ? Qt::Checked : Qt::Unchecked );
if ( tryFirst )
{
this->devicesListView->setEnabled(false);
} else {
this->devicesListView->setEnabled(true);
}
}
void QPulseAudioDeviceChooser::updateDevicesListViewLock(int state) {
devicesListView->setEnabled(state != Qt::Checked);
if (state == Qt::Checked) {
if (_qpulseAudioThread != 0)
_qpulseAudioThread->connectDevice();
}
}
QPulseAudioDeviceChooser::QPulseAudioDeviceChooser ( QPulseAudioThread * qpulseAudioThread, QWidget * parent = 0, Qt::WindowFlags f ) : QDialog ( parent, f ), _qpulseAudioDeviceModel ( qpulseAudioThread->devices(), qpulseAudioThread->sourcePosition(), this), _qpulseAudioThread ( qpulseAudioThread )
{
setupUi ( this );
readSettings();
this->devicesListView->setModel ( &_qpulseAudioDeviceModel );
QHBoxLayout * hboxLayout = new QHBoxLayout();
hboxLayout->addWidget(this->layoutWidget);
this->setLayout(hboxLayout);
connect ( tryFirstPlayBackMonitorCheckBox,
SIGNAL(stateChanged(int)), this, SLOT(updateDevicesListViewLock(int)));
// Using the display index is fine as as we are getting the text associated with it
// and passing the raw string to pulse audio.
connect ( devicesListView, SIGNAL ( doubleClicked ( const QModelIndex& ) ),
_qpulseAudioThread, SLOT ( connectDevice ( const QModelIndex& ) ) );
connect ( _qpulseAudioThread, SIGNAL ( deviceChanged()),
&_qpulseAudioDeviceModel, SLOT (updateItemHighlights()));
}
void QPulseAudioDeviceChooser::open()
{
this->show();
}