📄 mghtml_part.cpp
字号:
anchors->deref(); if(!n) { n = d->m_doc->getElementById(name); } if(!n) return false; int x = 0, y = 0; HTMLAnchorElementImpl *a = static_cast<HTMLAnchorElementImpl *>(n); a->getAnchorPosition(x, y); d->m_view->setContentsPos(x-30, y-30); return true;}void MGHTMLPart::setURLCursor( const HCURSOR &c ){ d->m_linkCursor = c;}const HCURSOR & MGHTMLPart::urlCursor() const{ return d->m_linkCursor;}#if 0DOM::HTMLDocument MGHTMLPart::htmlDocument() const{ return d->m_doc;}#endifMGHTMLView *MGHTMLPart::view() const{ return d->m_view;}void MGHTMLPart::setDNDEnabled( bool b ){ d->m_bDnd = b;}bool MGHTMLPart::dndEnabled() const{ return d->m_bDnd;}void MGHTMLPart::setFontSizes( const QValueList<int> &newFontSizes ){ d->m_settings->setFontSizes( newFontSizes );}void MGHTMLPart::resetFontSizes(){ d->m_settings->resetFontSizes();}void MGHTMLPart::setStandardFont( const QString &name ){ d->m_settings->setStdFontName(name);}void MGHTMLPart::setFixedFont( const QString &name ){ d->m_settings->setFixedFontName(name);}void MGHTMLPart::enableJScript( bool enable ){ d->m_bJScriptForce = enable; d->m_bJScriptOverride = true;}bool MGHTMLPart::autoloadImages() const{ //return khtml::Cache::autoloadImages(); // !!!!! from setting. return true;}bool MGHTMLPart::openFile(){ return true;}void MGHTMLPart::show(){ if ( d->m_view ) ShowWindow(d->m_view->getHwnd(), SW_SHOW);}void MGHTMLPart::hide(){ if ( d->m_view ) ShowWindow(d->m_view->getHwnd(), SW_HIDE);}DOM::Node MGHTMLPart::nodeUnderMouse() const{ return d->m_view->nodeUnderMouse();}QValueList<int> MGHTMLPart::fontSizes() const{ return d->m_settings->fontSizes();}const MGHTMLSettings *MGHTMLPart::settings() const{ return d->m_settings;}bool MGHTMLPart::jScriptEnabled() const{ if ( d->m_bJScriptOverride ) return d->m_bJScriptForce; return d->m_bJScriptEnabled;}void MGHTMLPart::setBaseURL( const KURL &url ){ d->m_baseURL = url;}KURL MGHTMLPart::baseURL() const{ return d->m_baseURL;}void MGHTMLPart::setBaseTarget( const QString &target ){ d->m_baseTarget = target;}QString MGHTMLPart::baseTarget() const{ return d->m_baseTarget;}#ifdef JAVASCRIPT_ENABLE //QVariant MGHTMLPart::executeScript( const QString &script )bool MGHTMLPart::executeScript( const QString &script ){ return executeScript( 0, script );} //QVariant MGHTMLPart::executeScript( const DOM::Node &n, const QString &script )bool MGHTMLPart::executeScript( DOM::HTMLElementImpl *nimpl, const QString &script ){#if 0 KJSProxy *proxy = jScript(); // ***** modify after js if (!proxy) return QVariant(); QVariant ret = proxy->evaluate( script.unicode(), script.length(), n ); d->m_doc->updateRendering(); return ret;#endif bool bret; MGHTMLView *view=d->m_view; bret = EvaluateJavaScript((QString&)script,&(view->m_JSContext),&(view->m_JSObject),nimpl); //d->m_doc->updateRendering(); view->layout(); InvalidateRect (view->getHwnd (), NULL, TRUE);// UpdateWindow(view->getHwnd (),TRUE); return bret;}//bool MGHTMLPart::scheduleScript(const DOM::Node &n, const QString& script)bool MGHTMLPart::scheduleScript(DOM::HTMLElementImpl *nimpl, const QString& script){ d->scheduledScript = script;// d->scheduledScriptNode = n; d->scheduledScriptNode = nimpl; return true;} //QVariant MGHTMLPart::executeScheduledScript()bool MGHTMLPart::executeScheduledScript(){#if 0 // NOTE: following code is origion. if( d->scheduledScript.isEmpty() ) return QVariant(); QVariant ret = executeScript( d->scheduledScriptNode, d->scheduledScript ); d->scheduledScript = QString(); d->scheduledScriptNode = DOM::Node(); return ret;#endif if( d->scheduledScript.isEmpty() ) return FALSE; bool ret = executeScript( d->scheduledScriptNode, d->scheduledScript ); d->scheduledScript = QString(); d->scheduledScriptNode = 0; return ret;}#endifbool MGHTMLPart::frameExists( const MGString &frameName ){ return d->m_frames.find( frameName ) != d->m_frames.end();}DOM::HTMLDocumentImpl *MGHTMLPart::docImpl() const{ if ( d ) return d->m_doc; return 0;}MGHTMLPart *MGHTMLPart::parentPart(){ return d->m_parentpart;}void MGHTMLPart::setParentPart(MGHTMLPart * temppart){ d->m_parentpart = temppart;}//following are added for submit void MGHTMLPart::setParsing(bool b){ d->m_bParsing=b;}void MGHTMLPart::submitForm( const char *action, const QString &url, const QByteArray &formData, const QString &_target, const QString& contentType, const QString& boundary ){ QString target = _target; if ( target.isEmpty() ) target = d->m_baseTarget; KURL u = completeURL( url, target ); if (u.isMalformed()) return; unsigned char s[1025];#if 0 if (!checkLinkSecurity(u))return;#endif#if 0 URLArgs *args; args=new URLArgs();#endif int naction=0; if ( strcmp( action, "get" ) == 0 ) {#if 0 args->frameName = target;#endif } else { naction=1;#if 0 args->postData = formData; args->frameName = target; if (contentType.isNull() || contentType == "application/x-www-form-urlencoded") d->m_userHeaders = "Content-Type: application/x-www-form-urlencoded"; else // contentType must be "multipart/form-data" d->m_userHeaders = "Content-Type: " + contentType + "; boundary=" + boundary; args->setContentType( d->m_userHeaders );#endif } u.setQuery( QString::fromLatin1( formData.data(), formData.size() ) ); #if 0 // later should be Added // if Parsing then return; if ( d->m_bParsing ) return;#endif d->m_view->setURL(u); if(strlen(u.url(0).latin1())<1024){ strcpy((char *)s, (char *)(u.url(0).latin1())); Cancel_net_thread(); Start_net_thread(); SendNotifyMessage(d->m_view->getHwnd(), MSG_SUBMITURL, (WPARAM)s ,(LPARAM)naction); }}// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> do not think it any more -------------------------------------------/*void KHTMLPart::submitForm( const char *action, const QString &url, const QByteArray &formData, const QString &_target, const QString& contentType, const QString& boundary ){ QString target = _target; if ( target.isEmpty() ) target = d->m_baseTarget; KURL u = completeURL( url, target ); if ( u.isMalformed() ) { return; } if (!checkLinkSecurity(u)) return; KParts::URLArgs args; if ( strcmp( action, "get" ) == 0 ) { u.setQuery( QString::fromLatin1( formData.data(), formData.size() ) ); args.frameName = target; } else { args.postData = formData; args.frameName = target; if (contentType.isNull() || contentType == "application/x-www-form-urlencoded") d->m_userHeaders = "Content-Type: application/x-www-form-urlencoded"; else // contentType must be "multipart/form-data" d->m_userHeaders = "Content-Type: " + contentType + "; boundary=" + boundary; args.setContentType( d->m_userHeaders ); } if ( d->m_bParsing ) { return; } emit d->m_extension->openURLRequest( u, args );}khtml::ChildFrame *MGHTMLPart::frame( const QObject *obj ){ assert( obj->inherits( "KParts::ReadOnlyPart" ) ); const KParts::ReadOnlyPart *part = static_cast<const KParts::ReadOnlyPart *>( obj ); FrameIt it = d->m_frames.begin(); FrameIt end = d->m_frames.end(); for (; it != end; ++it ) if ( (KParts::ReadOnlyPart *)(*it).m_part == part ) return &(*it); return 0L;}MGHTMLPart *MGHTMLPart::findFrame( const QString &f ){ // ### http://www.w3.org/TR/html4/appendix/notes.html#notes-frames ConstFrameIt it = d->m_frames.find( f ); if ( it == d->m_frames.end() ) return 0L; else { KParts::ReadOnlyPart *p = (*it).m_part; if ( p && p->inherits( "KHTMLPart" )) return (KHTMLPart*)p; else return 0L; }}QStringList MGHTMLPart::frameNames() const{ QStringList res; ConstFrameIt it = d->m_frames.begin(); ConstFrameIt end = d->m_frames.end(); for (; it != end; ++it ) res += (*it).m_name; return res;}const QList<KParts::ReadOnlyPart> MGHTMLPart::frames() const{ QList<KParts::ReadOnlyPart> res; ConstFrameIt it = d->m_frames.begin(); ConstFrameIt end = d->m_frames.end(); for (; it != end; ++it ) res.append( (*it).m_part ); return res;}//-------------------- modified completely -----------------------------------------bool MGHTMLPart::openURLInFrame( const KURL &url, const KParts::URLArgs &urlArgs ){ FrameIt it = d->m_frames.find( urlArgs.frameName ); if ( it == d->m_frames.end() ) return false;// emit d->m_extension->openURLNotify(); requestObject( &(*it), url, urlArgs ); return true;}void MGHTMLPart::slotPartRemoved( KParts::Part *part ){ if ( part == d->m_activeFrame ) d->m_activeFrame = 0L;}void MGHTMLPart::slotActiveFrameChanged( KParts::Part *part ){ if ( part == this ) { assert( false ); return; } if ( d->m_activeFrame && d->m_activeFrame->widget()->inherits( "QFrame" ) ) { QFrame *frame = static_cast<QFrame *>( d->m_activeFrame->widget() ); if (frame->frameStyle() != QFrame::NoFrame) { frame->setFrameStyle( QFrame::StyledPanel | QFrame::Sunken); frame->repaint(); } } d->m_activeFrame = part; if ( d->m_activeFrame && d->m_activeFrame->widget()->inherits( "QFrame" ) ) { QFrame *frame = static_cast<QFrame *>( d->m_activeFrame->widget() ); if (frame->frameStyle() != QFrame::NoFrame) { frame->setFrameStyle( QFrame::StyledPanel | QFrame::Plain); frame->repaint(); } } updateActions();}bool MGHTMLPart::checkLinkSecurity(KURL linkURL){ if ( !linkURL.protocol().isNull() && !m_url.protocol().isNull() && ( linkURL.protocol().lower() == "cgi" || linkURL.protocol().lower() == "file" ) && m_url.protocol().lower() != "file" && m_url.protocol().lower() != "cgi" ) { MessageBox("This page is untrusted\nbut it contains a link to your local file system."); return false; } return true;}void MGHTMLPart::slotData( KIO::Job*, const QByteArray &data ) // if transfer correctly.{ if ( !d->m_workingURL.isEmpty() ) { d->m_bParsing = true; begin( d->m_workingURL, d->m_extension->urlArgs().xOffset, d->m_extension->urlArgs().yOffset ); if (d->m_bReloading) d->m_doc->setReloading(); d->m_workingURL = KURL(); d->m_cacheId = KHTMLPageCache::self()->createCacheEntry(); d->m_ssl_in_use = (d->m_job->queryMetaData("ssl_in_use") == "TRUE"); // !!!!! all get from setting d->m_paSecurity->setIcon( d->m_ssl_in_use ? "lock" : "unlock" ); 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"); QString charset = d->m_job->queryMetaData("charset"); if ( !charset.isEmpty() ) setCharset( charset, true ); }// KHTMLPageCache::self()->addData(d->m_cacheId, data); write( data.data(), data.size() );}void MGHTMLPart::slotRestoreData(const QByteArray &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(); } write( data.data(), data.size() ); if (data.size() == 0) { if ( d->m_bParsing ) { end(); //will emit completed() } }}void MGHTMLPart::slotFinished( KIO::Job * job ) // if transfer error.{ if (job->error()) {// KHTMLPageCache::self()->cancelEntry(d->m_cacheId);// job->showErrorDialog(); // !!!!! use ours d->m_job = 0L;// emit canceled( job->errorString() ); // !!!!! invoke directly. invoke which one? checkCompleted(); return; }// KHTMLPageCache::self()->endData(d->m_cacheId); d->m_workingURL = KURL(); d->m_job = 0L; if ( d->m_bParsing ) { end(); //will emit completed() }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -