Git commit a322fc7a29f8b0a1a7a390a1e2fd6b7e3cf151e4 by David Edmundson. Committed on 30/06/2013 at 21:23. Pushed by davidedmundson into branch 'dave'. Convert PersonData to use SharedPtr M +3 -1 src/abstractpersonplugin.cpp M +2 -2 src/abstractpersonplugin.h M +6 -6 src/autotests/tests/persondatatests.cpp M +1 -1 src/examples/personwidget.cpp M +2 -5 src/personactionsmodel.cpp M +6 -6 src/persondata.cpp M +7 -3 src/persondata.h M +1 -1 src/personpluginmanager.cpp M +3 -2 src/personpluginmanager.h M +1 -1 src/plugins/core/emailplugin.cpp M +1 -1 src/plugins/core/emailplugin.h http://commits.kde.org/libkpeople/a322fc7a29f8b0a1a7a390a1e2fd6b7e3cf151e4 diff --git a/src/abstractpersonplugin.cpp b/src/abstractpersonplugin.cpp index 3a41f3b..084e30c 100644 --- a/src/abstractpersonplugin.cpp +++ b/src/abstractpersonplugin.cpp @@ -29,7 +29,9 @@ AbstractPersonPlugin::AbstractPersonPlugin(QObject *paren= t) : QObject (parent) = } = -QList< QAction* > AbstractPersonPlugin::actionsForPerson(PersonData*const = personData, QObject* parent) +QList< QAction* > AbstractPersonPlugin::actionsForPerson(const PersonDataP= tr &personData, QObject* parent) { + Q_UNUSED(personData); + Q_UNUSED(parent); return QList(); } diff --git a/src/abstractpersonplugin.h b/src/abstractpersonplugin.h index 60508b6..15c968c 100644 --- a/src/abstractpersonplugin.h +++ b/src/abstractpersonplugin.h @@ -25,10 +25,10 @@ class PersonData; #include = #include "kpeople_export.h" +#include "persondata.h" = namespace KPeople { -class PersonData; = class KPEOPLE_EXPORT AbstractPersonPlugin : public QObject { @@ -41,7 +41,7 @@ public: * @personData information on a single contact * @parent parent object for newly created actions */ - virtual QList actionsForPerson(KPeople::PersonData * const p= ersonData, QObject *parent); + virtual QList actionsForPerson(const KPeople::PersonDataPtr = &personData, QObject *parent); }; = } diff --git a/src/autotests/tests/persondatatests.cpp b/src/autotests/tests/= persondatatests.cpp index 6cf40be..bf0c470 100644 --- a/src/autotests/tests/persondatatests.cpp +++ b/src/autotests/tests/persondatatests.cpp @@ -134,7 +134,7 @@ void PersonDataTests::init() void PersonDataTests::contactProperties() { //create a simple contact with name + email - QScopedPointer personData(PersonData::loadFromUri(m_contac= t1Uri)); + PersonDataPtr personData(PersonData::createFromUri(m_contact1Uri)); QCOMPARE(personData->isValid(), true); QCOMPARE(personData->uri(), m_contact1Uri); QCOMPARE(personData->isPerson(), false); @@ -146,7 +146,7 @@ void PersonDataTests::contactProperties() = void PersonDataTests::personProperties() { - QScopedPointer personData(PersonData::loadFromUri(m_person= AUri)); + PersonDataPtr personData(PersonData::createFromUri(m_personAUri)); QCOMPARE(personData->isValid(), true); QCOMPARE(personData->isPerson(), true); QCOMPARE(personData->contactResources().size(), 2); @@ -156,20 +156,20 @@ void PersonDataTests::personProperties() = void PersonDataTests::personFromContactID() { - QScopedPointer personData(PersonData::loadFromContactId(QL= atin1String("contact2@example.com"))); + PersonDataPtr personData(PersonData::createFromContactId(QLatin1String= ("contact2@example.com"))); //This should load PersonA NOT Contact2 QCOMPARE(personData->uri(), m_personAUri); } = void PersonDataTests::contactFromContactID() { - QScopedPointer personData(PersonData::loadFromContactId(QL= atin1String("contact1@example.com"))); + PersonDataPtr personData(PersonData::createFromContactId(QLatin1String= ("contact1@example.com"))); QCOMPARE(personData->uri(), m_contact1Uri); } = void PersonDataTests::miscTests() { - QScopedPointer personData(PersonData::loadFromContactId(QL= atin1String("NOTEXIST"))); + PersonDataPtr personData(PersonData::createFromContactId(QLatin1String= ("NOTEXIST"))); personData->uri(); personData->name(); personData->avatar(); @@ -185,7 +185,7 @@ void PersonDataTests::miscTests() = void PersonDataTests::contactChanged() { - QScopedPointer personData(PersonData::loadFromUri(m_contac= t1Uri)); + PersonDataPtr personData(PersonData::createFromUri(m_contact1Uri)); = Nepomuk2::SimpleResourceGraph graph; = diff --git a/src/examples/personwidget.cpp b/src/examples/personwidget.cpp index 595ccf2..fc70a7d 100644 --- a/src/examples/personwidget.cpp +++ b/src/examples/personwidget.cpp @@ -35,7 +35,7 @@ int main(int argc, char** argv) return 1; } = - QScopedPointer person(KPeople::PersonData::loadFr= omContactId(app.arguments()[1])); + KPeople::PersonDataPtr person(KPeople::PersonData::createFromContactId= (app.arguments()[1])); = KPeople::PersonDetailsView w; w.setPerson(person.data()); diff --git a/src/personactionsmodel.cpp b/src/personactionsmodel.cpp index 5dcd25c..e0ef14e 100644 --- a/src/personactionsmodel.cpp +++ b/src/personactionsmodel.cpp @@ -37,7 +37,7 @@ struct PersonActionsPrivate { QList actions; = QPersistentModelIndex index; - PersonData *person; + PersonDataPtr person; }; } = @@ -66,10 +66,7 @@ void PersonActionsModel::setPerson(const QPersistentMode= lIndex& index) beginResetModel(); d->actions.clear(); d->index =3D index; - if (d->person) { - d->person->deleteLater(); - } - d->person =3D PersonData::loadFromUri(index.data(PersonsModel::UriRole= ).toString(), this); + d->person =3D PersonData::createFromUri(index.data(PersonsModel::UriRo= le).toString()); = d->actions.append(PersonPluginManager::actionsForPerson(d->person, thi= s)); = diff --git a/src/persondata.cpp b/src/persondata.cpp index e564efa..1dc30a1 100644 --- a/src/persondata.cpp +++ b/src/persondata.cpp @@ -64,17 +64,17 @@ public: }; } = -PersonData* PersonData::loadFromContactId(const QString& contactId, QObjec= t* parent) +PersonDataPtr PersonData::createFromUri(const QUrl& uri) { - PersonData *person =3D new PersonData(parent); - person->loadContact(contactId); + PersonDataPtr person(new PersonData); + person->loadUri(uri); return person; } = -PersonData* PersonData::loadFromUri(const QUrl& uri, QObject* parent) +PersonDataPtr PersonData::createFromContactId(const QString& contactId) { - PersonData *person =3D new PersonData(parent); - person->loadUri(uri); + PersonDataPtr person(new PersonData); + person->loadContact(contactId); return person; } = diff --git a/src/persondata.h b/src/persondata.h index 86ea74d..36b81aa 100644 --- a/src/persondata.h +++ b/src/persondata.h @@ -34,6 +34,10 @@ namespace KPeople { struct PersonDataPrivate; = +class PersonData; + +typedef QSharedPointer PersonDataPtr; + class KPEOPLE_EXPORT PersonData : public QObject { Q_OBJECT @@ -47,8 +51,8 @@ class KPEOPLE_EXPORT PersonData : public QObject Q_PROPERTY(bool isValid READ isValid) = public: - static PersonData* loadFromUri(const QUrl &url, QObject *parent=3D= 0); - static PersonData* loadFromContactId(const QString &contactId, QOb= ject *parent=3D0); + static PersonDataPtr createFromUri(const QUrl &url); + static PersonDataPtr createFromContactId(const QString &contactId); = virtual ~PersonData(); = @@ -91,7 +95,7 @@ class KPEOPLE_EXPORT PersonData : public QObject void dataChanged(); = protected: - PersonData(QObject *parent); + PersonData(QObject *parent=3D0); = /** sets new contact uri, all data are refetched */ void loadUri(const QUrl &uri); diff --git a/src/personpluginmanager.cpp b/src/personpluginmanager.cpp index 487f1bb..5886a7f 100644 --- a/src/personpluginmanager.cpp +++ b/src/personpluginmanager.cpp @@ -67,7 +67,7 @@ PersonPluginManagerPrivate::~PersonPluginManagerPrivate() presencePlugin->deleteLater(); } = -QList PersonPluginManager::actionsForPerson(PersonData *person, = QObject *parent) +QList PersonPluginManager::actionsForPerson(PersonDataPtr person= , QObject *parent) { QList actions; Q_FOREACH(AbstractPersonPlugin *plugin, s_instance->plugins) { diff --git a/src/personpluginmanager.h b/src/personpluginmanager.h index 38f1381..53467c3 100644 --- a/src/personpluginmanager.h +++ b/src/personpluginmanager.h @@ -24,17 +24,18 @@ = #include "kpeople_export.h" = +#include "persondata.h" + class QAction; = namespace KPeople { class BasePersonsDataSource; -class PersonData; = class KPEOPLE_EXPORT PersonPluginManager { public: - static QList actionsForPerson(PersonData *person, QObject *p= arent); + static QList actionsForPerson(PersonDataPtr, QObject *parent= ); = static BasePersonsDataSource* presencePlugin(); }; diff --git a/src/plugins/core/emailplugin.cpp b/src/plugins/core/emailplugi= n.cpp index 83babd4..a7ab28c 100644 --- a/src/plugins/core/emailplugin.cpp +++ b/src/plugins/core/emailplugin.cpp @@ -33,7 +33,7 @@ EmailPlugin::EmailPlugin(QObject* parent, const QVariantL= ist &args): = } = -QList< QAction* > EmailPlugin::actionsForPerson(KPeople::PersonData* perso= nData, QObject* parent) +QList< QAction* > EmailPlugin::actionsForPerson(const KPeople::PersonDataP= tr &personData, QObject* parent) { QList actions; foreach(const QString &email, personData->emails()) { diff --git a/src/plugins/core/emailplugin.h b/src/plugins/core/emailplugin.h index ebffe64..0247213 100644 --- a/src/plugins/core/emailplugin.h +++ b/src/plugins/core/emailplugin.h @@ -28,7 +28,7 @@ class EmailPlugin : public KPeople::AbstractPersonPlugin public: EmailPlugin(QObject* parent, const QVariantList &args); = - virtual QList actionsForPerson(KPeople::PersonData *personDa= ta, QObject *parent); + virtual QList actionsForPerson(const KPeople::PersonDataPtr = &personData, QObject *parent); = private Q_SLOTS: void onEmailTriggered();