/* * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.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.tizenopensource.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. */ #include #include #include "phone.h" #include "phone-common.h" #include "ph-speeddial-view.h" // for removing build warning //////////////////////////////////// int service_export_as_bundle(service_h service, bundle **data); //////////////////////////////////////////////////////// static bool speed_create_ug_view(ph_speeddial_data * speed_d, Evas_Object *base) { p_retvm_if(NULL == speed_d, false, "Parameter is null"); if (NULL == speed_d->navi) { speed_d->navi = elm_naviframe_add(base); p_retvm_if(NULL == speed_d->navi, false, "elm_naviframe_add is failed"); elm_object_part_content_set(base, "elm.swallow.content", speed_d->navi); evas_object_show(speed_d->navi); } speed_d->layout = ph_speed_create_content(speed_d->navi, speed_d); p_retvm_if(NULL == speed_d->layout, false, "Fail to ph_speed_create_content"); return true; } static void *speed_on_create(ui_gadget_h ug, enum ug_mode mode, service_h service, void *priv) { PH_FN_CALL; int ret; Evas_Object *bg; Evas_Object *base; Evas_Object *parent; ph_speeddial_data *speed_d; if (!ug || !priv) return NULL; bindtextdomain(PACKAGE, LOCALEDIR); parent = ug_get_parent_layout(ug); if (!parent) return NULL; speed_d = priv; speed_d->ug = ug; speed_d->win = ug_get_window(); speed_d->is_ug = true; contacts_svc_connect(); if (mode==UG_MODE_FULLVIEW) base = phone_create_base_layout(parent, true); else base = phone_create_base_layout(parent, false); bg = phone_create_bg(base); if (NULL == bg) { PH_DBG("phone_create_bg() return NULL"); evas_object_del(base); ret = contacts_svc_disconnect(); p_warn_if(CTS_SUCCESS != ret, "contacts_svc_disconnect() Failed(%d)", ret); return NULL; } if (!speed_create_ug_view(speed_d, base)) { evas_object_del(base); contacts_svc_disconnect(); } return base; } static void speed_on_start(ui_gadget_h ug, service_h service, void *priv) { } static void speed_on_pause(ui_gadget_h ug, service_h service, void *priv) { } static void speed_on_resume(ui_gadget_h ug, service_h service, void *priv) { } static void speed_on_destroy(ui_gadget_h ug, service_h service, void *priv) { PH_FN_CALL; if (!ug) return; evas_object_del(ug_get_layout(ug)); contacts_svc_disconnect(); } static void speed_on_message(ui_gadget_h ug, service_h msg, service_h service, void *priv) { } static void speed_on_event(ui_gadget_h ug, enum ug_event event, service_h service, void *priv) { ph_speeddial_data *speed_d = priv; Evas_Object *notify; switch (event) { case UG_EVENT_ROTATE_PORTRAIT: case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN: phone_resize_notify(speed_d->navi, 0); break; evas_object_data_set(speed_d->navi, "phone_rotate", (void *)0); case UG_EVENT_ROTATE_LANDSCAPE: case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN: phone_resize_notify(speed_d->navi, 90); evas_object_data_set(speed_d->navi, "phone_rotate", (void *)90); notify = phone_get_notify(speed_d->navi); elm_layout_theme_set(elm_object_content_get(notify), "standard", "selectioninfo", "vertical/bottom_64"); break; default: break; } } static void speed_on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h data, void *priv) { PH_FN_CALL; if (!ug) return; switch (event) { case UG_KEY_EVENT_END: ug_destroy_me(ug); break; default: break; } } API int UG_MODULE_INIT(struct ug_module_ops *ops) { ph_speeddial_data *speed_d; if (!ops) return -1; speed_d = calloc(1, sizeof(ph_speeddial_data)); if (!speed_d) return -1; ops->create = speed_on_create; ops->start = speed_on_start; ops->pause = speed_on_pause; ops->resume = speed_on_resume; ops->destroy = speed_on_destroy; ops->message = speed_on_message; ops->event = speed_on_event; ops->key_event = speed_on_key_event; ops->priv = speed_d; ops->opt = UG_OPT_INDICATOR_ENABLE; return 0; } API void UG_MODULE_EXIT(struct ug_module_ops *ops) { PH_FN_END; if (!ops) return; ops->priv = NULL; } API Evas_Object *phone_create_speeddial_view(void *ug, Evas_Object *win, Evas_Object *navi) { ph_speeddial_data * speed_d = calloc(1, sizeof(ph_speeddial_data)); p_retvm_if(NULL == speed_d, NULL, "Faile to calloc ph_speeddial_data"); speed_d->ug = ug; speed_d->is_ug = false; speed_d->win = win; speed_d->navi = navi; speed_d->layout = ph_speed_create_content(navi, speed_d); if (NULL == speed_d->layout) { free(speed_d); return NULL; } return speed_d->layout; }