From a3bc0247873b2bbb1053a59230001090a458a42f Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 12 Nov 2009 23:09:12 +0530 Subject: a less weird progress indicator, please (code flicked from Arora browser) --- WebScraps.pro | 6 ++++-- addressbar.cpp | 36 ++++++++++++++++++++++++++++++++++++ addressbar.h | 21 +++++++++++++++++++++ mainwindow.cpp | 5 ++--- mainwindow.h | 3 ++- 5 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 addressbar.cpp create mode 100644 addressbar.h diff --git a/WebScraps.pro b/WebScraps.pro index 411d839..d2ff47f 100644 --- a/WebScraps.pro +++ b/WebScraps.pro @@ -11,13 +11,15 @@ SOURCES += main.cpp \ graphicsview.cpp \ graphicstoolbar.cpp \ resizeuihelper.cpp \ - searchlineedit.cpp + searchlineedit.cpp \ + addressbar.cpp HEADERS += mainwindow.h \ webview.h \ webscrap.h \ graphicsview.h \ graphicstoolbar.h \ resizeuihelper.h \ - searchlineedit.h + searchlineedit.h \ + addressbar.h FORMS += mainwindow.ui RESOURCES += webscraps.qrc diff --git a/addressbar.cpp b/addressbar.cpp new file mode 100644 index 0000000..979e0e6 --- /dev/null +++ b/addressbar.cpp @@ -0,0 +1,36 @@ +#include +#include +#include +#include +#include "addressbar.h" + +AddressBar::AddressBar(QWidget *parent) + : QLineEdit(parent) + , m_progress(100) +{ + QPalette p = palette(); + p.setColor(QPalette::Base, QColor(255, 255, 255, 100)); + setPalette(p); +} + +void AddressBar::setProgress(int progress) { + m_progress = progress; +} + +int AddressBar::progress() const { + return m_progress; +} + +void AddressBar::paintEvent(QPaintEvent *event) { + QPainter painter(this); + int progressWidth = width() * (progress() / 100.0); + painter.setPen(Qt::NoPen); + painter.setBrush(Qt::white); + painter.drawRect(rect()); + if (progress() < 100 && !hasFocus()) { + painter.setBrush(QColor(50, 50, 200).lighter(200)); + painter.drawRect(0, 0, progressWidth, height()); + } + painter.end(); + QLineEdit::paintEvent(event); +} diff --git a/addressbar.h b/addressbar.h new file mode 100644 index 0000000..b20781f --- /dev/null +++ b/addressbar.h @@ -0,0 +1,21 @@ +#ifndef ADDRESSBAR_H +#define ADDRESSBAR_H + +#include + +class AddressBar : public QLineEdit +{ + Q_OBJECT +public: + AddressBar(QWidget *parent = 0); + int progress() const; + void paintEvent(QPaintEvent *event); + +public slots: + void setProgress(int progress); + +private: + int m_progress; +}; + +#endif // ADDRESSBAR_H diff --git a/mainwindow.cpp b/mainwindow.cpp index 593c756..a253e96 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -31,7 +31,7 @@ MainWindow::MainWindow(QWidget *parent) initBrowser(); // create the browser createBrowserToolbar(scene()); - connect(m_webView->page(), SIGNAL(loadProgress(int)), m_browserToolbar, SLOT(setFillLevel(int))); + connect(m_webView->page(), SIGNAL(loadProgress(int)), m_addressBar, SLOT(setProgress(int))); createAnimations(); createScrapsToolbar(scene()); @@ -125,7 +125,7 @@ void MainWindow::createScrapsToolbar(QGraphicsScene *scene) { void MainWindow::createBrowserToolbar(QGraphicsScene *scene) { m_browserToolbar = new GraphicsToolBar(scene); m_browserToolbar->hide(); - m_addressBar = new QLineEdit; + m_addressBar = new AddressBar; m_selectScrapsButton = new QToolButton; m_selectScrapsButton->setIcon(QIcon(":/icons/cutscrap.png")); m_selectScrapsButton->setText(tr("Add a scrap")); @@ -156,7 +156,6 @@ void MainWindow::createBrowserToolbar(QGraphicsScene *scene) { m_browserToolbar->setZValue(10000); m_browserToolbar->setBackgroundBrush(palette().background()); - m_browserToolbar->setFillLevelBrush(QColor(50, 50, 200).lighter(200)); connect(m_selectScrapsButton, SIGNAL(toggled(bool)), m_webView, SLOT(setScrapSelectionEnabled(bool))); connect(m_addressBar, SIGNAL(returnPressed()), SLOT(changeLocation())); diff --git a/mainwindow.h b/mainwindow.h index e1188d8..1f2ee4c 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -15,6 +15,7 @@ #include "graphicsview.h" #include "graphicstoolbar.h" #include "webscrap.h" +#include "addressbar.h" namespace Ui { class MainWindow; @@ -85,7 +86,7 @@ private: // browser view WebView *m_webView; - QLineEdit *m_addressBar; + AddressBar *m_addressBar; QToolButton *m_selectScrapsButton, *m_addScrapButton, *m_gotoScrapsButton; GraphicsToolBar *m_browserToolbar; -- cgit v1.2.3