diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-01-20 01:29:50 +0000 |
commit | 8362bf63dea22bbf6736609b0f49c152f975eb63 (patch) | |
tree | 0eea3928e39e50fae91d4e68b21b1e6cbae25604 /kugar/lib/mfieldobject.cpp | |
download | koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.tar.gz koffice-8362bf63dea22bbf6736609b0f49c152f975eb63.zip |
Added old abandoned KDE3 version of koffice
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/koffice@1077364 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kugar/lib/mfieldobject.cpp')
-rw-r--r-- | kugar/lib/mfieldobject.cpp | 261 |
1 files changed, 261 insertions, 0 deletions
diff --git a/kugar/lib/mfieldobject.cpp b/kugar/lib/mfieldobject.cpp new file mode 100644 index 00000000..c2d60203 --- /dev/null +++ b/kugar/lib/mfieldobject.cpp @@ -0,0 +1,261 @@ +/*************************************************************************** + mfieldobject.cpp - Kugar report field object + ------------------- + begin : Mon Aug 23 1999 + copyright : (C) 1999 by Mutiny Bay Software + email : info@mutinybaysoftware.com +***************************************************************************/ + +#include "mfieldobject.h" +#include "mutil.h" + +#include "inputmask.h" + +namespace Kugar +{ + +/** Constructor */ +MFieldObject::MFieldObject() : MLabelObject() +{ + // Set the defaults + fieldName = ""; + dataType = MFieldObject::String; + format = MUtil::MDY_SLASH; + precision = 0; + currency = 36; + negativeValueColor.setRgb( 255, 0, 0 ); + comma = 0; + m_inputMask = new InputMask(); +} + +/** Copy constructor */ +MFieldObject::MFieldObject( const MFieldObject& mFieldObject ) : MLabelObject( ( MLabelObject & ) mFieldObject ) +{ + copy( &mFieldObject ); +} + +/** Assignment operator */ +MFieldObject MFieldObject::operator=( const MFieldObject& mFieldObject ) +{ + if ( &mFieldObject == this ) + return * this; + + // Copy the derived class's data + copy( &mFieldObject ); + + // Copy the base class's data + ( ( MLabelObject & ) * this ) = mFieldObject; + + return *this; +} + +/** Destructor */ +MFieldObject::~MFieldObject() +{} + +/** Returns the bound data field name */ +QString MFieldObject::getFieldName() +{ + return fieldName; +} + +/** Sets the bound data field */ +void MFieldObject::setFieldName( const QString field ) +{ + fieldName = field; +} + +/** Sets the field's data string */ +void MFieldObject::setText( const QString txt ) +{ + int ret; + QDate d; + int pos; + QString month, day, year; + QRegExp regexp( "[0-9][0-9](-|//)[0-9][0-9](-|//)[0-9][0-9][0-9][0-9]" ); + + // Check for empty string + if ( txt.isEmpty() && dataType == MFieldObject::Date ) + { + text = QString::null; + return ; + } + + // Set the data + switch ( dataType ) + { + case MFieldObject::String: + text = txt; + if ( !getInputMask().isEmpty() ) + text = m_inputMask->formatText( txt ); + break; + case MFieldObject::Integer: + text.setNum( txt.toDouble(), 'f', 0 ); + if ( comma ) + formatCommas(); + formatNegValue(); + break; + case MFieldObject::Float: + text.setNum( txt.toDouble(), 'f', precision ); + if ( comma ) + formatCommas(); + formatNegValue(); + break; + case MFieldObject::Date: + // Check if we can read the date and if so, reformat it ... + + pos = regexp.search( txt.mid( 0 ) ); + ret = regexp.matchedLength(); + //ret = regexp.match(txt); + + if ( ret != 1 ) + { + year = txt.right( 4 ); + month = txt.left( 2 ); + day = txt.mid( 3, 2 ); + + d.setYMD( year.toInt(), month.toInt(), day.toInt() ); + // d = QDate::fromString(txt, Qt::LocalDate); + text = MUtil::formatDate( d, format ); + } + else + text = txt; + break; + case MFieldObject::Currency: + int prec = precision < 2 ? precision : 2; + bool ok; + text.setNum( txt.toDouble( &ok ), 'f', prec ); + if( !ok ) + text = QString::null; + else + { + if ( comma ) + formatCommas(); + formatNegValue(); + text = QString( currency + text ); + } + break; + } +} + +QString MFieldObject::getInputMask() const +{ + return m_inputMask->mask(); +} + +void MFieldObject::setInputMask( const QString &inputMask ) +{ + m_inputMask->setMask( inputMask ); +} + +/** Sets the field's data type */ +void MFieldObject::setDataType( int t ) +{ + dataType = t; + if ( dataType == MFieldObject::Integer || + dataType == MFieldObject::Float || + dataType == MFieldObject::Currency ) + saveColor = foregroundColor; +} + +/** Sets the field's date formatting */ +void MFieldObject::setDateFormat( int f ) +{ + format = f; +} + +/** Sets the field's precision */ +void MFieldObject::setPrecision( int p ) +{ + precision = p; +} + +/** Sets the field's currency symbol */ +void MFieldObject::setCurrency( const QChar c ) +{ + if ( c.isNull() ) + currency = 36; + else + currency = c; +} + +/** Sets the object's negative value color - default is red*/ +void MFieldObject::setNegValueColor( int r, int g, int b ) +{ + negativeValueColor.setRgb( r, g, b ); +} + +/** Sets if object should delimit numeric values with commas */ +void MFieldObject::setCommaSeparator( int c ) +{ + comma = c; +} + +/** Formats a string representation of a negative number using the negative value color */ +void MFieldObject::formatNegValue() +{ + if ( text.toDouble() < 0 ) + foregroundColor = negativeValueColor; + else + foregroundColor = saveColor; +} + +/** Formats the string representation of a number with comma separators */ +void MFieldObject::formatCommas() +{ + // text = text.replace(".", ","); + QString tmp; + int i, j; + int offset; + + // If a neg value + if ( text.toDouble() < 0 ) + offset = 1; + else + offset = 0; + + // Look for decimal point + int pos = text.findRev( "." ); + + // If a decimal was not found, start at end of string + if ( pos == -1 ) + pos = text.length(); + else + tmp = text.mid( pos, text.length() ); + + // Move through the string and insert the commas + for ( i = pos - 1, j = 0; i >= offset; i-- ) + { + tmp = text.mid( i, 1 ) + tmp; + j++; + if ( ( j == 3 ) && ( i - 1 >= offset ) ) + { + tmp = tr( "," ) + tmp; + j = 0; + } + } + + // If neg value, add back the sign + if ( offset ) + tmp = "-" + tmp; + + // Set the new string to the field + text = tmp; +} + +/** Copies member data from one object to another. + Used by the copy constructor and assignment operator */ +void MFieldObject::copy( const MFieldObject* mFieldObject ) +{ + // Copy the fields's data type and format + fieldName = mFieldObject->fieldName; + dataType = mFieldObject->dataType; + format = mFieldObject->format; + precision = mFieldObject->precision; + currency = mFieldObject->currency; + negativeValueColor = mFieldObject->negativeValueColor; + saveColor = mFieldObject->saveColor; + comma = mFieldObject->comma; +} + +} |