blob: ab670f3e954030646193767c3152551a3d5c7095 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
/***************************************************************************
* Copyright (C) 2004 by *
* Jason Kivlighn (jkivlighn@gmail.com) *
* *
* 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 );
}
|