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

📄 khtml_part.cpp

📁 将konqueror浏览器移植到ARM9 2410中
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    init( view, prof );}void KHTMLPart::init( KHTMLView *view, GUIProfile prof ){  if ( prof == DefaultGUI )    setXMLFile( "khtml.rc" );  else if ( prof == BrowserViewGUI )    setXMLFile( "khtml_browser.rc" );  d = new KHTMLPartPrivate(parent());  kdDebug(6050) << "KHTMLPart::init this=" << this << " d=" << d << endl;  m_scalingFactor = 100;  d->m_view = view;  setWidget( d->m_view );  d->m_extension = new KHTMLPartBrowserExtension( this );  d->m_hostExtension = new KHTMLPartBrowserHostExtension( this );  d->m_paLoadImages = 0;  d->m_bMousePressed = false;  d->m_paViewDocument = new KAction( i18n( "View Document Source" ), 0, this, SLOT( slotViewDocumentSource() ), actionCollection(), "viewDocumentSource" );  d->m_paViewFrame = new KAction( i18n( "View Frame Source" ), 0, this, SLOT( slotViewFrameSource() ), actionCollection(), "viewFrameSource" );  d->m_paSaveBackground = new KAction( i18n( "Save &Background Image As..." ), 0, this, SLOT( slotSaveBackground() ), actionCollection(), "saveBackground" );  d->m_paSaveDocument = new KAction( i18n( "&Save As..." ), CTRL+Key_S, this, SLOT( slotSaveDocument() ), actionCollection(), "saveDocument" );  d->m_paSaveFrame = new KAction( i18n( "Save &Frame As..." ), 0, this, SLOT( slotSaveFrame() ), actionCollection(), "saveFrame" );  d->m_paSecurity = new KAction( i18n( "Security..." ), "unlock", 0, this, SLOT( slotSecurity() ), actionCollection(), "security" );  d->m_paDebugRenderTree = new KAction( "print rendering tree to stdout", 0, this, SLOT( slotDebugRenderTree() ), actionCollection(), "debugRenderTree" );  d->m_paDebugDOMTree = new KAction( "print DOM tree to stdout", 0, this, SLOT( slotDebugDOMTree() ), actionCollection(), "debugDOMTree" );  QString foo1 = i18n("Show Images");  QString foo2 = i18n("Show Animated Images");  QString foo3 = i18n("Stop Animated Images");  d->m_paSetEncoding = new KSelectAction( i18n( "Set &Encoding" ), 0, this, SLOT( slotSetEncoding() ), actionCollection(), "setEncoding" );  QStringList encodings = KGlobal::charsets()->descriptiveEncodingNames();  encodings.prepend( i18n( "Auto" ) );  d->m_paSetEncoding->setItems( encodings );  d->m_paSetEncoding->setCurrentItem(0);  d->m_paIncFontSizes = new KHTMLFontSizeAction( this, true, i18n( "Increase Font Sizes" ), "viewmag+", this, SLOT( slotIncFontSizes() ), actionCollection(), "incFontSizes" );  d->m_paDecFontSizes = new KHTMLFontSizeAction( this, false, i18n( "Decrease Font Sizes" ), "viewmag-", this, SLOT( slotDecFontSizes() ), actionCollection(), "decFontSizes" );  d->m_paDecFontSizes->setEnabled( false );  d->m_paFind = KStdAction::find( this, SLOT( slotFind() ), actionCollection(), "find" );  d->m_paPrintFrame = new KAction( i18n( "Print Frame" ), "frameprint", 0, this, SLOT( slotPrintFrame() ), actionCollection(), "printFrame" );  d->m_paSelectAll = KStdAction::selectAll( this, SLOT( slotSelectAll() ), actionCollection(), "selectAll" );  // set the default java(script) flags according to the current host.  d->m_bJScriptEnabled = KHTMLFactory::defaultHTMLSettings()->isJavaScriptEnabled();  d->m_bJavaEnabled = KHTMLFactory::defaultHTMLSettings()->isJavaEnabled();  d->m_bPluginsEnabled = KHTMLFactory::defaultHTMLSettings()->isPluginsEnabled();  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( requestDone( const DOM::DOMString &, khtml::CachedObject *) ),           this, SLOT( slotLoaderRequestDone( const DOM::DOMString &, khtml::CachedObject *) ) );  connect( khtml::Cache::loader(), SIGNAL( requestFailed( const DOM::DOMString &, khtml::CachedObject *) ),           this, SLOT( slotLoaderRequestDone( const DOM::DOMString &, khtml::CachedObject *) ) );  findTextBegin(); //reset find variables  connect( &d->m_redirectionTimer, SIGNAL( timeout() ),           this, SLOT( slotRedirect() ) );  d->m_view->viewport()->installEventFilter( this );}KHTMLPart::~KHTMLPart(){  if ( d->m_findDialog )      disconnect( d->m_findDialog, SIGNAL( destroyed() ),                  this, SLOT( slotFindDialogDestroyed() ) );  if ( d->m_manager )  {    d->m_manager->setActivePart( 0 );    // Shouldn't we delete d->m_manager here ? (David)    // No need to, I would say. We specify "this" as parent qobject    // in ::partManager() (Simon)  }  stopAutoScroll();  d->m_redirectionTimer.stop();  if ( d->m_job )    d->m_job->kill();  khtml::Cache::loader()->cancelRequests( m_url.url() );  disconnect( khtml::Cache::loader(), SIGNAL( requestDone( const DOM::DOMString &, khtml::CachedObject * ) ),              this, SLOT( slotLoaderRequestDone( const DOM::DOMString &, khtml::CachedObject * ) ) );  disconnect( khtml::Cache::loader(), SIGNAL( requestFailed( const DOM::DOMString &, khtml::CachedObject * ) ),              this, SLOT( slotLoaderRequestDone( const DOM::DOMString &, khtml::CachedObject * ) ) );  clear();  if ( d->m_view )  {    d->m_view->hide();    d->m_view->viewport()->hide();    d->m_view->m_part = 0;  }  delete d; d = 0;  KHTMLFactory::deregisterPart( this );}bool KHTMLPart::restoreURL( const KURL &url ){  // Save charset setting (it was already restored!)  QFont::CharSet charset = d->m_charset;  kdDebug( 6050 ) << "KHTMLPart::restoreURL " << url.url() << endl;  d->m_redirectionTimer.stop();  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());  d->m_bJavaEnabled = KHTMLFactory::defaultHTMLSettings()->isJavaEnabled(url.host());  d->m_bPluginsEnabled = KHTMLFactory::defaultHTMLSettings()->isPluginsEnabled(url.host());  d->m_haveCharset = true;  d->m_charset = charset;  d->m_settings->setCharset( d->m_charset );  m_url = url;  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::openURL " << url.url() << endl;  d->m_redirectionTimer.stop();#ifdef SPEED_DEBUG  d->m_parsetime.start();#endif  KParts::URLArgs args( d->m_extension->urlArgs() );  // in case we have a) no frameset, 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 we try to  // be smart and instead of reloading the whole document we just jump to the  // request html anchor  if ( d->m_frames.count() == 0 && d->m_doc && d->m_bComplete &&       urlcmp( url.url(), m_url.url(), true, true ) &&        !url.encodedHtmlRef().isEmpty() && !args.doPost() && !args.reload )  {    kdDebug( 6050 ) << "KHTMLPart::openURL now m_url = " << url.url() << endl;    m_url = url;    emit started( 0L );    gotoAnchor( url.encodedHtmlRef() );    d->m_bComplete = true;    d->m_bParsing = false;    emitLoadEvent();    kdDebug( 6050 ) << "completed..." << endl;    if ( !d->m_redirectURL.isEmpty() )       emit completed(true);    else        emit completed();    return true;  }  kdDebug( 6050 ) << "closing old URL" << endl;  closeURL();  args.metaData().insert("main_frame_request", parentPart() == 0 ? "TRUE" : "FALSE" );  args.metaData().insert("ssl_was_in_use", d->m_ssl_in_use ? "TRUE" : "FALSE" );  args.metaData().insert("ssl_activate_warnings", "TRUE" );  d->m_bReloading = args.reload;  if ( args.doPost() && (url.protocol().startsWith("http")) )  {      d->m_job = KIO::http_post( url, args.postData, false );      d->m_job->addMetaData("content-type", args.contentType() );  }  else      d->m_job = KIO::get( url, args.reload, false );  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(redirection(KIO::Job*, const KURL&) ),           SLOT( slotRedirection(KIO::Job*,const KURL&) ) );  d->m_bComplete = false;  d->m_bLoadEventEmitted = false;  d->m_workingURL = url;  // delete old status bar msg's from kjs (if it _was_ activated on last URL)  if( d->m_bJScriptEnabled )  {     d->m_kjsStatusBarText = QString::null;     d->m_kjsDefaultStatusBarText = QString::null;  }  // set the javascript flags according to the current url  d->m_bJScriptEnabled = KHTMLFactory::defaultHTMLSettings()->isJavaScriptEnabled(url.host());  d->m_bJavaEnabled = KHTMLFactory::defaultHTMLSettings()->isJavaEnabled(url.host());  d->m_bPluginsEnabled = KHTMLFactory::defaultHTMLSettings()->isPluginsEnabled(url.host());  d->m_settings->resetCharset();  d->m_haveCharset = false;  d->m_charset = d->m_settings->charset();  // 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)  // That has been fixed by calling setBaseURL() in begin(). (Waldo)  m_url = url;  if(m_url.protocol().startsWith( "http" ) && !m_url.host().isEmpty() &&     m_url.path().isEmpty())    m_url.setPath("/");  kdDebug( 6050 ) << "KHTMLPart::openURL now (before started) m_url = " << m_url.url() << endl;  emit started( d->m_job );  return true;}bool KHTMLPart::closeURL(){  //kdDebug( 6050 ) << "KHTMPart::closeURL called for: " << this << endl;  if ( d->m_job )  {    KHTMLPageCache::self()->cancelEntry(d->m_cacheId);    d->m_job->kill();    d->m_job = 0;  }  d->m_bComplete = true; // to avoid emitting completed() in slotFinishedParsing() (David)  d->m_bLoadEventEmitted = true; // don't want that one either  d->m_bReloading = false;  KHTMLPageCache::self()->cancelFetch(this);  if ( d->m_bParsing )  {    kdDebug( 6050 ) << " was still parsing... calling end " << endl;    slotFinishedParsing();    d->m_bParsing = false;  }  if ( !d->m_workingURL.isEmpty() )  {    // Aborted before starting to render    kdDebug( 6050 ) << "Aborted before starting to render, reverting location bar to " << m_url.prettyURL() << endl;    emit d->m_extension->setLocationBarURL( m_url.prettyURL() );  }  d->m_workingURL = KURL();  khtml::Cache::loader()->cancelRequests( m_url.url() );  // Stop any started redirections as well!! (DA)  if ( d && d->m_redirectionTimer.isActive() )    d->m_redirectionTimer.stop();  // Force a ::closeURL on all the childern frames!  // This should only work if the current part contains  // child parts, ex: frames... (DA)  if ( d->m_bPendingChildRedirection )  {    d->m_bPendingChildRedirection = false;    ConstFrameIt it = d->m_frames.begin();    ConstFrameIt end = d->m_frames.end();    for (; it != end; ++it )    {      KParts::ReadOnlyPart *p = (*it).m_part;      if ( p && p->inherits( "KHTMLPart" ))        ((KHTMLPart*)p)->closeURL();    }  }  // null node activated.  emit nodeActivated(Node());  return true;}DOM::HTMLDocument KHTMLPart::htmlDocument() const{  if (d->m_doc && d->m_doc->isHTMLDocument())    return static_cast<HTMLDocumentImpl*>(d->m_doc);  else    return static_cast<HTMLDocumentImpl*>(0);}DOM::Document KHTMLPart::document() const{    return d->m_doc;}KParts::BrowserExtension *KHTMLPart::browserExtension() const{  return d->m_extension;}KHTMLView *KHTMLPart::view() const{  return d->m_view;}void KHTMLPart::enableJScript( bool enable ){    setJScriptEnabled( enable );}void KHTMLPart::setJScriptEnabled( bool enable ){  d->m_bJScriptForce = enable;  d->m_bJScriptOverride = true;}bool KHTMLPart::jScriptEnabled() const{  if ( d->m_bJScriptOverride )      return d->m_bJScriptForce;  return d->m_bJScriptEnabled;}void KHTMLPart::enableMetaRefresh( bool enable ){  d->m_metaRefreshEnabled = enable;}bool KHTMLPart::metaRefreshEnabled() const{  return d->m_metaRefreshEnabled;}KJSProxy *KHTMLPart::jScript(){  if ( d->m_bJScriptOverride && !d->m_bJScriptForce || !d->m_bJScriptOverride && !d->m_bJScriptEnabled)      return 0;  if ( !d->m_jscript )  {    KLibrary *lib = KLibLoader::self()->library("kjs_html");    if ( !lib )      return 0;    // look for plain C init function    void *sym = lib->symbol("kjs_html_init");    if ( !sym ) {      delete lib;      return 0;    }    typedef KJSProxy* (*initFunction)(KHTMLPart *);    initFunction initSym = (initFunction) sym;    d->m_jscript = (*initSym)(this);    d->m_kjs_lib = lib;    kjs_lib_count++;  }  return d->m_jscript;}QVariant KHTMLPart::executeScript( const QString &script ){    return executeScript( DOM::Node(), script );}QVariant KHTMLPart::executeScript( const DOM::Node &n, const QString &script ){  //kdDebug(6050) << "KHTMLPart::executeScript n=" << n.nodeName().string().latin1() << "(" << n.nodeType() << ") " << script << endl;  KJSProxy *proxy = jScript();  if (!proxy)    return QVariant();  d->m_runningScripts++;  QVariant ret = proxy->evaluate( script.unicode(), script.length(), n );  d->m_runningScripts--;  if ( d->m_submitForm && !d->m_bParsing && !d->m_runningScripts)      submitFormAgain();  if ( d->m_doc )    d->m_doc->updateRendering();  //kdDebug(6050) << "KHTMLPart::executeScript - done" << endl;  return ret;}bool KHTMLPart::scheduleScript(const DOM::Node &n, const QString& script){    //kdDebug(6050) << "KHTMLPart::scheduleScript "<< script << endl;    d->scheduledScript = script;    d->scheduledScriptNode = n;    return true;}QVariant KHTMLPart::executeScheduledScript(){  if( d->scheduledScript.isEmpty() )    return QVariant();  //kdDebug(6050) << "executing delayed " << d->scheduledScript << endl;  QVariant ret = executeScript( d->scheduledScriptNode, d->scheduledScript );  d->scheduledScript = QString();  d->scheduledScriptNode = DOM::Node();  return ret;}void KHTMLPart::enableJava( bool enable ){  setJavaEnabled( enable );}void KHTMLPart::setJavaEnabled( bool enable ){  d->m_bJavaForce = enable;  d->m_bJavaOverride = true;}bool KHTMLPart::javaEnabled() const{  if( d->m_bJavaOverride )      return d->m_bJavaForce;  return d->m_bJavaEnabled;}KJavaAppletContext *KHTMLPart::javaContext(){  return d->m_javaContext;}

⌨️ 快捷键说明

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