ginebra2/ProgressBarItem.cpp
changeset 3 0954f5dd2cd0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ginebra2/ProgressBarItem.cpp	Tue Jun 29 00:46:29 2010 -0400
@@ -0,0 +1,97 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License as published by
+* the Free Software Foundation, version 2.1 of the License.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public License
+* along with this program.  If not,
+* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
+*
+* Description:
+*
+*/
+#include <QtGui>
+#include "ProgressBarItem.h"
+#include "GWebContentView.h"
+#include "ContentViewDelegate.h"
+#include "ChromeSnippet.h"
+#include "webpagecontroller.h"
+
+#include <QDebug>
+
+namespace GVA {
+
+  ProgressBarItem::ProgressBarItem(ChromeSnippet * snippet, QGraphicsItem* parent)
+    : NativeChromeItem(snippet, parent),
+      m_progress(0)
+  {
+    //Set indicator color from element css
+    QString cssColor = m_snippet->element().styleProperty("color", QWebElement::ComputedStyle);
+    CSSToQColor(cssColor, m_color);
+
+    connectAll();
+  }
+
+  ProgressBarItem:: ~ProgressBarItem()
+  {
+
+  }
+
+  void ProgressBarItem::onProgress(int progress)
+  {
+      setProgress(((qreal)progress)/100);
+  }
+
+  void ProgressBarItem::setProgress(qreal progress)
+  {
+    //QApplication::processEvents(QEventLoop::ExcludeSocketNotifiers);
+    //qDebug() << "ProgressBarItem::onProgress: " << progress;
+    if (m_progress != progress){
+      m_progress = progress;
+      update();
+    }
+  }
+
+  void ProgressBarItem::onStart() {
+    onProgress(0);
+  }
+
+  void ProgressBarItem::onFinished(bool ok) {
+    Q_UNUSED(ok)
+    onProgress(0);
+  }
+
+  void ProgressBarItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* opt, QWidget* widget)
+  {
+    Q_UNUSED(opt)
+    Q_UNUSED(widget)
+
+    //painter->fillRect(QRectF(0,0, geometry().width(), geometry().height()), Qt::blue);
+    if (m_progress > 0) {
+        QSizeF s = size();
+        qreal minWidth = s.width()/10;
+        painter->fillRect(QRectF(0,0, minWidth + (s.width() - minWidth)*m_progress, s.height()), m_color);
+    }
+    NativeChromeItem::paint(painter, opt, widget);
+  }
+
+  void ProgressBarItem::connectAll() {
+    WebPageController* pageController = WebPageController::getSingleton();
+    if (pageController){
+      connect(pageController, SIGNAL(loadStarted()), this, SLOT(onStart()));
+      connect(pageController, SIGNAL(loadProgress(int)), this, SLOT(onProgress(int)));
+      connect(pageController, SIGNAL(loadFinished(bool)), this, SLOT(onFinished(bool)));
+    }
+  }
+
+} // end of namespace GVA
+
+