summaryrefslogtreecommitdiff
path: root/src/urlbar
diff options
context:
space:
mode:
Diffstat (limited to 'src/urlbar')
-rw-r--r--src/urlbar/completionwidget.cpp23
-rw-r--r--src/urlbar/completionwidget.h5
-rw-r--r--src/urlbar/lineedit.cpp2
-rw-r--r--src/urlbar/listitem.cpp3
-rw-r--r--src/urlbar/listitem.h2
-rw-r--r--src/urlbar/urlbar.cpp115
-rw-r--r--src/urlbar/urlbar.h19
-rw-r--r--src/urlbar/urlresolver.cpp51
-rw-r--r--src/urlbar/urlresolver.h1
9 files changed, 117 insertions, 104 deletions
diff --git a/src/urlbar/completionwidget.cpp b/src/urlbar/completionwidget.cpp
index 42abcb73..3a54f890 100644
--- a/src/urlbar/completionwidget.cpp
+++ b/src/urlbar/completionwidget.cpp
@@ -72,7 +72,7 @@ void CompletionWidget::insertSearchList(const UrlSearchList &list)
{
UrlSearchItem item = list.at(i);
ListItem *suggestion = new ListItem(item);
- connect(suggestion, SIGNAL(itemClicked(ListItem *)), this, SLOT(itemChosen(ListItem *)));
+ connect(suggestion, SIGNAL(itemClicked(ListItem *, Qt::MouseButton)), this, SLOT(itemChosen(ListItem *, Qt::MouseButton)));
suggestion->setObjectName( QString::number(i) );
layout()->addWidget( suggestion );
}
@@ -82,7 +82,14 @@ void CompletionWidget::insertSearchList(const UrlSearchList &list)
void CompletionWidget::sizeAndPosition()
{
// size
- setFixedHeight(layout()->count() * 44 );
+ int h = 34;
+ ListItem *widget;
+ for(int i = 0; i < layout()->count(); ++i)
+ {
+ widget = findChild<ListItem *>( QString::number(i) );
+ h = qMax(widget->sizeHint().height(), h);
+ }
+ setFixedHeight(layout()->count() * (h + 10) );
setFixedWidth( _parent->width() );
// position
@@ -206,9 +213,10 @@ bool CompletionWidget::eventFilter( QObject *o, QEvent *e )
}
break;
+ case Qt::Key_Enter:
case Qt::Key_Return:
hide();
- emit chosenUrl(currentUrl().url());
+ emit chosenUrl(currentUrl().url(), Rekonq::CurrentTab);
ev->accept();
return true;
break;
@@ -235,8 +243,11 @@ void CompletionWidget::setVisible( bool visible )
}
-void CompletionWidget::itemChosen(ListItem *item)
+void CompletionWidget::itemChosen(ListItem *item, Qt::MouseButton button)
{
- emit chosenUrl(_list.at(layout()->indexOf(item)).url);
+ if(button == Qt::MidButton)
+ emit chosenUrl(_list.at(layout()->indexOf(item)).url, Rekonq::NewCurrentTab);
+ else
+ emit chosenUrl(_list.at(layout()->indexOf(item)).url, Rekonq::CurrentTab);
hide();
-} \ No newline at end of file
+}
diff --git a/src/urlbar/completionwidget.h b/src/urlbar/completionwidget.h
index 7b474bd8..64d33189 100644
--- a/src/urlbar/completionwidget.h
+++ b/src/urlbar/completionwidget.h
@@ -29,6 +29,7 @@
// Local Includes
+#include "application.h"
#include "urlresolver.h"
#include "listitem.h"
@@ -60,10 +61,10 @@ public:
KUrl currentUrl();
private slots:
- void itemChosen(ListItem *item);
+ void itemChosen(ListItem *item, Qt::MouseButton = Qt::LeftButton);
signals:
- void chosenUrl(const QString&);
+ void chosenUrl(const QString&, Rekonq::OpenType);
private:
void sizeAndPosition();
diff --git a/src/urlbar/lineedit.cpp b/src/urlbar/lineedit.cpp
index f3c93e8e..ac92b858 100644
--- a/src/urlbar/lineedit.cpp
+++ b/src/urlbar/lineedit.cpp
@@ -42,7 +42,7 @@ LineEdit::LineEdit(QWidget* parent)
setMinimumWidth(200);
setFocusPolicy(Qt::WheelFocus);
setHandleSignals(true);
- setClearButtonShown(true);
+ setClearButtonShown(false);
}
diff --git a/src/urlbar/listitem.cpp b/src/urlbar/listitem.cpp
index 92951cb7..d9837c7e 100644
--- a/src/urlbar/listitem.cpp
+++ b/src/urlbar/listitem.cpp
@@ -44,6 +44,7 @@
#include <QPixmap>
#include <QStylePainter>
#include <QFile>
+#include <QMouseEvent>
ListItem::ListItem(const UrlSearchItem &item, QWidget *parent)
: QWidget(parent),
@@ -167,7 +168,7 @@ void ListItem::leaveEvent(QEvent *e)
void ListItem::mousePressEvent(QMouseEvent *e)
{
- emit itemClicked(this);
+ emit itemClicked(this, e->button());
QWidget::mousePressEvent(e);
}
diff --git a/src/urlbar/listitem.h b/src/urlbar/listitem.h
index 6aa3f1e9..ac476d4b 100644
--- a/src/urlbar/listitem.h
+++ b/src/urlbar/listitem.h
@@ -44,7 +44,7 @@ public:
void deactivate();
signals:
- void itemClicked(ListItem *item);
+ void itemClicked(ListItem *item, Qt::MouseButton);
protected:
virtual void paintEvent(QPaintEvent *event);
diff --git a/src/urlbar/urlbar.cpp b/src/urlbar/urlbar.cpp
index 54a0a02d..a04d6534 100644
--- a/src/urlbar/urlbar.cpp
+++ b/src/urlbar/urlbar.cpp
@@ -50,14 +50,13 @@
#include <QTimer>
#include <QVBoxLayout>
-QColor UrlBar::s_defaultBaseColor;
-
UrlBar::UrlBar(QWidget *parent)
: KComboBox(true, parent)
, m_lineEdit(new LineEdit)
- , m_progress(0)
, m_box(new CompletionWidget(this))
+ , _tab(0)
+ , _privateMode(false)
{
//cosmetic
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
@@ -72,11 +71,6 @@ UrlBar::UrlBar(QWidget *parent)
p.setColor(QPalette::Base, Qt::transparent);
m_lineEdit->setPalette(p);
- if (!s_defaultBaseColor.isValid())
- {
- s_defaultBaseColor = palette().color(QPalette::Base);
- }
-
setLineEdit(m_lineEdit);
// clear the URL bar
@@ -85,7 +79,7 @@ UrlBar::UrlBar(QWidget *parent)
connect(this, SIGNAL(returnPressed(const QString&)), SLOT(activated(const QString&)));
installEventFilter(m_box);
- connect(m_box, SIGNAL(chosenUrl(const QString&)), SLOT(activated(const QString&)));
+ connect(m_box, SIGNAL(chosenUrl(const QString&, Rekonq::OpenType)), SLOT(activated(const QString&, Rekonq::OpenType)));
}
@@ -123,13 +117,6 @@ void UrlBar::setUrl(const QUrl& url)
}
-void UrlBar::setProgress(int progress)
-{
- m_progress = progress;
- update();
-}
-
-
void UrlBar::updateUrl()
{
// Don't change my typed url...
@@ -171,7 +158,7 @@ void UrlBar::updateUrl()
}
-void UrlBar::activated(const QString& urlString)
+void UrlBar::activated(const QString& urlString, Rekonq::OpenType type)
{
disconnect(this, SIGNAL(editTextChanged(const QString &)), this, SLOT(suggestUrls(const QString &)));
@@ -180,30 +167,25 @@ void UrlBar::activated(const QString& urlString)
clearFocus();
setUrl(urlString);
- Application::instance()->loadUrl(m_currentUrl);
-}
-
-
-void UrlBar::loadFinished(bool)
-{
- // reset progress bar after small delay
- m_progress = 0;
- QTimer::singleShot(200, this, SLOT(update()));
-}
-
-
-void UrlBar::updateProgress(int progress)
-{
- m_progress = progress;
- update();
+ Application::instance()->loadUrl(m_currentUrl, type);
}
void UrlBar::paintEvent(QPaintEvent *event)
{
+ QColor backgroundColor;
+ if( _privateMode )
+ {
+ backgroundColor = QColor(192, 192, 192); // gray
+ }
+ else
+ {
+ backgroundColor = Application::palette().color(QPalette::Base);
+ }
+
// set background color of UrlBar
QPalette p = palette();
- p.setColor(QPalette::Base, s_defaultBaseColor);
+ p.setColor(QPalette::Base, backgroundColor);
setPalette(p);
KComboBox::paintEvent(event);
@@ -221,11 +203,20 @@ void UrlBar::paintEvent(QPaintEvent *event)
{
loadingColor = QColor(116, 192, 250);
}
- painter.setBrush(generateGradient(loadingColor, height()));
+ int progr = _tab->progress();
+
+ backgroundColor.setAlpha(0);
+ backgroundColor.setAlpha(200);
+ QLinearGradient gradient(0, 0, width(), height() );
+ gradient.setColorAt(0, loadingColor);
+ gradient.setColorAt(((double)progr)/100, backgroundColor);
+
+ painter.setBrush( gradient );
painter.setPen(Qt::transparent);
+
QRect backgroundRect = m_lineEdit->frameGeometry();
- int mid = backgroundRect.width() * m_progress / 100;
+ int mid = backgroundRect.width() * progr / 100;
QRect progressRect(backgroundRect.x(), backgroundRect.y(), mid, backgroundRect.height());
painter.drawRect(progressRect);
painter.end();
@@ -239,41 +230,8 @@ QSize UrlBar::sizeHint() const
}
-QLinearGradient UrlBar::generateGradient(const QColor &color, int height)
-{
- QColor base = s_defaultBaseColor;
- base.setAlpha(0);
- QColor barColor = color;
- barColor.setAlpha(200);
- QLinearGradient gradient(0, 0, 0, height);
- gradient.setColorAt(0, base);
- gradient.setColorAt(0.25, barColor.lighter(120));
- gradient.setColorAt(0.5, barColor);
- gradient.setColorAt(0.75, barColor.lighter(120));
- gradient.setColorAt(1, base);
- return gradient;
-}
-
-
-void UrlBar::setBackgroundColor(QColor c)
-{
- s_defaultBaseColor = c;
- update();
-}
-
-
-bool UrlBar::isLoading()
-{
- if(m_progress == 0)
- {
- return false;
- }
- return true;
-}
-
void UrlBar::keyPressEvent(QKeyEvent *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)
@@ -338,3 +296,22 @@ void UrlBar::focusInEvent(QFocusEvent *event)
KComboBox::focusInEvent(event);
}
+
+
+void UrlBar::setCurrentTab(WebTab *tab)
+{
+ if(_tab)
+ disconnect(_tab->view(), SIGNAL(urlChanged(const QUrl &)), this, SLOT(setUrl(const QUrl &)));
+ _tab = tab;
+ connect(_tab->view(), SIGNAL(urlChanged(const QUrl &)), this, SLOT(setUrl(const QUrl &)));
+
+ // update it now (the first time)
+ setUrl( _tab->url() );
+ update();
+}
+
+
+void UrlBar::setPrivateMode(bool on)
+{
+ _privateMode = on;
+}
diff --git a/src/urlbar/urlbar.h b/src/urlbar/urlbar.h
index ef53d63a..991b9038 100644
--- a/src/urlbar/urlbar.h
+++ b/src/urlbar/urlbar.h
@@ -34,6 +34,7 @@
// Local Includes
#include "lineedit.h"
#include "completionwidget.h"
+#include "webtab.h"
// KDE Includes
#include <KUrl>
@@ -59,18 +60,16 @@ public:
void selectAll() const;
KUrl url() const;
QSize sizeHint() const;
- void setBackgroundColor(QColor);
- bool isLoading();
- void setProgress(int progress);
+ void setCurrentTab(WebTab *);
+ void setPrivateMode(bool on);
+
public slots:
void setUrl(const QUrl &url);
- void updateProgress(int progress);
void updateUrl();
private slots:
- void activated(const QString& url);
- void loadFinished(bool);
+ void activated(const QString& url, Rekonq::OpenType = Rekonq::CurrentTab);
void suggestUrls(const QString &editedText);
protected:
@@ -79,17 +78,13 @@ protected:
virtual void focusInEvent(QFocusEvent *event);
private:
- static QLinearGradient generateGradient(const QColor &color, int height);
-
- static QColor s_defaultBaseColor;
-
LineEdit *m_lineEdit;
KUrl m_currentUrl;
- int m_progress;
CompletionWidget *m_box;
- KUrl m_suggestedUrl;
+ WebTab *_tab;
+ bool _privateMode;
};
#endif
diff --git a/src/urlbar/urlresolver.cpp b/src/urlbar/urlresolver.cpp
index b2bf50af..cb61ad95 100644
--- a/src/urlbar/urlresolver.cpp
+++ b/src/urlbar/urlresolver.cpp
@@ -70,8 +70,17 @@ UrlSearchList UrlResolver::orderedSearchItems()
UrlSearchList list;
- list << qurlFromUserInputResolution();
- list << webSearchesResolution();
+ if(isHttp())
+ {
+ list << qurlFromUserInputResolution();
+ list << webSearchesResolution();
+ }
+ else
+ {
+ list << webSearchesResolution();
+ list << qurlFromUserInputResolution();
+ }
+
int firstResults = list.count();
int checkPoint = 9 - firstResults;
@@ -93,6 +102,21 @@ UrlSearchList UrlResolver::orderedSearchItems()
}
+bool UrlResolver::isHttp()
+{
+ QString r = "[\\d\\w-.]+\\.(a[cdefgilmnoqrstuwz]|b[abdefghijmnorstvwyz]|"\
+ "c[acdfghiklmnoruvxyz]|d[ejkmnoz]|e[ceghrst]|f[ijkmnor]|g[abdefghilmnpqrstuwy]|"\
+ "h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|"\
+ "m[acdghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eouw]|"\
+ "s[abcdeghijklmnortuvyz]|t[cdfghjkmnoprtvwz]|u[augkmsyz]|v[aceginu]|w[fs]|"\
+ "y[etu]|z[amw]|aero|arpa|biz|com|coop|edu|info|int|gov|mil|museum|name|net|org|"\
+ "pro)";
+
+ return (QRegExp(r, Qt::CaseInsensitive).indexIn(_urlString) != -1)
+ || _urlString.startsWith("http:")
+ || _urlString.startsWith("https:");
+}
+
//////////////////////////////////////////////////////////////////////////
// PRIVATE ENGINES
@@ -108,10 +132,12 @@ UrlSearchList UrlResolver::qurlFromUserInputResolution()
{
QByteArray ba = urlFromUserInput.toEncoded();
if(!ba.isEmpty())
- {
- QString str(ba);
- UrlSearchItem it(str);
- list << it;
+ {
+ QString gUrl = QString(ba);
+ QString gTitle = i18n("Browse");
+ UrlSearchItem gItem(gUrl, gTitle, QString("") );
+ list << gItem;
+
}
}
@@ -125,7 +151,7 @@ UrlSearchList UrlResolver::webSearchesResolution()
UrlSearchList list;
QString url1 = _urlString;
- if(KUrl(url1).isRelative() && !url1.contains('.'))
+ if(KUrl(url1).isRelative())
{
// KUriFilter has the worst performance possible here and let this trick unusable
QString gUrl = QString("http://www.google.com/search?q=%1&ie=UTF-8&oe=UTF-8").arg(url1);
@@ -133,10 +159,10 @@ UrlSearchList UrlResolver::webSearchesResolution()
UrlSearchItem gItem(gUrl, gTitle, QString("http://www.google.com") );
list << gItem;
- QString wUrl = QString("http://en.wikipedia.org/wiki/Special:Search?search=%1&go=Go").arg(url1);
- QString wTitle = i18n("Search Wikipedia for ") + url1;
- UrlSearchItem wItem(wUrl, wTitle, QString("http://wikipedia.org") );
- list << wItem;
+// QString wUrl = QString("http://en.wikipedia.org/wiki/Special:Search?search=%1&go=Go").arg(url1);
+// QString wTitle = i18n("Search Wikipedia for ") + url1;
+// UrlSearchItem wItem(wUrl, wTitle, QString("http://wikipedia.org") );
+// list << wItem;
}
return list;
@@ -169,9 +195,10 @@ UrlSearchList UrlResolver::bookmarksResolution()
QStringList bookmarkResults = bookmarkCompletion->substringCompletion(_urlString);
Q_FOREACH(const QString &s, bookmarkResults)
{
- UrlSearchItem it( s, QString(), QString("rating") );
+ UrlSearchItem it( s, Application::bookmarkProvider()->titleForBookmarkUrl(s), QString("rating") );
list << it;
}
+
return list;
}
diff --git a/src/urlbar/urlresolver.h b/src/urlbar/urlresolver.h
index 0a880150..4231aaab 100644
--- a/src/urlbar/urlresolver.h
+++ b/src/urlbar/urlresolver.h
@@ -67,6 +67,7 @@ private:
UrlSearchList historyResolution();
UrlSearchList qurlFromUserInputResolution();
UrlSearchList bookmarksResolution();
+ bool isHttp();
};
#endif // URL_RESOLVER_H