summaryrefslogtreecommitdiffstats
path: root/src/datablocks/ingredient.cpp
diff options
context:
space:
mode:
authorMichele Calgaro <[email protected]>2024-10-13 11:56:14 +0900
committerMichele Calgaro <[email protected]>2024-10-29 21:58:42 +0900
commit2879ff70be9271550477982a1a6371714db38562 (patch)
treec2054149dba923ab080fe7093432c7663a990111 /src/datablocks/ingredient.cpp
parent3eb38d2556f676d1027746f20bf12a1dd74451ef (diff)
downloadkrecipes-2879ff70be9271550477982a1a6371714db38562.tar.gz
krecipes-2879ff70be9271550477982a1a6371714db38562.zip
Rearrange folders structure to remove unnecessary 'krecipes' second level subfolder
Signed-off-by: Michele Calgaro <[email protected]> (cherry picked from commit 0c8ed6c9a4000af8f48581a81c4b5c2f5b9fd502)
Diffstat (limited to 'src/datablocks/ingredient.cpp')
-rw-r--r--src/datablocks/ingredient.cpp95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/datablocks/ingredient.cpp b/src/datablocks/ingredient.cpp
new file mode 100644
index 0000000..a17beda
--- /dev/null
+++ b/src/datablocks/ingredient.cpp
@@ -0,0 +1,95 @@
+/***************************************************************************
+* Copyright (C) 2003 by *
+* Unai Garro ([email protected]) *
+* Cyril Bosselut ([email protected]) *
+* 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 "datablocks/ingredient.h"
+
+#include <tqstringlist.h>
+
+#include "mixednumber.h"
+
+IngredientData::IngredientData() : amount( 0 ), amount_offset( 0 ), groupID( -1 )
+{}
+
+IngredientData::IngredientData( const TQString &_name, double _amount, const Unit &_units, int _unitID, int _ingredientID ) :
+ ingredientID( _ingredientID ),
+ name( _name ),
+ amount( _amount ),
+ amount_offset( 0 ),
+ units( _units ),
+ groupID( -1 )
+{
+units.id=_unitID;
+}
+
+//compare also using the group id because there may be the same ingredient in a list multiple times, but each in a different group
+bool IngredientData::operator==( const IngredientData &ing ) const
+{
+ return ( ( ing.ingredientID == ingredientID ) && ( ing.groupID == groupID ) );
+}
+
+Ingredient::Ingredient() : IngredientData()
+{}
+
+Ingredient::Ingredient( const TQString &_name, double _amount, const Unit &_units, int _unitID, int _ingredientID ) :
+ IngredientData(_name,_amount,_units,_unitID,_ingredientID)
+{}
+
+Ingredient::Ingredient( const IngredientData &d ) : IngredientData(d)
+{}
+
+void Ingredient::setAmount( const TQString &range, bool *ok )
+{
+ if ( range.isEmpty() ) {
+ if ( ok ) *ok = true;
+ return;
+ }
+
+ TQStringList ranges = TQStringList::split('-',range);
+
+ TQString amount_min = ranges[0];
+ if ( amount_min.isEmpty() ) {
+ if ( ok ) *ok = false;
+ return;
+ }
+
+ TQString amount_max;
+ switch ( ranges.count() ) {
+ case 0:
+ case 1: break;
+ case 2: amount_max = ranges[1];
+ break;
+ default:
+ if ( ok ) *ok = false;
+ return;
+ }
+
+ MixedNumber nm_min = MixedNumber::fromString( amount_min, ok );
+ if ( ok && *ok == false ) return;
+
+ MixedNumber nm_max = MixedNumber::fromString( amount_max, ok );
+ if ( ok && *ok == false ) return;
+
+ amount = nm_min.toDouble();
+ if ( nm_max > 0 )
+ amount_offset = nm_max.toDouble() - amount;
+}
+
+//compare also using the group id because there may be the same ingredient in a list multiple times, but each in a different group
+bool Ingredient::operator==( const Ingredient &ing ) const
+{
+ return ( ( ing.ingredientID == ingredientID ) && ( ing.groupID == groupID ) );
+}
+
+bool Ingredient::operator<( const Ingredient &ing ) const
+{
+ return ( TQString::localeAwareCompare( name, ing.name ) < 0 );
+}