diff options
author | Eugene Kurzberg <i.kurtsberg@samsung.com> | 2017-02-23 13:40:53 +0200 |
---|---|---|
committer | Gerrit Code Review <gerrit@review.vlan103.tizen.org> | 2017-02-27 23:46:30 -0800 |
commit | 53581f77a365f318d057077c914ea9732677a701 (patch) | |
tree | 5af263c5e352b8b96403faa3c279b3e8e3146d91 | |
parent | abc146eea5d4ee11295f657ad5272811c15ce844 (diff) | |
download | alarm-53581f77a365f318d057077c914ea9732677a701.tar.gz alarm-53581f77a365f318d057077c914ea9732677a701.tar.bz2 alarm-53581f77a365f318d057077c914ea9732677a701.zip |
Refactor InputView action button to support 3 pages.
Change-Id: I8b9a85ef58dc8d9ffc2d50abf2dfaa9214d9d97a
Signed-off-by: Eugene Kurzberg <i.kurtsberg@samsung.com>
-rw-r--r-- | alarm-app/inc/Input/InputView.h | 13 | ||||
-rw-r--r-- | alarm-app/src/Input/InputView.cpp | 48 |
2 files changed, 37 insertions, 24 deletions
diff --git a/alarm-app/inc/Input/InputView.h b/alarm-app/inc/Input/InputView.h index c40df49..eb129ca 100644 --- a/alarm-app/inc/Input/InputView.h +++ b/alarm-app/inc/Input/InputView.h @@ -31,10 +31,9 @@ namespace Input class InputView : public Ui::ScrollNavigator { public: - /** * @brief Called when alarm is created. - * @param id Created Alarm ID + * @param id Created Alarm ID */ typedef std::function<void(int id)> CreateCallback; @@ -61,17 +60,25 @@ namespace Input Evas_Object *createScroller(Evas_Object *parent); void updateButton(); + void navigateNext(); void saveAlarm(); void deleteAlarm(); void handleDuplicateAlarm(); - bool isFirstPage() const; void onTimeChanged(Evas_Object *datetime, void *eventInfo); void onPageChanged(Evas_Object *scroller, void *eventInfo); void onButtonPressed(Evas_Object *button, void *eventInfo); + enum ButtonType + { + ButtonNext, + ButtonDelete, + ButtonSave + }; + Evas_Object *m_Scroller; Evas_Object *m_Button; + ButtonType m_ButtonType; bool m_HasDeleteButton; CreateCallback m_OnCreated; diff --git a/alarm-app/src/Input/InputView.cpp b/alarm-app/src/Input/InputView.cpp index 2fab124..225dfa5 100644 --- a/alarm-app/src/Input/InputView.cpp +++ b/alarm-app/src/Input/InputView.cpp @@ -39,6 +39,7 @@ InputView::InputView(Alarm alarm) m_Alarm(std::move(alarm)) { m_HasDeleteButton = m_Alarm.getId() != 0; + m_ButtonType = m_HasDeleteButton ? ButtonDelete : ButtonNext; } Evas_Object *InputView::onCreate(Evas_Object *parent) @@ -101,14 +102,24 @@ Evas_Object *InputView::createScroller(Evas_Object *parent) void InputView::updateButton() { - const char *text = nullptr; - if (isFirstPage()) { - text = m_HasDeleteButton ? "WDS_ALM_ACBUTTON_DELETE_ABB" : "WDS_ALM_ACBUTTON_NEXT_ABB"; + static const char *buttonText[] = { + /* [ButtonNext] = */ "WDS_ALM_ACBUTTON_NEXT_ABB", + /* [ButtonDelete] = */ "WDS_ALM_ACBUTTON_DELETE_ABB", + /* [ButtonSave] = */ "WDS_ALM_ACBUTTON_SAVE_ABB" + }; + + int currentPage = 0, lastPage = 0; + elm_scroller_current_page_get(m_Scroller, ¤tPage, nullptr); + elm_scroller_last_page_get(m_Scroller, &lastPage, nullptr); + if (currentPage == 0) { + m_ButtonType = m_HasDeleteButton ? ButtonDelete : ButtonNext; + } else if (currentPage == lastPage) { + m_ButtonType = ButtonSave; } else { - text = "WDS_ALM_ACBUTTON_SAVE_ABB"; + m_ButtonType = ButtonNext; } - elm_object_translatable_text_set(m_Button, text); + elm_object_translatable_text_set(m_Button, buttonText[m_ButtonType]); } void InputView::setCreateCallback(CreateCallback callback) @@ -116,6 +127,13 @@ void InputView::setCreateCallback(CreateCallback callback) m_OnCreated = std::move(callback); } +void InputView::navigateNext() +{ + int index = 0; + elm_scroller_current_page_get(m_Scroller, &index, nullptr); + elm_scroller_page_bring_in(m_Scroller, index + 1, 0); +} + void InputView::saveAlarm() { tm time = m_TimeView->getTimePicker()->getTime(); @@ -187,13 +205,6 @@ void InputView::handleDuplicateAlarm() getPage()->close(); } -bool InputView::isFirstPage() const -{ - int index = 0; - elm_scroller_current_page_get(m_Scroller, &index, nullptr); - return index == 0; -} - void InputView::onTimeChanged(Evas_Object *datetime, void *eventInfo) { m_HasDeleteButton = false; @@ -212,14 +223,9 @@ void InputView::onPageChanged(Evas_Object *scroller, void *eventInfo) void InputView::onButtonPressed(Evas_Object *button, void *eventInfo) { - if (isFirstPage()) { - if (!m_HasDeleteButton) { - elm_scroller_page_bring_in(m_Scroller, 1, 0); - return; - } - - deleteAlarm(); - } else { - saveAlarm(); + switch (m_ButtonType) { + case ButtonNext: navigateNext(); break; + case ButtonDelete: deleteAlarm(); break; + case ButtonSave: saveAlarm(); break; } } |