diff options
author | Andrea Diamantini <adjam7@gmail.com> | 2010-04-05 01:31:13 +0200 |
---|---|---|
committer | Andrea Diamantini <adjam7@gmail.com> | 2010-04-05 01:31:13 +0200 |
commit | 352168759ea96b35296eaf33790fbe073b69f69b (patch) | |
tree | f30a483162d84101b142825823872e64489620ce /src/urlbar/lineedit.cpp | |
parent | A "nice" hack to fix bug 211557 (diff) | |
download | rekonq-352168759ea96b35296eaf33790fbe073b69f69b.tar.xz |
This commit is the first implementation of a new new new urlbar
Here are its features:
- KLineEdit based
- ability to easily add "icons" :)
- SSL informations shown (a-la firefox)
- smoother animation
- cleaner code
- data QString, not KUrl based (Users type string, not urls!!!)
Diffstat (limited to 'src/urlbar/lineedit.cpp')
-rw-r--r-- | src/urlbar/lineedit.cpp | 71 |
1 files changed, 68 insertions, 3 deletions
diff --git a/src/urlbar/lineedit.cpp b/src/urlbar/lineedit.cpp index ac92b858..f7af1f61 100644 --- a/src/urlbar/lineedit.cpp +++ b/src/urlbar/lineedit.cpp @@ -30,24 +30,64 @@ #include "lineedit.h" #include "lineedit.moc" +// KDE Includes +#include <klocalizedstring.h> +#include <KDebug> + // Qt Includes #include <QtGui/QContextMenuEvent> #include <QtGui/QFocusEvent> #include <QtGui/QKeyEvent> +#include <QStyleOptionFrameV2> +#include <QPainter> LineEdit::LineEdit(QWidget* parent) - : KLineEdit(parent) + : KLineEdit(parent) + , _icon( new IconButton(this) ) { + // cosmetic + setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); setMinimumWidth(200); - setFocusPolicy(Qt::WheelFocus); - setHandleSignals(true); + setMinimumHeight(26); + updateStyles(); + + // doesn't show the clear button setClearButtonShown(false); + + // trap Key_Enter & Key_Return events, while emitting the returnPressed signal + setTrapReturnKey(true); + + // insert decoded URLs + setUrlDropsEnabled(true); + + // accept focus, via tabbing, clicking & wheeling + setFocusPolicy(Qt::WheelFocus); + + // disable completion object (we have our own :) ) + setCompletionObject(0); } LineEdit::~LineEdit() { + delete _icon; +} + + +void LineEdit::updateStyles() +{ + adjustSize(); + _icon->adjustSize(); + if(_icon->toolButtonStyle() == Qt::ToolButtonIconOnly) + _icon->move( 4, 3); + else + _icon->move( 2, 1); + + int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth); + setStyleSheet(QString("LineEdit { padding-left: %1px; } ").arg(_icon->sizeHint().width() + frameWidth + 1)); + + update(); } @@ -67,3 +107,28 @@ void LineEdit::mouseDoubleClickEvent(QMouseEvent *) { selectAll(); } + + +IconButton *LineEdit::iconButton() const +{ + return _icon; +} + + +void LineEdit::paintEvent(QPaintEvent *event) +{ + KLineEdit::paintEvent(event); + + if (text().isEmpty() && !hasFocus()) + { + QStyleOptionFrame option; + initStyleOption(&option); + QRect textRect = style()->subElementRect(QStyle::SE_LineEditContents, &option, this); + QPainter painter(this); + painter.setPen(Qt::gray); + painter.drawText( textRect, + Qt::AlignLeft | Qt::AlignVCenter, + i18n("Search Bookmarks, History, Google.. and the Kitchen Sink!") + ); + } +} |