DeleteAlarmView: clean up selection logic 22/140222/1
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Thu, 20 Jul 2017 16:06:45 +0000 (18:06 +0200)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Thu, 20 Jul 2017 16:47:05 +0000 (18:47 +0200)
Make checkboxes not focusable as it may trigger genlist auto
scroll.

Change-Id: I7de64129b1be85d5b96e4c6542ce52ffaca6e134

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

index b1533b2ab8327470a430321dea7a09d3af4bd41c..d408abbd2142361306805e9d79ad3dc7d2ac91d6 100644 (file)
@@ -91,7 +91,6 @@ namespace view {
                        static void OnCancelButtonClickedCb(void *data, Evas_Object *obj, void *event);
                        static void OnDeleteButtonClickedCb(void *data, Evas_Object *obj, void *event);
                        static void ItemRealized(void *data, Evas_Object *obj, void *event);
-                       static void ItemSelectToggle(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);
 
@@ -99,6 +98,7 @@ namespace view {
 
                        utils::Connection time_format_change_listener_;
                        void TimeFormatChanged();
+                       void UpdateSelectAllItem();
        };
 } /* view */
 
index c290ba4362bd4bb2dd42cb554e75fba89f9ee60a..8413f778b1194b37694dcf8898c4ab4251521c57 100644 (file)
@@ -127,23 +127,12 @@ DeleteAlarmView::~DeleteAlarmView()
        DestroyContent();
 }
 
-void DeleteAlarmView::ItemSelectToggle(void *data, Evas_Object *obj, void *event)
+void DeleteAlarmView::UpdateSelectAllItem()
 {
-       ItemData *id = static_cast<ItemData*>(data);
-       id->selected = !id->selected;
-       if (!id->selected) {
-               id->instance->all_selected_ = false;
-               elm_check_state_set(id->instance->all_selected_check_, id->instance->all_selected_);
-       } else {
-               unsigned int items_count = elm_genlist_items_count(id->instance->content_) - 1;
-               std::vector<int> ids = id->instance->GetSelectedItems();
-               if (items_count == ids.size()) {
-                       id->instance->all_selected_ = true;
-                       elm_check_state_set(id->instance->all_selected_check_, id->instance->all_selected_);
-               }
-       }
-
-       id->instance->UpdateTitle();
+       unsigned int items_count = elm_genlist_items_count(content_) - 1;
+       std::vector<int> ids = GetSelectedItems();
+       all_selected_ = items_count == ids.size();
+       elm_check_state_set(all_selected_check_, all_selected_);
 }
 
 void DeleteAlarmView::ItemSelected(void *data, Evas_Object *obj, void *event)
@@ -153,10 +142,8 @@ void DeleteAlarmView::ItemSelected(void *data, Evas_Object *obj, void *event)
        if (id->check) {
                elm_check_state_set(id->check, id->selected);
        }
-       if (!id->selected) {
-               id->instance->all_selected_ = false;
-               elm_check_state_set(id->instance->all_selected_check_, id->instance->all_selected_);
-       }
+
+       id->instance->UpdateSelectAllItem();
        id->instance->UpdateTitle();
        elm_genlist_item_selected_set(id->it, EINA_FALSE);
 }
@@ -206,10 +193,9 @@ void DeleteAlarmView::ItemSelectAllClicked(void *data, Evas_Object *obj, void *e
        view->all_selected_ = !view->all_selected_;
 
        view->SelectAllStateSet(view->all_selected_);
-       if (view->all_selected_check_)
-               elm_check_state_set(view->all_selected_check_, view->all_selected_);
-
+       view->UpdateSelectAllItem();
        view->UpdateTitle();
+
        elm_genlist_item_selected_set(it, EINA_FALSE);
 }
 
@@ -230,6 +216,7 @@ void DeleteAlarmView::CreateSelectAllItem()
                if (!strcmp(part, "sw.check")) {
                        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_show(view->all_selected_check_);
                        return view->all_selected_check_;
                }
@@ -295,9 +282,8 @@ int DeleteAlarmView::ItemAppend(utils::Time time, const char *name,
                ItemData *id = static_cast<ItemData*>(data);
                if (!strcmp(part, "onoff")) {
                        id->check = elm_check_add(obj);
-                       evas_object_propagate_events_set(id->check, EINA_FALSE);
                        elm_check_state_set(id->check, id->selected ? EINA_TRUE : EINA_FALSE);
-                       evas_object_smart_callback_add(id->check, "changed", DeleteAlarmView::ItemSelectToggle, id);
+                       elm_object_focus_allow_set(id->check, EINA_FALSE);
                        evas_object_show(id->check);
                        return id->check;
                }