diff options
Diffstat (limited to 'lib/speed/ph-speeddial-main.c')
-rwxr-xr-x | lib/speed/ph-speeddial-main.c | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/lib/speed/ph-speeddial-main.c b/lib/speed/ph-speeddial-main.c new file mode 100755 index 0000000..24d590c --- /dev/null +++ b/lib/speed/ph-speeddial-main.c @@ -0,0 +1,203 @@ +/* +* 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://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. +*/ + + +#include <ui-gadget-module.h> +#include <bundle.h> + +#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; + contacts_error_e err = CONTACTS_ERROR_NONE; + 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; + + err = contacts_connect2(); + p_retvm_if(CONTACTS_ERROR_NONE != err, NULL, "contacts_connect2() Failed(%d)", err); + + 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); + err = contacts_disconnect2(); + p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_disconnect2() Failed(%d)", err); + return NULL; + } + + if (!speed_create_ug_view(speed_d, base)) { + evas_object_del(base); + err = contacts_disconnect2(); + p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_disconnect2() Failed(%d)", err); + } + 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; + contacts_error_e err = CONTACTS_ERROR_NONE; + if (!ug) + return; + + evas_object_del(ug_get_layout(ug)); + err = contacts_disconnect2(); + p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_disconnect2() Failed(%d)", err); +} + +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) +{ + switch (event) { + case UG_EVENT_ROTATE_PORTRAIT: + case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN: + case UG_EVENT_ROTATE_LANDSCAPE: + case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN: + break; + case UG_EVENT_LANG_CHANGE: + 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; +} + |