summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt5
-rw-r--r--src/tabwidget.cpp24
-rw-r--r--src/tabwidget.h7
-rw-r--r--src/urlbar.cpp114
-rw-r--r--src/urlbar.h36
5 files changed, 171 insertions, 15 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index b9d6a600..4498c543 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -9,13 +9,14 @@ SET( rekonq_SRCS
history.cpp
modelmenu.cpp
networkaccessmanager.cpp
- searchlineedit.cpp # ready to be removed..
+ urlbar.cpp
+# searchlineedit.cpp # ready to be removed..
findbar.cpp
searchbar.cpp
settings.cpp
squeezelabel.cpp
tabwidget.cpp
- urllineedit.cpp # ready to be removed..
+# urllineedit.cpp # ready to be removed..
webview.cpp
main.cpp
)
diff --git a/src/tabwidget.cpp b/src/tabwidget.cpp
index 892c4cc5..d66b6ba3 100644
--- a/src/tabwidget.cpp
+++ b/src/tabwidget.cpp
@@ -25,7 +25,8 @@
#include "browserapplication.h"
#include "browsermainwindow.h"
#include "history.h"
-#include "urllineedit.h"
+// #include "urllineedit.h"
+#include "urlbar.h"
#include "webview.h"
// Qt Includes
@@ -286,7 +287,7 @@ void TabWidget::clear()
m_recentlyClosedTabs.clear();
// clear the line edit history
for (int i = 0; i < m_lineEdits->count(); ++i) {
- QLineEdit *qLineEdit = lineEdit(i);
+ KLineEdit *qLineEdit = lineEdit(i);
qLineEdit->setText(qLineEdit->text());
}
}
@@ -384,7 +385,7 @@ QWidget *TabWidget::lineEditStack() const
return m_lineEdits;
}
-QLineEdit *TabWidget::currentLineEdit() const
+KLineEdit *TabWidget::currentLineEdit() const
{
return lineEdit(m_lineEdits->currentIndex());
}
@@ -394,9 +395,9 @@ WebView *TabWidget::currentWebView() const
return webView(currentIndex());
}
-QLineEdit *TabWidget::lineEdit(int index) const
+KLineEdit *TabWidget::lineEdit(int index) const
{
- UrlLineEdit *urlLineEdit = qobject_cast<UrlLineEdit*>(m_lineEdits->widget(index));
+ UrlBar *urlLineEdit = qobject_cast<UrlBar*>(m_lineEdits->widget(index));
if (urlLineEdit)
return urlLineEdit->lineEdit();
return 0;
@@ -430,9 +431,10 @@ int TabWidget::webViewIndex(WebView *webView) const
WebView *TabWidget::newTab(bool makeCurrent)
{
// line edit
- UrlLineEdit *urlLineEdit = new UrlLineEdit;
- QLineEdit *lineEdit = urlLineEdit->lineEdit();
- if (!m_lineEditCompleter && count() > 0) {
+ UrlBar *urlLineEdit = new UrlBar;
+ KLineEdit *lineEdit = urlLineEdit->lineEdit();
+ if (!m_lineEditCompleter && count() > 0)
+ {
HistoryCompletionModel *completionModel = new HistoryCompletionModel(this);
completionModel->setSourceModel(BrowserApplication::historyManager()->historyFilterModel());
m_lineEditCompleter = new QCompleter(completionModel, this);
@@ -448,7 +450,8 @@ WebView *TabWidget::newTab(bool makeCurrent)
m_lineEdits->setSizePolicy(lineEdit->sizePolicy());
// optimization to delay creating the more expensive WebView, history, etc
- if (count() == 0) {
+ if (count() == 0)
+ {
QWidget *emptyWidget = new QWidget;
QPalette p = emptyWidget->palette();
p.setColor(QPalette::Window, palette().color(QPalette::Base));
@@ -515,7 +518,8 @@ void TabWidget::reloadAllTabs()
void TabWidget::lineEditReturnPressed()
{
- if (QLineEdit *lineEdit = qobject_cast<QLineEdit*>(sender())) {
+ if (KLineEdit *lineEdit = qobject_cast<KLineEdit*>(sender()))
+ {
emit loadPage(lineEdit->text());
if (m_lineEdits->currentWidget() == lineEdit)
currentWebView()->setFocus();
diff --git a/src/tabwidget.h b/src/tabwidget.h
index b3c31c0e..e6399971 100644
--- a/src/tabwidget.h
+++ b/src/tabwidget.h
@@ -109,9 +109,10 @@ private:
#include <QUrl>
#include <QTabWidget>
+#include <KLineEdit>
+
QT_BEGIN_NAMESPACE
class QCompleter;
-class QLineEdit;
class QMenu;
class QStackedWidget;
QT_END_NAMESPACE
@@ -154,10 +155,10 @@ public:
QAction *previousTabAction() const;
QWidget *lineEditStack() const;
- QLineEdit *currentLineEdit() const;
+ KLineEdit *currentLineEdit() const;
WebView *currentWebView() const;
WebView *webView(int index) const;
- QLineEdit *lineEdit(int index) const;
+ KLineEdit *lineEdit(int index) const;
int webViewIndex(WebView *webView) const;
QByteArray saveState() const;
diff --git a/src/urlbar.cpp b/src/urlbar.cpp
index 62b28614..e7ce461a 100644
--- a/src/urlbar.cpp
+++ b/src/urlbar.cpp
@@ -17,9 +17,123 @@
 *
 * ============================================================ */
+// Local Includes
+#include "urlbar.h"
+#include "urlbar.moc"
+#include "browserapplication.h"
+// Qt Includes
+#include <QVBoxLayout>
+#include <QCompleter>
+#include <QFocusEvent>
+#include <QPainter>
+#include <QStyle>
+#include <QStyleOptionFrameV2>
+UrlBar::UrlBar(QWidget *parent)
+ : QWidget(parent)
+ , m_webView(0)
+ , m_iconLabel(0)
+ , m_lineEdit(0)
+{
+ // icon
+ m_iconLabel = new QLabel;
+ m_iconLabel->resize(16, 16);
+
+ m_lineEdit = new KLineEdit;
+
+ QVBoxLayout *layout = new QVBoxLayout;
+ layout->addWidget(m_iconLabel);
+ layout->addWidget(m_lineEdit);
+ setLayout(layout);
+
+ m_defaultBaseColor = palette().color(QPalette::Base);
+
+ webViewIconChanged();
+}
+
+UrlBar::~UrlBar()
+{
+// delete m_webView;
+ delete m_iconLabel;
+ delete m_lineEdit;
+}
+
+KLineEdit *UrlBar::lineEdit()
+{
+ return m_lineEdit;
+}
+
+void UrlBar::setWebView(WebView *webView)
+{
+ Q_ASSERT(!m_webView);
+ m_webView = webView;
+// m_iconLabel->m_webView = webView;
+ connect(webView, SIGNAL(urlChanged(const QUrl &)), this, SLOT(webViewUrlChanged(const QUrl &)));
+ connect(webView, SIGNAL(loadFinished(bool)), this, SLOT(webViewIconChanged()));
+ connect(webView, SIGNAL(iconChanged()), this, SLOT(webViewIconChanged()));
+ connect(webView, SIGNAL(loadProgress(int)), this, SLOT(update()));
+}
+
+void UrlBar::paintEvent(QPaintEvent *event)
+{
+ QPainter p(this);
+ QStyleOptionFrameV2 *optionPanel;
+
+ optionPanel->initFrom(this);
+ optionPanel->rect = contentsRect();
+ optionPanel->lineWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth, optionPanel, this);
+ optionPanel->midLineWidth = 0;
+ optionPanel->state |= QStyle::State_Sunken;
+ if (m_lineEdit->isReadOnly())
+ optionPanel->state |= QStyle::State_ReadOnly;
+ optionPanel->features = QStyleOptionFrameV2::None;
+
+ style()->drawPrimitive(QStyle::PE_PanelLineEdit, optionPanel, &p, (QWidget *) this);
+}
+
+void UrlBar::focusOutEvent(QFocusEvent *event)
+{
+ if (m_lineEdit->text().isEmpty() && m_webView)
+ {
+ m_lineEdit->setText(m_webView->url().toString());
+ }
+
+// m_lineEdit->event(event); // FIXME
+
+ if (m_lineEdit->completer())
+ {
+ connect(m_lineEdit->completer(), SIGNAL(activated(QString)), m_lineEdit, SLOT(setText(QString)));
+ connect(m_lineEdit->completer(), SIGNAL(highlighted(QString)), m_lineEdit, SLOT(_q_completionHighlighted(QString)));
+ }
+ QWidget::focusOutEvent(event);
+}
+
+void UrlBar::webViewUrlChanged(const QUrl &url)
+{
+ m_lineEdit->setText(url.toString());
+ m_lineEdit->setCursorPosition(0);
+}
+
+void UrlBar::webViewIconChanged()
+{
+ QUrl url = (m_webView) ? m_webView->url() : QUrl();
+ QIcon icon = BrowserApplication::instance()->icon(url);
+ QPixmap pixmap(icon.pixmap(16, 16));
+ m_iconLabel->setPixmap(pixmap);
+}
+
+QLinearGradient UrlBar::generateGradient(const QColor &color) const
+{
+ QLinearGradient gradient(0, 0, 0, height());
+ gradient.setColorAt(0, m_defaultBaseColor);
+ gradient.setColorAt(0.15, color.lighter(120));
+ gradient.setColorAt(0.5, color);
+ gradient.setColorAt(0.85, color.lighter(120));
+ gradient.setColorAt(1, m_defaultBaseColor);
+ return gradient;
+}
diff --git a/src/urlbar.h b/src/urlbar.h
index 13c4c320..db6304da 100644
--- a/src/urlbar.h
+++ b/src/urlbar.h
@@ -20,9 +20,45 @@
#ifndef URLBAR_H
#define URLBAR_H
+// Local Includes
+#include "webview.h"
+// KDE Includes
+#include <KLineEdit>
+// Qt Includes
+#include <QWidget>
+#include <QLabel>
+class UrlBar : public QWidget
+{
+Q_OBJECT
+
+public:
+ UrlBar(QWidget *parent = 0);
+ ~UrlBar();
+
+ KLineEdit *lineEdit();
+
+ void setWebView(WebView *webView);
+
+protected:
+ void paintEvent(QPaintEvent *event);
+ void focusOutEvent(QFocusEvent *event);
+
+private slots:
+ void webViewUrlChanged(const QUrl &url);
+ void webViewIconChanged();
+
+private:
+ QLinearGradient generateGradient(const QColor &color) const;
+
+ WebView *m_webView;
+
+ QLabel *m_iconLabel;
+ KLineEdit *m_lineEdit;
+ QColor m_defaultBaseColor;
+};
#endif