diff options
author | Kim Kibum <kb0929.kim@samsung.com> | 2012-04-09 12:12:34 +0900 |
---|---|---|
committer | Kim Kibum <kb0929.kim@samsung.com> | 2012-04-09 12:12:34 +0900 |
commit | 86699817ed5e14697096459f6a6c4cf28c0b0c50 (patch) | |
tree | 5a212245b444139cae180fd0c76ca0484e22aa09 | |
parent | 25f5508885a4c31084c5bdb7f52135d4f9d6ab4d (diff) | |
download | pwlock-86699817ed5e14697096459f6a6c4cf28c0b0c50.tar.gz pwlock-86699817ed5e14697096459f6a6c4cf28c0b0c50.tar.bz2 pwlock-86699817ed5e14697096459f6a6c4cf28c0b0c50.zip |
Tizen release 1.0
39 files changed, 6155 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100755 index 0000000..3b640f3 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,74 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(pwlock C) + +SET(SRCS + ./src/pwlock.c + ./src/tapi.c + ./src/util.c + ./src/ui.c +) + +SET(VENDOR "tizen") +SET(PACKAGE ${PROJECT_NAME}) +SET(PKGNAME "org.${VENDOR}.${PACKAGE}") +SET(PREFIX ${CMAKE_INSTALL_PREFIX}) +SET(BINDIR "${PREFIX}/bin") +SET(RESDIR "${PREFIX}/res") +SET(DATADIR "${PREFIX}/data") +SET(LOCALEDIR "${RESDIR}/locale") +SET(ICONDIR "${RESDIR}/icons/default/small") +SET(EDJDIR "${RESDIR}/edje") +SET(IMAGEDIR "${RESDIR}/images") + +INSTALL(DIRECTORY DESTINATION ${DATADIR}) + +IF("${CMAKE_BUILD_TYPE}" STREQUAL "") + SET(CMAKE_BUILD_TYPE "Release") +ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "") +MESSAGE("Build type: ${CMAKE_BUILD_TYPE}") + +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include) + +INCLUDE(FindPkgConfig) +pkg_check_modules(pkgs REQUIRED elementary appcore-efl vconf tapi utilX ui-gadget bundle ecore-imf ecore-x eina evas ecore edje ecore-input glib-2.0 openssl aul sysman) + +FOREACH(flag ${pkgs_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") +SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") +SET(CMAKE_C_FLAGS_RELEASE "-O2") + +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("-DRESDIR=\"${RESDIR}\"") +ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"") +ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"") +ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"") +ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"") +ADD_DEFINITIONS("-DIMAGEDIR=\"${IMAGEDIR}\"") + +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed") + +ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS}) + +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS}) + +# install desktop file & icon & bin +CONFIGURE_FILE(${PKGNAME}.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/${PKGNAME}.desktop) +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PKGNAME}.desktop DESTINATION /opt/share/applications) +INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR}) + +# i18n +ADD_SUBDIRECTORY(po) + @@ -0,0 +1,33 @@ +1. make the build directory + + ex) + + $ mkdir build + + +2. change the working directory to the build directory + + ex) + + $ cd build + + +3. run 'cmake' + + $ cmake ${SOURCE_DIR} -DCMAKE_INSTALL_PREFIX=/opt/apps/${PKGNAME} + + ex) + + $ cmake .. -DCMAKE_INSTALL_PREFIX=/opt/apps/${PKGNAME} + + or + + $ cmake .. + + +4. make & make install + + ex) + + $ make -j 2 && make install + @@ -0,0 +1 @@ +Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
\ No newline at end of file diff --git a/debian/changelog b/debian/changelog new file mode 100755 index 0000000..7a5101c --- /dev/null +++ b/debian/changelog @@ -0,0 +1,71 @@ +pwlock (0.2.1-1) unstable; urgency=low + + * Add spec file + * Git: pkgs/p/pwlock + * Tag: pwlock_0.2.1-1 + + -- Mi-Ju Lee <miju52.lee@samsung.com> Tue, 20 Mar 2012 20:09:58 +0900 + +pwlock (0.1.101) unstable; urgency=low + + * Check fd for fix BS + * Git: pkgs/p/pwlock + * Tag: pwlock_0.1.101 + + -- Mi-Ju Lee <miju52.lee@samsung.com> Thu, 23 Feb 2012 15:48:11 +0900 + +pwlock (0.1.100) unstable; urgency=low + + * apply checking modem + * Git: pkgs/p/pwlock + * Tag: pwlock_0.1.100 + + -- Seungtaek Chung <seungtaek.chung@samsung.com> Thu, 23 Feb 2012 00:02:03 +0900 + +pwlock (0.1.99) unstable; urgency=low + + * fix log + * Git: pkgs/p/pwlock + * Tag: pwlock_0.1.99 + + -- Seungtaek Chung <seungtaek.chung@samsung.com> Fri, 17 Feb 2012 14:51:27 +0900 + +pwlock (0.1.98) unstable; urgency=low + + * EFL update + * Git: pkgs/p/pwlock + * Tag: pwlock_0.1.98 + + -- Seungtaek Chung <seungtaek.chung@samsung.com> Fri, 17 Feb 2012 13:36:14 +0900 + +pwlock (0.1.97) unstable; urgency=low + + * update the boilerplate + * Git: pkgs/p/pwlock + * Tag: pwlock_0.1.97 + + -- Seungtaek Chung <seungtaek.chung@samsung.com> Thu, 16 Feb 2012 10:03:05 +0900 + +pwlock (0.1.96) unstable; urgency=low + + * fix pwlock launching + * Git: pkgs/p/pwlock + * Tag: pwlock_0.1.96 + + -- Seungtaek Chung <seungtaek.chung@samsung.com> Wed, 28 Dec 2011 18:37:05 +0900 + +pwlock (0.1.95) unstable; urgency=low + + * update pkgname to org.tizen + * Git: pkgs/p/pwlock + * Tag: pwlock_0.1.95 + + -- Mi-Ju Lee <miju52.lee@samsung.com> Fri, 23 Dec 2011 16:05:46 +0900 + +pwlock (0.1.94) unstable; urgency=low + + * Initial released + * Git: pkgs/p/pwlock + * Tag: pwlock_0.1.94 + + -- Seungtaek Chung <seungtaek.chung@samsung.com> Wed, 07 Dec 2011 23:06:40 +0900 diff --git a/debian/compat b/debian/compat new file mode 100755 index 0000000..7ed6ff8 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +5 diff --git a/debian/control b/debian/control new file mode 100755 index 0000000..a03648f --- /dev/null +++ b/debian/control @@ -0,0 +1,17 @@ +Source: pwlock +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, libelm-dev, libslp-setting-dev, libslp-tapi-dev, libslp-utilx-dev, libui-gadget-dev, dlog-dev, libbundle-dev, libecore-dev, libeina-dev, libevas-dev, libedje-dev, libaul-1-dev, libslp-sysman-dev +Standards-Version: 3.7.2 + +Package: org.tizen.pwlock +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: pwlock + +Package: org.tizen.pwlock-dbg +Section: debug +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, org.tizen.pwlock +Description: debug package of pwlock diff --git a/debian/org.tizen.pwlock.install.in b/debian/org.tizen.pwlock.install.in new file mode 100755 index 0000000..25fb04c --- /dev/null +++ b/debian/org.tizen.pwlock.install.in @@ -0,0 +1,4 @@ +@PREFIX@/bin/* +@PREFIX@/data +@PREFIX@/res/locale/* +/opt/share/applications/* diff --git a/debian/org.tizen.pwlock.postinst b/debian/org.tizen.pwlock.postinst new file mode 100755 index 0000000..f9866ac --- /dev/null +++ b/debian/org.tizen.pwlock.postinst @@ -0,0 +1,21 @@ +#!/bin/sh +#This is pwlock postinst file + +GOPTION="" # Set without -g, -u options +if [ ${USER} == "root" ] +then + # 5000 is inhouse user id + # do not use relative path + chown -R 5000:5000 /opt/apps/org.tizen.pwlock/data + + # Set vconf values with -g/-u options + GOPTION="-g 6514" +fi + +#echo $GOPTION + +# check first boot +vconftool $GOPTION set -t bool db/setting/pwlock_boot "1" +#vconftool $GOPTION set -t int db/setting/phone_lock_attempts_left "5" +#vconftool $GOPTION set -t string db/setting/phone_lock_timestamp "" + diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..fe2571c --- /dev/null +++ b/debian/rules @@ -0,0 +1,119 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +CFLAGS ?= +LDFLAGS ?= +PREFIX ?= /opt/apps/org.tizen.pwlock +RESDIR ?= /opt/apps/org.tizen.pwlock/res +DATADIR ?= /opt/apps/org.tizen.pwlock/data + +CFLAGS += -Wall -g + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif + +CFLAGS += -fPIE +LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed + +CMAKE_BUILD_DIR ?= $(CURDIR)/cmake_build_tmp + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + mkdir -p $(CMAKE_BUILD_DIR) && cd $(CMAKE_BUILD_DIR) && \ + CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" cmake .. -DCMAKE_INSTALL_PREFIX="$(PREFIX)" + + touch configure-stamp + +build: build-stamp + +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + cd $(CMAKE_BUILD_DIR) && $(MAKE) + + for f in `find $(CURDIR)/debian/ -name "*.in"`; do \ + cat $$f > $${f%.in}; \ + sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \ + sed -i -e "s#@RESDIR@#$(RESDIR)#g" $${f%.in}; \ + sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \ + done + + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + rm -rf $(CMAKE_BUILD_DIR) + rm -rf debian/pwlock-dbg + + for f in `find $(CURDIR)/debian/ -name "*.in"`; do \ + rm -f $${f%.in}; \ + done + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/wavplayer. + cd $(CMAKE_BUILD_DIR) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples + dh_install --sourcedir=debian/tmp +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_python +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + dh_strip --dbg-package=org.tizen.pwlock-dbg + dh_compress + dh_fixperms +# dh_perl + dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure + diff --git a/include/pwlock.h b/include/pwlock.h new file mode 100755 index 0000000..2ab3953 --- /dev/null +++ b/include/pwlock.h @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved + * + * This file is part of <pwlock> + * Written by <Seungtaek Chung> <seungtaek.chung@samsung.com>, <Mi-Ju Lee> <miju52.lee@samsung.com>, <Xi Zhichan> <zhichan.xi@samsung.com> + * + * PROPRIETARY/CONFIDENTIAL + * + * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information"). + * You shall not disclose such Confidential Information and shall use it only in accordance + * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS. + * SAMSUNG make no representations or warranties about the suitability of the software, + * either express or implied, including but not limited to the implied warranties of merchantability, + * fitness for a particular purpose, or non-infringement. + * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using, + * modifying or distributing this software or its derivatives. + * + */ + +#ifndef __PWLOCK_H__ +#define __PWLOCK_H__ + +#include <Elementary.h> +#include <glib.h> +#include <aul.h> +#include <openssl/sha.h> +#include <sysman.h> + +#include "tapi.h" + +#if !defined(PACKAGE) +#define PACKAGE "org.tizen.pwlock" +#endif + +#if !defined(LOCALEDIR) +#define LOCALEDIR "/opt/apps/org.tizen.pwlock/res/locale" +#endif + +struct appdata { + Evas_Object *win; + Evas_Object *ly; + Evas_Object *navi; + Evas_Object *bg; + + int ui_type; + int previous_ui_type; + Evas_Object *ly_main; + Evas_Object *entry_layout; + Evas_Object *entry_second_layout; + Evas_Object *button_dial; + Evas_Object *button_done; + int state; + int sub_state; + Ecore_Idler *idler; + + int first_boot; + int running_status; + int alpha_window_status; + int keyboard_settings_loaded; + int date_and_time_settings_loaded; + int language_settings_loaded; + int lock_view_loaded; + int lock_app_launched; + + char *entry_str; + char *pin_str; + char *msg; + Ecore_Timer *pTimerId; + int sim_changed; + int pin_changed; + enum sim_stat sim_status; + struct tapi *t; + struct ui_gadget *dialer_ug; + struct ui_gadget *language_ug; + struct ui_gadget *keyboard_ug; + struct ui_gadget *date_ug; + struct ui_gadget *count_ug; + struct ui_gadget *current_ug; + int kill_ug; + int date_and_time_previous; + int cancel_setup; + Evas_Object *popup; + Evas_Object *waiting_popup; + int win_type; + int tapi_smc_sid; +}; + +void do_state(struct appdata *ad); + +enum { + STR_E_PW, + STR_E_PIN, + STR_E_NEW, + STR_R_PIN, + STR_E_PUK, + STR_I_PUN, + STR_I_PUK, + STR_A_LEFT, + STR_DONE, + STR_DIAL, + STR_W_PW, + STR_N_MAT, + STR_LANG, + STR_SET, + STR_CANCEL, + STR_ERR_SIMLANG, + STR_ERR_UNSUPP, + STR_BLOCK, + STR_SIM_LOCK, + STR_NETWORK_LOCK_NCK, + STR_NETWORK_LOCK_NSCK, + STR_NETWORK_LOCK_SPCK, + STR_NETWORK_LOCK_CCK, + STR_PW_LENGTH, +}; + +enum { + _ST_FIRST, + _ST_TAPI_INIT, + _ST_SIM, + _ST_SIM_PINCNF, + _ST_SIM_PUKCNF, + _ST_SIM_LOCKCNF, + _ST_NETWORK_LOCKCNF, + _ST_EXIT, + _ST_LANG, + _ST_TIME, + _ST_KEYBOARD, + _ST_MAX, +}; + +extern const char *strtbl[]; +void set_win_prop(struct appdata *ad, int type); + +#endif /* __PWLOCK_H__ */ diff --git a/include/tapi.h b/include/tapi.h new file mode 100755 index 0000000..6d5344d --- /dev/null +++ b/include/tapi.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved + * + * This file is part of <pwlock> + * Written by <Seungtaek Chung> <seungtaek.chung@samsung.com>, <Mi-Ju Lee> <miju52.lee@samsung.com>, <Xi Zhichan> <zhichan.xi@samsung.com> + * + * PROPRIETARY/CONFIDENTIAL + * + * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information"). + * You shall not disclose such Confidential Information and shall use it only in accordance + * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS. + * SAMSUNG make no representations or warranties about the suitability of the software, + * either express or implied, including but not limited to the implied warranties of merchantability, + * fitness for a particular purpose, or non-infringement. + * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using, + * modifying or distributing this software or its derivatives. + * + */ + +#ifndef __PWLOCK_TAPI_H__ +#define __PWLOCK_TAPI_H__ + +struct tapi; + +enum sim_stat { + SIM_ERROR = -1, + SIM_RETRY = 0, + SIM_OK, + SIM_EMPTY, + SIM_REQ_PIN, + SIM_REQ_PUK, + SIM_REQ_LOCK, + SIM_REQ_NCK, + SIM_REQ_NSCK, + SIM_REQ_SPCK, + SIM_REQ_CCK, + SIM_BLOCKED, + SIM_WAITING, + SIM_REQUIRED_EVENT +}; + +struct tapi_info { + enum sim_stat st; + int retry_cnt; +}; + +struct tapi *tapi_init(void (*cb) (struct tapi_info *, void *), void *data); +void tapi_exit(struct tapi **t); + +int tapi_is_ready(void); +int tapi_ready_check(void); + +enum sim_stat tapi_check_sim(int *changed); + +int tapi_verify_pins(char *code); +int tapi_verify_puks(char *code, char *newcode); +int tapi_verify_lock(char *code); +int tapi_disable_net_pers(char *code, int type); + +void enable_net_pers(); + +int tapi_get_language(int *v); + +#endif /* __PWLOCK_TAPI_H__ */ diff --git a/include/ui.h b/include/ui.h new file mode 100755 index 0000000..13a5b6e --- /dev/null +++ b/include/ui.h @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved + * + * This file is part of <pwlock> + * Written by <Seungtaek Chung> <seungtaek.chung@samsung.com>, <Mi-Ju Lee> <miju52.lee@samsung.com>, <Xi Zhichan> <zhichan.xi@samsung.com> + * + * PROPRIETARY/CONFIDENTIAL + * + * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information"). + * You shall not disclose such Confidential Information and shall use it only in accordance + * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS. + * SAMSUNG make no representations or warranties about the suitability of the software, + * either express or implied, including but not limited to the implied warranties of merchantability, + * fitness for a particular purpose, or non-infringement. + * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using, + * modifying or distributing this software or its derivatives. + * + */ + +#ifndef __PWLOCK_UI_H__ +#define __PWLOCK_UI_H__ + +#include "pwlock.h" + +#define PWLOCK_PASSWORD_MIN_LENGTH 4 +#define PWLOCK_PIN_PASSWORD_MAX_LENGTH 8 +#define PWLOCK_PHONE_PASSWORD_MAX_LENGTH 16 + +enum { + _UI_PIN = 0, + _UI_PUK, + _UI_PUK_PIN, + _UI_PUK_CNF, + _UI_BLOCK, + _UI_SIM_LOCK, + _UI_NETWORK_LOCK_NCK, + _UI_NETWORK_LOCK_NSCK, + _UI_NETWORK_LOCK_SPCK, + _UI_NETWORK_LOCK_CCK, + _UI_LANG, + _UI_TIME, + _UI_KEYBOARD, + _UI_DIALER, +}; + +void show_pin(struct appdata *ad); +void show_puk(struct appdata *ad); +void show_puk_pin(struct appdata *ad); +void show_block(struct appdata *ad); +void show_sim_lock(struct appdata *ad); +int show_lang(struct appdata *ad); +int show_time(struct appdata *ad); +int show_account(struct appdata *ad); +int show_keyboard_setting(struct appdata *ad); +int show_dialer(struct appdata *ad); + +void pwlock_destroy(struct appdata *ad); +void load_main(struct appdata *ad, int ui_type); + +void show_msg(struct appdata *ad, int strid); +void clear_entry(struct appdata *ad); +void _show_popup(void *data, char *msg_str); +void show_popup(struct appdata *ad, const char *mesg, Eina_Bool mode); +void show_waiting_popup(struct appdata *ad, const char *msg_str); +void remove_waiting_popup(struct appdata *ad); +Eina_Bool show_puk_do(void *data); +#endif /* __PWLOCK_UI_H__ */ diff --git a/include/util.h b/include/util.h new file mode 100755 index 0000000..5ff1fe7 --- /dev/null +++ b/include/util.h @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved + * + * This file is part of <pwlock> + * Written by <Seungtaek Chung> <seungtaek.chung@samsung.com>, <Mi-Ju Lee> <miju52.lee@samsung.com>, <Xi Zhichan> <zhichan.xi@samsung.com> + * + * PROPRIETARY/CONFIDENTIAL + * + * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information"). + * You shall not disclose such Confidential Information and shall use it only in accordance + * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS. + * SAMSUNG make no representations or warranties about the suitability of the software, + * either express or implied, including but not limited to the implied warranties of merchantability, + * fitness for a particular purpose, or non-infringement. + * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using, + * modifying or distributing this software or its derivatives. + * + */ + +#ifndef __PWLOCK_UTIL_H__ +#define __PWLOCK_UTIL_H__ + +#include<dlog.h> +#include<Elementary.h> + +#ifdef LOG_TAG +#undef LOG_TAG +#endif + +#define LOG_TAG "pwlock" +#define LOGFILE "/tmp/pwlock.log" + +#define ENABLE_LOG_SYSTEM + +void pwlock_log_t(char *fmt, ...); + +#ifdef ENABLE_LOG_SYSTEM +#define PWLOCK_ERR(fmt, arg...) LOGE("["LOG_TAG"%s:%d:E] "fmt, __FILE__, __LINE__, ##arg) +#define PWLOCK_DBG(fmt, arg...) LOGD("["LOG_TAG"%s:%d:D] "fmt, __FILE__, __LINE__, ##arg) +#define PWLOCK_WARN(fmt, arg...) LOGW("["LOG_TAG"%s:%d:D] "fmt, __FILE__, __LINE__, ##arg) +#else +#define PWLOCK_ERR(fmt, arg...) +#define PWLOCK_DBG(fmt, arg...) +#define PWLOCK_WARN(fmt, arg...) +#endif + +#ifdef ENABLE_LOG_SYSTEM +#define _ERR(fmt, arg...) do { PWLOCK_ERR(fmt, ##arg); pwlock_log_t("["LOG_TAG":%d:E] "fmt, __LINE__, ##arg); } while (0) +#define _DBG(fmt, arg...) do { PWLOCK_DBG(fmt, ##arg); pwlock_log_t("["LOG_TAG":%d:D] "fmt, __LINE__, ##arg); } while (0) +#else +#define _ERR(...) +#define _DBG(...) +#endif + +enum { + IDS_COM_SK_SET = 0, + IDS_COM_SK_DONE, + IDS_COM_BODY_ENTER_PASSWORD, + IDS_COM_BODY_PREVIOUS, + IDS_COM_SK_NEXT, + IDS_COM_SK_OK, + IDS_COM_SK_CANCEL, + + IDS_PWLOCK_SYSTEM_STRING_MAX, +}; + +enum { + IDS_IDLE_BODY_AUTOMATIC = IDS_PWLOCK_SYSTEM_STRING_MAX, + IDS_IDLE_HEADER_NETWORK_LOCK, + IDS_IDLE_HEADER_PHONE_LOCK, + IDS_IDLE_HEADER_PIN_LOCK, + IDS_IDLE_HEADER_PUK_LOCK, + IDS_IDLE_HEADER_SIM_BLOCKED, + IDS_IDLE_HEADER_SIM_LOCK, + IDS_IDLE_BODY_1_ATTEMPT_LEFT, + IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY, + IDS_IDLE_BODY_ENTER_NEW_PIN, + IDS_IDLE_BODY_ENTER_PIN, + IDS_IDLE_BODY_ENTER_PUK, + IDS_IDLE_BODY_INCORRECT_PIN, + IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN, + IDS_IDLE_BODY_INCORRECT_PUK, + IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED, + IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY, + IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY, + IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG, + IDS_IDLE_BODY_PD_ATTEMPTS_LEFT, + IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY, + IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER, + IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE, + IDS_IDLE_BODY_WRONG_PASSWORD, + IDS_IDLE_BUTTON_CANCEL, + IDS_IDLE_BUTTON_DIALER, + IDS_IDLE_HEADER_DISPLAY_LANGUAGE, + IDS_IDLE_BODY_DO_YOU_WANT_TO_SKIP_SETUPWIZARD, + IDS_IDLE_BODY_PASSWORD_EMPTY, + IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED, + IDS_IDLE_BODY_NEW_PIN, + IDS_IDLE_BODY_PIN, + IDS_IDLE_BODY_PUK, + IDS_IDLE_POP_PIN_BLOCKED, + IDS_IDLE_POP_PIN_UNBLOCKED, + IDS_IDLE_BODY_CONFIRM_NEW_PIN, + IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT, + IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT, + IDS_IDLE_BODY_PD_TO_PD_DIGITS_OR_LETTERS_REQUIRED, + IDS_IDLE_POP_PASSWORDS_NOT_MATCH, + IDS_IDLE_POP_PIN_CHANGED, + IDS_IDLE_POP_SIM_CARD_ERROR, + IDS_IDLE_BODY_TRY_LATER, + IDS_IDLE_BODY_INPUT_PASSWORD_AFTER_THIRTYSECONDS, + IDS_IDLE_BODY_CHECKING_SIM_STATUS, + + IDS_PWLOCK_APP_STRING_MAX, +}; + +char *pwlock_get_string(int id); +Evas_Object *create_win(const char *name); +Evas_Object *load_edj(Evas_Object * parent, const char *file, + const char *group); +#endif /* __PWLOCK_UTIL_H__ */ diff --git a/org.tizen.pwlock.desktop.in b/org.tizen.pwlock.desktop.in new file mode 100755 index 0000000..fe6fc63 --- /dev/null +++ b/org.tizen.pwlock.desktop.in @@ -0,0 +1,9 @@ +Name=@PROJECT_NAME@ +Exec=@BINDIR@/@PROJECT_NAME@ +Type=Application +Nodisplay=True + +X-TIZEN-TaskManage=False +X-TIZEN-Multiple=False +X-TIZEN-Removable=False + diff --git a/packaging/org.tizen.pwlock.spec b/packaging/org.tizen.pwlock.spec new file mode 100755 index 0000000..5a582a2 --- /dev/null +++ b/packaging/org.tizen.pwlock.spec @@ -0,0 +1,54 @@ +%define PREFIX /opt/apps/org.tizen.pwlock + +Name: org.tizen.pwlock +Summary: Password Lock application +Version: 0.2.1 +Release: 1 +Group: User Experience +License: Samsung Proprietary License +Source0: %{name}-%{version}.tar.gz + +BuildRequires: pkgconfig(elementary) +BuildRequires: pkgconfig(ui-gadget) +BuildRequires: pkgconfig(x11) +BuildRequires: pkgconfig(dlog) +BuildRequires: pkgconfig(vconf) +BuildRequires: pkgconfig(appcore-efl) +BuildRequires: pkgconfig(tapi) +BuildRequires: pkgconfig(utilX) +BuildRequires: pkgconfig(openssl) +BuildRequires: pkgconfig(aul) +BuildRequires: pkgconfig(sysman) +BuildRequires: gettext-tools +BuildRequires: cmake +BuildRequires: edje-tools +Requires(post): /usr/bin/vconftool + +%description +Password lock application. + +%prep +%setup -q + +%build +LDFLAGS+="-Wl,--rpath=%{PREFIX}/lib -Wl,--as-needed";export LDFLAGS +cmake . -DCMAKE_INSTALL_PREFIX=%{PREFIX} +make + +%install +%make_install + +%find_lang pwlock + +%post +GOPTION="-g 6514" +vconftool $GOPTION set -t bool db/setting/pwlock_boot "1" +chown -R 5000:5000 /opt/apps/org.tizen.pwlock/data + +#%files -f %{name}.lang +%files +%defattr(-,root,root,-) +%dir /opt/apps/org.tizen.pwlock/data +/opt/share/applications/org.tizen.pwlock.desktop +/opt/apps/org.tizen.pwlock/bin/pwlock +/opt/apps/org.tizen.pwlock/res/locale/*/LC_MESSAGES/pwlock.mo diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt new file mode 100755 index 0000000..2defb36 --- /dev/null +++ b/po/CMakeLists.txt @@ -0,0 +1,25 @@ +# for i18n + +#SET(POFILES de.po en_US.po fr.po ja.po nl.po pt.po ru.po zh_CN.po zh_TW.po el.po es.po it.po ko.po tk.po zh_HK.po) +SET(POFILES de_DE.po el_GR.po en.po es_ES.po fr_FR.po it_IT.po ja_JP.po ko_KR.po nl_NL.po pt_PT.po ru_RU.po tr_TR.po zh_CN.po zh_HK.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 ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo) + SET(moFiles ${moFiles} ${moFile}) +ENDFOREACH(pofile) + +MESSAGE(".mo files: ${moFiles}") +ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles}) diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100755 index 0000000..e6581b0 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,5 @@ +# List of source files containing translatable strings. +#pwlock.c +#ui.c +#langs.c +pwlock-string.c diff --git a/po/de_DE.po b/po/de_DE.po new file mode 100755 index 0000000..df48002 --- /dev/null +++ b/po/de_DE.po @@ -0,0 +1,111 @@ +msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN" +msgstr "Neue PIN bestätigen" + +msgid "IDS_IDLE_BODY_PASSWORD_EMPTY" +msgstr "Passwort leer" + +msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED" +msgstr "%d bis %d Stellen sind erforderlich" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT" +msgstr "Falsche PIN. Noch 1 Versuch" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT" +msgstr "Falsche PIN. Noch %d Versuche" + +msgid "IDS_IDLE_BODY_NEW_PIN" +msgstr "Neue PIN" + +msgid "IDS_IDLE_BODY_PIN" +msgstr "PIN" + +msgid "IDS_IDLE_BODY_PUK" +msgstr "PUK" + +msgid "IDS_IDLE_POP_PIN_BLOCKED" +msgstr "PIN gesperrt" + +msgid "IDS_IDLE_POP_PIN_UNBLOCKED" +msgstr "PIN entsperrt" + +msgid "IDS_IDLE_BUTTON_CANCEL" +msgstr "Abbr." + +msgid "IDS_IDLE_BODY_AUTOMATIC" +msgstr "Automatisch" + +msgid "IDS_IDLE_HEADER_NETWORK_LOCK" +msgstr "Netzsperre" + +msgid "IDS_IDLE_HEADER_PHONE_LOCK" +msgstr "Telefonsperre" + +msgid "IDS_IDLE_HEADER_PIN_LOCK" +msgstr "PIN-Sperre" + +msgid "IDS_IDLE_HEADER_PUK_LOCK" +msgstr "PUK-Sperre" + +msgid "IDS_IDLE_HEADER_SIM_BLOCKED" +msgstr "SIM gesperrt" + +msgid "IDS_IDLE_HEADER_SIM_LOCK" +msgstr "SIM-Sperre" + +msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT" +msgstr "Noch 1 Versuch" + +msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Unternehmenspersonalisierung aktiviert. Steuertaste eingeben" + +msgid "IDS_IDLE_BODY_ENTER_NEW_PIN" +msgstr "Neue PIN eingeben" + +msgid "IDS_IDLE_BODY_ENTER_PIN" +msgstr "PIN eingeben" + +msgid "IDS_IDLE_BODY_ENTER_PUK" +msgstr "PUK eingeben" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN" +msgstr "Falsche PIN" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN" +msgstr "Ungültige PIN.\nErneut versuchen" + +msgid "IDS_IDLE_BODY_INCORRECT_PUK" +msgstr "Falscher PUK" + +msgid "IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED" +msgstr "Sprache nicht unterstützt" + +msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Netzwerkpersonalisierung aktiviert. Steuertaste eingeben" + +msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Netzwerk Teil-Personalisierung aktiviert. Steuertaste eingeben" + +msgid "IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG" +msgstr "Das Passwort muss 4 Stellen lang sein" + +msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT" +msgstr "%d Versuche übrig" + +msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Dienstanbieterpersonalisierung aktiviert. Steuertaste eingeben" + +msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER" +msgstr "SIM nicht verfügbar. Wenden Sie sich an Ihren Dienstanbieter" + +msgid "IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE" +msgstr "SIM-Kartensprache kann nicht gelesen werden" + +msgid "IDS_IDLE_BODY_WRONG_PASSWORD" +msgstr "Falsches Passwort" + +msgid "IDS_IDLE_BUTTON_DIALER" +msgstr "Wählen" + +msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE" +msgstr "Anzeigesprache" + diff --git a/po/el_GR.po b/po/el_GR.po new file mode 100755 index 0000000..632625d --- /dev/null +++ b/po/el_GR.po @@ -0,0 +1,111 @@ +msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN" +msgstr "Επιβεβαίωση νέου ΡΙΝ" + +msgid "IDS_IDLE_BODY_PASSWORD_EMPTY" +msgstr "Δεν έχει οριστεί κωδικός πρόσβασης" + +msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED" +msgstr "Απαιτούνται %d έως %d ψηφία" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT" +msgstr "Λάθος PIN. Απομένει 1 προσπάθεια" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT" +msgstr " Λάθος PIN. Απομένουν %d προσπάθειες" + +msgid "IDS_IDLE_BODY_NEW_PIN" +msgstr "Νέο PIN" + +msgid "IDS_IDLE_BODY_PIN" +msgstr "PIN" + +msgid "IDS_IDLE_BODY_PUK" +msgstr "PUK" + +msgid "IDS_IDLE_POP_PIN_BLOCKED" +msgstr "Εμπλοκή ΡΙΝ" + +msgid "IDS_IDLE_POP_PIN_UNBLOCKED" +msgstr "Απεμπλοκή ΡΙΝ" + +msgid "IDS_IDLE_BUTTON_CANCEL" +msgstr "Ακύρωση" + +msgid "IDS_IDLE_BODY_AUTOMATIC" +msgstr "Αυτόματα" + +msgid "IDS_IDLE_HEADER_NETWORK_LOCK" +msgstr "Κλείδωμα δικτύου" + +msgid "IDS_IDLE_HEADER_PHONE_LOCK" +msgstr "Κλείδωμα τηλεφώνου" + +msgid "IDS_IDLE_HEADER_PIN_LOCK" +msgstr "Κλείδωμα PIN" + +msgid "IDS_IDLE_HEADER_PUK_LOCK" +msgstr "Κλείδωμα PUK" + +msgid "IDS_IDLE_HEADER_SIM_BLOCKED" +msgstr "Η κάρτα SIM είναι μπλοκαρισμένη" + +msgid "IDS_IDLE_HEADER_SIM_LOCK" +msgstr "Κλείδωμα SIM" + +msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT" +msgstr "Απομένει 1 προσπάθεια" + +msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Εταιρική εξατομίκευση ενεργή. Εισαγάγετε πλήκτρο ελέγχου" + +msgid "IDS_IDLE_BODY_ENTER_NEW_PIN" +msgstr "Εισάγετε νέο PIN" + +msgid "IDS_IDLE_BODY_ENTER_PIN" +msgstr "Εισαγωγή PIN" + +msgid "IDS_IDLE_BODY_ENTER_PUK" +msgstr "Εισαγωγή PUK" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN" +msgstr "Λάθος PIN" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN" +msgstr "Εσφαλμένο ΡΙΝ.\nΠαρακαλώ προσπαθήστε ξανά" + +msgid "IDS_IDLE_BODY_INCORRECT_PUK" +msgstr "Λάθος PUK" + +msgid "IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED" +msgstr "Η γλώσσα δεν υποστηρίζεται" + +msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Εξατομίκευση δικτύου ενεργή. Εισαγάγετε πλήκτρο ελέγχου" + +msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Εξατομίκευση υποσυνόλου δικτύου ενεργή. Εισαγάγετε πλήκτρο ελέγχου" + +msgid "IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG" +msgstr "Ο κωδικός πρόσβασης πρέπει να είναι τετραψήφιος" + +msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT" +msgstr "%d προσπάθειες απομένουν" + +msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Εξατομίκευση παροχέα υπηρεσιών ενεργή. Εισαγάγετε πλήκτρο ελέγχου" + +msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER" +msgstr "Μη διαθέσιμη κάρτα SIM. Επικοινωνήστε με τον παροχέα υπηρεσιών" + +msgid "IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE" +msgstr "Δεν είναι δυνατή η ανάγνωση της γλώσσας της κάρτας SIM" + +msgid "IDS_IDLE_BODY_WRONG_PASSWORD" +msgstr "Λάθος κωδικός" + +msgid "IDS_IDLE_BUTTON_DIALER" +msgstr "Επ. κλήσ." + +msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE" +msgstr "Γλώσσα εμφάνισης" + diff --git a/po/en.po b/po/en.po new file mode 100755 index 0000000..bc087e4 --- /dev/null +++ b/po/en.po @@ -0,0 +1,111 @@ +msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN" +msgstr "Confirm new PIN" + +msgid "IDS_IDLE_BODY_PASSWORD_EMPTY" +msgstr "Password empty" + +msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED" +msgstr "%d to %d digits required" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT" +msgstr "Incorrect PIN. 1 attempt left" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT" +msgstr "Incorrect PIN. %d attempts left" + +msgid "IDS_IDLE_BODY_NEW_PIN" +msgstr "New PIN" + +msgid "IDS_IDLE_BODY_PIN" +msgstr "PIN" + +msgid "IDS_IDLE_BODY_PUK" +msgstr "PUK" + +msgid "IDS_IDLE_POP_PIN_BLOCKED" +msgstr "PIN blocked" + +msgid "IDS_IDLE_POP_PIN_UNBLOCKED" +msgstr "PIN unblocked" + +msgid "IDS_IDLE_BUTTON_CANCEL" +msgstr "Cancel" + +msgid "IDS_IDLE_BODY_AUTOMATIC" +msgstr "Automatic" + +msgid "IDS_IDLE_HEADER_NETWORK_LOCK" +msgstr "Network lock" + +msgid "IDS_IDLE_HEADER_PHONE_LOCK" +msgstr "Phone lock" + +msgid "IDS_IDLE_HEADER_PIN_LOCK" +msgstr "PIN lock" + +msgid "IDS_IDLE_HEADER_PUK_LOCK" +msgstr "PUK lock" + +msgid "IDS_IDLE_HEADER_SIM_BLOCKED" +msgstr "SIM blocked" + +msgid "IDS_IDLE_HEADER_SIM_LOCK" +msgstr "SIM lock" + +msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT" +msgstr "1 attempt left" + +msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Corporate personalisation on. Enter control key" + +msgid "IDS_IDLE_BODY_ENTER_NEW_PIN" +msgstr "Enter new PIN" + +msgid "IDS_IDLE_BODY_ENTER_PIN" +msgstr "Enter PIN" + +msgid "IDS_IDLE_BODY_ENTER_PUK" +msgstr "Enter PUK" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN" +msgstr "Incorrect PIN" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN" +msgstr "Incorrect PIN. Try again" + +msgid "IDS_IDLE_BODY_INCORRECT_PUK" +msgstr "Incorrect PUK" + +msgid "IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED" +msgstr "Language not supported" + +msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Network personalisation on. Enter control key" + +msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Network subset personalisation on. Enter control key" + +msgid "IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG" +msgstr "Password must be 4 digits long" + +msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT" +msgstr "%d attempts left" + +msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Service provider personalisation on. Enter control key" + +msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER" +msgstr "SIM card not available. Contact your service provider" + +msgid "IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE" +msgstr "Unable to read SIM card language" + +msgid "IDS_IDLE_BODY_WRONG_PASSWORD" +msgstr "Wrong password" + +msgid "IDS_IDLE_BUTTON_DIALER" +msgstr "Dialer" + +msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE" +msgstr "Display language" + diff --git a/po/es_ES.po b/po/es_ES.po new file mode 100755 index 0000000..a69008e --- /dev/null +++ b/po/es_ES.po @@ -0,0 +1,111 @@ +msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN" +msgstr "Confirmar PIN nuevo" + +msgid "IDS_IDLE_BODY_PASSWORD_EMPTY" +msgstr "Contraseña vacía" + +msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED" +msgstr "Se necesitan de %d a %d dígitos" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT" +msgstr "PIN incorrecto. Queda un intento" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT" +msgstr "PIN incorrecto. Quedan %d intentos" + +msgid "IDS_IDLE_BODY_NEW_PIN" +msgstr "Nuevo PIN" + +msgid "IDS_IDLE_BODY_PIN" +msgstr "PIN" + +msgid "IDS_IDLE_BODY_PUK" +msgstr "PUK" + +msgid "IDS_IDLE_POP_PIN_BLOCKED" +msgstr "PIN bloqueado" + +msgid "IDS_IDLE_POP_PIN_UNBLOCKED" +msgstr "PIN desbloqueado" + +msgid "IDS_IDLE_BUTTON_CANCEL" +msgstr "Cancelar" + +msgid "IDS_IDLE_BODY_AUTOMATIC" +msgstr "Automático" + +msgid "IDS_IDLE_HEADER_NETWORK_LOCK" +msgstr "Bloqueo red" + +msgid "IDS_IDLE_HEADER_PHONE_LOCK" +msgstr "Bloqueo del teléfono" + +msgid "IDS_IDLE_HEADER_PIN_LOCK" +msgstr "Bloqueo de PIN" + +msgid "IDS_IDLE_HEADER_PUK_LOCK" +msgstr "Bloqueo de PUK" + +msgid "IDS_IDLE_HEADER_SIM_BLOCKED" +msgstr "SIM bloqueada" + +msgid "IDS_IDLE_HEADER_SIM_LOCK" +msgstr "Bloqueo de SIM" + +msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT" +msgstr "Último intento" + +msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Personalización corporativa activada. Pulse tecla Control" + +msgid "IDS_IDLE_BODY_ENTER_NEW_PIN" +msgstr "Introducir PIN nuevo" + +msgid "IDS_IDLE_BODY_ENTER_PIN" +msgstr "Introducir PIN" + +msgid "IDS_IDLE_BODY_ENTER_PUK" +msgstr "Introducir PUK" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN" +msgstr "PIN incorrecto" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN" +msgstr "PIN incorrecto. Vuelva a intentarlo" + +msgid "IDS_IDLE_BODY_INCORRECT_PUK" +msgstr "PUK incorrecto" + +msgid "IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED" +msgstr "Idioma no admitido" + +msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Personalización de red activada. Pulse tecla Control" + +msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Personalización de subconjunto de red activada. Pulse tecla Control" + +msgid "IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG" +msgstr "La contraseña debe tener 4 dígitos de longitud" + +msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT" +msgstr "Quedan %d intentos" + +msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Personalización de proveedor de servicios activada. Pulse tecla Control" + +msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER" +msgstr "Tarjeta SIM no disponible. Póngase en contacto con el proveedor de servicios" + +msgid "IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE" +msgstr "No se puede leer idioma de tarjeta SIM" + +msgid "IDS_IDLE_BODY_WRONG_PASSWORD" +msgstr "Contraseña incorrecta" + +msgid "IDS_IDLE_BUTTON_DIALER" +msgstr "Marcador" + +msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE" +msgstr "Idioma para mostrar" + diff --git a/po/fr_FR.po b/po/fr_FR.po new file mode 100755 index 0000000..d24bf42 --- /dev/null +++ b/po/fr_FR.po @@ -0,0 +1,111 @@ +msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN" +msgstr "Confirmer nouveau code PIN" + +msgid "IDS_IDLE_BODY_PASSWORD_EMPTY" +msgstr "Mot de passe vide" + +msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED" +msgstr "%d à %d chiffres requis" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT" +msgstr "PIN incorrect 1 essai restant" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT" +msgstr "PIN incorrect. %d essais restants" + +msgid "IDS_IDLE_BODY_NEW_PIN" +msgstr "Nouveau code PIN" + +msgid "IDS_IDLE_BODY_PIN" +msgstr "Code PIN" + +msgid "IDS_IDLE_BODY_PUK" +msgstr "Code PUK" + +msgid "IDS_IDLE_POP_PIN_BLOCKED" +msgstr "Code PIN bloqué" + +msgid "IDS_IDLE_POP_PIN_UNBLOCKED" +msgstr "Code PIN débloqué" + +msgid "IDS_IDLE_BUTTON_CANCEL" +msgstr "Annuler" + +msgid "IDS_IDLE_BODY_AUTOMATIC" +msgstr "Automatique" + +msgid "IDS_IDLE_HEADER_NETWORK_LOCK" +msgstr "Code blocage réseau" + +msgid "IDS_IDLE_HEADER_PHONE_LOCK" +msgstr "Verrouillage téléphone" + +msgid "IDS_IDLE_HEADER_PIN_LOCK" +msgstr "Verrouillage PIN" + +msgid "IDS_IDLE_HEADER_PUK_LOCK" +msgstr "Verrouillage PUK" + +msgid "IDS_IDLE_HEADER_SIM_BLOCKED" +msgstr "Carte SIM bloquée" + +msgid "IDS_IDLE_HEADER_SIM_LOCK" +msgstr "Verrouillage SIM" + +msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT" +msgstr "1 essai restant" + +msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Personnalisation entreprise activée. Appuyez sur Contrôle" + +msgid "IDS_IDLE_BODY_ENTER_NEW_PIN" +msgstr "Saisir le nouveau code PIN" + +msgid "IDS_IDLE_BODY_ENTER_PIN" +msgstr "Saisir le code PIN" + +msgid "IDS_IDLE_BODY_ENTER_PUK" +msgstr "Saisir le code PUK" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN" +msgstr "Code PIN incorrect" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN" +msgstr "Code PIN incorrect\nRéessayez" + +msgid "IDS_IDLE_BODY_INCORRECT_PUK" +msgstr "Code PUK incorrect" + +msgid "IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED" +msgstr "Langue non prise en charge" + +msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Personnalisation réseau activée. Appuyez sur Contrôle" + +msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Personnalisation sous-réseau activée. Appuyez sur Contrôle" + +msgid "IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG" +msgstr "Le mot de passe doit comporter 4 chiffres" + +msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT" +msgstr "%d essais restants" + +msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Personnalisation fournisseur d'accès activée. Appuyez sur Contrôle" + +msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER" +msgstr "Carte SIM non disponible. Contactez votre opérateur" + +msgid "IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE" +msgstr "Impossible de lire la langue de la carte SIM" + +msgid "IDS_IDLE_BODY_WRONG_PASSWORD" +msgstr "Mot de passe incorrect" + +msgid "IDS_IDLE_BUTTON_DIALER" +msgstr "Clavier" + +msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE" +msgstr "Langue d'affichage" + diff --git a/po/it_IT.po b/po/it_IT.po new file mode 100755 index 0000000..fc053f3 --- /dev/null +++ b/po/it_IT.po @@ -0,0 +1,111 @@ +msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN" +msgstr "Conferma nuovo PIN" + +msgid "IDS_IDLE_BODY_PASSWORD_EMPTY" +msgstr "Password vuota" + +msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED" +msgstr "Sono richieste cifre da %d a %d" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT" +msgstr "PIN errato. 1 tentativo rimasto" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT" +msgstr "PIN errato. %d tentativi rimasti" + +msgid "IDS_IDLE_BODY_NEW_PIN" +msgstr "Nuovo PIN" + +msgid "IDS_IDLE_BODY_PIN" +msgstr "PIN" + +msgid "IDS_IDLE_BODY_PUK" +msgstr "PUK" + +msgid "IDS_IDLE_POP_PIN_BLOCKED" +msgstr "PIN bloccato" + +msgid "IDS_IDLE_POP_PIN_UNBLOCKED" +msgstr "PIN sbloccato" + +msgid "IDS_IDLE_BUTTON_CANCEL" +msgstr "Annulla" + +msgid "IDS_IDLE_BODY_AUTOMATIC" +msgstr "Automatica" + +msgid "IDS_IDLE_HEADER_NETWORK_LOCK" +msgstr "Blocco rete" + +msgid "IDS_IDLE_HEADER_PHONE_LOCK" +msgstr "Blocco telefono" + +msgid "IDS_IDLE_HEADER_PIN_LOCK" +msgstr "Blocco PIN" + +msgid "IDS_IDLE_HEADER_PUK_LOCK" +msgstr "Blocco PUK" + +msgid "IDS_IDLE_HEADER_SIM_BLOCKED" +msgstr "SIM bloccata" + +msgid "IDS_IDLE_HEADER_SIM_LOCK" +msgstr "Blocco SIM" + +msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT" +msgstr "1 tentativo rimasto" + +msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Personalizzazione aziendale attiva. Immettere il tasto di controllo" + +msgid "IDS_IDLE_BODY_ENTER_NEW_PIN" +msgstr "Inserisci nuovo PIN" + +msgid "IDS_IDLE_BODY_ENTER_PIN" +msgstr "Inserisci PIN" + +msgid "IDS_IDLE_BODY_ENTER_PUK" +msgstr "Inserisci PUK" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN" +msgstr "PIN errato" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN" +msgstr "PIN errato.\nRiprovare" + +msgid "IDS_IDLE_BODY_INCORRECT_PUK" +msgstr "PUK errato" + +msgid "IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED" +msgstr "Lingua non supportata" + +msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Personalizzazione di rete attiva. Immettere il tasto di controllo" + +msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Personalizzazione del sottoinsieme di rete attiva. Immettere il tasto di controllo" + +msgid "IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG" +msgstr "La password deve contenere 4 cifre" + +msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT" +msgstr "%d tentativi possibili" + +msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Personalizzazione del fornitore di servizi attiva. Immettere il tasto di controllo" + +msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER" +msgstr "Scheda SIM non disponibile, contattare il fornitore di servizi" + +msgid "IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE" +msgstr "Impossibile leggere la lingua della scheda SIM" + +msgid "IDS_IDLE_BODY_WRONG_PASSWORD" +msgstr "Password errata" + +msgid "IDS_IDLE_BUTTON_DIALER" +msgstr "Componi" + +msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE" +msgstr "Lingua display" + diff --git a/po/ja_JP.po b/po/ja_JP.po new file mode 100755 index 0000000..4fb280f --- /dev/null +++ b/po/ja_JP.po @@ -0,0 +1,111 @@ +msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN" +msgstr "新しいPINを確認" + +msgid "IDS_IDLE_BODY_PASSWORD_EMPTY" +msgstr "パスワードを入力" + +msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED" +msgstr "%d~%d桁が必要" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT" +msgstr "PINが間違っています。残りの試行回数は1回です" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT" +msgstr "間違ったPINです。残りの試行回数:%d" + +msgid "IDS_IDLE_BODY_NEW_PIN" +msgstr "新しいPIN" + +msgid "IDS_IDLE_BODY_PIN" +msgstr "PIN" + +msgid "IDS_IDLE_BODY_PUK" +msgstr "PUK" + +msgid "IDS_IDLE_POP_PIN_BLOCKED" +msgstr "PINがブロックされました" + +msgid "IDS_IDLE_POP_PIN_UNBLOCKED" +msgstr "PINがブロック解除されました" + +msgid "IDS_IDLE_BUTTON_CANCEL" +msgstr "キャンセル" + +msgid "IDS_IDLE_BODY_AUTOMATIC" +msgstr "自動" + +msgid "IDS_IDLE_HEADER_NETWORK_LOCK" +msgstr "ネットワークロック" + +msgid "IDS_IDLE_HEADER_PHONE_LOCK" +msgstr "端末ロック" + +msgid "IDS_IDLE_HEADER_PIN_LOCK" +msgstr "PIN認証" + +msgid "IDS_IDLE_HEADER_PUK_LOCK" +msgstr "PUK認証" + +msgid "IDS_IDLE_HEADER_SIM_BLOCKED" +msgstr "SIMがブロックされました" + +msgid "IDS_IDLE_HEADER_SIM_LOCK" +msgstr "SIMロック" + +msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT" +msgstr "残りの試行回数は1回です" + +msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "コーポレートパーソナライゼーションがOnです。コントロールキーを入力してください" + +msgid "IDS_IDLE_BODY_ENTER_NEW_PIN" +msgstr "新しいPINを入力" + +msgid "IDS_IDLE_BODY_ENTER_PIN" +msgstr "PINを入力" + +msgid "IDS_IDLE_BODY_ENTER_PUK" +msgstr "PUKを入力" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN" +msgstr "PINが間違っています" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN" +msgstr "PINが間違っています。もう一度やり直してください" + +msgid "IDS_IDLE_BODY_INCORRECT_PUK" +msgstr "PUKが間違っています" + +msgid "IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED" +msgstr "対応していない言語です" + +msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "ネットワークパーソナライゼーションがOnです。コントロールキーを入力してください" + +msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "ネットワークサブセットパーソナライゼーションがOnです。コントロールキーを入力してください" + +msgid "IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG" +msgstr "パスワードは4桁の数字でなければなりません" + +msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT" +msgstr "残りの試行回数:%d" + +msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "サービスプロバイダーパーソナライゼーションがOnです。コントロールキーを入力してください" + +msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER" +msgstr "SIMカードを使用できません。サービスプロバイダーにご連絡ください" + +msgid "IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE" +msgstr "SIMカードの言語を読み込めません" + +msgid "IDS_IDLE_BODY_WRONG_PASSWORD" +msgstr "不正なパスワード" + +msgid "IDS_IDLE_BUTTON_DIALER" +msgstr "アイドル状態" + +msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE" +msgstr "言語表示" + diff --git a/po/ko_KR.po b/po/ko_KR.po new file mode 100755 index 0000000..24f9fc6 --- /dev/null +++ b/po/ko_KR.po @@ -0,0 +1,111 @@ +msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN" +msgstr "새 PIN 확인" + +msgid "IDS_IDLE_BODY_PASSWORD_EMPTY" +msgstr "비밀번호를 입력하세요" + +msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED" +msgstr "%d~%d자리를 입력하세요" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT" +msgstr "PIN이 바르지 않습니다. 재입력 기회가 1회 남았습니다" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT" +msgstr "PIN이 바르지 않습니다. 재입력 기회가 %d번 남았습니다" + +msgid "IDS_IDLE_BODY_NEW_PIN" +msgstr "새 PIN" + +msgid "IDS_IDLE_BODY_PIN" +msgstr "PIN" + +msgid "IDS_IDLE_BODY_PUK" +msgstr "PUK" + +msgid "IDS_IDLE_POP_PIN_BLOCKED" +msgstr "PIN이 잠겼습니다" + +msgid "IDS_IDLE_POP_PIN_UNBLOCKED" +msgstr "PIN 잠금이 해제되었습니다" + +msgid "IDS_IDLE_BUTTON_CANCEL" +msgstr "취소" + +msgid "IDS_IDLE_BODY_AUTOMATIC" +msgstr "자동" + +msgid "IDS_IDLE_HEADER_NETWORK_LOCK" +msgstr "네트워크 잠금" + +msgid "IDS_IDLE_HEADER_PHONE_LOCK" +msgstr "휴대폰 잠금" + +msgid "IDS_IDLE_HEADER_PIN_LOCK" +msgstr "PIN 잠금" + +msgid "IDS_IDLE_HEADER_PUK_LOCK" +msgstr "PUK 잠금" + +msgid "IDS_IDLE_HEADER_SIM_BLOCKED" +msgstr "SIM이 잠겼습니다" + +msgid "IDS_IDLE_HEADER_SIM_LOCK" +msgstr "SIM 잠금" + +msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT" +msgstr "재입력 기회가 1번 남았습니다" + +msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "법인 잠금이 실행되어 있습니다. 제어키를 입력하세요" + +msgid "IDS_IDLE_BODY_ENTER_NEW_PIN" +msgstr "새 PIN을 입력하세요" + +msgid "IDS_IDLE_BODY_ENTER_PIN" +msgstr "PIN을 입력하세요" + +msgid "IDS_IDLE_BODY_ENTER_PUK" +msgstr "PUK을 입력하세요" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN" +msgstr "PIN이 바르지 않습니다" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN" +msgstr "PIN이 바르지 않습니다. 다시 입력하세요" + +msgid "IDS_IDLE_BODY_INCORRECT_PUK" +msgstr "PUK이 바르지 않습니다" + +msgid "IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED" +msgstr "지원되지 않는 언어입니다" + +msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "네트워크 잠금이 실행되어 있습니다. 제어키를 입력하세요" + +msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "네트워크 서브셋 잠금이 실행되어 있습니다. 제어키를 입력하세요" + +msgid "IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG" +msgstr "비밀번호는 4자리보다 길어야 합니다" + +msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT" +msgstr "재입력 기회가 %d회 남았습니다" + +msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "서비스 사업자 잠금이 실행되어 있습니다. 제어키를 입력하세요" + +msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER" +msgstr "SIM 카드를 사용할 수 없습니다. 서비스 사업자에게 문의하세요" + +msgid "IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE" +msgstr "SIM 카드 언어를 읽을 수 없습니다" + +msgid "IDS_IDLE_BODY_WRONG_PASSWORD" +msgstr "비밀번호가 바르지 않습니다" + +msgid "IDS_IDLE_BUTTON_DIALER" +msgstr "다이얼" + +msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE" +msgstr "언어 선택" + diff --git a/po/nl_NL.po b/po/nl_NL.po new file mode 100755 index 0000000..7c04e4c --- /dev/null +++ b/po/nl_NL.po @@ -0,0 +1,111 @@ +msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN" +msgstr "Bevestig nieuwe PIN" + +msgid "IDS_IDLE_BODY_PASSWORD_EMPTY" +msgstr "Wachtwoord leeg" + +msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED" +msgstr "%d tot %d cijfers vereist" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT" +msgstr "Onjuiste PIN. 1 poging over" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT" +msgstr "Onjuiste PIN. %d pogingen over" + +msgid "IDS_IDLE_BODY_NEW_PIN" +msgstr "Nieuwe PIN" + +msgid "IDS_IDLE_BODY_PIN" +msgstr "Geef PIN-code in" + +msgid "IDS_IDLE_BODY_PUK" +msgstr "PUK" + +msgid "IDS_IDLE_POP_PIN_BLOCKED" +msgstr "PIN geblokkeerd" + +msgid "IDS_IDLE_POP_PIN_UNBLOCKED" +msgstr "PIN gedeblokkeerd" + +msgid "IDS_IDLE_BUTTON_CANCEL" +msgstr "Annuleer" + +msgid "IDS_IDLE_BODY_AUTOMATIC" +msgstr "Automatisch" + +msgid "IDS_IDLE_HEADER_NETWORK_LOCK" +msgstr "Netwerkblokkering" + +msgid "IDS_IDLE_HEADER_PHONE_LOCK" +msgstr "Telefoonblokkering" + +msgid "IDS_IDLE_HEADER_PIN_LOCK" +msgstr "PIN-blokkering" + +msgid "IDS_IDLE_HEADER_PUK_LOCK" +msgstr "PUK-blokkering" + +msgid "IDS_IDLE_HEADER_SIM_BLOCKED" +msgstr "SIM geblokkeerd" + +msgid "IDS_IDLE_HEADER_SIM_LOCK" +msgstr "SIM-blokkering" + +msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT" +msgstr "1 poging over" + +msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Bedrijfsaanpassing ingeschakeld. Druk op Ctrl" + +msgid "IDS_IDLE_BODY_ENTER_NEW_PIN" +msgstr "Geef nieuwe PIN in" + +msgid "IDS_IDLE_BODY_ENTER_PIN" +msgstr "Geef PIN in" + +msgid "IDS_IDLE_BODY_ENTER_PUK" +msgstr "Geef PUK-code in" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN" +msgstr "Onjuiste PIN" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN" +msgstr "PIN onjuist.\nProbeer het opnieuw" + +msgid "IDS_IDLE_BODY_INCORRECT_PUK" +msgstr "Onjuiste PUK" + +msgid "IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED" +msgstr "Taal niet ondersteund" + +msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Netwerkaanpassing ingeschakeld. Druk op Ctrl" + +msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Aanpassing netwerksubset ingeschakeld. Druk op Ctrl" + +msgid "IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG" +msgstr "Wachtwoord moet uit 4 cijfers bestaan" + +msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT" +msgstr "%d pogingen over" + +msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Aanpassing serviceprovider ingeschakeld. Druk op Ctrl" + +msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER" +msgstr "SIM-kaart niet beschikbaar. Neem contact op met de serviceprovider" + +msgid "IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE" +msgstr "Kan taal van SIM-kaart niet lezen" + +msgid "IDS_IDLE_BODY_WRONG_PASSWORD" +msgstr "Wachtwoord onjuist" + +msgid "IDS_IDLE_BUTTON_DIALER" +msgstr "Kiezer" + +msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE" +msgstr "Display taal" + diff --git a/po/pt_PT.po b/po/pt_PT.po new file mode 100755 index 0000000..128cd4a --- /dev/null +++ b/po/pt_PT.po @@ -0,0 +1,111 @@ +msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN" +msgstr "Confirmar novo PIN" + +msgid "IDS_IDLE_BODY_PASSWORD_EMPTY" +msgstr "Palavra-passe vazia" + +msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED" +msgstr "São necessários %d a %d dígitos" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT" +msgstr "PIN incorrecto. Resta 1 tentativa" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT" +msgstr "PIN incorrecto. Restam %d tentativas" + +msgid "IDS_IDLE_BODY_NEW_PIN" +msgstr "Novo PIN" + +msgid "IDS_IDLE_BODY_PIN" +msgstr "PIN" + +msgid "IDS_IDLE_BODY_PUK" +msgstr "PUK" + +msgid "IDS_IDLE_POP_PIN_BLOCKED" +msgstr "PIN bloqueado" + +msgid "IDS_IDLE_POP_PIN_UNBLOCKED" +msgstr "PIN desbloqueado" + +msgid "IDS_IDLE_BUTTON_CANCEL" +msgstr "Cancelar" + +msgid "IDS_IDLE_BODY_AUTOMATIC" +msgstr "Automático" + +msgid "IDS_IDLE_HEADER_NETWORK_LOCK" +msgstr "Bloqueio de rede efectuado" + +msgid "IDS_IDLE_HEADER_PHONE_LOCK" +msgstr "Bloqueio do telefone" + +msgid "IDS_IDLE_HEADER_PIN_LOCK" +msgstr "Protecção por PIN" + +msgid "IDS_IDLE_HEADER_PUK_LOCK" +msgstr "Bloqueio do PUK" + +msgid "IDS_IDLE_HEADER_SIM_BLOCKED" +msgstr "SIM bloqueado" + +msgid "IDS_IDLE_HEADER_SIM_LOCK" +msgstr "Bloqueio do SIM" + +msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT" +msgstr "Resta 1 tentativa" + +msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Personalização empresarial activada. Prima a tecla de controlo" + +msgid "IDS_IDLE_BODY_ENTER_NEW_PIN" +msgstr "Introduzir novo PIN" + +msgid "IDS_IDLE_BODY_ENTER_PIN" +msgstr "Introduzir PIN" + +msgid "IDS_IDLE_BODY_ENTER_PUK" +msgstr "Introduzir PUK" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN" +msgstr "PIN incorrecto" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN" +msgstr "PIN incorrecto.\nTente novamente" + +msgid "IDS_IDLE_BODY_INCORRECT_PUK" +msgstr "PUK incorrecto" + +msgid "IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED" +msgstr "Idioma não suportado" + +msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Personalização de rede activada. Prima a tecla de controlo" + +msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Personalização de subconjunto de rede activada. Prima a tecla de controlo" + +msgid "IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG" +msgstr "A palavra-passe deve ter 4 dígitos" + +msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT" +msgstr "%d tentativas restantes" + +msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Personalização do fornecedor de serviços activada. Prima a tecla de controlo" + +msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER" +msgstr "Cartão SIM indisponível. Contacte o fornecedor de serviços" + +msgid "IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE" +msgstr "Impossível ler idioma do cartão SIM" + +msgid "IDS_IDLE_BODY_WRONG_PASSWORD" +msgstr "Palavra-passe incorrecta" + +msgid "IDS_IDLE_BUTTON_DIALER" +msgstr "Marcador" + +msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE" +msgstr "Idioma de apresentação" + diff --git a/po/pwlock.pot b/po/pwlock.pot new file mode 100755 index 0000000..2d9c7e9 --- /dev/null +++ b/po/pwlock.pot @@ -0,0 +1,143 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2010-10-19 19:56+0900\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: pwlock.c:81 +msgid "Enter password" +msgstr "" + +#: pwlock.c:82 +msgid "Enter PIN" +msgstr "" + +#: pwlock.c:83 +msgid "Enter New PIN" +msgstr "" + +#: pwlock.c:84 +msgid "Retype PIN" +msgstr "" + +#: pwlock.c:85 +msgid "Enter PUK" +msgstr "" + +#: pwlock.c:86 +msgid "Incorrect PIN" +msgstr "" + +#: pwlock.c:87 +msgid "Incorrect PUK" +msgstr "" + +#: pwlock.c:88 +#, c-format +msgid "%d attempt(s) left" +msgstr "" + +#: pwlock.c:89 +msgid "Done" +msgstr "" + +#: pwlock.c:90 +msgid "Dialer" +msgstr "" + +#: pwlock.c:91 +msgid "Wrong password" +msgstr "" + +#: pwlock.c:92 +msgid "PIN code not matched" +msgstr "" + +#: pwlock.c:93 +msgid "Display language" +msgstr "" + +#: pwlock.c:94 +msgid "Set" +msgstr "" + +#: pwlock.c:95 +msgid "Cancel" +msgstr "" + +#: pwlock.c:96 +msgid "Get SIM language failed" +msgstr "" + +#: pwlock.c:97 +#, c-format +msgid "Unsupported language: %s" +msgstr "" + +#: pwlock.c:98 +msgid "SIM unavailable. Please contact your service provider." +msgstr "" + +#: pwlock.c:99 +msgid "Enter SIM password" +msgstr "" + +#: pwlock.c:100 +msgid "Network Personalisation is on. Please enter the control key" +msgstr "" + +#: pwlock.c:101 +msgid "Network Subset Personalisation is on. Please enter the control key" +msgstr "" + +#: pwlock.c:102 +msgid "Service Provider Personalisation is on. Please enter the control key" +msgstr "" + +#: pwlock.c:103 +msgid "Coporate Personalisation is on. Please enter the control key" +msgstr "" + +#: pwlock.c:104 +msgid "Password must be 4 digits long" +msgstr "" + +#: ui.c:46 +msgid "Phone lock" +msgstr "" + +#: ui.c:47 +msgid "PIN lock" +msgstr "" + +#: ui.c:48 ui.c:49 ui.c:50 +msgid "PUK lock" +msgstr "" + +#: ui.c:51 +msgid "Phone blocked" +msgstr "" + +#: ui.c:52 +msgid "SIM lock" +msgstr "" + +#: ui.c:53 ui.c:54 ui.c:55 ui.c:56 +msgid "Network lock" +msgstr "" + +#: langs.c:20 +msgid "Automatic" +msgstr "" diff --git a/po/ru_RU.po b/po/ru_RU.po new file mode 100755 index 0000000..625326c --- /dev/null +++ b/po/ru_RU.po @@ -0,0 +1,111 @@ +msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN" +msgstr "Подтвердите новый PIN" + +msgid "IDS_IDLE_BODY_PASSWORD_EMPTY" +msgstr "Пароль пустой" + +msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED" +msgstr "Требуется от %d до %d цифр" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT" +msgstr "Неправильный PIN-код. Осталась 1 попытка" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT" +msgstr "Неправильный PIN-код. Осталось попыток: %d" + +msgid "IDS_IDLE_BODY_NEW_PIN" +msgstr "Новый PIN-код" + +msgid "IDS_IDLE_BODY_PIN" +msgstr "PIN" + +msgid "IDS_IDLE_BODY_PUK" +msgstr "PUK" + +msgid "IDS_IDLE_POP_PIN_BLOCKED" +msgstr "PIN заблокирован" + +msgid "IDS_IDLE_POP_PIN_UNBLOCKED" +msgstr "PIN разблокирован" + +msgid "IDS_IDLE_BUTTON_CANCEL" +msgstr "Отмена" + +msgid "IDS_IDLE_BODY_AUTOMATIC" +msgstr "Автоматически" + +msgid "IDS_IDLE_HEADER_NETWORK_LOCK" +msgstr "Блокировка сети" + +msgid "IDS_IDLE_HEADER_PHONE_LOCK" +msgstr "Блокировка телефона" + +msgid "IDS_IDLE_HEADER_PIN_LOCK" +msgstr "Проверка PIN" + +msgid "IDS_IDLE_HEADER_PUK_LOCK" +msgstr "Блокировка PUK" + +msgid "IDS_IDLE_HEADER_SIM_BLOCKED" +msgstr "SIM-карта заблокирована" + +msgid "IDS_IDLE_HEADER_SIM_LOCK" +msgstr "Блокировка SIM" + +msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT" +msgstr "Осталась 1 попытка" + +msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Включена корпоративная настройка. Введите контрольный ключ" + +msgid "IDS_IDLE_BODY_ENTER_NEW_PIN" +msgstr "Введите новый PIN" + +msgid "IDS_IDLE_BODY_ENTER_PIN" +msgstr "Введите PIN" + +msgid "IDS_IDLE_BODY_ENTER_PUK" +msgstr "Введите PUК" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN" +msgstr "Неверный PIN" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN" +msgstr "Неправильный PIN.\nПовторите попытку" + +msgid "IDS_IDLE_BODY_INCORRECT_PUK" +msgstr "Неправильный PUK" + +msgid "IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED" +msgstr "Язык не поддерживается" + +msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Включена личная настройка сети. Введите контрольный ключ" + +msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Включена личная настройка подсети. Введите контрольный ключ" + +msgid "IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG" +msgstr "Пароль должен состоять из 4 цифр" + +msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT" +msgstr "Осталось попыток: %d" + +msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Включена личная настройка поставщика услуг. Введите контрольный ключ" + +msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER" +msgstr "SIM-карта недоступна. Обратитесь к поставщику услуг" + +msgid "IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE" +msgstr "Не удалось прочитать язык SIM-карты" + +msgid "IDS_IDLE_BODY_WRONG_PASSWORD" +msgstr "Неправильный пароль" + +msgid "IDS_IDLE_BUTTON_DIALER" +msgstr "Набор" + +msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE" +msgstr "Язык" + diff --git a/po/tr_TR.po b/po/tr_TR.po new file mode 100755 index 0000000..6751e5f --- /dev/null +++ b/po/tr_TR.po @@ -0,0 +1,111 @@ +msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN" +msgstr "Yeni PIN kodunu onaylayın" + +msgid "IDS_IDLE_BODY_PASSWORD_EMPTY" +msgstr "Parola boş" + +msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED" +msgstr "%d ila %d hane gerekli" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT" +msgstr "Hatalı PIN. 1 deneme hakkı kaldı" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT" +msgstr "Hatalı PIN. %d deneme hakkı kaldı" + +msgid "IDS_IDLE_BODY_NEW_PIN" +msgstr " Yeni PIN" + +msgid "IDS_IDLE_BODY_PIN" +msgstr "PIN" + +msgid "IDS_IDLE_BODY_PUK" +msgstr "PUK" + +msgid "IDS_IDLE_POP_PIN_BLOCKED" +msgstr "PIN bloke edildi" + +msgid "IDS_IDLE_POP_PIN_UNBLOCKED" +msgstr "PIN kilidi kaldırıldı" + +msgid "IDS_IDLE_BUTTON_CANCEL" +msgstr "İptal" + +msgid "IDS_IDLE_BODY_AUTOMATIC" +msgstr "Otomatik" + +msgid "IDS_IDLE_HEADER_NETWORK_LOCK" +msgstr "Şebeke kilidi" + +msgid "IDS_IDLE_HEADER_PHONE_LOCK" +msgstr "Telefon kilidi" + +msgid "IDS_IDLE_HEADER_PIN_LOCK" +msgstr "PIN kilidi" + +msgid "IDS_IDLE_HEADER_PUK_LOCK" +msgstr "PUK kilidi" + +msgid "IDS_IDLE_HEADER_SIM_BLOCKED" +msgstr "SIM bloke edildi" + +msgid "IDS_IDLE_HEADER_SIM_LOCK" +msgstr "SIM kilidi" + +msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT" +msgstr "1 deneme hakkı kaldı" + +msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Şirket kişiselleştirme açık. Kontrol kodunu girin" + +msgid "IDS_IDLE_BODY_ENTER_NEW_PIN" +msgstr "Yeni PIN kodunu girin" + +msgid "IDS_IDLE_BODY_ENTER_PIN" +msgstr "PIN'i girin" + +msgid "IDS_IDLE_BODY_ENTER_PUK" +msgstr "PUK kodunu girin" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN" +msgstr "Yanlış PIN" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN" +msgstr "Hatalı PIN.\nLütfen tekrar deneyin" + +msgid "IDS_IDLE_BODY_INCORRECT_PUK" +msgstr "Yanlış PUK" + +msgid "IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED" +msgstr "Dil desteklenmiyor" + +msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Ağ kişiselleştirme açık. Kontrol kodunu girin" + +msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Ağ altkümesi kişiselleştirme açık. Kontrol kodunu girin" + +msgid "IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG" +msgstr "Şifre 4 basamaklı olmalıdır" + +msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT" +msgstr "%d deneme kaldı" + +msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "Servis sağlayıcı kişiselleştirme açık. Kontrol kodunu girin" + +msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER" +msgstr "SIM kartı kullanılamıyor. Servis sağlayıcınıza başvurun" + +msgid "IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE" +msgstr "SIM kartı dili okunamıyor" + +msgid "IDS_IDLE_BODY_WRONG_PASSWORD" +msgstr "Yanlış şifre" + +msgid "IDS_IDLE_BUTTON_DIALER" +msgstr "Arayıcı" + +msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE" +msgstr "Ekran dili" + diff --git a/po/update-po.sh b/po/update-po.sh new file mode 100755 index 0000000..a0a91fb --- /dev/null +++ b/po/update-po.sh @@ -0,0 +1,60 @@ +#!/bin/sh + +PACKAGE=pwlock +SRCROOT=.. +POTFILES=POTFILES.in + +#ALL_LINGUAS= am az be ca cs da de el en_CA en_GB es et fi fr hr hu it ja ko lv mk ml ms nb ne nl pa pl pt pt_BR ru rw sk sl sr sr@Latn sv ta tr uk vi zh_CN zh_TW +ALL_LINGUAS="en_US en_GB ja ko zh_CN" + +XGETTEXT=/usr/bin/xgettext +MSGMERGE=/usr/bin/msgmerge + +echo -n "Make ${PACKAGE}.pot " +if [ ! -e $POTFILES ] ; then + echo "$POTFILES not found" + exit 1 +fi + +$XGETTEXT --default-domain=${PACKAGE} --directory=${SRCROOT} \ + --add-comments --keyword=_ --keyword=N_ --files-from=$POTFILES +if [ $? -ne 0 ]; then + echo "xgettext error" + exit 1 +fi + +if [ ! -f ${PACKAGE}.po ]; then + echo "No such file: ${PACKAGE}.po" + exit 1 +fi + +rm -f ${PACKAGE}.pot && mv ${PACKAGE}.po ${PACKAGE}.pot +echo "done" + +for LANG in $ALL_LINGUAS; do + echo "$LANG : " + + if [ ! -e $LANG.po ] ; then + sed 's/CHARSET/UTF-8/g' ${PACKAGE}.pot > ${LANG}.po + echo "${LANG}.po created" + else + if $MSGMERGE ${LANG}.po ${PACKAGE}.pot -o ${LANG}.new.po ; then + if cmp ${LANG}.po ${LANG}.new.po > /dev/null 2>&1; then + rm -f ${LANG}.new.po + else + if mv -f ${LANG}.new.po ${LANG}.po; then + echo "" + else + echo "msgmerge for $LANG.po failed: cannot move $LANG.new.po to $LANG.po" 1>&2 + rm -f ${LANG}.new.po + exit 1 + fi + fi + else + echo "msgmerge for $LANG failed!" + rm -f ${LANG}.new.po + fi + fi + echo "" +done + diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100755 index 0000000..7e48c58 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,111 @@ +msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN" +msgstr "确认新 PIN" + +msgid "IDS_IDLE_BODY_PASSWORD_EMPTY" +msgstr "密码为空" + +msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED" +msgstr "需要 %d 到 %d 位数" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT" +msgstr "PIN 不正确。 剩余 1 次机会" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT" +msgstr "PIN 不正确。 还有 %d 次机会" + +msgid "IDS_IDLE_BODY_NEW_PIN" +msgstr "新PIN码" + +msgid "IDS_IDLE_BODY_PIN" +msgstr "PIN 码" + +msgid "IDS_IDLE_BODY_PUK" +msgstr "PUK" + +msgid "IDS_IDLE_POP_PIN_BLOCKED" +msgstr "PIN 码锁定" + +msgid "IDS_IDLE_POP_PIN_UNBLOCKED" +msgstr "PIN 码解锁" + +msgid "IDS_IDLE_BUTTON_CANCEL" +msgstr "取消" + +msgid "IDS_IDLE_BODY_AUTOMATIC" +msgstr "自动" + +msgid "IDS_IDLE_HEADER_NETWORK_LOCK" +msgstr "网络锁" + +msgid "IDS_IDLE_HEADER_PHONE_LOCK" +msgstr "手机锁" + +msgid "IDS_IDLE_HEADER_PIN_LOCK" +msgstr "PIN码锁" + +msgid "IDS_IDLE_HEADER_PUK_LOCK" +msgstr "PUK 锁" + +msgid "IDS_IDLE_HEADER_SIM_BLOCKED" +msgstr "SIM 卡已锁定" + +msgid "IDS_IDLE_HEADER_SIM_LOCK" +msgstr "SIM卡锁" + +msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT" +msgstr "还能尝试 1 次" + +msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "企业个人化启动。请输入控制密钥" + +msgid "IDS_IDLE_BODY_ENTER_NEW_PIN" +msgstr "输入新 PIN" + +msgid "IDS_IDLE_BODY_ENTER_PIN" +msgstr "输入PIN码" + +msgid "IDS_IDLE_BODY_ENTER_PUK" +msgstr "输入 PUK码" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN" +msgstr "错误的 PIN 码" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN" +msgstr "PIN 不正确。 请重试" + +msgid "IDS_IDLE_BODY_INCORRECT_PUK" +msgstr "错误的 PUK 码" + +msgid "IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED" +msgstr "不支持语言" + +msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "网络个人化启动。请输入控制密钥" + +msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "网络子集个人化启动。请输入控制密钥" + +msgid "IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG" +msgstr "密码必须是 4 位数" + +msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT" +msgstr "还有 %d 次机会" + +msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "服务提供商个人化启动。请输入控制密钥" + +msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER" +msgstr "SIM卡不可用。请联系服务提供商" + +msgid "IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE" +msgstr "无法读取SIM卡语言" + +msgid "IDS_IDLE_BODY_WRONG_PASSWORD" +msgstr "密码不符" + +msgid "IDS_IDLE_BUTTON_DIALER" +msgstr "拨号盘" + +msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE" +msgstr "显示语言" + diff --git a/po/zh_HK.po b/po/zh_HK.po new file mode 100755 index 0000000..db989f0 --- /dev/null +++ b/po/zh_HK.po @@ -0,0 +1,111 @@ +msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN" +msgstr "確認新 PIN 碼" + +msgid "IDS_IDLE_BODY_PASSWORD_EMPTY" +msgstr "密碼空白" + +msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED" +msgstr "需要 %d 到 %d 位數" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT" +msgstr "PIN 碼不正確。剩餘 1 次機會" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT" +msgstr "PIN 碼不正確。剩餘 %d 次機會" + +msgid "IDS_IDLE_BODY_NEW_PIN" +msgstr "新 PIN 碼" + +msgid "IDS_IDLE_BODY_PIN" +msgstr "PIN 碼" + +msgid "IDS_IDLE_BODY_PUK" +msgstr "PUK 碼" + +msgid "IDS_IDLE_POP_PIN_BLOCKED" +msgstr "PIN 碼已封鎖" + +msgid "IDS_IDLE_POP_PIN_UNBLOCKED" +msgstr "PIN 碼已解鎖" + +msgid "IDS_IDLE_BUTTON_CANCEL" +msgstr "取消" + +msgid "IDS_IDLE_BODY_AUTOMATIC" +msgstr "自動" + +msgid "IDS_IDLE_HEADER_NETWORK_LOCK" +msgstr "網絡鎖" + +msgid "IDS_IDLE_HEADER_PHONE_LOCK" +msgstr "手機鎖" + +msgid "IDS_IDLE_HEADER_PIN_LOCK" +msgstr "PIN 碼鎖" + +msgid "IDS_IDLE_HEADER_PUK_LOCK" +msgstr "PUK 碼鎖" + +msgid "IDS_IDLE_HEADER_SIM_BLOCKED" +msgstr "SIM 卡已封鎖" + +msgid "IDS_IDLE_HEADER_SIM_LOCK" +msgstr "SIM 卡鎖" + +msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT" +msgstr "剩餘1次機會" + +msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "公司個人化已開。輸入控制密碼" + +msgid "IDS_IDLE_BODY_ENTER_NEW_PIN" +msgstr "輸入新 PIN 碼" + +msgid "IDS_IDLE_BODY_ENTER_PIN" +msgstr "輸入 PIN 碼" + +msgid "IDS_IDLE_BODY_ENTER_PUK" +msgstr "輸入PUK碼" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN" +msgstr "PIN 碼不正確" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN" +msgstr "PIN 碼不正確。請重試" + +msgid "IDS_IDLE_BODY_INCORRECT_PUK" +msgstr "PUK 碼錯誤" + +msgid "IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED" +msgstr "語言不支援" + +msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "網絡個人化已開。輸入控制密碼" + +msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "網絡子集個人化已開。輸入控制密碼" + +msgid "IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG" +msgstr "密碼必須是 4 位數" + +msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT" +msgstr "剩餘 %d 次機會" + +msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "服務供應商個人化已開。輸入控制密碼" + +msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER" +msgstr "SIM 卡不可用。請聯絡服務供應商" + +msgid "IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE" +msgstr "無法讀取 SIM 卡語言" + +msgid "IDS_IDLE_BODY_WRONG_PASSWORD" +msgstr "密碼錯誤" + +msgid "IDS_IDLE_BUTTON_DIALER" +msgstr "撥出螢幕" + +msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE" +msgstr "顯示語言" + diff --git a/po/zh_TW.po b/po/zh_TW.po new file mode 100755 index 0000000..d4a544a --- /dev/null +++ b/po/zh_TW.po @@ -0,0 +1,111 @@ +msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN" +msgstr "確認新的 PIN" + +msgid "IDS_IDLE_BODY_PASSWORD_EMPTY" +msgstr "密碼為空" + +msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED" +msgstr "需要 %d 到 %d 位數" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT" +msgstr "PIN 不正確。還剩 1 次嘗試機會" + +msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT" +msgstr "PIN 不正確。剩餘 %d 次嘗試機會" + +msgid "IDS_IDLE_BODY_NEW_PIN" +msgstr "新 PIN" + +msgid "IDS_IDLE_BODY_PIN" +msgstr "PIN" + +msgid "IDS_IDLE_BODY_PUK" +msgstr "PUK" + +msgid "IDS_IDLE_POP_PIN_BLOCKED" +msgstr "PIN 已封鎖" + +msgid "IDS_IDLE_POP_PIN_UNBLOCKED" +msgstr "未封鎖 PIN" + +msgid "IDS_IDLE_BUTTON_CANCEL" +msgstr "取消" + +msgid "IDS_IDLE_BODY_AUTOMATIC" +msgstr "自動" + +msgid "IDS_IDLE_HEADER_NETWORK_LOCK" +msgstr "網路鎖定" + +msgid "IDS_IDLE_HEADER_PHONE_LOCK" +msgstr "手機鎖" + +msgid "IDS_IDLE_HEADER_PIN_LOCK" +msgstr "PIN 鎖" + +msgid "IDS_IDLE_HEADER_PUK_LOCK" +msgstr "PUK 鎖" + +msgid "IDS_IDLE_HEADER_SIM_BLOCKED" +msgstr "SIM 卡已封鎖" + +msgid "IDS_IDLE_HEADER_SIM_LOCK" +msgstr "SIM 卡鎖" + +msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT" +msgstr "剩下一次機會" + +msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "開啟企業個性化,請輸入控制碼" + +msgid "IDS_IDLE_BODY_ENTER_NEW_PIN" +msgstr "輸入新的 PIN" + +msgid "IDS_IDLE_BODY_ENTER_PIN" +msgstr "輸入 PIN" + +msgid "IDS_IDLE_BODY_ENTER_PUK" +msgstr "輸入 PUK" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN" +msgstr "PIN 不正確" + +msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN" +msgstr "PIN 不正確。請重試" + +msgid "IDS_IDLE_BODY_INCORRECT_PUK" +msgstr "PUK 不正確" + +msgid "IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED" +msgstr "不支持的語言" + +msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "開啟網路個性化,請輸入控制碼" + +msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "開啟網路子遮照個性化,請輸入控制碼" + +msgid "IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG" +msgstr "密碼長度必須是 4 位數字" + +msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT" +msgstr "剩餘 %d 次嘗試機會" + +msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY" +msgstr "開啟系統服務商個性化,請輸入控制碼" + +msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER" +msgstr "SIM卡無法使用。請與您的系統服務商聯絡" + +msgid "IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE" +msgstr "無法讀取SIM卡語言" + +msgid "IDS_IDLE_BODY_WRONG_PASSWORD" +msgstr "密碼錯誤" + +msgid "IDS_IDLE_BUTTON_DIALER" +msgstr "撥號程式" + +msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE" +msgstr "顯示語言" + diff --git a/src/pwlock.c b/src/pwlock.c new file mode 100755 index 0000000..462805f --- /dev/null +++ b/src/pwlock.c @@ -0,0 +1,1005 @@ +/* + * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved + * + * This file is part of <pwlock> + * Written by <Seungtaek Chung> <seungtaek.chung@samsung.com>, <Mi-Ju Lee> <miju52.lee@samsung.com>, <Xi Zhichan> <zhichan.xi@samsung.com> + * + * PROPRIETARY/CONFIDENTIAL + * + * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information"). + * You shall not disclose such Confidential Information and shall use it only in accordance + * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS. + * SAMSUNG make no representations or warranties about the suitability of the software, + * either express or implied, including but not limited to the implied warranties of merchantability, + * fitness for a particular purpose, or non-infringement. + * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using, + * modifying or distributing this software or its derivatives. + * + */ + +#include <stdio.h> +#include <appcore-efl.h> +#include <Ecore_X.h> +#include <ITapiSim.h> + +#include <vconf.h> +#include <utilX.h> +#include <ui-gadget.h> + +#include "pwlock.h" +#include "util.h" +#include "ui.h" + +#define _ST_START _ST_FIRST +#define HOME_KEY KEY_SELECT +#define BACK_KEY KEY_END + +#define PWLOCK_FIRST_BOOT "db/setting/pwlock_boot" +#define MENUSCREEN_PKG_NAME "db/menuscreen/pkgname" +#define LIVE_MAGAZINE_START "memory/startapps/sequence" +#define TIMEZONE_CITY_NAME "db/setting/cityname_id" +#define TIMEZONE_INFO_PATH "/usr/share/zoneinfo/" +#define TIMEZONE_INFO_FILE TIMEZONE_INFO_PATH"zone.tab" + +#define MODEM_ARM "/boot/moden.bin" +#define MODEM_X86 "/usr/bin/vmodem_x86" + +struct state { + int (*_do) (struct appdata * ad); +}; + +static int do_ST_FIRST(struct appdata *ad); +static int do_ST_TAPI_INIT(struct appdata *ad); +static int do_ST_SIM(struct appdata *ad); +static int do_ST_SIM_PINCNF(struct appdata *ad); +static int do_ST_SIM_PUKCNF(struct appdata *ad); +static int do_ST_SIM_LOCKCNF(struct appdata *ad); +static int do_ST_NETWORK_LOCKCNF(struct appdata *ad); +static int do_ST_EXIT(struct appdata *ad); +static int do_ST_LANG(struct appdata *ad); +static int do_ST_TIME(struct appdata *ad); +static int do_ST_KEYBOARD(struct appdata *ad); +static void set_pwlock_unlock_state(struct appdata *ad); +static void set_pwlock_lock_state(struct appdata *ad); +static Eina_Bool timer_do(void *data); +static void set_default_timezone(void *data); + +static struct state states[_ST_MAX] = { + {do_ST_FIRST,}, + {do_ST_TAPI_INIT,}, + {do_ST_SIM,}, + {do_ST_SIM_PINCNF,}, + {do_ST_SIM_PUKCNF,}, + {do_ST_SIM_LOCKCNF,}, + {do_ST_NETWORK_LOCKCNF,}, + {do_ST_EXIT,}, + {do_ST_LANG,}, + {do_ST_TIME,}, + {do_ST_KEYBOARD,}, +}; + +static inline void trans(struct appdata *ad, int state) +{ + _DBG("trans state %d --> state %d", ad->state, state); + ad->state = state; + +} + +static void set_default_timezone(void *data) +{ + struct appdata *ad = (struct appdata *)data; + char *city_name = NULL; + FILE *fp = NULL; + char tmp[256] = { 0 }; + char buf1[256] = { 0 }; + char buf2[256] = { 0 }; + char buf3[256] = { 0 }; + char timezone_path[256] = { 0 }; + _DBG("%s", __func__); + + if (ad == NULL) { + return; + } + + city_name = vconf_get_str(TIMEZONE_CITY_NAME); + _DBG("city_name = %s", city_name); + + fp = fopen(TIMEZONE_INFO_FILE, "r"); + + while (fp != NULL && fgets(tmp, sizeof(tmp), fp) != NULL) { + if (strstr(tmp, city_name)) { + sscanf(tmp, "%s\t%s\t%s", buf1, buf2, buf3); + snprintf(timezone_path, 256, TIMEZONE_INFO_PATH "%s", + buf3); + } + } + + if (fp != NULL) { + fclose(fp); + } + if (city_name != NULL) { + free(city_name); + city_name = NULL; + } + _DBG("timezone_path = %s", timezone_path); + sysman_set_timezone(timezone_path); +} + +static void _sim_retry(struct appdata *ad, int retry) +{ + char buf[256]; + int len = -1; + + _DBG("%s", __func__); + + if (retry == 0) { + trans(ad, _ST_SIM); + do_state(ad); + return; + } + + if (retry == 1) { + len = + g_strlcpy(buf, + pwlock_get_string(IDS_IDLE_BODY_1_ATTEMPT_LEFT), + sizeof(buf)); + if (len >= sizeof(buf)) { + return; + } + } else { + len = + snprintf(buf, sizeof(buf), + pwlock_get_string(IDS_IDLE_BODY_PD_ATTEMPTS_LEFT), + retry); + if (len == -1) { + return; + } else if (len > 0) { + buf[len] = '\0'; + } + } + + show_popup(ad, buf, EINA_TRUE); + clear_entry(ad); + + if (ad->state == _ST_SIM_PUKCNF) { + ecore_timer_add(3, show_puk_do, ad); + } +} + +static void _sim_retry_no_cnt(struct appdata *ad) +{ + _DBG("%s", __func__); + + show_msg(ad, IDS_IDLE_BODY_WRONG_PASSWORD); + + clear_entry(ad); +} + +static void _tapi_cb(struct tapi_info *i, struct appdata *ad) +{ + _DBG("%s, i->st:%d", __func__, i->st); + + switch (i->st) { + case SIM_REQUIRED_EVENT: + if ((ad->sim_status != 0) && (ad->sim_status == SIM_WAITING)) { + trans(ad, _ST_SIM); + do_state(ad); + } + break; + case SIM_OK: + trans(ad, _ST_SIM); + do_state(ad); + break; + case SIM_RETRY: + _sim_retry(ad, i->retry_cnt); + break; + case SIM_ERROR: + _ERR("SIM check error"); + trans(ad, _ST_EXIT); + show_msg(ad, IDS_IDLE_POP_SIM_CARD_ERROR); + ecore_timer_add(3, timer_do, ad); + break; + case SIM_REQ_PIN: + if (ad->state == _ST_SIM_PINCNF) { + _sim_retry(ad, i->retry_cnt); + } else { + trans(ad, _ST_SIM); + do_state(ad); + } + break; + case SIM_REQ_PUK: + if (ad->state == _ST_SIM_PUKCNF) { + _sim_retry(ad, i->retry_cnt); + } else { + show_msg(ad, IDS_IDLE_BODY_INCORRECT_PIN); + ecore_timer_add(3, show_puk_do, ad); + } + break; + case SIM_REQ_LOCK: + _sim_retry_no_cnt(ad); + break; + case SIM_REQ_NCK: + clear_entry(ad); + ad->sub_state = TAPI_SIM_PERS_NET; + trans(ad, _ST_NETWORK_LOCKCNF); + do_state(ad); + break; + case SIM_REQ_NSCK: + clear_entry(ad); + ad->sub_state = TAPI_SIM_PERS_NS; + trans(ad, _ST_NETWORK_LOCKCNF); + do_state(ad); + break; + case SIM_REQ_SPCK: + clear_entry(ad); + ad->sub_state = TAPI_SIM_PERS_SP; + trans(ad, _ST_NETWORK_LOCKCNF); + do_state(ad); + break; + case SIM_REQ_CCK: + clear_entry(ad); + ad->sub_state = TAPI_SIM_PERS_CP; + trans(ad, _ST_NETWORK_LOCKCNF); + do_state(ad); + break; + + default: + break; + } +} + +static void tapi_cb(struct tapi_info *i, void *data) +{ + struct appdata *ad = data; + + _DBG("%s, ad->state:%d", __func__, ad->state); + + _tapi_cb(i, ad); + + return; +} + +static int do_ST_FIRST(struct appdata *ad) +{ + int r = 0; + int first = 0; + + _DBG("%s", __func__); + + r = vconf_get_bool(PWLOCK_FIRST_BOOT, &first); + _DBG("vconf get %s, result:%d, get_value:%d", PWLOCK_FIRST_BOOT, r, + first); + if ((r == 0 && first == 0) || (ad->running_status > 0)) { + _DBG("Not first booting time"); + ad->first_boot = 0; + trans(ad, _ST_TAPI_INIT); + } else { + _DBG("First booting time"); + vconf_set_bool(PWLOCK_FIRST_BOOT, 0); + ad->first_boot = 1; + trans(ad, _ST_LANG); + set_default_timezone(ad); + } + vconf_set_int(LIVE_MAGAZINE_START, 1); + return ECORE_CALLBACK_RENEW; +} + +static Eina_Bool timer_do(void *data) +{ + do_state(data); + return ECORE_CALLBACK_CANCEL; +} + +static void set_pwlock_unlock_state(struct appdata *ad) +{ + if (ad->running_status > 0) + vconf_set_int(VCONFKEY_PWLOCK_STATE, + VCONFKEY_PWLOCK_RUNNING_UNLOCK); + else + vconf_set_int(VCONFKEY_PWLOCK_STATE, + VCONFKEY_PWLOCK_BOOTING_UNLOCK); +} + +static void set_pwlock_lock_state(struct appdata *ad) +{ + if (ad->running_status > 0) + vconf_set_int(VCONFKEY_PWLOCK_STATE, + VCONFKEY_PWLOCK_RUNNING_LOCK); + else + vconf_set_int(VCONFKEY_PWLOCK_STATE, + VCONFKEY_PWLOCK_BOOTING_LOCK); +} + +static void vconf_call_state_changed_cb(keynode_t * node, void *data) +{ + int api_ret = 0; + int vconf_val = 0; + struct appdata *ad = data; + + _DBG("%s", __func__); + + api_ret = vconf_get_int(VCONFKEY_CALL_STATE, &vconf_val); + if (api_ret != 0) { + _DBG("fail to get vconf key %s value", VCONFKEY_CALL_STATE); + } else { + if (vconf_val == VCONFKEY_CALL_OFF) { + _DBG("call off state.."); + set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION); + } else { + _DBG("call on state.."); + set_win_prop(ad, ECORE_X_WINDOW_TYPE_NORMAL); + } + } + return; +} + +static void register_vconf_call_state_changed(struct appdata *ad) +{ + _DBG("%s", __func__); + if (vconf_notify_key_changed + (VCONFKEY_CALL_STATE, vconf_call_state_changed_cb, ad) != 0) { + _DBG("Fail to register"); + } +} + +void vconf_tapi_ready_changed_cb(keynode_t * node, void *data) +{ + int api_ret = 0; + int vconf_val = 0; + struct appdata *ad = data; + + _DBG("vconf_tapi_ready_changed_cb..!!"); + + api_ret = vconf_get_int(VCONFKEY_TELEPHONY_TAPI_STATE, &vconf_val); + if (api_ret != 0) { + _DBG("fail to get vconf key value"); + } else { + if (vconf_val == VCONFKEY_TELEPHONY_TAPI_STATE_NONE) { + _DBG("TAPI is not ready"); + } else { + _DBG("TAPI is ready"); + if (ad->pTimerId != NULL) { + if (ecore_timer_del(ad->pTimerId) == NULL) { + _DBG("FAIL to stop timer with pTimerId[%x]", (int)ad->pTimerId); + } else { + _DBG("SUCCESS to stop timer with pTimerId[%x]", (int)ad->pTimerId); + } + } + trans(ad, _ST_SIM); + do_state(ad); + } + } + return; +} + +void register_vconf_tapi_ready_changed(struct appdata *ad) +{ + _DBG("%s", __func__); + if (vconf_notify_key_changed + (VCONFKEY_TELEPHONY_TAPI_STATE, vconf_tapi_ready_changed_cb, + ad) != 0) { + _DBG("Fail to register"); + } +} + +Eina_Bool vconf_tapi_ready_expire_cb(void *pData) +{ + int api_ret = 0; + int vconf_val = 0; + struct appdata *ad = pData; + + _DBG("vconf_tapi_ready_expire_cb..!!"); + + api_ret = vconf_get_int(VCONFKEY_TELEPHONY_TAPI_STATE, &vconf_val); + if (api_ret != 0) { + _DBG("fail to get vconf key value"); + } else { + if (vconf_val == VCONFKEY_TELEPHONY_TAPI_STATE_NONE) { + _DBG("TAPI is not ready, pwlock exit"); + trans(ad, _ST_EXIT); + do_state(ad); + } else { + _DBG("TAPI is ready"); + trans(ad, _ST_SIM); + do_state(ad); + } + } + return ECORE_CALLBACK_CANCEL; +} + +static int do_ST_TAPI_INIT(struct appdata *ad) +{ + int r; + FILE *fd1; + FILE *fd2; + + _DBG("%s", __func__); + + fd1 = fopen(MODEM_ARM, "r"); + if (fd1 == NULL) { + _DBG("no modem in target..!!"); + fd2 = fopen(MODEM_X86, "r"); + if (fd2 == NULL) { + _DBG("no modem in x86..!!"); + if (ad->running_status == 0 && ad->first_boot + && ad->cancel_setup == 0) { + trans(ad, _ST_TIME); + } else { + trans(ad, _ST_EXIT); + } + return ECORE_CALLBACK_RENEW; + } else { + fclose(fd2); + } + } else { + fclose(fd1); + } + + _DBG("there is modem..!!"); + + ad->t = tapi_init(tapi_cb, ad); + if (ad->t == NULL) { + _ERR("TAPI init error"); + trans(ad, _ST_EXIT); + return ECORE_CALLBACK_RENEW; + } + + r = tapi_ready_check(); + _DBG("tapi_ready_check : %d", r); + + if (r == 0) { + ad->pTimerId = + ecore_timer_add(20, vconf_tapi_ready_expire_cb, ad); + register_vconf_tapi_ready_changed(ad); + r = ECORE_CALLBACK_CANCEL; + } else { + trans(ad, _ST_SIM); + r = ECORE_CALLBACK_RENEW; + } + + return r; +} + +static int do_ST_SIM(struct appdata *ad) +{ + int r; + int changed = 0; + + _DBG("%s", __func__); + + set_pwlock_unlock_state(ad); + set_pwlock_lock_state(ad); + ad->sim_status = tapi_check_sim(&changed); + ad->sim_changed = changed; + _DBG("ad->sim_status=%d, ad->sim_changed=%d, ad->first_boot=%d", + ad->sim_status, changed, ad->first_boot); + switch (ad->sim_status) { + case SIM_REQ_PIN: + pwlock_destroy(ad); + show_pin(ad); + trans(ad, _ST_SIM_PINCNF); + r = ECORE_CALLBACK_CANCEL; + break; + case SIM_REQ_PUK: + show_puk(ad); + trans(ad, _ST_SIM_PUKCNF); + r = ECORE_CALLBACK_CANCEL; + break; + case SIM_REQ_LOCK: + _DBG("ad->sim_status = %d", ad->sim_status); + if (ad->pin_changed == 1) { + r = ECORE_CALLBACK_CANCEL; + show_msg(ad, IDS_IDLE_POP_PIN_CHANGED); + } else { + show_sim_lock(ad); + } + trans(ad, _ST_SIM_LOCKCNF); + r = ECORE_CALLBACK_CANCEL; + break; + case SIM_REQ_NCK: + _DBG("ad->sim_status = %d", ad->sim_status); + if (ad->pin_changed == 1) { + show_msg(ad, IDS_IDLE_POP_PIN_CHANGED); + } else { + show_sim_lock(ad); + } + ad->sub_state = TAPI_SIM_PERS_NET; + trans(ad, _ST_NETWORK_LOCKCNF); + r = ECORE_CALLBACK_CANCEL; + break; + case SIM_REQ_NSCK: + _DBG("ad->sim_status = %d", ad->sim_status); + if (ad->pin_changed == 1) { + show_msg(ad, IDS_IDLE_POP_PIN_CHANGED); + } else { + show_sim_lock(ad); + } + ad->sub_state = TAPI_SIM_PERS_NS; + trans(ad, _ST_NETWORK_LOCKCNF); + r = ECORE_CALLBACK_CANCEL; + break; + case SIM_REQ_SPCK: + _DBG("ad->sim_status = %d", ad->sim_status); + if (ad->pin_changed == 1) { + show_msg(ad, IDS_IDLE_POP_PIN_CHANGED); + } else { + show_sim_lock(ad); + } + ad->sub_state = TAPI_SIM_PERS_SP; + trans(ad, _ST_NETWORK_LOCKCNF); + r = ECORE_CALLBACK_CANCEL; + break; + case SIM_REQ_CCK: + _DBG("ad->sim_status = %d", ad->sim_status); + if (ad->pin_changed == 1) { + show_msg(ad, IDS_IDLE_POP_PIN_CHANGED); + } else { + show_sim_lock(ad); + } + ad->sub_state = TAPI_SIM_PERS_CP; + trans(ad, _ST_NETWORK_LOCKCNF); + r = ECORE_CALLBACK_CANCEL; + break; + case SIM_OK: + if (ad->running_status == 0 && ad->first_boot && ad->cancel_setup == 0) { + trans(ad, _ST_TIME); + } else if (ad->running_status == 0 && ad->first_boot == 0 && changed) { + trans(ad, _ST_LANG); + } else { + trans(ad, _ST_EXIT); + } + if (ad->pin_changed == 1) { + r = ECORE_CALLBACK_CANCEL; + show_msg(ad, IDS_IDLE_POP_PIN_CHANGED); + ecore_timer_add(3, timer_do, ad); + ad->pin_changed = 0; + } else { + r = ECORE_CALLBACK_RENEW; + } + + break; + case SIM_WAITING: + r = ECORE_CALLBACK_CANCEL; + break; + case SIM_BLOCKED: + show_block(ad); + r = ECORE_CALLBACK_CANCEL; + break; + case SIM_RETRY: + ecore_timer_add(0.2, timer_do, ad); + r = ECORE_CALLBACK_CANCEL; + break; + case SIM_EMPTY: + if (ad->running_status == 0 && ad->first_boot + && ad->cancel_setup == 0) { + trans(ad, _ST_TIME); + } else { + trans(ad, _ST_EXIT); + } + r = ECORE_CALLBACK_RENEW; + break; + default: + _ERR("Unexpected sim state: %d", ad->sim_status); + trans(ad, _ST_EXIT); + r = ECORE_CALLBACK_RENEW; + break; + } + return r; +} + +static int do_ST_SIM_PINCNF(struct appdata *ad) +{ + int r; + + _DBG("%s", __func__); + + if (!ad->entry_str) { + _ERR("entry string is empty"); + return ECORE_CALLBACK_CANCEL; + } + + r = tapi_verify_pins(ad->entry_str); + if (r == -1) { + _ERR("verify pin error"); + trans(ad, _ST_EXIT); + return ECORE_CALLBACK_RENEW; + } + + return ECORE_CALLBACK_CANCEL; +} + +static int do_ST_SIM_PUKCNF(struct appdata *ad) +{ + int r; + + _DBG("%s", __func__); + + ad->pin_changed = 1; + + if (!ad->entry_str || !ad->pin_str) { + _ERR("entry string is empty"); + return ECORE_CALLBACK_CANCEL; + } + + r = tapi_verify_puks(ad->entry_str, ad->pin_str); + if (r == -1) { + _ERR("verify puk error"); + trans(ad, _ST_EXIT); + return ECORE_CALLBACK_RENEW; + } + + return ECORE_CALLBACK_CANCEL; +} + +static int do_ST_SIM_LOCKCNF(struct appdata *ad) +{ + int r; + + _DBG("%s", __func__); + + if (!ad->entry_str) { + _ERR("entry string is empty"); + return ECORE_CALLBACK_CANCEL; + } + + r = tapi_verify_lock(ad->entry_str); + if (r == -1) { + _ERR("verify pin error"); + trans(ad, _ST_EXIT); + return ECORE_CALLBACK_RENEW; + } + + return ECORE_CALLBACK_CANCEL; +} + +static int do_ST_NETWORK_LOCKCNF(struct appdata *ad) +{ + int r; + + _DBG("%s", __func__); + + if (!ad->entry_str) { + _ERR("entry string is empty"); + return ECORE_CALLBACK_CANCEL; + } + + r = tapi_disable_net_pers(ad->entry_str, ad->sub_state); + if (r == -1) { + _ERR("Disable network personalization failed"); + trans(ad, _ST_EXIT); + return ECORE_CALLBACK_RENEW; + } + + return ECORE_CALLBACK_CANCEL; +} + +static int do_ST_EXIT(struct appdata *ad) +{ + int r; + int locked; + + _DBG("%s", __func__); + + locked = 0; + r = vconf_get_int(LIVE_MAGAZINE_START, &locked); + _DBG("r = %d locked = %d", r, locked); + if ((r != 0) || (locked == 0)) { + _DBG("set %s to true", LIVE_MAGAZINE_START); + vconf_set_int(LIVE_MAGAZINE_START, 1); + } + elm_exit(); + return ECORE_CALLBACK_CANCEL; +} + +static int do_ST_LANG(struct appdata *ad) +{ + _DBG("%s", __func__); + + if (show_lang(ad)) + return ECORE_CALLBACK_CANCEL; + else + return ECORE_CALLBACK_RENEW; +} + +static int do_ST_TIME(struct appdata *ad) +{ + _DBG("%s", __func__); + + if (show_time(ad)) + return ECORE_CALLBACK_CANCEL; + else + return ECORE_CALLBACK_RENEW; +} + +static int do_ST_KEYBOARD(struct appdata *ad) +{ + _DBG("%s", __func__); + + if (show_keyboard_setting(ad)) + return ECORE_CALLBACK_CANCEL; + else + return ECORE_CALLBACK_RENEW; +} + +static Eina_Bool _do_state(void *data) +{ + int r; + struct appdata *ad = data; + + _DBG("%s, ad->state:%d", __func__, ad->state); + + if (ad->state < _ST_START || ad->state >= _ST_MAX) { + _ERR("Unknown state: %d", ad->state); + trans(ad, _ST_EXIT); + r = ECORE_CALLBACK_RENEW; + } else + r = states[ad->state]._do(ad); + + if (r == ECORE_CALLBACK_CANCEL) + ad->idler = NULL; + + return r; +} + +void do_state(struct appdata *ad) +{ + _DBG("%s", __func__); + if (ad->idler == NULL) + ad->idler = ecore_idler_add(_do_state, ad); +} + +void set_win_prop(struct appdata *ad, int type) +{ + Ecore_X_Window w; + + w = elm_win_xwindow_get(ad->win); + + if (type == ECORE_X_WINDOW_TYPE_NORMAL) { + ecore_x_netwm_window_type_set(w, ECORE_X_WINDOW_TYPE_NORMAL); + ad->win_type = 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_LOW); + ad->win_type = ECORE_X_WINDOW_TYPE_NOTIFICATION; + } +} + +static void set_key_grab(Evas_Object * win) +{ + Ecore_X_Window w; + + w = elm_win_xwindow_get(win); + + utilx_grab_key(ecore_x_display_get(), w, KEY_SELECT, EXCLUSIVE_GRAB); + utilx_grab_key(ecore_x_display_get(), w, KEY_CAMERA, TOP_POSITION_GRAB); +} + +static void pwlock_focus_out_cb(void *data, Evas_Object * obj, void *event_info) +{ + int pid = 0; + char buf[128]; + Ecore_X_Window x_win_focused; + struct appdata *ad = data; + + _DBG("%s", __func__); + + x_win_focused = ecore_x_window_focus_get(); + ecore_x_netwm_pid_get(x_win_focused, &pid); + if (aul_app_get_pkgname_bypid(pid, buf, sizeof(buf)) < 0) { + _DBG("no such pkg by pid %d\n", pid); + } else { + char *pkg_str; + _DBG("created pkgname = %s, pid = %d\n", buf, pid); + pkg_str = vconf_get_str(MENUSCREEN_PKG_NAME); + if ((pkg_str != NULL) + && !strncmp(pkg_str, buf, strlen(pkg_str))) { + _DBG("%s is on the pwlock.!!\n", pkg_str); + elm_win_raise(ad->win); + free(pkg_str); + pkg_str = NULL; + } else + if (!strncmp("org.tizen.live-magazine", buf, strlen(buf))) + { + _DBG("%s is on the pwlock.!!\n", buf); + elm_win_raise(ad->win); + } + } + +} + +static int _batt_cb(void *data) +{ + _ERR("System battry goes low"); + return 0; +} + +static Eina_Bool app_hardkey_up_cb(void *data, int type, void *event) +{ + struct appdata *ad = (struct appdata *)data; + Ecore_X_Window x_win; + Ecore_X_Window x_win_focused; + int val = -1; + + if (!ad) { + return 0; + } + + x_win = elm_win_xwindow_get(ad->win); + x_win_focused = ecore_x_window_focus_get(); + _DBG(" x_win = %x and x_win_focused = %x\n", x_win, x_win_focused); + + if (x_win != x_win_focused) { + return 0; + } + + Ecore_Event_Key *pKeyEvent = (Ecore_Event_Key *) event; + + _DBG("[%s]Key up : %s\n", __func__, pKeyEvent->keyname); + if ((!strcmp(pKeyEvent->keyname, HOME_KEY)) && (ad->state > _ST_EXIT)) { + _DBG("ad->ui_type=%d", ad->ui_type); + switch (ad->ui_type) { + case _UI_LANG: + case _UI_TIME: + case _UI_KEYBOARD: + { + if (vconf_get_int + (VCONFKEY_IDLE_LOCK_STATE, &val) < 0) { + _DBG("Cannot get VCONFKEY_IDLE_LOCK_STATE"); + return 0; + } + if (val == VCONFKEY_IDLE_UNLOCK) { + _DBG("unlocked..!!"); + show_popup(ad, + pwlock_get_string + (IDS_IDLE_BODY_DO_YOU_WANT_TO_SKIP_SETUPWIZARD), + EINA_FALSE); + } + } + break; + default: + return 0; + } + } else if (!strcmp(pKeyEvent->keyname, BACK_KEY)) { + _DBG("[%s] %d ad->ui_type: %d", __func__, __LINE__, + ad->ui_type); + switch (ad->ui_type) { + case _UI_DIALER: + ug_send_key_event(UG_KEY_EVENT_END); + ad->ui_type = ad->previous_ui_type; + break; + } + } + return 0; +} + +static int app_create(void *data) +{ + struct appdata *ad = data; + + _DBG("%s", __func__); + + ad->win = create_win(PACKAGE); + if (ad->win == NULL) { + _ERR("Create win error"); + return -1; + } + ecore_imf_init(); + set_key_grab(ad->win); + register_vconf_call_state_changed(ad); + set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION); + evas_object_smart_callback_add(ad->win, "focus,out", + pwlock_focus_out_cb, ad); + appcore_set_i18n(PACKAGE, LOCALEDIR); + appcore_set_event_callback(APPCORE_EVENT_LOW_BATTERY, _batt_cb, ad); + ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, app_hardkey_up_cb, ad); + + if (ad->navi) { + evas_object_del(ad->navi); + ad->navi = NULL; + if (ad->ly_main) { + evas_object_del(ad->ly_main); + ad->ly_main = NULL; + } + if (ad->entry_layout) { + evas_object_del(ad->entry_layout); + ad->entry_layout = NULL; + } + if (ad->entry_second_layout) { + evas_object_del(ad->entry_second_layout); + ad->entry_second_layout = NULL; + } + + } + + ad->state = _ST_FIRST; + do_state(ad); + + return 0; +} + +static int app_terminate(void *data) +{ + struct appdata *ad = data; + + _DBG("\n ===============> %s\n", __func__); + + set_pwlock_unlock_state(ad); + + if (ad->t) + tapi_exit(&ad->t); + + if (ad->win) { + utilx_ungrab_key(ecore_x_display_get(), + elm_win_xwindow_get(ad->win), KEY_SELECT); + utilx_ungrab_key(ecore_x_display_get(), + elm_win_xwindow_get(ad->win), KEY_CAMERA); + evas_object_del(ad->win); + } + if (ad->navi) { + evas_object_del(ad->navi); + ad->navi = NULL; + } + if (ad->ly_main) { + evas_object_del(ad->ly_main); + ad->ly_main = NULL; + } + if (ad->entry_layout) { + evas_object_del(ad->entry_layout); + ad->entry_layout = NULL; + } + if (ad->entry_second_layout) { + evas_object_del(ad->entry_second_layout); + ad->entry_second_layout = NULL; + } + if (ad->bg) { + evas_object_del(ad->bg); + ad->bg = NULL; + } + if (ad->idler) { + ecore_idler_del(ad->idler); + ad->idler = NULL; + } + remove_waiting_popup(ad); + ecore_imf_shutdown(); + return 0; +} + +static int app_reset(bundle * b, void *data) +{ + struct appdata *ad = data; + + _DBG("%s", __func__); + + if (ad->win) + elm_win_activate(ad->win); + + return 0; +} + +int main(int argc, char *argv[]) +{ + struct appdata ad; + struct appcore_ops ops = { + .create = app_create, + .terminate = app_terminate, + .reset = app_reset, + }; + + memset(&ad, 0x0, sizeof(struct appdata)); + + _DBG("\n\n========= pwlock is started..!! ===========\n"); + + if (argc > 1) { + _DBG("argv[1]:%s ", argv[1]); + ad.running_status = atoi(argv[1]); + } else { + ad.running_status = 0; + system("chmod 666 " LOGFILE); + } + + ops.data = &ad; + + return appcore_efl_main(PACKAGE, &argc, &argv, &ops); +} diff --git a/src/tapi.c b/src/tapi.c new file mode 100755 index 0000000..be1594f --- /dev/null +++ b/src/tapi.c @@ -0,0 +1,650 @@ +/* + * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved + * + * This file is part of <pwlock> + * Written by <Seungtaek Chung> <seungtaek.chung@samsung.com>, <Mi-Ju Lee> <miju52.lee@samsung.com>, <Xi Zhichan> <zhichan.xi@samsung.com> + * + * PROPRIETARY/CONFIDENTIAL + * + * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information"). + * You shall not disclose such Confidential Information and shall use it only in accordance + * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS. + * SAMSUNG make no representations or warranties about the suitability of the software, + * either express or implied, including but not limited to the implied warranties of merchantability, + * fitness for a particular purpose, or non-infringement. + * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using, + * modifying or distributing this software or its derivatives. + * + */ + +#include <stdio.h> + +#include <TapiEvent.h> +#include <ITapiSim.h> +#include <TapiCommon.h> +#include <vconf.h> + +#include "util.h" +#include "tapi.h" + +#ifndef PACKAGE_NAME +#define PACKAGE_NAME "org.tizen.pwlock" +#endif + +enum { + _L_UNSPEC = -1, + _L_AUTO, + _L_EN, + _L_DE, + _L_NL, + _L_ES, + _L_PT, + _L_EL, + _L_IT, + _L_FR, + _L_TR, + _L_KO, + _L_MAX, +}; + +static int _LP_L[] = { + TAPI_SIM_LP_GERMAN, _L_UNSPEC, + TAPI_SIM_LP_ENGLISH, _L_EN, + TAPI_SIM_LP_ITALIAN, _L_UNSPEC, + TAPI_SIM_LP_FRENCH, _L_UNSPEC, + TAPI_SIM_LP_SPANISH, _L_UNSPEC, + TAPI_SIM_LP_DUTCH, _L_UNSPEC, + TAPI_SIM_LP_SWEDISH, _L_UNSPEC, + TAPI_SIM_LP_DANISH, _L_UNSPEC, + TAPI_SIM_LP_PORTUGUESE, _L_UNSPEC, + TAPI_SIM_LP_FINNISH, _L_UNSPEC, + TAPI_SIM_LP_NORWEGIAN, _L_UNSPEC, + TAPI_SIM_LP_GREEK, _L_UNSPEC, + TAPI_SIM_LP_TURKISH, _L_UNSPEC, + TAPI_SIM_LP_HUNGARIAN, _L_UNSPEC, + TAPI_SIM_LP_POLISH, _L_UNSPEC, +}; + +struct tapi { + struct tapi_event *evt; + int evt_sz; + + void *cb_data; + void (*cb) (struct tapi_info *, void *); +}; + +struct tapi_event { + unsigned int sid; + int event; +}; + +static struct tapi_event tapi_events[] = { + {-1, TAPI_EVENT_POWER_SERVICE_READY_IND,}, + {-1, TAPI_EVENT_SIM_VERIFY_SEC_CNF,}, + {-1, TAPI_EVENT_SIM_VERIFY_PUK_CNF,}, + {-1, TAPI_EVENT_SIM_STATUS_IND,}, + {-1, TAPI_EVENT_SIM_DISABLE_PERS_CNF,}, +}; + +static void do_sim_status(const TelTapiEvent_t * evt, void *data) +{ + struct tapi *t = data; + struct tapi_info ti; + + _DBG("Sim status: 0x%x", evt->Status); + + memset(&ti, 0, sizeof(ti)); + + switch (evt->Status) { + case TAPI_SIM_STATUS_SIM_PIN_REQUIRED: + case TAPI_SIM_STATUS_SIM_PUK_REQUIRED: + case TAPI_SIM_STATUS_SIM_NCK_REQUIRED: + case TAPI_SIM_STATUS_SIM_NSCK_REQUIRED: + case TAPI_SIM_STATUS_SIM_SPCK_REQUIRED: + case TAPI_SIM_STATUS_SIM_CCK_REQUIRED: + case TAPI_SIM_STATUS_SIM_LOCK_REQUIRED: + ti.st = SIM_REQUIRED_EVENT; + break; + case TAPI_SIM_STATUS_CARD_ERROR: + ti.st = SIM_ERROR; + break; + default: + ti.st = SIM_OK; + break; + } + + if (evt->Status == TAPI_SIM_STATUS_SIM_INITIALIZING + && (*(TelSimCardType_t *) evt->pData != 0)) + _DBG("Card type: %d", *(TelSimCardType_t *) evt->pData); + + if (t->cb) + t->cb(&ti, t->cb_data); + +} + +static void do_sim_verify(const TelTapiEvent_t * evt, void *data) +{ + struct tapi *t = data; + struct tapi_info ti; + TelSimSecResult_t *res = (TelSimSecResult_t *) evt->pData; + + _DBG("Sim verify sec: 0x%x", evt->Status); + + memset(&ti, 0, sizeof(ti)); + + switch (evt->Status) { + case TAPI_SIM_OPERATION_TIMEOUT: + _DBG("\tTimeout"); + ti.st = SIM_ERROR; + break; + case TAPI_SIM_PIN_OPERATION_SUCCESS: + _DBG("\tType: %d", res->type); + ti.st = SIM_OK; + break; + case TAPI_SIM_PIN_REQUIRED: + _DBG("\tType: %d", res->type); + _DBG("\tRetry: %d", res->retry_count); + ti.st = SIM_REQ_PIN; + ti.retry_cnt = res->retry_count; + break; + case TAPI_SIM_PUK_REQUIRED: + _DBG("\tType: %d", res->type); + _DBG("\tRetry: %d", res->retry_count); + ti.st = SIM_REQ_PUK; + ti.retry_cnt = res->retry_count; + break; + case TAPI_SIM_LOCK_REQUIRED: + _DBG("\tType: %d", res->type); + _DBG("\tRetry: %d", res->retry_count); + ti.st = SIM_REQ_LOCK; + ti.retry_cnt = res->retry_count; + break; + case TAPI_SIM_NCK_REQUIRED: + _DBG("\tType: %d", res->type); + _DBG("\tRetry: %d", res->retry_count); + ti.st = SIM_REQ_NCK; + break; + case TAPI_SIM_NSCK_REQUIRED: + _DBG("\tType: %d", res->type); + _DBG("\tRetry: %d", res->retry_count); + ti.st = SIM_REQ_NSCK; + break; + case TAPI_SIM_SPCK_REQUIRED: + _DBG("\tType: %d", res->type); + _DBG("\tRetry: %d", res->retry_count); + ti.st = SIM_REQ_SPCK; + break; + case TAPI_SIM_CCK_REQUIRED: + _DBG("\tType: %d", res->type); + _DBG("\tRetry: %d", res->retry_count); + ti.st = SIM_REQ_CCK; + break; + default: + _DBG("\tType: %d", res->type); + _DBG("\tRetry: %d", res->retry_count); + if (res->type == TAPI_SIM_PTYPE_SIM) + ti.st = SIM_REQ_LOCK; + else + ti.st = SIM_RETRY; + ti.retry_cnt = res->retry_count; + break; + } + + _DBG("tapi_cb ti.st: %d", ti.st); + + if (t->cb) + t->cb(&ti, t->cb_data); +} + +static void do_sim_disable_pers(const TelTapiEvent_t * evt, void *data) +{ + struct tapi *t = data; + struct tapi_info ti; + TelSimSecResult_t *res = (TelSimSecResult_t *) evt->pData; + + _DBG("Sim disable PERS: 0x%x", evt->Status); + + memset(&ti, 0, sizeof(ti)); + switch (evt->Status) { + case TAPI_SIM_OPERATION_TIMEOUT: + _DBG("\tTimeout"); + ti.st = SIM_ERROR; + break; + case TAPI_SIM_PIN_OPERATION_SUCCESS: + _DBG("\tType: %d", res->type); + ti.st = SIM_OK; + break; + case TAPI_SIM_NCK_REQUIRED: + _DBG("\tType: %d", res->type); + _DBG("\tRetry: %d", res->retry_count); + ti.st = SIM_REQ_NCK; + break; + case TAPI_SIM_NSCK_REQUIRED: + _DBG("\tType: %d", res->type); + _DBG("\tRetry: %d", res->retry_count); + ti.st = SIM_REQ_NSCK; + break; + case TAPI_SIM_SPCK_REQUIRED: + _DBG("\tType: %d", res->type); + _DBG("\tRetry: %d", res->retry_count); + ti.st = SIM_REQ_SPCK; + break; + case TAPI_SIM_CCK_REQUIRED: + _DBG("\tType: %d", res->type); + _DBG("\tRetry: %d", res->retry_count); + ti.st = SIM_REQ_CCK; + break; + default: + _DBG("\tType: %d", res->type); + _DBG("\tRetry: %d", res->retry_count); + ti.st = SIM_REQ_LOCK; + break; + + } + + if (t->cb) + t->cb(&ti, t->cb_data); +} + +static void event_sim(const TelTapiEvent_t * evt, void *data) +{ + _DBG("TAPI EventType: %d", evt->EventType); + + switch (evt->EventType) { + case TAPI_EVENT_SIM_STATUS_IND: + do_sim_status(evt, data); + break; + case TAPI_EVENT_SIM_VERIFY_SEC_CNF: + case TAPI_EVENT_SIM_VERIFY_PUK_CNF: + do_sim_verify(evt, data); + break; + case TAPI_EVENT_SIM_DISABLE_PERS_CNF: + do_sim_disable_pers(evt, data); + break; + default: + _ERR("TAPI unhandle type: %d", evt->EventType); + break; + } +} + +static int event_cb(const TelTapiEvent_t * evt, void *data) +{ + _DBG("TAPI EventClass: %d", evt->EventClass); + + switch (evt->EventClass) { + case TAPI_EVENT_CLASS_SIM: + event_sim(evt, data); + break; + default: + _ERR("TAPI unregister event received: %d", evt->EventClass); + break; + } + return 0; +} + +static int _register_events(struct tapi *t) +{ + int r; + int i; + unsigned int sid; + + if (t == NULL) + return -1; + + for (i = 0; i < t->evt_sz; i++) { + r = tel_register_event(t->evt[i].event, &sid, event_cb, t); + _DBG("TAPI register event : %d", t->evt[i].event); + if (r != TAPI_API_SUCCESS) { + _ERR("TAPI register event %d return %d", + t->evt[i].event, r); + return -1; + } + t->evt[i].sid = sid; + } + + return 0; +} + +static void _unregister_events(struct tapi *t) +{ + int r; + int i; + + if (t == NULL) + return; + + for (i = 0; i < t->evt_sz; i++) { + if (t->evt[i].sid == -1) + continue; + + r = tel_deregister_event(t->evt[i].sid); + if (r == TAPI_API_SUCCESS) + t->evt[i].sid = -1; + else + _ERR("TAPI unregister sid %d return %d", t->evt[i].sid, + r); + } +} + +static enum sim_stat check_sim(TelSimCardStatus_t stat) +{ + enum sim_stat r; + switch (stat) { + case TAPI_SIM_STATUS_CARD_NOT_PRESENT: + case TAPI_SIM_STATUS_CARD_REMOVED: + r = SIM_EMPTY; + break; + case TAPI_SIM_STATUS_SIM_INITIALIZING: + r = SIM_WAITING; + break; + case TAPI_SIM_STATUS_SIM_INIT_COMPLETED: + r = SIM_OK; + break; + case TAPI_SIM_STATUS_SIM_PIN_REQUIRED: + r = SIM_REQ_PIN; + break; + case TAPI_SIM_STATUS_SIM_PUK_REQUIRED: + r = SIM_REQ_PUK; + break; + case TAPI_SIM_STATUS_CARD_BLOCKED: + r = SIM_BLOCKED; + break; + case TAPI_SIM_STATUS_SIM_LOCK_REQUIRED: + r = SIM_REQ_LOCK; + break; + case TAPI_SIM_STATUS_SIM_NCK_REQUIRED: + r = SIM_REQ_NCK; + break; + case TAPI_SIM_STATUS_SIM_NSCK_REQUIRED: + r = SIM_REQ_NSCK; + break; + case TAPI_SIM_STATUS_SIM_SPCK_REQUIRED: + r = SIM_REQ_SPCK; + break; + case TAPI_SIM_STATUS_SIM_CCK_REQUIRED: + r = SIM_REQ_CCK; + break; + case 0xff: + r = SIM_RETRY; + break; + case TAPI_SIM_STATUS_CARD_ERROR: + default: + r = SIM_ERROR; + break; + } + return r; +} + +enum sim_stat tapi_check_sim(int *changed) +{ + TapiResult_t r = TAPI_API_SUCCESS; + int card_changed = 0; + enum sim_stat res = -1; + TelSimCardStatus_t st = 0x00; + + _DBG("Enum size: %d", sizeof(st)); + r = tel_get_sim_init_info(&st, &card_changed); + + _DBG("Get sim status return %d", r); + if (r == TAPI_API_SUCCESS) { + *changed = card_changed; + _DBG("Get tapi sim status: 0x%x card changed: %d", st, + *changed); + } + + switch (r) { + case TAPI_API_SERVICE_NOT_READY: + res = SIM_RETRY; + break; + case TAPI_API_SUCCESS: + res = check_sim(st); + break; + default: + res = SIM_ERROR; + break; + } + + return res; +} + +int tapi_is_ready(void) +{ + int r; + int ready; + + r = tel_check_service_ready(&ready); + if (r != TAPI_API_SUCCESS) { + _ERR("TAPI check ready error %d", r); + return 0; + } + _DBG("Tapi ready status: %d", ready); + return ready; +} + +int tapi_ready_check(void) +{ + int api_ret = 0; + int vconf_val = 0; + + _DBG("%s", __func__); + + api_ret = vconf_get_int(VCONFKEY_TELEPHONY_TAPI_STATE, &vconf_val); + if (api_ret != 0) { + _DBG("fail to get vconf key value. this means telephony does not start"); + } else { + if (vconf_val == VCONFKEY_TELEPHONY_TAPI_STATE_NONE) { + _DBG("TAPI is not ready"); + } else { + _DBG("TAPI is ready"); + } + } + return vconf_val; +} + +static int verify_pins(char *code, int type) +{ + int r; + int req_id; + TelSimSecPw_t pin; + + memset(&pin, 0, sizeof(pin)); + pin.type = type; + pin.pw_len = strlen(code); + pin.pw = (unsigned char *)code; + + r = tel_verifiy_sim_pins(&pin, &req_id); + if (r != TAPI_API_SUCCESS) { + _ERR("TAPI verify pins error %d", r); + return -1; + } + + return 0; +} + +int tapi_verify_pins(char *code) +{ + if (code == NULL || code[0] == '\0') + return -1; + + return verify_pins(code, TAPI_SIM_PTYPE_PIN1); +} + +int tapi_verify_lock(char *code) +{ + if (code == NULL || code[0] == '\0') + return -1; + + return verify_pins(code, TAPI_SIM_PTYPE_SIM); +} + +int tapi_verify_puks(char *code, char *newcode) +{ + int r; + int req_id; + TelSimSecPw_t puk, pin; + + if (code == NULL || code[0] == '\0' + || newcode == NULL || newcode[0] == '\0') + return -1; + + memset(&puk, 0, sizeof(puk)); + puk.type = TAPI_SIM_PTYPE_PUK1; + puk.pw_len = strlen(code); + puk.pw = (unsigned char *)code; + + memset(&pin, 0, sizeof(pin)); + pin.type = TAPI_SIM_PTYPE_PIN1; + pin.pw_len = strlen(newcode); + pin.pw = (unsigned char *)newcode; + + r = tel_verify_sim_puks(&puk, &pin, &req_id); + if (r != TAPI_API_SUCCESS) + return -1; + + return 0; +} + +int tapi_disable_net_pers(char *code, int type) +{ + + if (code == NULL || code[0] == '\0') + return -1; + int request_id = 0; + int err_code = TAPI_API_SUCCESS; + + TelSimPersPw_t lock_pers = { 0, }; + lock_pers.type = type; + lock_pers.pw_len = strlen(code); + lock_pers.pw = (unsigned char *)code; + + err_code = tel_disable_sim_personalization(&lock_pers, &request_id); + + if (err_code != TAPI_API_SUCCESS) { + _ERR("TAPI API FAIL: Error Code [0x%x]", err_code); + return -1; + } + return 0; +} + +struct tapi *tapi_init(void (*cb) (struct tapi_info *, void *), void *data) +{ + int r; + struct tapi *t; + + if (cb == NULL) + return NULL; + + r = tel_init(); + if (r != TAPI_API_SUCCESS) { + _ERR("TAPI init error: %d", r); + return NULL; + } + _DBG("TAPI init"); + + t = calloc(1, sizeof(struct tapi)); + if (t == NULL) { + _ERR("TAPI alloc data error"); + goto err; + } + t->evt = tapi_events; + t->evt_sz = sizeof(tapi_events) / sizeof(tapi_events[0]); + t->cb = cb; + t->cb_data = data; + + r = _register_events(t); + if (r == -1) { + _ERR("TAPI register events error"); + goto err; + } + + r = tel_register_app_name(PACKAGE_NAME); + if (r != TAPI_API_SUCCESS) { + _ERR("TAPI register name error"); + goto err; + } + + return t; + err: + if (t) { + _unregister_events(t); + free(t); + } + tel_deinit(); + + return NULL; +} + +void tapi_exit(struct tapi **t) +{ + if (t == NULL || *t == NULL) + return; + + _unregister_events(*t); + free(*t); + *t = NULL; + + tel_deinit(); +} + +static int get_lang(int v) +{ + int i; + + for (i = 0; i < sizeof(_LP_L) / sizeof(_LP_L[0]); i = i + 2) { + if (_LP_L[i] == v) + return _LP_L[i + 1]; + } + + return _L_UNSPEC; +} + +int tapi_get_language(int *lang) +{ + int i; + int r; + int v = _L_UNSPEC; + TelSimLanguageInfo_t l; + + r = tel_get_sim_language(&l); + if (r != TAPI_API_SUCCESS) { + r = -1; + _ERR("TAPI get sim language"); + } else + r = 0; + + for (i = 0; i < l.LpCount; i++) { + _DBG("TAPI sim lang: %d", l.Lp[i]); + v = get_lang(l.Lp[i]); + if (v != _L_UNSPEC) + break; + } + + if (v == _L_UNSPEC) { + _ERR("TAPI unknown language code"); + r = -1; + } else + *lang = v; + + return r; +} + +void enable_net_pers() +{ + _DBG("Lock Personalisation MCC+MNC 5"); + int request_id = 0; + int err_code = TAPI_API_SUCCESS; + unsigned char *temp = NULL; + + TelSimPersPw_t lock_pers = { 0, }; + lock_pers.type = TAPI_SIM_PERS_NET; + lock_pers.pw_len = 8; + temp = (unsigned char *)malloc(8 + 1); + + if (NULL == temp) { + return; + } + lock_pers.pw = temp; + memcpy(lock_pers.pw, "12345678", 8); + + err_code = tel_enable_sim_personalization(&lock_pers, &request_id); +} diff --git a/src/ui.c b/src/ui.c new file mode 100755 index 0000000..c59d7d8 --- /dev/null +++ b/src/ui.c @@ -0,0 +1,1587 @@ +/* + * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved + * + * This file is part of <pwlock> + * Written by <Seungtaek Chung> <seungtaek.chung@samsung.com>, <Mi-Ju Lee> <miju52.lee@samsung.com>, <Xi Zhichan> <zhichan.xi@samsung.com> + * + * PROPRIETARY/CONFIDENTIAL + * + * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information"). + * You shall not disclose such Confidential Information and shall use it only in accordance + * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS. + * SAMSUNG make no representations or warranties about the suitability of the software, + * either express or implied, including but not limited to the implied warranties of merchantability, + * fitness for a particular purpose, or non-infringement. + * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using, + * modifying or distributing this software or its derivatives. + * + */ + +#include <appcore-efl.h> +#include <Ecore_X.h> +#include <ui-gadget.h> +#include <vconf.h> +#include <bundle.h> + +#include "pwlock.h" +#include "util.h" +#include "tapi.h" +#include "ui.h" + +#define ENTRY_MAX 35 + +static Elm_Gen_Item_Class itc_label1, itc_entry1, itc_label2, itc_entry2; +static void _ug_layout_cb(struct ui_gadget *ug, enum ug_mode mode, void *priv); +static void _ug_destroy_cb(struct ui_gadget *ug, void *priv); +static Evas_Object *_create_bg(Evas_Object * win); +static void _destroy_previous_ugs(void *data); +static void _focused_cb(void *data, Evas_Object * obj, void *event_info); +static void _unfocused_cb(void *data, Evas_Object * obj, void *event_info); +static void _eraser_clicked_cb(void *data, Evas_Object * obj, + const char *emission, const char *source); +static Evas_Object *_create_editfield(Evas_Object * parent); +static Evas_Object *_editfield_entry_get(Evas_Object * parent); + +static int _ug_destroy = 0; +static Elm_Object_Item *item[2] = { 0, }; + +static int _header_idx[] = { + _UI_PIN, IDS_IDLE_HEADER_PIN_LOCK, + _UI_PUK, IDS_IDLE_HEADER_PUK_LOCK, + _UI_PUK_PIN, IDS_IDLE_HEADER_PUK_LOCK, + _UI_PUK_CNF, IDS_IDLE_HEADER_PUK_LOCK, + _UI_BLOCK, IDS_IDLE_HEADER_SIM_BLOCKED, + _UI_SIM_LOCK, IDS_IDLE_HEADER_SIM_LOCK, + _UI_NETWORK_LOCK_NCK, IDS_IDLE_HEADER_NETWORK_LOCK, + _UI_NETWORK_LOCK_NSCK, IDS_IDLE_HEADER_NETWORK_LOCK, + _UI_NETWORK_LOCK_SPCK, IDS_IDLE_HEADER_NETWORK_LOCK, + _UI_NETWORK_LOCK_CCK, IDS_IDLE_HEADER_NETWORK_LOCK, +}; + +static int _tit_idx[] = { + _UI_PIN, STR_E_PIN, IDS_IDLE_BODY_ENTER_PIN, + _UI_PUK, STR_E_PUK, IDS_IDLE_BODY_ENTER_PUK, + _UI_PUK_PIN, STR_E_NEW, IDS_IDLE_BODY_ENTER_NEW_PIN, + _UI_PUK_CNF, STR_R_PIN, IDS_IDLE_BODY_ENTER_PIN, + _UI_BLOCK, STR_BLOCK, + IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER, + _UI_SIM_LOCK, STR_SIM_LOCK, IDS_COM_BODY_ENTER_PASSWORD, + _UI_NETWORK_LOCK_NCK, STR_NETWORK_LOCK_NCK, + IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY, + _UI_NETWORK_LOCK_NSCK, STR_NETWORK_LOCK_NSCK, + IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY, + _UI_NETWORK_LOCK_SPCK, STR_NETWORK_LOCK_SPCK, + IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY, + _UI_NETWORK_LOCK_CCK, STR_NETWORK_LOCK_CCK, + IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY, + _UI_LANG, STR_LANG, IDS_IDLE_HEADER_DISPLAY_LANGUAGE, +}; + +static char *_get_header(int ui_type) +{ + int i; + char *r = ""; + + for (i = 0; i < sizeof(_header_idx) / sizeof(_header_idx[0]); i = i + 2) { + if (ui_type == _header_idx[i]) { + r = pwlock_get_string(_header_idx[i + 1]); + break; + } + } + + return r; +} + +static char *_get_tip(int ui_type) +{ + int i; + char *r = ""; + if (sizeof(_tit_idx[0]) != 0) { + for (i = 0; i < sizeof(_tit_idx) / sizeof(_tit_idx[0]); + i = i + 3) { + if (ui_type == _tit_idx[i]) { + r = pwlock_get_string(_tit_idx[i + 2]); + break; + } + } + } + + return r; +} + +static Evas_Object *_create_bg(Evas_Object * win) +{ + Evas_Object *bg = elm_bg_add(win); + evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + elm_win_resize_object_add(win, bg); + evas_object_show(bg); + return bg; +} + +static Evas_Object *_layout_add(Evas_Object * parent) +{ + Evas_Object *ly; + + ly = elm_layout_add(parent); + if (!ly) { + _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); + + return ly; +} + +static Evas_Object *_create_layout(struct appdata *ad) +{ + Evas_Object *ly; + + ly = _layout_add(ad->win); + elm_win_resize_object_add(ad->win, ly); + elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW); + + return ly; +} + +static void init_ui(struct appdata *ad) +{ + Evas_Object *eo; + Evas_Object *bg; + + ad->bg = _create_bg(ad->win); + + ad->ly = _create_layout(ad); + if (!ad->ly) + return; + + eo = elm_naviframe_add(ad->ly); + if (!eo) { + _ERR("UI navi add error"); + return; + } + + elm_object_part_content_set(ad->ly, "elm.swallow.content", eo); + evas_object_show(eo); + ad->navi = eo; + + bg = evas_object_rectangle_add(evas_object_evas_get(ad->win)); + evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + evas_object_color_set(bg, 0, 0, 0, 255); + elm_win_resize_object_add(ad->win, bg); +} + +void show_msg(struct appdata *ad, int strid) +{ + int max = 0; + char *msg = NULL; + char *str = NULL; + + if (ad->msg) { + free(ad->msg); + ad->msg = NULL; + } + if (strid == IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED) { + + max = PWLOCK_PIN_PASSWORD_MAX_LENGTH; + str = pwlock_get_string(IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED); + Eina_Strbuf *temp_str_buf = eina_strbuf_new(); + eina_strbuf_append_printf(temp_str_buf, + str, PWLOCK_PASSWORD_MIN_LENGTH, max); + msg = eina_strbuf_string_steal(temp_str_buf); + eina_strbuf_free(temp_str_buf); + } else { + msg = pwlock_get_string(strid); + } + if (msg == NULL || msg[0] == '\0') + return; + + ad->msg = strdup(msg); + + if (!ad->ly_main) + return; + remove_waiting_popup(ad); + show_popup(ad, msg, EINA_TRUE); +} + +static inline const char *_entry_get(Evas_Object * e) +{ + const char *s = NULL; + + if (e) + s = elm_entry_entry_get(_editfield_entry_get(e)); + + return s; +} + +static void _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 do_UI_PUK_CNF(struct appdata *ad) +{ + const char *s = NULL; + + _DBG("%s", __func__); + s = _entry_get(ad->entry_layout); + + if (s && ad->pin_str && !strcmp(ad->pin_str, s)) { + do_state(ad); + return; + } + + _set_str(&ad->pin_str, NULL); + show_msg(ad, IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN); + + load_main(ad, _UI_PUK_PIN); +} + +static int _check_input_string(int view_type, const char *entry_str) +{ + + int lenstr = 0; + _DBG("_check_input_string: %s", entry_str); + + if (entry_str == NULL) + return IDS_IDLE_BODY_PASSWORD_EMPTY; + + lenstr = strlen(entry_str); + int max_len = 0; + max_len = PWLOCK_PIN_PASSWORD_MAX_LENGTH; + _DBG("_check_input_string length: %d,max_len=%d,PWLOCK_PASSWORD_MIN_LENGTH=%d", lenstr, max_len, PWLOCK_PASSWORD_MIN_LENGTH); + + if (lenstr < PWLOCK_PASSWORD_MIN_LENGTH || lenstr > max_len) { + return IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED; + } + return 0; +} + +static void response_cb(void *data, Evas_Object * obj, void *event_info) +{ + struct appdata *ad; + ad = (struct appdata *)data; + + _DBG("response callback=%d\n", (int)event_info); + + if (((int)event_info != 5) && (obj != NULL)) { + evas_object_del(obj); + } +} + +static void _block_clicked_cb(void *data, Evas_Object * obj, void *event_info) +{ + if (obj) { + evas_object_del(obj); + obj = NULL; + } +} + +void _show_popup(void *data, char *msg_str) +{ + Evas_Object *popup; + Evas_Object *button; + struct appdata *ad; + ad = (struct appdata *)data; + Ecore_X_Window x_win; + + ecore_imf_context_input_panel_hide(elm_entry_imf_context_get + (_editfield_entry_get + (ad->entry_layout))); + popup = elm_popup_add(ad->win); + evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + + x_win = elm_win_xwindow_get(ad->win); + ecore_x_netwm_window_type_set(x_win, ECORE_X_WINDOW_TYPE_DIALOG); + + evas_object_smart_callback_add(popup, "block,clicked", + _block_clicked_cb, NULL); + + elm_popup_timeout_set(popup, 3); + elm_object_text_set(popup, msg_str); + elm_object_part_text_set(popup, "title", "Information"); + button = elm_button_add(popup); + elm_object_text_set(button, pwlock_get_string(IDS_COM_SK_OK)); + elm_object_part_content_set(popup, "button1", button); + evas_object_smart_callback_add(button, "clicked", response_cb, popup); + evas_object_show(popup); +} + +static void _imf_context_input_panel_hide(void *data) +{ + struct appdata *ad = data; + Ecore_IMF_Context *imf_context = NULL; + Ecore_IMF_Context *imf_context_second = NULL; + imf_context = + elm_entry_imf_context_get(_editfield_entry_get(ad->entry_layout)); + if (imf_context) + ecore_imf_context_input_panel_hide(imf_context); + + imf_context_second = + elm_entry_imf_context_get(_editfield_entry_get + (ad->entry_second_layout)); + if (imf_context_second) + ecore_imf_context_input_panel_hide(imf_context_second); +} + +static void _done_button_changed(void *data, Evas_Object * obj, void *e) +{ + struct appdata *ad = data; + + int length = + strlen(elm_entry_entry_get(_editfield_entry_get(ad->entry_layout))); + + if (length == 0) { + elm_object_item_disabled_set(item[1], EINA_TRUE); + elm_object_disabled_set(ad->button_done, EINA_TRUE); + } else { + elm_object_item_disabled_set(item[1], EINA_FALSE); + elm_object_disabled_set(ad->button_done, EINA_FALSE); + } + if (elm_object_focus_get(ad->entry_layout)) { + if (elm_entry_is_empty(_editfield_entry_get(ad->entry_layout))) { + elm_object_signal_emit(ad->entry_layout, + "elm,state,eraser,hide", "elm"); + } else { + elm_object_signal_emit(ad->entry_layout, + "elm,state,eraser,show", "elm"); + } + } +} + +static void _done_cb(void *data, Evas_Object * obj, void *e) +{ + struct appdata *ad = data; + int ret = -1; + ad->lock_view_loaded = 1; + _DBG("Done clicked ui_type: %d", ad->ui_type); + _imf_context_input_panel_hide(ad); + + switch (ad->ui_type) { + case _UI_PIN: + case _UI_SIM_LOCK: + show_waiting_popup(ad, + pwlock_get_string + (IDS_IDLE_BODY_CHECKING_SIM_STATUS)); + _set_str(&ad->entry_str, _entry_get(ad->entry_layout)); + _DBG("entry string: [%s]", ad->entry_str); + ret = _check_input_string(ad->ui_type, ad->entry_str); + if (ret == 0) { + do_state(ad); + } else { + remove_waiting_popup(ad); + show_msg(ad, ret); + clear_entry(ad); + } + break; + case _UI_PUK: + _set_str(&ad->entry_str, _entry_get(ad->entry_layout)); + _DBG("entry string: [%s]", ad->entry_str); + ret = _check_input_string(ad->ui_type, ad->entry_str); + if (ret == 0) { + pwlock_destroy(ad); + show_puk_pin(ad); + } else { + remove_waiting_popup(ad); + show_msg(ad, ret); + clear_entry(ad); + } + break; + case _UI_PUK_PIN: + show_waiting_popup(ad, + pwlock_get_string + (IDS_IDLE_BODY_CHECKING_SIM_STATUS)); + _set_str(&ad->pin_str, _entry_get(ad->entry_layout)); + _DBG("entry string: [%s]", ad->pin_str); + ret = _check_input_string(ad->ui_type, ad->pin_str); + if (ret == 0) { + if (0 == + strcmp(_entry_get(ad->entry_layout), + _entry_get(ad->entry_second_layout))) { + do_UI_PUK_CNF(ad); + } else { + remove_waiting_popup(ad); + show_msg(ad, IDS_IDLE_POP_PASSWORDS_NOT_MATCH); + clear_entry(ad); + } + } else { + remove_waiting_popup(ad); + show_msg(ad, ret); + clear_entry(ad); + } + break; + case _UI_PUK_CNF: + show_waiting_popup(ad, + pwlock_get_string + (IDS_IDLE_BODY_CHECKING_SIM_STATUS)); + ret = + _check_input_string(ad->ui_type, + _entry_get(ad->entry_layout)); + if (ret == 0) { + do_UI_PUK_CNF(ad); + } else { + remove_waiting_popup(ad); + show_msg(ad, ret); + clear_entry(ad); + } + break; + case _UI_NETWORK_LOCK_NCK: + case _UI_NETWORK_LOCK_NSCK: + case _UI_NETWORK_LOCK_SPCK: + case _UI_NETWORK_LOCK_CCK: + _set_str(&ad->entry_str, _entry_get(ad->entry_layout)); + _DBG("entry string: [%s]", ad->entry_str); + ret = _check_input_string(ad->ui_type, ad->entry_str); + if (ret == 0) { + do_state(ad); + } else { + remove_waiting_popup(ad); + clear_entry(ad); + show_msg(ad, ret); + } + break; + } + _DBG("Exit _done_cb"); +} + +static void _dial_cb(void *data, Evas_Object * obj, void *e) +{ + _DBG("%s,%d", __func__, __LINE__); + struct appdata *ad = data; + + elm_object_item_disabled_set(item[0], EINA_TRUE); + elm_object_disabled_set(ad->button_dial, EINA_TRUE); + ad->previous_ui_type = ad->ui_type; + ad->ui_type = _UI_DIALER; + _imf_context_input_panel_hide(ad); + show_dialer(ad); +} + +static void _pp_rsp_ok_cb(void *data, Evas_Object * e, void *ei) +{ + int i = (int)ei; + struct appdata *ad = (struct appdata *)data; + + _DBG("popup rsp: %d\n", i); + + if (NULL == ad) { + return; + } + + if (ad->popup) { + evas_object_del(ad->popup); + ad->popup = NULL; + } + + ad->cancel_setup = 1; + if (ad->current_ug) { + ug_destroy(ad->current_ug); + if ((ad->ui_type == _UI_LANG) + || (ad->ui_type == _UI_KEYBOARD)) { + if (ad->first_boot) { + if (ad->date_and_time_settings_loaded) + ad->state = _ST_EXIT; + else + ad->state = _ST_TAPI_INIT; + } else { + ad->state = _ST_EXIT; + } + } else { + ad->state = _ST_EXIT; + } + do_state(ad); + } + + if (ad->sim_status == SIM_REQ_LOCK || ad->sim_status == SIM_REQ_NCK + || ad->sim_status == SIM_REQ_NSCK || ad->sim_status == SIM_REQ_SPCK + || ad->sim_status == SIM_REQ_CCK) { + if (ad->pin_changed == 1) { + show_sim_lock(ad); + ad->pin_changed = 0; + } + } + if (ad->ui_type == _UI_LANG || ad->ui_type == _UI_TIME || ad->ui_type == _UI_KEYBOARD || ad->ui_type == _UI_DIALER) { + return; + } + if (ad->entry_layout) { + evas_object_show(_editfield_entry_get(ad->entry_layout)); + elm_object_focus_set(_editfield_entry_get(ad->entry_layout), + EINA_TRUE); + } + if (ad->msg) { + free(ad->msg); + ad->msg = NULL; + } +} + +static void _pp_rsp_cancel_cb(void *data, Evas_Object * e, void *ei) +{ + int i = (int)ei; + struct appdata *ad = (struct appdata *)data; + + _DBG("popup rsp: %d\n", i); + + if (NULL == ad) { + return; + } + + if (ad->popup) { + evas_object_del(ad->popup); + ad->popup = NULL; + } + + ad->cancel_setup = 0; + if (ad->sim_status == SIM_REQ_LOCK || ad->sim_status == SIM_REQ_NCK + || ad->sim_status == SIM_REQ_NSCK || ad->sim_status == SIM_REQ_SPCK + || ad->sim_status == SIM_REQ_CCK) { + if (ad->pin_changed == 1) { + show_sim_lock(ad); + ad->pin_changed = 0; + } + } + if (ad->ui_type == _UI_LANG || ad->ui_type == _UI_TIME || ad->ui_type == _UI_KEYBOARD || ad->ui_type == _UI_DIALER) { + return; + } + if (ad->entry_layout) { + evas_object_show(_editfield_entry_get(ad->entry_layout)); + elm_object_focus_set(_editfield_entry_get(ad->entry_layout), + EINA_TRUE); + } + if (ad->msg) { + free(ad->msg); + ad->msg = NULL; + } +} + +static void _destroy_previous_ugs(void *data) +{ + struct appdata *ad = (struct appdata *)data; + if (!ad) { + return; + } + + _DBG("%s,%d", __func__, __LINE__); + + switch (ad->ui_type) { + case _UI_LANG: + if (ad->keyboard_ug) { + ug_destroy(ad->keyboard_ug); + ad->keyboard_ug = NULL; + } + if (ad->date_ug) { + ug_destroy(ad->date_ug); + ad->date_ug = NULL; + } + break; + case _UI_TIME: + if (ad->keyboard_ug) { + ug_destroy(ad->keyboard_ug); + ad->keyboard_ug = NULL; + } + if (ad->language_ug) { + ug_destroy(ad->language_ug); + ad->language_ug = NULL; + } + break; + case _UI_KEYBOARD: + if (ad->date_ug) { + ug_destroy(ad->date_ug); + ad->date_ug = NULL; + } + if (ad->language_ug) { + ug_destroy(ad->language_ug); + ad->language_ug = NULL; + } + break; + default: + if (ad->date_ug) { + ug_destroy(ad->date_ug); + ad->date_ug = NULL; + } + if (ad->language_ug) { + ug_destroy(ad->language_ug); + ad->language_ug = NULL; + } + if (ad->keyboard_ug) { + ug_destroy(ad->keyboard_ug); + ad->keyboard_ug = NULL; + } + break; + } + + _DBG("%s,%d", __func__, __LINE__); + + if (((ad->sim_changed == 1) && (ad->ui_type == _UI_LANG)) + || (ad->ui_type == _UI_TIME)) { + _DBG("%s,%d", __func__, __LINE__); + pwlock_destroy(ad); + } +} + +static Evas_Object *_create_conformant(Evas_Object * parent) +{ + Evas_Object *conform; + 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 _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 _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) +{ + elm_entry_entry_set(data, ""); +} + +static Evas_Object *_create_editfield(Evas_Object * parent) +{ + Evas_Object *layout = NULL; + Evas_Object *entry = NULL; + static Elm_Entry_Filter_Limit_Size limit_filter_data; + + limit_filter_data.max_char_count = PWLOCK_PIN_PASSWORD_MAX_LENGTH; + limit_filter_data.max_byte_count = 0; + + layout = elm_layout_add(parent); + elm_layout_theme_set(layout, "layout", "editfield", "default"); + + 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_object_focus_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); + evas_object_show(entry); + elm_object_focus_set(entry, EINA_TRUE); + 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", ""); + elm_object_signal_callback_add(layout, "elm,eraser,clicked", "elm", + _eraser_clicked_cb, entry); + + return layout; +} + +static Evas_Object *_editfield_entry_get(Evas_Object * parent) +{ + Evas_Object *entry = NULL; + + entry = elm_object_part_content_get(parent, "elm.swallow.content"); + + return entry; +} + +static void _entry_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"); + } + } +} + +static char *_gl_label_get_title1(void *data, Evas_Object * obj, + const char *part) +{ + struct appdata *ad = (struct appdata *)data; + char buf[50] = { 0, }; + + if (!ad || !part) { + return NULL; + } + if (!strcmp(part, "elm.text")) { + snprintf(buf, sizeof(buf), "%s", _get_tip(ad->ui_type)); + return strdup(buf); + } + return NULL; +} + +static Evas_Object *_gl_icon_get1(void *data, Evas_Object * obj, + const char *part) +{ + Evas_Object *layout = NULL; + + struct appdata *ad = (struct appdata *)data; + + if (!ad || !part) { + return NULL; + } + + if (!strcmp(part, "elm.icon")) { + layout = _create_editfield(obj); + evas_object_smart_callback_add(_editfield_entry_get(layout), + "changed", _done_button_changed, + ad); + + ad->entry_layout = layout; + + return layout; + + } + return NULL; +} + +static char *_gl_label_get_title2(void *data, Evas_Object * obj, + const char *part) +{ + struct appdata *ad = (struct appdata *)data; + char buf[50] = { 0, }; + + if (!ad || !part) { + return NULL; + } + if (!strcmp(part, "elm.text")) { + snprintf(buf, sizeof(buf), "%s", _get_tip(ad->ui_type + 1)); + return strdup(buf); + } + return NULL; +} + +static Evas_Object *_gl_icon_get2(void *data, Evas_Object * obj, + const char *part) +{ + Evas_Object *layout = NULL; + + struct appdata *ad = (struct appdata *)data; + + if (!ad || !part) { + return NULL; + } + if (!strcmp(part, "elm.icon")) { + layout = _create_editfield(obj); + evas_object_smart_callback_add(_editfield_entry_get(layout), + "changed", _entry_changed_cb, + layout); + + ad->entry_second_layout = layout; + + return layout; + + } + return NULL; +} + +static void _list_set_styles() +{ + itc_label1.item_style = "dialogue/title"; + itc_label1.func.text_get = _gl_label_get_title1; + itc_label1.func.content_get = NULL; + itc_label1.func.state_get = NULL; + itc_label1.func.del = NULL; + + itc_entry1.item_style = "dialogue/1icon"; + itc_entry1.func.text_get = NULL; + itc_entry1.func.content_get = _gl_icon_get1; + itc_entry1.func.state_get = NULL; + itc_entry1.func.del = NULL; + + itc_label2.item_style = "dialogue/title"; + itc_label2.func.text_get = _gl_label_get_title2; + itc_label2.func.content_get = NULL; + itc_label2.func.state_get = NULL; + itc_label2.func.del = NULL; + + itc_entry2.item_style = "dialogue/1icon"; + itc_entry2.func.text_get = NULL; + itc_entry2.func.content_get = _gl_icon_get2; + itc_entry2.func.state_get = NULL; + itc_entry2.func.del = NULL; +} + +void load_main(struct appdata *ad, int ui_type) +{ + Evas_Object *ly = NULL; + Evas_Object *bt_done = NULL; + Evas_Object *bt_dial = NULL; + Evas_Object *null_image = NULL; + Evas_Object *genlist = NULL; + Evas_Object *controlbar = NULL; + Elm_Object_Item *genlist_item = NULL; + Elm_Object_Item *navi_it = NULL; + + _DBG("%s", __func__); + + ly = _create_conformant(ad->win); + + genlist = elm_genlist_add(ad->navi); + _list_set_styles(); + genlist_item = + elm_genlist_item_append(genlist, &itc_label1, (void *)ad, 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_entry1, (void *)ad, NULL, + ELM_GENLIST_ITEM_NONE, NULL, NULL); + elm_genlist_item_select_mode_set(genlist_item, EINA_TRUE); + + if (_UI_PUK_PIN == ui_type) { + genlist_item = + elm_genlist_item_append(genlist, &itc_label2, (void *)ad, + 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_entry2, (void *)ad, + 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); + + _DBG("load_main ad->ui_type = %d", ad->ui_type); + + controlbar = elm_toolbar_add(ad->navi); + if (controlbar == NULL) + return; + + elm_toolbar_shrink_mode_set(controlbar, ELM_TOOLBAR_SHRINK_EXPAND); + + bt_dial = elm_button_add(controlbar); + elm_object_style_set(bt_dial, "naviframe_control/default"); + evas_object_size_hint_weight_set(bt_dial, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(bt_dial, EVAS_HINT_FILL, 0.5); + + elm_object_text_set(bt_dial, pwlock_get_string(IDS_IDLE_BUTTON_DIALER)); + evas_object_smart_callback_add(bt_dial, "clicked", _dial_cb, ad); + ad->button_dial = bt_dial; + evas_object_show(bt_dial); + + bt_done = elm_button_add(controlbar); + elm_object_style_set(bt_done, "naviframe_control/default"); + evas_object_size_hint_weight_set(bt_done, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(bt_done, EVAS_HINT_FILL, 0.5); + + elm_object_text_set(bt_done, pwlock_get_string(IDS_COM_SK_DONE)); + evas_object_smart_callback_add(bt_done, "clicked", _done_cb, ad); + ad->button_done = bt_done; + evas_object_show(bt_done); + + item[0] = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL); + elm_object_item_part_content_set(item[0], "object", bt_dial); + item[1] = elm_toolbar_item_append(controlbar, NULL, NULL, NULL, NULL); + elm_object_item_part_content_set(item[1], "object", bt_done); + elm_object_item_disabled_set(item[1], EINA_TRUE); + elm_object_disabled_set(bt_done, EINA_TRUE); + null_image = elm_icon_add(ad->navi); + elm_icon_file_set(null_image, NULL, NULL); + evas_object_show(null_image); + + ad->ly_main = ly; + navi_it = + elm_naviframe_item_push(ad->navi, _get_header(ui_type), null_image, + NULL, ad->ly_main, NULL); + elm_object_item_part_content_set(navi_it, "optionheader", controlbar); + elm_object_item_signal_emit(navi_it, + "elm,state,controlbar,instant_close", ""); + + ad->ui_type = ui_type; + remove_waiting_popup(ad); +} + +void show_pin(struct appdata *ad) +{ + _DBG("%s", __func__); + + if (!ad->navi) + init_ui(ad); + + if (!ad->ly_main) + load_main(ad, _UI_PIN); + + evas_object_show(ad->win); +} + +void show_puk(struct appdata *ad) +{ + _DBG("%s", __func__); + + if (!ad->navi) + init_ui(ad); + + load_main(ad, _UI_PUK); + + evas_object_show(ad->win); +} + +void show_puk_pin(struct appdata *ad) +{ + _DBG("%s", __func__); + + if (!ad->navi) + init_ui(ad); + + load_main(ad, _UI_PUK_PIN); + + evas_object_show(ad->win); +} + +void show_sim_lock(struct appdata *ad) +{ + _DBG("%s", __func__); + + int st = ad->sim_status; + if (!ad->navi) { + init_ui(ad); + } + switch (st) { + case SIM_REQ_LOCK: + load_main(ad, _UI_SIM_LOCK); + break; + case SIM_REQ_NCK: + load_main(ad, _UI_NETWORK_LOCK_NCK); + break; + case SIM_REQ_NSCK: + load_main(ad, _UI_NETWORK_LOCK_NSCK); + break; + case SIM_REQ_SPCK: + load_main(ad, _UI_NETWORK_LOCK_SPCK); + break; + case SIM_REQ_CCK: + load_main(ad, _UI_NETWORK_LOCK_CCK); + break; + default: + load_main(ad, _UI_SIM_LOCK); + break; + } + + evas_object_show(ad->win); +} + +void show_block(struct appdata *ad) +{ + Evas_Object *ly = NULL; + Evas_Object *bt_dial = NULL; + Evas_Object *el = NULL; + Evas_Object *bg = NULL; + char buf[1024] = { 0, }; + + _DBG("%s", __func__); + + if (!ad->navi) + init_ui(ad); + + ly = _layout_add(ad->navi); + bg = ad->bg; + elm_object_style_set(bg, "group_list"); + el = elm_label_add(ad->navi); + + snprintf(buf, sizeof(buf), "%s%s%s", + "<font_size=19 font=SLP:style=Light style=shadow shadow_color=#000000bf color=#ffffffff align=center>", + pwlock_get_string + (IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER), + "</>"); + elm_object_text_set(el, buf); + elm_object_part_content_set(ly, "elm.swallow.content", el); + evas_object_show(el); + + bt_dial = elm_button_add(ad->navi); + elm_object_text_set(bt_dial, pwlock_get_string(IDS_IDLE_BUTTON_DIALER)); + evas_object_smart_callback_add(bt_dial, "clicked", _dial_cb, ad); + evas_object_show(bt_dial); + + ad->ly_main = ly; + elm_naviframe_item_push(ad->navi, _get_header(_UI_BLOCK), + bt_dial, NULL, ad->ly_main, NULL); + ad->ui_type = _UI_BLOCK; + evas_object_show(ad->win); + remove_waiting_popup(ad); +} + +void pwlock_destroy(struct appdata *ad) +{ + _DBG("%s", __func__); + + if (!ad->navi) + return; + _DBG("%s %d", __func__, __LINE__); + + elm_naviframe_item_pop(ad->navi); + if (ad->navi) { + evas_object_del(ad->navi); + ad->navi = NULL; + } + if (ad->ly_main) { + evas_object_del(ad->ly_main); + ad->ly_main = NULL; + } + if (ad->entry_layout) { + evas_object_del(ad->entry_layout); + ad->entry_layout = NULL; + } + if (ad->entry_second_layout) { + evas_object_del(ad->entry_second_layout); + ad->entry_second_layout = NULL; + } + if (ad->bg) { + evas_object_del(ad->bg); + ad->bg = NULL; + } + remove_waiting_popup(ad); +} + +void clear_entry(struct appdata *ad) +{ + if (ad->entry_layout) { + elm_object_part_text_set(ad->entry_layout, "elm.guidetext", ""); + elm_entry_entry_set(_editfield_entry_get(ad->entry_layout), ""); + } + if (ad->entry_second_layout) { + elm_object_part_text_set(ad->entry_second_layout, + "elm.guidetext", ""); + elm_entry_entry_set(_editfield_entry_get + (ad->entry_second_layout), ""); + } +} + +static void _ug_layout_cb(struct ui_gadget *ug, enum ug_mode mode, void *priv) +{ + struct appdata *ad = (struct appdata *)priv; + Evas_Object *base; + _DBG("%s begin", __func__); + if (!ug || !priv) + return; + + base = (Evas_Object *) ug_get_layout(ug); + if (!base) { + _DBG("base layout null!\n"); + return; + } + + _DBG("%s,%d", __func__, __LINE__); + switch (mode) { + case UG_MODE_FULLVIEW: + evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + elm_win_resize_object_add(ug_get_window(), base); + if (_UI_LANG == ad->ui_type) { + if ((ad->language_settings_loaded == 0) + || (ad->sim_changed == 1 + && ad->lock_view_loaded == 0)) { + ug_disable_effect(ug); + } + } + evas_object_show(base); + break; + default: + break; + } + if (_UI_LANG == ad->ui_type) { + ad->language_settings_loaded = 1; + } + _destroy_previous_ugs(ad); + _DBG("%s end", __func__); + +} + +static void _ug_result_cb(struct ui_gadget *ug, bundle * result, void *priv) +{ + _DBG("function=%s", __func__); + struct appdata *ad = NULL; + + if (!ug || !priv || !result) { + return; + } + char *retv = NULL; + ad = (struct appdata *)priv; + _DBG("ad->state=%d", ad->state); + + switch (ad->state) { + case _ST_LANG: + { + retv = (char *)bundle_get_val(result, "updateType"); + if (retv) + _DBG("_ST_LANG updateType = %s", retv); + retv = (char *)bundle_get_val(result, "ON_OFF_TEXT"); + if (retv) + _DBG("_ST_LANG ON_OFF_TEXT = %s", retv); + retv = (char *)bundle_get_val(result, "result"); + if (retv) + _DBG("_ST_LANG language result = %s", retv); + char *path = (char *)vconf_get_str(VCONFKEY_LANGSET); + if (path) { + _DBG("VCONFKEY_LANGSET value = %s", path); + setenv("LANG", path, 1); + setenv("LC_ALL", path, 1); + setenv("LANGUAGE", path, 1); + setlocale(LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); + free(path); + path = NULL; + } + } + break; + case _ST_KEYBOARD: + { + retv = (char *)bundle_get_val(result, "name"); + if (retv) + _DBG("_ST_KEYBOARD name = %s", retv); + retv = (char *)bundle_get_val(result, "description"); + if (retv && !strcmp(retv, "previous clicked")) { + _DBG("_ST_KEYBOARD description = %s", retv); + ad->kill_ug = 1; + } else { + ad->kill_ug = 0; + } + } + break; + case _ST_TIME: + { + retv = (char *)bundle_get_val(result, "result"); + if (retv) + _DBG("_ST_TIME name = %s", retv); + if (retv && !strcmp(retv, "lbutton_click")) { + ad->kill_ug = 1; + } else if (retv && !strcmp(retv, "rbutton_click")) { + ad->kill_ug = 0; + } + } + break; + default: + break; + } + + if (!retv) { + _DBG("retv = %s", retv); + _ug_destroy = 1; + } +} + +static void _ug_destroy_cb(struct ui_gadget *ug, void *priv) +{ + _DBG("%s, %d begin", __func__, __LINE__); + struct appdata *ad = NULL; + if (1 == _ug_destroy) { + _ug_destroy = 0; + return; + } + if (priv) { + ad = (struct appdata *)priv; + } + if (ad == NULL) + return; + + _DBG("%s, %d ad->state: %d", __func__, __LINE__, ad->state); + switch (ad->state) { + case _ST_LANG: + { + if (ad->first_boot) { + _DBG("FIRST BOOT!"); + if (ad->keyboard_settings_loaded) { + ad->state = _ST_KEYBOARD; + do_state(ad); + } else { + ad->state = _ST_KEYBOARD; + do_state(ad); + show_waiting_popup(ad, NULL); + return; + } + } else { + _DBG("NOT FIRST BOOT, SIM CHANGED?"); + if (ad->running_status == 0 + && ad->sim_changed == 1) { + ad->state = _ST_KEYBOARD; + do_state(ad); + show_waiting_popup(ad, NULL); + return; + } else { + ad->state = _ST_EXIT; + do_state(ad); + } + } + } + break; + case _ST_TIME: + { + if (ad->kill_ug) { + ad->state = _ST_KEYBOARD; + ad->date_and_time_previous = 1; + show_waiting_popup(ad, NULL); + do_state(ad); + ad->kill_ug = 0; + return; + } else { + if (ad->sim_status == SIM_EMPTY) { + ad->state = _ST_EXIT; + } else { + ad->state = _ST_EXIT; + } + } + do_state(ad); + } + break; + case _ST_KEYBOARD: + { + if (ad->kill_ug) { + ad->state = _ST_LANG; + do_state(ad); + ad->kill_ug = 0; + } else { + if (ad->first_boot) { + if (ad->date_and_time_settings_loaded) { + ad->state = _ST_TIME; + do_state(ad); + ad->kill_ug = 0; + } else { + ad->state = _ST_TAPI_INIT; + do_state(ad); + show_waiting_popup(ad, + pwlock_get_string + (IDS_IDLE_BODY_CHECKING_SIM_STATUS)); + ad->kill_ug = 0; + return; + } + } else { + ad->state = _ST_TIME; + do_state(ad); + ad->kill_ug = 0; + } + } + } + break; + default: + { + if (ad->win) + evas_object_show(ad->win); + } + break; + } + if (ug) { + if (ad->ui_type == _UI_DIALER) { + ad->ui_type = ad->previous_ui_type; + ug_destroy(ug); + ug = NULL; + + elm_object_item_disabled_set(item[0], EINA_FALSE); + elm_object_disabled_set(ad->button_dial, EINA_FALSE); + if (_UI_PIN == ad->ui_type || _UI_PUK == ad->ui_type || + _UI_PUK_PIN == ad->ui_type + || _UI_SIM_LOCK == ad->ui_type) { + if (ad->entry_layout) { + evas_object_show(_editfield_entry_get + (ad->entry_layout)); + elm_object_focus_set + (_editfield_entry_get + (ad->entry_layout), EINA_TRUE); + } + } + } else { + ug_destroy(ug); + ug = NULL; + } + } +} + +int show_lang(struct appdata *ad) +{ + _DBG("%s", __func__); + ad->ui_type = _UI_LANG; + bundle *b = bundle_create(); + UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE); + struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs)); + + if (cbs == NULL) { + bundle_free(b); + return 0; + } + cbs->layout_cb = _ug_layout_cb; + cbs->result_cb = _ug_result_cb; + cbs->destroy_cb = _ug_destroy_cb; + cbs->priv = (void *)ad; + if (!b) { + free(cbs); + return 0; + } + bundle_add(b, "caller", "pwlock"); + bundle_add(b, "viewtype", "language"); + bundle_add(b, "rbutton", pwlock_get_string(IDS_COM_SK_NEXT)); + + ad->language_ug = + ug_create(NULL, "setting-phone-efl", UG_MODE_FULLVIEW, b, cbs); + bundle_free(b); + free(cbs); + if (!ad->language_ug) { + _DBG("Get phone ug failed."); + ad->state = _ST_KEYBOARD; + return 0; + } + ad->current_ug = ad->language_ug; + evas_object_show(ad->win); + return 1; +} + +int show_time(struct appdata *ad) +{ + _DBG("%s,%d", __func__, __LINE__); + if (!ad) + return 0; + ad->ui_type = _UI_TIME; + ad->date_and_time_settings_loaded = 1; + bundle *b = bundle_create(); + UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE); + struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs)); + if (cbs == NULL) { + bundle_free(b); + return 0; + } + cbs->layout_cb = _ug_layout_cb; + cbs->result_cb = _ug_result_cb; + cbs->destroy_cb = _ug_destroy_cb; + cbs->priv = (void *)ad; + if (!b) { + free(cbs); + return 0; + } + bundle_add(b, "caller", "pwlock"); + bundle_add(b, "lbutton", pwlock_get_string(IDS_COM_BODY_PREVIOUS)); + bundle_add(b, "rbutton", pwlock_get_string(IDS_COM_SK_DONE)); + ad->date_ug = + ug_create(NULL, "setting-time-efl", UG_MODE_FULLVIEW, b, cbs); + bundle_free(b); + free(cbs); + if (!ad->date_ug) { + _DBG("Get time ug failed."); + ad->state = _ST_EXIT; + return 0; + } + ad->current_ug = ad->date_ug; + evas_object_show(ad->win); + return 1; +} + +int show_keyboard_setting(struct appdata *ad) +{ + _DBG("%s,%d", __func__, __LINE__); + if (!ad) + return 0; + ad->ui_type = _UI_KEYBOARD; + ad->keyboard_settings_loaded = 1; + bundle *b = bundle_create(); + UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE); + struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs)); + if (cbs == NULL) { + bundle_free(b); + return 0; + } + cbs->layout_cb = _ug_layout_cb; + cbs->result_cb = _ug_result_cb; + cbs->destroy_cb = _ug_destroy_cb; + cbs->priv = (void *)ad; + if (!b) { + free(cbs); + return 0; + } + + bundle_add(b, "navi_btn_left", + pwlock_get_string(IDS_COM_BODY_PREVIOUS)); + bundle_add(b, "navi_btn_right", pwlock_get_string(IDS_COM_SK_NEXT)); + + ad->keyboard_ug = + ug_create(NULL, "keyboard-setting-wizard-efl", UG_MODE_FULLVIEW, b, + cbs); + + bundle_free(b); + free(cbs); + if (!ad->keyboard_ug) { + _DBG("Get keyboard setting ug failed\n"); + ad->state = _ST_TIME; + return 0; + } + ad->current_ug = ad->keyboard_ug; + evas_object_show(ad->win); + return 1; +} + +int show_dialer(struct appdata *ad) +{ + _DBG("%s,%d", __func__, __LINE__); + if (!ad) + return 0; + ad->ui_type = _UI_DIALER; + + bundle *b; + b = bundle_create(); + UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE); + struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs)); + if (cbs == NULL) { + bundle_free(b); + return 0; + } + cbs->layout_cb = _ug_layout_cb; + cbs->result_cb = NULL; + cbs->destroy_cb = _ug_destroy_cb; + cbs->priv = (void *)ad; + + if (!b) { + free(cbs); + return 0; + } + + bundle_add(b, "emergency_dialer", "emergency"); + ad->dialer_ug = ug_create(NULL, "dialer-efl", UG_MODE_FULLVIEW, b, cbs); + bundle_free(b); + free(cbs); + if (!ad->dialer_ug) { + _DBG("dialer ug failed\n"); + return 0; + } + ad->current_ug = ad->dialer_ug; + evas_object_show(ad->win); + return 1; +} + +void show_popup(struct appdata *ad, const char *mesg, Eina_Bool mode) +{ + if (!ad) { + return; + } + Evas_Object *pp; + Evas_Object *button1; + Evas_Object *button2; + ad->previous_ui_type = ad->ui_type; + + if (ad->popup) { + evas_object_del(ad->popup); + ad->popup = NULL; + } + ecore_imf_context_input_panel_hide(elm_entry_imf_context_get + (_editfield_entry_get + (ad->entry_layout))); + pp = elm_popup_add(ad->win); + ad->popup = pp; + evas_object_size_hint_weight_set(pp, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + elm_object_text_set(pp, mesg); + if (EINA_TRUE == mode) { + elm_popup_timeout_set(pp, 3); + } else { + button1 = elm_button_add(pp); + elm_object_text_set(button1, pwlock_get_string(IDS_COM_SK_OK)); + elm_object_part_content_set(pp, "button1", button1); + evas_object_smart_callback_add(button1, "clicked", _pp_rsp_ok_cb, + ad); + + button2 = elm_button_add(pp); + elm_object_text_set(button2, pwlock_get_string(IDS_COM_SK_CANCEL)); + elm_object_part_content_set(pp, "button2", button2); + evas_object_smart_callback_add(button2, "clicked", _pp_rsp_cancel_cb, + ad); + } + remove_waiting_popup(ad); + evas_object_show(pp); +} + +void show_waiting_popup(struct appdata *ad, const char *msg_str) +{ + if (!ad) { + return; + } + Evas_Object *popup = NULL; + Evas_Object *progressbar = NULL; + Evas_Object *box = NULL; + Evas_Object *label = NULL; + + remove_waiting_popup(ad); + + popup = elm_popup_add(ad->win); + ad->waiting_popup = popup; + box = elm_box_add(popup); + if (msg_str != NULL) { + label = elm_label_add(popup); + elm_object_style_set(label, "popup_description/default"); + elm_label_line_wrap_set(label, EINA_TRUE); + elm_object_text_set(label, msg_str); + evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(label, EVAS_HINT_FILL, + EVAS_HINT_FILL); + evas_object_show(label); + elm_box_pack_end(box, label); + } + + progressbar = elm_progressbar_add(popup); + elm_object_style_set(progressbar, "pending_list"); + elm_progressbar_pulse(progressbar, EINA_TRUE); + evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, + EVAS_HINT_FILL); + evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + elm_progressbar_pulse(progressbar, EINA_TRUE); + evas_object_show(progressbar); + elm_box_pack_end(box, progressbar); + evas_object_show(box); + elm_object_content_set(popup, box); + evas_object_show(popup); + +} + +void remove_waiting_popup(struct appdata *ad) +{ + if (!ad) { + return; + } + if (ad->waiting_popup) { + evas_object_del(ad->waiting_popup); + ad->waiting_popup = NULL; + } +} + +Eina_Bool show_puk_do(void *data) +{ + _DBG("%s, %d begin", __func__, __LINE__); + struct appdata *ad = (struct appdata *)data; + + show_puk(ad); + ad->state = _ST_SIM_PUKCNF; + + return ECORE_CALLBACK_CANCEL; +} diff --git a/src/util.c b/src/util.c new file mode 100755 index 0000000..242c47f --- /dev/null +++ b/src/util.c @@ -0,0 +1,224 @@ +/* + * Copyright (c) 2000 - 2012 Samsung Electronics Co., Ltd All Rights Reserved + * + * This file is part of <pwlock> + * Written by <Seungtaek Chung> <seungtaek.chung@samsung.com>, <Mi-Ju Lee> <miju52.lee@samsung.com>, <Xi Zhichan> <zhichan.xi@samsung.com> + * + * PROPRIETARY/CONFIDENTIAL + * + * This software is the confidential and proprietary information of SAMSUNG ELECTRONICS ("Confidential Information"). + * You shall not disclose such Confidential Information and shall use it only in accordance + * with the terms of the license agreement you entered into with SAMSUNG ELECTRONICS. + * SAMSUNG make no representations or warranties about the suitability of the software, + * either express or implied, including but not limited to the implied warranties of merchantability, + * fitness for a particular purpose, or non-infringement. + * SAMSUNG shall not be liable for any damages suffered by licensee as a result of using, + * modifying or distributing this software or its derivatives. + * + */ + +#include <stdio.h> +#include <stdarg.h> +#include <appcore-common.h> +#include <Ecore_X.h> +#include <Elementary.h> +#include <fcntl.h> +#include <sys/types.h> +#include <sys/socket.h> +#include <sys/un.h> +#include <poll.h> +#include <stdio.h> +#include <libintl.h> +#include <glib.h> + +#include "util.h" + +#define LINEMAX 256 +#define MAXFILELEN 1048576 + +#define PHLOCK_SOCK_PREFIX "/tmp/phlock" +#define PHLOCK_SOCK_MAXBUFF 65535 + +const char *sys_str_table[] = { + "IDS_COM_SK_SET", + "IDS_COM_SK_DONE", + "IDS_COM_BODY_ENTER_PASSWORD", + "IDS_COM_BODY_PREVIOUS", + "IDS_COM_SK_NEXT", + "IDS_COM_SK_OK", + "IDS_COM_SK_CANCEL", +}; + +const char *app_str_table[] = { + "IDS_IDLE_BODY_AUTOMATIC", + "IDS_IDLE_HEADER_NETWORK_LOCK", + "IDS_IDLE_HEADER_PHONE_LOCK", + "IDS_IDLE_HEADER_PIN_LOCK", + "IDS_IDLE_HEADER_PUK_LOCK", + "IDS_IDLE_HEADER_SIM_BLOCKED", + "IDS_IDLE_HEADER_SIM_LOCK", + "IDS_IDLE_BODY_1_ATTEMPT_LEFT", + "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY", + "IDS_IDLE_BODY_ENTER_NEW_PIN", + "IDS_IDLE_BODY_ENTER_PIN", + "IDS_IDLE_BODY_ENTER_PUK", + "IDS_IDLE_BODY_INCORRECT_PIN", + "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN", + "IDS_IDLE_BODY_INCORRECT_PUK", + "IDS_IDLE_BODY_LANGUAGE_NOT_SUPPORTED", + "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY", + "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY", + "IDS_IDLE_BODY_PASSWORD_MUST_BE_4_DIGITS_LONG", + "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT", + "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY", + "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER", + "IDS_IDLE_BODY_UNABLE_TO_READ_SIM_CARD_LANGUAGE", + "IDS_IDLE_BODY_WRONG_PASSWORD", + "IDS_IDLE_BUTTON_CANCEL", + "IDS_IDLE_BUTTON_DIALER", + "IDS_IDLE_HEADER_DISPLAY_LANGUAGE", + "Do you want to skip Setup Wizard?", + "IDS_IDLE_BODY_PASSWORD_EMPTY", + "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED", + "IDS_IDLE_BODY_NEW_PIN", + "IDS_IDLE_BODY_PIN", + "IDS_IDLE_BODY_PUK", + "IDS_IDLE_POP_PIN_BLOCKED", + "IDS_IDLE_POP_PIN_UNBLOCKED", + "IDS_IDLE_BODY_CONFIRM_NEW_PIN", + "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT", + "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT", + "%d to %d digits or letters required", + "Passwords do not match", + "PIN code has been changed", + "SIM card error", + "%d s left,please try later!", + "Please input password again after 30 seconds.", + "Checking SIM..." +}; + +void pwlock_log_t(char *fmt, ...) +{ + va_list ap; + FILE *fd = 0; + char buf[LINEMAX] = { 0, }; + char debugString[LINEMAX] = { 0, }; + + va_start(ap, fmt); + vsnprintf(buf, sizeof(buf), fmt, ap); + va_end(ap); + int fileLen = 0; + struct tm local_t; + time_t current_time = 0; + bzero((char *)&debugString, LINEMAX); + time(¤t_time); + gmtime_r(¤t_time, &local_t); + int len = snprintf(debugString, sizeof(debugString), + "[%d-%02d-%02d, %02d:%02d:%02d]: ", + local_t.tm_year + 1900, local_t.tm_mon + 1, + local_t.tm_mday, local_t.tm_hour, local_t.tm_min, + local_t.tm_sec); + if (len == -1) { + return; + } else { + debugString[len] = '\0'; + } + len = g_strlcat(debugString, buf, LINEMAX); + if (len >= LINEMAX) { + return; + } else { + debugString[len] = '\n'; + } + if ((fd = fopen(LOGFILE, "at+")) == NULL) { + PWLOCK_ERR("File fopen fail for writing Pwlock information"); + } else { + int pid = -1; + if (fwrite(debugString, strlen(debugString), 1, fd) < 1) { + PWLOCK_ERR + ("File fwrite fail for writing Pwlock information"); + fclose(fd); + if ((pid = fork()) < 0) { + } else if (pid == 0) { + execl("/bin/rm", "rm", "-f", LOGFILE, + (char *)0); + } + } else { + fseek(fd, 0l, SEEK_END); + fileLen = ftell(fd); + if (fileLen > MAXFILELEN) { + fclose(fd); + if ((pid = fork()) < 0) { + return; + } else if (pid == 0) { + execl("/bin/rm", "rm", "-f", LOGFILE, + (char *)0); + } + } else + fclose(fd); + } + } +} + +static void win_del(void *data, Evas_Object * obj, void *event) +{ + elm_exit(); +} + +Evas_Object *create_win(const char *name) +{ + Evas_Object *eo; + int w, h; + + eo = elm_win_add(NULL, name, ELM_WIN_BASIC); + if (eo) { + elm_win_title_set(eo, name); + elm_win_borderless_set(eo, EINA_TRUE); + evas_object_smart_callback_add(eo, "delete,request", + win_del, NULL); + ecore_x_window_size_get(ecore_x_window_root_first_get(), + &w, &h); + evas_object_resize(eo, w, h); + } + + return eo; +} + +Evas_Object *load_edj(Evas_Object * parent, const char *file, const char *group) +{ + Evas_Object *eo; + int r; + + eo = elm_layout_add(parent); + if (eo) { + r = elm_layout_file_set(eo, file, group); + if (!r) { + evas_object_del(eo); + return NULL; + } + + evas_object_size_hint_weight_set(eo, + EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + } + + return eo; +} + +char *pwlock_get_string(int id) +{ + _DBG("get string id : %d\n", id); + + char *str = NULL; + + if (id < IDS_PWLOCK_SYSTEM_STRING_MAX) { + str = dgettext("sys_string", sys_str_table[id]); + } else { + str = + dgettext("pwlock", + app_str_table[id - IDS_PWLOCK_SYSTEM_STRING_MAX]); + } + + _DBG("get string : %s\n", str); + + return str; +} |