You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdenetwork/kopete/kopete/config/avdevice/avdeviceconfig.cpp

232 lines
10 KiB

/*
avdeviceconfig.cpp - Kopete Video Device Configuration Panel
Copyright (c) 2005-2006 by Cláudio da Silveira Pinheiro <taupter@gmail.com>
Kopete (c) 2002-2003 by the Kopete developers <kopete-devel@kde.org>
*************************************************************************
* *
* This program 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 of the License, or *
* (at your option) any later version. *
* *
*************************************************************************
*/
#include "avdeviceconfig.h"
#include "avdeviceconfig_videoconfig.h"
#include "videodevice.h"
#include <tqcheckbox.h>
#include <tqlayout.h>
#include <tqlabel.h>
#include <tqhbuttongroup.h>
#include <tqspinbox.h>
#include <tqcombobox.h>
#include <tqslider.h>
#include <kplugininfo.h>
#include <klocale.h>
#include <kpushbutton.h>
#include <kgenericfactory.h>
#include <ktrader.h>
#include <tdeconfig.h>
#include <kcombobox.h>
#include <tqimage.h>
#include <tqpixmap.h>
#include <tqtabwidget.h>
//#include "videodevice.h"
typedef KGenericFactory<AVDeviceConfig, TQWidget> KopeteAVDeviceConfigFactory;
K_EXPORT_COMPONENT_FACTORY( kcm_kopete_avdeviceconfig, KopeteAVDeviceConfigFactory( "kcm_kopete_avdeviceconfig" ) )
AVDeviceConfig::AVDeviceConfig(TQWidget *parent, const char * name , const TQStringList &args)
: TDECModule( KopeteAVDeviceConfigFactory::instance(), parent, args )
{
kdDebug() << "kopete:config (avdevice): KopeteAVDeviceConfigFactory::instance() called. " << endl;
(new TQVBoxLayout(this))->setAutoAdd(true);
mAVDeviceTabCtl = new TQTabWidget(this, "mAVDeviceTabCtl");
// "Video" TAB ============================================================
mPrfsVideoDevice = new AVDeviceConfig_VideoDevice(mAVDeviceTabCtl);
connect(mPrfsVideoDevice->mDeviceKComboBox, TQT_SIGNAL(activated(int)), this, TQT_SLOT(slotDeviceKComboBoxChanged(int)));
connect(mPrfsVideoDevice->mInputKComboBox, TQT_SIGNAL(activated(int)), this, TQT_SLOT(slotInputKComboBoxChanged(int)));
connect(mPrfsVideoDevice->mStandardKComboBox, TQT_SIGNAL(activated(int)), this, TQT_SLOT(slotStandardKComboBoxChanged(int)));
connect(mPrfsVideoDevice->mBrightnessSlider, TQT_SIGNAL(valueChanged(int)), this, TQT_SLOT(slotBrightnessSliderChanged(int)));
connect(mPrfsVideoDevice->mContrastSlider, TQT_SIGNAL(valueChanged(int)), this, TQT_SLOT(slotContrastSliderChanged(int)));
connect(mPrfsVideoDevice->mSaturationSlider, TQT_SIGNAL(valueChanged(int)), this, TQT_SLOT(slotSaturationSliderChanged(int)));
connect(mPrfsVideoDevice->mWhitenessSlider, TQT_SIGNAL(valueChanged(int)), this, TQT_SLOT(slotWhitenessSliderChanged(int)));
connect(mPrfsVideoDevice->mHueSlider, TQT_SIGNAL(valueChanged(int)), this, TQT_SLOT(slotHueSliderChanged(int)));
connect(mPrfsVideoDevice->mImageAutoBrightnessContrast, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(slotImageAutoBrightnessContrastChanged(bool)));
connect(mPrfsVideoDevice->mImageAutoColorCorrection, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(slotImageAutoColorCorrectionChanged(bool)));
connect(mPrfsVideoDevice->mImageAsMirror, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(slotImageAsMirrorChanged(bool)));
// why is this here?
// mPrfsVideoDevice->mVideoImageLabel->setPixmap(qpixmap);
mAVDeviceTabCtl->addTab(mPrfsVideoDevice, i18n("&Video"));
mVideoDevicePool = Kopete::AV::VideoDevicePool::self();
mVideoDevicePool->open();
mVideoDevicePool->setSize(320, 240);
mVideoDevicePool->fillDeviceKComboBox(mPrfsVideoDevice->mDeviceKComboBox);
mVideoDevicePool->fillInputKComboBox(mPrfsVideoDevice->mInputKComboBox);
mVideoDevicePool->fillStandardKComboBox(mPrfsVideoDevice->mStandardKComboBox);
setVideoInputParameters();
mVideoDevicePool->startCapturing();
mVideoDevicePool->getFrame();
mVideoDevicePool->getImage(&qimage);
if (qpixmap.convertFromImage(qimage,0) == true)
mPrfsVideoDevice->mVideoImageLabel->setPixmap(qpixmap);
connect(&qtimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotUpdateImage()) );
qtimer.start(0,FALSE);
}
AVDeviceConfig::~AVDeviceConfig()
{
mVideoDevicePool->close();
}
/*!
\fn VideoDeviceConfig::save()
*/
void AVDeviceConfig::save()
{
/// @todo implement me
kdDebug() << "kopete:config (avdevice): save() called. " << endl;
mVideoDevicePool->saveConfig();
}
/*!
\fn VideoDeviceConfig::load()
*/
void AVDeviceConfig::load()
{
/// @todo implement me
}
void AVDeviceConfig::slotSettingsChanged(bool){
emit changed(true);
}
void AVDeviceConfig::slotValueChanged(int){
emit changed( true );
}
void AVDeviceConfig::setVideoInputParameters()
{
if(mVideoDevicePool->size())
{
mPrfsVideoDevice->mBrightnessSlider->setValue((int)(mVideoDevicePool->getBrightness()*65535));
mPrfsVideoDevice->mContrastSlider->setValue((int)(mVideoDevicePool->getContrast()*65535));
mPrfsVideoDevice->mSaturationSlider->setValue((int)(mVideoDevicePool->getSaturation()*65535));
mPrfsVideoDevice->mWhitenessSlider->setValue((int)(mVideoDevicePool->getWhiteness()*65535));
mPrfsVideoDevice->mHueSlider->setValue((int)(mVideoDevicePool->getHue()*65535));
mPrfsVideoDevice->mImageAutoBrightnessContrast->setChecked(mVideoDevicePool->getAutoBrightnessContrast());
mPrfsVideoDevice->mImageAutoColorCorrection->setChecked(mVideoDevicePool->getAutoColorCorrection());
mPrfsVideoDevice->mImageAsMirror->setChecked(mVideoDevicePool->getImageAsMirror());
}
}
void AVDeviceConfig::slotDeviceKComboBoxChanged(int){
kdDebug() << "kopete:config (avdevice): slotDeviceKComboBoxChanged(int) called. " << endl;
unsigned int newdevice = mPrfsVideoDevice->mDeviceKComboBox->currentItem();
kdDebug() << "kopete:config (avdevice): slotDeviceKComboBoxChanged(int) Current device: " << mVideoDevicePool->currentDevice() << "New device: " << newdevice << endl;
if ((newdevice < mVideoDevicePool->m_videodevice.size())&&(newdevice!=mVideoDevicePool->currentDevice()))
{
kdDebug() << "kopete:config (avdevice): slotDeviceKComboBoxChanged(int) should change device. " << endl;
mVideoDevicePool->open(newdevice);
mVideoDevicePool->setSize(320, 240);
mVideoDevicePool->fillInputKComboBox(mPrfsVideoDevice->mInputKComboBox);
mVideoDevicePool->startCapturing();
setVideoInputParameters();
kdDebug() << "kopete:config (avdevice): slotDeviceKComboBoxChanged(int) called. " << endl;
emit changed( true );
}
}
void AVDeviceConfig::slotInputKComboBoxChanged(int){
unsigned int newinput = mPrfsVideoDevice->mInputKComboBox->currentItem();
if((newinput < mVideoDevicePool->inputs()) && ( newinput !=mVideoDevicePool->currentInput()))
{
mVideoDevicePool->selectInput(mPrfsVideoDevice->mInputKComboBox->currentItem());
mVideoDevicePool->fillStandardKComboBox(mPrfsVideoDevice->mStandardKComboBox);
setVideoInputParameters();
emit changed( true );
}
}
// ATTENTION: The 65535.0 value must be used instead of 65535 because the trailing ".0" converts the resulting value to floating point number.
// Otherwise the resulting division operation would return 0 or 1 exclusively.
void AVDeviceConfig::slotStandardKComboBoxChanged(int){
emit changed( true );
}
void AVDeviceConfig::slotBrightnessSliderChanged(int){
kdDebug() << "kopete:config (avdevice): slotBrightnessSliderChanged(int) called. " << mPrfsVideoDevice->mBrightnessSlider->value() / 65535.0 << endl;
mVideoDevicePool->setBrightness( mPrfsVideoDevice->mBrightnessSlider->value() / 65535.0 );
emit changed( true );
}
void AVDeviceConfig::slotContrastSliderChanged(int){
kdDebug() << "kopete:config (avdevice): slotContrastSliderChanged(int) called. " << mPrfsVideoDevice->mContrastSlider->value() / 65535.0 << endl;
mVideoDevicePool->setContrast( mPrfsVideoDevice->mContrastSlider->value() / 65535.0 );
emit changed( true );
}
void AVDeviceConfig::slotSaturationSliderChanged(int){
kdDebug() << "kopete:config (avdevice): slotSaturationSliderChanged(int) called. " << mPrfsVideoDevice->mSaturationSlider->value() / 65535.0 << endl;
mVideoDevicePool->setSaturation( mPrfsVideoDevice->mSaturationSlider->value() / 65535.0);
emit changed( true );
}
void AVDeviceConfig::slotWhitenessSliderChanged(int){
kdDebug() << "kopete:config (avdevice): slotWhitenessSliderChanged(int) called. " << mPrfsVideoDevice->mWhitenessSlider->value() / 65535.0 << endl;
mVideoDevicePool->setWhiteness( mPrfsVideoDevice->mWhitenessSlider->value() / 65535.0);
emit changed( true );
}
void AVDeviceConfig::slotHueSliderChanged(int){
kdDebug() << "kopete:config (avdevice): slotHueSliderChanged(int) called. " << mPrfsVideoDevice->mHueSlider->value() / 65535.0 << endl;
mVideoDevicePool->setHue( mPrfsVideoDevice->mHueSlider->value() / 65535.0 );
emit changed( true );
}
void AVDeviceConfig::slotImageAutoBrightnessContrastChanged(bool){
kdDebug() << "kopete:config (avdevice): slotImageAutoBrightnessContrastChanged(" << mPrfsVideoDevice->mImageAutoBrightnessContrast->isChecked() << ") called. " << endl;
mVideoDevicePool->setAutoBrightnessContrast(mPrfsVideoDevice->mImageAutoBrightnessContrast->isChecked());
emit changed( true );
}
void AVDeviceConfig::slotImageAutoColorCorrectionChanged(bool){
kdDebug() << "kopete:config (avdevice): slotImageAutoColorCorrectionChanged(" << mPrfsVideoDevice->mImageAutoColorCorrection->isChecked() << ") called. " << endl;
mVideoDevicePool->setAutoColorCorrection(mPrfsVideoDevice->mImageAutoColorCorrection->isChecked());
emit changed( true );
}
void AVDeviceConfig::slotImageAsMirrorChanged(bool){
kdDebug() << "kopete:config (avdevice): slotImageAsMirrorChanged(" << mPrfsVideoDevice->mImageAsMirror->isChecked() << ") called. " << endl;
mVideoDevicePool->setImageAsMirror(mPrfsVideoDevice->mImageAsMirror->isChecked());
emit changed( true );
}
void AVDeviceConfig::slotUpdateImage()
{
mVideoDevicePool->getFrame();
mVideoDevicePool->getImage(&qimage);
bitBlt(mPrfsVideoDevice->mVideoImageLabel, 0, 0, &qimage, 0, TQt::CopyROP);
// kdDebug() << "kopete (avdeviceconfig_videoconfig): Image updated." << endl;
}
#include "avdeviceconfig.moc"