Timer: Change entry time on button longpress. 24/92324/6
authorKamil Lipiszko <k.lipiszko@samsung.com>
Fri, 14 Oct 2016 12:34:43 +0000 (14:34 +0200)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Wed, 26 Oct 2016 08:20:58 +0000 (01:20 -0700)
Change-Id: I3f77b62d14b2c34e5b196e9adf43e651b3fde162

clock/inc/View/TimerView.h
clock/res/edje/Timer.edc
clock/src/View/TimerView.cpp

index aa60cbc..971e1dd 100644 (file)
@@ -79,6 +79,14 @@ namespace view {
                Evas_Object *conformant = NULL;
                view::CounterView *counter_ = NULL;
 
+               Ecore_Timer *timer_ = NULL;
+               bool isLongpressed_ = false;
+
+               enum class ButtonArrowDirection {
+                       ARROW_UP,
+                       ARROW_DOWN,
+               };
+
                struct Time {
                        Time() : Hour(0), Min(0), Sec(0) {}
                        unsigned int Hour, Min, Sec;
@@ -92,12 +100,14 @@ namespace view {
                                const char *part, Evas_Smart_Cb cb);
 
                void CreateSelector();
+               void CreateSelectorsButton(const char* type, ButtonArrowDirection direction);
                void CreateMenuButtons();
                void CreateEntry(Evas_Object *parent, const char *part);
                void CreateEntries(Evas_Object *parent);
 
                void UpdateView();
                void UpdateTime();
+               void UpdateSetTime(const char *part);
 
                void UnfocusEntries();
 
@@ -107,13 +117,15 @@ namespace view {
                static const char *GROUP;
                static const char *GetEdjeFilePath(void);
 
+               static Eina_Bool TimerCb(void *data);
                static void StartButtonClicked(void *data, Evas_Object *obj, void *event_info);
                static void PauseButtonClicked(void *data, Evas_Object *obj, void *event_info);
                static void CancelButtonClicked(void *data, Evas_Object *obj, void *event_info);
                static void ResumeButtonClicked(void *data, Evas_Object *obj, void *event_info);
                static void ResetButtonClicked(void *data, Evas_Object *obj, void *event_info);
 
-               static void ButtonClickedCb(void *data, Evas_Object *obj, const char *emission, const char *source);
+               static void ButtonPressedCb(void *data, Evas_Object *obj, void *event_info);
+               static void ButtonUnpressedCb(void *data, Evas_Object *obj, void *event_info);
                static void EntryFocusedCb(void *data, Evas_Object *obj, void *event_info);
                static void EntryUnfocusedCb(void *data, Evas_Object *obj, void *event_info);
                static void EntryChangedCb(void *data, Evas_Object *obj, void *event_info);
index f9d2ae5..37e0f7c 100644 (file)
@@ -96,7 +96,6 @@ collections {
                        }
                        swallow { "sw.btn.start"; scale;
                                desc { "default";
-                                       align: 0.5 0.5;
                                        max: 500 -1;
                                        rel1.to: "btn.bg";
                                        rel2.to: "btn.bg";
@@ -196,8 +195,7 @@ collections {
                                        rel2 { to_x: "sw.content"; }
                                }
                        }
-                       group { "btn.hour.inc"; scale;
-                               source: "timer_button_inc";
+                       swallow { "sw.hour.inc"; scale;
                                desc { "default";
                                        fixed: 1 1;
                                        min: 146 76;
@@ -206,24 +204,30 @@ collections {
                                        rel1 { relative: 1.0 0.0; to_x: "pd.selector.left"; }
                                        rel2 { relative: 1.0 0.0; to_y: "pd.content.top"; }
                                }
+                               desc { "hidden";
+                                       inherit: "default";
+                                       hid;
+                               }
                        }
-                       group { "btn.minute.inc"; scale;
-                               source: "timer_button_inc";
+                       swallow { "sw.minute.inc"; scale;
                                desc { "default";
                                        fixed: 1 1;
                                        min: 146 76;
                                        max: 146 76;
                                        align: 0.5 1.0;
-                                       rel1 { relative: 1.0 0.0; to_x: "btn.hour.inc"; }
+                                       rel1 { relative: 1.0 0.0; to_x: "sw.hour.inc"; }
                                        rel2 {
                                                relative: 0.0 0.0;
-                                               to_x: "btn.second.inc";
+                                               to_x: "sw.second.inc";
                                                to_y: "pd.content.top";
                                        }
                                }
+                               desc { "hidden";
+                                       inherit: "default";
+                                       hid;
+                               }
                        }
-                       group { "btn.second.inc"; scale;
-                               source: "timer_button_inc";
+                       swallow { "sw.second.inc"; scale;
                                desc { "default";
                                        fixed: 1 1;
                                        min: 146 76;
@@ -235,9 +239,12 @@ collections {
                                                to_y: "pd.content.top";
                                        }
                                }
+                               desc { "hidden";
+                                       inherit: "default";
+                                       hid;
+                               }
                        }
-                       group { "btn.hour.dec"; scale;
-                               source: "timer_button_dec";
+                       swallow { "sw.hour.dec"; scale;
                                desc { "default";
                                        fixed: 1 1;
                                        min: 146 76;
@@ -249,9 +256,12 @@ collections {
                                                to_y: "pd.content.bottom";
                                        }
                                }
+                               desc { "hidden";
+                                       inherit: "default";
+                                       hid;
+                               }
                        }
-                       group { "btn.minute.dec"; scale;
-                               source: "timer_button_dec";
+                       swallow { "sw.minute.dec"; scale;
                                desc { "default";
                                        fixed: 1 1;
                                        min: 146 76;
@@ -259,14 +269,17 @@ collections {
                                        align: 0.5 0.0;
                                        rel1 {
                                                relative: 1.0 1.0;
-                                               to_x: "btn.hour.dec";
+                                               to_x: "sw.hour.dec";
                                                to_y: "pd.content.bottom";
                                        }
-                                       rel2 { relative: 0.0 1.0; to_x: "btn.second.dec"; }
+                                       rel2 { relative: 0.0 1.0; to_x: "sw.second.dec"; }
+                               }
+                               desc { "hidden";
+                                       inherit: "default";
+                                       hid;
                                }
                        }
-                       group { "btn.second.dec"; scale;
-                               source: "timer_button_dec";
+                       swallow { "sw.second.dec"; scale;
                                desc { "default";
                                        fixed: 1 1;
                                        min: 146 76;
@@ -275,6 +288,10 @@ collections {
                                        rel1 { relative: 0.0 1.0; to_y: "pd.content.bottom"; }
                                        rel2 { relative: 0.0 1.0; to_x: "pd.selector.right"; }
                                }
+                               desc { "hidden";
+                                       inherit: "default";
+                                       hid;
+                               }
                        }
                        spacer { "pd.time.desc"; scale;
                                desc { "default";
@@ -291,10 +308,10 @@ collections {
                                        min: 146 42;
                                        max: 146 42;
                                        align: 0.5 1.0;
-                                       rel1.to_x: "btn.hour.inc";
+                                       rel1.to_x: "sw.hour.inc";
                                        rel2 {
                                                relative: 1.0 0.0;
-                                               to_x: "btn.hour.inc";
+                                               to_x: "sw.hour.inc";
                                                to_y: "pd.time.desc";
                                        }
                                        text {
@@ -306,7 +323,7 @@ collections {
                                        inherit: "default";
                                        rel2 {
                                                relative: 1.0 0.0;
-                                               to_x: "btn.hour.inc";
+                                               to_x: "sw.hour.inc";
                                                to_y: "pd.content.top";
                                        }
                                }
@@ -317,10 +334,10 @@ collections {
                                        min: 146 42;
                                        max: 146 42;
                                        align: 0.5 1.0;
-                                       rel1.to_x: "btn.minute.inc";
+                                       rel1.to_x: "sw.minute.inc";
                                        rel2 {
                                                relative: 1.0 0.0;
-                                               to_x: "btn.minute.inc";
+                                               to_x: "sw.minute.inc";
                                                to_y: "pd.time.desc";
                                        }
                                        text {
@@ -332,7 +349,7 @@ collections {
                                        inherit: "default";
                                        rel2 {
                                                relative: 1.0 0.0;
-                                               to_x: "btn.minute.inc";
+                                               to_x: "sw.minute.inc";
                                                to_y: "pd.content.top";
                                        }
                                }
@@ -343,10 +360,10 @@ collections {
                                        min: 146 42;
                                        max: 146 42;
                                        align: 0.5 1.0;
-                                       rel1.to_x: "btn.second.inc";
+                                       rel1.to_x: "sw.second.inc";
                                        rel2 {
                                                relative: 1.0 0.0;
-                                               to_x: "btn.second.inc";
+                                               to_x: "sw.second.inc";
                                                to_y: "pd.time.desc";
                                        }
                                        text {
@@ -358,12 +375,34 @@ collections {
                                        inherit: "default";
                                        rel2 {
                                                relative: 1.0 0.0;
-                                               to_x: "btn.second.inc";
+                                               to_x: "sw.second.inc";
                                                to_y: "pd.content.top";
                                        }
                                }
                        }
                        program {
+                               signal: "arrow.buttons.show";
+                               source: "timer";
+                               action: STATE_SET "default";
+                               target: "sw.hour.inc";
+                               target: "sw.minute.inc";
+                               target: "sw.second.inc";
+                               target: "sw.hour.dec";
+                               target: "sw.minute.dec";
+                               target: "sw.second.dec";
+                       }
+                       program {
+                               signal: "arrow.buttons.hide";
+                               source: "timer";
+                               action: STATE_SET "hidden";
+                               target: "sw.hour.inc";
+                               target: "sw.minute.inc";
+                               target: "sw.second.inc";
+                               target: "sw.hour.dec";
+                               target: "sw.minute.dec";
+                               target: "sw.second.dec";
+                       }
+                       program {
                                signal: "menu.startup.show";
                                source: "timer";
                                action: STATE_SET "default";
@@ -432,67 +471,65 @@ collections {
 
        group { "Time_selector";
                parts {
-                       swallow { "sw.entry.hour"; scale;
+                       textblock { scale;
                                desc {
-                                       max: -1 204;
-                                       align: 0.5 0.5;
-                                       rel1.relative: 0.0 0.0;
-                                       rel2.relative: 0.3 1.0;
+                                       text.style: "ATO010";
+                                       text.text: ":";
+                                       rel1 { relative: 0.0 0.0; }
+                                       rel2 { relative: (2/3) 1.0; }
                                }
                        }
                        textblock { scale;
                                desc {
                                        text.style: "ATO010";
                                        text.text: ":";
-                                       rel1 { relative: 1.0 0.0; to: "sw.entry.hour"; }
-                                       rel2 { relative: 0.0 1.0; to: "sw.entry.minute"; }
+                                       rel1 { relative: (1/3) 0.0; }
+                                       rel2 { relative: 1.0 1.0; }
                                }
                        }
-                       swallow { "sw.entry.minute"; scale;
+                       swallow { "sw.entry.hour"; scale;
                                desc {
-                                       max: -1 204;
-                                       align: 0.5 0.5;
-                                       rel1.relative: 0.35 0.0;
-                                       rel2.relative: 0.65 1.0;
+                                       min: 190 204;
+                                       max: 190 204;
+                                       fixed: 1 1;
+                                       rel2.relative: (1/3) 1.0;
                                }
                        }
-                       textblock { scale;
+                       swallow { "sw.entry.minute"; scale;
                                desc {
-                                       text.style: "ATO010";
-                                       text.text: ":";
-                                       rel1 { relative: 1.0 0.0; to: "sw.entry.minute"; }
-                                       rel2 { relative: 0.0 1.0; to: "sw.entry.second"; }
+                                       min: 190 204;
+                                       max: 190 204;
+                                       fixed: 1 1;
                                }
                        }
                        swallow { "sw.entry.second"; scale;
                                desc {
-                                       max: -1 204;
-                                       align: 1.0 0.5;
-                                       rel1.relative: 0.70 0.0;
-                                       rel2.relative: 1.0 1.0;
+                                       min: 190 204;
+                                       max: 190 204;
+                                       fixed: 1 1;
+                                       rel1.relative: (2/3) 0.0;
                                }
                        }
                }
        }
 
-       group { "timer_button_inc";
-
+       group { "elm/button/base/arrow";
                parts {
-                       image { "btn.arrow.up";
+                       image { "btn.arrow";
                                desc { "default";
                                        image.normal: "alarm_picker_arrow_up.png";
                                        color: 250 250 250 60;
                                }
-                               desc { "hidden";
+                               desc { "down";
                                        inherit: "default";
-                                       hid;
+                                       image.normal: "alarm_picker_arrow_down.png";
                                }
                        }
                        image { "btn.bg"; scale;
                                desc { "default";
                                        color: 0 0 0 20;
-                                       rel1.to: "btn.arrow.up";
-                                       rel2.to: "btn.arrow.up";
+                                       rel1.to: "btn.arrow";
+                                       rel2.to: "btn.arrow";
                                        image.normal: "arrow_bg_horizontal.png";
                                        hid;
                                }
@@ -510,147 +547,56 @@ collections {
                                desc { "contracted";
                                        inherit: "pressed";
                                }
-                               desc { "hidden";
-                                       inherit: "default";
-                                       hid;
-                               }
                        }
                        program {
-                               signal: "mouse,clicked,*";
-                               source: "btn.arrow.up";
-                               action: SIGNAL_EMIT "btn,clicked" "";
+                               signal: "arrow.down";
+                               source: "timer";
+                               action: STATE_SET "down";
+                               target: "btn.arrow";
                        }
                        program {
-                               signal: "mouse,down,*";
-                               source: "btn.arrow.up";
-                               action: STATE_SET "pressed";
-                               target: "btn.bg";
-                               after: "btn.bg.expand";
+                               signal: "mouse,clicked,*";
+                               source: "btn.arrow";
+                               action: SIGNAL_EMIT "elm,action,click" "";
                        }
                        program {
-                               name: "btn.bg.expand";
-                               action: STATE_SET "expanded";
-                               target: "btn.bg";
-                               transition: DECEL 0.03;
+                               signal: "mouse,down,*";
+                               source: "btn.arrow";
+                               script {
+                                       set_state(PART:"btn.bg", "pressed", 0.0);
+                                       run_program(PROGRAM:"btn.bg.expand");
+                                       emit("elm,action,press", "");
+                               }
                        }
                        program {
                                signal: "mouse,up,*";
-                               source: "btn.arrow.up";
-                               action: STATE_SET "contracted";
-                               target: "btn.bg";
+                               source: "btn.arrow";
                                transition: DECEL 0.03;
-                               after: "btn.bg.hide";
-                       }
-                       program {
-                               name: "btn.bg.hide";
-                               action: STATE_SET "default";
-                               target: "btn.bg";
-                       }
-                       program {
-                               name: "arrow.btn.hide";
-                               signal: "arrow.btn.hide";
-                               source: "timer";
-                               action: STATE_SET "hidden";
-                               target: "btn.bg";
-                               target: "btn.arrow.up";
-                       }
-                       program {
-                               name: "arrow.btn.show";
-                               signal: "arrow.btn.show";
-                               source: "timer";
-                               action: STATE_SET "default";
-                               target: "btn.bg";
-                               target: "btn.arrow.up";
-                       }
-               }
-       }
-
-       group { "timer_button_dec";
-
-               parts {
-                       image { "btn.arrow.down";
-                               desc { "default";
-                                       image.normal: "alarm_picker_arrow_down.png";
-                                       color: 250 250 250 60;
-                               }
-                               desc { "hidden";
-                                       inherit: "default";
-                                       hid;
-                               }
-                       }
-                       image { "btn.bg"; scale;
-                               desc { "default";
-                                       color: 0 0 0 20;
-                                       rel1.to: "btn.arrow.down";
-                                       rel2.to: "btn.arrow.down";
-                                       image.normal: "arrow_bg_horizontal.png";
-                                       hid;
-                               }
-                               desc { "pressed";
-                                       inherit: "default";
-                                       fixed: 1 1;
-                                       min: 102 53;
-                                       max: 102 53;
-                                       vis;
-                               }
-                               desc { "expanded";
-                                       inherit: "default";
-                                       vis;
-                               }
-                               desc { "contracted";
-                                       inherit: "pressed";
-                               }
-                               desc { "hidden";
-                                       inherit: "default";
-                                       hid;
+                               script {
+                                       set_state(PART:"btn.bg", "contracted", 0.0);
+                                       run_program(PROGRAM:"btn.bg.hide");
+                                       emit("elm,action,unpress", "");
                                }
                        }
                        program {
-                               signal: "mouse,clicked,*";
-                               source: "btn.arrow.down";
-                               action: SIGNAL_EMIT "btn,clicked" "";
-                       }
-                       program {
-                               signal: "mouse,down,*";
-                               source: "btn.arrow.down";
-                               action: STATE_SET "pressed";
-                               target: "btn.bg";
-                               after: "btn.bg.expand";
-                       }
-                       program {
                                name: "btn.bg.expand";
                                action: STATE_SET "expanded";
                                target: "btn.bg";
                                transition: DECEL 0.03;
                        }
                        program {
-                               signal: "mouse,up,*";
-                               source: "btn.arrow.down";
-                               action: STATE_SET "contracted";
-                               target: "btn.bg";
-                               transition: DECEL 0.03;
-                               after: "btn.bg.hide";
-                       }
-                       program {
                                name: "btn.bg.hide";
                                action: STATE_SET "default";
+                               transition: DECEL 0.03;
                                target: "btn.bg";
                        }
                        program {
-                               name: "arrow.btn.hide";
-                               signal: "arrow.btn.hide";
-                               source: "timer";
-                               action: STATE_SET "hidden";
-                               target: "btn.bg";
-                               target: "btn.arrow.down";
-                       }
-                       program {
                                name: "arrow.btn.show";
                                signal: "arrow.btn.show";
                                source: "timer";
                                action: STATE_SET "default";
                                target: "btn.bg";
-                               target: "btn.arrow.down";
+                               target: "btn.arrow";
                        }
                }
        }
index 234330b..32f04c1 100644 (file)
@@ -113,41 +113,80 @@ void TimerView::AlarmDismiss(void *data, Evas_Object *obj, const char *emission,
        elm_object_signal_emit(object->layout_, "menu.startup.show", "timer");
 }
 
-void TimerView::ButtonClickedCb(void *data, Evas_Object *obj, const char *emission, const char *source)
+void TimerView::UpdateSetTime(const char *part)
+{
+       if (!strcmp(part, "sw.hour.inc")) {
+               set_time_.Hour++;
+               if (set_time_.Hour > 99)
+                       set_time_.Hour = 0;
+       } else if (!strcmp(part, "sw.minute.inc")) {
+               set_time_.Min++;
+               if (set_time_.Min > 59)
+                       set_time_.Min = 0;
+       } else if (!strcmp(part, "sw.second.inc")) {
+               set_time_.Sec++;
+               if (set_time_.Sec > 59)
+                       set_time_.Sec = 0;
+       } else if (!strcmp(part, "sw.hour.dec")) {
+               set_time_.Hour--;
+               if (set_time_.Hour > 99)
+                       set_time_.Hour = 99;
+       } else if (!strcmp(part, "sw.minute.dec")) {
+               set_time_.Min--;
+               if (set_time_.Min > 59)
+                       set_time_.Min = 59;
+       } else if (!strcmp(part, "sw.second.dec")) {
+               set_time_.Sec--;
+               if (set_time_.Sec > 59)
+                       set_time_.Sec = 59;
+       }
+
+       UpdateView();
+}
+
+Eina_Bool TimerView::TimerCb(void *data)
 {
-       DBG("Button clicked: %s", source);
+       Evas_Object *button = (Evas_Object *)data;
 
-       TimerView *object = static_cast<TimerView *>(data);
+       TimerView *object = static_cast<TimerView *>(evas_object_data_get(button, "object"));
+
+       double current_interval = ecore_timer_interval_get(object->timer_);
+       if (current_interval > 0.1)
+               ecore_timer_interval_set(object->timer_, 0.1);
 
        object->UnfocusEntries();
 
-       if (!strcmp(source, "btn.hour.inc:")) {
-               object->set_time_.Hour++;
-               if (object->set_time_.Hour > 99)
-                       object->set_time_.Hour = 0;
-       } else if (!strcmp(source, "btn.minute.inc:")) {
-               object->set_time_.Min++;
-               if (object->set_time_.Min > 59)
-                       object->set_time_.Min = 0;
-       } else if (!strcmp(source, "btn.second.inc:")) {
-               object->set_time_.Sec++;
-               if (object->set_time_.Sec > 59)
-                       object->set_time_.Sec = 0;
-       } else if (!strcmp(source, "btn.hour.dec:")) {
-               object->set_time_.Hour--;
-               if (object->set_time_.Hour > 99)
-                       object->set_time_.Hour = 99;
-       } else if (!strcmp(source, "btn.minute.dec:")) {
-               object->set_time_.Min--;
-               if (object->set_time_.Min > 59)
-                       object->set_time_.Min = 59;
-       } else if (!strcmp(source, "btn.second.dec:")) {
-               object->set_time_.Sec--;
-               if (object->set_time_.Sec > 59)
-                       object->set_time_.Sec = 59;
-       }
+       char *part = (char *)evas_object_data_get(button, "btn.type");
+       object->UpdateSetTime(part);
 
-       object->UpdateView();
+       object->isLongpressed_ = true;
+
+       return EINA_TRUE;
+}
+
+void TimerView::ButtonPressedCb(void *data, Evas_Object *obj, void *event_info)
+{
+       TimerView *object = static_cast<TimerView *>(data);
+
+       if (object->timer_)
+               ecore_timer_del(object->timer_);
+
+       object->isLongpressed_ = false;
+
+       object->timer_ = ecore_timer_add(0.75, TimerCb, obj);
+}
+
+void TimerView::ButtonUnpressedCb(void *data, Evas_Object *obj, void *event_info)
+{
+       TimerView *object = static_cast<TimerView *>(data);
+
+       ecore_timer_del(object->timer_);
+       object->timer_ = nullptr;
+
+       char *part = (char *)evas_object_data_get(obj, "btn.type");
+
+       if (!object->isLongpressed_)
+               object->UpdateSetTime(part);
 }
 
 void TimerView::DisplayTime(int hour, int min, int sec)
@@ -207,6 +246,30 @@ void TimerView::GetTime(int *hour, int *minute, int *second)
        *second = set_time_.Sec;
 }
 
+void TimerView::CreateSelectorsButton(const char *part, ButtonArrowDirection direction)
+{
+       Evas_Object *button = elm_button_add(layout_);
+
+       evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       elm_object_part_content_set(layout_, part, button);
+
+       evas_object_data_set(button, "object", this);
+       evas_object_data_set(button, "btn.type", part);
+
+       evas_object_smart_callback_add(button, "pressed", ButtonPressedCb, this);
+       evas_object_smart_callback_add(button, "unpressed", ButtonUnpressedCb, this);
+
+       if (!elm_object_style_set(button, "arrow"))
+               ERR("Button style setting failed");
+
+       if (direction == ButtonArrowDirection::ARROW_DOWN)
+               elm_object_signal_emit(button, "arrow.down", "timer");
+
+       evas_object_show(button);
+}
+
 void TimerView::CreateSelector()
 {
        selector_ = elm_layout_add(layout_);
@@ -216,13 +279,15 @@ void TimerView::CreateSelector()
 
        CreateEntries(selector_);
 
-       elm_object_signal_callback_add(layout_, "btn,clicked", "btn.hour.inc:", ButtonClickedCb, this);
-       elm_object_signal_callback_add(layout_, "btn,clicked", "btn.minute.inc:", ButtonClickedCb, this);
-       elm_object_signal_callback_add(layout_, "btn,clicked", "btn.second.inc:", ButtonClickedCb, this);
+       elm_theme_overlay_add(NULL, GetEdjeFilePath());
+
+       CreateSelectorsButton("sw.hour.inc", ButtonArrowDirection::ARROW_UP);
+       CreateSelectorsButton("sw.minute.inc", ButtonArrowDirection::ARROW_UP);
+       CreateSelectorsButton("sw.second.inc", ButtonArrowDirection::ARROW_UP);
+       CreateSelectorsButton("sw.hour.dec", ButtonArrowDirection::ARROW_DOWN);
+       CreateSelectorsButton("sw.minute.dec", ButtonArrowDirection::ARROW_DOWN);
+       CreateSelectorsButton("sw.second.dec", ButtonArrowDirection::ARROW_DOWN);
 
-       elm_object_signal_callback_add(layout_, "btn,clicked", "btn.hour.dec:", ButtonClickedCb, this);
-       elm_object_signal_callback_add(layout_, "btn,clicked", "btn.minute.dec:", ButtonClickedCb, this);
-       elm_object_signal_callback_add(layout_, "btn,clicked", "btn.second.dec:", ButtonClickedCb, this);
 }
 
 void TimerView::CreateEntries(Evas_Object *parent)
@@ -367,7 +432,7 @@ void TimerView::ShowStartupMenu(void)
        ShowSelector();
 
        elm_object_signal_emit(layout_, "menu.startup.show", "timer");
-       elm_object_signal_emit(layout_, "arrow.btn.show", "timer");
+       elm_object_signal_emit(layout_, "arrow.buttons.show", "timer");
 }
 
 void TimerView::ShowRunningMenu(void)
@@ -377,8 +442,8 @@ void TimerView::ShowRunningMenu(void)
 
        ShowCounter();
 
-       elm_object_signal_emit(layout_, "arrow.btn.hide", "timer");
        elm_object_signal_emit(layout_, "menu.running.show", "timer");
+       elm_object_signal_emit(layout_, "arrow.buttons.hide", "timer");
 }
 
 void TimerView::ShowEditingMenu(void)
@@ -388,8 +453,8 @@ void TimerView::ShowEditingMenu(void)
 
        ShowSelector();
 
-       elm_object_signal_emit(layout_, "arrow.btn.show", "timer");
        elm_object_signal_emit(layout_, "menu.editing.show", "timer");
+       elm_object_signal_emit(layout_, "arrow.buttons.show", "timer");
 }
 
 void TimerView::ShowPausedMenu(void)