From 4292a779501be9ae0e5256c0866a67099dc28596 Mon Sep 17 00:00:00 2001 From: Lukasz Stanislawski Date: Fri, 28 Jul 2017 09:31:52 +0200 Subject: [PATCH] AlarmListView: update item properly Change-Id: Ice0b8bd3b6996af6e8fe9c2181f5de3bc3c4c878 --- clock/inc/View/AlarmListView.h | 2 ++ clock/src/View/AlarmListView.cpp | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/clock/inc/View/AlarmListView.h b/clock/inc/View/AlarmListView.h index af25b26..9d2d9ad 100644 --- a/clock/inc/View/AlarmListView.h +++ b/clock/inc/View/AlarmListView.h @@ -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); }; } diff --git a/clock/src/View/AlarmListView.cpp b/clock/src/View/AlarmListView.cpp index a3dae54..eab6d14 100644 --- a/clock/src/View/AlarmListView.cpp +++ b/clock/src/View/AlarmListView.cpp @@ -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(info); ItemData *id = static_cast(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) -- 2.7.4