view: fix Page class 02/91602/3
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Thu, 6 Oct 2016 15:44:37 +0000 (17:44 +0200)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Tue, 18 Oct 2016 06:59:55 +0000 (23:59 -0700)
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
clock/inc/View/EditAlarmView.h
clock/src/Presenter/EditAlarmPresenter.cpp
clock/src/View/DeleteAlarmView.cpp
clock/src/View/EditAlarmView.cpp
clock/src/View/MainView.cpp
clock/src/View/PageView.cpp

index ca511f1..92796d3 100644 (file)
@@ -29,6 +29,7 @@ namespace view {
                        typedef std::function<void(void)> ButtonClickedCallback;
 
                        DeleteAlarmView(ui::IView &main);
+                       ~DeleteAlarmView();
 
                        void RegisterCancelButtonClickedCallback(ButtonClickedCallback cb) { onCancelButtonClicked_ = cb; }
                        void RegisterDeleteButtonClickedCallback(ButtonClickedCallback cb) { onDeleteButtonClicked_ = cb; }
index d4c8fac..f730008 100644 (file)
@@ -45,6 +45,7 @@ namespace view {
 
                        EditAlarmView(ui::IView &main);
 
+                       ~EditAlarmView();
                        Evas_Object *GetEvasObject();
 
                        const AlarmViewInfo& GetData() const { return data_; }
index 0980530..114365d 100644 (file)
@@ -98,9 +98,10 @@ void EditAlarmPresenter::OnEditDone()
                delete alarm;
 
        AlarmProvider::Sync();
+       view_.PopPage();
 }
 
 void EditAlarmPresenter::OnEditCancel()
 {
-       DBG("Cancel adding alarm");
+       view_.PopPage();
 }
index e70df8f..8d19177 100644 (file)
@@ -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<ItemData*>(data);
index 0e261ba..21d3ef7 100644 (file)
@@ -18,6 +18,11 @@ EditAlarmView::EditAlarmView(ui::IView &main)
                        std::bind(&EditAlarmView::OnWeekFlagsPagePopped, this));
 }
 
+EditAlarmView::~EditAlarmView()
+{
+       DestroyContent();
+}
+
 Evas_Object *EditAlarmView::GetEvasObject()
 {
        return content_;
index 19c4a53..112bfcc 100644 (file)
@@ -55,16 +55,12 @@ static Eina_Bool naviframe_pop_cb(void *data, Elm_Object_Item *it)
        Evas_Object *win = static_cast<Evas_Object *>(data);
 
        elm_win_lower(win);
+       return EINA_FALSE;
 }
 
 void toolbar_it_cb (void *data, Evas_Object *obj, void *event_info)
 {
-       PageView *page = static_cast<PageView *>(data);
-
-       /*TODO
-        * Send data refresh request
-        * e.g. page->RefreshContent();
-        */
+       ui::IView *page = static_cast<ui::IView*>(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()
index eea0050..7be2759 100644 (file)
@@ -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()