From 6441869cc45af88030c3538ff060b2deccfb53b2 Mon Sep 17 00:00:00 2001 From: Sergii Kyryliuk Date: Wed, 1 Mar 2017 11:49:14 +0200 Subject: TizenRefApp-8013 Implement automatic selection of created event for pick operation Change-Id: I2dfdf43d9cdab02b92def3c7a6622ae25e6776f8 Signed-off-by: Sergii Kyryliuk --- alarm-app/inc/List/AlarmsView.h | 14 ++++++++++++++ alarm-app/inc/OperationPickController.h | 9 ++++++++- alarm-app/src/List/AlarmsView.cpp | 9 ++++++++- alarm-app/src/OperationPickController.cpp | 22 ++++++++++++++++------ 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/alarm-app/inc/List/AlarmsView.h b/alarm-app/inc/List/AlarmsView.h index 5a00ee1..8128337 100644 --- a/alarm-app/inc/List/AlarmsView.h +++ b/alarm-app/inc/List/AlarmsView.h @@ -39,9 +39,21 @@ namespace List class AlarmsView: public Ux::SelectView { public: + /** + * @brief Called when Alarm is added + * @param alarmId Added Alarm ID + */ + typedef std::function AddCallback; + AlarmsView(); virtual ~AlarmsView() override; + /** + * @brief Set add Alarm callback. + * @param[in] callback Add callback + */ + void setAddCallback(AddCallback callback); + private: virtual Evas_Object *onCreate(Evas_Object *parent) override; virtual void onCreated() override; @@ -75,6 +87,8 @@ namespace List AddAlarmItem *m_AddAlarmItem; Ux::MultiSelector *m_MultiSelector; Common::Model::AlarmProvider m_Provider; + + AddCallback m_OnAlarmAdded; }; } diff --git a/alarm-app/inc/OperationPickController.h b/alarm-app/inc/OperationPickController.h index 8f149ff..9edc855 100644 --- a/alarm-app/inc/OperationPickController.h +++ b/alarm-app/inc/OperationPickController.h @@ -20,11 +20,18 @@ #include "App/OperationController.h" #include "Ux/SelectTypes.h" +namespace Ui +{ + class View; +} + class OperationPickController : public App::OperationController { private: virtual void onRequest(const char *operation, app_control_h request) override; - bool onSelected(Ux::SelectResults results); + bool onAlarmSelected(Ux::SelectResults results); + void onAlarmAdded(Ui::View *view, int alarmId); + void sendReply(int alarmId); }; #endif /* OPERATION_PICK_CONTROLLER_H */ diff --git a/alarm-app/src/List/AlarmsView.cpp b/alarm-app/src/List/AlarmsView.cpp index 088b5a0..acbc2fb 100644 --- a/alarm-app/src/List/AlarmsView.cpp +++ b/alarm-app/src/List/AlarmsView.cpp @@ -63,6 +63,11 @@ AlarmsView::~AlarmsView() System::Settings::removeCallback(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, this); } +void AlarmsView::setAddCallback(AddCallback callback) +{ + m_OnAlarmAdded = std::move(callback); +} + Evas_Object *AlarmsView::onCreate(Evas_Object *parent) { Evas_Object *layout = elm_layout_add(parent); @@ -242,7 +247,9 @@ void AlarmsView::onAlarmDeleted(AlarmItem *item) void AlarmsView::onAddPressed() { if (m_Provider.getDataList().size() < ALARM_MAX_COUNT) { - getNavigator()->navigateTo(new Input::InputView({ })); + Input::InputView *view = new Input::InputView({ }); + view->setCreateCallback(m_OnAlarmAdded); + getNavigator()->navigateTo(view); } else { char buffer[TOAST_TEXT_SIZE]; snprintf(buffer, sizeof(buffer), _("WDS_ALM_TPOP_PD_ALARMS_ALLOWED"), ALARM_MAX_COUNT); diff --git a/alarm-app/src/OperationPickController.cpp b/alarm-app/src/OperationPickController.cpp index c3d2d3d..5294fdb 100644 --- a/alarm-app/src/OperationPickController.cpp +++ b/alarm-app/src/OperationPickController.cpp @@ -28,19 +28,29 @@ void OperationPickController::onRequest(const char *operation, app_control_h req { List::AlarmsView *view = new List::AlarmsView(); view->setSelectMode(Ux::SelectSingle); - view->setSelectCallback(std::bind(&OperationPickController::onSelected, this, _1)); + view->setSelectCallback(std::bind(&OperationPickController::onAlarmSelected, this, _1)); + view->setAddCallback(std::bind(&OperationPickController::onAlarmAdded, this, view, _1)); getNavigator()->navigateTo(view); } -bool OperationPickController::onSelected(Ux::SelectResults results) +bool OperationPickController::onAlarmSelected(Ux::SelectResults results) { - auto alarm = (Alarm *)results.begin()->value.data; + Alarm *alarm = (Alarm *) results.begin()->value.data; + sendReply(alarm->getId()); + return true; +} + +void OperationPickController::onAlarmAdded(Ui::View *view, int alarmId) +{ + sendReply(alarmId); + view->getPage()->close(); +} +void OperationPickController::sendReply(int alarmId) +{ app_control_h reply = nullptr; app_control_create(&reply); - app_control_add_extra_data(reply, APP_CONTROL_DATA_SELECTED, std::to_string(alarm->getId()).c_str()); + app_control_add_extra_data(reply, APP_CONTROL_DATA_SELECTED, std::to_string(alarmId).c_str()); app_control_reply_to_launch_request(reply, getRequest(), APP_CONTROL_RESULT_SUCCEEDED); app_control_destroy(reply); - - return true; } -- cgit v1.2.3