From 82c17c8b900e8b4900ed048213934f67ba22f846 Mon Sep 17 00:00:00 2001 From: llornkcor Date: Tue, 09 Sep 2003 05:50:12 +0000 Subject: bartender - for your drunken pleasures --- (limited to 'noncore/apps/opie-bartender/bac.cpp') diff --git a/noncore/apps/opie-bartender/bac.cpp b/noncore/apps/opie-bartender/bac.cpp new file mode 100644 index 0000000..ac8a83e --- a/dev/null +++ b/noncore/apps/opie-bartender/bac.cpp @@ -0,0 +1,174 @@ +/**************************************************************************** +** +** Created: Sun Jul 21 19:00:14 2002 +** by: L.J. Potter +** 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 "bac.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +BacDialog::BacDialog( QWidget* parent, const char* name, bool modal, WFlags fl ) + : QDialog( parent, name, modal, fl ) +{ + if ( !name ) + setName( "BacDialog" ); + setCaption( tr( "Blood Alcohol Estimator" ) ); + + Layout7 = new QVBoxLayout( this); + Layout7->setSpacing( 6 ); + Layout7->setMargin( 0 ); + + Layout1 = new QHBoxLayout; + Layout1->setSpacing( 6 ); + Layout1->setMargin( 0 ); + + NumberSpinBox = new QSpinBox( this, "NumberSpinBox" ); + Layout1->addWidget( NumberSpinBox ); + + TextLabel1 = new QLabel(this, "TextLabel1" ); + TextLabel1->setText( tr( "Number of Drinks Consumed" ) ); + Layout1->addWidget( TextLabel1 ); + Layout7->addLayout( Layout1 ); + + Layout2 = new QHBoxLayout; + Layout2->setSpacing( 6 ); + Layout2->setMargin( 0 ); + + WeightSpinBox = new QSpinBox( this, "WeightSpinBox" ); + Layout2->addWidget( WeightSpinBox ); + WeightSpinBox->setMaxValue(500); + + TextLabel2 = new QLabel( this, "TextLabel2" ); + TextLabel2->setText( tr( "Weight" ) ); + Layout2->addWidget( TextLabel2 ); + Layout7->addLayout( Layout2 ); + + Layout3 = new QHBoxLayout; + Layout3->setSpacing( 6 ); + Layout3->setMargin( 0 ); + + TimeSpinBox = new QSpinBox( this, "TimeSpinBox" ); + Layout3->addWidget( TimeSpinBox ); + TimeSpinBox->setMaxValue(24); + + TextLabel3 = new QLabel( this, "TextLabel3" ); + TextLabel3->setText( tr( "Period of Time (hours)" ) ); + Layout3->addWidget( TextLabel3 ); + Layout7->addLayout( Layout3 ); + + Layout4 = new QHBoxLayout; + Layout4->setSpacing( 6 ); + Layout4->setMargin( 0 ); + + GenderComboBox = new QComboBox( FALSE, this, "GenderComboBox" ); + GenderComboBox->insertItem( tr( "Male" ) ); + GenderComboBox->insertItem( tr( "Female" ) ); + GenderComboBox->insertItem( tr( "Unknown" ) ); + Layout4->addWidget( GenderComboBox ); + + TextLabel4 = new QLabel( this, "TextLabel4" ); + TextLabel4->setText( tr( "Gender" ) ); + Layout4->addWidget( TextLabel4 ); + Layout7->addLayout( Layout4 ); + + Layout6 = new QHBoxLayout; + Layout6->setSpacing( 6 ); + Layout6->setMargin( 0 ); + + TypeDrinkComboBox = new QComboBox( FALSE,this, "TypeDrinkComboBox" ); + TypeDrinkComboBox->insertItem( tr( "Beer" ) ); + TypeDrinkComboBox->insertItem( tr( "Wine" ) ); + TypeDrinkComboBox->insertItem( tr( "Shot" ) ); + Layout6->addWidget( TypeDrinkComboBox ); + + TextLabel1_2 = new QLabel( this, "TextLabel1_2" ); + TextLabel1_2->setText( tr( "Type of drink" ) ); + Layout6->addWidget( TextLabel1_2 ); + Layout7->addLayout( Layout6 ); + + PushButton1 = new QPushButton( this, "PushButton1" ); + PushButton1->setText( tr( "Calculate" ) ); + Layout7->addWidget( PushButton1 ); + connect(PushButton1,SIGNAL( clicked()), this, SLOT( calculate())); + + LCDNumber1 = new QLCDNumber( this, "LCDNumber1" ); + LCDNumber1->setMaximumHeight( 50); + LCDNumber1->setNumDigits(6); + LCDNumber1->setSmallDecimalPoint(TRUE); + LCDNumber1->setFrameStyle(QFrame::Box); + LCDNumber1->setLineWidth(2); + LCDNumber1->setSegmentStyle( QLCDNumber::Filled); + QPalette palette = LCDNumber1->palette(); + palette.setColor(QPalette::Normal, QColorGroup::Foreground, Qt::red); + palette.setColor(QPalette::Normal, QColorGroup::Light, Qt::black); + palette.setColor(QPalette::Normal, QColorGroup::Dark, Qt::darkGreen); + LCDNumber1->setPalette(palette); + + + Layout7->addWidget( LCDNumber1 ); + + +} + +BacDialog::~BacDialog() { +} + +void BacDialog::calculate() { + float weight,genderDiff, bac, typeDrink=0, drinkOz=0, bodyWater, milliliters, oz, gram, gramsMil, alc, metab, bac1; + QString estBac; + + if( GenderComboBox->currentItem()==0) + genderDiff = .58; + else + genderDiff = .49; + + switch(TypeDrinkComboBox->currentItem()) { + case 0: { //beer + typeDrink = .045; + drinkOz = 12; + } + break; + case 1: { + typeDrink = .2; + drinkOz = 4; + } + break; + case 2: { + typeDrink = .5; + drinkOz = 1.5; + } + break; + }; + weight = WeightSpinBox->value() / 2.2046; // in kilograms + bodyWater = weight * genderDiff; + milliliters = bodyWater * 1000; + oz = 23.36/milliliters; + gram = oz * .806; + gramsMil = gram * 100; + alc = drinkOz*NumberSpinBox->value() * typeDrink; + metab = TimeSpinBox->value() * .012; + bac1 = gramsMil * alc; + bac = bac1 - metab; + + + +// weightDrink= (nDrinks * .79) / (weight * genderDiff*1000); +// (ounces * percent * 0.075 / weight) - (hours * 0.015); +// bac = (((weightDrink * .806) * 100) * .54);// - (time * .012); // assuming beer of 4.5% + estBac.sprintf("%f",bac); + LCDNumber1->display(bac); +// BACTextLabel->setText(estBac ); +} -- cgit v0.9.0.2