summaryrefslogtreecommitdiffstats
path: root/src/dialogs/dietviewdialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/dialogs/dietviewdialog.cpp')
-rw-r--r--src/dialogs/dietviewdialog.cpp137
1 files changed, 137 insertions, 0 deletions
diff --git a/src/dialogs/dietviewdialog.cpp b/src/dialogs/dietviewdialog.cpp
new file mode 100644
index 0000000..5b51c27
--- /dev/null
+++ b/src/dialogs/dietviewdialog.cpp
@@ -0,0 +1,137 @@
+/***************************************************************************
+* Copyright (C) 2003-2005 *
+* Unai Garro ([email protected]) *
+* 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 "dietviewdialog.h"
+
+#include <kiconloader.h>
+#include <tdelocale.h>
+#include <kstandarddirs.h>
+
+DietViewDialog::DietViewDialog( TQWidget *parent, const RecipeList &recipeList, int dayNumber, int mealNumber, const TQValueList <int> &dishNumbers )
+ : KDialogBase( parent, "dietViewDialog", true, TQString::null,
+ KDialogBase::User2 | KDialogBase::Close | KDialogBase::User1, KDialogBase::User2,
+ false, KStdGuiItem::print() )
+{
+ setButtonText( KDialogBase::User2, i18n( "Create &Shopping List" ) );
+
+ // Design the dialog
+ TQVBox *page = makeVBoxMainWidget();
+
+ // The html part
+ dietView = new TDEHTMLPart( page );
+
+ setInitialSize( TQSize(350, 450) );
+
+ setSizeGripEnabled( true );
+
+ connect ( this, TQ_SIGNAL( user2Clicked() ), this, TQ_SLOT( slotOk() ) );
+ connect ( this, TQ_SIGNAL( closeClicked() ), this, TQ_SLOT( close() ) );
+ connect ( this, TQ_SIGNAL( user1Clicked() ), this, TQ_SLOT( print() ) );
+
+ // Show the diet
+ showDiet( recipeList, dayNumber, mealNumber, dishNumbers );
+}
+
+DietViewDialog::~DietViewDialog()
+{}
+
+void DietViewDialog::showDiet( const RecipeList &recipeList, int dayNumber, int mealNumber, const TQValueList <int> &dishNumbers )
+{
+
+
+ // Header
+ TQString htmlCode = TQString( "<html><head><title>%1</title>" ).arg( i18n( "Diet" ) );
+
+ // CSS
+ htmlCode += "<STYLE type=\"text/css\">\n";
+ htmlCode += "#calendar{border: thin solid black}";
+ htmlCode += ".dayheader{ background-color: #D6D6D6; color: black; border:none;}";
+ htmlCode += ".day{ background-color: #E5E5E5; color: black; border:medium solid #D6D6D6;}";
+ htmlCode += ".meal{ background-color: #CDD4FF; color: black; border:thin solid #B4BEFF; text-align:center;}";
+ htmlCode += ".dish{font-size: smaller; overflow: hidden; height:2.5em;}";
+ htmlCode += "</STYLE>";
+
+
+ htmlCode += "</head><body>"; // /Header
+
+ // Calendar border
+ htmlCode += TQString( "<div id=\"calendar\">" );
+
+ // Title
+ htmlCode += TQString( "<center><div STYLE=\"width: 100%\">" );
+ htmlCode += TQString( "<h1>%1</h1></div></center>" ).arg( i18n( "Diet" ) );
+
+ // Diet table
+ htmlCode += TQString( "<center><div STYLE=\"width: 98%\">" );
+ htmlCode += TQString( "<table><tbody>" );
+
+
+ TQValueList <int>::ConstIterator it;
+ it = dishNumbers.begin();
+ RecipeList::ConstIterator rit;
+ rit = recipeList.begin();
+
+ for ( int row = 0, day = 0; row <= ( ( dayNumber - 1 ) / 7 ); row++ ) // New row (week)
+ {
+ htmlCode += TQString( "<tr>" );
+
+ for ( int col = 0; ( col < 7 ) && ( day < dayNumber ); col++, day++ ) // New column (day)
+ {
+ htmlCode += TQString( "<td><div class=\"day\">" );
+ htmlCode += TQString( "<div class=\"dayheader\"><center>" );
+ htmlCode += TQString( i18n( "Day %1" ) ).arg( day + 1 );
+ htmlCode += TQString( "</center></div>" );
+ for ( int meal = 0;meal < mealNumber;meal++ ) // Meals in each cell
+ {
+ int dishNumber = *it;
+ htmlCode += TQString( "<div class=\"meal\">" );
+ for ( int dish = 0; dish < dishNumber;dish++ ) // Dishes in each Meal
+ {
+ htmlCode += TQString( "<div class=\"dish\">" );
+ htmlCode += ( *rit ).title;
+ htmlCode += "<br>";
+ htmlCode += TQString( "</div>" );
+ rit++;
+ }
+ it++;
+ htmlCode += TQString( "</div>" );
+ }
+ it = dishNumbers.begin(); // meals have same dish number everyday
+ htmlCode += TQString( "</div></td>" );
+ }
+
+ htmlCode += TQString( "</tr>" );
+ }
+
+ htmlCode += TQString( "</tbody></table>" );
+ htmlCode += TQString( "</div></center>" );
+ htmlCode += TQString( "</div></body></html>" );
+
+ resize( TQSize( 600, 400 ) );
+
+ // Display it
+ dietView->begin( KURL( locateLocal( "tmp", "/" ) ) ); // Initialize to tmp dir, where photos and logos can be stored
+ dietView->write( htmlCode );
+ dietView->end();
+}
+
+void DietViewDialog::print( void )
+{
+ dietView->view()->print();
+}
+
+void DietViewDialog::slotOk( void )
+{
+ emit signalOk();
+ close();
+}
+
+#include "dietviewdialog.moc"