From 02395040e422485ceb2fa435a3fb30879d5f3df2 Mon Sep 17 00:00:00 2001 From: llornkcor Date: Mon, 27 Dec 2004 23:41:09 +0000 Subject: new code from Paul Eggleton --- (limited to 'noncore/apps/opie-bartender/drinkdata.cpp') 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 +** 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 +#include +#include + +/* STD */ +#include +#include +#include +#include +#include + +#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; +} -- cgit v0.9.0.2