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