diff options
author | unknown <Roopesh Chander@.(none)> | 2009-11-12 23:09:12 +0530 |
---|---|---|
committer | unknown <Roopesh Chander@.(none)> | 2009-11-12 23:09:24 +0530 |
commit | a3bc0247873b2bbb1053a59230001090a458a42f (patch) | |
tree | 12273094e0f1947ded27e4bfa947254b2ea77c19 /addressbar.cpp | |
parent | 2aa351a1c73e589b4d123d1cbc35346da1858b0e (diff) |
a less weird progress indicator, please
(code flicked from Arora browser)
Diffstat (limited to 'addressbar.cpp')
-rw-r--r-- | addressbar.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
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 <QPainter> +#include <QPaintEvent> +#include <QPalette> +#include <QDebug> +#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); +} |