From: ikemo Date: Sun, 19 Sep 2004 17:45:02 +0000 (+0000) Subject: >>239 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=4cbc8a65fd7b99339e8f708ed52747449b6e6583;p=kita%2Fkita.git >>239 git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@1386 56b19765-1e22-0410-a548-a0f45d66c51a --- diff --git a/kita/src/libkita/parsemisc.cpp b/kita/src/libkita/parsemisc.cpp index 06891ba..5855ae1 100644 --- a/kita/src/libkita/parsemisc.cpp +++ b/kita/src/libkita/parsemisc.cpp @@ -122,7 +122,7 @@ void ParseMisc::parseTITLEdat( unsigned int i; DOM::Element tmpelm; - QString linkstr,linkstr2,linkurl,tmpstr; + QString linkstr,linkstr2,linkurl,addstr,tmpstr; if( m_colonstr == QString::null ){ m_colonstr = utf8ToUnicode( KITAUTF8_COLON ); @@ -173,8 +173,10 @@ void ParseMisc::parseTITLEdat( DOM::Element namenode; linkurl = QString::null; - /* parse name strings */ + /* parse name & address strings */ parseBODYdatText(PARSEMODE_TEXT,str_name,linkstr); + if( str_address != QString::null ) parseBODYdatText( PARSEMODE_TEXT, str_address, addstr ); + else addstr = QString::null; tmpstr = " " + m_colonnamestr; switch( mode ){ @@ -195,7 +197,7 @@ void ParseMisc::parseTITLEdat( } /* show name with mail address, or show name only */ - if ( showMailAddress || str_address == QString::null ){ + if ( showMailAddress || addstr == QString::null ){ const QChar *chpt = linkstr.unicode(); unsigned int length = linkstr.length(); @@ -289,8 +291,8 @@ void ParseMisc::parseTITLEdat( case PARSEMODE_DOM: - if ( showMailAddress && str_address != QString::null ) { - tmpstr = QString( " [" ) + str_address + "]"; + if ( showMailAddress && addstr != QString::null ) { + tmpstr = QString( " [" ) + addstr + "]"; namenode.appendChild( hdoc.createTextNode( tmpstr ) ); } @@ -299,20 +301,20 @@ void ParseMisc::parseTITLEdat( case PARSEMODE_HTML: case PARSEMODE_TEXT: - if ( showMailAddress && str_address != QString::null ) { - tmpstr = QString( " [" ) + str_address + "]"; + if ( showMailAddress && addstr != QString::null ) { + tmpstr = QString( " [" ) + addstr + "]"; titletext += tmpstr; } break; } - } /* if ( showMailAddress || str_address == QString::null ) */ + } /* if ( showMailAddress || addstr == QString::null ) */ /* don't show mail address (i.e. showMailAddress == FALSE) */ else { - linkurl = QString( "mailto:" ) + str_address; + linkurl = QString( "mailto:" ) + addstr; switch(mode){ @@ -320,7 +322,7 @@ void ParseMisc::parseTITLEdat( tmpelm = namenode.appendChild( hdoc.createElement( "A" ) ); { tmpelm.setAttribute( "href", linkurl ); - tmpelm.setAttribute( "title", str_address ); + tmpelm.setAttribute( "title", addstr ); tmpelm.appendChild( hdoc.createTextNode( linkstr ) ); } break; @@ -328,7 +330,7 @@ void ParseMisc::parseTITLEdat( case PARSEMODE_HTML: titletext += ""; + titletext += " title=\"" + addstr + "\">"; titletext += linkstr; titletext +=""; @@ -1045,25 +1047,27 @@ bool ParseMisc::parseLink( linkstr = QString::null; linkurl = QString::null; - - int i = isEqual( cdat , "http://" ); - if(!i) i = isEqual( cdat , "ttp://" ); - if(!i) i = isEqual( cdat , "tp://" ); - if(!i) return FALSE; - linkurl = "http://"; - pos = 0; + QString retlinkstr = QString::null; + QString prefix = QString::null; - while ( cdat[ pos ] != '/' && pos < length ) linkstr += cdat[ pos++ ]; - linkstr += "//"; pos += 2; + if( isEqual( cdat , "http://" ) ) prefix = "http://"; + else if( isEqual( cdat , "ttp://" ) ) prefix = "ttp://"; + else if( isEqual( cdat , "tp://" ) ) prefix = "tp://"; + if( prefix == QString::null ) return FALSE; + + pos = prefix.length(); while ( cdat[ pos ] >= '!' && cdat[ pos ] <= '~' && cdat[ pos ] != ' ' && cdat[ pos ] != '<' && cdat[ pos ] != '>' && pos < length ){ - linkurl += cdat[ pos ]; - linkstr += cdat[ pos++ ]; + retlinkstr += cdat[ pos++ ]; } if ( pos > length ) return FALSE; - + + if( retlinkstr != QString::null ) parseBODYdatText( PARSEMODE_TEXT, retlinkstr, linkstr ); + linkurl = "http://" + linkstr; + linkstr = prefix + linkstr; + return TRUE; }