summaryrefslogtreecommitdiffstats
path: root/krecipes/src/backends/progressinterface.h
blob: 53c90fef28baa25e1b5fcd9478c53e8857de166e (plain)
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