summaryrefslogtreecommitdiff
path: root/src/urlbar.cpp
blob: 1ee02dc3b5d6b44c0285b8b885437e0347ed06bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/* ============================================================
 *
 * This file is a part of the reKonq project
 *
 * Copyright (C) 2008 by Andrea Diamantini <adjam7 at gmail dot com>
 *
 *
 * 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, or (at your option) any later version.
 *
 * 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.
 *
 * ============================================================ */

// Local Includes
#include "urlbar.h"
#include "urlbar.moc"

#include "browserapplication.h"

// Qt Includes
#include <QtGui>


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;

    QHBoxLayout *layout = new QHBoxLayout;
    layout->addWidget(m_iconLabel);
    layout->addWidget(m_lineEdit);
    setLayout(layout);

    m_defaultBaseColor = palette().color(QPalette::Base);
//     setPalette( QPalette(Qt::white) );
    setAutoFillBackground( false );

    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::webViewUrlChanged(const QUrl &url)
{
    m_lineEdit->setText(url.toString());
    m_lineEdit->setCursorPosition(0);
}


void UrlBar::webViewIconChanged()
{
    KUrl url = (m_webView)  ? m_webView->url() : KUrl();
    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;
}