summaryrefslogtreecommitdiffstats
path: root/src/dialogs/conversiondialog.cpp
diff options
context:
space:
mode:
authorMichele Calgaro <[email protected]>2024-10-13 11:56:14 +0900
committerMichele Calgaro <[email protected]>2024-10-21 09:29:11 +0900
commit0c8ed6c9a4000af8f48581a81c4b5c2f5b9fd502 (patch)
tree10f9d3223f0a0904a0748a28ca44da52ee1092b7 /src/dialogs/conversiondialog.cpp
parent7d5ba3180a82a0827c1fbd6dc93a2abf4f882c37 (diff)
downloadkrecipes-0c8ed6c9a4000af8f48581a81c4b5c2f5b9fd502.tar.gz
krecipes-0c8ed6c9a4000af8f48581a81c4b5c2f5b9fd502.zip
Rearrange folders structure to remove unnecessary 'krecipes' second level subfolder
Signed-off-by: Michele Calgaro <[email protected]>
Diffstat (limited to 'src/dialogs/conversiondialog.cpp')
-rw-r--r--src/dialogs/conversiondialog.cpp166
1 files changed, 166 insertions, 0 deletions
diff --git a/src/dialogs/conversiondialog.cpp b/src/dialogs/conversiondialog.cpp
new file mode 100644
index 0000000..c9e3f51
--- /dev/null
+++ b/src/dialogs/conversiondialog.cpp
@@ -0,0 +1,166 @@
+/***************************************************************************
+* Copyright (C) 2006 by *
+* Jason Kivlighn ([email protected]) *
+* *
+* 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 "conversiondialog.h"
+
+#include <tqvariant.h>
+#include <tqpushbutton.h>
+#include <kcombobox.h>
+#include <tqlabel.h>
+#include <klineedit.h>
+#include <tqlayout.h>
+#include <tqtooltip.h>
+#include <tqwhatsthis.h>
+#include <tqvbox.h>
+
+#include <kcombobox.h>
+#include <klineedit.h>
+#include <tdelocale.h>
+
+#include "backends/recipedb.h"
+#include "widgets/unitcombobox.h"
+#include "widgets/ingredientcombobox.h"
+#include "widgets/prepmethodcombobox.h"
+#include "widgets/fractioninput.h"
+
+ConversionDialog::ConversionDialog( TQWidget* parent, RecipeDB *db, const char* name )
+ : KDialogBase( parent, name, false, i18n( "Measurement Converter" ),
+ KDialogBase::Close | KDialogBase::User1 | KDialogBase::Help, KDialogBase::Close ),
+ m_database(db)
+{
+ setHelp("measure-converter");
+ setButtonText( KDialogBase::User1, i18n("Convert") );
+
+ setSizeGripEnabled( TRUE );
+
+ TQVBox *page = makeVBoxMainWidget();
+
+ TQHBox *vbox = new TQVBox(page);
+
+ TQHBox *fromTopBox = new TQHBox(vbox);
+ convertLabel = new TQLabel( fromTopBox, "convertLabel" );
+
+ amountEdit = new FractionInput( fromTopBox );
+
+ fromUnitBox = new UnitComboBox( fromTopBox, db );
+ fromUnitBox->reload();
+ fromTopBox->setStretchFactor( fromUnitBox, 2 );
+ fromTopBox->setSpacing(3);
+
+ TQHBox *fromBottomBox = new TQHBox(vbox);
+
+ ingredientBox = new IngredientComboBox( FALSE, fromBottomBox, db, i18n( "--Ingredient (optional)--" ) );
+ ingredientBox->reload();
+
+ prepMethodBox = new PrepMethodComboBox( false, fromBottomBox, db, i18n( "-No Preparation-" ) );
+ prepMethodBox->reload();
+ fromBottomBox->setSpacing(3);
+
+ TQHBox *toBox = new TQHBox(vbox);
+
+ toLabel = new TQLabel( toBox, "toLabel" );
+
+ toUnitBox = new UnitComboBox( toBox, db );
+ toUnitBox->reload();
+ toBox->setStretchFactor( toUnitBox, 2 );
+ toBox->setSpacing(8);
+
+ TQHBox *resultBox = new TQHBox(vbox);
+ resultLabel = new TQLabel( resultBox, "resultLabel" );
+ resultText = new TQLabel( resultBox, "resultText" );
+ resultBox->setStretchFactor( resultText, 2 );
+
+ languageChange();
+
+ setInitialSize( TQSize(300, 200).expandedTo(minimumSizeHint()) );
+
+ // signals and slots connections
+ connect ( this, TQ_SIGNAL( closeClicked() ), this, TQ_SLOT( accept() ) );
+}
+
+ConversionDialog::~ConversionDialog()
+{
+}
+
+void ConversionDialog::languageChange()
+{
+ convertLabel->setText( i18n( "Convert" ) );
+ toLabel->setText( i18n( "To" ) );
+ resultLabel->setText( i18n( "<b>Result:</b>" ) );
+ resultText->setText( TQString::null );
+}
+
+void ConversionDialog::show()
+{
+ reset();
+ KDialogBase::show();
+}
+
+void ConversionDialog::reset()
+{
+ resultText->setText( TQString::null );
+ ingredientBox->setCurrentItem( 0 );
+ prepMethodBox->setCurrentItem( 0 );
+ toUnitBox->setCurrentItem( 0 );
+ fromUnitBox->setCurrentItem( 0 );
+ amountEdit->clear();
+}
+
+void ConversionDialog::slotUser1()
+{
+ convert();
+}
+
+void ConversionDialog::convert()
+{
+ Ingredient result, ing;
+ Unit unit = m_database->unitName(toUnitBox->id(toUnitBox->currentItem()));
+
+ ing.amount = amountEdit->value().toDouble();
+ ing.ingredientID = ingredientBox->id(ingredientBox->currentItem());
+ ing.units = m_database->unitName(fromUnitBox->id(fromUnitBox->currentItem()));
+
+ int prepID = prepMethodBox->id(prepMethodBox->currentItem());
+ if ( prepID != -1 )
+ ing.prepMethodList.append(Element(TQString::null,prepID));
+
+ switch ( m_database->convertIngredientUnits( ing, unit, result ) ) {
+ case RecipeDB::Success:
+ resultLabel->setText( i18n( "<b>Result:</b>" ) );
+ resultText->setText(TQString::number(result.amount)+" "+((result.amount>1)?result.units.plural:result.units.name));
+ break;
+ case RecipeDB::MismatchedPrepMethodUsingApprox:
+ resultLabel->setText( i18n( "<b>Approximated result:</b>" ) );
+ resultText->setText(TQString::number(result.amount)+" "+((result.amount>1)?result.units.plural:result.units.name));
+ break;
+ case RecipeDB::MissingUnitConversion:
+ resultLabel->setText( i18n( "<b>Error:</b>" ) );
+ resultText->setText( i18n("Missing unit conversion") );
+ break;
+ case RecipeDB::MissingIngredientWeight:
+ resultLabel->setText( i18n( "<b>Error:</b>" ) );
+ resultText->setText( i18n("No ingredient weight available") );
+ break;
+ case RecipeDB::MismatchedPrepMethod:
+ resultLabel->setText( i18n( "<b>Error:</b>" ) );
+ resultText->setText( i18n("No ingredient weight available for this method of preparation") );
+ break;
+ case RecipeDB::MissingIngredient:
+ resultLabel->setText( i18n( "<b>Error:</b>" ) );
+ resultText->setText( i18n("Ingredient required for conversion") );
+ break;
+ case RecipeDB::InvalidTypes:
+ resultLabel->setText( i18n( "<b>Error:</b>" ) );
+ resultText->setText( i18n("Impossible unit conversion based on unit types") );
+ break;
+ }
+}
+
+#include "conversiondialog.moc"