#include "libkita/kita-utf8.h"
#include "libkita/kita_misc.h"
-
-/*---------------------------------------------------------------*/
-/*---------------------------------------------------------------*/
-
-
KitaDomTree::KitaDomTree( const DOM::HTMLDocument& hdoc, const KURL& datURL )
{
m_hdoc = hdoc;
/*
- 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;
/*---------------------------------*/
if ( ! m_datInfo ) return FALSE;
- if ( m_hdoc == NULL ) return FALSE;
if ( num <= 0 ) return FALSE;
if ( num < m_bufSize ) {
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... */
void KitaDomTree::changeColorOfAllResponsedNumber()
{
for ( int i = 1; i <= m_bottomNum; ++i ) {
-
if ( m_datInfo->isResponsed( i ) ) changeColorOfNumber( i );
}
}
-
-
-/*-----------------------------------------------------------------*/
-
/* public information */
/* public */
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 ;
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 ;
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<br><br>
+ * after : #KokomadeYonda 1- 101- 201- 301- 401- #ToSaigo<br><br>
+ */
+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 <BR> */
- backupElement1 = targetelm.removeChild( targetelm.lastChild() ); /* BR */
- backupElement2 = targetelm.removeChild( targetelm.lastChild() ); /* BR */
- backupElement3 = targetelm.removeChild( targetelm.lastChild() ); /* "#tosaigo" */
+ /* remove <a href="#tosaigo"> and <BR> */
+ 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 {
// 既にリンクが作られている場合は飛ばす
}
}
- /* append < a href="#tosaigo"> and <BR> */
- targetelm.appendChild( backupElement3 ); /* "#tosaigo" */
- targetelm.appendChild( backupElement2 ); /* BR */
- targetelm.appendChild( backupElement1 ); /* BR */
+ /* restore <a href="#tosaigo"> and <BR> */
+ 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 {
// 既にリンクが作られている場合は飛ばす
}
}
- 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" );
{
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" ) );
}
-/* 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" );
{
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;
}
-/* 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<DOM::HTMLElement>( node ).setAttribute( "class", "coloredLink" );
}