render_form.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef RENDER_FORM_H
00026 #define RENDER_FORM_H
00027
00028 #include "rendering/render_replaced.h"
00029 #include "rendering/render_image.h"
00030 #include "rendering/render_flow.h"
00031 #include "rendering/render_style.h"
00032 #include "html/html_formimpl.h"
00033
00034 class QWidget;
00035 class QLineEdit;
00036 class QListboxItem;
00037
00038 #include <ktextedit.h>
00039 #include <klineedit.h>
00040 #include <qcheckbox.h>
00041 #include <qradiobutton.h>
00042 #include <qpushbutton.h>
00043 #include <qhbox.h>
00044 #include <klistbox.h>
00045 #include <kcombobox.h>
00046 #include "dom/dom_misc.h"
00047
00048 class KHTMLPartBrowserExtension;
00049
00050 namespace DOM {
00051 class HTMLFormElementImpl;
00052 class HTMLInputElementImpl;
00053 class HTMLSelectElementImpl;
00054 class HTMLGenericFormElementImpl;
00055 class HTMLTextAreaElementImpl;
00056 }
00057
00058 namespace khtml {
00059
00060 class DocLoader;
00061
00062
00063
00064 class RenderFormElement : public khtml::RenderWidget
00065 {
00066 Q_OBJECT
00067 public:
00068 RenderFormElement(DOM::HTMLGenericFormElementImpl* node);
00069 virtual ~RenderFormElement();
00070
00071 virtual const char *renderName() const { return "RenderForm"; }
00072
00073 virtual bool isRendered() const { return true; }
00074 virtual bool isFormElement() const { return true; }
00075
00076 virtual void updateFromElement();
00077
00078 virtual void layout();
00079 virtual short baselinePosition( bool ) const;
00080
00081 DOM::HTMLGenericFormElementImpl *element() const
00082 { return static_cast<DOM::HTMLGenericFormElementImpl*>(RenderObject::element()); }
00083
00084 public slots:
00085 virtual void slotClicked();
00086 void slotPressed();
00087 void slotReleased();
00088
00089 protected:
00090 virtual bool isRenderButton() const { return false; }
00091 virtual bool isEditable() const { return false; }
00092
00093 QPoint m_mousePos;
00094 int m_state;
00095 bool m_isDoubleClick;
00096 };
00097
00098
00099
00100
00101 class RenderButton : public RenderFormElement
00102 {
00103 Q_OBJECT
00104 public:
00105 RenderButton(DOM::HTMLGenericFormElementImpl* node);
00106
00107 virtual const char *renderName() const { return "RenderButton"; }
00108 virtual short baselinePosition( bool ) const;
00109
00110
00111 DOM::HTMLInputElementImpl* element() const
00112 { return static_cast<DOM::HTMLInputElementImpl*>(RenderObject::element()); }
00113
00114 protected:
00115 virtual bool isRenderButton() const { return true; }
00116 };
00117
00118
00119
00120 class RenderCheckBox : public RenderButton
00121 {
00122 Q_OBJECT
00123 public:
00124 RenderCheckBox(DOM::HTMLInputElementImpl* node);
00125
00126 virtual const char *renderName() const { return "RenderCheckBox"; }
00127 virtual void updateFromElement();
00128 virtual void calcMinMaxWidth();
00129
00130 QCheckBox *widget() const { return static_cast<QCheckBox*>(m_widget); }
00131
00132 public slots:
00133 virtual void slotStateChanged(int state);
00134 };
00135
00136
00137
00138 class RenderRadioButton : public RenderButton
00139 {
00140 Q_OBJECT
00141 public:
00142 RenderRadioButton(DOM::HTMLInputElementImpl* node);
00143
00144 virtual const char *renderName() const { return "RenderRadioButton"; }
00145
00146 virtual void calcMinMaxWidth();
00147 virtual void updateFromElement();
00148
00149 QRadioButton *widget() const { return static_cast<QRadioButton*>(m_widget); }
00150
00151 public slots:
00152 void slotClicked();
00153 };
00154
00155
00156
00157 class RenderSubmitButton : public RenderButton
00158 {
00159 public:
00160 RenderSubmitButton(DOM::HTMLInputElementImpl *element);
00161
00162 virtual const char *renderName() const { return "RenderSubmitButton"; }
00163
00164 virtual QString defaultLabel();
00165
00166 virtual void calcMinMaxWidth();
00167 virtual void updateFromElement();
00168 virtual short baselinePosition( bool ) const;
00169 private:
00170 QString rawText();
00171 };
00172
00173
00174
00175 class RenderImageButton : public RenderImage
00176 {
00177 public:
00178 RenderImageButton(DOM::HTMLInputElementImpl *element);
00179
00180 virtual const char *renderName() const { return "RenderImageButton"; }
00181 };
00182
00183
00184
00185
00186 class RenderResetButton : public RenderSubmitButton
00187 {
00188 public:
00189 RenderResetButton(DOM::HTMLInputElementImpl *element);
00190
00191 virtual const char *renderName() const { return "RenderResetButton"; }
00192
00193 virtual QString defaultLabel();
00194 };
00195
00196
00197
00198 class RenderPushButton : public RenderSubmitButton
00199 {
00200 public:
00201 RenderPushButton(DOM::HTMLInputElementImpl *element);
00202
00203 virtual QString defaultLabel();
00204 };
00205
00206
00207
00208 class RenderLineEdit : public RenderFormElement
00209 {
00210 Q_OBJECT
00211 public:
00212 RenderLineEdit(DOM::HTMLInputElementImpl *element);
00213
00214 virtual void calcMinMaxWidth();
00215
00216 virtual const char *renderName() const { return "RenderLineEdit"; }
00217 virtual void updateFromElement();
00218
00219 void select();
00220
00221 KLineEdit *widget() const { return static_cast<KLineEdit*>(m_widget); }
00222 DOM::HTMLInputElementImpl* element() const
00223 { return static_cast<DOM::HTMLInputElementImpl*>(RenderObject::element()); }
00224
00225 public slots:
00226 void slotReturnPressed();
00227 void slotTextChanged(const QString &string);
00228 void slotClearCompletionHistory();
00229 protected:
00230 virtual void handleFocusOut();
00231
00232 private:
00233 virtual bool isEditable() const { return true; }
00234 };
00235
00236
00237
00238 class LineEditWidget : public KLineEdit
00239 {
00240 Q_OBJECT
00241 public:
00242 LineEditWidget(QWidget *parent);
00243
00244 protected:
00245 virtual bool event( QEvent *e );
00246 void clearMenuHistory();
00247 virtual QPopupMenu *createPopupMenu();
00248 signals:
00249 void pressed();
00250 void released();
00251 void clearCompletionHistory();
00252 private slots:
00253 void extendedMenuActivated( int id);
00254 private:
00255 enum LineEditMenuID {
00256 ClearHistory
00257 };
00258 };
00259
00260
00261
00262 class RenderFieldset : public RenderFlow
00263 {
00264 public:
00265 RenderFieldset(DOM::HTMLGenericFormElementImpl *element);
00266
00267 virtual const char *renderName() const { return "RenderFieldSet"; }
00268 protected:
00269 virtual void paintBoxDecorations(QPainter *p,int, int _y,
00270 int, int _h, int _tx, int _ty);
00271 void paintBorderMinusLegend(QPainter *p, int _tx, int _ty, int w,
00272 int h, const RenderStyle *style, int lx, int lw);
00273 bool findLegend( int &lx, int &ly, int &lw, int &lh);
00274 };
00275
00276
00277 class RenderCustomButton : public RenderReplacedFlow
00278 {
00279 public:
00280 RenderCustomButton(DOM::HTMLGenericFormElementImpl *element);
00281
00282 virtual const char *renderName() const { return "RenderCustomButton"; }
00283 };
00284
00285
00286
00287 class RenderFileButton : public RenderFormElement
00288 {
00289 Q_OBJECT
00290 public:
00291 RenderFileButton(DOM::HTMLInputElementImpl *element);
00292
00293 virtual const char *renderName() const { return "RenderFileButton"; }
00294 virtual void calcMinMaxWidth();
00295 virtual void updateFromElement();
00296 void select();
00297
00298 DOM::HTMLInputElementImpl *element() const
00299 { return static_cast<DOM::HTMLInputElementImpl*>(RenderObject::element()); }
00300
00301 KLineEdit* lineEdit() const { return m_edit; }
00302
00303 public slots:
00304 virtual void slotClicked();
00305 virtual void slotReturnPressed();
00306 virtual void slotTextChanged(const QString &string);
00307
00308 protected:
00309 virtual void handleFocusOut();
00310
00311 virtual bool isEditable() const { return true; }
00312
00313 bool m_clicked;
00314 bool m_haveFocus;
00315 KLineEdit *m_edit;
00316 QPushButton *m_button;
00317 };
00318
00319
00320
00321
00322 class RenderLabel : public RenderFormElement
00323 {
00324 public:
00325 RenderLabel(DOM::HTMLGenericFormElementImpl *element);
00326
00327 virtual const char *renderName() const { return "RenderLabel"; }
00328 };
00329
00330
00331
00332
00333 class RenderLegend : public RenderFlow
00334 {
00335 public:
00336 RenderLegend(DOM::HTMLGenericFormElementImpl *element);
00337
00338 virtual const char *renderName() const { return "RenderLegend"; }
00339 };
00340
00341
00342
00343 class ComboBoxWidget : public KComboBox
00344 {
00345 public:
00346 ComboBoxWidget(QWidget *parent);
00347
00348 protected:
00349 virtual bool event(QEvent *);
00350 virtual bool eventFilter(QObject *dest, QEvent *e);
00351 };
00352
00353
00354
00355 class RenderSelect : public RenderFormElement
00356 {
00357 Q_OBJECT
00358 public:
00359 RenderSelect(DOM::HTMLSelectElementImpl *element);
00360
00361 virtual const char *renderName() const { return "RenderSelect"; }
00362
00363 virtual void calcMinMaxWidth();
00364 virtual void layout();
00365
00366 void setOptionsChanged(bool _optionsChanged);
00367
00368 bool selectionChanged() { return m_selectionChanged; }
00369 void setSelectionChanged(bool _selectionChanged) { m_selectionChanged = _selectionChanged; }
00370 virtual void updateFromElement();
00371
00372 void updateSelection();
00373
00374 DOM::HTMLSelectElementImpl *element() const
00375 { return static_cast<DOM::HTMLSelectElementImpl*>(RenderObject::element()); }
00376
00377 protected:
00378 KListBox *createListBox();
00379 ComboBoxWidget *createComboBox();
00380
00381 unsigned m_size;
00382 bool m_multiple;
00383 bool m_useListBox;
00384 bool m_selectionChanged;
00385 bool m_ignoreSelectEvents;
00386 bool m_optionsChanged;
00387
00388 protected slots:
00389 void slotSelected(int index);
00390 void slotSelectionChanged();
00391 };
00392
00393
00394
00395 class TextAreaWidget : public KTextEdit
00396 {
00397 public:
00398 TextAreaWidget(int wrap, QWidget* parent);
00399
00400 protected:
00401 virtual bool event (QEvent *e );
00402 };
00403
00404
00405
00406
00407 class RenderTextArea : public RenderFormElement
00408 {
00409 Q_OBJECT
00410 public:
00411 RenderTextArea(DOM::HTMLTextAreaElementImpl *element);
00412 ~RenderTextArea();
00413
00414 virtual const char *renderName() const { return "RenderTextArea"; }
00415 virtual void calcMinMaxWidth();
00416 virtual void close ( );
00417 virtual void updateFromElement();
00418
00419
00420 DOM::HTMLTextAreaElementImpl* element() const
00421 { return static_cast<DOM::HTMLTextAreaElementImpl*>(RenderObject::element()); }
00422
00423 QString text();
00424
00425 void select();
00426
00427 protected slots:
00428 void slotTextChanged();
00429
00430 protected:
00431 virtual void handleFocusOut();
00432
00433 virtual bool isEditable() const { return true; }
00434 };
00435
00436
00437
00438 }
00439
00440 #endif
This file is part of the documentation for kdelibs Version 3.1.5.