* @brief Constructs MainController class object.
*/
MainController() {};
+
+ /**
+ * @brief Creates new "Edit/Create" alarm page.
+ */
+ void CreateNewAlarmPage();
};
}
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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"
+
+namespace model {
+ class AlarmCreateRequestEvent : public utils::Event {
+ public:
+ AlarmCreateRequestEvent();
+ static int EventType();
+ private:
+ static int custom_type_;
+ };
+} /* model */
+
+#endif
model::AlarmProvider *model;
void ShowAll();
void OnItemSelected(int idx);
+ void OnAddButtonClicked();
void OnItemActiveStatusChanged(int idx);
void OnAlarmAddedEvent(utils::Event *e);
};
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);
+ static void Del(void *data, Evas_Object *obj);
static void ItemClicked(void *data, Evas_Object *obj, void *info);
static void ItemRealized(void *data, Evas_Object *obj, void *info);
+ static void ButtonClicked(void *data, Evas_Object *obj, void *info);
Evas_Object *genlist;
+ Evas_Object *content;
SelectCallback onSelected;
ToggleCallback onToggled;
ButtonClickedCallback onClicked;;
#include "log.h"
#include "View/MainView.h"
#include "Controller/MainController.h"
+#include "Utils/EventBus.h"
+#include "View/EditAlarmView.h"
+#include "Presenter/EditAlarmPresenter.h"
+#include "Model/AlarmEvent.h"
using namespace controller;
using namespace view;
+using namespace utils;
+using namespace presenter;
+using namespace model;
MainController &MainController::GetInstance()
{
int MainController::Init()
{
- DBG("Init()");
-
MainView::GetInstance();
MainView::GetInstance().CreateContent();
+ EventBus::RegisterHandler(AlarmCreateRequestEvent::EventType(), std::bind(&MainController::CreateNewAlarmPage, this));
+
return 0;
}
void MainController::Deinit()
{
+ EventBus::DeregisterHandler(AlarmCreateRequestEvent::EventType(), std::bind(&MainController::CreateNewAlarmPage, this));
+}
+
+void MainController::CreateNewAlarmPage()
+{
+ static EditAlarmView *view;
+ static EditAlarmPresenter *presenter;
+
+ if (view) delete view;
+ if (presenter) delete presenter;
+ view = new EditAlarmView();
+ presenter = new EditAlarmPresenter(nullptr, *view);
}
--- /dev/null
+#include "Model/AlarmEvent.h"
+
+using namespace model;
+using namespace utils;
+
+int AlarmCreateRequestEvent::custom_type_;
+
+AlarmCreateRequestEvent::AlarmCreateRequestEvent() :
+ Event(AlarmCreateRequestEvent::EventType())
+{
+}
+
+int AlarmCreateRequestEvent::EventType()
+{
+ if (custom_type_ == 0) {
+ custom_type_ = EventBus::RegisterNewEventType();
+ }
+ return custom_type_;
+}
#include "Presenter/AlarmPresenter.h"
#include "Model/AlarmProviderEvent.h"
+#include "Model/AlarmEvent.h"
#include "Utils/EventBus.h"
#include "log.h"
AlarmPresenter::AlarmPresenter(AlarmView *v, AlarmProvider *m) : view(v), model(m)
{
- //view.RegisterOnItemStatusChange(std::function<>());
- //view.RegisterOnItemSelected(std::function<>());
- //view.RegisterOnAlarmAddClicked(std::function<>());
+ view->SetButtonClickedCallback(std::bind(&AlarmPresenter::OnAddButtonClicked, this));
EventBus::RegisterHandler(AlarmAddedEvent::EventType(),
std::bind(&AlarmPresenter::OnAlarmAddedEvent, this, _1));
// emit new event AlarmEditRequest event
}
+void AlarmPresenter::OnAddButtonClicked()
+{
+ EventBus::FireEvent(new AlarmCreateRequestEvent());
+}
+
void AlarmPresenter::OnItemActiveStatusChanged(int idx)
{
// get Alarm reference
#include <Elementary.h>
#include <cstdlib>
#include <sstream>
+#include <efl_extension.h>
#include "log.h"
.item_style = "alarm",
.func.content_get = AlarmView::ContentGet,
.func.text_get = AlarmView::TextGet,
+ .func.del = AlarmView::Del,
};
void AlarmView::ItemClicked(void *data, Evas_Object *obj, void *info)
return NULL;
}
-AlarmView::AlarmView()
+void AlarmView::Del(void *data, Evas_Object *obj)
{
- genlist = elm_genlist_add(MainView::GetInstance().GetEvasObject());
+ ItemData *id = static_cast<ItemData*>(data);
+ delete id->name;
+ delete id;
+}
+AlarmView::AlarmView()
+{
+ /* Base Layout */
+ content = elm_layout_add(MainView::GetInstance().GetEvasObject());
+ evas_object_size_hint_weight_set(content, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_layout_theme_set(content, "layout", "application", "default");
+ evas_object_show(content);
+
+ /* Genlist */
+ genlist = elm_genlist_add(content);
elm_genlist_homogeneous_set(genlist, EINA_TRUE);
evas_object_size_hint_expand_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
evas_object_smart_callback_add(genlist, "realized", AlarmView::ItemRealized, this);
evas_object_show(genlist);
+ elm_object_content_set(content, genlist);
+
+ /* Floating Button */
+ Evas_Object *fb = eext_floatingbutton_add(content);
+ elm_object_part_content_set(content, "elm.swallow.floatingbutton", fb);
+
+ /* Floating Button 1 */
+ Evas_Object *btn = elm_button_add(fb);
+ evas_object_smart_callback_add(btn, "clicked", AlarmView::ButtonClicked, this);
+ Evas_Object *image = elm_image_add(fb);
+ elm_image_file_set(image, Utils::GetAppResourcePath(Utils::APP_DIR_RESOURCE, "images/core_floating_icon_01.png"), NULL);
+ elm_object_part_content_set(btn, "icon", image);
+
+ elm_object_part_content_set(fb, "button1", btn);
+
elm_theme_extension_add(NULL, Utils::GetAppResourcePath(Utils::APP_DIR_RESOURCE, "edje/alarm.edj"));
}
Evas_Object *AlarmView::GetEvasObject()
{
- return genlist;
+ return content;
+}
+
+void AlarmView::ButtonClicked(void *data, Evas_Object *obj, void *event_info)
+{
+ AlarmView *view = static_cast<AlarmView*>(data);
+ if (view->onClicked) view->onClicked();
}
void EditAlarmView::DestroyContent()
{
+ evas_object_del(content_);
+ evas_object_del(left_btn_);
+ evas_object_del(right_btn_);
}
void EditAlarmView::PopupListItemSelectedCallback(void *data, Evas_Object *obj, void *event)
elm_object_item_part_content_set(item, "tabbar", toolbar_);
evas_object_show(alarm_->GetEvasObject());
elm_object_item_content_set(item, alarm_->GetEvasObject());
-
- EditAlarmView *ev = new EditAlarmView();
- new EditAlarmPresenter(nullptr, *ev);
}
Evas_Object *MainView::GetEvasObject()