OSDN Git Service

>>935
authorikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sat, 26 Jun 2004 06:49:14 +0000 (06:49 +0000)
committerikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sat, 26 Jun 2004 06:49:14 +0000 (06:49 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@1195 56b19765-1e22-0410-a548-a0f45d66c51a

kita/src/kita.cpp
kita/src/libkita/datinfo.cpp
kita/src/libkita/datinfo.h
kita/src/libkita/datmanager.cpp
kita/src/libkita/datmanager.h
kita/src/libkita/parsemisc.cpp
kita/src/libkita/thread.cpp
kita/src/libkita/thread.h
kita/src/part/kitahtmlpart.cpp
kita/src/part/kitahtmlpart.h
kita/src/part/kitanavi.cpp

index 727275f..b513401 100644 (file)
@@ -29,6 +29,7 @@
 #include <qdragobject.h>
 #include <qtextcodec.h>
 #include <qevent.h>
+#include <qregexp.h>
 
 #include <klineedit.h>
 #include <kglobal.h>
index 6f2d3ef..36c3d5c 100644 (file)
@@ -37,9 +37,10 @@ using namespace Kita;
 DatInfo::DatInfo( const KURL& url ) : m_access ( 0 )
 {
     QString refstr;
-    m_url = Kita::ParseMisc::parseURL( url, refstr);
-    m_thread = Kita::Thread::getByURL( m_url.prettyURL() ); 
+    m_datURL = Kita::ParseMisc::parseURL( url, refstr);
+    m_thread = Kita::Thread::getByURLNew( m_datURL ); 
 
+    /* japanese strings */
     m_spacestr = ". ";
     m_framestr1 = ParseMisc::utf8ToUnicode( KITAUTF8_FRAME1 ); /* |  */
     m_framestr2 = ParseMisc::utf8ToUnicode( KITAUTF8_FRAME2 ); /* |- */
@@ -76,7 +77,7 @@ void DatInfo::initPrivate(){
     m_lock = 0;
     m_nowLoading = FALSE;
     m_lastLine = QString::null;
-    m_kokoyonNum = KitaThreadInfo::readNum( m_url.prettyURL() );
+    m_kokoyonNum = KitaThreadInfo::readNum( m_datURL.prettyURL() );
     
     /* clear & resize ResDatVec */
     RESDAT resdat;
@@ -88,7 +89,7 @@ void DatInfo::initPrivate(){
     resetAbonePrivate();
     
     /* create dat loader */
-    m_access = new Kita::Access( m_thread->datURL() );
+    m_access = new Kita::Access( m_datURL );
     
     connect( m_access, SIGNAL( receiveData( const QString& ) ),
             SLOT( slotReceiveData( const QString& ) ) );
@@ -110,6 +111,7 @@ void DatInfo::resetResDat(RESDAT& resdat){
     resdat.anclist.clear();
     resdat.checkAbone = FALSE;
     resdat.abone = FALSE;
+    resdat.marked = FALSE;
 }
 
 
@@ -136,7 +138,7 @@ void DatInfo::copyRawDataToBuffer(const QString& rawData)
     int basenum = m_maxNum + 1;
     
     // hack for machiBBS
-    if ( Kita::boardType( m_url.url() ) == Board_MachiBBS && m_lastLine == QString::null && m_access->responseCode() == 200 ) {
+    if ( Kita::boardType( m_datURL.url() ) == Board_MachiBBS && m_lastLine == QString::null && m_access->responseCode() == 200 ) {
         basenum = 1;
         m_maxNum = 0;
     }
@@ -187,8 +189,8 @@ void DatInfo::copyRawDataToBuffer(const QString& rawData)
     }
 
     /* update thread info */
-    m_thread->setResNum( m_maxNum );
-    KitaThreadInfo::setReadNum( m_url.prettyURL(), m_maxNum );
+    if( m_thread ) m_thread->setResNum( m_maxNum );
+    KitaThreadInfo::setReadNum( m_datURL.prettyURL(), m_maxNum );
 }
 
 
@@ -226,7 +228,7 @@ const KURL& DatInfo::url()
 {
     QMutexLocker locker( &m_mutex );
     
-    return m_url;
+    return m_datURL;
 }
 
 
@@ -322,8 +324,9 @@ bool DatInfo::deleteCache(QWidget* parent){
    QMutexLocker locker( &m_mutex );
    if ( m_access == NULL ) return FALSE;
    if ( m_nowLoading ) return FALSE;
-   
-   int ret = Kita::Access::deleteLog( m_thread, parent );
+
+   bool ret = FALSE;
+   if( !m_thread ) ret = Kita::Access::deleteLog( m_thread, parent );
    if(ret) initPrivate();
 
    return ret;
@@ -439,6 +442,16 @@ const QString& DatInfo::getName( int num )
     return m_resDatVec[ num ].name;
 }
 
+/* plain (parsed) strings of name  */
+QString DatInfo::getPlainName( int num )
+{
+    QMutexLocker locker( &m_mutex );
+    if(!parseDat(num)) return QString::null;
+
+    return m_resDatVec[ num ].parsedName;
+}
+
+
 /* plain (parsed) strings of body  */
 QString DatInfo::getPlainBody(int num)
 {
@@ -910,7 +923,7 @@ void DatInfo::setKokoyonNum(int num)
     num = QMIN(num, m_maxNum);
 
     m_kokoyonNum = num;
-    KitaThreadInfo::setReadNum( m_url.prettyURL(), num );    
+    KitaThreadInfo::setReadNum( m_datURL.prettyURL(), num );    
 }
 
 /* public */
@@ -967,17 +980,20 @@ bool DatInfo::checkWord(QStringList& stlist, /* list of keywords */
 {
     QMutexLocker locker( &m_mutex );
     if(!parseDat(num)) return FALSE;
-    
-    QString str_text = m_resDatVec[ num ].linestr;
+
+    QString str_text = m_resDatVec[ num ].body;
     
     for ( QStringList::iterator it = stlist.begin(); it != stlist.end(); ++it ) {
 
+       QRegExp regexp( (*it) );
+       regexp.setCaseSensitive( FALSE );
+
         if ( checkOR ) { /* OR */
-            if ( str_text.find( ( *it ), 0, FALSE ) != -1 ) {
+            if ( str_text.find( regexp, 0 ) != -1 ) {
                 return TRUE;
             }
         } else { /* AND */
-            if ( str_text.find( ( *it ), 0, FALSE ) == -1 ) return FALSE;
+            if ( str_text.find( regexp, 0 ) == -1 ) return FALSE;
         }
     }
 
@@ -986,6 +1002,24 @@ bool DatInfo::checkWord(QStringList& stlist, /* list of keywords */
     return TRUE;
 }
 
+/* public */
+bool DatInfo::isMarked( int num )
+{
+    QMutexLocker locker( &m_mutex );
+
+    return m_resDatVec[ num ].marked;
+}
+
+
+/* public */
+void DatInfo::setMark( int num, bool mark )
+{
+    QMutexLocker locker( &m_mutex );
+
+    m_resDatVec[ num ].marked = mark;
+}
+
+
 
 
 /*--------------------------------*/
@@ -1042,7 +1076,7 @@ bool DatInfo::checkAbonePrivate(int num)
        checktmp = checkAboneCore(m_resDatVec[ num ].id,KitaConfig::aboneIDList());
 
     if(!checktmp && m_aboneByName )
-           checktmp = checkAboneCore(m_resDatVec[ num ].name,KitaConfig::aboneNameList());
+           checktmp = checkAboneCore(m_resDatVec[ num ].parsedName,KitaConfig::aboneNameList());
 
     if(!checktmp && m_aboneByBody )
            checktmp = checkAboneCore(m_resDatVec[ num ].body,KitaConfig::aboneWordList());
@@ -1095,60 +1129,6 @@ bool DatInfo::checkAboneCore(const QString& str, QStringList& strlist)
 }
 
 
-/*-----------------------------------------*/
-/* Wrapper functions for Thread class      */
-
-/* they are public */
-
-const QString DatInfo::thread_datID(){
-
-    QMutexLocker locker( &m_mutex );
-
-    return m_thread->datID();
-
-}
-
-const QString& DatInfo::thread_name(){
-
-    QMutexLocker locker( &m_mutex );
-
-    return m_thread->name();
-
-}
-
-const QString& DatInfo::thread_boardName(){
-
-    QMutexLocker locker( &m_mutex );
-
-    return m_thread->boardName();
-
-}
-
-const QString DatInfo::thread_url(){
-
-    QMutexLocker locker( &m_mutex );
-
-    return m_thread->url();
-
-}
-
-const QString DatInfo::thread_boardURL(){
-
-    QMutexLocker locker( &m_mutex );
-
-    return m_thread->boardURL();
-
-}
-
-const QString DatInfo::thread_boardID(){
-
-    QMutexLocker locker( &m_mutex );
-
-    return m_thread->boardID();
-
-}
-
-
 
 /*---------------------------------------*/
 /* simple parsing function               */
@@ -1174,7 +1154,7 @@ bool DatInfo::parseDat( int num ){
     /* get subject */
     if ( m_subject == QString::null && tmpstr != QString::null ){
        m_subject = tmpstr;
-       Kita::Thread::setName( m_url.prettyURL(), m_subject );
+       Kita::Thread::setName( m_datURL.prettyURL(), m_subject );
     }
 
     return TRUE;
index a3bf322..8792e63 100644 (file)
@@ -63,7 +63,10 @@ struct RESDAT{
 
      bool broken; /* This dat is broken */
 
+    bool marked;
+
      QString name;
+     QString parsedName;    
      QString address;
      QString body;
      QString id;
@@ -103,7 +106,7 @@ class DatInfo : public QObject
       /* basic information */
       int m_maxNum;
        QString m_rawData;
-       KURL m_url;
+       KURL m_datURL;
        QString m_subject;
        bool m_broken;
        ResDatVec m_resDatVec;
@@ -159,6 +162,7 @@ class DatInfo : public QObject
        const QString& getId( int num );
        const QString& getName( int num );
        const QString& getBody( int num );      
+       QString getPlainName(int num);
        QString getPlainBody(int num);
        QString getPlainTitle(int num);
 
@@ -184,18 +188,12 @@ class DatInfo : public QObject
        bool isResBroken(int num);
        bool checkID(const QString& strid, int num );
        bool checkWord(QStringList& stlist, int num, bool checkOR);
-
+       bool isMarked( int num );
+       void setMark( int num, bool mark );     
+       
        /* abone check */
        bool checkAbone(int num);
        void resetAbone();
-       
-       /* Wrapper functions for Thread */
-       const QString  thread_datID();
-       const QString& thread_name();
-       const QString& thread_boardName();
-       const QString  thread_url();
-       const QString  thread_boardURL();
-       const QString  thread_boardID();
 
        /*-------------------------*/
 
index c96d273..d396b8a 100644 (file)
 #include <qmutex.h>
 #include <qstringlist.h>
 
+#include "thread.h"
+#include "parsemisc.h"
 #include "datmanager.h"
 #include "datinfo.h"
+#include "board.h"
+#include "kita_misc.h"
 #include "kita-utf8.h"
 #include "kita-utf16.h"
 
@@ -261,18 +265,8 @@ void DatManager::unlock( const KURL& url )
 }
 
 
-
-/* public */
-const QString& DatManager::getSubject( const KURL& url )
-{
-    QMutexLocker locker( &m_mutex );
-
-    DatInfo * datInfo = getDatInfo( url );
-    if ( datInfo == NULL ) return QString::null;
-
-    return datInfo->getSubject();
-}
-
+/*--------------------------------------*/
+/* string data */
 
 /* public */
 const QString& DatManager::getRawDat( const KURL& url )
@@ -335,6 +329,17 @@ const QString& DatManager::getBody( const KURL& url, int num )
 }
 
 
+/* public */
+QString DatManager::getPlainName( const KURL& url, int num )
+{
+    QMutexLocker locker( &m_mutex );
+    
+    DatInfo * datInfo = getDatInfo( url );
+    if ( datInfo == NULL ) return QString::null;
+
+    return datInfo->getPlainName(num);
+}
+
 
 /* public */
 QString DatManager::getPlainBody( const KURL& url, int num )
@@ -360,6 +365,80 @@ QString DatManager::getPlainTitle( const KURL& url, int num )
 }
 
 
+/* get URL of thread from URL of dat file. */ /* public */
+const QString DatManager::threadURL( const KURL& url )
+{
+    QMutexLocker locker( &m_mutex );
+
+    KURL datURL =  Kita::ParseMisc::parseURLonly( url );
+    return Kita::datToThread( datURL.prettyURL() );
+}
+
+
+/* get name (i.e. subject ) of thread from URL of dat file. */ /* public */
+const QString& DatManager::threadName( const KURL& url )
+{
+    QMutexLocker locker( &m_mutex );
+
+    KURL datURL =  Kita::ParseMisc::parseURLonly( url );    
+    Kita::Thread* thread = Kita::Thread::getByURLNew( datURL );
+
+    if( thread == NULL ){
+       
+       /* get subject from DatInfo */
+       DatInfo * datInfo = getDatInfo( url );
+       if ( datInfo == NULL ) return QString::null;
+       return datInfo->getSubject();
+    }
+
+    return thread->name();
+}
+
+
+/* public */
+const QString DatManager::threadID( const KURL& url )
+{
+    QMutexLocker locker( &m_mutex );
+
+    KURL datURL =  Kita::ParseMisc::parseURLonly( url );
+    return datURL.filename().section( ".", 0, 0 );
+}
+
+
+/* get URL of board from URL of dat file. */ /* public */
+const QString DatManager::boardURL( const KURL& url )
+{
+    QMutexLocker locker( &m_mutex );
+    
+    KURL datURL =  Kita::ParseMisc::parseURLonly( url );
+    return Kita::datToBoard( datURL.prettyURL() );
+}
+
+
+/* get name of board from URL of dat file. */ /* public */
+const QString& DatManager::boardName( const KURL& url )
+{
+    QMutexLocker locker( &m_mutex );
+
+    KURL datURL =  Kita::ParseMisc::parseURLonly( url );
+    QString bdURL = Kita::datToBoard( datURL.prettyURL() );
+    return Kita::Board::getName( bdURL );
+}
+
+
+/* public */
+const QString DatManager::boardID( const KURL& url )
+{
+    QMutexLocker locker( &m_mutex );
+    
+    KURL datURL =  Kita::ParseMisc::parseURLonly( url );
+    return KURL( Kita::datToBoard( datURL.prettyURL() ) ).fileName();
+}
+
+
+/*---------------------------------------*/
+/* HTML data */
+
 /* public */
 QString DatManager::getHtml( const KURL& url, int startnum, int endnum )
 {
@@ -549,94 +628,53 @@ bool DatManager::checkWord(const KURL& url,
 
 
 /* public */
-bool DatManager::checkAbone(const KURL& url, int num)
+bool DatManager::isMarked( const KURL& url, int num )
 {
     QMutexLocker locker( &m_mutex );
     
-    DatInfo* datInfo = getDatInfo(url);
-    if(datInfo == NULL) return FALSE;
+    DatInfo * datInfo = getDatInfo( url );
+    if ( datInfo == NULL ) return FALSE;
 
-    return datInfo->checkAbone(num);
+    return datInfo->isMarked( num );
 }
 
 
 /* public */
-void DatManager::resetAbone(const KURL& url)
+void DatManager::setMark( const KURL& url, int num, bool mark )
 {
     QMutexLocker locker( &m_mutex );
     
-    DatInfo* datInfo = getDatInfo(url);
-    if(datInfo == NULL) return;
-
-    datInfo->resetAbone();
-}
-
-
-
-/*-----------------------------------*/
-/* Wrapper functions for Thread class*/
-
-/* They ara public */
-
-const QString DatManager::thread_datID( const KURL& url )
-{
-    QMutexLocker locker( &m_mutex );
-    
-    DatInfo* datInfo = getDatInfo(url);
-    if(datInfo == NULL) return QString::null;
+    DatInfo * datInfo = getDatInfo( url );
+    if ( datInfo == NULL ) return;
 
-    return datInfo->thread_datID();
+    datInfo->setMark( num, mark );
 }
 
-const QString& DatManager::thread_name( const KURL& url )
-{
-    QMutexLocker locker( &m_mutex );
-    
-    DatInfo* datInfo = getDatInfo(url);
-    if(datInfo == NULL) return QString::null;
-
-    return datInfo->thread_name();
-}
 
-const QString& DatManager::thread_boardName( const KURL& url )
+/* public */
+bool DatManager::checkAbone(const KURL& url, int num)
 {
     QMutexLocker locker( &m_mutex );
     
     DatInfo* datInfo = getDatInfo(url);
-    if(datInfo == NULL) return QString::null;
+    if(datInfo == NULL) return FALSE;
 
-    return datInfo->thread_boardName();
+    return datInfo->checkAbone(num);
 }
 
-const QString DatManager::thread_url( const KURL& url )
-{
-    QMutexLocker locker( &m_mutex );
-    
-    DatInfo* datInfo = getDatInfo(url);
-    if(datInfo == NULL) return QString::null;
-
-    return datInfo->thread_url();
-}
 
-const QString DatManager::thread_boardURL( const KURL& url )
+/* public */
+void DatManager::resetAbone(const KURL& url)
 {
     QMutexLocker locker( &m_mutex );
     
     DatInfo* datInfo = getDatInfo(url);
-    if(datInfo == NULL) return QString::null;
+    if(datInfo == NULL) return;
 
-    return datInfo->thread_boardURL();
+    datInfo->resetAbone();
 }
 
-const QString DatManager::thread_boardID( const KURL& url )
-{
-    QMutexLocker locker( &m_mutex );
-    
-    DatInfo* datInfo = getDatInfo(url);
-    if(datInfo == NULL) return QString::null;
 
-    return datInfo->thread_boardID();
-}
 
 
 
index 96ca8f3..d7cb8af 100644 (file)
@@ -54,15 +54,24 @@ class DatManager
        static void unlock( const KURL& url );  
 
        /* string data */
-       static const QString& getSubject( const KURL& url );
        static const QString& getRawDat( const KURL& url );     
        static const QString& getDat( const KURL& url, int num );
        static const QString& getId( const KURL& url, int num );
        static const QString& getName( const KURL& url, int num );
        static const QString& getBody( const KURL& url, int num );      
+       static QString getPlainName( const KURL& url, int num );
        static QString getPlainBody( const KURL& url, int num );
        static QString getPlainTitle( const KURL& url, int num );
 
+       static const QString  threadURL( const KURL& url );
+       static const QString& threadName( const KURL& url );/* = subject of thread */
+       static const QString  threadID( const KURL& url );
+
+       static const QString  boardURL( const KURL& url );
+       static const QString& boardName( const KURL& url );
+       static const QString  boardID( const KURL& url );
+
+       
        /* HTML data */
        static QString getHtml( const KURL& url, int startnum, int endnum);
        static QString getHtmlByID(const KURL& url, const QString& strid, int &count );
@@ -85,19 +94,22 @@ class DatManager
        static bool isResBroken( const KURL& url , int num);
        static bool checkID(const KURL& url, const QString& strid, int num );
        static bool checkWord(const KURL& url,QStringList& stlist, int num, bool checkOR);
+       static bool isMarked( const KURL& url, int num );
+       static void setMark( const KURL& url, int num, bool mark );     
+
 
        /* abone check */
        static bool checkAbone(const KURL& url, int num);
        static void resetAbone(const KURL& url );
-       
-       /* Wrapper functions for Thread class */
-       static const QString  thread_datID( const KURL& url );
-       static const QString& thread_name( const KURL& url );
-       static const QString& thread_boardName( const KURL& url );
-       static const QString  thread_url( const KURL& url );
-       static const QString  thread_boardURL( const KURL& url );
-       static const QString  thread_boardID( const KURL& url );
 
+       /* obsolete. Don't use them. */
+       static const QString  thread_url( const KURL& url ){return threadURL(url);}
+       static const QString& thread_name( const KURL& url ){return threadName(url);}
+       static const QString  thread_datID( const KURL& url ){return threadID(url);}
+       static const QString  thread_boardURL( const KURL& url ){return boardURL(url);}
+       static const QString& thread_boardName( const KURL& url ){return boardName(url);}
+       static const QString  thread_boardID( const KURL& url ){return boardID(url);}
+       
       private:
 
        static DatInfo* getDatInfo( const KURL& url );
index d800288..7ebd4b6 100644 (file)
@@ -946,6 +946,7 @@ bool ParseMisc::parseResDat(RESDAT& resdat, QString& subject)
        resdat.broken = FALSE;
 
        resdat.name = list[ 0 ];
+       parseBODYdatText( PARSEMODE_TEXT, resdat.name, resdat.parsedName );
        resdat.address = list[ 1 ];
        parseDateId(list[ 2 ],resdat.id,resdat.dateId,resdat.dateTime );
        resdat.body = list[ 3 ].mid( 1 ); /* remove space after <> */
index 42675e1..a3d8159 100644 (file)
@@ -103,9 +103,8 @@ Thread* Thread::getByURL( const QString& datURL )
         m_threadDict = new QDict<Thread>();
     }
 
-    if ( m_threadDict->find( datURL ) ) {
-        return m_threadDict->find( datURL );
-    }
+    Thread* thread = m_threadDict->find( datURL );
+    if ( thread ) return thread;
 
     Thread* newThread = new Thread( datURL );
     m_threadDict->insert( datURL, newThread );
@@ -113,6 +112,13 @@ Thread* Thread::getByURL( const QString& datURL )
     return newThread;
 }
 
+/* static & public */
+Thread* Thread::getByURLNew( const KURL& datURL )
+{
+    if ( m_threadDict == NULL ) return NULL;
+    return m_threadDict->find( datURL.prettyURL() );
+}
+
 void Thread::setName( const QString& datURL, const QString& threadName )
 {
     if ( datURL.isNull() ) {
index ee45628..1d07010 100644 (file)
@@ -50,6 +50,7 @@ namespace Kita
         const QString boardID() const;
 
         static Thread* getByURL( const QString& datURL );
+       static Thread* getByURLNew( const KURL& datURL );
         static void setName( const QString& datURL, const QString& threadName );
         static void replace( const QString& fromURL, const QString& toURL );
     private:
index 08ccbbd..37e62da 100644 (file)
@@ -29,6 +29,7 @@
 
 #include "libkita/kitaconfig.h"
 #include "libkita/datmanager.h"
+#include "libkita/datinfo.h"
 #include "libkita/parsemisc.h"
 #include "libkita/signalcollection.h"
 
@@ -82,8 +83,6 @@ void KitaHTMLPart::clearPart(){
     m_anchorStack.clear();
     m_centerNum = 0;
     findTextInit();
-
-    for( int i = 0; i < 1200 ; i++ ) m_check[ i ] = FALSE;
 }
 
 
@@ -861,7 +860,7 @@ void KitaHTMLPart::showPopupMenu( const KURL& kurl )
        ID_Copy_Str,
        ID_Abone_Word,
        ID_Extract,
-
+       ID_Open_Browser,
 
        /*-----------------*/
        ID_Back_Link /* stay bottom */
@@ -870,7 +869,7 @@ void KitaHTMLPart::showPopupMenu( const KURL& kurl )
     QPoint point = QCursor::pos();
     QString url = kurl.prettyURL();
     bool showppm = FALSE;
-    const int ID_Goto_Check = ID_Back_Link + m_anchorStack.size();
+    const int ID_Goto_Mark = ID_Back_Link + m_anchorStack.size();
     
     QString str;
 
@@ -882,7 +881,7 @@ void KitaHTMLPart::showPopupMenu( const KURL& kurl )
 
     KPopupMenu* popupMenu = new KPopupMenu( view() );
     KPopupMenu* backSubMenu = NULL;
-    KPopupMenu* checkSubMenu = NULL;    
+    KPopupMenu* markSubMenu = NULL;    
 
     popupMenu->clear();
 
@@ -910,21 +909,24 @@ void KitaHTMLPart::showPopupMenu( const KURL& kurl )
            popupMenu->insertSeparator();
        }
 
-       /* check */
-       for( int i = 1; i <= Kita::DatManager::getMaxResNumber( m_datURL ) ; i++ ){
-           if( m_check[ i ] ){
-               if( !checkSubMenu ){
-                   checkSubMenu = new KPopupMenu( view() );
-                   checkSubMenu->clear();                  
-                   popupMenu->insertItem( i18n( "Check" ), checkSubMenu );
+       /* mark */
+       /* !! very dangerous to call DatManager::getDatInfoPointer without locking !! */
+       Kita::DatManager::lock( m_datURL );
+       Kita::DatInfo* datInfo = Kita::DatManager::getDatInfoPointer( m_datURL );
+       for( int i = 1; i <= datInfo->getMaxResNumber() ; i++ ){
+           if( datInfo->isMarked( i ) ){
+               if( !markSubMenu ){
+                   markSubMenu = new KPopupMenu( view() );
+                   markSubMenu->clear();                   
+                   popupMenu->insertItem( i18n( "Mark" ), markSubMenu );
                    popupMenu->insertSeparator();
                }
 
-               str = QString().setNum( i ) + "   "
-                   + Kita::DatManager::getPlainBody( m_datURL, i ).left( 10 );
-               checkSubMenu->insertItem( str, ID_Goto_Check + i );
+               str = QString().setNum( i ) + "   " + datInfo->getPlainBody( i ).left( 10 );
+               markSubMenu->insertItem( str, ID_Goto_Mark + i );
            }
        }
+       Kita::DatManager::unlock( m_datURL );
        
        /* home */
        popupMenu->insertItem( i18n( "Start" ), ID_Home_Link );
@@ -967,6 +969,8 @@ void KitaHTMLPart::showPopupMenu( const KURL& kurl )
        if( showppm ) popupMenu->insertSeparator();
        showppm = TRUE;
 
+       popupMenu->insertItem( i18n( "Open with Web Browser" ), ID_Open_Browser );
+       popupMenu->insertSeparator();
         popupMenu->insertItem( i18n( "Copy Link Location" ), ID_COPY_Link );
     }
 
@@ -977,6 +981,7 @@ void KitaHTMLPart::showPopupMenu( const KURL& kurl )
     if( showppm ){
     
        QClipboard* clipboard = QApplication::clipboard();
+       KParts::URLArgs argdummy;
 
        int ret = popupMenu->exec( point ); 
        switch ( ret  ) {
@@ -986,6 +991,10 @@ void KitaHTMLPart::showPopupMenu( const KURL& kurl )
            clipboard->setText( url , QClipboard::Selection );
            break;
 
+       case ID_Open_Browser:
+               emit openURLRequest( url, argdummy );
+           break;
+
        case ID_Home_Link: gotoAnchor( "header", FALSE ); break;
 
        case ID_Temp_Link: gotoAnchor( "mae100", FALSE ); break;
@@ -1018,9 +1027,9 @@ void KitaHTMLPart::showPopupMenu( const KURL& kurl )
         
        default:
 
-           /* check */
-           if( ret >= ID_Goto_Check ){
-               gotoAnchor( QString().setNum( ret - ID_Goto_Check ), FALSE );
+           /* mark */
+           if( ret >= ID_Goto_Mark ){
+               gotoAnchor( QString().setNum( ret - ID_Goto_Mark ), FALSE );
            }
 
            /* back */
@@ -1036,7 +1045,7 @@ void KitaHTMLPart::showPopupMenu( const KURL& kurl )
 
     if( popupMenu ) delete popupMenu;
     if( backSubMenu ) delete backSubMenu;
-    if( checkSubMenu ) delete checkSubMenu;    
+    if( markSubMenu ) delete markSubMenu;    
 }
 
 
@@ -1051,7 +1060,7 @@ void KitaHTMLPart::khtmlMousePressEvent( khtml::MousePressEvent* e )
 {
     KURL kurl;
     if( e->url().string() != QString::null )
-       kurl = KURL( Kita::DatManager::thread_boardURL( m_datURL ), e->url().string() );
+       kurl = KURL( Kita::DatManager::boardURL( m_datURL ), e->url().string() );
 
     m_pushctrl = m_pushmidbt = m_pushrightbt = FALSE;
     if(e->qmouseEvent()->button() & Qt::RightButton) m_pushrightbt = TRUE;
@@ -1199,14 +1208,14 @@ void KitaHTMLPart::showWritePopupMenu( const QString& refstr)
     WRITEMENU_COPYURL,
     WRITEMENU_COPYTHREADNAME,  
     WRITEMENU_SETKOKOYON,
-    WRITEMENU_CHECK,   
+    WRITEMENU_MARK,    
     WRITEMENU_ABONENAME
     };
            
     QClipboard * clipboard = QApplication::clipboard();
     QString str, resstr;
     int resNum = refstr.mid( 5 ).toInt();
-    QString namestr = Kita::DatManager::getName( m_datURL, resNum );
+    QString namestr = Kita::DatManager::getPlainName( m_datURL, resNum );
        
     /* show res tree */
     if( m_pushrightbt ){
@@ -1242,12 +1251,10 @@ void KitaHTMLPart::showWritePopupMenu( const QString& refstr)
 
     }
 
-    /* check */
-    if( m_mode == HTMLPART_MODE_MAINPART ){
-       popupMenu->insertItem( i18n( "Check" ), WRITEMENU_CHECK );
-       popupMenu->setItemChecked( WRITEMENU_CHECK, m_check[ resNum ] );
-       popupMenu->insertSeparator();
-    }
+    /* mark */
+    popupMenu->insertItem( i18n( "Mark" ), WRITEMENU_MARK );
+    popupMenu->setItemChecked( WRITEMENU_MARK, Kita::DatManager::isMarked( m_datURL, resNum ) );
+    popupMenu->insertSeparator();
 
     /* open */
     popupMenu->insertItem( i18n( "Open with KitaNavi" ), WRITEMENU_SHOWNAVI );
@@ -1295,8 +1302,8 @@ void KitaHTMLPart::showWritePopupMenu( const QString& refstr)
        emit openWriteDialog( resstr );
        break;
 
-    case WRITEMENU_CHECK:
-       m_check[ resNum ] = !m_check[ resNum ];
+    case WRITEMENU_MARK:
+       Kita::DatManager::setMark( m_datURL, resNum, ! Kita::DatManager::isMarked( m_datURL, resNum ) );
        break;
        
     case WRITEMENU_COPY:
@@ -1306,12 +1313,12 @@ void KitaHTMLPart::showWritePopupMenu( const QString& refstr)
 
        /* title */
        if( ret == WRITEMENU_COPYTHREADNAME || ret == WRITEMENU_COPY ){
-           str = Kita::DatManager::thread_name( m_datURL );
+           str = Kita::DatManager::threadName( m_datURL );
        }
 
        /* url */
        if( str != QString::null ) str += "\n";
-       str += Kita::DatManager::thread_url( m_datURL ) + QString().setNum( resNum ) + "\n";
+       str += Kita::DatManager::threadURL( m_datURL ) + QString().setNum( resNum ) + "\n";
 
        /* body */
        if( ret == WRITEMENU_COPY ){
@@ -1334,7 +1341,7 @@ void KitaHTMLPart::showWritePopupMenu( const QString& refstr)
        break;
 
     case WRITEMENU_SHOWBROWSER:
-       str = Kita::DatManager::thread_url( m_datURL )
+       str = Kita::DatManager::threadURL( m_datURL )
            + QString().setNum( resNum );
 
        KRun::runURL( str, "text/html" );
@@ -1702,9 +1709,9 @@ void KitaHTMLPart::slotOnURL( const QString& url )
     if ( datURL.host() != m_datURL.host() || datURL.path() != m_datURL.path() ) {
 
         /* show them with boadname & subject */
-       QString boardName = Kita::DatManager::thread_boardName( datURL );
+       QString boardName = Kita::DatManager::boardName( datURL );
         if ( boardName != QString::null ) innerHTML += "[" +boardName +"] ";
-       QString subName = Kita::DatManager::getSubject( datURL );
+       QString subName = Kita::DatManager::threadName( datURL );
         if ( subName != QString::null ) innerHTML += subName +"<br><br>";
 
         if ( !refNum ) refNum = refNum2 = 1;
index dc29173..cf0e8c7 100644 (file)
@@ -54,8 +54,6 @@ class KitaHTMLPart : public KHTMLPart
     KURL m_datURL;
     bool m_updatedKokoyon;
 
-    bool m_check[ 1200 ]; /* I will move this variable to DatInfo later. */
-
 
     /* cache */
     bool m_firstReceive;
index 0fc3c12..fb33868 100644 (file)
@@ -187,7 +187,7 @@ void KitaNavi::addTab(int mode,
     case KITANAVI_EXTBYNAME:
 
        for(int i = 1; i<= totalNum; i++){
-           if( Kita::DatManager::getName( datURL, i ) == query ){
+           if( Kita::DatManager::getPlainName( datURL, i ) == query ){
                str = Kita::DatManager::getDat( datURL, i );
                view->domAppendData( str, i, i );
                count++;