Merge lp:~renatofilho/address-book-service/fix-1222994 into lp:address-book-service

Proposed by Renato Araujo Oliveira Filho
Status: Merged
Approved by: Bill Filler
Approved revision: 68
Merged at revision: 72
Proposed branch: lp:~renatofilho/address-book-service/fix-1222994
Merge into: lp:address-book-service
Diff against target: 206 lines (+42/-19)
3 files modified
qcontacts/contacts-service.cpp (+33/-19)
src/addressbook-adaptor.cpp (+5/-0)
src/addressbook-adaptor.h (+4/-0)
To merge this branch: bzr merge lp:~renatofilho/address-book-service/fix-1222994
Reviewer Review Type Date Requested Status
Bill Filler (community) Approve
PS Jenkins bot continuous-integration Approve
Review via email: mp+184709@code.launchpad.net

Commit message

Fixed service respaw on QContact plugin.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Bill Filler (bfiller) wrote :

this doesn't fix the bug but does change the behavior. if I stop address-book-service the contacts view still shows the existing contacts which is different (the list used to be cleared). But then if I click on a contact to see it's details nothing happens. I would have expected an error or expected the service to be auto started by dbus activation when I'm requesting a detail.

Also, if service is stopped and you try to add a new contact the UI just spins an animation forever when you press the save button. It should either display an error or auto start the service via dbus activation

review: Needs Fixing
68. By Renato Araujo Oliveira Filho

Clear contact list if the service disappear;
Re-start the service if the service disappear;

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Bill Filler (bfiller) wrote :

tested, works

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'qcontacts/contacts-service.cpp'
--- qcontacts/contacts-service.cpp 2013-09-10 18:44:50 +0000
+++ qcontacts/contacts-service.cpp 2013-09-11 22:08:54 +0000
@@ -82,13 +82,11 @@
82{82{
83 while(!m_pendingRequests.isEmpty()) {83 while(!m_pendingRequests.isEmpty()) {
84 QPointer<QContactAbstractRequest> request = m_pendingRequests.takeFirst();84 QPointer<QContactAbstractRequest> request = m_pendingRequests.takeFirst();
85 if (request) {85 request->cancel();
86 QContactManagerEngine::updateRequestState(request,86 request->waitForFinished();
87 QContactAbstractRequest::CanceledState);
88 }
89 }87 }
88 m_runningRequests.clear();
9089
91 Q_ASSERT(m_runningRequests.size() == 0);
92 delete m_serviceWatcher;90 delete m_serviceWatcher;
93}91}
9492
@@ -98,10 +96,10 @@
98 if (name == CPIM_SERVICE_NAME) {96 if (name == CPIM_SERVICE_NAME) {
99 if (!newOwner.isEmpty()) {97 if (!newOwner.isEmpty()) {
100 // service appear98 // service appear
101 QMetaObject::invokeMethod(this, "initialize", Qt::QueuedConnection);99 initialize();
102 } else if (!m_iface.isNull()) {100 } else if (!m_iface.isNull()) {
103 // lost service101 // lost service
104 QMetaObject::invokeMethod(this, "deinitialize", Qt::QueuedConnection);102 deinitialize();
105 }103 }
106 }104 }
107}105}
@@ -138,15 +136,32 @@
138136
139void GaleraContactsService::deinitialize()137void GaleraContactsService::deinitialize()
140{138{
139 Q_FOREACH(RequestData* rData, m_runningRequests) {
140 rData->cancel();
141 rData->request()->waitForFinished();
142 rData->setError(QContactManager::UnspecifiedError);
143 }
144
145 //clear contacts
146 Q_EMIT contactsRemoved(m_contactIds);
147
141 if (!m_iface.isNull()) {148 if (!m_iface.isNull()) {
142 m_id.clear();149 m_id.clear();
143 m_contacts.clear();150 m_contacts.clear();
144 m_contactIds.clear();151 m_contactIds.clear();
145 m_relationships.clear();152 m_relationships.clear();
146 m_orderedRelationships.clear();153 m_orderedRelationships.clear();
147 m_iface.clear();
148 Q_EMIT serviceChanged();154 Q_EMIT serviceChanged();
149 }155 }
156
157 // this will make the service re-initialize
158 QDBusMessage result = m_iface->call("ping");
159 if (result.type() == QDBusMessage::ErrorMessage) {
160 qWarning() << result.errorName() << result.errorMessage();
161 m_serviceIsReady = false;
162 } else {
163 m_serviceIsReady = m_iface.data()->property("isReady").toBool();
164 }
150}165}
151166
152bool GaleraContactsService::isOnline() const167bool GaleraContactsService::isOnline() const
@@ -156,9 +171,8 @@
156171
157void GaleraContactsService::fetchContactsById(QtContacts::QContactFetchByIdRequest *request)172void GaleraContactsService::fetchContactsById(QtContacts::QContactFetchByIdRequest *request)
158{173{
159 qDebug() << Q_FUNC_INFO;
160
161 if (!isOnline()) {174 if (!isOnline()) {
175 qWarning() << "Server is not online";
162 RequestData::setError(request);176 RequestData::setError(request);
163 return;177 return;
164 }178 }
@@ -184,9 +198,8 @@
184198
185void GaleraContactsService::fetchContacts(QtContacts::QContactFetchRequest *request)199void GaleraContactsService::fetchContacts(QtContacts::QContactFetchRequest *request)
186{200{
187 qDebug() << Q_FUNC_INFO;
188
189 if (!isOnline()) {201 if (!isOnline()) {
202 qWarning() << "Server is not online";
190 RequestData::setError(request);203 RequestData::setError(request);
191 return;204 return;
192 }205 }
@@ -238,8 +251,8 @@
238251
239void GaleraContactsService::fetchContactsPage(RequestData *request)252void GaleraContactsService::fetchContactsPage(RequestData *request)
240{253{
241 qDebug() << Q_FUNC_INFO;
242 if (!isOnline() || !request->isLive()) {254 if (!isOnline() || !request->isLive()) {
255 qWarning() << "Server is not online";
243 destroyRequest(request);256 destroyRequest(request);
244 return;257 return;
245 }258 }
@@ -264,8 +277,6 @@
264277
265void GaleraContactsService::fetchContactsDone(RequestData *request, QDBusPendingCallWatcher *call)278void GaleraContactsService::fetchContactsDone(RequestData *request, QDBusPendingCallWatcher *call)
266{279{
267 qDebug() << Q_FUNC_INFO;
268
269 if (!request->isLive()) {280 if (!request->isLive()) {
270 destroyRequest(request);281 destroyRequest(request);
271 return;282 return;
@@ -319,7 +330,6 @@
319330
320void GaleraContactsService::saveContact(QtContacts::QContactSaveRequest *request)331void GaleraContactsService::saveContact(QtContacts::QContactSaveRequest *request)
321{332{
322 qDebug() << Q_FUNC_INFO;
323 QList<QContact> contacts = request->contacts();333 QList<QContact> contacts = request->contacts();
324 QStringList vcards = VCardParser::contactToVcard(contacts);334 QStringList vcards = VCardParser::contactToVcard(contacts);
325335
@@ -349,8 +359,8 @@
349}359}
350void GaleraContactsService::createContacts(QtContacts::QContactSaveRequest *request, QStringList &contacts)360void GaleraContactsService::createContacts(QtContacts::QContactSaveRequest *request, QStringList &contacts)
351{361{
352 qDebug() << Q_FUNC_INFO;
353 if (!isOnline()) {362 if (!isOnline()) {
363 qWarning() << "Server is not online";
354 RequestData::setError(request);364 RequestData::setError(request);
355 return;365 return;
356 }366 }
@@ -375,8 +385,6 @@
375385
376void GaleraContactsService::createContactsDone(RequestData *request, QDBusPendingCallWatcher *call)386void GaleraContactsService::createContactsDone(RequestData *request, QDBusPendingCallWatcher *call)
377{387{
378 qDebug() << Q_FUNC_INFO;
379
380 if (!request->isLive()) {388 if (!request->isLive()) {
381 destroyRequest(request);389 destroyRequest(request);
382 return;390 return;
@@ -408,6 +416,7 @@
408void GaleraContactsService::removeContact(QContactRemoveRequest *request)416void GaleraContactsService::removeContact(QContactRemoveRequest *request)
409{417{
410 if (!isOnline()) {418 if (!isOnline()) {
419 qWarning() << "Server is not online";
411 RequestData::setError(request);420 RequestData::setError(request);
412 return;421 return;
413 }422 }
@@ -460,6 +469,7 @@
460{469{
461 qDebug() << Q_FUNC_INFO;470 qDebug() << Q_FUNC_INFO;
462 if (!isOnline()) {471 if (!isOnline()) {
472 qWarning() << "Server is not online";
463 RequestData::setError(request);473 RequestData::setError(request);
464 return;474 return;
465 }475 }
@@ -536,14 +546,18 @@
536void GaleraContactsService::addRequest(QtContacts::QContactAbstractRequest *request)546void GaleraContactsService::addRequest(QtContacts::QContactAbstractRequest *request)
537{547{
538 qDebug() << Q_FUNC_INFO << request->state();548 qDebug() << Q_FUNC_INFO << request->state();
549
539 if (!m_serviceIsReady) {550 if (!m_serviceIsReady) {
540 m_pendingRequests << QPointer<QtContacts::QContactAbstractRequest>(request);551 m_pendingRequests << QPointer<QtContacts::QContactAbstractRequest>(request);
541 return;552 return;
542 }553 }
554
543 if (!isOnline()) {555 if (!isOnline()) {
556 qWarning() << "Server is not online";
544 QContactManagerEngine::updateRequestState(request, QContactAbstractRequest::FinishedState);557 QContactManagerEngine::updateRequestState(request, QContactAbstractRequest::FinishedState);
545 return;558 return;
546 }559 }
560
547 Q_ASSERT(request->state() == QContactAbstractRequest::ActiveState);561 Q_ASSERT(request->state() == QContactAbstractRequest::ActiveState);
548 switch (request->type()) {562 switch (request->type()) {
549 case QContactAbstractRequest::ContactFetchRequest:563 case QContactAbstractRequest::ContactFetchRequest:
550564
=== modified file 'src/addressbook-adaptor.cpp'
--- src/addressbook-adaptor.cpp 2013-06-20 13:18:10 +0000
+++ src/addressbook-adaptor.cpp 2013-09-11 22:08:54 +0000
@@ -103,4 +103,9 @@
103 return m_addressBook->isReady();103 return m_addressBook->isReady();
104}104}
105105
106bool AddressBookAdaptor::ping()
107{
108 return true;
109}
110
106} //namespace111} //namespace
107112
=== modified file 'src/addressbook-adaptor.h'
--- src/addressbook-adaptor.h 2013-06-20 13:18:10 +0000
+++ src/addressbook-adaptor.h 2013-09-11 22:08:54 +0000
@@ -51,6 +51,9 @@
51" <arg direction=\"out\" type=\"a(ss)\" name=\"errorMap\"/>\n"51" <arg direction=\"out\" type=\"a(ss)\" name=\"errorMap\"/>\n"
52" </signal>\n"52" </signal>\n"
53" <signal name=\"ready\"/>\n"53" <signal name=\"ready\"/>\n"
54" <method name=\"ping\">\n"
55" <arg direction=\"out\" type=\"b\"/>\n"
56" </method>\n"
54" <method name=\"availableSources\">\n"57" <method name=\"availableSources\">\n"
55" <arg direction=\"out\" type=\"a(sb)\"/>\n"58" <arg direction=\"out\" type=\"a(sb)\"/>\n"
56" <annotation value=\"SourceList\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"59" <annotation value=\"SourceList\" name=\"com.trolltech.QtDBus.QtTypeName.Out0\"/>\n"
@@ -107,6 +110,7 @@
107 QString linkContacts(const QStringList &contacts);110 QString linkContacts(const QStringList &contacts);
108 bool unlinkContacts(const QString &parentId, const QStringList &contactsIds);111 bool unlinkContacts(const QString &parentId, const QStringList &contactsIds);
109 bool isReady();112 bool isReady();
113 bool ping();
110114
111Q_SIGNALS:115Q_SIGNALS:
112 void contactsAdded(const QStringList &ids);116 void contactsAdded(const QStringList &ids);

Subscribers

People subscribed via source and target branches