From 0c8ed6c9a4000af8f48581a81c4b5c2f5b9fd502 Mon Sep 17 00:00:00 2001 From: Michele Calgaro Date: Sun, 13 Oct 2024 11:56:14 +0900 Subject: Rearrange folders structure to remove unnecessary 'krecipes' second level subfolder Signed-off-by: Michele Calgaro --- src/widgets/amountunitinput.cpp | 68 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/widgets/amountunitinput.cpp (limited to 'src/widgets/amountunitinput.cpp') diff --git a/src/widgets/amountunitinput.cpp b/src/widgets/amountunitinput.cpp new file mode 100644 index 0000000..699f76d --- /dev/null +++ b/src/widgets/amountunitinput.cpp @@ -0,0 +1,68 @@ +/*************************************************************************** +* Copyright (C) 2006 by * +* Jason Kivlighn (jkivlighn@gmail.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 "amountunitinput.h" + +#include +#include + +#include "fractioninput.h" +#include "unitcombobox.h" +#include "backends/recipedb.h" +#include "datablocks/mixednumber.h" + +AmountUnitInput::AmountUnitInput( TQWidget *parent, RecipeDB *database, Unit::Type type, MixedNumber::Format format ) : TQHBox(parent), + m_item(0), m_database(database) +{ + amountInput = new FractionInput(this,format); + unitBox = new UnitComboBox(this,database,type); + unitBox->reload(); + + connect( amountInput, TQ_SIGNAL(valueChanged(const MixedNumber &)), TQ_SLOT(emitValueChanged()) ); + connect( unitBox, TQ_SIGNAL(activated(int)), TQ_SLOT(emitValueChanged()) ); + connect( amountInput, TQ_SIGNAL(returnPressed()), TQ_SIGNAL(doneEditing()) ); +} + +void AmountUnitInput::emitValueChanged() +{ + emit valueChanged( amount(), unit() ); +} + +void AmountUnitInput::setAmount( const MixedNumber &amount ) +{ + amountInput->disconnect( this ); + if ( amount.toDouble() < 0 ) + amountInput->clear(); + else + amountInput->setValue( amount, 0 ); + connect( amountInput, TQ_SIGNAL(valueChanged(const MixedNumber &)), TQ_SLOT(emitValueChanged()) ); +} + +void AmountUnitInput::setUnit( const Unit &unit ) +{ + if ( unit.id == -1 ) + unitBox->setCurrentItem(0); + else + unitBox->setSelected( unit.id ); + +} + +MixedNumber AmountUnitInput::amount() const +{ + return amountInput->value(); +} + +Unit AmountUnitInput::unit() const +{ + //TODO Potential for optimization here... avoid the database call + return m_database->unitName( unitBox->id( unitBox->currentItem() ) ); +} + +#include "amountunitinput.moc" -- cgit v1.2.3