diff --git a/kcmkgamma/gammactrl.cpp b/kcmkgamma/gammactrl.cpp index c9c491b..59e143d 100644 --- a/kcmkgamma/gammactrl.cpp +++ b/kcmkgamma/gammactrl.cpp @@ -1,139 +1,138 @@ /*************************************************************************** gammactrl.cpp - description ------------------- begin : Sun Oct 7 2001 copyright : (C) 2001 by Michael v.Ostheim email : MvOstheim@web.de ***************************************************************************/ /*************************************************************************** * * * 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 "gammactrl.h" #include #include #include #include #include "xvidextwrap.h" #include "displaynumber.h" #include "gammactrl.moc" GammaCtrl::GammaCtrl(QWidget *parent, XVidExtWrap *xvid, int channel, \ const QString& mingamma, const QString& maxgamma, const QString& setgamma) : QWidget(parent) { int maxslider = (int)( ( maxgamma.toDouble() - mingamma.toDouble() \ + 0.0005 ) * 20 ); int setslider = (int)( ( setgamma.toDouble() - mingamma.toDouble() \ + 0.0005 ) * 20 ); setslider = (setslider > maxslider) ? maxslider : setslider; setslider = (setslider < 0) ? 0 : setslider; suspended = false; changed=false; ming = mingamma.toFloat(); mgamma = mingamma; oldpos = setslider; gchannel = channel; xv = xvid; QHBoxLayout *layout = new QHBoxLayout(this); slider = new QSlider(Qt::Horizontal, this); - slider->setFixedHeight(24); slider->setTickPosition(QSlider::TicksBelow); slider->setRange(0, maxslider); slider->setTickInterval(2); slider->setValue(setslider); layout->addWidget(slider); connect(slider, SIGNAL(valueChanged(int)), SLOT(setGamma(int))); connect(slider, SIGNAL(sliderPressed()), SLOT(pressed())); textfield = new DisplayNumber(this, 4, 2); textfield->setText(setgamma); layout->addWidget(textfield); } GammaCtrl::~GammaCtrl() { } /** set gamma, slider and textfield */ void GammaCtrl::setGamma(const QString& gamma){ int sliderpos; sliderpos = (int)( ( gamma.toDouble() - mgamma.toDouble() + 0.0005 ) * 20 ); changed=true; slider->setValue(sliderpos); setGamma(sliderpos); if (suspended) { suspended=false; textfield->setDisabled(false); } } /** set slider and textfield */ void GammaCtrl::setControl(const QString& gamma){ int sliderpos; sliderpos = (int)( ( gamma.toDouble() - mgamma.toDouble() + 0.0005 ) * 20 ); setCtrl(sliderpos); } /** Return the current gamma value with precision prec */ QString GammaCtrl::gamma(int prec){ QString gammatext; gammatext.setNum(xv->getGamma(gchannel) + 0.0005, 'f', prec); return(gammatext); } /** Slot: set gamma and textfield */ void GammaCtrl::setGamma(int sliderpos){ if (sliderpos != oldpos || changed) { xv->setGamma(gchannel, ming+(float)(slider->value())*0.05); textfield->setNum(xv->getGamma(gchannel)); oldpos = sliderpos; changed=false; emit gammaChanged(sliderpos); } } /** Slot: set slider and textfield */ void GammaCtrl::setCtrl(int sliderpos){ if (suspended) { suspended=false; textfield->setDisabled(false); } oldpos = sliderpos; slider->setValue(sliderpos); textfield->setNum(xv->getGamma(gchannel)); } /** Slot: disable textfield */ void GammaCtrl::suspend(){ if (!suspended) { suspended = true; textfield->setDisabled(true); } } /** Slot: Change status of GammaCtrl when pressed */ void GammaCtrl::pressed(){ if (suspended) { suspended=false; textfield->setDisabled(false); changed=true; setGamma(slider->value()); } }