SET(SRCS
${CMAKE_SOURCE_DIR}/src/lockscreen.c
${CMAKE_SOURCE_DIR}/src/util.c
+ ${CMAKE_SOURCE_DIR}/src/sim-state.c
${CMAKE_SOURCE_DIR}/src/info.c
${CMAKE_SOURCE_DIR}/src/bg.c
${CMAKE_SOURCE_DIR}/src/noti.c
#define INFO_WIDTH 720
#define INFO_HEIGHT 382
+ styles{
+ style {
+ name: "style_time";
+ base: "font=Tizen:style=Medium text_class=tizen font_size=130 align=top color=#ffffffff wrap=mixed";
+ tag: "br" "\n";
+ tag: "hilight" "+ color=#ffff";
+ tag: "b" "+ color=#ffff";
+ tag: "tab" "\t";
+ }
+ }
+
group{
name: "lock-info";
parts{
to: "info.bg";
}
rel2{
- relative: 376/INFO_WIDTH 122/INFO_HEIGHT;
- to: "info.bg";
- }
- }
- }
- part{
- name: "rect.clock.ampm";
- type: RECT;
- scale: 1;
- mouse_events: 0;
- description{
- state: "default" 0.0;//for 10:07 hour>=10
- color: 0 0 0 0;
- rel1{
- relative: 376/INFO_WIDTH (122-54)/INFO_HEIGHT);
- to: "info.bg";
- }
- rel2{
- relative: 1.0 122/INFO_HEIGHT;
- to: "info.bg";
- }
- }
- description{
- state: "digit" 1.0;//for 1:07 hour<10
- color: 0 0 0 0;
- rel1{
- relative: (376-78)/INFO_WIDTH (122-54)/INFO_HEIGHT);
- to: "info.bg";
- }
- rel2{
- relative: 1.0 122/INFO_HEIGHT;
+ relative: 1.0 132/INFO_HEIGHT;
to: "info.bg";
}
}
}
part{
name: "txt.clock";
- type: TEXT;
+ type: TEXTBLOCK;
scale: 1;
mouse_events: 0;
description{
rel2{
to: "rect.clock";
}
- text{
- font: "Tizen:style=Medium";
- text_class: "tizen";
- size: 130;
- align: 0.0 0.5;
- }
- }
- }
- part{
- name: "txt.clock.ampm";
- type: TEXT;
- scale: 1;
- mouse_events: 0;
- description{
- state: "default" 0.0;
- color: 255 255 255 255;
- rel1{
- to: "rect.clock.ampm";
- }
- rel2{
- to: "rect.clock.ampm";
- }
- text{
- font: "Tizen:style=Medium";
- text_class: "tizen";
- size: 46;
- align: 0.0 0.5;
+ text {
+ style: "style_time";
}
}
}
programs{
program{
- name: "digit,clock";
- signal: "digit,clock";
- source: "rect.clock.ampm";
- action: STATE_SET "digit" 1.0;
- target: "rect.clock.ampm";
- }
- program{
- name: "default,clock";
- signal: "default,clock";
- source: "rect.clock.ampm";
- action: STATE_SET "default" 0.0;
- target: "rect.clock.ampm";
- }
- program{
name: "visible,helptext";
signal: "visible,helptext";
source: "txt.helptext";
<?xml version="1.0" encoding="utf-8"?>\r
-<manifest xmlns="http://tizen.org/ns/packages" package="@PKGNAME@" version="0.1.12" install-location="internal-only">\r
+<manifest xmlns="http://tizen.org/ns/packages" package="@PKGNAME@" version="0.1.15" install-location="internal-only">\r
<label>@PROJECT_NAME@</label>\r
<author email="yjoo93.park@samsung.com" href="www.samsung.com">Youngjoo Park</author>\r
<author email="seungtaek.chung@samsung.com" href="www.samsung.com">seungtaek chung</author>\r
Name: org.tizen.lockscreen
Summary: lockscreen application
-Version: 0.1.12
+Version: 0.1.15
Release: 1
Group: TBD
License: Apache
#include "lockscreen.h"
#include "log.h"
+#define BUFFER_LENGTH 256
+
static Ecore_Timer *timer = NULL;
+static int clock_font = 130;
+static int am_pm_font = 46;
+
+static void _lock_time_set(void *data, Eina_Bool is_pre, const char *clock, const char *am_pm)
+{
+ Evas_Object *info = data;
+ if (info == NULL)
+ return;
+
+ char time[BUFFER_LENGTH] = {0};
+ time[BUFFER_LENGTH-1] = '\0';
+
+ if(is_pre) {
+ snprintf(time, BUFFER_LENGTH - 1, "<font_size=%d>%s <font_size=%d>%s", am_pm_font, am_pm, clock_font, clock);
+ }else {
+ snprintf(time, BUFFER_LENGTH - 1, "<font_size=%d>%s <font_size=%d>%s", clock_font, clock, am_pm_font, am_pm);
+ }
+ LOCK_SCREEN_TRACE_DBG("time is %s", time);
+ edje_object_part_text_set(_EDJ(info), "txt.clock", time);
+}
+
+static bool get_formatted_ampm_from_utc_time(char* date_str, int date_size, int* str_length, Eina_Bool* is_pre)
+{
+ UChar customSkeleton[BUFFER_LENGTH] = { 0 };
+ UErrorCode status = U_ZERO_ERROR;
+ UDateFormat *formatter = NULL;
+
+ UChar bestPattern[BUFFER_LENGTH] = { 0 };
+ UChar formatted[BUFFER_LENGTH] = { 0 };
+
+ char bestPatternString[BUFFER_LENGTH] = { 0 };
+ char formattedString[BUFFER_LENGTH] = { 0 };
+
+ UDateTimePatternGenerator *pattern_generator = NULL;
+
+ char *time_skeleton = "hhmm";
+
+ char *locale = vconf_get_str(VCONFKEY_REGIONFORMAT);
+ if (locale == NULL) {
+ LOCK_SCREEN_TRACE_ERR("[Error] get value of VCONFKEY_REGIONFORMAT fail.");
+ return false;
+ }
+
+ u_uastrncpy(customSkeleton, time_skeleton, strlen(time_skeleton));
+
+ pattern_generator = udatpg_open(locale, &status);
+
+ int32_t bestPatternCapacity = (int32_t) (sizeof(bestPattern) / sizeof((bestPattern)[0]));
+ (void)udatpg_getBestPattern(pattern_generator, customSkeleton,
+ u_strlen(customSkeleton), bestPattern,
+ bestPatternCapacity, &status);
+
+ u_austrcpy(bestPatternString, bestPattern);
+ u_uastrcpy(bestPattern,"a");
+
+ if(bestPatternString[0] == 'a')
+ {
+ (*is_pre) = EINA_TRUE;
+ }
+ else
+ {
+ (*is_pre) = EINA_FALSE;
+ }
+
+ UDate date = ucal_getNow();
+ formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1, bestPattern, -1, &status);
+ int32_t formattedCapacity = (int32_t) (sizeof(formatted) / sizeof((formatted)[0]));
+ (void)udat_format(formatter, date, formatted, formattedCapacity, NULL, &status);
+ u_austrcpy(formattedString, formatted);
+
+ LOCK_SCREEN_TRACE_DBG("DATE & TIME is %s %s %d %s", locale, formattedString, u_strlen(formatted), bestPatternString);
+
+ (*str_length) = u_strlen(formatted);
+
+ udatpg_close(pattern_generator);
+
+ udat_close(formatter);
+
+ if(strlen(formattedString) < date_size) {
+ strncpy(date_str, formattedString, strlen(formattedString));
+ } else {
+ strncpy(date_str, formattedString, date_size - 1);
+ }
+
+ return true;
+}
static bool get_formatted_date_from_utc_time(time_t* utc_time, char* date_str, int date_size)
{
UErrorCode status = U_ZERO_ERROR;
- UDateTimePatternGenerator *generator;
- UDateFormat *formatter;
- UChar skeleton[40] = { 0 }
- , pattern[40] = { 0 }
- , formatted[40] = { 0 };
+ UDateTimePatternGenerator *generator = NULL;
+ UDateFormat *formatter = NULL;
+ UChar skeleton[BUFFER_LENGTH] = { 0 }
+ , pattern[BUFFER_LENGTH] = { 0 }
+ , formatted[BUFFER_LENGTH] = { 0 };
int32_t patternCapacity, formattedCapacity;
int32_t skeletonLength, patternLength, formattedLength;
UDate date;
- const char *locale;
+ const char *locale = NULL;
const char customSkeleton[] = UDAT_MONTH_WEEKDAY_DAY;
date = (UDate) (*utc_time) *1000;
uloc_setDefault(__secure_getenv("LC_TIME"), &status);
- locale = uloc_getDefault();
+ locale = vconf_get_str(VCONFKEY_REGIONFORMAT);
+ if (locale == NULL) {
+ LOCK_SCREEN_TRACE_ERR("[Error] get value of VCONFKEY_REGIONFORMAT fail.");
+ return false;
+ }
generator = udatpg_open(locale, &status);
if (generator == NULL)
if (r == 0 && timeformat == APPCORE_TIME_FORMAT_24) {
strftime(bf1, sizeof(bf1), "%H:%M", &st);
snprintf(buf, sizeof(buf), "%s", bf1);
+ edje_object_part_text_set(_EDJ(info), "txt.clock", bf1);
} else {
strftime(bf1, sizeof(bf1), "%l", &st);
hour = atoi(bf1);
strftime(bf1, sizeof(bf1), ":%M", &st);
snprintf(buf, sizeof(buf), "%d%s", hour, bf1);
- if (st.tm_hour >= 0 && st.tm_hour < 12) {
- snprintf(bf2, sizeof(bf2), "%s", "AM");
- if ((st.tm_hour - 10) < 0 && st.tm_hour != 0) {
- edje_object_signal_emit(_EDJ(info), "digit,clock", "rect.clock.ampm");
- } else {
- edje_object_signal_emit(_EDJ(info), "default,clock", "rect.clock.ampm");
- }
+
+ char utc_ampm[BUFFER_LENGTH] = { 0 };
+ int ampm_length = 0;
+ Eina_Bool is_pre = EINA_FALSE;
+
+ get_formatted_ampm_from_utc_time(utc_ampm, sizeof(utc_ampm), &m_length, &is_pre);
+ LOCK_SCREEN_TRACE_DBG("utc_ampm = %s", utc_ampm);
+ if(ampm_length > 0 && ampm_length <= 4) {
+ snprintf(bf2, sizeof(bf2), "%s", utc_ampm);
} else {
- snprintf(bf2, sizeof(bf2), "%s", "PM");
- if ((st.tm_hour - 12) < 10 && (st.tm_hour - 12) != 0) {
- edje_object_signal_emit(_EDJ(info), "digit,clock", "rect.clock.ampm");
+ if (st.tm_hour >= 0 && st.tm_hour < 12) {
+ snprintf(bf2, sizeof(bf2), "%s", "AM");
} else {
- edje_object_signal_emit(_EDJ(info), "default,clock", "rect.clock.ampm");
+ snprintf(bf2, sizeof(bf2), "%s", "PM");
}
}
- edje_object_part_text_set(_EDJ(info), "txt.clock.ampm", bf2);
+ _lock_time_set(info, is_pre, buf, bf2);
}
- edje_object_part_text_set(_EDJ(info), "txt.clock", buf);
return 0;
}
--- /dev/null
+/*\r
+ * Copyright 2012 Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the License);\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an AS IS BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#include <vconf.h>\r
+#include <vconf-keys.h>\r
+\r
+#include "lockscreen.h"\r
+#include "sim-state.h"\r
+\r
+static void _set_sim_state(void *data)\r
+{\r
+ struct appdata *ad = data;\r
+ if (ad == NULL)\r
+ return;\r
+\r
+ int state = 0;\r
+ int ret = 0;\r
+ char *buf = NULL;\r
+\r
+ int service_type = VCONFKEY_TELEPHONY_SVCTYPE_SEARCH;\r
+\r
+ if(vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &service_type) != 0) {\r
+ LOGD("fail to get VCONFKEY_TELEPHONY_SVCTYPE");\r
+ }\r
+\r
+ ret = (vconf_get_int(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, &state));\r
+ if (ret == 0) {\r
+ LOGD("[%s:%d] VCONFKEY(%s) = %d", __func__, __LINE__, VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, state);\r
+ if (state != VCONFKEY_TELEPHONY_DISP_INVALID\r
+ && service_type > VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {\r
+ if (state & VCONFKEY_TELEPHONY_DISP_SPN) {\r
+ buf = vconf_get_str(VCONFKEY_TELEPHONY_SPN_NAME);\r
+ edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);\r
+ }\r
+\r
+ if (state & VCONFKEY_TELEPHONY_DISP_PLMN) {\r
+ buf = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);\r
+ edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);\r
+ }\r
+ } else if (service_type == VCONFKEY_TELEPHONY_SVCTYPE_NOSVC) {\r
+ edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", _S("IDS_COM_BODY_NO_SERVICE"));\r
+ } else if (service_type == VCONFKEY_TELEPHONY_SVCTYPE_EMERGENCY) {\r
+ edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", _("IDS_LCKSCN_HEADER_EMERGENCY_CALLS_ONLY"));\r
+ } else {\r
+ if (service_type > VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {\r
+ buf = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);\r
+ edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);\r
+ }else {\r
+ edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", _S("IDS_COM_BODY_SEARCHING"));\r
+ }\r
+ }\r
+ }\r
+}\r
+\r
+static void _sim_state_changed_cb(keynode_t *node, void *data)\r
+{\r
+ _set_sim_state(data);\r
+}\r
+\r
+static void _register_sim_state_event_handler(void *data)\r
+{\r
+ int ret = 0;\r
+\r
+ ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVCTYPE,\r
+ _sim_state_changed_cb, data);\r
+ if (ret != 0)\r
+ LOCK_SCREEN_TRACE_ERR("Failed to register [%s]",\r
+ VCONFKEY_TELEPHONY_SVCTYPE);\r
+\r
+ ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,\r
+ _sim_state_changed_cb, data);\r
+ if (ret != 0)\r
+ LOCK_SCREEN_TRACE_ERR("Failed to register [%s]",\r
+ VCONFKEY_TELEPHONY_SPN_DISP_CONDITION);\r
+\r
+ ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_NAME,\r
+ _sim_state_changed_cb, data);\r
+ if (ret != 0)\r
+ LOCK_SCREEN_TRACE_ERR("Failed to register [%s]",\r
+ VCONFKEY_TELEPHONY_SPN_NAME);\r
+\r
+\r
+ ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME,\r
+ _sim_state_changed_cb, data);\r
+ if (ret != 0)\r
+ LOCK_SCREEN_TRACE_ERR("Failed to register [%s]",\r
+ VCONFKEY_TELEPHONY_NWNAME);\r
+}\r
+\r
+void set_sim_state(void *data)\r
+{\r
+ _set_sim_state(data);\r
+ _register_sim_state_event_handler(data);\r
+}\r
+\r
+void fini_sim_state(void *data)\r
+{\r
+ vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVCTYPE, _sim_state_changed_cb);\r
+\r
+ vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, _sim_state_changed_cb);\r
+\r
+ vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_NAME, _sim_state_changed_cb);\r
+\r
+ vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NWNAME, _sim_state_changed_cb);\r
+}\r
--- /dev/null
+/*\r
+ * Copyright 2012 Samsung Electronics Co., Ltd\r
+ *\r
+ * Licensed under the Flora License, Version 1.0 (the License);\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://floralicense.org/license/\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an AS IS BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#ifndef __SIM_STATE_H__\r
+#define __SIM_STATE_H__\r
+\r
+void set_sim_state(void *data);\r
+void fini_sim_state(void *data);\r
+\r
+#endif\r
#include <heynoti.h>
#include "util.h"
+#include "sim-state.h"
#include "info.h"
#include "bg.h"
#include "noti.h"
if(conform == NULL) {
return NULL;
}
+
+#if 0
elm_object_style_set(conform, "indicator_overlap");
+#else
+ elm_object_signal_emit(conform, "elm,state,virtualkeypad,disable", "");
+ elm_object_signal_emit(conform, "elm,state,indicator,overlap", "");
+ elm_object_signal_emit(conform, "elm,state,clipboard,disable", "");
+#endif
eo = _add_layout(conform, EDJEFILE, "lock-main");
if (eo == NULL)
}
}
-static void _set_sim_state(void *data)
-{
- struct appdata *ad = data;
- if (ad == NULL)
- return;
-
- int state = 0;
- int ret = 0;
- char *buf = NULL;
-
- int service_type = VCONFKEY_TELEPHONY_SVCTYPE_SEARCH;
-
- if(vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &service_type) != 0) {
- LOGD("fail to get VCONFKEY_TELEPHONY_SVCTYPE");
- }
-
- ret = (vconf_get_int(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, &state));
- if (ret == 0) {
- LOGD("[%s:%d] VCONFKEY(%s) = %d", __func__, __LINE__, VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, state);
- if (state != VCONFKEY_TELEPHONY_DISP_INVALID
- && service_type > VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {
- if (state & VCONFKEY_TELEPHONY_DISP_SPN) {
- buf = vconf_get_str(VCONFKEY_TELEPHONY_SPN_NAME);
- edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);
- }
-
- if (state & VCONFKEY_TELEPHONY_DISP_PLMN) {
- buf = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
- edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);
- }
- } else if (service_type == VCONFKEY_TELEPHONY_SVCTYPE_NOSVC) {
- edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", _S("IDS_COM_BODY_NO_SERVICE"));
- } else if (service_type == VCONFKEY_TELEPHONY_SVCTYPE_EMERGENCY) {
- edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", _("IDS_LCKSCN_HEADER_EMERGENCY_CALLS_ONLY"));
- } else {
- if (service_type > VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {
- buf = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
- edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", buf);
- }else {
- edje_object_part_text_set(_EDJ(ad->ly_main), "sim.state", _S("IDS_COM_BODY_SEARCHING"));
- }
- }
- }
-}
-
static void _app_exit(void *data, Evas_Object *obj, const char *emission, const char *source)
{
struct appdata *ad = data;
&ad->slider_rel2.x, &ad->slider_rel2.y, &ad->slider_rel2.w,
&ad->slider_rel2.h);
- _set_sim_state(ad);
+ set_sim_state(ad);
ad->info = elm_layout_add(ad->win);
elm_layout_file_set(ad->info, EDJEFILE, "lock-info");
}
vconf_ignore_key_changed(VCONFKEY_PM_STATE, _pm_state_cb);
+ fini_sim_state(ad);
_fini_heynoti(ad);
LOGD("[%s] app termiante", __func__);
int _app_create(struct appdata *ad);
int _app_reset(struct appdata *ad);
int _app_terminate(struct appdata *ad);
+
#endif