[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-06-12 12:34:34
Message-ID: 1244810074.747733.12091.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 980667 by divanov:
Pass TagProvider around by shared_ptr
M +1 -1 krssreader/mainwidget.cpp
M +1 -1 krssreader/mainwidget.h
M +2 -2 libkrss/feedjobs.cpp
M +14 -10 libkrss/feedlistmodel.cpp
M +3 -2 libkrss/feedlistmodel.h
M +4 -2 libkrss/itemjobs.cpp
M +4 -4 libkrss/standardactionmanager.cpp
M +5 -1 libkrss/standardactionmanager.h
M +10 -7 libkrss/tagprovider.cpp
M +3 -4 libkrss/tagprovider.h
M +4 -4 libkrss/tests/tagprovidertest.cpp
M +2 -1 libkrss/tests/tagprovidertest.h
M +2 -1 resources/libkrssresource/exportopmljob.cpp
M +3 -2 resources/libkrssresource/importopmljob.cpp
M +3 -2 resources/libkrssresource/importopmljob.h
M +2 -1 resources/libkrssresource/tests/importopmljobtest.h
--- trunk/playground/pim/krss/krssreader/mainwidget.cpp #980666:980667
@@ -182,7 +182,7 @@
}
MainWidget::MainWidget( KXmlGuiWindow *parent )
- : QWidget( parent ), m_tagProvider( 0 ), m_actionCollection( \
parent->actionCollection() ) + : QWidget( parent ), m_actionCollection( \
parent->actionCollection() ) {
QHBoxLayout *mainLayout = new QHBoxLayout( this );
setLayout( mainLayout );
--- trunk/playground/pim/krss/krssreader/mainwidget.h #980666:980667
@@ -82,7 +82,7 @@
boost::shared_ptr<KRss::TreeNode> m_currentNode;
KRss::FeedListView *m_feedListView;
boost::shared_ptr<KRss::FeedList> m_feedList;
- const KRss::TagProvider *m_tagProvider;
+ boost::shared_ptr<const KRss::TagProvider> m_tagProvider;
KRss::StandardActionManager *m_actionManager;
QPointer<KActionCollection> m_actionCollection;
};
--- trunk/playground/pim/krss/libkrss/feedjobs.cpp #980666:980667
@@ -128,7 +128,7 @@
const TagProviderRetrieveJob * const tjob = qobject_cast<const \
TagProviderRetrieveJob*>( job ); Q_ASSERT( tjob );
- const TagProvider *tp = tjob->tagProvider();
+ const shared_ptr<const TagProvider> tp = tjob->tagProvider();
const QList<TagId> newTags = m_feed->tags();
kDebug() << "New tags:" << newTags;
@@ -222,7 +222,7 @@
const TagProviderRetrieveJob * const tjob = qobject_cast<const \
TagProviderRetrieveJob*>( job ); Q_ASSERT( tjob );
- const TagProvider *tp = tjob->tagProvider();
+ const shared_ptr<const TagProvider> tp = tjob->tagProvider();
TagDeleteReferencesJob *djob = tp->tagDeleteReferencesJob();
djob->setReferrer( m_feed.get() );
--- trunk/playground/pim/krss/libkrss/feedlistmodel.cpp #980666:980667
@@ -37,8 +37,9 @@
class FeedListModelPrivate
{
public:
- FeedListModelPrivate( const shared_ptr<const FeedList>& feedList, const \
TagProvider *provider,
- FeedListModel * const qq );
+ FeedListModelPrivate( const shared_ptr<const FeedList>& feedList,
+ const shared_ptr<const TagProvider>& tagProvider,
+ FeedListModel * const qq );
shared_ptr<TagNode> addTagNode( const Tag& tag );
void addFeed( const Feed::Id& feedId );
@@ -62,7 +63,7 @@
FeedListModel * const q;
shared_ptr<const FeedList> m_feedList;
- const TagProvider* m_tagProvider;
+ const shared_ptr<const TagProvider> m_tagProvider;
Tag m_allFeedsTag;
shared_ptr<RootNode> m_rootNode;
@@ -206,9 +207,10 @@
// private implementation
-FeedListModelPrivate::FeedListModelPrivate( const shared_ptr<const FeedList>& \
feedList, const TagProvider *provider, +FeedListModelPrivate::FeedListModelPrivate( \
const shared_ptr<const FeedList>& feedList, + \
const shared_ptr<const TagProvider>& tagProvider, FeedListModel * const qq )
- : q( qq ), m_feedList( feedList ), m_tagProvider( provider )
+ : q( qq ), m_feedList( feedList ), m_tagProvider( tagProvider )
{
// construct the root node
m_rootNode = shared_ptr<RootNode>( new RootNode );
@@ -429,8 +431,10 @@
}
// public interface implementation
-FeedListModel::FeedListModel( const shared_ptr<const FeedList>& feedList, const \
TagProvider *provider, QObject *parent )
- : QAbstractItemModel( parent ), d( new FeedListModelPrivate( feedList, provider, \
this ) ) +FeedListModel::FeedListModel( const shared_ptr<const FeedList>& feedList,
+ const shared_ptr<const TagProvider>& tagProvider,
+ QObject *parent )
+ : QAbstractItemModel( parent ), d( new FeedListModelPrivate( feedList, \
tagProvider, this ) ) {
if ( d->m_feedList ) {
connect( d->m_feedList.get(), SIGNAL( feedAdded( const KRss::Feed::Id& ) ),
@@ -448,11 +452,11 @@
d->addFeed( feedId );
}
- connect( d->m_tagProvider, SIGNAL( tagCreated( const KRss::Tag& ) ),
+ connect( d->m_tagProvider.get(), SIGNAL( tagCreated( const KRss::Tag& ) ),
this, SLOT( slotTagCreated( const KRss::Tag& ) ) );
- connect( d->m_tagProvider, SIGNAL( tagModified( const KRss::Tag& ) ),
+ connect( d->m_tagProvider.get(), SIGNAL( tagModified( const KRss::Tag& ) ),
this, SLOT( slotTagModified( const KRss::Tag& ) ) );
- connect( d->m_tagProvider, SIGNAL( tagDeleted( const KRss::TagId& ) ),
+ connect( d->m_tagProvider.get(), SIGNAL( tagDeleted( const KRss::TagId& ) ),
this, SLOT( slotTagDeleted( const KRss::TagId& ) ) );
}
--- trunk/playground/pim/krss/libkrss/feedlistmodel.h #980666:980667
@@ -43,8 +43,9 @@
public:
- FeedListModel( const boost::shared_ptr<const FeedList>& feedlist, const \
TagProvider *provider,
- QObject *parent = 0 );
+ FeedListModel( const boost::shared_ptr<const FeedList>& feedlist,
+ const boost::shared_ptr<const TagProvider>& tagProvider,
+ QObject *parent = 0 );
~FeedListModel();
boost::shared_ptr<const FeedList> feedList() const;
--- trunk/playground/pim/krss/libkrss/itemjobs.cpp #980666:980667
@@ -27,8 +27,10 @@
#include <Akonadi/ItemDeleteJob>
#include <KLocale>
#include <KDebug>
+#include <boost/shared_ptr.hpp>
using namespace KRss;
+using boost::shared_ptr;
class KRss::ItemFetchJobPrivate
{
@@ -210,7 +212,7 @@
const TagProviderRetrieveJob * const tjob = qobject_cast<const \
TagProviderRetrieveJob*>( job ); Q_ASSERT( tjob );
- const TagProvider * const tp = tjob->tagProvider();
+ const shared_ptr<const TagProvider> tp = tjob->tagProvider();
TagModifyReferencesJob * const cjob = tp->tagModifyReferencesJob();
cjob->setReferrer( m_itemToModify );
cjob->setAddedTags( toAdd.toList() );
@@ -329,7 +331,7 @@
const TagProviderRetrieveJob * const tjob = qobject_cast<const \
TagProviderRetrieveJob*>( job ); Q_ASSERT( tjob );
- const TagProvider * const tp = tjob->tagProvider();
+ const shared_ptr<const TagProvider> tp = tjob->tagProvider();
TagDeleteReferencesJob * const cjob = tp->tagDeleteReferencesJob();
cjob->setReferrer( m_item );
q->connect( cjob, SIGNAL( result( KJob* ) ), q, SLOT( slotReferencesDeleted( \
KJob* ) ) );
--- trunk/playground/pim/krss/libkrss/standardactionmanager.cpp #980666:980667
@@ -85,7 +85,7 @@
StandardActionManagerPrivate( KActionCollection *actionCollection, QWidget \
*parent )
: m_actionCollection( actionCollection ), m_parentWidget( parent ), \
m_feedSelectionModel( 0 ),
- m_itemSelectionModel( 0 ), m_tagProvider( 0 )
+ m_itemSelectionModel( 0 )
{
}
@@ -95,7 +95,7 @@
QItemSelectionModel *m_itemSelectionModel;
shared_ptr<const FeedList> m_feedList;
QString m_subscriptionLabel;
- const TagProvider *m_tagProvider;
+ shared_ptr<const TagProvider> m_tagProvider;
QVector<KAction*> m_actions;
};
@@ -142,9 +142,9 @@
d->m_subscriptionLabel = subscriptionLabel;
}
-void StandardActionManager::setTagProvider( const TagProvider *provider )
+void StandardActionManager::setTagProvider( const shared_ptr<const TagProvider>& \
provider ) {
- Q_ASSERT( provider != 0 );
+ Q_ASSERT( provider );
d->m_tagProvider = provider;
updateActions();
}
--- trunk/playground/pim/krss/libkrss/standardactionmanager.h #980666:980667
@@ -28,6 +28,10 @@
class QItemSelectionModel;
class QWidget;
+namespace boost {
+template <typename T> class shared_ptr;
+}
+
namespace KRss {
class TagProvider;
@@ -63,7 +67,7 @@
void setFeedSelectionModel( QItemSelectionModel *selectionModel );
void setItemSelectionModel( QItemSelectionModel *selectionModel );
void setSubscriptionLabel( const QString &subscriptionLabel );
- void setTagProvider( const TagProvider *provider );
+ void setTagProvider( const boost::shared_ptr<const TagProvider>& tagProvider );
KAction* action( Type type );
void createAllActions();
--- trunk/playground/pim/krss/libkrss/tagprovider.cpp #980666:980667
@@ -20,6 +20,8 @@
#include <KLocale>
#include <KDebug>
+#include <KGlobal>
+#include <boost/shared_ptr.hpp>
#ifdef HAVE_NEPOMUK
#include "nepomuktagprovider/nepomuktagprovider.h"
@@ -30,7 +32,11 @@
#endif
using namespace KRss;
+using boost::shared_ptr;
+// caches the loaded instance of TagProvider
+K_GLOBAL_STATIC( shared_ptr<TagProvider>, s_tagProvider );
+
namespace KRss {
class TagProviderRetrieveJobPrivate
@@ -44,7 +50,6 @@
void tagProviderLoaded( KJob *job );
public:
- static TagProvider *m_provider;
TagProviderRetrieveJob* const q;
};
@@ -59,8 +64,6 @@
{
}
-TagProvider* TagProviderRetrieveJobPrivate::m_provider = 0;
-
void TagProviderRetrieveJobPrivate::tagProviderLoaded( KJob *job )
{
if ( job->error() ) {
@@ -71,7 +74,7 @@
return;
}
- m_provider = static_cast<TagProviderLoadJob*>( job )->tagProvider();
+ s_tagProvider->reset( static_cast<TagProviderLoadJob*>( job )->tagProvider() );
q->emitResult();
}
@@ -80,14 +83,14 @@
{
}
-TagProvider* TagProviderRetrieveJob::tagProvider() const
+shared_ptr<TagProvider> TagProviderRetrieveJob::tagProvider() const
{
- return TagProviderRetrieveJobPrivate::m_provider;
+ return *s_tagProvider;
}
void TagProviderRetrieveJob::start()
{
- if ( TagProviderRetrieveJobPrivate::m_provider ) {
+ if ( s_tagProvider->get() ) {
// loaded before, so return the instance
kDebug() << "Already loaded, returning the instance";
emitResult();
--- trunk/playground/pim/krss/libkrss/tagprovider.h #980666:980667
@@ -24,6 +24,7 @@
#include <QtCore/QObject>
#include <QtCore/QList>
#include <QtCore/QHash>
+#include <boost/shared_ptr.hpp>
namespace KRss {
@@ -46,6 +47,7 @@
Q_OBJECT
public:
explicit TagProvider( QObject *parent = 0 );
+ virtual ~TagProvider();
virtual Tag tag( const TagId& id ) const = 0;
virtual QHash<TagId, Tag> tags() const = 0;
@@ -64,9 +66,6 @@
void tagModified( const KRss::Tag& tag );
void tagDeleted( const KRss::TagId& id );
-protected:
- virtual ~TagProvider();
-
private:
// these jobs use Tag*ReferencesJob to update
// the tagprovider specific storage
@@ -90,7 +89,7 @@
};
explicit TagProviderRetrieveJob( QObject *parent = 0 );
- TagProvider* tagProvider() const;
+ boost::shared_ptr<TagProvider> tagProvider() const;
void start();
QString errorString() const;
--- trunk/playground/pim/krss/libkrss/tests/tagprovidertest.cpp #980666:980667
@@ -51,7 +51,7 @@
tag.setLabel( "Test tag" );
tag.setDescription( "This is a test tag" );
- QSignalSpy spyCreateTag( m_tagProvider, SIGNAL( tagCreated( const KRss::Tag& ) ) \
); + QSignalSpy spyCreateTag( m_tagProvider.get(), SIGNAL( tagCreated( const \
KRss::Tag& ) ) ); QVERIFY( spyCreateTag.isValid() );
TagCreateJob *job = m_tagProvider->tagCreateJob();
@@ -83,7 +83,7 @@
tag.setLabel( "Test tag" );
tag.setDescription( "This is a test tag" );
- QSignalSpy spyCreateTag( m_tagProvider, SIGNAL( tagCreated( const KRss::Tag& ) ) \
); + QSignalSpy spyCreateTag( m_tagProvider.get(), SIGNAL( tagCreated( const \
KRss::Tag& ) ) ); QVERIFY( spyCreateTag.isValid() );
TagCreateJob *job = m_tagProvider->tagCreateJob();
@@ -102,7 +102,7 @@
m_tag.setLabel( "Modified test tag" );
m_tag.setDescription( "This was a test tag" );
- QSignalSpy spyModifyTag( m_tagProvider, SIGNAL( tagModified( const KRss::Tag& ) \
) ); + QSignalSpy spyModifyTag( m_tagProvider.get(), SIGNAL( tagModified( const \
KRss::Tag& ) ) ); QVERIFY( spyModifyTag.isValid() );
TagModifyJob *job = m_tagProvider->tagModifyJob();
@@ -124,7 +124,7 @@
void TagProviderTest::deleteEmptyTagTest()
{
- QSignalSpy spyDeleteTag( m_tagProvider, SIGNAL( tagDeleted( const KRss::TagId& ) \
) ); + QSignalSpy spyDeleteTag( m_tagProvider.get(), SIGNAL( tagDeleted( const \
KRss::TagId& ) ) ); QVERIFY( spyDeleteTag.isValid() );
TagDeleteJob *job = m_tagProvider->tagDeleteJob();
--- trunk/playground/pim/krss/libkrss/tests/tagprovidertest.h #980666:980667
@@ -21,6 +21,7 @@
#include "tag.h"
#include <QtCore/QObject>
+#include <boost/shared_ptr.hpp>
namespace KRss {
class TagProvider;
@@ -39,7 +40,7 @@
//void deleteNonEmptyTagTest();
private:
- KRss::TagProvider *m_tagProvider;
+ boost::shared_ptr<KRss::TagProvider> m_tagProvider;
KRss::Tag m_tag;
};
--- trunk/playground/pim/krss/resources/libkrssresource/exportopmljob.cpp \
#980666:980667 @@ -27,6 +27,7 @@
#include <QtCore/QXmlStreamWriter>
using namespace KRssResource;
+using boost::shared_ptr;
ExportOpmlJob::ExportOpmlJob( const KUrl& path, QObject *parent )
: KJob( parent ), m_path( path )
@@ -106,7 +107,7 @@
const KRss::TagProviderRetrieveJob * const rjob = qobject_cast<const \
KRss::TagProviderRetrieveJob*>( job ); assert( rjob );
- const KRss::TagProvider * const tagProvider = rjob->tagProvider();
+ const shared_ptr<const KRss::TagProvider> tagProvider = rjob->tagProvider();
const QList<Akonadi::Collection> feeds = \
FeedCollectionsCache::feedCollections();
QByteArray data;
--- trunk/playground/pim/krss/resources/libkrssresource/importopmljob.cpp \
#980666:980667 @@ -37,6 +37,7 @@
#include <cassert>
using namespace KRssResource;
+using boost::shared_ptr;
ImportOpmlJob::ImportOpmlJob( const KUrl& path, QObject *parent )
: KJob( parent ), m_backendJob( 0 ), m_path( path ), m_pendingJobs( 0 )
@@ -279,11 +280,11 @@
}
TagsCreateJob::TagsCreateJob( QObject *parent )
- : KJob( parent ), m_tagProvider( 0 ), m_pendingJobs( 0 )
+ : KJob( parent ), m_pendingJobs( 0 )
{
}
-void TagsCreateJob::setTagProvider( const KRss::TagProvider *tagProvider )
+void TagsCreateJob::setTagProvider( const shared_ptr<const KRss::TagProvider>& \
tagProvider ) {
m_tagProvider = tagProvider;
}
--- trunk/playground/pim/krss/resources/libkrssresource/importopmljob.h \
#980666:980667 @@ -23,6 +23,7 @@
#include "libkrssresource/opmlparser.h"
#include <KJob>
+#include <boost/shared_ptr.hpp>
namespace KRss {
class TagProvider;
@@ -81,7 +82,7 @@
public:
explicit TagsCreateJob( QObject *parent = 0 );
- void setTagProvider( const KRss::TagProvider *tagProvider );
+ void setTagProvider( const boost::shared_ptr<const KRss::TagProvider>& \
tagProvider ); void setTagLabels( const QList<QString>& tagLabels );
QList<KRss::Tag> tags() const;
@@ -99,7 +100,7 @@
void slotTagCreated( KJob *job );
private:
- const KRss::TagProvider *m_tagProvider;
+ boost::shared_ptr<const KRss::TagProvider> m_tagProvider;
QList<QString> m_tagLabels;
QVector<KRss::Tag> m_tags;
int m_pendingJobs;
--- trunk/playground/pim/krss/resources/libkrssresource/tests/importopmljobtest.h \
#980666:980667 @@ -20,6 +20,7 @@
#include <Akonadi/Collection>
#include <QtCore/QObject>
+#include <boost/shared_ptr.hpp>
namespace KRss {
class TagProvider;
@@ -35,7 +36,7 @@
void testBrokenOpml();
private:
- const KRss::TagProvider *m_tagProvider;
+ boost::shared_ptr<const KRss::TagProvider> m_tagProvider;
Akonadi::Collection::Id m_freedesktopId;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic