Diffstat (limited to 'noncore/apps/opie-bartender/drinkdata.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/apps/opie-bartender/drinkdata.cpp | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/noncore/apps/opie-bartender/drinkdata.cpp b/noncore/apps/opie-bartender/drinkdata.cpp new file mode 100644 index 0000000..8856e46 --- a/dev/null +++ b/noncore/apps/opie-bartender/drinkdata.cpp @@ -0,0 +1,147 @@ +/**************************************************************************** +** Created: Sun Dec 26 22:00:00 2004 +** by: Paul Eggleton <bluelightning@bluelightning.org> +** copyright : (C) 2004 by Paul Eggleton + email : bluelightning@bluelightning.org + * 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. * + ***************************************************************************/ + +/* QT */ +#include <qfile.h> +#include <qtextstream.h> +#include <qvaluelist.h> + +/* STD */ +#include <fcntl.h> +#include <unistd.h> +#include <stdlib.h> +#include <iostream> +#include <errno.h> + +#include "drinkdata.h" + +// ----- DrinkData ----- + +DrinkData::DrinkData() { +} + +void DrinkData::setFile(const QString &filename) { + this->filename = filename; +} + +bool DrinkData::read(void) { + QFile dbFile; + + dbFile.setName(filename); + if ( !dbFile.open( IO_ReadOnly)) { + return false; + } + + items.clear(); + + QTextStream t( &dbFile); + QString s, name = "", ingredients = ""; + + while ( !t.eof()) { + s = t.readLine(); + if(s.find( "#", 0, TRUE) != -1 || dbFile.atEnd()) { + if(name != "") + addDrink(name, ingredients); + // Start new entry + name = s.right(s.length()-2); + ingredients = ""; + } + else { + if(ingredients != "") + ingredients += '\n'; + ingredients += s; + } + } + + dbFile.close(); + + return true; +} + +void DrinkData::print(void) { + DrinkList::Iterator it = items.begin(); + while ( it != items.end() ) { + std::cout << (*it).getName() << '\n'; + ++it; + } +} + +void DrinkData::addDrink(const QString &name, const QString &ingredients) { + DrinkItem item(name, ingredients); + items.append(item); +} + +DrinkList::Iterator DrinkData::findDrink(const QString &name) { + DrinkList::Iterator it = items.begin(); + while ( it != items.end() ) { + if((*it).getName() == name) + return it; + ++it; + } + return items.end(); +} + +DrinkList::Iterator DrinkData::getBegin(void) { + return items.begin(); +} + +DrinkList::Iterator DrinkData::getEnd(void) { + return items.end(); +} + +bool DrinkData::writeChanges(void) { + QFile dbFile; + + dbFile.setName(filename); + if ( !dbFile.open( IO_WriteOnly | IO_Truncate )) { + return false; + } + + QTextStream t( &dbFile); + + DrinkList::Iterator it = items.begin(); + while ( it != items.end() ) { + t << "# " << (*it).getName() << '\n'; + t << (*it).getIngredients() << '\n'; + ++it; + } + + dbFile.close(); + + return true; +} + + +// ----- DrinkItem ----- + +DrinkItem::DrinkItem(void) { +} + +DrinkItem::DrinkItem(const QString &name, const QString &ingredients) { + this->name = name; + this->ingredients = ingredients; +} + +const QString &DrinkItem::getName(void) { + return name; +} + +const QString &DrinkItem::getIngredients(void) { + return ingredients; +} + +void DrinkItem::setName(const QString &name) { + this->name = name; +} + +void DrinkItem::setIngredients(const QString &ingredients) { + this->ingredients = ingredients; +} |