diff -r b0dd75e285d2 -r 0f2326c2a325 ginebra2/ProgressBarItem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ginebra2/ProgressBarItem.cpp Wed Jun 23 17:59:43 2010 +0300 @@ -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 +#include "ProgressBarItem.h" +#include "GWebContentView.h" +#include "ContentViewDelegate.h" +#include "ChromeSnippet.h" +#include "webpagecontroller.h" + +#include + +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 + +