summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-bartender/bartender.cpp36
1 files changed, 19 insertions, 17 deletions
diff --git a/noncore/apps/opie-bartender/bartender.cpp b/noncore/apps/opie-bartender/bartender.cpp
index bee164c..57b28d4 100644
--- a/noncore/apps/opie-bartender/bartender.cpp
+++ b/noncore/apps/opie-bartender/bartender.cpp
@@ -1,315 +1,317 @@
1/**************************************************************************** 1/****************************************************************************
2** 2**
3** Created: Sat Jul 20 08:10:53 2002 3** Created: Sat Jul 20 08:10:53 2002
4** by: L.J. Potter <ljp@llornkcor.com> 4** by: L.J. Potter <ljp@llornkcor.com>
5** copyright : (C) 2002 by ljp 5** copyright : (C) 2002 by ljp
6 email : ljp@llornkcor.com 6 email : ljp@llornkcor.com
7 * This program is free software; you can redistribute it and/or modify * 7 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by * 8 * it under the terms of the GNU General Public License as published by *
9 * the Free Software Foundation; either version 2 of the License, or * 9 * the Free Software Foundation; either version 2 of the License, or *
10 * (at your option) any later version. * 10 * (at your option) any later version. *
11 ***************************************************************************/ 11 ***************************************************************************/
12 12
13#include "bartender.h" 13#include "bartender.h"
14#include "showdrinks.h" 14#include "showdrinks.h"
15#include "inputDialog.h" 15#include "inputDialog.h"
16#include "searchresults.h" 16#include "searchresults.h"
17#include "bac.h" 17#include "bac.h"
18#include "drinkdata.h" 18#include "drinkdata.h"
19 19
20/* OPIE */ 20/* OPIE */
21#include <opie2/odebug.h> 21#include <opie2/odebug.h>
22#include <opie2/oresource.h>
22#include <qpe/qpeapplication.h> 23#include <qpe/qpeapplication.h>
23#include <qpe/resource.h>
24using namespace Opie::Core; 24using namespace Opie::Core;
25 25
26/* QT */ 26/* QT */
27#include <qlineedit.h> 27#include <qlineedit.h>
28#include <qdir.h> 28#include <qdir.h>
29#include <qpushbutton.h> 29#include <qpushbutton.h>
30#include <qlistbox.h> 30#include <qlistbox.h>
31#include <qmultilineedit.h> 31#include <qmultilineedit.h>
32#include <qmessagebox.h> 32#include <qmessagebox.h>
33#include <qtextstream.h> 33#include <qtextstream.h>
34#include <qaction.h> 34#include <qaction.h>
35#include <qheader.h> 35#include <qheader.h>
36#include <qlistview.h> 36#include <qlistview.h>
37#include <qlayout.h> 37#include <qlayout.h>
38#include <qtoolbar.h> 38#include <qtoolbar.h>
39#include <qmenubar.h> 39#include <qmenubar.h>
40 40
41/* STD */ 41/* STD */
42#include <fcntl.h> 42#include <fcntl.h>
43#include <unistd.h> 43#include <unistd.h>
44#include <stdlib.h> 44#include <stdlib.h>
45#include <stdio.h> 45#include <stdio.h>
46#include <errno.h> 46#include <errno.h>
47 47
48Bartender::Bartender( QWidget* parent, const char* name, WFlags fl ) 48Bartender::Bartender( QWidget* parent, const char* name, WFlags fl )
49 : QMainWindow( parent, name, fl ) { 49 : QMainWindow( parent, name, fl ) {
50 if ( !name ) 50 if ( !name )
51 setName( "Bartender" ); 51 setName( "Bartender" );
52 QGridLayout *layout = new QGridLayout( this ); 52
53 layout->setSpacing( 2);
54 layout->setMargin( 2);
55 connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) ); 53 connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) );
56 54
57 setCaption( tr( "Bartender" ) ); 55 setCaption( tr( "Bartender" ) );
58 56
59 setToolBarsMovable( FALSE ); 57 setToolBarsMovable( false );
60 58 QToolBar *dock = new QToolBar( this );
61 ToolBar1 = new QToolBar( this, "ToolBar1" ); 59 dock->setHorizontalStretchable( true );
62 ToolBar1->setFixedHeight(22);
63 layout->addMultiCellWidget( ToolBar1, 0, 0, 0, 4 );
64 60
65 QMenuBar *menuBar = new QMenuBar( ToolBar1 ); 61 QMenuBar *menuBar = new QMenuBar( dock );
62 menuBar->setMargin( 0 );
66 QPopupMenu *fileMenu; 63 QPopupMenu *fileMenu;
67 fileMenu = new QPopupMenu( this); 64 fileMenu = new QPopupMenu( this);
68 menuBar->insertItem( tr("File"), fileMenu ); 65 menuBar->insertItem( tr("File"), fileMenu );
69 66
70 fileMenu->insertItem(tr("New Drink")); 67 fileMenu->insertItem(tr("New Drink"));
71 fileMenu->insertItem(tr("Open Drink")); 68 fileMenu->insertItem(tr("Open Drink"));
72 fileMenu->insertItem(tr("Find by Drink Name")); 69 fileMenu->insertItem(tr("Find by Drink Name"));
73 fileMenu->insertItem(tr("Find by Ingredient")); 70 fileMenu->insertItem(tr("Find by Ingredient"));
74 71
75 QPopupMenu *editMenu; 72 QPopupMenu *editMenu;
76 editMenu = new QPopupMenu( this); 73 editMenu = new QPopupMenu( this);
77 menuBar->insertItem( tr("Edit"), editMenu ); 74 menuBar->insertItem( tr("Edit"), editMenu );
78 editMenu->insertItem(tr("Edit Drink")); 75 editMenu->insertItem(tr("Edit Drink"));
79 76
80 connect( fileMenu, SIGNAL( activated(int) ), this, SLOT( fileMenuActivated(int) )); 77 connect( fileMenu, SIGNAL( activated(int) ), this, SLOT( fileMenuActivated(int) ));
81 connect( editMenu, SIGNAL( activated(int) ), this, SLOT( editMenuActivated(int) )); 78 connect( editMenu, SIGNAL( activated(int) ), this, SLOT( editMenuActivated(int) ));
82 79
80 ToolBar1 = new QToolBar( this );
83 81
84 QAction *a = new QAction( tr( "New" ), Resource::loadPixmap( "new" ), "New", 0, this, 0 ); 82 QAction *a = new QAction( tr( "New" ), Opie::Core::OResource::loadPixmap( "new", Opie::Core::OResource::SmallIcon ),
83 "New", 0, this, 0 );
85 connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) ); 84 connect( a, SIGNAL( activated() ), this, SLOT( fileNew() ) );
86 a->addTo( ToolBar1 ); 85 a->addTo( ToolBar1 );
87 86
88 a = new QAction( tr( "Open" ), Resource::loadPixmap( "bartender/bartender_sm" ), "open", 0, this, 0 ); 87 a = new QAction( tr( "Open" ), Opie::Core::OResource::loadPixmap( "bartender/bartender_sm", Opie::Core::OResource::SmallIcon ),
88 "open", 0, this, 0 );
89 connect( a, SIGNAL( activated() ), this, SLOT( openCurrentDrink() ) ); 89 connect( a, SIGNAL( activated() ), this, SLOT( openCurrentDrink() ) );
90 a->addTo( ToolBar1 ); 90 a->addTo( ToolBar1 );
91 91
92 a = new QAction( tr( "Find" ), Resource::loadPixmap( "find" ), "Find", 0, this, 0 ); 92 a = new QAction( tr( "Find" ), Opie::Core::OResource::loadPixmap( "find", Opie::Core::OResource::SmallIcon ),
93 "Find", 0, this, 0 );
93 connect( a, SIGNAL( activated() ), this, SLOT( askSearch() ) ); 94 connect( a, SIGNAL( activated() ), this, SLOT( askSearch() ) );
94 a->addTo( ToolBar1 ); 95 a->addTo( ToolBar1 );
95 96
96 a = new QAction( tr( "Edit" ), Resource::loadPixmap( "edit" ),"Edit", 0, this, 0 ); 97 a = new QAction( tr( "Edit" ), Opie::Core::OResource::loadPixmap( "edit", Opie::Core::OResource::SmallIcon ),
98 "Edit", 0, this, 0 );
97 connect( a, SIGNAL( activated() ), this, SLOT( doEdit() ) ); 99 connect( a, SIGNAL( activated() ), this, SLOT( doEdit() ) );
98 a->addTo( ToolBar1 ); 100 a->addTo( ToolBar1 );
99 101
100 QPushButton *t; 102 QPushButton *t;
101 t= new QPushButton( "BAC", ToolBar1, "bacButtin"); 103 t= new QPushButton( "BAC", ToolBar1, "bacButtin");
102 connect( t, SIGNAL( clicked() ), this, SLOT( doBac() ) ); 104 connect( t, SIGNAL( clicked() ), this, SLOT( doBac() ) );
103 105
104 DrinkView = new QListView( this, "DrinkView" ); 106 DrinkView = new QListView( this, "DrinkView" );
105 DrinkView->addColumn( tr( "Name of Drink" ) ); 107 DrinkView->addColumn( tr( "Name of Drink" ) );
106// DrinkView->setRootIsDecorated( TRUE );
107 DrinkView->header()->hide(); 108 DrinkView->header()->hide();
108 109
109 QPEApplication::setStylusOperation( DrinkView->viewport(),QPEApplication::RightOnHold); 110 QPEApplication::setStylusOperation( DrinkView->viewport(),QPEApplication::RightOnHold);
110 111
111 connect(DrinkView, SIGNAL( doubleClicked(QListViewItem*)),this,SLOT(showDrink(QListViewItem*))); 112 connect(DrinkView, SIGNAL( doubleClicked(QListViewItem*)),this,SLOT(showDrink(QListViewItem*)));
112 connect(DrinkView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int)), 113 connect(DrinkView, SIGNAL( mouseButtonPressed(int,QListViewItem*,const QPoint&,int)),
113 this,SLOT( showDrink(int,QListViewItem*,const QPoint&,int))); 114 this,SLOT( showDrink(int,QListViewItem*,const QPoint&,int)));
114 115
115 layout->addMultiCellWidget( DrinkView, 1, 2, 0, 4 );
116 if(QDir("db").exists()) 116 if(QDir("db").exists())
117 drinkDB.setFile("db/drinkdb.txt"); 117 drinkDB.setFile("db/drinkdb.txt");
118 else 118 else
119 drinkDB.setFile(QPEApplication::qpeDir()+"etc/bartender/drinkdb.txt"); 119 drinkDB.setFile(QPEApplication::qpeDir()+"etc/bartender/drinkdb.txt");
120 120
121 initDrinkDb(); 121 initDrinkDb();
122 122
123 DrinkView->setFocus(); 123 DrinkView->setFocus();
124
125 setCentralWidget( DrinkView );
124} 126}
125 127
126Bartender::~Bartender() { 128Bartender::~Bartender() {
127} 129}
128 130
129/* 131/*
130this happens right before exit */ 132this happens right before exit */
131void Bartender::cleanUp() { 133void Bartender::cleanUp() {
132 134
133} 135}
134 136
135void Bartender::initDrinkDb() { 137void Bartender::initDrinkDb() {
136 if(drinkDB.read()) 138 if(drinkDB.read())
137 fillList(); 139 fillList();
138 else 140 else
139 QMessageBox::message( (tr("Note")), (tr("Drink database not opened sucessfully.\n")) ); 141 QMessageBox::message( (tr("Note")), (tr("Drink database not opened sucessfully.\n")) );
140} 142}
141 143
142void Bartender::fillList() { 144void Bartender::fillList() {
143 QString lastName; 145 QString lastName;
144 if( DrinkView->currentItem() != NULL ) 146 if( DrinkView->currentItem() != NULL )
145 lastName = DrinkView->currentItem()->text(0); 147 lastName = DrinkView->currentItem()->text(0);
146 else 148 else
147 lastName = ""; 149 lastName = "";
148 150
149 DrinkView->clear(); 151 DrinkView->clear();
150 int i=0; 152 int i=0;
151 QListViewItem * item ; 153 QListViewItem * item ;
152 QString s; 154 QString s;
153 155
154 DrinkList::Iterator it = drinkDB.getBegin(); 156 DrinkList::Iterator it = drinkDB.getBegin();
155 while ( it != drinkDB.getEnd() ) { 157 while ( it != drinkDB.getEnd() ) {
156 item= new QListViewItem( DrinkView, 0 ); 158 item= new QListViewItem( DrinkView, 0 );
157 item->setText( 0, (*it).getName()); 159 item->setText( 0, (*it).getName());
158 i++; 160 i++;
159 ++it; 161 ++it;
160 } 162 }
161 163
162 if( lastName != "" ) { 164 if( lastName != "" ) {
163 QListViewItemIterator it( DrinkView ); 165 QListViewItemIterator it( DrinkView );
164 for ( ; it.current(); ++it ) { 166 for ( ; it.current(); ++it ) {
165 if ( it.current()->text(0) == lastName ) { 167 if ( it.current()->text(0) == lastName ) {
166 DrinkView->setCurrentItem(it.current()); 168 DrinkView->setCurrentItem(it.current());
167 break; 169 break;
168 } 170 }
169 } 171 }
170 } 172 }
171 else if( DrinkView->childCount() > 0) 173 else if( DrinkView->childCount() > 0)
172 DrinkView->setCurrentItem(DrinkView->firstChild()); 174 DrinkView->setCurrentItem(DrinkView->firstChild());
173 175
174 odebug << "there are currently " << i << " of drinks" << oendl; 176 odebug << "there are currently " << i << " of drinks" << oendl;
175} 177}
176 178
177void Bartender::fileNew() { 179void Bartender::fileNew() {
178 180
179 New_Drink *newDrinks; 181 New_Drink *newDrinks;
180 newDrinks = new New_Drink(this,"New Drink", TRUE); 182 newDrinks = new New_Drink(this,"New Drink", TRUE);
181 QString newName, newIng; 183 QString newName, newIng;
182 QPEApplication::execDialog( newDrinks ); 184 QPEApplication::execDialog( newDrinks );
183 newName = newDrinks->LineEdit1->text(); 185 newName = newDrinks->LineEdit1->text();
184 newIng= newDrinks->MultiLineEdit1->text(); 186 newIng= newDrinks->MultiLineEdit1->text();
185 187
186 if(newDrinks ->result() == 1 ) { 188 if(newDrinks ->result() == 1 ) {
187 drinkDB.addDrink(newName, newIng); 189 drinkDB.addDrink(newName, newIng);
188 if(!drinkDB.writeChanges()) { 190 if(!drinkDB.writeChanges()) {
189 QMessageBox::message( (tr("Note")), (tr("Failed to write to drink database!\n")) ); 191 QMessageBox::message( (tr("Note")), (tr("Failed to write to drink database!\n")) );
190 } 192 }
191 fillList(); 193 fillList();
192 } 194 }
193 delete newDrinks; 195 delete newDrinks;
194} 196}
195 197
196void Bartender::showDrink(int mouse, QListViewItem * item, const QPoint&, int) { 198void Bartender::showDrink(int mouse, QListViewItem * item, const QPoint&, int) {
197 switch (mouse) { 199 switch (mouse) {
198 case 1: 200 case 1:
199// showDrink(item); 201// showDrink(item);
200 break; 202 break;
201 case 2: 203 case 2:
202 showDrink(item); 204 showDrink(item);
203 break; 205 break;
204 } 206 }
205} 207}
206 208
207void Bartender::showDrink( QListViewItem *item) { 209void Bartender::showDrink( QListViewItem *item) {
208 if(item==NULL) return; 210 if(item==NULL) return;
209 Show_Drink *showDrinks; 211 Show_Drink *showDrinks;
210 QString myDrink=item->text(0); 212 QString myDrink=item->text(0);
211 showDrinks = new Show_Drink(this, myDrink, TRUE); 213 showDrinks = new Show_Drink(this, myDrink, TRUE);
212 214
213 DrinkList::Iterator it = drinkDB.findDrink(myDrink); 215 DrinkList::Iterator it = drinkDB.findDrink(myDrink);
214 if(it != drinkDB.getEnd()) { 216 if(it != drinkDB.getEnd()) {
215 showDrinks->MultiLineEdit1->setText((*it).getIngredients()); 217 showDrinks->MultiLineEdit1->setText((*it).getIngredients());
216 218
217 connect(showDrinks->editDrinkButton, SIGNAL(clicked()), this, SLOT(doEdit())); 219 connect(showDrinks->editDrinkButton, SIGNAL(clicked()), this, SLOT(doEdit()));
218 QPEApplication::execDialog( showDrinks ); 220 QPEApplication::execDialog( showDrinks );
219 } 221 }
220 222
221 delete showDrinks; 223 delete showDrinks;
222} 224}
223 225
224void Bartender::askSearch() { 226void Bartender::askSearch() {
225 switch ( QMessageBox::warning(this,tr("Find"),tr("Search by drink name\n")+ 227 switch ( QMessageBox::warning(this,tr("Find"),tr("Search by drink name\n")+
226 "\nor ingredient ?" 228 "\nor ingredient ?"
227 ,tr("Drink Name"),tr("Ingredient"),0,0,1) ) { 229 ,tr("Drink Name"),tr("Ingredient"),0,0,1) ) {
228 case 0: 230 case 0:
229 doSearchByName(); 231 doSearchByName();
230 break; 232 break;
231 case 1: 233 case 1:
232 doSearchByIngredient(); 234 doSearchByIngredient();
233 break; 235 break;
234 }; 236 };
235} 237}
236 238
237/* search by name */ 239/* search by name */
238void Bartender::doSearchByName() { 240void Bartender::doSearchByName() {
239// if( DrinkView->currentItem() == NULL) return; 241// if( DrinkView->currentItem() == NULL) return;
240 QStringList searchList; 242 QStringList searchList;
241 QString searchForDrinkName; 243 QString searchForDrinkName;
242 InputDialog *fileDlg; 244 InputDialog *fileDlg;
243 fileDlg = new InputDialog(this,tr("Find by Drink Name"),TRUE, 0); 245 fileDlg = new InputDialog(this,tr("Find by Drink Name"),TRUE, 0);
244 fileDlg->exec(); 246 fileDlg->exec();
245 if( fileDlg->result() == 1 ) { 247 if( fileDlg->result() == 1 ) {
246 searchForDrinkName = fileDlg->LineEdit1->text(); 248 searchForDrinkName = fileDlg->LineEdit1->text();
247 QListViewItemIterator it( DrinkView ); 249 QListViewItemIterator it( DrinkView );
248 for ( ; it.current(); ++it ) { 250 for ( ; it.current(); ++it ) {
249 if ( it.current()->text(0).find( searchForDrinkName, 0, FALSE) != -1 ) { 251 if ( it.current()->text(0).find( searchForDrinkName, 0, FALSE) != -1 ) {
250// odebug << it.current()->text(0) << oendl; 252// odebug << it.current()->text(0) << oendl;
251 searchList.append(it.current()->text(0)); 253 searchList.append(it.current()->text(0));
252 } 254 }
253 } 255 }
254 if(searchList.count() >0) 256 if(searchList.count() >0)
255 showSearchResult(searchList); 257 showSearchResult(searchList);
256 else 258 else
257 QMessageBox::message(tr("Search"),tr("Sorry no results for\n")+searchForDrinkName); 259 QMessageBox::message(tr("Search"),tr("Sorry no results for\n")+searchForDrinkName);
258 }//end Inputdialog 260 }//end Inputdialog
259 delete fileDlg; 261 delete fileDlg;
260} 262}
261 263
262void Bartender::doSearchByIngredient() { 264void Bartender::doSearchByIngredient() {
263// if( DrinkView->currentItem() == NULL) return; 265// if( DrinkView->currentItem() == NULL) return;
264 QStringList searchList; 266 QStringList searchList;
265 QString searchForIngredient, lastDrinkName, lastDrinkIngredients; 267 QString searchForIngredient, lastDrinkName, lastDrinkIngredients;
266 268
267 InputDialog *fileDlg; 269 InputDialog *fileDlg;
268 fileDlg = new InputDialog(this,tr("Find by Ingredient"),TRUE, 0); 270 fileDlg = new InputDialog(this,tr("Find by Ingredient"),TRUE, 0);
269 fileDlg->exec(); 271 fileDlg->exec();
270 if( fileDlg->result() == 1 ) { 272 if( fileDlg->result() == 1 ) {
271 searchForIngredient = fileDlg->LineEdit1->text(); 273 searchForIngredient = fileDlg->LineEdit1->text();
272 274
273 DrinkList::Iterator it = drinkDB.getBegin(); 275 DrinkList::Iterator it = drinkDB.getBegin();
274 while ( it != drinkDB.getEnd() ) { 276 while ( it != drinkDB.getEnd() ) {
275 lastDrinkName = (*it).getName(); 277 lastDrinkName = (*it).getName();
276 lastDrinkIngredients = (*it).getIngredients(); 278 lastDrinkIngredients = (*it).getIngredients();
277 279
278 if( lastDrinkIngredients.find( searchForIngredient ,0, FALSE) != -1 ) 280 if( lastDrinkIngredients.find( searchForIngredient ,0, FALSE) != -1 )
279 searchList.append( lastDrinkName ); 281 searchList.append( lastDrinkName );
280 282
281 ++it; 283 ++it;
282 } 284 }
283 285
284 if(searchList.count() >0) 286 if(searchList.count() >0)
285 showSearchResult(searchList); 287 showSearchResult(searchList);
286 else 288 else
287 QMessageBox::message(tr("Search"),tr("Sorry no results for\n")+ searchForIngredient); 289 QMessageBox::message(tr("Search"),tr("Sorry no results for\n")+ searchForIngredient);
288 } 290 }
289 delete fileDlg; 291 delete fileDlg;
290} 292}
291 293
292void Bartender::showSearchResult(QStringList &searchList) { 294void Bartender::showSearchResult(QStringList &searchList) {
293 QString result; 295 QString result;
294 Search_Results *searchDlg; 296 Search_Results *searchDlg;
295 297
296 searchList.sort(); 298 searchList.sort();
297 299
298 searchDlg = new Search_Results(this, "Search Results", TRUE); 300 searchDlg = new Search_Results(this, "Search Results", TRUE);
299 searchDlg->ListBox1->insertStringList( searchList,-1); 301 searchDlg->ListBox1->insertStringList( searchList,-1);
300 QPEApplication::execDialog( searchDlg ); 302 QPEApplication::execDialog( searchDlg );
301 303
302 if( searchDlg->result() == 1 ) { 304 if( searchDlg->result() == 1 ) {
303 result= searchDlg->ListBox1->currentText(); 305 result= searchDlg->ListBox1->currentText();
304 } 306 }
305 QListViewItemIterator it2( DrinkView ); 307 QListViewItemIterator it2( DrinkView );
306 for ( ; it2.current(); ++it2 ) { 308 for ( ; it2.current(); ++it2 ) {
307 if ( it2.current()->text(0)== result ) { 309 if ( it2.current()->text(0)== result ) {
308// odebug << it2.current()->text(0) << oendl; 310// odebug << it2.current()->text(0) << oendl;
309 showDrink(it2.current()); 311 showDrink(it2.current());
310 } 312 }
311 } 313 }
312delete searchDlg; 314delete searchDlg;
313} 315}
314 316
315void Bartender::doEdit() { 317void Bartender::doEdit() {