#include <kdebug.h>
#include <qstylesheet.h>
+#include <qdom.h>
#include "threadinfo.h"
+#include "board.h"
FavoriteThreads* FavoriteThreads::instance = 0;
}
}
+bool FavoriteThreads::readFromXML( const QString& xml )
+{
+ FavoriteThreads * instance = FavoriteThreads::getInstance();
+ instance->m_threadDict.clear();
+
+ QDomDocument document;
+ if ( ! document.setContent( xml, true ) ) {
+ return false;
+ }
+
+ QDomElement root = document.documentElement();
+
+ QDomNode node = root.firstChild();
+ while ( !node.isNull() ) {
+ if ( node.isElement() &&
+ node.nodeName() == QString( "thread" ) &&
+ node.namespaceURI() == QString( "http://kita.sourceforge.jp/ns/thread" ) ) {
+ processThreadNode( node );
+ }
+ node = node.nextSibling();
+ }
+ return true;
+}
+
+void FavoriteThreads::processThreadNode( QDomNode& node )
+{
+ QDomNode datURLNode = node.namedItem( "daturl" );
+ QDomNode nameNode = node.namedItem( "name" );
+ QDomNode resNumNode = node.namedItem( "resnum" );
+ QDomNode boardNode = node.namedItem( "board" );
+
+ if ( !datURLNode.isElement() || !nameNode.isElement() ||
+ !resNumNode.isElement() || !boardNode.isElement() ) {
+ return ;
+ }
+ if ( boardNode.namespaceURI() != QString( "http://kita.sourceforge.jp/ns/board" ) ) {
+ return ;
+ }
+ if ( !processBoardNode( boardNode ) ) {
+ return ;
+ }
+ QString datURLText = datURLNode.toElement().text();
+ QString nameText = nameNode.toElement().text();
+ int resNum = resNumNode.toElement().text().toInt();
+
+ Kita::Thread::setName( datURLText, nameText );
+ KitaThreadInfo::setResNum( datURLText, resNum );
+
+ FavoriteThreads::getInstance() ->insert( Kita::Thread::getByURL( datURLText ) );
+}
+
+bool FavoriteThreads::processBoardNode( QDomNode& node )
+{
+ QDomNode urlNode = node.namedItem( "url" );
+ QDomNode nameNode = node.namedItem( "name" );
+ if ( ! urlNode.isElement() || ! nameNode.isElement() ) {
+ return false;
+ }
+
+ QString urlText = urlNode.toElement().text();
+ QString nameText = nameNode.toElement().text();
+
+ KURL url = KURL( urlText );
+ if ( url.isValid() ) {
+ Kita::Board::setName( urlText, nameText );
+ return true;
+ }
+ return false;
+}
+
FavoriteThreads* FavoriteThreads::fromXml( const QString& xml )
{
FavoriteThreads * instance = FavoriteThreads::getInstance();