summaryrefslogtreecommitdiffstats
path: root/karbon/widgets/vcolorslider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'karbon/widgets/vcolorslider.cpp')
-rw-r--r--karbon/widgets/vcolorslider.cpp149
1 files changed, 149 insertions, 0 deletions
diff --git a/karbon/widgets/vcolorslider.cpp b/karbon/widgets/vcolorslider.cpp
new file mode 100644
index 00000000..d2d0a0ab
--- /dev/null
+++ b/karbon/widgets/vcolorslider.cpp
@@ -0,0 +1,149 @@
+/* This file is part of the KDE project
+ Made by Tomislav Lukman ([email protected])
+ 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 <tqlayout.h>
+#include <tqlabel.h>
+#include <knuminput.h>
+#include <tdeselect.h>
+
+#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( Qt::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, TQT_SIGNAL( valueChanged ( int ) ), this, TQT_SLOT( updateFrom_spinBox( int ) ) );
+ connect( m_gradientSelect, TQT_SIGNAL( valueChanged ( int ) ), this, TQT_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, TQT_SIGNAL( valueChanged ( int ) ), this, TQT_SLOT( updateFrom_gradientSelect( int ) ) );
+ m_gradientSelect->setValue( (m_maxValue - value) + m_minValue );
+ connect( m_gradientSelect, TQT_SIGNAL( valueChanged ( int ) ), this, TQT_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, TQT_SIGNAL( valueChanged ( int ) ), this, TQT_SLOT( updateFrom_spinBox( int ) ) );
+ m_spinBox->setValue( value );
+ connect( m_spinBox, TQT_SIGNAL( valueChanged ( int ) ), this, TQT_SLOT( updateFrom_spinBox( int ) ) );
+ emit valueChanged( value );
+ }
+}
+
+bool VColorSlider::eventFilter( TQObject *obj, TQEvent *ev )
+{
+ if( TQT_BASE_OBJECT(obj) == TQT_BASE_OBJECT(m_gradientSelect) )
+ {
+ if ( ev->type() == TQEvent::MouseButtonPress )
+ m_isDragging = true;
+ else if( ev->type() == TQEvent::MouseButtonRelease )
+ m_isDragging = false;
+ }
+ return FALSE;
+}
+
+#include "vcolorslider.moc"
+