From: Hermet Park Date: Tue, 14 Jun 2016 13:32:59 +0000 (+0900) Subject: Still c implementation is unstable. X-Git-Tag: submit/tizen/20160617.075742~14 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F60%2F74560%2F4;p=platform%2Fcore%2Fuifw%2Fui-viewmgr.git Still c implementation is unstable. We are still on building up its bodies here and there. Change-Id: I7f62d5fa0216a21ae7506409e4b4c46766682968 --- diff --git a/src/examples/efl/c/main.cpp b/src/examples/efl/c/main.cpp index e3633da..69607f4 100644 --- a/src/examples/efl/c/main.cpp +++ b/src/examples/efl/c/main.cpp @@ -22,7 +22,7 @@ app_control(app_control_h app_control, void *data) int main(int argc, char *argv[]) { - int ret; + int ret = 0; ui_app_lifecycle_callback_s lifecycle_callback = {0, }; //Initialize ui_app. ui_app initializes basic resources including ui_viewmgr internally. @@ -37,7 +37,7 @@ main(int argc, char *argv[]) lifecycle_callback.app_control = app_control; //Run ui_app. Now it requests to run an application mainloop. - if (!(ret = ui_app_run(argc, argv, &lifecycle_callback, NULL, NULL))) + if (!(ret = ui_app_run(argc, argv, &lifecycle_callback, NULL))) { dlog_print(DLOG_ERROR, LOG_TAG, "ui_app_run() is failed. err = %d", ret); return ret; diff --git a/src/examples/efl/c/page1.cpp b/src/examples/efl/c/page1.cpp index 8c81992..9a95a2d 100644 --- a/src/examples/efl/c/page1.cpp +++ b/src/examples/efl/c/page1.cpp @@ -33,8 +33,8 @@ next_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) static bool view1_load_cb(ui_view *view, void *data) { - Evas_Object *content; - Evas_Object *base; + Evas_Object *content = NULL; + Evas_Object *base = NULL; base = ui_view_base_get(view); if (!base) return false; @@ -48,8 +48,8 @@ view1_load_cb(ui_view *view, void *data) void create_page1() { - int ret; - ui_view *view; + int ret = 0; + ui_view *view = NULL; ui_view_lifecycle_callback_s lifecycle_callback = {0, }; view = ui_standard_view_create("page1"); @@ -61,7 +61,7 @@ create_page1() lifecycle_callback.load = view1_load_cb; - if (!ui_view_lifecycle_callbacks_set(view, &lifecycle_callback, NULL)) + if (!(ret = ui_view_lifecycle_callbacks_set(view, &lifecycle_callback, NULL))) { dlog_print(DLOG_ERROR, LOG_TAG, "ui_view_lifecycle_callback_set is failed. err = %d", ret); ui_view_destroy(view); diff --git a/src/include/efl/mobile/c/ui_app.h b/src/include/efl/mobile/c/ui_app.h index e238d4b..81609e3 100644 --- a/src/include/efl/mobile/c/ui_app.h +++ b/src/include/efl/mobile/c/ui_app.h @@ -5,19 +5,9 @@ extern "C" { #endif -typedef void (*ui_app_event_cb)(app_event_info_h event_info, void *data); - -typedef struct -{ - ui_app_event_cb low_battery; - ui_app_event_cb low_memory; - ui_app_event_cb orient_changed; - ui_app_event_cb lang_changed; - ui_app_event_cb region_changed; -} ui_app_event_callback_s; - +//FIXME: rename prefix bool ui_app_init(const char *pkg, const char *locale_dir); -int ui_app_run(int argc, char **argv, ui_app_lifecycle_callback_s *lifecycle_callback, ui_app_event_callback_s *event_callback, void *data); +int ui_app_run(int argc, char **argv, ui_app_lifecycle_callback_s *lifecycle_callback, void *data); ui_viewmgr *ui_app_viewmgr_get(); bool ui_app_term(void); diff --git a/src/include/efl/mobile/c/ui_capi_private.h b/src/include/efl/mobile/c/ui_capi_private.h new file mode 100644 index 0000000..c4fb255 --- /dev/null +++ b/src/include/efl/mobile/c/ui_capi_private.h @@ -0,0 +1,44 @@ +/* + * 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 _UI_CAPI_PRIVATE_H_ +#define _UI_CAPI_PRIVATE_H_ + +namespace efl_viewmanager +{ + +class ui_view_event_attr +{ +public: + ui_view_lifecycle_callback_s lifecycle_callback; + ui_view_event_callback_s event_callback; + void *lifecycle_data; + void *event_data; + + ui_view_event_attr() : lifecycle_data(NULL), event_data(NULL) + { + this->lifecycle_callback = {0, }; + this->event_callback = {0, }; + } + + ~ui_view_event_attr() + { + } +}; + +} + +#endif /* _UI_CAPI_PRIVATE_H_ */ diff --git a/src/include/interface/ui_iface_types.h b/src/include/interface/ui_iface_types.h index e850ef3..fa50ed0 100644 --- a/src/include/interface/ui_iface_types.h +++ b/src/include/interface/ui_iface_types.h @@ -40,6 +40,7 @@ enum ui_view_state UI_VIEW_STATE_ACTIVATE, ///< Activate state UI_VIEW_STATE_DEACTIVATE, ///< Deactivate state UI_VIEW_STATE_PAUSE, ///< Pause state + UI_VIEW_STATE_UNKNOWN, ///< Unknown state UI_VIEW_STATE_LAST }; diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index c449a2b..d9fe096 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -19,6 +19,7 @@ SET(SRCS efl/mobile/c/ui_menu.cpp efl/mobile/c/ui_popup.cpp efl/mobile/c/ui_view.cpp + efl/mobile/c/ui_standard_view.cpp efl/mobile/c/ui_viewmgr.cpp ) ELSE() diff --git a/src/lib/efl/mobile/c/ui_app.cpp b/src/lib/efl/mobile/c/ui_app.cpp index 78c7b70..8d664d9 100644 --- a/src/lib/efl/mobile/c/ui_app.cpp +++ b/src/lib/efl/mobile/c/ui_app.cpp @@ -5,84 +5,52 @@ using namespace efl_viewmanager; class ui_app_capi : public ui_app { -private: +public: ui_app_lifecycle_callback_s capi_lifecycle_callback; - ui_app_event_callback_s capi_event_callback; void *data; -protected: bool on_create() { - if (!ui_app::on_create()) - { - return false; - } + if (!ui_app::on_create()) return false; - if (this->capi_lifecycle_callback.create) - this->capi_lifecycle_callback.create(this->data); - - return true; + if (!this->capi_lifecycle_callback.create) return false; + return this->capi_lifecycle_callback.create(this->data); } void on_terminate() { - if (this->capi_lifecycle_callback.terminate) - this->capi_lifecycle_callback.terminate(this->data); + ui_app::on_terminate(); + + if (!this->capi_lifecycle_callback.terminate) return; + this->capi_lifecycle_callback.terminate(this->data); } void on_pause() { - if (this->capi_lifecycle_callback.pause) - this->capi_lifecycle_callback.pause(this->data); + ui_app::on_pause(); + + if (!this->capi_lifecycle_callback.pause) return; + this->capi_lifecycle_callback.pause(this->data); } void on_resume() { - if (this->capi_lifecycle_callback.resume) - this->capi_lifecycle_callback.resume(this->data); + ui_app::on_resume(); + + if (!this->capi_lifecycle_callback.resume) return; + this->capi_lifecycle_callback.resume(this->data); } void on_control(app_control_h app_control) { ui_app::on_control(app_control); - if (this->capi_lifecycle_callback.app_control) - this->capi_lifecycle_callback.app_control(app_control, this->data); - } - - void on_low_battery(app_event_info_h event_info) - { - if (this->capi_event_callback.low_battery) - this->capi_event_callback.low_battery(event_info, this->data); - } - - void on_low_memory(app_event_info_h event_info) - { - if (this->capi_event_callback.low_memory) - this->capi_event_callback.low_memory(event_info, this->data); - } - - void on_orient_changed(app_event_info_h event_info) - { - if (this->capi_event_callback.orient_changed) - this->capi_event_callback.orient_changed(event_info, this->data); - } - - void on_lang_changed(app_event_info_h event_info) - { - if (this->capi_event_callback.lang_changed) - this->capi_event_callback.lang_changed(event_info, this->data); + if (!this->capi_lifecycle_callback.app_control) return; + this->capi_lifecycle_callback.app_control(app_control, this->data); } - void on_region_changed(app_event_info_h event_info) - { - if (this->capi_event_callback.region_changed) - this->capi_event_callback.region_changed(event_info, this->data); - } - -public: ui_app_capi(const char *pkg, const char *locale_dir) - : ui_app(pkg, locale_dir) + : ui_app(pkg, locale_dir), data(NULL) { } @@ -90,35 +58,19 @@ public: { } - int run(int argc, char **argv, ui_app_lifecycle_callback_s *lifecycle_callback, - ui_app_event_callback_s *event_callback, void *data) + int run(int argc, char **argv, ui_app_lifecycle_callback_s *lifecycle_callback, void *data) { if (lifecycle_callback) + { this->capi_lifecycle_callback = *lifecycle_callback; - if (event_callback) - this->capi_event_callback = *event_callback; + } + this->data = data; return ui_app::run(argc, argv); } - - ui_app_lifecycle_callback_s get_app_lifecycle_callback() - { - return this->capi_lifecycle_callback; - } - - ui_app_event_callback_s get_app_event_callback() - { - return this->capi_event_callback; - } - - void* get_data() - { - return this->data; - } }; - static ui_app_capi *g_app = NULL; bool ui_app_init(const char *pkg, const char *locale_dir) @@ -138,12 +90,12 @@ bool ui_app_init(const char *pkg, const char *locale_dir) return true; } -int ui_app_run(int argc, char **argv, ui_app_lifecycle_callback_s *lifecycle_callback, ui_app_event_callback_s *event_callback, void *data) +int ui_app_run(int argc, char **argv, ui_app_lifecycle_callback_s *lifecycle_callback, void *data) { ui_app_capi *app = g_app; if (!app) return -1; - return app->run(argc, argv, lifecycle_callback, event_callback, data); + return app->run(argc, argv, lifecycle_callback, data); } ui_viewmgr *ui_app_viewmgr_get() @@ -158,6 +110,7 @@ bool ui_app_term(void) { ui_app_capi *app = g_app; if (app) delete (app); + g_app = NULL; return true; } diff --git a/src/lib/efl/mobile/c/ui_standard_view.cpp b/src/lib/efl/mobile/c/ui_standard_view.cpp new file mode 100644 index 0000000..16059a3 --- /dev/null +++ b/src/lib/efl/mobile/c/ui_standard_view.cpp @@ -0,0 +1,314 @@ +#include "../../../../include/efl/mobile/ui_mobile_viewmanager.h" +#include "../../../../include/efl/mobile/c/ui_view.h" +#include "../../../../include/efl/mobile/c/ui_capi_private.h" + +using namespace efl_viewmanager; + +class ui_standard_view_capi: public ui_standard_view, public ui_view_event_attr +{ +public: + void on_load() + { + if (this->lifecycle_callback.load) + { + if (!this->lifecycle_callback.load(this, this->lifecycle_data)) return; + } + ui_standard_view::on_load(); + } + + void on_unload() + { + if (this->lifecycle_callback.unload) + { + if (!this->lifecycle_callback.unload(this, this->lifecycle_data)) return; + } + ui_standard_view::on_unload(); + } + + void on_pause() + { + if (this->lifecycle_callback.pause) + { + if (!this->lifecycle_callback.pause(this, this->lifecycle_data)) return; + } + ui_standard_view::on_pause(); + } + + void on_resume() + { + if (this->lifecycle_callback.resume) + { + if (!this->lifecycle_callback.resume(this, this->lifecycle_data)) return; + } + ui_standard_view::on_resume(); + } + + void on_activate() + { + if (this->lifecycle_callback.activate) + { + if (!this->lifecycle_callback.activate(this, this->lifecycle_data)) return; + } + ui_standard_view::on_activate(); + } + + void on_deactivate() + { + if (this->lifecycle_callback.deactivate) + { + if (!this->lifecycle_callback.deactivate(this, this->lifecycle_data)) return; + } + ui_standard_view::on_deactivate(); + } + + void on_destroy() + { + if (this->lifecycle_callback.destroy) + { + if (!this->lifecycle_callback.destroy(this, this->lifecycle_data)) return; + } + ui_standard_view::on_destroy(); + } + + void on_portrait() + { + if (this->event_callback.portrait) + { + if (!this->event_callback.portrait(this, this->event_data)) return; + } + ui_standard_view::on_portrait(); + } + + void on_landscape() + { + if (this->event_callback.landscape) + { + if (!this->event_callback.landscape(this, this->event_data)) return; + } + ui_standard_view::on_landscape(); + } + + void on_rotate(int degree) + { + if (this->event_callback.rotate) + { + if (!this->event_callback.rotate(this, degree, this->event_data)) return; + } + ui_standard_view::on_rotate(degree); + } + + void on_back() + { + if (this->event_callback.back) + { + if (!this->event_callback.back(this, this->event_data)) return; + } + ui_standard_view::on_back(); + } + + void on_menu(ui_menu *menu) + { + if (this->event_callback.menu) + { + if (!this->event_callback.menu(menu, this->event_data)) return; + } + ui_standard_view::on_menu(menu); + } + + ui_standard_view_capi(const char *name) + : ui_standard_view(name), ui_view_event_attr() + { + } + + ~ui_standard_view_capi() + { + } +}; + +ui_view* ui_standard_view_create(const char *name) +{ + return new ui_standard_view_capi(name); +} + +bool ui_standard_view_content_set(ui_view *view, Evas_Object *content, const char *title, const char *subtitle, Evas_Object *title_left_btn, + Evas_Object *title_right_btn) +{ + if (!view) + { + LOGE("Invalid View"); + return false; + } + + ui_standard_view_capi *capi_view = dynamic_cast(view); + + return capi_view->set_content(content, title, subtitle, title_left_btn, title_right_btn); +} + +bool ui_standard_view_title_set(ui_view *view, const char *text) +{ + if (!view) + { + LOGE("Invalid View"); + return false; + } + + ui_standard_view_capi *capi_view = dynamic_cast(view); + + return capi_view->set_title(text); +} + +bool ui_standard_view_sub_title_set(ui_view *view, const char *text) +{ + if (!view) + { + LOGE("Invalid View"); + return false; + } + + ui_standard_view_capi *capi_view = dynamic_cast(view); + + return capi_view->set_subtitle(text); +} + +bool ui_standard_view_title_badge_set(ui_view *view, const char *badge_text) +{ + if (!view) + { + LOGE("Invalid View"); + return false; + } + + ui_standard_view_capi *capi_view = dynamic_cast(view); + + return capi_view->set_title_badge(badge_text); +} + +bool ui_standard_view_title_right_btn_set(ui_view *view, Evas_Object *title_right_btn) +{ + if (!view) + { + LOGE("Invalid View"); + return false; + } + + ui_standard_view_capi *capi_view = dynamic_cast(view); + + return capi_view->set_title_right_btn(title_right_btn); +} + +Elm_Button *ui_standard_view_title_right_btn_get(ui_view *view) +{ + if (!view) + { + LOGE("Invalid View"); + return NULL; + } + + ui_standard_view_capi *capi_view = dynamic_cast(view); + + return capi_view->get_title_right_btn(); +} + +Elm_Button *ui_standard_view_title_right_btn_unset(ui_view *view) +{ + if (!view) + { + LOGE("Invalid View"); + return NULL; + } + + ui_standard_view_capi *capi_view = dynamic_cast(view); + + return capi_view->unset_title_right_btn(); +} + +bool ui_standard_view_title_left_btn_set(ui_view *view, Evas_Object *title_left_btn) +{ + if (!view) + { + LOGE("Invalid View"); + return false; + } + + ui_standard_view_capi *capi_view = dynamic_cast(view); + + return capi_view->set_title_left_btn(title_left_btn); +} + +Elm_Button *ui_standard_view_title_left_btn_get(ui_view *view) +{ + if (!view) + { + LOGE("Invalid View"); + return NULL; + } + + ui_standard_view_capi *capi_view = dynamic_cast(view); + + return capi_view->get_title_left_btn(); +} + +Elm_Button *ui_standard_view_title_left_btn_unset(ui_view *view) +{ + if (!view) + { + LOGE("Invalid View"); + return NULL; + } + + ui_standard_view_capi *capi_view = dynamic_cast(view); + + return capi_view->unset_title_right_btn(); +} + +bool ui_standard_view_toolbar_set(ui_view *view, Elm_Toolbar *toolbar) +{ + if (!view) + { + LOGE("Invalid View"); + return false; + } + + ui_standard_view_capi *capi_view = dynamic_cast(view); + + return capi_view->set_toolbar(toolbar); +} + +Elm_Toolbar *ui_standard_view_toolbar_get(ui_view *view) +{ + if (!view) + { + LOGE("Invalid View"); + return NULL; + } + + ui_standard_view_capi *capi_view = dynamic_cast(view); + + return capi_view->get_toolbar(); +} + +Elm_Toolbar *ui_standard_view_toolbar_unset(ui_view *view) +{ + if (!view) + { + LOGE("Invalid View"); + return NULL; + } + + ui_standard_view_capi *capi_view = dynamic_cast(view); + + return capi_view->unset_toolbar(); +} + +bool ui_standard_view_title_visible_set(ui_view *view, bool visible, bool anim) +{ + if (!view) + { + LOGE("Invalid View"); + return false; + } + + ui_standard_view_capi *capi_view = dynamic_cast(view); + + return capi_view->set_title_visible(visible, anim); +} diff --git a/src/lib/efl/mobile/c/ui_view.cpp b/src/lib/efl/mobile/c/ui_view.cpp index 8c35cb0..f28ecff 100644 --- a/src/lib/efl/mobile/c/ui_view.cpp +++ b/src/lib/efl/mobile/c/ui_view.cpp @@ -1,702 +1,356 @@ #include "../../../../include/efl/mobile/ui_mobile_viewmanager.h" #include "../../../../include/efl/mobile/c/ui_view.h" +#include "../../../../include/efl/mobile/c/ui_capi_private.h" using namespace efl_viewmanager; -/////////////////////////////////////////////////////////////////////////// -////////////////////////// ui_standard_view_capi ////////////////////////// -/////////////////////////////////////////////////////////////////////////// - -class ui_standard_view_capi : public ui_standard_view +class ui_view_capi: public ui_view, public ui_view_event_attr { -private: - ui_view_lifecycle_callback_s lifecycle_callback; - ui_view_event_callback_s event_callback; - void *lifecycle_data; - void *event_data; - -protected: +public: void on_load() { - if (this->lifecycle_callback.load) { - if (this->lifecycle_callback.load(this, this->lifecycle_data)) { - ui_standard_view::on_load(); - } + if (this->lifecycle_callback.load) + { + if (!this->lifecycle_callback.load(this, this->lifecycle_data)) return; } + ui_view::on_load(); } void on_unload() { - if (this->lifecycle_callback.unload) { - if (this->lifecycle_callback.unload(this, this->lifecycle_data)) { - ui_standard_view::on_unload(); - } + if (this->lifecycle_callback.unload) + { + if (!this->lifecycle_callback.unload(this, this->lifecycle_data)) return; } + ui_view::on_unload(); } void on_pause() { - if (this->lifecycle_callback.pause) { - if (this->lifecycle_callback.pause(this, this->lifecycle_data)) { - ui_standard_view::on_pause(); - } + if (this->lifecycle_callback.pause) + { + if (!this->lifecycle_callback.pause(this, this->lifecycle_data)) return; } + ui_view::on_pause(); } void on_resume() { - if (this->lifecycle_callback.resume) { - if (this->lifecycle_callback.resume(this, this->lifecycle_data)) { - ui_standard_view::on_resume(); - } + if (this->lifecycle_callback.resume) + { + if (!this->lifecycle_callback.resume(this, this->lifecycle_data)) return; } + ui_view::on_resume(); } void on_activate() { - if (this->lifecycle_callback.activate) { - if (this->lifecycle_callback.activate(this, this->lifecycle_data)) { - ui_standard_view::on_activate(); - } + if (this->lifecycle_callback.activate) + { + if (!this->lifecycle_callback.activate(this, this->lifecycle_data)) return; } + ui_view::on_activate(); } void on_deactivate() { - if (this->lifecycle_callback.deactivate) { - if (this->lifecycle_callback.deactivate(this, this->lifecycle_data)) { - ui_standard_view::on_deactivate(); - } + if (this->lifecycle_callback.deactivate) + { + if (!this->lifecycle_callback.deactivate(this, this->lifecycle_data)) return; } + ui_view::on_deactivate(); } void on_destroy() { - if (this->lifecycle_callback.destroy) { - if (this->lifecycle_callback.destroy(this, this->lifecycle_data)) { - ui_standard_view::on_destroy(); - } + if (this->lifecycle_callback.destroy) + { + if (!this->lifecycle_callback.destroy(this, this->lifecycle_data)) return; } + ui_view::on_destroy(); } void on_portrait() { - if (this->event_callback.portrait) { - if (this->event_callback.portrait(this, this->event_data)) { - ui_standard_view::on_portrait(); - } + if (this->event_callback.portrait) + { + if (!this->event_callback.portrait(this, this->event_data)) return; } + ui_view::on_portrait(); } void on_landscape() { - if (this->event_callback.landscape) { - if (this->event_callback.landscape(this, this->event_data)) { - ui_standard_view::on_landscape(); - } + if (this->event_callback.landscape) + { + if (!this->event_callback.landscape(this, this->event_data)) return; } + ui_view::on_landscape(); } void on_rotate(int degree) { - if (this->event_callback.rotate) { - if (this->event_callback.rotate(this, degree,this->event_data)) { - ui_standard_view::on_rotate(degree); - } + if (this->event_callback.rotate) + { + if (!this->event_callback.rotate(this, degree, this->event_data)) return; } + ui_view::on_rotate(degree); } void on_back() { - if (this->event_callback.back) { - if (this->event_callback.back(this, this->event_data)) { - ui_standard_view::on_back(); - } + if (this->event_callback.back) + { + if (!this->event_callback.back(this, this->event_data)) return; } + ui_view::on_back(); } void on_menu(ui_menu *menu) { - if (this->event_callback.menu) { - if (this->event_callback.menu(menu, this->event_data)) { - ui_standard_view::on_menu(menu); - } - } - } - -public: - ui_standard_view_capi(const char *name) - : ui_standard_view(name) - { - this->lifecycle_callback = {0,}; - this->event_callback = {0,}; - this->lifecycle_data = NULL; - this->event_data = NULL; - } - - ~ui_standard_view_capi() - { - } - - void set_lifecycle_callback(ui_view_lifecycle_callback_s *callback) - { - this->lifecycle_callback = *callback; - } - - void set_lifecycle_data(void *data) - { - this->lifecycle_data = data; - } - - void set_event_callback(ui_view_event_callback_s *callback) - { - this->event_callback = *callback; - } - - void set_event_data(void *data) - { - this->event_data = data; - } -}; - -/////////////////////////////////////////////////////////////////////////// -//////////////////////////// ui_viwe_capi ///////////////////////////////// -/////////////////////////////////////////////////////////////////////////// - -class ui_view_capi : public ui_view -{ -private: - ui_view_lifecycle_callback_s lifecycle_callback; - ui_view_event_callback_s event_callback; - void *lifecycle_data; - void *event_data; - - -protected: - void on_load() - { - ui_view::on_load(); - - if (this->lifecycle_callback.load) { - this->lifecycle_callback.load(this, this->lifecycle_data); - } - } - - void on_portrait() - { - if (this->event_callback.portrait) { - this->event_callback.portrait(this, this->event_data); - } - } - - void on_landscape() - { - if (this->event_callback.landscape) { - this->event_callback.landscape(this, this->event_data); - } - } - - void on_rotate(int degree) - { - if (this->event_callback.rotate) { - this->event_callback.rotate(this, degree,this->event_data); + if (this->event_callback.menu) + { + if (!this->event_callback.menu(menu, this->event_data)) return; } - } - - void on_menu(ui_menu *menu) - { ui_view::on_menu(menu); - - if (this->event_callback.menu) { - this->event_callback.menu(menu, this->event_data); - } } -public: ui_view_capi(const char *name) - : ui_view(name) + : ui_view(name), ui_view_event_attr() { - this->lifecycle_callback = {0,}; - this->event_callback = {0,}; - this->lifecycle_data = NULL; - this->event_data = NULL; } ~ui_view_capi() { } - - void set_lifecycle_callback(ui_view_lifecycle_callback_s *callback) - { - this->lifecycle_callback = *callback; - } - - void set_lifecycle_data(void *data) - { - this->lifecycle_data = data; - } - - void set_event_callback(ui_view_event_callback_s *callback) - { - this->event_callback = *callback; - } - - void set_event_data(void *data) - { - this->event_data = data; - } }; -extern "C" { -//================================== view common APIs ======================================== - bool ui_view_lifecycle_callbacks_set(ui_view *view, ui_view_lifecycle_callback_s *lifecycle_callback, void *data) +{ + if (!view) { - if (!view) - { - LOGE("Invalid View"); - return false; - } - - //FIXME: Maybe... There is a more nice way for it... - ui_standard_view_capi *capi_standard_view = dynamic_cast(view); - if (capi_standard_view) - { - if (lifecycle_callback) capi_standard_view->set_lifecycle_callback(lifecycle_callback); - if (data) capi_standard_view->set_lifecycle_data(data); - } - else - { - ui_view_capi *capi_view = dynamic_cast(view); - - if (lifecycle_callback) capi_view->set_lifecycle_callback(lifecycle_callback); - if (data) capi_view->set_lifecycle_data(data); - } - - return true; + LOGE("Invalid View"); + return false; } - bool ui_view_event_callbacks_set(ui_view *view, - ui_view_event_callback_s *event_callback, void *data) + ui_view_event_attr *event_attr = dynamic_cast(view); + if (!event_attr) { - if (!view) - { - LOGE("Invalid View"); - return false; - } - - //FIXME: Maybe... There is a more nice way for it... - ui_standard_view_capi *capi_standard_view = dynamic_cast(view); - if (capi_standard_view) - { - if (event_callback) capi_standard_view->set_event_callback(event_callback); - if (data) capi_standard_view->set_event_data(data); - } - else - { - ui_view_capi *capi_view = dynamic_cast(view); - - if (event_callback) capi_view->set_event_callback(event_callback); - if (data) capi_view->set_event_data(data); - } - - return true; + LOGE("This view(%p) doesn't allow lifecycle callback?!"); + return false; } - Evas_Object* ui_view_base_get(ui_view *view) + if (lifecycle_callback) { - if (!view) - { - LOGE("Invalid View"); - return false; - } - - ui_standard_view_capi *capi_standard_view = dynamic_cast(view); - if (capi_standard_view) - return capi_standard_view->get_base(); - else - { - ui_view_capi *capi_view = dynamic_cast(view); - - return capi_view->get_base(); - } + event_attr->lifecycle_callback = *lifecycle_callback; } + event_attr->lifecycle_data = data; - Evas_Object *ui_view_content_unset(ui_view *view) - { - if (!view) - { - LOGE("Invalid View"); - return NULL; - } - - ui_standard_view_capi *capi_standard_view = dynamic_cast(view); - if (capi_standard_view) - return capi_standard_view->unset_content(); - else - { - ui_view_capi *capi_view = dynamic_cast(view); - - return capi_view->unset_content(); - } - } + return true; +} - void ui_view_indicator_set(ui_view *view, ui_view_indicator indicator) +bool ui_view_event_callbacks_set(ui_view *view, ui_view_event_callback_s *event_callback, void *data) +{ + if (!view) { - if (!view) - { - LOGE("Invalid View"); - return; - } - - return view->set_indicator(indicator); + LOGE("Invalid View"); + return false; } - ui_view_indicator ui_view_indicator_get(ui_view *view) + ui_view_event_attr *event_attr = dynamic_cast(view); + if (!event_attr) { - if (!view) - { - LOGE("Invalid View"); - return UI_VIEW_INDICATOR_LAST; - } - - return view->get_indicator(); + LOGE("This view(%p) doesn't allow event callback?!"); + return false; } - void ui_view_removable_content_set(ui_view *view, bool remove) + if (event_callback) { - if (!view) - { - LOGE("Invalid View"); - return; - } - - view->set_removable_content(remove); + event_attr->event_callback = *event_callback; } + event_attr->event_data = data; - bool ui_view_removable_content_get(ui_view *view) - { - if (!view) - { - LOGE("Invalid View"); - return false; - } - - return view->get_removable_content(); - } + return true; +} - int ui_view_degree_get(ui_view *view) +Evas_Object* ui_view_base_get(ui_view *view) +{ + if (!view) { - if (!view) - { - LOGE("Invalid View"); - return -1; - } - - return view->get_degree(); + LOGE("Invalid View"); + return NULL; } + return view->get_base(); +} - bool ui_view_transition_style_set(ui_view *view, const char *style) +Evas_Object *ui_view_content_unset(ui_view *view) +{ + if (!view) { - if (!view) - { - LOGE("Invalid View"); - return false; - } - - return view->set_transition_style(style); + LOGE("Invalid View"); + return NULL; } - const char *ui_view_transition_style_get(ui_view *view) - { - if (!view) - { - LOGE("Invalid View"); - return NULL; - } - - return view->get_transition_style(); - } + return view->unset_content(); +} - const ui_menu *ui_view_menu_get(ui_view *view) +void ui_view_indicator_set(ui_view *view, ui_view_indicator indicator) +{ + if (!view) { - if (!view) - { - LOGE("Invalid View"); - return NULL; - } - - return view->get_menu(); + LOGE("Invalid View"); + return; } - bool ui_view_name_set(ui_view *view, const char *name) - { - if (!view) - { - LOGE("Invalid View"); - return false; - } - - return view->set_name(name); - - } + return view->set_indicator(indicator); +} - const char *ui_view_name_get(ui_view *view) +ui_view_indicator ui_view_indicator_get(ui_view *view) +{ + if (!view) { - if (!view) - { - LOGE("Invalid View"); - return NULL; - } - - return view->get_name(); - + LOGE("Invalid View"); + return UI_VIEW_INDICATOR_LAST; } - ui_view_state ui_view_state_get(ui_view *view) - { - if (!view) - { - LOGE("Invalid View"); - return UI_VIEW_STATE_LAST; - } - - return view->get_state(); - } + return view->get_indicator(); +} - Evas_Object *ui_view_content_get(ui_view *view) +void ui_view_removable_content_set(ui_view *view, bool remove) +{ + if (!view) { - if (!view) - { - LOGE("Invalid View"); - return NULL; - } - - return view->get_content(); - + LOGE("Invalid View"); + return; } - bool ui_view_destroy(ui_view *view) + view->set_removable_content(remove); +} + +bool ui_view_removable_content_get(ui_view *view) +{ + if (!view) { - if (!view) - { - LOGE("Invalid View"); - return false; - } - delete(view); - return true; + LOGE("Invalid View"); + return false; } -//================================ ui_standard view APIs ===================================== + return view->get_removable_content(); +} - ui_view* ui_standard_view_create(const char *name) +int ui_view_degree_get(ui_view *view) +{ + if (!view) { - return new ui_standard_view_capi(name); + LOGE("Invalid View"); + return -1; } - bool ui_standard_view_content_set(ui_view *view, Evas_Object *content, - const char *title, const char *subtitle, - Evas_Object *title_left_btn, Evas_Object *title_right_btn) - { - if (!view) - { - LOGE("Invalid View"); - return false; - } - - ui_standard_view_capi *capi_view = static_cast(view); + return view->get_degree(); +} - return capi_view->set_content(content, title, subtitle, title_left_btn, title_right_btn); +bool ui_view_transition_style_set(ui_view *view, const char *style) +{ + if (!view) + { + LOGE("Invalid View"); + return false; } + return view->set_transition_style(style); +} - bool ui_standard_view_title_set(ui_view *view, const char *text) +const char *ui_view_transition_style_get(ui_view *view) +{ + if (!view) { - if (!view) - { - LOGE("Invalid View"); - return false; - } - - ui_standard_view_capi *capi_view = static_cast(view); - - return capi_view->set_title(text); + LOGE("Invalid View"); + return NULL; } - bool ui_standard_view_sub_title_set(ui_view *view, const char *text) - { - if (!view) - { - LOGE("Invalid View"); - return false; - } - - ui_standard_view_capi *capi_view = static_cast(view); - - return capi_view->set_subtitle(text); - } + return view->get_transition_style(); +} - bool ui_standard_view_title_badge_set(ui_view *view, const char *badge_text) +const ui_menu *ui_view_menu_get(ui_view *view) +{ + if (!view) { - if (!view) - { - LOGE("Invalid View"); - return false; - } - - ui_standard_view_capi *capi_view = static_cast(view); - - return capi_view->set_title_badge(badge_text); + LOGE("Invalid View"); + return NULL; } - bool ui_standard_view_title_right_btn_set(ui_view *view, Evas_Object *title_right_btn) - { - if (!view) - { - LOGE("Invalid View"); - return false; - } - - ui_standard_view_capi *capi_view = static_cast(view); - - return capi_view->set_title_right_btn(title_right_btn); - } + return view->get_menu(); +} - Elm_Button *ui_standard_view_title_right_btn_get(ui_view *view) +bool ui_view_name_set(ui_view *view, const char *name) +{ + if (!view) { - if (!view) - { - LOGE("Invalid View"); - return NULL; - } - - ui_standard_view_capi *capi_view = static_cast(view); - - return capi_view->get_title_right_btn(); + LOGE("Invalid View"); + return false; } - Elm_Button *ui_standard_view_title_right_btn_unset(ui_view *view) - { - if (!view) - { - LOGE("Invalid View"); - return NULL; - } - - ui_standard_view_capi *capi_view = static_cast(view); + return view->set_name(name); - return capi_view->unset_title_right_btn(); - } +} - bool ui_standard_view_title_left_btn_set(ui_view *view, Evas_Object *title_left_btn) +const char *ui_view_name_get(ui_view *view) +{ + if (!view) { - if (!view) - { - LOGE("Invalid View"); - return false; - } - - ui_standard_view_capi *capi_view = static_cast(view); - - return capi_view->set_title_left_btn(title_left_btn); + LOGE("Invalid View"); + return NULL; } - Elm_Button *ui_standard_view_title_left_btn_get(ui_view *view) - { - if (!view) - { - LOGE("Invalid View"); - return NULL; - } - - ui_standard_view_capi *capi_view = static_cast(view); + return view->get_name(); - return capi_view->get_title_left_btn(); - } +} - Elm_Button *ui_standard_view_title_left_btn_unset(ui_view *view) +ui_view_state ui_view_state_get(ui_view *view) +{ + if (!view) { - if (!view) - { - LOGE("Invalid View"); - return NULL; - } - - ui_standard_view_capi *capi_view = static_cast(view); - - return capi_view->unset_title_right_btn(); + LOGE("Invalid View"); + return UI_VIEW_STATE_UNKNOWN; } + return view->get_state(); +} - bool ui_standard_view_toolbar_set(ui_view *view, Elm_Toolbar *toolbar) - { - if (!view) - { - LOGE("Invalid View"); - return false; - } - - ui_standard_view_capi *capi_view = static_cast(view); - - return capi_view->set_toolbar(toolbar); - } - - Elm_Toolbar *ui_standard_view_toolbar_get(ui_view *view) +Evas_Object *ui_view_content_get(ui_view *view) +{ + if (!view) { - if (!view) - { - LOGE("Invalid View"); - return NULL; - } - - ui_standard_view_capi *capi_view = static_cast(view); - - return capi_view->get_toolbar(); + LOGE("Invalid View"); + return NULL; } - Elm_Toolbar *ui_standard_view_toolbar_unset(ui_view *view) - { - if (!view) - { - LOGE("Invalid View"); - return NULL; - } - - ui_standard_view_capi *capi_view = static_cast(view); + return view->get_content(); - return capi_view->unset_toolbar(); - } +} - bool ui_standard_view_title_visible_set(ui_view *view, bool visible, bool anim) +bool ui_view_destroy(ui_view *view) +{ + if (!view) { - if (!view) - { - LOGE("Invalid View"); - return -1; - } - - ui_standard_view_capi *capi_view = static_cast(view); - - return capi_view->set_title_visible(visible, anim); + LOGE("Invalid View"); + return false; } + delete (view); + return true; +} -//==================================== ui_view APIs ========================================== - - ui_view* ui_view_create(const char *name) - { - return new ui_view_capi(name); - } +ui_view* ui_view_create(const char *name) +{ + return new ui_view_capi(name); +} - bool ui_view_content_set(ui_view *view, Evas_Object *content) +bool ui_view_content_set(ui_view *view, Evas_Object *content) +{ + if (!view) { - if (!view) - { - LOGE("Invalid View"); - return false; - } - - ui_view_capi *capi_view = static_cast(view); - - return capi_view->set_content(content); + LOGE("Invalid View"); + return false; } + return view->set_content(content); }