summaryrefslogtreecommitdiff
path: root/phone
diff options
context:
space:
mode:
authorHyungKyu Song <hk76.song@samsung.com>2013-02-16 00:00:48 +0900
committerHyungKyu Song <hk76.song@samsung.com>2013-02-16 00:00:48 +0900
commit63a62fe09386d6c7d9ec6e912556be1bf9956ad3 (patch)
tree6edbe93ecee55afe6b0cb401f600d11f2212180c /phone
parentb9b4104f70d3f35414260d964f4c7c0221d21446 (diff)
downloadphone-contacts-tizen_2.0.tar.gz
phone-contacts-tizen_2.0.tar.bz2
phone-contacts-tizen_2.0.zip
Diffstat (limited to 'phone')
-rw-r--r--phone/CMakeLists.txt12
-rwxr-xr-xphone/icon_phone.pngbin0 -> 9195 bytes
-rwxr-xr-xphone/org.tizen.phone.xml69
-rwxr-xr-xphone/phone.c333
4 files changed, 414 insertions, 0 deletions
diff --git a/phone/CMakeLists.txt b/phone/CMakeLists.txt
new file mode 100644
index 0000000..0b1e0aa
--- /dev/null
+++ b/phone/CMakeLists.txt
@@ -0,0 +1,12 @@
+SET(SRCS phone.c)
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS} -fpie")
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lib/ph-front/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/lib/common/include)
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} common ug-phone-tabui-efl "-pie")
+
+INSTALL(FILES ${CMAKE_BINARY_DIR}/phone/org.tizen.phone.xml DESTINATION "/usr/share/packages")
+INSTALL(FILES icon_${PROJECT_NAME}.png DESTINATION "/usr/share/icons/default/small" RENAME "${PKGNAME}.png")
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
+
diff --git a/phone/icon_phone.png b/phone/icon_phone.png
new file mode 100755
index 0000000..2b28ee4
--- /dev/null
+++ b/phone/icon_phone.png
Binary files differ
diff --git a/phone/org.tizen.phone.xml b/phone/org.tizen.phone.xml
new file mode 100755
index 0000000..69b5a67
--- /dev/null
+++ b/phone/org.tizen.phone.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.phone" version="0.1.1" install-location="internal-only">
+ <label>Phone</label>
+ <author email="ps.jeong@samsung.com" href="www.samsung.com">bongsu Jeong</author>
+ <description>Phone Application</description>
+ <ui-application appid="org.tizen.phone" exec="/usr/apps/org.tizen.phone/bin/phone tab dialer" nodisplay="false" multiple="false" type="capp" taskmanage="true">
+ <icon>org.tizen.phone.png</icon>
+ <label>Phone</label>
+ <label xml:lang="ko-kr">전화</label>
+ <label xml:lang="de-de">Telefon</label>
+ <label xml:lang="en-gb">Phone</label>
+ <label xml:lang="en-us">Phone</label>
+ <label xml:lang="es-es">Phone</label>
+ <label xml:lang="fr-fr">Phone</label>
+ <label xml:lang="it-it">Telef.</label>
+ <label xml:lang="ja-jp">電話</label>
+ <label xml:lang="nl-nl">Telefoon</label>
+ <label xml:lang="pt-pt">Telef.</label>
+ <label xml:lang="ru-ru">Телефон</label>
+ <label xml:lang="tr-tr">Telefon</label>
+ <label xml:lang="zh-cn">手机</label>
+ <label xml:lang="zh-hk">電話</label>
+ <label xml:lang="zh-tw">電話</label>
+ <label xml:lang="ar-ae">الهاتف</label>
+ <label xml:lang="hy-am">Հեռախոս</label>
+ <label xml:lang="az-az">Telefon</label>
+ <label xml:lang="eu-es">Telefonoa</label>
+ <label xml:lang="bg-bg">Телефон</label>
+ <label xml:lang="ca-es">Telèfon</label>
+ <label xml:lang="hr-hr">Telefon</label>
+ <label xml:lang="cs-cz">Telefon</label>
+ <label xml:lang="da-dk">Telefon</label>
+ <label xml:lang="nl-nl">Telefoon</label>
+ <label xml:lang="et-ee">Telefon</label>
+ <label xml:lang="fi-fi">Puhelin</label>
+ <label xml:lang="gl-es">Teléfono</label>
+ <label xml:lang="ka-ge">ტელეფონი</label>
+ <label xml:lang="el-gr">Τηλέφωνο</label>
+ <label xml:lang="hu-hu">Telefon</label>
+ <label xml:lang="is-is">Sími</label>
+ <label xml:lang="ga-ie">Teileafón</label>
+ <label xml:lang="it-it">Telefono</label>
+ <label xml:lang="kk-kz">Телефон</label>
+ <label xml:lang="lv-lv">Tālrunis</label>
+ <label xml:lang="lt-lt">Telefonas</label>
+ <label xml:lang="mk-mk">Телефон</label>
+ <label xml:lang="nb-no">Telefon</label>
+ <label xml:lang="pl-pl">Telefon</label>
+ <label xml:lang="pt-br">Telefone</label>
+ <label xml:lang="ro-ro">Telefon</label>
+ <label xml:lang="sr-rs">Telefon</label>
+ <label xml:lang="sk-sk">Telefón</label>
+ <label xml:lang="sl-si">Telefon</label>
+ <label xml:lang="es-us">Teléfono</label>
+ <label xml:lang="sv-se">Telefon</label>
+ <label xml:lang="uk-ua">Телефон</label>
+ <label xml:lang="uz-uz">Telefon</label>
+ <label xml:lang="zh-sg">电话</label>
+ <label xml:lang="hi-in">टेलीफोन</label>
+ <label xml:lang="en-ph">Telephone</label>
+ <label xml:lang="fr-ca">Téléphone</label>
+
+ <application-service>
+ <operation name="http://tizen.org/appcontrol/operation/dial" />
+ <uri name="tel" />
+ </application-service>
+
+ </ui-application>
+</manifest>
diff --git a/phone/phone.c b/phone/phone.c
new file mode 100755
index 0000000..a162967
--- /dev/null
+++ b/phone/phone.c
@@ -0,0 +1,333 @@
+/*
+* 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 <appcore-efl.h>
+#include <Ecore_X.h>
+#include "phone.h"
+#include "phone-common.h"
+#include "ph-front.h"
+
+#include <system_info.h>
+
+struct phone_data
+{
+ Evas_Object *win;
+ ph_phoneui_data *phoneui_d;
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+ Evas_Object *prev_btn;
+#endif
+ /* add more variables here */
+};
+
+static void phapp_win_del(void *data, Evas_Object *obj, void *event)
+{
+ elm_exit();
+}
+
+static Evas_Object* phapp_create_win(const char *name)
+{
+ Evas_Object *eo;
+ int w, h;
+
+ eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
+ if (eo) {
+ elm_win_title_set(eo, name);
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+#else
+ elm_win_borderless_set(eo, EINA_TRUE);
+#endif
+ evas_object_smart_callback_add(eo, "delete,request", phapp_win_del, NULL);
+ ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+ evas_object_resize(eo, w, h);
+ elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
+ }
+ elm_win_conformant_set(eo, EINA_TRUE);
+ return eo;
+}
+
+static void phapp_region_changed(void *data)
+{
+ PH_FN_CALL;
+ ph_phoneui_data *phoneui_d = data;
+ phone_front_view_region_changed(phoneui_d);
+ ug_send_event(UG_EVENT_REGION_CHANGE);
+ return;
+}
+
+static void phapp_language_changed(void *data)
+{
+ PH_FN_CALL;
+ struct phone_data *ad = data;
+ ph_phoneui_data *phoneui_d = ad->phoneui_d;
+ phone_front_view_language_changed(phoneui_d);
+ ug_send_event(UG_EVENT_LANG_CHANGE);
+}
+
+
+static int phapp_open(void *data)
+{
+ PH_FN_CALL;
+ struct phone_data *ad = data;
+ ph_phoneui_data *phoneui_d = ad->phoneui_d;
+ if (TRUE == phone_front_view_show_call_app(phoneui_d))
+ return -1;
+ return 0;
+}
+
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+static Evas_Object* _set_win_icon(struct phone_data *ad)
+{
+ Evas_Object *image = evas_object_image_add(evas_object_evas_get(ad->win));
+ evas_object_image_file_set(image, "/usr/share/icons/default/small/org.tizen.phone.png", NULL);
+ elm_win_icon_object_set(ad->win, image);
+
+ return image;
+}
+
+static void __win_profile_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ struct phone_data *ad = data;
+ p_retm_if(NULL == ad || NULL == ad->phoneui_d, "data is null");
+
+ const char *profile = elm_config_profile_get();
+
+ if(!strcmp(profile, "desktop")) {
+ Elm_Object_Item *navi_item = elm_naviframe_bottom_item_get(ad->phoneui_d->navi);
+ ad->prev_btn = elm_object_item_part_content_unset(navi_item, "prev_btn");
+ ad->phoneui_d->is_desktop_mode = true;
+ elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_HIDE);
+ if(!ad->phoneui_d->icon)
+ ad->phoneui_d->icon = _set_win_icon(ad);
+ }
+ else {
+ Elm_Object_Item *selected_it = elm_toolbar_selected_item_get(ad->phoneui_d->tabbar);
+ ad->phoneui_d->is_desktop_mode = false;
+
+ if (selected_it != ad->phoneui_d->item[PH_VIEW_DIALER]) {
+ Elm_Object_Item *navi_item = elm_naviframe_bottom_item_get(ad->phoneui_d->navi);
+ if (ad->prev_btn) {
+ elm_object_item_part_content_set(navi_item, "prev_btn", ad->prev_btn);
+ ad->prev_btn = NULL;
+ }
+ }
+
+ elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW);
+ }
+}
+#endif
+
+static bool phapp_create(void *data)
+{
+ PH_FN_CALL;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ Evas_Object *win;
+ struct phone_data *ad = data;
+
+ {
+ // Emulator does not support Dial/Log
+ char *pszModelName = NULL;
+ int ret = SYSTEM_INFO_ERROR_NONE;
+ ret = system_info_get_value_string(SYSTEM_INFO_KEY_MODEL, &pszModelName);
+ if (ret == SYSTEM_INFO_ERROR_NONE && pszModelName != NULL)
+ {
+ PH_DBG("SYSTEM_INFO_KEY_MODEL : %s", pszModelName);
+
+ if(strcasestr(pszModelName, "Emulator") != NULL)
+ {
+ free(pszModelName);
+ return false;
+ }
+ free(pszModelName);
+ }
+ }
+
+
+ /* create window */
+ win = phapp_create_win(PACKAGE);
+ p_retvm_if(NULL == win, -1, "phapp_create_win() Failed");
+ ad->win = win;
+
+ evas_object_show(win);
+#ifdef _PHONE_CONTACTS_DESKTOP_MODE_
+ evas_object_smart_callback_add(ad->win, "profile,changed", __win_profile_changed_cb, ad);
+#endif
+ bindtextdomain(PACKAGE, LOCALEDIR);
+
+ err = contacts_connect2();
+ if (CONTACTS_ERROR_NONE != err) {
+ Evas_Object *popup;
+ ERR("contacts_connect2() Failed(%d)", err);
+ popup = elm_popup_add(win);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(popup);
+ elm_object_text_set(popup, T_(PH_GET_TEXT_BASIC, PHTEXT_INITIALIZING));
+ elm_popup_timeout_set(popup, 1.5);
+ evas_object_smart_callback_add(popup, "timeout", phapp_win_del, NULL);
+ return true;
+ }
+
+ UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE);
+ ad->phoneui_d = phone_front_view_create(ad->win);
+
+ appcore_set_open_cb(phapp_open, data);
+
+ return true;
+}
+
+static void phapp_terminate(void *data)
+{
+ PH_FN_CALL;
+ contacts_error_e err = CONTACTS_ERROR_NONE;
+ struct phone_data *ad = data;
+
+ //ug_destroy_all();
+ if (NULL != ad->win)
+ evas_object_del(ad->win);
+ err = contacts_disconnect2();
+ p_warn_if(CONTACTS_ERROR_NONE != err, "contacts_disconnect2() Failed(%d)", err);
+ return;
+}
+
+static void phapp_pause(void *data)
+{
+ PH_FN_CALL;
+ struct phone_data *ad = data;
+ phone_front_view_pause(ad->phoneui_d);
+ ug_pause();
+ return;
+}
+
+static void phapp_resume(void *data)
+{
+ PH_FN_CALL;
+ // update missed log info
+ struct phone_data *ad = data;
+ phone_front_view_resume(ad->phoneui_d);
+ ug_resume();
+ return;
+}
+
+static void phapp_service(service_h service, void *data)
+{
+ PH_FN_CALL;
+ struct phone_data *ad = data;
+ ph_phoneui_data *phoneui_d;
+ char* val = NULL;
+ int ret;
+
+ p_retm_if(NULL == ad || NULL == ad->phoneui_d, "data is null");
+ phoneui_d = ad->phoneui_d;
+
+ ret = service_get_operation(service, &val);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_get_operation is failed(%d)", ret);
+
+ if (val){
+ if (0 == strcmp(val, SERVICE_OPERATION_DIAL)) {
+ PH_DBG("operation : %s", val);
+ free(val);
+ val = NULL;
+ ret = service_get_uri(service, &val);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_get_uri is failed(%d)", ret);
+ if (val && 0 == strncmp(val, "tel:", 4)) {
+ phone_front_view_reset(phoneui_d, PH_VIEW_DIALER, PH_FRONT_DIALER_WITH_NUM, service);
+ free(val);
+ }
+ return;
+ } else {
+ PH_DBG("operation : %s", val);
+ free(val);
+ val = NULL;
+ }
+ } else {
+ PH_DBG("no operation.");
+ }
+
+ ret = service_get_extra_data(service, "MMICHECK_SEND", &val);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_get_extra_data is failed(%d)", ret);
+ if (val && 0 == strcmp(val, "1")) {
+ PH_DBG("MMICHECK_SEND detected");
+ phone_front_view_reset(phoneui_d, PH_VIEW_DIALER, PH_FRONT_DIALER_WITH_SEND_KEY, NULL);
+ free(val);
+ return;
+ }
+
+ // missed_call : show log main view, from idle_lock, quickpanel
+ ret = service_get_extra_data(service, "logs", &val);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_get_extra_data is failed(%d)", ret);
+ PH_DBG("logs : %s", SAFE_STR(val));
+ if (val && 0 == strcmp(val, "missed_call")) {
+ phone_front_view_reset(phoneui_d, PH_VIEW_LOG, PH_FRONT_LOG_MISSED, NULL);
+ free(val);
+ return;
+ }
+
+ ret = service_get_extra_data(service, "launch_type", &val);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_get_extra_data is failed(%d)", ret);
+ PH_DBG("launch_type : %s", SAFE_STR(val));
+ if (val && *val) {
+ if (0 == strcmp(val, "log"))
+ phone_front_view_reset(phoneui_d, PH_VIEW_LOG, -1, NULL);
+ else if (0 == strcmp(val, "favorite"))
+ phone_front_view_reset(phoneui_d, PH_VIEW_FAVORITE, -1, NULL);
+ else if (0 == strcmp(val, "dialer")) {
+ if (phone_front_view_show_call_app(phoneui_d)) {
+ if(phoneui_d->select_tab < PH_VIEW_DIALER)
+ elm_exit();
+ }
+ else
+ phone_front_view_reset(phoneui_d, PH_VIEW_DIALER, -1, NULL);
+ }
+ else
+ phone_front_view_reset(phoneui_d, PH_VIEW_DIALER, -1, NULL);
+ free(val);
+ return;
+ }
+
+ ret = service_get_extra_data(service, "tab", &val);
+ p_warn_if(SERVICE_ERROR_NONE != ret, "service_get_extra_data is failed(%d)", ret);
+ PH_DBG("tab : %s", SAFE_STR(val));
+ if (val && *val) {
+ if (!strcmp(val, "dialer")) {
+ phone_front_view_reset(phoneui_d, PH_VIEW_DIALER, -1, NULL);
+ free(val);
+ return;
+ }
+ }
+
+ elm_win_lower(phoneui_d->win);
+ return;
+}
+
+API int main(int argc, char *argv[])
+{
+ struct phone_data ad = {0};
+ app_event_callback_s event_callback = {0,};
+
+ event_callback.create = phapp_create;
+ event_callback.terminate = phapp_terminate;
+ event_callback.pause = phapp_pause;
+ event_callback.resume = phapp_resume;
+ event_callback.service = phapp_service;
+ event_callback.low_memory = NULL;
+ event_callback.low_battery = NULL;
+ event_callback.region_format_changed = phapp_region_changed;
+ event_callback.language_changed = phapp_language_changed;
+ event_callback.device_orientation = NULL;
+
+ return app_efl_main(&argc, &argv, &event_callback, &ad);
+}
+