Reviewed by Zack
[WebKit-https.git] / WebCore / platform / qt / WidgetQt.cpp
1 /*
2  * Copyright (C) 2006 Dirk Mueller <mueller@kde.org>
3  * Copyright (C) 2006 George Stiakos <staikos@kde.org>
4  * Copyright (C) 2006 Zack Rusin <zack@kde.org>
5  * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org>
6  *
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  *
18  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
19  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
22  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
26  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 #include "config.h"
32
33 #include "Font.h"
34 #include "Widget.h"
35 #include "Cursor.h"
36 #include "IntRect.h"
37 #include "RenderObject.h"
38 #include "GraphicsContext.h"
39 #include "WidgetClient.h"
40
41 #include <QWidget>
42
43 #define notImplemented() qDebug("FIXME: UNIMPLEMENTED: %s:%d (%s)", __FILE__, __LINE__, __FUNCTION__)
44
45 namespace WebCore {
46
47 struct WidgetPrivate
48 {
49     WidgetPrivate() : m_widget(0), m_client(0) { }
50     ~WidgetPrivate() { delete m_widget; }
51
52     WidgetClient* m_client;
53
54     QWidget* m_widget;
55
56     Font     m_font;
57 };
58
59 Widget::Widget()
60     : data(new WidgetPrivate())
61 {
62 }
63
64 Widget::~Widget()
65 {
66     delete data;
67     data = 0;
68 }
69
70 void Widget::setClient(WidgetClient* c)
71 {
72     data->m_client = c;
73 }
74
75 WidgetClient* Widget::client() const
76 {
77     return data->m_client;
78 }
79
80 IntRect Widget::frameGeometry() const
81 {
82     if (!data->m_widget)
83         return IntRect();
84
85     return data->m_widget->geometry();
86 }
87
88 bool Widget::hasFocus() const
89 {
90     if (!data->m_widget)
91         return false;
92
93     return data->m_widget->hasFocus();
94 }
95
96 void Widget::setFocus()
97 {
98     if (data->m_widget)
99         data->m_widget->setFocus();
100 }
101
102 void Widget::clearFocus()
103 {
104     if (data->m_widget)
105         data->m_widget->clearFocus();
106 }
107
108 const Font& Widget::font() const
109 {
110     return data->m_font;
111 }
112
113 void Widget::setFont(const Font& font)
114 {
115     if (data->m_widget)
116         data->m_widget->setFont(font);
117     data->m_font = font;
118 }
119
120 void Widget::setCursor(const Cursor& cursor)
121 {
122 #ifndef QT_NO_CURSOR
123     if (data->m_widget)
124         data->m_widget->setCursor(cursor.impl());
125 #endif
126 }
127
128 void Widget::show()
129 {
130     if (data->m_widget)
131         data->m_widget->show();
132 }
133
134 void Widget::hide()
135 {
136     if (data->m_widget)
137         data->m_widget->hide();
138 }
139
140 void Widget::setQWidget(QWidget* child)
141 {
142     data->m_widget = child;
143 }
144
145 QWidget* Widget::qwidget() const
146 {
147     return data->m_widget;
148 }
149
150 void Widget::setFrameGeometry(const IntRect& r)
151 {
152     if (!data->m_widget)
153         return;
154
155     data->m_widget->setGeometry(r);
156 }
157
158 GraphicsContext* Widget::lockDrawingFocus()
159 {
160     notImplemented();
161     return 0;
162 }
163
164 void Widget::unlockDrawingFocus(GraphicsContext*)
165 {
166     notImplemented();
167 }
168
169 void Widget::paint(GraphicsContext*, IntRect const&)
170 {
171     notImplemented();
172 }
173
174 void Widget::enableFlushDrawing()
175 {
176     notImplemented();
177 }
178
179 bool Widget::isEnabled() const
180 {
181     if (!data->m_widget)
182         return false;
183
184     return data->m_widget->isEnabled();
185 }
186
187 void Widget::setIsSelected(bool)
188 {
189     notImplemented();
190 }
191
192 void Widget::disableFlushDrawing()
193 {
194     notImplemented();
195 }
196
197 void Widget::setEnabled(bool en)
198 {
199     if (data->m_widget)
200         data->m_widget->setEnabled(en);
201 }
202
203 Widget::FocusPolicy Widget::focusPolicy() const
204 {
205     if (!data->m_widget)
206         return NoFocus;
207
208     switch (data->m_widget->focusPolicy())
209     {
210         case Qt::TabFocus:
211             return TabFocus;
212         case Qt::ClickFocus:
213             return ClickFocus;
214         case Qt::StrongFocus:
215             return StrongFocus;
216         case Qt::WheelFocus:
217             return WheelFocus;
218         case Qt::NoFocus:
219             return NoFocus;
220     }
221
222     return NoFocus;
223 }
224
225 void Widget::invalidate()
226 {
227     notImplemented();
228 }
229
230 void Widget::invalidateRect(const IntRect& r)
231 {
232     notImplemented();
233 }
234
235 void Widget::removeFromParent()
236 {
237     notImplemented();
238 }
239
240 }
241
242 // vim: ts=4 sw=4 et