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

📄 khtml_part.cpp

📁 将konqueror浏览器移植到ARM9 2410中
💻 CPP
📖 第 1 页 / 共 5 页
字号:
KJavaAppletContext *KHTMLPart::createJavaContext(){  if ( !d->m_javaContext ) {      d->m_javaContext = new KJavaAppletContext();      connect( d->m_javaContext, SIGNAL(showStatus(const QString&)),               this, SIGNAL(setStatusBarText(const QString&)) );      connect( d->m_javaContext, SIGNAL(showDocument(const QString&, const QString&)),               this, SLOT(slotShowDocument(const QString&, const QString&)) );  }  return d->m_javaContext;}void KHTMLPart::enablePlugins( bool enable ){    setPluginsEnabled( enable );}void KHTMLPart::setPluginsEnabled( bool enable ){  d->m_bPluginsForce = enable;  d->m_bPluginsOverride = true;}bool KHTMLPart::pluginsEnabled() const{  if ( d->m_bPluginsOverride )      return d->m_bPluginsForce;  return d->m_bPluginsEnabled;}void KHTMLPart::slotShowDocument( const QString &url, const QString &target ){  // this is mostly copied from KHTMLPart::slotChildURLRequest. The better approach  // would be to put those functions into a single one.  khtml::ChildFrame *child = 0;  KParts::URLArgs args;  args.frameName = target;  QString frameName = args.frameName.lower();  if ( !frameName.isEmpty() )  {    if ( frameName == QString::fromLatin1( "_top" ) )    {      emit d->m_extension->openURLRequest( url, args );      return;    }    else if ( frameName == QString::fromLatin1( "_blank" ) )    {      emit d->m_extension->createNewWindow( url, args );      return;    }    else if ( frameName == QString::fromLatin1( "_parent" ) )    {      KParts::URLArgs newArgs( args );      newArgs.frameName = QString::null;      emit d->m_extension->openURLRequest( url, newArgs );      return;    }    else if ( frameName != QString::fromLatin1( "_self" ) )    {      khtml::ChildFrame *_frame = recursiveFrameRequest( url, args );      if ( !_frame )      {        emit d->m_extension->openURLRequest( url, args );        return;      }      child = _frame;    }  }  // TODO: handle child target correctly! currently the script are always executed fur the parent  if ( url.find( QString::fromLatin1( "javascript:" ), 0, false ) == 0 ) {      executeScript( url.right( url.length() - 11) );      return;  }  if ( child ) {      requestObject( child, KURL(url), args );  }  else if ( frameName==QString::fromLatin1("_self") ) // this is for embedded objects (via <object>) which want to replace the current document  {      KParts::URLArgs newArgs( args );      newArgs.frameName = QString::null;      emit d->m_extension->openURLRequest( KURL(url), newArgs );  }}void KHTMLPart::slotDebugDOMTree(){  if ( d->m_doc )    d->m_doc->printTree();}void KHTMLPart::slotDebugRenderTree(){  if ( d->m_doc )    d->m_doc->renderer()->printTree();}void KHTMLPart::autoloadImages( bool enable ){  setAutoloadImages( enable );}void KHTMLPart::setAutoloadImages( bool enable ){  if ( d->m_doc && d->m_doc->docLoader()->autoloadImages() == enable )    return;  if ( d->m_doc )    d->m_doc->docLoader()->setAutoloadImages( enable );  unplugActionList( "loadImages" );  if ( enable ) {    delete d->m_paLoadImages;    d->m_paLoadImages = 0;  }  else if ( !d->m_paLoadImages )    d->m_paLoadImages = new KAction( i18n( "Display Images on Page" ), "images_display", 0, this, SLOT( slotLoadImages() ), actionCollection(), "loadImages" );  if ( d->m_paLoadImages ) {    QList<KAction> lst;    lst.append( d->m_paLoadImages );    plugActionList( "loadImages", lst );  }}bool KHTMLPart::autoloadImages() const{  if ( d->m_doc )    return d->m_doc->docLoader()->autoloadImages();  return true;}void KHTMLPart::clear(){    kdDebug( 6090 ) << "KHTMLPart::clear() this = " << this << endl;  if ( d->m_bCleared )    return;  d->m_bCleared = true;  d->m_bClearing = true;  {    ConstFrameIt it = d->m_frames.begin();    ConstFrameIt end = d->m_frames.end();    for(; it != end; ++it )    {      // Stop HTMLRun jobs for frames      if ( (*it).m_run )        delete (*it).m_run;    }  }  {    QValueList<khtml::ChildFrame>::ConstIterator it = d->m_objects.begin();    QValueList<khtml::ChildFrame>::ConstIterator end = d->m_objects.end();    for(; it != end; ++it )    {      // Stop HTMLRun jobs for objects      if ( (*it).m_run )        delete (*it).m_run;    }  }  findTextBegin(); // resets d->m_findNode and d->m_findPos  d->m_mousePressNode = DOM::Node();  if ( d->m_doc )  {    kdDebug( 6090 ) << "KHTMLPart::clear(): dereferencing the document" << endl;    d->m_doc->detach();    kdDebug( 6090 ) << "KHTMLPart::clear(): dereferencing done.." << endl;  }  // Moving past doc so that onUnload works.  if ( d->m_jscript )    d->m_jscript->clear();  if ( d->m_view )    d->m_view->clear();  // do not dereference the document before the jscript and view are cleared, as some destructors  // might still try to access the document.  if ( d->m_doc )    d->m_doc->deref();  d->m_doc = 0;  delete d->m_decoder;  d->m_decoder = 0;  {    ConstFrameIt it = d->m_frames.begin();    ConstFrameIt end = d->m_frames.end();    for(; it != end; ++it )    {      if ( (*it).m_part )      {        partManager()->removePart( (*it).m_part );        delete (KParts::ReadOnlyPart *)(*it).m_part;      }    }  }  d->m_frames.clear();  d->m_objects.clear();  delete d->m_javaContext;  d->m_javaContext = 0;  d->m_baseURL = KURL();  d->m_baseTarget = QString::null;  d->m_delayRedirect = 0;  d->m_redirectURL = QString::null;  d->m_bHTTPRefresh = false;  d->m_bClearing = false;  d->m_frameNameId = 1;  d->m_bFirstData = true;  d->m_bMousePressed = false;  d->m_selectionStart = DOM::Node();  d->m_selectionEnd = DOM::Node();  d->m_startOffset = 0;  d->m_endOffset = 0;  d->m_totalImageCount = 0;  d->m_loadedImages = 0;  if ( !d->m_haveEncoding )    d->m_encoding = QString::null;}bool KHTMLPart::openFile(){  return true;}DOM::HTMLDocumentImpl *KHTMLPart::docImpl() const{    if ( d && d->m_doc && d->m_doc->isHTMLDocument() )        return static_cast<HTMLDocumentImpl*>(d->m_doc);    return 0;}DOM::DocumentImpl *KHTMLPart::xmlDocImpl() const{    if ( d )        return d->m_doc;    return 0;}/*bool KHTMLPart::isSSLInUse() const{  return d->m_ssl_in_use;}*/void KHTMLPart::slotData( KIO::Job* kio_job, const QByteArray &data ){  assert ( d->m_job == kio_job );    //kdDebug( 6050 ) << "slotData: " << data.size() << endl;  // The first data ?  if ( !d->m_workingURL.isEmpty() )  {      //kdDebug( 6050 ) << "begin!" << endl;    d->m_bParsing = true;    begin( d->m_workingURL, d->m_extension->urlArgs().xOffset, d->m_extension->urlArgs().yOffset );    d->m_doc->docLoader()->setReloading(d->m_bReloading);    d->m_workingURL = KURL();    d->m_cacheId = KHTMLPageCache::self()->createCacheEntry();    // When the first data arrives, the metadata has just been made available    d->m_ssl_in_use = (d->m_job->queryMetaData("ssl_in_use") == "TRUE");    kdDebug(6050) << "SSL in use? " << d->m_job->queryMetaData("ssl_in_use") << endl;    d->m_paSecurity->setIcon( d->m_ssl_in_use ? "lock" : "unlock" );    kdDebug(6050) << "setIcon " << ( d->m_ssl_in_use ? "lock" : "unlock" ) << " done." << endl;    // Shouldn't all of this be done only if ssl_in_use == true ? (DF)    d->m_ssl_peer_cert_subject = d->m_job->queryMetaData("ssl_peer_cert_subject");    d->m_ssl_peer_cert_issuer = d->m_job->queryMetaData("ssl_peer_cert_issuer");    d->m_ssl_peer_ip = d->m_job->queryMetaData("ssl_peer_ip");    d->m_ssl_cipher = d->m_job->queryMetaData("ssl_cipher");    d->m_ssl_cipher_desc = d->m_job->queryMetaData("ssl_cipher_desc");    d->m_ssl_cipher_version = d->m_job->queryMetaData("ssl_cipher_version");    d->m_ssl_cipher_used_bits = d->m_job->queryMetaData("ssl_cipher_used_bits");    d->m_ssl_cipher_bits = d->m_job->queryMetaData("ssl_cipher_bits");    d->m_ssl_good_from = d->m_job->queryMetaData("ssl_good_from");    d->m_ssl_good_until = d->m_job->queryMetaData("ssl_good_until");    d->m_ssl_cert_state = d->m_job->queryMetaData("ssl_cert_state");    // Check for charset meta-data    QString qData = d->m_job->queryMetaData("charset");    if ( !qData.isEmpty() && !d->m_haveEncoding ) // only use information if the user didn't override the settings    {       d->m_charset = KGlobal::charsets()->charsetForEncoding(qData);       d->m_settings->setCharset( d->m_charset );       d->m_settings->setScript( KGlobal::charsets()->charsetForEncoding(qData, true) );       d->m_haveCharset = true;       d->m_encoding = qData;    }    // Support for http-refresh    qData = d->m_job->queryMetaData("http-refresh");    if( !qData.isEmpty() && d->m_metaRefreshEnabled )    {      kdDebug(6050) << "HTTP Refresh Request: " << qData << endl;      int delay;      int pos = qData.find( ';' );      if ( pos == -1 )        pos = qData.find( ',' );      if( pos == -1 )      {        delay = qData.stripWhiteSpace().toInt();          scheduleRedirection( qData.toInt(), m_url.url() );      }      else      {        int end_pos = qData.length();        delay = qData.left(pos).stripWhiteSpace().toInt();        while ( qData[++pos] == ' ' );        if ( qData.find( "url", pos, false ) == pos )        {          pos += 3;          while (qData[pos] == ' ' || qData[pos] == '=' )              pos++;          if ( qData[pos] == '"' )          {              pos++;              int index = end_pos-1;              while( index > pos )              {                if ( qData[index] == '"' )                    break;                index--;              }              if ( index > pos )                end_pos = index;          }        }        qData = KURL( d->m_baseURL, qData.mid(pos, end_pos) ).url();        scheduleRedirection( delay, qData );      }      d->m_bHTTPRefresh = true;    }  }  KHTMLPageCache::self()->addData(d->m_cacheId, data);  write( data.data(), data.size() );}void KHTMLPart::slotRestoreData(const QByteArray &data ){  // The first data ?  if ( !d->m_workingURL.isEmpty() )  {     long saveCacheId = d->m_cacheId;     begin( d->m_workingURL, d->m_extension->urlArgs().xOffset, d->m_extension->urlArgs().yOffset );     d->m_cacheId = saveCacheId;     d->m_workingURL = KURL();  }  //kdDebug( 6050 ) << "slotRestoreData: " << data.size() << endl;  write( data.data(), data.size() );  if (data.size() == 0)  {      //kdDebug( 6050 ) << "slotRestoreData: <<end of data>>" << endl;     // End of data.     if ( d->m_bParsing )     {        end(); //will emit completed()     }  }}void KHTMLPart::slotFinished( KIO::Job * job ){  if (job->error())  {    KHTMLPageCache::self()->cancelEntry(d->m_cacheId);    job->showErrorDialog( /*d->m_view*/ ); // TODO show the error text in this part, instead.    d->m_job = 0L;    emit canceled( job->errorString() );    // TODO: what else ?    checkCompleted();    return;  }  //kdDebug( 6050 ) << "slotFinished" << endl;  KHTMLPageCache::self()->endData(d->m_cacheId);  if ( d->m_doc && d->m_doc->docLoader()->expireDate())      KIO::http_update_cache(m_url, false, d->m_doc->docLoader()->expireDate());  d->m_workingURL = KURL();  d->m_job = 0L;  if ( d->m_bParsing )    end(); //will emit completed()}void KHTMLPart::begin( const KURL &url, int xOffset, int yOffset ){  clear();  d->m_bCleared = false;  d->m_cacheId = 0;  d->m_bComplete = false;  d->m_bLoadEventEmitted = false;  // ### the setFontSizes in restore currently doesn't seem to work,  // so let's also reset the font base here, so that the font buttons start  // at 0 and not at the last used value (would make sense if the sizes  // would be restored properly though)  d->m_fontBase = 0;  if(url.isValid())      KHTMLFactory::vLinks()->insert( url.url() );  // ###  //stopParser();  KParts::URLArgs args( d->m_extension->urlArgs() );  args.xOffset = xOffset;  args.yOffset = yOffset;  d->m_extension->setURLArgs( args );  d->m_referrer = url.url();  m_url = url;  if ( !m_url.isEmpty() )  {    KURL::List lst = KURL::split( m_url );    KURL baseurl;    if ( !lst.isEmpty() )      baseurl = *lst.begin();    // Use this for relative links.    // We prefer m_baseURL over m_url because m_url changes when we are    // about to load a new page.    setBaseURL(baseurl);    KURL title( baseurl );    title.setRef( QString::null );    title.setQuery( QString::null );    emit setWindowCaption( title.url() );  }  else

⌨️ 快捷键说明

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