/* avdeviceconfig.cpp - Kopete Video Device Configuration Panel Copyright (c) 2005-2006 by Cláudio da Silveira Pinheiro Kopete (c) 2002-2003 by the Kopete developers ************************************************************************* * * * 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 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include "videodevice.h" typedef KGenericFactory 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"