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

List:       kde-commits
Subject:    playground/pim/krss
From:       Dmitry Ivanov <vonami () gmail ! com>
Date:       2009-05-25 10:41:31
Message-ID: 1243248091.575523.28375.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 972573 by divanov:

 - merge Feed and PersistentFeed into Feed
 - add SearchFeed
 - move feed-related jobs to feedjobs.cpp


 M  +2 -2      krssreader/mainwidget.cpp  
 M  +2 -2      krssreader/migratefeedscommand.cpp  
 M  +4 -6      libkrss/CMakeLists.txt  
 AM            libkrss/feed.cpp   libkrss/persistentfeed.cpp#972098 [License: GPL \
(v2+)]  AM            libkrss/feed.h   libkrss/persistentfeed.h#972098 [License: GPL \
(v2+)]  AM            libkrss/feed_p.h   libkrss/persistentfeed_p.h#972098 [License: \
GPL (v2+)]  A             libkrss/feedjobs.cpp   [License: GPL (v2+)]
 A             libkrss/feedjobs.h   [License: GPL (v2+)]
 M  +63 -14    libkrss/feedlist.cpp  
 M  +5 -1      libkrss/feedlist.h  
 M  +1 -1      libkrss/feedlist_p.h  
 M  +2 -2      libkrss/item.h  
 M  +9 -7      libkrss/netfeed.cpp  
 M  +7 -8      libkrss/netfeed.h  
 D             libkrss/persistentfeed.cpp  
 D             libkrss/persistentfeed.h  
 D             libkrss/persistentfeed_p.h  
 D             libkrss/persistentfeeddeletejob.cpp  
 D             libkrss/persistentfeeddeletejob.h  
 D             libkrss/persistentfeedmodifyjob.cpp  
 D             libkrss/persistentfeedmodifyjob.h  
 A             libkrss/searchfeed.cpp   [License: GPL (v2+)]
 A             libkrss/searchfeed.h   [License: GPL (v2+)]
 M  +10 -12    libkrss/standardactionmanager.cpp  
 M  +2 -2      libkrss/tagprovider.h  
 M  +1 -1      libkrss/treenodevisitor.cpp  


--- trunk/playground/pim/krss/krssreader/mainwidget.cpp #972572:972573
@@ -122,7 +122,7 @@
 }
 
 void MainWidget::importItems() {
-    NetFeed* nf = static_cast<NetFeed*>( qobject_cast<PersistentFeed*>( \
m_currentFeed ) ); +    NetFeed* nf = static_cast<NetFeed*>( qobject_cast<Feed*>( \
m_currentFeed ) );  
     //TODO assuming for now that the feed is from the first resource
     const Resource* const resource = ResourceManager::self()->resource( \
ResourceManager::self()->identifiers().first() ); @@ -240,7 +240,7 @@
 
     m_currentNode = node;
 
-    const NetFeed * const nf = static_cast<const NetFeed*>( \
qobject_cast<PersistentFeed*>( m_currentFeed ) ); +    const NetFeed * const nf = \
                static_cast<const NetFeed*>( qobject_cast<Feed*>( m_currentFeed ) );
     m_actionCollection->action( QString::fromLatin1( "krssreader_import_items" ) \
)->setEnabled( nf );  
     Akonadi::ItemFetchScope fetchScope;
--- trunk/playground/pim/krss/krssreader/migratefeedscommand.cpp #972572:972573
@@ -311,8 +311,8 @@
         return;
     }
 
-    const QList<NetFeed*> netFeeds = feedList->netFeeds();
-    Q_FOREACH( const NetFeed* const i, netFeeds ) {
+    const QList<shared_ptr<const NetFeed> > netFeeds = feedList->constNetFeeds();
+    Q_FOREACH( const shared_ptr<const NetFeed>& i, netFeeds ) {
         ImportOpmlJob::FeedInfo fi;
         fi.xmlUrl = i->xmlUrl();
         fi.title = i->title();
--- trunk/playground/pim/krss/libkrss/CMakeLists.txt #972572:972573
@@ -31,7 +31,7 @@
    resourcemanager.cpp
    resource.cpp
    feed.cpp
-   persistentfeed.cpp
+   searchfeed.cpp
    netfeed.cpp
    feedlist.cpp
    dbushelper.cpp
@@ -43,11 +43,10 @@
    importopmljob.cpp
    itemlisting.cpp
    itemlistjob.cpp
+   feedjobs.cpp
    itemjobs.cpp
    itemstatusmodifyjob.cpp
    netfeedcreatejob.cpp
-   persistentfeedmodifyjob.cpp
-   persistentfeeddeletejob.cpp
    rssitemserializer_xml.cpp
    standardactionmanager.cpp
    #subscriptionsmodel.cpp
@@ -97,7 +96,7 @@
    tag.h
    resourcemanager.h
    feed.h
-   persistentfeed.h
+   searchfeed.h
    netfeed.h
    feedlist.h
    itemlisting.h
@@ -106,10 +105,9 @@
    importopmljob.h
    feedlistmodel.h
    itemjobs.h
+   feedjobs.h
    itemstatusmodifyjob.h
    netfeedcreatejob.h
-   persistentfeedmodifyjob.h
-   persistentfeeddeletejob.h
    standardactionmanager.h
    subscriptionsmodel.h
    tagjobs.h
** trunk/playground/pim/krss/libkrss/feed.cpp #property svn:mergeinfo
   + 
** trunk/playground/pim/krss/libkrss/feed.h #property svn:mergeinfo
   + 
** trunk/playground/pim/krss/libkrss/feed_p.h #property svn:mergeinfo
   + 
--- trunk/playground/pim/krss/libkrss/feedlist.cpp #972572:972573
@@ -19,8 +19,9 @@
 #include "feedlist_p.h"
 #include "resource.h"
 #include "resourcemanager.h"
-#include "persistentfeed.h"
+#include "feed.h"
 #include "netfeed.h"
+#include "searchfeed.h"
 #include "feedcollection.h"
 
 #include <akonadi/collectionfetchjob.h>
@@ -40,13 +41,13 @@
 
 using namespace KRss;
 using boost::shared_ptr;
+using boost::dynamic_pointer_cast;
 
-
 // private implementation
-KRss::Feed::Id FeedListPrivate::appendPersistentFeed( const FeedCollection& \
collection ) +KRss::Feed::Id FeedListPrivate::appendFeed( const FeedCollection& \
collection )  {
     m_feedsMap[ collection.resource() ].append( collection.id() );
-    shared_ptr<Feed> feed( new PersistentFeed( collection, m_resources.value( \
collection.resource() ) ) ); +    shared_ptr<Feed> feed( new NetFeed( collection, \
m_resources.value( collection.resource() ) ) );  m_feeds.insert( collection.id(), \
feed );  
     QObject::connect( feed.get(), SIGNAL( unreadCountChanged( const KRss::Feed::Id&, \
int ) ), @@ -107,7 +108,7 @@
     }
 
     Collection col = static_cast<CollectionFetchJob*>( job )->collections().first();
-    const KRss::Feed::Id id = appendPersistentFeed( col );
+    const KRss::Feed::Id id = appendFeed( col );
     emit q->feedAdded( id );
     dump();
 }
@@ -151,20 +152,68 @@
 
 QStringList FeedList::feedUrls() const {
     QStringList urls;
-    Q_FOREACH( const shared_ptr<const Feed>& i, d->m_feeds.values() )
-        if ( const PersistentFeed* const pf = qobject_cast<const PersistentFeed* \
                const>( i.get() ) )
-            urls += static_cast<const NetFeed* const>( pf )->xmlUrl(); // FIXME: \
needs to be fixed for persistent search folders +    Q_FOREACH( const \
shared_ptr<const Feed>& feed, d->m_feeds.values() ) { +        if ( \
!feed->isVirtual() ) { +            const shared_ptr<const NetFeed> netFeed = \
dynamic_pointer_cast<const NetFeed, const Feed>( feed ); +            Q_ASSERT( \
netFeed ); +            urls += netFeed->xmlUrl();
+        }
+    }
     return urls;
 }
 
-QList<NetFeed*> FeedList::netFeeds() const {
-    QList<NetFeed*> netFeeds;
-    Q_FOREACH( const shared_ptr<Feed>& i, d->m_feeds.values() )
-        if ( PersistentFeed* const pf = qobject_cast<PersistentFeed* const>( i.get() \
                ) )
-            netFeeds += static_cast<NetFeed* const>( pf ); // FIXME: needs to be \
fixed for persistent search folders +QList<shared_ptr<NetFeed> > FeedList::netFeeds() \
const +{
+    QList<shared_ptr<NetFeed> > netFeeds;
+    Q_FOREACH( const shared_ptr<Feed>& feed, d->m_feeds.values() ) {
+        if ( !feed->isVirtual() ) {
+            const shared_ptr<NetFeed> netFeed = dynamic_pointer_cast<NetFeed, Feed>( \
feed ); +            Q_ASSERT( netFeed );
+            netFeeds.append( netFeed );
+        }
+    }
     return netFeeds;
 }
 
+QList<shared_ptr<const NetFeed> > FeedList::constNetFeeds() const
+{
+    QList<shared_ptr<const NetFeed> > constNetFeeds;
+    Q_FOREACH( const shared_ptr<const Feed>& feed, d->m_feeds.values() ) {
+        if ( !feed->isVirtual() ) {
+            const shared_ptr<const NetFeed> netFeed = dynamic_pointer_cast<const \
NetFeed, const Feed>( feed ); +            Q_ASSERT( netFeed );
+            constNetFeeds.append( netFeed );
+        }
+    }
+    return constNetFeeds;
+}
+
+QList<shared_ptr<SearchFeed> > FeedList::searchFeeds() const
+{
+    QList<shared_ptr<SearchFeed> > searchFeeds;
+    Q_FOREACH( const shared_ptr<Feed>& feed, d->m_feeds.values() ) {
+        if ( feed->isVirtual() ) {
+            const shared_ptr<SearchFeed> searchFeed = \
dynamic_pointer_cast<SearchFeed, Feed>( feed ); +            Q_ASSERT( searchFeed );
+            searchFeeds.append( searchFeed );
+        }
+    }
+    return searchFeeds;
+}
+
+QList<shared_ptr<const SearchFeed> > FeedList::constSearchFeeds() const
+{
+    QList<shared_ptr<const SearchFeed> > constSearchFeeds;
+    Q_FOREACH( const shared_ptr<const Feed>& feed, d->m_feeds.values() ) {
+        if ( feed->isVirtual() ) {
+            const shared_ptr<const SearchFeed> searchFeed = \
dynamic_pointer_cast<const SearchFeed, const Feed>( feed ); +            Q_ASSERT( \
searchFeed ); +            constSearchFeeds.append( searchFeed );
+        }
+    }
+    return constSearchFeeds;
+}
+
 QList<Feed::Id> FeedList::feedIds() const
 {
     return d->m_feeds.keys();
@@ -264,7 +313,7 @@
     Q_FOREACH( const Collection &col, cols ) {
         // accept only 'first generation' child collections
         if ( col.parent() != Collection::root().id() ) {
-            feedList->d->appendPersistentFeed( col );
+            feedList->d->appendFeed( col );
             uris.append( col.url() );
         }
     }
--- trunk/playground/pim/krss/libkrss/feedlist.h #972572:972573
@@ -30,6 +30,7 @@
 namespace KRss {
 
 class NetFeed;
+class SearchFeed;
 class RetrieveFeedListJob;
 class RetrieveFeedListJobPrivate;
 
@@ -48,8 +49,11 @@
 
     QList<boost::shared_ptr<Feed> > feeds() const;
     QList<boost::shared_ptr<const Feed> > constFeeds() const;
+    QList<boost::shared_ptr<NetFeed> > netFeeds() const;
+    QList<boost::shared_ptr<const NetFeed> > constNetFeeds() const;
+    QList<boost::shared_ptr<SearchFeed> > searchFeeds() const;
+    QList<boost::shared_ptr<const SearchFeed> > constSearchFeeds() const;
 
-    QList<NetFeed*> netFeeds() const;
     QList<Feed::Id> feedIds() const;
     QStringList feedUrls() const;
 
--- trunk/playground/pim/krss/libkrss/feedlist_p.h #972572:972573
@@ -42,7 +42,7 @@
     {
     }
 
-    KRss::Feed::Id appendPersistentFeed( const FeedCollection& feedCollection );
+    KRss::Feed::Id appendFeed( const FeedCollection& feedCollection );
     void dump();
 
     void slotFeedAdded( const KRss::Feed::Id& id );
--- trunk/playground/pim/krss/libkrss/item.h #972572:972573
@@ -257,8 +257,8 @@
     friend class ItemModifyJobPrivate;
     friend class ItemDeleteJob;
     friend class ItemDeleteJobPrivate;
-    friend class PersistentFeed;
-    friend class PersistentFeedItemListJobImpl;
+    friend class Feed;
+    friend class ItemListJobImpl;
 
     class Private;
     QSharedDataPointer<Private> d;
--- trunk/playground/pim/krss/libkrss/netfeed.cpp #972572:972573
@@ -16,37 +16,39 @@
 */
 
 #include "netfeed.h"
+#include "feed_p.h"
 #include "feedcollection.h"
 
 using namespace KRss;
 
-NetFeed::NetFeed( const FeedCollection &feedCollection, Resource *resource, QObject \
                *parent )
-    : PersistentFeed( feedCollection, resource, parent )
+NetFeed::NetFeed( const FeedCollection &feedCollection, const Resource *resource, \
QObject *parent ) +    : Feed( feedCollection, resource, parent )
 {
 }
 
-NetFeed::~NetFeed()
+bool NetFeed::isVirtual() const
 {
+    return false;
 }
 
 QString NetFeed::xmlUrl() const
 {
-    return feedCollection().xmlUrl();
+    return d->m_feedCollection.xmlUrl();
 }
 
 void NetFeed::setXmlUrl( const QString &xmlUrl )
 {
-    feedCollection().setXmlUrl( xmlUrl );
+    d->m_feedCollection.setXmlUrl( xmlUrl );
 }
 
 QString NetFeed::htmlUrl() const
 {
-    return feedCollection().htmlUrl();
+    return d->m_feedCollection.htmlUrl();
 }
 
 void NetFeed::setHtmlUrl( const QString &htmlUrl )
 {
-    feedCollection().setHtmlUrl( htmlUrl );
+    d->m_feedCollection.setHtmlUrl( htmlUrl );
 }
 
 #include "netfeed.moc"
--- trunk/playground/pim/krss/libkrss/netfeed.h #972572:972573
@@ -19,29 +19,28 @@
 #define KRSS_NETFEED_H
 
 #include "krss_export.h"
-#include "persistentfeed.h"
+#include "feed.h"
 
 namespace KRss {
 
-class KRSS_EXPORT NetFeed : public PersistentFeed
+class KRSS_EXPORT NetFeed : public Feed
 {
     Q_OBJECT
 
 public:
-
-    ~NetFeed();
-
+    bool isVirtual() const;
     QString xmlUrl() const;
     void setXmlUrl( const QString &xmlUrl );
     QString htmlUrl() const;
     void setHtmlUrl( const QString &htmlUrl );
 
-private:
+    //TODO: cache policies
 
-    explicit NetFeed( const FeedCollection &feedCollection, Resource *resource, \
                QObject *parent = 0 );
-
 private:
+    explicit NetFeed( const FeedCollection& feedCollection, const Resource \
*resource, QObject *parent = 0 );  
+private:
+    friend class FeedListPrivate;
     Q_DISABLE_COPY(NetFeed)
 };
 
--- trunk/playground/pim/krss/libkrss/standardactionmanager.cpp #972572:972573
@@ -21,12 +21,10 @@
 #include "treenode.h"
 #include "itemmodel.h"
 #include "feed.h"
-#include "persistentfeed.h"
 #include "item.h"
 #include "netfeed.h"
 #include "netfeedcreatejob.h"
-#include "persistentfeedmodifyjob.h"
-#include "persistentfeeddeletejob.h"
+#include "feedjobs.h"
 #include "itemjobs.h"
 #include "resourcemanager.h"
 #include "ui/netfeedcreatedialog.h"
@@ -50,6 +48,7 @@
 
 using namespace KRss;
 using boost::shared_ptr;
+using boost::dynamic_pointer_cast;
 
 static const struct {
     const char *name;
@@ -340,8 +339,7 @@
     if ( !feedNode )
         return;
 
-    // FIXME: the feedlist should contain only NetFeeds
-    NetFeed *feed = static_cast<NetFeed*>( d->m_feedList->feedById( \
feedNode->feedId() ).get() ); +    shared_ptr<NetFeed> feed = \
dynamic_pointer_cast<NetFeed, Feed>( d->m_feedList->feedById( feedNode->feedId() ) ); \
  FeedPropertiesDialog *dialog = new FeedPropertiesDialog();
     dialog->setFeedTitle( feed->title() );
@@ -355,7 +353,7 @@
         dialog->hasCustomFetchInterval() ? feed->setFetchInterval( \
dialog->fetchInterval() ) :  feed->setFetchInterval( 0 );
 
-        PersistentFeedModifyJob *job = new PersistentFeedModifyJob( feed, this );
+        FeedModifyJob * const job = new FeedModifyJob( feed, this );
         connect( job, SIGNAL( result( KJob* ) ), this, SLOT( slotFeedModified( KJob* \
) ) );  job->start();
     }
@@ -379,10 +377,10 @@
     if ( !feedNode )
         return;
 
-    PersistentFeed *feed = qobject_cast<PersistentFeed*>( d->m_feedList->feedById( \
feedNode->feedId() ).get() ); +    shared_ptr<const Feed> feed = \
d->m_feedList->constFeedById( feedNode->feedId() );  Q_ASSERT( feed );
 
-    PersistentFeedDeleteJob *job = new PersistentFeedDeleteJob( feed , this );
+    FeedDeleteJob * const job = new FeedDeleteJob( feed , this );
     connect( job, SIGNAL( result( KJob* ) ), this, SLOT( slotFeedDeleted( KJob* ) ) \
);  job->start();
 }
@@ -464,17 +462,17 @@
     dialog->setInitialSize( QSize( 400, 460 ) );
 
     if ( dialog->exec() == KDialog::Accepted ) {
-        Q_FOREACH( PersistentFeed *feed, subscriptionsModel->unsubscribed() ) {
+        Q_FOREACH( Feed *feed, subscriptionsModel->unsubscribed() ) {
             kDebug() << "Unsubscribing from:" << feed->id() << ", title:" << \
feed->title();  feed->removeSubscriptionLabel( d->m_subscriptionLabel );
-            PersistentFeedModifyJob *job = new PersistentFeedModifyJob( \
static_cast<const PersistentFeed *> ( feed ), this ); +            FeedModifyJob *job \
                = new FeedModifyJob( static_cast<const Feed *> ( feed ), this );
             connect( job, SIGNAL( result( KJob* ) ), this, SLOT( slotFeedModified( \
KJob* ) ) );  job->start();
         }
-        Q_FOREACH( PersistentFeed *feed, subscriptionsModel->subscribed() ) {
+        Q_FOREACH( Feed *feed, subscriptionsModel->subscribed() ) {
             kDebug() << "Subscribing to:" << feed->id() << ", title:" << \
feed->title();  feed->addSubscriptionLabel( d->m_subscriptionLabel );
-            PersistentFeedModifyJob *job = new PersistentFeedModifyJob( \
static_cast<const PersistentFeed *> ( feed ), this ); +            FeedModifyJob *job \
                = new FeedModifyJob( static_cast<const Feed *> ( feed ), this );
             connect( job, SIGNAL( result( KJob* ) ), this, SLOT( slotFeedModified( \
KJob* ) ) );  job->start();
         }
--- trunk/playground/pim/krss/libkrss/tagprovider.h #972572:972573
@@ -71,8 +71,8 @@
     // these jobs use Tag*ReferencesJob to update
     // the tagprovider specific storage
     // when creating/modifying/deleting feeds/articles
-    friend class PersistentFeedModifyJobPrivate;
-    friend class PersistentFeedDeleteJobPrivate;
+    friend class FeedModifyJobPrivate;
+    friend class FeedDeleteJobPrivate;
     friend class ItemModifyJobPrivate;
     friend class ItemDeleteJobPrivate;
     Q_DISABLE_COPY( TagProvider )
--- trunk/playground/pim/krss/libkrss/treenodevisitor.cpp #972572:972573
@@ -124,5 +124,5 @@
 
 void CreateItemListJobVisitor::visit( const shared_ptr<FeedNode>& feedNode )
 {
-    d->m_job->addSubJob( d->m_feedList->constFeedById( feedNode->feedId() \
)->createListJob() ); +    d->m_job->addSubJob( d->m_feedList->feedById( \
feedNode->feedId() )->itemListJob() );  }


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

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