From eb0f276274f22fc37bd8ae093d0cce56e1ae0625 Mon Sep 17 00:00:00 2001 From: ikemo Date: Wed, 13 Jun 2007 15:23:47 +0000 Subject: [PATCH] refactoring. git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/kita/kita/trunk@1951 56b19765-1e22-0410-a548-a0f45d66c51a --- kita/src/thread/domtree.cpp | 162 +++++++++++++++++++++----------------------- kita/src/thread/domtree.h | 3 +- 2 files changed, 80 insertions(+), 85 deletions(-) diff --git a/kita/src/thread/domtree.cpp b/kita/src/thread/domtree.cpp index 31713fa..36c6655 100644 --- a/kita/src/thread/domtree.cpp +++ b/kita/src/thread/domtree.cpp @@ -22,11 +22,6 @@ #include "libkita/kita-utf8.h" #include "libkita/kita_misc.h" - -/*---------------------------------------------------------------*/ -/*---------------------------------------------------------------*/ - - KitaDomTree::KitaDomTree( const DOM::HTMLDocument& hdoc, const KURL& datURL ) { m_hdoc = hdoc; @@ -48,9 +43,9 @@ KitaDomTree::~KitaDomTree() {} /* - This function creates DOM elements of both title and body. - To show the res, call appendRes(). . */ /* public */ - + * This function creates DOM elements of both title and body. + * To show the res, call appendRes() + */ bool KitaDomTree::createResElement( int num ) { const int mrg = 100; @@ -59,7 +54,6 @@ bool KitaDomTree::createResElement( int num ) /*---------------------------------*/ if ( ! m_datInfo ) return FALSE; - if ( m_hdoc == NULL ) return FALSE; if ( num <= 0 ) return FALSE; if ( num < m_bufSize ) { @@ -117,7 +111,6 @@ bool KitaDomTree::appendRes( int num ) void KitaDomTree::redraw( bool force ) { if ( ! m_datInfo ) return ; - if ( m_hdoc == NULL ) return ; int readNum = m_datInfo->getReadNum(); /* don't forget to reset abone here... */ @@ -144,15 +137,10 @@ void KitaDomTree::redraw( bool force ) void KitaDomTree::changeColorOfAllResponsedNumber() { for ( int i = 1; i <= m_bottomNum; ++i ) { - if ( m_datInfo->isResponsed( i ) ) changeColorOfNumber( i ); } } - - -/*-----------------------------------------------------------------*/ - /* public information */ /* public */ @@ -161,14 +149,12 @@ const int KitaDomTree::getBottomResNumber() const return m_bottomNum; } -/*---------------------------------------------------------------------------*/ -/* public functions for header Node, footer Node, kokomadeyonda Node, etc... */ - -/* append footer & header */ /* public */ +/* + * append footer & header + */ void KitaDomTree::appendFooterAndHeader() { if ( ! m_datInfo ) return ; - if ( m_hdoc == NULL ) return ; int readNum = m_datInfo->getReadNum(); if ( !readNum ) return ; @@ -180,13 +166,12 @@ void KitaDomTree::appendFooterAndHeader() m_hdoc.body().appendChild( m_footer ); } - - -/* append kokomadeyonda & tugi 100 & mae 100*/ /* public */ +/* + * append kokomadeyonda + */ void KitaDomTree::appendKokoyon() { if ( ! m_datInfo ) return ; - if ( m_hdoc == NULL ) return ; int readNum = m_datInfo->getReadNum(); if ( !readNum ) return ; @@ -200,47 +185,56 @@ void KitaDomTree::appendKokoyon() else m_hdoc.body().appendChild( m_kokoyon ); } -/* private functions */ - +/* + * private functions + */ -/* append "A" Node to rootnode */ /* private */ -void KitaDomTree::appendANode( DOM::Element rootnode, const QString& linkstr, const QString& comment ) +/* + * append "A" Node to rootnode + */ +void KitaDomTree::appendAnchorNode( DOM::Element rootnode, const QString& href, const QString& linkstr ) { - if ( m_hdoc == NULL ) return ; + DOM::Element element; - DOM::Element tmpelm; - tmpelm = rootnode.appendChild( m_hdoc.createElement( "A" ) ); + element = rootnode.appendChild( m_hdoc.createElement( "A" ) ); { - tmpelm.setAttribute( "href", linkstr ); - tmpelm.appendChild( m_hdoc.createTextNode( comment ) ); + element.setAttribute( "href", href ); + element.appendChild( m_hdoc.createTextNode( linkstr ) ); } } -/* update footer or header No */ /* private */ -void KitaDomTree::updateHeader( DOM::Element& targetelm ) +/* + * update header + * + * example + * before: #KokomadeYonda 1- 101- 201- #ToSaigo

+ * after : #KokomadeYonda 1- 101- 201- 301- 401- #ToSaigo

+ */ +void KitaDomTree::updateHeader( DOM::Element& headerElement ) { if ( ! m_datInfo ) return ; - if ( m_hdoc == NULL ) return ; DOM::Element backupElement1, backupElement2, backupElement3; int readNum = m_datInfo->getReadNum(); - /* remove < a href="#tosaigo"> and
*/ - backupElement1 = targetelm.removeChild( targetelm.lastChild() ); /* BR */ - backupElement2 = targetelm.removeChild( targetelm.lastChild() ); /* BR */ - backupElement3 = targetelm.removeChild( targetelm.lastChild() ); /* "#tosaigo" */ + /* remove and
*/ + backupElement1 = headerElement.removeChild( headerElement.lastChild() ); /* BR */ + backupElement2 = headerElement.removeChild( headerElement.lastChild() ); /* BR */ + backupElement3 = headerElement.removeChild( headerElement.lastChild() ); /* "#tosaigo" */ - DOM::Node node = targetelm.firstChild(); /* node is now "#kokomade_yonda" */ + DOM::Node node = headerElement.firstChild(); /* node is now "#kokomade_yonda" */ node = node.nextSibling(); /* " " */ node = node.nextSibling(); /* '1-', '101-' などのリンクを作成 */ for ( int num = 1; num < readNum ; num += 100 ) { if ( node == NULL ) { - QString linkstr = QString( "#%1" ).arg( num ); - appendANode( targetelm, linkstr, QString().setNum( num ) + "-" ); - node = targetelm.appendChild( m_hdoc.createTextNode( " " ) ); + QString href = QString( "#%1" ).arg( num ); + QString linkStr = QString( "%1-" ).arg( num ); + + appendAnchorNode( headerElement, href, linkStr ); + node = headerElement.appendChild( m_hdoc.createTextNode( " " ) ); node = node.nextSibling(); } else { // 既にリンクが作られている場合は飛ばす @@ -249,33 +243,40 @@ void KitaDomTree::updateHeader( DOM::Element& targetelm ) } } - /* append < a href="#tosaigo"> and
*/ - targetelm.appendChild( backupElement3 ); /* "#tosaigo" */ - targetelm.appendChild( backupElement2 ); /* BR */ - targetelm.appendChild( backupElement1 ); /* BR */ + /* restore
and
*/ + headerElement.appendChild( backupElement3 ); /* "#tosaigo" */ + headerElement.appendChild( backupElement2 ); /* BR */ + headerElement.appendChild( backupElement1 ); /* BR */ } -/* update footer or header No */ /* private */ -void KitaDomTree::updateFooter( DOM::Element& targetelm ) +/* + * update footer + * + * example + * before: #KokomadeYonda 1- 101- 201- #ToSaigo + * after : #KokomadeYonda 1- 101- 201- 301- 401- #ToSaigo + */ +void KitaDomTree::updateFooter( DOM::Element& footerElement ) { if ( ! m_datInfo ) return ; - if ( m_hdoc == NULL ) return ; - DOM::Element bkupElm; + DOM::Element backupElement; int readNum = m_datInfo->getReadNum(); - bkupElm = targetelm.removeChild( targetelm.lastChild() ); /* "#tosaigo" */ + backupElement = footerElement.removeChild( footerElement.lastChild() ); /* "#tosaigo" */ - DOM::Node node = targetelm.firstChild(); /* node is now "#kokomade_yonda" */ + DOM::Node node = footerElement.firstChild(); /* node is now "#kokomade_yonda" */ node = node.nextSibling(); /* " " */ node = node.nextSibling(); /* '1-', '101-' などのリンクを作成 */ for ( int num = 1; num < readNum ; num += 100 ) { if ( node == NULL ) { - QString linkstr = QString( "#%1" ).arg( num ); - appendANode( targetelm, linkstr, QString().setNum( num ) + "-" ); - node = targetelm.appendChild( m_hdoc.createTextNode( " " ) ); + QString href = QString( "#%1" ).arg( num ); + QString linkStr = QString( "%1-" ).arg( num ); + + appendAnchorNode( footerElement, href, linkStr ); + node = footerElement.appendChild( m_hdoc.createTextNode( " " ) ); node = node.nextSibling(); } else { // 既にリンクが作られている場合は飛ばす @@ -284,17 +285,16 @@ void KitaDomTree::updateFooter( DOM::Element& targetelm ) } } - targetelm.appendChild( bkupElm ); /* "#tosaigo" */ + footerElement.appendChild( backupElement ); /* "#tosaigo" */ } - -/* create footer or header node */ /* private */ +/* + * create header node + */ void KitaDomTree::createHeader() { - if ( m_hdoc == NULL ) return ; - QString str; - DOM::Element rootnode, tmpelm; + DOM::Element rootnode; rootnode = m_hdoc.createElement( "DIV" ); { @@ -302,11 +302,11 @@ void KitaDomTree::createHeader() rootnode.setAttribute( "id", "header" ); str = Kita::utf8ToUnicode( KITAUTF8_KOKOYON ); - appendANode( rootnode, "#kokomade_yonda", str ); + appendAnchorNode( rootnode, "#kokomade_yonda", str ); rootnode.appendChild( m_hdoc.createTextNode( " " ) ); str = Kita::utf8ToUnicode( KITAUTF8_SAIGO ); - appendANode( rootnode, "#tosaigo", str ); + appendAnchorNode( rootnode, "#tosaigo", str ); rootnode.appendChild( m_hdoc.createElement( "BR" ) ); rootnode.appendChild( m_hdoc.createElement( "BR" ) ); @@ -316,13 +316,13 @@ void KitaDomTree::createHeader() } -/* create footer or header node */ /* private */ +/* + * create footer node + */ void KitaDomTree::createFooter() { - if ( m_hdoc == NULL ) return ; - QString str; - DOM::Element rootnode, tmpelm; + DOM::Element rootnode; rootnode = m_hdoc.createElement( "DIV" ); { @@ -330,18 +330,19 @@ void KitaDomTree::createFooter() rootnode.setAttribute( "id", "footer" ); str = Kita::utf8ToUnicode( KITAUTF8_KOKOYON ); - appendANode( rootnode, "#kokomade_yonda", str ); + appendAnchorNode( rootnode, "#kokomade_yonda", str ); rootnode.appendChild( m_hdoc.createTextNode( " " ) ); str = Kita::utf8ToUnicode( KITAUTF8_SAIGO ); - appendANode( rootnode, "#tosaigo", str ); + appendAnchorNode( rootnode, "#tosaigo", str ); } m_footer = rootnode; } - -/* create kokomadeyonda node */ /* private */ +/* + * create kokomadeyonda node + */ void KitaDomTree::createKokoyon() { QString str, style; @@ -361,23 +362,18 @@ void KitaDomTree::createKokoyon() } -/* change color of number */ /* - specify color like this: "a.coloredLink:link{ color: red; }" */ /* private */ - + * change color of number + * specify color like this: "a.coloredLink:link{ color: red; }" + */ void KitaDomTree::changeColorOfNumber( int num ) { - if ( ! m_datInfo ) return ; - if ( m_hdoc == NULL ) return ; if ( m_coloredNum[ num ] ) return ; m_coloredNum[ num ] = TRUE; + DOM::Node node = m_titleElm[ num ]; node = node.firstChild(); - while ( ! node.isNull() && node.nodeName().string() != "a" ) { - node = node.firstChild(); /* table tag is used. */ - } - if ( node.isNull() ) return; - static_cast< DOM::HTMLElement> ( node ).setAttribute( "class", "coloredLink" ); + static_cast( node ).setAttribute( "class", "coloredLink" ); } diff --git a/kita/src/thread/domtree.h b/kita/src/thread/domtree.h index fd8951b..5b33d84 100644 --- a/kita/src/thread/domtree.h +++ b/kita/src/thread/domtree.h @@ -71,12 +71,11 @@ public: /* header Node, footer Node, kokomadeyonda Node, etc... */ void appendFooterAndHeader(); - void appendKokoyon(); private: - void appendANode( DOM::Element rootnode, const QString& linkstr, const QString& comment ); + void appendAnchorNode( DOM::Element rootnode, const QString& linkstr, const QString& comment ); void updateHeader( DOM::Element& targetelm ); void updateFooter( DOM::Element& targetelm ); void createHeader(); -- 2.11.0