/* This file is part of the KDE project Made by Tomislav Lukman (tomislav.lukman@ck.tel.hr) Copyright (C) 2002, The Karbon Developers This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ /* vcolorslider.cpp */ #include #include #include #include #include "vcolorslider.h" VColorSlider::VColorSlider( TQWidget* parent, const char* name ) : TQWidget( parent, name ) { init(); } // Label, left color, right color, min, max, value ... VColorSlider::VColorSlider( const TQString& label, const TQColor& col1, const TQColor& col2, int min, int max, int value, TQWidget* parent, const char* name ) : TQWidget( parent, name ) { init(); setLabel( label ); setColors( col1, col2 ); setMinValue( min ); setMaxValue( max ); setValue( value ); } VColorSlider::~VColorSlider() { } void VColorSlider::init() { m_isDragging = false; TQHBoxLayout *layout = new TQHBoxLayout( this, 3 ); m_label = new TQLabel( this ); m_gradientSelect = new KGradientSelector( TQt::Horizontal, this ); m_spinBox = new KIntSpinBox( this ); layout->addWidget( m_label ); layout->addWidget( m_gradientSelect, 2 ); layout->addWidget( m_spinBox ); setValue( 0 ); setMinValue( 0 ); setMaxValue( 255 ); connect( m_spinBox, TQ_SIGNAL( valueChanged ( int ) ), this, TQ_SLOT( updateFrom_spinBox( int ) ) ); connect( m_gradientSelect, TQ_SIGNAL( valueChanged ( int ) ), this, TQ_SLOT( updateFrom_gradientSelect( int ) ) ); m_gradientSelect->installEventFilter( this ); layout->activate(); } void VColorSlider::setLabel( const TQString& label ) { m_label->setText( label ); } void VColorSlider::setColors( const TQColor& color1, const TQColor& color2 ) { m_gradientSelect->setColors( color1, color2 ); } void VColorSlider::setValue( int value ) { m_spinBox->setValue( value ); m_gradientSelect->setValue( (m_maxValue - value) + m_minValue ); } void VColorSlider::setMinValue( int value ) { m_minValue = value; m_spinBox->setMinValue( value ); m_gradientSelect->setMinValue( value ); } void VColorSlider::setMaxValue( int value ) { m_maxValue = value; m_spinBox->setMaxValue( value ); m_gradientSelect->setMaxValue( value ); } int VColorSlider::value() { return( m_spinBox->value() ); } void VColorSlider::updateFrom_spinBox( int value ) { if ( value != m_gradientSelect->value() ) { disconnect( m_gradientSelect, TQ_SIGNAL( valueChanged ( int ) ), this, TQ_SLOT( updateFrom_gradientSelect( int ) ) ); m_gradientSelect->setValue( (m_maxValue - value) + m_minValue ); connect( m_gradientSelect, TQ_SIGNAL( valueChanged ( int ) ), this, TQ_SLOT( updateFrom_gradientSelect( int ) ) ); emit valueChanged( value ); } } void VColorSlider::updateFrom_gradientSelect( int value ) { value = (m_maxValue - value) + m_minValue; if ( value != m_spinBox->value() ) { disconnect( m_spinBox, TQ_SIGNAL( valueChanged ( int ) ), this, TQ_SLOT( updateFrom_spinBox( int ) ) ); m_spinBox->setValue( value ); connect( m_spinBox, TQ_SIGNAL( valueChanged ( int ) ), this, TQ_SLOT( updateFrom_spinBox( int ) ) ); emit valueChanged( value ); } } bool VColorSlider::eventFilter( TQObject *obj, TQEvent *ev ) { if( obj == m_gradientSelect ) { if ( ev->type() == TQEvent::MouseButtonPress ) m_isDragging = true; else if( ev->type() == TQEvent::MouseButtonRelease ) m_isDragging = false; } return FALSE; } #include "vcolorslider.moc"