1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
/***************************************************************************
* 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. *
***************************************************************************/
#ifndef PROGRESSINTERFACE_H
#define PROGRESSINTERFACE_H
#include <qobject.h>
#include <qwidget.h>
class KProgressDialog;
class RecipeDB;
class ProgressSlotObject;
/** This class is used to monitor events from the database that may take
* awhile. Before a potentially long operation, the database will
* call progressBegin(), progress() a number of times, and then progressDone().
*
* This class may be subclassed to perform certain operations during long
* operations by implementing the three virtual functions. The default
* implementation displays a progress bar dialog.
*/
class ProgressInterface
{
public:
ProgressInterface( QWidget *parent );
~ProgressInterface();
void listenOn( RecipeDB* );
protected:
friend class ProgressSlotObject;
virtual void progressBegin(int,const QString &caption,const QString &text,int rate);
virtual void progressDone();
virtual void progress();
private:
ProgressSlotObject *slot_obj;
KProgressDialog *progress_dlg;
RecipeDB *database;
int m_rate;
int m_rate_at;
};
class ProgressSlotObject : public QObject
{
Q_OBJECT
public:
ProgressSlotObject( QWidget*parent, ProgressInterface *p ) : QObject(parent), pInterface(p){}
public slots:
void progressBegin(int i,const QString &caption=QString::null,const QString &text=QString::null,int rate=1){ pInterface->progressBegin(i,caption,text,rate); }
void progressDone(){ pInterface->progressDone(); }
void progress(){ pInterface->progress(); }
private:
ProgressInterface *pInterface;
};
#endif
|