From: Nataliia Sydorchuk Date: Mon, 28 Mar 2016 08:00:21 +0000 (+0300) Subject: TizenRefApp-5912 Implement Share in the Contacts List X-Git-Tag: submit/tizen/20160524.113145~93 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2c1f43941d49aac8a69c77baaa8272432bf934b8;p=profile%2Fmobile%2Fapps%2Fnative%2Fphone-contacts.git TizenRefApp-5912 Implement Share in the Contacts List Change-Id: I0cdedc8211d04d6b8e6eb020d3ff473d6e6b260f Signed-off-by: Nataliia Sydorchuk --- diff --git a/lib-apps-common/inc/App/AppControlRequest.h b/lib-apps-common/inc/App/AppControlRequest.h index 6dc07d59..a7d1081d 100644 --- a/lib-apps-common/inc/App/AppControlRequest.h +++ b/lib-apps-common/inc/App/AppControlRequest.h @@ -119,6 +119,14 @@ namespace App */ AppControl EXPORT_API requestShareMyProfile(int recordId); + /** + * @brief Request share of multiple contacts via other application + * @param[in] personIds Contact's person IDs + * @param[in] count Person IDs count + * @return AppControl wrapper + */ + AppControl EXPORT_API requestMultiShareContacts(const char **personIds, int count); + /** * @brief Request pick vcard(s) from filesystem * @param[in] path Path of storage from where files should be picked diff --git a/lib-apps-common/src/App/AppControlRequest.cpp b/lib-apps-common/src/App/AppControlRequest.cpp index ff15cfba..4832d3c0 100644 --- a/lib-apps-common/src/App/AppControlRequest.cpp +++ b/lib-apps-common/src/App/AppControlRequest.cpp @@ -98,6 +98,13 @@ AppControl App::requestShareMyProfile(int recordId) return request; } +AppControl App::requestMultiShareContacts(const char **personIds, int count) +{ + AppControl request(APP_CONTROL_OPERATION_MULTI_SHARE, APP_CONTROL_MIME_CONTACT); + request.addExtra(APP_CONTROL_DATA_ID, personIds, count); + return request; +} + AppControl App::requestPickVcard(const char *path) { //TODO: Replace it with AppControl which will not use application id. diff --git a/lib-contact/inc/Contacts/List/ListView.h b/lib-contact/inc/Contacts/List/ListView.h index 1a66e615..5549222b 100644 --- a/lib-contact/inc/Contacts/List/ListView.h +++ b/lib-contact/inc/Contacts/List/ListView.h @@ -60,13 +60,13 @@ namespace Contacts public: /** * @brief Create new person list view - * @param]in] filterType Defines how to filter person list + * @param[in] filterType Defines how to filter person list */ ListView(int filterType = FilterNone); /** * @brief Create new vcard contact list view - * @param]in] vcardPath Path of the vcard file + * @param[in] vcardPath Path of the vcard file */ explicit ListView(const char *vcardPath); @@ -88,6 +88,8 @@ namespace Contacts virtual void onCreated() override; virtual void onMenuPressed() override; + void onSharePressed(); + virtual const char *getPageTitle() const override; virtual void onSelectAllInsert(Ui::GenlistItem *item) override; virtual void onSelectModeChanged(SelectMode selectMode) override; diff --git a/lib-contact/src/Contacts/List/ListView.cpp b/lib-contact/src/Contacts/List/ListView.cpp index 19ce9673..dd5ef2f8 100644 --- a/lib-contact/src/Contacts/List/ListView.cpp +++ b/lib-contact/src/Contacts/List/ListView.cpp @@ -29,6 +29,7 @@ #include "Contacts/Input/InputView.h" #include "Contacts/Settings/MainView.h" +#include "App/AppControlRequest.h" #include "Ui/Genlist.h" #include "Ui/Menu.h" #include "Ui/Navigator.h" @@ -119,6 +120,8 @@ void ListView::onMenuPressed() getNavigator()->navigateTo(view); }); + menu->addItem("IDS_PB_OPT_SHARE", std::bind(&ListView::onSharePressed, this)); + menu->addItem("IDS_PB_OPT_MANAGE_FAVOURITES_ABB", [this] { auto manageFavPopup = new ManageFavoritesPopup(getNavigator()); manageFavPopup->create(getEvasObject()); @@ -131,6 +134,31 @@ void ListView::onMenuPressed() menu->show(); } +void ListView::onSharePressed() +{ + ListView *view = new ListView(); + view->setSelectMode(SelectMulti); + view->setSelectCallback([](SelectResults results) { + size_t count = results.count(); + + std::vector idString(count); + idString.reserve(count); + std::vector ids(count); + ids.reserve(count); + + for (size_t i = 0; i < count; ++i) { + idString[i] = std::to_string(results[i].value.id); + ids[i] = idString[i].c_str(); + } + App::AppControl control = App::requestMultiShareContacts(ids.data(), count); + control.launch(); + control.detach(); + + return true; + }); + getNavigator()->navigateTo(view); +} + const char *ListView::getPageTitle() const { switch (getSelectMode()) {