1/* This file is part of the KDE project
2 Copyright (C) 2000 Matej Koss <koss@miesto.sk>
3 Copyright (C) 2007 Kevin Ottens <ervin@kde.org>
4 Copyright (C) 2009 Shaun Reich <shaun.reich@kdemail.net>
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public
8 License version 2 as published by the Free Software Foundation.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA.
19
20*/
21
22#ifndef KWIDGETJOBTRACKER_H
23#define KWIDGETJOBTRACKER_H
24
25#include <kabstractwidgetjobtracker.h>
26
27/**
28 * This class implements a job tracker with a widget suited for use as a
29 * progress dialog.
30 */
31class KDEUI_EXPORT KWidgetJobTracker : public KAbstractWidgetJobTracker
32{
33 Q_OBJECT
34
35public:
36 /**
37 * Creates a new KWidgetJobTracker
38 *
39 * @param parent the parent of this object and of the widget displaying the job progresses
40 */
41 KWidgetJobTracker(QWidget *parent = 0);
42
43 /**
44 * Destroys a KWidgetJobTracker
45 */
46 virtual ~KWidgetJobTracker();
47
48 /**
49 * The widget associated to this tracker.
50 *
51 * @param job the job that is assigned the widget we want to get
52 * @return the widget displaying the job progresses
53 */
54 virtual QWidget *widget(KJob *job);
55
56// KDE5: move this two virtual methods to be placed correctly (ereslibre)
57public Q_SLOTS:
58 /**
59 * Register a new job in this tracker.
60 *
61 * @param job the job to register
62 */
63 virtual void registerJob(KJob *job);
64
65 /**
66 * Unregister a job from this tracker.
67 *
68 * @param job the job to unregister
69 */
70 virtual void unregisterJob(KJob *job);
71
72public:
73 bool keepOpen(KJob *job) const;
74
75protected Q_SLOTS:
76 /**
77 * The following slots are inherited from KJobTrackerInterface.
78 */
79 virtual void infoMessage(KJob *job, const QString &plain, const QString &rich);
80 virtual void description(KJob *job, const QString &title,
81 const QPair<QString, QString> &field1,
82 const QPair<QString, QString> &field2);
83 virtual void totalAmount(KJob *job, KJob::Unit unit, qulonglong amount);
84 virtual void processedAmount(KJob *job, KJob::Unit unit, qulonglong amount);
85 virtual void percent(KJob *job, unsigned long percent);
86 virtual void speed(KJob *job, unsigned long value);
87 virtual void slotClean(KJob *job);
88 virtual void suspended(KJob *job);
89 virtual void resumed(KJob *job);
90
91 //TODO: Misses canResume()
92
93private:
94 class Private;
95 Private *const d;
96
97 Q_PRIVATE_SLOT(d, void _k_showProgressWidget())
98};
99
100#endif
101