diff options
Diffstat (limited to 'src/datablocks/unit.cpp')
-rw-r--r-- | src/datablocks/unit.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/datablocks/unit.cpp b/src/datablocks/unit.cpp new file mode 100644 index 0000000..ab670f3 --- /dev/null +++ b/src/datablocks/unit.cpp @@ -0,0 +1,75 @@ +/*************************************************************************** +* Copyright (C) 2004 by * +* Jason Kivlighn ([email protected]) * +* * +* 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 "unit.h" + +Unit::Unit() : type(Unit::Other), id( -1 ) +{} + +Unit::Unit( const TQString &_name, const TQString &_plural, int _id ) : + type(Unit::Other), + id( _id ), + name( _name ), + plural( _plural ) +{} + +Unit::Unit( const TQString &_name, double amount ) : type(Unit::Other) +{ + if ( amount > 1 ) + plural = _name; + else + name = _name; +} + +TQString Unit::determineName( double amount, bool useAbbrev ) const +{ + if ( useAbbrev ) { + TQString unit = ( amount > 1 ) ? plural_abbrev : name_abbrev; + if ( unit.isEmpty() ) + unit = ( amount > 1 ) ? plural : name; + return unit; + } + else + return ( amount > 1 ) ? plural : name; +} + +bool Unit::operator==( const Unit &u ) const +{ + //treat TQString::null and "" as the same + TQString plural_test1 = u.plural.lower(); + if ( plural_test1.isNull() ) + plural_test1 = ""; + + TQString plural_test2 = plural.lower(); + if ( plural_test2.isNull() ) + plural_test2 = ""; + + TQString single_test1 = u.name.lower(); + if ( single_test1.isNull() ) + single_test1 = ""; + + TQString single_test2 = name.lower(); + if ( single_test2.isNull() ) + single_test2 = ""; + + if ( plural_test1.isEmpty() && plural_test2.isEmpty() && single_test1.isEmpty() && single_test2.isEmpty() ) + return true; + else if ( plural_test1.isEmpty() && plural_test2.isEmpty() ) + return single_test1 == single_test2; + else if ( single_test1.isEmpty() && single_test2.isEmpty() ) + return plural_test1 == plural_test2; + else + return ( plural_test1 == plural_test2 || single_test1 == single_test2 ); +} + +bool Unit::operator<( const Unit &u ) const +{ + return ( TQString::localeAwareCompare( name.lower(), u.name.lower() ) < 0 ); +} |