if ( responseCode() != 200 && responseCode() != 206 ) retstr = QString::null;
if ( Kita::boardType( m_url.url() ) == Board_MachiBBS ) {
+ // TODO: need to refactoring.
+ parse_machiBBS();
+ KURL url = m_url;
+ url.setProtocol( "k2ch" );
+ writeCacheData( url );
emit receiveData( m_threadData );
}
emit finishLoad();
}
+void Access::parse_machiBBS()
+{
+ QString ret;
+ QStringList lines = QStringList::split( "\n", m_threadData );
+ // pattern 1 (tokyo,kanagawa,...)
+ QRegExp regexp( "<dt>(.*) .*<font color=\"#......\"><b> (.*) </b></font> .* (..../../..).* (..:..:..) ID:(.*)<br><dd>(.*)" );
+ QRegExp regexp2( "<dt>(.*) .*<a href=\"mailto:(.*)\"><b> (.*) </B></a> .* (..../../..).* (..:..:..) ID:(.*)<br><dd>(.*)" );
+
+ // pattern 2 (hokkaido,...)
+ QRegExp regexp3( "<dt>(.*) .*<font color=\"#......\"><b> (.*) </b></font> .* (..../../..).* (..:..:..) ID:(.*)<font size=.>\\[ .*" );
+ QRegExp regexp4( " \\]</font><br><dd>(.*)" );
+ QRegExp regexp5( "<dt>(.*) .*<a href=\"mailto:(.*)\"><b> (.*) </B></a> .* (..../../..).* (..:..:..) ID:(.*)<font size=.>\\[ .*" );
+ for ( QStringList::iterator it = lines.begin(); it != lines.end(); ++it ) {
+ QString line = (*it);
+ if ( regexp.search( line ) != -1 ) {
+ int num = regexp.cap( 1 ).toInt();
+ QString name = regexp.cap( 2 );
+ QString date = regexp.cap( 3 );
+ QString time = regexp.cap( 4 );
+ QString id = regexp.cap( 5 );
+ QString message = regexp.cap( 6 );
+ QString datStr = name + "<><>" + date + " " + time + " ID:" + id
+ + "<>" + message + "<>\n";
+ ret += datStr;
+ } else if ( regexp2.search( line ) != -1 ) {
+ int num = regexp2.cap( 1 ).toInt();
+ QString mail = regexp2.cap( 2 );
+ QString name = regexp2.cap( 3 );
+ QString date = regexp2.cap( 4 );
+ QString time = regexp2.cap( 5 );
+ QString id = regexp2.cap( 6 );
+ QString message = regexp2.cap( 7 );
+ QString datStr = name + "<>" + mail + "<>" + date + " " + time + " ID:" + id
+ + "<>" + message + "<>\n";
+ ret += datStr;
+ } else if ( regexp3.search( line ) != -1 ) {
+ ++it;
+ if ( it == lines.end() ) break;
+ QString nextLine = (*it);
+ if ( regexp4.search( nextLine ) != -1 ) {
+ int num = regexp3.cap( 1 ).toInt();
+ QString name = regexp3.cap( 2 );
+ QString date = regexp3.cap( 3 );
+ QString time = regexp3.cap( 4 );
+ QString id = regexp3.cap( 5 );
+ QString message = regexp4.cap( 1 );
+ QString datStr = name + "<><>" + date + " " + time + " ID:" + id
+ + "<>" + message + "<>\n";
+ ret += datStr;
+ }
+ } else if ( regexp5.search( line ) != -1 ) {
+ ++it;
+ if ( it == lines.end() ) break;
+ QString nextLine = (*it);
+ if ( regexp4.search( nextLine ) != -1 ) {
+ int num = regexp5.cap( 1 ).toInt();
+ QString mail = regexp5.cap( 2 );
+ QString name = regexp5.cap( 3 );
+ QString date = regexp5.cap( 4 );
+ QString time = regexp5.cap( 5 );
+ QString id = regexp5.cap( 6 );
+ QString message = regexp4.cap( 1 );
+ QString datStr = name + "<>" + mail + "<>" + date + " " + time + " ID:" + id
+ + "<>" + message + "<>\n";
+ ret += datStr;
+ }
+ }
+ }
+ m_threadData = ret;
+}
+
// from netaccess.cpp
void qt_enter_modal( QWidget* widget );
void qt_leave_modal( QWidget* widget );
}
}
-void DatInfo::copyRawDataToBuffer_MachiBBS( const QString& rawData )
-{
- QString data = Kita::ParseMisc::qcpToUnicode( rawData );
- QStringList lines = QStringList::split( "\n", data );
- // pattern 1 (tokyo,kanagawa,...)
- QRegExp regexp( "<dt>(.*) .*<font color=\"#......\"><b> (.*) </b></font> .* (..../../..).* (..:..:..) ID:(.*)<br><dd>(.*)" );
- QRegExp regexp2( "<dt>(.*) .*<a href=\"mailto:(.*)\"><b> (.*) </B></a> .* (..../../..).* (..:..:..) ID:(.*)<br><dd>(.*)" );
-
- // pattern 2 (hokkaido,...)
- QRegExp regexp3( "<dt>(.*) .*<font color=\"#......\"><b> (.*) </b></font> .* (..../../..).* (..:..:..) ID:(.*)<font size=.>\\[ .*" );
- QRegExp regexp4( " \\]</font><br><dd>(.*)" );
- QRegExp regexp5( "<dt>(.*) .*<a href=\"mailto:(.*)\"><b> (.*) </B></a> .* (..../../..).* (..:..:..) ID:(.*)<font size=.>\\[ .*" );
- for ( QStringList::iterator it = lines.begin(); it != lines.end(); ++it ) {
- QString line = (*it);
- if ( regexp.search( line ) != -1 ) {
- int num = regexp.cap( 1 ).toInt();
- QString name = regexp.cap( 2 );
- QString date = regexp.cap( 3 );
- QString time = regexp.cap( 4 );
- QString id = regexp.cap( 5 );
- QString message = regexp.cap( 6 );
- QString datStr = name + "<><>" + date + " " + time + " ID:" + id
- + "<>" + message + "<>";
- setDat( datStr, num );
- } else if ( regexp2.search( line ) != -1 ) {
- int num = regexp2.cap( 1 ).toInt();
- QString mail = regexp2.cap( 2 );
- QString name = regexp2.cap( 3 );
- QString date = regexp2.cap( 4 );
- QString time = regexp2.cap( 5 );
- QString id = regexp2.cap( 6 );
- QString message = regexp2.cap( 7 );
- QString datStr = name + "<>" + mail + "<>" + date + " " + time + " ID:" + id
- + "<>" + message + "<>";
- setDat( datStr, num );
- } else if ( regexp3.search( line ) != -1 ) {
- ++it;
- if ( it == lines.end() ) break;
- QString nextLine = (*it);
- if ( regexp4.search( nextLine ) != -1 ) {
- int num = regexp3.cap( 1 ).toInt();
- QString name = regexp3.cap( 2 );
- QString date = regexp3.cap( 3 );
- QString time = regexp3.cap( 4 );
- QString id = regexp3.cap( 5 );
- QString message = regexp4.cap( 1 );
- QString datStr = name + "<><>" + date + " " + time + " ID:" + id
- + "<>" + message + "<>";
- setDat( datStr, num );
- }
- } else if ( regexp5.search( line ) != -1 ) {
- ++it;
- if ( it == lines.end() ) break;
- QString nextLine = (*it);
- if ( regexp4.search( nextLine ) != -1 ) {
- int num = regexp5.cap( 1 ).toInt();
- QString mail = regexp5.cap( 2 );
- QString name = regexp5.cap( 3 );
- QString date = regexp5.cap( 4 );
- QString time = regexp5.cap( 5 );
- QString id = regexp5.cap( 6 );
- QString message = regexp4.cap( 1 );
- QString datStr = name + "<>" + mail + "<>" + date + " " + time + " ID:" + id
- + "<>" + message + "<>";
- setDat( datStr, num );
- }
- }
- }
- m_thread->setResNum( m_maxNum );
- KitaThreadInfo::setReadNum( m_url.prettyURL(), m_maxNum );
-}
-
/* copy raw lines to buffer */
/* !! NOTICE!!
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;
+
+ // hack for machiBBS
+ if ( Kita::boardType( m_url.url() ) == Board_MachiBBS && m_lastLine == QString::null && m_access->responseCode() == 200 ) {
+ basenum = 1;
+ m_maxNum = 0;
+ }
+
bool endIsLF = FALSE;
if ( rawData != QString::null ){
it != linelist.end(); ++it, ++basenum ) {
if((*it) != QString::null){
QString line = ParseMisc::qcpToUnicode((*it));
+ qDebug("basenum = %d", basenum);
setDat(line,basenum);
}
}