annotate demos/browser/urllineedit.d @ 94:87bb4e622f9e

more porting
author mandel
date Thu, 28 May 2009 22:11:52 +0000
parents 5c8c9c5d9ee1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
1 /****************************************************************************
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
2 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
4 ** Contact: Qt Software Information (qt-info@nokia.com)
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
5 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
6 ** This file is part of the demonstration applications of the Qt Toolkit.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
7 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
8 ** $QT_BEGIN_LICENSE:LGPL$
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
9 ** Commercial Usage
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
10 ** Licensees holding valid Qt Commercial licenses may use this file in
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
11 ** accordance with the Qt Commercial License Agreement provided with the
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
12 ** Software or, alternatively, in accordance with the terms contained in
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
13 ** a written agreement between you and Nokia.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
14 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
15 ** GNU Lesser General Public License Usage
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
16 ** Alternatively, this file may be used under the terms of the GNU Lesser
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
17 ** General Public License version 2.1 as published by the Free Software
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
18 ** Foundation and appearing in the file LICENSE.LGPL included in the
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
19 ** packaging of this file. Please review the following information to
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
20 ** ensure the GNU Lesser General Public License version 2.1 requirements
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
21 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
22 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
23 ** In addition, as a special exception, Nokia gives you certain
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
24 ** additional rights. These rights are described in the Nokia Qt LGPL
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
26 ** package.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
27 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
28 ** GNU General Public License Usage
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
29 ** Alternatively, this file may be used under the terms of the GNU
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
30 ** General Public License version 3.0 as published by the Free Software
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
31 ** Foundation and appearing in the file LICENSE.GPL included in the
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
32 ** packaging of this file. Please review the following information to
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
33 ** ensure the GNU General Public License version 3.0 requirements will be
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
34 ** met: http://www.gnu.org/copyleft/gpl.html.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
35 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
36 ** If you are unsure which license is appropriate for your use, please
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
37 ** contact the sales department at qt-sales@nokia.com.
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
38 ** $QT_END_LICENSE$
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
39 **
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
40 ****************************************************************************/
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
41
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
42 module urllineedit;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
43
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
44 import qt.core.QUrl;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
45 import qt.core.QEvent;
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
46 //import qt.core.QDebug;
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
47
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
48 import qt.gui.QWidget;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
49 import qt.gui.QStyleOptionFrame;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
50 import qt.gui.QApplication;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
51 import qt.gui.QCompleter;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
52 import qt.gui.QFocusEvent;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
53 import qt.gui.QHBoxLayout;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
54 import qt.gui.QLabel;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
55 import qt.gui.QLineEdit;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
56 import qt.gui.QPainter;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
57 import qt.gui.QStyle;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
58 import qt.gui.QStyleOptionFrameV2;
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
59 import qt.gui.QLinearGradient;
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
60
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
61
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
62 import browserapplication;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
63 import searchlineedit;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
64 import webview;
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
65
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
66
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
67 class ExLineEdit : public QWidget
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
68 {
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
69 public:
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
70
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
71 this(QWidget parent = null)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
72 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
73 super(parent);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
74
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
75 m_leftWidget = 0;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
76 m_lineEdit = new QLineEdit(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
77 m_clearButton = 0;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
78
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
79 setFocusPolicy(m_lineEdit.focusPolicy());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
80 setAttribute(Qt.WA_InputMethodEnabled);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
81 setSizePolicy(m_lineEdit.sizePolicy());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
82 setBackgroundRole(m_lineEdit.backgroundRole());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
83 setMouseTracking(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
84 setAcceptDrops(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
85 setAttribute(Qt.WA_MacShowFocusRect, true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
86 QPalette p = m_lineEdit.palette();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
87 setPalette(p);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
88
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
89 // line edit
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
90 m_lineEdit.setFrame(false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
91 m_lineEdit.setFocusProxy(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
92 m_lineEdit.setAttribute(Qt.WA_MacShowFocusRect, false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
93 QPalette clearPalette = m_lineEdit.palette();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
94 clearPalette.setBrush(QPalette.Base, QBrush(Qt.transparent));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
95 m_lineEdit.setPalette(clearPalette);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
96
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
97 // clearButton
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
98 m_clearButton = new ClearButton(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
99 m_clearButton.clicked.connect(&m_lineEdit.clear);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
100 m_lineEdit.textChanged.connect(&m_clearButton.textChanged);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
101 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
102
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
103 QLineEdit lineEdit() { return m_lineEdit; }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
104
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
105 void setLeftWidget(QWidget widget)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
106 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
107 m_leftWidget = widget;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
108 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
109
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
110 QWidget leftWidget()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
111 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
112 return m_leftWidget;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
113 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
114
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
115 QSize sizeHint()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
116 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
117 m_lineEdit.setFrame(true);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
118 QSize size = m_lineEdit.sizeHint();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
119 m_lineEdit.setFrame(false);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
120 return size;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
121 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
122
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
123 QVariant inputMethodQuery(Qt.InputMethodQuery property)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
124 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
125 return m_lineEdit.inputMethodQuery(property);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
126 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
127
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
128 protected:
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
129
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
130 void focusInEvent(QFocusEvent event)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
131 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
132 m_lineEdit.event(event);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
133 QWidget.focusInEvent(event);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
134 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
135
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
136 void focusOutEvent(QFocusEvent event)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
137 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
138 m_lineEdit.event(event);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
139
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
140 if (m_lineEdit.completer()) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
141 m_lineEdit.completer().activated.connect(& m_lineEdit.setText);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
142 m_lineEdit.completer().highlighted.connect(&m_lineEdit._q_completionHighlighted);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
143 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
144 QWidget.focusOutEvent(event);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
145 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
146
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
147 void keyPressEvent(QKeyEvent event)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
148 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
149 m_lineEdit.event(event);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
150 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
151
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
152 void paintEvent(QPaintEvent event)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
153 {
85
5c8c9c5d9ee1 more porting
mandel
parents: 80
diff changeset
154 auto p = new QPainter(this);
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
155 QStyleOptionFrameV2 panel;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
156 initStyleOption(&panel);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
157 style().drawPrimitive(QStyle.PE_PanelLineEdit, &panel, &p, this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
158 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
159
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
160 void resizeEvent(QResizeEvent event)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
161 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
162 assert(m_leftWidget);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
163 updateGeometries();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
164 QWidget.resizeEvent(event);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
165 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
166
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
167 void inputMethodEvent(QInputMethodEvent e)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
168 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
169 m_lineEdit.event(e);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
170 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
171
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
172 bool event(QEvent event)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
173 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
174 if (event.type() == QEvent.ShortcutOverride)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
175 return m_lineEdit.event(event);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
176 return QWidget.event(event);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
177 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
178
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
179 protected:
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
180
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
181 void updateGeometries()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
182 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
183 QStyleOptionFrameV2 panel;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
184 initStyleOption(&panel);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
185 QRect rect = style().subElementRect(QStyle.SE_LineEditContents, &panel, this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
186
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
187 int height = rect.height();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
188 int width = rect.width();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
189
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
190 int m_leftWidgetHeight = m_leftWidget.height();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
191 m_leftWidget.setGeometry(rect.x() + 2, rect.y() + (height - m_leftWidgetHeight)/2,
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
192 m_leftWidget.width(), m_leftWidget.height());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
193
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
194 int clearButtonWidth = this.height();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
195 m_lineEdit.setGeometry(m_leftWidget.x() + m_leftWidget.width(), 0,
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
196 width - clearButtonWidth - m_leftWidget.width(), this.height());
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
197
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
198 m_clearButton.setGeometry(this.width() - clearButtonWidth, 0,
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
199 clearButtonWidth, this.height());
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
200 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
201
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
202 void initStyleOption(QStyleOptionFrameV2 option)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
203 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
204 option.initFrom(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
205 option.rect = contentsRect();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
206 option.lineWidth = style().pixelMetric(QStyle.PM_DefaultFrameWidth, option, this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
207 option.midLineWidth = 0;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
208 option.state |= QStyle.State_Sunken;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
209 if (m_lineEdit.isReadOnly())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
210 option.state |= QStyle.State_ReadOnly;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
211 version(QT_KEYPAD_NAVIGATION)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
212 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
213 if (hasEditFocus())
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
214 option.state |= QStyle.State_HasEditFocus;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
215 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
216 else
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
217 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
218 option.features = QStyleOptionFrameV2.None;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
219 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
220 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
221
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
222 QWidget m_leftWidget;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
223 QLineEdit m_lineEdit;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
224 ClearButton m_clearButton;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
225 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
226
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
227
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
228 class UrlIconLabel : public QLabel
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
229 {
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
230 public:
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
231
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
232 this(QWidget parent)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
233 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
234 super(parent);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
235 m_webView = 0;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
236 setMinimumWidth(16);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
237 setMinimumHeight(16);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
238 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
239
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
240 WebView m_webView;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
241
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
242 protected:
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
243
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
244 void mousePressEvent(QMouseEvent event)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
245 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
246 if (event.button() == Qt.LeftButton)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
247 m_dragStartPos = event.pos();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
248 QLabel.mousePressEvent(event);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
249 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
250
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
251 void mouseMoveEvent(QMouseEvent event)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
252 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
253 if (event.buttons() == Qt.LeftButton
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
254 && (event.pos() - m_dragStartPos).manhattanLength() > QApplication.startDragDistance()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
255 && m_webView) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
256 QDrag drag = new QDrag(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
257 QMimeData mimeData = new QMimeData;
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
258 mimeData.setText(QString.fromUtf8(m_webView.getUrl().toEncoded()));
77
0654fc9bac95 more porting
mandel
parents: 74
diff changeset
259 QUrl[] urls;
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
260 urls ~= m_webView.getUrl();
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
261 mimeData.setUrls(urls);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
262 drag.setMimeData(mimeData);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
263 drag.exec();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
264 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
265 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
266
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
267 private:
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
268
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
269 QPoint m_dragStartPos;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
270 }
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
271
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
272
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
273 class UrlLineEdit : public ExLineEdit
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
274 {
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
275 public:
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
276
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
277 this(QWidget parent = null)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
278 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
279 super(parent);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
280 m_webView = 0;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
281 m_iconLabel = 0;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
282 // icon
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
283 m_iconLabel = new UrlIconLabel(this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
284 m_iconLabel.resize(16, 16);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
285 setLeftWidget(m_iconLabel);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
286 m_defaultBaseColor = palette().color(QPalette.Base);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
287
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
288 webViewIconChanged();
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
289 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
290
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
291 void setWebView(WebView webView)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
292 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
293 assert(!m_webView);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
294 m_webView = webView;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
295 m_iconLabel.m_webView = webView;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
296 webView.urlChanged.connect(&this.webViewUrlChanged);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
297 webView.loadFinished.connect(&this.webViewIconChanged);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
298 webView.iconChanged.connect(&this.webViewIconChanged);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
299 webView.loadProgress.connect(&this.update);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
300 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
301
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
302 protected:
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
303
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
304 void paintEvent(QPaintEvent event)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
305 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
306 QPalette p = palette();
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
307 if (m_webView && m_webView.getUrl().scheme() == "https") {
85
5c8c9c5d9ee1 more porting
mandel
parents: 80
diff changeset
308 auto lightYellow = new QColor(248, 248, 210);
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
309 p.setBrush(QPalette.Base, generateGradient(lightYellow));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
310 } else {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
311 p.setBrush(QPalette.Base, m_defaultBaseColor);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
312 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
313 setPalette(p);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
314 ExLineEdit.paintEvent(event);
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
315
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
316 auto painter = new QPainter(this);
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
317 QStyleOptionFrameV2 panel;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
318 initStyleOption(&panel);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
319 QRect backgroundRect = style().subElementRect(QStyle.SE_LineEditContents, &panel, this);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
320 if (m_webView && !hasFocus()) {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
321 int progress = m_webView.progress();
80
85c59c4e5f19 remove QLatin1String and other fixes
mandel
parents: 77
diff changeset
322 QColor loadingColor = new QColor(116, 192, 250);
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
323 painter.setBrush(generateGradient(loadingColor));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
324 painter.setPen(Qt.transparent);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
325 int mid = backgroundRect.width() / 100 * progress;
85
5c8c9c5d9ee1 more porting
mandel
parents: 80
diff changeset
326 QRect progressRect = QRect(backgroundRect.x(), backgroundRect.y(), mid, backgroundRect.height());
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
327 painter.drawRect(progressRect);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
328 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
329 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
330
74
37caa90ce503 more porting
mandel
parents: 73
diff changeset
331 void focusOutEvent(QFocusEvent event)
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
332 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
333 if (m_lineEdit.text().isEmpty() && m_webView)
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
334 m_lineEdit.setText(QString.fromUtf8(m_webView.getUrl().toEncoded()));
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
335 ExLineEdit.focusOutEvent(event);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
336 }
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
337
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
338 private:
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
339
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
340 void webViewUrlChanged(QUrl url)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
341 {
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
342 m_lineEdit.setText(QString.fromUtf8(url.toEncoded()));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
343 m_lineEdit.setCursorPosition(0);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
344 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
345
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
346 void webViewIconChanged()
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
347 {
94
87bb4e622f9e more porting
mandel
parents: 85
diff changeset
348 QUrl url = m_webView ? m_webView.getUrl() : new QUrl();
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
349 QIcon icon = BrowserApplication.instance().icon(url);
85
5c8c9c5d9ee1 more porting
mandel
parents: 80
diff changeset
350 auto pixmap = new QPixmap(icon.pixmap(16, 16));
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
351 m_iconLabel.setPixmap(pixmap);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
352 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
353
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
354 private:
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
355
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
356 QLinearGradient generateGradient(QColor color)
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
357 {
85
5c8c9c5d9ee1 more porting
mandel
parents: 80
diff changeset
358 auto gradient = new QLinearGradient(0, 0, 0, height());
73
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
359 gradient.setColorAt(0, m_defaultBaseColor);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
360 gradient.setColorAt(0.15, color.lighter(120));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
361 gradient.setColorAt(0.5, color);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
362 gradient.setColorAt(0.85, color.lighter(120));
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
363 gradient.setColorAt(1, m_defaultBaseColor);
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
364 return gradient;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
365 }
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
366
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
367 WebView m_webView;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
368 UrlIconLabel m_iconLabel;
7bfd46c330dc more porting
mandel
parents: 45
diff changeset
369 QColor m_defaultBaseColor;
45
71b382c10ef6 add coarse and incomplete QT browser port
mandel
parents:
diff changeset
370 }