diff options
author | megabigbug <megabigbug@arrakis.(none)> | 2010-03-24 22:58:51 +0100 |
---|---|---|
committer | megabigbug <megabigbug@arrakis.(none)> | 2010-03-24 22:58:51 +0100 |
commit | 0475cb6bfca254e51f5e98d018f0b2a0e6535024 (patch) | |
tree | b1d3d5e3b5ee4b346e247d26c58005e8da14bbb8 /src/urlbar/urlbar.cpp | |
parent | derivation of the lastbar branch: UltimateLastBar :) (diff) | |
download | rekonq-0475cb6bfca254e51f5e98d018f0b2a0e6535024.tar.xz |
Revert "derivation of the lastbar branch: UltimateLastBar :)"
This reverts commit f45e39322dd7561bc1cd2756b4c9223bc586425b.
Diffstat (limited to 'src/urlbar/urlbar.cpp')
-rw-r--r-- | src/urlbar/urlbar.cpp | 237 |
1 files changed, 107 insertions, 130 deletions
diff --git a/src/urlbar/urlbar.cpp b/src/urlbar/urlbar.cpp index 270cdc5e..718d9f67 100644 --- a/src/urlbar/urlbar.cpp +++ b/src/urlbar/urlbar.cpp @@ -2,10 +2,10 @@ * * This file is a part of the rekonq project * -* Copyright (C) 2008-2009 by Andrea Diamantini <adjam7 at gmail dot com> +* Copyright (C) 2008-2010 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 by Lionel Chauvin <megabigbug@yahoo.fr> +* Copyright (C) 2009-2010 by Lionel Chauvin <megabigbug@yahoo.fr> * * * This program is free software; you can redistribute it and/or @@ -36,7 +36,8 @@ #include "lineedit.h" #include "mainwindow.h" #include "webview.h" -#include "urlresolver.h" +#include "historymanager.h" +#include "webtab.h" // KDE Includes #include <KDebug> @@ -48,41 +49,43 @@ #include <QPaintEvent> #include <QPalette> #include <QTimer> -#include <QVBoxLayout> + QColor UrlBar::s_defaultBaseColor; UrlBar::UrlBar(QWidget *parent) - : KComboBox(true, parent) - , m_lineEdit(new LineEdit) - , m_progress(0) + : KHistoryComboBox(true, parent) + , m_lineEdit(new LineEdit) + , m_progress(0) { + setUrlDropsEnabled(true); + setAutoDeleteCompletionObject(true); + //cosmetic setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); setMinimumWidth(180); - - // signal handlings - setTrapReturnKey(true); - setUrlDropsEnabled(true); - // Make m_lineEdit background transparent - QPalette p = m_lineEdit->palette(); - p.setColor(QPalette::Base, Qt::transparent); - m_lineEdit->setPalette(p); + setTrapReturnKey(true); - if (!s_defaultBaseColor.isValid()) - { - s_defaultBaseColor = palette().color(QPalette::Base); - } + setupLineEdit(); - setLineEdit(m_lineEdit); + // add every item to history + connect(this, SIGNAL(returnPressed(const QString&)), SLOT(activated(const QString&))); + connect(completionBox(), SIGNAL(activated(const QString&)), SLOT(activated(const QString&))); - // clear the URL bar - m_lineEdit->clear(); + connect(this, SIGNAL(cleared()), SLOT(cleared())); + + // setup completion box + setCompletionObject( Application::historyManager()->completionObject() ); + // set dropdown list background + QPalette p = view()->palette(); + p.setColor(QPalette::Base, palette().color(QPalette::Base)); + view()->setPalette(p); + // load urls on activated urlbar signal - connect(this, SIGNAL(returnPressed(const QString&)), SLOT(activated(const QString&))); + connect(this, SIGNAL(activated(const KUrl&)), Application::instance(), SLOT(loadUrl(const KUrl&))); } @@ -93,7 +96,7 @@ UrlBar::~UrlBar() void UrlBar::selectAll() const { - m_lineEdit->selectAll(); + lineEdit()->selectAll(); } @@ -103,18 +106,49 @@ KUrl UrlBar::url() const } +KLineEdit *UrlBar::lineEdit() const +{ + return m_lineEdit; +} + + +void UrlBar::setupLineEdit() +{ + // Make m_lineEdit background transparent + QPalette p = m_lineEdit->palette(); + p.setColor(QPalette::Base, Qt::transparent); + m_lineEdit->setPalette(p); + + if (!s_defaultBaseColor.isValid()) + { + s_defaultBaseColor = palette().color(QPalette::Base); + } + + setLineEdit(m_lineEdit); + + // Make the lineedit consume the Qt::Key_Enter event... + lineEdit()->setTrapReturnKey(true); + + lineEdit()->setHandleSignals(true); + + // clear the URL bar + lineEdit()->clear(); +} + + void UrlBar::setUrl(const QUrl& url) { if(url.scheme() == "about") { m_currentUrl = KUrl(); + updateUrl(); // updateUrl before setFocus setFocus(); } else { m_currentUrl = KUrl(url); + updateUrl(); } - updateUrl(); } @@ -161,30 +195,29 @@ void UrlBar::updateUrl() // Must be AFTER setCurrentIndex if (!hasFocus()) { - m_lineEdit->setCursorPosition(0); + lineEdit()->setCursorPosition(0); } } void UrlBar::activated(const QString& urlString) { - disconnect(this, SIGNAL(editTextChanged(const QString &)), this, SLOT(suggestUrls(const QString &))); + if (urlString.isEmpty()) + return; - - if(!m_suggestedUrl.isEmpty()) - { - kDebug() << "+++++++++++++++++ suggested url NOT empty +++++++++++++++++++++++"; - m_currentUrl = m_suggestedUrl; - updateUrl(); - m_suggestedUrl = KUrl(); - } - else - { - if (urlString.isEmpty()) - return; - setUrl(urlString); - } - Application::instance()->loadUrl(m_currentUrl); + // this fix urlbar behaviour, removing focus from there and enabling + // loading animation. Temporary fix?? + Application::instance()->mainWindow()->currentTab()->setFocus(); + + setUrl( KUrl(urlString) ); + emit activated( KUrl(urlString) ); +} + + +void UrlBar::cleared() +{ + // clear the history on user's request from context menu + clear(); } @@ -210,7 +243,7 @@ void UrlBar::paintEvent(QPaintEvent *event) p.setColor(QPalette::Base, s_defaultBaseColor); setPalette(p); - KComboBox::paintEvent(event); + KHistoryComboBox::paintEvent(event); if (!hasFocus()) { @@ -228,7 +261,7 @@ void UrlBar::paintEvent(QPaintEvent *event) painter.setBrush(generateGradient(loadingColor, height())); painter.setPen(Qt::transparent); - QRect backgroundRect = m_lineEdit->frameGeometry(); + QRect backgroundRect = lineEdit()->frameGeometry(); int mid = backgroundRect.width() * m_progress / 100; QRect progressRect(backgroundRect.x(), backgroundRect.y(), mid, backgroundRect.height()); painter.drawRect(progressRect); @@ -239,7 +272,7 @@ void UrlBar::paintEvent(QPaintEvent *event) QSize UrlBar::sizeHint() const { - return m_lineEdit->sizeHint(); + return lineEdit()->sizeHint(); } @@ -275,99 +308,43 @@ bool UrlBar::isLoading() return true; } + void UrlBar::keyPressEvent(QKeyEvent *event) { - - // this handles the up/down arrow with active suggestions - if(m_box) - { - switch(event->key()) - { - case Qt::Key_Escape: - m_box->hide(); - setFocus(); - break; - case Qt::Key_Up: - m_suggestedUrl = m_box->activatePrevious(); - kDebug() << "oooooooooooooooooo Up Arrow"; - break; - - case Qt::Key_Down: - m_suggestedUrl = m_box->activateNext(); - kDebug() << "oooooooooooooooooo Down Arrow"; - break; - - default: - break; - } - return KComboBox::keyPressEvent(event); - } - - // this handles the Modifiers + Return key combinations QString currentText = m_lineEdit->text().trimmed(); - if ((event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) - && !currentText.startsWith(QLatin1String("http://"), Qt::CaseInsensitive)) + if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) { - QString append; - if (event->modifiers() == Qt::ControlModifier) - { - append = QLatin1String(".com"); - } - else if (event->modifiers() == (Qt::ControlModifier | Qt::ShiftModifier)) + if( !currentText.startsWith(QLatin1String("http://"), Qt::CaseInsensitive) ) { - append = QLatin1String(".org"); + QString append; + if (event->modifiers() == Qt::ControlModifier) + { + append = QLatin1String(".com"); + } + else if (event->modifiers() == (Qt::ControlModifier | Qt::ShiftModifier)) + { + append = QLatin1String(".org"); + } + else if (event->modifiers() == Qt::ShiftModifier) + { + append = QLatin1String(".net"); + } + + QUrl url(QLatin1String("http://www.") + currentText); + QString host = url.host(); + if (!host.endsWith(append, Qt::CaseInsensitive)) + { + host += append; + url.setHost(host); + m_lineEdit->setText(url.toString()); + } } - else if (event->modifiers() == Qt::ShiftModifier) - { - append = QLatin1String(".net"); - } - - QUrl url(QLatin1String("http://www.") + currentText); - QString host = url.host(); - if (!host.endsWith(append, Qt::CaseInsensitive)) + else { - host += append; - url.setHost(host); - m_lineEdit->setText(url.toString()); + // fill lineEdit with its stripped contents to remove trailing spaces + m_lineEdit->setText(currentText); } } - - KComboBox::keyPressEvent(event); -} - -void UrlBar::suggestUrls(const QString &text) -{ - if(text.isEmpty()) - return; - - UrlResolver res(text); - UrlSearchList list = res.orderedSearchItems(); - - if(list.count() > 0) - { - if (m_box) delete m_box; - m_box=new CompletionWidget(this); - m_box->insertSearchList(list); - m_box->popup(); - } -} - - -void UrlBar::focusInEvent(QFocusEvent *event) -{ - // activate suggestions on edit text - connect(this, SIGNAL(editTextChanged(const QString &)), this, SLOT(suggestUrls(const QString &))); - - KComboBox::focusInEvent(event); -} - - -void UrlBar::changeEvent(QEvent *event) -{ - if (event->type()==QEvent::EnabledChange - && !isEnabled() - && m_box - && m_box->isVisible()) m_box->hide(); - KComboBox::changeEvent(event); + KHistoryComboBox::keyPressEvent(event); } |