📄 html_formimpl.h
字号:
/* * This file is part of the DOM implementation for KDE. * * Copyright (C) 1999 Lars Knoll (knoll@kde.org) * (C) 1999 Antti Koivisto (koivisto@kde.org) * (C) 2000 Dirk Mueller (mueller@kde.org) * Copyright (C) 2004 Apple Computer, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * */#ifndef HTML_FORMIMPL_H#define HTML_FORMIMPL_H#include "html/html_elementimpl.h"#include "dom/html_element.h"#include <qvaluelist.h>#include <qptrlist.h>#include <qcstring.h>#include <qmemarray.h>class KHTMLView;class QTextCodec;namespace khtml{ class RenderFormElement; class RenderTextArea; class RenderSelect; class RenderLineEdit; class RenderRadioButton; class RenderFileButton;#if APPLE_CHANGES && !KWIQ class RenderSlider;#endif typedef QValueList<QCString> encodingList;}namespace DOM {class HTMLFormElement;class DOMString;class HTMLGenericFormElementImpl;class HTMLOptionElementImpl;class HTMLImageLoader;class HTMLOptionsCollectionImpl;// -------------------------------------------------------------------------class HTMLFormElementImpl : public HTMLElementImpl{public: HTMLFormElementImpl(DocumentPtr *doc); virtual ~HTMLFormElementImpl(); virtual Id id() const; virtual void attach(); virtual void detach(); long length() const; QByteArray formData(bool& ok); DOMString enctype() const { return m_enctype; } void setEnctype( const DOMString & ); DOMString boundary() const { return m_boundary; } void setBoundary( const DOMString & ); bool autoComplete() const { return m_autocomplete; } virtual void parseHTMLAttribute(HTMLAttributeImpl *attr); void radioClicked( HTMLGenericFormElementImpl *caller );#if KWIQ void updateRadioGroups();#endif void registerFormElement(khtml::RenderFormElement *); void removeFormElement(khtml::RenderFormElement *); void registerFormElement(HTMLGenericFormElementImpl *); void removeFormElement(HTMLGenericFormElementImpl *); bool prepareSubmit(); void submit(bool activateSubmitButton); void reset(); void setMalformed(bool malformed) { m_malformed = malformed; } virtual bool isMalformed() { return m_malformed; } virtual bool isURLAttribute(AttributeImpl *attr) const; #if APPLE_CHANGES void submitClick(); bool formWouldHaveSecureSubmission(const DOMString &url);#endif static void i18nData(); friend class HTMLFormElement; friend class HTMLFormCollectionImpl; QPtrList<HTMLGenericFormElementImpl> formElements; DOMString m_url; DOMString m_target; DOMString m_enctype; DOMString m_boundary; DOMString m_acceptcharset; bool m_post : 1; bool m_multipart : 1; bool m_autocomplete : 1; bool m_insubmit : 1; bool m_doingsubmit : 1; bool m_inreset : 1; bool m_malformed : 1; private: QString oldIdAttr; QString oldNameAttr;};// -------------------------------------------------------------------------class HTMLGenericFormElementImpl : public HTMLElementImpl{ friend class HTMLFormElementImpl; friend class khtml::RenderFormElement;public: HTMLGenericFormElementImpl(DocumentPtr *doc, HTMLFormElementImpl *f = 0); virtual ~HTMLGenericFormElementImpl(); HTMLFormElementImpl *form() { return m_form; } virtual DOMString type() const = 0; virtual void parseHTMLAttribute(HTMLAttributeImpl *attr); virtual void attach(); virtual void removedFromDocument(); virtual void reset() {} void onSelect(); void onChange(); virtual bool disabled() const; void setDisabled(bool _disabled); virtual bool isFocusable() const; virtual bool isKeyboardFocusable() const; virtual bool isMouseFocusable() const; virtual bool isEnumeratable() const { return false; } bool readOnly() const { return m_readOnly; } void setReadOnly(bool _readOnly) { m_readOnly = _readOnly; } virtual void recalcStyle( StyleChange ); DOMString name() const; void setName(const DOMString& name); virtual bool isGenericFormElement() const { return true; } /* * override in derived classes to get the encoded name=value pair * for submitting * return true for a successful control (see HTML4-17.13.2) */ virtual bool encoding(const QTextCodec*, khtml::encodingList&, bool) { return false; } virtual void defaultEventHandler(EventImpl *evt); virtual bool isEditable(); virtual QString state(); QString findMatchingState(QStringList &states); virtual bool isSuccessfulSubmitButton() const { return false; } virtual bool isActivatedSubmit() const { return false; } virtual void setActivatedSubmit(bool flag) { }protected: HTMLFormElementImpl *getForm() const; DOMStringImpl* m_name; HTMLFormElementImpl *m_form; bool m_disabled, m_readOnly; bool m_inited : 1;};// -------------------------------------------------------------------------class HTMLButtonElementImpl : public HTMLGenericFormElementImpl{public: HTMLButtonElementImpl(DocumentPtr *doc, HTMLFormElementImpl *f = 0); virtual ~HTMLButtonElementImpl(); enum typeEnum { SUBMIT, RESET, BUTTON }; virtual Id id() const; DOMString type() const; virtual void parseHTMLAttribute(HTMLAttributeImpl *attr); virtual void defaultEventHandler(EventImpl *evt); virtual bool encoding(const QTextCodec*, khtml::encodingList&, bool); virtual bool isSuccessfulSubmitButton() const; virtual bool isActivatedSubmit() const; virtual void setActivatedSubmit(bool flag); virtual void click(); virtual void accessKeyAction(); protected: DOMString m_value; QString m_currValue; typeEnum m_type : 2; bool m_dirty : 1; bool m_activeSubmit : 1;};// -------------------------------------------------------------------------class HTMLFieldSetElementImpl : public HTMLGenericFormElementImpl{public: HTMLFieldSetElementImpl(DocumentPtr *doc, HTMLFormElementImpl *f = 0); virtual ~HTMLFieldSetElementImpl(); virtual Id id() const; virtual bool isFocusable() const; virtual khtml::RenderObject *createRenderer(RenderArena *, khtml::RenderStyle *); virtual DOMString type() const;};// -------------------------------------------------------------------------class HTMLInputElementImpl : public HTMLGenericFormElementImpl{ friend class khtml::RenderLineEdit; friend class khtml::RenderRadioButton; friend class khtml::RenderFileButton;#if APPLE_CHANGES && !KWIQ friend class HTMLSelectElementImpl; friend class khtml::RenderSlider;#endifpublic: // do not change the order! enum typeEnum { TEXT, PASSWORD, ISINDEX, CHECKBOX, RADIO, SUBMIT, RESET, FILE, HIDDEN, IMAGE, BUTTON#if APPLE_CHANGES ,SEARCH, RANGE#endif }; HTMLInputElementImpl(DocumentPtr *doc, HTMLFormElementImpl *f = 0); virtual ~HTMLInputElementImpl(); virtual Id id() const; virtual bool isEnumeratable() const { return inputType() != IMAGE; } bool autoComplete() const { return m_autocomplete; } bool checked() const { return m_checked; } void setChecked(bool); long maxLength() const { return m_maxLen; } int size() const { return m_size; } DOMString type() const; void setType(const DOMString& t); DOMString value() const; void setValue(DOMString val); void blur(); void focus(); virtual bool maintainsState() { return m_type != PASSWORD; } virtual QString state(); virtual void restoreState(QStringList &); void select(); virtual void click(); virtual void accessKeyAction(); virtual bool mapToEntry(NodeImpl::Id attr, MappedAttributeEntry& result) const; virtual void parseHTMLAttribute(HTMLAttributeImpl *attr); virtual void attach(); virtual bool rendererIsNeeded(khtml::RenderStyle *); virtual khtml::RenderObject *createRenderer(RenderArena *, khtml::RenderStyle *); virtual bool encoding(const QTextCodec*, khtml::encodingList&, bool); virtual bool isSuccessfulSubmitButton() const; virtual bool isActivatedSubmit() const; virtual void setActivatedSubmit(bool flag); typeEnum inputType() const { return m_type; } virtual void reset();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -