diff options
author | matgic78 <matgic78@gmail.com> | 2010-04-21 11:53:32 +0200 |
---|---|---|
committer | matgic78 <matgic78@gmail.com> | 2010-04-23 11:32:41 +0200 |
commit | e30a962d8bb9bc5018ba121a4046132a59f6e1c3 (patch) | |
tree | 2444ba79cdffdd4a4735011f4b321c7015f4a515 /src/urlbar | |
parent | Merge branch 'master' of gitorious.org:rekonq/mainline (diff) | |
download | rekonq-e30a962d8bb9bc5018ba121a4046132a59f6e1c3.tar.xz |
Akregator RSS support
Diffstat (limited to 'src/urlbar')
-rw-r--r-- | src/urlbar/lineedit.cpp | 197 | ||||
-rw-r--r-- | src/urlbar/urlbar.cpp | 6 | ||||
-rw-r--r-- | src/urlbar/urlbar.h | 5 | ||||
-rw-r--r-- | src/urlbar/urlresolver.h | 5 |
4 files changed, 208 insertions, 5 deletions
diff --git a/src/urlbar/lineedit.cpp b/src/urlbar/lineedit.cpp new file mode 100644 index 00000000..29d07e16 --- /dev/null +++ b/src/urlbar/lineedit.cpp @@ -0,0 +1,197 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2009 by Andrea Diamantini <adjam7 at gmail dot com> +* Copyright (C) 2009 by Paweł Prażak <pawelprazak at gmail dot com> +* Copyright (C) 2009 by Lionel Chauvin <megabigbug@yahoo.fr> +* +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License as +* published by the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 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 General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +* +* ============================================================ */ + + +// Self Includes +#include "lineedit.h" +#include "lineedit.moc" + +// KDE Includes +#include <klocalizedstring.h> +#include <KDebug> +#include <KStandardDirs> +#include <KIconLoader> + +// Qt Includes +#include <QtGui/QContextMenuEvent> +#include <QtGui/QFocusEvent> +#include <QtGui/QKeyEvent> +#include <QStyleOptionFrameV2> +#include <QPainter> + + +IconButton::IconButton(QWidget *parent) + : QToolButton(parent) +{ + setToolButtonStyle(Qt::ToolButtonIconOnly); + setStyleSheet("IconButton { background-color:transparent; border: none; padding: 0px}"); + setCursor(Qt::ArrowCursor); +} + +void IconButton::mouseReleaseEvent(QMouseEvent* event) +{ + emit clicked(event->globalPos()); +} + +// ----------------------------------------------------------------------------------------------------------- + + +LineEdit::LineEdit(QWidget* parent) + : KLineEdit(parent) + , _icon( new IconButton(this) ) +{ + // cosmetic + setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + setMinimumWidth(200); + setMinimumHeight(26); + + // initial style + setStyleSheet( QString("LineEdit { padding: 0 0 0 %1px;} ").arg(_icon->sizeHint().width()) ); + + // 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::keyPressEvent(QKeyEvent *event) +{ + if (event->key() == Qt::Key_Escape) + { + clearFocus(); + event->accept(); + } + + KLineEdit::keyPressEvent(event); +} + + +void LineEdit::mouseDoubleClickEvent(QMouseEvent *) +{ + selectAll(); +} + + +IconButton *LineEdit::iconButton() const +{ + return _icon; +} + + +void LineEdit::paintEvent(QPaintEvent *event) +{ + // you need this before our code to draw inside the line edit.. + KLineEdit::paintEvent(event); + + if (text().isEmpty()) + { + QStyleOptionFrame option; + initStyleOption(&option); + QRect textRect = style()->subElementRect(QStyle::SE_LineEditContents, &option, this); + QPainter painter(this); + painter.setPen(Qt::gray); + painter.drawText( textRect, + Qt::AlignCenter, + i18n("Search Bookmarks, History, Web.. just start typing here!") + ); + } +} + + +IconButton *LineEdit::addRightIcon(LineEdit::icon ic) +{ + IconButton *rightIcon = new IconButton(this); + + switch(ic) + { + case LineEdit::KGet: + rightIcon->setIcon( KIcon("download") ); + rightIcon->setToolTip( i18n("List all links with KGet") ); + break; + case LineEdit::RSS: + rightIcon->setIcon( KIcon("application-rss+xml") ); + rightIcon->setToolTip( i18n("List all available RSS feeds") ); + break; + case LineEdit::SSL: + rightIcon->setIcon( KIcon("object-locked") ); + rightIcon->setToolTip( i18n("Show SSL Infos") ); + break; + default: + kDebug() << "ERROR.. default non extant case!!"; + break; + } + + _rightIconsList << rightIcon; + int iconsCount = _rightIconsList.count(); + rightIcon->move( width() - 23*iconsCount, 6); + rightIcon->show(); + + return rightIcon; +} + + +void LineEdit::clearRightIcons() +{ + qDeleteAll(_rightIconsList); + _rightIconsList.clear(); +} + + +void LineEdit::resizeEvent(QResizeEvent *event) +{ + int newHeight = ( height() - 19 )/2; + _icon->move(4, newHeight ); + + int iconsCount = _rightIconsList.count(); + int w = width(); + + for(int i = 0; i < iconsCount; ++i) + { + IconButton *bt = _rightIconsList.at(i); + bt->move( w - 25*(i+1), newHeight ); + } + + KLineEdit::resizeEvent(event); + +} diff --git a/src/urlbar/urlbar.cpp b/src/urlbar/urlbar.cpp index 6d255c02..d7fc7199 100644 --- a/src/urlbar/urlbar.cpp +++ b/src/urlbar/urlbar.cpp @@ -63,6 +63,10 @@ IconButton::IconButton(QWidget *parent) setCursor(Qt::ArrowCursor); } +void IconButton::mouseReleaseEvent(QMouseEvent* event) +{ + emit clicked(event->globalPos()); +} // ----------------------------------------------------------------------------------------------------------- @@ -282,7 +286,7 @@ void UrlBar::loadFinished() if(_tab->hasRSSInfo()) { IconButton *bt = addRightIcon(UrlBar::RSS); - connect(bt, SIGNAL(clicked()), _tab, SLOT(showRSSInfo())); + connect(bt, SIGNAL(clicked(QPoint)), _tab, SLOT(showRSSInfo(QPoint))); } // show SSL diff --git a/src/urlbar/urlbar.h b/src/urlbar/urlbar.h index 0be1ecf9..91b38e23 100644 --- a/src/urlbar/urlbar.h +++ b/src/urlbar/urlbar.h @@ -53,9 +53,12 @@ class WebTab; class IconButton : public QToolButton { Q_OBJECT - public: IconButton(QWidget *parent = 0); +signals: + void clicked(QPoint); +protected: + void mouseReleaseEvent(QMouseEvent *event); }; diff --git a/src/urlbar/urlresolver.h b/src/urlbar/urlresolver.h index 22a9de4f..5200a401 100644 --- a/src/urlbar/urlresolver.h +++ b/src/urlbar/urlresolver.h @@ -37,9 +37,8 @@ class UrlSearchItem { - - public: - +public: + enum types { Search = 0x00000001, |