diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 47d455dd55be855e4cc691c32f687f723d9247ee (patch) | |
tree | 52e236aaa2576bdb3840ebede26619692fed6d7d /kpovmodeler/pmlineedits.cpp | |
download | tdegraphics-47d455dd55be855e4cc691c32f687f723d9247ee.tar.gz tdegraphics-47d455dd55be855e4cc691c32f687f723d9247ee.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdegraphics@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kpovmodeler/pmlineedits.cpp')
-rw-r--r-- | kpovmodeler/pmlineedits.cpp | 229 |
1 files changed, 229 insertions, 0 deletions
diff --git a/kpovmodeler/pmlineedits.cpp b/kpovmodeler/pmlineedits.cpp new file mode 100644 index 00000000..05124d75 --- /dev/null +++ b/kpovmodeler/pmlineedits.cpp @@ -0,0 +1,229 @@ +/* +************************************************************************** + description + -------------------- + copyright : (C) 2000-2001 by Andreas Zehender + email : zehender@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 "pmlineedits.h" +#include <kmessagebox.h> +#include <klocale.h> + +PMFloatEdit::PMFloatEdit( QWidget* parent, const char* name /*= 0*/ ) + : QLineEdit( parent, name ) +{ + m_bCheckLower = false; + m_bCheckUpper = false; + m_lowerValue = 0; + m_upperValue = 0; + m_lowerOp = OpGreaterEqual; + m_upperOp = OpLessEqual; + + connect( this, SIGNAL( textChanged( const QString& ) ), + SLOT( slotEditTextChanged( const QString& ) ) ); +} + +void PMFloatEdit::setValidation( bool checkLower, double lowerValue, + bool checkUpper, double upperValue ) +{ + m_bCheckLower = checkLower; + m_bCheckUpper = checkUpper; + m_lowerValue = lowerValue; + m_upperValue = upperValue; +} + +void PMFloatEdit::setValidationOperator( ValidationOp l, ValidationOp u ) +{ + m_lowerOp = l; + m_upperOp = u; +} + +bool PMFloatEdit::isDataValid( ) +{ + bool ok = true; + double d; + d = text( ).toDouble( &ok ); + + if( ok ) + { + if( m_bCheckLower ) + ok = ok && ( m_lowerOp == OpGreaterEqual ? + d >= m_lowerValue : d > m_lowerValue ); + if( m_bCheckUpper ) + ok = ok && ( m_upperOp == OpLessEqual ? + d <= m_upperValue : d < m_upperValue ); + if( !ok ) + { + if( m_bCheckLower && m_bCheckUpper ) + KMessageBox::error( this, i18n( "Please enter a float value " + "between %1 and %2" ) + .arg( m_lowerValue ).arg( m_upperValue ), + i18n( "Error" ) ); + else if( m_bCheckLower ) + { + if( m_lowerOp == OpGreaterEqual ) + KMessageBox::error( this, i18n( "Please enter a float value " + ">= %1" ).arg( m_lowerValue ), + i18n( "Error" ) ); + else + KMessageBox::error( this, i18n( "Please enter a float value " + "> %1" ).arg( m_lowerValue ), + i18n( "Error" ) ); + } + else + { + if( m_upperOp == OpLessEqual ) + KMessageBox::error( this, i18n( "Please enter a float value " + "<= %1" ).arg( m_upperValue ), + i18n( "Error" ) ); + else + KMessageBox::error( this, i18n( "Please enter a float value " + "< %1" ).arg( m_upperValue ), + i18n( "Error" ) ); + } + } + } + else + { + KMessageBox::error( this, i18n( "Please enter a valid float value!" ), + i18n( "Error" ) ); + } + + if( !ok ) + { + setFocus( ); + selectAll( ); + } + return ok; +} + +double PMFloatEdit::value( ) const +{ + return text( ).toDouble( ); +} + +void PMFloatEdit::setValue( double d, int precision ) +{ + QString str; + + str.setNum( d, 'g', precision ); + setText( str ); +} + +void PMFloatEdit::slotEditTextChanged( const QString& /*t*/ ) +{ + emit dataChanged( ); +} + + + + + +PMIntEdit::PMIntEdit( QWidget* parent, const char* name /*= 0*/ ) + : QLineEdit( parent, name ) +{ + m_bCheckLower = false; + m_bCheckUpper = false; + m_lowerValue = 0; + m_upperValue = 0; + + connect( this, SIGNAL( textChanged( const QString& ) ), + SLOT( slotEditTextChanged( const QString& ) ) ); +} + +void PMIntEdit::setValidation( bool checkLower, int lowerValue, + bool checkUpper, int upperValue ) +{ + m_bCheckLower = checkLower; + m_bCheckUpper = checkUpper; + m_lowerValue = lowerValue; + m_upperValue = upperValue; +} + +bool PMIntEdit::isDataValid( ) +{ + bool ok = true; + int i; + double d; + + i = text( ).toInt( &ok ); + if( !ok ) + { + d = text( ).toDouble( &ok ); + if( ok ) + { + i = ( int ) d; + QString str; + bool b = signalsBlocked( ); + blockSignals( true ); + str.setNum( i ); + setText( str ); + blockSignals( b ); + } + } + + if( ok ) + { + if( m_bCheckLower ) + ok = ok && ( i >= m_lowerValue ); + if( m_bCheckUpper ) + ok = ok && ( i <= m_upperValue ); + if( !ok ) + { + if( m_bCheckLower && m_bCheckUpper ) + KMessageBox::error( this, i18n( "Please enter an integer value " + "between %1 and %2" ) + .arg( m_lowerValue ).arg( m_upperValue ), + i18n( "Error" ) ); + else if( m_bCheckLower ) + KMessageBox::error( this, i18n( "Please enter an integer value " + ">= %1" ).arg( m_lowerValue ), + i18n( "Error" ) ); + else + KMessageBox::error( this, i18n( "Please enter an integer value " + "<= %1" ).arg( m_upperValue ), + i18n( "Error" ) ); + } + } + else + { + KMessageBox::error( this, i18n( "Please enter a valid integer value!" ), + i18n( "Error" ) ); + } + + if( !ok ) + { + setFocus( ); + selectAll( ); + } + return ok; +} + +int PMIntEdit::value( ) const +{ + return text( ).toInt( ); +} + +void PMIntEdit::setValue( int i ) +{ + QString str; + + str.setNum( i ); + setText( str ); +} + +void PMIntEdit::slotEditTextChanged( const QString& /*t*/ ) +{ + emit dataChanged( ); +} +#include "pmlineedits.moc" |