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

📄 mghtml_part.cpp

📁 monqueror一个很具有参考价值的源玛
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	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 + -