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();
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" ) );
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";
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;
}
}
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& ) ) );
}
}
/* 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. */
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();
void KitaDockWidgetBase::customEvent( QCustomEvent * e )
{
if ( e->type() == EVENT_ShowDock ){
- showDock( static_cast< ShowDockEvent* >( e )->getActivate() );
+ showDock( static_cast< ShowDockEvent* >( e )->getActivate(), FALSE );
}
}
void switchToKitanavi();
void switchToImgview();
void switchToWritedock();
+
+ void setMainURLLine( const KURL& url );
+ void setMainCaption( const QString& captionStr );
+ void setMainStatusbar( const QString& statusStr );
};
WFlags f = 0);
~KitaDockWidgetBase();
- void showDock( bool active );
+ void showDock( bool active, bool force );
public slots:
void slotShowPart( const KURL&, const QString&, const QString& );
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 */
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;
}
if( m_mode == TABMODE_THREADVIEW ){
+ emit setMainCaption( QString::null );
+ emit setMainStatusbar( QString::null );
+ emit setMainURLLine( QString::null );
+
/* default view */
KitaThreadView * threadView = createView( "thread" );
/* 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;
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 );
}
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() )
{}
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" );
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" );
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;
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 )
}
+
+/* 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 */
/* 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);
/* 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();
}
/*------------------------*/
- else if ( m_findNode.nodeName().string() == "dt"
- || m_findNode.nodeName().string() == "dd" )
+ else if ( m_findNode.nodeName().string() == "table" )
{
QRect qr = m_findNode.getRect();
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 );
/*-----------------------------------------*/
void KitaThreadView::showStatusBar( QString info )
{
+ if ( m_datURL.isEmpty() ) return;
int totalNum = 0, datSize = 0;;
bool broken = FALSE;
QString captionStr = QString::null;
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);
captionStr = Kita::DatManager::thread_name( m_datURL )
+ QString( " (%1)" ).arg( Kita::DatManager::getReadNum( m_datURL ) );
- }
emit setMainCaption( captionStr );
emit setMainStatusbar( infostr );
void KitaThreadView::slotCloseButton()
{
- emit closeThreadTab( m_datURL );
+ emit closeCurrentTab();
}
/*--------------------------------------------------------*/
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> " )
/* update display */
m_threadPart->updateScreen(FALSE,FALSE);
-
+ if ( anchor != NULL ) m_threadPart->gotoAnchor( anchor, FALSE );
+
updateButton();
showStatusBar( "" );
}
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);
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
// 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* ) ),
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?" ),
m_postInfo.body = QString::null;
clear( m_postInfo );
-// closeCurrentTab(); /* to KitaWriteTabWidget */
+ emit closeCurrentTab(); /* to KitaWriteTabWidget */
break;
-<!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">