⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 html_formimpl.cpp

📁 将konqueror浏览器移植到ARM9 2410中
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    case ATTR_ONSUBMIT:        setHTMLEventListener(EventImpl::SUBMIT_EVENT,	    ownerDocument()->createHTMLEventListener(attr->value().string()));        break;    case ATTR_ONRESET:        setHTMLEventListener(EventImpl::RESET_EVENT,	    ownerDocument()->createHTMLEventListener(attr->value().string()));        break;    case ATTR_NAME:	break;    default:        HTMLElementImpl::parseAttribute(attr);    }}void HTMLFormElementImpl::attach(){    view = ownerDocument()->view();    HTMLElementImpl::attach();}void HTMLFormElementImpl::detach(){    view = 0;    HTMLElementImpl::detach();}void HTMLFormElementImpl::radioClicked( HTMLGenericFormElementImpl *caller ){    HTMLGenericFormElementImpl *current;    for (current = formElements.first(); current; current = formElements.next())    {        if (current->id() == ID_INPUT &&            static_cast<HTMLInputElementImpl*>(current)->inputType() == HTMLInputElementImpl::RADIO &&            current != caller && current->name() == caller->name()) {            static_cast<HTMLInputElementImpl*>(current)->setChecked(false);        }    }}void HTMLFormElementImpl::registerFormElement(HTMLGenericFormElementImpl *e){    formElements.append(e);}void HTMLFormElementImpl::removeFormElement(HTMLGenericFormElementImpl *e){    formElements.remove(e);}// -------------------------------------------------------------------------HTMLGenericFormElementImpl::HTMLGenericFormElementImpl(DocumentPtr *doc, HTMLFormElementImpl *f)    : HTMLElementImpl(doc){    m_form = f;    if (m_form)        m_form->registerFormElement(this);    view = 0;    m_disabled = m_readOnly = false;}HTMLGenericFormElementImpl::HTMLGenericFormElementImpl(DocumentPtr *doc)    : HTMLElementImpl(doc){    m_form = getForm();    if (m_form)        m_form->registerFormElement(this);    view = 0;    m_disabled = m_readOnly = false;}HTMLGenericFormElementImpl::~HTMLGenericFormElementImpl(){    if (m_form)        m_form->removeFormElement(this);}void HTMLGenericFormElementImpl::parseAttribute(AttrImpl *attr){    switch(attr->attrId)    {    case ATTR_NAME:        _name = attr->value();        break;    case ATTR_DISABLED:        m_disabled = attr->val() != 0;        break;    case ATTR_READONLY:        m_readOnly = attr->val() != 0;        break;    default:        HTMLElementImpl::parseAttribute(attr);    }}HTMLFormElementImpl *HTMLGenericFormElementImpl::getForm() const{    NodeImpl *p = parentNode();    while(p)    {        if( p->id() == ID_FORM )            return static_cast<HTMLFormElementImpl *>(p);        p = p->parentNode();    }#ifdef FORMS_DEBUG    kdDebug( 6030 ) << "couldn't find form!" << endl;#endif    return 0;}void HTMLGenericFormElementImpl::attach(){    view = ownerDocument()->view();    HTMLElementImpl::attach();}void HTMLGenericFormElementImpl::detach(){    view = 0;    HTMLElementImpl::detach();}void HTMLGenericFormElementImpl::onBlur(){    dispatchHTMLEvent(EventImpl::BLUR_EVENT,false,false);}void HTMLGenericFormElementImpl::onFocus(){    // ###:-| this is called from JS _and_ from event handlers.    // Split into two functions (BIC)    dispatchHTMLEvent(EventImpl::FOCUS_EVENT,false,false);}void HTMLGenericFormElementImpl::onSelect(){    dispatchHTMLEvent(EventImpl::SELECT_EVENT,true,false);}void HTMLGenericFormElementImpl::onChange(){    dispatchHTMLEvent(EventImpl::CHANGE_EVENT,true,false);}void HTMLGenericFormElementImpl::setFocus(bool received){    HTMLElementImpl::setFocus(received);    // ### support focus for buttons & images    if (received)    {        if(m_render && m_render->isFormElement())            static_cast<RenderFormElement*>(m_render)->focus(); // will call onFocus()        onFocus();    }    else    {        if(m_render && m_render->isFormElement())            static_cast<RenderFormElement*>(m_render)->blur(); // will call onBlur()        else            onBlur();    }}void HTMLGenericFormElementImpl::setParent(NodeImpl *parent){    if (_parent) { // false on initial insert, we use the form given by the parser	if (m_form)	    m_form->removeFormElement(this);	m_form = 0;    }    HTMLElementImpl::setParent(parent);    if (!m_form) {	m_form = getForm();	if (m_form)	    m_form->registerFormElement(this);    }}bool HTMLGenericFormElementImpl::isSelectable() const{    if (m_disabled)        return false;    return renderer()!=0;}// -------------------------------------------------------------------------HTMLButtonElementImpl::HTMLButtonElementImpl(DocumentPtr *doc, HTMLFormElementImpl *f)    : HTMLGenericFormElementImpl(doc, f){    m_clicked = false;    m_type = SUBMIT;    m_dirty = true;    m_activeSubmit = false;}HTMLButtonElementImpl::HTMLButtonElementImpl(DocumentPtr *doc)    : HTMLGenericFormElementImpl(doc){    m_clicked = false;    m_type = BUTTON;    m_dirty = true;    m_activeSubmit = false;}HTMLButtonElementImpl::~HTMLButtonElementImpl(){}const DOMString HTMLButtonElementImpl::nodeName() const{    return "BUTTON";}ushort HTMLButtonElementImpl::id() const{    return ID_BUTTON;}DOMString HTMLButtonElementImpl::type() const{    return getAttribute(ATTR_TYPE);}void HTMLButtonElementImpl::parseAttribute(AttrImpl *attr){    switch(attr->attrId)    {    case ATTR_TYPE:        if ( strcasecmp( attr->value(), "submit" ) == 0 )            m_type = SUBMIT;        else if ( strcasecmp( attr->value(), "reset" ) == 0 )            m_type = RESET;        else if ( strcasecmp( attr->value(), "button" ) == 0 )            m_type = BUTTON;        break;    case ATTR_VALUE:        m_value = attr->value();        m_currValue = m_value.string();        break;    case ATTR_ACCESSKEY:        break;    case ATTR_ONFOCUS:        setHTMLEventListener(EventImpl::FOCUS_EVENT,	    ownerDocument()->createHTMLEventListener(attr->value().string()));        break;    case ATTR_ONBLUR:        setHTMLEventListener(EventImpl::BLUR_EVENT,	    ownerDocument()->createHTMLEventListener(attr->value().string()));        break;    default:        HTMLGenericFormElementImpl::parseAttribute(attr);    }}void HTMLButtonElementImpl::defaultEventHandler(EventImpl *evt){    if (m_type != BUTTON && (evt->id() == EventImpl::DOMACTIVATE_EVENT)) {        m_clicked = true;        if(m_form && m_type == SUBMIT) {            m_activeSubmit = true;            m_form->prepareSubmit();            m_activeSubmit = false; // in case we were canceled        }        if(m_form && m_type == RESET) m_form->reset();    }}void HTMLButtonElementImpl::attach(){    HTMLElementImpl::attach();}bool HTMLButtonElementImpl::encoding(const QTextCodec* codec, khtml::encodingList& encoding, bool /*multipart*/){    if (m_type != SUBMIT || _name.isEmpty() || !m_activeSubmit)        return false;    encoding += fixUpfromUnicode(codec, _name.string().stripWhiteSpace());    QString enc_str = m_currValue.isNull() ? QString("") : m_currValue;    encoding += fixUpfromUnicode(codec, enc_str);    return true;}// -------------------------------------------------------------------------HTMLFieldSetElementImpl::HTMLFieldSetElementImpl(DocumentPtr *doc, HTMLFormElementImpl *f)    : HTMLGenericFormElementImpl(doc, f){}HTMLFieldSetElementImpl::HTMLFieldSetElementImpl(DocumentPtr *doc)    : HTMLGenericFormElementImpl(doc){}HTMLFieldSetElementImpl::~HTMLFieldSetElementImpl(){}const DOMString HTMLFieldSetElementImpl::nodeName() const{    return "FIELDSET";}ushort HTMLFieldSetElementImpl::id() const{    return ID_FIELDSET;}// -------------------------------------------------------------------------HTMLInputElementImpl::HTMLInputElementImpl(DocumentPtr *doc)    : HTMLGenericFormElementImpl(doc){    init();}HTMLInputElementImpl::HTMLInputElementImpl(DocumentPtr *doc, HTMLFormElementImpl *f)    : HTMLGenericFormElementImpl(doc, f){    init();    if ( f )        m_autocomplete = f->autoComplete();}void HTMLInputElementImpl::init(){    m_type = TEXT;    m_maxLen = -1;    m_size = 20;    m_clicked = false;    m_defaultChecked = false;    m_checked = false;    m_filename = "";    m_haveType = false;    m_firstAttach = true;    m_activeSubmit = false;    m_autocomplete = true;    xPos = 0;    yPos = 0;    view = 0;}HTMLInputElementImpl::~HTMLInputElementImpl(){    if ( ownerDocument() ) ownerDocument()->removeElement(this);}const DOMString HTMLInputElementImpl::nodeName() const{    return "INPUT";}ushort HTMLInputElementImpl::id() const{    return ID_INPUT;}DOMString HTMLInputElementImpl::type() const{    // needs to be lowercase according to DOM spec    switch (m_type) {    case TEXT: return "text";    case PASSWORD: return "password";    case CHECKBOX: return "checkbox";    case RADIO: return "radio";    case SUBMIT: return "submit";    case RESET: return "reset";    case FILE: return "file";    case HIDDEN: return "hidden";    case IMAGE: return "image";    case BUTTON: return "button";    default: return "";    }}QString HTMLInputElementImpl::state( ){    switch (m_type) {    case TEXT:    case PASSWORD:        return m_value.string()+'.'; // Make sure the string is not empty!    case CHECKBOX:        return QString::fromLatin1(m_checked ? "on" : "off");    case RADIO:        return QString::fromLatin1(m_checked ? "on" : "off");    case FILE:        return m_filename.string()+'.';    default:        return QString::null;    }}void HTMLInputElementImpl::restoreState(const QString &state){    switch (m_type) {    case TEXT:    case PASSWORD:        m_value = DOMString(state.left(state.length()-1));        break;    case CHECKBOX:    case RADIO:        m_checked = state == QString::fromLatin1("on");        break;    case FILE:        m_value = m_filename = DOMString(state.left(state.length()-1));        break;    default:        break;    }    setChanged(true);}void HTMLInputElementImpl::select(  ){    if(!m_render) return;    if (m_type == TEXT || m_type == PASSWORD)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -