Use explicit navigation functions instead of events 00/161600/3
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Fri, 24 Nov 2017 07:11:51 +0000 (08:11 +0100)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Fri, 24 Nov 2017 13:28:51 +0000 (14:28 +0100)
Change-Id: Ib629f0934acaf84c1d82235c757ab00ba1217108

clock/inc/Controller/MainController.h
clock/inc/Model/AlarmEvent.h [deleted file]
clock/inc/Model/WorldClockEvents.h [deleted file]
clock/inc/Presenter/AlarmListPresenter.h
clock/inc/Presenter/WorldClockPresenter.h
clock/src/Controller/MainController.cpp
clock/src/Presenter/AlarmListPresenter.cpp
clock/src/Presenter/EditAlarmPresenter.cpp
clock/src/Presenter/WorldClockDeletePresenter.cpp
clock/src/Presenter/WorldClockPresenter.cpp

index 471ff59d0ae40e90e51f8b059b892693318853da..5ae2bc3cbdba41a0e906e5953c6fded76a214104 100644 (file)
@@ -111,26 +111,24 @@ namespace controller {
 
                private:
                        /**
-                        * @brief Creates new "Edit/Create" alarm page.
+                        * @brief Creates new "Create" alarm page.
                         */
-                       void CreateNewAlarmPage(utils::Event &e);
+                       void CreateNewAlarmPage();
 
                        /**
                         * @brief Creates new "Delete" alarm page.
                         */
-                       void CreateNewDeleteAlarmsPage(utils::Event &e);
+                       void CreateNewDeleteAlarmsPage();
 
                        /**
                         * @brief Creates new "Delete" page in world clock;
-                        * @param e event data
                         */
-                       void CreateNewWorldClockDeletePage(utils::Event &e);
+                       void CreateNewWorldClockDeletePage();
 
                        /**
                         * @brief Creates new "Reorder" page in world clock;
-                        * @param e event data
                         */
-                       void CreateNewWorldClockReorderPage(utils::Event &e);
+                       void CreateNewWorldClockReorderPage();
 
                        model::AlarmProvider *provider_ = nullptr;
 
@@ -157,7 +155,7 @@ namespace controller {
                        /**
                         * @brief Creates new "Edit" alarm page.
                         */
-                       void CreateEditAlarmPage(utils::Event &e);
+                       void CreateEditAlarmPage(model::AlarmList::Iterator it);
 
                        /**
                         * @brief global events subscriptions vector
diff --git a/clock/inc/Model/AlarmEvent.h b/clock/inc/Model/AlarmEvent.h
deleted file mode 100644 (file)
index 786878d..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
-* Copyright 2016  Samsung Electronics Co., Ltd
-*
-* Licensed under the Flora License, Version 1.1 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://floralicense.org/license/
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#ifndef _CLOCK_ALARM_EVENT_H_
-#define _CLOCK_ALARM_EVENT_H_
-
-#include "Utils/EventBus.h"
-#include "Model/AlarmList.h"
-
-namespace model {
-       /**
-        * @brief Global event that is broadcast request to create new
-        * alarm.
-        */
-       class AlarmCreateRequestEvent : public utils::Event {
-       };
-
-       /**
-        * @brief Global event that is broadcast request to delete alarms.
-        */
-       class AlarmDeleteRequestEvent : public utils::Event {
-       };
-
-       /**
-        * @brief Global event that is broadcast information that alarm
-        * data should be modified.
-        */
-       class AlarmEditRequestEvent : public utils::Event {
-               public:
-                       /**
-                        * @brief Creates AlarmEditRequestEvent instance
-                        * @param[in] list alarm list which is a target of edition.
-                        * @param[in] it iterator to element within list.
-                        */
-                       AlarmEditRequestEvent(model::AlarmList& list, model::AlarmList::Iterator it)
-                               : alarm_list_(list), it_(it) {}
-
-                       /**
-                        * @brief Gets modification target
-                        * @return List with alarm to be edited.
-                        */
-                       model::AlarmList &GetAlarmList() { return alarm_list_;}
-
-                       /**
-                        * @brief Gets modification target iterator
-                        * @return Alarm to be edited.
-                        */
-                       model::AlarmList::Iterator &GetIterator() { return it_;}
-               private:
-                       model::AlarmList &alarm_list_;
-                       model::AlarmList::Iterator it_;
-       };
-
-       /**
-        * @brief Global event that is broadcast information that alarm
-        * data has been modified.
-        */
-       class AlarmEditedEvent : public utils::Event {
-               public:
-                       /**
-                        * @brief Creates AlarmEditedEvent instance
-                        * @param[in] alarm alarm which has been edited.
-                        */
-                       AlarmEditedEvent(model::Alarm& alarm) : alarm_(alarm) {}
-                       /** 
-                        * @brief Gets modification target 
-                        * @return Alarm which have been edited.
-                        */
-                       Alarm &GetAlarm() const { return alarm_;}
-               private:
-                       Alarm &alarm_;
-       };
-} /* model */
-
-#endif
diff --git a/clock/inc/Model/WorldClockEvents.h b/clock/inc/Model/WorldClockEvents.h
deleted file mode 100644 (file)
index dfde0ba..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-* Copyright 2016  Samsung Electronics Co., Ltd
-*
-* Licensed under the Flora License, Version 1.1 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://floralicense.org/license/
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-#ifndef _CLOCK_MODEL_WORLDCLOCKEVENT_H_
-#define _CLOCK_MODEL_WORLDCLOCKEVENT_H_
-
-#include "Utils/EventBus.h"
-#include "Model/Location.h"
-
-namespace model {
-
-       /**
-        * @brief class for exact Event firing.
-        */
-       class WorldClockDeleteRequestEvent: public utils::Event {
-       };
-
-       /**
-        * @brief class for exact Event firing.
-        */
-       class WorldClockReorderRequestEvent: public utils::Event {
-       };
-}
-
-#endif /* _CLOCK_MODEL_WORLDCLOCKEVENT_H_ */
index 19e222bb0efe24c5f088df205f205a26654d9508..78808146ed509e8adfabcbc10c2bb557d09c3933 100644 (file)
@@ -35,8 +35,19 @@ namespace presenter {
                         * @brief Constructs object instance
                         * @param view AlarmListView instance which presenter will be managing
                         * @param list AlarmList instance which presenter will be managing
+                        * @param navigateToCreateAlarms callback triggered when navigation
+                        * to alarm's creation page is requested.
+                        * @param navigateToDeleteAlarms callback triggered when navigation
+                        * to alarm's delete page is requested.
+                        * @param navigateToEditAlarms callback triggered when navigation
+                        * to alarm edition page is requested.
                         */
-                       AlarmListPresenter(view::AlarmListView &view, model::AlarmList &list);
+                       AlarmListPresenter(
+                                       view::AlarmListView &view,
+                                       model::AlarmList &list,
+                                       std::function<void(void)> navigateToCreateAlarms,
+                                       std::function<void(void)> navigateToDeleteAlarms,
+                                       std::function<void(model::AlarmList::Iterator)> navigateToEditAlarms);
                        ~AlarmListPresenter();
                private:
                        view::AlarmListView &view_;
@@ -54,6 +65,9 @@ namespace presenter {
                        std::map<int, model::AlarmList::Iterator> alarms_;
                        std::vector<utils::Connection> connections_;
                        std::vector<utils::Connection> object_connections_;
+                       std::function<void(void)> navigateToCreateAlarms_;
+                       std::function<void(void)> navigateToDeleteAlarms_;
+                       std::function<void(model::AlarmList::Iterator it)> navigateToEditAlarms_;
                        bool CheckModelSizeLimit();
                        void OnMenuButtonClicked();
        };
index 606cbbf9dc5e765f4e328f09bb94acf04f6d000e..7303d00e9267279ca145d6b4a5d6fc9bbbeb7d8f 100644 (file)
@@ -44,10 +44,17 @@ namespace presenter {
                         * @brief Object Constructor
                         *
                         * @param[in] view World Clock tab view object
-                        *
                         * @param[in] model World Clock tab model
+                        * @param[in] navigateToWorldClockDeletePage callback triggered
+                        * when navigation to location delete page is requested.
+                        * @param[in] navigateToWorldReorderPage triggered
+                        * when navigation to locations reorder page is requested.
+                        *
                         */
-                       WorldClockPresenter(view::WorldClockView &view, model::WorldClock &model);
+                       WorldClockPresenter(view::WorldClockView &view, model::WorldClock &model,
+                                       std::function<void(void)> navigateToWorldClockDeletePage,
+                                       std::function<void(void)> navigateToWorldReorderPage
+                                       );
 
                        /**
                         * @brief Destructs class object
@@ -57,6 +64,8 @@ namespace presenter {
                private:
                        view::WorldClockView &view_;
                        model::WorldClock &model_;
+                       std::function<void(void)> navigateToWorldClockDeletePage_;
+                       std::function<void(void)> navigateToWorldReorderPage_;
 
                        /**
                         * @brief Updates background of locations list. If list is empty proper message is displayed
index 10ba85fee5edbdd3b64721078d086bf5a7e3b9a2..00ea4e417da204763787d6045e67beb4c966f61f 100644 (file)
 #include "Utils/EventBus.h"
 #include "View/EditAlarmView.h"
 #include "Presenter/EditAlarmPresenter.h"
-#include "Model/AlarmEvent.h"
 #include "View/DeleteAlarmView.h"
 #include "Presenter/DeleteAlarmPresenter.h"
 
-#include "Model/WorldClockEvents.h"
 #include "View/WorldClockDeleteItemsView.h"
 #include "Presenter/WorldClockDeletePresenter.h"
 
@@ -63,7 +61,9 @@ Eina_Bool MainController::IdlerCb(void *data)
        controller->world_clock_model_ = new model::WorldClock();
        controller->world_clock_presenter_ = new WorldClockPresenter(
                        *(WorldClockView *)mainView->GetView(WORLD_CLOCK),
-                       *controller->world_clock_model_);
+                       *controller->world_clock_model_,
+                       std::bind(&MainController::CreateNewWorldClockDeletePage, controller),
+                       std::bind(&MainController::CreateNewWorldClockReorderPage, controller));
 
        controller->stop_watch_model_ = new model::StopWatch();
        controller->stop_watch_presenter_ = new StopWatchPresenter(
@@ -89,23 +89,12 @@ void MainController::Init()
        world_clock_delete_page_ = new WorldClockDeleteItemsView(*main_view_);
        world_clock_reorder_page_ = new WorldClockReorderView(*main_view_);
 
-       alarm_presenter_ = new AlarmListPresenter(*(AlarmListView*)(main_view_->GetView(ALARM)), provider_->GetAlarms());
+       alarm_presenter_ = new AlarmListPresenter(*(AlarmListView*)(main_view_->GetView(ALARM)), provider_->GetAlarms(),
+                       std::bind(&MainController::CreateNewAlarmPage, this),
+                       std::bind(&MainController::CreateNewDeleteAlarmsPage, this),
+                       std::bind(&MainController::CreateEditAlarmPage, this, _1));
 
        idler_ = ecore_idler_add(IdlerCb, this);
-
-       connections_.push_back(utils::EventBus::AddListener<AlarmCreateRequestEvent>(
-                       std::bind(&MainController::CreateNewAlarmPage, this, _1)));
-       connections_.push_back(utils::EventBus::AddListener<AlarmDeleteRequestEvent>(
-                       std::bind(&MainController::CreateNewDeleteAlarmsPage, this, _1)));
-       connections_.push_back(utils::EventBus::AddListener<AlarmEditRequestEvent>(
-                       std::bind(&MainController::CreateEditAlarmPage, this, _1)));
-
-       connections_.push_back(utils::EventBus::AddListener<WorldClockDeleteRequestEvent>(
-                       std::bind(&MainController::CreateNewWorldClockDeletePage, this, _1)));
-
-       connections_.push_back(utils::EventBus::AddListener<WorldClockReorderRequestEvent>(
-                       std::bind(&MainController::CreateNewWorldClockReorderPage, this, _1)));
-
        initialized_ = true;
 }
 
@@ -139,37 +128,35 @@ void MainController::Deinit()
        initialized_ = false;
 }
 
-void MainController::CreateNewAlarmPage(Event &e)
+void MainController::CreateNewAlarmPage()
 {
        delete edit_presenter_;
 
        edit_presenter_ = new EditAlarmPresenter(*edit_page_, provider_->GetAlarms());
 }
 
-void MainController::CreateEditAlarmPage(Event &e)
+void MainController::CreateEditAlarmPage(AlarmList::Iterator it)
 {
-       AlarmEditRequestEvent &ev = (AlarmEditRequestEvent&)e;
-
        delete edit_presenter_;
 
-       edit_presenter_ = new EditAlarmPresenter(*edit_page_, ev.GetAlarmList(), ev.GetIterator());
+       edit_presenter_ = new EditAlarmPresenter(*edit_page_, provider_->GetAlarms(), it);
 }
 
-void MainController::CreateNewDeleteAlarmsPage(Event &e)
+void MainController::CreateNewDeleteAlarmsPage()
 {
        delete delete_presenter_;
 
        delete_presenter_ = new DeleteAlarmPresenter(*delete_page_, provider_->GetAlarms());
 }
 
-void MainController::CreateNewWorldClockDeletePage(utils::Event &e)
+void MainController::CreateNewWorldClockDeletePage()
 {
        delete world_clock_delete_presenter_;
 
        world_clock_delete_presenter_ = new WorldClockDeletePresenter(*world_clock_delete_page_, *world_clock_model_);
 }
 
-void MainController::CreateNewWorldClockReorderPage(Event &e)
+void MainController::CreateNewWorldClockReorderPage()
 {
        delete world_clock_reorder_presenter_;
 
index 9be2de728fd6069c5c800f1b3fa23102c302a86f..9a86014043d0ae7c1a4ae68e389afeeb27d20f76 100644 (file)
@@ -15,7 +15,6 @@
 */
 
 #include "Presenter/AlarmListPresenter.h"
-#include "Model/AlarmEvent.h"
 #include "Utils/EventBus.h"
 #include "Utils/Log.h"
 #include "Utils/Translate.h"
@@ -27,7 +26,14 @@ using namespace utils;
 using std::placeholders::_1;
 
 
-AlarmListPresenter::AlarmListPresenter(AlarmListView &v, AlarmList &m) : view_(v), alarm_list_(m)
+AlarmListPresenter::AlarmListPresenter(AlarmListView &view, AlarmList &list, std::function<void(void)> navigateToCreateAlarms,
+               std::function<void(void)> navigateToDeleteAlarms,
+               std::function<void(AlarmList::Iterator)> navigateToEditAlarms) :
+       view_(view),
+       alarm_list_(list),
+       navigateToCreateAlarms_(navigateToCreateAlarms),
+       navigateToDeleteAlarms_(navigateToDeleteAlarms),
+       navigateToEditAlarms_(navigateToEditAlarms)
 {
        connections_.push_back(
                        view_.OnAddButtonClicked.Connect(std::bind(&AlarmListPresenter::OnAddButtonClicked, this)));
@@ -83,15 +89,11 @@ void AlarmListPresenter::OnItemSelected(int idx)
        if (it == alarms_.end())
                return;
 
-       AlarmList::Iterator alarm_it = it->second;
-       AlarmEditRequestEvent ev(alarm_list_, alarm_it);
-       EventBus::FireEvent(ev);
+       if (navigateToEditAlarms_) navigateToEditAlarms_(it->second);
 }
 
 void AlarmListPresenter::OnAddButtonClicked()
 {
-       AlarmCreateRequestEvent ev;
-
        if (alarm_list_.Size() == alarm_list_.MaxSize()) {
                std::string text = Translate::Sprintf("IDS_ALM_BODY_MAXIMUM_NUMBER_OF_ALARMS_HPD_REACHED",
                                alarm_list_.MaxSize());
@@ -99,7 +101,8 @@ void AlarmListPresenter::OnAddButtonClicked()
                view_.ShowPopup(text);
                return;
        }
-       EventBus::FireEvent(ev);
+
+       if (navigateToCreateAlarms_) navigateToCreateAlarms_();
 }
 
 void AlarmListPresenter::OnItemActiveStatusChanged(int idx)
@@ -138,8 +141,7 @@ void AlarmListPresenter::OnAlarmAddedEvent(AlarmList::Iterator it)
 
 void AlarmListPresenter::OnDeleteItemClicked()
 {
-       AlarmDeleteRequestEvent ev;
-       EventBus::FireEvent(ev);
+       if (navigateToDeleteAlarms_) navigateToDeleteAlarms_();
 }
 
 void AlarmListPresenter::OnMenuButtonClicked()
index 4c392a21414686cdc9bc5eeef33e71c8ca421fc2..8232f8571a82da81b69b02110b35399c2bf6345d 100644 (file)
@@ -15,7 +15,6 @@
 */
 
 #include "Common/Defines.h"
-#include "Model/AlarmEvent.h"
 #include "Model/AlarmProvider.h"
 #include "Presenter/EditAlarmPresenter.h"
 #include "Utils/Log.h"
index edeb2a68555a077a2eb8fe9f1cca6f9ee905d871..b99f2ee004e3a4e8e445848f3e9603cc5a33d6f6 100644 (file)
@@ -15,7 +15,6 @@
 */
 
 #include "Presenter/WorldClockDeletePresenter.h"
-#include "Model/WorldClockEvents.h"
 #include "Utils/Log.h"
 
 using namespace presenter;
index 131fb6b0674fc4fec92f5e8dabcb2519b2931c8c..259a22d21f5b39154e5373625eb743af884d2543 100644 (file)
@@ -16,9 +16,7 @@
 
 #include "Presenter/WorldClockPresenter.h"
 #include "Presenter/WorldClockDeletePresenter.h"
-#include "Model/WorldClockEvents.h"
 #include "Model/WorldClock.h"
-#include "Utils/EventBus.h"
 #include "Utils/Log.h"
 #include "Utils/PopupManager.h"
 #include "Utils/Translate.h"
@@ -30,8 +28,13 @@ using std::placeholders::_1;
 
 namespace presenter {
 
-WorldClockPresenter::WorldClockPresenter(WorldClockView &view, WorldClock &model)
-                       : view_(view), model_(model)
+WorldClockPresenter::WorldClockPresenter(WorldClockView &view, WorldClock &model,
+                                       std::function<void(void)> navigateToWorldClockDeletePage,
+                                       std::function<void(void)> navigateToWorldReorderPage) :
+                       view_(view),
+                       model_(model),
+                       navigateToWorldClockDeletePage_(navigateToWorldClockDeletePage),
+                       navigateToWorldReorderPage_(navigateToWorldReorderPage)
 {
        connections_.push_back(view_.OnLeftArrowClicked.Connect(
                                std::bind(&WorldClockPresenter::OnLeftArrowButtonClicked, this)));
@@ -170,14 +173,12 @@ void WorldClockPresenter::OnMoreButtonClicked()
 
 void WorldClockPresenter::OnMoreDeleteButtonClicked()
 {
-       WorldClockDeleteRequestEvent ev;
-       EventBus::FireEvent(ev);
+       if (navigateToWorldClockDeletePage_) navigateToWorldClockDeletePage_();
 }
 
 void WorldClockPresenter::OnMoreReorderButtonClicked()
 {
-       WorldClockReorderRequestEvent ev;
-       EventBus::FireEvent(ev);
+       if (navigateToWorldReorderPage_) navigateToWorldReorderPage_();
 }
 
 } /* presenter */