OSDN Git Service

machibbs support
authorikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sat, 5 Jun 2004 16:42:53 +0000 (16:42 +0000)
committerikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sat, 5 Jun 2004 16:42:53 +0000 (16:42 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@1133 56b19765-1e22-0410-a548-a0f45d66c51a

kita/src/libkita/access.cpp
kita/src/libkita/datinfo.cpp
kita/src/libkita/datinfo.h

index 81ec4ed..fb42f51 100644 (file)
@@ -159,6 +159,9 @@ void Access::slotThreadResult( KIO::Job* job )
     } else retstr = "";
 
     if ( responseCode() != 200 && responseCode() != 206 ) retstr = QString::null;
+    if ( Kita::boardType( m_thread->datURL() ) == Board_MachiBBS ) {
+        emit receiveData( m_threadData );
+    }
     emit finishLoad();
 }
 
@@ -184,7 +187,9 @@ void Access::slotReceiveThreadData( KIO::Job*, const QByteArray& data )
     }
     m_firstReceive = FALSE;
     m_threadData += cstr ;
-    emit receiveData( cstr );
+    if ( Kita::boardType( m_thread->datURL() ) != Board_MachiBBS ) {
+        emit receiveData( cstr );
+    }
 }
 
 
index fb6eed6..658d939 100644 (file)
@@ -123,8 +123,41 @@ void DatInfo::deleteAccessJob()
     }
 }
 
-
-
+void DatInfo::copyRawDataToBuffer_MachiBBS( const QString& rawData )
+{
+    QString data = Kita::ParseMisc::qcpToUnicode( rawData );
+    QStringList lines = QStringList::split( "\n", data );
+    QRegExp regexp( "<dt>.*<font color=\"#......\"><b> (.*) </b></font> .* (..../../..).* (..:..:..) ID:(.*)<br><dd>(.*)" );
+    QRegExp regexp2( "<dt>.*<a href=\"mailto:(.*)\"><b> (.*) </B></a> .* (..../../..).* (..:..:..) ID:(.*)<br><dd>(.*)" );
+    int resNum = 0;
+    for ( QStringList::iterator it = lines.begin(); it != lines.end(); ++it ) {
+        QString line = (*it);
+        if ( regexp.search( line ) != -1 ) {
+            resNum++;
+            QString name = regexp.cap( 1 );
+            QString date = regexp.cap( 2 );
+            QString time = regexp.cap( 3 );
+            QString id = regexp.cap( 4 );
+            QString message = regexp.cap( 5 );
+            QString datStr = name + "<><>" + date + " " + time + " ID:" + id
+            + "<>" + message + "<>";
+            setDat( datStr, resNum );
+        } else if ( regexp2.search( line ) != -1 ) {
+            resNum++;
+            QString mail = regexp2.cap( 1 );
+            QString name = regexp2.cap( 2 );
+            QString date = regexp2.cap( 3 );
+            QString time = regexp2.cap( 4 );
+            QString id = regexp2.cap( 5 );
+            QString message = regexp2.cap( 6 );
+            QString datStr = name + "<>" + mail + "<>" + date + " " + time + " ID:" + id
+            + "<>" + message + "<>";
+            setDat( datStr, resNum );
+        }
+    }
+    m_thread->setResNum( resNum );
+    KitaThreadInfo::setReadNum( m_url.prettyURL(), resNum );
+}
 
 /* copy raw lines to buffer */
 
@@ -134,6 +167,10 @@ void DatInfo::deleteAccessJob()
    to copy the last line to buffer.      */ /* private */
 void DatInfo::copyRawDataToBuffer(const QString& rawData)
 {
+    if ( Kita::boardType( m_url.url() ) == Board_MachiBBS ) {
+        copyRawDataToBuffer_MachiBBS( rawData );
+        return;
+    }
     QStringList linelist;
     int basenum = m_maxNum + 1;
     bool endIsLF = FALSE;
index a3bf322..fc64123 100644 (file)
@@ -207,6 +207,7 @@ class DatInfo : public QObject
 
        /* copy data */
        void copyRawDataToBuffer(const QString& rawData);
+       void copyRawDataToBuffer_MachiBBS(const QString& rawData);
        bool setDat( const QString& line, int num );
        
        /* HTML data */