1 /**************************************************************************
2 * Otter Browser: Web browser controlled by the user, not vice-versa.
3 * Copyright (C) 2014 Martin Rejda <rejdi@otter.ksp.sk>
4 * Copyright (C) 2014 - 2017 Michal Dutkiewicz aka Emdek <michal@emdek.pl>
5 *
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 *
19 **************************************************************************/
20
21 #include "QtWebKitPluginWidget.h"
22
23 #include <QtGui/QMouseEvent>
24 #include <QtGui/QPainter>
25 #include <QtGui/QPainterPath>
26
27 namespace Otter
28 {
29
QtWebKitPluginWidget(const QString & mimeType,const QUrl & url,QWidget * parent)30 QtWebKitPluginWidget::QtWebKitPluginWidget(const QString &mimeType, const QUrl &url, QWidget *parent) : QWidget(parent),
31 m_mimeType(mimeType),
32 m_url(url.toDisplayString()),
33 m_isHovered(false)
34 {
35 setToolTip(tr("Click to load content (%1) handled by plugin from: %2").arg(mimeType).arg(url.toDisplayString()));
36 }
37
changeEvent(QEvent * event)38 void QtWebKitPluginWidget::changeEvent(QEvent *event)
39 {
40 QWidget::changeEvent(event);
41
42 if (event->type() == QEvent::LanguageChange)
43 {
44 setToolTip(tr("Click to load content (%1) handled by plugin from: %2").arg(m_mimeType).arg(m_url));
45 }
46 }
47
paintEvent(QPaintEvent * event)48 void QtWebKitPluginWidget::paintEvent(QPaintEvent *event)
49 {
50 Q_UNUSED(event)
51
52 int size(0);
53
54 if (width() > height())
55 {
56 size = height();
57 }
58 else
59 {
60 size = width();
61 }
62
63 const QRect rectangle(((width() - size) / 2), ((height() - size) / 2), size, size);
64 QPainter painter(this);
65 painter.setRenderHints(QPainter::Antialiasing);
66 painter.fillRect(rect(), Qt::transparent);
67
68 if (m_isHovered)
69 {
70 painter.setPen(QColor(215, 215, 215));
71 painter.drawRect(rect());
72 }
73
74 painter.setBrush(QColor(215, 215, 215));
75 painter.setPen(Qt::transparent);
76 painter.drawEllipse(rectangle);
77
78 QPainterPath path;
79 path.moveTo(rectangle.topLeft() + QPoint((size / 3), (size / 4)));
80 path.lineTo(rectangle.topLeft() + QPoint(((size / 4) * 3), (size / 2)));
81 path.lineTo(rectangle.topLeft() + QPoint((size / 3), ((size / 4) * 3)));
82 path.lineTo(rectangle.topLeft() + QPoint((size / 3), (size / 4)));
83
84 painter.fillPath(path, QColor(255, 255, 255));
85 }
86
enterEvent(QEvent * event)87 void QtWebKitPluginWidget::enterEvent(QEvent *event)
88 {
89 QWidget::enterEvent(event);
90
91 m_isHovered = true;
92
93 update();
94 }
95
leaveEvent(QEvent * event)96 void QtWebKitPluginWidget::leaveEvent(QEvent *event)
97 {
98 QWidget::leaveEvent(event);
99
100 m_isHovered = false;
101
102 update();
103 }
104
105 }
106