From 3d45865b83de39e0d0e5da55f9f9f206a110d551 Mon Sep 17 00:00:00 2001 From: Lukasz Stanislawski Date: Thu, 6 Oct 2016 17:44:37 +0200 Subject: [PATCH] view: fix Page class Remove calling virtual function in class destructor. The derived class resources should clean-up in their destructors. Fix minor issues reffering to PageView usage. Change-Id: I6b41a187d8b233cca3429ed189c023b5023fe6f8 --- clock/inc/View/DeleteAlarmView.h | 1 + clock/inc/View/EditAlarmView.h | 1 + clock/src/Presenter/EditAlarmPresenter.cpp | 3 ++- clock/src/View/DeleteAlarmView.cpp | 5 +++++ clock/src/View/EditAlarmView.cpp | 5 +++++ clock/src/View/MainView.cpp | 11 ++--------- clock/src/View/PageView.cpp | 16 +++++++++------- 7 files changed, 25 insertions(+), 17 deletions(-) diff --git a/clock/inc/View/DeleteAlarmView.h b/clock/inc/View/DeleteAlarmView.h index ca511f1..92796d3 100644 --- a/clock/inc/View/DeleteAlarmView.h +++ b/clock/inc/View/DeleteAlarmView.h @@ -29,6 +29,7 @@ namespace view { typedef std::function ButtonClickedCallback; DeleteAlarmView(ui::IView &main); + ~DeleteAlarmView(); void RegisterCancelButtonClickedCallback(ButtonClickedCallback cb) { onCancelButtonClicked_ = cb; } void RegisterDeleteButtonClickedCallback(ButtonClickedCallback cb) { onDeleteButtonClicked_ = cb; } diff --git a/clock/inc/View/EditAlarmView.h b/clock/inc/View/EditAlarmView.h index d4c8fac..f730008 100644 --- a/clock/inc/View/EditAlarmView.h +++ b/clock/inc/View/EditAlarmView.h @@ -45,6 +45,7 @@ namespace view { EditAlarmView(ui::IView &main); + ~EditAlarmView(); Evas_Object *GetEvasObject(); const AlarmViewInfo& GetData() const { return data_; } diff --git a/clock/src/Presenter/EditAlarmPresenter.cpp b/clock/src/Presenter/EditAlarmPresenter.cpp index 0980530..114365d 100644 --- a/clock/src/Presenter/EditAlarmPresenter.cpp +++ b/clock/src/Presenter/EditAlarmPresenter.cpp @@ -98,9 +98,10 @@ void EditAlarmPresenter::OnEditDone() delete alarm; AlarmProvider::Sync(); + view_.PopPage(); } void EditAlarmPresenter::OnEditCancel() { - DBG("Cancel adding alarm"); + view_.PopPage(); } diff --git a/clock/src/View/DeleteAlarmView.cpp b/clock/src/View/DeleteAlarmView.cpp index e70df8f..8d19177 100644 --- a/clock/src/View/DeleteAlarmView.cpp +++ b/clock/src/View/DeleteAlarmView.cpp @@ -51,6 +51,11 @@ DeleteAlarmView::DeleteAlarmView(ui::IView &main) { } +DeleteAlarmView::~DeleteAlarmView() +{ + DestroyContent(); +} + void DeleteAlarmView::ItemSelectToggle(void *data, Evas_Object *obj, void *event) { ItemData *id = static_cast(data); diff --git a/clock/src/View/EditAlarmView.cpp b/clock/src/View/EditAlarmView.cpp index 0e261ba..21d3ef7 100644 --- a/clock/src/View/EditAlarmView.cpp +++ b/clock/src/View/EditAlarmView.cpp @@ -18,6 +18,11 @@ EditAlarmView::EditAlarmView(ui::IView &main) std::bind(&EditAlarmView::OnWeekFlagsPagePopped, this)); } +EditAlarmView::~EditAlarmView() +{ + DestroyContent(); +} + Evas_Object *EditAlarmView::GetEvasObject() { return content_; diff --git a/clock/src/View/MainView.cpp b/clock/src/View/MainView.cpp index 19c4a53..112bfcc 100644 --- a/clock/src/View/MainView.cpp +++ b/clock/src/View/MainView.cpp @@ -55,16 +55,12 @@ static Eina_Bool naviframe_pop_cb(void *data, Elm_Object_Item *it) Evas_Object *win = static_cast(data); elm_win_lower(win); + return EINA_FALSE; } void toolbar_it_cb (void *data, Evas_Object *obj, void *event_info) { - PageView *page = static_cast(data); - - /*TODO - * Send data refresh request - * e.g. page->RefreshContent(); - */ + ui::IView *page = static_cast(data); Evas_Object *layout = elm_object_parent_widget_get(obj); Evas_Object *navi = elm_object_parent_widget_get(layout); @@ -151,8 +147,6 @@ void MainView::CreatePages() timer_ = new TimerView(*this); } - - void MainView::CreateToolbarButtons() { elm_toolbar_item_append(toolbar_, Utils::GetAppResourcePath(Utils::APP_DIR_RESOURCE, @@ -180,7 +174,6 @@ void MainView::CreateToolbar() elm_toolbar_select_mode_set(toolbar_, ELM_OBJECT_SELECT_MODE_ALWAYS); evas_object_show(toolbar_); - } void MainView::CreateContent() diff --git a/clock/src/View/PageView.cpp b/clock/src/View/PageView.cpp index eea0050..7be2759 100644 --- a/clock/src/View/PageView.cpp +++ b/clock/src/View/PageView.cpp @@ -27,7 +27,10 @@ using namespace utils; PageView::~PageView() { - PopPage(); + if (navi_item_) { + elm_object_item_del_cb_set(navi_item_, nullptr); + elm_object_item_del(navi_item_); + } } PageView::PageView(ui::IView &main) @@ -62,12 +65,11 @@ void PageView::PopPage() if (!navi_item_) return; - if (elm_naviframe_top_item_get(GetNaviframe()) == navi_item_) { - elm_naviframe_item_pop(GetNaviframe()); - EmitPoppedEvent(); - navi_item_ = NULL; - DestroyContent(); - } + DestroyContent(); + elm_object_item_del_cb_set(navi_item_, nullptr); + elm_object_item_del(navi_item_); + navi_item_ = NULL; + EmitPoppedEvent(); } Evas_Object *PageView::GetNaviframe() -- 2.7.4