summaryrefslogtreecommitdiffstats
path: root/krecipes/src/datablocks/ingredientlist.h
diff options
context:
space:
mode:
Diffstat (limited to 'krecipes/src/datablocks/ingredientlist.h')
-rw-r--r--krecipes/src/datablocks/ingredientlist.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/krecipes/src/datablocks/ingredientlist.h b/krecipes/src/datablocks/ingredientlist.h
new file mode 100644
index 0000000..9f01831
--- /dev/null
+++ b/krecipes/src/datablocks/ingredientlist.h
@@ -0,0 +1,61 @@
+/***************************************************************************
+* Copyright (C) 2003 by *
+* *
+* Unai Garro (ugarro@users.sourceforge.net) *
+* Cyril Bosselut (bosselut@b1project.com) *
+* 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. *
+***************************************************************************/
+#ifndef INGREDIENTLIST_H
+#define INGREDIENTLIST_H
+
+#include <qvaluelist.h>
+#include <qregexp.h>
+
+#include "datablocks/ingredient.h"
+
+class RecipeDB;
+
+/**
+@author Unai Garro
+*/
+class IngredientList: public QValueList <Ingredient>
+{
+public:
+ IngredientList();
+ ~IngredientList();
+ bool contains( const Ingredient &ing, bool compareAmount = false, RecipeDB *database = 0 ) const;
+ bool containsSubSet( IngredientList &il, IngredientList &missing, bool compareAmount = false, RecipeDB *database = 0 );
+ bool containsSubSet( IngredientList &il ) const;
+ bool containsAny( const IngredientList &, bool compareAmount = false, RecipeDB *database = 0 );
+
+ IngredientList groupMembers( int id, IngredientList::const_iterator begin ) const;
+
+ void move( int index1, int index2 );
+ void move( int index1, int count, int index2 );
+ void empty( void );
+ int find( int id ) const;
+ Ingredient findByName( const QString & ) const;
+ Ingredient findByName( const QRegExp & ) const;
+ IngredientList::const_iterator find( IngredientList::const_iterator, int id ) const;
+ IngredientList::iterator find( IngredientList::iterator, int id );
+
+ /** Warning, returns an invalid reference if no ingredient is found. Must check prior
+ * to calling this function if the ingredient exists.
+ */
+ IngredientData& findSubstitute( const Ingredient & );
+ void removeSubstitute( const Ingredient & );
+
+ IngredientList firstGroup();
+ IngredientList nextGroup();
+
+private:
+ QValueList<IngredientList::const_iterator> _groupMembers( int id, IngredientList::const_iterator begin ) const;
+ QValueList<IngredientList::const_iterator> usedGroups;
+};
+
+#endif