AlarmListView: update item properly 15/141115/3
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Fri, 28 Jul 2017 07:31:52 +0000 (09:31 +0200)
committerKamil Lipiszko <k.lipiszko@samsung.com>
Fri, 28 Jul 2017 09:57:54 +0000 (09:57 +0000)
Change-Id: Ice0b8bd3b6996af6e8fe9c2181f5de3bc3c4c878

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

index af25b263ceda7be1fa0c6af62fe4e9078dbfb12c..9d2d9add01e6b2fc25c7b839e17eb88969216cfd 100644 (file)
@@ -128,6 +128,7 @@ namespace view {
                        void ShowDeletePopup();
 
                private:
+                       struct ItemData;
                        static Elm_Genlist_Item_Class alarm_itc;
                        static Evas_Object *ContentGet(void *data, Evas_Object *obj, const char *part);
                        static char *TextGet(void *data, Evas_Object *obj, const char *part);
@@ -151,6 +152,7 @@ namespace view {
                        static void SetItemCheckboxStatus(Elm_Object_Item *item, bool is_snoozed);
                        static void SetItemActiveStatus(Elm_Object_Item *it, bool active);
                        static void SetCheckboxStatus(Evas_Object *check, bool is_snoozed);
+                       static void UpdateItemData(ItemData *data);
        };
 }
 
index a3dae548ba800651e87d54fe94385561d1f682fe..eab6d1499dabd0735cd202546adfdb1b27671d8c 100644 (file)
@@ -36,7 +36,7 @@ using namespace utils;
 /**
  * Genlist data
  */
-struct ItemData {
+struct AlarmListView::ItemData {
        /** Owner of data */
        AlarmListView *instance;
        /** Display text */
@@ -114,14 +114,22 @@ void AlarmListView::SetItemActiveStatus(Elm_Object_Item *it, bool active)
                elm_object_item_signal_emit(it, "alarm,state,disabled", "clock");
 }
 
+void AlarmListView::UpdateItemData(ItemData *data)
+{
+       if (!data) return;
+       elm_genlist_item_update(data->it);
+
+       SetItemCheckboxStatus(data->it, data->snoozed);
+       SetItemActiveStatus(data->it, data->active);
+       SetItemRepeatIconVisibility(data->it, (data->flags.OnAny(WeekDay::ALL_WEEK)));
+}
+
 void AlarmListView::ItemRealized(void *data, Evas_Object *obj, void *info)
 {
        Elm_Object_Item *it = static_cast<Elm_Object_Item*>(info);
        ItemData *id = static_cast<ItemData*>(elm_object_item_data_get(it));
 
-       SetItemCheckboxStatus(it, id->snoozed);
-       SetItemActiveStatus(it, id->active);
-       SetItemRepeatIconVisibility(it, (id->flags.OnAny(WeekDay::ALL_WEEK)));
+       UpdateItemData(id);
 }
 
 void AlarmListView::ItemSelected(void *data, Evas_Object *obj, void *info)
@@ -350,7 +358,7 @@ void AlarmListView::ItemUpdate(ItemId id, Time time, const char *name,
        data->time = time;
        data->snoozed = is_snoozed;
 
-       elm_genlist_item_update(it);
+       UpdateItemData(data);
 }
 
 void AlarmListView::RemoveItem(ItemId id)