DeleteAlarmView: fix double click issue 34/141134/5
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Fri, 28 Jul 2017 08:02:17 +0000 (10:02 +0200)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Fri, 28 Jul 2017 12:21:31 +0000 (14:21 +0200)
Change-Id: I02ce0497fc43e31d85eaf97acfa8d58944a974a6

clock/inc/View/DeleteAlarmView.h
clock/src/View/DeleteAlarmView.cpp

index d408abbd2142361306805e9d79ad3dc7d2ac91d6..4533a9d15cdf5410bc29f913fab1198c214d5eb1 100644 (file)
@@ -93,12 +93,14 @@ namespace view {
                        static void ItemRealized(void *data, Evas_Object *obj, void *event);
                        static void ItemSelected(void *data, Evas_Object *obj, void *event);
                        static void ItemSelectAllClicked(void *data, Evas_Object *obj, void *event);
+                       static void SelectAllCheckValueChanged(void *data, Evas_Object *obj, void *event);
 
                        void CreateSelectAllItem();
 
                        utils::Connection time_format_change_listener_;
                        void TimeFormatChanged();
                        void UpdateSelectAllItem();
+                       void UpdateView();
        };
 } /* view */
 
index 99a510d92840d02b3653872f842ed5eaa4ef50db..f58c779c8ae802e5f21901b218bde6c14d7bd664 100644 (file)
@@ -138,6 +138,12 @@ DeleteAlarmView::~DeleteAlarmView()
        DestroyContent();
 }
 
+void DeleteAlarmView::UpdateView()
+{
+       UpdateSelectAllItem();
+       UpdateTitle();
+}
+
 void DeleteAlarmView::UpdateSelectAllItem()
 {
        unsigned int items_count = elm_genlist_items_count(content_) - 1;
@@ -154,8 +160,7 @@ void DeleteAlarmView::ItemSelected(void *data, Evas_Object *obj, void *event)
                elm_check_state_set(id->check, id->selected);
        }
 
-       id->instance->UpdateSelectAllItem();
-       id->instance->UpdateTitle();
+       id->instance->UpdateView();
        elm_genlist_item_selected_set(id->it, EINA_FALSE);
 }
 
@@ -201,15 +206,20 @@ void DeleteAlarmView::ItemSelectAllClicked(void *data, Evas_Object *obj, void *e
        Elm_Object_Item *it = static_cast<Elm_Object_Item*>(event);
        DeleteAlarmView *view = static_cast<DeleteAlarmView*>(data);
 
-       view->all_selected_ = !view->all_selected_;
-
-       view->SelectAllStateSet(view->all_selected_);
-       view->UpdateSelectAllItem();
-       view->UpdateTitle();
+       view->SelectAllStateSet(!view->all_selected_);
+       view->UpdateView();
 
        elm_genlist_item_selected_set(it, EINA_FALSE);
 }
 
+void DeleteAlarmView::SelectAllCheckValueChanged(void *data, Evas_Object *obj, void *event)
+{
+       DeleteAlarmView *view = static_cast<DeleteAlarmView*>(data);
+
+       view->SelectAllStateSet(elm_check_state_get(obj));
+       view->UpdateView();
+}
+
 void DeleteAlarmView::CreateSelectAllItem()
 {
        Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
@@ -228,6 +238,8 @@ void DeleteAlarmView::CreateSelectAllItem()
                        view->all_selected_check_ = elm_check_add(obj);
                        elm_check_state_set(view->all_selected_check_, view->all_selected_);
                        elm_object_focus_allow_set(view->all_selected_check_, EINA_FALSE);
+                       evas_object_propagate_events_set(view->all_selected_check_, EINA_FALSE);
+                       evas_object_smart_callback_add(view->all_selected_check_, "changed", DeleteAlarmView::SelectAllCheckValueChanged, view);
                        evas_object_show(view->all_selected_check_);
                        return view->all_selected_check_;
                }
@@ -346,6 +358,7 @@ std::vector<int> DeleteAlarmView::GetSelectedItems() const
 void DeleteAlarmView::SelectAllStateSet(bool state)
 {
        Elm_Object_Item *it = elm_genlist_nth_item_get(content_, 1);
+       all_selected_ = state;
 
        while (it) {
                ItemData *data = static_cast<ItemData*>(elm_object_item_data_get(it));