diff options
author | Andrea Diamantini <adjam7@gmail.com> | 2012-08-01 17:46:50 +0200 |
---|---|---|
committer | Andrea Diamantini <adjam7@gmail.com> | 2012-12-10 02:48:04 +0100 |
commit | d2fdce46263a6cee66c4adee9ea7366d085a1729 (patch) | |
tree | c50747e1d05bc43dddd1fef2b651a6f1a37cd81a /src/urlbar/urlbar.h | |
parent | Remove a lot of application calls by refactoring code (diff) | |
download | rekonq-d2fdce46263a6cee66c4adee9ea7366d085a1729.tar.xz |
Urlbar, first code ported to the new API
Diffstat (limited to 'src/urlbar/urlbar.h')
-rw-r--r-- | src/urlbar/urlbar.h | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/src/urlbar/urlbar.h b/src/urlbar/urlbar.h new file mode 100644 index 00000000..b2cf44ac --- /dev/null +++ b/src/urlbar/urlbar.h @@ -0,0 +1,156 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2008-2012 by Andrea Diamantini <adjam7 at gmail dot com> +* Copyright (C) 2009 by Domrachev Alexandr <alexandr.domrachev@gmail.com> +* Copyright (C) 2009 by Paweł Prażak <pawelprazak at gmail dot com> +* Copyright (C) 2009-2011 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/>. +* +* ============================================================ */ + + +#ifndef URLBAR_H +#define URLBAR_H + +// Rekonq Includes +#include "rekonq_defines.h" + +// KDE Includes +#include <KUrl> +#include <KLineEdit> + +// Qt Includes +#include <QWeakPointer> +#include <QToolButton> + +// Forward Declarations +class QWidget; +class CompletionWidget; +class WebTab; +class QTimer; + + +class IconButton : public QToolButton +{ + Q_OBJECT + +public: + IconButton(QWidget *parent = 0); + +Q_SIGNALS: + void clicked(QPoint); + +protected: + void mouseReleaseEvent(QMouseEvent *event); +}; + + +// Definitions +typedef QList<IconButton *> IconButtonPointerList; + + +// ------------------------------------------------------------------------------------ + + +class REKONQ_TESTS_EXPORT UrlBar : public KLineEdit +{ + Q_OBJECT + +public: + + enum icon + { + KGet = 0x00000001, + RSS = 0x00000010, + SSL = 0x00000100, + BK = 0x00001000, + SearchEngine = 0x00010000, + Favorite = 0x00100000, + AdBlock = 0x01000000 + }; + + explicit UrlBar(QWidget *parent = 0); + ~UrlBar(); + + void activateSuggestions(bool); + +public Q_SLOTS: + void setQUrl(const QUrl &url); + + /** + * Let us add bookmarks as the major browsers do + * + */ + void manageBookmarks(); + +private Q_SLOTS: + void loadRequestedUrl(const KUrl& url, Rekonq::OpenType = Rekonq::CurrentTab); + + void loadFinished(); + + void clearRightIcons(); + void updateRightIcons(); + + void detectTypedString(const QString &); + void suggest(); + + void manageFavorites(QPoint); + + void refreshFavicon(); + + void pasteAndGo(); + void pasteAndSearch(); + void delSlot(); + bool isValidURL(QString url); + + /** + * Load digited url + */ + void loadDigitedUrl(); + +protected: + void paintEvent(QPaintEvent *event); + void keyPressEvent(QKeyEvent *event); + void focusInEvent(QFocusEvent *event); + void dropEvent(QDropEvent *event); + void mouseDoubleClickEvent(QMouseEvent *); + void contextMenuEvent(QContextMenuEvent *event); + void resizeEvent(QResizeEvent *); + +private: + /** + * Updates right icon position, given its number in the right icons list + * and considering rekonq window position/dimension + */ + void updateRightIconPosition(IconButton *, int); + IconButton *addRightIcon(UrlBar::icon); + + QWeakPointer<CompletionWidget> _box; + WebTab *_tab; + + IconButton *_icon; + IconButtonPointerList _rightIconsList; + + QTimer *_suggestionTimer; +}; + + +#endif |