'Remove contact' option in contactsview
Tuleap: #298
Change-Id: I69c933829416a6dc77096ea504cef95a54af9aa4
diff --git a/src/backends/edscontactbackend.cpp b/src/backends/edscontactbackend.cpp
index c099aed..39a2d96 100644
--- a/src/backends/edscontactbackend.cpp
+++ b/src/backends/edscontactbackend.cpp
@@ -114,8 +114,11 @@
bool EdsContactEditor::remove(const Person* item)
{
- mediator()->removeItem(item);
- return true;
+ bool ret = collection_->removePerson(item);
+ if (ret) {
+ mediator()->removeItem(item);
+ }
+ return ret;
}
bool EdsContactEditor::edit( Person* item)
@@ -380,7 +383,7 @@
if (p) {
g_debug("removing: %s", p->formattedName().toUtf8().constData());
deactivate(p);
- editor<Person>()->remove(p);
+ mediator_->removeItem(p);
} else {
g_warning("person with given UID doesn't exist: %s", uid);
}
@@ -429,6 +432,7 @@
return (CollectionInterface::SupportedFeatures::NONE |
CollectionInterface::SupportedFeatures::LOAD |
CollectionInterface::SupportedFeatures::ADD |
+ CollectionInterface::SupportedFeatures::REMOVE |
CollectionInterface::SupportedFeatures::SAVE );
}
@@ -479,6 +483,34 @@
return ret;
}
+bool EdsContactBackend::removePerson(const Person *item)
+{
+ g_return_val_if_fail(client_.get(), false);
+
+ g_debug("removing person");
+
+ GError *error = NULL;
+
+ bool ret = e_book_client_remove_contact_by_uid_sync(
+ E_BOOK_CLIENT(client_.get()),
+ item->uid(),
+ cancellable_.get(),
+ &error
+ );
+
+ if(!ret) {
+ if(error) {
+ g_warning("could not delete contact: %s", error->message);
+ g_clear_error(&error);
+ }
+ else {
+ g_warning("could not delete contact");
+ }
+ }
+
+ return ret;
+}
+
bool EdsContactBackend::savePerson(const Person *item)
{
g_return_val_if_fail(client_.get(), false);