[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdepimlibs/akregator_port] krss: move language, commentfeed-related tags and additional properties
From:       Frank Osterfeld <frank.osterfeld () kdemail ! net>
Date:       2012-03-31 15:16:21
Message-ID: 20120331151621.D2329A60D6 () git ! kde ! org
[Download RAW message or body]

Git commit 53240fb5c0b58f5545923cc635877a318c25e560 by Frank Osterfeld.
Committed on 02/08/2009 at 21:59.
Pushed by osterfeld into branch 'akregator_port'.

move language, commentfeed-related tags and additional properties from Headers to \
Content Use QHash::const_iterator and const refs in the Q_FOREACHs

svn path=/branches/work/akonadi-ports/kdepim/; revision=1006008

M  +3    -3    krss/rssitemserializer.h
M  +40   -53   krss/rssitemserializer_xml.cpp

http://commits.kde.org/kdepimlibs/53240fb5c0b58f5545923cc635877a318c25e560

diff --git a/krss/rssitemserializer.h b/krss/rssitemserializer.h
index 8488be6..b2693fb 100644
--- a/krss/rssitemserializer.h
+++ b/krss/rssitemserializer.h
@@ -37,9 +37,9 @@ class KRSS_EXPORT RssItemSerializer
 public:
 
     enum ItemPart {
-        Headers,
-        Content,
-        Full
+        Headers=0x01,
+        Content=0x02,
+        Full=Headers|Content
     };
 
     static void serialize( const KRss::RssItem& item, QByteArray& array, ItemPart \
                part = Full );
diff --git a/krss/rssitemserializer_xml.cpp b/krss/rssitemserializer_xml.cpp
index 6655171..2204a24 100644
--- a/krss/rssitemserializer_xml.cpp
+++ b/krss/rssitemserializer_xml.cpp
@@ -37,6 +37,8 @@
 #include <QXmlStreamReader>
 #include <QXmlStreamWriter>
 
+using namespace KRss;
+
 namespace {
 
 enum TextMode {
@@ -219,47 +221,27 @@ static void writeItemHeaders( const KRss::RssItem& item, \
QXmlStreamWriter& write  {
     Elements::instance.title.write( item.title(), writer, Html );
     writeLink( item.link(), writer );
-    Elements::instance.language.write( item.language(), writer );
     Elements::instance.guid.write( item.guid(), writer );
 
     const KDateTime updated = item.dateUpdated();
     const KDateTime published = item.datePublished();
     Elements::instance.published.write( published.toString( KDateTime::ISODate ), \
writer );  if ( updated.isValid() && updated != published )
-    {
         Elements::instance.updated.write( updated.toString( KDateTime::ISODate ), \
                writer );
-    }
 
-    Elements::instance.commentsFeed.write( item.commentsFeed(), writer );
-    Elements::instance.commentPostUri.write( item.commentPostUri(), writer );
-    Elements::instance.commentsCount.write( item.commentsCount(), writer );
-    Elements::instance.commentsLink.write( item.commentsLink(), writer );
-
-    Q_FOREACH( const KRss::Category i, item.categories() )
-    {
+    Q_FOREACH( const KRss::Category& i, item.categories() )
         writeCategory( i, writer );
-    }
-    Q_FOREACH( const KRss::Person i, item.authors() )
-    {
+
+    Q_FOREACH( const KRss::Person& i, item.authors() )
         writeAuthor( i, writer );
-    }
-    Q_FOREACH( const KRss::Enclosure i, item.enclosures() )
-    {
+
+    Q_FOREACH( const KRss::Enclosure& i, item.enclosures() )
         writeEnclosure( i, writer );
-    }
 
     Elements::instance.hash.write( item.hash(), writer );
     Elements::instance.guidIsHash.write( item.guidIsHash(), writer );
     Elements::instance.sourceFeedId.write( item.sourceFeedId(), writer );
 
-    const QHash<QString, QString> props = item.customProperties();
-    Q_FOREACH ( const QString i, props.keys() )
-    {
-        Elements::instance.customProperty.writeStartElement( writer );
-        Elements::instance.key.write( i, writer );
-        Elements::instance.value.write( props[i], writer );
-        writer.writeEndElement();
-    }
 }
 
 static void writeItemContent( const KRss::RssItem& item, QXmlStreamWriter& writer )
@@ -269,6 +251,21 @@ static void writeItemContent( const KRss::RssItem& item, \
QXmlStreamWriter& write  const QString content = item.content();
     if ( content != description )
         Elements::instance.content.write( content, writer, Html );
+    Elements::instance.language.write( item.language(), writer );
+    Elements::instance.commentsFeed.write( item.commentsFeed(), writer );
+    Elements::instance.commentPostUri.write( item.commentPostUri(), writer );
+    Elements::instance.commentsCount.write( item.commentsCount(), writer );
+    Elements::instance.commentsLink.write( item.commentsLink(), writer );
+    const QHash<QString, QString> props = item.customProperties();
+    QHash<QString, QString>::const_iterator it = props.constBegin();
+    while ( it != props.constEnd() )
+    {
+        Elements::instance.customProperty.writeStartElement( writer );
+        Elements::instance.key.write( it.key(), writer );
+        Elements::instance.value.write( it.value(), writer );
+        writer.writeEndElement();
+        ++it;
+    }
 }
 
 static void writeItem( const KRss::RssItem& item, QXmlStreamWriter& writer, \
KRss::RssItemSerializer::ItemPart part ) @@ -282,20 +279,10 @@ static void writeItem( \
const KRss::RssItem& item, QXmlStreamWriter& writer, KRss  writer.writeNamespace( \
Syndication::itunesNamespace(), "itunes" );  
     Elements::instance.entry.writeStartElement( writer );
-    switch ( part ) {
-        case KRss::RssItemSerializer::Headers:
-            writeItemHeaders( item, writer );
-            break;
-        case KRss::RssItemSerializer::Content:
-            writeItemContent( item, writer );
-            break;
-        case KRss::RssItemSerializer::Full:
-            writeItemHeaders( item, writer );
-            writeItemContent( item, writer );
-            break;
-        default:
-            break;
-    }
+    if ( ( part & RssItemSerializer::Headers ) != 0 )
+        writeItemHeaders( item, writer );
+    if ( ( part & RssItemSerializer::Content ) != 0 )
+        writeItemContent( item, writer );
 
     writer.writeEndElement();   // Entry
 }
@@ -400,8 +387,8 @@ bool KRss::RssItemSerializer::deserialize( KRss::RssItem& item, \
const QByteArray  QXmlStreamReader reader( array );
     reader.setNamespaceProcessing( true );
 
-    const bool readHeaders = part == Full || part == Headers;
-    const bool readContent = part == Full || part == Content;
+    const bool readHeaders = ( part & Headers ) != 0;
+    const bool readContent = ( part & Content ) != 0;
 
     if ( readHeaders )
         item.setHeadersLoaded( true );
@@ -419,12 +406,22 @@ bool KRss::RssItemSerializer::deserialize( KRss::RssItem& item, \
const QByteArray  item.setDescription( reader.readElementText() );
                 else if ( Elements::instance.content.isNextIn( reader ) )
                     item.setContent( reader.readElementText() );
+                else if ( Elements::instance.language.isNextIn( reader ) )
+                    item.setLanguage( reader.readElementText() );
+                else if ( Elements::instance.commentsLink.isNextIn( reader ) )
+                    item.setCommentsLink( reader.readElementText() );
+                else if ( Elements::instance.commentPostUri.isNextIn( reader ) )
+                    item.setCommentPostUri( reader.readElementText() );
+                else if ( Elements::instance.commentsCount.isNextIn( reader ) )
+                    item.setCommentsCount( reader.readElementText().toInt() );
+                else if ( Elements::instance.commentsFeed.isNextIn( reader ) )
+                    item.setCommentsFeed( reader.readElementText() );
+                else if ( Elements::instance.customProperty.isNextIn( reader ) )
+                    ::readCustomProperty( item, reader );
             }
             if ( readHeaders ) {
                 if ( Elements::instance.title.isNextIn( reader ) )
                     item.setTitle( reader.readElementText() );
-                else if ( Elements::instance.language.isNextIn( reader ) )
-                    item.setLanguage( reader.readElementText() );
                 else if ( Elements::instance.guid.isNextIn( reader ) )
                     item.setGuid( reader.readElementText() );
                 else if ( Elements::instance.hash.isNextIn( reader ) )
@@ -433,14 +430,6 @@ bool KRss::RssItemSerializer::deserialize( KRss::RssItem& item, \
                const QByteArray
                     item.setGuidIsHash( QVariant( reader.readElementText() \
                ).toBool() );
                 else if ( Elements::instance.sourceFeedId.isNextIn( reader ) )
                     item.setSourceFeedId( reader.readElementText().toInt() );
-                else if ( Elements::instance.commentsLink.isNextIn( reader ) )
-                    item.setCommentsLink( reader.readElementText() );
-                else if ( Elements::instance.commentPostUri.isNextIn( reader ) )
-                    item.setCommentPostUri( reader.readElementText() );
-                else if ( Elements::instance.commentsCount.isNextIn( reader ) )
-                    item.setCommentsCount( reader.readElementText().toInt() );
-                else if ( Elements::instance.commentsFeed.isNextIn( reader ) )
-                    item.setCommentsFeed( reader.readElementText() );
                 else if ( Elements::instance.link.isNextIn( reader ) )
                     ::readLink( item, reader );
                 else if ( Elements::instance.author.isNextIn( reader ) )
@@ -451,8 +440,6 @@ bool KRss::RssItemSerializer::deserialize( KRss::RssItem& item, \
                const QByteArray
                     item.setDatePublished( KDateTime::fromString( \
reader.readElementText(), KDateTime::ISODate ) );  else if ( \
                Elements::instance.updated.isNextIn( reader ) )
                     item.setDateUpdated( KDateTime::fromString( \
                reader.readElementText(), KDateTime::ISODate ) );
-                else if ( Elements::instance.customProperty.isNextIn( reader ) )
-                    ::readCustomProperty( item, reader );
             }
         }
     }


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic