diff --git a/src/plugins/coreplugin/progressmanager/progresspie.cpp b/src/plugins/coreplugin/progressmanager/progresspie.cpp
index bf2c0804e19c9e45bcfa4a87395c6bec362bc579..da9b16a8714d16db7bcf1c9d324676dd8085bf34 100644
--- a/src/plugins/coreplugin/progressmanager/progresspie.cpp
+++ b/src/plugins/coreplugin/progressmanager/progresspie.cpp
@@ -39,7 +39,7 @@
 #define PROGRESSBAR_HEIGHT 11
 
 ProgressBar::ProgressBar(QWidget *parent)
-    : QProgressBar(parent), m_error(false)
+    : QWidget(parent), m_error(false), m_minimum(1), m_maximum(100), m_value(1)
 {
     setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
     setMouseTracking(true);
@@ -49,6 +49,32 @@ ProgressBar::~ProgressBar()
 {
 }
 
+void ProgressBar::reset()
+{
+    m_value = m_minimum;
+    update();
+}
+
+void ProgressBar::setRange(int minimum, int maximum)
+{
+    m_minimum = minimum;
+    m_maximum = maximum;
+    if (m_value < m_minimum || m_value > m_maximum)
+        m_value = m_minimum;
+    update();
+}
+
+void ProgressBar::setValue(int value)
+{
+    if (m_value == value
+            || m_value < m_minimum
+            || m_value > m_maximum) {
+        return;
+    }
+    m_value = value;
+    update();
+}
+
 QString ProgressBar::title() const
 {
     return m_title;
@@ -62,6 +88,7 @@ bool ProgressBar::hasError() const
 void ProgressBar::setTitle(const QString &title)
 {
     m_title = title;
+    update();
 }
 
 void ProgressBar::setError(bool on)
@@ -88,7 +115,7 @@ void ProgressBar::mousePressEvent(QMouseEvent *event)
         emit clicked();
         return;
     }
-    QProgressBar::mousePressEvent(event);
+    QWidget::mousePressEvent(event);
 }
 
 void ProgressBar::mouseMoveEvent(QMouseEvent *)
diff --git a/src/plugins/coreplugin/progressmanager/progresspie.h b/src/plugins/coreplugin/progressmanager/progresspie.h
index 8351d5332f2d87c01ddb320917d2de2db5d21e80..405b6da99fc8f46f9ed18b83b95abb8c21400c4a 100644
--- a/src/plugins/coreplugin/progressmanager/progresspie.h
+++ b/src/plugins/coreplugin/progressmanager/progresspie.h
@@ -35,7 +35,7 @@
 #include <QtGui/QProgressBar>
 #include <QtGui/QMouseEvent>
 
-class ProgressBar : public QProgressBar
+class ProgressBar : public QWidget
 {
     Q_OBJECT
 public:
@@ -51,6 +51,12 @@ public:
     void paintEvent(QPaintEvent *);
     void mouseMoveEvent(QMouseEvent *);
 
+    int minimum() const { return m_minimum; }
+    int maximum() const { return m_maximum; }
+    int value() const { return m_value; }
+    void reset();
+    void setRange(int minimum, int maximum);
+    void setValue(int value);
 signals:
     void clicked();
 
@@ -62,6 +68,10 @@ private:
     QString m_title;
     bool m_error;
     int m_progressHeight;
+
+    int m_minimum;
+    int m_maximum;
+    int m_value;
 };
 
 #endif // PROGRESSPIE_H