OSDN Git Service

>>239
authorikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sun, 19 Sep 2004 17:45:02 +0000 (17:45 +0000)
committerikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sun, 19 Sep 2004 17:45:02 +0000 (17:45 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@1386 56b19765-1e22-0410-a548-a0f45d66c51a

kita/src/libkita/parsemisc.cpp

index 06891ba..5855ae1 100644 (file)
@@ -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 += "<a href=\"" + linkurl;
-           titletext += " title=\"" + str_address + "\">";
+           titletext += " title=\"" + addstr + "\">";
            titletext += linkstr;
            titletext +="</a>";
 
@@ -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;
 }