Code sync
authorJin Yoon <jinny.yoon@samsung.com>
Thu, 6 Dec 2012 13:35:33 +0000 (22:35 +0900)
committerJin Yoon <jinny.yoon@samsung.com>
Thu, 6 Dec 2012 13:35:33 +0000 (22:35 +0900)
Change-Id: I78714d99d6321f357c5253085261ae567cfcc57b

142 files changed:
CMakeLists.txt
boot-mgr/CMakeLists.txt [deleted file]
boot-mgr/starter.c [deleted file]
boot-mgr/starter.h [deleted file]
boot-mgr/x11.c [deleted file]
boot-mgr/x11.h [deleted file]
debian/control
debian/starter.postinst
include/hw_key.h [new file with mode: 0644]
include/lock-daemon.h [new file with mode: 0755]
include/lockd-debug.h [moved from lock-mgr/include/lockd-debug.h with 63% similarity, mode: 0644]
include/lockd-process-mgr.h [new file with mode: 0644]
include/lockd-window-mgr.h [new file with mode: 0644]
include/menu_daemon.h [new file with mode: 0755]
include/pkg_event.h [new file with mode: 0644]
include/starter-util.h [new file with mode: 0644]
include/starter-vconf.h
include/starter.h [new file with mode: 0644]
include/util.h [new file with mode: 0644]
include/x11.h [new file with mode: 0644]
include/xmonitor.h [new file with mode: 0644]
lock-mgr/CMakeLists.txt [deleted file]
lock-mgr/include/lock-daemon.h [deleted file]
lock-mgr/include/lockd-process-mgr.h [deleted file]
lock-mgr/include/lockd-window-mgr.h [deleted file]
lock-mgr/src/lock-daemon.c [deleted file]
lock-mgr/src/lockd-process-mgr.c [deleted file]
lock-mgr/src/lockd-window-mgr.c [deleted file]
lock-setting/CMakeLists.txt [new file with mode: 0755]
lock-setting/lockapp-setting/CMakeLists.txt [new file with mode: 0755]
lock-setting/lockapp-setting/include/openlock-setting-debug.h [new file with mode: 0755]
lock-setting/lockapp-setting/include/openlock-setting-main.h [new file with mode: 0755]
lock-setting/lockapp-setting/include/openlock-setting-pw.h [new file with mode: 0755]
lock-setting/lockapp-setting/include/openlock-setting-util.h [new file with mode: 0755]
lock-setting/lockapp-setting/include/openlock-setting.h [new file with mode: 0755]
lock-setting/lockapp-setting/src/openlock-setting-main.c [new file with mode: 0755]
lock-setting/lockapp-setting/src/openlock-setting-pw.c [new file with mode: 0755]
lock-setting/lockapp-setting/src/openlock-setting-util.c [new file with mode: 0755]
lock-setting/lockapp-setting/src/openlock-setting.c [new file with mode: 0755]
lock-setting/lockscreen-options/CMakeLists.txt [new file with mode: 0755]
lock-setting/lockscreen-options/include/lockscreen-options-debug.h [new file with mode: 0755]
lock-setting/lockscreen-options/include/lockscreen-options-dualclock.h [new file with mode: 0755]
lock-setting/lockscreen-options/include/lockscreen-options-locktitle.h [new file with mode: 0755]
lock-setting/lockscreen-options/include/lockscreen-options-main.h [new file with mode: 0755]
lock-setting/lockscreen-options/include/lockscreen-options-shortcuts-edit.h [new file with mode: 0755]
lock-setting/lockscreen-options/include/lockscreen-options-shortcuts.h [new file with mode: 0755]
lock-setting/lockscreen-options/include/lockscreen-options-util.h [new file with mode: 0755]
lock-setting/lockscreen-options/include/lockscreen-options.h [new file with mode: 0755]
lock-setting/lockscreen-options/res/edje/lockscreen-options-locktitle.edc [new file with mode: 0755]
lock-setting/lockscreen-options/res/edje/lockscreen-options-shortcuts.edc [new file with mode: 0755]
lock-setting/lockscreen-options/res/edje/lockscreen-options-thumbnail.edc [new file with mode: 0755]
lock-setting/lockscreen-options/res/edje/lockscreen-options.edc [new file with mode: 0755]
lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_Italic.png [new file with mode: 0755]
lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_bg.png [new file with mode: 0755]
lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_bold.png [new file with mode: 0755]
lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_color.png [new file with mode: 0755]
lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_size.png [new file with mode: 0755]
lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_style.png [new file with mode: 0755]
lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_underline.png [new file with mode: 0755]
lock-setting/lockscreen-options/res/images/B09_key_btn_01.png [new file with mode: 0755]
lock-setting/lockscreen-options/res/images/B09_key_btn_press.png [new file with mode: 0755]
lock-setting/lockscreen-options/res/images/icon_add.png [new file with mode: 0755]
lock-setting/lockscreen-options/res/images/icon_delete.png [new file with mode: 0755]
lock-setting/lockscreen-options/res/images/icon_delete_press.png [new file with mode: 0755]
lock-setting/lockscreen-options/res/images/mainmenu_icon.png [new file with mode: 0755]
lock-setting/lockscreen-options/src/lockscreen-options-dualclock.c [new file with mode: 0755]
lock-setting/lockscreen-options/src/lockscreen-options-locktitle.c [new file with mode: 0755]
lock-setting/lockscreen-options/src/lockscreen-options-main.c [new file with mode: 0755]
lock-setting/lockscreen-options/src/lockscreen-options-shortcuts-edit.c [new file with mode: 0755]
lock-setting/lockscreen-options/src/lockscreen-options-shortcuts.c [new file with mode: 0755]
lock-setting/lockscreen-options/src/lockscreen-options-util.c [new file with mode: 0755]
lock-setting/lockscreen-options/src/lockscreen-options.c [new file with mode: 0755]
lock-setting/po/CMakeLists.txt [new file with mode: 0755]
lock-setting/po/ar.po [new file with mode: 0644]
lock-setting/po/az.po [new file with mode: 0644]
lock-setting/po/bg.po [new file with mode: 0644]
lock-setting/po/ca.po [new file with mode: 0644]
lock-setting/po/cs.po [new file with mode: 0644]
lock-setting/po/da.po [new file with mode: 0644]
lock-setting/po/de_DE.po [new file with mode: 0644]
lock-setting/po/el_GR.po [new file with mode: 0644]
lock-setting/po/en.po [new file with mode: 0644]
lock-setting/po/en_PH.po [new file with mode: 0644]
lock-setting/po/en_US.po [new file with mode: 0644]
lock-setting/po/es_ES.po [new file with mode: 0644]
lock-setting/po/es_MX.po [new file with mode: 0644]
lock-setting/po/es_US.po [new file with mode: 0644]
lock-setting/po/et.po [new file with mode: 0644]
lock-setting/po/eu.po [new file with mode: 0644]
lock-setting/po/fi.po [new file with mode: 0644]
lock-setting/po/fr_CA.po [new file with mode: 0644]
lock-setting/po/fr_FR.po [new file with mode: 0644]
lock-setting/po/ga.po [new file with mode: 0644]
lock-setting/po/gl.po [new file with mode: 0644]
lock-setting/po/hi.po [new file with mode: 0644]
lock-setting/po/hr.po [new file with mode: 0644]
lock-setting/po/hu.po [new file with mode: 0644]
lock-setting/po/hy.po [new file with mode: 0644]
lock-setting/po/is.po [new file with mode: 0644]
lock-setting/po/it_IT.po [new file with mode: 0644]
lock-setting/po/ja_JP.po [new file with mode: 0644]
lock-setting/po/ka.po [new file with mode: 0644]
lock-setting/po/kk.po [new file with mode: 0644]
lock-setting/po/ko_KR.po [new file with mode: 0644]
lock-setting/po/lt.po [new file with mode: 0644]
lock-setting/po/lv.po [new file with mode: 0644]
lock-setting/po/mk.po [new file with mode: 0644]
lock-setting/po/nb.po [new file with mode: 0644]
lock-setting/po/nl_NL.po [new file with mode: 0644]
lock-setting/po/pl.po [new file with mode: 0644]
lock-setting/po/pt_BR.po [new file with mode: 0644]
lock-setting/po/pt_PT.po [new file with mode: 0644]
lock-setting/po/ro.po [new file with mode: 0644]
lock-setting/po/ru_RU.po [new file with mode: 0644]
lock-setting/po/sk.po [new file with mode: 0644]
lock-setting/po/sl.po [new file with mode: 0644]
lock-setting/po/sr.po [new file with mode: 0644]
lock-setting/po/sv.po [new file with mode: 0644]
lock-setting/po/tr_TR.po [new file with mode: 0644]
lock-setting/po/uk.po [new file with mode: 0644]
lock-setting/po/uz.po [new file with mode: 0644]
lock-setting/po/zh_CN.po [new file with mode: 0644]
lock-setting/po/zh_HK.po [new file with mode: 0644]
lock-setting/po/zh_SG.po [new file with mode: 0644]
lock-setting/po/zh_TW.po [new file with mode: 0644]
packaging/starter.service
packaging/starter.spec
rd3starter
rd4starter
src/hw_key.c [new file with mode: 0755]
src/lock-daemon.c [new file with mode: 0755]
src/lockd-debug.c [moved from lock-mgr/src/lockd-debug.c with 63% similarity, mode: 0644]
src/lockd-process-mgr.c [new file with mode: 0755]
src/lockd-window-mgr.c [new file with mode: 0644]
src/menu_daemon.c [new file with mode: 0755]
src/pkg_event.c [new file with mode: 0644]
src/starter.c [new file with mode: 0755]
src/x11.c [new file with mode: 0644]
src/xmonitor.c [new file with mode: 0644]
test/get_entry.c [new file with mode: 0755]
test/get_theme.c [new file with mode: 0755]
test/set_theme.c [new file with mode: 0755]

index bd66ffc..4f1c998 100755 (executable)
@@ -1,7 +1,9 @@
 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
 PROJECT(starter C)
 
-SET(VENDOR "org.tizen")
+SET(VENDOR "tizen")
+SET(PACKAGE ${PROJECT_NAME})
+SET(PKGNAME "org.${VENDOR}.${PACKAGE}")
 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
 SET(BINDIR "${PREFIX}/bin")
 SET(DATADIR "${PREFIX}/share")
@@ -9,11 +11,84 @@ SET(LOCALEDIR "${DATADIR}/locale")
 
 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
 
-SET(LOCK_MGR lock-mgr)
-SET(BOOT_MGR boot-mgr)
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED
+       ail
+       aul
+       capi-system-media-key
+       db-util
+       dlog
+       ecore
+       ecore-evas
+       ecore-input
+       ecore-x
+       eet
+       eina
+       elementary
+       evas
+       heynoti
+       sysman
+       syspopup-caller
+       utilX
+       vconf
+       x11
+       xcomposite
+       xext
+       appcore-efl
+       glib-2.0
+       ui-gadget-1
+       bundle
+       capi-appfw-application
+)
 
-ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/${LOCK_MGR})
-ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/${BOOT_MGR})
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Wall")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=${PREFIX}/lib -pie")
+
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"")
+ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
+ADD_DEFINITIONS("-DPACKAGE_NAME=\"${PKGNAME}\"")
+ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
+ADD_DEFINITIONS("-D_GNU_SOURCE")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+ADD_EXECUTABLE(${PROJECT_NAME}
+       src/hw_key.c
+       src/pkg_event.c
+       src/menu_daemon.c
+       src/starter.c
+       src/x11.c
+       src/xmonitor.c
+       src/lock-daemon.c
+       src/lockd-debug.c
+       src/lockd-process-mgr.c
+       src/lockd-window-mgr.c
+)
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS})
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
+
+SET(LOCK_SETTING lock-setting)
+
+ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/${LOCK_SETTING})
+
+# install desktop file & icon
+#CONFIGURE_FILE(${PROJECT_NAME}.desktop.in ${PROJECT_NAME}.desktop)
+#INSTALL(FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.desktop DESTINATION share/applications)
 
 INSTALL(FILES ${CMAKE_SOURCE_DIR}/rd4starter DESTINATION /etc/init.d
                PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
diff --git a/boot-mgr/CMakeLists.txt b/boot-mgr/CMakeLists.txt
deleted file mode 100755 (executable)
index 6dfcd8b..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(starter C)
-
-SET(SRCS starter.c x11.c)
-
-SET(CMAKE_BINARY_LOCK_DAEMON_DIR "${CMAKE_BINARY_DIR}/${LOCK_MGR}")
-
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/${LOCK_MGR}/include)
-
-INCLUDE(FindPkgConfig)
-pkg_check_modules(pkgs REQUIRED elementary vconf x11 heynoti aul ecore evas ecore-evas x11 dlog ecore-x utilX ecore-input)
-
-FOREACH(flag ${pkgs_CFLAGS})
-       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Wall")
-SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
-SET(CMAKE_C_FLAGS_RELEASE "-O2")
-
-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=${PREFIX}/lib -pie")
-
-FIND_PROGRAM(UNAME NAMES uname)
-EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
-IF("${ARCH}" STREQUAL "arm")
-       ADD_DEFINITIONS("-DTARGET")
-       MESSAGE("add -DTARGET")
-ENDIF("${ARCH}" STREQUAL "arm")
-
-ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"")
-ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
-ADD_DEFINITIONS("-DPACKAGE_NAME=\"${PKGNAME}\"")
-ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
-ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
-
-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
-
-ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
-#TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS})
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} -L${CMAKE_BINARY_LOCK_DAEMON_DIR} -llock-daemon ${pkgs_LDFLAGS})
-INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
diff --git a/boot-mgr/starter.c b/boot-mgr/starter.c
deleted file mode 100755 (executable)
index 98148a9..0000000
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * 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 <Elementary.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <string.h>
-#include <poll.h>
-
-#include <aul.h>
-#include <vconf.h>
-#include <heynoti.h>
-#include <signal.h>
-
-
-#include "starter.h"
-#include "x11.h"
-#include "lock-daemon.h"
-#include "lockd-debug.h"
-
-#define DEFAULT_THEME "tizen"
-
-#define HIB_CAPTURING "/opt/etc/.hib_capturing"
-#define STR_STARTER_READY "/tmp/hibernation/starter_ready"
-
-static void lock_menu_screen(void)
-{
-       vconf_set_int(VCONFKEY_STARTER_SEQUENCE, 0);
-}
-
-static void unlock_menu_screen(void)
-{
-       int r;
-       int show_menu;
-
-       show_menu = 0;
-       r = vconf_get_int(VCONFKEY_STARTER_SEQUENCE, &show_menu);
-       if (r || !show_menu) {
-               vconf_set_int(VCONFKEY_STARTER_SEQUENCE, 1);
-       }
-}
-
-static void _set_elm_theme(void)
-{
-       char *vstr;
-       char *theme;
-       Elm_Theme *th = NULL;
-       vstr = vconf_get_str(VCONFKEY_SETAPPL_WIDGET_THEME_STR);
-       if (vstr == NULL)
-               theme = DEFAULT_THEME;
-       else
-               theme = vstr;
-
-       th = elm_theme_new();
-       _DBG("theme vconf[%s]\n set[%s]\n", vstr, theme);
-       elm_theme_set(th, theme);
-
-       if (vstr)
-               free(vstr);
-}
-static int _launch_pwlock(void)
-{
-       int r;
-
-       _DBG("%s", __func__);
-
-       r = aul_launch_app("org.tizen.pwlock", NULL);
-       if (r < 0) {
-               _ERR("PWLock launch error: error(%d)", r);
-               if (r == AUL_R_ETIMEOUT) {
-                       _DBG("Launch pwlock is failed for AUL_R_ETIMEOUT, again launch pwlock");
-                       r = aul_launch_app("org.tizen.pwlock", NULL);
-                       if (r < 0) {
-                               _ERR("2'nd PWLock launch error: error(%d)", r);
-                               return -1;
-                       } else {
-                               _DBG("Launch pwlock");
-                               return 0;
-                       }
-               } else {
-                       return -1;
-               }
-       } else {
-               _DBG("Launch pwlock");
-               return 0;
-       }
-
-}
-
-static void hib_leave(void *data)
-{
-       struct appdata *ad = data;
-       if (ad == NULL) {
-               fprintf(stderr, "Invalid argument: appdata is NULL\n");
-               return;
-       }
-
-       _DBG("%s", __func__);
-       _set_elm_theme();
-       start_lock_daemon();
-       if (_launch_pwlock() < 0) {
-               _ERR("launch pwlock error");
-       }
-}
-
-static int add_noti(struct appdata *ad)
-{
-       int fd;
-       int r;
-       _DBG("%s %d\n", __func__, __LINE__);
-
-       if (ad == NULL) {
-               fprintf(stderr, "Invalid argument: appdata is NULL\n");
-               return -1;
-       }
-
-       fd = heynoti_init();
-       if (fd == -1) {
-               _ERR("Noti init error");
-               return -1;
-       }
-       ad->noti = fd;
-
-       r = heynoti_subscribe(fd, "HIBERNATION_PRELEAVE", hib_leave, ad);
-       if (r == -1) {
-               _ERR("Noti subs error");
-               return -1;
-       }
-
-       r = heynoti_attach_handler(fd);
-       if (r == -1) {
-               _ERR("Noti attach error");
-               return -1;
-       }
-
-       _DBG("Waiting for hib leave");
-       _DBG("%s %d\n", __func__, __LINE__);
-
-       return 0;
-}
-
-static void _signal_handler(int signum, siginfo_t *info, void *unused)
-{
-    _DBG("_signal_handler : Terminated...");
-    elm_exit();
-}
-static void _heynoti_event_power_off(void *data)
-{
-    _DBG("_heynoti_event_power_off : Terminated...");
-    elm_exit();
-}
-
-static int _init(struct appdata *ad)
-{
-       int fd;
-       int r;
-       int fd1;
-
-       struct sigaction act;
-       act.sa_sigaction = _signal_handler;
-       act.sa_flags = SA_SIGINFO;
-
-       int ret = sigemptyset(&act.sa_mask);
-       if (ret < 0) {
-               _ERR("Failed to sigemptyset[%s]", strerror(errno));
-       }
-       ret = sigaddset(&act.sa_mask, SIGTERM);
-       if (ret < 0) {
-               _ERR("Failed to sigaddset[%s]", strerror(errno));
-       }
-       ret = sigaction(SIGTERM, &act, NULL);
-       if (ret < 0) {
-               _ERR("Failed to sigaction[%s]", strerror(errno));
-       }
-
-       memset(ad, 0, sizeof(struct appdata));
-
-       ad->noti = -1;
-       gettimeofday(&ad->tv_start, NULL);
-
-       lock_menu_screen();
-       _set_elm_theme();
-
-       _DBG("%s %d\n", __func__, __LINE__);
-
-       fd = open(HIB_CAPTURING, O_RDONLY);
-       _DBG("fd = %d\n", fd);
-       if (fd == -1) {
-               _DBG("fd = %d\n", fd);
-               start_lock_daemon();
-               if (_launch_pwlock() < 0) {
-                       _ERR("launch pwlock error");
-               }
-               r = 0;
-       } else {
-               close(fd);
-               r = add_noti(ad);
-       }
-
-       fd1 = open(STR_STARTER_READY, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
-       if (fd1 > 0) {
-               _DBG("Hibernation ready.\n");
-               close(fd1);
-       }
-
-       return r;
-}
-
-static void _fini(struct appdata *ad)
-{
-       struct timeval tv, res;
-
-       if (ad == NULL) {
-               fprintf(stderr, "Invalid argument: appdata is NULL\n");
-               return;
-       }
-       if (ad->noti != -1)
-               heynoti_close(ad->noti);
-
-       unlock_menu_screen();
-
-       gettimeofday(&tv, NULL);
-       timersub(&tv, &ad->tv_start, &res);
-       _DBG("Total time: %d.%06d sec\n", (int)res.tv_sec, (int)res.tv_usec);
-}
-
-int main(int argc, char *argv[])
-{
-       struct appdata ad;
-
-       int heyfd = heynoti_init();
-       if (heyfd < 0) {
-               _ERR("Failed to heynoti_init[%d]", heyfd);
-       }
-
-       int ret = heynoti_subscribe(heyfd, "power_off_start", _heynoti_event_power_off, NULL);
-       if (ret < 0) {
-               _ERR("Failed to heynoti_subscribe[%d]", ret);
-       }
-       ret = heynoti_attach_handler(heyfd);
-       if (ret < 0) {
-               _ERR("Failed to heynoti_attach_handler[%d]", ret);
-       }
-
-       elm_init(argc, argv);
-
-       _init(&ad);
-
-       elm_run();
-
-       _fini(&ad);
-
-       elm_shutdown();
-
-       return 0;
-}
diff --git a/boot-mgr/starter.h b/boot-mgr/starter.h
deleted file mode 100755 (executable)
index d6e9a74..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * 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.
- */
-
-#ifndef __STARTER_H__
-#define __STARTER_H__
-
-#include <sys/time.h>
-
-struct appdata {
-       struct timeval tv_start;
-       int noti;
-};
-
-#endif                         /* __STARTER_H__ */
diff --git a/boot-mgr/x11.c b/boot-mgr/x11.c
deleted file mode 100755 (executable)
index d9d8aa9..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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 <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-#include <X11/Xutil.h>
-
-#define DEFAULT_WINDOW_H 1280
-
-void prop_string_set(const char *name, const char *value)
-{
-       Display *d;
-       Atom a_name;
-       Atom a_UTF8;
-       XTextProperty xtp;
-
-       if (name == NULL || value == NULL || value[0] == '\0')
-               return;
-
-       d = XOpenDisplay(NULL);
-       if (d == NULL)
-               return;
-
-       a_name = XInternAtom(d, name, False);
-       if (a_name == None)
-               goto exit;
-
-       a_UTF8 = XInternAtom(d, "UTF8_STRING", False);
-       if (a_UTF8 == None)
-               goto exit;
-
-       xtp.value = (unsigned char *)value;
-       xtp.format = 8;
-       xtp.encoding = a_UTF8;
-       xtp.nitems = strlen(value);
-
-       XSetTextProperty(d, DefaultRootWindow(d), &xtp, a_name);
-
- exit:
-       XCloseDisplay(d);
-}
-
-void prop_int_set(const char *name, unsigned int val)
-{
-       Display *d;
-       Atom a_name;
-
-       if (name == NULL)
-               return;
-
-       d = XOpenDisplay(NULL);
-       if (d == NULL)
-               return;
-
-       a_name = XInternAtom(d, name, False);
-       if (a_name == None)
-               goto exit;
-
-       XChangeProperty(d, DefaultRootWindow(d), a_name, XA_CARDINAL, 32,
-                       PropModeReplace, (unsigned char *)&val, 1);
-
- exit:
-       XCloseDisplay(d);
-}
-
diff --git a/boot-mgr/x11.h b/boot-mgr/x11.h
deleted file mode 100755 (executable)
index f32e141..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * 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.
- */
-
-#ifndef __STARTER_X11_H__
-#define __STARTER_X11_H__
-
-void prop_string_set(const char *name, const char *value);
-void prop_int_set(const char *name, unsigned int val);
-
-#endif                         /* __STARTER_X11_H__ */
index ae2c243..d62b6d2 100755 (executable)
@@ -2,7 +2,7 @@ Source: starter
 Section: devel
 Priority: extra
 Maintainer: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com>
-Build-Depends: debhelper (>= 5), libappcore-efl-dev, libglib2.0-dev, libslp-tapi-dev, libslp-setting-dev, libheynoti-dev, libaul-1-dev, libx11-dev, libelm-dev, libefreet-dev, dlog-dev, libecore-dev, libsvi-dev, libslp-utilx-dev, libail-0-dev, libui-gadget-dev
+Build-Depends: debhelper (>= 5), libappcore-efl-dev, libglib2.0-dev, libslp-tapi-dev, libslp-setting-dev, libheynoti-dev, libaul-1-dev, libx11-dev, libelm-dev, libefreet-dev, dlog-dev, libecore-dev, libsvi-dev, libslp-utilx-dev, libail-0-dev, libui-gadget-dev, libslp-sysman-dev
 Standards-Version: 3.7.2
 
 Package: starter
index b4e7f9d..a3c94ed 100755 (executable)
@@ -6,6 +6,8 @@ vconftool set -t string file/private/lockscreen/pkgname "org.tizen.draglock" -u
 
 vconftool -i set -t int memory/idle_lock/state "0" -u 5000 -g 5000
 
+vconftool -i set -t bool memory/lockscreen/phone_lock_verification "0" -u 5000 -g 5000
+
 ln -sf /etc/init.d/rd4starter /etc/rc.d/rc4.d/S81starter
 ln -sf /etc/init.d/rd3starter /etc/rc.d/rc3.d/S43starter
 
diff --git a/include/hw_key.h b/include/hw_key.h
new file mode 100644 (file)
index 0000000..594e810
--- /dev/null
@@ -0,0 +1,24 @@
+ /*
+  * 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.
+  */
+
+
+
+extern void destroy_key_window(void);
+extern void create_key_window(void);
+
+
+
+// End of a file
diff --git a/include/lock-daemon.h b/include/lock-daemon.h
new file mode 100755 (executable)
index 0000000..47caf66
--- /dev/null
@@ -0,0 +1,24 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __LOCK_DAEMON_H__
+#define __LOCK_DAEMON_H__
+
+int start_lock_daemon(int launch_lock);
+
+#endif                         /* __LOCK_DAEMON_H__ */
old mode 100755 (executable)
new mode 100644 (file)
similarity index 63%
rename from lock-mgr/include/lockd-debug.h
rename to include/lockd-debug.h
index e017667..2da144e
@@ -1,18 +1,20 @@
-/*
- * 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.
- */
+ /*
+  * 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.
+  */
+
+
 
 #ifndef __LOCKD_DEBUG_H__
 #define __LOCKD_DEBUG_H__
diff --git a/include/lockd-process-mgr.h b/include/lockd-process-mgr.h
new file mode 100644 (file)
index 0000000..93c69fa
--- /dev/null
@@ -0,0 +1,40 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __LOCKD_PROCESS_MGR_H__
+#define __LOCKD_PROCESS_MGR_H__
+
+int lockd_process_mgr_start_lock(void *data, int (*dead_cb) (int, void *),
+                                int phone_lock_state);
+
+int lockd_process_mgr_restart_lock(int phone_lock_state);
+
+int lockd_process_mgr_start_recovery_lock(void);
+
+int lockd_process_mgr_start_phone_lock(void);
+
+int lockd_process_mgr_start_normal_lock(void *data, int (*dead_cb) (int, void *));
+
+void lockd_process_mgr_terminate_lock_app(int lock_app_pid,
+                                         int state);
+
+void lockd_process_mgr_terminate_phone_lock(int phone_lock_pid);
+
+int lockd_process_mgr_check_lock(int pid);
+
+#endif                         /* __LOCKD_PROCESS_MGR_H__ */
diff --git a/include/lockd-window-mgr.h b/include/lockd-window-mgr.h
new file mode 100644 (file)
index 0000000..28f5dd6
--- /dev/null
@@ -0,0 +1,48 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __LOCKD_WINDOW_MGR_H__
+#define __LOCKD_WINDOW_MGR_H__
+
+typedef struct _lockw_data lockw_data;
+
+void
+lockd_window_set_window_property(lockw_data * data, int lock_app_pid,
+                                void *event);
+
+void
+lockd_window_set_window_effect(lockw_data * data, int lock_app_pid,
+                              void *event);
+
+void lockd_window_set_phonelock_pid(lockw_data * data, int phone_lock_pid);
+
+void
+lockd_window_mgr_ready_lock(void *data, lockw_data * lockw,
+                           Eina_Bool(*create_cb) (void *, int, void *),
+                           Eina_Bool(*show_cb) (void *, int, void *));
+
+void lockd_window_mgr_finish_lock(lockw_data * lockw);
+
+lockw_data *lockd_window_init(void);
+
+void lockd_create_ug_window(void *data);
+
+void lockd_destroy_ug_window(void *data);
+
+void lockd_show_phonelock_alpha_ug(void *data);
+#endif                         /* __LOCKD_WINDOW_MGR_H__ */
diff --git a/include/menu_daemon.h b/include/menu_daemon.h
new file mode 100755 (executable)
index 0000000..cde3b5c
--- /dev/null
@@ -0,0 +1,29 @@
+ /*
+  * 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 <sys/types.h>
+#include <stdbool.h>
+
+extern void menu_daemon_init(void *data);
+extern void menu_daemon_fini(void);
+
+extern bool menu_daemon_is_homescreen(pid_t pid);
+
+extern int menu_daemon_check_dead_signal(int pid);
+
+// End of a file
diff --git a/include/pkg_event.h b/include/pkg_event.h
new file mode 100644 (file)
index 0000000..0445093
--- /dev/null
@@ -0,0 +1,46 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __NOTIFIER_H__
+#define __NOTIFIER_H__
+#include <stdbool.h>
+
+#if !defined(PUBLIC)
+#define PUBLIC          __attribute__((visibility("default")))  /**<All other from outside modules can access this typed API */
+#endif
+
+#if !defined(PROTECTED)
+#define PROTECTED       __attribute__((visibility("hidden")))   /**<All other from outside modules can not access this directly */
+#endif
+
+#if !defined(PRIVATE)
+#define PRIVATE         __attribute__((visibility("internal"))) /**<Does not export APIs to the other. only can be accessed in this module */
+#endif
+
+
+struct desktop_notifier {
+    int number;
+    int ifd;
+    Ecore_Fd_Handler *handler;
+};
+
+
+PRIVATE void pkg_event_init(void);
+PRIVATE void pkg_event_fini(void);
+
+#endif
diff --git a/include/starter-util.h b/include/starter-util.h
new file mode 100644 (file)
index 0000000..31e3e9d
--- /dev/null
@@ -0,0 +1,35 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __STARTER_UTIL_H__
+#define __STARTER_UTIL_H__
+
+#include <stdio.h>
+#include <sys/time.h>
+
+#define WRITE_FILE_LOG(fmt, arg...) do {            \
+       FILE *fp;\
+    struct timeval tv;                         \
+    gettimeofday(&tv, NULL);           \
+       fp = fopen("/var/log/boottime", "a+");\
+       if (NULL == fp) break;\
+    fprintf(fp, "%u%09u : "fmt"\n", (int) tv.tv_sec, (int) tv.tv_usec, ##arg); \
+       fclose(fp);\
+} while (0)
+
+#endif                         /* __STARTER_UTIL_H__ */
index b0db772..9f18b8a 100755 (executable)
@@ -1,23 +1,20 @@
-/*
- *  starter
- *
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Seungtaek Chung <seungtaek.chung@samsung.com>, Mi-Ju Lee <miju52.lee@samsung.com>, Xi Zhichan <zhichan.xi@samsung.com>
- *
- * 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.
- *
- */
+ /*
+  * 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.
+  */
+
+
 
 #ifndef __STARTER_VCONF_H__
 #define __STARTER_VCONF_H__
diff --git a/include/starter.h b/include/starter.h
new file mode 100644 (file)
index 0000000..9032010
--- /dev/null
@@ -0,0 +1,28 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __STARTER_H__
+#define __STARTER_H__
+
+#include <sys/time.h>
+
+struct appdata {
+       struct timeval tv_start;        /* start time */
+};
+
+#endif                         /* __STARTER_H__ */
diff --git a/include/util.h b/include/util.h
new file mode 100644 (file)
index 0000000..4956d0d
--- /dev/null
@@ -0,0 +1,79 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __MENU_DAEMON_UTIL_H__
+#define __MENU_DAEMON_UTIL_H__
+#include <dlog.h>
+
+#define HOME_SCREEN_PKG_NAME "org.tizen.menu-screen"
+#define CONF_PATH_NUMBER 1024
+
+#ifdef  LOG_TAG
+#undef  LOG_TAG
+#define LOG_TAG "starter"
+#endif
+
+/* Log */
+#if !defined(_W)
+#define _W(fmt, arg...) LOGW("[%s:%d] "fmt"\n", __func__, __LINE__, ##arg)
+#endif
+
+#if !defined(_D)
+#define _D(fmt, arg...) LOGD("[%s:%d] "fmt"\n", __func__, __LINE__, ##arg)
+#endif
+
+#if !defined(_E)
+#define _E(fmt, arg...) LOGE("[%s:%d] "fmt"\n", __func__, __LINE__, ##arg)
+#endif
+
+#define retv_if(expr, val) do { \
+       if(expr) { \
+               _E("(%s) -> %s() return", #expr, __FUNCTION__); \
+               return (val); \
+       } \
+} while (0)
+
+#define ret_if(expr) do { \
+       if(expr) { \
+               _E("(%s) -> %s() return", #expr, __FUNCTION__); \
+               return; \
+       } \
+} while (0)
+
+#define goto_if(expr, val) do { \
+       if(expr) { \
+               _E("(%s) -> goto", #expr); \
+               goto val; \
+       } \
+} while (0)
+
+#define break_if(expr) { \
+       if(expr) { \
+               _E("(%s) -> break", #expr); \
+               break; \
+       } \
+}
+
+#define continue_if(expr) { \
+       if(expr) { \
+               _E("(%s) -> continue", #expr); \
+               continue; \
+       } \
+}
+
+#endif /* __MENU_DAEMON_UTIL_H__ */
diff --git a/include/x11.h b/include/x11.h
new file mode 100644 (file)
index 0000000..78735af
--- /dev/null
@@ -0,0 +1,26 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __STARTER_X11_H__
+#define __STARTER_X11_H__
+
+void prop_string_set(const char *name, const char *value);
+void prop_int_set(const char *name, unsigned int val);
+void set_window_scale(void);
+
+#endif                         /* __STARTER_X11_H__ */
diff --git a/include/xmonitor.h b/include/xmonitor.h
new file mode 100644 (file)
index 0000000..e904c0b
--- /dev/null
@@ -0,0 +1,25 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __MENU_DAEMON_XMONITOR_H__
+#define __MENU_DAEMON_XMONITOR_H__
+
+extern int xmonitor_init(void);
+extern void xmonitor_fini(void);
+
+#endif /* __MENU_DAEMON_XMONITOR_H__ */
diff --git a/lock-mgr/CMakeLists.txt b/lock-mgr/CMakeLists.txt
deleted file mode 100755 (executable)
index 197ad11..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(lock-daemon C)
-
-SET(PREFIX "/usr")
-SET(EXEC_PREFIX "${PREFIX}/bin")
-SET(LIBDIR "${PREFIX}/lib")
-SET(CONFDIR "/etc")
-SET(VERSION 0.1.0)
-
-INCLUDE(FindPkgConfig)
-pkg_check_modules(pkgs_lock_daemon REQUIRED
-       elementary
-       appcore-efl
-       heynoti
-       aul
-       vconf
-       ecore
-       evas
-       ecore-evas
-       eet
-       x11
-       dlog
-       ecore-x
-       utilX
-       ecore-input
-       glib-2.0
-       bundle
-       capi-appfw-application
-)
-FOREACH (flag ${pkgs_lock_daemon_CFLAGS})
-       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-
-ADD_DEFINITIONS("-D_GNU_SOURCE")
-ADD_DEFINITIONS(${EXTRA_CFLAGS})
-ADD_LIBRARY(${PROJECT_NAME} SHARED
-       src/lock-daemon.c
-       src/lockd-debug.c
-       src/lockd-process-mgr.c
-       src/lockd-window-mgr.c
-)
-INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
-
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_lock_daemon_LDFLAGS})
-INSTALL(TARGETS ${PROJECT_NAME} DESTINATION lib)
-
-# End of a file
diff --git a/lock-mgr/include/lock-daemon.h b/lock-mgr/include/lock-daemon.h
deleted file mode 100755 (executable)
index 5fe3b93..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.
- */
-
-#ifndef __LOCK_DAEMON_H__
-#define __LOCK_DAEMON_H__
-
-int start_lock_daemon();
-
-#endif                         /* __LOCK_DAEMON_H__ */
diff --git a/lock-mgr/include/lockd-process-mgr.h b/lock-mgr/include/lockd-process-mgr.h
deleted file mode 100755 (executable)
index e15d817..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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.
- */
-
-#ifndef __LOCKD_PROCESS_MGR_H__
-#define __LOCKD_PROCESS_MGR_H__
-
-int lockd_process_mgr_start_lock(void *data, int (*dead_cb) (int, void *));
-
-int lockd_process_mgr_restart_lock(void);
-
-void lockd_process_mgr_terminate_lock_app(int lock_app_pid,
-                                         int state);
-
-int lockd_process_mgr_check_lock(int pid);
-
-#endif                         /* __LOCKD_PROCESS_MGR_H__ */
diff --git a/lock-mgr/include/lockd-window-mgr.h b/lock-mgr/include/lockd-window-mgr.h
deleted file mode 100755 (executable)
index 5bf8a5b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.
- */
-
-#ifndef __LOCKD_WINDOW_MGR_H__
-#define __LOCKD_WINDOW_MGR_H__
-
-typedef struct _lockw_data lockw_data;
-
-void
-lockd_window_set_window_property(lockw_data * data, int lock_app_pid,
-                                void *event);
-
-void
-lockd_window_set_window_effect(lockw_data * data, int lock_app_pid,
-                              void *event);
-
-void
-lockd_window_mgr_ready_lock(void *data, lockw_data * lockw,
-                           Eina_Bool(*create_cb) (void *, int, void *),
-                           Eina_Bool(*show_cb) (void *, int, void *));
-
-void lockd_window_mgr_finish_lock(lockw_data * lockw);
-
-lockw_data *lockd_window_init(void);
-
-#endif                         /* __LOCKD_WINDOW_MGR_H__ */
diff --git a/lock-mgr/src/lock-daemon.c b/lock-mgr/src/lock-daemon.c
deleted file mode 100755 (executable)
index 7dba048..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * 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 <Elementary.h>
-
-#include <vconf.h>
-#include <vconf-keys.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/un.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <unistd.h>
-#include <sys/param.h>
-#include <errno.h>
-
-#include "lockd-debug.h"
-#include "lock-daemon.h"
-#include "lockd-process-mgr.h"
-#include "lockd-window-mgr.h"
-
-struct lockd_data {
-       int lock_app_pid;
-       lockw_data *lockw;
-};
-
-#define LAUNCH_INTERVAL 100*1000
-
-static void lockd_launch_lockscreen(struct lockd_data *lockd);
-static void lockd_launch_app_lockscreen(struct lockd_data *lockd);
-
-static void lockd_unlock_lockscreen(struct lockd_data *lockd);
-
-static void _lockd_notify_pm_state_cb(keynode_t * node, void *data)
-{
-       LOCKD_DBG("PM state Notification!!");
-
-       struct lockd_data *lockd = (struct lockd_data *)data;
-       int val = -1;
-
-       if (lockd == NULL) {
-               LOCKD_ERR("lockd is NULL");
-               return;
-       }
-
-       if (vconf_get_int(VCONFKEY_PM_STATE, &val) < 0) {
-               LOCKD_ERR("Cannot get VCONFKEY_PM_STATE");
-               return;
-       }
-
-       if (val == VCONFKEY_PM_STATE_LCDOFF) {
-               lockd_launch_app_lockscreen(lockd);
-       }
-}
-
-static void
-_lockd_notify_lock_state_cb(keynode_t * node, void *data)
-{
-       LOCKD_DBG("lock state changed!!");
-
-       struct lockd_data *lockd = (struct lockd_data *)data;
-       int val = -1;
-
-       if (lockd == NULL) {
-               LOCKD_ERR("lockd is NULL");
-               return;
-       }
-
-       if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &val) < 0) {
-               LOCKD_ERR("Cannot get VCONFKEY_IDLE_LOCK_STATE");
-               return;
-       }
-
-       if (val == VCONFKEY_IDLE_UNLOCK) {
-               LOCKD_DBG("unlocked..!!");
-               if (lockd->lock_app_pid != 0) {
-                       LOCKD_DBG("terminate lock app..!!");
-                       lockd_process_mgr_terminate_lock_app(lockd->lock_app_pid, 1);
-               }
-       }
-}
-
-static int lockd_app_dead_cb(int pid, void *data)
-{
-       LOCKD_DBG("app dead cb call! (pid : %d)", pid);
-
-       struct lockd_data *lockd = (struct lockd_data *)data;
-
-       if (pid == lockd->lock_app_pid ) {
-               LOCKD_DBG("lock app(pid:%d) is destroyed.", pid);
-               lockd_unlock_lockscreen(lockd);
-       }
-       return 0;
-}
-
-static Eina_Bool lockd_app_create_cb(void *data, int type, void *event)
-{
-       struct lockd_data *lockd = (struct lockd_data *)data;
-
-       if (lockd == NULL) {
-               return EINA_TRUE;
-       }
-       LOCKD_DBG("%s, %d", __func__, __LINE__);
-       lockd_window_set_window_effect(lockd->lockw, lockd->lock_app_pid,
-                                      event);
-       lockd_window_set_window_property(lockd->lockw, lockd->lock_app_pid,
-                                        event);
-       return EINA_FALSE;
-}
-
-static Eina_Bool lockd_app_show_cb(void *data, int type, void *event)
-{
-       struct lockd_data *lockd = (struct lockd_data *)data;
-
-       if (lockd == NULL) {
-               return EINA_TRUE;
-       }
-       LOCKD_DBG("%s, %d", __func__, __LINE__);
-       lockd_window_set_window_property(lockd->lockw, lockd->lock_app_pid,
-                                        event);
-
-       return EINA_FALSE;
-}
-
-static void lockd_launch_app_lockscreen(struct lockd_data *lockd)
-{
-       LOCKD_DBG("launch app lock screen");
-
-       int call_state = -1, phlock_state = -1;
-       int r = 0;
-
-       if (lockd_process_mgr_check_lock(lockd->lock_app_pid) == TRUE) {
-               LOCKD_DBG("Lock Screen App is already running.");
-               r = lockd_process_mgr_restart_lock();
-               if (r < 0) {
-                       LOCKD_DBG("Restarting Lock Screen App is fail [%d].", r);
-                       usleep(LAUNCH_INTERVAL);
-               } else {
-                       LOCKD_DBG("Restarting Lock Screen App, pid[%d].", r);
-                       return;
-               }
-       }
-
-       vconf_get_int(VCONFKEY_CALL_STATE, &call_state);
-       if (call_state != VCONFKEY_CALL_OFF) {
-               LOCKD_DBG
-                   ("Current call state(%d) does not allow to launch lock screen.",
-                    call_state);
-               return;
-       }
-
-       lockd->lock_app_pid =
-           lockd_process_mgr_start_lock(lockd, lockd_app_dead_cb);
-       if (lockd->lock_app_pid < 0)
-               return;
-
-       vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_LOCK);
-       lockd_window_mgr_ready_lock(lockd, lockd->lockw, lockd_app_create_cb,
-                                   lockd_app_show_cb);
-}
-
-static void lockd_launch_lockscreen(struct lockd_data *lockd)
-{
-       LOCKD_DBG("launch lock screen");
-
-       int call_state = -1;
-       int r = 0;
-
-       if (lockd_process_mgr_check_lock(lockd->lock_app_pid) == TRUE) {
-               LOCKD_DBG("Lock Screen App is already running.");
-               r = lockd_process_mgr_restart_lock();
-               if (r < 0) {
-                       LOCKD_DBG("Restarting Lock Screen App is fail [%d].", r);
-               } else {
-                       LOCKD_DBG("Restarting Lock Screen App, pid[%d].", r);
-                       return;
-               }
-       }
-
-       vconf_get_int(VCONFKEY_CALL_STATE, &call_state);
-       if (call_state != VCONFKEY_CALL_OFF) {
-               LOCKD_DBG
-                   ("Current call state(%d) does not allow to launch lock screen.",
-                    call_state);
-               return;
-       }
-
-       lockd_window_mgr_ready_lock(lockd, lockd->lockw, lockd_app_create_cb,
-                                   lockd_app_show_cb);
-
-       lockd->lock_app_pid =
-           lockd_process_mgr_start_lock(lockd, lockd_app_dead_cb);
-
-       vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_LOCK);
-}
-
-static void lockd_unlock_lockscreen(struct lockd_data *lockd)
-{
-       LOCKD_DBG("unlock lock screen");
-       lockd->lock_app_pid = 0;
-
-       lockd_window_mgr_finish_lock(lockd->lockw);
-
-       vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_UNLOCK);
-}
-
-static void lockd_init_vconf(struct lockd_data *lockd)
-{
-       int val = -1;
-
-       if (vconf_notify_key_changed
-           (VCONFKEY_PM_STATE, _lockd_notify_pm_state_cb, lockd) != 0) {
-               LOCKD_ERR("Fail vconf_notify_key_changed : VCONFKEY_PM_STATE");
-       }
-
-       if (vconf_notify_key_changed
-           (VCONFKEY_IDLE_LOCK_STATE,
-            _lockd_notify_lock_state_cb,
-            lockd) != 0) {
-               LOCKD_ERR
-                   ("[Error] vconf notify : lock state");
-       }
-}
-
-static void lockd_start_lock_daemon(void *data)
-{
-       struct lockd_data *lockd = NULL;
-       int r = 0;
-
-       lockd = (struct lockd_data *)data;
-
-       if (!lockd) {
-               return;
-       }
-
-       LOCKD_DBG("%s, %d", __func__, __LINE__);
-
-       lockd_init_vconf(lockd);
-
-       lockd->lockw = lockd_window_init();
-
-       LOCKD_DBG("%s, %d", __func__, __LINE__);
-}
-
-int start_lock_daemon()
-{
-       struct lockd_data *lockd = NULL;
-       int val = -1;
-
-       LOCKD_DBG("%s, %d", __func__, __LINE__);
-
-       lockd = (struct lockd_data *)malloc(sizeof(struct lockd_data));
-       memset(lockd, 0x0, sizeof(struct lockd_data));
-       lockd_start_lock_daemon(lockd);
-
-       return 0;
-}
diff --git a/lock-mgr/src/lockd-process-mgr.c b/lock-mgr/src/lockd-process-mgr.c
deleted file mode 100755 (executable)
index 179fced..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * 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 <vconf.h>
-#include <vconf-keys.h>
-
-#include <aul.h>
-
-#include "lockd-debug.h"
-#include "lockd-process-mgr.h"
-#include "starter-vconf.h"
-
-#define LOCKD_DEFAULT_PKG_NAME "org.tizen.draglock"
-#define LOCKD_DEFAULT_LOCKSCREEN "org.tizen.draglock"
-#define RETRY_MAXCOUNT 30
-#define RELAUNCH_INTERVAL 100*1000
-
-static char *_lockd_process_mgr_get_pkgname(void)
-{
-       char *pkgname = NULL;
-
-       pkgname = vconf_get_str(VCONF_PRIVATE_LOCKSCREEN_PKGNAME);
-
-       LOCKD_DBG("pkg name is %s", pkgname);
-
-       if (pkgname == NULL) {
-               return LOCKD_DEFAULT_PKG_NAME;
-       }
-
-       return pkgname;
-}
-
-int lockd_process_mgr_restart_lock(void)
-{
-       char *lock_app_path = NULL;
-       int pid;
-       bundle *b = NULL;
-
-       lock_app_path = _lockd_process_mgr_get_pkgname();
-
-       b = bundle_create();
-
-       bundle_add(b, "mode", "normal");
-
-       pid = aul_launch_app(lock_app_path, b);
-
-       LOCKD_DBG("Reset : aul_launch_app(%s, NULL), pid = %d", lock_app_path,
-                 pid);
-
-       if (b)
-               bundle_free(b);
-
-       return pid;
-}
-
-int
-lockd_process_mgr_start_lock(void *data, int (*dead_cb) (int, void *))
-{
-       char *lock_app_path = NULL;
-       int pid;
-       bundle *b = NULL;
-
-       lock_app_path = _lockd_process_mgr_get_pkgname();
-
-       b = bundle_create();
-
-       bundle_add(b, "mode", "normal");
-
-       int i;
-       for (i=0; i<RETRY_MAXCOUNT; i++)
-       {
-               pid = aul_launch_app(lock_app_path, b);
-
-               LOCKD_DBG("aul_launch_app(%s, NULL), pid = %d", lock_app_path, pid);
-
-               if (pid == AUL_R_ECOMM) {
-                       LOCKD_DBG("Relaunch lock application [%d]times", i);
-                       usleep(RELAUNCH_INTERVAL);
-               } else if (pid == AUL_R_ERROR) {
-                       LOCKD_DBG("launch[%s] is failed, launch default lock screen", lock_app_path);
-                       pid = aul_launch_app(LOCKD_DEFAULT_LOCKSCREEN, b);
-                       if (pid >0) {
-                               aul_listen_app_dead_signal(dead_cb, data);
-                               if (b)
-                                       bundle_free(b);
-                               return pid;
-                       }
-               } else {
-                       /* set listen and dead signal */
-                       aul_listen_app_dead_signal(dead_cb, data);
-                       if (b)
-                               bundle_free(b);
-                       return pid;
-               }
-       }
-       LOCKD_DBG("Relaunch lock application failed..!!");
-       return pid;
-}
-
-void
-lockd_process_mgr_terminate_lock_app(int lock_app_pid, int state)
-{
-       LOCKD_DBG
-           ("lockd_process_mgr_terminate_lock_app,  state:%d\n",
-            state);
-
-       if (state == 1) {
-               if (lock_app_pid != 0) {
-                       LOCKD_DBG("Terminate Lock app(pid : %d)", lock_app_pid);
-                       aul_terminate_pid(lock_app_pid);
-               }
-       }
-}
-
-int lockd_process_mgr_check_lock(int pid)
-{
-       char buf[128];
-       LOCKD_DBG("%s, %d", __func__, __LINE__);
-
-       if (aul_app_get_pkgname_bypid(pid, buf, sizeof(buf)) < 0) {
-               LOCKD_DBG("no such pkg by pid %d\n", pid);
-       } else {
-               LOCKD_DBG("app pkgname = %s, pid = %d\n", buf, pid);
-               if (aul_app_is_running(buf) == TRUE) {
-                       LOCKD_DBG("%s [pid = %d] is running\n", buf, pid);
-                       return TRUE;
-               } else {
-                       LOCKD_DBG("[pid = %d] is exist but %s is not running\n",
-                                 pid, buf);
-               }
-       }
-       return FALSE;
-}
diff --git a/lock-mgr/src/lockd-window-mgr.c b/lock-mgr/src/lockd-window-mgr.c
deleted file mode 100755 (executable)
index cdf5e74..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * 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 <Elementary.h>
-#include <Ecore_X.h>
-#include <utilX.h>
-#include <vconf.h>
-#include <bundle.h>
-#include <appcore-efl.h>
-#include <app.h>
-
-#include "lockd-debug.h"
-#include "lockd-window-mgr.h"
-
-#define PACKAGE                "starter"
-
-struct _lockw_data {
-       Ecore_X_Window input_x_window;
-
-       Evas_Object *main_win;
-       Evas_Object *main_layout;
-
-       Ecore_X_Window lock_x_window;
-
-       Ecore_Event_Handler *h_keydown;
-       Ecore_Event_Handler *h_wincreate;
-       Ecore_Event_Handler *h_winshow;
-
-};
-
-static Eina_Bool _lockd_window_key_down_cb(void *data, int type, void *event)
-{
-       LOCKD_DBG("Key Down CB.");
-
-       return ECORE_CALLBACK_PASS_ON;
-}
-
-static int
-_lockd_window_check_validate_rect(Ecore_X_Display * dpy, Ecore_X_Window window)
-{
-       Ecore_X_Window root;
-       Ecore_X_Window child;
-
-       int rel_x = 0;
-       int rel_y = 0;
-       int abs_x = 0;
-       int abs_y = 0;
-
-       unsigned int width = 0;
-       unsigned int height = 0;
-       unsigned int border = 0;
-       unsigned int depth = 0;
-
-       Eina_Bool ret = FALSE;
-
-       root = ecore_x_window_root_first_get();
-
-       if (XGetGeometry
-           (dpy, window, &root, &rel_x, &rel_y, &width, &height, &border,
-            &depth)) {
-               if (XTranslateCoordinates
-                   (dpy, window, root, 0, 0, &abs_x, &abs_y, &child)) {
-                       if ((abs_x - border) >= 480 || (abs_y - border) >= 800
-                           || (width + abs_x) <= 0 || (height + abs_y) <= 0) {
-                               ret = FALSE;
-                       } else {
-                               ret = TRUE;
-                       }
-               }
-       }
-
-       return ret;
-}
-
-static Window get_user_created_window(Window win)
-{
-       Atom type_ret = 0;
-       int ret, size_ret = 0;
-       unsigned long num_ret = 0, bytes = 0;
-       unsigned char *prop_ret = NULL;
-       unsigned int xid;
-       Atom prop_user_created_win;
-
-       prop_user_created_win =
-           XInternAtom(ecore_x_display_get(), "_E_USER_CREATED_WINDOW", False);
-
-       ret =
-           XGetWindowProperty(ecore_x_display_get(), win,
-                              prop_user_created_win, 0L, 1L, False, 0,
-                              &type_ret, &size_ret, &num_ret, &bytes,
-                              &prop_ret);
-
-       if (ret != Success) {
-               if (prop_ret)
-                       XFree((void *)prop_ret);
-               return win;
-       } else if (!prop_ret) {
-               return win;
-       }
-
-       memcpy(&xid, prop_ret, sizeof(unsigned int));
-       XFree((void *)prop_ret);
-
-       return xid;
-
-}
-
-void
-lockd_window_set_window_property(lockw_data * data, int lock_app_pid,
-                                void *event)
-{
-       Ecore_X_Event_Window_Create *e = event;
-       Ecore_X_Window user_window = 0;
-       lockw_data *lockw = (lockw_data *) data;
-       int pid = 0;
-
-       if (!lockw) {
-               return;
-       }
-       LOCKD_DBG("%s, %d", __func__, __LINE__);
-
-       user_window = get_user_created_window((Window) (e->win));
-
-       ecore_x_netwm_pid_get(user_window, &pid);
-
-       LOCKD_DBG("Check PID(%d) window. (lock_app_pid : %d)\n", pid,
-                 lock_app_pid);
-
-       if (lock_app_pid == pid) {
-               if (_lockd_window_check_validate_rect
-                   (ecore_x_display_get(), user_window) == TRUE) {
-                       lockw->lock_x_window = user_window;
-                       LOCKD_DBG
-                           ("This is lock application. Set window property. win id : %x",
-                            user_window);
-
-                       ecore_x_icccm_name_class_set(user_window, "LOCK_SCREEN",
-                                                    "LOCK_SCREEN");
-
-                       ecore_x_netwm_window_type_set(user_window,
-                                                     ECORE_X_WINDOW_TYPE_NOTIFICATION);
-
-                       utilx_set_system_notification_level(ecore_x_display_get
-                                                           (), user_window,
-                                                           UTILX_NOTIFICATION_LEVEL_NORMAL);
-
-                       utilx_set_window_opaque_state(ecore_x_display_get(),
-                                                     user_window,
-                                                     UTILX_OPAQUE_STATE_ON);
-               }
-       }
-}
-
-void
-lockd_window_set_window_effect(lockw_data * data, int lock_app_pid, void *event)
-{
-       Ecore_X_Event_Window_Create *e = event;
-       Ecore_X_Window user_window = 0;
-       int pid = 0;
-
-       user_window = get_user_created_window((Window) (e->win));
-       ecore_x_netwm_pid_get(user_window, &pid);
-
-       LOCKD_DBG("%s, %d", __func__, __LINE__);
-
-       LOCKD_DBG("PID(%d) window created. (lock_app_pid : %d)\n", pid,
-                 lock_app_pid);
-
-       if (lock_app_pid == pid) {
-               if (_lockd_window_check_validate_rect
-                   (ecore_x_display_get(), user_window) == TRUE) {
-                       LOCKD_DBG
-                           ("This is lock application. Disable window effect. win id : %x\n",
-                            user_window);
-
-                       utilx_set_window_effect_state(ecore_x_display_get(),
-                                                     user_window, 0);
-               }
-       }
-}
-
-void
-lockd_window_mgr_ready_lock(void *data, lockw_data * lockw,
-                           Eina_Bool(*create_cb) (void *, int, void *),
-                           Eina_Bool(*show_cb) (void *, int, void *))
-{
-       Ecore_X_Window xwin;
-
-       if (lockw == NULL) {
-               LOCKD_ERR("lockw is NULL.");
-               return;
-       }
-
-       lockw->h_wincreate =
-           ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CREATE, create_cb,
-                                   data);
-       lockw->h_winshow =
-           ecore_event_handler_add(ECORE_X_EVENT_WINDOW_SHOW, show_cb, data);
-
-       xwin = lockw->input_x_window;
-       utilx_grab_key(ecore_x_display_get(), xwin, KEY_SELECT, EXCLUSIVE_GRAB);
-
-       lockw->h_keydown =
-           ecore_event_handler_add(ECORE_EVENT_KEY_DOWN,
-                                   _lockd_window_key_down_cb, NULL);
-}
-
-void lockd_window_mgr_finish_lock(lockw_data * lockw)
-{
-       Ecore_X_Window xwin;
-
-       if (lockw == NULL) {
-               LOCKD_ERR("lockw is NULL.");
-               return;
-       }
-       if (lockw->h_wincreate != NULL) {
-               ecore_event_handler_del(lockw->h_wincreate);
-               lockw->h_wincreate = NULL;
-       }
-       if (lockw->h_winshow != NULL) {
-               ecore_event_handler_del(lockw->h_winshow);
-               lockw->h_winshow = NULL;
-       }
-
-       xwin = lockw->input_x_window;
-       utilx_ungrab_key(ecore_x_display_get(), xwin, KEY_SELECT);
-
-       if (lockw->h_keydown != NULL) {
-               ecore_event_handler_del(lockw->h_keydown);
-               lockw->h_keydown = NULL;
-       }
-}
-
-lockw_data *lockd_window_init(void)
-{
-       lockw_data *lockw = NULL;
-       Ecore_X_Window input_x_window;
-       Ecore_X_Window root_window;
-       long pid;
-
-       lockw = (lockw_data *) malloc(sizeof(lockw_data));
-       memset(lockw, 0x0, sizeof(lockw_data));
-
-       pid = getpid();
-
-       input_x_window = ecore_x_window_input_new(0, 0, 0, 1, 1);
-       ecore_x_icccm_title_set(input_x_window, "lock-daemon-input-window");
-       ecore_x_netwm_name_set(input_x_window, "lock-daemon-input-window");
-       ecore_x_netwm_pid_set(input_x_window, pid);
-       LOCKD_DBG("Created input window : %p", input_x_window);
-       lockw->input_x_window = input_x_window;
-
-       root_window = ecore_x_window_root_first_get();
-       ecore_x_window_client_sniff(root_window);
-
-       return lockw;
-}
diff --git a/lock-setting/CMakeLists.txt b/lock-setting/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..f754bda
--- /dev/null
@@ -0,0 +1,10 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(lock-setting C)
+
+ADD_SUBDIRECTORY(lockapp-setting)
+ADD_SUBDIRECTORY(lockscreen-options)
+
+# i18n
+ADD_SUBDIRECTORY(po)
+
+# End of a file
diff --git a/lock-setting/lockapp-setting/CMakeLists.txt b/lock-setting/lockapp-setting/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..002b0bd
--- /dev/null
@@ -0,0 +1,39 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(ug-openlock-setting C)
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(EXEC_PREFIX "\${prefix}")
+SET(LIBDIR "\${prefix}/lib")
+SET(INCLUDEDIR "\${prefix}/include")
+SET(VERSION 0.1.0)
+
+SET(SRCS
+       ./src/openlock-setting.c
+       ./src/openlock-setting-util.c
+       ./src/openlock-setting-main.c
+       ./src/openlock-setting-pw.c
+)
+
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs_lock_settings REQUIRED appcore-efl aul elementary ui-gadget-1 evas ail capi-appfw-application)
+
+FOREACH(flag ${pkgs_lock_settings_CFLAGS})
+       SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} -fvisibility=hidden -Wall")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXXFLAGS}")
+SET(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS})
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+
+ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION 0.1.0)
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_lock_settings_LDFLAGS})
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /usr/ug/lib)
+#INSTALL(TARGETS "${CMAKE_CURRENT_SOURCE_DIR}/00_winset_control_top_arrow.png" DESTINATION /opt/ug/res/images/ug-openlock-setting)
+
diff --git a/lock-setting/lockapp-setting/include/openlock-setting-debug.h b/lock-setting/lockapp-setting/include/openlock-setting-debug.h
new file mode 100755 (executable)
index 0000000..8855a1b
--- /dev/null
@@ -0,0 +1,48 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __OPENLOCK_SETTING_DEBUG_H__
+#define __OPENLOCK_SETTING_DEBUG_H__
+
+#include <stdio.h>
+
+#define OPENLOCK_USING_PLATFORM_DEBUG
+
+#ifdef OPENLOCK_USING_PLATFORM_DEBUG
+#ifndef LOG_TAG
+#define LOG_TAG "openlock-setting"
+#endif
+#include <dlog.h>
+
+#define OPENLOCKS_DBG(fmt, args...) LOGD("["LOG_TAG"%s:%d:E] "fmt, __FILE__, __LINE__, ##args)
+#define OPENLOCKS_WARN(fmt, args...) LOGW("["LOG_TAG"%s:%d:E] "fmt, __FILE__, __LINE__, ##args)
+#define OPENLOCKS_ERR(fmt, args...) LOGE("["LOG_TAG"%s:%d:E] "fmt, __FILE__, __LINE__, ##args)
+#else
+#define OPENLOCKS_DBG(fmt, args...) do{printf("[OPENLOCKS_DBG][%s(%d)] "fmt " \n", __FILE__, __LINE__, ##args);}while(0);
+#define OPENLOCKS_WARN(fmt, args...) do{printf("[OPENLOCKS_WARN][%s(%d)] "fmt " \n", __FILE__, __LINE__, ##args);}while(0);
+#define OPENLOCKS_ERR(fmt, args...) do{printf("[OPENLOCKS_ERR][%s(%d)] "fmt " \n", __FILE__, __LINE__, ##args);}while(0);
+#endif                         /* LOCKD_USING_PLATFORM_DEBUG */
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#endif                         /* __OPENLOCK_SETTING_DEBUG_H__ */
diff --git a/lock-setting/lockapp-setting/include/openlock-setting-main.h b/lock-setting/lockapp-setting/include/openlock-setting-main.h
new file mode 100755 (executable)
index 0000000..5155f0a
--- /dev/null
@@ -0,0 +1,48 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __OPENLOCK_SETTING_MAIN_H__
+#define __OPENLOCK_SETTING_MAIN_H__
+
+#include <Elementary.h>
+#include "openlock-setting.h"
+
+typedef struct _openlock_setting_appdata openlock_setting_appdata;
+
+struct _openlock_setting_appdata {
+       openlock_setting_appdata *prev;
+       openlock_setting_appdata *next;
+
+       char *pkg_name;
+       char *app_name;
+       int index;
+
+       Evas_Object *radio;
+       Evas_Object *entry;
+       Evas_Object *editfield_layout;
+       Evas_Object *popup;
+       /* for pw */
+       Evas_Object *ly;
+       Evas_Object *genlist;
+       int count;
+       openlock_ug_data *openlock_data;
+};
+
+void openlock_setting_main_create_view(openlock_ug_data * openlock_data);
+
+#endif                         /* __OPENLOCK_SETTING_MAIN_H__ */
diff --git a/lock-setting/lockapp-setting/include/openlock-setting-pw.h b/lock-setting/lockapp-setting/include/openlock-setting-pw.h
new file mode 100755 (executable)
index 0000000..c1dfd1d
--- /dev/null
@@ -0,0 +1,30 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __OPENLOCK_SETTING_PW_H__
+#define __OPENLOCK_SETTING_PW_H__
+
+#include <Elementary.h>
+
+#include "openlock-setting-main.h"
+
+void
+openlock_setting_pw_create_view(openlock_setting_appdata *
+                               openlock_setting_data);
+
+#endif                         /* __OPENLOCK_SETTING_PW_H__ */
diff --git a/lock-setting/lockapp-setting/include/openlock-setting-util.h b/lock-setting/lockapp-setting/include/openlock-setting-util.h
new file mode 100755 (executable)
index 0000000..e95a66d
--- /dev/null
@@ -0,0 +1,28 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __OPENLOCK_SETTING_UTIL_H__
+#define __OPENLOCK_SETTING_UTIL_H__
+
+#include <Elementary.h>
+
+Evas_Object *openlock_setting_util_create_navigation(Evas_Object * parent);
+
+Evas_Object *openlock_setting_util_create_layout(Evas_Object * parent);
+
+#endif                         /* __OPENLOCK_SETTING_UTIL_H__ */
diff --git a/lock-setting/lockapp-setting/include/openlock-setting.h b/lock-setting/lockapp-setting/include/openlock-setting.h
new file mode 100755 (executable)
index 0000000..4adb642
--- /dev/null
@@ -0,0 +1,40 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __openlock_setting_H__
+#define __openlock_setting_H__
+
+#include <Elementary.h>
+#include <libintl.h>
+#include <ui-gadget.h>
+
+#define PKGNAME "ug-openlock-setting"
+
+#define _EDJ(o)                        elm_layout_edje_get(o)
+#define dgettext_noop(s)       (s)
+
+typedef struct _openlock_ug_data {
+       Evas_Object *win_main;
+       Evas_Object *base;
+       ui_gadget_h ug;
+
+       Evas_Object *navi_bar;
+       ;
+} openlock_ug_data;
+
+#endif                         /* __openlock_setting_H__ */
diff --git a/lock-setting/lockapp-setting/src/openlock-setting-main.c b/lock-setting/lockapp-setting/src/openlock-setting-main.c
new file mode 100755 (executable)
index 0000000..03cbce3
--- /dev/null
@@ -0,0 +1,342 @@
+ /*
+  * 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 <vconf.h>
+#include <vconf-keys.h>
+#include <ui-gadget.h>
+#include <ui-gadget-module.h>
+#include <aul.h>
+#include <ail.h>
+
+#include "openlock-setting.h"
+#include "openlock-setting-pw.h"
+#include "openlock-setting-debug.h"
+#include "openlock-setting-main.h"
+#include "starter-vconf.h"
+
+#define OPENLOCK_DESKTOP_VALUE_LOCKSCREEN "lock-screen"
+
+static Elm_Gen_Item_Class itc;
+static Evas_Object *radio_group = NULL;
+
+static void _openlock_setting_main_back_cb(void *data, Evas_Object * obj,
+                                          void *event_info)
+{
+       openlock_ug_data *openlock_data = (openlock_ug_data *) data;
+
+       if (openlock_data == NULL)
+               return;
+
+       ug_destroy_me(openlock_data->ug);
+}
+
+static void
+_openlock_setting_main_button_clicked_cb(void *data, Evas_Object * obj,
+                                        void *event_info)
+{
+       if (data == NULL)
+               return;
+
+       openlock_setting_appdata *lockapp_data =
+           (openlock_setting_appdata *) data;
+
+       OPENLOCKS_DBG("edit button pressed : %s", lockapp_data->pkg_name);
+
+       bundle *b = NULL;
+
+       b = bundle_create();
+
+       bundle_add(b, "mode", "edit");
+       aul_launch_app(lockapp_data->pkg_name, b);
+
+       if (b)
+               bundle_free(b);
+}
+
+static Evas_Object *_openlock_setting_main_gl_icon_get(void *data,
+                                                      Evas_Object * obj,
+                                                      const char *part)
+{
+       if (data == NULL || part == NULL)
+               return NULL;
+
+       openlock_setting_appdata *lockapp_data =
+           (openlock_setting_appdata *) data;
+       Evas_Object *radio = NULL;
+       Evas_Object *button = NULL;
+       char *cur_pkg_name = NULL;
+       char editable_key[512] = { 0, };
+       int val = 0;
+
+       OPENLOCKS_DBG("part : %s", part);
+
+       if (!strcmp(part, "elm.icon.1")) {
+               radio = elm_radio_add(obj);
+               elm_radio_state_value_set(radio, lockapp_data->index);
+
+               if (lockapp_data->index != 0) {
+                       elm_radio_group_add(radio, radio_group);
+               } else {
+                       radio_group = radio;
+               }
+
+               lockapp_data->radio = radio;
+
+               cur_pkg_name = vconf_get_str(VCONF_PRIVATE_LOCKSCREEN_PKGNAME);
+               OPENLOCKS_DBG("cur pkg : %s, this pkg : %s", cur_pkg_name,
+                             lockapp_data->pkg_name);
+               if (cur_pkg_name == NULL) {
+                       return NULL;
+               }
+               if (!strcmp(cur_pkg_name, lockapp_data->pkg_name)) {
+                       elm_radio_value_set(radio_group, lockapp_data->index);
+               }
+
+               return radio;
+       } else if (!strcmp(part, "elm.icon.2")) {
+               snprintf(editable_key, sizeof(editable_key),
+                        "db/openlockscreen/%s/editable",
+                        lockapp_data->app_name);
+               int ret = vconf_get_bool(editable_key, &val);
+               if (ret == 0 && val == 1) {
+                       OPENLOCKS_DBG("app %s have a editable mode!",
+                                     lockapp_data->app_name);
+                       button = elm_button_add(obj);
+                       elm_object_style_set(button, "text_only/sweep");
+                       elm_object_text_set(button, "edit");
+                       evas_object_smart_callback_add(button, "clicked",
+                                                      _openlock_setting_main_button_clicked_cb,
+                                                      lockapp_data);
+
+                       return button;
+               }
+       }
+
+       return NULL;
+}
+
+static char *_openlock_setting_main_gl_label_get(void *data, Evas_Object * obj,
+                                                const char *part)
+{
+       if (data == NULL || part == NULL)
+               return NULL;
+
+       openlock_setting_appdata *lockapp_data =
+           (openlock_setting_appdata *) data;
+
+       if (lockapp_data->app_name && !strcmp(part, "elm.text")) {
+               return strdup(lockapp_data->app_name);
+       }
+
+       return NULL;
+}
+
+static void _openlock_setting_main_gl_del(void *data, Evas_Object * obj)
+{
+       if (data == NULL)
+               return;
+
+       openlock_setting_appdata *lockapp_data =
+           (openlock_setting_appdata *) data;
+
+       if (lockapp_data->pkg_name)
+               free(lockapp_data->pkg_name);
+
+       if (lockapp_data->app_name)
+               free(lockapp_data->app_name);
+
+       free(lockapp_data);
+}
+
+static void
+_openlock_setting_main_gl_sel(void *data, Evas_Object * obj, void *event_info)
+{
+       char *cur_pkg_name = NULL;
+       elm_genlist_item_selected_set((Elm_Object_Item *) event_info,
+                                     EINA_FALSE);
+
+       if (data == NULL)
+               return;
+
+       openlock_setting_appdata *lockapp_data =
+           (openlock_setting_appdata *) data;
+
+       (lockapp_data->count)++;
+       OPENLOCKS_DBG("lockapp_data->count = %d\n", lockapp_data->count);
+
+       if ((lockapp_data->count) > 1) {
+               lockapp_data->count = 0;
+               return;
+       }
+
+       OPENLOCKS_DBG("lockapp_data->pkg_name = %s\n", lockapp_data->pkg_name);
+
+       if (lockapp_data != NULL && lockapp_data->pkg_name != NULL) {
+               int ret = 0;
+               elm_radio_value_set(radio_group, lockapp_data->index);
+               ret = vconf_set_str(VCONF_PRIVATE_LOCKSCREEN_PKGNAME,
+                             lockapp_data->pkg_name);
+               if(ret != 0)
+               {
+                       OPENLOCKS_ERR("Failed to get vconf : VCONF_PRIVATE_LOCKSCREEN_PKGNAME\n");
+               }
+               lockapp_data->count = 0;        /* reset the count */
+       }
+}
+
+
+ail_cb_ret_e _openlock_setting_main_appinfo_cb(const ail_appinfo_h appinfo,
+                                              void *user_data)
+{
+       openlock_setting_appdata *lockapp_data =
+           (openlock_setting_appdata *) user_data;
+       openlock_setting_appdata *new_lockapp_data = NULL;
+       char *pkgname = NULL;
+       char *appname = NULL;
+
+       ail_appinfo_get_str(appinfo, AIL_PROP_PACKAGE_STR, &pkgname);
+       ail_appinfo_get_str(appinfo, AIL_PROP_NAME_STR, &appname);
+
+       /* Get tail of the list */
+       while (lockapp_data->next != NULL) {
+               lockapp_data = lockapp_data->next;
+       }
+
+       if (lockapp_data->index == 0 && lockapp_data->pkg_name == NULL) {
+               /* first data */
+               lockapp_data->pkg_name = strdup(pkgname);
+               lockapp_data->app_name = strdup(appname);
+               OPENLOCKS_DBG("appinfo %d) %s, %s", lockapp_data->index,
+                             lockapp_data->pkg_name, lockapp_data->app_name);
+       } else {
+               /* create new data */
+               new_lockapp_data = (openlock_setting_appdata *)
+                   malloc(sizeof(openlock_setting_appdata));
+               memset(new_lockapp_data, 0, sizeof(openlock_setting_appdata));
+               new_lockapp_data->pkg_name = strdup(pkgname);
+               new_lockapp_data->app_name = strdup(appname);
+               new_lockapp_data->index = lockapp_data->index + 1;
+               new_lockapp_data->openlock_data = lockapp_data->openlock_data;
+
+               new_lockapp_data->next = NULL;
+               new_lockapp_data->prev = lockapp_data;
+
+               lockapp_data->next = new_lockapp_data;
+
+               OPENLOCKS_DBG("appinfo %d) %s, %s", new_lockapp_data->index,
+                             new_lockapp_data->pkg_name,
+                             new_lockapp_data->app_name);
+       }
+
+       return AIL_CB_RET_CONTINUE;
+}
+
+void openlock_setting_main_create_view(openlock_ug_data * openlock_data)
+{
+       OPENLOCKS_DBG("openlock_setting_main_create_view begin\n");
+       Evas_Object *navi_bar = openlock_data->navi_bar;
+       Evas_Object *back_button = NULL;
+       Evas_Object *genlist = NULL;
+       Elm_Object_Item *item = NULL;
+       int i = 0, count = 0;
+       openlock_setting_appdata *lockapp_data = NULL;
+       openlock_setting_appdata *head_lockapp_data = NULL;
+
+       if (navi_bar == NULL) {
+               OPENLOCKS_WARN("navi_bar is null.");
+               return;
+       }
+
+       /* Get app info */
+       ail_filter_h filter;
+       ail_error_e ret;
+
+       ret = ail_filter_new(&filter);
+       if (ret != AIL_ERROR_OK) {
+               OPENLOCKS_WARN("Fail ail_filter_new : %d", ret);
+               return;
+       }
+
+       ret =
+           ail_filter_add_str(filter, AIL_PROP_CATEGORIES_STR,
+                              OPENLOCK_DESKTOP_VALUE_LOCKSCREEN);
+       ret = ail_filter_count_appinfo(filter, &count);
+
+       lockapp_data = (openlock_setting_appdata *)
+           malloc(sizeof(openlock_setting_appdata));
+       memset(lockapp_data, 0, sizeof(openlock_setting_appdata));
+       lockapp_data->prev = NULL;
+       lockapp_data->next = NULL;
+       lockapp_data->pkg_name = NULL;
+       lockapp_data->app_name = NULL;
+       lockapp_data->index = 0;
+       lockapp_data->openlock_data = openlock_data;
+       ail_filter_list_appinfo_foreach(filter,
+                                       _openlock_setting_main_appinfo_cb,
+                                       lockapp_data);
+
+       ail_filter_destroy(filter);
+
+       OPENLOCKS_DBG("lock app count : %d", count);
+
+       if (count > 0) {
+               /* Create genlist */
+               genlist = elm_genlist_add(navi_bar);
+
+               itc.item_style = "dialogue/1text.2icon";
+               itc.func.text_get = _openlock_setting_main_gl_label_get;
+               itc.func.content_get = _openlock_setting_main_gl_icon_get;
+               itc.func.state_get = NULL;
+               itc.func.del = _openlock_setting_main_gl_del;
+
+               head_lockapp_data = lockapp_data;
+
+               for (i = 0; i < count; i++) {
+                       /* Find index */
+                       lockapp_data = head_lockapp_data;
+
+                       while (lockapp_data != NULL) {
+                               if (lockapp_data->index == i) {
+                                       /* find */
+                                       OPENLOCKS_DBG("%d) [%s][%s]",
+                                                     lockapp_data->index,
+                                                     lockapp_data->pkg_name,
+                                                     lockapp_data->app_name);
+                                           elm_genlist_item_append(genlist,
+                                                                   &itc,
+                                                                   lockapp_data,
+                                                                   NULL,
+                                                                   ELM_GENLIST_ITEM_NONE,
+                                                                   _openlock_setting_main_gl_sel,
+                                                                   lockapp_data);
+                                       break;
+                               }
+                               lockapp_data = lockapp_data->next;
+                       }
+               }
+       }
+
+       /* Set navigation objects and push */
+       back_button = elm_button_add(navi_bar);
+       elm_object_style_set(back_button, "naviframe/back_btn/default");
+       evas_object_smart_callback_add(back_button, "clicked",
+                                      _openlock_setting_main_back_cb,
+                                      openlock_data);
+
+       elm_naviframe_item_push(navi_bar, "Downloaded lock screens", back_button, NULL, genlist, NULL); /* the same tile */
+}
diff --git a/lock-setting/lockapp-setting/src/openlock-setting-pw.c b/lock-setting/lockapp-setting/src/openlock-setting-pw.c
new file mode 100755 (executable)
index 0000000..cec2763
--- /dev/null
@@ -0,0 +1,522 @@
+ /*
+  * 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 <appcore-efl.h>
+#include <Ecore_X.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+
+#include "openlock-setting-pw.h"
+#include "openlock-setting-debug.h"
+#include "starter-vconf.h"
+
+static Evas_Object *done_button = NULL;
+static Elm_Gen_Item_Class itc_label, itc_entry;
+static Evas_Object *_openlock_setting_pw_editfield_create(Evas_Object * parent,
+                                                         void *data);
+static Evas_Object *_openlock_setting_pw_editfield_entry_get(Evas_Object *
+                                                            parent);
+
+static Evas_Object *_openlock_setting_pw_create_conformant(Evas_Object * parent)
+{
+       Evas_Object *conform = NULL;
+       elm_win_conformant_set(parent, 1);
+       conform = elm_conformant_add(parent);
+       elm_object_style_set(conform, "internal_layout");
+       evas_object_show(conform);
+
+       return conform;
+}
+
+static void _openlock_setting_pw_done_button_changed(void *data,
+                                                    Evas_Object * obj, void *e)
+{
+       openlock_setting_appdata *openlock_setting_data =
+           (openlock_setting_appdata *) data;
+
+       if (!openlock_setting_data) {
+               return;
+       }
+       int length = strlen(elm_entry_entry_get(obj));
+
+       if (length == 0) {
+               elm_object_disabled_set(done_button, EINA_TRUE);
+       } else {
+               elm_object_disabled_set(done_button, EINA_FALSE);
+       }
+
+       if (elm_object_focus_get(obj)) {
+               if (elm_entry_is_empty(obj)) {
+                       elm_object_signal_emit
+                           (openlock_setting_data->editfield_layout,
+                            "elm,state,eraser,hide", "elm");
+               } else {
+                       elm_object_signal_emit
+                           (openlock_setting_data->editfield_layout,
+                            "elm,state,eraser,show", "elm");
+               }
+       }
+}
+
+static void _openlock_setting_pw_focused_cb(void *data, Evas_Object * obj,
+                                           void *event_info)
+{
+       if (!elm_entry_is_empty(obj)) {
+               elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+       }
+       elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm");
+}
+
+static void _openlock_setting_pw_unfocused_cb(void *data, Evas_Object * obj,
+                                             void *event_info)
+{
+       if (elm_entry_is_empty(obj)) {
+               elm_object_signal_emit(data, "elm,state,guidetext,show", "elm");
+       }
+       elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+}
+
+static void _openlock_setting_pw_eraser_clicked_cb(void *data,
+                                                  Evas_Object * obj,
+                                                  const char *emission,
+                                                  const char *source)
+{
+       elm_entry_entry_set(data, "");
+}
+
+static Evas_Object *_openlock_setting_pw_editfield_create(Evas_Object * parent,
+                                                         void *data)
+{
+       Evas_Object *layout = NULL;
+       Evas_Object *entry = NULL;
+       openlock_setting_appdata *openlock_setting_data =
+           (openlock_setting_appdata *) data;
+       static Elm_Entry_Filter_Limit_Size limit_filter_data;
+
+       limit_filter_data.max_char_count = 15;  /* hard code for demo */
+       limit_filter_data.max_byte_count = 0;
+
+       layout = elm_layout_add(parent);
+       elm_layout_theme_set(layout, "layout", "editfield", "title");
+
+       entry = elm_entry_add(parent);
+       elm_entry_scrollable_set(entry, EINA_TRUE);
+       elm_entry_single_line_set(entry, EINA_TRUE);
+       elm_entry_password_set(entry, EINA_TRUE);
+       elm_entry_input_panel_layout_set(entry,
+                                        ELM_INPUT_PANEL_LAYOUT_NUMBERONLY);
+       elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size,
+                                      &limit_filter_data);
+       elm_object_focus_set(entry, EINA_TRUE);
+       evas_object_show(entry);
+       evas_object_smart_callback_add(entry, "changed",
+                                      _openlock_setting_pw_done_button_changed,
+                                      openlock_setting_data);
+       evas_object_smart_callback_add(entry, "focused",
+                                      _openlock_setting_pw_focused_cb, layout);
+       evas_object_smart_callback_add(entry, "unfocused",
+                                      _openlock_setting_pw_unfocused_cb,
+                                      layout);
+
+       elm_object_part_content_set(layout, "elm.swallow.content", entry);
+       elm_object_part_text_set(layout, "elm.guidetext", "");
+       elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm",
+                                      _openlock_setting_pw_eraser_clicked_cb,
+                                      entry);
+
+       Ecore_IMF_Context *imf_context =
+                       (Ecore_IMF_Context *) elm_entry_imf_context_get(entry);
+       if (imf_context) {
+               ecore_imf_context_input_panel_show(imf_context);
+       }
+       elm_object_focus_set(entry, EINA_TRUE);
+
+       return layout;
+}
+
+static Evas_Object *_openlock_setting_pw_editfield_entry_get(Evas_Object *
+                                                            parent)
+{
+       Evas_Object *entry = NULL;
+
+       entry = elm_object_part_content_get(parent, "elm.swallow.content");
+
+       return entry;
+}
+
+static char *_openlock_setting_pw_gl_label_get_title(void *data,
+                                                    Evas_Object * obj,
+                                                    const char *part)
+{
+       openlock_setting_appdata *openlock_setting_data =
+           (openlock_setting_appdata *) data;
+       char buf[50] = { 0, };
+
+       if (!openlock_setting_data || !part) {
+               return NULL;
+       }
+
+       if (!strcmp(part, "elm.text")) {
+               snprintf(buf, sizeof(buf), "%s", "Enter Password");     /* hard code for demo */
+               return strdup(buf);
+       }
+       return NULL;
+}
+
+static Evas_Object *_openlock_setting_pw_gl_icon_get(void *data,
+                                                    Evas_Object * obj,
+                                                    const char *part)
+{
+       Evas_Object *layout = NULL;
+       openlock_setting_appdata *openlock_setting_data =
+           (openlock_setting_appdata *) data;
+
+       if (!openlock_setting_data || !part) {
+               return NULL;
+       }
+
+       if (!strcmp(part, "elm.icon")) {
+               layout =
+                   _openlock_setting_pw_editfield_create(obj,
+                                                         openlock_setting_data);
+               openlock_setting_data->editfield_layout = layout;
+
+               return layout;
+
+       }
+       return NULL;
+}
+
+static void _openlock_setting_pw_list_set_styles()
+{
+       itc_label.item_style = "dialogue/title";
+       itc_label.func.text_get = _openlock_setting_pw_gl_label_get_title;
+       itc_label.func.content_get = NULL;
+       itc_label.func.state_get = NULL;
+       itc_label.func.del = NULL;
+
+       itc_entry.item_style = "dialogue/1icon";
+       itc_entry.func.text_get = NULL;
+       itc_entry.func.content_get = _openlock_setting_pw_gl_icon_get;
+       itc_entry.func.state_get = NULL;
+       itc_entry.func.del = NULL;
+}
+
+static void _openlock_setting_pw_back_cb(void *data, Evas_Object * obj,
+                                        void *event_info)
+{
+       openlock_setting_appdata *openlock_setting_data =
+           (openlock_setting_appdata *) data;
+       openlock_ug_data *openlock_data = NULL;
+
+       if (!openlock_setting_data) {
+               return;
+       }
+
+       openlock_data = openlock_setting_data->openlock_data;
+       if (!openlock_data) {
+               return;
+       }
+       OPENLOCKS_DBG("_openlock_setting_pw_back_cb\n");
+       openlock_setting_data->count = 0;
+
+       elm_naviframe_item_pop(openlock_data->navi_bar);
+       if (openlock_setting_data->editfield_layout) {
+               evas_object_del(openlock_setting_data->editfield_layout);
+               openlock_setting_data->editfield_layout = NULL;
+       }
+       if (openlock_setting_data->genlist) {
+               evas_object_del(openlock_setting_data->genlist);
+               openlock_setting_data->genlist = NULL;
+       }
+       if (openlock_setting_data->ly) {
+               evas_object_del(openlock_setting_data->ly);
+               openlock_setting_data->ly = NULL;
+       }
+}
+
+static Eina_Bool _openlock_setting_pw_input_panel_show_idler(void *data)
+{
+       Evas_Object *entry = (Evas_Object *) data;
+
+       OPENLOCKS_DBG("_openlock_setting_pw_input_panel_show_idler");
+
+       elm_object_focus_set(entry, EINA_TRUE);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void _openlock_setting_pw_imf_context_input_panel_show(void *data)
+{
+       openlock_setting_appdata *openlock_setting_data =
+                       (openlock_setting_appdata *) data;
+       Evas_Object *entry = NULL;
+
+       if (!openlock_setting_data) {
+               return;
+       }
+
+       OPENLOCKS_DBG("_openlock_setting_pw_imf_context_input_panel_show\n");
+
+       entry = _openlock_setting_pw_editfield_entry_get(
+                       openlock_setting_data->editfield_layout);
+       evas_object_show(entry);
+
+       ecore_idler_add(_openlock_setting_pw_input_panel_show_idler, entry);
+}
+
+static void _openlock_setting_pw_imf_context_input_panel_hide(void *data)
+{
+       openlock_setting_appdata *openlock_setting_data =
+                       (openlock_setting_appdata *) data;
+       Evas_Object *entry = NULL;
+
+       if (!openlock_setting_data) {
+               return;
+       }
+
+       OPENLOCKS_DBG("_openlock_setting_pw_imf_context_input_panel_hide\n");
+
+       entry = _openlock_setting_pw_editfield_entry_get(
+                       openlock_setting_data->editfield_layout);
+       evas_object_hide(entry);
+
+       elm_object_focus_set(entry, EINA_FALSE);
+}
+
+static void _openlock_setting_pw_destroy_popup_cb(void *data, Evas_Object * obj,
+                                                 void *e)
+{
+       openlock_setting_appdata *openlock_setting_data =
+           (openlock_setting_appdata *) data;
+       Evas_Object *popup = NULL;
+
+       OPENLOCKS_DBG("_openlock_setting_pw_destroy_popup_cb\n");
+       _openlock_setting_pw_imf_context_input_panel_show
+           (openlock_setting_data);
+
+       if (!openlock_setting_data) {
+               return;
+       }
+
+       popup = openlock_setting_data->popup;
+       if (popup) {
+               evas_object_del(popup);
+               popup = NULL;
+       }
+}
+
+static void _openlock_setting_pw_show_popup(void *data, const char *mesg)
+{
+       openlock_setting_appdata *openlock_setting_data =
+           (openlock_setting_appdata *) data;
+       openlock_ug_data *openlock_data = NULL;
+       Evas_Object *popup = NULL;
+
+       if (!openlock_setting_data) {
+               return;
+       }
+       openlock_data = openlock_setting_data->openlock_data;
+       if (!openlock_data) {
+               return;
+       }
+
+       OPENLOCKS_DBG("_openlock_setting_pw_show_popup\n");
+
+       _openlock_setting_pw_imf_context_input_panel_hide
+           (openlock_setting_data);
+       popup = elm_popup_add(openlock_data->win_main);
+       openlock_setting_data->popup = popup;
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+                                        EVAS_HINT_EXPAND);
+       elm_object_text_set(popup, mesg);
+       elm_popup_timeout_set(popup, 3);
+       evas_object_smart_callback_add(popup, "timeout",
+                                      _openlock_setting_pw_destroy_popup_cb,
+                                      openlock_setting_data);
+       evas_object_show(popup);
+}
+
+static void _openlock_setting_pw_set_str(char **s, const char *str)
+{
+       if (s == NULL)
+               return;
+
+       if (*s)
+               free(*s);
+
+       if (str && str[0] != '\0')
+               *s = strdup(str);
+       else
+               *s = NULL;
+}
+
+static void _openlock_setting_pw_done_cb(void *data, Evas_Object * obj, void *e)
+{
+       openlock_setting_appdata *openlock_setting_data =
+           (openlock_setting_appdata *) data;
+       openlock_ug_data *openlock_data = NULL;
+       Evas_Object *entry = NULL;
+       Evas_Object *editfield_layout = NULL;
+       char *str = NULL;
+
+       if (!openlock_setting_data) {
+               return;
+       }
+
+       OPENLOCKS_DBG("_openlock_setting_pw_done_cb\n");
+       editfield_layout = openlock_setting_data->editfield_layout;
+       entry =
+           _openlock_setting_pw_editfield_entry_get
+           (openlock_setting_data->editfield_layout);
+
+       _openlock_setting_pw_set_str(&str, elm_entry_entry_get(entry));
+       OPENLOCKS_DBG("str = %s\n", str);
+       if (!str) {
+               _openlock_setting_pw_show_popup(openlock_setting_data, "Wrong Password!");      /* hard code for demo */
+               if (entry) {
+                       elm_object_part_text_set(editfield_layout,
+                                                "elm.guidetext", "");
+                       elm_entry_entry_set(entry, "");
+               }
+       } else {
+               if (strcmp(str, "16777216") == 0) {     /* hard code for demo */
+                       OPENLOCKS_DBG("right pw\n");
+                       OPENLOCKS_DBG("openlock_setting_data->index: %d",
+                                     openlock_setting_data->index);
+                       if (openlock_setting_data != NULL
+                           && openlock_setting_data->pkg_name != NULL) {
+                               vconf_set_str(VCONF_PRIVATE_LOCKSCREEN_PKGNAME,
+                                             openlock_setting_data->pkg_name);
+                               OPENLOCKS_DBG("vconf pkgname set : %s",
+                                             openlock_setting_data->pkg_name);
+                       }
+                       openlock_data = openlock_setting_data->openlock_data;
+                       if (!openlock_data) {
+                               return;
+                       }
+                       OPENLOCKS_DBG("_openlock_setting_pw_done_cb\n");
+                       openlock_setting_data->count = 0;       /* reset the count */
+
+                       elm_naviframe_item_pop(openlock_data->navi_bar);
+                       if (openlock_setting_data->editfield_layout) {
+                               evas_object_del
+                                   (openlock_setting_data->editfield_layout);
+                               openlock_setting_data->editfield_layout = NULL;
+                       }
+                       if (openlock_setting_data->genlist) {
+                               evas_object_del(openlock_setting_data->genlist);
+                               openlock_setting_data->genlist = NULL;
+                       }
+                       if (openlock_setting_data->ly) {
+                               evas_object_del(openlock_setting_data->ly);
+                               openlock_setting_data->ly = NULL;
+                       }
+               } else {
+                       _openlock_setting_pw_show_popup(openlock_setting_data, "Wrong Password!");      /* hard code for demo */
+                       if (entry) {
+                               elm_object_part_text_set(editfield_layout,
+                                                        "elm.guidetext", "");
+                               elm_entry_entry_set(entry, "");
+                       }
+               }
+       }
+}
+
+void
+openlock_setting_pw_create_view(openlock_setting_appdata *
+                               openlock_setting_data)
+{
+       Evas_Object *navi_bar = NULL;
+       Evas_Object *win_main = NULL;
+       Evas_Object *genlist = NULL;
+       Evas_Object *ly = NULL;
+       Evas_Object *cancel_button = NULL;
+       Evas_Object *back_button = NULL;
+       Elm_Object_Item *genlist_item = NULL;
+       Elm_Object_Item *navi_it = NULL;
+       openlock_ug_data *openlock_data = NULL;
+
+       if (!openlock_setting_data) {
+               return;
+       }
+
+       openlock_data = openlock_setting_data->openlock_data;
+       if (!openlock_data) {
+               return;
+       }
+
+       OPENLOCKS_DBG("openlock_setting_pw_create_view begin\n");
+
+       win_main = openlock_data->win_main;
+       navi_bar = openlock_data->navi_bar;
+
+       ly = _openlock_setting_pw_create_conformant(win_main);
+       openlock_setting_data->ly = ly;
+
+       /* genlist */
+       genlist = elm_genlist_add(navi_bar);
+       _openlock_setting_pw_list_set_styles();
+       genlist_item =
+           elm_genlist_item_append(genlist, &itc_label,
+                                   (void *)openlock_setting_data, NULL,
+                                   ELM_GENLIST_ITEM_NONE, NULL, NULL);
+       elm_genlist_item_select_mode_set(genlist_item, EINA_TRUE);
+
+       genlist_item =
+           elm_genlist_item_append(genlist, &itc_entry,
+                                   (void *)openlock_setting_data, NULL,
+                                   ELM_GENLIST_ITEM_NONE, NULL, NULL);
+       elm_genlist_item_select_mode_set(genlist_item, EINA_TRUE);
+
+       evas_object_show(genlist);
+       elm_object_content_set(ly, genlist);
+       openlock_setting_data->genlist = genlist;
+
+       /* Done button */
+       done_button = elm_button_add(navi_bar);
+       elm_object_style_set(done_button, "naviframe/title/default");
+       elm_object_text_set(done_button, "Done");       /* hard code for demo */
+       elm_object_disabled_set(done_button, EINA_TRUE);
+       evas_object_smart_callback_add(done_button, "clicked",
+                                      _openlock_setting_pw_done_cb,
+                                      openlock_setting_data);
+
+       /* Cancel button */
+       cancel_button = elm_button_add(navi_bar);
+       elm_object_style_set(cancel_button, "naviframe/title/default");
+       elm_object_text_set(cancel_button, "Cancel"); /* hard code for demo */
+       elm_object_disabled_set(cancel_button, EINA_FALSE);
+       evas_object_smart_callback_add(cancel_button, "clicked",
+                       _openlock_setting_pw_back_cb, openlock_setting_data);
+
+       /* Set navigation objects and push */
+       navi_it = elm_naviframe_item_push(navi_bar, "Enter Password", NULL, NULL,
+                       ly, NULL); /* hard code for demo */
+       elm_object_item_part_content_set(navi_it, "title_right_btn", done_button);
+       elm_object_item_part_content_set(navi_it, "title_left_btn", cancel_button);
+
+       /* Remove <- button */
+       back_button = elm_object_item_part_content_get(navi_it, "prev_btn");
+       if (back_button != NULL) {
+               elm_object_item_part_content_set(navi_it, "prev_btn", NULL);
+               if (back_button != NULL) {
+                       evas_object_del(back_button);
+               }
+       }
+}
diff --git a/lock-setting/lockapp-setting/src/openlock-setting-util.c b/lock-setting/lockapp-setting/src/openlock-setting-util.c
new file mode 100755 (executable)
index 0000000..3722b2b
--- /dev/null
@@ -0,0 +1,65 @@
+ /*
+  * 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 "openlock-setting-debug.h"
+#include "openlock-setting-util.h"
+
+Evas_Object *openlock_setting_util_create_navigation(Evas_Object * parent)
+{
+       Evas_Object *navi_bar = NULL;
+
+       if (parent == NULL) {
+               OPENLOCKS_WARN("Parent is null.");
+               return NULL;
+       }
+
+       navi_bar = elm_naviframe_add(parent);
+       if (navi_bar == NULL) {
+               OPENLOCKS_ERR("Cannot add naviagtionbar.");
+               return NULL;
+       }
+
+       elm_object_part_content_set(parent, "elm.swallow.content", navi_bar);
+
+       evas_object_show(navi_bar);
+
+       return navi_bar;
+}
+
+Evas_Object *openlock_setting_util_create_layout(Evas_Object * parent)
+{
+       Evas_Object *layout = NULL;
+
+       if (parent == NULL) {
+               OPENLOCKS_WARN("Parent is null.");
+               return NULL;
+       }
+
+       layout = elm_layout_add(parent);
+       if (layout == NULL) {
+               OPENLOCKS_ERR("Cannot add layout.");
+               return NULL;
+       }
+
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
+                                        EVAS_HINT_EXPAND);
+
+       evas_object_show(layout);
+
+       return layout;
+}
diff --git a/lock-setting/lockapp-setting/src/openlock-setting.c b/lock-setting/lockapp-setting/src/openlock-setting.c
new file mode 100755 (executable)
index 0000000..4b6184a
--- /dev/null
@@ -0,0 +1,217 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef UG_MODULE_API
+#define UG_MODULE_API __attribute__ ((visibility("default")))
+#endif
+
+#include <Elementary.h>
+#include <ui-gadget-module.h>
+
+#include "openlock-setting.h"
+#include "openlock-setting-util.h"
+#include "openlock-setting-main.h"
+
+static Evas_Object *create_bg(Evas_Object * parent)
+{
+       Evas_Object *bg = elm_bg_add(parent);
+
+       evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
+                                        EVAS_HINT_EXPAND);
+       elm_object_style_set(bg, "group_list");
+
+       elm_object_part_content_set(parent, "elm.swallow.bg", bg);
+       evas_object_show(bg);
+
+       return bg;
+}
+
+static Evas_Object *create_fullview(Evas_Object * parent,
+                                   openlock_ug_data * openlock_data)
+{
+       Evas_Object *base = NULL;
+       Evas_Object *navi_bar = NULL;
+       Evas_Object *bg = NULL;
+
+       base = openlock_setting_util_create_layout(parent);
+
+       elm_layout_theme_set(base, "layout", "application", "default");
+       elm_win_resize_object_add(parent, base);
+       elm_win_indicator_mode_set(parent, ELM_WIN_INDICATOR_SHOW);
+
+       bg = create_bg(base);
+
+       navi_bar = openlock_setting_util_create_navigation(base);
+       openlock_data->navi_bar = navi_bar;
+
+       openlock_setting_main_create_view(openlock_data);
+
+       return base;
+}
+
+static Evas_Object *create_frameview(Evas_Object * parent,
+                                    openlock_ug_data * openlock_data)
+{
+       Evas_Object *base = NULL;
+
+       /* Create Frame view */
+
+       return base;
+}
+
+static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h service,
+                      void *priv)
+{
+       Evas_Object *parent = NULL;
+       Evas_Object *win_main = NULL;
+       openlock_ug_data *openlock_data = NULL;
+
+       if (!ug || !priv)
+               return NULL;
+
+       bindtextdomain("openlock-setting", "/opt/ug/res/locale");
+
+       openlock_data = priv;
+       openlock_data->ug = ug;
+
+       parent = ug_get_parent_layout(ug);
+       if (!parent)
+               return NULL;
+
+       win_main = ug_get_window();
+       if (!win_main) {
+               return NULL;
+       }
+
+       openlock_data->win_main = win_main;
+
+       if (mode == UG_MODE_FULLVIEW)
+               openlock_data->base = create_fullview(parent, openlock_data);
+       else
+               openlock_data->base = create_frameview(parent, openlock_data);
+
+       /* Add del callback for base layout */
+
+       return openlock_data->base;
+}
+
+static void on_start(ui_gadget_h ug, service_h service, void *priv)
+{
+}
+
+static void on_pause(ui_gadget_h ug, service_h service, void *priv)
+{
+
+}
+
+static void on_resume(ui_gadget_h ug, service_h service, void *priv)
+{
+
+}
+
+static void on_destroy(ui_gadget_h ug, service_h service, void *priv)
+{
+       openlock_ug_data *openlock_data;
+
+       if (!ug || !priv)
+               return;
+
+       openlock_data = priv;
+       evas_object_del(openlock_data->base);
+       openlock_data->base = NULL;
+}
+
+static void on_message(ui_gadget_h ug, service_h msg, service_h service,
+                      void *priv)
+{
+}
+
+static void on_event(ui_gadget_h ug, enum ug_event event, service_h service,
+                    void *priv)
+{
+       switch (event) {
+       case UG_EVENT_LOW_MEMORY:
+               break;
+       case UG_EVENT_LOW_BATTERY:
+               break;
+       case UG_EVENT_LANG_CHANGE:
+               break;
+       case UG_EVENT_ROTATE_PORTRAIT:
+               break;
+       case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+               break;
+       case UG_EVENT_ROTATE_LANDSCAPE:
+               break;
+       case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+               break;
+       default:
+               break;
+       }
+}
+
+static void on_key_event(ui_gadget_h ug, enum ug_key_event event,
+                        service_h service, void *priv)
+{
+       if (!ug)
+               return;
+
+       switch (event) {
+       case UG_KEY_EVENT_END:
+               ug_destroy_me(ug);
+               break;
+       default:
+               break;
+       }
+}
+
+UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+       openlock_ug_data *openlock_data;
+
+       if (!ops)
+               return -1;
+
+       openlock_data = calloc(1, sizeof(openlock_ug_data));
+       if (!openlock_data)
+               return -1;
+
+       ops->create = on_create;
+       ops->start = on_start;
+       ops->pause = on_pause;
+       ops->resume = on_resume;
+       ops->destroy = on_destroy;
+       ops->message = on_message;
+       ops->event = on_event;
+       ops->key_event = on_key_event;
+       ops->priv = openlock_data;
+       ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+       return 0;
+}
+
+UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+       openlock_ug_data *openlock_data;
+
+       if (!ops)
+               return;
+
+       openlock_data = ops->priv;
+       if (openlock_data)
+               free(openlock_data);
+}
diff --git a/lock-setting/lockscreen-options/CMakeLists.txt b/lock-setting/lockscreen-options/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..e4789c1
--- /dev/null
@@ -0,0 +1,54 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(ug-lockscreen-options C)
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX}/ug)
+SET(LIBDIR "${PREFIX}/lib")
+SET(RESDIR "${PREFIX}/res")
+SET(DATADIR "${PREFIX}/data")
+SET(LOCALEDIR "${RESDIR}/locale")
+SET(IMAGEDIR "${RESDIR}/images")
+SET(EDJEDIR "${RESDIR}/edje")
+SET(ETCDIR "${RESDIR}/etc")
+SET(VERSION 0.1.0)
+
+SET(SRCS
+       ./src/lockscreen-options.c
+       ./src/lockscreen-options-util.c
+       ./src/lockscreen-options-main.c
+       ./src/lockscreen-options-shortcuts.c
+       ./src/lockscreen-options-shortcuts-edit.c
+       ./src/lockscreen-options-dualclock.c
+       ./src/lockscreen-options-locktitle.c
+)
+
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs_lock-screen-options REQUIRED elementary ui-gadget-1 edje evas ail capi-appfw-application)
+
+FOREACH(flag ${pkgs_lock-screen-options_CFLAGS})
+       SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(EXTRA_CXXFLAGS "${EXTRA_CXXFLAGS} -fvisibility=hidden -Wall")
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CXXFLAGS}")
+SET(CMAKE_C_FLAGS ${CMAKE_CXX_FLAGS})
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+
+ADD_CUSTOM_TARGET(lockscreen-options.edj COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/res/images
+                        ${CMAKE_CURRENT_SOURCE_DIR}/res/edje/lockscreen-options.edc
+                        ${CMAKE_CURRENT_BINARY_DIR}/lockscreen-options.edj
+                DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/res/edje/lockscreen-options.edc
+)
+
+ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
+SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION 0.1.0)
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_lock-screen-options_LDFLAGS})
+
+ADD_DEPENDENCIES(${PROJECT_NAME} lockscreen-options.edj)
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIBDIR})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/lockscreen-options.edj DESTINATION ${EDJEDIR}/ug-lockscreen-options-efl)
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/res/images/ DESTINATION ${IMAGEDIR}/ug-lockscreen-options-efl)
diff --git a/lock-setting/lockscreen-options/include/lockscreen-options-debug.h b/lock-setting/lockscreen-options/include/lockscreen-options-debug.h
new file mode 100755 (executable)
index 0000000..a25f85e
--- /dev/null
@@ -0,0 +1,48 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __LOCKSCREEN_OPTIONS_DEBUG_H__
+#define __LOCKSCREEN_OPTIONS_DEBUG_H__
+
+#include <stdio.h>
+
+#define OPENLOCK_USING_PLATFORM_DEBUG
+
+#ifdef OPENLOCK_USING_PLATFORM_DEBUG
+#ifndef LOG_TAG
+#define LOG_TAG "lockscreen-options"
+#endif
+#include <dlog.h>
+
+#define LOCKOPTIONS_DBG(fmt, args...) LOGD("["LOG_TAG"%s:%d:E] "fmt, __FILE__, __LINE__, ##args)
+#define LOCKOPTIONS_WARN(fmt, args...) LOGW("["LOG_TAG"%s:%d:E] "fmt, __FILE__, __LINE__, ##args)
+#define LOCKOPTIONS_ERR(fmt, args...) LOGE("["LOG_TAG"%s:%d:E] "fmt, __FILE__, __LINE__, ##args)
+#else
+#define LOCKOPTIONS_DBG(fmt, args...) do{printf("[LOCKOPTIONS_DBG][%s(%d)] "fmt " \n", __FILE__, __LINE__, ##args);}while(0);
+#define LOCKOPTIONS_WARN(fmt, args...) do{printf("[LOCKOPTIONS_WARN][%s(%d)] "fmt " \n", __FILE__, __LINE__, ##args);}while(0);
+#define LOCKOPTIONS_ERR(fmt, args...) do{printf("[LOCKOPTIONS_ERR][%s(%d)] "fmt " \n", __FILE__, __LINE__, ##args);}while(0);
+#endif                         /* LOCKD_USING_PLATFORM_DEBUG */
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#endif                         /* __OPENLOCK_SETTING_DEBUG_H__ */
diff --git a/lock-setting/lockscreen-options/include/lockscreen-options-dualclock.h b/lock-setting/lockscreen-options/include/lockscreen-options-dualclock.h
new file mode 100755 (executable)
index 0000000..84447f7
--- /dev/null
@@ -0,0 +1,28 @@
+ /*
+  * 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.
+  */
+
+\r
+\r
+#ifndef __LOCKSCREEN_OPTIONS_DUALCLOCK_H__\r
+#define __LOCKSCREEN_OPTIONS_DUALCLOCK_H__\r
+\r
+#include <Elementary.h>\r
+#include "lockscreen-options.h"\r
+\r
+void lockscreen_options_dualclock_create_view(lockscreen_options_ug_data * ug_data);\r
+\r
+#endif                         /* __OPENLOCK_SETTING_MAIN_H__ */\r
+\r
diff --git a/lock-setting/lockscreen-options/include/lockscreen-options-locktitle.h b/lock-setting/lockscreen-options/include/lockscreen-options-locktitle.h
new file mode 100755 (executable)
index 0000000..28f1910
--- /dev/null
@@ -0,0 +1,26 @@
+ /*
+  * 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.
+  */
+
+\r
+\r
+#ifndef __LOCKSCREEN_OPTIONS_LOCKTITLE_H__\r
+#define __LOCKSCREEN_OPTIONS_LOCKTITLE_H__\r
+\r
+#include "lockscreen-options.h"\r
+\r
+void lockscreen_options_locktitle_create_view(lockscreen_options_ug_data * ug_data);\r
+\r
+#endif                         /* __LOCKSCREEN_OPTIONS_LOCKTITLE_H__ */\r
diff --git a/lock-setting/lockscreen-options/include/lockscreen-options-main.h b/lock-setting/lockscreen-options/include/lockscreen-options-main.h
new file mode 100755 (executable)
index 0000000..a1c0c49
--- /dev/null
@@ -0,0 +1,28 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __LOCKSCREEN_OPTIONS_MAIN_H__
+#define __LOCKSCREEN_OPTIONS_MAIN_H__
+
+#include <Elementary.h>
+#include "lockscreen-options.h"
+
+void lockscreen_options_main_create_view(lockscreen_options_ug_data * ug_data);
+void lockscreen_options_main_update_view();
+
+#endif                         /* __OPENLOCK_SETTING_MAIN_H__ */
diff --git a/lock-setting/lockscreen-options/include/lockscreen-options-shortcuts-edit.h b/lock-setting/lockscreen-options/include/lockscreen-options-shortcuts-edit.h
new file mode 100755 (executable)
index 0000000..497b8cc
--- /dev/null
@@ -0,0 +1,25 @@
+ /*
+  * 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.
+  */
+\r
+\r
+\r
+#ifndef __LOCKSCREEN_OPTIONS_SHORTCUTS_EDIT_H__\r
+#define __LOCKSCREEN_OPTIONS_SHORTCUTS_EDIT_H__\r
+\r
+void lockscreen_options_shortcuts_create_edit_view(void *data);\r
+\r
+#endif                         /* __LOCKSCREEN_OPTIONS_SHORTCUTS_EDIT_H__ */\r
+\r
diff --git a/lock-setting/lockscreen-options/include/lockscreen-options-shortcuts.h b/lock-setting/lockscreen-options/include/lockscreen-options-shortcuts.h
new file mode 100755 (executable)
index 0000000..f7e6d22
--- /dev/null
@@ -0,0 +1,26 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __LOCKSCREEN_OPTIONS_SHORTCUTS_H__
+#define __LOCKSCREEN_OPTIONS_SHORTCUTS_H__
+
+void lockscreen_options_shortcuts_create_view(void *data);
+void lockscreen_options_shortcuts_update_view();
+Eina_Bool lockscreen_options_shortcuts_check_items();
+
+#endif                         /* __LOCKSCREEN_OPTIONS_SHORTCUTS_H__ */
diff --git a/lock-setting/lockscreen-options/include/lockscreen-options-util.h b/lock-setting/lockscreen-options/include/lockscreen-options-util.h
new file mode 100755 (executable)
index 0000000..0fb97bb
--- /dev/null
@@ -0,0 +1,72 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __LOCKSCREEN_OPTIONS_UTIL_H__
+#define __LOCKSCREEN_OPTIONS_UTIL_H__
+
+#include <Elementary.h>
+
+#define USE_TITLE_AND_CAMERA 0
+
+enum {
+       IDS_COM_SK_OK = 0,
+       IDS_COM_SK_CANCEL,
+       IDS_LOCKSCREEN_OPTIONS_SYSTEM_STRING_MAX,
+};
+
+enum {
+       IDS_LOCKSCREEN_OPTIONS_SHORTCUTS =
+           IDS_LOCKSCREEN_OPTIONS_SYSTEM_STRING_MAX,
+       IDS_LOCKSCREEN_OPTIONS_SHORTCUTS_HELP,
+#if USE_TITLE_AND_CAMERA
+       IDS_LOCKSCREEN_OPTIONS_LOCK_SCREEN_TITLE,
+       IDS_LOCKSCREEN_OPTIONS_LOCK_SCREEN_TITLE_HELP,
+#endif
+       IDS_LOCKSCREEN_OPTIONS_EVENT_NOTIFICATIONS,
+       IDS_LOCKSCREEN_OPTIONS_EVENT_NOTIFICATIONS_HELP,
+       IDS_LOCKSCREEN_OPTIONS_CONTEXTAWARE_NOTI,
+       IDS_LOCKSCREEN_OPTIONS_CONTEXTAWARE_NOTI_HELP,
+#if USE_TITLE_AND_CAMERA
+       IDS_LOCKSCREEN_OPTIONS_CAMERA_QUICK_ACCESS,
+       IDS_LOCKSCREEN_OPTIONS_CAMERA_QUICK_ACCESS_HELP,
+#endif
+       IDS_LOCKSCREEN_OPTIONS_CLOCK,
+//     IDS_LOCKSCREEN_OPTIONS_DUAL_CLOCK,
+//     IDS_LOCKSCREEN_OPTIONS_DUAL_CLOCK_HELP,
+       IDS_LOCKSCREEN_OPTIONS_WEATHER,
+       IDS_LOCKSCREEN_OPTIONS_HELPTEXT,
+       IDS_LOCKSCREEN_OPTIONS_HELPTEXT_HELP,
+       IDS_LOCKSCREEN_OPTIONS_SET_SHORTCUTS,
+       IDS_LOCKSCREEN_OPTIONS_EDIT_SHORTCUTS,
+       IDS_LOCKSCREEN_OPTIONS_SET_SHORTCUTS_ON_LOCKSCREEN,
+       IDS_LOCKSCREEN_OPTIONS_TAP_SHORTCUTS,
+       IDS_LOCKSCREEN_OPTIONS_DRAG_DROP_SHORTCUTS,
+       IDS_LOCKSCREEN_OPTIONS_SELECT_APPLICATIONS,
+       IDS_LOCKSCREEN_OPTIONS_LOCK_SCREEN_TITLE_GUIDE_TEXT,
+       IDS_LOCKSCREEN_OPTIONS_APP_STRING_MAX,  /* 45 */
+};
+
+Evas_Object *lockscreen_options_util_create_navigation(Evas_Object * parent);
+Evas_Object *lockscreen_options_util_create_layout(Evas_Object * parent,
+                                                  const char *file,
+                                                  const char *group);
+void lockscreen_options_util_create_seperator(Evas_Object * genlist);
+void lockscreen_options_util_create_underline(Evas_Object * genlist);
+char *lockscreen_optoins_get_string(int id);
+
+#endif                         /* __OPENLOCK_SETTING_UTIL_H__ */
diff --git a/lock-setting/lockscreen-options/include/lockscreen-options.h b/lock-setting/lockscreen-options/include/lockscreen-options.h
new file mode 100755 (executable)
index 0000000..2820560
--- /dev/null
@@ -0,0 +1,64 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef __LOCKSCREEN_OPTIONS_H__
+#define __LOCKSCREEN_OPTIONS_H__
+
+#include <Elementary.h>
+#include <libintl.h>
+#include <ui-gadget.h>
+
+#define PKGNAME "ug-lockscreen-options"
+
+#define _EDJ(o)                        elm_layout_edje_get(o)
+#define _S(str)                        dgettext("sys_string", str)
+#define _(s)                   dgettext(PKGNAME, s)
+#define dgettext_noop(s)       (s)
+#define N_(s)                  dgettext_noop(s)
+
+enum{
+       ENUM_LOCKSCREEN_GENLIST_STYLE_SEPERATOR = 0,
+       ENUM_LOCKSCREEN_GENLIST_STYLE_1TEXT1ICON,
+       ENUM_LOCKSCREEN_GENLIST_STYLE_2TEXT1ICON,
+       ENUM_LOCKSCREEN_GENLIST_STYLE_HELP,
+       ENUM_LOCKSCREEN_GENLIST_STYLE_UNDERLINE
+};
+
+#define LOCKSCREEN_GENLIST_STYLE_SEPERATOR "dialogue/separator/21/with_line"
+#define LOCKSCREEN_GENLIST_STYLE_1TEXT1ICON "dialogue/1text.1icon"
+#define LOCKSCREEN_GENLIST_STYLE_2TEXT1ICON "dialogue/2text.1icon.6"
+#define LOCKSCREEN_GENLIST_STYLE_HELP "multiline/1text"
+#define LOCKSCREEN_GENLIST_STYLE_UNDERLINE "dialogue/separator/1/with_line"
+
+
+typedef struct _lockscreen_options_ug_data {
+       int index;
+
+       Evas_Object *win_main;
+       Evas_Object *base;
+       ui_gadget_h ug;
+
+       Evas_Object *navi_bar;
+
+       Elm_Gen_Item_Class itc_separator;
+       Elm_Gen_Item_Class itc_menu_1text1icon;
+       Elm_Gen_Item_Class itc_help_1text;
+
+} lockscreen_options_ug_data;
+
+#endif                         /* __lockscreen_options_H__ */
diff --git a/lock-setting/lockscreen-options/res/edje/lockscreen-options-locktitle.edc b/lock-setting/lockscreen-options/res/edje/lockscreen-options-locktitle.edc
new file mode 100755 (executable)
index 0000000..eced5a4
--- /dev/null
@@ -0,0 +1,432 @@
+ /*
+  * 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.
+  */
+
+
+
+#define WIDTH 720
+#define HEIGHT 1280
+#define TOOLBAR_WIDTH 720
+#define TOOLBAR_HEIGHT 84
+
+#define BUTTON_BG_NORMAL_OR_PRESS(part_name, rel1_x, rel1_y, rel2_x, rel2_y, normal_icon_name, press_icon_name)\
+               part{\
+                       name: part_name;\
+                       type: IMAGE;\
+                       mouse_events: 1;\
+                       scale: 1;\
+                       description{\
+                               state: "default" 0.0;\
+                               visible: 1;\
+                               rel1 {relative: rel1_x rel1_y; to: "bg";}\
+                               rel2 {relative: rel2_x rel2_y; to: "bg";}\
+                               image.normal: normal_icon_name;\
+                               image.border: 8 8 0 0;\
+                       }\
+                       description{\
+                               state: "press" 0.0;\
+                               inherit: "default" 0.0;\
+                               image.normal: press_icon_name;\
+                               image.border: 8 8 0 0;\
+                       }\
+               }
+
+#define BUTTON_NORMAL_OR_PRESS(part_name, normal_icon_name, press_icon_name, part_bg_name)\
+               part{\
+                       name: part_name;\
+                       type: IMAGE;\
+                       scale: 1;\
+                       mouse_events: 1;\
+                       repeat_events: 1;\
+                       description{\
+                               state: "default" 0.0;\
+                               visible: 1;\
+                               rel1 {relative: 0.0 0.0; to: part_bg_name;}\
+                               rel2 {relative: 1.0 1.0; to: part_bg_name;}\
+                               image.normal: normal_icon_name;\
+                       }\
+                       description{\
+                                       state: "press" 0.0;\
+                                       inherit: "default" 0.0;\
+                                       image.normal: press_icon_name;\
+                               }\
+                       }
+#define TOOLBAR_BUTTON_PROGRAM_SIGNAL_EMIT_1(part_name, singal_name)\
+                program{\
+                        name: "mouse_down_"part_name;\
+                        signal: "mouse,down,1";\
+                        source: part_name;\
+                        action: STATE_SET "press" 0.0;\
+                        target: part_name;\
+                }\
+                program{\
+                        name: "send_event_"part_name;\
+                        signal: "mouse,clicked,1";\
+                        source: part_name;\
+                        action: SIGNAL_EMIT singal_name "";\
+                }\
+                program{\
+                        name: "mouse_up_"part_name;\
+                        signal: "mouse,up,1";\
+                        source: part_name;\
+                        action: STATE_SET "default" 0.0;\
+                        target: part_name;\
+                }
+#define TOOLBAR_BUTTON_PROGRAM_SIGNAL_EMIT_2(part_name, singal_name)\
+                program{\
+                        name: "send_event_"part_name;\
+                        signal: "mouse,clicked,1";\
+                        source: part_name;\
+                        action: SIGNAL_EMIT singal_name "";\
+                }
+#define COLOR_RECT(part_name, relative_part_name, color_class_name)\
+       part{\
+               name: part_name;\
+               type: RECT;\
+               scale: 1;\
+               description{\
+                       state: "default" 0.0;\
+                       rel1 { relative: 9/56 40/60; to: relative_part_name;}\
+                       rel2 { relative: 49/56 50/60; to: relative_part_name;}\
+                       color_class: color_class_name;\
+               }\
+       }
+
+group{
+       images{
+               image: "B09_Add Text_sip_option_bg.png" COMP;
+       }
+       name: "lockscreen.options.locktitle.main";
+       parts{
+               part{
+                       name: "background";
+                       type: RECT;
+                       scale: 1;
+                       description{
+                               state: "default" 0.0;
+                               visible: 0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                       }
+               }
+               part{
+                       name: "elm.swallow.content"; /* editfield */
+                       type: SWALLOW;
+                       scale: 1;
+                       description{
+                               state: "default" 0.0;
+                               min: 0 108;
+                               align: 0.0 0.0;
+                               rel1 { relative: 0.0 0.15; to: "background";}
+                               rel2 { relative: 1.0 0.15; to: "background";}
+                       }
+               }
+               part{
+                       name: "toolbar.bg";
+                       type: IMAGE;
+                       scale: 1;
+                       description{
+                               state: "default" 0.0;
+                               min: 0 100;
+                               align: 0.0 1.0;
+                               visible: 0;
+                               rel1 { relative: 0.0 1.0; to: "background";}
+                               rel2 { relative: 1.0 1.0; to: "background";}
+                               image.normal: "B09_Add Text_sip_option_bg.png";
+                               image.border: 8 8 8 8;
+                       }
+               }
+               part{
+                       name: "elm.swallow.toolbar";/* toolbar layout */
+                       type: SWALLOW;
+                       scale: 1;
+                       description{
+                               state: "default" 0.0;
+                               visible: 0;
+                               rel1 { relative: 0.0 0.0; to: "toolbar.bg";}
+                               rel2 { relative: 1.0 1.0; to: "toolbar.bg";}
+                       }
+               }
+               part{
+                       name: "elm.swallow.selector";/* font and color selector layout */
+                       type: SWALLOW;
+                       scale: 1;
+                       description{
+                               state: "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: 0.0 1.0; to: "toolbar.bg";}
+                               rel2 { relative: 1.0 1.0; to: "background";}
+                       }
+               }
+       }
+       script {
+               public message(Msg_Type:type, id, ...) {
+                       custom_state(PART:"toolbar.bg", "default", 0.0);
+                       custom_state(PART:"elm.swallow.toolbar", "default", 0.0);
+                       if ((type == MSG_FLOAT) && (id == 1)) {
+                               new Float:rel2_y = Float:getarg(2);
+                               set_state_val(PART:"toolbar.bg", STATE_REL1, 0.0, rel2_y);
+                               set_state_val(PART:"toolbar.bg", STATE_REL2, 1.0, rel2_y);
+                       }
+                       if ((type == MSG_FLOAT) && (id == 2)) {
+                               set_state_val(PART:"toolbar.bg", STATE_VISIBLE, 1);
+                               set_state_val(PART:"elm.swallow.toolbar", STATE_VISIBLE, 1);
+                       }
+                       if ((type == MSG_FLOAT) && (id == 3)) {
+                               set_state_val(PART:"toolbar.bg", STATE_VISIBLE, 0);
+                               set_state_val(PART:"elm.swallow.toolbar", STATE_VISIBLE, 0);
+                       }
+                       set_state(PART:"toolbar.bg", "custom", 0.0);
+                       set_state(PART:"elm.swallow.toolbar", "custom", 0.0);
+               }
+       }
+}
+
+group{
+       images{
+               image: "B09_key_btn_01.png" COMP;
+               image: "B09_key_btn_press.png" COMP;
+               image: "B09_Add Text_sip_option_bold.png" COMP;
+               image: "B09_Add Text_sip_option_Italic.png" COMP;
+               image: "B09_Add Text_sip_option_underline.png" COMP;
+               image: "B09_Add Text_sip_option_color.png" COMP;
+               image: "B09_Add Text_sip_option_style.png" COMP;
+               image: "B09_Add Text_sip_option_size.png" COMP;
+       }
+       name: "lockscreen.options.locktitle.toolbar";
+       parts{
+               part{
+                       name: "bg";
+                       type: RECT;
+                       scale: 1;
+                       description{
+                               state: "default" 0.0;
+                               visible: 0;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                       }
+               }
+               part{
+                       name: "font.bg";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       scale: 1;
+                       description{
+                               state: "default" 0.0;
+                               visible: 1;
+                               rel1 {relative: 8/TOOLBAR_WIDTH 12/TOOLBAR_HEIGHT; to: "bg";}
+                               rel2 {relative: 144/TOOLBAR_WIDTH 76/TOOLBAR_HEIGHT; to: "bg";}
+                               image.normal: "B09_key_btn_01.png";
+                               image.border: 5 5 0 0;
+                       }
+                       description{
+                               state: "press" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: "B09_key_btn_press.png";
+                               image.border: 5 5 0 0;
+                       }
+               }
+               part{
+                       name: "font";
+                       type: IMAGE;
+                       scale: 1;
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       description{
+                               state: "default" 0.0;
+                               visible: 1;
+                               rel1 {relative: 0.0 0.0; to: font.bg;}
+                               rel2 {relative: 1.0 1.0; to: font.bg;}
+                               image.normal: "B09_Add Text_sip_option_style.png";
+                       }
+                       description{
+                               state: "press" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: "B09_Add Text_sip_option_style.png";
+                       }
+               }
+               part{
+                       name: "size.bg";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       scale: 1;
+                       description{
+                               state: "default" 0.0;
+                               visible: 1;
+                               rel1 {relative: 160/TOOLBAR_WIDTH 12/TOOLBAR_HEIGHT; to: "bg";}
+                               rel2 {relative: 240/TOOLBAR_WIDTH 76/TOOLBAR_HEIGHT; to: "bg";}
+                               image.normal: B09_key_btn_01.png;
+                               image.border: 5 5 0 0;
+                       }
+                       description{
+                               state: "press" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: "B09_key_btn_press.png";
+                               image.border: 5 5 0 0;
+                       }
+               }
+               part{
+                       name: "size";
+                       type: IMAGE;
+                       scale: 1;
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       description{
+                               state: "default" 0.0;
+                               visible: 1;
+                               rel1 {relative: 0.0 0.0; to: size.bg;}
+                               rel2 {relative: 1.0 1.0; to: size.bg;}
+                               image.normal: "B09_Add Text_sip_option_size.png";
+                       }
+                       description{
+                               state: "press" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: "B09_Add Text_sip_option_size.png";
+                       }
+               }
+               part{
+                       name: "draw.bg";
+                       type: IMAGE;
+                       mouse_events: 1;
+                       scale: 1;
+                       description{
+                               state: "default" 0.0;
+                               visible: 1;
+                               rel1 {relative: 256/TOOLBAR_WIDTH 12/TOOLBAR_HEIGHT; to: "bg";}
+                               rel2 {relative: 336/TOOLBAR_WIDTH 76/TOOLBAR_HEIGHT; to: "bg";}
+                               image.normal: B09_key_btn_01.png;
+                               image.border: 5 5 0 0;
+                       }
+                       description{
+                               state: "press" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: "B09_key_btn_press.png";
+                               image.border: 5 5 0 0;
+                       }
+               }
+               part{
+                       name: "draw";
+                       type: IMAGE;
+                       scale: 1;
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       description{
+                               state: "default" 0.0;
+                               visible: 1;
+                               rel1 {relative: 0.0 0.0; to: draw.bg;}
+                               rel2 {relative: 1.0 1.0; to: draw.bg;}
+                               image.normal: "B09_Add Text_sip_option_color.png";
+                       }
+                       description{
+                               state: "press" 0.0;
+                               inherit: "default" 0.0;
+                               image.normal: "B09_Add Text_sip_option_color.png";
+                       }
+               }
+               COLOR_RECT("draw_indictor", "draw", "draw_indictor");
+
+               BUTTON_BG_NORMAL_OR_PRESS("text.bold.bg", 440/TOOLBAR_WIDTH, 12/TOOLBAR_HEIGHT,
+                                            520/TOOLBAR_WIDTH, 76/TOOLBAR_HEIGHT, "B09_key_btn_01.png",
+                                            "B09_key_btn_press.png");
+               BUTTON_NORMAL_OR_PRESS("text.bold","B09_Add Text_sip_option_bold.png", "B09_Add Text_sip_option_bold.png", "text.bold.bg");
+               BUTTON_BG_NORMAL_OR_PRESS("text.italic.bg", 536/TOOLBAR_WIDTH, 12/TOOLBAR_HEIGHT,
+                                            616/TOOLBAR_WIDTH, 76/TOOLBAR_HEIGHT, "B09_key_btn_01.png",
+                                            "B09_key_btn_press.png");
+               BUTTON_NORMAL_OR_PRESS("text.italic","B09_Add Text_sip_option_Italic.png", "B09_Add Text_sip_option_Italic.png", "text.italic.bg");
+               BUTTON_BG_NORMAL_OR_PRESS("text.underline.bg", 632/TOOLBAR_WIDTH, 12/TOOLBAR_HEIGHT,
+                                            712/TOOLBAR_WIDTH, 76/TOOLBAR_HEIGHT, "B09_key_btn_01.png",
+                                            "B09_key_btn_press.png");
+               BUTTON_NORMAL_OR_PRESS("text.underline","B09_Add Text_sip_option_underline.png", "B09_Add Text_sip_option_underline.png", "text.underline.bg");
+       }
+       script {
+        public message(Msg_Type:type, id, ...) {
+                       if ((type == MSG_INT) && (id == 1)) {
+                               new text_mode = getarg(2);
+                               new btnState[128];
+                               new Float:x;
+
+                               if (text_mode == 1) {
+                                       //Bold
+                                       get_state(PART:"text.bold.bg", btnState, 128, x);
+                                       if (strcmp(btnState, "press") == 0) {
+                                               set_state(PART:"text.bold.bg", "default", 0.0);
+                                       } else {
+                                               set_state(PART:"text.bold.bg", "press", 0.0);
+                                       }
+                               } else if (text_mode == 2) {
+                                       //italic
+                                       get_state(PART:"text.italic.bg", btnState, 128, x);
+                                       if (strcmp(btnState, "press") == 0) {
+                                               set_state(PART:"text.italic.bg", "default", 0.0);
+                                       } else {
+                                               set_state(PART:"text.italic.bg", "press", 0.0);
+                                       }
+                               } else if (text_mode == 3) {
+                                       //font_underline
+                                       get_state(PART:"text.underline.bg", btnState, 128, x);
+                                       if (strcmp(btnState, "press") == 0) {
+                                               set_state(PART:"text.underline.bg", "default", 0.0);
+                                       } else {
+                                               set_state(PART:"text.underline.bg", "press", 0.0);
+                                       }
+                               }
+                       }
+               }
+       }
+       programs{
+               TOOLBAR_BUTTON_PROGRAM_SIGNAL_EMIT_1("font.bg", "dropdown.fonttype.clicked");
+               TOOLBAR_BUTTON_PROGRAM_SIGNAL_EMIT_1("size.bg", "size.button.clicked");
+               TOOLBAR_BUTTON_PROGRAM_SIGNAL_EMIT_1("draw.bg", "draw.button.clicked");
+               TOOLBAR_BUTTON_PROGRAM_SIGNAL_EMIT_2("text.bold.bg", "text.bold.clicked");
+               TOOLBAR_BUTTON_PROGRAM_SIGNAL_EMIT_2("text.italic.bg", "text.italic.clicked");
+               TOOLBAR_BUTTON_PROGRAM_SIGNAL_EMIT_2("text.underline.bg", "text.underline.clicked");
+       }
+}
+
+group {
+       name: "lockscreen.options.locktitle.colorselector";
+       parts{
+               part {
+                       name: "bg";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               part {
+                       name: "rect";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 109;
+                               rel1 { relative: 0.0 0.0; to: "bg"; offset: 83 83;}
+                               rel2 { relative: 1.0 0.0; to: "bg"; offset: -83 83;}
+                       }
+               }
+               part {
+                       name: "color";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 { relative: 0.0 1.0; to_x: "bg"; to_y:"rect"; offset: 0 20;}
+                               rel2 { relative: 1.0 1.0; to: "bg"; offset: 0 -20;}
+                       }
+               }
+       }
+}
diff --git a/lock-setting/lockscreen-options/res/edje/lockscreen-options-shortcuts.edc b/lock-setting/lockscreen-options/res/edje/lockscreen-options-shortcuts.edc
new file mode 100755 (executable)
index 0000000..1f3d3ae
--- /dev/null
@@ -0,0 +1,116 @@
+ /*
+  * 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.
+  */
+
+
+
+ group{
+        name: "lockscreen.options.shortcuts.main";
+        parts{
+                part{
+                        name: "background";
+                        type: RECT;
+                        scale: 1;
+                        description{
+                                state: "default" 0.0;
+                                visible: 0;
+                                rel1 { relative: 0.0 0.0; }
+                                rel2 { relative: 1.0 1.0; }
+                        }
+                }
+                part{
+                        name: "shortcuts.help.title";
+                        type: SWALLOW;
+                        scale: 1;
+                        description{
+                                state: "default" 0.0;
+                                align: 0.5 0.0;
+                                min: 0 40;
+                                rel1 { relative: 0.0 0.08; to: "background"; }
+                                rel2 { relative: 1.0 0.08; to: "background"; }
+                        }
+                }
+               part{
+                        name: "blank.rect1";
+                        type: RECT;
+                        scale: 1;
+                        description{
+                                state: "default" 0.0;
+                                visible: 0;
+                                min: 0 40;
+                                rel1 { relative: 0.0 1.0; to: "shortcuts.help.title"; }
+                                rel2 { relative: 1.0 1.0; to: "shortcuts.help.title"; }
+                        }
+                }
+                part{
+                        name: "shortcuts.help.contents";
+                        type: SWALLOW;
+                        scale: 1;
+                        description{
+                                state: "default" 0.0;
+                                align: 0.5 0.0;
+                                min: 0 80;
+                                rel1 { relative: 0.0 1.0; to: "blank.rect1"; }
+                                rel2 { relative: 1.0 1.0; to: "blank.rect1"; }
+                        }
+                }
+               part{
+                        name: "blank.rect2";
+                        type: RECT;
+                        scale: 1;
+                        description{
+                                state: "default" 0.0;
+                                visible: 0;
+                                min: 0 100;
+                                rel1 { relative: 0.0 1.0; to: "shortcuts.help.contents"; }
+                                rel2 { relative: 1.0 1.0; to: "shortcuts.help.contents"; }
+                        }
+                }
+               part{
+                        name: "shortcuts.edit.help.title";
+                        type: SWALLOW;
+                        scale: 1;
+                        description{
+                                state: "default" 0.0;
+                                align: 0.5 0.0;
+                                min: 0 40;
+                                rel1 { relative: 0.0 0.14; to: "background"; }
+                                rel2 { relative: 1.0 0.14; to: "background"; }
+                        }
+                }
+               part{
+                        name: "blank.rect3";
+                        type: RECT;
+                        scale: 1;
+                        description{
+                                state: "default" 0.0;
+                                visible: 0;
+                                min: 0 40;
+                                rel1 { relative: 0.0 1.0; to: "shortcuts.edit.help.title"; }
+                                rel2 { relative: 1.0 1.0; to: "shortcuts.edit.help.title"; }
+                        }
+                }
+                part{
+                        name: "shortcuts.gengrid";
+                        type: SWALLOW;
+                        scale: 1;
+                        description{
+                                state: "default" 0.0;
+                                rel1 { relative: 0.0 1.0; to: "blank.rect2"; }
+                                rel2 { relative: 1.0 1.0; to: "background"; }
+                        }
+                }
+        }
+ }
diff --git a/lock-setting/lockscreen-options/res/edje/lockscreen-options-thumbnail.edc b/lock-setting/lockscreen-options/res/edje/lockscreen-options-thumbnail.edc
new file mode 100755 (executable)
index 0000000..a3da17f
--- /dev/null
@@ -0,0 +1,66 @@
+ /*
+  * 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.
+  */
+
+
+
+group{
+       images{
+               image: "icon_delete.png" COMP;
+               image: "icon_delete_press.png" COMP;
+       }
+
+       name: "lockscreen.options.shortcuts.thumbnail.main";
+       parts{
+               part{
+                       name: "background";
+                       type: RECT;
+                       mouse_events: 1;
+                       scale: 1;
+                       description{
+                               state: "default" 0.0;
+                               visible: 1;
+                               rel1 { relative: 0.0 0.0; }
+                               rel2 { relative: 1.0 1.0; }
+                               color: 0 0 0 0;
+                       }
+               }
+               part{
+                       name: "elm.swallow.contents";
+                       type: SWALLOW;
+                       repeat_events: 1;
+                       scale: 1;
+                       description{
+                               state: "default" 0.0;
+                               rel1 {relative: 0.0 0.0; to: "background";}
+                               rel2 {relative: 1.0 1.0; to: "background";}
+                       }
+               }
+               part{
+                       name: "elm.swallow.button";
+                       type: SWALLOW;
+                       repeat_events: 0;
+                       scale: 1;
+                       description{
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1 {relative: 0.0 0.0; to: "background";}
+                               rel2 {relative: 0.45 0.45; to: "background";}
+                       }
+               }
+       }
+       programs{
+       }
+}
diff --git a/lock-setting/lockscreen-options/res/edje/lockscreen-options.edc b/lock-setting/lockscreen-options/res/edje/lockscreen-options.edc
new file mode 100755 (executable)
index 0000000..d0ba457
--- /dev/null
@@ -0,0 +1,23 @@
+ /*
+  * 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.
+  */
+
+
+
+collections {
+       #include "lockscreen-options-shortcuts.edc"
+       #include "lockscreen-options-thumbnail.edc"
+       #include "lockscreen-options-locktitle.edc"
+}
diff --git a/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_Italic.png b/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_Italic.png
new file mode 100755 (executable)
index 0000000..ef2092c
Binary files /dev/null and b/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_Italic.png differ
diff --git a/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_bg.png b/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_bg.png
new file mode 100755 (executable)
index 0000000..dcaef91
Binary files /dev/null and b/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_bg.png differ
diff --git a/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_bold.png b/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_bold.png
new file mode 100755 (executable)
index 0000000..d222f74
Binary files /dev/null and b/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_bold.png differ
diff --git a/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_color.png b/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_color.png
new file mode 100755 (executable)
index 0000000..3b807c1
Binary files /dev/null and b/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_color.png differ
diff --git a/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_size.png b/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_size.png
new file mode 100755 (executable)
index 0000000..b7a6260
Binary files /dev/null and b/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_size.png differ
diff --git a/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_style.png b/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_style.png
new file mode 100755 (executable)
index 0000000..7263e6e
Binary files /dev/null and b/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_style.png differ
diff --git a/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_underline.png b/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_underline.png
new file mode 100755 (executable)
index 0000000..959467b
Binary files /dev/null and b/lock-setting/lockscreen-options/res/images/B09_Add Text_sip_option_underline.png differ
diff --git a/lock-setting/lockscreen-options/res/images/B09_key_btn_01.png b/lock-setting/lockscreen-options/res/images/B09_key_btn_01.png
new file mode 100755 (executable)
index 0000000..826be34
Binary files /dev/null and b/lock-setting/lockscreen-options/res/images/B09_key_btn_01.png differ
diff --git a/lock-setting/lockscreen-options/res/images/B09_key_btn_press.png b/lock-setting/lockscreen-options/res/images/B09_key_btn_press.png
new file mode 100755 (executable)
index 0000000..ee2484d
Binary files /dev/null and b/lock-setting/lockscreen-options/res/images/B09_key_btn_press.png differ
diff --git a/lock-setting/lockscreen-options/res/images/icon_add.png b/lock-setting/lockscreen-options/res/images/icon_add.png
new file mode 100755 (executable)
index 0000000..efa4733
Binary files /dev/null and b/lock-setting/lockscreen-options/res/images/icon_add.png differ
diff --git a/lock-setting/lockscreen-options/res/images/icon_delete.png b/lock-setting/lockscreen-options/res/images/icon_delete.png
new file mode 100755 (executable)
index 0000000..7145638
Binary files /dev/null and b/lock-setting/lockscreen-options/res/images/icon_delete.png differ
diff --git a/lock-setting/lockscreen-options/res/images/icon_delete_press.png b/lock-setting/lockscreen-options/res/images/icon_delete_press.png
new file mode 100755 (executable)
index 0000000..2ac8311
Binary files /dev/null and b/lock-setting/lockscreen-options/res/images/icon_delete_press.png differ
diff --git a/lock-setting/lockscreen-options/res/images/mainmenu_icon.png b/lock-setting/lockscreen-options/res/images/mainmenu_icon.png
new file mode 100755 (executable)
index 0000000..ab3194b
Binary files /dev/null and b/lock-setting/lockscreen-options/res/images/mainmenu_icon.png differ
diff --git a/lock-setting/lockscreen-options/src/lockscreen-options-dualclock.c b/lock-setting/lockscreen-options/src/lockscreen-options-dualclock.c
new file mode 100755 (executable)
index 0000000..bdd0d2a
--- /dev/null
@@ -0,0 +1,249 @@
+ /*
+  * 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.
+  */
+
+\r
+\r
+#include <vconf.h>\r
+#include <vconf-keys.h>\r
+#include <ui-gadget.h>\r
+#include <ui-gadget-module.h>\r
+#include <ail.h>\r
+\r
+#include "lockscreen-options.h"\r
+#include "lockscreen-options-debug.h"\r
+#include "lockscreen-options-main.h"\r
+#include "lockscreen-options-util.h"\r
+#include "lockscreen-options-dualclock.h"\r
+\r
+#define CITY_BUF_SIZE          128\r
+#define GMT_BUF_SIZE        10\r
+\r
+static char time_zone_str[CITY_BUF_SIZE + GMT_BUF_SIZE + 3];\r
+static Elm_Object_Item *genlist_item;\r
+\r
+\r
+static Elm_Gen_Item_Class itc_menu_2text;\r
+\r
+static char *_lockscreen_options_dualclock_gl_label_get(void *data,\r
+                                                  Evas_Object * obj,\r
+                                                  const char *part)\r
+{\r
+       if (part == NULL)\r
+               return NULL;\r
+\r
+       if ((strcmp(part, "elm.text.1") == 0)){\r
+               return strdup("Set home city");\r
+       }\r
+       if((strcmp(part, "elm.text.2") == 0)) {\r
+               return strdup(time_zone_str);\r
+       }\r
+\r
+       return NULL;\r
+}\r
+\r
+\r
+static void _lockscreen_options_dualclock_create_gl_item(Elm_Gen_Item_Class * item)\r
+{\r
+       item->item_style = "dialogue/2text.3";\r
+       item->func.text_get = _lockscreen_options_dualclock_gl_label_get;\r
+       item->func.content_get = NULL;\r
+       item->func.state_get = NULL;\r
+       item->func.del = NULL;\r
+}\r
+\r
+static void _lockscreen_options_update_timezone()\r
+{\r
+       elm_genlist_item_update(genlist_item);\r
+}\r
+\r
+static void _launch_worldclock_layout_ug_cb(ui_gadget_h ug,\r
+                                                     enum ug_mode mode,\r
+                                                     void *priv)\r
+{\r
+       LOCKOPTIONS_DBG("_launch_worldclock_layout_ug_cb begin.\n");\r
+       lockscreen_options_ug_data *ug_data = (lockscreen_options_ug_data *) priv;\r
+       Evas_Object *base;\r
+\r
+       if (!priv)\r
+               return;\r
+\r
+       base = (Evas_Object *) ug_get_layout(ug);\r
+       if (!base)\r
+               return;\r
+\r
+       switch (mode) {\r
+       case UG_MODE_FULLVIEW:\r
+               evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,\r
+                                                EVAS_HINT_EXPAND);\r
+               elm_win_resize_object_add(ug_data->win_main, base);\r
+               evas_object_show(base);\r
+               break;\r
+       default:\r
+               break;\r
+       }\r
+       LOCKOPTIONS_DBG("_launch_worldclock_layout_ug_cb end.\n");\r
+}\r
+\r
+static void _launch_worldclock_result_ug_cb(ui_gadget_h ug,\r
+                                                service_h result, void *priv)\r
+{\r
+       LOCKOPTIONS_DBG("_launch_worldclock_result_ug_cb begin.\n");\r
+       if (!priv)\r
+               return;\r
+\r
+       char *city = NULL;\r
+       char *timezone = NULL;\r
+       service_get_extra_data(result, "city", &city);\r
+       if(city == NULL) return;\r
+       service_get_extra_data(result, "timezone", &timezone);\r
+       if(timezone == NULL) return;\r
+\r
+       snprintf(time_zone_str, CITY_BUF_SIZE + GMT_BUF_SIZE + 2, "%s, GMT %s", _S(city), _(timezone));\r
+       LOCKOPTIONS_DBG("time_zone_str is [%s]", time_zone_str);\r
+       _lockscreen_options_update_timezone();\r
+\r
+       free(city);\r
+       free(timezone);\r
+       city = timezone = NULL;\r
+       LOCKOPTIONS_DBG("_launch_worldclock_result_ug_cb end.\n");\r
+}\r
+\r
+static void _launch_worldclock_destroy_ug_cb(ui_gadget_h ug,\r
+                                                      void *priv)\r
+{\r
+       LOCKOPTIONS_DBG("_launch_worldclock_destroy_ug_cb begin.\n");\r
+\r
+       if (!priv)\r
+               return;\r
+\r
+       if (ug) {\r
+               ug_destroy(ug);\r
+       }\r
+\r
+       LOCKOPTIONS_DBG("_launch_worldclock_destroy_ug_cb end.\n");\r
+}\r
+\r
+static void _launch_worldclock(void *data)\r
+{\r
+       LOCKOPTIONS_DBG("Launch world clock begin.\n");\r
+\r
+       if(data == NULL){\r
+               LOCKOPTIONS_ERR("The data (ug_data) transferred to _lauch_worldclock is NULL.");\r
+               return;\r
+       }\r
+\r
+       lockscreen_options_ug_data *ug_data = (lockscreen_options_ug_data *) data;\r
+\r
+       struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));\r
+       if(cbs == NULL)\r
+               return;\r
+       cbs->layout_cb = _launch_worldclock_layout_ug_cb;\r
+       cbs->result_cb = _launch_worldclock_result_ug_cb;\r
+       cbs->destroy_cb = _launch_worldclock_destroy_ug_cb;\r
+       cbs->priv = (void *)ug_data;\r
+\r
+       LOCKOPTIONS_DBG("Launch worldclock-efl begin.\n");\r
+       ui_gadget_h loading=ug_create(ug_data->ug, "worldclock-efl", UG_MODE_FULLVIEW, NULL, cbs);\r
+       if (NULL == loading) {\r
+               LOCKOPTIONS_ERR("Launch wordclock-efl failed.");\r
+    }\r
+\r
+       free(cbs);\r
+       LOCKOPTIONS_DBG("Launch world clock end.\n");\r
+}\r
+\r
+static void _lockscreen_options_dualclock_select_cb(void *data, Evas_Object *obj,\r
+                                          void *event_info)\r
+{\r
+       elm_genlist_item_selected_set(genlist_item, EINA_FALSE);\r
+       if(data == NULL){\r
+               LOCKOPTIONS_ERR("ug_data is null.");\r
+               return;\r
+       }\r
+\r
+       _launch_worldclock(data);\r
+}\r
+\r
+static void _lockscreen_options_dualclock_back_cb(void *data, Evas_Object * obj,\r
+                                            void *event_info)\r
+{\r
+       lockscreen_options_ug_data *ug_data =\r
+               (lockscreen_options_ug_data *) data;\r
+\r
+       if (ug_data == NULL){\r
+               LOCKOPTIONS_ERR("ug_data is null.");\r
+               return;\r
+       }\r
+\r
+       Evas_Object *navi_bar = ug_data->navi_bar;\r
+\r
+       if (navi_bar == NULL) {\r
+               LOCKOPTIONS_ERR("navi_bar is null.");\r
+               return;\r
+       }\r
+\r
+       elm_naviframe_item_pop(navi_bar);\r
+}\r
+\r
+static void _init_time_zone()\r
+{\r
+       snprintf(time_zone_str, CITY_BUF_SIZE + GMT_BUF_SIZE + 2, "%s, GMT %s", _("Nanjing"), _("+8"));\r
+}\r
+\r
+\r
+void lockscreen_options_dualclock_create_view(lockscreen_options_ug_data * ug_data)\r
+{\r
+       LOCKOPTIONS_DBG("lockscreen_options_dualclock_create_view begin\n");\r
+\r
+       Evas_Object *navi_bar = ug_data->navi_bar;\r
+       Evas_Object *back_button = NULL;\r
+       Evas_Object *genlist = NULL;\r
+\r
+       if (navi_bar == NULL) {\r
+               LOCKOPTIONS_ERR("navi_bar is null.");\r
+               return;\r
+       }\r
+\r
+       _init_time_zone();\r
+\r
+       genlist = elm_genlist_add(navi_bar);\r
+       elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);\r
+       elm_object_style_set(genlist, "dialogue");\r
+\r
+       _lockscreen_options_dualclock_create_gl_item(&itc_menu_2text);\r
+\r
+       lockscreen_options_util_create_seperator(genlist);\r
+\r
+\r
+       genlist_item = elm_genlist_item_append(genlist,\r
+                                                      &itc_menu_2text,\r
+                                                      NULL, NULL,\r
+                                                      ELM_GENLIST_ITEM_NONE,
+                                                      _lockscreen_options_dualclock_select_cb,\r
+                                                      ug_data);\r
+\r
+\r
+       back_button = elm_button_add(navi_bar);\r
+       elm_object_style_set(back_button, "naviframe/back_btn/default");\r
+       evas_object_smart_callback_add(back_button, "clicked",\r
+                                      _lockscreen_options_dualclock_back_cb,\r
+                                      ug_data);
+
+       elm_naviframe_item_push(navi_bar, "Dual clock", back_button, NULL, genlist, NULL);\r
+}\r
+\r
+\r
+\r
diff --git a/lock-setting/lockscreen-options/src/lockscreen-options-locktitle.c b/lock-setting/lockscreen-options/src/lockscreen-options-locktitle.c
new file mode 100755 (executable)
index 0000000..738818a
--- /dev/null
@@ -0,0 +1,535 @@
+ /*
+  * 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 <Ecore_X.h>
+
+#include "lockscreen-options.h"
+#include "lockscreen-options-debug.h"
+#include "lockscreen-options-util.h"
+#include "lockscreen-options-locktitle.h"
+
+#define EDJE_DIR "/usr/ug/res/edje/ug-lockscreen-options-efl"
+
+typedef struct {
+       unsigned char red;
+       unsigned char green;
+       unsigned char blue;
+       unsigned char reserved;
+} options_locktitle_rgb_s;
+
+typedef struct {
+       lockscreen_options_ug_data *ug_data;
+       Evas_Object *layout;
+       Evas_Object *toolbar;
+       Evas_Object *entry;
+       Ecore_IMF_Context *entry_ctx;
+       Evas_Object *colorselector;
+       Evas_Object *fontselector;
+       Evas_Object *font_radio;
+
+       options_locktitle_rgb_s rgb;
+} options_locktile_view_s;
+
+static options_locktile_view_s *options_locktile_view_data = NULL;
+
+static const fonttype_size = 5;
+static const char *fonttype_value[] = {
+       "Arial", "Courier New", "Roboto", "Tahoma", "Verdana"
+};
+
+static char *_fonttype_dropdown_text_get(void *data, Evas_Object * obj, const char *part);
+static Evas_Object *_fonttype_dropdown_content_get(void *data, Evas_Object * obj, const char *part);
+static Evas_Object *_editfield_content_get(void *data, Evas_Object * obj, const char *part);
+static void _lockscreen_options_locktitle_font_selector_create();
+static void _lockscreen_options_locktitle_color_selector_create();
+
+static Elm_Genlist_Item_Class itc_fontlist_style = {
+       .item_style = "1text.1icon.2",
+       .func.text_get = _fonttype_dropdown_text_get,
+       .func.content_get = _fonttype_dropdown_content_get,
+};
+
+static Elm_Genlist_Item_Class itc_editfield_style = {
+       .item_style = "dialogue/1icon",
+       .func.text_get = NULL,
+       .func.content_get = _editfield_content_get,
+};
+
+static char *_fonttype_dropdown_text_get(void *data, Evas_Object * obj,
+                                            const char *part)
+{
+       int index = (int)data;
+       if (strcmp(part, "elm.text") == 0) {
+               return strdup(fonttype_value[index]);
+       }
+       return NULL;
+}
+
+static Evas_Object *_fonttype_dropdown_content_get(void *data,
+                                                      Evas_Object * obj,
+                                                      const char *part)
+{
+       int index = (int)data;
+       if (!strcmp(part, "elm.icon")) {
+               Evas_Object *radio = elm_radio_add(obj);
+               elm_radio_state_value_set(radio, index);
+               elm_radio_group_add(radio, options_locktile_view_data->font_radio);
+               return radio;
+       }
+       return NULL;
+}
+
+static void *_fonttype_sel(void *data, Evas_Object * obj, void *event_info)
+{
+       //select font type
+}
+
+static void _lockscreen_options_locktitle_delete_cb(void *data, Evas * e,
+                                                   Evas_Object * obj,
+                                                   void *event_info)
+{
+       if (options_locktile_view_data) {
+               free(options_locktile_view_data);
+               options_locktile_view_data = NULL;
+       }
+}
+
+static void _lockscreen_options_locktitle_back_cb(void *data, Evas_Object * obj,
+                                                 void *event_info)
+{
+       lockscreen_options_ug_data *ug_data =
+           (lockscreen_options_ug_data *) data;
+
+       if (ug_data == NULL) {
+               LOCKOPTIONS_ERR("ug_data is null.");
+               return;
+       }
+
+       Evas_Object *navi_bar = ug_data->navi_bar;
+
+       if (navi_bar == NULL) {
+               LOCKOPTIONS_ERR("navi_bar is null.");
+               return;
+       }
+       elm_naviframe_item_pop(navi_bar);
+}
+
+static void _send_int_message_to_edc(Evas_Object * obj, int msgID, int param)
+{
+       Edje_Message_Int msg;
+       msg.val = param;
+       edje_object_message_send(elm_layout_edje_get(obj),
+                                EDJE_MESSAGE_INT, msgID, &msg);
+}
+
+static void _send_float_message_to_edc(Evas_Object * obj, int msgID, float param)
+{
+       Edje_Message_Float msg;
+       msg.val = param;
+       edje_object_message_send(elm_layout_edje_get(obj),
+                                EDJE_MESSAGE_FLOAT, msgID, &msg);
+}
+
+static void _lockscreen_options_locktitle_entry_imf_state_cb(void *data,
+                                                            Ecore_IMF_Context *
+                                                            ctx, int value)
+{
+       static float val = 1.0;
+       if (value == ECORE_IMF_INPUT_PANEL_STATE_SHOW) {
+               Evas_Coord keypad_x = 0;
+               Evas_Coord keypad_y = 0;
+               Evas_Coord keypad_w = 0;
+               Evas_Coord keypad_h = 0;
+               Evas_Coord window_width = 0;
+               Evas_Coord window_height = 0;
+
+               ecore_x_window_size_get(ecore_x_window_root_first_get(),
+                                       &window_width, &window_height);
+               ecore_imf_context_input_panel_geometry_get(ctx, &keypad_x,
+                                                          &keypad_y, &keypad_w,
+                                                          &keypad_h);
+               val = (float)(keypad_y) / (float)window_height;
+               /*set the toolbar's location*/
+               _send_float_message_to_edc(options_locktile_view_data->layout, 1, val);
+               /*set toolbar visible*/
+               _send_float_message_to_edc(options_locktile_view_data->layout, 2, 0.0);
+       } else if (value == ECORE_IMF_INPUT_PANEL_STATE_HIDE
+                                       &&options_locktile_view_data->colorselector == NULL
+                                       &&options_locktile_view_data->fontselector == NULL) {
+               _send_float_message_to_edc(options_locktile_view_data->layout, 3, 0.0);
+       }else {
+               /*set the toolbar's location*/
+               _send_float_message_to_edc(options_locktile_view_data->layout, 1, val);
+       }
+}
+
+static void _lockscreen_options_locktitle_entry_imf_resize_cb(void *data,
+                                                             Ecore_IMF_Context
+                                                             * ctx, int value)
+{
+       Evas_Coord keypad_x = 0;
+       Evas_Coord keypad_y = 0;
+       Evas_Coord keypad_w = 0;
+       Evas_Coord keypad_h = 0;
+       Evas_Coord window_width = 0;
+       Evas_Coord window_height = 0;
+
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &window_width,
+                               &window_height);
+       ecore_imf_context_input_panel_geometry_get(ctx, &keypad_x, &keypad_y,
+                                          &keypad_w, &keypad_h);
+}
+
+/* This callback is for showing(hiding) X marked button.*/
+static void _changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       if (elm_object_focus_get(data)) {
+               if (elm_entry_is_empty(obj)) {
+                       elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+               }else {
+                       elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+               }
+       }
+}
+
+/* Focused callback will show X marked button and hide guidetext.*/
+static void _focused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       if (!elm_entry_is_empty(obj)) {
+               elm_object_signal_emit(data, "elm,state,eraser,show", "elm");
+       }
+       elm_object_signal_emit(data, "elm,state,guidetext,hide", "elm");
+}
+
+/*Unfocused callback will show guidetext and hide X marked button.*/
+static void _unfocused_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       if (elm_entry_is_empty(obj)) {
+               elm_object_signal_emit(data, "elm,state,guidetext,show", "elm");
+       }
+       elm_object_signal_emit(data, "elm,state,eraser,hide", "elm");
+}
+
+static void _eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) // When X marked button clicked, make string as empty.
+{
+       elm_entry_entry_set(data, "");
+}
+
+static Evas_Object *_lockscreen_options_editfield_create(Evas_Object *parent)
+{
+       LOCKOPTIONS_DBG("[ == %s == ]", __func__);
+       Evas_Object *layout = NULL;
+       Evas_Object *entry = NULL;
+
+       layout = elm_layout_add(parent);
+       if(layout == NULL)
+               return NULL;
+       elm_layout_theme_set(layout, "layout", "editfield", "default");
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       entry = elm_entry_add(parent);
+       if(entry == NULL)
+               return NULL;
+       evas_object_smart_callback_add(entry, "changed", _changed_cb, layout);
+       evas_object_smart_callback_add(entry, "focused", _focused_cb, layout);
+       evas_object_smart_callback_add(entry, "unfocused", _unfocused_cb, layout);
+
+       elm_object_part_content_set(layout, "elm.swallow.content", entry);
+       elm_object_part_text_set(layout, "elm.guidetext", lockscreen_optoins_get_string(IDS_LOCKSCREEN_OPTIONS_LOCK_SCREEN_TITLE_GUIDE_TEXT));
+       elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm", _eraser_clicked_cb, entry);
+
+       options_locktile_view_data->entry = entry;
+
+       Ecore_IMF_Context *entry_ctx = elm_entry_imf_context_get(entry);
+       if(entry_ctx != NULL) {
+               ecore_imf_context_input_panel_event_callback_add((Ecore_IMF_Context *)
+                                                       entry_ctx,
+                                                       ECORE_IMF_INPUT_PANEL_STATE_EVENT,
+                                                       _lockscreen_options_locktitle_entry_imf_state_cb,
+                                                       options_locktile_view_data);
+               ecore_imf_context_input_panel_event_callback_add((Ecore_IMF_Context *)
+                                                       entry_ctx,
+                                                       ECORE_IMF_INPUT_PANEL_GEOMETRY_EVENT,
+                                                       _lockscreen_options_locktitle_entry_imf_resize_cb,
+                                                       options_locktile_view_data);
+               options_locktile_view_data->entry_ctx = entry_ctx;
+       }
+
+       return layout;
+}
+
+static Evas_Object *_editfield_content_get(void *data,
+                                                      Evas_Object * obj,
+                                                      const char *part)
+{
+       if (!strcmp(part, "elm.icon")) {
+               LOCKOPTIONS_DBG("[ == %s == ]", __func__);
+               Evas_Object *editfield = NULL;
+               editfield = _lockscreen_options_editfield_create(obj);
+               return editfield;
+       }
+       return NULL;
+}
+
+static void *_editfield_sel(void *data, Evas_Object * obj, void *event_info)
+{
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+}
+
+static void _on_text_fonttype_btn_clicked_cb(void *data, Evas_Object * obj,
+                                              const char *emission,
+                                              const char *source)
+{
+       if (options_locktile_view_data != NULL) {
+               if(options_locktile_view_data->fontselector == NULL) {
+                       if(options_locktile_view_data->colorselector != NULL) {
+                               evas_object_del(options_locktile_view_data->colorselector);
+                               options_locktile_view_data->colorselector = NULL;
+                       }
+                       _lockscreen_options_locktitle_font_selector_create();
+                       /*if create fontselector successfully, hide IME*/
+                       if(options_locktile_view_data->fontselector != NULL) {
+                               elm_object_focus_set(options_locktile_view_data->entry, EINA_FALSE);
+                       }
+               }else {
+                       evas_object_del(options_locktile_view_data->fontselector);
+                       options_locktile_view_data->fontselector = NULL;
+                       elm_object_focus_set(options_locktile_view_data->entry, EINA_TRUE);
+               }
+       }
+}
+
+static void _on_text_draw_btn_clicked_cb(void *data, Evas_Object * obj,
+                                              const char *emission,
+                                              const char *source)
+{
+       if (options_locktile_view_data != NULL) {
+               if(options_locktile_view_data->colorselector == NULL) {
+                       if(options_locktile_view_data->fontselector != NULL) {
+                               evas_object_del(options_locktile_view_data->fontselector);
+                               options_locktile_view_data->fontselector = NULL;
+                       }
+                       _lockscreen_options_locktitle_color_selector_create();
+                       /*if create colorselector successfully, hide IME*/
+                       if(options_locktile_view_data->colorselector != NULL) {
+                               elm_object_focus_set(options_locktile_view_data->entry, EINA_FALSE);
+                       }
+               }else {
+                       evas_object_del(options_locktile_view_data->colorselector);
+                       options_locktile_view_data->colorselector = NULL;
+                       elm_object_focus_set(options_locktile_view_data->entry, EINA_TRUE);
+               }
+       }
+}
+
+static void _on_text_bold_btn_clicked_cb(void *data, Evas_Object * obj,
+                                         const char *emission,
+                                         const char *source)
+{
+       if (options_locktile_view_data != NULL) {
+               _send_int_message_to_edc(options_locktile_view_data->toolbar, 1, 1);
+       }
+}
+
+static void _on_text_italic_btn_clicked_cb(void *data, Evas_Object * obj,
+                                           const char *emission,
+                                           const char *source)
+{
+       if (options_locktile_view_data != NULL) {
+               _send_int_message_to_edc(options_locktile_view_data->toolbar, 1, 2);
+       }
+
+}
+
+static void _on_text_underline_btn_clicked_cb(void *data, Evas_Object * obj,
+                                              const char *emission,
+                                              const char *source)
+{
+       if (options_locktile_view_data != NULL) {
+               _send_int_message_to_edc(options_locktile_view_data->toolbar, 1, 3);
+       }
+}
+
+static void _lockscreen_options_locktitle_colorselector_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       Evas_Object *rect = (Evas_Object *)data;
+       int r = 0, g = 0, b = 0, a = 0;
+       elm_colorselector_color_get(obj, &r, &g, &b, &a);
+       evas_object_color_set(rect, r, g, b, a);
+}
+
+static void _lockscreen_options_locktitle_color_selector_create()
+{
+       if(options_locktile_view_data == NULL)
+               return;
+       Evas_Object *colorselector = NULL;
+       Evas_Object *rect = NULL;
+       Evas_Object *color = NULL;
+
+       colorselector =
+                       lockscreen_options_util_create_layout(options_locktile_view_data->layout,
+                                                         EDJE_DIR
+                                                         "/lockscreen-options.edj",
+                                                         "lockscreen.options.locktitle.colorselector");
+       if(colorselector == NULL)
+               return;
+
+       rect = evas_object_rectangle_add(evas_object_evas_get(options_locktile_view_data->layout));
+       elm_object_part_content_set(colorselector, "rect", rect);
+       evas_object_color_set(rect, options_locktile_view_data->rgb.red, options_locktile_view_data->rgb.green, options_locktile_view_data->rgb.blue, options_locktile_view_data->rgb.reserved);
+
+       color = elm_colorselector_add(options_locktile_view_data->layout);
+       elm_colorselector_mode_set(color, ELM_COLORSELECTOR_COMPONENTS);
+       elm_object_part_content_set(colorselector, "color", color);
+       evas_object_smart_callback_add(color, "changed", _lockscreen_options_locktitle_colorselector_changed_cb, rect);
+       evas_object_color_set(color, options_locktile_view_data->rgb.red, options_locktile_view_data->rgb.green, options_locktile_view_data->rgb.blue, options_locktile_view_data->rgb.reserved);
+
+       options_locktile_view_data->colorselector = colorselector;
+       elm_object_part_content_set(options_locktile_view_data->layout, "elm.swallow.selector", colorselector);
+       evas_object_show(colorselector);
+}
+
+static void _lockscreen_options_locktitle_font_selector_create()
+{
+       if(options_locktile_view_data == NULL)
+               return;
+       Evas_Object *fontselector = NULL;
+       Evas_Object *font_radio = NULL;
+
+       fontselector = elm_genlist_add(options_locktile_view_data->layout);
+       if(fontselector == NULL)
+               return;
+
+       font_radio= elm_radio_add(fontselector);
+       if(font_radio == NULL)
+               return;
+
+       int index = 0;
+       for (index = 0; index < fonttype_size; index++) {
+               elm_genlist_item_append(fontselector, &itc_fontlist_style,
+                               (void *)index, NULL,
+                               ELM_GENLIST_ITEM_NONE, _fonttype_sel, NULL);
+       }
+
+       options_locktile_view_data->fontselector = fontselector;
+       options_locktile_view_data->font_radio = font_radio;
+       elm_object_part_content_set(options_locktile_view_data->layout, "elm.swallow.selector", fontselector);
+       evas_object_show(fontselector);
+}
+
+static void _lockscreen_options_locktitle_create_toolbar()
+{
+       if(options_locktile_view_data == NULL)
+               return;
+
+       Evas_Object *toolbar = NULL;
+
+       toolbar =
+                       lockscreen_options_util_create_layout(options_locktile_view_data->layout,
+                                                         EDJE_DIR
+                                                         "/lockscreen-options.edj",
+                                                         "lockscreen.options.locktitle.toolbar");
+       if(toolbar == NULL)
+               return;
+
+       elm_object_part_content_set(options_locktile_view_data->layout, "elm.swallow.toolbar", toolbar);
+       evas_object_show(toolbar);
+       options_locktile_view_data->toolbar = toolbar;
+
+       edje_object_signal_callback_add(elm_layout_edje_get(toolbar),
+                               "dropdown.fonttype.clicked", "*",
+                               _on_text_fonttype_btn_clicked_cb,
+                               NULL);
+       edje_object_signal_callback_add(elm_layout_edje_get(toolbar),
+                               "draw.button.clicked", "*",
+                               _on_text_draw_btn_clicked_cb, NULL);
+       edje_object_signal_callback_add(elm_layout_edje_get(toolbar),
+                               "text.bold.clicked", "*",
+                               _on_text_bold_btn_clicked_cb, NULL);
+       edje_object_signal_callback_add(elm_layout_edje_get(toolbar),
+                               "text.italic.clicked", "*",
+                               _on_text_italic_btn_clicked_cb, NULL);
+       edje_object_signal_callback_add(elm_layout_edje_get(toolbar),
+                               "text.underline.clicked", "*",
+                               _on_text_underline_btn_clicked_cb, NULL);
+}
+
+void lockscreen_options_locktitle_create_view(lockscreen_options_ug_data *
+                                             ug_data)
+{
+       if (ug_data == NULL) {
+               LOCKOPTIONS_ERR("ug is NULL");
+               return;
+       }
+       LOCKOPTIONS_DBG("lockscreen_options_locktitle_create_view begin\n");
+       Evas_Object *navi_bar = ug_data->navi_bar;
+       if (navi_bar == NULL) {
+               LOCKOPTIONS_ERR("navi_bar is null.");
+               return;
+       }
+
+       /*initialization*/
+       options_locktile_view_data =
+           (options_locktile_view_s *) calloc(1,
+                                              sizeof(options_locktile_view_s));
+       options_locktile_view_data->ug_data = ug_data;
+       options_locktile_view_data->rgb.red = 255;
+       options_locktile_view_data->rgb.green = 255;
+       options_locktile_view_data->rgb.blue = 255;
+       options_locktile_view_data->rgb.reserved = 255;
+
+       Evas_Object *layout = NULL;
+       Evas_Object *back_button = NULL;
+       Evas_Object *genlist = NULL;
+
+       layout =
+           lockscreen_options_util_create_layout(navi_bar,
+                                                 EDJE_DIR
+                                                 "/lockscreen-options.edj",
+                                                 "lockscreen.options.locktitle.main");
+
+       if (layout == NULL) {
+               LOCKOPTIONS_ERR("can't create locktitle layout.");
+               return;
+       }
+
+       evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL,
+                                      _lockscreen_options_locktitle_delete_cb,
+                                      NULL);
+       options_locktile_view_data->layout = layout;
+
+       genlist = elm_genlist_add(layout);
+       if(genlist == NULL) {
+               return;
+       }
+       elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+       elm_genlist_item_append(genlist, &itc_editfield_style, NULL, NULL, ELM_GENLIST_ITEM_NONE, _editfield_sel, NULL);
+       elm_object_part_content_set(layout, "elm.swallow.content", genlist);
+       evas_object_show(genlist);
+
+       _lockscreen_options_locktitle_create_toolbar();
+
+       back_button = elm_button_add(navi_bar);
+       elm_object_style_set(back_button, "naviframe/back_btn/default");
+       evas_object_smart_callback_add(back_button, "clicked",
+                                      _lockscreen_options_locktitle_back_cb,
+                                      ug_data);
+
+       elm_naviframe_item_push(navi_bar, "Lock screen title", back_button,
+                               NULL, layout, NULL);
+}
diff --git a/lock-setting/lockscreen-options/src/lockscreen-options-main.c b/lock-setting/lockscreen-options/src/lockscreen-options-main.c
new file mode 100755 (executable)
index 0000000..feb0caf
--- /dev/null
@@ -0,0 +1,462 @@
+ /*
+  * 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 <vconf.h>
+#include <vconf-keys.h>
+#include <ui-gadget.h>
+#include <ui-gadget-module.h>
+#include <ail.h>
+
+#include "lockscreen-options.h"
+#include "lockscreen-options-debug.h"
+#include "lockscreen-options-main.h"
+#include "lockscreen-options-util.h"
+#include "lockscreen-options-shortcuts.h"
+#include "lockscreen-options-locktitle.h"
+#include "lockscreen-options-dualclock.h"
+
+#include "starter-vconf.h"
+
+#if USE_TITLE_AND_CAMERA
+#define LOCKSCREEN_OPTOINS_GENLIST_ITEM_CNT 12
+#else
+#define LOCKSCREEN_OPTOINS_GENLIST_ITEM_CNT 8
+#endif
+
+typedef struct {
+       int glStyle;
+       int stringId;
+       Evas_Object *check;
+       void (*func) (void *data, Evas_Object * obj, void *event_info);
+} lockscreen_menu_item_info;
+
+static void _lockscreen_options_shortcuts_cb(void *data, Evas_Object * obj,
+                                            void *event_info);
+static void _lockscreen_options_locktitle_cb(void *data, Evas_Object * obj,
+                                            void *event_info);
+static void _lockscreen_options_dualclock_cb(void *data, Evas_Object * obj,
+                                            void *event_info);
+
+static lockscreen_menu_item_info lockscreen_options_menu_item[] = {
+       {ENUM_LOCKSCREEN_GENLIST_STYLE_1TEXT1ICON, IDS_LOCKSCREEN_OPTIONS_SHORTCUTS, NULL, _lockscreen_options_shortcuts_cb},   //launch short cut setting
+       {ENUM_LOCKSCREEN_GENLIST_STYLE_HELP, IDS_LOCKSCREEN_OPTIONS_SHORTCUTS_HELP, NULL, NULL},        //help text
+#if USE_TITLE_AND_CAMERA
+       {ENUM_LOCKSCREEN_GENLIST_STYLE_2TEXT1ICON, IDS_LOCKSCREEN_OPTIONS_LOCK_SCREEN_TITLE, NULL, _lockscreen_options_locktitle_cb},   //launch life magazine input view
+       {ENUM_LOCKSCREEN_GENLIST_STYLE_HELP, IDS_LOCKSCREEN_OPTIONS_LOCK_SCREEN_TITLE_HELP, NULL, NULL},        //help text
+#endif
+       {ENUM_LOCKSCREEN_GENLIST_STYLE_1TEXT1ICON, IDS_LOCKSCREEN_OPTIONS_EVENT_NOTIFICATIONS, NULL, NULL},     //Event notifications
+       {ENUM_LOCKSCREEN_GENLIST_STYLE_HELP, IDS_LOCKSCREEN_OPTIONS_EVENT_NOTIFICATIONS_HELP, NULL, NULL},      //help text
+//     {ENUM_LOCKSCREEN_GENLIST_STYLE_1TEXT1ICON, IDS_LOCKSCREEN_OPTIONS_CONTEXTAWARE_NOTI, NULL, NULL},       //Context-aware notifications
+//     {ENUM_LOCKSCREEN_GENLIST_STYLE_HELP, IDS_LOCKSCREEN_OPTIONS_CONTEXTAWARE_NOTI_HELP, NULL, NULL},        //help text
+#if USE_TITLE_AND_CAMERA
+       {ENUM_LOCKSCREEN_GENLIST_STYLE_1TEXT1ICON, IDS_LOCKSCREEN_OPTIONS_CAMERA_QUICK_ACCESS, NULL, NULL},     //camera qucik access option
+       {ENUM_LOCKSCREEN_GENLIST_STYLE_HELP, IDS_LOCKSCREEN_OPTIONS_CAMERA_QUICK_ACCESS_HELP, NULL, NULL},      //help text
+#endif
+       {ENUM_LOCKSCREEN_GENLIST_STYLE_1TEXT1ICON, IDS_LOCKSCREEN_OPTIONS_CLOCK, NULL, NULL},   //Clock
+//     {ENUM_LOCKSCREEN_GENLIST_STYLE_1TEXT1ICON, IDS_LOCKSCREEN_OPTIONS_DUAL_CLOCK, NULL, _lockscreen_options_dualclock_cb},   //Dual Clock
+//     {ENUM_LOCKSCREEN_GENLIST_STYLE_HELP, IDS_LOCKSCREEN_OPTIONS_DUAL_CLOCK_HELP, NULL, NULL},   //Dual Clock help
+       {ENUM_LOCKSCREEN_GENLIST_STYLE_1TEXT1ICON, IDS_LOCKSCREEN_OPTIONS_WEATHER, NULL, NULL}, //Weather
+       {ENUM_LOCKSCREEN_GENLIST_STYLE_1TEXT1ICON, IDS_LOCKSCREEN_OPTIONS_HELPTEXT, NULL, NULL},        //Help text
+       {ENUM_LOCKSCREEN_GENLIST_STYLE_HELP, IDS_LOCKSCREEN_OPTIONS_HELPTEXT_HELP, NULL, NULL}  //help text
+};
+
+static Elm_Gen_Item_Class itc_menu_1text1icon;
+static Elm_Gen_Item_Class itc_menu_2text1icon;
+static Elm_Gen_Item_Class itc_help_1text;
+static Elm_Object_Item *genlist_shortcuts_item = NULL;
+
+static void _lockscreen_options_shortcuts_cb(void *data, Evas_Object * obj,
+                                            void *event_info)
+{
+       lockscreen_options_shortcuts_create_view(data);
+}
+
+static void _lockscreen_options_locktitle_cb(void *data, Evas_Object * obj,
+                                            void *event_info)
+{
+       lockscreen_options_locktitle_create_view(data);
+}
+
+static void _lockscreen_options_dualclock_cb(void *data, Evas_Object * obj,
+                                            void *event_info)
+{
+       lockscreen_options_dualclock_create_view(data);
+}
+
+static void _lockscreen_options_main_back_cb(void *data, Evas_Object * obj,
+                                            void *event_info)
+{
+       lockscreen_options_ug_data *ug_data =
+           (lockscreen_options_ug_data *) data;
+
+       if (ug_data == NULL)
+               return;
+
+       ug_destroy_me(ug_data->ug);
+}
+
+static char *_lockscreen_options_main_gl_label_get(void *data,
+                                                  Evas_Object * obj,
+                                                  const char *part)
+{
+       if (data == NULL || part == NULL)
+               return NULL;
+
+       lockscreen_menu_item_info *lockoption_data =
+           (lockscreen_menu_item_info *) data;
+
+       if ((strcmp(part, "elm.text") == 0) ||
+           (strcmp(part, "elm.text.1") == 0)) {
+               return
+                   strdup(lockscreen_optoins_get_string
+                          (lockoption_data->stringId));
+       }
+
+       if((strcmp(part, "elm.text.2") == 0)) {
+               return strdup("Life Magazine");
+       }
+
+       return NULL;
+
+}
+
+static void _lockscreen_options_set_menu_status(int stringId, int value)
+{
+       int ret = 0;
+       switch (stringId) {
+       case IDS_LOCKSCREEN_OPTIONS_SHORTCUTS:
+               ret = vconf_set_bool(VCONFKEY_LOCKSCREEN_SHORTCUT_DISPLAY, value);
+               break;
+#if USE_TITLE_AND_CAMERA
+       case IDS_LOCKSCREEN_OPTIONS_LOCK_SCREEN_TITLE:
+               break;
+#endif
+       case IDS_LOCKSCREEN_OPTIONS_EVENT_NOTIFICATIONS:
+               ret = vconf_set_bool(VCONFKEY_LOCKSCREEN_EVENT_NOTIFICATION_DISPLAY, value);
+               break;
+       case IDS_LOCKSCREEN_OPTIONS_CONTEXTAWARE_NOTI:
+               ret = vconf_set_bool(VCONFKEY_LOCKSCREEN_CONTEXT_AWARE_NOTIFICATION_DISPLAY, value);
+               break;
+#if USE_TITLE_AND_CAMERA
+       case IDS_LOCKSCREEN_OPTIONS_CAMERA_QUICK_ACCESS:
+               ret = vconf_set_bool(VCONFKEY_LOCKSCREEN_CAMERA_QUICK_ACCESS, value);
+               break;
+#endif
+       case IDS_LOCKSCREEN_OPTIONS_CLOCK:
+               ret = vconf_set_bool(VCONFKEY_LOCKSCREEN_CLOCK_DISPLAY, value);
+               break;
+       case IDS_LOCKSCREEN_OPTIONS_WEATHER:
+               ret = vconf_set_bool(VCONFKEY_LOCKSCREEN_WEATHER_DISPLAY, value);
+               break;
+       case IDS_LOCKSCREEN_OPTIONS_HELPTEXT:
+               ret = vconf_set_bool(VCONFKEY_LOCKSCREEN_HELP_TEXT_DISPLAY, value);
+               break;
+       default:
+               LOCKOPTIONS_DBG("NO VALID STRINGID %d", stringId);
+               break;
+
+       }
+}
+
+static bool _lockscreen_options_get_menu_status(int stringId)
+{
+       int status = 0;
+       int ret = 0;
+
+       switch (stringId) {
+       case IDS_LOCKSCREEN_OPTIONS_SHORTCUTS:
+               ret = vconf_get_bool(VCONFKEY_LOCKSCREEN_SHORTCUT_DISPLAY, &status);
+               break;
+#if USE_TITLE_AND_CAMERA
+       case IDS_LOCKSCREEN_OPTIONS_LOCK_SCREEN_TITLE:
+               break;
+#endif
+       case IDS_LOCKSCREEN_OPTIONS_EVENT_NOTIFICATIONS:
+               ret = vconf_get_bool(VCONFKEY_LOCKSCREEN_EVENT_NOTIFICATION_DISPLAY, &status);
+               break;
+       case IDS_LOCKSCREEN_OPTIONS_CONTEXTAWARE_NOTI:
+               ret = vconf_get_bool(VCONFKEY_LOCKSCREEN_CONTEXT_AWARE_NOTIFICATION_DISPLAY, &status);
+               break;
+#if USE_TITLE_AND_CAMERA
+       case IDS_LOCKSCREEN_OPTIONS_CAMERA_QUICK_ACCESS:
+               ret = vconf_get_bool(VCONFKEY_LOCKSCREEN_CAMERA_QUICK_ACCESS, &status);
+               break;
+#endif
+       case IDS_LOCKSCREEN_OPTIONS_CLOCK:
+               ret = vconf_get_bool(VCONFKEY_LOCKSCREEN_CLOCK_DISPLAY, &status);
+               break;
+       case IDS_LOCKSCREEN_OPTIONS_WEATHER:
+               ret = vconf_get_bool(VCONFKEY_LOCKSCREEN_WEATHER_DISPLAY, &status);
+               break;
+       case IDS_LOCKSCREEN_OPTIONS_HELPTEXT:
+               ret = vconf_get_bool(VCONFKEY_LOCKSCREEN_HELP_TEXT_DISPLAY, &status);
+               break;
+       default:
+               LOCKOPTIONS_DBG("NO VALID INDEX %d", stringId);
+               break;
+       }
+
+       if (ret == -1) {
+               LOCKOPTIONS_ERR("Failed to get vconfkey %d!", stringId);
+               return 0;
+       }
+
+       LOCKOPTIONS_DBG
+           ("_lockscreen_options_get_menu_status index %d Status %d", stringId,
+            status);
+
+       return status;
+
+}
+
+static void _lockscreen_options_check_changed_cb(void *data, Evas_Object * obj,
+                                                void *event_info)
+{
+       if (data == NULL || obj == NULL)
+               return;
+
+       lockscreen_menu_item_info *lockoption_data =
+           (lockscreen_menu_item_info *) data;
+
+       Eina_Bool ret;
+       int value = 0;
+
+       ret = elm_check_state_get(obj);
+
+       LOCKOPTIONS_DBG("_lockscreen_options_check_changed_cb : %s",
+                       ret == EINA_TRUE ? "ON" : "OFF");
+
+       if (ret == EINA_TRUE) {
+               /* set on */
+               value = 1;
+       } else {
+               /* set off */
+               value = 0;
+       }
+
+       _lockscreen_options_set_menu_status(lockoption_data->stringId, value);
+}
+
+static Evas_Object *_lockscreen_options_main_gl_icon_get(void *data,
+                                                        Evas_Object * obj,
+                                                        const char *part)
+{
+       if (data == NULL || obj == NULL)
+               return NULL;
+
+       lockscreen_menu_item_info *lockoption_data =
+           (lockscreen_menu_item_info *) data;
+
+       LOCKOPTIONS_DBG("icon get stringId : %d", lockoption_data->stringId);
+
+       Evas_Object *check;
+       int value = 0;
+
+       check = elm_check_add(obj);
+       elm_object_style_set(check, "on&off");
+       evas_object_show(check);
+
+       value = _lockscreen_options_get_menu_status(lockoption_data->stringId);
+       elm_check_state_set(check, value);
+
+       evas_object_pass_events_set(check, 1);
+       evas_object_propagate_events_set(check, 0);
+
+
+       if (lockoption_data->stringId == IDS_LOCKSCREEN_OPTIONS_SHORTCUTS) {
+               Eina_Bool is_have = EINA_FALSE;
+               is_have = lockscreen_options_shortcuts_check_items();
+               if(is_have == EINA_TRUE){
+                       elm_object_disabled_set(check, EINA_FALSE);
+               }else{
+                       elm_object_disabled_set(check, EINA_TRUE);
+                       elm_check_state_set(check, EINA_FALSE);
+                       _lockscreen_options_set_menu_status(lockoption_data->stringId, EINA_FALSE);
+               }
+       }else if (lockoption_data->stringId ==
+           IDS_LOCKSCREEN_OPTIONS_CONTEXTAWARE_NOTI) {
+               elm_object_disabled_set(check, EINA_TRUE);
+       }
+
+       evas_object_smart_callback_add(check, "changed",
+                                      _lockscreen_options_check_changed_cb,
+                                      lockoption_data);
+
+       lockoption_data->check = check;
+
+       return check;
+}
+
+static void _lockscreen_options_main_gl_del(void *data, Evas_Object * obj)
+{
+       LOCKOPTIONS_DBG("_lockscreen_options_main_gl_del");
+}
+
+static void _lockscreen_options_main_gl_sel(void *data, Evas_Object * obj,
+                                           void *event_info)
+{
+       if (data == NULL)
+               return;
+
+       lockscreen_menu_item_info *lockoption_data = NULL;
+
+       elm_genlist_item_selected_set((Elm_Object_Item *) event_info,
+                                     EINA_FALSE);
+
+       Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+       lockoption_data =
+           (lockscreen_menu_item_info *) elm_object_item_data_get(item);
+       if (lockoption_data == NULL) {
+               return;
+       }
+
+       if (lockoption_data->stringId ==
+           IDS_LOCKSCREEN_OPTIONS_EVENT_NOTIFICATIONS
+           || lockoption_data->stringId == IDS_LOCKSCREEN_OPTIONS_CLOCK
+           || lockoption_data->stringId == IDS_LOCKSCREEN_OPTIONS_WEATHER
+           || lockoption_data->stringId == IDS_LOCKSCREEN_OPTIONS_HELPTEXT) {
+               Eina_Bool check_state =
+                   elm_check_state_get(lockoption_data->check);
+               _lockscreen_options_set_menu_status(lockoption_data->stringId,
+                                                   !check_state);
+               elm_genlist_item_update(item);
+       }
+
+       if (lockoption_data->func != NULL) {
+               lockoption_data->func(data, obj, event_info);
+       }
+}
+
+static void _lockscreen_options_create_gl_item(Elm_Gen_Item_Class * item,
+                                              int glStyle)
+{
+       if (glStyle == ENUM_LOCKSCREEN_GENLIST_STYLE_1TEXT1ICON) {
+               item->item_style = LOCKSCREEN_GENLIST_STYLE_1TEXT1ICON;
+               item->func.text_get = _lockscreen_options_main_gl_label_get;
+               item->func.content_get = _lockscreen_options_main_gl_icon_get;
+               item->func.state_get = NULL;
+               item->func.del = _lockscreen_options_main_gl_del;
+       } else if (glStyle == ENUM_LOCKSCREEN_GENLIST_STYLE_2TEXT1ICON) {
+               item->item_style = LOCKSCREEN_GENLIST_STYLE_2TEXT1ICON;
+               item->func.text_get = _lockscreen_options_main_gl_label_get;
+               item->func.content_get = _lockscreen_options_main_gl_icon_get;
+               item->func.state_get = NULL;
+               item->func.del = NULL;
+       } else if (glStyle == ENUM_LOCKSCREEN_GENLIST_STYLE_HELP) {
+               item->item_style = LOCKSCREEN_GENLIST_STYLE_HELP;
+               item->func.text_get = _lockscreen_options_main_gl_label_get;
+               item->func.content_get = NULL;
+               item->func.state_get = NULL;
+               item->func.del = _lockscreen_options_main_gl_del;
+       } else {
+               LOCKOPTIONS_DBG("_lockscreen_options_create_gl_item FAIL\n");
+       }
+}
+
+void lockscreen_options_main_create_view(lockscreen_options_ug_data * ug_data)
+{
+       LOCKOPTIONS_DBG("lockscreen_options_main_create_view begin\n");
+
+       Evas_Object *navi_bar = ug_data->navi_bar;
+       Evas_Object *back_button = NULL;
+       Evas_Object *genlist = NULL;
+       Elm_Object_Item *item = NULL;
+       int i = 0;
+
+       if (navi_bar == NULL) {
+               LOCKOPTIONS_WARN("navi_bar is null.");
+               return;
+       }
+
+       _lockscreen_options_create_gl_item(&(itc_menu_1text1icon),
+                                          ENUM_LOCKSCREEN_GENLIST_STYLE_1TEXT1ICON);
+       _lockscreen_options_create_gl_item(&(itc_menu_2text1icon),
+                                          ENUM_LOCKSCREEN_GENLIST_STYLE_2TEXT1ICON);
+       _lockscreen_options_create_gl_item(&(itc_help_1text),
+                                          ENUM_LOCKSCREEN_GENLIST_STYLE_HELP);
+       /* Create genlist */
+       genlist = elm_genlist_add(navi_bar);
+
+       elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+       elm_object_style_set(genlist, "dialogue");
+
+       lockscreen_options_util_create_seperator(genlist);
+
+       for (i = 0; i < LOCKSCREEN_OPTOINS_GENLIST_ITEM_CNT; i++) {
+               Elm_Gen_Item_Class *itc = NULL;
+               if (lockscreen_options_menu_item[i].glStyle ==
+                   ENUM_LOCKSCREEN_GENLIST_STYLE_1TEXT1ICON) {
+                       itc = &(itc_menu_1text1icon);
+                       item = elm_genlist_item_append(genlist,
+                                                      itc,
+                                                      &
+                                                      (lockscreen_options_menu_item
+                                                       [i]), NULL,
+                                                      ELM_GENLIST_ITEM_NONE,
+                                                      _lockscreen_options_main_gl_sel,
+                                                      ug_data);
+               } else if(lockscreen_options_menu_item[i].glStyle ==
+                   ENUM_LOCKSCREEN_GENLIST_STYLE_2TEXT1ICON) {
+                   itc = &(itc_menu_2text1icon);
+                       item = elm_genlist_item_append(genlist,
+                                                      itc,
+                                                      &
+                                                      (lockscreen_options_menu_item
+                                                       [i]), NULL,
+                                                      ELM_GENLIST_ITEM_NONE,
+                                                      _lockscreen_options_main_gl_sel,
+                                                      ug_data);
+               } else if (lockscreen_options_menu_item[i].glStyle ==
+                          ENUM_LOCKSCREEN_GENLIST_STYLE_HELP) {
+                       itc = &(itc_help_1text);
+                       item = elm_genlist_item_append(genlist,
+                                                      itc,
+                                                      &
+                                                      (lockscreen_options_menu_item
+                                                       [i]), NULL,
+                                                      ELM_GENLIST_ITEM_NONE,
+                                                      NULL, NULL);
+                       elm_genlist_item_select_mode_set(item,
+                                                        ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+                       if(i != (LOCKSCREEN_OPTOINS_GENLIST_ITEM_CNT - 1)){
+                               lockscreen_options_util_create_underline(genlist);
+                       }
+               } else {
+                       LOCKOPTIONS_WARN("lockscreen option has no such type.");
+                       return;
+               }
+               if((lockscreen_options_menu_item[i].stringId) == IDS_LOCKSCREEN_OPTIONS_SHORTCUTS){
+                       genlist_shortcuts_item = item;
+               }
+       }
+
+       /* Set navigation objects and push */
+       back_button = elm_button_add(navi_bar);
+       elm_object_style_set(back_button, "naviframe/back_btn/default");
+       evas_object_smart_callback_add(back_button, "clicked",
+                                      _lockscreen_options_main_back_cb,
+                                      ug_data);
+
+       elm_naviframe_item_push(navi_bar, _("IDS_ST_BODY_LOCK_SCREEN") , back_button, NULL, genlist, NULL);     /* the same tile */
+}
+
+void lockscreen_options_main_update_view()
+{      if(genlist_shortcuts_item){
+               elm_gengrid_item_update(genlist_shortcuts_item);
+       }
+}
diff --git a/lock-setting/lockscreen-options/src/lockscreen-options-shortcuts-edit.c b/lock-setting/lockscreen-options/src/lockscreen-options-shortcuts-edit.c
new file mode 100755 (executable)
index 0000000..80f2d02
--- /dev/null
@@ -0,0 +1,576 @@
+ /*
+  * 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 <Elementary.h>
+#include <Ecore_X.h>
+#include <ail.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+
+#include "lockscreen-options.h"
+#include "lockscreen-options-debug.h"
+#include "lockscreen-options-util.h"
+#include "lockscreen-options-shortcuts.h"
+#include "lockscreen-options-shortcuts-edit.h"
+
+#define EDJE_DIR                    "/usr/ug/res/edje/ug-lockscreen-options-efl"
+#define IMAGES_DIR                  "/usr/ug/res/images/ug-lockscreen-options-efl"
+#define GENGRID_ITEM_HEIGHT         188
+#define WINDOW_HEIGHT               1280
+
+typedef enum {
+       SET_SHORTCUTS_APP1 = 0,
+       SET_SHORTCUTS_APP2,
+       SET_SHORTCUTS_APP3,
+       SET_SHORTCUTS_APP4
+} shortcuts_type_t;
+
+typedef struct {
+       int index;
+       char *pkg_name;
+       Elm_Object_Item *item;
+} shortcuts_item_s;
+
+typedef struct {
+       lockscreen_options_ug_data *ug_data;
+       Evas_Object *gengrid;
+       Eina_List *app_list;
+       shortcuts_type_t shortcuts_type;
+       Elm_Object_Item *selected_gengrid_item;
+       Eina_Bool is_moved;
+} options_shortcuts_edit_view_s;
+
+static Elm_Gengrid_Item_Class gic;
+static options_shortcuts_edit_view_s *options_shortcuts_edit_view_data = NULL;
+static bool delete_icons[4];
+
+static Evas_Object *_lockscreen_options_grid_content_get_e(void *data, Evas_Object * obj, const char *part);
+
+static char *_lockscreen_options_icon_path_get_e(shortcuts_item_s *
+                                              shortcuts_item)
+{
+       ail_appinfo_h handle;
+       ail_error_e ret;
+       char *pkg_name = NULL;
+       char *temp = NULL;
+       char *icon_path = NULL;
+       shortcuts_type_t shortcuts_type = SET_SHORTCUTS_APP1;
+
+       if (shortcuts_item == NULL) {
+               return NULL;
+       }
+
+       shortcuts_type = shortcuts_item->index;
+
+       switch (shortcuts_type) {
+       case SET_SHORTCUTS_APP1:
+               pkg_name = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT1);
+               LOCKOPTIONS_ERR("pkg_name is %s", pkg_name);
+               break;
+       case SET_SHORTCUTS_APP2:
+               pkg_name = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT2);
+               LOCKOPTIONS_ERR("pkg_name is %s", pkg_name);
+               break;
+       case SET_SHORTCUTS_APP3:
+               pkg_name = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT3);
+               LOCKOPTIONS_ERR("pkg_name is %s", pkg_name);
+               break;
+       case SET_SHORTCUTS_APP4:
+               pkg_name = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT4);
+               LOCKOPTIONS_ERR("pkg_name is %s", pkg_name);
+               break;
+       default:
+               break;
+       }
+
+       if (pkg_name == NULL || strlen(pkg_name) == 0) {
+               LOCKOPTIONS_ERR("pkg_name is NULL");
+               return NULL;
+       }
+       shortcuts_item->pkg_name = strdup(pkg_name);
+
+       ret = ail_get_appinfo(pkg_name, &handle);
+       if (ret != AIL_ERROR_OK) {
+               LOCKOPTIONS_ERR("Fail to ail_get_appinfo");
+               return NULL;
+       }
+
+       ret = ail_appinfo_get_str(handle, AIL_PROP_ICON_STR, &temp);
+       if (ret != AIL_ERROR_OK) {
+               LOCKOPTIONS_ERR("Fail to ail_appinfo_get_str");
+               ail_destroy_appinfo(handle);
+               return NULL;
+       }
+
+       if (temp) {
+               icon_path = strdup(temp);
+       }
+
+       ret = ail_destroy_appinfo(handle);
+       if (ret != AIL_ERROR_OK) {
+               LOCKOPTIONS_ERR("Fail to ail_destroy_appinfo");
+       }
+
+       if (pkg_name) {
+               free(pkg_name);
+               pkg_name = NULL;
+       }
+       return icon_path;
+}
+
+static void _lockscreen_options_shortcuts_set_e(shortcuts_type_t shortcuts_type,
+                                             const char *pkg_name)
+{
+       int ret = 0;
+
+       switch (shortcuts_type) {
+       case SET_SHORTCUTS_APP1:
+               ret = vconf_set_str(VCONFKEY_LOCKSCREEN_SHORTCUT1, pkg_name);
+               if (ret != 0) {
+                       LOCKOPTIONS_ERR("set failed");
+               }
+               break;
+       case SET_SHORTCUTS_APP2:
+               ret = vconf_set_str(VCONFKEY_LOCKSCREEN_SHORTCUT2, pkg_name);
+               if (ret != 0) {
+                       LOCKOPTIONS_ERR("set failed");
+               }
+               break;
+       case SET_SHORTCUTS_APP3:
+               ret = vconf_set_str(VCONFKEY_LOCKSCREEN_SHORTCUT3, pkg_name);
+               if (ret != 0) {
+                       LOCKOPTIONS_ERR("set failed");
+               }
+               break;
+       case SET_SHORTCUTS_APP4:
+               ret = vconf_set_str(VCONFKEY_LOCKSCREEN_SHORTCUT4, pkg_name);
+               if (ret != 0) {
+                       LOCKOPTIONS_ERR("set failed");
+               }
+               break;
+       default:
+               break;
+       }
+}
+
+static void _lockscreen_options_shortcuts_delete_cb_e(void *data, Evas * e,
+                                                   Evas_Object * obj,
+                                                   void *event_info)
+{
+       void *list_item_data = NULL;
+
+       if (options_shortcuts_edit_view_data == NULL) {
+               return;
+       }
+
+       EINA_LIST_FREE(options_shortcuts_edit_view_data->app_list, list_item_data) {
+               if (list_item_data) {
+                       free(list_item_data);
+                       list_item_data = NULL;
+               }
+       }
+       if (options_shortcuts_edit_view_data->gengrid) {
+               evas_object_del(options_shortcuts_edit_view_data->gengrid);
+               options_shortcuts_edit_view_data->gengrid = NULL;
+       }
+       if (options_shortcuts_edit_view_data) {
+               free(options_shortcuts_edit_view_data);
+               options_shortcuts_edit_view_data = NULL;
+       }
+}
+
+static void _lockscreen_options_shortcuts_back_cb_e(void *data, Evas_Object * obj,
+                                                 void *event_info)
+{
+       lockscreen_options_ug_data *ug_data =
+           (lockscreen_options_ug_data *) data;
+       if (ug_data == NULL) {
+               return;
+       }
+       Evas_Object *navi_bar = ug_data->navi_bar;
+
+       if (navi_bar == NULL) {
+               LOCKOPTIONS_ERR("navi_bar is null.");
+               return;
+       }
+
+       elm_naviframe_item_pop(navi_bar);
+}
+
+static void _lockscreen_options_grid_moved_cb_e(void *data, Evas_Object * obj,
+                                             void *event_info)
+{
+       options_shortcuts_edit_view_data->is_moved = EINA_TRUE;
+}
+
+static void _lockscreen_options_shortcuts_done_cb_e(void *data, Evas_Object * obj,
+                                                 void *event_info)
+{
+       lockscreen_options_ug_data *ug_data =
+           (lockscreen_options_ug_data *) data;
+       if (ug_data == NULL) {
+               return;
+       }
+
+    int index = 0;
+       Elm_Object_Item *object_item = NULL;
+       shortcuts_item_s *shortcuts_item = NULL;
+
+       object_item = elm_gengrid_first_item_get(options_shortcuts_edit_view_data->gengrid);
+       while (object_item) {
+               shortcuts_item = elm_object_item_data_get(object_item);
+               if (shortcuts_item) {
+                       shortcuts_item->index = index;
+                       if ((shortcuts_item->pkg_name == NULL)
+                           || (strlen(shortcuts_item->pkg_name) == 0)
+                           || (strcmp(shortcuts_item->pkg_name, "(null)") ==
+                               0)) {
+                               _lockscreen_options_shortcuts_set_e(index, "");
+                       } else {
+                               _lockscreen_options_shortcuts_set_e(index,
+                                                                 shortcuts_item->pkg_name);
+                       }
+               }
+               object_item = elm_gengrid_item_next_get(object_item);
+               index++;
+       }
+       while(index<4)
+       {
+               _lockscreen_options_shortcuts_set_e(index, "");
+               index++;
+       }
+       Evas_Object *navi_bar = ug_data->navi_bar;
+
+       if (navi_bar == NULL) {
+               LOCKOPTIONS_ERR("navi_bar is null.");
+               return;
+       }
+       elm_naviframe_item_pop(navi_bar);
+       lockscreen_options_shortcuts_update_view();
+}
+
+static void _lockscreen_options_grid_del_e(void *data, Evas_Object * obj)
+{
+       shortcuts_item_s *shortcuts_item = (shortcuts_item_s *) data;
+
+       if (shortcuts_item == NULL) {
+               return;
+       }
+       if (shortcuts_item->pkg_name) {
+               free(shortcuts_item->pkg_name);
+               shortcuts_item->pkg_name = NULL;
+       }
+       free(shortcuts_item);
+       shortcuts_item = NULL;
+}
+
+static void _lockscreen_options_shortcuts_thumbnail_delete_cb_e(void *data,
+                                                             Evas_Object * obj,
+                                                             void *event_info)
+{
+       LOCKOPTIONS_DBG("_lockscreen_options_shortcuts_thumbnail_delete_cb");
+       shortcuts_item_s *shortcuts_item = (shortcuts_item_s *) data;
+
+       if (shortcuts_item == NULL || options_shortcuts_edit_view_data->is_moved == EINA_TRUE) {
+               options_shortcuts_edit_view_data->is_moved = EINA_FALSE;
+               return;
+       }
+
+       delete_icons[shortcuts_item->index] = true;
+
+       elm_gengrid_clear(options_shortcuts_edit_view_data->gengrid);
+
+       Evas_Object *gengrid = options_shortcuts_edit_view_data->gengrid;
+
+       evas_object_smart_callback_add(gengrid, "moved",
+                                      _lockscreen_options_grid_moved_cb_e, NULL);
+
+       gic.item_style = "default_grid";
+       gic.func.text_get = NULL;
+       gic.func.content_get = _lockscreen_options_grid_content_get_e;
+       gic.func.state_get = NULL;
+       gic.func.del = _lockscreen_options_grid_del_e;
+
+       char *pkg_name1 = NULL;
+       char *pkg_name2 = NULL;
+       char *pkg_name3 = NULL;
+       char *pkg_name4 = NULL;
+       pkg_name1 = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT1);
+       pkg_name2 = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT2);
+       pkg_name3 = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT3);
+       pkg_name4 = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT4);
+
+       if((delete_icons[0] == false) && (pkg_name1 != NULL && strlen(pkg_name1) != 0))
+       {
+               shortcuts_item_s *shortcuts_item = (shortcuts_item_s *) calloc(1, sizeof(shortcuts_item_s));
+               shortcuts_item->index = 0;
+               shortcuts_item->item = elm_gengrid_item_append(gengrid, &gic,
+                       (void *)shortcuts_item, NULL, (void *)shortcuts_item);
+    }
+       if((delete_icons[1] == false) && (pkg_name2 != NULL && strlen(pkg_name2) != 0))
+       {
+               shortcuts_item_s *shortcuts_item = (shortcuts_item_s *) calloc(1, sizeof(shortcuts_item_s));
+               shortcuts_item->index = 1;
+               shortcuts_item->item = elm_gengrid_item_append(gengrid, &gic,
+                       (void *)shortcuts_item, NULL, (void *)shortcuts_item);
+       }
+       if((delete_icons[2] == false) && (pkg_name3 != NULL && strlen(pkg_name3) != 0))
+       {
+               shortcuts_item_s *shortcuts_item = (shortcuts_item_s *) calloc(1, sizeof(shortcuts_item_s));
+               shortcuts_item->index = 2;
+               shortcuts_item->item = elm_gengrid_item_append(gengrid, &gic,
+                       (void *)shortcuts_item, NULL, (void *)shortcuts_item);
+       }
+       if((delete_icons[3] == false) && (pkg_name4 != NULL && strlen(pkg_name4) != 0))
+       {
+               shortcuts_item_s *shortcuts_item = (shortcuts_item_s *) calloc(1, sizeof(shortcuts_item_s));
+               shortcuts_item->index = 3;
+               shortcuts_item->item = elm_gengrid_item_append(gengrid, &gic,
+                       (void *)shortcuts_item, NULL, (void *)shortcuts_item);
+       }
+
+       if(pkg_name1 != NULL)
+       {
+               free(pkg_name1);
+               pkg_name1 = NULL;
+       }
+       if(pkg_name2 != NULL)
+       {
+               free(pkg_name2);
+               pkg_name2 = NULL;
+       }
+       if(pkg_name3 != NULL)
+       {
+               free(pkg_name3);
+               pkg_name3 = NULL;
+       }
+       if(pkg_name4 != NULL)
+       {
+               free(pkg_name4);
+               pkg_name4 = NULL;
+       }
+}
+
+static Evas_Object *_lockscreen_options_grid_content_get_e(void *data,
+                                                        Evas_Object * obj,
+                                                        const char *part)
+{
+       char *icon_path = NULL;
+       Evas_Object *icon = NULL;
+       Evas_Object *button = NULL;
+       Evas_Object *layout = NULL;
+       shortcuts_item_s *shortcuts_item = (shortcuts_item_s *) data;
+       LOCKOPTIONS_DBG("_lockscreen_options_grid_content_get.");
+
+       if (shortcuts_item == NULL) {
+               return NULL;
+       }
+
+       if (!strcmp(part, "elm.swallow.icon")) {
+               layout =
+                   lockscreen_options_util_create_layout(obj,
+                                                         EDJE_DIR
+                                                         "/lockscreen-options.edj",
+                                                         "lockscreen.options.shortcuts.thumbnail.main");
+               icon_path = _lockscreen_options_icon_path_get_e(shortcuts_item);
+               icon = elm_icon_add(layout);
+               if (icon_path) {
+                       elm_icon_file_set(icon, icon_path, NULL);
+                       elm_object_part_content_set(layout,
+                                                   "elm.swallow.contents",
+                                                   icon);
+                       elm_icon_aspect_fixed_set(icon, EINA_FALSE);
+                       button = elm_button_add(layout);
+                       elm_object_style_set(button, "icon_minus");
+                       evas_object_pass_events_set(button, 1);
+                       evas_object_repeat_events_set(button, 0);
+                       evas_object_propagate_events_set(button, 0);
+                       elm_object_part_content_set(layout,
+                                                   "elm.swallow.button",
+                                                   button);
+                       evas_object_smart_callback_add(button, "clicked",
+                                                      _lockscreen_options_shortcuts_thumbnail_delete_cb_e,
+                                                      shortcuts_item);
+                       free(icon_path);
+                       icon_path = NULL;
+               } else {
+                       return NULL;
+               }
+               return layout;
+       }
+       return NULL;
+}
+
+static void _lockscreen_options_shortcuts_help_text_create_e(Evas_Object * parent)
+{
+       Evas_Object *title_label = NULL;
+       char buffer[1024] = { 0 };
+
+       title_label = elm_label_add(parent);
+       snprintf(buffer, sizeof(buffer),
+                "<font_size=40><align=center>%s</align></font_size>",
+                lockscreen_optoins_get_string
+                (IDS_LOCKSCREEN_OPTIONS_DRAG_DROP_SHORTCUTS));
+       elm_object_text_set(title_label, buffer);
+       evas_object_show(title_label);
+       elm_object_part_content_set(parent, "shortcuts.edit.help.title",
+                                   title_label);
+}
+
+static void _lockscreen_options_shortcuts_gengrid_create_e(Evas_Object * parent)
+{
+       char *pkg_name1 = NULL;
+       char *pkg_name2 = NULL;
+       char *pkg_name3 = NULL;
+       char *pkg_name4 = NULL;
+       pkg_name1 = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT1);
+       pkg_name2 = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT2);
+       pkg_name3 = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT3);
+       pkg_name4 = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT4);
+
+       Evas_Coord window_width = 0;
+       Evas_Coord window_height = 0;
+       Evas_Object *gengrid = NULL;
+
+       gengrid = elm_gengrid_add(parent);
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &window_width, &window_height);
+       elm_gengrid_item_size_set(gengrid, window_width / 4,
+                                       GENGRID_ITEM_HEIGHT * window_height /
+                                       WINDOW_HEIGHT);
+       elm_gengrid_align_set(gengrid, 0.5, 0.0);
+       elm_gengrid_reorder_mode_set(gengrid, EINA_TRUE),
+       evas_object_show(gengrid);
+       elm_object_part_content_set(parent, "shortcuts.gengrid", gengrid);
+
+       evas_object_smart_callback_add(gengrid, "moved",
+                                      _lockscreen_options_grid_moved_cb_e, NULL);
+       options_shortcuts_edit_view_data->gengrid = gengrid;
+
+       gic.item_style = "default_grid";
+       gic.func.text_get = NULL;
+       gic.func.content_get = _lockscreen_options_grid_content_get_e;
+       gic.func.state_get = NULL;
+       gic.func.del = _lockscreen_options_grid_del_e;
+
+       if(pkg_name1 != NULL && strlen(pkg_name1) != 0)
+       {
+               shortcuts_item_s *shortcuts_item = (shortcuts_item_s *) calloc(1, sizeof(shortcuts_item_s));
+               shortcuts_item->index = 0;
+               shortcuts_item->item = elm_gengrid_item_append(gengrid, &gic,
+                       (void *)shortcuts_item, NULL, (void *)shortcuts_item);
+       }
+
+       if(pkg_name2 != NULL && strlen(pkg_name2) != 0)
+       {
+               shortcuts_item_s *shortcuts_item = (shortcuts_item_s *) calloc(1, sizeof(shortcuts_item_s));
+               shortcuts_item->index = 1;
+               shortcuts_item->item = elm_gengrid_item_append(gengrid, &gic,
+                       (void *)shortcuts_item, NULL, (void *)shortcuts_item);
+       }
+
+       if(pkg_name3 != NULL && strlen(pkg_name3) != 0)
+       {
+               shortcuts_item_s *shortcuts_item = (shortcuts_item_s *) calloc(1, sizeof(shortcuts_item_s));
+               shortcuts_item->index = 2;
+               shortcuts_item->item = elm_gengrid_item_append(gengrid, &gic,
+                       (void *)shortcuts_item, NULL, (void *)shortcuts_item);
+       }
+
+       if(pkg_name4 != NULL && strlen(pkg_name4) != 0)
+       {
+               shortcuts_item_s *shortcuts_item = (shortcuts_item_s *) calloc(1, sizeof(shortcuts_item_s));
+               shortcuts_item->index = 3;
+               shortcuts_item->item = elm_gengrid_item_append(gengrid, &gic,
+                       (void *)shortcuts_item, NULL, (void *)shortcuts_item);
+       }
+
+       if(pkg_name1 != NULL)
+       {
+               free(pkg_name1);
+               pkg_name1 = NULL;
+       }
+       if(pkg_name2 != NULL)
+       {
+               free(pkg_name2);
+               pkg_name2 = NULL;
+       }
+       if(pkg_name3 != NULL)
+       {
+               free(pkg_name3);
+               pkg_name3 = NULL;
+       }
+       if(pkg_name4 != NULL)
+       {
+               free(pkg_name4);
+               pkg_name4 = NULL;
+       }
+}
+
+void lockscreen_options_shortcuts_create_edit_view(void *data)
+{
+       lockscreen_options_ug_data *ug_data =
+           (lockscreen_options_ug_data *) data;
+       if (ug_data == NULL) {
+        LOCKOPTIONS_ERR("ug is NULL");
+               return;
+       }
+       Evas_Object *navi_bar = ug_data->navi_bar;
+       Evas_Object *layout = NULL;
+
+       if (navi_bar == NULL) {
+               LOCKOPTIONS_ERR("navi_bar is null.");
+               return;
+       }
+
+       options_shortcuts_edit_view_data =
+           (options_shortcuts_edit_view_s *) calloc(1,
+                                               sizeof
+                                               (options_shortcuts_edit_view_s));
+       options_shortcuts_edit_view_data->ug_data = ug_data;
+
+       layout =
+           lockscreen_options_util_create_layout(navi_bar,
+                                                 EDJE_DIR
+                                                 "/lockscreen-options.edj",
+                                                 "lockscreen.options.shortcuts.main");
+       _lockscreen_options_shortcuts_help_text_create_e(layout);
+       _lockscreen_options_shortcuts_gengrid_create_e(layout);
+
+       Evas_Object *done_button = elm_button_add(navi_bar);
+       Evas_Object *cancel_button = elm_button_add(navi_bar);
+       elm_object_style_set(done_button, "naviframe/toolbar/default");
+       elm_object_text_set(done_button, _S("IDS_COM_SK_DONE"));
+       evas_object_smart_callback_add(done_button, "clicked", _lockscreen_options_shortcuts_done_cb_e, ug_data);
+       elm_object_style_set(cancel_button, "naviframe/toolbar/default");
+       elm_object_text_set(cancel_button, _S("IDS_COM_POP_CANCEL"));
+       evas_object_smart_callback_add(cancel_button, "clicked", _lockscreen_options_shortcuts_back_cb_e, ug_data);
+
+       evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL,
+                               _lockscreen_options_shortcuts_delete_cb_e, NULL);
+
+       Elm_Object_Item *navi_item = elm_naviframe_item_push(navi_bar, lockscreen_optoins_get_string(IDS_LOCKSCREEN_OPTIONS_EDIT_SHORTCUTS), NULL, NULL, layout, NULL);
+       elm_object_item_part_content_set(navi_item, "prev_btn", NULL);
+       elm_object_item_part_content_set(navi_item , "toolbar_button1", done_button);
+       elm_object_item_part_content_set(navi_item , "toolbar_button2", cancel_button);
+
+       int i;
+       for(i = 0;i < 4;i++)
+       {
+               delete_icons[i] = false;
+       }
+}
diff --git a/lock-setting/lockscreen-options/src/lockscreen-options-shortcuts.c b/lock-setting/lockscreen-options/src/lockscreen-options-shortcuts.c
new file mode 100755 (executable)
index 0000000..5844852
--- /dev/null
@@ -0,0 +1,803 @@
+ /*
+  * 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 <Elementary.h>
+#include <Ecore_X.h>
+#include <ail.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+
+#include "lockscreen-options.h"
+#include "lockscreen-options-debug.h"
+#include "lockscreen-options-util.h"
+#include "lockscreen-options-shortcuts.h"
+#include "lockscreen-options-shortcuts-edit.h"
+
+
+#define EDJE_DIR                    "/usr/ug/res/edje/ug-lockscreen-options-efl"
+#define IMAGES_DIR                  "/usr/ug/res/images/ug-lockscreen-options-efl"
+#define GENGRID_ITEM_HEIGHT         188
+#define WINDOW_HEIGHT               1280
+
+typedef enum {
+       SET_SHORTCUTS_APP1 = 0,
+       SET_SHORTCUTS_APP2,
+       SET_SHORTCUTS_APP3,
+       SET_SHORTCUTS_APP4
+} shortcuts_type_t;
+
+typedef struct {
+       int index;
+       char *app_icon;
+       char *app_name;
+       char *pkg_name;
+} app_list_item_s;
+
+typedef struct {
+       int index;
+       char *pkg_name;
+       Elm_Object_Item *item;
+} shortcuts_item_s;
+
+typedef struct {
+       lockscreen_options_ug_data *ug_data;
+       Evas_Object *gengrid;
+       Eina_List *app_list;
+       shortcuts_type_t shortcuts_type;
+       Elm_Object_Item *selected_gengrid_item;
+       Eina_Bool is_moved;
+} options_shortcuts_view_s;
+
+static Elm_Gengrid_Item_Class gic;
+static Elm_Genlist_Item_Class ltc;
+static options_shortcuts_view_s *options_shortcuts_view_data = NULL;
+static Evas_Object *edit_item = NULL;
+
+static Eina_Bool _lockscreen_options_package_name_compare(const char *pkg_name)
+{
+       char *temp_name = NULL;
+
+       temp_name = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT1);
+       if ((temp_name != NULL) && (strcmp(pkg_name, temp_name) == 0)) {
+               LOCKOPTIONS_DBG("pkg_name is %s", pkg_name);
+               free(temp_name);
+               temp_name = NULL;
+               return EINA_TRUE;
+       }
+
+       temp_name = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT2);
+       if ((temp_name != NULL) && (strcmp(pkg_name, temp_name) == 0)) {
+               LOCKOPTIONS_DBG("pkg_name is %s", pkg_name);
+               free(temp_name);
+               temp_name = NULL;
+               return EINA_TRUE;
+       }
+
+       temp_name = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT3);
+       if ((temp_name != NULL) && (strcmp(pkg_name, temp_name) == 0)) {
+               LOCKOPTIONS_DBG("pkg_name is %s", pkg_name);
+               free(temp_name);
+               temp_name = NULL;
+               return EINA_TRUE;
+       }
+
+       temp_name = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT4);
+       if ((temp_name != NULL) && (strcmp(pkg_name, temp_name) == 0)) {
+               LOCKOPTIONS_DBG("pkg_name is %s", pkg_name);
+               free(temp_name);
+               temp_name = NULL;
+               return EINA_TRUE;
+       }
+
+       return EINA_FALSE;
+}
+
+static char *_lockscreen_options_icon_path_get(shortcuts_item_s *
+                                              shortcuts_item)
+{
+       ail_appinfo_h handle;
+       ail_error_e ret;
+       char *pkg_name = NULL;
+       char *temp = NULL;
+       char *icon_path = NULL;
+       shortcuts_type_t shortcuts_type = SET_SHORTCUTS_APP1;
+
+       if (shortcuts_item == NULL) {
+               return NULL;
+       }
+
+       shortcuts_type = shortcuts_item->index;
+
+       switch (shortcuts_type) {
+       case SET_SHORTCUTS_APP1:
+               pkg_name = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT1);
+               LOCKOPTIONS_ERR("pkg_name is %s", pkg_name);
+               break;
+       case SET_SHORTCUTS_APP2:
+               pkg_name = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT2);
+               LOCKOPTIONS_ERR("pkg_name is %s", pkg_name);
+               break;
+       case SET_SHORTCUTS_APP3:
+               pkg_name = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT3);
+               LOCKOPTIONS_ERR("pkg_name is %s", pkg_name);
+               break;
+       case SET_SHORTCUTS_APP4:
+               pkg_name = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT4);
+               LOCKOPTIONS_ERR("pkg_name is %s", pkg_name);
+               break;
+       default:
+               break;
+       }
+
+       if (pkg_name == NULL || strlen(pkg_name) == 0) {
+               LOCKOPTIONS_ERR("pkg_name is NULL");
+               return NULL;
+       }
+       shortcuts_item->pkg_name = strdup(pkg_name);
+
+       ret = ail_get_appinfo(pkg_name, &handle);
+       if (ret != AIL_ERROR_OK) {
+               LOCKOPTIONS_ERR("Fail to ail_get_appinfo");
+               return NULL;
+       }
+
+       ret = ail_appinfo_get_str(handle, AIL_PROP_ICON_STR, &temp);
+       if (ret != AIL_ERROR_OK) {
+               LOCKOPTIONS_ERR("Fail to ail_appinfo_get_str");
+               ail_destroy_appinfo(handle);
+               return NULL;
+       }
+
+       if (temp) {
+               icon_path = strdup(temp);
+       }
+
+       ret = ail_destroy_appinfo(handle);
+       if (ret != AIL_ERROR_OK) {
+               LOCKOPTIONS_ERR("Fail to ail_destroy_appinfo");
+       }
+
+       if (pkg_name) {
+               free(pkg_name);
+               pkg_name = NULL;
+       }
+       return icon_path;
+}
+
+static void _lockscreen_options_shortcuts_set(shortcuts_type_t shortcuts_type,
+                                             const char *pkg_name)
+{
+       int ret = 0;
+
+       switch (shortcuts_type) {
+       case SET_SHORTCUTS_APP1:
+               ret = vconf_set_str(VCONFKEY_LOCKSCREEN_SHORTCUT1, pkg_name);
+               if (ret != 0) {
+                       LOCKOPTIONS_ERR("set failed");
+               }
+               break;
+       case SET_SHORTCUTS_APP2:
+               ret = vconf_set_str(VCONFKEY_LOCKSCREEN_SHORTCUT2, pkg_name);
+               if (ret != 0) {
+                       LOCKOPTIONS_ERR("set failed");
+               }
+               break;
+       case SET_SHORTCUTS_APP3:
+               ret = vconf_set_str(VCONFKEY_LOCKSCREEN_SHORTCUT3, pkg_name);
+               if (ret != 0) {
+                       LOCKOPTIONS_ERR("set failed");
+               }
+               break;
+       case SET_SHORTCUTS_APP4:
+               ret = vconf_set_str(VCONFKEY_LOCKSCREEN_SHORTCUT4, pkg_name);
+               if (ret != 0) {
+                       LOCKOPTIONS_ERR("set failed");
+               }
+               break;
+       default:
+               break;
+       }
+}
+
+ail_cb_ret_e _lockscreen_options_appinfo_func(const ail_appinfo_h appinfo,
+                                             void *user_data)
+{
+       char *pkg_name = NULL;
+       char *app_name = NULL;
+       char *app_icon = NULL;
+       int index = 0;
+       Eina_Bool is_same = EINA_FALSE;
+
+       if (AIL_ERROR_OK !=
+           ail_appinfo_get_str(appinfo, AIL_PROP_PACKAGE_STR, &pkg_name)) {
+               LOCKOPTIONS_ERR("cannot get package name");
+       }
+
+       is_same = _lockscreen_options_package_name_compare(pkg_name);
+
+       LOCKOPTIONS_DBG("is_same = %d", is_same);
+       if (is_same == EINA_FALSE) {
+               app_list_item_s *list_item =
+                   (app_list_item_s *) calloc(1, sizeof(app_list_item_s));
+
+               if (pkg_name) {
+                       list_item->pkg_name = strdup(pkg_name);
+               }
+
+               if (AIL_ERROR_OK !=
+                   ail_appinfo_get_str(appinfo, AIL_PROP_NAME_STR,
+                                       &app_name)) {
+                       LOCKOPTIONS_ERR("cannot get App name");
+               }
+               if (AIL_ERROR_OK !=
+                   ail_appinfo_get_str(appinfo, AIL_PROP_ICON_STR,
+                                       &app_icon)) {
+                       LOCKOPTIONS_ERR("cannot get App icon");
+               }
+               list_item->index = index;
+               if (app_name) {
+                       list_item->app_name = strdup(app_name);
+               }
+               if (app_icon && (strcmp(app_icon, "(null)") != 0)) {
+                       list_item->app_icon = strdup(app_icon);
+               } else {
+                       list_item->app_icon =
+                           strdup(IMAGES_DIR "/mainmenu_icon.png");
+               }
+               options_shortcuts_view_data->app_list =
+                   eina_list_append(options_shortcuts_view_data->app_list,
+                                    list_item);
+               index++;
+       }
+
+       return AIL_CB_RET_CONTINUE;
+}
+
+void _lockscreen_options_list_all_packages()
+{
+       ail_filter_h filter;
+       ail_error_e ret;
+
+       ret = ail_filter_new(&filter);
+       if (ret != AIL_ERROR_OK) {
+               return;
+       }
+
+       ret = ail_filter_add_bool(filter, AIL_PROP_X_SLP_TASKMANAGE_BOOL, true);
+       if (ret != AIL_ERROR_OK) {
+               return;
+       }
+
+       ret = ail_filter_add_bool(filter, AIL_PROP_NODISPLAY_BOOL, false);
+       if (ret != AIL_ERROR_OK) {
+               return;
+       }
+
+       ret = ail_filter_add_str(filter, AIL_PROP_TYPE_STR, "Application");
+       if (ret != AIL_ERROR_OK) {
+               return;
+       }
+
+       ail_filter_list_appinfo_foreach(filter,
+                                       _lockscreen_options_appinfo_func, NULL);
+       ail_filter_destroy(filter);
+}
+
+static void _lockscreen_options_select_apps_delete_cb(void *data, Evas * e,
+                                                     Evas_Object * obj,
+                                                     void *event_info)
+{
+       void *list_item_data = NULL;
+
+       EINA_LIST_FREE(options_shortcuts_view_data->app_list, list_item_data) {
+               if (list_item_data) {
+                       free(list_item_data);
+                       list_item_data = NULL;
+               }
+       }
+}
+
+static void _lockscreen_options_shortcuts_delete_cb(void *data, Evas * e,
+                                                   Evas_Object * obj,
+                                                   void *event_info)
+{
+       void *list_item_data = NULL;
+
+       if (options_shortcuts_view_data == NULL) {
+               return;
+       }
+
+       EINA_LIST_FREE(options_shortcuts_view_data->app_list, list_item_data) {
+               if (list_item_data) {
+                       free(list_item_data);
+                       list_item_data = NULL;
+               }
+       }
+       if (options_shortcuts_view_data->gengrid) {
+               evas_object_del(options_shortcuts_view_data->gengrid);
+               options_shortcuts_view_data->gengrid = NULL;
+       }
+       if (options_shortcuts_view_data) {
+               free(options_shortcuts_view_data);
+               options_shortcuts_view_data = NULL;
+       }
+}
+
+static void _lockscreen_options_shortcuts_back_cb(void *data, Evas_Object * obj,
+                                                 void *event_info)
+{
+       lockscreen_options_ug_data *ug_data =
+           (lockscreen_options_ug_data *) data;
+       if (ug_data == NULL) {
+               return;
+       }
+       Evas_Object *navi_bar = ug_data->navi_bar;
+
+       if (navi_bar == NULL) {
+               LOCKOPTIONS_ERR("navi_bar is null.");
+               return;
+       }
+
+       elm_naviframe_item_pop(navi_bar);
+}
+
+//not used now
+static void _lockscreen_options_shortcuts_thumbnail_delete_cb(void *data,
+                                                             Evas_Object * obj,
+                                                             void *event_info)
+{
+       LOCKOPTIONS_DBG("_lockscreen_options_shortcuts_thumbnail_delete_cb");
+       Elm_Object_Item *object_item = NULL;
+       shortcuts_item_s *shortcuts_item = (shortcuts_item_s *) data;
+
+       if (shortcuts_item == NULL) {
+               return;
+       }
+
+       _lockscreen_options_shortcuts_set(shortcuts_item->index, "");
+
+       object_item =
+           elm_gengrid_first_item_get(options_shortcuts_view_data->gengrid);
+       while (object_item) {
+               shortcuts_item_s *shortcuts_item_info = NULL;
+               shortcuts_item_info = elm_object_item_data_get(object_item);
+               if (shortcuts_item->index == shortcuts_item_info->index) {
+                       elm_gengrid_item_update(object_item);
+               }
+               object_item = elm_gengrid_item_next_get(object_item);
+       }
+}
+
+//not used now
+static void _lockscreen_options_grid_moved_cb(void *data, Evas_Object * obj,
+                                             void *event_info)
+{
+       int index = 0;
+       Elm_Object_Item *object_item = NULL;
+       shortcuts_item_s *shortcuts_item = NULL;
+
+       options_shortcuts_view_data->is_moved = EINA_TRUE;
+
+       object_item =
+           elm_gengrid_first_item_get(options_shortcuts_view_data->gengrid);
+       while (object_item) {
+               shortcuts_item = elm_object_item_data_get(object_item);
+               if (shortcuts_item) {
+                       LOCKOPTIONS_DBG
+                           ("index = %d, shortcuts_item->pkg_name = %s.",
+                            index, shortcuts_item->pkg_name);
+                       shortcuts_item->index = index;
+                       if ((shortcuts_item->pkg_name == NULL)
+                           || (strlen(shortcuts_item->pkg_name) == 0)
+                           || (strcmp(shortcuts_item->pkg_name, "(null)") ==
+                               0)) {
+                               _lockscreen_options_shortcuts_set(index, "");
+                       } else {
+                               _lockscreen_options_shortcuts_set(index,
+                                                                 shortcuts_item->pkg_name);
+                       }
+               }
+               object_item = elm_gengrid_item_next_get(object_item);
+               index++;
+       }
+}
+
+static void _lockscreen_options_gengrid_select_cb(void *data, Evas_Object * obj,
+                                                 const char *emission,
+                                                 const char *source)
+{
+       shortcuts_item_s *shortcuts_item = (shortcuts_item_s *) data;
+
+       if (shortcuts_item == NULL
+           || options_shortcuts_view_data->is_moved == EINA_TRUE) {
+               options_shortcuts_view_data->is_moved = EINA_FALSE;
+               return;
+       }
+       LOCKOPTIONS_DBG("_lockscreen_options_gengrid_select_cb.");
+       if (shortcuts_item->item != NULL) {
+               options_shortcuts_view_data->selected_gengrid_item =
+                   shortcuts_item->item;
+               elm_gengrid_item_selected_set(shortcuts_item->item, EINA_FALSE);
+               _lockscreen_options_select_applications_create
+                   (shortcuts_item->index);
+       }
+}
+
+static Evas_Object *_lockscreen_options_grid_content_get(void *data,
+                                                        Evas_Object * obj,
+                                                        const char *part)
+{
+       char *icon_path = NULL;
+       Evas_Object *icon = NULL;
+       Evas_Object *layout = NULL;
+       shortcuts_item_s *shortcuts_item = (shortcuts_item_s *) data;
+       LOCKOPTIONS_DBG("_lockscreen_options_grid_content_get.");
+
+       if (shortcuts_item == NULL) {
+               return NULL;
+       }
+
+       if (!strcmp(part, "elm.swallow.icon")) {
+               layout =
+                   lockscreen_options_util_create_layout(obj,
+                                                         EDJE_DIR
+                                                         "/lockscreen-options.edj",
+                                                         "lockscreen.options.shortcuts.thumbnail.main");
+               icon_path = _lockscreen_options_icon_path_get(shortcuts_item);
+               icon = elm_icon_add(layout);
+               if (icon_path) {
+                       elm_icon_file_set(icon, icon_path, NULL);
+                       elm_object_part_content_set(layout,
+                                                   "elm.swallow.contents",
+                                                   icon);
+                       elm_icon_aspect_fixed_set(icon, EINA_FALSE);
+                       /*button = elm_button_add(layout);
+                       elm_object_style_set(button, "minus/extended");
+                       evas_object_pass_events_set(button, 1);
+                       evas_object_repeat_events_set(button, 0);
+                       evas_object_propagate_events_set(button, 0);
+                       elm_object_part_content_set(layout,
+                                                   "elm.swallow.button",
+                                                   button);
+                       evas_object_smart_callback_add(button, "clicked",
+                                                      _lockscreen_options_shortcuts_thumbnail_delete_cb,
+                                                      shortcuts_item);*/
+                       free(icon_path);
+                       icon_path = NULL;
+               } else {
+                       elm_icon_file_set(icon, IMAGES_DIR "/icon_add.png",
+                                         NULL);
+                       elm_object_part_content_set(layout,
+                                                   "elm.swallow.contents",
+                                                   icon);
+               }
+               edje_object_signal_callback_add(elm_layout_edje_get(layout),
+                                               "mouse,clicked,*", "background",
+                                               _lockscreen_options_gengrid_select_cb,
+                                               shortcuts_item);
+               return layout;
+       }
+       return NULL;
+}
+
+static void _lockscreen_options_grid_del(void *data, Evas_Object * obj)
+{
+       shortcuts_item_s *shortcuts_item = (shortcuts_item_s *) data;
+
+       if (shortcuts_item == NULL) {
+               return;
+       }
+       if (shortcuts_item->pkg_name) {
+               free(shortcuts_item->pkg_name);
+               shortcuts_item->pkg_name = NULL;
+       }
+       free(shortcuts_item);
+       shortcuts_item = NULL;
+}
+
+static void _lockscreen_options_shortcuts_help_text_create(Evas_Object * parent)
+{
+       Evas_Object *title_label = NULL;
+       Evas_Object *contents_label = NULL;
+       char buffer[1024] = { 0 };
+
+       title_label = elm_label_add(parent);
+       snprintf(buffer, sizeof(buffer),
+                "<font_size=40><align=center>%s</align></font_size>",
+                lockscreen_optoins_get_string
+                (IDS_LOCKSCREEN_OPTIONS_SET_SHORTCUTS_ON_LOCKSCREEN));
+       elm_object_text_set(title_label, buffer);
+       evas_object_show(title_label);
+       elm_object_part_content_set(parent, "shortcuts.help.title",
+                                   title_label);
+
+       contents_label = elm_label_add(parent);
+       snprintf(buffer, sizeof(buffer),
+                "<font_size=32><align=center><color=#7C7C7C>%s</color></align></font_size>",
+                lockscreen_optoins_get_string
+                (IDS_LOCKSCREEN_OPTIONS_TAP_SHORTCUTS));
+       elm_object_text_set(contents_label, buffer);
+       evas_object_show(contents_label);
+       elm_object_part_content_set(parent, "shortcuts.help.contents",
+                                   contents_label);
+}
+
+static void _lockscreen_options_shortcuts_gengrid_create(Evas_Object * parent)
+{
+       Evas_Coord window_width = 0;
+       Evas_Coord window_height = 0;
+       Evas_Object *gengrid = NULL;
+       int index = 0;
+
+       gengrid = elm_gengrid_add(parent);
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &window_width,
+                               &window_height);
+       elm_gengrid_item_size_set(gengrid, window_width / 4,
+                                 GENGRID_ITEM_HEIGHT * window_height /
+                                 WINDOW_HEIGHT);
+       elm_gengrid_align_set(gengrid, 0.5, 0.0);
+       //elm_gengrid_reorder_mode_set(gengrid, EINA_TRUE),
+           evas_object_show(gengrid);
+       elm_object_part_content_set(parent, "shortcuts.gengrid", gengrid);
+
+       /*evas_object_smart_callback_add(gengrid, "moved",
+                                      _lockscreen_options_grid_moved_cb, NULL);*/
+       options_shortcuts_view_data->gengrid = gengrid;
+
+       gic.item_style = "default_grid";
+       gic.func.text_get = NULL;
+       gic.func.content_get = _lockscreen_options_grid_content_get;
+       gic.func.state_get = NULL;
+       gic.func.del = _lockscreen_options_grid_del;
+
+       for (index = 0; index <= SET_SHORTCUTS_APP4; index++) {
+               shortcuts_item_s *shortcuts_item =
+                   (shortcuts_item_s *) calloc(1, sizeof(shortcuts_item_s));
+               shortcuts_item->index = index;
+               shortcuts_item->item =
+                   elm_gengrid_item_append(gengrid, &gic,
+                                           (void *)shortcuts_item, NULL,
+                                           (void *)shortcuts_item);
+       }
+}
+
+static char *_lockscreen_options_gl_text_get(void *data, Evas_Object * obj,
+                                            const char *part)
+{
+       int index = (int)data;
+       app_list_item_s *list_item = (app_list_item_s *)
+           eina_list_nth(options_shortcuts_view_data->app_list, index);
+
+       if (list_item == NULL || list_item->app_name == NULL) {
+               return NULL;
+       }
+
+       if (!strcmp(part, "elm.text")) {
+               return strdup(list_item->app_name);
+       }
+       return NULL;
+}
+
+static Evas_Object *_lockscreen_options_gl_content_get(void *data,
+                                                      Evas_Object * obj,
+                                                      const char *part)
+{
+       int index = (int)data;
+       Evas_Object *icon = NULL;
+       app_list_item_s *list_item = (app_list_item_s *)
+           eina_list_nth(options_shortcuts_view_data->app_list, index);
+
+       if (list_item == NULL || list_item->app_icon == NULL) {
+               return NULL;
+       }
+
+       if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.swallow.icon")) {
+               icon = elm_icon_add(obj);
+               elm_icon_file_set(icon, list_item->app_icon, NULL);
+               return icon;
+       }
+
+       return NULL;
+}
+
+static void _lockscreen_options_gl_options_sel(void *data, Evas_Object * obj,
+                                              void *event_info)
+{
+       Elm_Object_Item *item = (Elm_Object_Item *) event_info;
+       int index = (int)data;
+       app_list_item_s *list_item = (app_list_item_s *)
+           eina_list_nth(options_shortcuts_view_data->app_list, index);
+
+       if (list_item == NULL || list_item->pkg_name == NULL) {
+               return;
+       }
+       LOCKOPTIONS_DBG("list_item->pkg_name = %s", list_item->pkg_name);
+       if (item != NULL) {
+               elm_genlist_item_selected_set(item, EINA_FALSE);
+               _lockscreen_options_shortcuts_set
+                   (options_shortcuts_view_data->shortcuts_type,
+                    list_item->pkg_name);
+               elm_gengrid_item_update
+                   (options_shortcuts_view_data->selected_gengrid_item);
+       }
+       elm_naviframe_item_pop(options_shortcuts_view_data->ug_data->navi_bar);
+       Eina_Bool is_have = EINA_FALSE;
+       is_have = lockscreen_options_shortcuts_check_items();
+       if(is_have == EINA_TRUE){
+               elm_object_disabled_set(edit_item, EINA_FALSE);
+       }else{
+               elm_object_disabled_set(edit_item, EINA_TRUE);
+       }
+}
+
+void _lockscreen_options_select_applications_create(shortcuts_type_t
+                                                   shortcuts_type)
+{
+       Evas_Object *genlist = NULL;
+       int index = 0;
+
+       _lockscreen_options_list_all_packages();
+
+       options_shortcuts_view_data->shortcuts_type = shortcuts_type;
+       genlist =
+           elm_genlist_add(options_shortcuts_view_data->ug_data->navi_bar);
+
+       ltc.item_style = "1text.1icon.2";
+       ltc.func.text_get = _lockscreen_options_gl_text_get;
+       ltc.func.content_get = _lockscreen_options_gl_content_get;
+       ltc.func.state_get = NULL;
+       ltc.func.del = NULL;
+
+       for (index = 0;
+            index < eina_list_count(options_shortcuts_view_data->app_list);
+            index++) {
+               elm_genlist_item_append(genlist, &ltc, (void *)index, NULL,
+                                       ELM_GENLIST_ITEM_NONE,
+                                       _lockscreen_options_gl_options_sel,
+                                       (void *)index);
+       }
+
+       evas_object_event_callback_add(genlist, EVAS_CALLBACK_DEL,
+                                      _lockscreen_options_select_apps_delete_cb,
+                                      NULL);
+       elm_naviframe_item_push(options_shortcuts_view_data->ug_data->navi_bar, lockscreen_optoins_get_string(IDS_LOCKSCREEN_OPTIONS_SELECT_APPLICATIONS), NULL, NULL, genlist, NULL);  /* the same tile */
+}
+
+static void _lockscreen_options_shortcuts_edit_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       lockscreen_options_shortcuts_create_edit_view(data);
+}
+
+void lockscreen_options_shortcuts_create_view(void *data)
+{
+       lockscreen_options_ug_data *ug_data =
+           (lockscreen_options_ug_data *) data;
+       if (ug_data == NULL) {
+               return;
+       }
+       Evas_Object *navi_bar = ug_data->navi_bar;
+       Evas_Object *layout = NULL;
+
+       if (navi_bar == NULL) {
+               LOCKOPTIONS_ERR("navi_bar is null.");
+               return;
+       }
+
+       options_shortcuts_view_data =
+           (options_shortcuts_view_s *) calloc(1,
+                                               sizeof
+                                               (options_shortcuts_view_s));
+       options_shortcuts_view_data->ug_data = ug_data;
+
+       layout =
+           lockscreen_options_util_create_layout(navi_bar,
+                                                 EDJE_DIR
+                                                 "/lockscreen-options.edj",
+                                                 "lockscreen.options.shortcuts.main");
+       _lockscreen_options_shortcuts_help_text_create(layout);
+       _lockscreen_options_shortcuts_gengrid_create(layout);
+
+       edit_item= elm_button_add(navi_bar);
+       elm_object_style_set(edit_item, "naviframe/toolbar/default");
+       elm_object_text_set(edit_item, _S("IDS_COM_BODY_EDIT"));
+       evas_object_smart_callback_add(edit_item, "clicked", _lockscreen_options_shortcuts_edit_cb, ug_data);
+
+       Evas_Object *back_button = elm_button_add(navi_bar);
+       elm_object_style_set(back_button, "naviframe/back_btn/default");
+       evas_object_smart_callback_add(back_button, "clicked", _lockscreen_options_shortcuts_back_cb, ug_data);
+       evas_object_event_callback_add(layout, EVAS_CALLBACK_DEL,
+                                       _lockscreen_options_shortcuts_delete_cb, NULL);
+
+
+       Elm_Object_Item *navi_item = elm_naviframe_item_push(navi_bar, lockscreen_optoins_get_string(IDS_LOCKSCREEN_OPTIONS_SET_SHORTCUTS), back_button, NULL, layout, NULL);   /* the same tile */
+       elm_object_item_part_content_set(navi_item , "toolbar_button1", edit_item);
+
+       Eina_Bool is_have = EINA_FALSE;
+       is_have = lockscreen_options_shortcuts_check_items();
+       if(is_have == EINA_TRUE){
+               elm_object_disabled_set(edit_item, EINA_FALSE);
+       }else{
+               elm_object_disabled_set(edit_item, EINA_TRUE);
+       }
+}
+
+void lockscreen_options_shortcuts_update_view()
+{
+       Elm_Object_Item *object_item = NULL;
+
+       object_item = elm_gengrid_first_item_get(options_shortcuts_view_data->gengrid);
+       while (object_item) {
+               elm_gengrid_item_update(object_item);
+               object_item = elm_gengrid_item_next_get(object_item);
+       }
+
+       Eina_Bool is_have = EINA_FALSE;
+       is_have = lockscreen_options_shortcuts_check_items();
+       if(is_have == EINA_TRUE){
+               elm_object_disabled_set(edit_item, EINA_FALSE);
+       }else{
+               elm_object_disabled_set(edit_item, EINA_TRUE);
+       }
+}
+
+Eina_Bool lockscreen_options_shortcuts_check_items()
+{
+       char *pkg_name1 = NULL;
+       char *pkg_name2 = NULL;
+       char *pkg_name3 = NULL;
+       char *pkg_name4 = NULL;
+       Eina_Bool is_have = EINA_FALSE;
+
+       pkg_name1 = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT1);
+       pkg_name2 = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT2);
+       pkg_name3 = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT3);
+       pkg_name4 = vconf_get_str(VCONFKEY_LOCKSCREEN_SHORTCUT4);
+
+       if((pkg_name1 == NULL || strlen(pkg_name1) == 0) && (pkg_name2 == NULL || strlen(pkg_name2) == 0)
+               && (pkg_name3 == NULL || strlen(pkg_name3) == 0) && (pkg_name4 == NULL || strlen(pkg_name4) == 0))
+       {
+               is_have = EINA_FALSE;
+               //elm_object_disabled_set(edit_item, EINA_TRUE);
+       }
+       else
+       {
+               is_have = EINA_TRUE;
+               //elm_object_disabled_set(edit_item, EINA_FALSE);
+       }
+       if(pkg_name1 != NULL)
+       {
+               free(pkg_name1);
+               pkg_name1 = NULL;
+       }
+       if(pkg_name2 != NULL)
+       {
+               free(pkg_name2);
+               pkg_name2 = NULL;
+       }
+       if(pkg_name3 != NULL)
+       {
+               free(pkg_name3);
+               pkg_name3 = NULL;
+       }
+       if(pkg_name4 != NULL)
+       {
+               free(pkg_name4);
+               pkg_name4 = NULL;
+       }
+       return is_have;
+}
diff --git a/lock-setting/lockscreen-options/src/lockscreen-options-util.c b/lock-setting/lockscreen-options/src/lockscreen-options-util.c
new file mode 100755 (executable)
index 0000000..4d3afb2
--- /dev/null
@@ -0,0 +1,174 @@
+ /*
+  * 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 "lockscreen-options-debug.h"
+#include "lockscreen-options.h"
+#include "lockscreen-options-util.h"
+
+const char *sys_str_table[] = {
+       "IDS_COM_SK_OK",
+       "IDS_COM_SK_CANCEL",
+};
+
+const char *app_str_table[] = {
+       "IDS_ST_BODY_SHORTCUTS",
+       "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN",
+#if USE_TITLE_AND_CAMERA
+       "Lock screen title",
+       "Show title text on the lock screen",
+#endif
+       //"Event notifications",
+       "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS",
+       //"View event notification on lock screen",
+       "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN",
+       "Context-aware notifications",
+       "View context-aware notifications on lock screen",
+#if USE_TITLE_AND_CAMERA
+       "IDS_ST_MBODY_CAMERA_QUICK_ACCESS",
+       "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA",
+#endif
+       "IDS_ST_BODY_CLOCK",
+//     "Dual clock",
+//     "Show dual clock on lock screen when roaming",
+       "IDS_ST_BODY_WEATHER",
+       "IDS_IM_BODY_HELP_TEXT",
+       "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN",
+       "IDS_ST_BODY_SET_SHORTCUTS",
+       "IDS_ST_OPT_EDIT_SHORTCUTS",
+       "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN",
+       "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION",
+       "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER",
+       "IDS_ST_BODY_SELECT_APPLICATION",
+       "Life Magazine"
+};
+
+static Elm_Gen_Item_Class itc_underline;
+static Elm_Gen_Item_Class itc_separator;
+
+Evas_Object *lockscreen_options_util_create_navigation(Evas_Object * parent)
+{
+       Evas_Object *navi_bar = NULL;
+
+       if (parent == NULL) {
+               LOCKOPTIONS_WARN("Parent is null.");
+               return NULL;
+       }
+
+       navi_bar = elm_naviframe_add(parent);
+       if (navi_bar == NULL) {
+               LOCKOPTIONS_ERR("Cannot add naviagtionbar.");
+               return NULL;
+       }
+
+       elm_object_part_content_set(parent, "elm.swallow.content", navi_bar);
+
+       evas_object_show(navi_bar);
+
+       return navi_bar;
+}
+
+Evas_Object *lockscreen_options_util_create_layout(Evas_Object * parent,
+                                                  const char *file,
+                                                  const char *group)
+{
+       Evas_Object *layout = NULL;
+
+       if (parent == NULL) {
+               LOCKOPTIONS_WARN("Parent is null.");
+               return NULL;
+       }
+
+       layout = elm_layout_add(parent);
+       if (layout == NULL) {
+               LOCKOPTIONS_ERR("Cannot add layout.");
+               return NULL;
+       }
+
+       if ((file != NULL) && (group != NULL)) {
+               elm_layout_file_set(layout, file, group);
+       }
+
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
+                                        EVAS_HINT_EXPAND);
+
+       evas_object_show(layout);
+
+       return layout;
+}
+
+void lockscreen_options_util_create_seperator(Evas_Object * genlist)
+{
+       if (NULL == genlist)
+               return;
+
+       Elm_Object_Item *item = NULL;
+
+       itc_separator.item_style = LOCKSCREEN_GENLIST_STYLE_SEPERATOR;
+       itc_separator.func.text_get = NULL;
+       itc_separator.func.content_get = NULL;
+       itc_separator.func.state_get = NULL;
+       itc_separator.func.del = NULL;
+
+       item =
+           elm_genlist_item_append(genlist, &(itc_separator), NULL, NULL,
+                                   ELM_GENLIST_ITEM_NONE, NULL, NULL);
+       elm_genlist_item_select_mode_set(item,
+                                        ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+}
+
+void lockscreen_options_util_create_underline(Evas_Object * genlist)
+{
+       if (NULL == genlist)
+               return;
+
+       Elm_Object_Item *item = NULL;
+
+       itc_underline.item_style = LOCKSCREEN_GENLIST_STYLE_UNDERLINE;
+       itc_underline.func.text_get = NULL;
+       itc_underline.func.content_get = NULL;
+       itc_underline.func.state_get = NULL;
+       itc_underline.func.del = NULL;
+
+       item =
+           elm_genlist_item_append(genlist, &(itc_underline), NULL, NULL,
+                                   ELM_GENLIST_ITEM_NONE, NULL, NULL);
+       elm_genlist_item_select_mode_set(item,
+                                        ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+}
+
+char *lockscreen_optoins_get_string(int id)
+{
+       LOCKOPTIONS_DBG("get string id : %d\n", id);
+
+       char *str = NULL;
+
+       if (id < IDS_LOCKSCREEN_OPTIONS_SYSTEM_STRING_MAX) {
+               /* get system string */
+               str = dgettext("sys_string", sys_str_table[id]);
+       } else {
+               /* get application string */
+               str =
+                   dgettext(PKGNAME,
+                            app_str_table[id -
+                                          IDS_LOCKSCREEN_OPTIONS_SYSTEM_STRING_MAX]);
+       }
+
+       LOCKOPTIONS_DBG("get string : %s\n", str);
+
+       return str;
+}
diff --git a/lock-setting/lockscreen-options/src/lockscreen-options.c b/lock-setting/lockscreen-options/src/lockscreen-options.c
new file mode 100755 (executable)
index 0000000..363230e
--- /dev/null
@@ -0,0 +1,217 @@
+ /*
+  * 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.
+  */
+
+
+
+#ifndef UG_MODULE_API
+#define UG_MODULE_API __attribute__ ((visibility("default")))
+#endif
+
+#include <Elementary.h>
+#include <ui-gadget-module.h>
+
+#include "lockscreen-options.h"
+#include "lockscreen-options-util.h"
+#include "lockscreen-options-main.h"
+
+static Evas_Object *create_bg(Evas_Object * parent)
+{
+       Evas_Object *bg = elm_bg_add(parent);
+
+       evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
+                                        EVAS_HINT_EXPAND);
+       elm_object_style_set(bg, "group_list");
+
+       elm_object_part_content_set(parent, "elm.swallow.bg", bg);
+       evas_object_show(bg);
+
+       return bg;
+}
+
+static Evas_Object *create_fullview(Evas_Object * parent,
+                                   lockscreen_options_ug_data * ug_data)
+{
+       Evas_Object *base = NULL;
+       Evas_Object *navi_bar = NULL;
+
+       base = lockscreen_options_util_create_layout(parent, NULL, NULL);
+
+       elm_layout_theme_set(base, "layout", "application", "default");
+       elm_win_resize_object_add(parent, base);
+
+       elm_win_indicator_mode_set(parent, ELM_WIN_INDICATOR_SHOW);
+
+       create_bg(base);
+
+       navi_bar = lockscreen_options_util_create_navigation(base);
+       ug_data->navi_bar = navi_bar;
+
+       lockscreen_options_main_create_view(ug_data);
+
+       return base;
+}
+
+static Evas_Object *create_frameview(Evas_Object * parent,
+                                    lockscreen_options_ug_data * ug_data)
+{
+       Evas_Object *base = NULL;
+
+       /* Create Frame view */
+
+       return base;
+}
+
+static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h service,
+                      void *priv)
+{
+       Evas_Object *parent = NULL;
+       Evas_Object *win_main = NULL;
+       lockscreen_options_ug_data *ug_data = NULL;
+
+       if (!ug || !priv)
+               return NULL;
+
+       bindtextdomain(PKGNAME, "/usr/ug/res/locale");
+
+       ug_data = priv;
+       ug_data->ug = ug;
+
+       parent = ug_get_parent_layout(ug);
+       if (!parent)
+               return NULL;
+
+       win_main = ug_get_window();
+       if (!win_main) {
+               return NULL;
+       }
+
+       ug_data->win_main = win_main;
+
+       if (mode == UG_MODE_FULLVIEW)
+               ug_data->base = create_fullview(parent, ug_data);
+       else
+               ug_data->base = create_frameview(parent, ug_data);
+
+       /* Add del callback for base layout */
+
+       return ug_data->base;
+}
+
+static void on_start(ui_gadget_h ug, service_h service, void *priv)
+{
+}
+
+static void on_pause(ui_gadget_h ug, service_h service, void *priv)
+{
+
+}
+
+static void on_resume(ui_gadget_h ug, service_h service, void *priv)
+{
+
+}
+
+static void on_destroy(ui_gadget_h ug, service_h service, void *priv)
+{
+       lockscreen_options_ug_data *ug_data;
+
+       if (!ug || !priv)
+               return;
+
+       ug_data = priv;
+       evas_object_del(ug_data->base);
+       ug_data->base = NULL;
+}
+
+static void on_message(ui_gadget_h ug, service_h msg, service_h service,
+                      void *priv)
+{
+}
+
+static void on_event(ui_gadget_h ug, enum ug_event event, service_h service,
+                    void *priv)
+{
+       switch (event) {
+       case UG_EVENT_LOW_MEMORY:
+               break;
+       case UG_EVENT_LOW_BATTERY:
+               break;
+       case UG_EVENT_LANG_CHANGE:
+               break;
+       case UG_EVENT_ROTATE_PORTRAIT:
+               break;
+       case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+               break;
+       case UG_EVENT_ROTATE_LANDSCAPE:
+               break;
+       case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+               break;
+       default:
+               break;
+       }
+}
+
+static void on_key_event(ui_gadget_h ug, enum ug_key_event event,
+                        service_h service, void *priv)
+{
+       if (!ug)
+               return;
+
+       switch (event) {
+       case UG_KEY_EVENT_END:
+               ug_destroy_me(ug);
+               break;
+       default:
+               break;
+       }
+}
+
+UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
+{
+       lockscreen_options_ug_data *ug_data;
+
+       if (!ops)
+               return -1;
+
+       ug_data = calloc(1, sizeof(lockscreen_options_ug_data));
+       if (!ug_data)
+               return -1;
+
+       ops->create = on_create;
+       ops->start = on_start;
+       ops->pause = on_pause;
+       ops->resume = on_resume;
+       ops->destroy = on_destroy;
+       ops->message = on_message;
+       ops->event = on_event;
+       ops->key_event = on_key_event;
+       ops->priv = ug_data;
+       ops->opt = UG_OPT_INDICATOR_ENABLE;
+
+       return 0;
+}
+
+UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
+{
+       lockscreen_options_ug_data *ug_data;
+
+       if (!ops)
+               return;
+
+       ug_data = ops->priv;
+       if (ug_data)
+               free(ug_data);
+}
diff --git a/lock-setting/po/CMakeLists.txt b/lock-setting/po/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..647202a
--- /dev/null
@@ -0,0 +1,26 @@
+# for i18n
+
+SET(LOCKPONAME "ug-lockscreen-options")
+
+SET(POFILES ar.po az.po bg.po ca.po cs.po da.po de_DE.po el_GR.po en.po en_PH.po en_US.po es_ES.po es_US.po fi.po fr_CA.po fr_FR.po ga.po gl.po hi.po hr.po hu.po hy.po is.po it_IT.po ja_JP.po ka.po kk.po ko_KR.po lt.po lv.po mk.po nb.po nl_NL.po pl.po pt_BR.po pt_PT.po ro.po ru_RU.po sk.po sl.po sr.po sv.po tr_TR.po uk.po uz.po zh_CN.po zh_HK.po zh_SG.po zh_TW.po)
+
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+       SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+       MESSAGE("PO: ${pofile}")
+       GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+       GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+       SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+       ADD_CUSTOM_COMMAND(
+               OUTPUT ${moFile}
+               COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+               DEPENDS ${absPofile}
+       )
+
+INSTALL(FILES ${moFile} DESTINATION /usr/ug/res/locale/${lang}/LC_MESSAGES RENAME ${LOCKPONAME}.mo)
+       SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${moFiles}")
+ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles})
diff --git a/lock-setting/po/ar.po b/lock-setting/po/ar.po
new file mode 100644 (file)
index 0000000..7c0e6a6
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "قفل الشاشة"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "عرض إخطارات الحدث على شاشة القفل"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "إشعارات الحدث"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "الساعة"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "الطقس"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "تعيين اختصارات على شاشة القفل"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "الاختصارات"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "ساعة ثنائية"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "عرض نص التعليمات على شاشة القفل"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "عرض ‏‫ساعة مزدوجة على شاشة القفل أثناء التجوال"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "انقر مع الاستمرار فوق الشاشة مع تدوير الجهاز لفتح الكاميرا"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "وصول سريع إلى الكاميرا"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "تعيين اختصارات"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "قم بالسحب والإسقاط لتغيير الترتيب"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "اختر تطبيق"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "‏‫انقر فوق الاختصار لتخصيص تطبيق"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "تعديل الاختصارات"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "نص المساعدة"
+
diff --git a/lock-setting/po/az.po b/lock-setting/po/az.po
new file mode 100644 (file)
index 0000000..305092a
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Ekranı kilidləyin"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Kilid ekranında tədbir bildirişlərinə bax"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Tədbir bildirişləri"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Saat"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Hava"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Kilid ekranına qısayol qur"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Çevik düymələr"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "İkili saat"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Kilid ekranında kömək mətnini göstər"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Rouminq zamanı kilid ekranında ikili saat göstər"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Kameranı açmaq üçün ekrana vurun saxlayaraq cihazı fırladın"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Kamera çevik girişi"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Qısayolları qur"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Sıranı dəyişmək üçün dartıb buraxın"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Proqramı seç"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Proqrama təyin etmək üçün qısayola vur"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Qısayolları redaktə edin"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Yardımçı mətn"
+
diff --git a/lock-setting/po/bg.po b/lock-setting/po/bg.po
new file mode 100644 (file)
index 0000000..1033cf8
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Заключен екран"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Преглед на известията за събития на заключения екран"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Уведомявания за събития"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Часовник"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Време"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Задайте бързите клавиши на заключения екран"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Бърз достъп"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Двоен часовник"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Показвай текста на помощта на заключения екран"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Покажи двоен часовник на заключения екран в роуминг"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Чукнете и задръжте екрана, докато въртите устройството, за да отворите Камера"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Бърз достъп с камера"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Задаване на бързи команди"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Плъзнете и пуснете, за да промените реда"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Избор на приложение"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Чукнете върху бърза команда, за да зададете приложение"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Редактиране на бързи клавиши"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Помощен текст"
+
diff --git a/lock-setting/po/ca.po b/lock-setting/po/ca.po
new file mode 100644 (file)
index 0000000..e6a6351
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Bloquejar pantalla"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Veure notificacions d'esdeveniments a pantalla de bloqueig"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Avisos d'esdeveniments"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Rellotge"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Temps"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Definir accessos directes a la pantalla de bloqueig"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Accessos directes"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Rellotge dual"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Mostrar text d'ajuda a la pantalla de bloqueig"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Mostrar rellotge dual a la pantalla de bloqueig en itinerància"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Mantingui tocada la pantalla mentre gira el dispositiu per obrir la Càmera"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Accés ràpid a càmera"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Definir editar accessos directes"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Arrossegui i deixi anar per canviar l'ordre"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Seleccionar aplicació"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Toqui l'accés directe per assignar l'aplicació"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Editar accessos directes"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Text ajuda"
+
diff --git a/lock-setting/po/cs.po b/lock-setting/po/cs.po
new file mode 100644 (file)
index 0000000..5a6e267
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Zamknout displej"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Zobrazení upozorňování na události na zamknutém displeji"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Upozorňování na události"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Hodiny"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Počasí"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Nastavit zástupce na zamknutém displeji"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Zkratky"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Duál. hodiny"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Zobrazit text nápovědy na zamknutém displeji"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Zobrazit duální hodiny na zamknutém displeji během roamingu"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Klepnutím na displej a podržením při otáčení zařízení otevřete Fotoaparát"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Rychlý přístup k fotoap."
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Nastavit zástupce"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Přetažením změníte pořadí"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Vyberte aplikaci"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Chcete-li přiřadit aplikaci, klepněte na zástupce"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Upravit zástupce"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Nápověda"
+
diff --git a/lock-setting/po/da.po b/lock-setting/po/da.po
new file mode 100644 (file)
index 0000000..d9a26bb
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Låseskærm"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Vis begivenhedsbeskeder på den låste skærm"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Begivenhedsbeskeder"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Ur"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Vejr"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Indstil genveje på låseskærm"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Genveje"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Dobbelt-ur"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Vis hjælpetekst på låst skærm"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Vis dobbelt ur på låseskærm under roaming"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Tryk og hold på skærmen, mens du roterer enheden, for at åbne Kamera"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Hurtig adgang til kamera"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Angiv genveje"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Træk og slip for at skifte rækkefølge"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Vælg program"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Tryk på genvej for at tildele program"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Redigér genveje"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Hjælpetekst"
+
diff --git a/lock-setting/po/de_DE.po b/lock-setting/po/de_DE.po
new file mode 100644 (file)
index 0000000..70a4592
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Sperrbildschirm"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Ereignisbenachrichtigungen auf Sperrbildschirm anzeigen"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Ereignisbenachrichtig."
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Uhr"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Wetter"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Schnellzugriffe auf gesperrtem Bildschirm festlegen"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Schnellzugriffe"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Dual-Uhr"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Hilfetext auf gesperrtem Bildschirm anzeigen"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Dual-Uhr beim Roaming auf gesperrtem Bildschirm anzeigen"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Tippen Sie auf den Bildschirm und halten Sie ihn, während Sie das Gerät drehen, um die Kamera zu öffnen."
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Kamera-Schnellzugriff"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Schnellzugriffe festlegen"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Ziehen und ablegen, um die Reihenfolge zu ändern."
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Anwendung auswählen"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Auf Shortcut tippen, um Anwendung zuzuweisen."
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Schnellzugriffe bearbeiten"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Hilfetext"
+
diff --git a/lock-setting/po/el_GR.po b/lock-setting/po/el_GR.po
new file mode 100644 (file)
index 0000000..151b419
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Οθόνη κλειδώματος"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Προβολή ειδοποιήσεων συμβάντων στην οθόνη κλειδώματος"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Ειδοποιήσεις συμβάντων"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Ρολόι"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Καιρός"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Ρύθμιση συντομεύσεων στην οθόνη κλειδώματος"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Συντομεύσεις"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Διπλό ρολόι"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Εμφάνιση κειμένου βοήθειας στην οθόνη κλειδώματος"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Εμφάνιση διπλού ρολογιού στην οθόνη κλειδώματος κατά την περιαγωγή"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Πατήστε παρατεταμένα στην οθόνη και κατά την περιστροφή της συσκευής για να ανοίξετε την Κάμερα"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Γρήγορη πρόσβαση κάμερας"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Ρύθμιση συντομεύσεων"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Μεταφέρετε και αποθέστε για να αλλάξετε τη σειρά"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Επιλογή εφαρμογής"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Πατήστε τη συντόμευση για αντιστοίχιση εφαρμογής"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Επεξεργασία συντομεύσεων"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Κείμενο βοήθειας"
+
diff --git a/lock-setting/po/en.po b/lock-setting/po/en.po
new file mode 100644 (file)
index 0000000..5c14712
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Lock screen"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "View event notifications on the lock screen"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Event notifications"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Clock"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Weather"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Set shortcuts on lock screen"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Shortcuts"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Dual clock"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Show help text on lock screen"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Show dual clock on lock screen when roaming"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Tap and hold the screen while rotating the device to open Camera"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Camera quick access"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Set shortcuts"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Drag and drop to change order"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Select application"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Tap shortcut to assign application"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Edit shortcuts"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Help text"
+
diff --git a/lock-setting/po/en_PH.po b/lock-setting/po/en_PH.po
new file mode 100644 (file)
index 0000000..5c14712
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Lock screen"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "View event notifications on the lock screen"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Event notifications"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Clock"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Weather"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Set shortcuts on lock screen"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Shortcuts"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Dual clock"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Show help text on lock screen"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Show dual clock on lock screen when roaming"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Tap and hold the screen while rotating the device to open Camera"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Camera quick access"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Set shortcuts"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Drag and drop to change order"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Select application"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Tap shortcut to assign application"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Edit shortcuts"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Help text"
+
diff --git a/lock-setting/po/en_US.po b/lock-setting/po/en_US.po
new file mode 100644 (file)
index 0000000..a1db6bc
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Lock screen"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "View event notifications on the lock screen"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Event notifications"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Clock"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Weather"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Set shortcuts on lock screen."
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Shortcuts"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Dual clock"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Show help text on lock screen."
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Show dual clock on lock screen when roaming."
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Tap and hold the screen while rotating the device to open Camera"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Camera quick access"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Set shortcuts"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Drag and drop to change order"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Select application"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Tap shortcut to assign application"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Edit shortcuts"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Help text"
+
diff --git a/lock-setting/po/es_ES.po b/lock-setting/po/es_ES.po
new file mode 100644 (file)
index 0000000..407f8d7
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Pantalla de bloqueo"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Ver notificaciones de eventos en la pantalla de bloqueo"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Notificaciones de evento"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Reloj"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Clima"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Definir accesos directos en pantalla de bloqueo"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Accesos directos"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Reloj dual"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Mostrar texto de ayuda en pantalla de bloqueo"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Mostrar reloj dual en pantalla de bloqueo en itinerancia"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Mantenga pulsada la pantalla mientras gira el dispositivo para abrir la Cámara"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Acceso rápido a Cámara"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Definir accesos directos"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Arrastrar y soltar para cambiar el orden"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Seleccionar aplicación"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Toque el acceso directo para asignar la aplicación"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Editar accesos directos"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Texto de ayuda"
+
diff --git a/lock-setting/po/es_MX.po b/lock-setting/po/es_MX.po
new file mode 100644 (file)
index 0000000..a3ce4bd
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Bloqueo de pantalla"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Ver las notificaciones de eventos en la pantalla de bloqueo"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Notificaciones de eventos"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Reloj"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Clima"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Definir atajos en pantalla bloqueada"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Atajos"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Reloj dual"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Mostrar texto de ayuda en pantalla bloqueada"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Mostrar el reloj dual en la pantalla bloqueada durante el roaming"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Mantenga pulsada la pantalla mientras gira el dispositivo para abrir la Cámara"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Acceso rápido a cámara"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Configurar atajos"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Arrastre y coloque para cambiar el orden"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Seleccionar aplicación"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Pulse el atajo para asignar la aplicación"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Editar atajos"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Texto de ayuda"
+
diff --git a/lock-setting/po/es_US.po b/lock-setting/po/es_US.po
new file mode 100644 (file)
index 0000000..43a19d9
--- /dev/null
@@ -0,0 +1,51 @@
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Ver las notificaciones de eventos en la pantalla de bloqueo"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Notificaciones de eventos"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Reloj"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Clima"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Definir atajos en pantalla bloqueada"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Atajos"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Reloj dual"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Mostrar texto de ayuda en pantalla bloqueada"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Mostrar el reloj dual en la pantalla bloqueada durante el roaming"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Mantenga pulsada la pantalla mientras gira el dispositivo para abrir la Cámara"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Acceso rápido a cámara"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Configurar atajos"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Arrastre y coloque para cambiar el orden"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Seleccionar aplicación"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Pulse el atajo para asignar la aplicación"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Editar atajos"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Texto de ayuda"
+
diff --git a/lock-setting/po/et.po b/lock-setting/po/et.po
new file mode 100644 (file)
index 0000000..073973f
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Lukusta ekraan"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Vaadake sündmuste teavitusi lukustatud ekraanil"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Sündmuse teavitused"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Kell"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Ilm"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Määra otseteed lukustusekraanil"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Otseteed"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Kaksikkell"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Näita spikrit lukustusekraanil"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Kuva rändluse ajal lukustusekraanil kaksikkell"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Kaamera avamiseks toksake ja hoidke sõrme ekraanil ning samal ajal pöörake seadet"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Kiirjuurdepääs kaamerale"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Määra otseteed"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Lohistage, et muuta järjestust"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Vali rakendus"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Toksake otseteed, et määrata rakendust"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Muuda otseteid"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Spikker"
+
diff --git a/lock-setting/po/eu.po b/lock-setting/po/eu.po
new file mode 100644 (file)
index 0000000..8ba1000
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Blokeatu pantaila"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Ikusi gertaeren jakinarazpenak blokeo pantailan"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Gertaeren jakinarazpenak"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Ordularia"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Eguraldia"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Ezarri lasterbideak blokeo pantailan"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Sarrera zuzenak"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Erloju duala"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Erakutsi laguntza testua blokeo pantailan"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Erakutsi erloju duala blokeo pantailan ibiltaritzan"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Ukitu eta eutsi pantaila gailua biratu bitartean Kamera irekitzeko"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Kameraren sarbide azkarra"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Ezarri lasterbideak"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Arrastatu eta jaregin ordena aldatzeko"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Hautatu aplikazioa"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Ukitu lasterbidea aplikazioa esleitzeko"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Editatu lasterbideak"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Laguntza testua"
+
diff --git a/lock-setting/po/fi.po b/lock-setting/po/fi.po
new file mode 100644 (file)
index 0000000..856e0a0
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Lukitusnäyttö"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Näytä tapahtumailmoitukset lukitusnäytössä"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Tapahtumailmoitukset"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Kello"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Sää"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Määritä pikanäppäimet lukitusnäytössä"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Pikanäppäimet"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Kaksoiskello"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Ohjetekstin näyttäminen lukitusnäytössä"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Näytä kaksoiskello lukitusnäytössä verkkovierailun aikana"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Avaa kamera painamalla näyttöä jonkin aikaa ja kiertämällä samalla laitetta"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Kameran pikakäyttö"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Määritä pikavalinnat"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Muuta järjestystä vetämällä ja pudottamalla"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Valitse sovellus"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Määritä sovellus napauttamalla pikakuvaketta"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Muokkaa pikavalintoja"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Ohjeteksti"
+
diff --git a/lock-setting/po/fr_CA.po b/lock-setting/po/fr_CA.po
new file mode 100644 (file)
index 0000000..6982f65
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Écran verrouillé"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Voir les notifications d'évènements sur l'écran de verrouillage"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Notifications évènements"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Horloge"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Météo"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Sélectionner les raccourcis sur l'écran de verrouillage"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Raccourcis"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Deux horloges"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Afficher texte d'aide sur l'écran de verrouillage"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Afficher double horloge sur l'écran de verrouillage en itinérance"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Touchez longuement l'écran et faites pivoter l'appareil pour lancer l'appareil photo"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Accès rapide app. photo"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Définir des raccourcis"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Glisser et déposer pour modifier l'ordre"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Sélectionnez une application"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Touchez le raccourci pour l'affecter à l'application"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Modifier les raccourcis"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Texte d'aide"
+
diff --git a/lock-setting/po/fr_FR.po b/lock-setting/po/fr_FR.po
new file mode 100644 (file)
index 0000000..0ffb78b
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Écran de verrouillage"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Voir les notifications d'événements sur l'écran de verrouillage"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Notifications événements"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Horloge"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Météo"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Définir les raccourcis à afficher sur l'écran de verrouillage"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Raccourcis"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Double horloge"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Afficher le texte d'aide au déverrouillage sur l'écran"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Afficher la double horloge sur l'écran de verrouillage en itinérance"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Maintenez votre doigt appuyé sur l'écran et faites pivoter l'appareil pour ouvrir l'appareil photo"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Accès rapide app. photo"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Définir des raccourcis"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Glisser et déposer pour modifier l'ordre"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Sélectionnez une application"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Appuyez sur le raccourci pour l'affecter à l'application"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Modifier les raccourcis"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Texte d'aide"
+
diff --git a/lock-setting/po/ga.po b/lock-setting/po/ga.po
new file mode 100644 (file)
index 0000000..54b0785
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Glasáil an scáileán"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Amharc ar fhógraí imeachta ar an scáileán glasála"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Fógra faoi imeachtaí"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Clog"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Aimsir"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Socraigh aicearraí ar an scáileán glasála"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Aicearraí"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Déchlog"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Taispeáin téacs cabhrach ar an scáileán glasála"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Taispeáin déchlog ar an scáileáin glasála le linn fánaíocht"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Tapáil agus coinnigh an scáileán agus an gléas á rothlú le Ceamara a oscailt"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Mear-rochtain ar cheamara"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Socraigh aicearraí"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Tarraing agus scaoil leis an ord a athrú"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Roghnaigh feidhmchlár"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Tapáil aicearra le feidhmchlár a shannadh"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Cuir aicearraí in eagar"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Téacs cabhrach"
+
diff --git a/lock-setting/po/gl.po b/lock-setting/po/gl.po
new file mode 100644 (file)
index 0000000..d1f01aa
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Bloquear pantalla"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Ver notificacións de eventos na pantalla de bloqueo"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Notificacións de eventos"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Reloxo"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Tempo"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Definir os atallos na pantalla de bloqueo"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Atallos"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Reloxo dual"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Amosa texto de axuda na pantalla de bloqueo"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Amosa o reloxo dual na pantalla de bloqueo durante a itinerancia"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Mantén tocada a pantalla mentres xiras o dispositivo para abrir a cámara"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Acceso rápido á cámara"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Definir atallos"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Arrastra e solta para cambiar a orde"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Seleccionar aplicación"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Toca o atallo ao que desexas asignar a aplicación"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Editar atallos"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Texto de axuda"
+
diff --git a/lock-setting/po/hi.po b/lock-setting/po/hi.po
new file mode 100644 (file)
index 0000000..1dc2c7e
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "स्क्रीन लॉक करें"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "लॉक स्क्रीन पर प्रसंग अधिसूचनाएँ देखें"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "प्रसंग अधिसूचनाएँ"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "घड़ी"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "मौसम"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "लॉक स्‍क्रीन पर शॉर्टकट्स सेट करें"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "शार्टकट्स"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "दोहरी घड़ी"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "लॉक स्क्रीन पर मदद टेक्स्ट दिखाता है"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "जब रोमिंग में हों तब लॉक स्‍क्रीन पर डुअल क्लॉक दिखाएँ"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "कैमरा खोलनें के लिए डिवाइस को घुमाते समय स्क्रीन को टैप और होल्ड करें"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "कैमरा क्विक ऍक्सेस"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "शॉर्टकट्स सेट करें"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "क्रम बदलने के लिए ड्रैग और ड्रॉप करें"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "एप्लीकेशन चुनें"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "एप्लीकेशन असाइन करने के लिए शॉर्टकट टैप करें"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "शॉर्टकट्स संपादित करें"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "सहायता टेक्स्ट"
+
diff --git a/lock-setting/po/hr.po b/lock-setting/po/hr.po
new file mode 100644 (file)
index 0000000..86c6896
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Zaslon zaključavanja"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Vidi obavijesti o događaju na zaslonu zaključavanja"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Obavijesti o događaju"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Sat"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Prognoza"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Postavi prečace na zaslonu zaključavanja"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Prečaci"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Dvostruki sat"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Prikaži tekst pomoći na zaslonu zaključavanja"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Prikaži dvostruki sat na zaslonu zaključavanja u roamingu"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Dodirnite i držite zaslon dok okrećete uređaj da biste uključili fotoaparat"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Brzi pristup fotoaparatu"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Postavi prečace"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Dovucite i ispustite za promjenu redoslijeda"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Odaberi aplikaciju"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Dodaj prečac za dodjeljivanje aplikacije"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Uredi prečace"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Upute"
+
diff --git a/lock-setting/po/hu.po b/lock-setting/po/hu.po
new file mode 100644 (file)
index 0000000..7028c02
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Képernyő lezárása"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Eseményértesítések megjelenítése a zárolt képernyőn"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Eseményértesítések"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Óra"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Időjárás"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Zárolt képernyő parancsikonjainak beállítása"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Gyorsgombok"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Kettős óra"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Súgó megjelenítése a zárolt képernyőn"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Második óra megjelenítése a zárolt képernyőn roaming esetén"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "A Fényképező megnyitásához érintse meg a képernyőt, és forgassa el az eszközt"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Gyors fényképezés"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Parancsikonok beállítása"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Az elemek áthúzásával megváltoztathatja a sorrendet"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Alkalmazás kiválasztása"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Alkalmazás hozzárendeléséhez érintse meg a parancsikont"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Ikonok szerkesztése"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Súgószöveg"
+
diff --git a/lock-setting/po/hy.po b/lock-setting/po/hy.po
new file mode 100644 (file)
index 0000000..6916644
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Կողպել էկրանը"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Դիտել իրադարձության ծանուցումները կողպված էկրանին"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Իրադարձութ. ծանուցումներ"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Ժամացույց"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Եղանակ"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Դնել դյուրանցումներ կողպված էկրանին"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Արագ անցումներ"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Երկակի ժամացույց"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Ցույց տալ օգնության տեքստը կողպված էկրանի վրա"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Ռոումինգի ժամանակ ցույց տալ կրկնակի ժամացույցը կողպված էկրանին"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Թակեք և պահեք էկրանը սարքը պտտելու ընթացքում՝ Խցիկը բացելու համար"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Խցիկի արագ մուտք"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Դնել դյուրանցումներ"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Քարշել և թողնել՝ կարգը փոխելու համար"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Ընտրել ծրագիր"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Թակել դյուրանցումը՝ ծրագիր վերագրելու համար"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Խմբագրել դյուրանցումները"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Օգնության տեքստ"
+
diff --git a/lock-setting/po/is.po b/lock-setting/po/is.po
new file mode 100644 (file)
index 0000000..5693eed
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Læsa skjá"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Skoða viðburðatilkynningar á lásskjá"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Viðburðatilkynningar"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Klukka"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Veður"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Stilla flýtileiðir á læstum skjá"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Flýtileiðir"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Tvöföld klukka"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Sýna hjálpartexta á lásskjá"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Sýna tvöfalda klukku á lásskjá í reiki"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Pikkaðu á og haltu fingrinum á skjánum á meðan þú snýrð tækinu til að opna Myndavélina"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Flýtiaðgangur myndavélar"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Stilla flýtileiðir"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Dragðu og slepptu til að breyta röð"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Velja forrit"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Pikkaðu á flýtileið til að úthluta forriti"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Breyta flýtileiðum"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Hjálpartexti"
+
diff --git a/lock-setting/po/it_IT.po b/lock-setting/po/it_IT.po
new file mode 100644 (file)
index 0000000..d39fd3c
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Schermata di blocco"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Visualizza le notifiche eventi sulla schermata di blocco"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Notifiche eventi"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Orologio"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Meteo"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Imposta collegamenti nella schermata di blocco"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Collegamenti"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Doppio orologio"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Mostra testo guida nella schermata di blocco"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Mostra orologio doppio nella schermata di blocco durante il roaming"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Tenere premuto lo schermo mentre si ruota il dispositivo per aprire la fotocamera"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Sblocco fotocamera"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Imposta collegamenti"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Trascina per modificare ordine"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Seleziona applicazione"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Tocca collegamento per assegnare un'applicazione"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Modifica collegamenti"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Testo guida"
+
diff --git a/lock-setting/po/ja_JP.po b/lock-setting/po/ja_JP.po
new file mode 100644 (file)
index 0000000..19c083d
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "ロック画面"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "ロック画面にイベント通知を表示"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "イベント通知"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "時計"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "天気予報"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "ロック画面に表示するショートカットを設定"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "ショートカット"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "デュアル時計"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "ロック画面にヘルプテキストを表示"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "ローミング時、ロック画面にデュアル時計を表示"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "画面を押しながら端末を回転させてカメラを起動"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "カメラクイック起動"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "ショートカットを設定"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "ドラッグして順番を並べ替えます。"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "アプリケーションを選択"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "ショートカットをタップしてアプリケーションを割り当てます。"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "ショートカットを編集"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "ヘルプ"
+
diff --git a/lock-setting/po/ka.po b/lock-setting/po/ka.po
new file mode 100644 (file)
index 0000000..b6b045e
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "ეკრანის დაბლოკვა"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "მოვლენის შეტყობინებების ნახვა დაბლოკილ ეკრანზე"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "მოვლენის შეტყობინებები"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "საათი"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "ამინდი"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "სწრაფი ღილაკების დაყენება დაბლოკილ ეკრანზე"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "სწრაფი ღილაკები"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "ორმაგი საათი"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "დახმარების ტექსტის ჩვენება დაბლოკილ ეკრანზე"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "ორმაგი საათის ჩვენება დაბლოკილ ეკრანზე როუმინგის დროს"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "კამერის გასახსნელად, ხანგრძლივად შეეხეთ ეკრანს და მოაბრუნეთ აპარატი"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "კამერის სწრაფი გახსნა"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "ღილაკების დაყენება"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "აიღეთ და გადაიტანეთ, თუ გსურთ შეცვალოთ მიმდევრობა"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "აირჩიეთ პროგრამა"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "დააკაკუნეთ სწრაფ ღილაკზე, რომ მიანიჭოთ პროგრამის გახსნის ფუნქცია"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "სწრაფი ღილაკების შესწორება"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "დამხმარე ტექსტი"
+
diff --git a/lock-setting/po/kk.po b/lock-setting/po/kk.po
new file mode 100644 (file)
index 0000000..5f30631
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Экранды құлыптау"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Құлыптау экранында оқиғалар туралы хабарландыруларды қарап шығу"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Оқиғалар туралы хабарлау"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Сағат"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Ауа райы"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Құлып экранында белгішелерді белгілеу"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Тез кіру"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Қос сағат"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Құлыптаулы экранында көмек мәтінді көрсетіңіз"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Роумингте қос сағатты құлып экранынан көрсетіңіз"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Камераны ашу үшін құрылғыны бұрғанда экранды басып тұрыңыз"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Камераға жылдам өту"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Белгішелер орнату"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Ретін өзгерту үшін сүйреп алып барыңыз"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Бағдарлама таңдау"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Бағдарламаны тағайындау үшін белгішені түртіңіз"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Тез кіру ретін өзгерту"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Анықтама мәтіні"
+
diff --git a/lock-setting/po/ko_KR.po b/lock-setting/po/ko_KR.po
new file mode 100644 (file)
index 0000000..aca7f74
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "잠금화면"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "잠금화면에서 일정 알림 보기"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "일정 알림"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "시계"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "날씨"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "잠금화면에 바로가기를 설정합니다"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "바로가기"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "듀얼 시계"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "잠금화면에 도움말을 표시합니다"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "로밍 시 잠금화면에 듀얼 시계를 표시합니다"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "화면을 길게 누른 채 디바이스를 회전하면 카메라가 실행됩니다"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "빠른 카메라 실행"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "바로가기 설정"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "순서를 바꾸려면 드래그하세요"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "애플리케이션 선택"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "애플리케이션을 지정하려면 바로가기를 누르세요"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "바로가기 편집"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "도움말"
+
diff --git a/lock-setting/po/lt.po b/lock-setting/po/lt.po
new file mode 100644 (file)
index 0000000..7067c08
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Užrakinimo ekranas"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Peržiūrėti pranešimus apie įvykius užrakintame ekrane"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Pranešimai apie įvykius"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Laikrodis"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Oras"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Nustatyti sparčiuosius mygtukus užrakinimo ekrane"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Sparčiosios prieigos mygtukai"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Dvigubas laikrodis"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Rodyti pagalbos tekstą užrakintame ekrane"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Rodyti dvigubą laikrodį užrakinimo ekrane, kai naudojamasi tarptinkliniu ryšiu"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Jei norite atidaryti fotoaparatą, bakstelėkite ir laikykite ekraną sukdami įrenginį"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Gr. prieiga prie fotoap."
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Nustatyti trumpinius"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Vilkdami pakeiskite išdėstymą"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Pasirinkti programą"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Bakstelėkite spartųjį mygtuką, kad priskirtumėte programą"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Redaguoti nuorodas"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Pagalbos tekstas"
+
diff --git a/lock-setting/po/lv.po b/lock-setting/po/lv.po
new file mode 100644 (file)
index 0000000..af7d248
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Bloķēšanas ekrāns"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Skatīt notikumu paziņojumus bloķētā ekrānā"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Notikumu paziņojumi"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Pulkstenis"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Laiks"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Iestatīt īsceļus bloķētajā ekrānā"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Īsceļi"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Duālais pulkstenis"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Rādīt palīdzības tekstu bloķēšanas ekrānā"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Viesabonēšanas laikā bloķēšanas ekrānā rādīt duālo pulksteni"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Lai atvērtu kameru, pieskarieties un turiet ekrānu, un vienlaicīgi pagrieziet ierīci"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Ātra piekļuve kamerai"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Iestatīt īsceļus"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Velciet un nometiet, lai mainītu kārtību"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Izvēlēties programmu"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Pieskarieties īsceļam, lai piešķirtu programmu"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Rediģēt īsceļus"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Palīdzības teksts"
+
diff --git a/lock-setting/po/mk.po b/lock-setting/po/mk.po
new file mode 100644 (file)
index 0000000..2cc2c03
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Заклучување на екранот"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Гледај известувања за настани на екранот за заклучување"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Известувања за настани"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Часовник"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Време"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Постави кратенки на екранот за заклучување"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Кратенки"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Двоен часовник"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Прикажи текст за помош на екранот за заклучување"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Прикажи двоен часовник на екранот за заклучување при роаминг"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Допрете и држете го екранот додека го вртите уредот за да го отворите фотоапаратот"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Брз пристап до камерата"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Одреди кратенки"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Повлечете и пуштете за да го смените редоследот"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Избери апликација"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Допрете кратенка за да доделите апликација"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Измени кратенки"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Текст за помош"
+
diff --git a/lock-setting/po/nb.po b/lock-setting/po/nb.po
new file mode 100644 (file)
index 0000000..167c148
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Skjermlås"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Vis hendelsesvarsler på skjermlåsen"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Hendelsesvarsler"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Klokke"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Vær"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Angi snarveier på skjermlås"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Snarveier"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Dobbel klokke"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Vis hjelpetekst på skjermlås"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Vis dobbel klokke på skjermlås under roaming"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Trykk på og hold skjermen mens du roterer enheten for å åpne Kamera"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Hurtigtilgang til kamera"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Angi snarveier"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Dra og slipp for å endre rekkefølgen"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Velg program"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Trykk på snarvei for å tilordne program"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Rediger snarveier"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Hjelpetekst"
+
diff --git a/lock-setting/po/nl_NL.po b/lock-setting/po/nl_NL.po
new file mode 100644 (file)
index 0000000..9289e1b
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Vergrendelscherm"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Meldingen van agenda-items weergeven op het vergrendelscherm"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Meldingen agenda-items"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Klok"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Weer"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Sneltoetsen instellen op vergrendeld scherm"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Sneltoetsen"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Twee klokken"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Help-tekst op vergrendeld scherm weergeven"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Dubbele klok weergeven op vergrendeld scherm bij roaming"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Tik en houd uw vinger op het scherm terwijl u het apparaat draait om de camera te openen"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Camera ontgrendelen"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Snelkoppelingen instellen"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Sleep en zet neer om volgorde te wijzigen"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Applicatie selecteren"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Tik op sneltoets om applicatie toe te wijzen"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Sneltoetsen wijzigen"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Help-tekst"
+
diff --git a/lock-setting/po/pl.po b/lock-setting/po/pl.po
new file mode 100644 (file)
index 0000000..3d8cbae
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Ekran blokady"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Wyświetlaj powiadomienia o wydarzeniach na ekranie blokady"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Powiadomienia o wydarzen."
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Zegar"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Pogoda"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Ustaw skróty na ekranie blokady"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Skróty klawiszowe"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Zegar podwójny"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Pokaż tekst pomocy na ekranie blokady"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Wyświetlanie zegara podwójnego na ekranie blokady podczas roamingu"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Obracając urządzenie, dotknij i przytrzymaj ekran, aby otworzyć aparat"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Skrót aparatu"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Ustawianie skrótów"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Przeciągnij i upuść, aby zmienić kolejność"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Wybierz aplikację"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Dotknij skrótu, aby przypisać aplikację"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Edytuj skróty"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Tekst pomocy"
+
diff --git a/lock-setting/po/pt_BR.po b/lock-setting/po/pt_BR.po
new file mode 100644 (file)
index 0000000..8072ea6
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Tela de bloqueio"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Exibir notificações de eventos na tela de bloqueio"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Notificações de evento"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Relógio"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Clima"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Definir atalhos na tela de bloqueio"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Atalhos"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Relógio duplo"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Exibir texto de ajuda na tela bloqueada"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Mostrar relógio duplo na tela de bloqueio quando em roaming"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Toque e segure a tela enquanto gira o dispositivo para abrir a Câmera"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Acesso rápido à Câmera"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Configurar atalhos"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Arraste e solte para alterar a ordem"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Selecionar aplicação"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Toque no atalho para atribuir aplicativo"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Editar atalhos"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Texto de ajuda"
+
diff --git a/lock-setting/po/pt_PT.po b/lock-setting/po/pt_PT.po
new file mode 100644 (file)
index 0000000..5005ee3
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Ecrã bloqueado"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Ver notificações de eventos no ecrã bloqueado"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Notificações de eventos"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Relógio"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Tempo"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Definir atalhos no ecrã bloqueado"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Atalhos"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Rel. duplo"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Mostrar texto de ajuda no ecrã bloqueado"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Mostrar relógio duplo no ecrã bloqueado em roaming"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Toque sem soltar no ecrã ao rodar o dispositivo para abrir a Câmara"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Acesso rápido à câmara"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Definir atalhos"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Arrastar e largar para alterar a ordem"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Seleccionar aplicação"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Tocar no atalho para atribuir aplicação"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Editar atalhos"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Texto de ajuda"
+
diff --git a/lock-setting/po/ro.po b/lock-setting/po/ro.po
new file mode 100644 (file)
index 0000000..d0a832f
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Blocare ecran"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Vizualizaţi pe ecranul blocat notificările privind evenimentul"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Notificări eveniment"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Ceas"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Vreme"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Setare comenzi rapide în ecranul de blocare"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Comenzi rapide"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Ceas dual"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Afişare text asistenţă pe ecranul de blocare"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Afişare ceas dual pe ecranul de blocare în roaming"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Ţineţi apăsat pe ecran şi rotiţi dispozitivul pentru a deschide Camera foto"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Acc. rapid la camera foto"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Setare comenzi rapide"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Glisaţi şi fixaţi pentru schimbarea ordinii"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Selectare aplicaţie"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Atingeţi comanda rapidă pentru a atribui aplicaţia"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Editare comenzi rapide"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Text asistenţă"
+
diff --git a/lock-setting/po/ru_RU.po b/lock-setting/po/ru_RU.po
new file mode 100644 (file)
index 0000000..fb29213
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Экран блокировки"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Просмотр уведомлений о событиях на экране блокировки"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Уведомления о событиях"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Часы"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Погода"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Настроить ярлыки на экране блокировки"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Горячие клавиши"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Двойные часы"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Показывать текст справки на экране блокировки"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Показывать двойные часы на экране блокировки в роуминге"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Чтобы открыть камеру, прикоснитесь к экрану и, удерживая палец, поверните устройство"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Быстрый доступ к камере"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Задать ярлыки"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Используйте перетаскивание, чтобы изменить порядок"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Выбор приложения"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Нажмите ярлык, чтобы назначить приложение"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Изменить ссылки"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Текст справки"
+
diff --git a/lock-setting/po/sk.po b/lock-setting/po/sk.po
new file mode 100644 (file)
index 0000000..5c28e7d
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Uzamknúť obrazovku"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Zobraziť oznámenia udalostí na zamknutej obrazovke"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Oznámenia udalostí"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Hodiny"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Počasie"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Nastaviť odkazy na zamknutej obrazovke"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Skratky"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Duálne hod."
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Zobraziť text pomocníka na zamknutej obrazovke"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Pri roamingu zobraziť na zamknutej obrazovke duálne hodiny"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Ťuknutím na obrazovku a jej podržaním počas otáčania zariadenia môžete otvoriť aplikáciu Fotoaparát"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Rýchly príst. cez fotoap."
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Nastaviť skratky"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Presunutím môžete zmeniť poradie"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Vyberte aplikáciu"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Ťuknutím na odkaz priraďte aplikáciu"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Upraviť odkazy"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Text pomocníka"
+
diff --git a/lock-setting/po/sl.po b/lock-setting/po/sl.po
new file mode 100644 (file)
index 0000000..805afbc
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Zaklepanje zaslona"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Prikaz obvestil o dogodkih na zaklenjenem zaslonu"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Obvestila o dogodkih"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Ura"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Vreme"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Nastavi bližnjice na zaklenjenem zaslonu"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Bližnjice"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Dvojna ura"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Pokaži besedilo za pomoč na zaklenjenem zaslonu"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Med gostovanjem pokaži dvojno uro na zaklenjenem zaslonu"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Pritisnite in pridržite prst na zaslonu in hkrati zavrtite napravo, da odprete kamero"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Hitri dostop do kamere"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Nastavi bližnjice"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Povlecite in spustite, če želite spremeniti vrstni red"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Izberite program"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Pritisnite bližnjico, da jo dodelite programu"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Uredi bližnjice"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Besedilo s pomočjo"
+
diff --git a/lock-setting/po/sr.po b/lock-setting/po/sr.po
new file mode 100644 (file)
index 0000000..c74520f
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Zaključavanje ekrana"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Prikaži obaveštenja o događajima na zaključanom ekranu"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Obaveštenja o događaju"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Sat"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Vreme"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Postavi prečice na zaključanom ekranu"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Prečice"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Dvostruki sat"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Prikaži tekst pomoći na zaključanom ekranu"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Prikaži dvostruki sat na zaključanom ekranu u romingu"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Kucni i zadrži ekran tokom rotiranja uređaja da bi otvorio/la kameru"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Brzi pristup na kameri"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Podesi prečice"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Prevuci i otpusti za promenu redosleda"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Izaberi aplikaciju"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Kucni prečicu za dodelu aplikacije"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Izmeni prečice"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Tekst pomoći"
+
diff --git a/lock-setting/po/sv.po b/lock-setting/po/sv.po
new file mode 100644 (file)
index 0000000..ea54af4
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Låsskärm"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Visa händelsemeddelanden på låsskärmen"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Händelsemeddelanden"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Klocka"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Väder"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Ställ in genvägar på låsskärmen"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Genvägar"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Dubbel klocka"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Visa hjälptexten på låsskärmen"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Visa dubbla klockor på låsskärmen vid roaming"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Tryck på och håll kvar på skärmen och rotera samtidigt enheten för att öppna Kameran"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Snabbåtkomst till kameran"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Ställ in genvägar"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Dra och släpp för att ändra ordning"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Välj program"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Tryck på genväg för att tilldela program"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Redigera genvägar"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Hjälptext"
+
diff --git a/lock-setting/po/tr_TR.po b/lock-setting/po/tr_TR.po
new file mode 100644 (file)
index 0000000..8c5ab33
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Kilit ekranı"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Kilit ekranında etkinlik bildirimlerini gör"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Etkinlik bildirimleri"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Saat"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Hava"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Kısayolları kilit ekranında ayarla"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Kısayollar"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "İkili saat"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Yardım metnini kilit ekranında göster"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Dolaşımdayken kilit ekranında çift saat göster"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Kamerayı açmak için cihazı döndürürken ekrana dokunun ve basılı tutun"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Kameraya hızlı erişim"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Kısayol ayarla"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Sırayı değiştirmek için sürükle ve bırak"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Uygulama seç"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Uygulama atamak için kısayola dokun"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Kısayolları düzenle"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Yardım metni"
+
diff --git a/lock-setting/po/uk.po b/lock-setting/po/uk.po
new file mode 100644 (file)
index 0000000..67ef257
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Екран блокування"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Перегляд сповіщень про події на екрані блокування"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Сповіщення про події"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Годинник"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Погода"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Встановлення клавіш швидкого доступу на екрані блокування"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Швидкий доступ"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Подвійний годинник"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Відображення тексту довідки на екрані блокування"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Відображення подвійного годинника на екрані блокування під час перебування в роумінгу"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Натисніть і утримуйте екран, одночасно обертаючи пристрій, щоб відкрити камеру"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Швидкий доступ до камери"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Встановлення клавіш швидкого доступу"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Перетягніть, щоб змінити порядок"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Виберіть програму"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Натисніть клавішу швидкого доступу, щоб призначити програму"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Редагувати клавіші шв. доступу"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Текст довідки"
+
diff --git a/lock-setting/po/uz.po b/lock-setting/po/uz.po
new file mode 100644 (file)
index 0000000..280ac1b
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "Bloklash ekrani"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "Bloklash ekranida hodisa bildirshnomalarini ko‘rib chiqish"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "Hodisa bildirishnomalari"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "Soat"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "Ob-havo"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "Bloklash ekranida yorliqlarni o‘rnatish"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "Yorliqlar"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "Ikkitali soat"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "Bloklash ekranida yordam matnini ko‘rsatish"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "Rouming vaqtida bloklash ekarnida ikkitali soatni ko‘rsat"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "Kamerani ochish uchun, aylantirish vaqtida ekranni bosib turing"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "Kameraga tezkor kirish"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "Yorliqlarni o‘rnatish"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "Tartibni o‘zgartirish uchun tortib o‘tkazing"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "Ilova tanlash"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "Ilovani tayinlash uchun yorliqni tanlang"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "Yorliqlarni tahrirlash"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "Yordam matni"
+
diff --git a/lock-setting/po/zh_CN.po b/lock-setting/po/zh_CN.po
new file mode 100644 (file)
index 0000000..776d32c
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "锁定屏幕"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "在锁屏上查看事件通知"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "事件通知"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "时钟"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "天气"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "设置屏幕锁定时的快捷键"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "快捷键"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "双时钟"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "在锁定屏幕时显示帮助文本"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "漫游时在锁屏上显示双时钟"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "点击并按住屏幕同时旋转手机以打开摄像头"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "照相机快速访问"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "设置快捷方式"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "用拖放的方式调整顺序"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "选择应用程序"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "点击快捷方式分配应用程序"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "编辑快捷方式"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "帮助文本"
+
diff --git a/lock-setting/po/zh_HK.po b/lock-setting/po/zh_HK.po
new file mode 100644 (file)
index 0000000..53b912e
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "鎖定螢幕"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "於鎖定螢幕上檢視事件通知"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "事件通知"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "時鐘"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "天氣"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "在鎖定螢幕上設定捷徑"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "捷徑"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "雙時鐘"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "於鎖定螢幕顯示說明文字"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "當漫遊時在鎖定螢幕上顯示雙時鐘"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "輕觸並按住螢幕同時旋轉裝置以開啟相機"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "相機快速捷徑"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "設定捷徑"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "拖放以更改順序"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "選擇應用程式"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "輕觸捷徑以指定應用程式"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "編輯捷徑"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "說明文字"
+
diff --git a/lock-setting/po/zh_SG.po b/lock-setting/po/zh_SG.po
new file mode 100644 (file)
index 0000000..c78be58
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "锁定屏幕"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "在锁屏上查看事件通知"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "事件通知"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "时钟"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "天气"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "设置锁屏快捷方式"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "快捷键"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "双时钟"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "在锁定屏幕上显示帮助文本"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "漫游时在锁屏上显示双时钟"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "轻敲并按住屏幕同时旋转设备以打开摄像头"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "摄像头快速访问"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "设置快捷方式"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "用拖放的方式调整顺序"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "选择应用程序"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "轻敲快捷方式分配应用程序"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "编辑快捷键"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "帮助文本"
+
diff --git a/lock-setting/po/zh_TW.po b/lock-setting/po/zh_TW.po
new file mode 100644 (file)
index 0000000..5859f7f
--- /dev/null
@@ -0,0 +1,54 @@
+msgid "IDS_ST_BODY_LOCK_SCREEN"
+msgstr "鎖定螢幕"
+
+msgid "IDS_IDLE_BODY_VIEW_EVENT_NOTIFICATIONS_ON_THE_LOCK_SCREEN"
+msgstr "於鎖定螢幕上檢視活動通知"
+
+msgid "IDS_IDLE_MBODY_EVENT_NOTIFICATIONS"
+msgstr "活動通知"
+
+msgid "IDS_ST_BODY_CLOCK"
+msgstr "時鐘"
+
+msgid "IDS_ST_BODY_WEATHER"
+msgstr "氣象"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS_ON_LOCK_SCREEN"
+msgstr "在鎖定螢幕上設定捷徑"
+
+msgid "IDS_ST_BODY_SHORTCUTS"
+msgstr "捷徑"
+
+msgid "IDS_ST_BODY_DUAL_CLOCK"
+msgstr "雙時鐘"
+
+msgid "IDS_ST_BODY_SHOW_HELP_TEXT_ON_LOCK_SCREEN"
+msgstr "於鎖定螢幕顯示說明文字"
+
+msgid "IDS_ST_BODY_SHOW_DUAL_CLOCK_ON_LOCK_SCREEN_WHEN_ROAMING"
+msgstr "漫遊時在鎖定螢幕上顯示雙時鐘"
+
+msgid "IDS_ST_BODY_TAP_AND_HOLD_THE_SCREEN_WHILE_ROTATING_THE_DEVICE_TO_OPEN_CAMERA"
+msgstr "輕觸並按住螢幕同時旋轉裝置以開啟相機"
+
+msgid "IDS_ST_MBODY_CAMERA_QUICK_ACCESS"
+msgstr "相機快速捷徑"
+
+msgid "IDS_ST_BODY_SET_SHORTCUTS"
+msgstr "設定捷徑"
+
+msgid "IDS_ST_BODY_DRAG_AND_DROP_TO_CHANGE_ORDER"
+msgstr "拖放以變更順序"
+
+msgid "IDS_ST_BODY_SELECT_APPLICATION"
+msgstr "選擇應用程式"
+
+msgid "IDS_ST_BODY_TAP_SHORTCUT_TO_ASSIGN_APPLICATION"
+msgstr "輕觸捷徑以指定應用程式"
+
+msgid "IDS_ST_OPT_EDIT_SHORTCUTS"
+msgstr "編輯快捷鍵"
+
+msgid "IDS_IM_BODY_HELP_TEXT"
+msgstr "說明文字"
+
index a014745..a301939 100644 (file)
@@ -1,13 +1,11 @@
-
 [Unit]
 Description=Start the "starter" program
 Before=core-efl.target
-After=xorg.target e17.service
-Before=menu-daemon.service
+After=xorg.target
 
 [Service]
 ExecStart=/usr/bin/starter
 
 [Install]
 WantedBy=core-efl.target
-
+WantedBy=tizen-mobile-session.target
index 65eb76a..a075865 100755 (executable)
@@ -3,23 +3,40 @@ Summary:    starter
 Version: 0.4.11
 Release:    2
 Group:      TO_BE/FILLED_IN
-License:    Flora Software License
+License:    TO_BE/FILLED_IN
 Source0:    starter-%{version}.tar.gz
 Source1:    starter.service
 Requires(post): /usr/bin/vconftool
 BuildRequires:  cmake
-BuildRequires:  pkgconfig(glib-2.0)
-BuildRequires:  pkgconfig(tapi)
-BuildRequires:  pkgconfig(vconf)
-BuildRequires:  pkgconfig(heynoti)
+BuildRequires:  pkgconfig(ail)
+BuildRequires:  pkgconfig(appcore-efl)
 BuildRequires:  pkgconfig(aul)
-BuildRequires:  pkgconfig(x11)
-BuildRequires:  pkgconfig(elementary)
+BuildRequires:  pkgconfig(capi-appfw-application)
+BuildRequires:  pkgconfig(capi-system-media-key)
+BuildRequires:  pkgconfig(db-util)
+BuildRequires:  pkgconfig(dlog)
 BuildRequires:  pkgconfig(ecore)
+BuildRequires:  pkgconfig(edje)
+BuildRequires:  pkgconfig(eet)
+BuildRequires:  pkgconfig(eina)
+BuildRequires:  pkgconfig(elementary)
 BuildRequires:  pkgconfig(evas)
+BuildRequires:  pkgconfig(glib-2.0)
+BuildRequires:  pkgconfig(heynoti)
+BuildRequires:  pkgconfig(sysman)
+BuildRequires:  pkgconfig(syspopup-caller)
+BuildRequires:  pkgconfig(tapi)
+BuildRequires:  pkgconfig(ui-gadget-1)
 BuildRequires:  pkgconfig(utilX)
-BuildRequires:  pkgconfig(appcore-efl)
-BuildRequires:  pkgconfig(capi-appfw-application)
+BuildRequires:  pkgconfig(vconf)
+BuildRequires:  pkgconfig(x11)
+BuildRequires:  pkgconfig(xcomposite)
+BuildRequires:  pkgconfig(xext)
+BuildRequires:  cmake
+BuildRequires:  edje-bin
+BuildRequires: gettext-tools
+
+Requires(post): /usr/bin/vconftool
 
 %description
 Description: Starter
@@ -32,7 +49,7 @@ cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix}
 
 %build
 
-make -j1 
+make -j1
 %install
 rm -rf %{buildroot}
 %make_install
@@ -40,6 +57,9 @@ rm -rf %{buildroot}
 mkdir -p %{buildroot}%{_libdir}/systemd/user/core-efl.target.wants
 install -m 0644 %SOURCE1 %{buildroot}%{_libdir}/systemd/user/
 ln -s ../starter.service %{buildroot}%{_libdir}/systemd/user/core-efl.target.wants/starter.service
+mkdir -p %{buildroot}/usr/share/license
+cp -f LICENSE %{buildroot}/usr/share/license/%{name}
+mkdir -p %{buildroot}/opt/data/home-daemon
 
 %post
 change_file_executable()
@@ -50,9 +70,30 @@ change_file_executable()
     fi
 }
 
-vconftool set -t int "memory/starter/sequence" 0 -i -u 5000 -g 5000
+GOPTION="-u 5000 -f"
+
+vconftool set -t int "memory/starter/sequence" 0 -i $GOPTION
+vconftool set -t int "memory/starter/use_volume_key" 0 -i $GOPTION
 vconftool set -t string file/private/lockscreen/pkgname "org.tizen.draglock" -u 5000 -g 5000
-vconftool -i set -t int memory/idle_lock/state "0" -u 5000 -g 5000
+vconftool set -t int memory/idle_lock/state "0" -i $GOPTION
+vconftool set -t bool memory/lockscreen/phone_lock_verification 0 -i $GOPTION
+
+vconftool set -t bool db/lockscreen/shortcut_display 0 $GOPTION
+vconftool set -t bool db/lockscreen/event_notification_display 1 $GOPTION
+vconftool set -t bool db/lockscreen/context_aware_notification_display 0 $GOPTION
+vconftool set -t bool db/lockscreen/clock_display 1 $GOPTION
+vconftool set -t bool db/lockscreen/weather_display 1 $GOPTION
+vconftool set -t bool db/lockscreen/help_text_display 0 $GOPTION
+vconftool set -t bool db/lockscreen/camera_quick_access 0 $GOPTION
+vconftool set -t string file/lockscreen/shortcut1 "" $GOPTION
+vconftool set -t string file/lockscreen/shortcut2 "" $GOPTION
+vconftool set -t string file/lockscreen/shortcut3 "" $GOPTION
+vconftool set -t string file/lockscreen/shortcut4 "" $GOPTION
+
+vconftool set -t string memory/menuscreen/desktop "0" -i -f
+vconftool set -t int memory/idle-screen/is_idle_screen_launched "0" -i -u 5000 -f
+vconftool set -t int memory/idle-screen/top "0" -i -f
+vconftool set -t int memory/idle-screen/safemode "0" -i -f
 
 ln -sf /etc/init.d/rd4starter /etc/rc.d/rc4.d/S81starter
 ln -sf /etc/init.d/rd3starter /etc/rc.d/rc3.d/S43starter
@@ -69,6 +110,16 @@ sync
 %{_sysconfdir}/init.d/rd4starter
 %{_sysconfdir}/init.d/rd3starter
 %{_bindir}/starter
-%{_libdir}/liblock-daemon.so
+/usr/ug/lib/libug-openlock-setting.so
+/usr/ug/lib/libug-openlock-setting.so.0.1.0
+/usr/ug/lib/libug-lockscreen-options.so
+/usr/ug/lib/libug-lockscreen-options.so.0.1.0
+/usr/ug/res/locale/*/LC_MESSAGES/*
+/usr/ug/res/edje/*
+/usr/ug/res/edje/ug-lockscreen-options-efl/*
+/usr/ug/res/images/*
+/usr/ug/res/images/ug-lockscreen-options-efl/*
 %{_libdir}/systemd/user/starter.service
 %{_libdir}/systemd/user/core-efl.target.wants/starter.service
+/usr/share/license/%{name}
+/opt/data/home-daemon
index 745eafa..0304170 100755 (executable)
@@ -6,5 +6,21 @@
 #      sleep 0.1
 #done
 
-/usr/bin/starter &
+while [ ! -f /tmp/amd_ready ];
+do
+        sleep 0.1
+done
+
+vconf_set_safemode()
+{
+       if [ -f /opt/etc/.safemode ]
+       then
+               vconftool set -t int memory/idle-screen/safemode "1" -i -f
+       else
+               vconftool set -t int memory/idle-screen/safemode "0" -i -f
+       fi
+}
+vconf_set_safemode
 
+echo -e "<2>[${_G}menu-daemon start${C_}]" > /dev/kmsg
+/usr/bin/starter &
index 60f35e6..e5a896c 100755 (executable)
@@ -1,4 +1,14 @@
 #!/bin/sh
+vconf_set_safemode()
+{
+       if [ -f /opt/etc/.safemode ]
+       then
+               vconftool set -t int memory/idle-screen/safemode "1" -i -f
+       else
+               vconftool set -t int memory/idle-screen/safemode "0" -i -f
+       fi
+}
+vconf_set_safemode
 
+echo -e "<2>[${_G}menu-daemon start${C_}]" > /dev/kmsg
 /usr/bin/starter &
-
diff --git a/src/hw_key.c b/src/hw_key.c
new file mode 100755 (executable)
index 0000000..211b4eb
--- /dev/null
@@ -0,0 +1,347 @@
+ /*
+  * 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 <ail.h>
+#include <bundle.h>
+#include <Elementary.h>
+#include <Ecore_X.h>
+#include <Ecore_Input.h>
+#include <sysman.h>
+#include <syspopup_caller.h>
+#include <utilX.h>
+#include <vconf.h>
+#include <system/media_key.h>
+
+#include "hw_key.h"
+#include "util.h"
+
+#define TASKMGR_PKG_NAME "org.tizen.taskmgr"
+#define CAMERA_PKG_NAME "org.tizen.camera-app"
+#define CALLLOG_PKG_NAME "org.tizen.calllog"
+#define SEARCH_PKG_NAME "org.tizen.smartsearch"
+#define MUSIC_PLAYER_PKG_NAME "org.tizen.music-player"
+
+
+
+static struct {
+       Ecore_X_Window win;
+       Ecore_Event_Handler *key_up;
+       Ecore_Event_Handler *key_down;
+       Ecore_Timer *long_press;
+       Ecore_Timer *single_timer;
+       Ecore_Timer *volume_up_long_press;
+       Ecore_Timer *volume_down_long_press;
+       Eina_Bool cancel;
+} key_info = {
+       .win = 0x0,
+       .key_up = NULL,
+       .key_down = NULL,
+       .long_press = NULL,
+       .single_timer = NULL,
+       .volume_up_long_press = NULL,
+       .volume_down_long_press = NULL,
+       .cancel = EINA_FALSE,
+};
+
+
+
+static Eina_Bool _launch_taskmgr_cb(void* data)
+{
+       _D("Launch TASKMGR");
+
+       key_info.long_press = NULL;
+
+       if (aul_open_app(TASKMGR_PKG_NAME) < 0)
+               _E("Failed to launch the taskmgr");
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+
+
+static Eina_Bool _launch_home_screen(void *data)
+{
+       char *package;
+       int ret;
+
+       syspopup_destroy_all();
+       key_info.single_timer = NULL;
+
+       package = vconf_get_str(VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME);
+       if (package) {
+               ret = aul_open_app(package);
+               if (ret < 0) {
+                       _E("cannot launch package %s(err:%d)", package, ret);
+
+                       if (-1 == ret) { // -1 : AUL returns '-1' when there is no package name in DB.
+                               ret = aul_open_app(HOME_SCREEN_PKG_NAME);
+                               if (ret < 0) {
+                                       _E("Failed to open a default home, %s(err:%d)", HOME_SCREEN_PKG_NAME, ret);
+                               }
+                       }
+               }
+
+               free(package);
+       } else {
+               ret = aul_open_app(HOME_SCREEN_PKG_NAME);
+               if (ret < 0) _E("Cannot open default home");
+       }
+
+       if (ret > 0) {
+               if (-1 == sysconf_set_mempolicy_bypid(ret, OOM_IGNORE)) {
+                       _E("Cannot set the memory policy for Home-screen(%d)", ret);
+               } else {
+                       _E("Set the memory policy for Home-screen(%d)", ret);
+               }
+       }
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+
+
+inline static void _launch_svoice(void)
+{
+       _D("Launch smartsearch");
+       if (aul_open_app(SEARCH_PKG_NAME) < 0)
+               _E("Cannot open Smart-search");
+
+       return;
+}
+
+
+
+inline static int _release_home_key(void)
+{
+       retv_if(NULL == key_info.long_press, EXIT_SUCCESS);
+       ecore_timer_del(key_info.long_press);
+       key_info.long_press = NULL;
+
+       if (NULL == key_info.single_timer) {
+               key_info.single_timer = ecore_timer_add(0.3, _launch_home_screen, NULL);
+               return EXIT_SUCCESS;
+       }
+       ecore_timer_del(key_info.single_timer);
+       key_info.single_timer = NULL;
+
+       syspopup_destroy_all();
+       _launch_svoice();
+
+       return EXIT_SUCCESS;
+}
+
+
+
+inline static void _release_multimedia_key(const char *value)
+{
+       bundle *b;
+       int ret;
+
+       _D("Multimedia key is released with %s", value);
+       ret_if(NULL == value);
+
+       b = bundle_create();
+       if (!b) {
+               _E("Cannot create bundle");
+               return;
+       }
+
+       bundle_add(b, "multimedia_key", value);
+       ret = aul_launch_app(MUSIC_PLAYER_PKG_NAME, b);
+       bundle_free(b);
+
+       if (ret < 0)
+               _E("Failed to launch the running apps, ret : %d", ret);
+}
+
+
+
+static Eina_Bool _key_release_cb(void *data, int type, void *event)
+{
+       Evas_Event_Key_Up *ev = event;
+       int val = -1;
+
+       _D("Released");
+
+       if (!ev) {
+               _D("Invalid event object");
+               return ECORE_CALLBACK_RENEW;
+       }
+
+       if (!strcmp(ev->keyname, KEY_END)) {
+       } else if (!strcmp(ev->keyname, KEY_CONFIG)) {
+       } else if (!strcmp(ev->keyname, KEY_SEND)) {
+       } else if (!strcmp(ev->keyname, KEY_HOME)) {
+
+               if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &val) < 0) {
+                       _D("Cannot get VCONFKEY_IDLE_LOCK_STATE");
+               }
+               if (val == VCONFKEY_IDLE_LOCK) {
+                       _D("lock state, ignore home key..!!");
+                       return ECORE_CALLBACK_RENEW;
+               }
+
+               if (EINA_TRUE == key_info.cancel) {
+                       _D("Cancel key is activated");
+                       if (key_info.long_press) {
+                               ecore_timer_del(key_info.long_press);
+                               key_info.long_press = NULL;
+                       }
+
+                       if (key_info.single_timer) {
+                               ecore_timer_del(key_info.single_timer);
+                               key_info.single_timer = NULL;
+                       }
+
+                       return ECORE_CALLBACK_RENEW;
+               }
+
+               _release_home_key();
+       } else if (!strcmp(ev->keyname, KEY_PAUSE)) {
+       } else if (!strcmp(ev->keyname, KEY_CANCEL)) {
+               _D("CANCEL Key is released");
+               key_info.cancel = EINA_FALSE;
+       } else if (!strcmp(ev->keyname, KEY_MEDIA)) {
+               _release_multimedia_key("KEY_PLAYCD");
+       }
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+
+
+static Eina_Bool _key_press_cb(void *data, int type, void *event)
+{
+       Evas_Event_Key_Down *ev = event;
+       int val = -1;
+
+       _D("Pressed");
+
+       if (!ev) {
+               _D("Invalid event object");
+               return ECORE_CALLBACK_RENEW;
+       }
+
+       if (!strcmp(ev->keyname, KEY_SEND)) {
+               _D("Launch calllog");
+               if (aul_open_app(CALLLOG_PKG_NAME) < 0)
+                       _E("Failed to launch %s", CALLLOG_PKG_NAME);
+       } else if(!strcmp(ev->keyname, KEY_CONFIG)) {
+               _D("Launch camera");
+               if (aul_open_app(CAMERA_PKG_NAME) < 0)
+                       _E("Failed to launch %s", CAMERA_PKG_NAME);
+       } else if (!strcmp(ev->keyname, KEY_HOME)) {
+               if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &val) < 0) {
+                       _D("Cannot get VCONFKEY_IDLE_LOCK_STATE");
+               }
+               if (val == VCONFKEY_IDLE_LOCK) {
+                       _D("lock state, ignore home key..!!");
+                       return ECORE_CALLBACK_RENEW;
+               }
+               if (key_info.long_press) {
+                       ecore_timer_del(key_info.long_press);
+                       key_info.long_press = NULL;
+               }
+
+               key_info.long_press = ecore_timer_add(0.5, _launch_taskmgr_cb, NULL);
+               if (!key_info.long_press)
+                       _E("Failed to add timer for long press detection");
+       } else if (!strcmp(ev->keyname, KEY_CANCEL)) {
+               _D("Cancel button is pressed");
+               key_info.cancel = EINA_TRUE;
+       } else if (!strcmp(ev->keyname, KEY_MEDIA)) {
+               _D("Media key is pressed");
+       }
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+
+
+void _media_key_event_cb(media_key_e key, media_key_event_e status, void *user_data)
+{
+       _D("MEDIA KEY EVENT");
+       if (MEDIA_KEY_STATUS_PRESSED == status) return;
+
+       if (MEDIA_KEY_PAUSE == key) {
+               _release_multimedia_key("KEY_PAUSECD");
+       } else if (MEDIA_KEY_PLAY == key) {
+               _release_multimedia_key("KEY_PLAYCD");
+       }
+}
+
+
+
+void create_key_window(void)
+{
+       key_info.win = ecore_x_window_input_new(0, 0, 0, 1, 1);
+       if (!key_info.win) {
+               _D("Failed to create hidden window");
+               return;
+       }
+       ecore_x_event_mask_unset(key_info.win, ECORE_X_EVENT_MASK_NONE);
+       ecore_x_icccm_title_set(key_info.win, "menudaemon,key,receiver");
+       ecore_x_netwm_name_set(key_info.win, "menudaemon,key,receiver");
+       ecore_x_netwm_pid_set(key_info.win, getpid());
+
+       utilx_grab_key(ecore_x_display_get(), key_info.win, KEY_HOME, SHARED_GRAB);
+       utilx_grab_key(ecore_x_display_get(), key_info.win, KEY_VOLUMEDOWN, SHARED_GRAB);
+       utilx_grab_key(ecore_x_display_get(), key_info.win, KEY_VOLUMEUP, SHARED_GRAB);
+       utilx_grab_key(ecore_x_display_get(), key_info.win, KEY_CONFIG, SHARED_GRAB);
+       utilx_grab_key(ecore_x_display_get(), key_info.win, KEY_MEDIA, SHARED_GRAB);
+
+       key_info.key_up = ecore_event_handler_add(ECORE_EVENT_KEY_UP, _key_release_cb, NULL);
+       if (!key_info.key_up)
+               _D("Failed to register a key up event handler");
+
+       key_info.key_down = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _key_press_cb, NULL);
+       if (!key_info.key_down)
+               _D("Failed to register a key down event handler");
+
+       media_key_reserve(_media_key_event_cb, NULL);
+}
+
+
+
+void destroy_key_window(void)
+{
+       utilx_ungrab_key(ecore_x_display_get(), key_info.win, KEY_HOME);
+       utilx_ungrab_key(ecore_x_display_get(), key_info.win, KEY_VOLUMEDOWN);
+       utilx_ungrab_key(ecore_x_display_get(), key_info.win, KEY_VOLUMEUP);
+       utilx_ungrab_key(ecore_x_display_get(), key_info.win, KEY_CONFIG);
+       utilx_ungrab_key(ecore_x_display_get(), key_info.win, KEY_MEDIA);
+
+       if (key_info.key_up) {
+               ecore_event_handler_del(key_info.key_up);
+               key_info.key_up = NULL;
+       }
+
+       if (key_info.key_down) {
+               ecore_event_handler_del(key_info.key_down);
+               key_info.key_down = NULL;
+       }
+
+       ecore_x_window_delete_request_send(key_info.win);
+       key_info.win = 0x0;
+
+       media_key_release();
+}
+
+
+
+// End of a file
diff --git a/src/lock-daemon.c b/src/lock-daemon.c
new file mode 100755 (executable)
index 0000000..7ac1fd8
--- /dev/null
@@ -0,0 +1,743 @@
+ /*
+  * 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 <Elementary.h>
+
+#include <vconf.h>
+#include <vconf-keys.h>
+
+#include <glib.h>
+#include <poll.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <unistd.h>
+#include <sys/param.h>
+#include <errno.h>
+
+#include "lockd-debug.h"
+#include "lock-daemon.h"
+#include "lockd-process-mgr.h"
+#include "lockd-window-mgr.h"
+#include "starter-util.h"
+#include "menu_daemon.h"
+
+static int phone_lock_pid;
+
+struct lockd_data {
+       int lock_app_pid;
+       int phone_lock_app_pid;
+       int lock_type;  /* 0:Normal, 1:Security,  2:Other */
+       Eina_Bool request_recovery;
+       lockw_data *lockw;
+       GPollFD *gpollfd;
+};
+
+/* define it temp */
+#if 0
+struct ucred {
+       pid_t pid;              /* PID of sending process.  */
+       uid_t uid;              /* UID of sending process.  */
+       gid_t gid;              /* GID of sending process.  */
+};
+#endif
+
+#define PHLOCK_SOCK_PREFIX "/tmp/phlock"
+#define PHLOCK_SOCK_MAXBUFF 65535
+#define PHLOCK_APP_CMDLINE "/usr/apps/org.tizen.phone-lock/bin/phone-lock"
+#define MDM_APP_CMDLINE "/usr/bin/mdm-server"
+#define PHLOCK_UNLOCK_CMD "unlock"
+#define PHLOCK_LAUNCH_CMD "launch_phone_lock"
+#define LAUNCH_INTERVAL 100*1000
+
+static int lockd_launch_app_lockscreen(struct lockd_data *lockd);
+
+static void lockd_unlock_lockscreen(struct lockd_data *lockd);
+
+static int _lockd_get_lock_type(void)
+{
+       int lock_type = 0;
+       int ret = 0;
+
+       vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &lock_type);
+
+       if (lock_type == SETTING_SCREEN_LOCK_TYPE_PASSWORD ||
+               lock_type == SETTING_SCREEN_LOCK_TYPE_SIMPLE_PASSWORD ||
+               lock_type == SETTING_SCREEN_LOCK_TYPE_FACE_AND_VOICE) {
+               ret = 1;
+       } else if (lock_type == SETTING_SCREEN_LOCK_TYPE_SWIPE ||
+               lock_type == SETTING_SCREEN_LOCK_TYPE_MOTION) {
+               ret = 0;
+       } else {
+               ret = 2;
+       }
+
+       LOCKD_DBG("_lockd_get_lock_type ret(%d), lock_type (%d)", ret, lock_type);
+
+       return ret;
+}
+
+static void _lockd_notify_pm_state_cb(keynode_t * node, void *data)
+{
+       LOCKD_DBG("PM state Notification!!");
+
+       struct lockd_data *lockd = (struct lockd_data *)data;
+       int val = -1;
+
+       if (lockd == NULL) {
+               LOCKD_ERR("lockd is NULL");
+               return;
+       }
+
+       if (vconf_get_int(VCONFKEY_PM_STATE, &val) < 0) {
+               LOCKD_ERR("Cannot get VCONFKEY_PM_STATE");
+               return;
+       }
+
+       if (val == VCONFKEY_PM_STATE_LCDOFF) {
+               lockd->lock_type = _lockd_get_lock_type();
+               lockd_launch_app_lockscreen(lockd);
+       }
+}
+
+static void
+_lockd_notify_lock_state_cb(keynode_t * node, void *data)
+{
+       LOCKD_DBG("lock state changed!!");
+
+       struct lockd_data *lockd = (struct lockd_data *)data;
+       int val = -1;
+
+       if (lockd == NULL) {
+               LOCKD_ERR("lockd is NULL");
+               return;
+       }
+
+       if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &val) < 0) {
+               LOCKD_ERR("Cannot get VCONFKEY_IDLE_LOCK_STATE");
+               return;
+       }
+
+       if (val == VCONFKEY_IDLE_UNLOCK) {
+               LOCKD_DBG("unlocked..!!");
+               if (lockd->lock_app_pid != 0) {
+                       LOCKD_DBG("terminate lock app..!!");
+                       lockd_process_mgr_terminate_lock_app(lockd->lock_app_pid, 1);
+               }
+       }
+}
+
+static void
+_lockd_notify_phone_lock_verification_cb(keynode_t * node, void *data)
+{
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       struct lockd_data *lockd = (struct lockd_data *)data;
+       int val = -1;
+
+       if (lockd == NULL) {
+               LOCKD_ERR("lockd is NULL");
+               return;
+       }
+
+       if (vconf_get_bool(VCONFKEY_LOCKSCREEN_PHONE_LOCK_VERIFICATION, &val) < 0) {
+               LOCKD_ERR("Cannot get %s", VCONFKEY_LOCKSCREEN_PHONE_LOCK_VERIFICATION);
+               return;
+       }
+
+       if (val == TRUE) {
+               /* password verified */
+               /* lockd_unlock_lockscreen(lockd); */
+               lockd_window_mgr_finish_lock(lockd->lockw);
+               vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_UNLOCK);
+       }
+}
+
+static int lockd_app_dead_cb(int pid, void *data)
+{
+       LOCKD_DBG("app dead cb call! (pid : %d)", pid);
+
+       struct lockd_data *lockd = (struct lockd_data *)data;
+
+       if (pid == lockd->lock_app_pid && lockd->lock_type == 0) {
+               LOCKD_DBG("lock app(pid:%d) is destroyed.", pid);
+
+               lockd_unlock_lockscreen(lockd);
+       }
+
+       menu_daemon_check_dead_signal(pid);
+
+       return 0;
+}
+
+static Eina_Bool lockd_set_lock_state_cb(void *data)
+{
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+       vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_LOCK);
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static Eina_Bool lockd_app_create_cb(void *data, int type, void *event)
+{
+       struct lockd_data *lockd = (struct lockd_data *)data;
+
+       if (lockd == NULL) {
+               return ECORE_CALLBACK_PASS_ON;
+       }
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+       lockd_window_set_window_effect(lockd->lockw, lockd->lock_app_pid,
+                                      event);
+       //FIXME sometimes show cb is not called.
+       lockd_window_set_window_property(lockd->lockw, lockd->lock_app_pid,
+                                        event);
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+static Eina_Bool lockd_app_show_cb(void *data, int type, void *event)
+{
+       struct lockd_data *lockd = (struct lockd_data *)data;
+
+       if (lockd == NULL) {
+               return EINA_TRUE;
+       }
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+       lockd_window_set_window_property(lockd->lockw, lockd->lock_app_pid,
+                                        event);
+       if (lockd->lock_type > 1)
+               ecore_idler_add(lockd_set_lock_state_cb, NULL);
+
+       return EINA_FALSE;
+}
+
+static int lockd_launch_app_lockscreen(struct lockd_data *lockd)
+{
+       LOCKD_DBG("launch app lock screen");
+
+       int call_state = -1, phlock_state = -1, factory_mode = -1, test_mode = -1;
+       int r = 0;
+
+       WRITE_FILE_LOG("%s", "Launch lockscreen in starter");
+       vconf_get_int(VCONFKEY_TELEPHONY_SIM_FACTORY_MODE, &factory_mode);
+       if (factory_mode == VCONFKEY_TELEPHONY_SIM_FACTORYMODE_ON) {
+               LOCKD_DBG("Factory mode ON, lock screen can't be launched..!!");
+               return 0;
+       }
+       vconf_get_int(VCONFKEY_TESTMODE_SCREEN_LOCK, &test_mode);
+       if (test_mode == VCONFKEY_TESTMODE_SCREEN_LOCK_DISABLE) {
+               LOCKD_DBG("Test mode ON, lock screen can't be launched..!!");
+               return 0;
+       }
+
+       /* Check lock screen application is already exit, no checking phone-lock */
+       if (lockd_process_mgr_check_lock(lockd->lock_app_pid) == TRUE) {
+               LOCKD_DBG("Lock Screen App is already running.");
+               r = lockd_process_mgr_restart_lock(lockd->lock_type);
+               if (r < 0) {
+                       LOCKD_DBG("Restarting Lock Screen App is fail [%d].", r);
+                       usleep(LAUNCH_INTERVAL);
+               } else {
+                       LOCKD_DBG("Restarting Lock Screen App, pid[%d].", r);
+                       return 1;
+               }
+       }
+
+       /* Get Call state */
+       vconf_get_int(VCONFKEY_CALL_STATE, &call_state);
+       if (call_state != VCONFKEY_CALL_OFF) {
+               LOCKD_DBG
+                   ("Current call state(%d) does not allow to launch lock screen.",
+                    call_state);
+               return 0;
+       }
+
+       if (lockd->lock_type == 0) {
+               lockd->lock_app_pid =
+                   lockd_process_mgr_start_normal_lock(lockd, lockd_app_dead_cb);
+               if (lockd->lock_app_pid < 0)
+                       return 0;
+               /* reset window mgr before start win mgr  */
+               lockd_window_mgr_finish_lock(lockd->lockw);
+               lockd_window_mgr_ready_lock(lockd, lockd->lockw, lockd_app_create_cb,
+                                           lockd_app_show_cb);
+       } else if (lockd->lock_type == 1) {
+               vconf_set_bool(VCONFKEY_LOCKSCREEN_PHONE_LOCK_VERIFICATION, FALSE);
+               /* Check phone lock application is already exit */
+               if (lockd_process_mgr_check_lock(lockd->phone_lock_app_pid) == TRUE) {
+                       LOCKD_DBG("phone lock App is already running.");
+                       if (lockd->request_recovery == FALSE)
+                               return 1;
+               }
+
+               /* TO DO : Recovery should be checked by EAS interface later */
+               /* After getting EAS interface, we should remove lockd->request_recovery */
+               if (lockd->request_recovery == TRUE) {
+                       lockd->phone_lock_app_pid =
+                           lockd_process_mgr_start_recovery_lock();
+                       lockd->request_recovery = FALSE;
+               } else {
+                       lockd->phone_lock_app_pid =
+                           lockd_process_mgr_start_phone_lock();
+               }
+               phone_lock_pid = lockd->phone_lock_app_pid;
+               LOCKD_DBG("%s, %d, phone_lock_pid = %d", __func__, __LINE__,
+                         phone_lock_pid);
+               lockd_window_set_phonelock_pid(lockd->lockw, phone_lock_pid);
+
+               /* Set lock state */ 
+               //ecore_idler_add(lockd_set_lock_state_cb, NULL); //don't set lock state for lcd on.
+       } else {
+               lockd->lock_app_pid =
+                   lockd_process_mgr_start_lock(lockd, lockd_app_dead_cb,
+                                                lockd->lock_type);
+               if (lockd->lock_app_pid < 0)
+                       return 0;
+               /* reset window mgr before start win mgr  */
+               lockd_window_mgr_finish_lock(lockd->lockw);
+               lockd_window_mgr_ready_lock(lockd, lockd->lockw, lockd_app_create_cb,
+                                           lockd_app_show_cb);
+       }
+       return 1;
+}
+
+static void lockd_unlock_lockscreen(struct lockd_data *lockd)
+{
+       LOCKD_DBG("unlock lock screen");
+       lockd->lock_app_pid = 0;
+
+       vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_UNLOCK);
+       lockd_window_mgr_finish_lock(lockd->lockw);
+}
+
+inline static void lockd_set_sock_option(int fd, int cli)
+{
+       int size;
+       struct timeval tv = { 1, 200 * 1000 };  /* 1.2 sec */
+
+       size = PHLOCK_SOCK_MAXBUFF;
+       setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &size, sizeof(size));
+       setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &size, sizeof(size));
+       if (cli)
+               setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv));
+}
+
+static int lockd_create_sock(void)
+{
+       struct sockaddr_un saddr;
+       int fd;
+
+       fd = socket(AF_UNIX, SOCK_STREAM, 0);   /* support above version 2.6.27 */
+       if (fd < 0) {
+               if (errno == EINVAL) {
+                       fd = socket(AF_UNIX, SOCK_STREAM, 0);
+                       if (fd < 0) {
+                               LOCKD_DBG
+                                   ("second chance - socket create error");
+                               return -1;
+                       }
+               } else {
+                       LOCKD_DBG("socket error");
+                       return -1;
+               }
+       }
+
+       bzero(&saddr, sizeof(saddr));
+       saddr.sun_family = AF_UNIX;
+
+       strncpy(saddr.sun_path, PHLOCK_SOCK_PREFIX, strlen(PHLOCK_SOCK_PREFIX));
+       saddr.sun_path[strlen(PHLOCK_SOCK_PREFIX)] = 0;
+
+       unlink(saddr.sun_path);
+
+       if (bind(fd, (struct sockaddr *)&saddr, sizeof(saddr)) < 0) {
+               LOCKD_DBG("bind error");
+               return -1;
+       }
+
+       if (chmod(saddr.sun_path, (S_IRWXU | S_IRWXG | S_IRWXO)) < 0) {
+               /* Flawfinder: ignore */
+               LOCKD_DBG("failed to change the socket permission");
+               return -1;
+       }
+
+       lockd_set_sock_option(fd, 0);
+
+       if (listen(fd, 10) == -1) {
+               LOCKD_DBG("listen error");
+               return -1;
+       }
+
+       return fd;
+}
+
+static gboolean lockd_glib_check(GSource * src)
+{
+       GSList *fd_list;
+       GPollFD *tmp;
+
+       fd_list = src->poll_fds;
+       do {
+               tmp = (GPollFD *) fd_list->data;
+               if ((tmp->revents & (POLLIN | POLLPRI)))
+                       return TRUE;
+               fd_list = fd_list->next;
+       } while (fd_list);
+
+       return FALSE;
+}
+
+static char *lockd_read_cmdline_from_proc(int pid)
+{
+       int memsize = 32;
+       char path[32];
+       char *cmdline = NULL, *tempptr = NULL;
+       FILE *fp = NULL;
+
+       snprintf(path, sizeof(path), "/proc/%d/cmdline", pid);
+
+       fp = fopen(path, "r");
+       if (fp == NULL) {
+               LOCKD_DBG("Cannot open cmdline on pid[%d]", pid);
+               return NULL;
+       }
+
+       cmdline = malloc(32);
+       if (cmdline == NULL) {
+               LOCKD_DBG("%s", "Out of memory");
+               fclose(fp);
+               return NULL;
+       }
+
+       bzero(cmdline, memsize);
+       if (fgets(cmdline, 32, fp) == NULL) {
+               LOCKD_DBG("%s", "Cannot read cmdline");
+               free(cmdline);
+               fclose(fp);
+               return NULL;
+       }
+
+       while (cmdline[memsize - 2] != 0) {
+               cmdline[memsize - 1] = (char)fgetc(fp);
+               tempptr = realloc(cmdline, memsize + 32);
+               if (tempptr == NULL) {
+                       fclose(fp);
+                       LOCKD_DBG("%s", "Out of memory");
+                       return NULL;
+               }
+               cmdline = tempptr;
+               bzero(cmdline + memsize, 32);
+               fgets(cmdline + memsize, 32, fp);
+               memsize += 32;
+       }
+
+       if (fp != NULL)
+               fclose(fp);
+       return cmdline;
+}
+
+static int lockd_sock_handler(void *data)
+{
+       int cl;
+       int len;
+       int sun_size;
+       int clifd = -1;
+       char cmd[PHLOCK_SOCK_MAXBUFF];
+       char *cmdline = NULL;
+       int val = -1;
+       int fd = -1;
+       int recovery_state = -1;
+       GPollFD *gpollfd;
+
+       struct ucred cr;
+       struct sockaddr_un lockd_addr;
+       struct lockd_data *lockd = (struct lockd_data *)data;
+
+       if ((lockd == NULL) || (lockd->gpollfd == NULL)) {
+               LOCKD_DBG("lockd->gpollfd is NULL");
+               return -1;
+       }
+       gpollfd = (GPollFD *)lockd->gpollfd;
+       fd = gpollfd->fd;
+
+       cl = sizeof(cr);
+       sun_size = sizeof(struct sockaddr_un);
+
+       if ((clifd =
+            accept(fd, (struct sockaddr *)&lockd_addr,
+                   (socklen_t *) & sun_size)) == -1) {
+               if (errno != EINTR)
+                       LOCKD_DBG("accept error");
+               return -1;
+       }
+
+       if (getsockopt(clifd, SOL_SOCKET, SO_PEERCRED, &cr, (socklen_t *) & cl)
+           < 0) {
+               LOCKD_DBG("peer information error");
+               close(clifd);
+               return -1;
+       }
+       LOCKD_DBG("Peer's pid=%d, uid=%d, gid=%d\n", cr.pid, cr.uid, cr.gid);
+
+       memset(cmd, 0, PHLOCK_SOCK_MAXBUFF);
+
+       lockd_set_sock_option(clifd, 1);
+
+       /* receive single packet from socket */
+       len = recv(clifd, cmd, PHLOCK_SOCK_MAXBUFF, 0);
+
+       if (cmd == NULL) {
+               LOCKD_DBG("recv error, cmd is NULL");
+               close(clifd);
+               return -1;
+       }
+
+       if (len != strlen(cmd)) {
+               LOCKD_DBG("recv error %d %d", len, strlen(cmd));
+               close(clifd);
+               return -1;
+       }
+
+       LOCKD_DBG("cmd %s", cmd);
+
+       /* Read command line of the PID from proc fs */
+       cmdline = lockd_read_cmdline_from_proc(cr.pid);
+       if (cmdline == NULL) {
+               /* It's weired. no file in proc file system, */
+               LOCKD_DBG("Error on opening /proc/%d/cmdline", cr.pid);
+               close(clifd);
+               return -1;
+       }
+
+       LOCKD_DBG("/proc/%d/cmdline : %s", cr.pid, cmdline);
+       LOCKD_DBG("phone_lock_pid : %d vs cr.pid : %d", phone_lock_pid, cr.pid);
+
+       if ((!strncmp(cmdline, PHLOCK_APP_CMDLINE, strlen(cmdline)))
+           && (!strncmp(cmd, PHLOCK_UNLOCK_CMD, strlen(cmd)))) {
+               LOCKD_DBG("cmd is %s\n", PHLOCK_UNLOCK_CMD);
+
+               if (phone_lock_pid == cr.pid) {
+                       LOCKD_DBG("pid [%d] %s is verified, unlock..!!\n", cr.pid,
+                                 cmdline);
+                       lockd_process_mgr_terminate_phone_lock(phone_lock_pid);
+                       phone_lock_pid = 0;
+                       vconf_set_bool(VCONFKEY_LOCKSCREEN_PHONE_LOCK_VERIFICATION, TRUE);
+               }
+       } else if (!strncmp(cmd, PHLOCK_LAUNCH_CMD, strlen(cmd))) {
+               LOCKD_DBG("cmd is %s\n", PHLOCK_LAUNCH_CMD);
+
+               if (!strncmp(cmdline, MDM_APP_CMDLINE, strlen(cmdline))) {
+                       LOCKD_DBG("cmdline is %s \n", MDM_APP_CMDLINE);
+                       if (vconf_get_int(VCONFKEY_EAS_RECOVERY_MODE, &recovery_state) < 0) {
+                               LOCKD_ERR("Cannot get %s vconfkey", VCONFKEY_EAS_RECOVERY_MODE);
+                               lockd->request_recovery = FALSE;
+                       } else if (recovery_state == 1) {
+                               LOCKD_DBG("recovery mode : %d \n", recovery_state);
+                               lockd->request_recovery = TRUE;
+                       } else {
+                               lockd->request_recovery = FALSE;
+                       }
+               }
+
+               if (_lockd_get_lock_type() == 1) {
+                       lockd->lock_type = 1;
+                       lockd_launch_app_lockscreen(lockd);
+               }
+       }
+
+       close(clifd);
+       return 0;
+}
+
+static gboolean lockd_glib_handler(gpointer data)
+{
+       if (lockd_sock_handler(data) < 0) {
+               LOCKD_DBG("lockd_sock_handler is failed..!!");
+       }
+       return TRUE;
+}
+
+static gboolean lockd_glib_dispatch(GSource * src, GSourceFunc callback,
+                                   gpointer data)
+{
+       callback(data);
+       return TRUE;
+}
+
+static gboolean lockd_glib_prepare(GSource * src, gint * timeout)
+{
+       return FALSE;
+}
+
+static GSourceFuncs funcs = {
+       .prepare = lockd_glib_prepare,
+       .check = lockd_glib_check,
+       .dispatch = lockd_glib_dispatch,
+       .finalize = NULL
+};
+
+static int lockd_init_sock(struct lockd_data *lockd)
+{
+       int fd;
+       GPollFD *gpollfd;
+       GSource *src;
+       int ret;
+
+       fd = lockd_create_sock();
+       if (fd < 0) {
+               LOCKD_DBG("lock daemon create sock failed..!!");
+       }
+
+       src = g_source_new(&funcs, sizeof(GSource));
+
+       gpollfd = (GPollFD *) g_malloc(sizeof(GPollFD));
+       gpollfd->events = POLLIN;
+       gpollfd->fd = fd;
+
+       lockd->gpollfd = gpollfd;
+
+       g_source_add_poll(src, lockd->gpollfd);
+       g_source_set_callback(src, (GSourceFunc) lockd_glib_handler,
+                             (gpointer) lockd, NULL);
+       g_source_set_priority(src, G_PRIORITY_LOW);
+
+       ret = g_source_attach(src, NULL);
+       if (ret == 0)
+               return -1;
+
+       g_source_unref(src);
+
+       return 0;
+}
+
+static void lockd_init_vconf(struct lockd_data *lockd)
+{
+       int val = -1;
+
+       if (vconf_notify_key_changed
+           (VCONFKEY_PM_STATE, _lockd_notify_pm_state_cb, lockd) != 0) {
+               LOCKD_ERR("Fail vconf_notify_key_changed : VCONFKEY_PM_STATE");
+       }
+
+       if (vconf_notify_key_changed
+           (VCONFKEY_LOCKSCREEN_PHONE_LOCK_VERIFICATION,
+            _lockd_notify_phone_lock_verification_cb, lockd) != 0) {
+               if (vconf_get_bool(VCONFKEY_LOCKSCREEN_PHONE_LOCK_VERIFICATION, &val) < 0) {
+                       LOCKD_ERR
+                           ("Cannot get %s", VCONFKEY_LOCKSCREEN_PHONE_LOCK_VERIFICATION);
+                       vconf_set_bool(VCONFKEY_LOCKSCREEN_PHONE_LOCK_VERIFICATION, 0);
+                       if (vconf_notify_key_changed
+                           (VCONFKEY_LOCKSCREEN_PHONE_LOCK_VERIFICATION,
+                            _lockd_notify_phone_lock_verification_cb,
+                            lockd) != 0) {
+                               LOCKD_ERR
+                                   ("Fail vconf_notify_key_changed : %s", VCONFKEY_LOCKSCREEN_PHONE_LOCK_VERIFICATION);
+                       }
+               } else {
+                       LOCKD_ERR
+                           ("Fail vconf_notify_key_changed : %s", VCONFKEY_LOCKSCREEN_PHONE_LOCK_VERIFICATION);
+               }
+       }
+
+       if (vconf_notify_key_changed
+           (VCONFKEY_IDLE_LOCK_STATE,
+            _lockd_notify_lock_state_cb,
+            lockd) != 0) {
+               LOCKD_ERR
+                   ("[Error] vconf notify : lock state");
+       }
+}
+
+static void lockd_start_lock_daemon(void *data)
+{
+       struct lockd_data *lockd = NULL;
+       int r = 0;
+
+       lockd = (struct lockd_data *)data;
+
+       if (!lockd) {
+               return;
+       }
+
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       /* register vconf notification */
+       lockd_init_vconf(lockd);
+
+       /* Initialize socket */
+       r = lockd_init_sock(lockd);
+       if (r < 0) {
+               LOCKD_DBG("lockd init socket failed: %d", r);
+       }
+       /* Create internal 1x1 window */
+       lockd->lockw = lockd_window_init();
+
+       aul_listen_app_dead_signal(lockd_app_dead_cb, data);
+
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+}
+
+int start_lock_daemon(int launch_lock)
+{
+       struct lockd_data *lockd = NULL;
+       int val = -1;
+       int recovery_state = -1;
+       int first_boot = 0;
+       int lock_type = 0;
+       int ret = 0;
+
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       lockd = (struct lockd_data *)malloc(sizeof(struct lockd_data));
+       memset(lockd, 0x0, sizeof(struct lockd_data));
+       lockd_start_lock_daemon(lockd);
+
+       if (launch_lock == FALSE) {
+               LOCKD_DBG("Don't launch lockscreen..");
+               return 0;
+       }
+
+       if (vconf_get_bool(VCONFKEY_PWLOCK_FIRST_BOOT, &first_boot) < 0) {
+               LOCKD_ERR("Cannot get %s vconfkey", VCONFKEY_PWLOCK_FIRST_BOOT);
+       } else if (first_boot == 1) {
+               LOCKD_DBG("first_boot : %d \n", first_boot);
+               return 0;
+       }
+
+       lock_type = _lockd_get_lock_type();
+       if (lock_type == 1) {
+               if (vconf_get_int(VCONFKEY_EAS_RECOVERY_MODE, &recovery_state) < 0) {
+                       LOCKD_ERR("Cannot get %s vconfkey", VCONFKEY_EAS_RECOVERY_MODE);
+                       lockd->request_recovery = FALSE;
+               } else if (recovery_state == 1) {
+                       LOCKD_DBG("recovery mode : %d \n", recovery_state);
+                       lockd->request_recovery = TRUE;
+               } else {
+                       lockd->request_recovery = FALSE;
+               }
+       } else if (lock_type == 2) {
+               lock_type = 0;
+       }
+       lockd->lock_type = lock_type;
+       ret = lockd_launch_app_lockscreen(lockd);
+       return ret;
+}
old mode 100755 (executable)
new mode 100644 (file)
similarity index 63%
rename from lock-mgr/src/lockd-debug.c
rename to src/lockd-debug.c
index bff5949..69545de
@@ -1,18 +1,20 @@
-/*
- * 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.
- */
+ /*
+  * 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 <stdio.h>
 #include <stdarg.h>
@@ -26,7 +28,7 @@
 #include "lockd-debug.h"
 
 #define LINEMAX 256
-#define MAXFILELEN     1048576
+#define MAXFILELEN     1048576 /* 32000 */
 #define LOGFILE "/tmp/starter.log"
 
 void lockd_log_t(char *fmt, ...)
@@ -44,7 +46,8 @@ void lockd_log_t(char *fmt, ...)
        time_t current_time = 0;
        bzero((char *)&debugString, LINEMAX);
        time(&current_time);
-       gmtime_r(&current_time, &local_t);
+       /* local_t = gmtime(&current_time); */
+       gmtime_r(&current_time, &local_t);      /* for prevent 53555 */
        int len = snprintf(debugString, sizeof(debugString),
                           "[%d-%02d-%02d, %02d:%02d:%02d]: ",
                           local_t.tm_year + 1900, local_t.tm_mon + 1,
@@ -57,10 +60,13 @@ void lockd_log_t(char *fmt, ...)
        }
        len = g_strlcat(debugString, buf, LINEMAX);
        if (len >= LINEMAX) {
+               /* TODO:ERROR handling */
                return;
        } else {
                debugString[len] = '\n';
        }
+       /* FIXME this is for permission.. later we should fix and remove this... */
+       /* system("chmod 666 "LOGFILE); */
        if ((fd = fopen(LOGFILE, "at+")) == NULL) {
                LOCKD_DBG("File fopen fail for writing Pwlock information");
        } else {
@@ -74,6 +80,7 @@ void lockd_log_t(char *fmt, ...)
                                execl("/bin/rm", "rm", "-f", LOGFILE,
                                      (char *)0);
                        }
+                       /* system("rm -rf "LOGFILE);  */
                } else {
                        fseek(fd, 0l, SEEK_END);
                        fileLen = ftell(fd);
@@ -85,6 +92,7 @@ void lockd_log_t(char *fmt, ...)
                                        execl("/bin/rm", "rm", "-f", LOGFILE,
                                              (char *)0);
                                }
+                               /* system("rm -rf "LOGFILE); */
                        } else
                                fclose(fd);
                }
diff --git a/src/lockd-process-mgr.c b/src/lockd-process-mgr.c
new file mode 100755 (executable)
index 0000000..9fcb205
--- /dev/null
@@ -0,0 +1,234 @@
+ /*
+  * 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 <vconf.h>
+#include <vconf-keys.h>
+
+#include <aul.h>
+
+#include "lockd-debug.h"
+#include "lockd-process-mgr.h"
+#include "starter-vconf.h"
+
+#define LOCKD_DEFAULT_PKG_NAME "org.tizen.livebox-lock"
+#define LOCKD_DEFAULT_LOCKSCREEN "org.tizen.draglock"
+#define LOCKD_PHONE_LOCK_PKG_NAME "org.tizen.phone-lock"
+#define RETRY_MAXCOUNT 30
+#define RELAUNCH_INTERVAL 100*1000
+
+static char *_lockd_process_mgr_get_pkgname(void)
+{
+       char *pkgname = NULL;
+
+       pkgname = vconf_get_str(VCONF_PRIVATE_LOCKSCREEN_PKGNAME);
+
+       LOCKD_DBG("pkg name is %s", pkgname);
+
+       if (pkgname == NULL) {
+               return LOCKD_DEFAULT_PKG_NAME;
+       }
+
+       return pkgname;
+}
+
+int lockd_process_mgr_restart_lock(int phone_lock_state)
+{
+       char *lock_app_path = NULL;
+       int pid;
+       bundle *b = NULL;
+
+       lock_app_path = _lockd_process_mgr_get_pkgname();
+
+       b = bundle_create();
+
+       if (phone_lock_state == 1)
+               bundle_add(b, "mode", "lock");
+       else
+               bundle_add(b, "mode", "normal");
+
+       pid = aul_launch_app(lock_app_path, b);
+
+       LOCKD_DBG("Reset : aul_launch_app(%s, NULL), pid = %d", lock_app_path,
+                 pid);
+
+       if (b)
+               bundle_free(b);
+
+       return pid;
+}
+
+int
+lockd_process_mgr_start_lock(void *data, int (*dead_cb) (int, void *),
+                            int phone_lock_state)
+{
+       char *lock_app_path = NULL;
+       int pid;
+       bundle *b = NULL;
+
+       lock_app_path = _lockd_process_mgr_get_pkgname();
+
+       b = bundle_create();
+
+       if (phone_lock_state == 1)
+               bundle_add(b, "mode", "lock");
+       else
+               bundle_add(b, "mode", "normal");
+
+       int i;
+       for (i=0; i<RETRY_MAXCOUNT; i++)
+       {
+               pid = aul_launch_app(lock_app_path, b);
+
+               LOCKD_DBG("aul_launch_app(%s), pid = %d", lock_app_path, pid);
+
+               if (pid == AUL_R_ECOMM) {
+                       LOCKD_DBG("Relaunch lock application [%d]times", i);
+                       usleep(RELAUNCH_INTERVAL);
+               } else if (pid == AUL_R_ERROR) {
+                       LOCKD_DBG("launch[%s] is failed, launch default lock screen", lock_app_path);
+                       pid = aul_launch_app(LOCKD_DEFAULT_LOCKSCREEN, b);
+                       if (pid >0) {
+                               if (b)
+                                       bundle_free(b);
+                               return pid;
+                       }
+               } else {
+                       if (b)
+                               bundle_free(b);
+                       return pid;
+               }
+       }
+       LOCKD_DBG("Relaunch lock application failed..!!");
+       return pid;
+}
+
+int lockd_process_mgr_start_normal_lock(void *data, int (*dead_cb) (int, void *))
+{
+       int pid = 0;
+
+       int i;
+       for (i=0; i<RETRY_MAXCOUNT; i++)
+       {
+               pid = aul_launch_app(LOCKD_DEFAULT_PKG_NAME, NULL);
+
+               LOCKD_DBG("aul_launch_app(%s), pid = %d", LOCKD_DEFAULT_PKG_NAME, pid);
+
+               if (pid == AUL_R_ECOMM) {
+                       LOCKD_DBG("Relaunch lock application [%d]times", i);
+                       usleep(RELAUNCH_INTERVAL);
+               } else if (pid == AUL_R_ERROR) {
+                       LOCKD_DBG("launch[%s] is failed, launch default lock screen", LOCKD_DEFAULT_PKG_NAME);
+                       pid = aul_launch_app(LOCKD_DEFAULT_LOCKSCREEN, NULL);
+                       if (pid >0) {
+                               return pid;
+                       }
+               } else {
+                       return pid;
+               }
+       }
+       LOCKD_DBG("Relaunch lock application failed..!!");
+       return pid;
+}
+
+int lockd_process_mgr_start_phone_lock(void)
+{
+       int pid = 0;
+       bundle *b = NULL;
+
+       b = bundle_create();
+
+#if 1
+       bundle_add(b, "pwlock_type", "running_lock");
+       bundle_add(b, "window_type", "alpha");
+
+       pid = aul_launch_app(LOCKD_PHONE_LOCK_PKG_NAME, b);
+       LOCKD_DBG("aul_launch_app(%s, b), pid = %d", LOCKD_PHONE_LOCK_PKG_NAME,
+                 pid);
+#else
+       bundle_add(b, "mode", "lock");
+
+       pid = aul_launch_app(LOCKD_DEFAULT_PKG_NAME, b);
+
+       LOCKD_DBG("aul_launch_app(%s, NULL), pid = %d", LOCKD_DEFAULT_PKG_NAME,
+                 pid);
+#endif
+       if (b)
+               bundle_free(b);
+
+       return pid;
+}
+
+int lockd_process_mgr_start_recovery_lock(void)
+{
+       int pid = 0;
+       bundle *b = NULL;
+
+       b = bundle_create();
+
+       bundle_add(b, "pwlock_type", "recovery_lock");
+       bundle_add(b, "window_type", "alpha");
+
+       pid = aul_launch_app(LOCKD_PHONE_LOCK_PKG_NAME, b);
+       LOCKD_DBG("aul_launch_app(%s, b), pid = %d", LOCKD_PHONE_LOCK_PKG_NAME,
+                 pid);
+       if (b)
+               bundle_free(b);
+
+       return pid;
+}
+
+void
+lockd_process_mgr_terminate_lock_app(int lock_app_pid, int state)
+{
+       LOCKD_DBG
+           ("lockd_process_mgr_terminate_lock_app,  state:%d\n",
+            state);
+
+       if (state == 1) {
+               if (lock_app_pid != 0) {
+                       LOCKD_DBG("Terminate Lock app(pid : %d)", lock_app_pid);
+                       aul_terminate_pid(lock_app_pid);
+               }
+       }
+}
+
+void lockd_process_mgr_terminate_phone_lock(int phone_lock_pid)
+{
+       LOCKD_DBG("Terminate Phone Lock(pid : %d)", phone_lock_pid);
+       aul_terminate_pid(phone_lock_pid);
+}
+
+int lockd_process_mgr_check_lock(int pid)
+{
+       char buf[128];
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+       /* Check pid is invalid. */
+       if (aul_app_get_pkgname_bypid(pid, buf, sizeof(buf)) < 0) {
+               LOCKD_DBG("no such pkg by pid %d\n", pid);
+       } else {
+               LOCKD_DBG("app pkgname = %s, pid = %d\n", buf, pid);
+               if (aul_app_is_running(buf) == TRUE) {
+                       LOCKD_DBG("%s [pid = %d] is running\n", buf, pid);
+                       return TRUE;
+               } else {
+                       LOCKD_DBG("[pid = %d] is exist but %s is not running\n",
+                                 pid, buf);
+               }
+       }
+       return FALSE;
+}
diff --git a/src/lockd-window-mgr.c b/src/lockd-window-mgr.c
new file mode 100644 (file)
index 0000000..ad66b8a
--- /dev/null
@@ -0,0 +1,709 @@
+ /*
+  * 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 <Elementary.h>
+#include <Ecore_X.h>
+#include <utilX.h>
+#include <ui-gadget.h>
+#include <vconf.h>
+#include <bundle.h>
+#include <appcore-efl.h>
+#include <app.h>
+
+#include "lockd-debug.h"
+#include "lockd-window-mgr.h"
+
+#define PACKAGE                        "starter"
+#define SOS_KEY_COUNT          3
+#define SOS_KEY_INTERVAL       0.5
+
+struct _lockw_data {
+       Evas_Object *main_win;
+       Evas_Object *main_layout;
+
+       Ecore_X_Window lock_x_window;
+
+       Ecore_Event_Handler *h_keydown;
+       Ecore_Event_Handler *h_wincreate;
+       Ecore_Event_Handler *h_winshow;
+
+       Ecore_Timer *pTimerId; /* volume key timer */
+       int volume_key_cnt;
+
+       int phone_lock_state;   /* 0 : disable, 1 : enable */
+       int phone_lock_app_pid;
+};
+
+Eina_Bool volume_key_expire_cb(void *pData)
+{
+       int api_ret = 0;
+       int vconf_val = 0;
+       lockw_data *lockw = (lockw_data *) pData;
+
+       _DBG("volume_key_expire_cb..!!");
+
+       lockw->volume_key_cnt = 0;
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static Eina_Bool _lockd_window_key_down_cb(void *data, int type, void *event)
+{
+       Ecore_Event_Key *ev = event;
+       lockw_data *lockw = (lockw_data *) data;
+       int vconf_val = 0;
+       int ret = 0;
+
+       LOCKD_DBG("Key Down CB : %s", ev->keyname);
+
+       ret = vconf_get_int(VCONFKEY_MESSAGE_SOS_STATE, &vconf_val);
+
+       if(ret != 0)
+       {
+               LOCKD_ERR("_lockd_window_key_down_cb:VCONFKEY_MESSAGE_SOS_STATE FAILED");
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       if (!strcmp(ev->keyname, KEY_VOLUMEUP) || !strcmp(ev->keyname, KEY_VOLUMEDOWN)) {
+               if (vconf_val == VCONFKEY_MESSAGE_SOS_IDLE) {
+                       if (lockw->volume_key_cnt == 0) {
+                               lockw->volume_key_cnt++;
+                               LOCKD_DBG("Volume key is pressed %d times", lockw->volume_key_cnt);
+                               lockw->pTimerId = ecore_timer_add(SOS_KEY_INTERVAL, volume_key_expire_cb, lockw);
+                       } else if (lockw->volume_key_cnt == SOS_KEY_COUNT) {
+                               LOCKD_DBG("SOS msg invoked");
+                               if (lockw->pTimerId != NULL) {
+                                       ecore_timer_del(lockw->pTimerId);
+                                       lockw->pTimerId = NULL;
+                                       lockw->volume_key_cnt =0;
+                                       vconf_set_int(VCONFKEY_MESSAGE_SOS_STATE, VCONFKEY_MESSAGE_SOS_INVOKED);
+                                       ecore_x_pointer_grab(lockw->lock_x_window);
+                               }
+                       } else {
+                               if (lockw->pTimerId != NULL) {
+                                       ecore_timer_del(lockw->pTimerId);
+                                       lockw->pTimerId = NULL;
+                                       lockw->volume_key_cnt++;
+                                       LOCKD_DBG("Volume key is pressed %d times", lockw->volume_key_cnt);
+                                       lockw->pTimerId = ecore_timer_add(SOS_KEY_INTERVAL, volume_key_expire_cb, lockw);
+                               }
+                       }
+               }
+       } else if (!strcmp(ev->keyname, KEY_HOME)) {
+               if (vconf_val != VCONFKEY_MESSAGE_SOS_IDLE) {
+                       LOCKD_DBG("Home key is pressed set to idle", lockw->volume_key_cnt);
+                       vconf_set_int(VCONFKEY_MESSAGE_SOS_STATE, VCONFKEY_MESSAGE_SOS_IDLE);
+                       ecore_x_pointer_ungrab();
+               }
+       }
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+static int
+_lockd_window_check_validate_rect(Ecore_X_Display * dpy, Ecore_X_Window window)
+{
+       Ecore_X_Window root;
+       Ecore_X_Window child;
+
+       int rel_x = 0;
+       int rel_y = 0;
+       int abs_x = 0;
+       int abs_y = 0;
+
+       unsigned int width = 0;
+       unsigned int height = 0;
+       unsigned int border = 0;
+       unsigned int depth = 0;
+
+       Eina_Bool ret = FALSE;
+
+       root = ecore_x_window_root_first_get();
+
+       if (XGetGeometry
+           (dpy, window, &root, &rel_x, &rel_y, &width, &height, &border,
+            &depth)) {
+               if (XTranslateCoordinates
+                   (dpy, window, root, 0, 0, &abs_x, &abs_y, &child)) {
+                       if ((abs_x - border) >= 480 || (abs_y - border) >= 800
+                           || (width + abs_x) <= 0 || (height + abs_y) <= 0) {
+                               ret = FALSE;
+                       } else {
+                               ret = TRUE;
+                       }
+               }
+       }
+
+       return ret;
+}
+
+static Evas_Object *lockd_create_main_window(const char *pkgname)
+{
+       Evas_Object *eo = NULL;
+       int w, h;
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       eo = elm_win_add(NULL, pkgname, ELM_WIN_BASIC);
+       if (eo) {
+               elm_win_title_set(eo, pkgname);
+               elm_win_borderless_set(eo, EINA_TRUE);
+               ecore_x_window_size_get(ecore_x_window_root_first_get(),
+                                       &w, &h);
+               LOCKD_DBG("%s, %d, w = %d, h = %d", __func__, __LINE__, w, h);
+               evas_object_resize(eo, w, h);
+       }
+       return eo;
+}
+
+static Evas_Object *lockd_create_main_layout(Evas_Object * parent)
+{
+       Evas_Object *ly = NULL;
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       ly = elm_layout_add(parent);
+       if (!ly) {
+               LOCKD_ERR("UI layout add error");
+               return NULL;
+       }
+
+       elm_layout_theme_set(ly, "layout", "application", "default");
+       evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND,
+                                        EVAS_HINT_EXPAND);
+       evas_object_show(ly);
+
+       elm_win_resize_object_add(parent, ly);
+       elm_win_indicator_mode_set(parent, ELM_WIN_INDICATOR_SHOW);
+
+       return ly;
+}
+
+static void _lockd_phone_lock_alpha_ug_layout_cb(ui_gadget_h ug,
+                                                enum ug_mode mode, void *priv)
+{
+       lockw_data *lockw = (lockw_data *) priv;;
+       Evas_Object *base = NULL;
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       if (!ug || !lockw)
+               return;
+
+       base = ug_get_layout(ug);
+       if (!base)
+               return;
+
+       switch (mode) {
+       case UG_MODE_FULLVIEW:
+               evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
+                                                EVAS_HINT_EXPAND);
+               elm_win_resize_object_add(lockw->main_win, base);
+               ug_disable_effect(ug);  /* not use effect when destroy phone lock UG  */
+               evas_object_show(base);
+               break;
+       case UG_MODE_FRAMEVIEW:
+               /* elm_layout_content_set(lockw->main_layout, "content", base); *//* not used */
+               break;
+       default:
+               break;
+       }
+}
+
+static void _lockd_phone_lock_alpha_ug_result_cb(ui_gadget_h ug,
+                                                service_h service, void *priv)
+{
+       int alpha;
+       const char *val1 = NULL, *val2 = NULL;
+       lockw_data *lockw = (lockw_data *) priv;;
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       if (!ug || !lockw)
+               return;
+
+       service_get_extra_data(service, "name", &val1);
+
+       LOCKD_DBG("val1 = %s", val1);
+
+       if (val1 == NULL)
+               return;
+
+       service_get_extra_data(service, "result", &val2);
+
+               if (val2 == NULL)
+                       return;
+
+               LOCKD_DBG("val2 = %s", val2);
+
+
+       if (!strcmp(val1, "phonelock-ug")) {
+               if (!strcmp(val2, "success")) {
+                       LOCKD_DBG("password verified. Unlock!\n");
+               }
+       } else if (!strcmp(val1, "phonelock-ug-alpha")) {
+               alpha = atoi(val2);
+       }
+
+       if(val1 != NULL)
+               free(val1);
+
+       if(val2 != NULL)
+               free(val2);
+}
+
+static void _lockd_phone_lock_alpha_ug_destroy_cb(ui_gadget_h ug,
+                                                 void *priv)
+{
+       lockw_data *lockw = (lockw_data *) priv;;
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       if (!ug || !lockw)
+               return;
+
+       ug_destroy(ug);
+       ug = NULL;
+       lockd_destroy_ug_window(lockw);
+       vconf_set_bool(VCONFKEY_LOCKSCREEN_PHONE_LOCK_VERIFICATION, TRUE);
+}
+
+static void _lockd_ug_window_set_win_prop(void *data, int type)
+{
+       Ecore_X_Window w;
+       Evas_Object *win = NULL;
+       lockw_data *lockw = (lockw_data *) data;;
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       if (!lockw)
+               return;
+
+       win = lockw->main_win;
+
+       w = elm_win_xwindow_get(win);
+
+       if (type == ECORE_X_WINDOW_TYPE_NORMAL) {
+               ecore_x_netwm_window_type_set(w, ECORE_X_WINDOW_TYPE_NORMAL);
+       } else if (type == ECORE_X_WINDOW_TYPE_NOTIFICATION) {
+               ecore_x_netwm_window_type_set(w,
+                                             ECORE_X_WINDOW_TYPE_NOTIFICATION);
+               utilx_set_system_notification_level(ecore_x_display_get(), w,
+                                                   UTILX_NOTIFICATION_LEVEL_NORMAL);
+       }
+}
+
+static void _lockd_ug_window_set_key_grab(void *data)
+{
+       Ecore_X_Window w;
+       int ret = 0;
+       Evas_Object *win = NULL;
+       lockw_data *lockw = (lockw_data *) data;;
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       if (!lockw)
+               return;
+
+       win = lockw->main_win;
+       w = elm_win_xwindow_get(win);
+       ret = utilx_grab_key(ecore_x_display_get(), w, KEY_HOME, EXCLUSIVE_GRAB);
+       if(ret)
+       {
+               LOCKD_ERR("Key grab error : KEY_HOME");
+       }
+       ret = utilx_grab_key(ecore_x_display_get(), w, KEY_CONFIG, TOP_POSITION_GRAB);
+       if(ret)
+       {
+               LOCKD_ERR("Key grab error : KEY_CONFIG");
+       }
+}
+
+static void _lockd_ug_window_set_key_ungrab(void *data)
+{
+       Ecore_X_Window xwin;
+       Ecore_X_Display *disp = NULL;
+       lockw_data *lockw = (lockw_data *) data;;
+
+       if (!lockw)
+               return;
+
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+       disp = ecore_x_display_get();
+       xwin = elm_win_xwindow_get(lockw->main_win);
+
+       utilx_ungrab_key(disp, xwin, KEY_HOME);
+       utilx_ungrab_key(disp, xwin, KEY_CONFIG);
+}
+
+static void _lockd_ug_window_vconf_call_state_changed_cb(keynode_t * node,
+                                                        void *data)
+{
+       int api_ret = 0;
+       int vconf_val = 0;
+       lockw_data *lockw = (lockw_data *) data;
+
+       if (!lockw)
+               return;
+
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+       api_ret = vconf_get_int(VCONFKEY_CALL_STATE, &vconf_val);
+       if (api_ret != 0) {
+               LOCKD_DBG("fail to get vconf key %s value",
+                         VCONFKEY_CALL_STATE);
+       } else {
+               if (vconf_val == VCONFKEY_CALL_OFF) {
+                       LOCKD_DBG("call off state..");
+                       _lockd_ug_window_set_win_prop(lockw,
+                                                     ECORE_X_WINDOW_TYPE_NOTIFICATION);
+               } else {
+                       LOCKD_DBG("call on state..");
+                       _lockd_ug_window_set_win_prop(lockw,
+                                                     ECORE_X_WINDOW_TYPE_NORMAL);
+               }
+       }
+       return;
+}
+
+static void _lockd_ug_window_register_vconf_changed(void *data)
+{
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+       if (vconf_notify_key_changed
+           (VCONFKEY_CALL_STATE, _lockd_ug_window_vconf_call_state_changed_cb,
+            data) != 0) {
+               LOCKD_DBG("Fail to register");
+       }
+}
+
+static void _lockd_ug_window_unregister_vconf_changed(void *data)
+{
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       if (vconf_ignore_key_changed
+           (VCONFKEY_CALL_STATE,
+            _lockd_ug_window_vconf_call_state_changed_cb) != 0) {
+               LOCKD_DBG("Fail to unregister");
+       }
+
+}
+
+void _lockd_window_transient_for_set(void *data)
+{
+       lockw_data *lockw = (lockw_data *) data;
+       Ecore_X_Window xwin_ug;
+       Ecore_X_Window xwin_lock;
+
+       if (!lockw)
+               return;
+
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+       xwin_ug = elm_win_xwindow_get(lockw->main_win);
+       xwin_lock = lockw->lock_x_window;
+
+       LOCKD_DBG("ug win id : %x, and lock win id is :%x", xwin_ug, xwin_lock);
+       ecore_x_icccm_transient_for_set(xwin_ug, xwin_lock);
+}
+
+Eina_Bool _lockd_window_set_window_property_timer_cb(void *data)
+{
+       Ecore_X_Window win = (Ecore_X_Window) data;
+       LOCKD_DBG
+           ("[MINSU] win id(%x) set lock screen window property to notification and level low\n",
+            win);
+
+       /*  Set notification type */
+       ecore_x_netwm_window_type_set(win, ECORE_X_WINDOW_TYPE_NOTIFICATION);
+
+       /*  Set notification's priority */
+       utilx_set_system_notification_level(ecore_x_display_get(), win,
+                                           UTILX_NOTIFICATION_LEVEL_LOW);
+
+       return EINA_FALSE;
+}
+
+static Window get_user_created_window(Window win)
+{
+       Atom type_ret = 0;
+       int ret, size_ret = 0;
+       unsigned long num_ret = 0, bytes = 0;
+       unsigned char *prop_ret = NULL;
+       unsigned int xid;
+       Atom prop_user_created_win;
+
+       prop_user_created_win =
+           XInternAtom(ecore_x_display_get(), "_E_USER_CREATED_WINDOW", False);
+
+       ret =
+           XGetWindowProperty(ecore_x_display_get(), win,
+                              prop_user_created_win, 0L, 1L, False, 0,
+                              &type_ret, &size_ret, &num_ret, &bytes,
+                              &prop_ret);
+
+       if (ret != Success) {
+               if (prop_ret)
+                       XFree((void *)prop_ret);
+               return win;
+       } else if (!prop_ret) {
+               return win;
+       }
+
+       memcpy(&xid, prop_ret, sizeof(unsigned int));
+       XFree((void *)prop_ret);
+
+       return xid;
+
+}
+
+void
+lockd_window_set_window_property(lockw_data * data, int lock_app_pid,
+                                void *event)
+{
+       Ecore_X_Event_Window_Create *e = event;
+       Ecore_X_Window user_window = 0;
+       lockw_data *lockw = (lockw_data *) data;
+       int pid = 0;
+
+       if (!lockw) {
+               return;
+       }
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       user_window = get_user_created_window((Window) (e->win));
+
+       int ret = ecore_x_netwm_pid_get(user_window, &pid);
+       if(ret != 1) {
+               return;
+       }
+
+       LOCKD_DBG("Check PID(%d) window. (lock_app_pid : %d)\n", pid,
+                 lock_app_pid);
+
+       if (lock_app_pid == pid) {
+               if (_lockd_window_check_validate_rect
+                   (ecore_x_display_get(), user_window) == TRUE) {
+                       lockw->lock_x_window = user_window;
+                       LOCKD_DBG
+                           ("This is lock application. Set window property. win id : %x",
+                            user_window);
+
+                       /* window effect : fade in /out */
+                       ecore_x_icccm_name_class_set(user_window, "LOCK_SCREEN",
+                                                    "LOCK_SCREEN");
+
+                       /* Set notification type */
+                       ecore_x_netwm_window_type_set(user_window,
+                                                     ECORE_X_WINDOW_TYPE_NOTIFICATION);
+
+                       /* Set notification's priority */
+                       utilx_set_system_notification_level(ecore_x_display_get
+                                                           (), user_window,
+                                                           UTILX_NOTIFICATION_LEVEL_NORMAL);
+                       /* Set opaque state */
+                       utilx_set_window_opaque_state(ecore_x_display_get(),
+                                                     user_window,
+                                                     UTILX_OPAQUE_STATE_ON);
+               }
+       }
+}
+
+void
+lockd_window_set_window_effect(lockw_data * data, int lock_app_pid, void *event)
+{
+       Ecore_X_Event_Window_Create *e = event;
+       Ecore_X_Window user_window = 0;
+       int pid = 0;
+
+       user_window = get_user_created_window((Window) (e->win));
+       int ret = ecore_x_netwm_pid_get(user_window, &pid);
+       if(ret != 1) {
+               return;
+       }
+
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       LOCKD_DBG("PID(%d) window created. (lock_app_pid : %d)\n", pid,
+                 lock_app_pid);
+
+       if (lock_app_pid == pid) {
+               if (_lockd_window_check_validate_rect
+                   (ecore_x_display_get(), user_window) == TRUE) {
+                       LOCKD_DBG
+                           ("This is lock application. Disable window effect. win id : %x\n",
+                            user_window);
+
+                       utilx_set_window_effect_state(ecore_x_display_get(),
+                                                     user_window, 0);
+               }
+       }
+}
+
+void lockd_window_set_phonelock_pid(lockw_data * data, int phone_lock_pid)
+{
+       lockw_data *lockw = (lockw_data *) data;
+
+       if (!lockw) {
+               return;
+       }
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+       lockw->phone_lock_app_pid = phone_lock_pid;
+       LOCKD_DBG("%s, %d, lockw->phone_lock_app_pid = %d", __func__, __LINE__,
+                 lockw->phone_lock_app_pid);
+}
+
+void
+lockd_window_mgr_ready_lock(void *data, lockw_data * lockw,
+                           Eina_Bool(*create_cb) (void *, int, void *),
+                           Eina_Bool(*show_cb) (void *, int, void *))
+{
+       if (lockw == NULL) {
+               LOCKD_ERR("lockw is NULL.");
+               return;
+       }
+       /* Register window create CB */
+       lockw->h_wincreate =
+           ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CREATE, create_cb,
+                                   data);
+       lockw->h_winshow =
+           ecore_event_handler_add(ECORE_X_EVENT_WINDOW_SHOW, show_cb, data);
+
+       lockw->volume_key_cnt = 0;
+
+       /* Register keydown event handler */
+       lockw->h_keydown =
+           ecore_event_handler_add(ECORE_EVENT_KEY_DOWN,
+                                   _lockd_window_key_down_cb, lockw);
+}
+
+void lockd_window_mgr_finish_lock(lockw_data * lockw)
+{
+       Ecore_X_Window xwin;
+
+       if (lockw == NULL) {
+               LOCKD_ERR("lockw is NULL.");
+               return;
+       }
+       /* delete window create event handler */
+       if (lockw->h_wincreate != NULL) {
+               ecore_event_handler_del(lockw->h_wincreate);
+               lockw->h_wincreate = NULL;
+       }
+       if (lockw->h_winshow != NULL) {
+               ecore_event_handler_del(lockw->h_winshow);
+               lockw->h_winshow = NULL;
+       }
+
+       ecore_x_pointer_ungrab();
+
+       /* delete keydown event handler */
+       if (lockw->h_keydown != NULL) {
+               ecore_event_handler_del(lockw->h_keydown);
+               lockw->h_keydown = NULL;
+       }
+}
+
+lockw_data *lockd_window_init(void)
+{
+       lockw_data *lockw = NULL;
+       long pid;
+
+       /* Create lockd window data */
+       lockw = (lockw_data *) malloc(sizeof(lockw_data));
+       memset(lockw, 0x0, sizeof(lockw_data));
+
+       pid = getpid();
+
+       return lockw;
+}
+
+void lockd_create_ug_window(void *data)
+{
+       lockw_data *lockw = NULL;
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       lockw = (lockw_data *) data;
+       if (!lockw) {
+               return;
+       }
+
+       lockd_destroy_ug_window(lockw);
+
+       /* create main window */
+       lockw->main_win = lockd_create_main_window(PACKAGE);
+
+       /* create main layout */
+       /* remove indicator in running time */
+       /* lockw->main_layout = lockd_create_main_layout(lockw->main_win); */
+       appcore_set_i18n(PACKAGE, NULL);
+       _lockd_ug_window_set_key_grab(lockw);
+       _lockd_ug_window_register_vconf_changed(lockw);
+       lockw->phone_lock_state = 1;
+}
+
+void lockd_destroy_ug_window(void *data)
+{
+       lockw_data *lockw = NULL;
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       lockw = (lockw_data *) data;
+       if (!lockw) {
+               return;
+       }
+
+       _lockd_ug_window_set_key_ungrab(lockw);
+       _lockd_ug_window_unregister_vconf_changed(lockw);
+
+       if (lockw->main_win) {
+               evas_object_del(lockw->main_win);
+               lockw->main_win = NULL;
+       }
+       lockw->phone_lock_state = 0;
+}
+
+void lockd_show_phonelock_alpha_ug(void *data)
+{
+       lockw_data *lockw = NULL;
+       service_h service;
+       struct ug_cbs cbs = { 0, };
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       lockw = (lockw_data *) data;
+       if (!lockw) {
+               return;
+       }
+
+       cbs.layout_cb = _lockd_phone_lock_alpha_ug_layout_cb;
+       cbs.result_cb = _lockd_phone_lock_alpha_ug_result_cb;
+       cbs.destroy_cb = _lockd_phone_lock_alpha_ug_destroy_cb;
+       cbs.priv = (void *)data;
+
+       service_create(&service);
+
+       service_add_extra_data(service, "phone-lock-type", "phone-lock");
+       service_add_extra_data(service, "window-type", "alpha");
+
+       elm_win_alpha_set(lockw->main_win, TRUE);
+       evas_object_color_set(lockw->main_win, 0, 0, 0, 0);
+
+       /* window effect : fade in /out */
+       ecore_x_icccm_name_class_set(elm_win_xwindow_get(lockw->main_win),
+                                    "LOCK_SCREEN", "LOCK_SCREEN");
+
+       UG_INIT_EFL(lockw->main_win, UG_OPT_INDICATOR_ENABLE);
+       ug_create(NULL, "phone-lock-efl", UG_MODE_FULLVIEW, service, &cbs);
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       service_destroy(service);
+
+       LOCKD_DBG("%s, %d", __func__, __LINE__);
+
+       evas_object_show(lockw->main_win);
+       _lockd_ug_window_set_win_prop(lockw, ECORE_X_WINDOW_TYPE_NOTIFICATION);
+}
diff --git a/src/menu_daemon.c b/src/menu_daemon.c
new file mode 100755 (executable)
index 0000000..b432bf3
--- /dev/null
@@ -0,0 +1,320 @@
+ /*
+  * 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 <ail.h>
+#include <aul.h>
+#include <db-util.h>
+#include <Elementary.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <sysman.h>
+#include <syspopup_caller.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <vconf.h>
+#include <errno.h>
+
+#include "hw_key.h"
+#include "pkg_event.h"
+#include "util.h"
+#include "xmonitor.h"
+
+
+int errno;
+
+
+#define QUERY_UPDATE_NAME "UPDATE app_info SET name='%s' where package='%s';"
+#define SAT_DESKTOP_FILE "/opt/share/applications/org.tizen.sat-ui.desktop"
+#define RELAUNCH_INTERVAL 100*1000
+#define RETRY_MAXCOUNT 30
+
+
+
+// Define prototype of the "hidden API of AUL"
+//extern int aul_listen_app_dead_signal(int (*func)(int signal, void *data), void *data);
+
+
+
+static struct info {
+       pid_t home_pid;
+       pid_t volume_pid;
+       int power_off;
+} s_info = {
+       .home_pid = -1,
+       .volume_pid = -1,
+       .power_off = 0,
+};
+
+
+
+bool menu_daemon_is_homescreen(pid_t pid)
+{
+       if (s_info.home_pid == pid) return true;
+       return false;
+}
+
+
+
+static inline char *_get_selected_pkgname(void)
+{
+       char *pkgname;
+
+       pkgname = vconf_get_str(VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME);
+       if (!pkgname) {
+               _E("Cannot get pkgname from vconf.");
+
+               pkgname = strdup(HOME_SCREEN_PKG_NAME);
+               if (!pkgname) {
+                       _E("strdup error for pkgname, %s", strerror(errno));
+                       return NULL;
+               }
+       }
+
+       return pkgname;
+}
+
+
+
+static inline void _open_homescreen(const char *pkgname)
+{
+       int ret;
+       char *homescreen = (char *) pkgname;
+
+       system("echo -e '[${_G}menu-daemon launches home-screen${C_}]' > /dev/kmsg");
+       ret = aul_open_app(homescreen);
+       _D("can%s launch %s now. (%d)", ret < 0 ? "not" : "", homescreen, ret);
+       if (ret < 0 && strcmp(homescreen, HOME_SCREEN_PKG_NAME)) {
+               _E("cannot launch package %s", homescreen);
+
+               if (-1 == ret) { // -1 : AUL returns '-1' when there is no package name in DB.
+                       ret = aul_open_app(HOME_SCREEN_PKG_NAME);
+                       if (ret < 0) {
+                               _E("Failed to open a default home, %s(err:%d)", HOME_SCREEN_PKG_NAME, ret);
+                       }
+               }
+       }
+
+       s_info.home_pid = ret;
+       if (ret > 0) {
+               if (-1 == sysconf_set_mempolicy_bypid(ret, OOM_IGNORE)) {
+                       _E("Cannot set the memory policy for Home-screen(%d)", ret);
+               } else {
+                       _E("Set the memory policy for Home-screen(%d)", ret);
+               }
+       }
+}
+
+
+
+static void _show_cb(keynode_t* node, void *data)
+{
+       int seq;
+       char *pkgname;
+
+       _D("[MENU_DAEMON] _show_cb is invoked");
+
+       pkgname = _get_selected_pkgname();
+       if (!pkgname)
+               return;
+
+       if (node) {
+               seq = vconf_keynode_get_int(node);
+       } else {
+               if (vconf_get_int(VCONFKEY_STARTER_SEQUENCE, &seq) < 0) {
+                       _E("Failed to get sequence info");
+                       free(pkgname);
+                       return;
+               }
+       }
+
+       switch (seq) {
+               case 0:
+                       if (s_info.home_pid > 0) {
+                               int pid;
+                               _D("pid[%d] is terminated.", s_info.home_pid);
+
+                               pid = s_info.home_pid;
+                               s_info.home_pid = -1; /* to freeze the dead_cb */
+
+                               if (aul_terminate_pid(pid) != AUL_R_OK)
+                                       _E("Failed to terminate %d", s_info.home_pid);
+                       }
+                       break;
+               case 1:
+                       _open_homescreen(pkgname);
+                       break;
+               default:
+                       _E("False sequence [%d]", seq);
+                       break;
+       }
+
+       free(pkgname);
+       return;
+
+}
+
+
+
+static void _pkg_changed(keynode_t* node, void *data)
+{
+       char *pkgname;
+       int seq;
+
+       if (vconf_get_int(VCONFKEY_STARTER_SEQUENCE, &seq) < 0) {
+               _E("Do nothing, there is no sequence info yet");
+               return;
+       }
+
+       if (seq < 1) {
+               _E("Sequence is not ready yet, do nothing");
+               return;
+       }
+
+       _D("_pkg_changed is invoked");
+
+       pkgname = _get_selected_pkgname();
+       if (!pkgname)
+               return;
+
+       _D("pkg_name : %s", pkgname);
+
+       if (s_info.home_pid > 0) {
+               char old_pkgname[256];
+
+               if (aul_app_get_pkgname_bypid(s_info.home_pid, old_pkgname, sizeof(old_pkgname)) == AUL_R_OK) {
+                       if (!strcmp(pkgname, old_pkgname)) {
+                               _D("Package is changed but same package is selected");
+                               free(pkgname);
+                               return;
+                       }
+               }
+
+               if (aul_terminate_pid(s_info.home_pid) != AUL_R_OK)
+                       _D("Failed to terminate pid %d", s_info.home_pid);
+       } else {
+               /* If there is no running home */
+               _open_homescreen(pkgname);
+       }
+
+       /* NOTE: Dead callback will catch the termination of a current menuscreen 
+        * _open_homescreen(pkgname);
+        */
+       free(pkgname);
+       return;
+}
+
+static void _launch_volume(void)
+{
+       int pid;
+       int i;
+       _D("_launch_volume");
+
+       for (i=0; i<RETRY_MAXCOUNT; i++)
+       {
+               pid = syspopup_launch("volume", NULL);
+
+               _D("syspopup_launch(volume), pid = %d", pid);
+
+               if (pid <0) {
+                       _D("syspopup_launch(volume)is failed [%d]times", i);
+                       usleep(RELAUNCH_INTERVAL);
+               } else {
+                       s_info.volume_pid = pid;
+                       return;
+               }
+       }
+}
+
+int menu_daemon_check_dead_signal(int pid)
+{
+       char *pkgname;
+
+       if (s_info.power_off) {
+               _D("Power off. ignore dead cb\n");
+               return 0;
+       }
+
+       _D("Process %d is termianted", pid);
+
+       if (pid < 0)
+               return 0;
+
+       pkgname = _get_selected_pkgname();
+       if (!pkgname)
+               return 0;
+
+       if (pid == s_info.home_pid) {
+               /* Relaunch */
+               _D("pkg_name : %s", pkgname);
+               _open_homescreen(pkgname);
+       } else if (pid == s_info.volume_pid) {
+               /* Relaunch */
+               _launch_volume();
+       } else {
+               _D("Unknown process, ignore it (pid %d, home pid %d)",
+                               pid, s_info.home_pid);
+       }
+
+       free(pkgname);
+
+       return 0;
+}
+
+
+
+void menu_daemon_init(void *data)
+{
+       _D( "[MENU_DAEMON]menu_daemon_init is invoked");
+
+       aul_launch_init(NULL,NULL);
+
+       create_key_window();
+       if (xmonitor_init() < 0) _E("cannot init xmonitor");
+
+       pkg_event_init();
+       _launch_volume();
+
+       if (unlink(SAT_DESKTOP_FILE) != 0)
+               _E("cannot remove sat-ui desktop.");
+
+       if (vconf_notify_key_changed(VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME, _pkg_changed, NULL) < 0)
+               _E("Failed to add callback for package change event");
+
+       if (vconf_notify_key_changed(VCONFKEY_STARTER_SEQUENCE, _show_cb, NULL) < 0)
+               _E("Failed to add callback for show event");
+
+       _pkg_changed(NULL, NULL);
+       // THIS ROUTINE IS FOR SAT.
+       vconf_set_int(VCONFKEY_IDLE_SCREEN_LAUNCHED, VCONFKEY_IDLE_SCREEN_LAUNCHED_TRUE);
+}
+
+
+
+void menu_daemon_fini(void)
+{
+       vconf_ignore_key_changed(VCONFKEY_STARTER_SEQUENCE, _show_cb);
+       vconf_ignore_key_changed(VCONFKEY_SETAPPL_SELECTED_PACKAGE_NAME, _pkg_changed);
+
+       xmonitor_fini();
+       pkg_event_fini();
+       destroy_key_window();
+}
+
+
+
+// End of a file
diff --git a/src/pkg_event.c b/src/pkg_event.c
new file mode 100644 (file)
index 0000000..c1508f1
--- /dev/null
@@ -0,0 +1,306 @@
+ /*
+  * 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 <ail.h>
+#include <errno.h>
+#include <Elementary.h>
+#include <Ecore.h>
+#include <Ecore_File.h>
+#include <stdio.h>
+#include <sys/inotify.h>
+#include <sys/stat.h>
+#include <sys/ioctl.h>
+#include <stdbool.h>
+#include <unistd.h>
+#include <vconf.h>
+
+#include "pkg_event.h"
+#include "util.h"
+
+
+#define CONF_FILE "/usr/share/install-info/desktop.conf"
+#define BUFSZE 1024
+
+
+extern int errno;
+struct inotify_path
+{
+       int wd;
+       char *path;
+};
+
+struct desktop_notifier s_desktop_notifier = {
+       .number = 0,
+       .ifd = 0,
+       .handler = NULL,
+};
+
+
+
+struct inotify_path paths[CONF_PATH_NUMBER];
+
+
+static Eina_Bool
+directory_notify(void* data, Ecore_Fd_Handler* fd_handler)
+{
+       char *buf;
+       ssize_t read_size, len, i = 0;
+       int fd;
+
+       fd = ecore_main_fd_handler_fd_get(fd_handler);
+       _D("There are some modification, ifd [%d]", fd);
+
+       if (ioctl(fd, FIONREAD, &read_size) < 0) {
+               _E("Failed to get q size");
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       if (read_size <= 0) {
+               _E("Buffer is not ready!!!");
+               return ECORE_CALLBACK_RENEW;
+       }
+
+       buf = malloc(read_size);
+       if (!buf) {
+               _E("Failed to allocate heap for event handling");
+               return ECORE_CALLBACK_RENEW;
+       }
+
+       len = read(fd, buf, read_size);
+       if (len < 0) {
+               free(buf);
+               // Stop monitoring about this invalid file descriptor
+               return ECORE_CALLBACK_CANCEL;
+       }
+
+       while (i < len) {
+               struct inotify_event* event = (struct inotify_event*) &buf[i];
+               char *str_potksed = "potksed.";
+               char *package = NULL;
+               ssize_t idx;
+               int nev_name;
+
+               // 1. check the extension of a file
+               nev_name = strlen(event->name) - 1;
+               for (idx = 0; nev_name >= 0 && str_potksed[idx]; idx++) {
+                       if (event->name[nev_name] != str_potksed[idx]) {
+                               break;
+                       }
+                       nev_name --;
+               }
+
+               if (str_potksed[idx] != '\0' || nev_name < 0) {
+                       _D("This is not a desktop file : %s", event->name);
+                       i += sizeof(struct inotify_event) + event->len;
+                       continue;
+               }
+
+               package = strdup(event->name);
+               break_if(NULL == package);
+
+               package[nev_name + 1] = '\0';
+               _D("Package : %s", package);
+
+               // add & update
+               if (event->mask & IN_CLOSE_WRITE || event->mask & IN_MOVED_TO) { // for moving
+                       ail_appinfo_h ai = NULL;
+                       ail_error_e ret;
+
+                       ret = ail_get_appinfo(package, &ai);
+                       if (ai) ail_destroy_appinfo(ai);
+
+
+                       if (AIL_ERROR_NO_DATA == ret) {
+                               if (ail_desktop_add(package) < 0) {
+                                       _D("Failed to add a new package (%s)", event->name);
+                               }
+                       } else if (AIL_ERROR_OK == ret) {
+                               if (ail_desktop_update(package) < 0) {
+                                       _D("Failed to add a new package (%s)", event->name);
+                               }
+                       } else
+                               ;
+               // delete
+               } else if (event->mask & IN_DELETE) { // for deleting
+                       if (ail_desktop_remove(package) < 0) 
+                               _D("Failed to remove a package (%s)", event->name);
+               } else {
+                       _D("this event is not dealt with inotify");
+               }
+
+               free(package);
+
+               i += sizeof(struct inotify_event) + event->len;
+       }
+
+       free(buf);
+       return ECORE_CALLBACK_RENEW;
+}
+
+
+
+static inline char *_ltrim(char *str)
+{
+       retv_if(NULL == str, NULL);
+       while (*str && (*str == ' ' || *str == '\t' || *str == '\n')) str ++;
+       return str;
+}
+
+
+
+static inline int _rtrim(char *str)
+{
+       int len;
+
+       retv_if(NULL == str, 0);
+
+       len = strlen(str);
+       while (--len >= 0 && (str[len] == ' ' || str[len] == '\n' || str[len] == '\t')) {
+               str[len] = '\0';
+       }
+
+       return len;
+}
+
+
+
+static int _retrieve_conf_path(struct inotify_path* paths)
+{
+       char *line = NULL;
+       FILE *fp;
+       size_t size = 0;
+       ssize_t read;
+       int i = 0;
+
+       fp = fopen(CONF_FILE, "r");
+       if (NULL == fp) {
+               _E(CONF_FILE);
+               return -1;
+       }
+
+       while ((read = getline(&line, &size, fp)) != -1 && i < CONF_PATH_NUMBER - 1) {
+               char *begin;
+
+               if (size <= 0) break;
+
+               begin = _ltrim(line);
+               _rtrim(line);
+
+               if (*begin == '#' || *begin == '\0') continue;
+
+               paths[i].path = strdup(begin);
+               i++;
+       }
+
+       if (line) free(line);
+       paths[i].path = NULL;
+       fclose(fp);
+
+       return i;
+}
+
+
+
+static void _unretrieve_conf_path(struct inotify_path* paths, int number)
+{
+       register int i;
+
+       for (i = 0; i < number; i ++) {
+               if (paths[i].path) {
+                       free(paths[i].path);
+                       paths[i].path = NULL;
+               }
+       }
+}
+
+
+
+void pkg_event_init()
+{
+       int wd = 0;
+       int i;
+
+       s_desktop_notifier.ifd = inotify_init();
+       if (s_desktop_notifier.ifd == -1) {
+               _E("inotify_init error: %s", strerror(errno));
+               return;
+       }
+
+       s_desktop_notifier.number = _retrieve_conf_path(paths);
+
+       for (i = 0; i < CONF_PATH_NUMBER && paths[i].path; i++)
+       {
+               _D("Configuration file for desktop file monitoring [%s] is added", paths[i].path);
+               if (access(paths[i].path, R_OK) != 0)
+               {
+                       ecore_file_mkpath(paths[i].path);
+                       if (chmod(paths[i].path, 0777) == -1) {
+                               _E("cannot chmod %s", paths[i].path);
+                       }
+               }
+
+               wd = inotify_add_watch(s_desktop_notifier.ifd, paths[i].path, IN_CLOSE_WRITE | IN_MOVED_TO | IN_DELETE);
+               if (wd == -1) {
+                       _E("inotify_add_watch error: %s", strerror(errno));
+                       close(s_desktop_notifier.ifd);
+                       return;
+               }
+
+               paths[i].wd = wd;
+       }
+
+       s_desktop_notifier.handler = ecore_main_fd_handler_add(s_desktop_notifier.ifd, ECORE_FD_READ, directory_notify, NULL, NULL, NULL);
+       if (!s_desktop_notifier.handler) {
+               // TODO: Handles me.. EXCEPTION!!
+               _E("cannot add handler for inotify");
+       }
+}
+
+
+
+void pkg_event_fini(void)
+{
+       register int i;
+
+       if (s_desktop_notifier.handler) {
+               ecore_main_fd_handler_del(s_desktop_notifier.handler);
+       }
+
+       for (i = 0; i < CONF_PATH_NUMBER; i ++) {
+               if (paths[i].wd) {
+                       if (inotify_rm_watch(s_desktop_notifier.ifd, paths[i].wd) < 0) {
+                               char log[BUFSZE] = {0,};
+                               int ret;
+
+                               ret = strerror_r(errno, log, sizeof(log));
+                               _E("Error: %s", ret == 0? log : "unknown error");
+                       }
+                       paths[i].wd = 0;
+               }
+       }
+
+       _unretrieve_conf_path(paths, s_desktop_notifier.number);
+
+       if (s_desktop_notifier.ifd) {
+               close(s_desktop_notifier.ifd);
+               s_desktop_notifier.ifd = 0;
+       }
+}
+
+
+// End of a file
diff --git a/src/starter.c b/src/starter.c
new file mode 100755 (executable)
index 0000000..2a6035e
--- /dev/null
@@ -0,0 +1,331 @@
+ /*
+  * 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 <Elementary.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <string.h>
+#include <poll.h>
+
+#include <aul.h>
+#include <vconf.h>
+#include <heynoti.h>
+#include <signal.h>
+
+
+#include "starter.h"
+#include "starter-util.h"
+#include "x11.h"
+#include "lock-daemon.h"
+#include "lockd-debug.h"
+#include "menu_daemon.h"
+
+#ifndef PACKAGE_NAME
+#define PACKAGE_NAME "org.tizen.starter"
+#endif
+
+#define DEFAULT_THEME "tizen"
+#define PWLOCK_PATH "/usr/apps/org.tizen.pwlock/bin/pwlock"
+
+#define DATA_ENCRYPTED "encrypted"
+#define DATA_MOUNTED "mounted"
+
+static void lock_menu_screen(void)
+{
+       vconf_set_int(VCONFKEY_STARTER_SEQUENCE, 0);
+}
+
+static void unlock_menu_screen(void)
+{
+       int r;
+       int show_menu;
+
+       show_menu = 0;
+       r = vconf_get_int(VCONFKEY_STARTER_SEQUENCE, &show_menu);
+       if (r || !show_menu) {
+               vconf_set_int(VCONFKEY_STARTER_SEQUENCE, 1);
+       }
+}
+
+static void _set_elm_theme(void)
+{
+       char *vstr;
+       char *theme;
+       Elm_Theme *th = NULL;
+       vstr = vconf_get_str(VCONFKEY_SETAPPL_WIDGET_THEME_STR);
+       if (vstr == NULL)
+               theme = DEFAULT_THEME;
+       else
+               theme = vstr;
+
+       th = elm_theme_new();
+       _DBG("theme vconf[%s]\n set[%s]\n", vstr, theme);
+       elm_theme_set(th, theme);
+
+       if (vstr)
+               free(vstr);
+}
+
+#if 0
+static void _set_elm_entry(void)
+{
+       int v;
+       int r;
+
+       r = vconf_get_bool(VCONFKEY_SETAPPL_AUTOCAPITAL_ALLOW_BOOL, &v);
+       if (!r) {
+               prop_int_set("ENLIGHTENMENT_AUTOCAPITAL_ALLOW", v);
+               _DBG("vconf autocatipal[%d]", v);
+       }
+
+       r = vconf_get_bool(VCONFKEY_SETAPPL_AUTOPERIOD_ALLOW_BOOL, &v);
+       if (!r) {
+               prop_int_set("ENLIGHTENMENT_AUTOPERIOD_ALLOW", v);
+               _DBG("vconf autoperiod[%d]", v);
+       }
+}
+#endif
+
+static int _launch_pwlock(void)
+{
+       int r;
+       //int i = 0;
+
+       _DBG("%s", __func__);
+
+#if 1
+       r = aul_launch_app("org.tizen.pwlock", NULL);
+       if (r < 0) {
+               _ERR("PWLock launch error: error(%d)", r);
+               if (r == AUL_R_ETIMEOUT) {
+                       _DBG("Launch pwlock is failed for AUL_R_ETIMEOUT, again launch pwlock");
+                       r = aul_launch_app("org.tizen.pwlock", NULL);
+                       if (r < 0) {
+                               _ERR("2'nd PWLock launch error: error(%d)", r);
+                               return -1;
+                       } else {
+                               _DBG("Launch pwlock");
+                               return 0;
+                       }
+               } else {
+                       return -1;
+               }
+       } else {
+               _DBG("Launch pwlock");
+               return 0;
+       }
+#else
+ retry_con:
+       r = aul_launch_app("org.tizen.pwlock", NULL);
+       if (r < 0) {
+               _ERR("PWLock launch error: error(%d)", r);
+               if (r == AUL_R_ETIMEOUT) {
+                       i++;
+                       _DBG("Launching pwlock is failed [%d]times for AUL_R_ETIMEOUT ", i);
+                       goto retry_con;
+               } else {
+                       return -1;
+               }
+       } else {
+               _DBG("Launch pwlock");
+               return 0;
+       }
+#endif
+}
+
+static void _signal_handler(int signum, siginfo_t *info, void *unused)
+{
+    _DBG("_signal_handler : Terminated...");
+    elm_exit();
+}
+
+static void _heynoti_event_power_off(void *data)
+{
+    _DBG("_heynoti_event_power_off : Terminated...");
+    elm_exit();
+}
+
+static Eina_Bool _init_idle(void *data)
+{
+       _DBG("%s %d\n", __func__, __LINE__);
+       if (_launch_pwlock() < 0) {
+               _ERR("launch pwlock error");
+       }
+       menu_daemon_init(NULL);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void _lock_state_cb(keynode_t * node, void *data)
+{
+       _DBG("%s %d\n", __func__, __LINE__);
+       WRITE_FILE_LOG("%s", "Lock state is changed!");
+
+       if (_launch_pwlock() < 0) {
+               _ERR("launch pwlock error");
+       }
+       menu_daemon_init(NULL);
+       if (vconf_ignore_key_changed(VCONFKEY_IDLE_LOCK_STATE,
+            _lock_state_cb) != 0) {
+               LOCKD_DBG("Fail to unregister");
+       }
+}
+
+static void _data_encryption_cb(keynode_t * node, void *data)
+{
+       int r;
+       char *file = NULL;
+
+       _DBG("%s %d\n", __func__, __LINE__);
+
+       file = vconf_get_str(VCONFKEY_ODE_CRYPTO_STATE);
+       if (file != NULL) {
+               _DBG("get %s : %s\n", VCONFKEY_ODE_CRYPTO_STATE, file);
+               if (!strcmp(file, DATA_MOUNTED)) {
+                       start_lock_daemon(FALSE);
+                       menu_daemon_init(NULL);
+               }
+               free(file);
+       }
+}
+
+static void _init(struct appdata *ad)
+{
+       int r;
+       struct sigaction act;
+       char *file = NULL;
+
+       memset(&act,0x00,sizeof(struct sigaction));
+       act.sa_sigaction = _signal_handler;
+       act.sa_flags = SA_SIGINFO;
+
+       int ret = sigemptyset(&act.sa_mask);
+       if (ret < 0) {
+               _ERR("Failed to sigemptyset[%s]", strerror(errno));
+       }
+       ret = sigaddset(&act.sa_mask, SIGTERM);
+       if (ret < 0) {
+               _ERR("Failed to sigaddset[%s]", strerror(errno));
+       }
+       ret = sigaction(SIGTERM, &act, NULL);
+       if (ret < 0) {
+               _ERR("Failed to sigaction[%s]", strerror(errno));
+       }
+
+       memset(ad, 0, sizeof(struct appdata));
+
+       gettimeofday(&ad->tv_start, NULL);
+
+       lock_menu_screen();
+       _set_elm_theme();
+
+       _DBG("%s %d\n", __func__, __LINE__);
+
+       /* Check data encrption */
+       file = vconf_get_str(VCONFKEY_ODE_CRYPTO_STATE);
+       if (file != NULL) {
+               _DBG("get %s : %s\n", VCONFKEY_ODE_CRYPTO_STATE, file);
+               if (!strcmp(file, DATA_ENCRYPTED)) {
+                       if (vconf_notify_key_changed(VCONFKEY_ODE_CRYPTO_STATE,
+                            _data_encryption_cb, NULL) != 0) {
+                               _ERR("[Error] vconf notify changed : %s", VCONFKEY_ODE_CRYPTO_STATE);
+                       } else {
+                               _DBG("waiting mount..!!");
+                               if (_launch_pwlock() < 0) {
+                                       _ERR("launch pwlock error");
+                               }
+                               free(file);
+                               return;
+                       }
+               }
+               free(file);
+       }
+
+       /* change the launching order of pwlock and lock mgr in booting time */
+       /* TODO: menu screen is showed before phone lock is showed in booting time */
+       /* FIXME Here lock daemon start..!! */
+       r = start_lock_daemon(TRUE);
+       if (r == 1) {
+               if (vconf_notify_key_changed(VCONFKEY_IDLE_LOCK_STATE,
+                    _lock_state_cb, NULL) != 0) {
+                       _ERR("[Error] vconf notify : lock state");
+                       ecore_timer_add(1.5, _init_idle, NULL);
+               }
+       } else {
+               if (_launch_pwlock() < 0) {
+                       _ERR("launch pwlock error");
+               }
+               menu_daemon_init(NULL);
+       }
+}
+
+static void _fini(struct appdata *ad)
+{
+       struct timeval tv, res;
+
+       if (ad == NULL) {
+               fprintf(stderr, "Invalid argument: appdata is NULL\n");
+               return;
+       }
+
+       unlock_menu_screen();
+       menu_daemon_fini();
+
+       gettimeofday(&tv, NULL);
+       timersub(&tv, &ad->tv_start, &res);
+       _DBG("Total time: %d.%06d sec\n", (int)res.tv_sec, (int)res.tv_usec);
+}
+
+int main(int argc, char *argv[])
+{
+       struct appdata ad;
+
+       WRITE_FILE_LOG("%s", "Main function is started in starter");
+#if 0
+       set_window_scale();     /* not in loop */
+#endif
+    int heyfd = heynoti_init();
+       if (heyfd < 0) {
+               _ERR("Failed to heynoti_init[%d]", heyfd);
+       }
+
+       int ret = heynoti_subscribe(heyfd, "power_off_start", _heynoti_event_power_off, NULL);
+       if (ret < 0) {
+               _ERR("Failed to heynoti_subscribe[%d]", ret);
+       }
+       ret = heynoti_attach_handler(heyfd);
+       if (ret < 0) {
+               _ERR("Failed to heynoti_attach_handler[%d]", ret);
+       }
+
+       elm_init(argc, argv);
+
+       _init(&ad);
+
+       elm_run();
+
+       _fini(&ad);
+
+       elm_shutdown();
+
+       return 0;
+}
diff --git a/src/x11.c b/src/x11.c
new file mode 100644 (file)
index 0000000..088e2e6
--- /dev/null
+++ b/src/x11.c
@@ -0,0 +1,111 @@
+ /*
+  * 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 <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+
+#define DEFAULT_WINDOW_H 1280
+
+void prop_string_set(const char *name, const char *value)
+{
+       Display *d;
+       Atom a_name;
+       Atom a_UTF8;
+       XTextProperty xtp;
+
+       if (name == NULL || value == NULL || value[0] == '\0')
+               return;
+
+       d = XOpenDisplay(NULL);
+       if (d == NULL)
+               return;
+
+       a_name = XInternAtom(d, name, False);
+       if (a_name == None)
+               goto exit;
+
+       a_UTF8 = XInternAtom(d, "UTF8_STRING", False);
+       if (a_UTF8 == None)
+               goto exit;
+
+       xtp.value = (unsigned char *)value;
+       xtp.format = 8;
+       xtp.encoding = a_UTF8;
+       xtp.nitems = strlen(value);
+
+       XSetTextProperty(d, DefaultRootWindow(d), &xtp, a_name);
+
+ exit:
+       XCloseDisplay(d);
+}
+
+void prop_int_set(const char *name, unsigned int val)
+{
+       Display *d;
+       Atom a_name;
+
+       if (name == NULL)
+               return;
+
+       d = XOpenDisplay(NULL);
+       if (d == NULL)
+               return;
+
+       a_name = XInternAtom(d, name, False);
+       if (a_name == None)
+               goto exit;
+
+       XChangeProperty(d, DefaultRootWindow(d), a_name, XA_CARDINAL, 32,
+                       PropModeReplace, (unsigned char *)&val, 1);
+
+ exit:
+       XCloseDisplay(d);
+}
+
+void set_window_scale(void)
+{
+       double root_width = 0.0, root_height = 0.0;
+       char buf[128] = { 0, };
+       Display *disp;
+       int screen_num;
+
+       disp = XOpenDisplay(NULL);
+       if (disp == NULL)
+               return;
+
+       screen_num = DefaultScreen(disp);
+
+       root_width = DisplayWidth(disp, screen_num);
+       root_height = DisplayHeight(disp, screen_num);
+
+       XCloseDisplay(disp);
+
+       snprintf(buf, sizeof(buf), "%lf", root_height / DEFAULT_WINDOW_H);
+
+       if (root_width == 800 && root_height == 1280) {
+               snprintf(buf, sizeof(buf), "0.71");
+       }
+
+       setenv("ELM_SCALE", buf, 1);
+       setenv("SCALE_FACTOR", buf, 1);
+}
diff --git a/src/xmonitor.c b/src/xmonitor.c
new file mode 100644 (file)
index 0000000..f337925
--- /dev/null
@@ -0,0 +1,304 @@
+ /*
+  * 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 <ail.h>
+#include <aul.h>
+#include <dlog.h>
+#include <Ecore.h>
+#include <Ecore_X.h>
+#include <Evas.h>
+#include <errno.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <sys/shm.h>
+#include <vconf.h>
+//#include <X11/Xatom.h>
+//#include <X11/Xlib.h>
+//#include <X11/Xutil.h>
+//#include <X11/extensions/Xcomposite.h>
+//#include <X11/extensions/XShm.h>
+
+#include "menu_daemon.h"
+#include "util.h"
+#include "starter-util.h"
+#include "xmonitor.h"
+
+
+
+static struct info {
+       Ecore_Event_Handler *create_handler;
+       Ecore_Event_Handler *destroy_handler;
+       Ecore_Event_Handler *focus_in_handler;
+       Ecore_Event_Handler *focus_out_handler;
+       int is_top;
+} xmonitor_info = {
+       .create_handler = NULL,
+       .destroy_handler = NULL,
+       .focus_in_handler = NULL,
+       .focus_out_handler = NULL,
+       .is_top = VCONFKEY_IDLE_SCREEN_TOP_FALSE,
+};
+
+
+
+int errno;
+
+
+
+static inline int _get_pid(Ecore_X_Window win)
+{
+       int pid;
+       Ecore_X_Atom atom;
+       unsigned char *in_pid;
+       int num;
+
+       atom = ecore_x_atom_get("X_CLIENT_PID");
+       if (ecore_x_window_prop_property_get(win, atom, ECORE_X_ATOM_CARDINAL,
+                               sizeof(int), &in_pid, &num) == EINA_FALSE) {
+               if (ecore_x_netwm_pid_get(win, &pid) == EINA_FALSE) {
+                       _E("Failed to get PID from a window 0x%X", win);
+                       return -EINVAL;
+               }
+       } else {
+               pid = *(int *)in_pid;
+               free(in_pid);
+       }
+
+       return pid;
+}
+
+
+
+bool _set_idlescreen_top(void)
+{
+       Ecore_X_Window win;
+
+       int is_top;
+       int ret;
+       int focused_pid;
+
+       win = ecore_x_window_focus_get();
+       focused_pid = _get_pid(win);
+       retv_if(focused_pid <= 0, false);
+
+       is_top = menu_daemon_is_homescreen(focused_pid)?
+                       VCONFKEY_IDLE_SCREEN_TOP_TRUE : VCONFKEY_IDLE_SCREEN_TOP_FALSE;
+
+       if (is_top != xmonitor_info.is_top) {
+               ret = vconf_set_int(VCONFKEY_IDLE_SCREEN_TOP, is_top);
+               retv_if(0 != ret, false);
+               xmonitor_info.is_top = is_top;
+               _D("set the key of idlescreen_is_top as %d", is_top);
+       }
+
+       return true;
+}
+
+
+
+static Eina_Bool _create_cb(void *data, int type, void *event)
+{
+       Ecore_X_Event_Window_Create *info = event;
+
+       _D("Create a window[%x]", info->win);
+
+       ecore_x_window_client_sniff(info->win);
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+
+
+static Eina_Bool _destroy_cb(void *data, int type, void *event)
+{
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+
+
+static Eina_Bool _focus_in_cb(void *data, int type, void *event)
+{
+       Ecore_X_Event_Window_Focus_In *info = event;
+
+       _D("Focus in a window[%x]", info->win);
+
+       retv_if(false == _set_idlescreen_top(), ECORE_CALLBACK_PASS_ON);
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+
+
+static Eina_Bool _focus_out_cb(void *data, int type, void *event)
+{
+       Ecore_X_Event_Window_Focus_Out *info = event;
+
+       _D("Focus out a window[%x]", info->win);
+
+       return ECORE_CALLBACK_PASS_ON;
+}
+
+
+
+static inline void _sniff_all_windows(void)
+{
+       Ecore_X_Window root;
+       Ecore_X_Window ret;
+       struct stack_item *new_item;
+       struct stack_item *item;
+       Eina_List *win_stack = NULL;
+       struct stack_item {
+               Ecore_X_Window *wins;
+               int nr_of_wins;
+               int i;
+       };
+
+       root = ecore_x_window_root_first_get();
+       ecore_x_window_sniff(root);
+
+       new_item = malloc(sizeof(*new_item));
+       if (!new_item) {
+               _E("Error(%s)\n", strerror(errno));
+               return;
+       }
+
+       new_item->nr_of_wins = 0;
+       new_item->wins =
+               ecore_x_window_children_get(root, &new_item->nr_of_wins);
+       new_item->i = 0;
+
+       if (new_item->wins)
+               win_stack = eina_list_append(win_stack, new_item);
+       else
+               free(new_item);
+
+       while ((item = eina_list_nth(win_stack, 0))) {
+               win_stack = eina_list_remove(win_stack, item);
+
+               if (!item->wins) {
+                       free(item);
+                       continue;
+               }
+
+               while (item->i < item->nr_of_wins) {
+                       ret = item->wins[item->i];
+
+                       /*
+                        * Now we don't need to care about visibility of window,
+                        * just check whether it is registered or not.
+                        * (ecore_x_window_visible_get(ret))
+                        */
+                       ecore_x_window_client_sniff(ret);
+
+                       new_item = malloc(sizeof(*new_item));
+                       if (!new_item) {
+                               _E("Error %s\n", strerror(errno));
+                               item->i++;
+                               continue;
+                       }
+
+                       new_item->i = 0;
+                       new_item->nr_of_wins = 0;
+                       new_item->wins =
+                               ecore_x_window_children_get(ret,
+                                                       &new_item->nr_of_wins);
+                       if (new_item->wins) {
+                               win_stack =
+                                       eina_list_append(win_stack, new_item);
+                       } else {
+                               free(new_item);
+                       }
+
+                       item->i++;
+               }
+
+               free(item->wins);
+               free(item);
+       }
+
+       return;
+}
+
+
+
+int xmonitor_init(void)
+{
+       if (ecore_x_composite_query() == EINA_FALSE)
+               _D("====> COMPOSITOR IS NOT ENABLED");
+
+       xmonitor_info.create_handler =
+               ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CREATE, _create_cb, NULL);
+       goto_if(NULL == xmonitor_info.create_handler, Error);
+
+       xmonitor_info.destroy_handler =
+               ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DESTROY, _destroy_cb, NULL);
+       goto_if(NULL == xmonitor_info.destroy_handler, Error);
+
+       xmonitor_info.focus_in_handler =
+               ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, _focus_in_cb, NULL);
+       goto_if(NULL == xmonitor_info.focus_in_handler, Error);
+
+       xmonitor_info.focus_out_handler =
+               ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_OUT, _focus_out_cb, NULL);
+       goto_if(NULL == xmonitor_info.focus_out_handler, Error);
+
+       _sniff_all_windows();
+       if (false == _set_idlescreen_top()) _E("cannot set idlescreen_is_top");
+
+       return 0;
+
+Error:
+       if (xmonitor_info.create_handler) {
+               ecore_event_handler_del(xmonitor_info.create_handler);
+               xmonitor_info.create_handler = NULL;
+       } else return -EFAULT;
+
+       if (xmonitor_info.destroy_handler) {
+               ecore_event_handler_del(xmonitor_info.destroy_handler);
+               xmonitor_info.destroy_handler = NULL;
+       } else return -EFAULT;
+
+       if (xmonitor_info.focus_in_handler) {
+               ecore_event_handler_del(xmonitor_info.focus_in_handler);
+               xmonitor_info.focus_in_handler = NULL;
+       } else return -EFAULT;
+
+       if (xmonitor_info.focus_out_handler) {
+               ecore_event_handler_del(xmonitor_info.focus_out_handler);
+               xmonitor_info.focus_out_handler = NULL;
+       } else return -EFAULT;
+
+       return -EFAULT;
+}
+
+void xmonitor_fini(void)
+{
+       ecore_event_handler_del(xmonitor_info.create_handler);
+       xmonitor_info.create_handler = NULL;
+
+       ecore_event_handler_del(xmonitor_info.destroy_handler);
+       xmonitor_info.destroy_handler = NULL;
+
+       ecore_event_handler_del(xmonitor_info.focus_in_handler);
+       xmonitor_info.focus_in_handler = NULL;
+
+       ecore_event_handler_del(xmonitor_info.focus_out_handler);
+       xmonitor_info.focus_out_handler = NULL;
+}
+
+/* End of a file */
diff --git a/test/get_entry.c b/test/get_entry.c
new file mode 100755 (executable)
index 0000000..2437388
--- /dev/null
@@ -0,0 +1,89 @@
+ /*
+  * 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 <stdio.h>
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+
+int main(int argc, char *argv[])
+{
+       unsigned char *prop_ret;
+       Atom type_ret;
+       unsigned long bytes_after, num_ret;
+       int format_ret;
+       unsigned int i;
+       int num;
+
+       Display *d;
+       Atom a_ac;
+       Atom a_ap;
+       Status r;
+
+       d = XOpenDisplay(NULL);
+       if (d == NULL) {
+               printf("Display open error\n");
+               return 1;
+       }
+
+       a_ac = XInternAtom(d, "ENLIGHTENMENT_AUTOCAPITAL_ALLOW", False);
+       if (a_ac == None) {
+               printf("XInternAtom error\n");
+               goto exit;
+       }
+
+       r = XGetWindowProperty(d, DefaultRootWindow(d), a_ac, 0, 0x7fffffff,
+                              False, XA_CARDINAL, &type_ret, &format_ret,
+                              &num_ret, &bytes_after, &prop_ret);
+       if (r != Success) {
+               printf("XGetWindowProperty error\n");
+               goto exit;
+       }
+
+       if (type_ret == XA_CARDINAL && format_ret == 32 && num_ret > 0
+           && prop_ret) {
+               printf("Auto capital: %lu\n", ((unsigned long *)prop_ret)[0]);
+       }
+       if (prop_ret)
+               XFree(prop_ret);
+
+       a_ap = XInternAtom(d, "ENLIGHTENMENT_AUTOPERIOD_ALLOW", False);
+       if (a_ap == None) {
+               printf("XInternAtom error\n");
+               goto exit;
+       }
+
+       r = XGetWindowProperty(d, DefaultRootWindow(d), a_ap, 0, 0x7fffffff,
+                              False, XA_CARDINAL, &type_ret, &format_ret,
+                              &num_ret, &bytes_after, &prop_ret);
+       if (r != Success) {
+               printf("XGetWindowProperty error\n");
+               goto exit;
+       }
+
+       if (type_ret == XA_CARDINAL && format_ret == 32 && num_ret > 0
+           && prop_ret) {
+               printf("Auto period: %lu\n", ((unsigned long *)prop_ret)[0]);
+       }
+       if (prop_ret)
+               XFree(prop_ret);
+
+ exit:
+       XCloseDisplay(d);
+       return 0;
+}
diff --git a/test/get_theme.c b/test/get_theme.c
new file mode 100755 (executable)
index 0000000..90bea9b
--- /dev/null
@@ -0,0 +1,56 @@
+ /*
+  * 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 <stdio.h>
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+
+int main(int argc, char *argv[])
+{
+       XTextProperty xtp;
+       Display *d;
+       Atom a_e17;
+       Status r;
+
+       d = XOpenDisplay(NULL);
+       if (d == NULL) {
+               printf("Display open error\n");
+               return 1;
+       }
+
+       a_e17 = XInternAtom(d, "ENLIGHTENMENT_THEME", False);
+       if (a_e17 == None) {
+               printf("XInternAtom error\n");
+               goto exit;
+       }
+
+       r = XGetTextProperty(d, DefaultRootWindow(d), &xtp, a_e17);
+       if (!r) {
+               printf("XGetTextProperty error\n");
+               goto exit;
+       }
+
+       printf("THEME: [%s]\n", (char *)xtp.value);
+
+       XFree(xtp.value);
+
+ exit:
+       XCloseDisplay(d);
+       return 0;
+}
diff --git a/test/set_theme.c b/test/set_theme.c
new file mode 100755 (executable)
index 0000000..d6f6195
--- /dev/null
@@ -0,0 +1,62 @@
+ /*
+  * 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 <string.h>
+
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+
+void set_elm_theme(void)
+{
+       char *theme;
+       Display *d;
+       Atom a_e17;
+       Atom a_UTF8;
+       XTextProperty xtp;
+
+       theme = "beat:kessler";
+
+       d = XOpenDisplay(NULL);
+       if (d == NULL)
+               return;
+
+       a_e17 = XInternAtom(d, "ENLIGHTENMENT_THEME", False);
+       if (a_e17 == None)
+               goto exit;
+
+       a_UTF8 = XInternAtom(d, "UTF8_STRING", False);
+       if (a_UTF8 == None)
+               goto exit;
+
+       xtp.value = (unsigned char *)theme;
+       xtp.format = 8;
+       xtp.encoding = a_UTF8;
+       xtp.nitems = strlen(theme);
+
+       XSetTextProperty(d, DefaultRootWindow(d), &xtp, a_e17);
+
+ exit:
+       XCloseDisplay(d);
+}
+
+int main(int argc, char *argv[])
+{
+       set_elm_theme();
+       return 0;
+}