From: ikemo Date: Sat, 21 Aug 2004 08:02:30 +0000 (+0000) Subject: >>80 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=fed638a5922daa35886987c2be4b22683650d5d6;p=kita%2Fkita.git >>80 git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@1304 56b19765-1e22-0410-a548-a0f45d66c51a --- diff --git a/kita/src/kita.cpp b/kita/src/kita.cpp index 6c89267..bc6b770 100644 --- a/kita/src/kita.cpp +++ b/kita/src/kita.cpp @@ -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; } } diff --git a/kita/src/kitatabwidgetbase.cpp b/kita/src/kitatabwidgetbase.cpp index e2dd58a..7182d66 100644 --- a/kita/src/kitatabwidgetbase.cpp +++ b/kita/src/kitatabwidgetbase.cpp @@ -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 ( 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 ( 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 ); } } diff --git a/kita/src/kitatabwidgetbase.h b/kita/src/kitatabwidgetbase.h index d00e60f..9476179 100644 --- a/kita/src/kitatabwidgetbase.h +++ b/kita/src/kitatabwidgetbase.h @@ -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& ); diff --git a/kita/src/kitathreadtabwidget.cpp b/kita/src/kitathreadtabwidget.cpp index 26c010c..67dff7f 100644 --- a/kita/src/kitathreadtabwidget.cpp +++ b/kita/src/kitathreadtabwidget.cpp @@ -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( 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" ); diff --git a/kita/src/kitawritetabwidget.cpp b/kita/src/kitawritetabwidget.cpp index 94c629b..0ced056 100644 --- a/kita/src/kitawritetabwidget.cpp +++ b/kita/src/kitawritetabwidget.cpp @@ -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; diff --git a/kita/src/libkita/kita_misc.cpp b/kita/src/libkita/kita_misc.cpp index 60bb60b..3e90dc4 100644 --- a/kita/src/libkita/kita_misc.cpp +++ b/kita/src/libkita/kita_misc.cpp @@ -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 ); } diff --git a/kita/src/libkita/kitaconfig.cpp b/kita/src/libkita/kitaconfig.cpp index a14340b..9740145 100644 --- a/kita/src/libkita/kitaconfig.cpp +++ b/kita/src/libkita/kitaconfig.cpp @@ -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" ); diff --git a/kita/src/libkita/kitaconfig.h b/kita/src/libkita/kitaconfig.h index 9ff33bb..176d28d 100644 --- a/kita/src/libkita/kitaconfig.h +++ b/kita/src/libkita/kitaconfig.h @@ -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 ) diff --git a/kita/src/libkita/parsemisc.cpp b/kita/src/libkita/parsemisc.cpp index 549e696..111b64f 100644 --- a/kita/src/libkita/parsemisc.cpp +++ b/kita/src/libkita/parsemisc.cpp @@ -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 ♥ */ /*-----------------------------------------------------*/ /* public */ diff --git a/kita/src/libkita/parsemisc.h b/kita/src/libkita/parsemisc.h index 25efaa9..d514265 100644 --- a/kita/src/libkita/parsemisc.h +++ b/kita/src/libkita/parsemisc.h @@ -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); diff --git a/kita/src/part/kitahtmlpart.cpp b/kita/src/part/kitahtmlpart.cpp index 6f1cf44..d3792a3 100644 --- a/kita/src/part/kitahtmlpart.cpp +++ b/kita/src/part/kitahtmlpart.cpp @@ -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( node ).getAttribute( "class" ).string() == "res_body" ) node = node.parentNode(); if ( node == NULL ) return ; anchor = static_cast( 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 ); diff --git a/kita/src/part/kitathreadview.cpp b/kita/src/part/kitathreadview.cpp index 210536a..5f3a347 100644 --- a/kita/src/part/kitathreadview.cpp +++ b/kita/src/part/kitathreadview.cpp @@ -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( "[%2] " ) @@ -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( "" ); } diff --git a/kita/src/part/kitathreadview.h b/kita/src/part/kitathreadview.h index b14ea61..7726546 100644 --- a/kita/src/part/kitathreadview.h +++ b/kita/src/part/kitathreadview.h @@ -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); diff --git a/kita/src/part/kitawritedialog.cpp b/kita/src/part/kitawritedialog.cpp index 799507f..2fac62d 100644 --- a/kita/src/part/kitawritedialog.cpp +++ b/kita/src/part/kitawritedialog.cpp @@ -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; diff --git a/kita/src/uiprefbase.ui b/kita/src/uiprefbase.ui index fddef6d..657d87a 100644 --- a/kita/src/uiprefbase.ui +++ b/kita/src/uiprefbase.ui @@ -1,4 +1,4 @@ - + Kita::UIPrefBase