From 992fd148f53429d1de8b08278445299ea57c3d50 Mon Sep 17 00:00:00 2001 From: Andrey Klimenko Date: Mon, 5 Dec 2016 15:52:59 +0200 Subject: [PATCH] TSAM-10985 temporary disabling "Contacts" button when contacts-app was started to avoid multiple launches of contact-apps Change-Id: Iaa4d3d1e01d258bce844b8dbc73419c78130056d Signed-off-by: Andrey Klimenko --- .../AppControl/inc/ContactPicker.h | 1 + .../AppControl/src/ContactPicker.cpp | 4 +++ .../Controller/inc/ConvRecipientsPanel.h | 1 + .../Controller/src/ConvRecipientsPanel.cpp | 9 +++++++ .../View/inc/ConvRecipientsPanelView.h | 2 +- .../View/src/ConvRecipientsPanelView.cpp | 27 +++++++++++++++++++ 6 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/Conversation/AppControl/inc/ContactPicker.h b/src/Conversation/AppControl/inc/ContactPicker.h index c4dfe0d6..0ea346d4 100644 --- a/src/Conversation/AppControl/inc/ContactPicker.h +++ b/src/Conversation/AppControl/inc/ContactPicker.h @@ -69,6 +69,7 @@ namespace Msg public: virtual ~IContactPickerListener() {} virtual void onContactsPicked(const std::list &numberIdList) {}; + virtual void onFinish() {}; }; } diff --git a/src/Conversation/AppControl/src/ContactPicker.cpp b/src/Conversation/AppControl/src/ContactPicker.cpp index b2cf628c..f5cf201d 100644 --- a/src/Conversation/AppControl/src/ContactPicker.cpp +++ b/src/Conversation/AppControl/src/ContactPicker.cpp @@ -59,6 +59,7 @@ bool ContactPicker::launch(size_t howManyToPick) size_t len = sizeof(addressesTypes) / sizeof(addressesTypes[0]); app_control_add_extra_data_array(svc_handle, APP_CONTROL_DATA_TYPE, addressesTypes, len); app_control_set_launch_mode(svc_handle, APP_CONTROL_LAUNCH_MODE_GROUP); + app_control_enable_app_started_result_event(svc_handle); int ret = app_control_send_launch_request(svc_handle, APP_CONTROL_RES_CALLBACK(ContactPicker, onAppControlRes), this); MSG_LOG("launching contacts, result-code: ", ret); res = (ret == APP_CONTROL_ERROR_NONE); @@ -70,6 +71,9 @@ bool ContactPicker::launch(size_t howManyToPick) void ContactPicker::onAppControlRes(app_control_h request, app_control_h reply, app_control_result_e result) { + if (m_pListener) + m_pListener->onFinish(); + if (result == APP_CONTROL_RESULT_SUCCEEDED) { std::list addressIds; diff --git a/src/Conversation/Recipients/Controller/inc/ConvRecipientsPanel.h b/src/Conversation/Recipients/Controller/inc/ConvRecipientsPanel.h index 24b33ed4..e5140aee 100644 --- a/src/Conversation/Recipients/Controller/inc/ConvRecipientsPanel.h +++ b/src/Conversation/Recipients/Controller/inc/ConvRecipientsPanel.h @@ -80,6 +80,7 @@ namespace Msg // IContactPickerListener virtual void onContactsPicked(const std::list &addressIdList); + virtual void onFinish(); // IContactManagerListener: virtual void onContactChanged(); diff --git a/src/Conversation/Recipients/Controller/src/ConvRecipientsPanel.cpp b/src/Conversation/Recipients/Controller/src/ConvRecipientsPanel.cpp index ac62108e..346a2879 100644 --- a/src/Conversation/Recipients/Controller/src/ConvRecipientsPanel.cpp +++ b/src/Conversation/Recipients/Controller/src/ConvRecipientsPanel.cpp @@ -257,7 +257,10 @@ void ConvRecipientsPanel::onContactButtonClicked() MSG_LOG(""); int currentRecipientsCount = getItemsCount(); if (currentRecipientsCount < getMaxRecipientCount()) + { + setButtonEnabled(ContactButton, false); m_Picker.launch(getMaxRecipientCount() - currentRecipientsCount); + } else showTooManyRecipientsNotif(); } @@ -298,6 +301,12 @@ void ConvRecipientsPanel::onContactsPicked(const std::list &addressI setEntryFocus(true); } +void ConvRecipientsPanel::onFinish() +{ + MSG_LOG(""); + setButtonEnabled(ContactButton, true); +} + void ConvRecipientsPanel::onPopupBtnClicked(Popup &popup, int buttonId) { popup.destroy(); diff --git a/src/Conversation/Recipients/View/inc/ConvRecipientsPanelView.h b/src/Conversation/Recipients/View/inc/ConvRecipientsPanelView.h index 39579a6a..e9af3982 100644 --- a/src/Conversation/Recipients/View/inc/ConvRecipientsPanelView.h +++ b/src/Conversation/Recipients/View/inc/ConvRecipientsPanelView.h @@ -71,7 +71,7 @@ namespace Msg void setEditMode(bool isEdit); void showInvalidIcon(bool show); void showClearButton(bool show); - + void setButtonEnabled(ButtonType buttonType, bool enabled); private: // Out signals: virtual void onKeyDown(Evas_Event_Key_Down *ev) {}; diff --git a/src/Conversation/Recipients/View/src/ConvRecipientsPanelView.cpp b/src/Conversation/Recipients/View/src/ConvRecipientsPanelView.cpp index 10b6aaca..0b368a68 100644 --- a/src/Conversation/Recipients/View/src/ConvRecipientsPanelView.cpp +++ b/src/Conversation/Recipients/View/src/ConvRecipientsPanelView.cpp @@ -84,6 +84,33 @@ void ConvRecipientsPanelView::showButton(ButtonType buttonType) } } +void ConvRecipientsPanelView::setButtonEnabled(ButtonType buttonType, bool enabled) +{ + Evas_Object *pBtn = nullptr; + switch (buttonType) + { + case NoneButton: + break; + + case ContactButton: + pBtn = getContactBtn(); + break; + + case PlusButton: + pBtn = getPlusBtn(); + break; + + default: + assert(false); + break; + } + + if(pBtn) + { + elm_object_disabled_set(pBtn, !enabled); + } +} + void ConvRecipientsPanelView::addGeometryChangedCb(Evas_Object *obj) { evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, EVAS_EVENT_CALLBACK(ConvRecipientsPanelView, onGeometryChanged), this); -- 2.34.1