OSDN Git Service

>>80
authorikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sat, 21 Aug 2004 08:02:30 +0000 (08:02 +0000)
committerikemo <ikemo@56b19765-1e22-0410-a548-a0f45d66c51a>
Sat, 21 Aug 2004 08:02:30 +0000 (08:02 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@1304 56b19765-1e22-0410-a548-a0f45d66c51a

15 files changed:
kita/src/kita.cpp
kita/src/kitatabwidgetbase.cpp
kita/src/kitatabwidgetbase.h
kita/src/kitathreadtabwidget.cpp
kita/src/kitawritetabwidget.cpp
kita/src/libkita/kita_misc.cpp
kita/src/libkita/kitaconfig.cpp
kita/src/libkita/kitaconfig.h
kita/src/libkita/parsemisc.cpp
kita/src/libkita/parsemisc.h
kita/src/part/kitahtmlpart.cpp
kita/src/part/kitathreadview.cpp
kita/src/part/kitathreadview.h
kita/src/part/kitawritedialog.cpp
kita/src/uiprefbase.ui

index 6c89267..bc6b770 100644 (file)
@@ -173,12 +173,12 @@ KitaMainWindow::KitaMainWindow()
 KitaMainWindow::~KitaMainWindow()
 {
     /* show all dock widgets to save the status. */
-    m_boardDock->showDock( FALSE );
-    m_subjectDock->showDock( FALSE );
-    m_threadDock->showDock( FALSE );
-    m_naviDock->showDock( FALSE );
-    m_imgDock->showDock( FALSE );
-    m_writeDock->showDock( FALSE );
+    m_boardDock->showDock( FALSE, TRUE );
+    m_subjectDock->showDock( FALSE, TRUE );
+    m_threadDock->showDock( FALSE, TRUE );
+    m_naviDock->showDock( FALSE, TRUE );
+    m_imgDock->showDock( FALSE, TRUE );
+    m_writeDock->showDock( FALSE, TRUE );
     
     saveAboneIDList();
     saveAboneNameList();
@@ -546,9 +546,9 @@ void KitaMainWindow::setupView()
     m_naviDock = new KitaThreadDock( manager(),  "kitanavi", 0L, 0L, i18n( "KitaNavi" ), i18n( "Navi" ) );
     m_naviTab = m_naviDock->setupAsKitaNavi();
     connect( m_naviDock, SIGNAL( checkToggleAction( bool ) ), SLOT( slotCheckNaviToggleAction( bool ) ) );
-/*
+
     if ( !KitaConfig::useKitaNavi() ) m_threadDock ->connectNaviSignals();
-    else */ m_naviDock->connectNaviSignals();
+    else m_naviDock->connectNaviSignals();
     
     /* KitaImgViewer */
     m_imgDock = new KitaImgDock( manager(),  "imgviewer", 0L, 0L, i18n( "Kita Image Viewer" ), i18n( "Image" ) );
@@ -615,7 +615,7 @@ void KitaMainWindow::slotOpenURLRequest( const KURL& url, const KParts::URLArgs&
     if ( regexp.search( datURL.url() ) == -1 ) { /* Is this URL 2ch? */
 
        /* open with image viewer */
-//     if ( KitaConfig::useImageViewer() )
+       if ( KitaConfig::useImageViewer() )
        {
            QStringList extlist; // = KitaConfig::imgExtList();
            extlist = "jpg";
@@ -641,9 +641,9 @@ void KitaMainWindow::slotOpenURLRequest( const KURL& url, const KParts::URLArgs&
                 KService::Ptr service = KServiceTypeProfile::preferredService( mimetype, "KParts/ReadOnlyPart" );
                 if ( service ) {
                     QString libName = QFile::encodeName( service->library() );
-/*
+
                    if( !KitaConfig::useKitaNavi() ) m_threadDock->slotShowPart( url, libName, mimetype );
-                   else */ m_naviDock ->slotShowPart( url, libName, mimetype );
+                   else m_naviDock ->slotShowPart( url, libName, mimetype );
                     return;
                    }
             }
index e2dd58a..7182d66 100644 (file)
@@ -208,6 +208,15 @@ void KitaTabWidgetBase::connectSignals()
 
     connect( this, SIGNAL( currentChanged ( QWidget * ) ),
             SLOT( slotCurrentChanged ( QWidget * ) ) );
+
+    connect( this, SIGNAL( setMainStatusbar( const QString& ) ),
+             signalCollection, SIGNAL( setMainStatusbar ( const QString& ) ) );
+
+    connect( this, SIGNAL( setMainURLLine( const KURL& ) ),
+             signalCollection, SIGNAL( setMainURLLine( const KURL& ) ) );
+
+    connect( this, SIGNAL( setMainCaption( const QString& ) ),
+             signalCollection, SIGNAL( setMainCaption( const QString& ) ) );
 }
 
 
@@ -582,8 +591,13 @@ void KitaDockWidgetBase::slotHeaderCloseButtonClicked()
 }
 
 /* show dock widget immediately */ /* public */
-void KitaDockWidgetBase::showDock( bool activate )
+void KitaDockWidgetBase::showDock( bool activate, bool force )
 {
+    QWidget* wd = getWidget();
+    KitaTabWidgetBase* w = NULL;
+    if( wd && wd->inherits( "KitaTabWidgetBase" )) w = static_cast<KitaTabWidgetBase*> ( wd );
+    if( !force && w && w->count() == 0 ) return;
+    
     if( !isVisible() ){
 
        if( m_docked ){ /* This dock was docked to the other dock. */
@@ -626,11 +640,7 @@ void KitaDockWidgetBase::showDock( bool activate )
     emit checkToggleAction( TRUE ); /* to KitaMainWindow */
 
     /* activate child Part */
-    QWidget* wd = getWidget();
-    if( wd && wd->inherits( "KitaTabWidgetBase" )){
-       KitaTabWidgetBase* w = static_cast<KitaTabWidgetBase*> ( wd );
-       if( w ) w->slotCurrentChanged( w->currentPage() );
-    }
+    if( w ) w->slotCurrentChanged( w->currentPage() );
     else if( wd ){
        wd->setActiveWindow();
        wd->setFocus();
@@ -676,7 +686,7 @@ void KitaDockWidgetBase::closeEvent( QCloseEvent* e )
 void KitaDockWidgetBase::customEvent( QCustomEvent * e )
 {
     if ( e->type() == EVENT_ShowDock ){
-       showDock( static_cast< ShowDockEvent* >( e )->getActivate() );
+       showDock( static_cast< ShowDockEvent* >( e )->getActivate(), FALSE );
     }
 }
 
index d00e60f..9476179 100644 (file)
@@ -94,6 +94,10 @@ signals:
     void switchToKitanavi();
     void switchToImgview();
     void switchToWritedock();
+
+    void setMainURLLine( const KURL& url );
+    void setMainCaption( const QString& captionStr );
+    void setMainStatusbar( const QString& statusStr );
 };
 
 
@@ -143,7 +147,7 @@ public:
            WFlags f = 0);
     ~KitaDockWidgetBase();
 
-    void showDock( bool active );
+    void showDock( bool active, bool force );
     
 public slots:
     void slotShowPart( const KURL&, const QString&, const QString& );
index 26c010c..67dff7f 100644 (file)
@@ -126,44 +126,48 @@ void KitaThreadTabWidget::slotShowKitaNavi(int mode,
     QStringList queries;
     QRegExp qrx(" +");
     bool ext_OR;
-    QString labelstr;
+    QString labelstr = QString::null;
+    QString tabstr = QString::null;    
                          
     /* set title and label */
     switch(mode){
 
     case KITANAVI_SHOWRES:
        
-       if( startnum == endnum ) labelstr = QString().setNum( startnum );
-       else labelstr = QString( "%1-%2" ).arg(startnum).arg( endnum );
-
+       if( startnum == endnum ) tabstr = QString().setNum( startnum );
+       else tabstr = QString( "%1-%2" ).arg(startnum).arg( endnum );
        break;
        
     case KITANAVI_EXTBYID:
+       tabstr = "ID";
+       break;
     case KITANAVI_EXTBYWORD:
+       tabstr = Kita::ParseMisc::utf8ToUnicode( KITAUTF8_EXTRACT );
+       break;
     case KITANAVI_EXTBYNAME:
-       labelstr = query
-           + " :"+ Kita::ParseMisc::utf8ToUnicode( KITAUTF8_EXTRACT );
+       tabstr = "Name";
        break;
 
     case KITANAVI_SHOWRESTREE:
     case KITANAVI_SHOWREVRESTREE:      
-       labelstr = QString().setNum( startnum );
+       tabstr = "Tree";
        break;
 
     }
-    labelstr += " :"+QString( "[%1] %2" )
-       .arg( Kita::DatManager::thread_boardName( datURL ) )
-       .arg( Kita::DatManager::thread_name( datURL ) );
-
 
     /* create KitaThreadView and setup it */
-    KitaThreadView *view = createView( labelstr );
+    KitaThreadView *view = createView( tabstr );
     if( view == NULL) return;
+
+    QString toolstr = tabstr + " : "+QString( "[%1] %2" )
+       .arg( Kita::DatManager::thread_boardName( datURL ) )
+       .arg( Kita::DatManager::thread_name( datURL ) ); 
     
     view->setup( datURL, VIEWMODE_KITANAVI );
-    setTabToolTip( view , getTabLabel( labelstr ) );
+    setTabToolTip( view , toolstr );
     totalNum = Kita::DatManager::getResNum( datURL );
 
+    labelstr = Kita::DatManager::thread_name( datURL ) + " : " + tabstr;
     
     /*---------------------------------------------*/    
     /* copy data from DatManager to KitaThreadView */
@@ -327,7 +331,10 @@ KitaThreadView* KitaThreadTabWidget::createView( QString label )
 
     m_manager->addPart( part );
     KitaThreadView* view = static_cast<KitaThreadView *>( part->widget() );
-    if( view ) addTab( view, getTabLabel( label ) );
+    if( view ){
+       addTab( view, getTabLabel( label ) );   
+       connect( view, SIGNAL( closeCurrentTab() ), SLOT( slotCloseCurrentTab() ) );
+    }
     
     return view;
 }
@@ -409,6 +416,10 @@ void KitaThreadTabWidget::deleteWidget( QWidget* w )
 
        if( m_mode == TABMODE_THREADVIEW ){
 
+           emit setMainCaption( QString::null );
+           emit setMainStatusbar( QString::null ); 
+           emit setMainURLLine( QString::null );
+           
            /* default view */
            KitaThreadView * threadView = createView( "thread" );
 
index 94c629b..0ced056 100644 (file)
@@ -74,9 +74,18 @@ void  KitaWriteTabWidget::slotShowWriteView( const KURL& url,
     /* view exists */
     KitaWriteDialog* view = findWriteView( datURL );
     if ( view ) {
-       /* clear */
+       
        info = view->postInfo();
-       info.body = QString::null;
+       if( info.body.length() ){
+           
+           if( QMessageBox::warning( this, "Kita",
+                                     i18n( "Do you want to clear the text?" ),
+                                     QMessageBox::Ok,
+                                     QMessageBox::Cancel | QMessageBox::Default ) == QMessageBox::Cancel ) return;
+       }
+       
+       /* clear */
+       info.body = resStr;
        view->clear( info );
         setCurrentPage( indexOf( view ) );
        return;
index 60bb60b..3e90dc4 100644 (file)
@@ -175,5 +175,5 @@ QString Kita::datToOfflaw( const QString& datURL )
     url.cd( ".." );
     QString board = url.fileName();
 
-    return QString( "http://%1/test/offlaw.cgi?raw=0.0&bbs=%2&key=%3" ).arg( root, board, datName );
+    return QString( "http://%1/test/offlaw.cgi?raw=0.0&bbs=%2&key=%3" ).arg( root ).arg( board ).arg( datName );
 }
index a14340b..9740145 100644 (file)
@@ -41,6 +41,9 @@ KitaConfig::KitaConfig()
         m_showAA( KitaConfig::defaultShowAA() ),
         m_showNum( KitaConfig::defaultShowNum() ),
         m_usePart( KitaConfig::defaultUsePart() ),
+       m_useImageViewer(  KitaConfig::defaultUseImageViewer() ),
+       m_useImagePopup(  KitaConfig::defaultUseImagePopup() ),
+       m_useKitaNavi(  KitaConfig::defaultUseKitaNavi() ),               
         m_partMimeList( KitaConfig::defaultPartMimeList() )
 {}
 
@@ -59,6 +62,9 @@ void KitaConfig::writeConfig( KConfig* config )
     config->writeEntry( "ShowAA", KitaConfig::showAA() );
     config->writeEntry( "ShowNum", KitaConfig::showNum() );
     config->writeEntry( "UsePart", KitaConfig::usePart() );
+    config->writeEntry( "UseImageViewer", KitaConfig::useImageViewer() );
+    config->writeEntry( "UseImagePopup", KitaConfig::useImagePopup() );
+    config->writeEntry( "UseKitaNavi", KitaConfig::useKitaNavi() );    
     config->writeEntry( "PartMimeList", KitaConfig::partMimeList() );
 
     config->setGroup( "Color" );
@@ -97,6 +103,9 @@ void KitaConfig::readConfig( KConfig* config )
     KitaConfig::setShowAA( config->readBoolEntry( "ShowAA", KitaConfig::defaultShowAA() ) );
     KitaConfig::setShowNum( config->readNumEntry( "ShowNum", KitaConfig::defaultShowNum() ) );
     KitaConfig::setUsePart( config->readBoolEntry( "UsePart", KitaConfig::defaultUsePart() ) );
+    KitaConfig::setUseImageViewer( config->readBoolEntry( "UseImageViewer", KitaConfig::defaultUseImageViewer() ) );
+    KitaConfig::setUseImagePopup( config->readBoolEntry( "UseImagePopup", KitaConfig::defaultUseImagePopup() ) );
+    KitaConfig::setUseKitaNavi( config->readBoolEntry( "UseKitaNavi", KitaConfig::defaultUseKitaNavi() ) ); 
 
     config->setGroup( "Color" );
 
index 9ff33bb..176d28d 100644 (file)
@@ -50,6 +50,9 @@ private:
     bool m_showAA;
     int m_showNum;
     bool m_usePart;
+    bool m_useImageViewer;
+    bool m_useImagePopup;
+    bool m_useKitaNavi;
     QStringList m_partMimeList;
     QString m_userID;
     QString m_password;
@@ -147,6 +150,18 @@ public:
     static void setUsePart( bool value ) { getInstance()->m_usePart = value; }
     static bool defaultUsePart() { return true; }
 
+    static bool useImageViewer() { return getInstance()->m_useImageViewer; }
+    static void setUseImageViewer( bool value ) { getInstance()->m_useImageViewer = value; }
+    static bool defaultUseImageViewer() { return true; }
+
+    static bool useImagePopup() { return getInstance()->m_useImagePopup; }
+    static void setUseImagePopup( bool value ) { getInstance()->m_useImagePopup = value; }
+    static bool defaultUseImagePopup() { return true; }
+
+    static bool useKitaNavi() { return getInstance()->m_useKitaNavi; }
+    static void setUseKitaNavi( bool value ) { getInstance()->m_useKitaNavi = value; }
+    static bool defaultUseKitaNavi() { return true; }
+    
     static QStringList& partMimeList() { return getInstance()->m_partMimeList; }
     static void setPartMimeList( const QStringList value ) { getInstance()->m_partMimeList = value; }
     static void setPartMimeList( const QString& value )
index 549e696..111b64f 100644 (file)
@@ -860,6 +860,33 @@ bool ParseMisc::parseResAnchor(
 }
 
 
+
+/* convert strings to positive number.  */
+/* if cdat is not number, return -1.    */
+
+/*  For example, if cdat = "1234", then
+    ret = 1234. If cdat = "abcd", then
+    ret = -1.                           */   /* public */
+int ParseMisc::stringToPositiveNum( const QChar *cdat, const unsigned int length )
+{
+    int ret = 0;
+    
+    for ( unsigned int i = 0 ; i < length ; i++ ){
+
+       unsigned short c = cdat[ i ].unicode();
+
+       if ( ( c < UTF16_0 || c > UTF16_9 ) && ( c < '0' || c > '9' ) ) return -1;
+
+       ret *= 10;
+       if ( c >= UTF16_0 ) ret += c - UTF16_0;
+       else ret += c - '0';
+    }
+
+    return ret;
+}
+
+
+
 /*-----------------------------------------------------*/
 /* parsing function for special char (such as &hearts; */
 /*-----------------------------------------------------*/ /* public */
index 25efaa9..d514265 100644 (file)
@@ -66,6 +66,7 @@ class ParseMisc
        /* utils */
        static bool parseResAnchor(const QChar *cdat,const unsigned int length,
                                   QString& linkstr,int* refNum,unsigned int& pos);
+       static int stringToPositiveNum( const QChar *cdat, const unsigned int length );
        static QString parseSpecialChar(const QChar *cdat, unsigned int& pos );
        static void parseDateId( const QString& str,QString &idstr,
                                 QString &dateIdstr, QDateTime &dTime);
index 6f1cf44..d3792a3 100644 (file)
@@ -658,6 +658,9 @@ void KitaHTMLPart::pushCurrentPosition()
     /* find the id of current node */
     node = nodeUnderMouse();
     while ( node != NULL && node.nodeName().string() != "div" ) node = node.parentNode();
+    /* DIV---TABLE (title)
+           |-DIV   (body)  */
+    if ( static_cast<DOM::Element>( node ).getAttribute( "class" ).string() == "res_body" ) node = node.parentNode();
     if ( node == NULL ) return ;
     anchor = static_cast<DOM::Element>( node ).getAttribute( "id" ).string();
 
@@ -886,8 +889,7 @@ bool KitaHTMLPart::findText( const QString &query, bool reverse )
         }
 
         /*------------------------*/
-        else if ( m_findNode.nodeName().string() == "dt"
-                  || m_findNode.nodeName().string() == "dd" )
+        else if ( m_findNode.nodeName().string() == "table" )
         {
 
             QRect qr = m_findNode.getRect();
@@ -1925,16 +1927,14 @@ bool KitaHTMLPart::showSelectedDigitPopup()
     if( !hasSelection() ) return FALSE;
 
     QString linkstr;
-    int refNum[2];
-    unsigned int pos;
+    int refNum;
     QString selectText = selectedText();
     const QChar *chpt = selectText.unicode();
     unsigned int length = selectText.length();
 
-    if( Kita::ParseMisc::parseResAnchor( chpt, length, linkstr, refNum, pos ) )
+    if( ( refNum = Kita::ParseMisc::stringToPositiveNum( chpt, length ) ) != -1 )
     {
-        if( refNum[1] < refNum[0] ) refNum[1] = refNum[0];
-        QString innerHTML = Kita::DatManager::getHtml( m_datURL, refNum[0], refNum[1] );
+        QString innerHTML = Kita::DatManager::getHtml( m_datURL, refNum, refNum );
         if ( innerHTML != QString::null )
         {
             showPopup( m_datURL,  innerHTML );
index 210536a..5f3a347 100644 (file)
@@ -541,6 +541,7 @@ void KitaThreadView::slotStopLoading()
 /*-----------------------------------------*/
 void KitaThreadView::showStatusBar( QString info )
 {
+    if ( m_datURL.isEmpty() ) return;
     int totalNum = 0, datSize = 0;;
     bool broken = FALSE;
     QString captionStr = QString::null;
@@ -553,7 +554,6 @@ void KitaThreadView::showStatusBar( QString info )
 
     case VIEWMODE_MAINVIEW:
 
-       if ( !m_datURL.isEmpty() ){
         totalNum = Kita::DatManager::getReadNum(m_datURL);
         broken = Kita::DatManager::isBroken(m_datURL);
         datSize =  Kita::DatManager::getDatSize(m_datURL);
@@ -570,7 +570,6 @@ void KitaThreadView::showStatusBar( QString info )
 
        captionStr = Kita::DatManager::thread_name( m_datURL )
            + QString( " (%1)" ).arg( Kita::DatManager::getReadNum( m_datURL ) );
-       }
        
        emit setMainCaption( captionStr );
         emit setMainStatusbar( infostr );
@@ -728,7 +727,7 @@ void KitaThreadView::slotDeleteButtonClicked()
 
 void KitaThreadView::slotCloseButton()
 {
-    emit closeThreadTab( m_datURL );
+    emit closeCurrentTab();
 }
 
 /*--------------------------------------------------------*/
@@ -776,7 +775,6 @@ void KitaThreadView::domApplyChange( QString lbstr,  /* label */
     if ( hstr != NULL ) m_threadPart->insertHeaderNode( hstr );
     if ( fstr != NULL ) m_threadPart->insertFooterNode( fstr );
     if ( cmbstr != NULL ) SearchCombo->insertItem( cmbstr );
-    if ( anchor != NULL ) m_threadPart->gotoAnchor( anchor, FALSE );
     if ( lbstr != QString::null )
     {
         QString str = QString( "<a href=\"%1\">[%2]</a> " )
@@ -787,7 +785,8 @@ void KitaThreadView::domApplyChange( QString lbstr,  /* label */
 
     /* update display */
     m_threadPart->updateScreen(FALSE,FALSE);
-
+    if ( anchor != NULL ) m_threadPart->gotoAnchor( anchor, FALSE );
+    
     updateButton();
     showStatusBar( "" );
 }
index b14ea61..7726546 100644 (file)
@@ -141,6 +141,7 @@ signals:
     void openBoardRequested( const QString& URL, bool useTab );
     void showThreadCompleted(); /* to KitaThreadPart */
     void closeThreadTab( const KURL& url );
+    void closeCurrentTab(); /* to KitaThreadTabWidget */
 
     /* kita navi */
     void showKitaNaviByWord( const KURL& , QString);
index 799507f..2fac62d 100644 (file)
@@ -110,7 +110,9 @@ const KURL KitaWriteDialog::datURL() const
 
 const Kita::PostInfo KitaWriteDialog::postInfo() const
 {
-    return m_postInfo;
+    Kita::PostInfo tmpInfo = m_postInfo;
+    fetchPostInfo( &tmpInfo );    
+    return tmpInfo;
 }
 
 void KitaWriteDialog::fetchPostInfo( Kita::PostInfo* storage ) const
@@ -178,8 +180,6 @@ void KitaWriteDialog::postMessage()
     // TODO: rewrite!
     logPostMessage( m_postInfo, boardNameLabel->text(), threadNameLabel->text(), threadURLLabel->text() );
 
-    emit postStarted( job, m_postInfo );
-
     connect( job, SIGNAL( data( KIO::Job*, const QByteArray& ) ),
              this, SLOT( slotRecieveData( KIO::Job*, const QByteArray& ) ) );
     connect( job, SIGNAL( result( KIO::Job* ) ),
@@ -207,6 +207,11 @@ void KitaWriteDialog::slotPostFinished( KIO::Job* )
 
 void KitaWriteDialog::reject()
 {
+    if( body().length() == 0 ){
+       emit closeCurrentTab(); /* to KitaWriteTabWidget */
+       return;
+    }
+    
     switch ( QMessageBox::warning( this, "Kita",
                                    i18n( "If you close this dialog, you will lose text.\n"
                                          "Do you want to close?" ),
@@ -304,7 +309,7 @@ void KitaWriteDialog::slotShowErrorDialog( const QString& input, const KURL& )
        m_postInfo.body = QString::null;
        clear( m_postInfo );
 
-//     closeCurrentTab(); /* to KitaWriteTabWidget */
+       emit closeCurrentTab(); /* to KitaWriteTabWidget */
        
         break;
        
index fddef6d..657d87a 100644 (file)
@@ -1,4 +1,4 @@
-<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
 <class>Kita::UIPrefBase</class>
 <widget class="QWidget">
     <property name="name">