OSDN Git Service

refactoring.
authorikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Thu, 1 Jan 2004 09:22:21 +0000 (09:22 +0000)
committerikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Thu, 1 Jan 2004 09:22:21 +0000 (09:22 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@763 56b19765-1e22-0410-a548-a0f45d66c51a

kita/src/libkita/thread.cpp
kita/src/libkita/thread.h

index e902ab5..95e6a01 100644 (file)
@@ -1,12 +1,12 @@
 /***************************************************************************
- *   Copyright (C) 2003 by Hideki Ikemoto                                  *
- *   ikemo@users.sourceforge.jp                                            *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- ***************************************************************************/
+*   Copyright (C) 2003 by Hideki Ikemoto                                  *
+*   ikemo@users.sourceforge.jp                                            *
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+***************************************************************************/
 
 #include "thread.h"
 
@@ -32,37 +32,18 @@ using namespace Kita;
 ThreadFactory* ThreadFactory::instance = 0;
 
 Thread::Thread()
-{
-}
+{}
 
 Thread::Thread( const QString& datURL, const QString& threadName )
-  : m_datURL( datURL ), m_threadName( threadName )
-{
-}
-
-Thread::Thread( const Thread& obj )
-{
-  m_datURL = obj.m_datURL;
-  m_threadName = obj.m_threadName;
-  setResNum( obj.resNum() );
-}
+        : m_datURL( datURL ), m_threadName( threadName )
+{}
 
 Thread::~Thread()
-{
-}
-
-Thread& Thread::operator=( const Thread& obj )
-{
-  m_datURL = obj.m_datURL;
-  m_threadName = obj.m_threadName;
-  setResNum( obj.resNum() );
-
-  return *this;
-}
+{}
 
 const QString& Thread::datURL() const
 {
-  return m_datURL;
+    return m_datURL;
 }
 
 const QString Thread::url() const
@@ -72,7 +53,7 @@ const QString Thread::url() const
 
 const QString Thread::datID() const
 {
-  return KURL( m_datURL ).filename().section( ".", 0, 0 );
+    return KURL( m_datURL ).filename().section( ".", 0, 0 );
 }
 
 int Thread::resNum() const
@@ -82,7 +63,7 @@ int Thread::resNum() const
 
 const QString& Thread::name() const
 {
-  return m_threadName;
+    return m_threadName;
 }
 
 void Thread::setResNum( int resNum )
@@ -92,154 +73,155 @@ void Thread::setResNum( int resNum )
 
 const QString& Thread::boardName() const
 {
-    Board* board = Board::getByURL( boardURL() );
+    Board * board = Board::getByURL( boardURL() );
     return board->name();
 }
 
 const QString Thread::boardURL() const
 {
-  return datToBoard( m_datURL );
+    return datToBoard( m_datURL );
 }
 
 const QString Thread::boardID() const
 {
-  return KURL( datToBoard( m_datURL ) ).fileName();
+    return KURL( datToBoard( m_datURL ) ).fileName();
 }
 
 const QString Thread::toXmlFragment() const
 {
-  QString ret;
+    QString ret;
 
-  ret += "<thread xmlns=\"http://kita.sourceforge.jp/ns/thread\">\n";
-  ret += QString("<daturl>%1</daturl>\n").arg( m_datURL );
-  ret += QString("<name>%1</name>\n").arg( m_threadName );
-  ret += QString("<resnum>%1</resnum>\n").arg( resNum() );
+    ret += "<thread xmlns=\"http://kita.sourceforge.jp/ns/thread\">\n";
+    ret += QString( "<daturl>%1</daturl>\n" ).arg( m_datURL );
+    ret += QString( "<name>%1</name>\n" ).arg( m_threadName );
+    ret += QString( "<resnum>%1</resnum>\n" ).arg( resNum() );
 
-  // FIXME: Board¥¯¥é¥¹¤«¤é¥³¥Ô¡¼
-  ret += "<board xmlns=\"http://kita.sourceforge.jp/ns/board\">\n";
-  ret += QString("<url>%1</url>\n").arg( boardURL() );
-  ret += QString("<name>%1</name>\n").arg( boardName() );
-  ret += "</board>\n";
+    // FIXME: Board¥¯¥é¥¹¤«¤é¥³¥Ô¡¼
+    ret += "<board xmlns=\"http://kita.sourceforge.jp/ns/board\">\n";
+    ret += QString( "<url>%1</url>\n" ).arg( boardURL() );
+    ret += QString( "<name>%1</name>\n" ).arg( boardName() );
+    ret += "</board>\n";
 
-  ret += "</thread>\n";
+    ret += "</thread>\n";
 
-  return ret;
+    return ret;
 }
 
 Thread Thread::fromXml( const QString& xml )
 {
-  Thread thread;
-
-  ThreadXmlParser parser;
-  QXmlSimpleReader reader;
-  QXmlInputSource source;
-  source.setData( xml );
-  reader.setContentHandler( &parser );
-  reader.parse( &source );
-
-  if( parser.isValid() ) {
-    thread = parser.getThread();
-  } else {
-    kdError() << "inValid" << endl;
-  }
-
-  return thread;
+    Thread thread;
+
+    ThreadXmlParser parser;
+    QXmlSimpleReader reader;
+    QXmlInputSource source;
+    source.setData( xml );
+    reader.setContentHandler( &parser );
+    reader.parse( &source );
+
+    if ( parser.isValid() ) {
+        thread = parser.getThread();
+    } else {
+        kdError() << "inValid" << endl;
+    }
+
+    return thread;
 }
 
+ThreadXmlParser::ThreadXmlParser()
+        : m_boardParser( 0 ), m_inBoard( false ), m_isValid( false ), m_inThread( false )
+{};
+
 bool ThreadXmlParser::startElement( const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts )
 {
-  if( m_inBoard ) {
-    m_boardParser->startElement( namespaceURI, localName, qName, atts );
-  } else if( m_inThread ) {
-    if( localName == "daturl" ) {
-    } else if( localName == "name" ) {
-    } else if( localName == "resnum" ) {
-    } else if( localName == "board" ) {
-      m_inBoard = true;
-      m_boardParser = new BoardXmlParser();
-      m_boardParser->startElement( namespaceURI, localName, qName, atts );
+    if ( m_inBoard ) {
+        m_boardParser->startElement( namespaceURI, localName, qName, atts );
+    } else if ( m_inThread ) {
+        if ( localName == "daturl" ) {} else if ( localName == "name" ) {} else if ( localName == "resnum" ) {} else if ( localName == "board" ) {
+            m_inBoard = true;
+            m_boardParser = new BoardXmlParser();
+            m_boardParser->startElement( namespaceURI, localName, qName, atts );
+        } else {
+            // error
+            return false;
+        }
     } else {
-      // error
-      return false;
+        if ( localName == "thread" ) {
+            m_inThread = true;
+        } else {
+            // error
+            return false;
+        }
     }
-  } else {
-    if( localName == "thread" ) {
-      m_inThread = true;
-    } else {
-      // error
-      return false;
-    }
-  }
 
-  return true;
+    return true;
 }
 
 // TODO: <resnum>¤ÏFavorites¤Ç¤Ï»È¤ï¤Ê¤¤¤³¤È¤Ë¤Ê¤Ã¤¿¤Î¤Çºï½ü¤¹¤ëɬÍפ¢¤ê¡£
 bool ThreadXmlParser::endElement( const QString& namespaceURI, const QString& localName, const QString& qName )
 {
-  if( localName == "board" ) {
-    m_inBoard = false;
-    m_boardParser->endElement( namespaceURI, localName, qName );
-
-    delete m_boardParser;
-    m_boardParser = 0;
-
-    // create board;
-  } else if( m_inBoard ) {
-    m_boardParser->endElement( namespaceURI, localName, qName );
-  } else if( localName == "thread" ) {
-    m_inThread = false;
-    m_thread = Kita::Thread( m_datUrlStr, m_threadName );
-    KitaThreadInfo::setResNum( m_datUrlStr, m_resNum );
-    m_isValid = true;
-    // create thread;
-  } else if( localName == "daturl" ) {
-    m_datUrlStr = m_characters;
-  } else if( localName == "name" ) {
-    m_threadName = m_characters;
-  } else if( localName == "resnum" ) {
-    m_resNum = m_characters.toInt();
-  } else {
-    // error
-    return false;
-  }
-  return true;
+    if ( localName == "board" ) {
+        m_inBoard = false;
+        m_boardParser->endElement( namespaceURI, localName, qName );
+
+        delete m_boardParser;
+        m_boardParser = 0;
+
+        // create board;
+    } else if ( m_inBoard ) {
+        m_boardParser->endElement( namespaceURI, localName, qName );
+    } else if ( localName == "thread" ) {
+        m_inThread = false;
+        m_thread = Kita::Thread( m_datUrlStr, m_threadName );
+        KitaThreadInfo::setResNum( m_datUrlStr, m_resNum );
+        m_isValid = true;
+        // create thread;
+    } else if ( localName == "daturl" ) {
+        m_datUrlStr = m_characters;
+    } else if ( localName == "name" ) {
+        m_threadName = m_characters;
+    } else if ( localName == "resnum" ) {
+        m_resNum = m_characters.toInt();
+    } else {
+        // error
+        return false;
+    }
+    return true;
 }
 
 bool ThreadXmlParser::characters( const QString& ch )
 {
-  if( m_inBoard ) {
-    m_boardParser->characters( ch );
-  } else {
-    m_characters = ch;
-  }
-  return true;
+    if ( m_inBoard ) {
+        m_boardParser->characters( ch );
+    } else {
+        m_characters = ch;
+    }
+    return true;
 }
 
 QString ThreadAccess::get()
 {
-  if ( KURL( m_thread.datURL() ).protocol() != "k2ch" ) {
-    KIO::SlaveConfig::self()->setConfigData("http",
-      KURL( m_thread.datURL() ).host(),
-      "UserAgent",
-      QString( "Monazilla/1.00 (Kita/%1)" ).arg( VERSION ) );
-  }
+    if ( KURL( m_thread.datURL() ).protocol() != "k2ch" ) {
+        KIO::SlaveConfig::self() ->setConfigData( "http",
+                KURL( m_thread.datURL() ).host(),
+                "UserAgent",
+                QString( "Monazilla/1.00 (Kita/%1)" ).arg( VERSION ) );
+    }
 
-  KIO::TransferJob* job = KIO::get(m_thread.datURL(), true, true);
-  m_currentJob = job;
+    KIO::TransferJob* job = KIO::get( m_thread.datURL(), true, true );
+    m_currentJob = job;
 
-  connect(job, SIGNAL(data(KIO::Job*, const QByteArray&)),
-          SLOT(slotReceiveThreadData(KIO::Job*, const QByteArray&)));
-  connect(job, SIGNAL(result(KIO::Job*)), SLOT(slotThreadResult(KIO::Job*)));
-  connect(job, SIGNAL(redirection(KIO::Job *, const KURL&) ), SLOT(slotRedirection(KIO::Job *, const KURL&) ) );
+    connect( job, SIGNAL( data( KIO::Job*, const QByteArray& ) ),
+             SLOT( slotReceiveThreadData( KIO::Job*, const QByteArray& ) ) );
+    connect( job, SIGNAL( result( KIO::Job* ) ), SLOT( slotThreadResult( KIO::Job* ) ) );
+    connect( job, SIGNAL( redirection( KIO::Job *, const KURL& ) ), SLOT( slotRedirection( KIO::Job *, const KURL& ) ) );
 
-  // use 'HTTP-Headers' metadata.
-  job->addMetaData("PropagateHttpHeader", "true");
+    // use 'HTTP-Headers' metadata.
+    job->addMetaData( "PropagateHttpHeader", "true" );
 
-  enter_loop();
+    enter_loop();
 
-  QCp932Codec codec;
-  return codec.toUnicode( m_threadData );
+    QCp932Codec codec;
+    return codec.toUnicode( m_threadData );
 }
 
 // from netaccess.cpp
@@ -248,41 +230,41 @@ void qt_leave_modal( QWidget* widget );
 
 void ThreadAccess::enter_loop()
 {
-  QWidget dummy( 0, 0, WType_Dialog | WShowModal );
-  dummy.setFocusPolicy( QWidget::NoFocus );
-  qt_enter_modal(&dummy);
-  qApp->enter_loop();
-  qt_leave_modal(&dummy);
+    QWidget dummy( 0, 0, WType_Dialog | WShowModal );
+    dummy.setFocusPolicy( QWidget::NoFocus );
+    qt_enter_modal( &dummy );
+    qApp->enter_loop();
+    qt_leave_modal( &dummy );
 }
 
-void ThreadAccess::slotRedirection(KIO::Job *, const KURL & newURL)
+void ThreadAccess::slotRedirection( KIO::Job *, const KURL & newURL )
 {
-  kdDebug() << "Redirected to newURL: " << newURL.url() << endl;
-  Kita::Board::setName( datToBoard( newURL.url() ), m_thread.boardName() );
-  m_thread = Kita::Thread( newURL.url() );
-  emit redirection( newURL.url() );
+    kdDebug() << "Redirected to newURL: " << newURL.url() << endl;
+    Kita::Board::setName( datToBoard( newURL.url() ), m_thread.boardName() );
+    m_thread = Kita::Thread( newURL.url() );
+    emit redirection( newURL.url() );
 }
 
 void ThreadAccess::slotReceiveThreadData( KIO::Job*, const QByteArray& data )
 {
-  QCString cstr(data.data(), data.size()+1);
-  m_threadData.append(cstr);
+    QCString cstr( data.data(), data.size() + 1 );
+    m_threadData.append( cstr );
 }
 
-void ThreadAccess::slotThreadResult(KIO::Job* job)
+void ThreadAccess::slotThreadResult( KIO::Job* job )
 {
-  m_currentJob = 0;
-  if(job->error()) {
-    job->showErrorDialog();
-  } else {
-    m_header = job->queryMetaData("HTTP-Headers");
-  }
-  qApp->exit_loop();
+    m_currentJob = 0;
+    if ( job->error() ) {
+        job->showErrorDialog();
+    } else {
+        m_header = job->queryMetaData( "HTTP-Headers" );
+    }
+    qApp->exit_loop();
 }
 
 void ThreadAccess::killJob()
 {
-  if( m_currentJob ) m_currentJob->kill();
+    if ( m_currentJob ) m_currentJob->kill();
 }
 
 int ThreadAccess::serverTime()
@@ -290,40 +272,40 @@ int ThreadAccess::serverTime()
     // parse HTTP headers
     QStringList headerList = QStringList::split( "\n", m_header );
     QRegExp regexp( "Date: (...), (..) (...) (....) (..:..:..) .*" );
-    QString dateStr = headerList.grep(regexp)[0];
-    if( regexp.search(dateStr) == -1 ) {
+    QString dateStr = headerList.grep( regexp ) [ 0 ];
+    if ( regexp.search( dateStr ) == -1 ) {
         // invalid date format
         return QDateTime::currentDateTime().toTime_t();
     } else {
         // I hate this format ;p
-        QString usLocalDateStr = regexp.cap(1) + " " + regexp.cap(3) + " " +
-                                 regexp.cap(2) + " " + regexp.cap(5) + " " +
-                                 regexp.cap(4);
+        QString usLocalDateStr = regexp.cap( 1 ) + " " + regexp.cap( 3 ) + " " +
+                                 regexp.cap( 2 ) + " " + regexp.cap( 5 ) + " " +
+                                 regexp.cap( 4 );
 
         // 1970/01/01 00:00:00 GMT
-        QDateTime zeroTime(QDate(1970, 1, 1), QTime(0, 0));
-        return zeroTime.secsTo(QDateTime::fromString(usLocalDateStr));
+        QDateTime zeroTime( QDate( 1970, 1, 1 ), QTime( 0, 0 ) );
+        return zeroTime.secsTo( QDateTime::fromString( usLocalDateStr ) );
     }
 }
 
 void ThreadFactory::insertThread( Thread& thread )
 {
-  if( ! instance ) {
-    instance = new ThreadFactory();
-  }
+    if ( ! instance ) {
+        instance = new ThreadFactory();
+    }
 
-  Thread* new_thread = new Thread( thread.datURL(), thread.name() );
-  KitaThreadInfo::setResNum( thread.datURL(), thread.resNum() );
-  instance->m_dict.insert( thread.datURL(), new_thread );
+    Thread* new_thread = new Thread( thread.datURL(), thread.name() );
+    KitaThreadInfo::setResNum( thread.datURL(), thread.resNum() );
+    instance->m_dict.insert( thread.datURL(), new_thread );
 }
 
 Thread* ThreadFactory::getThread( QString& datURL )
 {
-  if( ! instance ) {
-    instance = new ThreadFactory();
-  }
+    if ( ! instance ) {
+        instance = new ThreadFactory();
+    }
 
-  return instance->m_dict[ datURL ];
+    return instance->m_dict[ datURL ];
 }
 
 #include "thread.moc"
index c31db22..d3080b9 100644 (file)
 /***************************************************************************
- *   Copyright (C) 2003 by Hideki Ikemoto                                  *
- *   ikemo@users.sourceforge.jp                                            *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- ***************************************************************************/
+*   Copyright (C) 2003 by Hideki Ikemoto                                  *
+*   ikemo@users.sourceforge.jp                                            *
+*                                                                         *
+*   This program is free software; you can redistribute it and/or modify  *
+*   it under the terms of the GNU General Public License as published by  *
+*   the Free Software Foundation; either version 2 of the License, or     *
+*   (at your option) any later version.                                   *
+***************************************************************************/
 
 #ifndef KITATHREAD_H
 #define KITATHREAD_H
 
-#include <kurl.h>
-
 #include <qobject.h>
 #include <qxml.h>
 #include <qdict.h>
 
-namespace KIO {
-  class Job;
+namespace KIO
+{
+    class Job;
 };
 
-namespace Kita {
-
-/**
-@author Hideki Ikemoto
-*/
-  class Board;
-  class BoardXmlParser;
-
-  class Thread
-  {
-    QString m_datURL;
-    QString m_threadName;
-  public:
-    Thread( const QString& datURL, const QString& threadName = QString::null );
-    Thread();
-    Thread( const Thread& obj );
-    ~Thread();
-    Thread& operator=( const Thread& obj );
-    const QString& datURL() const;
-    const QString url() const;
-    const QString datID() const;
-    int resNum() const;
-    const QString& name() const;
-    void setName(const QString& name) { m_threadName = name; }
-    void setResNum(int resNum);
-    const QString& boardName() const;
-    const QString boardURL() const;
-    const QString boardID() const;
-
-    const QString toXmlFragment() const;
-    static Thread fromXml( const QString& xml );
-  };
-
-  class ThreadFactory
-  {
-  public:
-    static void insertThread( Thread& thread );
-    static Thread* getThread( QString& datURL );
-  private:
-    ThreadFactory() {};
-    ~ThreadFactory() {};
-    static ThreadFactory* instance;
-    QDict<Thread> m_dict;
-  };
-
-  class ThreadXmlParser : public QXmlDefaultHandler
-  {
-    QString m_datUrlStr;
-    QString m_threadName;
-    int m_resNum;
-    Thread m_thread;
-    BoardXmlParser* m_boardParser;
-
-    QString m_characters;
-
-    bool m_inBoard;
-    bool m_isValid;
-    bool m_inThread;
-  public:
-    ThreadXmlParser() : m_boardParser(0), m_inBoard(false), m_isValid(false), m_inThread(false) {};
-    ~ThreadXmlParser() {};
-    bool startElement( const QString& namespaceURI, const QString& localName, const QString& qName, const QXmlAttributes& atts );
-    bool endElement( const QString& namespaceURI, const QString& localName, const QString& qName );
-    bool characters( const QString& ch );
-    bool isValid() const { return m_isValid; }
-    Thread getThread() const { return m_thread; }
-  };
-
-  class ThreadAccess : public QObject {
-    Q_OBJECT
-
-    Thread m_thread;
-    KIO::Job* m_currentJob;
-    QCString m_threadData;
-    QString m_header;
-  public:
-    ThreadAccess( const Thread& thread ) : m_thread(thread) {};
-    ~ThreadAccess() {};
-    QString get();
-    void killJob();
-    int serverTime();
-  private:
-    void enter_loop();
-  private slots:
-    void slotReceiveThreadData( KIO::Job* job, const QByteArray& data );
-    void slotRedirection( KIO::Job* job, const KURL& );
-    void slotThreadResult( KIO::Job* job );
-  signals:
-    void redirection( const QString& );
-  };
+class KURL;
+
+namespace Kita
+{
+    /**
+    @author Hideki Ikemoto
+    */
+    class Board;
+    class BoardXmlParser;
+
+    class Thread
+    {
+    public:
+        Thread( const QString& datURL, const QString& threadName = QString::null );
+        Thread();
+        ~Thread();
+
+        const QString& datURL() const;
+        const QString url() const;
+        const QString datID() const;
+        void setName( const QString& name ) { m_threadName = name; }
+        const QString& name() const;
+        void setResNum( int resNum );
+        int resNum() const;
+        const QString& boardName() const;
+        const QString boardURL() const;
+        const QString boardID() const;
+
+        const QString toXmlFragment() const;
+        static Thread fromXml( const QString& xml );
+
+    private:
+        QString m_datURL;
+        QString m_threadName;
+    };
+
+    class ThreadFactory
+    {
+    public:
+        static void insertThread( Thread& thread );
+        static Thread* getThread( QString& datURL );
+
+    private:
+        static ThreadFactory* instance;
+        QDict<Thread> m_dict;
+
+        ThreadFactory() {};
+        ~ThreadFactory() {};
+    };
+
+    class ThreadXmlParser : public QXmlDefaultHandler
+    {
+    public:
+        ThreadXmlParser();
+        ~ThreadXmlParser() {};
+        bool startElement( const QString& namespaceURI,
+                           const QString& localName,
+                           const QString& qName,
+                           const QXmlAttributes& atts );
+        bool endElement( const QString& namespaceURI,
+                         const QString& localName,
+                         const QString& qName );
+        bool characters( const QString& ch );
+        bool isValid() const { return m_isValid; }
+        Thread getThread() const { return m_thread; }
+
+    private:
+        QString m_datUrlStr;
+        QString m_threadName;
+        int m_resNum;
+        Thread m_thread;
+        BoardXmlParser* m_boardParser;
+
+        QString m_characters;
+
+        bool m_inBoard;
+        bool m_isValid;
+        bool m_inThread;
+    };
+
+    class ThreadAccess : public QObject
+    {
+        Q_OBJECT
+
+    public:
+        ThreadAccess( const Thread& thread ) : m_thread( thread ) {};
+        ~ThreadAccess() {};
+
+        QString get();
+        void killJob();
+        int serverTime();
+
+    private:
+        void enter_loop();
+
+        Thread m_thread;
+        KIO::Job* m_currentJob;
+        QCString m_threadData;
+        QString m_header;
+
+    private slots:
+        void slotReceiveThreadData( KIO::Job* job, const QByteArray& data );
+        void slotRedirection( KIO::Job* job, const KURL& );
+        void slotThreadResult( KIO::Job* job );
+
+    signals:
+        void redirection( const QString& );
+    };
 };
 
 #endif