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

📄 mghtml_part.cpp

📁 monqueror一个很具有参考价值的源玛
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		m_url = url;		//emit started( 0L );												// !!!!!		if (!url.htmlRef().isEmpty())			gotoAnchor(url.htmlRef());		else			d->m_view->setContentsPos( 0, 0 );		d->m_bComplete = true;		d->m_bParsing = false;		//emit completed();													// !!!!!		return true;	}//	closeURL();//	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 &)));//	d->m_bComplete = false;//	d->m_workingURL = url;//	m_url = url;	//emit started( d->m_job );												// !!!!!	return true;}bool MGHTMLPart::closeURL()													// !!!!!{	//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_bReloading = false;//	KHTMLPageCache::self()->cancelFetch(this);	if ( d->m_bParsing )	{	//	slotFinishedParsing();		d->m_bParsing = false;	}	if ( !d->m_workingURL.isEmpty() )	{    	//	emit d->m_extension->setLocationBarURL( m_url.prettyURL() );		//	!!!!!!	}	d->m_workingURL = KURL();//	khtml::Cache::loader()->cancelRequests( m_url.url() );	return true;}void MGHTMLPart::overURL( const QString &url, const QString &target ){//	emit onURL( url );						// ????? who response for it?//	if ( url.isEmpty() )//	{//		emit setStatusBarText( url );//		return;//	}//	if (url.find( QString::fromLatin1( "javascript:" ),0, false ) != -1 )//	{//		emit setStatusBarText(  url.mid(  url.find("javascript:",0,false)  )  );//		return;//	}	KURL u = completeURL( url );	QString com;//	if ( u.isMalformed() )//	{//		emit setStatusBarText( u.prettyURL() );				// !!!!! change status bar text//		return;//	}/*	if ( u.isLocalFile() )	{		QCString path = QFile::encodeName( u.path() );		struct stat buff;		stat( path.data(), &buff );		struct stat lbuff;		lstat( path.data(), &lbuff );		QString text = u.url();		QString text2 = text;	if (S_ISLNK( lbuff.st_mode ) )	{		QString tmp;		if ( com.isNull() )			tmp = i18n( "Symbolic Link");		else			tmp = i18n("%1 (Link)").arg(com);		char buff_two[1024];		text += " -> ";		int n = readlink ( path.data(), buff_two, 1022);		if (n == -1)		{			text2 += "  ";			text2 += tmp;			emit setStatusBarText( text2 );			return;		}		buff_two[n] = 0;		text += buff_two;		text += "  ";		text += tmp;	}	else if ( S_ISREG( buff.st_mode ) )	{		if (buff.st_size < 1024)			text = i18n("%1 (%2 bytes)").arg(text2).arg((long) buff.st_size);		else		{			float d = (float) buff.st_size/1024.0;			text = i18n("%1 (%2 K)").arg(text2).arg(KGlobal::locale()->formatNumber(d, 2)); // was %.2f		}		text += "  ";		text += com;	}	else if ( S_ISDIR( buff.st_mode ) )		{			text += "  ";			text += com;		}		else		{			text += "  ";			text += com;		}		emit setStatusBarText( text );	}	else	{		QString extra;		if (target == QString::fromLatin1("_blank"))		{			extra = i18n(" (In new window)");		}		else if (!target.isEmpty() &&             (target != QString::fromLatin1("_top")) &&             (target != QString::fromLatin1("_self")) &&             (target != QString::fromLatin1("_parent")))		{			extra = i18n(" (In other frame)");		}		emit setStatusBarText( u.prettyURL()+extra );	}*/}void MGHTMLPart::khtmlMouseReleaseEvent(int x, int y, DOM::Node node, DOM::DOMString innernodeurl){	DOM::Node innerNode = node;	d->m_mousePressNode = DOM::Node();	// Used to prevent mouseMoveEvent from initiating a drag before the mouse is pressed again.	d->m_bMousePressed = false;	if ( !d->m_strSelectedURL.isEmpty())				// && _mouse->button() != RightButton )	{		QString target;		QString url;		url = splitUrlTarget(d->m_strSelectedURL, &target);		// Visual action effect, over text links		//if ( !innerNode.isNull() && innerNode.nodeType() == DOM::Node::TEXT_NODE )		//{		//	khtml::RenderText * renderText = static_cast<khtml::RenderText *>(innerNode.handle()->renderer());		//	khtml::TextSlave * firstSlave = renderText->first();		//	int x, y;		//	renderText->absolutePosition( x, y );		//	int vx, vy;		//	view()->contentsToViewport( x, y, vx, vy );		//	QRect r ( vx, vy, firstSlave->m_width, firstSlave->m_height );		///	KIconEffect::visualActivate( view()->viewport(), r );		//}		//else if (!innerNode.isNull() && innerNode.elementId() == ID_IMG)		//{		//	HTMLImageElementImpl *i = static_cast<HTMLImageElementImpl *>(innerNode.handle());		//	if ( i && i->isServerMap() )		//	{		//		khtml::RenderImage *r = static_cast<khtml::RenderImage *>(i->renderer());		//		if(r)		//		{		//			int absx, absy, vx, vy;		//			r->absolutePosition(absx, absy);		//			view()->contentsToViewport( absx, absy, vx, vy );		//			int x(_mouse->x() - vx), y(_mouse->y() - vy);		//			url += QString("?%1,%2").arg(x).arg(y);		//		}		//	}		//}		urlSelected( url, 0, 1, target );	}	//if(!innerNode.isNull() && innerNode.nodeType() == DOM::Node::TEXT_NODE) 	//{	//	d->m_selectionEnd = innerNode;	//	d->m_endOffset = event->offset();    //}    	// delete selection in case start and end position are at the same point	//if(d->m_selectionStart == d->m_selectionEnd && d->m_startOffset == d->m_endOffset) 	//{	//	d->m_selectionStart = 0;	//	d->m_selectionEnd = 0;	//	d->m_startOffset = 0;	//	d->m_endOffset = 0;	//	emitSelectionChanged();	//} 	//else 	//{		// we have to get to know if end is before start or not...	//	DOM::Node n = d->m_selectionStart;	//	d->m_startBeforeEnd = false;	//	if( d->m_selectionStart == d->m_selectionEnd ) 	//	{	//		if( d->m_startOffset < d->m_endOffset )	//			d->m_startBeforeEnd = true;	//	} 	//	else 	//	{	//		while(!n.isNull()) 	//		{	//			if(n == d->m_selectionEnd) 	//			{	//				d->m_startBeforeEnd = true;	//				break;	//			}	//			DOM::Node next = n.firstChild();	//			if(next.isNull()) 	//					next = n.nextSibling();	//			while( next.isNull() && !n.parentNode().isNull() ) 	//			{	//				n = n.parentNode();	//				next = n.nextSibling();	//			}	//			n = next;	//		}	//	}	//	if(!d->m_startBeforeEnd)	//	{	//		DOM::Node tmpNode = d->m_selectionStart;	//		int tmpOffset = d->m_startOffset;	//		d->m_selectionStart = d->m_selectionEnd;	//		d->m_startOffset = d->m_endOffset;	//		d->m_selectionEnd = tmpNode;	//		d->m_endOffset = tmpOffset;	//		d->m_startBeforeEnd = true;	//	}	//	// get selected text and paste to the clipboard	//	QString text = selectedText();	//	text.replace(QRegExp(QChar(0xa0)), " ");	//	QClipboard *cb = QApplication::clipboard();	//	cb->setText(text);	//	emitSelectionChanged();	//}}void MGHTMLPart::clear(){	if ( d->m_bCleared )		return;	d->m_bCleared = true;	d->m_bClearing = true;	d->m_mousePressNode = DOM::Node();//	if ( d->m_jscript )								// now we ignore js//		d->m_jscript->clear();	if ( d->m_doc )	{//		d->m_doc->detach();//		d->m_doc->deref();	}	d->m_doc = 0;	if ( d->m_view )		d->m_view->clear();	ConstFrameIt it = d->m_frames.begin();	ConstFrameIt end = d->m_frames.end();	for(; it != end; ++it )	{		if(it != NULL)		{			if ( (*it).m_view )			{				DestroyWindow((*it).m_view->getHwnd());				delete (*it).m_view;			}		}	}	d->m_frames.clear();	d->m_objects.clear();	d->m_baseURL = KURL();	d->m_baseTarget = QString::null;	d->m_bClearing = false;	d->m_frameNameId = 1;	d->m_bMousePressed = false;	d->m_totalImageCount = 0;	d->m_loadedImages = 0;}void MGHTMLPart::startAutoScroll(){	//connect(&d->m_scrollTimer, SIGNAL( timeout() ), this, SLOT( slotAutoScroll() ));	//d->m_scrollTimer.start(100, false);	return;}void MGHTMLPart::stopAutoScroll(){	//disconnect(&d->m_scrollTimer, SIGNAL( timeout() ), this, SLOT( slotAutoScroll() ));	//if (d->m_scrollTimer.isActive())	//	d->m_scrollTimer.stop();	return;}void MGHTMLPart::begin( const KURL &url, int xOffset, int yOffset ){	d->m_bCleared = false;	m_url = url;	if ( !m_url.isEmpty() )	{		KURL::List lst = KURL::split( m_url );		KURL baseurl;		if ( !lst.isEmpty() )			baseurl = *lst.begin();		setBaseURL(baseurl);		KURL title( baseurl );		title.setRef( QString::null );		title.setQuery( QString::null );//		emit setWindowCaption( title.url() );				// !!!!! 	}	//else//		emit setWindowCaption( i18n( "* Unknown *" ) );		// !!!!!	//	SetWindowText("Unknown *");							// !!!!! give a handle to it 	if(d->m_doc != NULL)		delete d->m_doc;	d->m_doc = new HTMLDocumentImpl( d->m_view );	d->m_doc->ref();	d->m_doc->attach( d->m_view );	d->m_doc->setURL( m_url.url() );//	d->m_doc->setRestoreState(args.docState);	d->m_doc->open();	d->m_view->resizeContents( 0, 0 );//	connect(d->m_doc,SIGNAL(finishedParsing()),this,SLOT(slotFinishedParsing()));//	emit d->m_extension->enableAction( "print", true );	d->m_bParsing = true;}void MGHTMLPart::setUserStyleSheet(const KURL &url){	d->m_userSheetUrl = DOMString();	d->m_userSheet = DOMString();	//new khtml::PartStyleSheetLoader(d, url.url(), d->m_doc ? d->m_doc->docLoader() : 0);	!!!!!!}// ---------------------------- do not think it any more <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<void MGHTMLPart::setUserStyleSheet(const QString &styleSheet){	d->m_userSheet = styleSheet;	d->m_userSheetUrl = DOMString();}void MGHTMLPart::khtmlMousePressEvent(int x, int y, DOM::Node Node, DOM::DOMString url){	DOM::Node innerNode = Node;	d->m_mousePressNode = innerNode;	if ( url != 0 )		d->m_strSelectedURL = url.string();	else		d->m_strSelectedURL = QString::null;	d->m_bMousePressed = true;	QString currentUrl = splitUrlTarget(d->m_strSelectedURL);}void MGHTMLPart::khtmlMouseMoveEvent(int x, int y, DOM::Node node, DOM::DOMString innernodeurl){	DOM::DOMString url = innernodeurl;	DOM::Node innerNode = node;	if( d->m_bMousePressed && (!d->m_strSelectedURL.isEmpty() || innerNode.elementId() == ID_IMG ) &&		d->m_bDnd && d->m_mousePressNode == innerNode ) 		return;	if ( !d->m_bMousePressed && url.length() && innerNode.elementId() == ID_IMG )	{		HTMLImageElementImpl *i = static_cast<HTMLImageElementImpl *>(innerNode.handle());		if ( i && i->isServerMap() )		{			khtml::RenderImage *r = static_cast<khtml::RenderImage *>(i->renderer());			if(r)			{				int absx, absy;				//int vx, vy;				r->absolutePosition(absx, absy);				//view()->contentsToViewport( absx, absy, vx, vy );				//int x(_mouse->x() - vx), y(_mouse->y() - vy);				QString target;				QString surl = splitUrlTarget(url.string(), &target);				d->m_overURL = surl + QString("?%1,%2").arg(x).arg(y);				overURL( d->m_overURL, target );				return;			}		}	}	if ( !d->m_bMousePressed && url.length() )	{		QString target;		QString surl = splitUrlTarget(url.string(), &target);		if ( d->m_overURL.isEmpty() )		{			d->m_overURL = surl;			overURL( d->m_overURL, target );		}		else if ( d->m_overURL != surl )		{			d->m_overURL = surl;			overURL( d->m_overURL, target );		}		return;	}	else if( d->m_overURL.length() && !url.length() )	{		overURL( QString::null, QString::null );		d->m_overURL = "";	}}PLOGFONT MGHTMLPart::getFont (const MGFont& font){	FontPair* fp;	for (unsigned int i = 0; i < m_fontpool.count(); i++ ) 	{		fp = m_fontpool [i];		if (fp->mgfont == font) 		{			return fp->logfont;		}	}	fp = new FontPair ();	fp->mgfont = font;	fp->logfont = MGFont::CreateFont (font);	m_fontpool.append (fp);	return fp->logfont;}KURL MGHTMLPart::completeURL(const QString &url, const QString &){	if (url.isEmpty())	{		return m_url;	}	if (d->m_baseURL.isEmpty())	{		KURL u ( m_url, url );		return u;	}	///else	{		KURL u ( d->m_baseURL, url );		return u;	}}void MGHTMLPart::write( const char *str, int len ){	if ( len == 0 )		return;	if ( len == -1 )		len = strlen( str );	d->m_doc->write(QString(str) );}void MGHTMLPart::write( const QString &str ){	if ( str.isNull() )		return;	d->m_doc->write( str );}void MGHTMLPart::end(){	d->m_doc->finishParsing();}bool MGHTMLPart::gotoAnchor( const QString &name ){	HTMLCollectionImpl *anchors = new HTMLCollectionImpl( d->m_doc, HTMLCollectionImpl::DOC_ANCHORS);	anchors->ref();	NodeImpl *n = anchors->namedItem(name);

⌨️ 快捷键说明

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