From 34378d6d2d81607df6b99548c430d995779f10bc Mon Sep 17 00:00:00 2001 From: Nataliia Sydorchuk Date: Fri, 28 Oct 2016 15:58:15 +0300 Subject: [PATCH] TizenRefApp-7506 Groups state isn't saved when creating contact Change-Id: Ia07d951b0cd5d0caf367b26643e45a70fb7fddb2 Signed-off-by: Nataliia Sydorchuk --- lib-contacts/inc/Contacts/Groups/GroupsView.h | 13 ++++++++++ .../inc/Contacts/Input/ContactGroupsFieldItem.h | 5 ++++ lib-contacts/src/Contacts/Groups/GroupsView.cpp | 9 +++++++ .../src/Contacts/Input/ContactGroupsFieldItem.cpp | 28 ++++++++++++---------- 4 files changed, 43 insertions(+), 12 deletions(-) diff --git a/lib-contacts/inc/Contacts/Groups/GroupsView.h b/lib-contacts/inc/Contacts/Groups/GroupsView.h index c420ed7..100f8f6 100644 --- a/lib-contacts/inc/Contacts/Groups/GroupsView.h +++ b/lib-contacts/inc/Contacts/Groups/GroupsView.h @@ -50,6 +50,11 @@ namespace Contacts { public: /** + * @brief Called when fill of group view is finished + */ + typedef std::function FillCallback; + + /** * @brief Create groups list view * @param[in] filterType Defines how to count group members */ @@ -62,6 +67,12 @@ namespace Contacts */ void setAssignMode(bool isEnabled); + /** + * @brief Set view fill finish callback + * @param[in] callback Callback to be called when fill of group view is finished + */ + void setFillCallback(FillCallback callback); + private: virtual Evas_Object *onCreate(Evas_Object *parent) override; virtual void onMenuPressed() override; @@ -101,6 +112,8 @@ namespace Contacts bool m_IsAssignMode; int m_NewGroupId; Model2::DataProvider *m_Provider; + + FillCallback m_OnFilled; }; } } diff --git a/lib-contacts/inc/Contacts/Input/ContactGroupsFieldItem.h b/lib-contacts/inc/Contacts/Input/ContactGroupsFieldItem.h index e63a8fa..641b771 100644 --- a/lib-contacts/inc/Contacts/Input/ContactGroupsFieldItem.h +++ b/lib-contacts/inc/Contacts/Input/ContactGroupsFieldItem.h @@ -23,6 +23,10 @@ namespace Contacts { + namespace Groups + { + class GroupsView; + } namespace Model { class ContactArray; @@ -63,6 +67,7 @@ namespace Contacts std::string formatGroups() const; void pickGroups(); bool onGroupsSelected(Ux::SelectResults results); + void onGroupsViewFilled(Groups::GroupsView *view); Model::ContactArray &m_GroupRels; }; diff --git a/lib-contacts/src/Contacts/Groups/GroupsView.cpp b/lib-contacts/src/Contacts/Groups/GroupsView.cpp index 084c8ff..f6feb73 100644 --- a/lib-contacts/src/Contacts/Groups/GroupsView.cpp +++ b/lib-contacts/src/Contacts/Groups/GroupsView.cpp @@ -70,6 +70,11 @@ void GroupsView::setAssignMode(bool isEnabled) updateCreateItem(); } +void GroupsView::setFillCallback(FillCallback callback) +{ + m_OnFilled = std::move(callback); +} + Evas_Object *GroupsView::onCreate(Evas_Object *parent) { m_Genlist = new Genlist(); @@ -90,6 +95,10 @@ Evas_Object *GroupsView::onCreate(Evas_Object *parent) insertItem(groupItem); addSelectItem(groupItem); } + + if (m_OnFilled) { + m_OnFilled(); + } }); updateNotAssignedItem(); diff --git a/lib-contacts/src/Contacts/Input/ContactGroupsFieldItem.cpp b/lib-contacts/src/Contacts/Input/ContactGroupsFieldItem.cpp index 7a833d0..05a095b 100644 --- a/lib-contacts/src/Contacts/Input/ContactGroupsFieldItem.cpp +++ b/lib-contacts/src/Contacts/Input/ContactGroupsFieldItem.cpp @@ -127,19 +127,8 @@ void ContactGroupsFieldItem::pickGroups() view->setSelectMode(Ux::SelectMulti); view->setEmptyResultAllowed(true); view->setSelectCallback(std::bind(&ContactGroupsFieldItem::onGroupsSelected, this, _1)); + view->setFillCallback(std::bind(&ContactGroupsFieldItem::onGroupsViewFilled, this, view)); navigator->navigateTo(view); - - for (auto &&field : m_GroupRels) { - int groupId = getRecordInt(field.getRecord(), _contacts_group_relation.group_id); - - for (auto &&item : view->getSelectItems()) { - GroupItem &groupItem = static_cast(*item); - if (groupItem.getGroup().getId() == groupId) { - groupItem.setChecked(true); - break; - } - } - } } bool ContactGroupsFieldItem::onGroupsSelected(Ux::SelectResults results) @@ -172,3 +161,18 @@ bool ContactGroupsFieldItem::onGroupsSelected(Ux::SelectResults results) update(); return true; } + +void ContactGroupsFieldItem::onGroupsViewFilled(GroupsView *view) +{ + for (auto &&field : m_GroupRels) { + int groupId = getRecordInt(field.getRecord(), _contacts_group_relation.group_id); + + for (auto &&item : view->getSelectItems()) { + GroupItem &groupItem = static_cast(*item); + if (groupItem.getGroup().getId() == groupId) { + groupItem.setChecked(true); + break; + } + } + } +} -- 2.7.4