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

📄 khtml_part.cpp.orig

📁 konqueror3 embedded版本, KDE环境下的当家浏览器的嵌入式版本源码包.
💻 ORIG
📖 第 1 页 / 共 5 页
字号:
  d->m_paFindPrev->setWhatsThis( i18n( "Find previous<p>"				       "Find the previous occurrence of the text that you "				       "have found using the <b>Find Text</b> function" ) );  d->m_paFindAheadText = new KAction( i18n("Find Text as You Type"), KShortcut( '/' ), this, SLOT( slotFindAheadText()),      actionCollection(), "findAheadText");  d->m_paFindAheadLinks = new KAction( i18n("Find Links as You Type"), KShortcut( '\'' ), this, SLOT( slotFindAheadLink()),      actionCollection(), "findAheadLink");  d->m_paFindAheadText->setEnabled( false );  d->m_paFindAheadLinks->setEnabled( false );  if ( parentPart() )  {      d->m_paFind->setShortcut( KShortcut() ); // avoid clashes      d->m_paFindNext->setShortcut( KShortcut() ); // avoid clashes      d->m_paFindPrev->setShortcut( KShortcut() ); // avoid clashes      d->m_paFindAheadText->setShortcut( KShortcut());      d->m_paFindAheadLinks->setShortcut( KShortcut());  }  d->m_paPrintFrame = new KAction( i18n( "Print Frame..." ), "frameprint", 0, this, SLOT( slotPrintFrame() ), actionCollection(), "printFrame" );  d->m_paPrintFrame->setWhatsThis( i18n( "Print Frame<p>"					 "Some pages have several frames. To print only a single frame, click "					 "on it and then use this function." ) );  d->m_paSelectAll = KStdAction::selectAll( this, SLOT( slotSelectAll() ), actionCollection(), "selectAll" );  if ( parentPart() )      d->m_paSelectAll->setShortcut( KShortcut() ); // avoid clashes  d->m_paToggleCaretMode = new KToggleAction(i18n("Toggle Caret Mode"),  				Key_F7, this, SLOT(slotToggleCaretMode()),                                actionCollection(), "caretMode");  d->m_paToggleCaretMode->setChecked(isCaretMode());  if (parentPart())      d->m_paToggleCaretMode->setShortcut(KShortcut()); // avoid clashes  // set the default java(script) flags according to the current host.  d->m_bOpenMiddleClick = d->m_settings->isOpenMiddleClickEnabled();  d->m_bBackRightClick = d->m_settings->isBackRightClickEnabled();  d->m_bJScriptEnabled = d->m_settings->isJavaScriptEnabled();  setDebugScript( d->m_settings->isJavaScriptDebugEnabled() );  d->m_bJavaEnabled = d->m_settings->isJavaEnabled();  d->m_bPluginsEnabled = d->m_settings->isPluginsEnabled();  // Set the meta-refresh flag...  d->m_metaRefreshEnabled = d->m_settings->isAutoDelayedActionsEnabled ();  connect( view, SIGNAL( zoomView( int ) ), SLOT( slotZoomView( int ) ) );  connect( this, SIGNAL( completed() ),           this, SLOT( updateActions() ) );  connect( this, SIGNAL( completed( bool ) ),           this, SLOT( updateActions() ) );  connect( this, SIGNAL( started( KIO::Job * ) ),           this, SLOT( updateActions() ) );  d->m_popupMenuXML = KXMLGUIFactory::readConfigFile( locate( "data", "khtml/khtml_popupmenu.rc", KHTMLFactory::instance() ) );  connect( khtml::Cache::loader(), SIGNAL( requestStarted( khtml::DocLoader*, khtml::CachedObject* ) ),           this, SLOT( slotLoaderRequestStarted( khtml::DocLoader*, khtml::CachedObject* ) ) );  connect( khtml::Cache::loader(), SIGNAL( requestDone( khtml::DocLoader*, khtml::CachedObject *) ),           this, SLOT( slotLoaderRequestDone( khtml::DocLoader*, khtml::CachedObject *) ) );  connect( khtml::Cache::loader(), SIGNAL( requestFailed( khtml::DocLoader*, khtml::CachedObject *) ),           this, SLOT( slotLoaderRequestDone( khtml::DocLoader*, khtml::CachedObject *) ) );  connect ( &d->m_progressUpdateTimer, SIGNAL( timeout() ), this, SLOT( slotProgressUpdate() ) );  findTextBegin(); //reset find variables  connect( &d->m_redirectionTimer, SIGNAL( timeout() ),           this, SLOT( slotRedirect() ) );  d->m_dcopobject = new KHTMLPartIface(this);  // TODO KDE4 - load plugins now (see also the constructors)  //if ( prof == BrowserViewGUI && !parentPart() )  //        loadPlugins( partObject(), this, instance() );  // "khtml" catalog does not exist, our translations are in kdelibs.  // removing this catalog from KGlobal::locale() prevents problems  // with changing the language in applications at runtime -Thomas Reitelbach  KGlobal::locale()->removeCatalogue("khtml");}KHTMLPart::~KHTMLPart(){  //kdDebug(6050) << "KHTMLPart::~KHTMLPart " << this << endl;  KConfig *config = KGlobal::config();  config->setGroup( "HTML Settings" );  config->writeEntry( "AutomaticDetectionLanguage", d->m_autoDetectLanguage );  delete d->m_automaticDetection;  delete d->m_manualDetection;  slotWalletClosed();  if (!parentPart()) { // only delete it if the top khtml_part closes    removeJSErrorExtension();    delete d->m_statusBarPopupLabel;  }  d->m_find = 0; // deleted by its parent, the view.  if ( d->m_manager )  {    d->m_manager->setActivePart( 0 );    // We specify "this" as parent qobject for d->manager, so no need to delete it.  }  stopAutoScroll();  d->m_redirectionTimer.stop();  if (!d->m_bComplete)    closeURL();  disconnect( khtml::Cache::loader(), SIGNAL( requestStarted( khtml::DocLoader*, khtml::CachedObject* ) ),           this, SLOT( slotLoaderRequestStarted( khtml::DocLoader*, khtml::CachedObject* ) ) );  disconnect( khtml::Cache::loader(), SIGNAL( requestDone( khtml::DocLoader*, khtml::CachedObject *) ),           this, SLOT( slotLoaderRequestDone( khtml::DocLoader*, khtml::CachedObject *) ) );  disconnect( khtml::Cache::loader(), SIGNAL( requestFailed( khtml::DocLoader*, khtml::CachedObject *) ),           this, SLOT( slotLoaderRequestDone( khtml::DocLoader*, khtml::CachedObject *) ) );  clear();  if ( d->m_view )  {    d->m_view->hide();    d->m_view->viewport()->hide();    d->m_view->m_part = 0;  }  // Have to delete this here since we forward declare it in khtmlpart_p and  // at least some compilers won't call the destructor in this case.  delete d->m_jsedlg;  d->m_jsedlg = 0;  if (!parentPart()) // only delete d->m_frame if the top khtml_part closes      delete d->m_frame;  delete d; d = 0;  KHTMLFactory::deregisterPart( this );}bool KHTMLPart::restoreURL( const KURL &url ){  kdDebug( 6050 ) << "KHTMLPart::restoreURL " << url.url() << endl;  d->m_redirectionTimer.stop();  /*   * That's not a good idea as it will call closeURL() on all   * child frames, preventing them from further loading. This   * method gets called from restoreState() in case of a full frameset   * restoral, and restoreState() calls closeURL() before restoring   * anyway.  kdDebug( 6050 ) << "closing old URL" << endl;  closeURL();  */  d->m_bComplete = false;  d->m_bLoadEventEmitted = false;  d->m_workingURL = url;  // set the java(script) flags according to the current host.  d->m_bJScriptEnabled = KHTMLFactory::defaultHTMLSettings()->isJavaScriptEnabled(url.host());  setDebugScript( KHTMLFactory::defaultHTMLSettings()->isJavaScriptDebugEnabled() );  d->m_bJavaEnabled = KHTMLFactory::defaultHTMLSettings()->isJavaEnabled(url.host());  d->m_bPluginsEnabled = KHTMLFactory::defaultHTMLSettings()->isPluginsEnabled(url.host());  m_url = url;  d->m_restoreScrollPosition = true;  disconnect(d->m_view, SIGNAL(finishedLayout()), this, SLOT(restoreScrollPosition()));  connect(d->m_view, SIGNAL(finishedLayout()), this, SLOT(restoreScrollPosition()));  KHTMLPageCache::self()->fetchData( d->m_cacheId, this, SLOT(slotRestoreData(const QByteArray &)));  emit started( 0L );  return true;}bool KHTMLPart::openURL( const KURL &url ){  kdDebug( 6050 ) << "KHTMLPart(" << this << ")::openURL " << url.url() << endl;  d->m_redirectionTimer.stop();  // check to see if this is an "error://" URL. This is caused when an error  // occurs before this part was loaded (e.g. KonqRun), and is passed to  // khtmlpart so that it can display the error.  if ( url.protocol() == "error" && url.hasSubURL() ) {    closeURL();    if(  d->m_bJScriptEnabled )      d->m_statusBarText[BarOverrideText] = d->m_statusBarText[BarDefaultText] = QString::null;    /**     * The format of the error url is that two variables are passed in the query:     * error = int kio error code, errText = QString error text from kio     * and the URL where the error happened is passed as a sub URL.     */    KURL::List urls = KURL::split( url );    //kdDebug(6050) << "Handling error URL. URL count:" << urls.count() << endl;    if ( urls.count() > 1 ) {      KURL mainURL = urls.first();      int error = mainURL.queryItem( "error" ).toInt();      // error=0 isn't a valid error code, so 0 means it's missing from the URL      if ( error == 0 ) error = KIO::ERR_UNKNOWN;      QString errorText = mainURL.queryItem( "errText", HINT_UTF8 );      urls.pop_front();      d->m_workingURL = KURL::join( urls );      //kdDebug(6050) << "Emitting fixed URL " << d->m_workingURL.prettyURL() << endl;      emit d->m_extension->setLocationBarURL( d->m_workingURL.prettyURL() );      htmlError( error, errorText, d->m_workingURL );      return true;    }  }  if (!parentPart()) { // only do it for toplevel part    QString host = url.isLocalFile() ? "localhost" : url.host();    QString userAgent = KProtocolManager::userAgentForHost(host);    if (userAgent != KProtocolManager::userAgentForHost(QString::null)) {      if (!d->m_statusBarUALabel) {        d->m_statusBarUALabel = new KURLLabel(d->m_statusBarExtension->statusBar());        d->m_statusBarUALabel->setFixedHeight(instance()->iconLoader()->currentSize(KIcon::Small));        d->m_statusBarUALabel->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));        d->m_statusBarUALabel->setUseCursor(false);        d->m_statusBarExtension->addStatusBarItem(d->m_statusBarUALabel, 0, false);        d->m_statusBarUALabel->setPixmap(SmallIcon("agent", instance()));      } else {        QToolTip::remove(d->m_statusBarUALabel);      }      QToolTip::add(d->m_statusBarUALabel, i18n("The fake user-agent '%1' is in use.").arg(userAgent));    } else if (d->m_statusBarUALabel) {      d->m_statusBarExtension->removeStatusBarItem(d->m_statusBarUALabel);      delete d->m_statusBarUALabel;      d->m_statusBarUALabel = 0L;    }  }  KParts::URLArgs args( d->m_extension->urlArgs() );  // in case  // a) we have no frameset (don't test m_frames.count(), iframes get in there)  // b) the url is identical with the currently displayed one (except for the htmlref!)  // c) the url request is not a POST operation and  // d) the caller did not request to reload the page  // e) there was no HTTP redirection meanwhile (testcase: webmin's software/tree.cgi)  // => we don't reload the whole document and  // we just jump to the requested html anchor  bool isFrameSet = false;  if ( d->m_doc && d->m_doc->isHTMLDocument() ) {      HTMLDocumentImpl* htmlDoc = static_cast<HTMLDocumentImpl*>(d->m_doc);      isFrameSet = htmlDoc->body() && (htmlDoc->body()->id() == ID_FRAMESET);  }  if ( url.hasRef() && !isFrameSet )  {    bool noReloadForced = !args.reload && !args.redirectedRequest() && !args.doPost();    if (noReloadForced && urlcmp( url.url(), m_url.url(), true, true ))    {        kdDebug( 6050 ) << "KHTMLPart::openURL, jumping to anchor. m_url = " << url.url() << endl;        m_url = url;        emit started( 0L );        if ( !gotoAnchor( url.encodedHtmlRef()) )          gotoAnchor( url.htmlRef() );        d->m_bComplete = true;        if (d->m_doc)        d->m_doc->setParsing(false);        kdDebug( 6050 ) << "completed..." << endl;        emit completed();        return true;    }  }  // Save offset of viewport when page is reloaded to be compliant  // to every other capable browser out there.  if (args.reload) {    args.xOffset = d->m_view->contentsX();    args.yOffset = d->m_view->contentsY();    d->m_extension->setURLArgs(args);  }  if (!d->m_restored)    closeURL();  d->m_restoreScrollPosition = d->m_restored;  disconnect(d->m_view, SIGNAL(finishedLayout()), this, SLOT(restoreScrollPosition()));  connect(d->m_view, SIGNAL(finishedLayout()), this, SLOT(restoreScrollPosition()));  // initializing m_url to the new url breaks relative links when opening such a link after this call and _before_ begin() is called (when the first  // data arrives) (Simon)  m_url = url;  if(m_url.protocol().startsWith( "http" ) && !m_url.host().isEmpty() &&     m_url.path().isEmpty()) {    m_url.setPath("/");    emit d->m_extension->setLocationBarURL( m_url.prettyURL() );  }  // copy to m_workingURL after fixing m_url above  d->m_workingURL = m_url;  args.metaData().insert("main_frame_request", parentPart() == 0 ? "TRUE" : "FALSE" );  args.metaData().insert("ssl_parent_ip", d->m_ssl_parent_ip);  args.metaData().insert("ssl_parent_cert", d->m_ssl_parent_cert);  args.metaData().insert("PropagateHttpHeader", "true");  args.metaData().insert("ssl_was_in_use", d->m_ssl_in_use ? "TRUE" : "FALSE" );  args.metaData().insert("ssl_activate_warnings", "TRUE" );  args.metaData().insert("cross-domain", toplevelURL().url());  if (d->m_restored)  {     args.metaData().insert("referrer", d->m_pageReferrer);     d->m_cachePolicy = KIO::CC_Cache;  }  else if (args.reload)     d->m_cachePolicy = KIO::CC_Reload;  else     d->m_cachePolicy = KProtocolManager::cacheControl();  if ( args.doPost() && (m_url.protocol().startsWith("http")) )  {      d->m_job = KIO::http_post( m_url, args.postData, false );      d->m_job->addMetaData("content-type", args.contentType() );  }  else  {      d->m_job = KIO::get( m_url, false, false );      d->m_job->addMetaData("cache", KIO::getCacheControlString(d->m_cachePolicy));  }  if (widget())     d->m_job->setWindow(widget()->topLevelWidget());  d->m_job->addMetaData(args.metaData());  connect( d->m_job, SIGNAL( result( KIO::Job* ) ),           SLOT( slotFinished( KIO::Job* ) ) );  connect( d->m_job, SIGNAL( data( KIO::Job*, const QByteArray& ) ),           SLOT( slotData( KIO::Job*, const QByteArray& ) ) );  connect ( d->m_job, SIGNAL( infoMessage( KIO::Job*, const QString& ) ),           SLOT( slotInfoMessage(KIO::Job*, const QString& ) ) );  connect( d->m_job, SIGNAL(redirection(KIO::Job*, const KURL& ) ),           SLOT( slotRedirection(KIO::Job*, const KURL&) ) );  d->m_bComplete = false;  d->m_bLoadEventEmitted = false;  // delete old status bar msg's from kjs (if it _was_ activated on last URL)  if( d->m_bJScriptEnabled )    d->m_statusBarText[BarOverrideText] = d->m_statusBarText[BarDefaultText] = QString::null;  // set the javascript flags according to the current url  d->m_bJScriptEnabled = KHTMLFactory::defaultHTMLSettings()->isJavaScriptEnabled(url.host());  setDebugScript( KHTMLFactory::defaultHTMLSettings()->isJavaScriptDebugEnabled() );  d->m_bJavaEnabled = KHTMLFactory::defaultHTMLSettings()->isJavaEnabled(url.host());  d->m_bPluginsEnabled = KHTMLFactory::defaultHTMLSettings()->isPluginsEnabled(url.host());  connect( d->m_job, SIGNAL( speed( KIO::Job*, unsigned long ) ),           this, SLOT( slotJobSpeed( KIO::Job*, unsigned long ) ) );  connect( d->m_job, SIGNAL( percent( KIO::Job*, unsigned long ) ),           this, SLOT( slotJobPercent( KIO::Job*, unsigned long ) ) );  connect( d->m_job, SIGNAL( result( KIO::Job* ) ),           this, SLOT( slotJobDone( KIO::Job* ) ) );  d->m_jobspeed = 0;#ifndef KONQ_EMBEDDED  // If this was an explicit reload and the user style sheet should be used,  // do a stat to see whether the stylesheet was changed in the meanwhile.  if ( args.reload && !settings()->userStyleSheet().isEmpty() ) {    KURL url( settings()->userStyleSheet() );    KIO::StatJob *job = KIO::stat( url, false /* don't show progress */ );    connect( job, SIGNAL( result( KIO::Job * ) ),             this, SLOT( slotUserSheetStatDone( KIO::Job * ) ) );  }#endif // KONQ_EMBEDDED  emit started( 0L );  return true;}

⌨️ 快捷键说明

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