-rw-r--r-- | noncore/apps/opie-bartender/bartender.cpp | 235 | ||||
-rw-r--r-- | noncore/apps/opie-bartender/bartender.h | 5 | ||||
-rw-r--r-- | noncore/apps/opie-bartender/bartender.pro | 10 | ||||
-rw-r--r-- | noncore/apps/opie-bartender/drinkdata.cpp | 147 | ||||
-rw-r--r-- | noncore/apps/opie-bartender/drinkdata.h | 48 | ||||
-rw-r--r-- | noncore/apps/opie-bartender/newDrinks.ui | 4 | ||||
-rw-r--r-- | noncore/apps/opie-bartender/newdrinks.cpp | 1 | ||||
-rw-r--r-- | noncore/apps/opie-bartender/showdrinks.cpp | 1 | ||||
-rw-r--r-- | noncore/apps/opie-bartender/showdrinks.h | 2 |
9 files changed, 309 insertions, 144 deletions
diff --git a/noncore/apps/opie-bartender/bartender.cpp b/noncore/apps/opie-bartender/bartender.cpp index b4958b3..bee164c 100644 --- a/noncore/apps/opie-bartender/bartender.cpp +++ b/noncore/apps/opie-bartender/bartender.cpp @@ -1,435 +1,400 @@ /**************************************************************************** ** ** Created: Sat Jul 20 08:10:53 2002 ** by: L.J. Potter <ljp@llornkcor.com> ** copyright : (C) 2002 by ljp email : ljp@llornkcor.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 "bartender.h" #include "showdrinks.h" #include "inputDialog.h" #include "searchresults.h" #include "bac.h" +#include "drinkdata.h" /* OPIE */ #include <opie2/odebug.h> #include <qpe/qpeapplication.h> #include <qpe/resource.h> using namespace Opie::Core; /* QT */ #include <qlineedit.h> #include <qdir.h> #include <qpushbutton.h> #include <qlistbox.h> #include <qmultilineedit.h> #include <qmessagebox.h> #include <qtextstream.h> #include <qaction.h> #include <qheader.h> #include <qlistview.h> #include <qlayout.h> #include <qtoolbar.h> #include <qmenubar.h> /* STD */ #include <fcntl.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <errno.h> Bartender::Bartender( QWidget* parent, const char* name, WFlags fl ) : QMainWindow( parent, name, fl ) { if ( !name ) setName( "Bartender" ); QGridLayout *layout = new QGridLayout( this ); layout->setSpacing( 2); layout->setMargin( 2); connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); setCaption( tr( "Bartender" ) ); + setToolBarsMovable( FALSE ); + ToolBar1 = new QToolBar( this, "ToolBar1" ); ToolBar1->setFixedHeight(22); layout->addMultiCellWidget( ToolBar1, 0, 0, 0, 4 ); QMenuBar *menuBar = new QMenuBar( ToolBar1 ); QPopupMenu *fileMenu; fileMenu = new QPopupMenu( this); menuBar->insertItem( tr("File"), fileMenu ); fileMenu->insertItem(tr("New Drink")); fileMenu->insertItem(tr("Open Drink")); fileMenu->insertItem(tr("Find by Drink Name")); - fileMenu->insertItem(tr("Find by Alcohol")); + fileMenu->insertItem(tr("Find by Ingredient")); QPopupMenu *editMenu; editMenu = new QPopupMenu( this); menuBar->insertItem( tr("Edit"), editMenu ); - editMenu->insertItem(tr("edit")); + editMenu->insertItem(tr("Edit Drink")); connect( fileMenu, SIGNAL( activated(int) ), this, SLOT( fileMenuActivated(int) )); connect( editMenu, SIGNAL( activated(int) ), this, SLOT( editMenuActivated(int) )); QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), "New", 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); a->addTo( ToolBar1 ); a = new QAction( tr( "Open" ), Resource::loadPixmap( "bartender/bartender_sm" ), "open", 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( openCurrentDrink() ) ); a->addTo( ToolBar1 ); a = new QAction( tr( "Find" ), Resource::loadPixmap( "find" ), "Find", 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( askSearch() ) ); a->addTo( ToolBar1 ); a = new QAction( tr( "Edit" ), Resource::loadPixmap( "edit" ),"Edit", 0, this, 0 ); connect( a, SIGNAL( activated() ), this, SLOT( doEdit() ) ); a->addTo( ToolBar1 ); QPushButton *t; t= new QPushButton( "BAC", ToolBar1, "bacButtin"); connect( t, SIGNAL( clicked() ), this, SLOT( doBac() ) ); DrinkView = new QListView( this, "DrinkView" ); DrinkView->addColumn( tr( "Name of Drink" ) ); // DrinkView->setRootIsDecorated( TRUE ); DrinkView->header()->hide(); QPEApplication::setStylusOperation( DrinkView->viewport(),QPEApplication::RightOnHold); connect(DrinkView, SIGNAL( doubleClicked(QListViewItem*)),this,SLOT(showDrink(QListViewItem*))); connect(DrinkView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int)), this,SLOT( showDrink(int,QListViewItem*,const QPoint&,int))); layout->addMultiCellWidget( DrinkView, 1, 2, 0, 4 ); - if(QDir("db").exists()) { - dbFile.setName( "db/drinkdb.txt"); - } else - dbFile.setName( QPEApplication::qpeDir()+"etc/bartender/drinkdb.txt"); + if(QDir("db").exists()) + drinkDB.setFile("db/drinkdb.txt"); + else + drinkDB.setFile(QPEApplication::qpeDir()+"etc/bartender/drinkdb.txt"); + initDrinkDb(); + + DrinkView->setFocus(); } Bartender::~Bartender() { } /* this happens right before exit */ void Bartender::cleanUp() { - dbFile.close(); } void Bartender::initDrinkDb() { - - if(!dbFile.isOpen()) - if ( !dbFile.open( IO_ReadOnly)) { + if(drinkDB.read()) + fillList(); + else QMessageBox::message( (tr("Note")), (tr("Drink database not opened sucessfully.\n")) ); - return; - } - fillList(); } void Bartender::fillList() { - dbFile.at(1); + QString lastName; + if( DrinkView->currentItem() != NULL ) + lastName = DrinkView->currentItem()->text(0); + else + lastName = ""; + DrinkView->clear(); int i=0; QListViewItem * item ; - QTextStream t( &dbFile); QString s; - while ( !t.eof()) { - s = t.readLine(); - if(s.find("#",0,TRUE) != -1) { -// odebug << s.right(s.length()-2) << oendl; - item= new QListViewItem( DrinkView, 0 ); - item->setText( 0, s.right(s.length()-2)); - i++; + + DrinkList::Iterator it = drinkDB.getBegin(); + while ( it != drinkDB.getEnd() ) { + item= new QListViewItem( DrinkView, 0 ); + item->setText( 0, (*it).getName()); + i++; + ++it; + } + + if( lastName != "" ) { + QListViewItemIterator it( DrinkView ); + for ( ; it.current(); ++it ) { + if ( it.current()->text(0) == lastName ) { + DrinkView->setCurrentItem(it.current()); + break; + } } } + else if( DrinkView->childCount() > 0) + DrinkView->setCurrentItem(DrinkView->firstChild()); + odebug << "there are currently " << i << " of drinks" << oendl; } void Bartender::fileNew() { New_Drink *newDrinks; - newDrinks = new New_Drink(this,"New Drink....", TRUE); + newDrinks = new New_Drink(this,"New Drink", TRUE); QString newName, newIng; QPEApplication::execDialog( newDrinks ); newName = newDrinks->LineEdit1->text(); newIng= newDrinks->MultiLineEdit1->text(); - if(dbFile.isOpen()) - dbFile.close(); - if ( !dbFile.open( IO_WriteOnly| IO_Append)) { - QMessageBox::message( (tr("Note")), (tr("Drink database not opened sucessfully.\n")) ); - return; - } if(newDrinks ->result() == 1 ) { - QString newDrink="\n# "+newName+"\n"; - newDrink.append(newIng+"\n"); - odebug << "writing "+newDrink << oendl; - dbFile.writeBlock( newDrink.latin1(), newDrink.length()); - clearList(); - dbFile.close(); - - initDrinkDb(); + drinkDB.addDrink(newName, newIng); + if(!drinkDB.writeChanges()) { + QMessageBox::message( (tr("Note")), (tr("Failed to write to drink database!\n")) ); + } + fillList(); } delete newDrinks; } void Bartender::showDrink(int mouse, QListViewItem * item, const QPoint&, int) { switch (mouse) { case 1: // showDrink(item); break; case 2: showDrink(item); break; } } void Bartender::showDrink( QListViewItem *item) { if(item==NULL) return; - dbFile.at(0); Show_Drink *showDrinks; QString myDrink=item->text(0); showDrinks = new Show_Drink(this, myDrink, TRUE); - QTextStream t( &dbFile); - - QString s, s2; - while ( !t.eof()) { - s = t.readLine(); - if(s.find( myDrink, 0, TRUE) != -1) { - for(int i=0;s2.find( "#", 0, TRUE) == -1;i++) { - s2 = t.readLine(); - if(s2.find("#",0,TRUE) == -1 || dbFile.atEnd() ) { -// odebug << s2 << oendl; - showDrinks->MultiLineEdit1->append(s2); - } - if( dbFile.atEnd() ) break; - } - } - } - QPEApplication::execDialog( showDrinks ); - if(showDrinks ->result() ==0) { - doEdit(); + DrinkList::Iterator it = drinkDB.findDrink(myDrink); + if(it != drinkDB.getEnd()) { + showDrinks->MultiLineEdit1->setText((*it).getIngredients()); + + connect(showDrinks->editDrinkButton, SIGNAL(clicked()), this, SLOT(doEdit())); + QPEApplication::execDialog( showDrinks ); } + delete showDrinks; } void Bartender::askSearch() { switch ( QMessageBox::warning(this,tr("Find"),tr("Search by drink name\n")+ - "\nor alcohol ?" - ,tr("Drink Name"),tr("Alcohol"),0,0,1) ) { + "\nor ingredient ?" + ,tr("Drink Name"),tr("Ingredient"),0,0,1) ) { case 0: doSearchByName(); break; case 1: - doSearchByDrink(); + doSearchByIngredient(); break; }; } /* search by name */ void Bartender::doSearchByName() { // if( DrinkView->currentItem() == NULL) return; QStringList searchList; QString searchForDrinkName; InputDialog *fileDlg; fileDlg = new InputDialog(this,tr("Find by Drink Name"),TRUE, 0); fileDlg->exec(); if( fileDlg->result() == 1 ) { searchForDrinkName = fileDlg->LineEdit1->text(); QListViewItemIterator it( DrinkView ); for ( ; it.current(); ++it ) { - if ( it.current()->text(0).find( searchForDrinkName, 0, TRUE) != -1 ) { + if ( it.current()->text(0).find( searchForDrinkName, 0, FALSE) != -1 ) { // odebug << it.current()->text(0) << oendl; searchList.append(it.current()->text(0)); } } if(searchList.count() >0) showSearchResult(searchList); else QMessageBox::message(tr("Search"),tr("Sorry no results for\n")+searchForDrinkName); }//end Inputdialog delete fileDlg; } -void Bartender::doSearchByDrink() { +void Bartender::doSearchByIngredient() { // if( DrinkView->currentItem() == NULL) return; QStringList searchList; - QString searchForDrinkName, lastDrinkName, tempName; + QString searchForIngredient, lastDrinkName, lastDrinkIngredients; InputDialog *fileDlg; - fileDlg = new InputDialog(this,tr("Find by Alcohol"),TRUE, 0); + fileDlg = new InputDialog(this,tr("Find by Ingredient"),TRUE, 0); fileDlg->exec(); if( fileDlg->result() == 1 ) { - searchForDrinkName = fileDlg->LineEdit1->text(); - - dbFile.at(0); - QTextStream t( &dbFile); - - QString s, s2; - while ( !t.eof()) { - s = t.readLine(); - if(s.find("#",0,TRUE) != -1) { - lastDrinkName=s.right(s.length()-2); -// odebug << "last drink name "+lastDrinkName << oendl; - } - else if( s.find( searchForDrinkName ,0, FALSE) != -1 && lastDrinkName != tempName ) { -// odebug << "appending "+lastDrinkName << oendl; - searchList.append( lastDrinkName); - tempName=lastDrinkName; - } -// if( dbFile.atEnd() ) break; - - } //oef + searchForIngredient = fileDlg->LineEdit1->text(); + + DrinkList::Iterator it = drinkDB.getBegin(); + while ( it != drinkDB.getEnd() ) { + lastDrinkName = (*it).getName(); + lastDrinkIngredients = (*it).getIngredients(); + + if( lastDrinkIngredients.find( searchForIngredient ,0, FALSE) != -1 ) + searchList.append( lastDrinkName ); + + ++it; + } + if(searchList.count() >0) showSearchResult(searchList); else - QMessageBox::message(tr("Search"),tr("Sorry no results for\n")+ searchForDrinkName); + QMessageBox::message(tr("Search"),tr("Sorry no results for\n")+ searchForIngredient); } delete fileDlg; } void Bartender::showSearchResult(QStringList &searchList) { QString result; Search_Results *searchDlg; searchList.sort(); searchDlg = new Search_Results(this, "Search Results", TRUE); searchDlg->ListBox1->insertStringList( searchList,-1); QPEApplication::execDialog( searchDlg ); if( searchDlg->result() == 1 ) { result= searchDlg->ListBox1->currentText(); } QListViewItemIterator it2( DrinkView ); for ( ; it2.current(); ++it2 ) { if ( it2.current()->text(0)== result ) { // odebug << it2.current()->text(0) << oendl; showDrink(it2.current()); } } delete searchDlg; } void Bartender::doEdit() { - if(DrinkView->currentItem() == NULL) { - fileNew(); - } + if(DrinkView->currentItem() == NULL) { + fileNew(); + return; + } - QString myDrink; + QString myDrink; myDrink= DrinkView->currentItem()->text(0); - dbFile.at(0); - int foundAt=0; + New_Drink *newDrinks; - newDrinks = new New_Drink(this,"Edit Drink....", TRUE); + newDrinks = new New_Drink(this,"Edit Drink", TRUE); QString newName, newIng; QPEApplication::showDialog( newDrinks ); - QTextStream t( &dbFile); - - QString s, s2; - while ( !t.eof()) { - s = t.readLine(); - if(s.find( myDrink, 0, TRUE) != -1) { - foundAt = dbFile.at() - (s.length()+1); - for(int i=0;s2.find( "#", 0, TRUE) == -1;i++) { - s2 = t.readLine(); - if(s2.find("#",0,TRUE) == -1 || dbFile.atEnd() ) { -// odebug << s2 << oendl; - newDrinks->MultiLineEdit1->append(s2); - newDrinks->LineEdit1->setText(myDrink); - } - if( dbFile.atEnd() ) break; - } - } - } - newDrinks->exec(); - newName = newDrinks->LineEdit1->text(); - newIng= newDrinks->MultiLineEdit1->text(); - if( newDrinks ->result() == 1 ) { - if(dbFile.isOpen()) - dbFile.close(); - if ( !dbFile.open( IO_ReadWrite )) { - QMessageBox::message( (tr("Note")), (tr("Drink database not opened sucessfully.\n")) ); - return; + DrinkList::Iterator drinkItem = drinkDB.findDrink(myDrink); + if(drinkItem != drinkDB.getEnd()) { + newDrinks->LineEdit1->setText((*drinkItem).getName()); + newDrinks->MultiLineEdit1->setText((*drinkItem).getIngredients()); + + newDrinks->exec(); + newName = newDrinks->LineEdit1->text(); + newIng= newDrinks->MultiLineEdit1->text(); + + if( newDrinks ->result() == 1 ) { + (*drinkItem).setName(newName); + (*drinkItem).setIngredients(newIng); + if(!drinkDB.writeChanges()) { + QMessageBox::message( (tr("Note")), (tr("Failed to write to drink database!\n")) ); + } + fillList(); } - int fd = dbFile.handle(); - lseek( fd, foundAt, SEEK_SET); - -// dbFile.at( foundAt); -#warning FIXME problems with editing drinks db - ////////// FIXME write to user file - QString newDrink="# "+newName+"\n"; - newDrink.append(newIng+"\n"); - odebug << "writing "+newDrink << oendl; - dbFile.writeBlock( newDrink.latin1(), newDrink.length()); - clearList(); - - dbFile.flush(); - - initDrinkDb(); } + + delete newDrinks; } void Bartender::clearList() { DrinkView->clear(); } void Bartender::doBac() { BacDialog *bacDlg; bacDlg = new BacDialog(this,"BAC",TRUE); QPEApplication::execDialog( bacDlg ); delete bacDlg; } void Bartender::openCurrentDrink() { if(DrinkView->currentItem() == NULL) return; showDrink(DrinkView->currentItem()); } void Bartender::fileMenuActivated( int item) { odebug << "Item " << item << "" << oendl; switch(item) { case -3: // new -3 fileNew(); break; case -4:// open -4 openCurrentDrink(); break; case -5:// drink -5 doSearchByName(); break; case -6:// alcohol -6 - doSearchByDrink(); + doSearchByIngredient(); break; } } void Bartender::editMenuActivated(int item) { odebug << "Item " << item << "" << oendl; /* edit -8 */ switch(item) { case -8: doEdit() ; break; } } diff --git a/noncore/apps/opie-bartender/bartender.h b/noncore/apps/opie-bartender/bartender.h index 27362df..9970ef1 100644 --- a/noncore/apps/opie-bartender/bartender.h +++ b/noncore/apps/opie-bartender/bartender.h @@ -1,65 +1,66 @@ /**************************************************************************** ** Created: Sat Jul 20 08:10:31 2002 ** by: L.J. Potter <ljp@llornkcor.com> ** copyright : (C) 2002 by ljp email : ljp@llornkcor.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 BARTENDER_H #define BARTENDER_H #include "newdrinks.h" +#include "drinkdata.h" #include <qvariant.h> #include <qwidget.h> #include <qmainwindow.h> #include <qfile.h> class QVBoxLayout; class QHBoxLayout; class QGridLayout; class QListView; class QListViewItem; class QToolBar; class Bartender : public QMainWindow { Q_OBJECT public: Bartender( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); ~Bartender(); static QString appName() { return QString::fromLatin1("bartender"); } QToolBar* ToolBar1; QListView* DrinkView; - QFile dbFile; + DrinkData drinkDB; public slots: void doEdit(); protected: protected slots: void fileMenuActivated(int); void editMenuActivated(int); void cleanUp(); void fileNew(); void showDrink( QListViewItem *); void showDrink(int, QListViewItem *, const QPoint&, int); void initDrinkDb(); void doSearchByName(); - void doSearchByDrink(); + void doSearchByIngredient(); void showSearchResult(QStringList &); void doBac(); void openCurrentDrink(); void askSearch(); private: void clearList(); void fillList(); }; #endif // BARTENDER_H diff --git a/noncore/apps/opie-bartender/bartender.pro b/noncore/apps/opie-bartender/bartender.pro index cdec93c..b304ae9 100644 --- a/noncore/apps/opie-bartender/bartender.pro +++ b/noncore/apps/opie-bartender/bartender.pro @@ -1,9 +1,11 @@ -CONFIG = qt quick-app -HEADERS = bartender.h newdrinks.h showdrinks.h inputDialog.h searchresults.h bac.h -SOURCES = main.cpp bartender.cpp newdrinks.cpp showdrinks.cpp inputDialog.cpp searchresults.cpp bac.cpp +TEMPLATE = app +CONFIG = qt warn_on +HEADERS = bartender.h newdrinks.h showdrinks.h inputDialog.h searchresults.h bac.h drinkdata.h +SOURCES = main.cpp bartender.cpp newdrinks.cpp showdrinks.cpp inputDialog.cpp searchresults.cpp bac.cpp drinkdata.cpp INCLUDEPATH += $(OPIEDIR)/include DEPENDPATH += $(OPIEDIR)/include -LIBS += -lqpe -lopiecore2 +LIBS += -lqpe -lopiecore2 -lopieui2 +DESTDIR = $(OPIEDIR)/bin TARGET = bartender include( $(OPIEDIR)/include.pro ) 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; +} diff --git a/noncore/apps/opie-bartender/drinkdata.h b/noncore/apps/opie-bartender/drinkdata.h new file mode 100644 index 0000000..bcc3022 --- a/dev/null +++ b/noncore/apps/opie-bartender/drinkdata.h @@ -0,0 +1,48 @@ +/**************************************************************************** +** 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. * + ***************************************************************************/ + +#ifndef DRINKDATA_H +#define DRINKDATA_H + +class DrinkItem; + +typedef QValueList<DrinkItem> DrinkList; + +class DrinkData { +private: + DrinkList items; + QString filename; +public: + DrinkData(void); + void setFile(const QString &filename); + bool writeChanges(void); + bool read(void); + void print(void); + void addDrink(const QString &name, const QString &ingredients); + DrinkList::Iterator getBegin(void); + DrinkList::Iterator getEnd(void); + DrinkList::Iterator findDrink(const QString &name); +}; + +class DrinkItem { +private: + QString name; + QString ingredients; +public: + DrinkItem(void); + DrinkItem(const QString &name, const QString &ingredients); + const QString &getName(void); + const QString &getIngredients(void); + void setName(const QString &name); + void setIngredients(const QString &ingredients); +}; + +#endif // DRINKDATA_H diff --git a/noncore/apps/opie-bartender/newDrinks.ui b/noncore/apps/opie-bartender/newDrinks.ui index eccb312..bcf21d2 100644 --- a/noncore/apps/opie-bartender/newDrinks.ui +++ b/noncore/apps/opie-bartender/newDrinks.ui @@ -1,46 +1,46 @@ <!DOCTYPE UI><UI> <class>New_Drink</class> <widget> <class>QWidget</class> <property stdset="1"> <name>name</name> <cstring>New_Drink</cstring> </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>245</width> + <width>241</width> <height>320</height> </rect> </property> <property stdset="1"> <name>caption</name> <string>New Drink</string> </property> <widget> <class>QLayoutWidget</class> <property stdset="1"> <name>name</name> <cstring>Layout5</cstring> </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>15</y> <width>245</width> <height>290</height> </rect> </property> <grid> <property stdset="1"> <name>margin</name> <number>0</number> </property> <property stdset="1"> <name>spacing</name> <number>6</number> </property> <widget row="0" column="0" > @@ -57,65 +57,65 @@ <property stdset="1"> <name>spacing</name> <number>6</number> </property> <widget> <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>TextLabel1</cstring> </property> <property stdset="1"> <name>text</name> <string>Name</string> </property> </widget> <widget> <class>QLineEdit</class> <property stdset="1"> <name>name</name> <cstring>LineEdit1</cstring> </property> </widget> </hbox> </widget> <widget row="1" column="0" > <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>TextLabel2</cstring> </property> <property stdset="1"> <name>text</name> - <string>Ingrediants</string> + <string>Ingredients</string> </property> </widget> <widget row="2" column="0" > <class>QMultiLineEdit</class> <property stdset="1"> <name>name</name> <cstring>MultiLineEdit1</cstring> </property> </widget> </grid> </widget> </widget> <customwidgets> <customwidget> <class>QWidget</class> <header location="global">qwidget.h</header> <sizehint> <width>-1</width> <height>-1</height> </sizehint> <container>0</container> <sizepolicy> <hordata>5</hordata> <verdata>5</verdata> </sizepolicy> <pixmap>image0</pixmap> </customwidget> </customwidgets> <images> <image> <name>image0</name> <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data> diff --git a/noncore/apps/opie-bartender/newdrinks.cpp b/noncore/apps/opie-bartender/newdrinks.cpp index a7ada3a..2540fb1 100644 --- a/noncore/apps/opie-bartender/newdrinks.cpp +++ b/noncore/apps/opie-bartender/newdrinks.cpp @@ -17,44 +17,45 @@ #include <qlayout.h> New_Drink::New_Drink( QWidget* parent, const char* name, bool modal, WFlags fl ) : QDialog( parent, name, modal, fl ) { QString drinkName = name; if ( !name ) setName( drinkName ); setCaption( drinkName); Layout5 = new QGridLayout( this); Layout5->setSpacing( 6 ); Layout5->setMargin( 4 ); // Layout4 = new QHBoxLayout; // Layout4->setSpacing( 6 ); // Layout4->setMargin( 4 ); TextLabel1 = new QLabel( this, "TextLabel1" ); TextLabel1->setText( tr( "Name" ) ); Layout5->addMultiCellWidget( TextLabel1, 0, 0, 0, 0); LineEdit1 = new QLineEdit( this, "LineEdit1" ); Layout5->addMultiCellWidget( LineEdit1, 0, 0, 1, 2); TextLabel2 = new QLabel( this, "TextLabel2" ); TextLabel2->setText( tr( "Ingredients" ) ); Layout5->addMultiCellWidget( TextLabel2, 1, 1, 0, 0); MultiLineEdit1 = new QMultiLineEdit( this, "MultiLineEdit1" ); + MultiLineEdit1->setWordWrap(QMultiLineEdit::WidgetWidth); Layout5->addMultiCellWidget( MultiLineEdit1, 2, 2, 0, 2); } /* * Destroys the object and frees any allocated resources */ New_Drink::~New_Drink() { // no need to delete child widgets, Qt does it all for us } diff --git a/noncore/apps/opie-bartender/showdrinks.cpp b/noncore/apps/opie-bartender/showdrinks.cpp index dcfce16..9f679f0 100644 --- a/noncore/apps/opie-bartender/showdrinks.cpp +++ b/noncore/apps/opie-bartender/showdrinks.cpp @@ -7,41 +7,42 @@ * 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 "showdrinks.h" #include <qmultilineedit.h> #include <qpushbutton.h> #include <qlayout.h> //extern Bartender *bart; Show_Drink::Show_Drink( QWidget* parent, const char* name, bool modal, WFlags fl ) : QDialog( parent, name, modal, fl ) { if ( !name ) setName( drinkName); drinkName = name; setCaption( drinkName ); Layout5 = new QGridLayout( this); Layout5->setSpacing( 6 ); Layout5->setMargin( 4 ); editDrinkButton = new QPushButton( tr("Edit"), this,"editBtn"); Layout5->addMultiCellWidget( editDrinkButton, 0, 0, 0, 0 ); connect(editDrinkButton, SIGNAL(clicked()), this, SLOT(slotEditDrink())); MultiLineEdit1 = new QMultiLineEdit( this, "MultiLineEdit1" ); MultiLineEdit1->setWordWrap(QMultiLineEdit::WidgetWidth); + MultiLineEdit1->setReadOnly(true); Layout5->addMultiCellWidget( MultiLineEdit1, 1, 3, 0, 3 ); } Show_Drink::~Show_Drink() { } void Show_Drink::slotEditDrink() { reject(); } diff --git a/noncore/apps/opie-bartender/showdrinks.h b/noncore/apps/opie-bartender/showdrinks.h index 11a0cc1..f892c18 100644 --- a/noncore/apps/opie-bartender/showdrinks.h +++ b/noncore/apps/opie-bartender/showdrinks.h @@ -4,41 +4,41 @@ ** copyright : (C) 2002 by ljp email : ljp@llornkcor.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 SHOW_DRINK_H #define SHOW_DRINK_H #include <qvariant.h> #include <qwidget.h> #include <qdialog.h> class QVBoxLayout; class QHBoxLayout; class QGridLayout; class QLabel; class QLineEdit; class QMultiLineEdit; class QString; class QPushButton; class Show_Drink : public QDialog { Q_OBJECT public: Show_Drink( QWidget* parent = 0, const char* name = 0, bool modal=TRUE, WFlags fl = 0 ); ~Show_Drink(); QMultiLineEdit* MultiLineEdit1; + QPushButton *editDrinkButton; public slots: void slotEditDrink(); protected: QGridLayout* Layout5; QString drinkName; - QPushButton *editDrinkButton; }; #endif // SHOW_DRINK_H |