summaryrefslogtreecommitdiffstats
path: root/src/datablocks/unit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/datablocks/unit.cpp')
-rw-r--r--src/datablocks/unit.cpp75
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 );
+}