summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Kurzberg <i.kurtsberg@samsung.com>2017-02-23 13:40:53 +0200
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>2017-02-27 23:46:30 -0800
commit53581f77a365f318d057077c914ea9732677a701 (patch)
tree5af263c5e352b8b96403faa3c279b3e8e3146d91
parentabc146eea5d4ee11295f657ad5272811c15ce844 (diff)
downloadalarm-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.h13
-rw-r--r--alarm-app/src/Input/InputView.cpp48
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, &currentPage, 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;
}
}