diff options
Diffstat (limited to 'src/backends/progressinterface.cpp')
-rw-r--r-- | src/backends/progressinterface.cpp | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/backends/progressinterface.cpp b/src/backends/progressinterface.cpp new file mode 100644 index 0000000..ea5ce08 --- /dev/null +++ b/src/backends/progressinterface.cpp @@ -0,0 +1,79 @@ +/*************************************************************************** +* Copyright (C) 2005 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 "progressinterface.h" + +#include <tqapplication.h> + +#include <kprogress.h> + +#include "recipedb.h" + +ProgressInterface::ProgressInterface( TQWidget *parent ) : progress_dlg(0), database(0), m_rate(1), m_rate_at(0) +{ + slot_obj = new ProgressSlotObject(parent,this); +} + +ProgressInterface::~ProgressInterface() +{ + listenOn(0); + delete slot_obj; +} + +void ProgressInterface::progressBegin( int steps, const TQString &caption, const TQString &text, int rate ) +{ + m_rate = rate; + + progress_dlg = new KProgressDialog((TQWidget*)slot_obj->parent(),0,caption,text,true); + + if ( steps == 0 ) + progress_dlg->progressBar()->setPercentageVisible(false); + progress_dlg->progressBar()->setTotalSteps( steps ); +} + +void ProgressInterface::progressDone() +{ + delete progress_dlg; + progress_dlg = 0; + + m_rate_at = 0; +} + +void ProgressInterface::progress() +{ + if ( progress_dlg->wasCancelled() ) { + database->cancelOperation(); + } + else { + ++m_rate_at; + + if ( m_rate_at % m_rate == 0 ) { + progress_dlg->progressBar()->advance(1); + m_rate_at = 0; + } + tqApp->processEvents(); + } +} + +void ProgressInterface::listenOn( RecipeDB *db ) +{ + if ( database) + database->disconnect(slot_obj); + + if ( db ) { + slot_obj->connect( db, TQ_SIGNAL(progressBegin(int,const TQString&,const TQString&,int)), slot_obj, TQ_SLOT(progressBegin(int,const TQString&,const TQString&,int)) ); + slot_obj->connect( db, TQ_SIGNAL(progressDone()), slot_obj, TQ_SLOT(progressDone()) ); + slot_obj->connect( db, TQ_SIGNAL(progress()), slot_obj, TQ_SLOT(progress()) ); + } + + database = db; +} + +#include "progressinterface.moc" |