summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJinkun Jang <jinkun.jang@samsung.com>2013-03-13 01:38:11 +0900
committerJinkun Jang <jinkun.jang@samsung.com>2013-03-13 01:38:11 +0900
commit36f20f52a1d035d10e0bcfac4125d67cfc6ff03a (patch)
tree20bc360a5c906db06dbcd2ffbc967297767ec63b
parent80695614233c7e90e9ac9d38cd816f9fbeb07d52 (diff)
downloadpwlock-36f20f52a1d035d10e0bcfac4125d67cfc6ff03a.tar.gz
pwlock-36f20f52a1d035d10e0bcfac4125d67cfc6ff03a.tar.bz2
pwlock-36f20f52a1d035d10e0bcfac4125d67cfc6ff03a.zip
Tizen 2.1 base
-rwxr-xr-xCMakeLists.txt104
-rwxr-xr-xINSTALL33
-rwxr-xr-xLICENSE.Flora205
-rwxr-xr-xNOTICE3
-rwxr-xr-xdebian/compat1
-rwxr-xr-xdebian/control17
-rwxr-xr-xdebian/org.tizen.pwlock.install.in6
-rwxr-xr-xdebian/org.tizen.pwlock.postinst21
-rwxr-xr-xdebian/rules119
-rwxr-xr-xinclude/langs.h32
-rwxr-xr-xinclude/pwlock.h164
-rwxr-xr-xinclude/tapi.h84
-rwxr-xr-xinclude/ui-callback.h38
-rwxr-xr-xinclude/ui.h86
-rwxr-xr-xinclude/util.h124
-rw-r--r--org.tizen.pwlock.manifest26
-rw-r--r--org.tizen.pwlock.xml9
-rwxr-xr-xpackaging/org.tizen.pwlock.spec64
-rw-r--r--po/CMakeLists.txt24
-rwxr-xr-xpo/az.po129
-rwxr-xr-xpo/bg.po129
-rwxr-xr-xpo/ca.po129
-rwxr-xr-xpo/cs.po129
-rwxr-xr-xpo/da.po129
-rwxr-xr-xpo/de_DE.po129
-rwxr-xr-xpo/el_GR.po129
-rwxr-xr-xpo/en.po129
-rwxr-xr-xpo/en_PH.po129
-rwxr-xr-xpo/en_US.po129
-rwxr-xr-xpo/es_ES.po129
-rwxr-xr-xpo/es_MX.po129
-rwxr-xr-xpo/et.po129
-rwxr-xr-xpo/eu.po129
-rwxr-xr-xpo/fi.po129
-rwxr-xr-xpo/fr_CA.po129
-rwxr-xr-xpo/fr_FR.po129
-rwxr-xr-xpo/ga.po129
-rwxr-xr-xpo/gl.po129
-rwxr-xr-xpo/hr.po129
-rwxr-xr-xpo/hu.po129
-rwxr-xr-xpo/hy.po129
-rwxr-xr-xpo/is.po129
-rwxr-xr-xpo/it_IT.po129
-rwxr-xr-xpo/ja_JP.po129
-rwxr-xr-xpo/ka.po129
-rwxr-xr-xpo/kk.po129
-rwxr-xr-xpo/ko_KR.po129
-rwxr-xr-xpo/lt.po129
-rwxr-xr-xpo/lv.po129
-rwxr-xr-xpo/mk.po129
-rwxr-xr-xpo/nb.po129
-rwxr-xr-xpo/nl_NL.po129
-rwxr-xr-xpo/pl.po129
-rwxr-xr-xpo/pt_BR.po129
-rwxr-xr-xpo/pt_PT.po129
-rwxr-xr-xpo/ro.po129
-rwxr-xr-xpo/ru_RU.po129
-rwxr-xr-xpo/sk.po129
-rwxr-xr-xpo/sl.po129
-rwxr-xr-xpo/sr.po129
-rwxr-xr-xpo/sv.po129
-rwxr-xr-xpo/tr_TR.po129
-rwxr-xr-xpo/uk.po129
-rwxr-xr-xpo/uz.po129
-rwxr-xr-xpo/zh_CN.po129
-rwxr-xr-xpo/zh_HK.po129
-rwxr-xr-xpo/zh_SG.po129
-rwxr-xr-xpo/zh_TW.po129
-rwxr-xr-xres/CMakeLists.txt16
-rw-r--r--res/edje/images/A01-9_bg.pngbin0 -> 409575 bytes
-rw-r--r--res/edje/images/A01-9_button_background_nomal_dim.pngbin0 -> 3045 bytes
-rw-r--r--res/edje/images/A01-9_button_background_nomal_focus.pngbin0 -> 3003 bytes
-rw-r--r--res/edje/images/A01-9_button_background_nomal_nomal.pngbin0 -> 3045 bytes
-rw-r--r--res/edje/images/A01-9_button_background_nomal_press.pngbin0 -> 3411 bytes
-rw-r--r--res/edje/images/A01-9_button_bottom_nomal.pngbin0 -> 2965 bytes
-rw-r--r--res/edje/images/A01-9_button_bottom_nomal_dim.pngbin0 -> 2965 bytes
-rw-r--r--res/edje/images/A01-9_button_bottom_nomal_focus.pngbin0 -> 3003 bytes
-rw-r--r--res/edje/images/A01-9_button_bottom_nomal_press.pngbin0 -> 3411 bytes
-rw-r--r--res/edje/images/A01-9_icon_no_sim.pngbin0 -> 8713 bytes
-rw-r--r--res/edje/pwlock-button.edc958
-rw-r--r--res/edje/pwlock-lock-ui.edc116
-rw-r--r--res/edje/pwlock-menu-greeting.edc388
-rw-r--r--res/edje/pwlock-nosim-ui.edc186
-rw-r--r--res/edje/pwlock.edc16
-rw-r--r--res/edje/sounds/S_Touch_30ms.wavbin0 -> 24740 bytes
-rw-r--r--res/images/A01-9_controlbar_icon_Next.pngbin0 -> 3176 bytes
-rw-r--r--res/images/A01-9_controlbar_icon_Previous.pngbin0 -> 3243 bytes
-rw-r--r--res/images/A01-9_controlbar_icon_Skip.pngbin0 -> 3351 bytes
-rw-r--r--res/images/A01-9_controlbar_icon_scan.pngbin0 -> 3449 bytes
-rw-r--r--res/langlist.xml52
-rwxr-xr-xsb-conf0
-rwxr-xr-xsrc/langs.c163
-rwxr-xr-xsrc/pwlock.c1175
-rwxr-xr-xsrc/tapi.c574
-rwxr-xr-xsrc/ui-callback.c194
-rwxr-xr-xsrc/ui.c1862
-rwxr-xr-xsrc/util.c263
97 files changed, 13444 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100755
index 0000000..e2df47f
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,104 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(pwlock C)
+
+SET(SRCS
+ ./src/pwlock.c
+ ./src/tapi.c
+ ./src/util.c
+ ./src/ui.c
+ ./src/ui-callback.c
+ ./src/langs.c
+)
+
+SET(VENDOR "org.tizen")
+SET(PACKAGE ${PROJECT_NAME})
+SET(PKGNAME "${VENDOR}.${PACKAGE}")
+#SET(DEBPKGNAME "deb.${PKGNAME}")
+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-1
+ bundle
+ ecore-imf
+ ecore-x
+ eina
+ evas
+ ecore
+ edje
+ ecore-input
+ glib-2.0
+ gio-2.0
+ openssl
+ aul
+ sysman
+ ail
+ accounts-svc
+ appsvc
+ iniparser
+ capi-system-info
+ libxml-2.0
+)
+
+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}\"")
+
+#ADD_DEFINITIONS("-DPWLOCK_ENABLE_TUTORIAL")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS})
+
+# install desktop file & bin
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PKGNAME}.xml DESTINATION /usr/share/packages)
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
+
+# i18n
+ADD_SUBDIRECTORY(po)
+ADD_SUBDIRECTORY(res)
diff --git a/INSTALL b/INSTALL
new file mode 100755
index 0000000..3915bad
--- /dev/null
+++ b/INSTALL
@@ -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
+
diff --git a/LICENSE.Flora b/LICENSE.Flora
new file mode 100755
index 0000000..4425b3b
--- /dev/null
+++ b/LICENSE.Flora
@@ -0,0 +1,205 @@
+Flora License
+
+Version 1.0, May, 2012
+
+http://floralicense.org/license/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction,
+and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by
+the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and
+all other entities that control, are controlled by, or are
+under common control with that entity. For the purposes of
+this definition, "control" means (i) the power, direct or indirect,
+to cause the direction or management of such entity,
+whether by contract or otherwise, or (ii) ownership of fifty percent (50%)
+or more of the outstanding shares, or (iii) beneficial ownership of
+such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity
+exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications,
+including but not limited to software source code, documentation source,
+and configuration files.
+
+"Object" form shall mean any form resulting from mechanical
+transformation or translation of a Source form, including but
+not limited to compiled object code, generated documentation,
+and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form,
+made available under the License, as indicated by a copyright notice
+that is included in or attached to the work (an example is provided
+in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form,
+that is based on (or derived from) the Work and for which the editorial
+revisions, annotations, elaborations, or other modifications represent,
+as a whole, an original work of authorship. For the purposes of this License,
+Derivative Works shall not include works that remain separable from,
+or merely link (or bind by name) to the interfaces of, the Work and
+Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original
+version of the Work and any modifications or additions to that Work or
+Derivative Works thereof, that is intentionally submitted to Licensor
+for inclusion in the Work by the copyright owner or by an individual or
+Legal Entity authorized to submit on behalf of the copyright owner.
+For the purposes of this definition, "submitted" means any form of
+electronic, verbal, or written communication sent to the Licensor or
+its representatives, including but not limited to communication on
+electronic mailing lists, source code control systems, and issue
+tracking systems that are managed by, or on behalf of, the Licensor
+for the purpose of discussing and improving the Work, but excluding
+communication that is conspicuously marked or otherwise designated
+in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity
+on behalf of whom a Contribution has been received by Licensor and
+subsequently incorporated within the Work.
+
+"Tizen Certified Platform" shall mean a software platform that complies
+with the standards set forth in the Compatibility Definition Document
+and passes the Compatibility Test Suite as defined from time to time
+by the Tizen Technical Steering Group and certified by the Tizen
+Association or its designated agent.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the
+Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+(except as stated in this section) patent license to make, have made,
+use, offer to sell, sell, import, and otherwise transfer the Work
+solely as incorporated into a Tizen Certified Platform, where such
+license applies only to those patent claims licensable by such
+Contributor that are necessarily infringed by their Contribution(s)
+alone or by combination of their Contribution(s) with the Work solely
+as incorporated into a Tizen Certified Platform to which such
+Contribution(s) was submitted. If You institute patent litigation
+against any entity (including a cross-claim or counterclaim
+in a lawsuit) alleging that the Work or a Contribution incorporated
+within the Work constitutes direct or contributory patent infringement,
+then any patent licenses granted to You under this License for that
+Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+Work or Derivative Works thereof pursuant to the copyright license
+above, in any medium, with or without modifications, and in Source or
+Object form, provided that You meet the following conditions:
+
+ 1. You must give any other recipients of the Work or Derivative Works
+ a copy of this License; and
+ 2. You must cause any modified files to carry prominent notices stating
+ that You changed the files; and
+ 3. You must retain, in the Source form of any Derivative Works that
+ You distribute, all copyright, patent, trademark, and attribution
+ notices from the Source form of the Work, excluding those notices
+ that do not pertain to any part of the Derivative Works; and
+ 4. If the Work includes a "NOTICE" text file as part of its distribution,
+ then any Derivative Works that You distribute must include a readable
+ copy of the attribution notices contained within such NOTICE file,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works, in at least one of the following places:
+ within a NOTICE text file distributed as part of the Derivative Works;
+ within the Source form or documentation, if provided along with the
+ Derivative Works; or, within a display generated by the Derivative Works,
+ if and wherever such third-party notices normally appear.
+ The contents of the NOTICE file are for informational purposes only
+ and do not modify the License.
+
+You may add Your own attribution notices within Derivative Works
+that You distribute, alongside or as an addendum to the NOTICE text
+from the Work, provided that such additional attribution notices
+cannot be construed as modifying the License. You may add Your own
+copyright statement to Your modifications and may provide additional or
+different license terms and conditions for use, reproduction, or
+distribution of Your modifications, or for any such Derivative Works
+as a whole, provided Your use, reproduction, and distribution of
+the Work otherwise complies with the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+any Contribution intentionally submitted for inclusion in the Work
+by You to the Licensor shall be under the terms and conditions of
+this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify
+the terms of any separate license agreement you may have executed
+with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+names, trademarks, service marks, or product names of the Licensor,
+except as required for reasonable and customary use in describing the
+origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+agreed to in writing, Licensor provides the Work (and each
+Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+implied, including, without limitation, any warranties or conditions
+of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+PARTICULAR PURPOSE. You are solely responsible for determining the
+appropriateness of using or redistributing the Work and assume any
+risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+whether in tort (including negligence), contract, or otherwise,
+unless required by applicable law (such as deliberate and grossly
+negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special,
+incidental, or consequential damages of any character arising as a
+result of this License or out of the use or inability to use the
+Work (including but not limited to damages for loss of goodwill,
+work stoppage, computer failure or malfunction, or any and all
+other commercial damages or losses), even if such Contributor
+has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+the Work or Derivative Works thereof, You may choose to offer,
+and charge a fee for, acceptance of support, warranty, indemnity,
+or other liability obligations and/or rights consistent with this
+License. However, in accepting such obligations, You may act only
+on Your own behalf and on Your sole responsibility, not on behalf
+of any other Contributor, and only if You agree to indemnify,
+defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason
+of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Flora License to your work
+
+To apply the Flora License to your work, attach the following
+boilerplate notice, with the fields enclosed by brackets "[]"
+replaced with your own identifying information. (Don't include
+the brackets!) The text should be enclosed in the appropriate
+comment syntax for the file format. We also recommend that a
+file or class name and description of purpose be included on the
+same "printed page" as the copyright notice for easier
+identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Flora License, Version 1.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://floralicense.org/license/
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/NOTICE b/NOTICE
new file mode 100755
index 0000000..5fa11d2
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,3 @@
+Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
+Except as noted, this software is licensed under Flora License, Version 1.
+Please, see the LICENSE file for Flora License terms and conditions.
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..7793482
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,17 @@
+Source: pwlock
+Section: devel
+Priority: extra
+Maintainer: Sunyeop Hwang <sunyeop.hwang@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, libail-0-dev, libaccounts-svc-dev, libappsvc-dev, iniparser-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..b0d8ad6
--- /dev/null
+++ b/debian/org.tizen.pwlock.install.in
@@ -0,0 +1,6 @@
+@PREFIX@/bin/*
+@PREFIX@/data/
+@PREFIX@/res/*
+@PREFIX@/res/images/*
+@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..5665988
--- /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/pwlock/first_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..87f0572
--- /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/langs.h b/include/langs.h
new file mode 100755
index 0000000..3676954
--- /dev/null
+++ b/include/langs.h
@@ -0,0 +1,32 @@
+/*
+ * pwlock
+ *
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef __PWLOCK_LANG_H__
+#define __PWLOCK_LANG_H__
+
+typedef struct _pwlock_lang_entry {
+ char* title;
+ char* locale;
+ int number;
+} pwlock_lang_entry;
+
+int pwlock_langlist_load(void);
+int pwlock_langlist_destroy(void);
+const char *pwlock_get_lang_title(void);
+#endif /* __PWLOCK_LANG_H__ */
diff --git a/include/pwlock.h b/include/pwlock.h
new file mode 100755
index 0000000..5af79c0
--- /dev/null
+++ b/include/pwlock.h
@@ -0,0 +1,164 @@
+/*
+ * pwlock
+ *
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#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"
+#include "ui-gadget.h"
+
+#if !defined(PACKAGE)
+#define PACKAGE "org.tizen.pwlock"
+#endif
+
+#if !defined(LOCALEDIR)
+#define LOCALEDIR "/usr/apps/org.tizen.pwlock/res/locale"
+#endif
+
+#if !defined(EDJDIR)
+#define EDJDIR "/usr/apps/"PACKAGE"/res/edje"
+#endif
+
+#if !defined(IMAGEDIR)
+#define IMAGEDIR "/usr/apps/"PACKAGE"/res/images"
+#endif
+
+#define EDJFILE EDJDIR"/"PACKAGE".edj"
+
+typedef enum _BUTTON_STATE {
+ BUTTON_STATE_NONE = 0,
+ BUTTON_STATE_NEXT_CLICKED = 1,
+ BUTTON_STATE_PREV_CLICKED = 2
+} BUTTON_STATE;
+
+struct appdata {
+ Evas_Object *win;
+
+ Evas_Object *layout_main;
+ Evas_Object *layout_contents;
+ Evas_Object *layout_entry;
+ Evas_Object *layout_second_entry;
+
+ Evas_Object *elm_bg;
+ Evas_Object *elm_navigation_frame;
+ Evas_Object *elm_button_dial;
+ Evas_Object *elm_button_done;
+ Evas_Object *elm_conform;
+
+ int ui_type;
+ int previous_ui_type;
+
+ int state;
+ TelSimLockType_t sub_state; /* for lock sub state */
+ Ecore_Idler *idler;
+
+ int is_first_boot; /* for checking first boot */
+ int is_exec_after_bootup; /* for calling pwlock from other module */
+ int is_no_sim;
+ int retry_cnt;
+
+ int alpha_window_status; /* for alpha */
+ int date_and_time_settings_loaded;
+ int language_settings_loaded; /* check the language ug first loaded or not */
+ int lock_view_loaded; /* check the lock view loaded for sim card changed */
+ int lock_app_launched;
+
+ char *entry_str;
+ char *pin_str; /* only for new pin */
+ char *msg;
+ Ecore_Timer *pTimerId; /* for vconf timer id */
+ int pin_changed;
+ enum sim_stat sim_status;
+ struct tapi *t;
+ ui_gadget_h dialer_ug;
+ ui_gadget_h language_ug;
+ ui_gadget_h connection_ug;
+ ui_gadget_h date_ug;
+ ui_gadget_h current_ug;
+ Evas_Object *time_ug_layout;
+ Evas_Object *wifi_ug_layout;
+ int kill_ug; /* If 1 killed by "previous", else killed by "next" button */
+ int date_and_time_previous;
+ int cancel_setup; /* 1 means not show setup wizard,0 means show */
+ Evas_Object *popup;
+ Evas_Object *waiting_popup;
+ int win_type; /* it is set if pwlock is set to ECORE_X_WINDOW_TYPE_NOTIFICATION */
+ int tapi_smc_sid; /* it is tapi resgistered sid for smc lab test */
+
+ BUTTON_STATE btn_evt_state;
+};
+
+enum {
+ STR_E_PW, /* 0 */
+ STR_E_PIN,
+ STR_E_NEW,
+ STR_R_PIN,
+ STR_E_PUK,
+ STR_I_PUN, /* 5 */
+ STR_I_PUK,
+ STR_A_LEFT,
+ STR_DONE,
+ STR_DIAL,
+ STR_W_PW, /* 10 */
+ STR_N_MAT,
+ STR_LANG,
+ STR_SET,
+ STR_CANCEL,
+ STR_ERR_SIMLANG, /* 15 */
+ STR_ERR_UNSUPP,
+ STR_BLOCK,
+ STR_SIM_LOCK,
+ STR_NETWORK_LOCK_NCK,
+ STR_NETWORK_LOCK_NSCK, /* 20 */
+ STR_NETWORK_LOCK_SPCK,
+ STR_NETWORK_LOCK_CCK,
+ STR_PW_LENGTH, /* 23 */
+};
+
+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_NOSIM,
+ _ST_TIME,
+ _ST_GREETING,
+ _ST_CONNECTION,
+ _ST_TUTORIAL,
+ _ST_FINISH,
+ _ST_MAX,
+};
+
+extern const char *strtbl[];
+void set_win_prop(struct appdata *ad, int type);
+void do_state(struct appdata *ad);
+void do_state_directly(int state, void *data);
+
+#endif /* __PWLOCK_H__ */
diff --git a/include/tapi.h b/include/tapi.h
new file mode 100755
index 0000000..cecc1c8
--- /dev/null
+++ b/include/tapi.h
@@ -0,0 +1,84 @@
+/*
+ * pwlock
+ *
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef __PWLOCK_TAPI_H__
+#define __PWLOCK_TAPI_H__
+
+#include <tapi_common.h>
+#include <TapiUtility.h>
+#include <ITapiSim.h>
+
+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,
+ SIM_LOCK_INFO
+};
+
+struct pwlock_tapi_info {
+ enum sim_stat st; /* RETRY, OK, ERROR */
+ int retry_cnt;
+};
+
+struct tapi {
+ TapiHandle *handle;
+ struct tapi_event *evt;
+ int evt_sz;
+
+ void *cb_data;
+ void (*cb) (struct pwlock_tapi_info *, void *);
+};
+
+struct tapi_event {
+ char *event;
+ void (*tapi_notification_cb)(TapiHandle *handle, const char *noti_id, void *data, void *user_data);
+};
+
+struct tapi *pwlock_tapi_init(void (*cb) (struct pwlock_tapi_info *, void *), void *data);
+void pwlock_tapi_exit(struct tapi **t);
+int pwlock_tapi_ready_check(void);
+int pwlock_tapi_get_sim_lock_info(struct tapi* t);
+
+enum sim_stat pwlock_tapi_check_sim(struct tapi *t, int *changed);
+
+/* tapi wrapper */
+int pwlock_tapi_verify_pins(struct tapi *t, char *code);
+int pwlock_tapi_verify_puks(struct tapi *t, char *code, char *newcode);
+int pwlock_tapi_verify_lock(struct tapi *t, char *code);
+int pwlock_tapi_disable_net_pers(struct tapi *t, char *code, TelSimLockType_t type);
+
+/* callbacks */
+void pwlock_tapi_noti_modem_power_cb(TapiHandle *handle, const char *noti_id, void *data, void *user_data);
+void pwlock_tapi_noti_sim_status_cb(TapiHandle *handle, const char *noti_id, void *data, void *user_data);
+void pwlock_tapi_verify_sim_pins_and_puks_cb(TapiHandle *handle, int result, void *data, void *user_data);
+void pwlock_tapi_disable_sim_facility_cb(TapiHandle *handle, int result, void *data, void *user_data);
+void pwlock_tapi_get_sim_lock_info_cb(TapiHandle *handle, int result, void *data, void *user_data);
+
+#endif /* __PWLOCK_TAPI_H__ */
diff --git a/include/ui-callback.h b/include/ui-callback.h
new file mode 100755
index 0000000..61100ef
--- /dev/null
+++ b/include/ui-callback.h
@@ -0,0 +1,38 @@
+/*
+ * pwlock
+ *
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef __PWLOCK_UI_CALLBACK_H__
+#define __PWLOCK_UI_CALLBACK_H__
+
+void pwlock_greeting_next_cb(void *data, Evas_Object * obj, void *e);
+void pwlock_nosim_prev_cb(void *data, Evas_Object * obj, void *e);
+void pwlock_nosim_skip_cb(void *data, Evas_Object * obj, void *e);
+void pwlock_tutorial_prev_cb(void *data, Evas_Object * obj, void *e);
+void pwlock_tutorial_next_cb(void *data, Evas_Object * obj, void *e);
+void pwlock_ug_connection_layout_cb(ui_gadget_h ug, enum ug_mode mode,
+ void *priv);
+void pwlock_ug_connection_result_cb(ui_gadget_h ug, service_h service,
+ void *priv);
+void pwlock_ug_connection_destroy_cb(ui_gadget_h ug, void *priv);
+void pwlock_popup_exit_ok_cb(void *data, Evas_Object * e, void *ei);
+void pwlock_popup_exit_cancel_cb(void *data, Evas_Object * e, void *ei);
+void pwlock_finish_prev_cb(void *data, Evas_Object * obj, void *e);
+void pwlock_finish_cb(void *data, Evas_Object * obj, void *e);
+
+#endif /* __PWLOCK_UI_CALLBACK_H__ */
diff --git a/include/ui.h b/include/ui.h
new file mode 100755
index 0000000..3d9c7f6
--- /dev/null
+++ b/include/ui.h
@@ -0,0 +1,86 @@
+/*
+ * pwlock
+ *
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#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, //skipable view starts from here
+ _UI_NOSIM,
+ _UI_TIME,
+ _UI_KEYBOARD,
+ _UI_FACEBOOK,
+ _UI_DIALER,
+ _UI_GREETING,
+ _UI_CONNECTION,
+ _UI_DATA_MIGRATION,
+ _UI_TUTORIAL,
+ _UI_FINISH,
+ /*_UI_POPUP,*/
+};
+
+int show_splash_screen(struct appdata *ad);
+int show_greeting(struct appdata *ad);
+int show_connection(struct appdata *ad);
+int show_tutorial(struct appdata *ad);
+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_nosim(struct appdata *ad);
+int show_time(struct appdata *ad);
+int show_keyboard_setting(struct appdata *ad);
+int show_finish(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_accesibility(struct appdata *ad);
+void show_popup(struct appdata *ad, const char *mesg, Eina_Bool mode);
+void show_popup_ask_exit(struct appdata *ad, const char *mesg);
+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);
+void update_pw_entry(struct appdata *ad, char *input_data);
+
+Evas_Object *pwlock_add_layout_from_edj(Evas_Object *parent, const char *file,
+ const char *group);
+#endif /* __PWLOCK_UI_H__ */
diff --git a/include/util.h b/include/util.h
new file mode 100755
index 0000000..b788233
--- /dev/null
+++ b/include/util.h
@@ -0,0 +1,124 @@
+/*
+ * pwlock
+ *
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#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(char *fmt, ...);
+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
+
+#define PWLOCK_MEMFREE(ptr) \
+ do { \
+ if (ptr != NULL) { \
+ free(ptr); \
+ ptr = NULL; \
+ } \
+ } while(0);
+
+enum {
+ IDS_COM_SK_DONE = 0,
+ IDS_COM_BODY_ENTER_PASSWORD,
+ IDS_COM_BODY_PREVIOUS,
+ IDS_COM_SK_NEXT,
+ IDS_COM_SK_OK,
+ IDS_COM_SK_CANCEL,
+ IDS_COM_SK_START,
+
+ IDS_PWLOCK_SYSTEM_STRING_MAX,
+};
+
+enum {
+ IDS_IDLE_BODY_AUTOMATIC = IDS_PWLOCK_SYSTEM_STRING_MAX,
+ IDS_IDLE_HEADER_NETWORK_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_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY,
+ IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY,
+ 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_WRONG_PASSWORD,
+ IDS_IDLE_BUTTON_DIALER,
+ IDS_IDLE_HEADER_DISPLAY_LANGUAGE,
+ IDS_IDLE_BODY_PASSWORD_EMPTY,
+ IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED,
+ IDS_IDLE_POP_PASSWORDS_NOT_MATCH,
+ IDS_IDLE_POP_PIN_CHANGED,
+ IDS_IDLE_POP_SIM_CARD_ERROR,
+ IDS_IDLE_POP_CHECKING_SIM_CARD_ING,
+ IDS_IDLE_BODY_GREETING_WELCOME,
+ IDS_SCM_BODY_WELCOME_E,
+ IDS_STU_BODY_SELECT_LANGUAGE,
+ IDS_ST_SK_EMERGENCY_CALL,
+ IDS_ST_BODY_TAP_TO_SET_UP,
+ IDS_COM_SK_SKIP,
+ IDS_ST_BODY_INSTALTAB_FINISH,
+ IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE,
+ IDS_STU_POP_SETUP_COMPLETE,
+ IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE,
+ IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG,
+ IDS_ST_BUTTON_TRY_AGAIN_ABB,
+ 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);
+void pwlock_tolower(char *src, char *dest);
+#endif /* __PWLOCK_UTIL_H__ */
diff --git a/org.tizen.pwlock.manifest b/org.tizen.pwlock.manifest
new file mode 100644
index 0000000..b0b7126
--- /dev/null
+++ b/org.tizen.pwlock.manifest
@@ -0,0 +1,26 @@
+<manifest>
+ <define>
+ <domain name="org.tizen.pwlock"/>
+ <request>
+ <smack request="system::homedir" type="arwxt"/>
+ <smack request="system::vconf" type="arwxt"/>
+ <smack request="system::syslogd" type="w"/>
+ <smack request="system::use_internet" type="r"/>
+ <smack request="xorg" type="w"/>
+ <smack request="isf" type="r"/>
+ <smack request="system::app_logging" type="w"/>
+ <smack request="ail::db" type="rw"/>
+ <smack request="dbus" type="w"/>
+ </request>
+ <permit>
+ <smack permit="dbus" type="w"/>
+ </permit>
+ </define>
+ <request>
+ <domain name="org.tizen.pwlock"/>
+ </request>
+ <assign>
+ <filesystem path="/usr/share/applications/org.tizen.pwlock.desktop" label="_" />
+ <filesystem path="/usr/share/packages/org.tizen.pwlock.xml" label="_" />
+ </assign>
+</manifest>
diff --git a/org.tizen.pwlock.xml b/org.tizen.pwlock.xml
new file mode 100644
index 0000000..0ed3b0c
--- /dev/null
+++ b/org.tizen.pwlock.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.pwlock" version="0.4.0" install-location="internal-only">
+ <label>Pwlock</label>
+ <author email="sunyeop.hwang@samsung.com" href="www.samsung.com">Sunyeop Hwang</author>
+ <description>Password Lock Appication</description>
+ <ui-application appid="org.tizen.pwlock" exec="/usr/apps/org.tizen.pwlock/bin/pwlock" nodisplay="true" multiple="false" type="capp" taskmanage="false">
+ <label>Pwlock</label>
+ </ui-application>
+</manifest>
diff --git a/packaging/org.tizen.pwlock.spec b/packaging/org.tizen.pwlock.spec
new file mode 100755
index 0000000..a329cbe
--- /dev/null
+++ b/packaging/org.tizen.pwlock.spec
@@ -0,0 +1,64 @@
+%define PREFIX /usr/apps/org.tizen.pwlock
+
+Name: org.tizen.pwlock
+Summary: Password Lock application
+Version: 0.4.0
+Release: 1
+Group: TBD
+License: TBD
+Source0: %{name}-%{version}.tar.gz
+
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(ui-gadget-1)
+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(accounts-svc)
+BuildRequires: pkgconfig(appsvc)
+BuildRequires: pkgconfig(sysman)
+BuildRequires: pkgconfig(capi-base-common)
+BuildRequires: pkgconfig(iniparser)
+BuildRequires: pkgconfig(capi-system-info)
+BuildRequires: pkgconfig(libxml-2.0)
+BuildRequires: gettext
+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}
+# cmake does not have a good dependency and make parallel will fail
+# make %{?jobs:-j%jobs}
+make
+
+%install
+%make_install
+
+%post
+GOPTION="-g 6514"
+vconftool $GOPTION set -t bool db/pwlock/first_boot "1" -f
+vconftool $GOPTION set -t int memory/pwlock/state "0" -f -i
+
+%files
+%manifest org.tizen.pwlock.manifest
+%defattr(-,root,root,-)
+%attr(4755,root,root) /usr/apps/org.tizen.pwlock/bin/pwlock
+/usr/apps/org.tizen.pwlock/bin/pwlock
+/usr/apps/org.tizen.pwlock/res/locale/*/LC_MESSAGES/pwlock.mo
+/usr/share/packages/org.tizen.pwlock.xml
+/usr/apps/org.tizen.pwlock/res/langlist.xml
+/usr/apps/org.tizen.pwlock/res/edje/*.edj
+/usr/apps/org.tizen.pwlock/res/images/*.png
+
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
new file mode 100644
index 0000000..a4757f2
--- /dev/null
+++ b/po/CMakeLists.txt
@@ -0,0 +1,24 @@
+# for i18n
+
+SET(POFILES az.po bg.po ca.po cs.po da.po de_DE.po el_GR.po en_PH.po en.po en_US.po es_ES.po es_MX.po et.po eu.po fi.po fr_CA.po fr_FR.po ga.po gl.po hr.po hu.po hy.po is.po it_IT.po ja_JP.po ka.po kk.po ko_KR.po lt.po lv.po mk.po nb.po nl_NL.po pl.po pt_BR.po pt_PT.po ro.po ru_RU.po sk.po sl.po sr.po sv.po tr_TR.po uk.po uz.po zh_CN.po zh_HK.po zh_SG.po zh_TW.po)
+
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+ SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+ MESSAGE("PO: ${pofile}")
+ GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+ GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+ SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+ ADD_CUSTOM_COMMAND(
+ OUTPUT ${moFile}
+ COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+ DEPENDS ${absPofile}
+ )
+ INSTALL(FILES ${moFile}
+ DESTINATION ${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/az.po b/po/az.po
new file mode 100755
index 0000000..534f1e1
--- /dev/null
+++ b/po/az.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Yeni PINi təsdiq et"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Parol boşdur"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "%d-%d rəqəm tələb olunur"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "PIN səhvdir. 1 cəhd qalmışdır"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Yanlış PIN. %d cəhd qalır"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Yeni PIN"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "P I N"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "P U K"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN blok edildi"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN blokirovkadan çıxarıldı"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Şəbəkə 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 bloklanmışdır"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "SIM kilidi"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "1 cəhd qalmışdır"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Birgə fərdiləşmə aktivdir. İdarəetmə açarını daxil edin"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Yeni PINi daxil edin"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "PIN daxil et"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "PUK daxil et"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Yanlış PIN"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Yanlış PIN.\nXahiş olunur yenidən cəhd edin"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Şəbəkə fərdiləşdirməsi aktivdir. İdarəetmə açarını daxil edin"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Şəbəkə altqrup fərdiləşdirməsi aktivdir. İdarəetmə açarını daxil edin"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d cəhd qalıb"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Xidmət provayderi fərdiləşdirməsi aktivdir. İdarəetmə açarını daxil edin"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "SIM kart mümkün deyil. Xidmət provayderiniz ilə əlaqə saxlayın"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Yanlış şifrə"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Nömrəyığan"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Displey dili"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "SIM kart yoxlanır..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Xoş gəlmisiniz!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Dili seç"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Təcili zəng"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Quraşdırmaq üçün vur"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Finiş"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Cihaz quruldu və istifadəyə hazırdır"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Quraşdırma tamamlandı"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Cihazı söndürün, batareyanı çıxardın və SIM kartı ehtiyatla qızılı kontakt səthi aşağı olmaqla daxil edin. Kəsik künc batareydan batareyadan uzaq tərəfdə olmalıdır\nİndi bunu etmək istəmirsinizsə, daha sonra SIM kartınızı daxil etməyi unutmayın. Bunu edənə kimi cihazın əksər funksiyaları işləməyəcək"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Təkrar cəhd et"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Avtomatik"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Burax"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Cihazda SIM kart yoxdur"
+
diff --git a/po/bg.po b/po/bg.po
new file mode 100755
index 0000000..d5d83aa
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_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.\nМоля, опитайте пак"
+
+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_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_WRONG_PASSWORD"
+msgstr "Грешна парола"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Набиращ"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Език за дисплея"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Проверка на SIM картата..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Добре дошли!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Избор на език"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Спешно повикване"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Чукнете, за да настроите"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Край"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Устройството е настроено и готово за използване"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Настройването е завършено"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Изключете устройството, извадете батерията и внимателно поставете SIM картата със златните клеми надолу. Подрязаният ъгъл трябва да се пада в далечния ъгъл спрямо батерията\nАко предпочитате да прескочите сега, обезателно поставете SIM картата си по-късно. Докато не го направите, повечето от функциите на устройството ви няма да работят"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Нов опит"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Автоматично"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Преск."
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "В устройството няма SIM карта"
+
diff --git a/po/ca.po b/po/ca.po
new file mode 100755
index 0000000..8b4e69c
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Confirmar nou PIN"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Contrasenya buida"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "Es requereixen de %d a %d dígits"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "PIN incorrecte. Queda 1 intent"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Codi PIN incorrecte. Queden %d intents"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Nou PIN"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN bloquejat"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN desbloquejat"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Bloqueig de xarxa"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "Bloqueig PIN"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "Bloqueig PUK"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "SIM bloquejada"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "Bloqueig SIM"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "Queda 1 intent"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalització corporativa habilitada. Introdueixi la clau de control"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Introduir nou PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Introdueixi PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Introdueixi PUK"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "PIN incorrecte"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "PIN incorrecte.\nTornar a intentar"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalització de xarxa habilitada. Introdueixi la clau de control"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalització de subconjunt de xarxa habilitada. Introdueixi la clau de control"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "Queden %d intents"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalització de proveïdor de serveis habilitada. Introdueixi la clau de control"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "Targeta SIM no disponible. Contacti amb el seu proveïdor de serveis"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Contrasenya incorrecta"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Marcador"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Idioma de visualització"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Comprovant targeta SIM..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Benvingut!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Seleccionar idioma"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Trucada d'emergència"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Toqui per a configurar"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Acabar"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "El dispositiu està configurat i llest per utilitzar-se"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Configuració completa"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Apagui el dispositiu, retiri la bateria i insereixi amb cura la targeta SIM amb el contacte daurat cap avall. La cantonada retallada ha de quedar el més lluny possible de la bateria\nSi prefereix ometre aquest pas ara, asseguri's d'inserir la targeta SIM més tard. Fins que no ho faci, la majoria de les funcions del dispositiu no funcionaran"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Reintentar"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automàtica"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Ometre"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "No hi ha cap targeta SIM al dispositiu"
+
diff --git a/po/cs.po b/po/cs.po
new file mode 100755
index 0000000..732d144
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Potvrdit nový PIN"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Nevyplněné heslo"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "Požadováno %d až %d číslic"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "Chybný PIN kód. Zbývá 1 pokus"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Chybný PIN kód. Zbývá %d pokusů"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Nový PIN kód"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN zablokován"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN odblokován"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Zámek sítě ověřen"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "Zámek PIN"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "Zámek PUK"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "SIM karta blokována"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "Zámek karty SIM"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "Zbývá 1 pokus"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Bylo zapnuto podnikové přizpůsobení. Zadejte řídicí klíč"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Zadejte nový PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Zadat PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Zadejte PUK"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Chybný PIN"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Chybný PIN kód.\nOpakujte zadání"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Bylo zapnuto přizpůsobení sítě. Zadejte řídicí klíč"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Bylo zapnuto přizpůsobení podmnožiny sítě. Zadejte řídicí klíč"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "Počet zbývajících pokusů: %d"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Bylo zapnuto přizpůsobení poskytovatele služby. Zadejte řídicí klíč"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "SIM karta je nedostupná. Obraťte se na poskytovatele služeb"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Nesprávné heslo"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Číselník"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Jazyk displeje"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Probíhá kontrola SIM karty..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Vítejte!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Vybrat jazyk"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Tísňové volání"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Nastavte klepnutím sem"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Dokončit"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Zařízení je nastaveno a připraveno k použití"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Nastavení bylo dokončeno"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Vypněte zařízení, vyjměte baterii a opatrně vložte SIM kartu otočenou zlatými kontakty dolů. Zkosený roh musí být co nejdále od baterie\nPokud chcete tento krok přeskočit, nezapomeňte později vložit SIM kartu. Dokud tak neučiníte, nebudete moci používat většinu funkcí zařízení"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Opakovat"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automaticky"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Přeskočit"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "V zařízení není vložena SIM karta"
+
diff --git a/po/da.po b/po/da.po
new file mode 100755
index 0000000..5446202
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Bekræft ny PIN-kode"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Adgangskode tom"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "Der kræves %d til %d cifre"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "Forkert PIN-kode. 1 forsøg tilbage"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Forkert PIN-kode. %d forsøg tilbage"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Ny PIN"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN-kode"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK-kode"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN spærret"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN-kode ikke spærret"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Netværkslås"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "PIN-lås"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "PUK-lås"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "SIM-kortet er blokeret"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "Personlig SIM-lås"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "1 forsøg tilbage"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Firmapersonalisering til. Tryk på Kontrol-tast"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Angiv ny PIN-kode"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Angiv PIN-kode"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Angiv PUK-kode"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Forkert PIN-kode"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Forkert PIN-kode.\nPrøv igen."
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Netværkspersonalisering til. Tryk på Kontrol-tast"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalisering af netværksundersæt til. Tryk på Kontrol-tast"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d forsøg tilbage"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalisering af tjenesteudbyder til. Tryk på Kontrol-tast"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "SIM-kort ikke tilgængeligt. Kontakt din serviceudbyder"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Forkert adgangskode"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Opkald"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Vis sprog"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Kontrollerer SIM-kort ..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Velkommen!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Vælg sprog"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Nødopkald"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Tryk for at opsætte"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Udfør"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Enhed er konfigureret og klar til brug"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Opsætning fuldført"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Sluk for din enhed, fjern batteriet og isæt SIM-kortet forsigtigt med den guldfarvede side nedad. Det afskårne hjørne skal være længst væk fra batteriet\nHvis du foretrækker at springe dette over nu, skal du sørge for at indsætte dit SIM-kort senere. De fleste af enhedens funktioner virker ikke, før du gør dette"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Prøv igen"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatisk"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Spring over"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Intet SIM-kort i telefon"
+
diff --git a/po/de_DE.po b/po/de_DE.po
new file mode 100755
index 0000000..a0d5ac1
--- /dev/null
+++ b/po/de_DE.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_LOCK"
+msgstr "SIM-Sperre"
+
+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. Entsperrcode 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_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Netzwerkpersonalisierung aktiviert. Entsperrcode eingeben."
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Netzwerk Teil-Personalisierung aktiviert. Entsperrcode eingeben."
+
+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. Entsperrcode 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_WRONG_PASSWORD"
+msgstr "Falsches Passwort"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Wählen"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Anzeigesprache"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "SIM-Karte wird geprüft..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Willkommen!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Sprache auswählen"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Notruf"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Zum Einrichten tippen"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Beenden"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Das Gerät ist eingerichtet und betriebsbereit"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Einrichtung abgeschlossen"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Schalten Sie das Gerät aus, entfernen Sie den Akku und legen Sie die SIM-Karte vorsichtig und mit den Kontaktflächen nach unten ein. Die abgerundete Ecke der Karte sollte dabei am weitesten vom Akku entfernt liegen.\nFalls Sie diesen Schritt jetzt überspringen möchten, sollten Sie die SIM-Karte später einlegen. Ohne SIM-Karte sind die meisten Funktionen Ihres Geräts nicht verfügbar."
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Erneut"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatisch"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Überspr."
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Keine SIM-Karte im Gerät"
+
diff --git a/po/el_GR.po b/po/el_GR.po
new file mode 100755
index 0000000..56261a9
--- /dev/null
+++ b/po/el_GR.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_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_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Εξατομίκευση δικτύου ενεργή. Εισαγάγετε πλήκτρο ελέγχου"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+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_WRONG_PASSWORD"
+msgstr "Λάθος κωδικός"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Επ. κλήσ."
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Γλώσσα εμφάνισης"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Έλεγχος κάρτας SIM..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Καλώς ορίσατε!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Επιλογή γλώσσας"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Κλήση έκτακτης ανάγκης"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Πατήστε για ρύθμιση"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Τέλος"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Η συσκευή ρυθμίστηκε και είναι έτοιμη για χρήση"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Η ρύθμιση ολοκληρώθηκε"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Απενεργοποιήστε τη συσκευή σας, αφαιρέστε τη μπαταρία και τοποθετήστε προσεκτικά την κάρτα SIM με την πλευρά των χρυσών επαφών προς τα κάτω. Η στρογγυλεμένη γωνία θα πρέπει να είναι η πιο απομακρυσμένη πλευρά σε σχέση με τη μπαταρία\nΕάν προτιμάτε να κάνετε παράκαμψη τώρα, φροντίστε να τοποθετήσετε την κάρτα SIM αργότερα. Μέχρι να γίνει αυτό, οι περισσότερες από τις λειτουργίες της συσκευής σας δεν θα είναι διαθέσιμες"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Δοκιμ. ξανά"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Αυτόματα"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Παράβλεψη"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Δεν υπάρχει κάρτα SIM στη συσκευή"
+
diff --git a/po/en.po b/po/en.po
new file mode 100755
index 0000000..ec89262
--- /dev/null
+++ b/po/en.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_LOCK"
+msgstr "Network 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_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_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_WRONG_PASSWORD"
+msgstr "Wrong password"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Dialler"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Display language"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Checking SIM card..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Welcome!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Select language"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Emergency call"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Tap to set up"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Finish"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Device is set up and ready to use"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Setup complete"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Turn off your device, remove the battery, and carefully insert your SIM card with the gold contact side down. The cut-off corner should end up furthest away from the battery\nIf you prefer to skip now, be sure to insert your SIM card later. Until you do, most of your device’s features will not work"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Try again"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatic"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Skip"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "No SIM card in device"
+
diff --git a/po/en_PH.po b/po/en_PH.po
new file mode 100755
index 0000000..62eea10
--- /dev/null
+++ b/po/en_PH.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_LOCK"
+msgstr "Network 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 personalization 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_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Network personalization on. Enter control key"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Network subset personalization on. Enter control key"
+
+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 personalization 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_WRONG_PASSWORD"
+msgstr "Wrong password"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Dialer"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Display language"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Checking SIM card..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Welcome!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Select language"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Emergency call"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Tap to set-up"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Finish"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Device is set up and ready to use"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Setup complete"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Turn off your device, remove the battery, and carefully insert your SIM card with the gold contact side down. The cut-off corner should end up furthest away from the battery\nIf you prefer to skip now, be sure to insert your SIM card later. Until you do, most of your device’s features will not work"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Try again"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatic"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Skip"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "No SIM card in device"
+
diff --git a/po/en_US.po b/po/en_US.po
new file mode 100755
index 0000000..caada1a
--- /dev/null
+++ b/po/en_US.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_LOCK"
+msgstr "Network 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 personalization 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_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Network personalization on. Enter control key"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Network subset personalization on. Enter control key"
+
+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 personalization 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_WRONG_PASSWORD"
+msgstr "Wrong password"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Dialer"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Display language"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Checking SIM card..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Welcome!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Select language"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Emergency call"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Tap to set up"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Finish"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Device is set up and ready to use"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Setup complete"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Turn off your device, remove the battery, and carefully insert your SIM card with the gold contact side down. The cut-off corner should end up furthest away from the battery\nIf you prefer to skip now, be sure to insert your SIM card later. Until you do, most of your device’s features will not work"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Try again"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatic"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Skip"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "No SIM card in device"
+
diff --git a/po/es_ES.po b/po/es_ES.po
new file mode 100755
index 0000000..394173b
--- /dev/null
+++ b/po/es_ES.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Confirme el nuevo código PIN"
+
+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_HEADER_NETWORK_LOCK"
+msgstr "Bloqueo red"
+
+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_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_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_WRONG_PASSWORD"
+msgstr "Contraseña incorrecta"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Marcador"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Idioma para mostrar"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Comprobando tarjeta SIM..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "¡Bienvenido!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Seleccionar idioma"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Llamada de emergencia"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Tocar para configurar"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Finalizar"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "El dispositivo está configurado y listo para usarse"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Configuración completa"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Apague el dispositivo, retire la batería e inserte cuidadosamente la tarjeta SIM con la parte dorada hacia abajo. La esquina recortada debería quedar lo más lejos posible de la batería\nSi prefiere omitir este paso ahora, asegúrese de insertar la tarjeta SIM más tarde. Hasta que no lo haga, la mayoría de funciones del dispositivo no funcionarán"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Reintentar"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automático"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Omitir"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "No hay tarjeta SIM en el dispositivo"
+
diff --git a/po/es_MX.po b/po/es_MX.po
new file mode 100755
index 0000000..7567566
--- /dev/null
+++ b/po/es_MX.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Confirmar nuevo PIN"
+
+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_HEADER_NETWORK_LOCK"
+msgstr "Bloqueo de red"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "Bloqueo de PIN"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "PUK bloqueado"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "Tarjeta SIM bloqueada"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "Bloqueo de tarjeta 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. Introducir clave de control"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Introducir nuevo PIN"
+
+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. Inténtelo de nuevo"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalización de red activada. Introducir clave de control"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalización de subconjunto de red activada. Introducir clave de control"
+
+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. Introducir clave de 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_WRONG_PASSWORD"
+msgstr "Contraseña incorrecta"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Marcador"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Idioma para mostrar"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Comprobando tarjeta SIM…"
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "¡Bienvenido!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Seleccionar idioma"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Llamada de emergencia"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Pulse para configurar"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Finalizar"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "El dispositivo está configurado y listo para usarse"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Configuración completa"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Apague su dispositivo e inserte cuidadosamente su tarjeta SIM en la ranura para la tarjeta SIM. Si prefiere saltar este paso, asegúrese de insertar la tarjeta SIM más tarde. Hasta que lo haga, la mayoría de las funciones de su dispositivo no funcionarán"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Reintentar"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automático"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Omitir"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Inserte tarjeta SIM"
+
diff --git a/po/et.po b/po/et.po
new file mode 100755
index 0000000..d423faf
--- /dev/null
+++ b/po/et.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Kinnita uus PIN"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Parool on tühi"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "%d kuni %d numbrit on nõutud"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "Vale PIN-kood. 1 katse jäänud"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Vale PIN-kood. %d katset jäänud"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Uus PIN"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN-kood on blokeeritud"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN-i blokeering on tühistatud"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Võrgulukk"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "PIN-lukk"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "PUK-lukk"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "SIM on blokeeritud"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "SIM-lukk"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "1 katse on jäänud"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Ettevõtte isikupärastamine on sees. Sisestage kontrollvõti"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Sisestage uus PIN-kood"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Sisestage PIN-kood"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Sisestage PUK-kood"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Vale PIN-kood"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Vale PIN-kood.\nPalun proovige uuesti"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Võrgu isikupärastamine on sees. Sisestage kontrollvõti"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Võrgu alamkomplekti isikupärastamine on sees. Sisestage kontrollvõti"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d katset jäänud"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Teenusepakkuja isikupärastamine on sees. Sisestage kontrollvõti"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "SIM-kaart pole saadaval. Pöörduge oma teenusepakkuja poole"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Vale parool"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Valija"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Ekraani keel"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "SIM-kaardi kontrollimine..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Tere tulemast!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Vali keel"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Hädaabikõne"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Toksake seadistamiseks"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Lõpeta"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Teie telefon on seadistatud ja kasutamiseks valmis"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Seadistamine on lõpule viidud"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Lülitage seade välja, eemaldage aku ja sisestage ettevaatlikult SIM-kaart, kuldsed klemmid allpool. Kaldnurk peab jääma akust kõige kaugemale\nKui soovite selle sammu praegu vahele jätta, sisestage SIM-kaart kindlasti hiljem. Kuni te seda ei tee, ei tööta enamik teie seadme funktsioone"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Proov. veel"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automaatne"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Jäta vah."
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Seadmes pole SIM-kaarti"
+
diff --git a/po/eu.po b/po/eu.po
new file mode 100755
index 0000000..dccb288
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "PIN berria baieztatu"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Pasahitza hutsik"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "%d eta %d zenbaki artean behar dira"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "PIN okerra. Saiakera 1 geratzen da"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "PIN okerra. %d aukera gelditzen zaizkizu"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "PIN berria"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PINa blokeatuta"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PINa desblokeatuta"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Sarearen blokeoa"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "PIN blokeoa"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "PUK blokeoa"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "SIM txartela blokeatuta"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "SIM blokeoa"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "Ahalegin 1 gelditzen zaizu"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Korporazioaren pertsonalizazioa piztuta. Adierazi kontrol tekla"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "PIN berria idatzi"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "PINa idatzi"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "PUKa idatzi"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "PIN okerra"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "PIN okerra.\nBerriz saiatu"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Sare pertsonalizazioa piztuta. Adierazi kontrol tekla"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Sare azpimultzo pertsonalizazioa piztuta. Adierazi kontrol tekla"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d saiakera geratzen dira"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Zerbitzu hornitzaile pertsonalizazioa piztuta. Sakatu kontrola"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "SIM txartela ez dago eskuragarri. Jarri harremanetan zerbitzu hornitzailearekin"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Pasahitz okerra"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Markatzailea"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Pantaila hizkuntza"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "SIM txartela egiaztatzen..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Ongi etorri!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Hizkuntza aukeratu"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Emergentzia deia"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Ukitu ezartzeko"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Amaitu"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Gailua konfiguratuta eta erabiltzeko prest dago"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Instalazioa osatu da"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Itzali zure gailua, kendu bateria eta sartu zure SIM txartela kontuz urre koloreko kontaktuarekin beherantz. Ebakitako ertza bateriatik urrunago dagoen tokian egon beharko litzateke\nOrain salto egitea nahi baduzu, ziurtatu SIM txartela geroago sartzen duzula. Ordura arte, zure gailuaren eginkizun gehienek ez dute funtzionatuko"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Saiatu berriz"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatikoa"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Pasatu"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Ez dago SIM txartelik gailuan"
+
diff --git a/po/fi.po b/po/fi.po
new file mode 100755
index 0000000..62ce5c1
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Vahvista uusi PIN-koodi"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Salasana tyhjä"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "Vaaditaan %d - %d numeroa"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "Virheellinen PIN-koodi. 1 yritys jäljellä"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Virheellinen PIN-koodi. %d yritystä jäljellä"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Uusi PIN-koodi"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN-koodi lukittu"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN-lukitus poistettu"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Verkkolukko"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "PIN-lukitus"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "PUK-lukitus"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "SIM-kortti estetty"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "SIM-kortin lukitus"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "1 yritys jäljellä"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Yrityksen yksilöinti on käytössä. Anna hallintatunnus"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Anna uusi PIN-koodi"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Anna PIN-koodi"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Anna PUK-koodi"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Virheellinen PIN-koodi"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Virheellinen PIN-koodi.\nYritä uudelleen"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Verkon yksilöinti on käytössä. Anna hallintatunnus"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Verkon osittainen yksilöinti on käytössä. Anna hallintatunnus"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d yritystä jäljellä"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Palveluntarjoajan yksilöinti on käytössä. Anna hallintatunnus"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "SIM-kortti ei käytettävissä. Ota yhteyttä palveluntarjoajaan"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Väärä salasana"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Num.val."
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Näyttökieli"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Tarkistetaan SIM-korttia..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Tervetuloa!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Valitse kieli"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Hätäpuhelu"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Määritä napauttamalla"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Valmis"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Laite on määritetty ja valmiina käyttöön"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Asennus valmis"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Katkaise laitteesta virta, irrota akku ja aseta SIM-kortti varovasti laitteeseen niin, että kullattu kontaktipuoli on alaspäin. Katkaistun kulman pitäisi olla kauimpana akusta\nJos haluat ohittaa tämän vaiheen nyt, muista asettaa SIM-kortti laitteeseen myöhemmin. Tätä ennen useimmat laitteen toiminnoista eivät toimi"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Yritä uud."
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automaattinen"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Ohita"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Laitteessa ei ole SIM-korttia"
+
diff --git a/po/fr_CA.po b/po/fr_CA.po
new file mode 100755
index 0000000..0e30453
--- /dev/null
+++ b/po/fr_CA.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Confirmer nouveau NIP"
+
+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 "NIP incorrect. 1 essai restant"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "NIP incorrect. %d essais restants"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Nouveau NIP"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "NIP"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "Code PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "NIP bloqué"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "NIP débloqué"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Verrouillage réseau"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "Verrouillage NIP"
+
+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 de l'entreprise activée. Entrez la clé de contrôle"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Saisir le nouveau NIP"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Saisir le NIP"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Saisir le code PUK"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "NIP incorrect"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "NIP incorrect. Réessayez"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personnalisation du réseau activée. Entrez la clé de contrôle"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personnalisation du sous-réseau activée. Entrez la clé de contrôle"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d essais restants"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personnalisation du fournisseur d'accès activée. Entrez la clé de Contrôle"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "Carte SIM non disponible. Contactez votre fournisseur d'accès"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Mot de passe incorrect"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Pavé"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Langue d'affichage"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Vérification carte SIM..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Bienvenue !"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Sélectionner la langue"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Appel d'urgence"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Touchez pour configurer"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Terminer"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "L'appareil est configuré et prêt à l'emploi"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Configuration terminée"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Éteignez votre appareil, retirez la pile et insérez délicatement votre carte SIM en orientant le côté du contact doré vers le bas. L'encoche doit être du côté opposé à la pile.\nSi vous préférez sauter cette étape, veillez à insérer votre carte SIM plus tard. En attendant, la plupart des fonctions de l'appareil ne fonctionneront pas"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Réessayez"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatique"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Ignorer"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Aucune carte SIM dans le périphérique"
+
diff --git a/po/fr_FR.po b/po/fr_FR.po
new file mode 100755
index 0000000..486f624
--- /dev/null
+++ b/po/fr_FR.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Confirmer le 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_HEADER_NETWORK_LOCK"
+msgstr "Code blocage réseau"
+
+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_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_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_WRONG_PASSWORD"
+msgstr "Mot de passe incorrect"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Clavier"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Langue d'affichage"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Vérification carte SIM..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Bienvenue !"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Sélectionner la langue"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Appel d'urgence"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Appuyez pour configurer"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Terminer"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "L'appareil est configuré et prêt à l'emploi"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Configuration terminée"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Eteignez votre appareil, retirez la batterie et insérez délicatement votre carte SIM en orientant le côté du contact doré vers le bas. Le coin coupé doit être le plus éloigné de la batterie\nSi vous préférez sauter cette étape, veillez à insérer votre carte SIM plus tard. En attendant, la plupart des fonctions de l'appareil ne fonctionneront pas"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Réessayez"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatique"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Ignorer"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Aucune carte SIM dans le périphérique"
+
diff --git a/po/ga.po b/po/ga.po
new file mode 100755
index 0000000..7c1b728
--- /dev/null
+++ b/po/ga.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Deimhnigh PIN nua"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Pasfhocal folamh"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "%d go %d digit de dhíth"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "PIN mícheart. 1 iarracht fágtha"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "PIN mícheart. %d iarrachtaí fágtha"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "PIN nua"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "Cuireadh bac ar PIN"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "Bac bainte ón SIM"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Glas líonra"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "Glas PIN"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "Glas PUK"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "SIM blocáilte"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "Glas SIM"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "1 iarracht fágtha"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Pearsanú corparáideach ar siúl. Iontráil an eochair rialaigh"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Iontráil PIN nua"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Iontráil PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Iontráil PUK"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "PIN mícheart"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "PIN mícheart.\nTriail arís"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Pearsanú líonra ar siúl. Iontráil an eochair rialaigh"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Pearsanú fo-thacair líonra ar siúl. Iontráil an eochair rialaigh"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d iarracht fágtha"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Pearsanú an tsoláthraí seirbhíse ar siúl. Iontráil an eochair rialaigh"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "Níl an cárta SIM ar fáil. Déan teagmháil le do sholáthraí seirbhíse"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Pasfhocal contráilte"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Diaileoir"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Teanga taispeána"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Cárta SIM á sheiceáil..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Fáilte!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Roghnaigh teanga"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Glao éigeandála"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Tapáil le socrú"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Cuir i gcrích"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Tá an gléas socraithe agus réidh le húsáid"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Suiteáil curtha i gcrích"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Cas do ghléas as, bain an ceallra, agus ionsáigh do chárta SIM go cúramach leis an taobh teagmhála óir anuas. Ba cheart go mbeadh an cúinne gearrtha ar an taobh is faide ó do cheallra\nMás fearr leat é a scipeáil anois, cinntigh go n-ionsáfaidh tú do chárta SIM ar ball. Go dtí go ndéanfaidh tú é sin, ní fheidhmeoidh formhór na ngnéithe ar do ghléas"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Triail arís"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Uathoibríoch"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Scipeáil"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Níl aon chárta SIM sa ghléas"
+
diff --git a/po/gl.po b/po/gl.po
new file mode 100755
index 0000000..38961b6
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Confirme novo PIN"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Contrasinal baleiro"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "Requírense entre %d e %d díxitos"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "PIN incorrecto. Queda 1 intento"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "PIN incorrecto. Quedan %d intentos"
+
+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_HEADER_NETWORK_LOCK"
+msgstr "Bloqueo de rede"
+
+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 da SIM"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "Queda 1 intento"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalización Corporativa activada. Pulsa na tecla Control"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Introducir novo PIN"
+
+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.\nVolva intentalo"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalización de rede activada. Pulsa na tecla Control"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalización de rede subset activada. Pulsa na tecla Control"
+
+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 do provedor de servizo activada. Pulsa na tecla Control"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "Non hai tarxeta SIM dispoñible. Ponte en contacto co teu provedor de servizo"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Contrasinal incorrecto"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Marcador"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Ver idioma"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Comprobando tarxeta SIM..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Benvido"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Seleccionar idioma"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Chamada de urxencia"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Toca para configurar"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Finalizar"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "O dispositivo está configurado e listo para usarse"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Configuración completada"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Apaga o teu dispositivo, retira a batería e insire a tarxeta SIM con coidado coa zona dos contactos dourados cara a abaixo. A esquina cortada debe quedar no extremo máis afastado respecto á batería\nSe prefires omitir agora, asegúrate de inserir a tarxeta SIM máis tarde. Ata que o fagas, a maioría das funcións do teu dispositivo non funcionarán"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Reintentar"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automático"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Saltar"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Non hai tarxeta SIM no dispositivo"
+
diff --git a/po/hr.po b/po/hr.po
new file mode 100755
index 0000000..e4d7944
--- /dev/null
+++ b/po/hr.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Potvrdite novi PIN"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Šifra prazna"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "Potrebno %d do %d znamenki"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "Netočan PIN. Preostao 1 pokušaj"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Netočan PIN. Preostalo %d pokušaja"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Novi PIN"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN blokiran"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN deblokiran"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Zaključavanje mreže uspješno"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "PIN zaključavanje"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "PUK zaključan"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "Blokiran SIM"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "SIM zaključavanje"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "Još 1 pokušaj"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Uključena korporativna personalizacija. Unesite kontrolni ključ"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Unesite novi PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Unesite PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Unesite PUK"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Neispravan PIN"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Netočan PIN\nPokušaj ponovno"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Uključena mrežna personalizacija. Unesite kontrolni ključ"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Uključena podmrežna personalizacija. Unesite kontrolni ključ"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d pokušaja preostalo"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Uključena personalizacija davatelja usluga. Unesite kontrolni ključ"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "SIM kartica nije dostupna. Kontaktirajte svog davatelja usluga"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Neispravna šifra"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Biranje"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Jezik teksta"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Provjera SIM kartice..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Dobro došli!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Odaberite jezik"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "SOS poziv"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Dotaknite za postavljanje"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Završi"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Uređaj je postavljen i spreman za korištenje."
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Postavljanje dovršeno"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Isključite uređaj, izvadite bateriju i pažljivo umetnite SIM karticu sa zlatnim kontaktom okrenutim prema dolje. Odrezani kut treba biti usmjeren najdalje od baterije\nAko želite preskočiti sada, umetnite SIM karticu kasnije. Dok to ne napravite većina značajki na vašem uređaju neće raditi"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Ponovite"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatski"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Dalje"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Nema SIM kartice u uređaju"
+
diff --git a/po/hu.po b/po/hu.po
new file mode 100755
index 0000000..c3ff7a5
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Írja be újra az új PIN-kódot!"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Üres jelszó"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "%d–%d számjegy szükséges"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "Hibás PIN kód. Még 1 próbálkozása van"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Helytelen PIN. %d alkalommal próbálkozhat még."
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Új PIN"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN blokkolva"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "A PIN blokkolás feloldva"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Hálózati zár"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "PIN védelem"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "PUK-zár"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "SIM letiltva"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "SIM biztonság"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "Még 1 próbálkozásra van"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Vállalatzár bekapcsolva. A feloldáshoz adja meg a feloldókódot"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Írja be az új PIN-kódot!"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Írja be a PIN-kódot!"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Írja be a PUK-kódot!"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Hibás PIN-kód"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Hibás PIN-kód.\nPróbálja újra"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Hálózatzár bekapcsolva. A feloldáshoz adja meg a feloldókódot"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Alhálózatzár bekapcsolva. A feloldáshoz adja meg a kódot"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d kísérlet maradt."
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Szolgáltatózár bekapcsolva. A feloldáshoz adja meg a feloldókódot"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "A SIM nem elérhető. Forduljon a szolgáltatóhoz"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Téves jelszó"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Tárcsázó"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Kijelző nyelve"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "SIM-kártya ellenőrzése..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Üdvözöljük!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Nyelv kiválasztása"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Segélyhívás"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Érintse meg a beállításhoz"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Befejez"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Az eszköz beállítva, használatra kész"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "A beállítás befejeződött"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Kapcsolja ki az eszközt, vegye ki az akkumulátort, és óvatosan helyezze be a SIM kártyát az aranyszínű érintkezőkkel lefelé. A kártya levágott sarka kerüljön az akkumulátortól távolabbi oldalra\nHa ezt a lépést most kihagyja, ne felejtse el a SIM kártyát később behelyezni. Amíg ezt meg nem teszi, az eszköz legtöbb funkciója nem lesz használható"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Prób. újra"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatikus"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Átugrik"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Nincs SIM kártya az eszközben"
+
diff --git a/po/hy.po b/po/hy.po
new file mode 100755
index 0000000..ab5b540
--- /dev/null
+++ b/po/hy.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_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:\nԿրկին փորձեք:"
+
+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_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_WRONG_PASSWORD"
+msgstr "Սխալ գաղտնաբառ"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Համարհվք."
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Ցուցադրման լեզուն"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "SIM քարտի ստուգում..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Բարի գալու՜ստ:"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Ընտրեք լեզուն"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Հրատապ զանգ"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Թակել նախադրելու համար"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Ավարտ"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Սարքը նախադրված է և պատրաստ է օգտագործման"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Նախադրումն ավարտվեց"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Ձեր սարքն անջատեք, մարտկոցը հեռացրեք և զգուշորեն մտցրեք SIM քարտը՝ ոսկե հպակային կողմը ներքև ուղղված: Շեղատված անկյունը պետք է վերջանա մարտկոցից ամենահեռու դիրքում\nԵթե նախընտրում եք հիմա բաց թողնել, ավելի ուշ SIM քարտն անպայման տեղադրեք: Մինչ այդ, Ձեր սարքի գործառական հնարավորությունների մեծ մասը չի աշխատի"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Նորից փորձեք"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Ավտոմատ"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Բաց թղնլ"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Սարքում SIM քարտ չկա"
+
diff --git a/po/is.po b/po/is.po
new file mode 100755
index 0000000..383b356
--- /dev/null
+++ b/po/is.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Staðfesta nýtt PIN"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Það vantar lykilorð"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "Það þarf að slá inn %d til %d tölustafi"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "Rangt PIN-númer. 1 tilraun eftir"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Rangt PIN-númer. %d tilraunir eftir"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Nýtt PIN-númer"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK-númer"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN-læst"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN er opið"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Kerfislæsing"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "PIN-lás"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "PUK-lás"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "SIM-kortið er læst"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "SIM-lás"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "1 tilraun eftir"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Opið er fyrir sérstillingar fyrirtækis. Ýttu á stjórnunarhnapp"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Tilgreina nýtt PIN-númer"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Sláðu inn PIN-númeri"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Tilgreina PUK-númer"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Rangt PIN-númer"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Rangt PIN-númer.\nReynið aftur"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Opið er fyrir sérstillingar netkerfis. Ýttu á stjórnunarhnapp"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Opið er fyrir sérstillingar kerfisundirflokks. Ýttu á stjórnunarhnapp"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d tilraunir eftir"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Kveikt á stillingum þjónustuveitu. Ýttu á stjórnunarhnapp"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "SIM-kort ekki tiltækt. Hafðu samband við þjónustuveitu"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Rangt lykilorð"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Númeraval"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Skjátungumál"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "SIM-kort athugað..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Velkomin(n)"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Velja tungumál"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Neyðarhringing"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Pikkaðu til að setja upp"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Ljúka"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Tækið er uppsett og tilbúið til notkunar"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Uppsetningu er lokið"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Slökktu á tækinu þínu, fjarlægðu rafhlöðuna og settu SIM-kortið varlega í þannig að gyllti snertiflöturinn snúi niður. Afskorna hornið ætti að lenda lengst frá rafhlöðunni\nEf þú kýst að sleppa því núna skaltu passa upp á að setja SIM-kortið inn síðar. Þar til þú gerir það munu flestir eiginleikar tækisins vera óvirkir"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Reyndu aftur"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Sjálfvirkt"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Sleppa"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Ekkert SIM-kort er í tækinu"
+
diff --git a/po/it_IT.po b/po/it_IT.po
new file mode 100755
index 0000000..2b809fd
--- /dev/null
+++ b/po/it_IT.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_LOCK"
+msgstr "Blocco rete"
+
+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_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_PD_ATTEMPTS_LEFT"
+msgstr "%d tentativi rimasti"
+
+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_WRONG_PASSWORD"
+msgstr "Password errata"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Componi"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Lingua display"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Verifica scheda SIM..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Benvenuto"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Seleziona lingua"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Chiamata di emergenza"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Tocca per eseguire la configurazione"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Fine"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Il dispositivo è configurato e pronto per l'uso"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Configurazione completata"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Spegnete il dispositivo, rimuovete la batteria e inserite con attenzione la scheda SIM con il contatto dorato rivolto verso il basso. L'angolo smussato deve trovarsi dal lato opposto rispetto alla batteria.\nSe desiderate saltare la procedura guidata, accertatevi di inserire la scheda SIM in seguito, altrimenti la maggior parte delle funzioni del dispositivo non funzionerà"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Riprova"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatica"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Ignora"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Nessuna scheda SIM inserita"
+
diff --git a/po/ja_JP.po b/po/ja_JP.po
new file mode 100755
index 0000000..532c3f7
--- /dev/null
+++ b/po/ja_JP.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_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_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_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_WRONG_PASSWORD"
+msgstr "パスワードが正しくありません。"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "キーパッド"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "言語​表示"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "SIMカードをチェック中..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "ようこそ"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "言語を選択"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "緊急通報"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "タップして設定"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "完了"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "端末の設定が完了し、使用可能な状態になりました。"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "セットアップが完了しました。"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "端末の電源をOFFにし、バッテリーを取り外してください。金色の端子面を下側にし、切欠き部分から慎重にSIMカードを挿入してください。\nスキップする場合は、後ほどSIMカードを必ず挿入してください。端末の大部分の機能は、SIMカードを挿入しないと動作しません。"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "再試行"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "自動"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "スキップ"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "端末にSIMカードがありません。"
+
diff --git a/po/ka.po b/po/ka.po
new file mode 100755
index 0000000..7a9fd01
--- /dev/null
+++ b/po/ka.po
@@ -0,0 +1,129 @@
+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 "P I N"
+
+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_HEADER_NETWORK_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 კოდი არასწორია.\nგთხოვთ, თავიდან ცადოთ"
+
+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_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_WRONG_PASSWORD"
+msgstr "პაროლი არასწორია"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "ამკრეფი"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "ეკრანის ენა"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "მოწმდება SIM ბარათი..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "მოგესალმებით!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "ენის შერჩევა"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "საგანგებო ზარი"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "დააკაკუნეთ და მოაწყეთ"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "დასრულება"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "პროგრამა დაყენებულია აპარატში და მზადაა გამოსაყენებლად"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "ინსტალაცია დასრულდა"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "გამორთეთ აპარატი, ამოიღეთ კვების ელემენტი და ფრთხილად ჩადეთ SIM ბარათი ისე, რომ ოქროსფერი კონტაქტები მიმართული იყოს ქვემოთ. წაკვეთილი კუთხე მოქცეული უნდა იყოს კვების ელემენტიდან ყველაზე შორ პოზიციაში\nთუ გირჩევნიათ გამოტოვოთ ეს პროცესი ახლა, არ დაგავიწყდეთ მოგვიანებით ჩადოთ SIM ბარათი. მანამდე კი თქვენი აპარატის ფუნქციების უმეტესობა არ იმუშავებს"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "ისევ ცადეთ"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "ავტომატური"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "გამოტოვე"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "აპარატში არ არის SIM ბარათი"
+
diff --git a/po/kk.po b/po/kk.po
new file mode 100755
index 0000000..e6078fd
--- /dev/null
+++ b/po/kk.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_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.\nҚайта көріңіз"
+
+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_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_WRONG_PASSWORD"
+msgstr "Бұрыс кілтсөз"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Нөмір теруші"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Дисплей тілі"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "SIM кәртішке тексерілуде..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Қош келдіңіз!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Тілді таңдау"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Шұғыл қоңырау шалу"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Реттеу үшін түртіңіз"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Аяқтау"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Құрылғы реттеліп, пайдалануға дайын"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Орнату аяқталды"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Құрылғыңызды өшіріп, батареясын алыңыз, сосын SIM картасының сары байланыс жағын төмен қаратып салыңыз. Кесік бұрышы батареядан алысырақ тұруы керек\nЕгер қазір өткізуді ұйғарсаңыз, SIM картасын кейінірек салыңыз. Оған дейін құрылғыңыздағы көп мүмкіндіктер істемейді"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Қай. көріңіз"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Автоматты түрде"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Өткізу"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Құрылғыда SIM картасы жоқ"
+
diff --git a/po/ko_KR.po b/po/ko_KR.po
new file mode 100755
index 0000000..7208d0e
--- /dev/null
+++ b/po/ko_KR.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_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_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "네트워크 잠금이 실행되어 있습니다. 제어키를 입력하세요"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+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_WRONG_PASSWORD"
+msgstr "비밀번호가 바르지 않습니다"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "키패드"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "언어 선택"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "SIM 확인 중..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "환영합니다!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "언어 선택"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "긴급전화"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "설정하려면 누르세요"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "종료"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "디바이스가 설정되어 사용할 준비가 되었습니다"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "설정되었습니다"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "디바이스를 끄고 배터리를 제거한 후 SIM 카드를 삽입하세요. SIM 카드 삽입 시 SIM 카드의 금색 접촉면이 아래를 향하고, 모서리가 잘린 부분이 위를 향하도록 한 후 삽입하세요\nSIM 카드를 삽입해야 대부분의 기능이 정상적으로 작동합니다. 지금 SIM 카드를 삽입하지 않더라도 나중에 반드시 SIM 카드를 삽입하세요"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "다시 시도"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "자동"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "건너뛰기"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "SIM 카드가 없습니다"
+
diff --git a/po/lt.po b/po/lt.po
new file mode 100755
index 0000000..7ec87a4
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Patvirtinti naują PIN kodą"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Nėra slaptažodžio"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "Reikia nurodyti %d–%d skaitmenis"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "Neteisingas PIN. Liko 1 bandymas"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Neteisingas PIN. Liko %d bandymų"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Naujas PIN"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN kodas"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK kodas"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN kodas užblokuotas"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN kodas atblokuotas"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Tinklo užraktas perduotas"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "PIN užraktas"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "PUK blokavimas"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "SIM užblokuota"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "SIM užrakinimas"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "Liko 1 bandymas"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Įjungtas įmonės personalizavimas. Įveskite valdymo raktą"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Įvesti naują PIN kodą"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Įvesti PIN kodą"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Įvesti PUK kodą"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Netinkamas PIN kodas"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Neteisingas PIN kodas.\nBandykite dar kartą"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Įjungtas tinklo personalizavimas. Įveskite valdymo raktą"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Įjungtas tinklo potinklio personalizavimas. Įveskite valdymo raktą"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d likę bandymai"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Įjungtas paslaugų teikėjo personalizavimas. Įveskite valdymo raktą"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "SIM kortelė nepasiekiama. Kreipkitės į paslaugų teikėją"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Neteisingas slaptažodis"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Rinkimas"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Ekrano kalba"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "SIM kortelė tikrinama..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Sveiki!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Pasirinkti kalbą"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Pagalbos skambučiai"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Bakstelėkite ir nustatykite"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Baigti"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Įrenginys nustatytas ir parengtas naudoti"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Sąranka baigta"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Išjunkite įrenginį, išimkite akumuliatorių ir atsargiai įdėkite SIM kortelę, jos auksinius kontaktus nukreipę žemyn. Kirstas kampas turėtų būti toliausiai nuo akumuliatoriaus\nJei norite praleisti dabar, nepamirškite įdėti SIM kortelės vėliau. Kol taip nepadarysite, dauguma įrenginio funkcijų neveiks"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Bandyti vėl"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatinis"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Praleisti"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Įrenginyje nėra SIM kortelės"
+
diff --git a/po/lv.po b/po/lv.po
new file mode 100755
index 0000000..7b0eb59
--- /dev/null
+++ b/po/lv.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Apstiprināt jauno PIN kodu"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Paroles lauks ir tukšs"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "Ir nepieciešami vismaz %d līdz %d cipari"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "Nepareizs PIN kods. Atlicis 1 mēģinājums"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Nepareizs PIN kods. Atlikuši %d mēģinājumi"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Jauns PIN kods"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN kods bloķēts"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN atbloķēts"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Notikusi tīkla bloķēšana"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "PIN bloķēšana"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "PUK koda bloķēšana"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "SIM bloķēta"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "SIM bloķēšana"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "Atlicis 1 mēģinājums"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Ieslēgta korporatīvā personalizēšana. Ievadiet vadības atslēgu"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Ievadiet jauno PIN kodu"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Ievadiet PIN kodu"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Ievadiet PUK kodu"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Nepareizs PIN"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Nepareizs PIN.\nLūdzu, mēģiniet vēlreiz"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Ieslēgta tīkla personalizēšana. Ievadiet vadības atslēgu"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Ieslēgta tīkla apakškopas personalizēšana. Ievadiet vadības atslēgu"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "Atlikuši %d mēģinājumi"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Ieslēgta pakalpojumu sniedzēja personalizēšana. Ievadiet vadības atslēgu"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "SIM karte nav pieejama. Sazinieties ar pakalpojumu sniedzēju"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Nepareiza parole"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Num.sast."
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Displeja valoda"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Pārbauda SIM karti..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Sveiki!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Izvēlieties valodu"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Ārkārtas zvans"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Pieskarieties, lai iestatītu"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Beigt"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Ierīce ir iestatīta un gatava lietošanai"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Iestatīšana pabeigta"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Izslēdziet ierīci, izņemiet akumulatoru un uzmanīgi ievietojiet SIM karti tā, lai zeltītie kontakti ir vērsti uz leju. Nogrieztajam stūrim jāatrodas vistālāk no akumulatora\nJa pašlaik vēlaties izlaist šo darbību, neaizmirstiet ievietot SIM karti vēlāk. Līdz tam brīdim lielākā daļa ierīces funkciju nedarbosies"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Mēģin. vēlr."
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automātiski"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Izlaist"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Ierīcē nav SIM kartes"
+
diff --git a/po/mk.po b/po/mk.po
new file mode 100755
index 0000000..f2b7731
--- /dev/null
+++ b/po/mk.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_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.\nОбидете се повторно"
+
+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_PD_ATTEMPTS_LEFT"
+msgstr "%d attempts left"
+
+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_WRONG_PASSWORD"
+msgstr "Погрешна лозинка"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Повикувач"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Прикажи јазик"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Проверка на SIM-картичката..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Добредојде!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Избери јазик"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "SOS повик"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Допрете за поставување"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Заврши"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Уредот е поставен и подготвен за употреба"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Поставувањето е завршено"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Исклучете го уредот, извадете ја батеријата и вимателно вметнете ја SIM-картичката со златните контакти надолу. Отсечениот агол треба да биде најдалеку од батеријата\nАко сакате да прескокнете сега, вметнете SIM-картичка подоцна. Дотогаш, повеќето функции на уредот нема да работат"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Повт. обид"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Автоматски"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Прескок."
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Нема SIM-картичка во уредот"
+
diff --git a/po/nb.po b/po/nb.po
new file mode 100755
index 0000000..925fa6b
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Bekreft ny PIN"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Passord er tomt"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "%d til %d tall nødvendig"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "Feil PIN-kode. 1 forsøk gjenstår"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Feil PIN-kode. %d forsøk igjen"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Ny PIN-kode"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN blokkert"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN ikke blokkert"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Nettverkslås"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "PIN-lås"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "PUK-lås"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "SIM-kort låst"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "SIM-lås"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "1 forsøk gjenstår"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Firmapersonalisering på. Angi kontrollnøkkel"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Angi ny PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Angi PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Angi PUK"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Ugyldig PIN"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Feil PIN.\nPrøv på nytt"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Nettverkspersonalisering på. Angi kontrollnøkkel"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Nettverksdelsettpersonalisering på. Angi kontrollnøkkel"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d forsøk igjen"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Tjenesteleverandørpersonalisering på. Angi kontrollnøkkel"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "SIM-kort ikke tilgjengelig. Kontakt din tjenesteleverandør"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Feil passord"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Tastatur"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Skjermspråk"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Kontrollerer SIM-kort..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Velkommen!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Velg språk"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Nødanrop"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Trykk for å konfigurere"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Fullfør"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Enheten er konfigurert og klar til bruk"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Konfigurering fullført"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Skru av enheten, fjern batteriet og sett SIM-kortet forsiktig inn med gullkontaktsiden ned. Det avskårne hjørnet skal være lengst unna batteriet\nHvis du foretrekker å hoppe over dette nå, må du passe på å sette inn SIM-kortet senere. Frem til du har gjort det, vil de fleste av enhetens funksjoner ikke fungere"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Prøv på nytt"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatisk"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Hopp over"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Ingen SIM-kort i enhet"
+
diff --git a/po/nl_NL.po b/po/nl_NL.po
new file mode 100755
index 0000000..7c5c439
--- /dev/null
+++ b/po/nl_NL.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Nieuwe PIN bevestigen"
+
+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_HEADER_NETWORK_LOCK"
+msgstr "Netwerkblokkering"
+
+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 "Nieuwe PIN invoeren"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "PIN invoeren"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "PUK invoeren"
+
+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_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_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_WRONG_PASSWORD"
+msgstr "Onjuist wachtwoord"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Toetsen"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Schermtaal"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "SIM-kaart controleren..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Welkom!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Taal selecteren"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Noodoproep"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Tik om in te stellen"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Voltooien"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Apparaat is ingesteld en klaar voor gebruik"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Instellen voltooid"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Schakel het apparaat uit, verwijder de batterij en plaats de SIM-kaart voorzichtig terug met de gouden contactzijde naar beneden. De afgesneden hoek moet het verste van de batterij af zitten\nAls u dit nu wilt overslaan, moet u de SIM-kaart later plaatsen. Anders zullen de meeste functies van het apparaat niet werken"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Opnieuw"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatisch"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Overslaan"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Geen SIM-kaart in apparaat"
+
diff --git a/po/pl.po b/po/pl.po
new file mode 100755
index 0000000..b52b45b
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Potwierdź nowy PIN"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Hasło puste"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "Wymagana liczba cyfr: od %d do %d"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "Zły kod PIN. Pozostała 1 próba"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Zły kod PIN. Pozostało prób: %d"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Nowy kod PIN"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN zablokowany"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN odblokowany"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Blokada sieci"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "Blokada PIN"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "Blokada PUK"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "Karta SIM zablokowana"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "Blokada SIM"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "Pozostała 1 próba"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalizacja firmowa włączona. Wprowadź klucz kontroli"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Wpisz nowy PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Wpisz PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Wpisz PUK"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Nieprawidłowy PIN"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Nieprawidłowy kod PIN.\nSpróbuj ponownie"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalizacja sieci włączona. Wprowadź klucz kontroli"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalizacja grupy sieci włączona. Wprowadź klucz kontroli"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "Pozostało prób: %d"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalizacja dostawcy usług włączona. Wprowadź klucz kontroli"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "Karta SIM niedostępna. Skontaktuj się z dostawcą usługi"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Błędne hasło"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Ekran wybierania"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Język wyświetlania"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Sprawdzanie karty SIM..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Witamy!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Wybierz język"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Połączenie alarmowe"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Dotknij, aby skonfigurować"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Zakończ"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Urządzenie jest skonfigurowane i gotowe do użytku"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Konfiguracja ukończona"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Wyłącz urządzenie, wyjmij baterię i ostrożnie włóż kartę SIM złotym stykiem skierowanym w dół. Wycięty róg powinien znaleźć się najdalej od baterii.\nJeśli chcesz teraz zrezygnować, włóż kartę SIM później. Dopóki tego nie robisz, większość funkcji urządzenia nie będzie działać"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Ponów próbę"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatyczny"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Pomiń"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Brak karty SIM w urządzeniu"
+
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100755
index 0000000..292b181
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Confirme o novo PIN"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Senha 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 incorreto. Resta 1 tentativa"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "PIN incorreto. 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_HEADER_NETWORK_LOCK"
+msgstr "Bloquear rede"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "Bloqueio do PIN"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "Bloquear 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 ativada. Pressione a tecla de controle"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Insira o novo PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Insira o PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Insira o PUK"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "PIN incorreto"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "PIN incorreto.\nTente novamente"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalização de rede ativada. Pressione a tecla de controle"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalização de subconjunto de rede ativada. Pressione a tecla de controle"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "Restam %d tentativas"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalização do fornecedor de serviços ativada. Pressione a tecla de controle"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "Cartão SIM indisponível. Contate o fornecedor de serviços"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Senha incorreta"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Discador"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Idioma de apresentação"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Verificando cartão SIM..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Bem-vindo(a)!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Selecionar idioma"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Chamada de emergência"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Toque para configurar"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Concluir"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "O dispositivo está configurado e pronto para ser usado"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Configuração concluída"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Desligue seu dispositivo, remova a bateria e insira cuidadosamente o seu cartão SIM com o lado do contato dourado para baixo. O canto cortado deve ficar o mais distante da bateria\nSe preferir não fazer isso agora, certifique-se de inserir seu cartão SIM mais tarde. Até fazê-lo, a maioria dos recursos do dispositivo não funcionarão"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Tente novam."
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automático"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Pular"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Nenhum cartão SIM"
+
diff --git a/po/pt_PT.po b/po/pt_PT.po
new file mode 100755
index 0000000..987ed14
--- /dev/null
+++ b/po/pt_PT.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_LOCK"
+msgstr "Bloqueio de rede efectuado"
+
+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_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_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_WRONG_PASSWORD"
+msgstr "Palavra-passe incorrecta"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Marcador"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Idioma de apresentação"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "A verificar cartão SIM..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Bem-vindo!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Seleccionar idioma"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Chamada de emergência"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Toque para configurar"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Concluir"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "O dispositivo está configurado e pronto para ser utilizado"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Configuração concluída"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Desligue o seu dispositivo, retire a bateria e introduza com cuidado o seu cartão SIM com o contacto dourado virado para baixo. O canto cortado deve ficar para o lado mais afastado da bateria\nSe preferir ignorar agora, não se esqueça de introduzir o seu cartão SIM mais tarde. Até que o faça, a maioria das funções do seu dispositivo não funcionam"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Tente novam."
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automático"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Saltar"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Nenhum cartão SIM no dispositivo"
+
diff --git a/po/ro.po b/po/ro.po
new file mode 100755
index 0000000..6819bae
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Confirmare PIN nou"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Parola lipseşte"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "Sunt necesare între %d şi %d cifre"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "PIN1 incorect. 1 încercare rămasă"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "PIN incorect. %d încercări rămase"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "PIN nou"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "Cod PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "Cod PIN blocat"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN deblocat"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Blocare reţea reuşită"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "Blocare cod PIN"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "Blocare PUK"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "Cartelă SIM blocată"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "Blocare SIM"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "1 încercare rămasă"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalizarea pentru firmă a fost activată. Apăsaţi tasta Control"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Introduceţi PIN nou"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Introduceţi PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Introduceţi PUK"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "PIN incorect"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Cod PIN incorect.\nReîncercaţi"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalizarea pentru reţea a fost activată. Apăsaţi tasta Control"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalizarea pentru subsetul de reţea a fost activată. Apăsaţi tasta Control"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d încercări rămase"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalizarea furnizorului de servicii a fost activată. Apăsaţi tasta Control"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "Cartelă SIM indisponibilă. Contactaţi furnizorul de servicii"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Parolă incorectă"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Apelare"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Limbă de afişare"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Se verifică cartela SIM..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Bun venit!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Selectare limbă"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Apel de urgenţă"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Atingeţi pentru a configura"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Terminare"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Dispozitivul este configurat şi pregătit de utilizare"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Configurare finalizată"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Opriţi dispozitivul, scoateţi bateria şi introduceţi cu atenţie cartela SIM cu partea cu contactele aurii orientată în jos. Colţul decupat trebuie să ajungă în poziţia cea mai îndepărtată de baterie\nDacă preferaţi să omiteţi acum acest pas, introduceţi cartela SIM ulterior. Până atunci, majoritatea caracteristicilor dispozitivului vor fi nefuncţionale"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Reîncercare"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automat"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Sar"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Nu există cartelă SIM în dispozitiv"
+
diff --git a/po/ru_RU.po b/po/ru_RU.po
new file mode 100755
index 0000000..7a777ea
--- /dev/null
+++ b/po/ru_RU.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_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_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Включена личная настройка сети. Введите контрольный ключ"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+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_WRONG_PASSWORD"
+msgstr "Неправильный пароль"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Набор"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Язык"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Проверка SIM-карты..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Добро пожаловать!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Выберите язык"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Экстренный вызов"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Нажмите для настройки"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Готово"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Устройство настроено и готово к использованию"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Настройка завершена"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Отключите устройство, извлеките батарею и аккуратно вставьте SIM-карту так, чтобы золотистые контакты были направлены вниз. Скошенный угол должен находиться дальше всего от батареи\nЕсли вы пропустите это действие сейчас, обязательно вставьте SIM-карту позже. Если не сделать этого, большинство возможностей устройства не будут работать"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Повторить"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Автоматически"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Пропустить"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "SIM-карта отсутствует"
+
diff --git a/po/sk.po b/po/sk.po
new file mode 100755
index 0000000..6b15739
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Potvrdiť nový PIN"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Heslo je prázdne"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "Vyžadované číslice: %d až %d"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "Nesprávny PIN. Zostáva 1 pokus"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Nesprávny PIN. Zostávajúce pokusy: %d"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Nový PIN"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN zablokovaný"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN odblokované"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Zámok siete overený"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "Zámok PIN"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "Zámka PUK"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "SIM je blokovaná"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "Zámok SIM"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "Zostáva 1 pokus"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Firemné prispôsobenie je zapnuté. Zadajte ovládacie tlačidlo"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Zadajte nový PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Zadať PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Zadajte PUK"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Nesprávny PIN"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Neplatný PIN.\nSkúste to znova"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Prispôsobenie siete je zapnuté. Zadajte ovládacie tlačidlo"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Prispôsobenie podsiete je zapnuté. Zadajte ovládacie tlačidlo"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "Počet zostávajúcich pokusov: %d"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Prispôsobenie poskytovateľa služby je zapnuté. Zadajte ovládacie tlačidlo"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "Karta SIM nie je k dispozícii. Kontaktujte poskytovateľa služby"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Nesprávne heslo"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Vytáčanie"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Jazyk zobrazenia"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Kontrola SIM karty..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Vitajte!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Vybrať jazyk"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Tiesňový hovor"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Ťuknutím nainštalujte"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Dokončiť"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Zariadenie je nastavené a pripravené na použitie"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Inštalácia je dokončená"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Vypnite zariadenie, vyberte batériu a správne vložte kartu SIM so zlatou kontaktnou stranou smerom nadol. Zrezaný roh musí byť ďalej od batérie\nAk to teraz nechcete urobiť, nezabudnite neskôr vložiť kartu SIM. Kým to neurobíte, väčšina funkcií zariadenia nebude fungovať"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Skúste znova"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automaticky"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Preskočiť"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Žiadna karta SIM v zariadení"
+
diff --git a/po/sl.po b/po/sl.po
new file mode 100755
index 0000000..f90bb7e
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Potrdite novi PIN"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Geslo je prazno"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "Znaki od %d do %d zahtevani"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "Napačna koda PIN. Še 1 poskus"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Napačna koda PIN. Še %d poskusov"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Nova koda PIN"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN je blokiran"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN sproščen"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Zapore omrežja"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "Zaklepanje PIN"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "Zaklep kode PUK"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "Kartica SIM je blokirana"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "Zaklepanje SIM"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "Preostal je še 1 poskus"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Skupno prilagajanje je vključeno. Vnesite nadzorno tipko"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Vnesite novi PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Vnesite PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Vnesite PUK"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Napačna koda PIN"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Napačna koda PIN.\nPoskusite znova"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Prilagajanje omrežja je vključeno. Vnesite nadzorno tipko"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Prilagajanje podomrežja je vključeno. Vnesite nadzorno tipko"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d preostalih poizkusov"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Prilagajanje ponudnika storitev je vključeno. Vnesite nadzorno tipko"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "Kartica SIM ni na voljo. Obrnite se na ponudnika storitev"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Napačno geslo"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Izbiranje"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Jezik prikaza"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Preverjam kartico SIM ..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Pozdravljeni!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Izberite jezik"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Klic v sili"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Pritisnite za nastavitev"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Konec"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Naprava je nastavljena in pripravljena za uporabo"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Namestitev je končana"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Izklopite napravo, odstranite baterijo in previdno vstavite kartico SIM z zlatim stikom navzdol. Odrezani vogal mora biti najbolj odstranjen od baterije\nČe želite to trenutno preskočiti, morate kartico SIM vnesti pozneje. Dokler je ne vstavite, večina funkcij naprave ne bo delovala"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Posk. znova"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Samodejno"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Preskoči"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "V napravi ni kartice SIM"
+
diff --git a/po/sr.po b/po/sr.po
new file mode 100755
index 0000000..29b54fb
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Potvrdi novi PIN kod"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Nema lozinke"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "Potrebno %d do %d cifara"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "Neispravan PIN kod. 1 pokušaj preostao"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Neispravan PIN. %d pokušaja ostalo"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Novi PIN kod"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN kod"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK kod"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN kod blokiran"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN kod deblokiran"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Zaključavanje mreže uspešno"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "PIN zaključan"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "PUK zaključan"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "SIM kartica blokirana"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "Zaključavanje SIM-a"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "1 pokušaj preostao"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalizacija kompanije uključena. Unesi kontrolni ključ"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Unesi novi PIN kod"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Unesi PIN kod"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Unesi PUK kod"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Neispravan PIN kod"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Neispravan PIN.\nProbaj ponovo"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalizacija mreže uključena. Unesi kontrolni ključ"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalizacija podskupa mreže uključena. Unesi kontrolni ključ"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d pokušaja ostalo"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Personalizacija provajdera uključena. Unesi kontrolni ključ"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "Nema SIM kartice. Kontaktiraj provajdera"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Pogrešna šifra"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Brojčanik"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Jezik prikaza"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Provera SIM kartice..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Dobrodošli!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Izaberi jezik"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Pozivi u hitnim slučajevima"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Kucni za konfigurisanje"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Završi"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Uređaj je konfigurisan i spreman za korišćenje"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Podešavanje završeno"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Isključi uređaj, ukloni bateriju i pažljivo ubaci SIM karticu sa zlatnom stranom kontakta okrenutom nadole. Izrezani ugao bi trebalo da bude što dalje od baterije\nAko sada želiš da preskočiš ovaj korak, obavezno ubaci SIM karticu kasnije. Dok to ne učiniš, većina funkcija u uređaju neće raditi"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Probaj opet"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatski"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Preskoči"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "SIM kartica nije u uređaju"
+
diff --git a/po/sv.po b/po/sv.po
new file mode 100755
index 0000000..cb26285
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Bekräfta ny PIN-kod"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Lösenordet är tomt"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "%d till %d siffror krävs"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "Felaktig PIN-kod. Du har 1 försök kvar"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Fel PIN-kod. %d försök kvar"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Ny PIN-kod"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN låst"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN upplåst"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Nätverkslås"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "PIN-lås"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "PUK-lås"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "SIM har blockerats"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "Personligt SIM-lås"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "1 försök kvar"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Företagsanpassning på. Ange kontrollnyckel"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Ange ny PIN-kod"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "Ange PIN"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "Ange PUK-kod"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Fel PIN-kod"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Fel PIN.\nFörsök igen"
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Nätverksanpassning på. Ange kontrollnyckel"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Anpassning av nätverksdeluppsättning på. Ange kontrollnyckel"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d försök kvar"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Anpassning av tjänsteleverantör på. Ange kontrollnyckel"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "SIM-kort ej tillgängligt. Kontakta tjänsteleverantören"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Fel lösenord"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Knappsats"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Visningsspråk"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Kontrollerar SIM-kortet..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Välkommen!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Välj språk"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Nödsamtal"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Tryck för att konfigurera"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Avsluta"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Enheten är inställd och klar att användas"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Konfigurationen har slutförts"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Stäng av enheten, ta ut batteriet och sätt försiktigt i SIM-kortet med den guldfärgade kontakten nedåt. Det avklippta hörnet ska vara vänt bort från batteriet\nOm du väljer att hoppa över detta nu måste du se till att sätta i SIM-kortet senare. De flesta av funktionerna på enheten fungerar först när SIM-kortet är isatt"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Försök igen"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Automatisk"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Nästa"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Inget SIM-kort i enheten"
+
diff --git a/po/tr_TR.po b/po/tr_TR.po
new file mode 100755
index 0000000..121dbd3
--- /dev/null
+++ b/po/tr_TR.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_LOCK"
+msgstr "Şebeke 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_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_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_WRONG_PASSWORD"
+msgstr "Yanlış şifre"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Tuşlar"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Ekran dili"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "SIM kart kontrol ediliyor..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Hoş Geldiniz!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Dil seç"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Acil arama"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Ayarlamak için dokunun"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Son"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Cihaz kuruldu ve kullanıma hazır"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Kurulum tamamlandı"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Cihazınızı kapatın, pili çıkartın ve dikkatli bir şekilde altın rengi temas noktası aşağı bakacak şekilde SIM kartınızı yerleştirin. Kesik kenarı pilden en uzak noktada olmalıdır\nBunu şimdi atlamayı tercih ederseniz SIM kartınızı daha sonra takmayı unutmayın. Bunu yapana kadar cihazınızın bir çok özelliği çalışmayacaktır"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Tekrar dene"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Otomatik"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Geç"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Cihazda SIM kartı yok"
+
diff --git a/po/uk.po b/po/uk.po
new file mode 100755
index 0000000..d19a6d7
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_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.\nСпробуйте ще раз, будь ласка"
+
+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_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_WRONG_PASSWORD"
+msgstr "Хибний пароль"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Наб. ном."
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Мова дисплея"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "Перевірка SIM-картки..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Ласкаво просимо!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Вибір мови"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Екстрений виклик"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Натисніть, щоб настроїти"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Завершити"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Пристрій налаштований і готовий до використання"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "Настроювання завершено"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Вимкніть пристрій, видаліть акумулятор та обережно вставте SIM-картку стороною із золотим контактом донизу. Скошений кут має знаходитись якнайдалі від акумулятора\nЯкщо ви не бажаєте зробити це зараз, не забудьте вставити SIM-картку пізніше. Без SIM-картки більшість функцій пристрою не працюватиме"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Спроб.ще раз"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Автоматично"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "Пропуст."
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "У пристрої немає SIM-картки"
+
diff --git a/po/uz.po b/po/uz.po
new file mode 100755
index 0000000..a9703a1
--- /dev/null
+++ b/po/uz.po
@@ -0,0 +1,129 @@
+msgid "IDS_IDLE_BODY_CONFIRM_NEW_PIN"
+msgstr "Yangi PIN-kodni tasdiqlash"
+
+msgid "IDS_IDLE_BODY_PASSWORD_EMPTY"
+msgstr "Parol bo‘sh"
+
+msgid "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED"
+msgstr "%d dan %d gacha bo‘lgan xonali raqamlar talab qilinadi"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_1_ATTEMPT_LEFT"
+msgstr "Noto‘g‘ri PIN. 1 urinish qoldi"
+
+msgid "IDS_IDLE_POP_INCORRECT_PIN_PD_ATTEMPTS_LEFT"
+msgstr "Noto‘g‘ri PIN. %d urinish qoldi"
+
+msgid "IDS_IDLE_BODY_NEW_PIN"
+msgstr "Yangi PIN-kod"
+
+msgid "IDS_IDLE_BODY_PIN"
+msgstr "PIN-kod"
+
+msgid "IDS_IDLE_BODY_PUK"
+msgstr "PUK"
+
+msgid "IDS_IDLE_POP_PIN_BLOCKED"
+msgstr "PIN-kod bloklandi"
+
+msgid "IDS_IDLE_POP_PIN_UNBLOCKED"
+msgstr "PIN-kod blokdan chiqarildi"
+
+msgid "IDS_IDLE_HEADER_NETWORK_LOCK"
+msgstr "Tarmoq bloki"
+
+msgid "IDS_IDLE_HEADER_PIN_LOCK"
+msgstr "PIN-kod bloki"
+
+msgid "IDS_IDLE_HEADER_PUK_LOCK"
+msgstr "PUK bloki"
+
+msgid "IDS_IDLE_HEADER_SIM_BLOCKED"
+msgstr "SIM-karta bloklangan"
+
+msgid "IDS_IDLE_HEADER_SIM_LOCK"
+msgstr "SIM-karta bloki"
+
+msgid "IDS_IDLE_BODY_1_ATTEMPT_LEFT"
+msgstr "1 attempt left"
+
+msgid "IDS_IDLE_BODY_CORPORATE_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Korporativ moslashtirish yoq. Nazorat kalitini kiriting"
+
+msgid "IDS_IDLE_BODY_ENTER_NEW_PIN"
+msgstr "Yangi PIN-kod kiriting"
+
+msgid "IDS_IDLE_BODY_ENTER_PIN"
+msgstr "PIN-kod kiriting"
+
+msgid "IDS_IDLE_BODY_ENTER_PUK"
+msgstr "PUK kiriting"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN"
+msgstr "Noto‘g‘ri PIN"
+
+msgid "IDS_IDLE_BODY_INCORRECT_PIN_TRY_AGAIN"
+msgstr "Noto‘g‘ri PIN. Qayta urinib ko‘ring."
+
+msgid "IDS_IDLE_BODY_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Tarmoq moslashtirilishi yoq. Nazorat kalitini kiriting"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Tagtarmoq moslashtirilishi yoq. Nazorat kalitini kiriting"
+
+msgid "IDS_IDLE_BODY_PD_ATTEMPTS_LEFT"
+msgstr "%d urinish qoldi"
+
+msgid "IDS_IDLE_BODY_SERVICE_PROVIDER_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "Xizmat ta’minotchisi moslashtirilishi yoq. Nazorat kalitini kiriting"
+
+msgid "IDS_IDLE_BODY_SIM_CARD_NOT_AVAILABLE_CONTACT_YOUR_SERVICE_PROVIDER"
+msgstr "SIM-kartadan foydalanib bo‘lmaydi. Xizmat ta’minotchingizga murojaat qiling"
+
+msgid "IDS_IDLE_BODY_WRONG_PASSWORD"
+msgstr "Noto‘g‘ri parol"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "Terish tugmasi"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "Displey tili"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "SIM-karta tekshirilmoqda..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "Xush kelibsiz!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "Til tanlang"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "Favqulodda qo‘ng‘iroqlar"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "Sozlash uchun cherting"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "Tugatish"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "Qurilma o‘rnatildi va foydalanish uchun tayyor"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "O‘rntaish bajarildi"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "Qurilmangizni o‘chiring, batareyani chiqaring va SIM-kartaning yaltiroq tomonini pastga qaratgan holda ehtiyotkorlik bilan joylashtiring. SIM-kartaning qirqib olingan burchagi batareyadan eng uzoqda joylashishi lozim\nAgar hozir bu bosqichni o‘tkazib yuborishni afzal ko‘rsangiz, SIM-kartani keyinroq albatta joylashtiring. Buni amalga oshirmaguningizga qadar, qurilmangizning ko‘p funksiyalari ishlamaydi"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "Qayta urin."
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "Avtomatik"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "O‘tkazish"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "Qurilmada SIM-karta yo‘q"
+
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100755
index 0000000..ecbb7eb
--- /dev/null
+++ b/po/zh_CN.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_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_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "网络个人化启动。请输入控制密钥"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+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_WRONG_PASSWORD"
+msgstr "密码错误"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "拨号盘"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "显示语言"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "检查 SIM 卡中..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "欢迎!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "选择语言"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "紧急呼叫"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "点击以设置"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "完成"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "设备已设置并准备使用"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "设置完成"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "关闭您的设备,移除电池,并小心将金属片侧朝下插入您的 SIM 卡。切口角应位于离电池最远处\n如果您想立即跳过,请务必稍后插入您的 SIM 卡。除非您插入 SIM 卡,否则您设备的大多数功能将无法使用"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "重试"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "自动"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "跳过"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "设备中没有SIM卡"
+
diff --git a/po/zh_HK.po b/po/zh_HK.po
new file mode 100755
index 0000000..5ed9308
--- /dev/null
+++ b/po/zh_HK.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_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_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "網絡個人化已開。輸入控制密碼"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+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_WRONG_PASSWORD"
+msgstr "密碼錯誤"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "撥號器"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "顯示語言"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "正在檢查 SIM 卡..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "歡迎!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "選擇語言"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "緊急通話"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "輕觸以設定"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "完成"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "裝置已設定且就緒"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "設定完成"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "關閉裝置、移除電池,然後小心地將金色面朝下插入 SIM 卡。截角處需置於離電池最遠的位置\n若您現在想跳過此步驟,之後請務必於插入 SIM 卡。直到完成前,裝置內多數功能皆無法使用"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "請重試"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "自動"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "跳過"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "裝置中無 SIM 卡"
+
diff --git a/po/zh_SG.po b/po/zh_SG.po
new file mode 100755
index 0000000..24975c5
--- /dev/null
+++ b/po/zh_SG.po
@@ -0,0 +1,129 @@
+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_HEADER_NETWORK_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_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "网络个人化启动。请输入控制密钥"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+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_WRONG_PASSWORD"
+msgstr "密码不符"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "拨号者"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "显示语言"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "检查SIM卡中…"
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "欢迎!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "选择语言"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "紧急号码"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "点击以设置"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "完成"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "设备已设置并准备使用"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "设置完成"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "关闭您的设备,移除电池,并小心将金色接触侧朝下插入您的 SIM 卡。切口角应位于离电池最远处\n如果您偏好立即跳过,请务必稍后插入您的 SIM 卡。除非您插入 SIM 卡,否则您设备的大多数功能将无法使用"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "重试"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "自动"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "略过"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "设备中没有SIM卡"
+
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100755
index 0000000..06cfcfa
--- /dev/null
+++ b/po/zh_TW.po
@@ -0,0 +1,129 @@
+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 不正確。還可嘗試一次"
+
+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_HEADER_NETWORK_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_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+msgstr "開啟網路個性化,請輸入控制碼"
+
+msgid "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY"
+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_WRONG_PASSWORD"
+msgstr "密碼錯誤"
+
+msgid "IDS_IDLE_BUTTON_DIALER"
+msgstr "撥號器"
+
+msgid "IDS_IDLE_HEADER_DISPLAY_LANGUAGE"
+msgstr "顯示語言"
+
+msgid "IDS_IDLE_POP_CHECKING_SIM_CARD_ING"
+msgstr "正在檢查 SIM 卡..."
+
+msgid "IDS_SCM_BODY_WELCOME_E"
+msgstr "歡迎!"
+
+msgid "IDS_STU_BODY_SELECT_LANGUAGE"
+msgstr "選擇語言"
+
+msgid "IDS_ST_SK_EMERGENCY_CALL"
+msgstr "緊急電話"
+
+msgid "IDS_ST_BODY_TAP_TO_SET_UP"
+msgstr "點擊以設定"
+
+msgid "IDS_ST_BODY_INSTALTAB_FINISH"
+msgstr "結束"
+
+msgid "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE"
+msgstr "裝置已設定且就緒"
+
+msgid "IDS_STU_POP_SETUP_COMPLETE"
+msgstr "設定完成"
+
+msgid "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG"
+msgstr "關閉裝置、移除電池,然後小心地將金色面朝下插入 SIM 卡。截角處需置於離電池最遠的位置\n若您現在想略過此步驟,之後請務必於插入 SIM 卡。直到完成前,裝置內多數功能皆無法使用"
+
+msgid "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+msgstr "請重試"
+
+msgid "IDS_IDLE_BODY_AUTOMATIC"
+msgstr "自動"
+
+msgid "IDS_COM_SK_SKIP"
+msgstr "略過"
+
+msgid "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE"
+msgstr "手機沒有插入SIM卡"
+
diff --git a/res/CMakeLists.txt b/res/CMakeLists.txt
new file mode 100755
index 0000000..3136b79
--- /dev/null
+++ b/res/CMakeLists.txt
@@ -0,0 +1,16 @@
+ADD_CUSTOM_TARGET(${PACKAGE}.edj
+ COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/edje/images -sd ${CMAKE_CURRENT_SOURCE_DIR}/edje/sounds
+ ${CMAKE_CURRENT_SOURCE_DIR}/edje/pwlock.edc ${CMAKE_BINARY_DIR}/${PACKAGE}.edj
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/edje/pwlock.edc
+)
+
+ADD_DEPENDENCIES(${PROJECT_NAME} ${PACKAGE}.edj)
+
+#Install EDJ file
+INSTALL(FILES ${CMAKE_BINARY_DIR}/${PACKAGE}.edj DESTINATION ${EDJDIR})
+
+#Install Image files
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/images/ DESTINATION ${IMAGEDIR})
+
+#Install Image files
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/langlist.xml DESTINATION ${RESDIR})
diff --git a/res/edje/images/A01-9_bg.png b/res/edje/images/A01-9_bg.png
new file mode 100644
index 0000000..c083834
--- /dev/null
+++ b/res/edje/images/A01-9_bg.png
Binary files differ
diff --git a/res/edje/images/A01-9_button_background_nomal_dim.png b/res/edje/images/A01-9_button_background_nomal_dim.png
new file mode 100644
index 0000000..1822db1
--- /dev/null
+++ b/res/edje/images/A01-9_button_background_nomal_dim.png
Binary files differ
diff --git a/res/edje/images/A01-9_button_background_nomal_focus.png b/res/edje/images/A01-9_button_background_nomal_focus.png
new file mode 100644
index 0000000..06c39d8
--- /dev/null
+++ b/res/edje/images/A01-9_button_background_nomal_focus.png
Binary files differ
diff --git a/res/edje/images/A01-9_button_background_nomal_nomal.png b/res/edje/images/A01-9_button_background_nomal_nomal.png
new file mode 100644
index 0000000..1822db1
--- /dev/null
+++ b/res/edje/images/A01-9_button_background_nomal_nomal.png
Binary files differ
diff --git a/res/edje/images/A01-9_button_background_nomal_press.png b/res/edje/images/A01-9_button_background_nomal_press.png
new file mode 100644
index 0000000..2c43c71
--- /dev/null
+++ b/res/edje/images/A01-9_button_background_nomal_press.png
Binary files differ
diff --git a/res/edje/images/A01-9_button_bottom_nomal.png b/res/edje/images/A01-9_button_bottom_nomal.png
new file mode 100644
index 0000000..c0a7b91
--- /dev/null
+++ b/res/edje/images/A01-9_button_bottom_nomal.png
Binary files differ
diff --git a/res/edje/images/A01-9_button_bottom_nomal_dim.png b/res/edje/images/A01-9_button_bottom_nomal_dim.png
new file mode 100644
index 0000000..c0a7b91
--- /dev/null
+++ b/res/edje/images/A01-9_button_bottom_nomal_dim.png
Binary files differ
diff --git a/res/edje/images/A01-9_button_bottom_nomal_focus.png b/res/edje/images/A01-9_button_bottom_nomal_focus.png
new file mode 100644
index 0000000..06c39d8
--- /dev/null
+++ b/res/edje/images/A01-9_button_bottom_nomal_focus.png
Binary files differ
diff --git a/res/edje/images/A01-9_button_bottom_nomal_press.png b/res/edje/images/A01-9_button_bottom_nomal_press.png
new file mode 100644
index 0000000..2c43c71
--- /dev/null
+++ b/res/edje/images/A01-9_button_bottom_nomal_press.png
Binary files differ
diff --git a/res/edje/images/A01-9_icon_no_sim.png b/res/edje/images/A01-9_icon_no_sim.png
new file mode 100644
index 0000000..1c52a78
--- /dev/null
+++ b/res/edje/images/A01-9_icon_no_sim.png
Binary files differ
diff --git a/res/edje/pwlock-button.edc b/res/edje/pwlock-button.edc
new file mode 100644
index 0000000..535c03d
--- /dev/null
+++ b/res/edje/pwlock-button.edc
@@ -0,0 +1,958 @@
+#define BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC 249 249 249 255
+#define BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC 249 249 249 255
+#define BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC 249 249 249 255
+#define BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC 249 249 249 102
+#define BUTTON_TEXT_STYLE1_TEXT_DISABLED_COLOR_INC 180 180 1 255
+
+#define BUTTON_TEXT_STYLE2_BG_MIN_INC 100 72
+#define BUTTON_TEXT_STYLE2_VISIBLE_BG_MIN_INC 148 74
+#define BUTTON_TEXT_STYLE2_ICONONLY_BG_MIN_INC 74 74
+#define BUTTON_TEXT_STYLE2_BG_BORDER_INC 5 5 5 5
+#define BUTTON_TEXT_STYLE2_PADDING_MIN_INC 5 3
+#define BUTTON_TEXT_STYLE2_VISIBLE_ICON_RECT_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE2_VISIBLE_PADDING_ICON_TEXT_MIN_INC 10 0
+#define BUTTON_TEXT_STYLE2_VISIBLE_ICON_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE2_ICONONLY_ICON_MIN_MAX_INC 38 38
+#define BUTTON_TEXT_STYLE2_FONT_SIZE_INC 36
+#define BUTTON_TEXT_STYLE2_MULTILINE_FONT_SIZE_INC 32
+
+#define BUTTON_STATE_ENABLED 0
+#define BUTTON_STATE_DISABLED 1
+
+sounds {
+ sample {
+ name: "touch_sound" AS_IS;
+ source: "S_Touch_30ms.wav";
+ }
+}
+
+group { name: "elm/button/base/pwlock/lang_btn";
+ images {
+ image: "A01-9_button_background_nomal_nomal.png" COMP;
+ image: "A01-9_button_background_nomal_press.png" COMP;
+ image: "A01-9_button_background_nomal_dim.png" COMP;
+ image: "A01-9_button_background_nomal_focus.png" COMP;
+ }
+ script {
+ public button_state = BUTTON_STATE_ENABLED;
+ }
+ parts {
+ part { name: "button_image";
+ scale: 0;
+ description { state: "default" 0.0;
+ image {
+ normal: "A01-9_button_background_nomal_nomal.png";
+ border: BUTTON_TEXT_STYLE2_BG_BORDER_INC;
+ border_scale: 0;
+ }
+ }
+ description { state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "A01-9_button_background_nomal_press.png";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "A01-9_button_background_nomal_dim.png";
+ }
+ description { state: "focused" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "A01-9_button_background_nomal_focus.png";
+ }
+ }
+ part { name: "padding_left_top";
+ type: RECT;
+ scale: 0;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ rel2.relative: 0.0 0.0;
+ min: BUTTON_TEXT_STYLE2_PADDING_MIN_INC;
+ fixed: 1 1;
+ visible: 0;
+ }
+ }
+ part { name: "bg";
+ type: RECT;
+ scale: 0;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ min: BUTTON_TEXT_STYLE2_BG_MIN_INC;
+ visible: 0;
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ min: BUTTON_TEXT_STYLE2_VISIBLE_BG_MIN_INC;
+ }
+ description { state: "icononly" 0.0;
+ inherit: "default" 0.0;
+ min: BUTTON_TEXT_STYLE2_ICONONLY_BG_MIN_INC;
+ }
+ }
+ part { name: "padding_right_bottom";
+ type: RECT;
+ scale: 0;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ align: 1.0 1.0;
+ rel1.relative: 1.0 1.0;
+ min: BUTTON_TEXT_STYLE2_PADDING_MIN_INC;
+ fixed: 1 1;
+ visible: 0;
+ }
+ }
+ part { name: "icon_rect";
+ type: RECT;
+ scale: 0;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ min: 0 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "padding_left_top";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "padding_left_top";
+ to_y: "padding_right_bottom";
+ }
+ align: 0.0 0.5;
+ }
+ description { state: "visible" 0.0;
+ visible: 0;
+ min: BUTTON_TEXT_STYLE2_VISIBLE_ICON_RECT_MIN_MAX_INC;
+ max: BUTTON_TEXT_STYLE2_VISIBLE_ICON_RECT_MIN_MAX_INC;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "padding_left_top";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "padding_left_top";
+ to_y: "padding_right_bottom";
+ }
+ align: 0.0 0.5;
+ }
+ description { state: "icononly" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part { name: "padding_after_icon";
+ type: RECT;
+ scale: 0;
+ mouse_events: 0;
+ description { state: "default" 0.0; //when only icon or no icon is there
+ align: 0.0 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to: "icon_rect";
+ }
+ rel2.to: "icon_rect";
+ fixed: 1 0;
+ min: 0 0;
+ visible: 0;
+ }
+ description { state: "visible" 0.0;
+ visible: 0;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to: "icon_rect";
+ }
+ rel2.to: "icon_rect";
+ fixed: 1 0;
+ min: BUTTON_TEXT_STYLE2_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+ }
+ description { state: "icononly" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part { name: "padding_before_text";
+ type: RECT;
+ scale: 0;
+ mouse_events: 0;
+ description { state: "default" 0.0; //when only icon or no icon is there
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.text";
+ to_y: "padding_left_top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.text";
+ to_y: "padding_right_bottom";
+ }
+ fixed: 1 0;
+ min: BUTTON_TEXT_STYLE2_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+ visible: 0;
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 0;
+ clip_to: "clipper";
+ description { state: "default" 0.0;
+ visible: 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "padding_left_top";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "padding_left_top";
+ to_y: "padding_right_bottom";
+ }
+ fixed: 1 0;
+ }
+ description { state: "visible" 0.0;
+ fixed: 1 0;
+ min: BUTTON_TEXT_STYLE2_VISIBLE_ICON_MIN_MAX_INC;
+ max: BUTTON_TEXT_STYLE2_VISIBLE_ICON_MIN_MAX_INC;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "padding_before_text";
+ to_y: "padding_left_top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "padding_before_text";
+ to_y: "padding_right_bottom";
+ }
+ }
+ description { state: "icononly" 0.0;
+ min: BUTTON_TEXT_STYLE2_ICONONLY_ICON_MIN_MAX_INC;
+ max: BUTTON_TEXT_STYLE2_ICONONLY_ICON_MIN_MAX_INC;
+ }
+ }
+ part { name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 0;
+ clip_to: "clipper";
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "padding_after_icon";
+ to_y: "padding_left_top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "padding_right_bottom";
+ }
+ color: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC;
+ text {
+ font: "SLP:style=Medium";
+ size: BUTTON_TEXT_STYLE2_FONT_SIZE_INC;
+ min: 0 0;
+ max: 1 0;
+ text_class: "slp_medium";
+ }
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description { state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 0 0 0 128;
+ }
+ description { state: "disabled_visible" 0.0;
+ inherit: "default" 0.0;
+ color: BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC;
+ visible: 1;
+ }
+ description { state: "focused" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC;
+ }
+ }
+ part { name: "over2";
+ type: RECT;
+ repeat_events: 1;
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "over3";
+ type: RECT;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "clipper";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disabler";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ visible: 0;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+ programs {
+ program { name: "button_click";
+ signal: "mouse,down,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,press" "";
+ after: "button_click_anim";
+ }
+ program { name: "button_click_anim";
+ action: STATE_SET "clicked" 0.0;
+ target: "button_image";
+ after: "text_clicked";
+ }
+ program { name: "text_clicked";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.text", st, 30, vl);
+ if (!strcmp(st, "visible"))
+ set_state(PART:"elm.text", "clicked", 0.0);
+ }
+ }
+ program { name: "button_unpress";
+ action: SIGNAL_EMIT "elm,action,unpress" "";
+ }
+ program { name: "button_mouseout_clicked";
+ signal: "mouse,up,1";
+ source: "over3";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.swallow.content", st, 30, vl);
+ if (strcmp(st, "icononly"))
+ {
+ emit("elm,action,default,text,set", "");
+ set_state(PART:"elm.text", "visible", 0.0);
+ }
+ if (get_int(button_state) != BUTTON_STATE_DISABLED)
+ set_state(PART:"button_image", "default", 0.0);
+ }
+ after: button_unpress;
+ }
+ program { name: "touch_snd";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: PLAY_SAMPLE "touch_sound" 1.0;
+ after: button_unclick3;
+ }
+ program { name: "button_unclick3";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ program { name: "text_show";
+ signal: "elm,state,text,visible";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.swallow.content", st, 30, vl);
+ if (!strcmp(st, "icononly"))
+ {
+ set_state(PART:"elm.swallow.content", "visible", 0.0);
+ set_state(PART:"icon_rect", "visible", 0.0);
+ set_state(PART:"padding_after_icon", "visible", 0.0);
+ set_state(PART:"bg", "visible", 0.0);
+ }
+ if (get_int(button_state) != BUTTON_STATE_DISABLED)
+ set_state(PART:"elm.text", "visible", 0.0);
+ else
+ set_state(PART:"elm.text", "disabled_visible", 0.0);
+ }
+ }
+ program { name: "text_hide";
+ signal: "elm,state,text,hidden";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.swallow.content", st, 30, vl);
+ if (!strcmp(st, "visible"))
+ {
+ set_state(PART:"elm.swallow.content", "icononly", 0.0);
+ set_state(PART:"icon_rect", "icononly", 0.0);
+ set_state(PART:"padding_after_icon", "icononly", 0.0);
+ set_state(PART:"bg", "icononly", 0.0);
+ }
+ set_state(PART:"elm.text", "default", 0.0);
+ }
+ }
+ program { name: "icon_show";
+ signal: "elm,state,icon,visible";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.text", st, 30, vl);
+ if (!strcmp(st, "visible"))
+ {
+ set_state(PART:"elm.swallow.content", "visible", 0.0);
+ set_state(PART:"icon_rect", "visible", 0.0);
+ set_state(PART:"padding_after_icon", "visible", 0.0);
+ set_state(PART:"bg", "visible", 0.0);
+ }
+ else
+ {
+ set_state(PART:"elm.swallow.content", "icononly", 0.0);
+ set_state(PART:"icon_rect", "icononly", 0.0);
+ set_state(PART:"padding_after_icon", "icononly", 0.0);
+ set_state(PART:"bg", "icononly", 0.0);
+ }
+ }
+ }
+ program { name: "icon_hide";
+ signal: "elm,state,icon,hidden";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ target: "padding_after_icon";
+ target: "icon_rect";
+ target: "bg";
+ }
+ program { name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "button_image";
+ target: "disabler";
+ after: "disable_text";
+ }
+ program { name: "disable_text";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.text", st, 30, vl);
+ if (!strcmp(st, "visible"))
+ set_state(PART:"elm.text", "disabled_visible", 0.0);
+ else
+ set_state(PART:"elm.text", "disabled", 0.0);
+ set_int(button_state, BUTTON_STATE_DISABLED);
+ }
+ }
+ program { name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "disabler";
+ after: "enable_text";
+ }
+ program { name: "enable_text";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.text", st, 30, vl);
+ if (!strcmp(st, "disabled_visible"))
+ set_state(PART:"elm.text", "visible", 0.0);
+ else
+ set_state(PART:"elm.text", "default", 0.0);
+ set_int(button_state, BUTTON_STATE_ENABLED);
+ }
+ }
+ program { name: "focused";
+ //signal: "elm,action,focus";
+ //source: "elm";
+ action: STATE_SET "focused" 0.0;
+ target: "button_image";
+ target: "elm.text";
+ }
+ program { name: "unfocused";
+ //signal: "elm,action,unfocus";
+ //source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ after: "unfocus_text";
+ }
+ program { name: "unfocus_text";
+ action: STATE_SET "visible" 0.0;
+ target: "elm.text";
+ }
+ }
+}
+
+group { name: "elm/button/base/pwlock/bottom_btn";
+ images {
+ image: "A01-9_button_bottom_nomal.png" COMP;
+ image: "A01-9_button_bottom_nomal_press.png" COMP;
+ image: "A01-9_button_bottom_nomal_dim.png" COMP;
+ image: "A01-9_button_bottom_nomal_focus.png" COMP;
+ }
+ script {
+ public button_state = BUTTON_STATE_ENABLED;
+ }
+ parts {
+ part { name: "button_image";
+ scale: 0;
+ description { state: "default" 0.0;
+ image {
+ normal: "A01-9_button_bottom_nomal.png";
+ border: BUTTON_TEXT_STYLE2_BG_BORDER_INC;
+ border_scale: 0;
+ }
+ }
+ description { state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "A01-9_button_bottom_nomal_press.png";
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "A01-9_button_bottom_nomal_dim.png";
+ }
+ description { state: "focused" 0.0;
+ inherit: "default" 0.0;
+ image.normal: "A01-9_button_bottom_nomal_focus.png";
+ }
+ }
+ part { name: "padding_left_top";
+ type: RECT;
+ scale: 0;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ rel2.relative: 0.0 0.0;
+ min: BUTTON_TEXT_STYLE2_PADDING_MIN_INC;
+ fixed: 1 1;
+ visible: 0;
+ }
+ }
+ part { name: "bg";
+ type: RECT;
+ scale: 0;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ min: BUTTON_TEXT_STYLE2_BG_MIN_INC;
+ visible: 0;
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ min: BUTTON_TEXT_STYLE2_VISIBLE_BG_MIN_INC;
+ }
+ description { state: "icononly" 0.0;
+ inherit: "default" 0.0;
+ min: BUTTON_TEXT_STYLE2_ICONONLY_BG_MIN_INC;
+ }
+ }
+ part { name: "padding_right_bottom";
+ type: RECT;
+ scale: 0;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ align: 1.0 1.0;
+ rel1.relative: 1.0 1.0;
+ min: BUTTON_TEXT_STYLE2_PADDING_MIN_INC;
+ fixed: 1 1;
+ visible: 0;
+ }
+ }
+ part { name: "icon_rect";
+ type: RECT;
+ scale: 0;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ visible: 0;
+ min: 0 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "padding_left_top";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "padding_left_top";
+ to_y: "padding_right_bottom";
+ }
+ align: 0.0 0.5;
+ }
+ description { state: "visible" 0.0;
+ visible: 0;
+ min: BUTTON_TEXT_STYLE2_VISIBLE_ICON_RECT_MIN_MAX_INC;
+ max: BUTTON_TEXT_STYLE2_VISIBLE_ICON_RECT_MIN_MAX_INC;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "padding_left_top";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "padding_left_top";
+ to_y: "padding_right_bottom";
+ }
+ align: 0.0 0.5;
+ }
+ description { state: "icononly" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part { name: "padding_after_icon";
+ type: RECT;
+ scale: 0;
+ mouse_events: 0;
+ description { state: "default" 0.0; //when only icon or no icon is there
+ align: 0.0 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to: "icon_rect";
+ }
+ rel2.to: "icon_rect";
+ fixed: 1 0;
+ min: 0 0;
+ visible: 0;
+ }
+ description { state: "visible" 0.0;
+ visible: 0;
+ align: 0.0 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to: "icon_rect";
+ }
+ rel2.to: "icon_rect";
+ fixed: 1 0;
+ min: BUTTON_TEXT_STYLE2_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+ }
+ description { state: "icononly" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part { name: "padding_before_text";
+ type: RECT;
+ scale: 0;
+ mouse_events: 0;
+ description { state: "default" 0.0; //when only icon or no icon is there
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "elm.text";
+ to_y: "padding_left_top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "elm.text";
+ to_y: "padding_right_bottom";
+ }
+ fixed: 1 0;
+ min: BUTTON_TEXT_STYLE2_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+ visible: 0;
+ }
+ }
+ part { name: "elm.swallow.content";
+ type: SWALLOW;
+ scale: 0;
+ clip_to: "clipper";
+ description { state: "default" 0.0;
+ visible: 0;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 1.0 1.0;
+ to: "padding_left_top";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "padding_left_top";
+ to_y: "padding_right_bottom";
+ }
+ fixed: 1 0;
+ }
+ description { state: "visible" 0.0;
+ fixed: 1 0;
+ min: BUTTON_TEXT_STYLE2_VISIBLE_ICON_MIN_MAX_INC;
+ max: BUTTON_TEXT_STYLE2_VISIBLE_ICON_MIN_MAX_INC;
+ align: 1.0 0.5;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "padding_before_text";
+ to_y: "padding_left_top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to_x: "padding_before_text";
+ to_y: "padding_right_bottom";
+ }
+ }
+ description { state: "icononly" 0.0;
+ min: BUTTON_TEXT_STYLE2_ICONONLY_ICON_MIN_MAX_INC;
+ max: BUTTON_TEXT_STYLE2_ICONONLY_ICON_MIN_MAX_INC;
+ }
+ }
+ part { name: "elm.text";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 0;
+ clip_to: "clipper";
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "padding_after_icon";
+ to_y: "padding_left_top";
+ }
+ rel2 {
+ relative: 0.0 0.0;
+ to: "padding_right_bottom";
+ }
+ color: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC;
+ text {
+ font: "SLP:style=Medium";
+ size: BUTTON_TEXT_STYLE2_FONT_SIZE_INC;
+ min: 0 0;
+ max: 1 0;
+ text_class: "slp_medium";
+ }
+ }
+ description { state: "visible" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ description { state: "clicked" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ color: 0 0 0 128;
+ }
+ description { state: "disabled_visible" 0.0;
+ inherit: "default" 0.0;
+ color: BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC;
+ visible: 1;
+ }
+ description { state: "focused" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ color: BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC;
+ }
+ }
+ part { name: "over2";
+ type: RECT;
+ repeat_events: 1;
+ ignore_flags: ON_HOLD;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "over3";
+ type: RECT;
+ repeat_events: 1;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ }
+ }
+ part { name: "clipper";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 255 255 255 255;
+ }
+ }
+ part { name: "disabler";
+ type: RECT;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ visible: 0;
+ }
+ description { state: "disabled" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ }
+ programs {
+ program { name: "button_click";
+ signal: "mouse,down,1";
+ source: "over2";
+ action: SIGNAL_EMIT "elm,action,press" "";
+ after: "button_click_anim";
+ }
+ program { name: "button_click_anim";
+ action: STATE_SET "clicked" 0.0;
+ target: "button_image";
+ after: "text_clicked";
+ }
+ program { name: "text_clicked";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.text", st, 30, vl);
+ if (!strcmp(st, "visible"))
+ set_state(PART:"elm.text", "clicked", 0.0);
+ }
+ }
+ program { name: "button_unpress";
+ action: SIGNAL_EMIT "elm,action,unpress" "";
+ }
+ program { name: "button_mouseout_clicked";
+ signal: "mouse,up,1";
+ source: "over3";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.swallow.content", st, 30, vl);
+ if (strcmp(st, "icononly"))
+ {
+ emit("elm,action,default,text,set", "");
+ set_state(PART:"elm.text", "visible", 0.0);
+ }
+ if (get_int(button_state) != BUTTON_STATE_DISABLED)
+ set_state(PART:"button_image", "default", 0.0);
+ }
+ after: button_unpress;
+ }
+ program { name: "touch_snd";
+ signal: "mouse,clicked,1";
+ source: "over2";
+ action: PLAY_SAMPLE "touch_sound" 1.0;
+ after: button_unclick3;
+ }
+ program { name: "button_unclick3";
+ action: SIGNAL_EMIT "elm,action,click" "";
+ }
+ program { name: "text_show";
+ signal: "elm,state,text,visible";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.swallow.content", st, 30, vl);
+ if (!strcmp(st, "icononly"))
+ {
+ set_state(PART:"elm.swallow.content", "visible", 0.0);
+ set_state(PART:"icon_rect", "visible", 0.0);
+ set_state(PART:"padding_after_icon", "visible", 0.0);
+ set_state(PART:"bg", "visible", 0.0);
+ }
+ if (get_int(button_state) != BUTTON_STATE_DISABLED)
+ set_state(PART:"elm.text", "visible", 0.0);
+ else
+ set_state(PART:"elm.text", "disabled_visible", 0.0);
+ }
+ }
+ program { name: "text_hide";
+ signal: "elm,state,text,hidden";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.swallow.content", st, 30, vl);
+ if (!strcmp(st, "visible"))
+ {
+ set_state(PART:"elm.swallow.content", "icononly", 0.0);
+ set_state(PART:"icon_rect", "icononly", 0.0);
+ set_state(PART:"padding_after_icon", "icononly", 0.0);
+ set_state(PART:"bg", "icononly", 0.0);
+ }
+ set_state(PART:"elm.text", "default", 0.0);
+ }
+ }
+ program { name: "icon_show";
+ signal: "elm,state,icon,visible";
+ source: "elm";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.text", st, 30, vl);
+ if (!strcmp(st, "visible"))
+ {
+ set_state(PART:"elm.swallow.content", "visible", 0.0);
+ set_state(PART:"icon_rect", "visible", 0.0);
+ set_state(PART:"padding_after_icon", "visible", 0.0);
+ set_state(PART:"bg", "visible", 0.0);
+ }
+ else
+ {
+ set_state(PART:"elm.swallow.content", "icononly", 0.0);
+ set_state(PART:"icon_rect", "icononly", 0.0);
+ set_state(PART:"padding_after_icon", "icononly", 0.0);
+ set_state(PART:"bg", "icononly", 0.0);
+ }
+ }
+ }
+ program { name: "icon_hide";
+ signal: "elm,state,icon,hidden";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "elm.swallow.content";
+ target: "padding_after_icon";
+ target: "icon_rect";
+ target: "bg";
+ }
+ program { name: "disable";
+ signal: "elm,state,disabled";
+ source: "elm";
+ action: STATE_SET "disabled" 0.0;
+ target: "button_image";
+ target: "disabler";
+ after: "disable_text";
+ }
+ program { name: "disable_text";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.text", st, 30, vl);
+ if (!strcmp(st, "visible"))
+ set_state(PART:"elm.text", "disabled_visible", 0.0);
+ else
+ set_state(PART:"elm.text", "disabled", 0.0);
+ set_int(button_state, BUTTON_STATE_DISABLED);
+ }
+ }
+ program { name: "enable";
+ signal: "elm,state,enabled";
+ source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ target: "disabler";
+ after: "enable_text";
+ }
+ program { name: "enable_text";
+ script {
+ new st[31];
+ new Float:vl;
+ get_state(PART:"elm.text", st, 30, vl);
+ if (!strcmp(st, "disabled_visible"))
+ set_state(PART:"elm.text", "visible", 0.0);
+ else
+ set_state(PART:"elm.text", "default", 0.0);
+ set_int(button_state, BUTTON_STATE_ENABLED);
+ }
+ }
+ program { name: "focused";
+ //signal: "elm,action,focus";
+ //source: "elm";
+ action: STATE_SET "focused" 0.0;
+ target: "button_image";
+ target: "elm.text";
+ }
+ program { name: "unfocused";
+ //signal: "elm,action,unfocus";
+ //source: "elm";
+ action: STATE_SET "default" 0.0;
+ target: "button_image";
+ after: "unfocus_text";
+ }
+ program { name: "unfocus_text";
+ action: STATE_SET "visible" 0.0;
+ target: "elm.text";
+ }
+ }
+}
+
diff --git a/res/edje/pwlock-lock-ui.edc b/res/edje/pwlock-lock-ui.edc
new file mode 100644
index 0000000..df7b641
--- /dev/null
+++ b/res/edje/pwlock-lock-ui.edc
@@ -0,0 +1,116 @@
+group {
+ name: "pwlock-lock-ui";
+ parts {
+ part {
+ name: "background";
+ type: RECT;
+ mouse_events: 1;
+ scale: 0;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: 248 246 239 255;
+ }
+ }
+
+ part { name: "toolbar_bg";
+ type: RECT;
+ scale: 0;
+ description { state: "default" 0.0;
+ min: 0 92;
+ max: 999999 92;
+ fixed: 0 1;
+ align: 1.0 0.0;
+ visible: 0;
+ rel1 { to: "background"; }
+ rel2 { to: "background"; }
+ }
+ }
+
+ part { name: "toolbar_btns_area";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: toolbar_bg; offset: 16 0; }
+ rel2 { relative: 1.0 1.0; to: toolbar_bg; offset: -16 -20; }
+ visible: 0;
+ }
+ }
+
+ part { name: "toolbar_button_padding";
+ type: RECT;
+ scale : 0;
+ description { state: "default" 0.0;
+ min: 15 0;
+ max: 15 9999;
+ fixed : 1 0;
+ visible: 0;
+ align: 0.5 0.5;
+ rel1.to: "toolbar_btns_area";
+ rel2.to: "toolbar_btns_area";
+ }
+ }
+
+ part { name: "toolbar_clip";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { to: "toolbar_bg"; }
+ rel2 { to: "toolbar_bg"; }
+ }
+ }
+
+ part {
+ name: "button.select.emergency";
+ type: SWALLOW;
+ scale: 0;
+ clip_to: "toolbar_clip";
+
+ description {
+ state: "default" 0.0;
+ align: 1.0 0.5;
+ fixed: 1 1;
+
+ rel1.to: "toolbar_btns_area";
+ rel2 {
+ relative: 0.0 1.0;
+ to: "toolbar_button_padding";
+ }
+ }
+ }
+
+ part {
+ name: "button.select.done";
+ type: SWALLOW;
+ scale: 0;
+ clip_to: "toolbar_clip";
+
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ fixed: 1 1;
+
+ rel1 {
+ relative: 1.0 0.0;
+ to: "toolbar_button_padding";
+ }
+ rel2.to: "toolbar_btns_area";
+ }
+ }
+
+ part {
+ name: "swl/genlist";
+ type: SWALLOW;
+ mouse_events: 1;
+ scale: 0;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "background"; }
+ rel2 { relative: 1.0 1.0; to: "background"; }
+ color: 0 0 0 0;
+ }
+ }
+ }
+}
diff --git a/res/edje/pwlock-menu-greeting.edc b/res/edje/pwlock-menu-greeting.edc
new file mode 100644
index 0000000..a639f48
--- /dev/null
+++ b/res/edje/pwlock-menu-greeting.edc
@@ -0,0 +1,388 @@
+
+group {
+ name: "pwlock-menu-lang";
+ images {
+ image: "A01-9_bg.png" COMP;
+ }
+
+ parts {
+
+ part {
+ name: "bg";
+ type: IMAGE;
+
+ description {
+ state: "default" 0.0;
+ image {
+ normal: "A01-9_bg.png";
+ }
+ }
+ }
+
+ part {
+ name: "padding-top";
+ type: RECT;
+ scale: 0;
+
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ align: 0.0 0.0;
+ fixed: 1.0 1.0;
+
+ rel1 {
+ relative: 0.0 0.0;
+ to: "bg";
+ }
+ rel2 {
+ relative: 1.0 358/1210;
+ to: "bg";
+ }
+ }
+ }
+
+ part {
+ name: "text.greeting.1";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 0;
+
+ description {
+ state: "default" 0.0;
+ min: 0 46;
+ align: 0.0 0.0;
+ fixed: 1.0 1.0;
+
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "bg";
+ to_y: "padding-top";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x: "bg";
+ to_y: "padding-top";
+ }
+ text {
+ font: "SLP:style=Roman";
+ text_class:"slp_roman";
+ size: 44;
+ min: 0 0;
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "text.greeting.2";
+ type: TEXT;
+ mouse_events: 0;
+ scale: 0;
+
+ description {
+ state: "default" 0.0;
+ min: 0 88;
+ align: 0.0 0.0;
+ fixed: 1.0 1.0;
+
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "bg";
+ to_y: "text.greeting.1";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x: "bg";
+ to_y: "text.greeting.1";
+ }
+ text {
+ font: "SLP:style=Medium";
+ text_class:"slp_medium";
+ size: 86;
+ min: 0 0;
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "space.from.greeting";
+ type: RECT;
+ scale: 0;
+
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ align: 0.0 0.0;
+ min: 0 82;
+ fixed: 1.0 1.0;
+
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "bg";
+ to_y: "text.greeting.2";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x: "bg";
+ to_y: "text.greeting.2";
+ }
+ }
+ }
+
+ part {
+ name: "text.help";
+ type: TEXT;
+ scale: 0;
+
+ description {
+ state: "default" 0.0;
+ min: 0 38;
+ align: 0.0 0.0;
+ fixed: 1 1;
+
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "bg";
+ to_y: "space.from.greeting";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x: "bg";
+ to_y: "space.from.greeting";
+ }
+ text {
+ font: "SLP:style=Roman";
+ text_class:"slp_roman";
+ size: 32;
+ min: 0 0;
+ align: 0.5 0.5;
+ }
+ }
+ }
+
+ part {
+ name: "space.from.text.help";
+ type: RECT;
+ scale: 0;
+
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ align: 0.0 0.0;
+ min: 0 24;
+ fixed: 1.0 1.0;
+
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "bg";
+ to_y: "text.help";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x: "bg";
+ to_y: "text.help";
+ }
+ }
+ }
+
+ part {
+ name: "space.select.lang.left";
+ type: SWALLOW;
+ scale: 0;
+
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 40 72;
+ fixed: 1 1;
+
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "bg";
+ to_y: "space.from.text.help";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "bg";
+ to_y: "space.from.text.help";
+ }
+ }
+ }
+
+ part {
+ name: "space.select.lang.right";
+ type: SWALLOW;
+ scale: 0;
+
+ description {
+ state: "default" 0.0;
+ align: 1.0 0.0;
+ min: 40 72;
+ fixed: 1 1;
+
+ rel1 {
+ relative: 1.0 1.0;
+ to_x: "bg";
+ to_y: "space.from.text.help";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to_x: "bg";
+ to_y: "space.from.text.help";
+ }
+ }
+ }
+
+ part {
+ name: "button.select.lang";
+ type: SWALLOW;
+ scale: 0;
+
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 72;
+ fixed: 1 1;
+
+ rel1 {
+ relative: 1.0 0.0;
+ to: "space.select.lang.left";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to: "space.select.lang.right";
+ }
+ }
+ }
+ part { name: "toolbar_bg";
+ type: RECT;
+ scale: 0;
+ description { state: "default" 0.0;
+ min: 0 92;
+ max: 999999 92;
+ fixed: 0 1;
+ align: 0.0 1.0;
+ visible: 0;
+ rel1 { to: "bg"; }
+ rel2 { to: "bg"; }
+ }
+ }
+
+ part { name: "toolbar_btns_area";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ rel1 { relative: 0.0 0.0; to: toolbar_bg; offset: 16 0; }
+ rel2 { relative: 1.0 1.0; to: toolbar_bg; offset: -16 -20; }
+ visible: 0;
+ }
+ }
+
+ part { name: "toolbar_button_padding";
+ type: RECT;
+ scale : 0;
+ description { state: "default" 0.0;
+ min: 15 0;
+ max: 15 9999;
+ fixed : 1 0;
+ visible: 0;
+ align: 0.5 0.5;
+ rel1.to: "toolbar_btns_area";
+ rel2.to: "toolbar_btns_area";
+ }
+ }
+
+ part { name: "toolbar_clip";
+ type: RECT;
+ mouse_events: 0;
+ description { state: "default" 0.0;
+ rel1 { to: "toolbar_bg"; }
+ rel2 { to: "toolbar_bg"; }
+ }
+ }
+
+ part {
+ name: "button.select.emergency";
+ type: SWALLOW;
+ scale: 0;
+ clip_to: "toolbar_clip";
+
+ description {
+ state: "default" 0.0;
+ align: 1.0 0.5;
+ fixed: 1 1;
+
+ rel1.to: "toolbar_btns_area";
+ rel2 {
+ relative: 0.0 1.0;
+ to: "toolbar_button_padding";
+ }
+ }
+ }
+
+ part {
+ name: "button.select.start";
+ type: SWALLOW;
+ scale: 0;
+ clip_to: "toolbar_clip";
+
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.5;
+ fixed: 1 1;
+
+ rel1 {
+ relative: 1.0 0.0;
+ to: "toolbar_button_padding";
+ }
+ rel2.to: "toolbar_btns_area";
+ }
+ }
+ } // ends of parts
+}
+
+group { name: "pwlock-finish";
+ parts {
+ part { name: "bg";
+ type: RECT;
+ scale: 0;
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: 248 246 239 255;
+ }
+ }
+
+ part { name: "padding-top";
+ type: RECT;
+ scale: 0;
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ align: 0.0 0.0;
+ min: 0 100;
+ fixed: 1.0 1.0;
+
+ rel1 { relative: 0.0 0.0; to: "bg"; }
+ rel2 { relative: 1.0 0.0; to: "bg"; }
+ }
+ }
+
+ part { name: "swl/label";
+ type: SWALLOW;
+ mouse_events: 0;
+ scale: 0;
+ description { state: "default" 0.0;
+ min: 0 46;
+ align: 0.0 0.0;
+ fixed: 1.0 1.0;
+
+ rel1 { relative: 0.0 1.0; to_x: "bg"; to_y: "padding-top"; }
+ rel2 { relative: 1.0 1.0; to_x: "bg"; to_y: "padding-top"; }
+
+ }
+ }
+ }
+}
+
diff --git a/res/edje/pwlock-nosim-ui.edc b/res/edje/pwlock-nosim-ui.edc
new file mode 100644
index 0000000..cdd5b12
--- /dev/null
+++ b/res/edje/pwlock-nosim-ui.edc
@@ -0,0 +1,186 @@
+
+group { name: "pwlock-nosim-ui";
+ images {
+ image: "A01-9_icon_no_sim.png" COMP;
+ }
+
+ parts {
+ part { name: "bg";
+ type: RECT;
+ scale: 0;
+
+ description { state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ color: 248 246 239 255;
+ }
+ }
+
+ part { name: "padding-top";
+ type: RECT;
+ scale: 0;
+
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ align: 0.0 0.0;
+ min: 0 72;
+ fixed: 1.0 1.0;
+
+ rel1 { relative: 0.0 0.0;
+ to: "bg";
+ }
+ rel2 { relative: 1.0 0.0;
+ to: "bg";
+ }
+ }
+ }
+
+ part { name: "image.nosim";
+ type: IMAGE;
+ description { state: "default" 0.0;
+ min: 280 280;
+ max: 280 280;
+ fixed: 1 1;
+
+ rel1 { relative: 0.0 1.0;
+ to: "padding-top";
+ }
+ rel2 { relative: 1.0 1.0;
+ to: "padding-top";
+ offset: 0 280;
+ }
+ image { normal: "A01-9_icon_no_sim.png"; }
+ }
+ }
+
+ part { name: "space.from.image.nosim";
+ type: RECT;
+ scale: 0;
+
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ align: 0.0 0.0;
+ min: 0 30;
+ fixed: 1.0 1.0;
+
+ rel1 { relative: 0.0 1.0;
+ to_x: "bg";
+ to_y: "image.nosim";
+ }
+ rel2 { relative: 1.0 1.0;
+ to_x: "bg";
+ to_y: "image.nosim";
+ }
+ }
+ }
+
+ part { name: "padding-left";
+ type: RECT;
+ scale: 0;
+
+ description {state: "default" 0.0;
+ color: 0 0 0 0;
+ align: 0.0 0.0;
+ min: 40 0;
+ fixed: 1.0 1.0;
+
+ rel1 { relative: 0.0 1.0;
+ to_x: "bg";
+ to_y: "space.from.image.nosim";
+ }
+ rel2 { relative: 0.0 1.0;
+ to_x: "bg";
+ to_y: "space.from.image.nosim";
+ }
+ }
+ }
+
+ part { name: "padding-right";
+ type: RECT;
+ scale: 0;
+
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ align: 1.0 0.0;
+ min: 40 0;
+ fixed: 1.0 1.0;
+
+ rel1 { relative: 1.0 1.0;
+ to_x: "bg";
+ to_y: "space.from.image.nosim";
+ }
+ rel2 { relative: 1.0 1.0;
+ to_x: "bg";
+ to_y: "space.from.image.nosim";
+ }
+ }
+ }
+
+ part { name: "text.help";
+ type: TEXTBLOCK;
+ scale: 0;
+
+ description { state: "default" 0.0;
+ fixed: 1 1;
+ min: 0 304;
+
+ rel1 { relative: 1.0 1.0;
+ to_x: "padding-left";
+ to_y: "space.from.image.nosim";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to_x: "padding-right";
+ to_y: "space.from.image.nosim";
+ offset: 0 304;
+ }
+ text {
+ style: pwlock_help_text_style;
+ }
+ }
+ }
+
+ part { name: "space.from.text.help";
+ type: RECT;
+ scale: 0;
+
+ description { state: "default" 0.0;
+ color: 0 0 0 0;
+ align: 0.0 0.0;
+ min: 0 40;
+ fixed: 1.0 1.0;
+
+ rel1 { relative: 0.0 1.0;
+ to_x: "bg";
+ to_y: "text.help";
+ }
+ rel2 { relative: 1.0 1.0;
+ to_x: "bg";
+ to_y: "text.help";
+ }
+ }
+ }
+
+ part { name: "button.select.retry";
+ type: SWALLOW;
+ scale: 0;
+
+ description { state: "default" 0.0;
+ align: 0.0 0.0;
+ min: 0 72;
+ fixed: 1 1;
+
+ rel1 { relative: 1.0 1.0;
+ to_x: "padding-left";
+ to_y: "space.from.text.help";
+ }
+ rel2 { relative: 0.0 1.0;
+ to_x: "padding-right";
+ to_y: "space.from.text.help";
+ }
+ }
+ }
+
+ } // ends of parts
+}
+
diff --git a/res/edje/pwlock.edc b/res/edje/pwlock.edc
new file mode 100644
index 0000000..2e75a01
--- /dev/null
+++ b/res/edje/pwlock.edc
@@ -0,0 +1,16 @@
+collections {
+ styles {
+ style { name: "pwlock_help_text_style";
+ base: "font=SLP:style=Regular font_size=32 color=#7c7c7c wrap=word";
+ tag: "br" "\n";
+ tag: "hilight" "+ font=SLP:style=Bold";
+ tag: "b" "+ font=SLP:style=Bold";
+ tag: "tab" "\t";
+ }
+ }
+
+ #include "pwlock-button.edc"
+ #include "pwlock-lock-ui.edc"
+ #include "pwlock-menu-greeting.edc"
+ #include "pwlock-nosim-ui.edc"
+}
diff --git a/res/edje/sounds/S_Touch_30ms.wav b/res/edje/sounds/S_Touch_30ms.wav
new file mode 100644
index 0000000..99ba74d
--- /dev/null
+++ b/res/edje/sounds/S_Touch_30ms.wav
Binary files differ
diff --git a/res/images/A01-9_controlbar_icon_Next.png b/res/images/A01-9_controlbar_icon_Next.png
new file mode 100644
index 0000000..036bf0d
--- /dev/null
+++ b/res/images/A01-9_controlbar_icon_Next.png
Binary files differ
diff --git a/res/images/A01-9_controlbar_icon_Previous.png b/res/images/A01-9_controlbar_icon_Previous.png
new file mode 100644
index 0000000..ee40496
--- /dev/null
+++ b/res/images/A01-9_controlbar_icon_Previous.png
Binary files differ
diff --git a/res/images/A01-9_controlbar_icon_Skip.png b/res/images/A01-9_controlbar_icon_Skip.png
new file mode 100644
index 0000000..bacd750
--- /dev/null
+++ b/res/images/A01-9_controlbar_icon_Skip.png
Binary files differ
diff --git a/res/images/A01-9_controlbar_icon_scan.png b/res/images/A01-9_controlbar_icon_scan.png
new file mode 100644
index 0000000..ea1c7f1
--- /dev/null
+++ b/res/images/A01-9_controlbar_icon_scan.png
Binary files differ
diff --git a/res/langlist.xml b/res/langlist.xml
new file mode 100644
index 0000000..fc6fd1d
--- /dev/null
+++ b/res/langlist.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<langlist>
+ <language id="az_AZ.utf8" string="Azərbaycanca" no="1" lang="Azerbaijani"/>
+ <language id="ca_ES.utf8" string="Català" no="2" lang="Catalan"/>
+ <language id="cs_CZ.utf8" string="Čeština" no="3" lang="Czech"/>
+ <language id="sr_RS.utf8" string="Cрпски" no="4" lang="Serbian"/>
+ <language id="da_DK.utf8" string="Dansk" no="5" lang="Danish"/>
+ <language id="de_DE.utf8" string="Deutsch" no="6" lang="German"/>
+ <language id="et_EE.utf8" string="Eesti" no="7" lang="Estonian"/>
+ <language id="en_PH.utf8" string="English (Philippines)" no="8" lang="English(Philippines)"/>
+ <language id="en_GB.utf8" string="English (United Kingdom)" no="9" lang="English(UK)"/>
+ <language id="en_US.utf8" string="English (United States)" no="10" lang="English(US)"/>
+ <language id="es_ES.utf8" string="Español (España)" no="11" lang="Spanish"/>
+ <language id="es_MX.utf8" string="Español (México)" no="12" lang="Spanish(Mexico)"/>
+ <language id="eu_ES.utf8" string="Euskara" no="13" lang="Basque"/>
+ <language id="fr_CA.utf8" string="Français (Canada)" no="14" lang="French(Canada)"/>
+ <language id="fr_FR.utf8" string="Français (France)" no="15" lang="French"/>
+ <language id="ga_IE.utf8" string="Gaeilge" no="16" lang="Irish"/>
+ <language id="gl_ES.utf8" string="Galego" no="17" lang="Galician"/>
+ <language id="hr_HR.utf8" string="Hrvatski" no="18" lang="Croatian"/>
+ <language id="is_IS.utf8" string="Íslenska" no="19" lang="Icelandic"/>
+ <language id="it_IT.utf8" string="Italiano" no="20" lang="Italian"/>
+ <language id="lv_LV.utf8" string="Latviešu" no="21" lang="Latvian"/>
+ <language id="lt_LT.utf8" string="Lietuvių" no="22" lang="Lithuanian"/>
+ <language id="hu_HU.utf8" string="Magyar" no="23" lang="Hungarian"/>
+ <language id="nl_NL.utf8" string="Nederlands" no="24" lang="Dutch"/>
+ <language id="nb_NO.utf8" string="Norsk" no="25" lang="Norwegian"/>
+ <language id="uz_UZ.utf8" string="Oʻzbek" no="26" lang="Uzbek"/>
+ <language id="pl_PL.utf8" string="Polski" no="27" lang="Polish"/>
+ <language id="pt_BR.utf8" string="Português (Brasil)" no="28" lang="Portuguese(Brazil)"/>
+ <language id="pt_PT.utf8" string="Português (Portugal)" no="29" lang="Portuguese"/>
+ <language id="ru_RU.utf8" string="Pусский" no="30" lang="Russian"/>
+ <language id="ro_RO.utf8" string="Română" no="31" lang="Romanian"/>
+ <language id="sk_SK.utf8" string="Slovenčina" no="32" lang="Slovak"/>
+ <language id="sl_SI.utf8" string="Slovenščina" no="33" lang="Slovenian"/>
+ <language id="fi_FI.utf8" string="Suomi" no="34" lang="Finnish"/>
+ <language id="sv_SE.utf8" string="Svenska" no="35" lang="Swedish"/>
+ <language id="tr_TR.utf8" string="Türkçe" no="36" lang="Turkish"/>
+ <language id="el_GR.utf8" string="Ελληνικά" no="37" lang="Greek"/>
+ <language id="bg_BG.utf8" string="Български език" no="38" lang="Bulgarian"/>
+ <language id="kk_KZ.utf8" string="Қазақ тілі" no="39" lang="Kazakh"/>
+ <language id="mk_MK.utf8" string="Македонски" no="40" lang="Macedonian"/>
+ <language id="uk_UA.utf8" string="Українська" no="41" lang="Ukrainian"/>
+ <language id="hy_AM.utf8" string="Հայերէն" no="42" lang="Armenian"/>
+ <language id="ka_GE.utf8" string="ქართული ენა" no="43" lang="Georgian"/>
+ <language id="zh_CN.utf8" string="简体中文" no="44" lang="Chinese"/>
+ <language id="zh_SG.utf8" string="简体中文 (新加坡)" no="45" lang="Chinese(Singapore)"/>
+ <language id="zh_TW.utf8" string="繁體中文 (台灣)" no="46" lang="Chinese(Taiwan)"/>
+ <language id="zh_HK.utf8" string="繁體中文 (香港)" no="47" lang="Chinese(HongKong)"/>
+ <language id="ja_JP.utf8" string="日本語" no="48" lang="Japanese"/>
+ <language id="ko_KR.utf8" string="한국어" no="49" lang="Korean"/>
+</langlist>
diff --git a/sb-conf b/sb-conf
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/sb-conf
diff --git a/src/langs.c b/src/langs.c
new file mode 100755
index 0000000..348c32b
--- /dev/null
+++ b/src/langs.c
@@ -0,0 +1,163 @@
+/*
+ * pwlock
+ *
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <vconf.h>
+#include <appcore-efl.h>
+#include <libxml/xmlmemory.h>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+
+#include "util.h"
+#include "langs.h"
+
+#define LANGLIST_FILE_DIR_PATH "/usr/apps/org.tizen.pwlock/res/"
+#define LANGLIST_FILE_PATH LANGLIST_FILE_DIR_PATH"langlist.xml"
+
+static Eina_List *p_langlist;
+
+static void __tree_walk_langlist(xmlNodePtr cur)
+{
+ _DBG("%s", __func__);
+
+ xmlNode *cur_node = NULL;
+ char* id;
+ char* string;
+ int number;
+
+ for (cur_node = cur; cur_node;cur_node = cur_node->next) {
+ if (cur_node->type == XML_ELEMENT_NODE) {
+
+ _DBG("name: %s title: %s number: %s", xmlGetProp(cur_node, (const xmlChar *)"id"),
+ xmlGetProp(cur_node, (const xmlChar *)"string"),
+ xmlGetProp(cur_node, (const xmlChar *)"no"));
+
+ id = (char *)strdup((char*)xmlGetProp(cur_node, (const xmlChar *)"id"));
+ string = (char *)strdup((char*) xmlGetProp(cur_node, (const xmlChar *)"string"));
+ number = atoi((char*) xmlGetProp(cur_node, (const xmlChar *)"no"));
+ _DBG(">>>> locale: %s title: %s", (char*)id, (char*)string);
+
+ pwlock_lang_entry* pitem = (pwlock_lang_entry*)calloc(1, sizeof(pwlock_lang_entry));
+ pitem->locale = id;
+ pitem->title = string;
+ pitem->number = number;
+
+ p_langlist = eina_list_append(p_langlist, pitem);
+ }
+ }
+}
+
+static void _parseLangListXML(char* filepath)
+{
+ _DBG("%s", __func__);
+
+ xmlDocPtr doc;
+ xmlNodePtr cur;
+
+ doc = xmlParseFile(filepath);
+
+ if (doc == NULL ) {
+ _ERR("%s : Document not parsed successfully.", __func__);
+ return;
+ }
+
+ cur = xmlDocGetRootElement(doc);
+ if (cur == NULL) {
+ _ERR("%s : empty document", __func__);
+ xmlFreeDoc(doc);
+ return;
+ }
+
+ _DBG("%s : ROOT NODE : %s", __func__, cur->name);
+ if (xmlStrcmp(cur->name, (const xmlChar *) "langlist")) {
+ _ERR("%s : document of the wrong type, root node != langlist", __func__);
+ xmlFreeDoc(doc);
+ return;
+ }
+
+ cur = cur->xmlChildrenNode;
+ __tree_walk_langlist(cur);
+
+ xmlFreeDoc(doc);
+ return;
+}
+
+int pwlock_langlist_load(void)
+{
+ _DBG("%s", __func__);
+
+ if (!p_langlist)
+ {
+ _parseLangListXML(LANGLIST_FILE_PATH);
+ }
+
+ return 0;
+}
+
+int pwlock_langlist_destroy(void)
+{
+ _DBG("%s", __func__);
+
+ Eina_List *li = p_langlist;
+ pwlock_lang_entry* node;
+ while (li) {
+ node = (pwlock_lang_entry*) eina_list_data_get(li);
+ if (node)
+ {
+ _DBG("%s : destroy nodes : locale : %s title : %s", __func__, node->locale, node->title);
+ PWLOCK_MEMFREE(node->locale);
+ PWLOCK_MEMFREE(node->title);
+ PWLOCK_MEMFREE(node);
+ }
+ li = eina_list_next(li);
+ }
+ p_langlist = eina_list_free(p_langlist);
+
+ return 0;
+}
+
+
+
+const char *pwlock_get_lang_title(void)
+{
+ _DBG("%s", __func__);
+
+ int ret = 0;
+ int index_lang = 0;
+
+ Eina_List* list = p_langlist;
+ Eina_List* elist = NULL;
+
+ ret = vconf_get_int(VCONFKEY_SETAPPL_LANG_INT, &index_lang);
+
+ if (ret == 0 && index_lang == 0) {
+ return pwlock_get_string(IDS_IDLE_BODY_AUTOMATIC);
+ }
+
+ pwlock_lang_entry* lang_entry;
+
+ char* title = NULL;
+ EINA_LIST_FOREACH(list, elist, lang_entry)
+ {
+ if (lang_entry->number == index_lang) {
+ _DBG("%s : language -> %s", __func__, lang_entry->title);
+ title = strdup(lang_entry->title);
+ }
+ }
+ return title;
+} \ No newline at end of file
diff --git a/src/pwlock.c b/src/pwlock.c
new file mode 100755
index 0000000..d6cfc4e
--- /dev/null
+++ b/src/pwlock.c
@@ -0,0 +1,1175 @@
+/*
+ * pwlock
+ *
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <stdio.h>
+//#include <signal.h>
+#include <appcore-efl.h>
+#include <Ecore_X.h>
+
+#include <vconf.h>
+#include <utilX.h>
+#include <ui-gadget.h>
+#include <system_info.h>
+
+#include "pwlock.h"
+#include "util.h"
+#include "ui.h"
+#include "langs.h"
+
+#define _ST_START _ST_FIRST
+#define HOME_KEY KEY_SELECT
+#define BACK_KEY KEY_END
+
+#define MENUSCREEN_PKG_NAME "db/menuscreen/pkgname" /* menu screen pkg name string */
+#define TIMEZONE_CITY_NAME "db/setting/cityname_id" /* get the city name */
+#define TIMEZONE_TIMEZONE_ID "db/setting/timezone_id" /* get the timezone id */
+#define TIMEZONE_INFO_PATH "/usr/share/zoneinfo/" /* the path of the timezone infomation */
+#define TIMEZONE_INFO_FILE TIMEZONE_INFO_PATH"zone.tab" /* the file of the timezone infomation */
+
+struct state {
+ int (*_do) (struct appdata * ad);
+};
+
+//struct sigaction g_oldact;
+
+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_GREETING(struct appdata *ad);
+static int do_ST_LANG(struct appdata *ad);
+static int do_ST_NOSIM(struct appdata *ad);
+static int do_ST_TIME(struct appdata *ad);
+static int do_ST_CONNECTION(struct appdata *ad);
+static int do_ST_TUTORIAL(struct appdata *ad);
+static int do_ST_FINISH(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 void pwlock_signal_handler(int sig);
+//static void register_sig_handler(void);
+
+static struct state states[_ST_MAX] = {
+ {do_ST_FIRST,},
+ /* { do_ST_INIT, }, */
+ {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_NOSIM,},
+ {do_ST_TIME,},
+ {do_ST_GREETING,},
+ {do_ST_CONNECTION,},
+ {do_ST_TUTORIAL,},
+ {do_ST_FINISH,},
+};
+
+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 *timezone_id = 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;
+ }
+
+ timezone_id = vconf_get_str(TIMEZONE_TIMEZONE_ID);
+ _DBG("timezone_id = %s", timezone_id);
+ if (timezone_id == NULL) {
+ _ERR("Timezone id is null!!!");
+ return;
+ }
+
+ fp = fopen(TIMEZONE_INFO_FILE, "r");
+
+ while (fp != NULL && fgets(tmp, sizeof(tmp), fp) != NULL) {
+ if (strstr(tmp, timezone_id)) {
+ 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 (timezone_id != NULL) {
+ free(timezone_id);
+ timezone_id = 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; /* overrun */
+ }
+ } else {
+ len =
+ snprintf(buf, sizeof(buf),
+ pwlock_get_string(IDS_IDLE_BODY_PD_ATTEMPTS_LEFT),
+ retry);
+ if (len == -1) {
+ return; /* over run */
+ } else if (len > 0) {
+ buf[len] = '\0';
+ }
+ }
+
+ show_popup(ad, buf, EINA_TRUE);
+ clear_entry(ad);
+ pwlock_tapi_get_sim_lock_info(ad->t);
+
+ //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 _pwlock_tapi_cb(struct pwlock_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);
+ pwlock_tapi_get_sim_lock_info(ad->t);
+ ad->sim_status = i->st;
+ }
+ break;
+ case SIM_REQ_LOCK:
+ _sim_retry_no_cnt(ad);
+ break;
+ case SIM_REQ_NCK:
+ clear_entry(ad);
+ ad->sub_state = TAPI_SIM_LOCK_PN;
+ _trans(ad, _ST_NETWORK_LOCKCNF);
+ do_state(ad);
+ break;
+ case SIM_REQ_NSCK:
+ clear_entry(ad);
+ ad->sub_state = TAPI_SIM_LOCK_PU;
+ _trans(ad, _ST_NETWORK_LOCKCNF);
+ do_state(ad);
+ break;
+ case SIM_REQ_SPCK:
+ clear_entry(ad);
+ ad->sub_state = TAPI_SIM_LOCK_PP;
+ _trans(ad, _ST_NETWORK_LOCKCNF);
+ do_state(ad);
+ break;
+ case SIM_REQ_CCK:
+ clear_entry(ad);
+ ad->sub_state = TAPI_SIM_LOCK_PC;
+ _trans(ad, _ST_NETWORK_LOCKCNF);
+ do_state(ad);
+ break;
+ case SIM_LOCK_INFO:
+ {
+ _DBG("ad->sim_status = %d", ad->sim_status);
+ ad->retry_cnt = i->retry_cnt;
+ switch (ad->sim_status) {
+ case SIM_REQ_PIN:
+ show_pin(ad);
+ _trans(ad, _ST_SIM_PINCNF);
+ break;
+ case SIM_REQ_PUK:
+ show_puk(ad);
+ _trans(ad, _ST_SIM_PUKCNF);
+ break;
+ case SIM_REQ_LOCK:
+ if (ad->pin_changed == 1) {
+ show_msg(ad, IDS_IDLE_POP_PIN_CHANGED);
+ } else {
+ show_sim_lock(ad);
+ }
+ _trans(ad, _ST_SIM_LOCKCNF);
+ break;
+ case SIM_REQ_NCK:
+ if (ad->pin_changed == 1) {
+ show_msg(ad, IDS_IDLE_POP_PIN_CHANGED);
+ } else {
+ show_sim_lock(ad);
+ }
+ ad->sub_state = TAPI_SIM_LOCK_PN;
+ _trans(ad, _ST_NETWORK_LOCKCNF);
+ break;
+ case SIM_REQ_NSCK:
+ if (ad->pin_changed == 1) {
+ show_msg(ad, IDS_IDLE_POP_PIN_CHANGED);
+ } else {
+ show_sim_lock(ad);
+ }
+ ad->sub_state = TAPI_SIM_LOCK_PU;
+ _trans(ad, _ST_NETWORK_LOCKCNF);
+ break;
+ case SIM_REQ_SPCK:
+ if (ad->pin_changed == 1) {
+ show_msg(ad, IDS_IDLE_POP_PIN_CHANGED);
+ } else {
+ show_sim_lock(ad);
+ }
+ ad->sub_state = TAPI_SIM_LOCK_PP;
+ _trans(ad, _ST_NETWORK_LOCKCNF);
+ break;
+ case SIM_REQ_CCK:
+ if (ad->pin_changed == 1) {
+ show_msg(ad, IDS_IDLE_POP_PIN_CHANGED);
+ } else {
+ show_sim_lock(ad);
+ }
+ ad->sub_state = TAPI_SIM_LOCK_PC;
+ _trans(ad, _ST_NETWORK_LOCKCNF);
+ break;
+
+ default:
+ break;
+ }
+ }
+ break;
+ default:
+ /* do nothing */
+ break;
+ }
+}
+
+static void pwlock_tapi_cb(struct pwlock_tapi_info *i, void *data)
+{
+ struct appdata *ad = data;
+
+ _DBG("%s, ad->state:%d", __func__, ad->state);
+
+ if (ad->state == _ST_EXIT)
+ return;
+
+ _pwlock_tapi_cb(i, ad);
+
+ return;
+}
+
+static int do_ST_FIRST(struct appdata *ad)
+{
+ int r = 0;
+ int first = 0;
+ int is_emul;
+ char *model = NULL;
+
+ _DBG("%s", __func__);
+
+ r = system_info_get_value_string(SYSTEM_INFO_KEY_MODEL, &model);
+ if (r != SYSTEM_INFO_ERROR_NONE) {
+ _ERR("system_info_get_value_string return error : %d", r);
+ } else {
+ _DBG("SYSTEM_INFO_KEY_MODEL = %s\n", model);
+ }
+
+ /*
+ * if model is NULL, pwlock crash
+ */
+ if (model && !strncmp("Emulator", model, strlen(model)))
+ is_emul = 1;
+ else
+ is_emul = 0;
+
+ PWLOCK_MEMFREE(model);
+
+ r = vconf_get_bool(VCONFKEY_PWLOCK_FIRST_BOOT, &first);
+ _DBG("vconf get %s, result:%d, get_value:%d", VCONFKEY_PWLOCK_FIRST_BOOT, r,
+ first);
+
+ if ((r == 0 && first == 0) || (ad->is_exec_after_bootup > 0)) {
+ _DBG("Not first booting time");
+ ad->is_first_boot = 0;
+ // change booting seq. - syhwang@20120627
+ vconf_set_int(VCONFKEY_STARTER_SEQUENCE, 1);
+
+ } else {
+ _DBG("First booting time");
+ ad->is_first_boot = 1;
+ set_default_timezone(ad);
+
+ if (is_emul)
+ vconf_set_bool(VCONFKEY_PWLOCK_FIRST_BOOT, 0);
+ }
+
+ if (is_emul)
+ _trans(ad, _ST_EXIT);
+ else
+ _trans(ad, _ST_TAPI_INIT);
+ do_state(ad);
+
+ return EINA_TRUE;
+}
+
+static int do_ST_GREETING(struct appdata *ad)
+{
+ _DBG("%s", __func__);
+
+ if (show_greeting(ad)) {
+ if (ad->is_first_boot)
+ vconf_set_int(VCONFKEY_STARTER_SEQUENCE, 1);
+
+ return EINA_TRUE;
+ }
+ else
+ return EINA_FALSE;
+}
+
+static int do_ST_CONNECTION(struct appdata *ad)
+{
+ _DBG("%s", __func__);
+
+ if (show_connection(ad))
+ return EINA_TRUE;
+ else
+ return EINA_FALSE;
+}
+
+static int do_ST_TUTORIAL(struct appdata *ad)
+{
+ _DBG("%s", __func__);
+
+ if (show_tutorial(ad))
+ return EINA_TRUE;
+ else
+ return EINA_FALSE;
+}
+
+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->is_exec_after_bootup > 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->is_exec_after_bootup > 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_state_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_TAPI_INIT);
+ do_state(ad);
+ }
+ }
+ return;
+}
+
+void register_vconf_tapi_state_changed(struct appdata *ad)
+{
+ _DBG("%s", __func__);
+ if (vconf_notify_key_changed
+ (VCONFKEY_TELEPHONY_TAPI_STATE, vconf_tapi_state_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");
+ if (ad->is_exec_after_bootup == 0 && ad->is_first_boot && ad->cancel_setup == 0)
+ _trans(ad, _ST_GREETING);
+ else
+ _trans(ad, _ST_EXIT);
+ do_state(ad);
+ } else {
+ _DBG("TAPI is ready");
+ _trans(ad, _ST_TAPI_INIT);
+ do_state(ad);
+ }
+ }
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static int do_ST_TAPI_INIT(struct appdata *ad)
+{
+ int r;
+ int is_emul;
+ char *model = NULL;
+ int tapi_state = VCONFKEY_TELEPHONY_TAPI_STATE_NONE;
+
+ _DBG("%s", __func__);
+
+ r = system_info_get_value_string(SYSTEM_INFO_KEY_MODEL, &model);
+ if (r != SYSTEM_INFO_ERROR_NONE) {
+ _ERR("system_info_get_value_string return error : %d", r);
+ } else {
+ _DBG("SYSTEM_INFO_KEY_MODEL = %s\n", model);
+ }
+
+ if (model && !strncmp("Emulator", model, strlen(model)))
+ is_emul = 1;
+ else
+ is_emul = 0;
+
+ PWLOCK_MEMFREE(model);
+
+ vconf_get_int(VCONFKEY_TELEPHONY_TAPI_STATE, &tapi_state);
+
+ if (tapi_state == VCONFKEY_TELEPHONY_TAPI_STATE_NONE && is_emul == 0) {
+ _DBG("TAPI is not ready");
+
+ /* SHOULD MANAGE TIMER FROM NOW - START PART */
+ ad->pTimerId =
+ ecore_timer_add(20, vconf_tapi_ready_expire_cb, ad);
+ register_vconf_tapi_state_changed(ad);
+ return EINA_FALSE;
+ }
+
+ _DBG("TAPI is ready");
+
+ ad->t = pwlock_tapi_init(pwlock_tapi_cb, ad);
+ if (ad->t == NULL) {
+ _ERR("TAPI init error");
+ if (ad->is_exec_after_bootup == 0 && ad->is_first_boot && ad->cancel_setup == 0)
+ _trans(ad, _ST_GREETING);
+ else
+ _trans(ad, _ST_EXIT);
+ do_state(ad);
+ return EINA_FALSE;
+ }
+
+ _trans(ad, _ST_SIM);
+ do_state(ad);
+ return EINA_TRUE;
+}
+
+static int do_ST_SIM(struct appdata *ad)
+{
+ int r;
+ int is_sim_changed = 0;
+
+ _DBG("%s", __func__);
+
+ set_pwlock_unlock_state(ad);
+ set_pwlock_lock_state(ad);
+ ad->sim_status = pwlock_tapi_check_sim(ad->t, &is_sim_changed);
+ _DBG("ad->sim_status=%d, sim_changed=%d, ad->is_first_boot=%d",
+ ad->sim_status, is_sim_changed, ad->is_first_boot);
+
+ switch (ad->sim_status) {
+ case SIM_REQ_PIN:
+ case SIM_REQ_PUK:
+ case SIM_REQ_LOCK:
+ case SIM_REQ_NCK:
+ case SIM_REQ_NSCK:
+ case SIM_REQ_SPCK:
+ case SIM_REQ_CCK:
+ _DBG("ad->sim_status = %d", ad->sim_status);
+ pwlock_tapi_get_sim_lock_info(ad->t);
+ r = EINA_TRUE;
+ break;
+
+ case SIM_OK:
+ if (ad->is_exec_after_bootup == 0 && ad->is_first_boot && ad->cancel_setup == 0) { /* First boot & don't cancel setup wizard */
+ if (ad->is_no_sim == 1) {
+ _trans(ad, _ST_TIME);
+ } else {
+ _trans(ad, _ST_GREETING);
+ }
+ } else {
+ _trans(ad, _ST_EXIT);
+ }
+
+ ad->is_no_sim = 0;
+
+ if (ad->pin_changed == 1) {
+ r = EINA_TRUE;
+ show_msg(ad, IDS_IDLE_POP_PIN_CHANGED);
+ ecore_timer_add(3, timer_do, ad);
+ ad->pin_changed = 0;
+ } else {
+ do_state(ad);
+ r = EINA_TRUE;
+ }
+
+ break;
+ case SIM_WAITING:
+ /* wait till tapi send evt.. */
+ r = EINA_TRUE;
+ break;
+ case SIM_BLOCKED:
+ show_block(ad);
+ r = EINA_TRUE;
+ break;
+ case SIM_RETRY:
+ /* do nothing, wait for TAPI callback */
+ ecore_timer_add(0.2, timer_do, ad);
+ r = EINA_TRUE;
+ break;
+ case SIM_EMPTY:
+ if (ad->is_exec_after_bootup == 0 && ad->is_first_boot
+ && ad->cancel_setup == 0) {
+ if (ad->is_no_sim != 1) {
+ _trans(ad, _ST_GREETING);
+ } else {
+ _trans(ad, _ST_NOSIM);
+ }
+ } else {
+ _trans(ad, _ST_EXIT);
+ }
+ ad->is_no_sim = 1;
+ if (ad->state != _ST_NOSIM) {
+ _DBG("not _ST_NOSIM");
+ do_state(ad);
+ }
+ r = EINA_TRUE;
+ break;
+ default:
+ _ERR("Unexpected sim state: %d", ad->sim_status);
+ _trans(ad, _ST_EXIT);
+ do_state(ad);
+ r = EINA_FALSE;
+ break;
+ }
+ return r;
+}
+
+static int do_ST_NOSIM(struct appdata *ad)
+{
+ _DBG("%s", __func__);
+
+ if (show_nosim(ad))
+ return EINA_TRUE;
+ else
+ return EINA_FALSE;
+}
+
+static int do_ST_SIM_PINCNF(struct appdata *ad)
+{
+ int r;
+
+ _DBG("%s", __func__);
+
+ if (!ad->entry_str) {
+ _ERR("entry string is empty");
+ return EINA_FALSE;
+ }
+
+ r = pwlock_tapi_verify_pins(ad->t, ad->entry_str);
+ if (r == -1) {
+ _ERR("verify pin error");
+ _trans(ad, _ST_EXIT);
+ do_state(ad);
+ return EINA_FALSE;
+ }
+
+ return EINA_TRUE;
+}
+
+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 EINA_FALSE;
+ }
+
+ r = pwlock_tapi_verify_puks(ad->t, ad->entry_str, ad->pin_str);
+ if (r == -1) {
+ _ERR("verify puk error");
+ _trans(ad, _ST_EXIT);
+ do_state(ad);
+ return EINA_FALSE;
+ }
+
+ return EINA_TRUE;
+}
+
+static int do_ST_SIM_LOCKCNF(struct appdata *ad)
+{
+ int r;
+
+ _DBG("%s", __func__);
+
+ if (!ad->entry_str) {
+ _ERR("entry string is empty");
+ return EINA_FALSE;
+ }
+
+ r = pwlock_tapi_verify_lock(ad->t, ad->entry_str);
+ if (r == -1) {
+ _ERR("verify pin error");
+ _trans(ad, _ST_EXIT);
+ do_state(ad);
+ return EINA_FALSE;
+ }
+
+ return EINA_TRUE;
+}
+
+static int do_ST_NETWORK_LOCKCNF(struct appdata *ad)
+{
+ int r;
+
+ _DBG("%s", __func__);
+
+ if (!ad->entry_str) {
+ _ERR("entry string is empty");
+ return EINA_FALSE;
+ }
+
+ r = pwlock_tapi_disable_net_pers(ad->t, ad->entry_str, ad->sub_state);
+ if (r == -1) {
+ _ERR("Disable network personalization failed");
+ _trans(ad, _ST_EXIT);
+ do_state(ad);
+ return EINA_FALSE;
+ }
+
+ return EINA_TRUE;
+}
+
+static int do_ST_EXIT(struct appdata *ad)
+{
+ int r;
+ int locked;
+
+ _DBG("%s", __func__);
+
+ locked = 0;
+ r = vconf_get_int(VCONFKEY_STARTER_SEQUENCE, &locked);
+ _DBG("r = %d locked = %d", r, locked);
+ if ((r != 0) || (locked == 0)) { /* prevent */
+ _DBG("set %s to true", VCONFKEY_STARTER_SEQUENCE);
+ vconf_set_int(VCONFKEY_STARTER_SEQUENCE, 1);
+ }
+ elm_exit();
+ return EINA_TRUE;
+}
+
+static int do_ST_LANG(struct appdata *ad)
+{
+ _DBG("%s", __func__);
+
+ if (show_lang(ad))
+ return EINA_TRUE;
+ else
+ return EINA_FALSE;
+}
+
+static int do_ST_TIME(struct appdata *ad)
+{
+ _DBG("%s", __func__);
+
+ if (show_time(ad))
+ return EINA_TRUE;
+ else
+ return EINA_FALSE;
+}
+
+static int do_ST_FINISH(struct appdata *ad)
+{
+ _DBG("%s", __func__);
+
+ if (show_finish(ad))
+ return EINA_TRUE;
+ else
+ return EINA_FALSE;
+}
+
+void do_state(struct appdata *ad)
+{
+ if ( ad == NULL ) {
+ _ERR("%s, ad is null", __func__);
+ return ;
+ }
+
+ _DBG("%s, ad->state:%d", __func__, ad->state);
+
+ if (ad->state < _ST_START || ad->state >= _ST_MAX) {
+ _ERR("Unknown state: %d", ad->state);
+ do_state_directly(_ST_EXIT, ad);
+ } else
+ states[ad->state]._do(ad);
+
+}
+
+void do_state_directly(int state, void *data)
+{
+ struct appdata *ad = data;
+
+ if ( ad == NULL ) {
+ _ERR("ad is null");
+ return ;
+ }
+
+ _trans(ad, state);
+
+ if (ad->state < _ST_START || ad->state >= _ST_MAX) {
+ _ERR("Unknown state: %d", ad->state);
+ do_state_directly(_ST_EXIT, ad);
+ } else
+ states[ad->state]._do(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);
+ /* FIXME for blocking camera launching */
+ 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();
+ if (!ecore_x_netwm_pid_get(x_win_focused, &pid)) {
+ pid = 0;
+ }
+ 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 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);
+ /* for exception */
+ 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);
+
+ if (ad->elm_navigation_frame) {
+ evas_object_del(ad->elm_navigation_frame);
+ ad->elm_navigation_frame = NULL;
+ if (ad->layout_contents) {
+ evas_object_del(ad->layout_contents);
+ ad->layout_contents = NULL;
+ }
+ if (ad->layout_entry) {
+ evas_object_del(ad->layout_entry);
+ ad->layout_entry = NULL;
+ }
+ if (ad->layout_second_entry) {
+ evas_object_del(ad->layout_second_entry);
+ ad->layout_second_entry = NULL;
+ }
+ if (ad->elm_conform) {
+ evas_object_del(ad->elm_conform);
+ ad->elm_conform = NULL;
+ }
+ }
+
+ ad->is_no_sim = 0;
+ ad->retry_cnt = 0;
+
+ pwlock_langlist_load();
+
+ ad->state = _ST_FIRST;
+ do_state(ad);
+
+ return 0;
+}
+
+static int app_terminate(void *data)
+{
+ struct appdata *ad = data;
+
+ _DBG("===============> %s", __func__);
+
+ set_pwlock_unlock_state(ad);
+
+ pwlock_langlist_destroy();
+
+ if (ad->t)
+ pwlock_tapi_exit(&ad->t);
+
+ if (ad->win) {
+ utilx_ungrab_key(ecore_x_display_get(),
+ elm_win_xwindow_get(ad->win), KEY_SELECT);
+ /* FIXME for blocking camera launching */
+ utilx_ungrab_key(ecore_x_display_get(),
+ elm_win_xwindow_get(ad->win), KEY_CAMERA);
+ evas_object_del(ad->win);
+ }
+ if (ad->elm_navigation_frame) {
+ evas_object_del(ad->elm_navigation_frame);
+ ad->elm_navigation_frame = NULL;
+ }
+ if (ad->layout_contents) {
+ evas_object_del(ad->layout_contents);
+ ad->layout_contents = NULL;
+ }
+ if (ad->layout_entry) {
+ evas_object_del(ad->layout_entry);
+ ad->layout_entry = NULL;
+ }
+ if (ad->layout_second_entry) {
+ evas_object_del(ad->layout_second_entry);
+ ad->layout_second_entry = NULL;
+ }
+ if (ad->elm_bg) {
+ evas_object_del(ad->elm_bg);
+ ad->elm_bg = NULL;
+ }
+ if (ad->elm_conform) {
+ evas_object_del(ad->elm_conform);
+ ad->elm_conform = NULL;
+ }
+ if (ad->idler) {
+ ecore_idler_del(ad->idler);
+ ad->idler = NULL;
+ }
+ if (ad->date_ug) {
+ ug_destroy(ad->date_ug);
+ ad->date_ug = NULL;
+ }
+ if (ad->connection_ug) {
+ ug_destroy(ad->connection_ug);
+ ad->connection_ug = NULL;
+ }
+
+ remove_waiting_popup(ad);
+ ecore_imf_shutdown();
+ return 0;
+}
+
+static int app_pause(void *data)
+{
+ struct appdata *ad = data;
+
+ _DBG("%s", __func__);
+
+ if (ad->current_ug) {
+ _DBG("ug_pause!!");
+ ug_pause();
+ }
+
+ return 0;
+}
+
+static int app_reset(service_h service, void *data)
+{
+ struct appdata *ad = data;
+
+ _DBG("%s", __func__);
+
+ if (ad->win)
+ elm_win_activate(ad->win);
+
+ return 0;
+}
+
+static int app_resume(void *data)
+{
+ struct appdata *ad = data;
+
+ _DBG("%s", __func__);
+
+ if (ad->current_ug) {
+ _DBG("ug_resume!!");
+ ug_resume();
+ }
+
+ return 0;
+}
+
+/*
+static void pwlock_signal_handler(int sig)
+{
+
+ _DBG("pwlock recieve signal[%d]", sig);
+
+ switch(sig) {
+ case SIGSEGV:
+ _DBG("SIGSEGV signal is raised");
+ vconf_set_int(VCONFKEY_PWLOCK_STATE,
+ VCONFKEY_PWLOCK_BOOTING_UNLOCK);
+ break;
+
+ default:
+ break;
+ }
+
+ sigaction(sig, &g_oldact, NULL);
+ raise(sig);
+}
+
+static void register_sig_handler(void)
+{
+ _DBG("register pwlock signal handler");
+
+ struct sigaction act;
+
+ act.sa_handler = pwlock_signal_handler;
+ sigemptyset(&act.sa_mask);
+ act.sa_flags = SA_RESETHAND;
+
+ if (sigaction(SIGSEGV, &act, &g_oldact) < 0) {
+ _ERR("%s - could not set signal handler", __func__);
+ }
+}
+*/
+
+int main(int argc, char *argv[])
+{
+ struct appdata ad;
+ struct appcore_ops ops = {
+ .create = app_create,
+ .terminate = app_terminate,
+ .pause = app_pause,
+ .reset = app_reset,
+ .resume = app_resume,
+ };
+
+ memset(&ad, 0x0, sizeof(struct appdata));
+
+ // disable temporary (libisf-imf-module.so SIGSEGV)
+ //register_sig_handler();
+
+ _DBG("\n\n========= pwlock is started..!! ===========\n");
+
+ if (argc > 1) {
+ _DBG("argv[1]:%s ", argv[1]);
+ ad.is_exec_after_bootup = atoi(argv[1]);
+ _DBG("ad.is_exec_after_bootup : %d", ad.is_exec_after_bootup);
+ } else {
+ ad.is_exec_after_bootup = 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..ca98701
--- /dev/null
+++ b/src/tapi.c
@@ -0,0 +1,574 @@
+/*
+ * pwlock
+ *
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <stdio.h>
+#include <vconf.h>
+
+#include "util.h"
+#include "tapi.h"
+#include "langs.h"
+
+#ifndef PACKAGE_NAME
+#define PACKAGE_NAME "org.tizen.pwlock"
+#endif
+
+static struct tapi_event tapi_events[] = {
+ {TAPI_NOTI_MODEM_POWER, pwlock_tapi_noti_modem_power_cb,},
+ {TAPI_NOTI_SIM_STATUS, pwlock_tapi_noti_sim_status_cb,},
+};
+
+static int _pwlock_tapi_register_noti_events(struct tapi *t)
+{
+ int r;
+ int i;
+
+ if (t == NULL)
+ return -1;
+
+ for (i = 0; i < t->evt_sz; i++) {
+ r = tel_register_noti_event(t->handle, t->evt[i].event, t->evt[i].tapi_notification_cb, t);
+ _DBG("TAPI register event : %s", t->evt[i].event);
+ if (r != TAPI_API_SUCCESS) {
+ _ERR("TAPI register event %s return %d",
+ t->evt[i].event, r);
+ return -1;
+ }
+ }
+
+ return 0;
+}
+
+static void _pwlock_tapi_deregister_noti_events(struct tapi *t)
+{
+ int r;
+ int i;
+
+ if (t == NULL)
+ return;
+
+
+ for (i = 0; i < t->evt_sz; i++) {
+ r = tel_deregister_noti_event(t->handle, t->evt[i].event);
+ if (r == TAPI_API_SUCCESS)
+ _DBG("TAPI [%s] event unregister success", t->evt[i].event);
+ else
+ _ERR("TAPI [%s] event unregister return %d", t->evt[i].event, r);
+ }
+}
+
+void pwlock_tapi_get_sim_lock_info_cb(TapiHandle *handle, int result, void *data, void *user_data)
+{
+ TelSimPinOperationResult_t sec_rt = result;
+ TelSimLockInfo_t *lock = data;
+ struct tapi *t = user_data;
+ struct pwlock_tapi_info ti;
+
+ _DBG("%s", __func__);
+
+ _DBG("TAPI_SERVICE_SIM lock info reponse received");
+ _DBG("set_rt[%d]", sec_rt);
+ _DBG("lock->lock_type[%d]", lock->lock_type);
+ _DBG("lock->lock_status[%d]-0:not need, 1:pin, 2:puk, 3:pin2, 4:puk2, 5:blocked", lock->lock_status);
+ _DBG("lock->retry_count[%d]", lock->retry_count);
+
+ ti.st = SIM_LOCK_INFO;
+ ti.retry_cnt = lock->retry_count;
+
+ if (t->cb)
+ t->cb(&ti, t->cb_data);
+}
+
+void pwlock_tapi_noti_modem_power_cb(TapiHandle *handle, const char *noti_id, void *data, void *user_data)
+{
+ ;
+}
+
+void pwlock_tapi_noti_sim_status_cb(TapiHandle *handle, const char *noti_id, void *data, void *user_data)
+{
+ TelSimCardStatus_t *sim_status = data;
+ struct tapi *t = user_data;
+ struct pwlock_tapi_info ti;
+
+ if (sim_status == NULL) {
+ _ERR("pwlock_tapi_noti_sim_status_cb:status is null");
+ return ;
+ }
+
+ _DBG("Sim status: 0x%x", *sim_status);
+
+ memset(&ti, 0, sizeof(ti));
+
+ switch (*sim_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;
+ case TAPI_SIM_STATUS_SIM_INITIALIZING:
+ ti.st = SIM_WAITING;
+ break;
+ default:
+ ti.st = SIM_OK;
+ break;
+ }
+
+ if (t->cb)
+ t->cb(&ti, t->cb_data);
+}
+
+void pwlock_tapi_verify_sim_pins_and_puks_cb(TapiHandle *handle, int result, void *data, void *user_data)
+{
+ TelSimPinOperationResult_t sec_rt = result;
+ TelSimSecResult_t *res = data;
+ struct tapi *t = user_data;
+ struct pwlock_tapi_info ti;
+
+ if (t == NULL) {
+ _ERR("pwlock_tapi_verify_sim_pins_cb:struct tapi is null");
+ return ;
+ }
+ if (res == NULL) {
+ _ERR("pwlock_tapi_verify_sim_pins_cb:res is null");
+ return ;
+ }
+
+ _DBG("sim pin/puk check result: 0x%x", sec_rt);
+
+ memset(&ti, 0, sizeof(ti));
+
+ switch (sec_rt) {
+ /*
+ 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: /**< Network Control Key Required */
+ _DBG("\tType: %d", res->type);
+ _DBG("\tRetry: %d", res->retry_count);
+ ti.st = SIM_REQ_NCK;
+ break;
+ case TAPI_SIM_NSCK_REQUIRED: /**< Network Subset Control Key Required */
+ _DBG("\tType: %d", res->type);
+ _DBG("\tRetry: %d", res->retry_count);
+ ti.st = SIM_REQ_NSCK;
+ break;
+ case TAPI_SIM_SPCK_REQUIRED: /**< Service Provider Control Key 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);
+}
+
+void pwlock_tapi_disable_sim_facility_cb(TapiHandle *handle, int result, void *data, void *user_data)
+{
+ TelSimPinOperationResult_t sec_rt = result;
+ TelSimSecResult_t *res = data;
+ struct tapi *t = user_data;
+ struct pwlock_tapi_info ti;
+
+ if (t == NULL) {
+ _ERR("pwlock_tapi_verify_sim_pins_cb:struct tapi is null");
+ return ;
+ }
+ if (res == NULL) {
+ _ERR("pwlock_tapi_verify_sim_pins_cb:res is null");
+ return ;
+ }
+
+ _DBG("PER setting result: 0x%x", sec_rt);
+
+ memset(&ti, 0, sizeof(ti));
+
+ switch (sec_rt) {
+ /*
+ 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: /**< Network Control Key Required */
+ _DBG("\tType: %d", res->type);
+ _DBG("\tRetry: %d", res->retry_count);
+ ti.st = SIM_REQ_NCK;
+ break;
+ case TAPI_SIM_NSCK_REQUIRED: /**< Network Subset Control Key Required */
+ _DBG("\tType: %d", res->type);
+ _DBG("\tRetry: %d", res->retry_count);
+ ti.st = SIM_REQ_NSCK;
+ break;
+ case TAPI_SIM_SPCK_REQUIRED: /**< Service Provider Control Key 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;
+ }
+
+ /* TODO: retry or error??? */
+ if (t->cb)
+ t->cb(&ti, t->cb_data);
+}
+
+static enum sim_stat check_sim(TelSimCardStatus_t stat)
+{
+ enum sim_stat r;
+ switch (stat) {
+ case TAPI_SIM_STATUS_CARD_NOT_PRESENT: /* Card not present. */
+ case TAPI_SIM_STATUS_CARD_REMOVED: /* Card removed. */
+ r = SIM_EMPTY;
+ break;
+ /* case 0xFF: // Sim is Initializing state. //the value is not in TelSimCardStatus_t, remove it */
+ case TAPI_SIM_STATUS_SIM_INITIALIZING: /* Sim is Initializing state. */
+ r = SIM_WAITING;
+ break;
+ case TAPI_SIM_STATUS_SIM_INIT_COMPLETED: /* Sim Initialization ok. */
+ r = SIM_OK;
+ break;
+ case TAPI_SIM_STATUS_SIM_PIN_REQUIRED: /* PIN required state. */
+ r = SIM_REQ_PIN;
+ break;
+ case TAPI_SIM_STATUS_SIM_PUK_REQUIRED: /* PUK required state. */
+ r = SIM_REQ_PUK;
+ break;
+ case TAPI_SIM_STATUS_CARD_BLOCKED: /* PIN/PUK blocked(permanently blocked) */
+ r = SIM_BLOCKED;
+ break;
+ case TAPI_SIM_STATUS_SIM_LOCK_REQUIRED: /* PH-SIM (phone-sim) locked state. */
+ r = SIM_REQ_LOCK;
+ break;
+ case TAPI_SIM_STATUS_SIM_NCK_REQUIRED: /* Network Control Key required state. */
+ r = SIM_REQ_NCK;
+ break;
+ case TAPI_SIM_STATUS_SIM_NSCK_REQUIRED: /* Network Subset Control Key required state. */
+ r = SIM_REQ_NSCK;
+ break;
+ case TAPI_SIM_STATUS_SIM_SPCK_REQUIRED: /* Service Provider Control Key required state. */
+ r = SIM_REQ_SPCK;
+ break;
+ case TAPI_SIM_STATUS_SIM_CCK_REQUIRED: /* Corporate Control Key required state. */
+ r = SIM_REQ_CCK;
+ break;
+ case 0xff: /* for tapi default value, timing issue */
+ r = SIM_RETRY;
+ break;
+ /* TODO: implement more locks... */
+ case TAPI_SIM_STATUS_CARD_ERROR: /* Bad card , On the fly SIM gone bad. */
+ default:
+ r = SIM_ERROR;
+ break;
+ }
+ return r;
+}
+
+enum sim_stat pwlock_tapi_check_sim(struct tapi *t, 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(t->handle, &st, &card_changed);
+
+ _DBG("tel_get_sim_init_info return %d, sim state: %d", r, st);
+
+ 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 pwlock_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) {
+ /*
+ if appn check very fast before telephony boot up, telephony can not be ready yet
+ in this point, appn should register vconf callback fuction with timer
+ timer will be used to waiting telephony boot up with limitation.
+ user should set proper time. (currently it`s up to experience)
+ */
+ _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;
+}
+
+int pwlock_tapi_get_sim_lock_info(struct tapi* t)
+{
+ int r;
+ TelSimLockType_t pin_type = 0;
+
+ _DBG("%s", __func__);
+
+ pin_type = TAPI_SIM_LOCK_SC;
+
+ r = tel_get_sim_lock_info(t->handle, pin_type, pwlock_tapi_get_sim_lock_info_cb, t);
+
+ _DBG("tel_get_sim_lock_info result : %d", r);
+
+ return 0;
+}
+
+static int verify_pins(struct tapi *t, char *code, int type)
+{
+ int r;
+ TelSimSecPw_t pin;
+
+ memset(&pin, 0, sizeof(pin));
+ pin.type = type;
+ pin.pw_len = strlen(code);
+ pin.pw = (unsigned char *)code;
+
+ _DBG("SIM PIN/PUK verifying...");
+
+ r = tel_verifiy_sim_pins(t->handle, &pin, pwlock_tapi_verify_sim_pins_and_puks_cb, t);
+
+ if (r != TAPI_API_SUCCESS) {
+ _ERR("TAPI verify pins error %d", r);
+ return -1;
+ }
+
+ return 0;
+}
+
+int pwlock_tapi_verify_pins(struct tapi *t, char *code)
+{
+ if (t == NULL)
+ return -1;
+
+ if (code == NULL || code[0] == '\0')
+ return -1;
+
+ return verify_pins(t, code, TAPI_SIM_PTYPE_PIN1);
+}
+
+int pwlock_tapi_verify_lock(struct tapi *t, char *code)
+{
+ if (t == NULL)
+ return -1;
+
+ if (code == NULL || code[0] == '\0')
+ return -1;
+
+ return verify_pins(t, code, TAPI_SIM_PTYPE_SIM);
+}
+
+int pwlock_tapi_verify_puks(struct tapi *t, char *code, char *newcode)
+{
+ int r;
+ 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(t->handle, &puk, &pin, pwlock_tapi_verify_sim_pins_and_puks_cb, t);
+ if (r != TAPI_API_SUCCESS)
+ return -1;
+
+ return 0;
+}
+
+int pwlock_tapi_disable_net_pers(struct tapi *t, char *code, TelSimLockType_t type)
+{
+ int err_code = TAPI_API_SUCCESS;
+
+ if (code == NULL || code[0] == '\0')
+ return -1;
+
+ TelSimFacilityPw_t facility_pw = { 0, };
+ facility_pw.lock_type = type;
+ facility_pw.pw = (unsigned char *)code;
+ facility_pw.pw_len = strlen(code);
+
+ err_code = tel_disable_sim_facility(t->handle, &facility_pw, pwlock_tapi_disable_sim_facility_cb, t);
+
+ if (err_code != TAPI_API_SUCCESS) {
+ _ERR("TAPI API FAIL: Error Code [0x%x]", err_code);
+ return -1;
+ }
+ /* WAIT EVENT RESPONSE FROM HERE */
+ return 0;
+}
+
+struct tapi *pwlock_tapi_init(void (*cb) (struct pwlock_tapi_info *, void *), void *data)
+{
+ int r;
+ struct appdata *ad = (struct appdata *)data;
+ struct tapi *t;
+ TapiHandle *tapi_handle = NULL;
+
+ if (ad == NULL) {
+ _ERR("TAPI init error: ad is null");
+ return NULL;
+ }
+
+ if (cb == NULL)
+ return NULL;
+
+ tapi_handle = tel_init(NULL);
+ if (tapi_handle == NULL) {
+ _ERR("TAPI init error");
+ return NULL;
+ }
+ _DBG("TAPI init");
+
+ t = calloc(1, sizeof(struct tapi));
+ if (t == NULL) {
+ _ERR("TAPI alloc data error");
+ goto err;
+ }
+ t->handle = tapi_handle;
+ t->evt = tapi_events;
+ t->evt_sz = sizeof(tapi_events) / sizeof(tapi_events[0]);
+ t->cb = cb;
+ t->cb_data = data;
+
+ r = _pwlock_tapi_register_noti_events(t);
+ if (r == -1) {
+ _ERR("TAPI register events error");
+ goto err;
+ }
+
+ return t;
+ err:
+ if (t) {
+ _pwlock_tapi_deregister_noti_events(t);
+ free(t);
+ }
+ if (tapi_handle != NULL) {
+ tel_deinit(tapi_handle);
+ }
+
+ return NULL;
+}
+
+void pwlock_tapi_exit(struct tapi **t)
+{
+ if (t == NULL || *t == NULL)
+ return;
+
+ _pwlock_tapi_deregister_noti_events(*t);
+
+ if ((*t)->handle != NULL) {
+ tel_deinit((*t)->handle);
+ }
+
+ free(*t);
+ *t = NULL;
+}
diff --git a/src/ui-callback.c b/src/ui-callback.c
new file mode 100755
index 0000000..d9cb517
--- /dev/null
+++ b/src/ui-callback.c
@@ -0,0 +1,194 @@
+/*
+ * pwlock
+ *
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <Ecore_X.h>
+#include <ui-gadget.h>
+#include <vconf.h>
+
+#include "pwlock.h"
+#include "util.h"
+#include "ui-callback.h"
+
+void pwlock_greeting_next_cb(void *data, Evas_Object *obj, void *e) {
+ _DBG("%s,%d", __func__, __LINE__);
+ struct appdata *ad = data;
+
+ if (!ad)
+ return;
+
+ ad->btn_evt_state = BUTTON_STATE_NEXT_CLICKED;
+
+ if (ad->is_no_sim == 1) {
+ do_state_directly(_ST_NOSIM, ad);
+ } else {
+ do_state_directly(_ST_TIME, ad);
+ }
+}
+
+void pwlock_nosim_prev_cb(void *data, Evas_Object * obj, void *e) {
+ _DBG("%s,%d", __func__, __LINE__);
+ struct appdata *ad = data;
+
+ if (!ad)
+ return;
+
+ ad->btn_evt_state = BUTTON_STATE_PREV_CLICKED;
+ do_state_directly(_ST_GREETING, ad);
+}
+
+void pwlock_nosim_skip_cb(void *data, Evas_Object * obj, void *e) {
+ _DBG("%s,%d", __func__, __LINE__);
+ struct appdata *ad = data;
+
+ if (!ad)
+ return;
+
+ ad->btn_evt_state = BUTTON_STATE_NEXT_CLICKED;
+ do_state_directly(_ST_TIME, ad);
+}
+
+void pwlock_tutorial_prev_cb(void *data, Evas_Object *obj, void *e) {
+ _DBG("%s,%d", __func__, __LINE__);
+ struct appdata *ad = data;
+
+ if (!ad)
+ return;
+
+ ad->btn_evt_state = BUTTON_STATE_PREV_CLICKED;
+ do_state_directly(_ST_CONNECTION, ad);
+}
+
+void pwlock_tutorial_next_cb(void *data, Evas_Object *obj, void *e) {
+ _DBG("%s,%d", __func__, __LINE__);
+ struct appdata *ad = data;
+
+ if (!ad)
+ return;
+
+ ad->btn_evt_state = BUTTON_STATE_NEXT_CLICKED;
+ do_state_directly(_ST_EXIT, ad);
+}
+
+void pwlock_ug_connection_layout_cb(ui_gadget_h 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__);
+ //ad->btn_evt_state = BUTTON_STATE_NONE;
+ 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);
+ //ug_disable_effect(ug);
+ evas_object_show(base);
+ ad->wifi_ug_layout = base;
+ break;
+ default:
+ break;
+ }
+ _DBG("%s end", __func__);
+}
+
+void pwlock_ug_connection_result_cb(ui_gadget_h ug, service_h service,
+ void *priv) {
+ _DBG("function=%s", __func__);
+ struct appdata *ad = NULL;
+
+ if (!ug || !priv || !service) {
+ return;
+ }
+ char *retv = NULL;
+ ad = (struct appdata *) priv;
+ _DBG("ad->state=%d", ad->state);
+
+ service_get_extra_data(service, "result", &retv);
+
+ if (retv && !strcmp(retv, "lbutton_click")) {
+ ad->btn_evt_state = BUTTON_STATE_PREV_CLICKED;
+ }
+ if (retv && !strcmp(retv, "rbutton_click")) {
+ ad->btn_evt_state = BUTTON_STATE_NEXT_CLICKED;
+ }
+}
+
+void pwlock_ug_connection_destroy_cb(ui_gadget_h ug, void *priv) {
+ _DBG("%s, %d begin", __func__, __LINE__);
+
+ struct appdata *ad = NULL;
+
+ if (!ug || !priv) {
+ return;
+ }
+ ad = (struct appdata *) priv;
+
+ if (ug) {
+ ug_destroy(ug);
+ ug = NULL;
+ }
+
+ _DBG("ad->btn_evt_state=%d", ad->btn_evt_state);
+
+ switch (ad->btn_evt_state) {
+ case BUTTON_STATE_NEXT_CLICKED:
+ do_state_directly(_ST_FINISH, ad);
+ break;
+ case BUTTON_STATE_PREV_CLICKED:
+ do_state_directly(_ST_TIME, ad);
+ break;
+ case BUTTON_STATE_NONE:
+ break;
+ }
+ //ad->btn_evt_state = BUTTON_STATE_NONE;
+}
+
+void pwlock_finish_prev_cb(void *data, Evas_Object *obj, void *e)
+{
+ _DBG("%s,%d", __func__, __LINE__);
+ struct appdata *ad = data;
+
+ if (!ad)
+ return;
+
+ ad->btn_evt_state = BUTTON_STATE_PREV_CLICKED;
+ do_state_directly(_ST_CONNECTION, ad);
+}
+
+void pwlock_finish_cb(void *data, Evas_Object *obj, void *e) {
+ _DBG("%s,%d", __func__, __LINE__);
+ struct appdata *ad = data;
+
+ if (!ad)
+ return;
+
+ vconf_set_bool(VCONFKEY_PWLOCK_FIRST_BOOT, 0);
+
+ ad->btn_evt_state = BUTTON_STATE_NEXT_CLICKED;
+ do_state_directly(_ST_EXIT, ad);
+}
diff --git a/src/ui.c b/src/ui.c
new file mode 100755
index 0000000..f58e58a
--- /dev/null
+++ b/src/ui.c
@@ -0,0 +1,1862 @@
+/*
+ * pwlock
+ *
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <appcore-efl.h>
+#include <Ecore_X.h>
+#include <ui-gadget.h>
+#include <vconf.h>
+#include <ail.h>
+#include <appsvc.h>
+#include <system_info.h>
+
+#include "pwlock.h"
+#include "util.h"
+#include "tapi.h"
+#include "ui.h"
+#include "langs.h"
+#include "ui-callback.h"
+
+static Elm_Gen_Item_Class itc_label1, itc_entry1, itc_label2, itc_entry2;
+static void _ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
+static void _ug_destroy_cb(ui_gadget_h 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, Eina_Bool focus);
+static Evas_Object *_editfield_entry_get(Evas_Object * parent);
+static Evas_Object *_create_toolbar_btn(Evas_Object *parent, const char* text, Evas_Smart_Cb func, void *data);
+
+static int _ug_destroy = 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,
+ _UI_FINISH, IDS_STU_POP_SETUP_COMPLETE,
+};
+
+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)
+{ /* nbeat */
+ Evas_Object *bg = elm_bg_add(win);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_color_set(bg, 248, 246, 239, 255);
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+ return bg;
+}
+
+static Evas_Object *_create_conformant(Evas_Object * parent)
+{
+ Evas_Object *conform;
+ conform = elm_conformant_add(parent);
+ evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(parent, conform);
+ elm_win_indicator_mode_set(parent, ELM_WIN_INDICATOR_SHOW);
+ evas_object_show(conform);
+
+ return conform;
+}
+
+static Evas_Object *_create_layout(struct appdata *ad)
+{
+ Evas_Object *ly;
+
+ ly = elm_layout_add(ad->elm_conform);
+ if (!ly) {
+ _ERR("UI layout add error");
+ return NULL;
+ }
+
+ /* Apply the nbeat layout style */
+ 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_toolbar_btn(Evas_Object *parent, const char* text, Evas_Smart_Cb func, void *data)
+{
+ Evas_Object *btn = elm_button_add(parent);
+
+ if (!btn)
+ return NULL;
+
+ elm_object_style_set(btn, "naviframe/toolbar/default");
+ elm_object_text_set(btn, text);
+ evas_object_smart_callback_add(btn, "clicked", func, data);
+
+ return btn;
+}
+
+Evas_Object *pwlock_add_layout_from_edj(Evas_Object *parent, const char *file,
+ const char *group) {
+ Evas_Object *layout = NULL;
+ Eina_Bool ret = EINA_FALSE;
+
+ if (parent == NULL) {
+ _ERR("parent is NULL");
+ return NULL;
+ }
+
+ layout = elm_layout_add(parent);
+ if (layout == NULL) {
+ _ERR("layout is NULL");
+ return NULL;
+ }
+
+ ret = elm_layout_file_set(layout, file, group);
+ _DBG("File:%s, Group:%s", file, group);
+ if (ret != EINA_TRUE) {
+ _DBG("Error loading File:%s, Group:%s", file, group);
+ evas_object_del(layout);
+ return NULL;
+ }
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+ evas_object_show(layout);
+
+ return layout;
+}
+
+static void init_ui(struct appdata *ad)
+{
+ if (!ad->elm_bg)
+ ad->elm_bg = _create_bg(ad->win);
+
+ if (!ad->elm_conform)
+ ad->elm_conform = _create_conformant(ad->win);
+
+ if (!ad->layout_main) {
+ ad->layout_main = _create_layout(ad);
+ if (!ad->layout_main)
+ return;
+ elm_object_content_set(ad->elm_conform, ad->layout_main);
+ }
+
+ if (!ad->elm_navigation_frame) {
+ ad->elm_navigation_frame = elm_naviframe_add(ad->layout_main);
+ if (!ad->elm_navigation_frame) {
+ _ERR("UI navi add error");
+ return;
+ }
+
+ elm_object_part_content_set(ad->layout_main, "elm.swallow.content", ad->elm_navigation_frame);
+ evas_object_show(ad->elm_navigation_frame);
+ }
+}
+
+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->layout_contents)
+ 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->layout_entry);
+
+ 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);
+
+ /* FIXME popup should be top display, so load main should be called after show msg.. */
+ 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; /* means fit for the rule */
+}
+
+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);
+ }
+ /* clear_entry(ad); */
+}
+
+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->layout_entry)));
+ popup = elm_popup_add(ad->win);
+ evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ /* FIXME */
+ 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->layout_entry));
+ if (imf_context)
+ ecore_imf_context_input_panel_hide(imf_context);
+
+ imf_context_second =
+ elm_entry_imf_context_get(_editfield_entry_get
+ (ad->layout_second_entry));
+ 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;
+ const char* entry_str = NULL;
+ int length = 0;
+
+ entry_str =elm_entry_entry_get(_editfield_entry_get(ad->layout_entry));
+
+ if (entry_str) {
+ length = strlen(entry_str);
+ }
+
+ if (length == 0) {
+ elm_object_disabled_set(ad->elm_button_done, EINA_TRUE);
+ } else {
+ elm_object_disabled_set(ad->elm_button_done, EINA_FALSE);
+ }
+ if (elm_object_focus_get(ad->layout_entry)) {
+ if (elm_entry_is_empty(_editfield_entry_get(ad->layout_entry))) {
+ elm_object_signal_emit(ad->layout_entry,
+ "elm,state,eraser,hide", "elm");
+ } else {
+ elm_object_signal_emit(ad->layout_entry,
+ "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_POP_CHECKING_SIM_CARD_ING));
+ _set_str(&ad->entry_str, _entry_get(ad->layout_entry));
+ _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->layout_entry));
+ _DBG("entry string: [%s]", ad->entry_str);
+ ret = _check_input_string(ad->ui_type, ad->entry_str);
+ if (ret == 0) {
+ /* load_main(ad, _UI_PUK_PIN); */
+ 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_POP_CHECKING_SIM_CARD_ING));
+ _set_str(&ad->pin_str, _entry_get(ad->layout_entry));
+ _DBG("entry string: [%s]", ad->pin_str);
+ ret = _check_input_string(ad->ui_type, ad->pin_str);
+ if (ret == 0) {
+ const char *layout_entry = _entry_get(ad->layout_entry);
+ const char *layout_second_entry = _entry_get(ad->layout_second_entry);
+ if (layout_entry && layout_second_entry &&
+ 0 == strcmp(layout_entry, layout_second_entry)) {
+ 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_POP_CHECKING_SIM_CARD_ING));
+ ret =
+ _check_input_string(ad->ui_type,
+ _entry_get(ad->layout_entry));
+ 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->layout_entry));
+ _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;
+
+ /* apply button insensitive */
+ elm_object_disabled_set(ad->elm_button_dial, EINA_TRUE);
+ _imf_context_input_panel_hide(ad);
+
+ ad->previous_ui_type = ad->ui_type;
+
+ if(ad->layout_entry) {
+ elm_entry_input_panel_enabled_set(_editfield_entry_get(ad->layout_entry),
+ EINA_FALSE);
+ }
+
+ if(ad->layout_second_entry) {
+ elm_entry_input_panel_enabled_set(_editfield_entry_get(ad->layout_second_entry),
+ EINA_FALSE);
+ }
+
+ if (show_dialer(ad) == 0) {
+ elm_object_disabled_set(ad->elm_button_dial, EINA_FALSE);
+ ad->ui_type = ad->previous_ui_type;
+ return;
+ }
+}
+
+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);
+ 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_DIALER) { /* for IMF show problems */
+ return;
+ }
+ if (ad->layout_entry) {
+ evas_object_show(_editfield_entry_get(ad->layout_entry));
+ elm_object_focus_set(_editfield_entry_get(ad->layout_entry),
+ 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_DIALER) { /* for IMF show problems */
+ return;
+ }
+ if (ad->layout_entry) {
+ evas_object_show(_editfield_entry_get(ad->layout_entry));
+ elm_object_focus_set(_editfield_entry_get(ad->layout_entry),
+ 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:
+ break;
+ default:
+ if (ad->language_ug) {
+ ug_destroy(ad->language_ug);
+ ad->language_ug = NULL;
+ }
+ break;
+ }
+
+ _DBG("%s,%d", __func__, __LINE__);
+
+ /* when last UG or SIM changed with fisrt UG, destroy the view
+ if (((ad->sim_changed == 1) && (ad->ui_type == _UI_LANG))
+ || (ad->ui_type == _UI_TIME)) {
+ _DBG("%s,%d", __func__, __LINE__);
+ pwlock_destroy(ad);
+ }
+ */
+}
+
+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, Eina_Bool focus)
+{
+ 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_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);
+ 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);
+ elm_object_focus_set(entry, focus);
+
+ 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[512] = {0, };
+ char buf2[256] = {0, };
+
+ if (!ad || !part) {
+ return NULL;
+ }
+ if (!strcmp(part, "elm.text")) {
+ _DBG("retry_cnt = %d", ad->retry_cnt);
+ if (ad->retry_cnt == 1) {
+ snprintf(buf, sizeof(buf), "%s (%s)", _get_tip(ad->ui_type),
+ pwlock_get_string(IDS_IDLE_BODY_1_ATTEMPT_LEFT));
+ } else if (ad->retry_cnt > 1) {
+ snprintf(buf2, sizeof(buf2), pwlock_get_string(IDS_IDLE_BODY_PD_ATTEMPTS_LEFT), ad->retry_cnt);
+ snprintf(buf, sizeof(buf), "%s (%s)", _get_tip(ad->ui_type), buf2);
+
+ } else {
+ 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, EINA_TRUE);
+ evas_object_smart_callback_add(_editfield_entry_get(layout),
+ "changed", _done_button_changed,
+ ad);
+
+ ad->layout_entry = 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, EINA_FALSE);
+ evas_object_smart_callback_add(_editfield_entry_get(layout),
+ "changed", _entry_changed_cb,
+ layout);
+
+ ad->layout_second_entry = 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 *bt_done = NULL;
+ Evas_Object *bt_dial = NULL;
+ Evas_Object *genlist = NULL;
+ Elm_Object_Item *genlist_item = NULL;
+
+ _DBG("%s", __func__);
+
+ set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION);
+
+ ad->layout_contents = pwlock_add_layout_from_edj(ad->elm_navigation_frame, EDJFILE, "pwlock-lock-ui");
+
+ genlist = elm_genlist_add(ad->layout_contents);
+ elm_object_part_content_set(ad->layout_contents, "swl/genlist", genlist);
+ _list_set_styles();
+
+
+ if (_UI_PUK_PIN == ui_type) {
+ ad->retry_cnt = 0;
+ }
+
+ 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, ELM_OBJECT_SELECT_MODE_NONE);
+
+ 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, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
+ 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, ELM_OBJECT_SELECT_MODE_NONE);
+
+ 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, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+
+ _DBG("load_main ad->ui_type = %d", ad->ui_type);
+
+ bt_dial = elm_button_add(ad->elm_navigation_frame);
+ //elm_object_style_set(bt_dial, "naviframe/title/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->elm_button_dial = bt_dial;
+ evas_object_show(bt_dial);
+
+ bt_done = elm_button_add(ad->elm_navigation_frame);
+ //elm_object_style_set(bt_done, "naviframe/title/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->elm_button_done = bt_done;
+ evas_object_show(bt_done);
+
+ elm_object_disabled_set(bt_done, EINA_TRUE);
+
+ elm_naviframe_item_push(ad->elm_navigation_frame, _get_header(ui_type), NULL,
+ NULL, ad->layout_contents, NULL);
+
+ elm_object_part_content_set(ad->layout_contents, "button.select.emergency", bt_dial);
+ elm_object_part_content_set(ad->layout_contents, "button.select.done", bt_done);
+
+ ad->ui_type = ui_type;
+ remove_waiting_popup(ad);
+}
+
+void show_pin(struct appdata *ad)
+{
+ _DBG("%s", __func__);
+
+ if (!ad->elm_navigation_frame)
+ init_ui(ad);
+
+ load_main(ad, _UI_PIN);
+
+ evas_object_show(ad->win);
+}
+
+void show_puk(struct appdata *ad)
+{
+ _DBG("%s", __func__);
+
+ if (!ad->elm_navigation_frame)
+ 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->elm_navigation_frame)
+ 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->elm_navigation_frame) {
+ 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;
+ Elm_Object_Item *navi_it = NULL;
+ char buf[1024] = { 0, };
+
+ _DBG("%s", __func__);
+
+ set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION);
+
+ if (!ad->elm_navigation_frame)
+ init_ui(ad);
+
+ ly = elm_layout_add(ad->elm_navigation_frame);
+ elm_layout_theme_set(ly, "layout", "application", "noindicator");
+ /*Create content field */
+ el = elm_label_add(ad->elm_navigation_frame);
+ elm_label_line_wrap_set(el, ELM_WRAP_WORD);
+
+ snprintf(buf, sizeof(buf), "%s%s%s",
+ "<br><font_size=32 font=SLP:style=Regular color=#7c7c7c 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->elm_navigation_frame);
+ 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->layout_contents = ly;
+ navi_it = elm_naviframe_item_push(ad->elm_navigation_frame, _get_header(_UI_BLOCK),
+ NULL, NULL, ad->layout_contents, NULL);
+
+ elm_object_item_part_content_set(navi_it, "title_right_btn", bt_dial);
+ ad->ui_type = _UI_BLOCK;
+ evas_object_show(ad->win);
+ remove_waiting_popup(ad);
+}
+
+void pwlock_destroy(struct appdata *ad)
+{
+ _DBG("%s", __func__);
+
+ remove_waiting_popup(ad);
+ if (!ad->elm_navigation_frame)
+ return;
+ _DBG("%s %d", __func__, __LINE__);
+
+ elm_naviframe_item_pop(ad->elm_navigation_frame);
+
+ if (ad->layout_contents) {
+ evas_object_del(ad->layout_contents);
+ ad->layout_contents = NULL;
+ }
+ if (ad->layout_entry) {
+ evas_object_del(ad->layout_entry);
+ ad->layout_entry = NULL;
+ }
+ if (ad->layout_second_entry) {
+ evas_object_del(ad->layout_second_entry);
+ ad->layout_second_entry = NULL;
+ }
+
+ /* FIXME we should check window hide for fast boot */
+ /* evas_object_hide(ad->win); */
+ _DBG("%s %d %p", __func__, __LINE__, ad->elm_navigation_frame);
+}
+
+void clear_entry(struct appdata *ad)
+{
+ if (ad->layout_entry) {
+ elm_object_part_text_set(ad->layout_entry, "elm.guidetext", "");
+ elm_entry_entry_set(_editfield_entry_get(ad->layout_entry), "");
+ }
+ if (ad->layout_second_entry) {
+ elm_object_part_text_set(ad->layout_second_entry,
+ "elm.guidetext", "");
+ elm_entry_entry_set(_editfield_entry_get
+ (ad->layout_second_entry), "");
+ }
+}
+
+static void _ug_layout_cb(ui_gadget_h 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);
+ //ug_disable_effect(ug);
+
+ if(_UI_TIME == ad->ui_type) {
+ ad->time_ug_layout = base;
+ }
+ 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(ui_gadget_h ug, service_h service, void *priv)
+{
+ _DBG("function=%s", __func__);
+ struct appdata *ad = NULL;
+
+ if (!ug || !priv || !service) {
+ return;
+ }
+ char *retv = NULL;
+ ad = (struct appdata *)priv;
+ _DBG("ad->state=%d", ad->state);
+
+ switch (ad->state) {
+ case _ST_LANG:
+ {
+ service_get_extra_data(service, "updateType", &retv);
+ if (retv)
+ _DBG("_ST_LANG updateType = %s", retv);
+ service_get_extra_data(service, "ON_OFF_TEXT", &retv);
+ if (retv)
+ _DBG("_ST_LANG ON_OFF_TEXT = %s", retv);
+ service_get_extra_data(service, "result", &retv);
+ 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_TIME:
+ {
+ service_get_extra_data(service, "result", &retv);
+ if (retv)
+ _DBG("_ST_TIME name = %s", retv);
+ if (retv && !strcmp(retv, "lbutton_click")) {
+ ad->btn_evt_state = BUTTON_STATE_PREV_CLICKED;
+ ad->kill_ug = 1;
+ } else if (retv && !strcmp(retv, "rbutton_click")) {
+ ad->btn_evt_state = BUTTON_STATE_NEXT_CLICKED;
+ ad->kill_ug = 0;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (!retv) { /* avoid to click ug quickly */
+ _DBG("retv = %s", retv);
+ _ug_destroy = 1;
+ }
+}
+
+static void _ug_destroy_cb(ui_gadget_h 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;
+
+ if (ad->ui_type != _UI_DIALER) {
+ if (ug) {
+ ug_destroy(ug);
+ ug = NULL;
+ }
+ }
+
+ _DBG("%s, %d ad->state: %d", __func__, __LINE__, ad->state);
+ switch (ad->state) {
+ case _ST_LANG:
+ {
+ ad->state = _ST_GREETING;
+ //show_waiting_popup(ad, NULL);
+ do_state(ad);
+ }
+ break;
+ case _ST_TIME:
+ {
+ if (ad->kill_ug) { /* Previous button clicked */
+ ad->date_and_time_previous = 1;
+ //show_waiting_popup(ad, NULL);
+ if (ad->is_no_sim == 1) {
+ do_state_directly(_ST_NOSIM, ad);
+ } else {
+ do_state_directly(_ST_GREETING, ad);
+ }
+ ad->kill_ug = 0;
+ return;
+ } else {
+ do_state_directly(_ST_CONNECTION, ad);
+ return;
+ }
+ }
+ 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;
+
+ if(ad->layout_entry) {
+ elm_entry_input_panel_enabled_set(
+ _editfield_entry_get(ad->layout_entry),
+ EINA_TRUE);
+ elm_entry_input_panel_show(
+ _editfield_entry_get(ad->layout_entry));
+ }
+
+ if(ad->layout_second_entry) {
+ elm_entry_input_panel_enabled_set(
+ _editfield_entry_get(ad->layout_second_entry),
+ EINA_TRUE);
+ }
+
+ elm_object_disabled_set(ad->elm_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->layout_entry) {
+ evas_object_show(_editfield_entry_get
+ (ad->layout_entry));
+ elm_object_focus_set
+ (_editfield_entry_get
+ (ad->layout_entry), EINA_TRUE);
+ }
+ }
+ }
+ }
+}
+
+static void _menu_greeting_button_lang_cb(void *data, Evas_Object * obj, void *e) {
+ _DBG("%s,%d", __func__, __LINE__);
+ struct appdata *ad = data;
+
+ if (!ad)
+ return;
+
+ ad->state = _ST_LANG;
+ show_lang(ad);
+ /* TODO: */
+}
+
+static void _nosim_retry_cb(void *data, Evas_Object * obj, void *event_info) {
+ _DBG("%s,%d", __func__, __LINE__);
+ struct appdata *ad = data;
+
+ if (!ad)
+ return;
+
+ do_state_directly(_ST_SIM, ad);
+}
+
+int show_greeting(struct appdata *ad) {
+ _DBG("%s,%d", __func__, __LINE__);
+
+ char *model_name = NULL;
+
+ Evas_Object *navi = NULL;
+ Elm_Object_Item *navi_it = NULL;
+ Evas_Object *contents = NULL;
+ Evas_Object *button = NULL;
+ Evas_Object *emergency_btn = NULL;
+ Evas_Object *start_btn = NULL;
+
+ int ret_val;
+
+ if (!ad)
+ return 0;
+
+ set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION);
+
+ ad->ui_type = _UI_GREETING;
+
+ pwlock_destroy(ad);
+
+ init_ui(ad);
+ navi = ad->elm_navigation_frame;
+
+ contents = pwlock_add_layout_from_edj(navi, EDJFILE, "pwlock-menu-lang");
+
+ elm_theme_extension_add(NULL, EDJFILE);
+
+ ret_val = system_info_get_value_string(SYSTEM_INFO_KEY_PLATFORM_NAME, &model_name);
+ if (ret_val != SYSTEM_INFO_ERROR_NONE) {
+ _ERR("system_info_get_value_string return error : %d", ret_val);
+ } else {
+ _DBG("SYSTEM_INFO_KEY_PLATFORM_NAME = %s\n", model_name);
+ }
+
+ if (model_name != NULL) {
+ _DBG("Device Name = %s\n", model_name);
+ elm_object_part_text_set(contents, "text.greeting.1", pwlock_get_string(IDS_IDLE_BODY_GREETING_WELCOME));
+ elm_object_part_text_set(contents, "text.greeting.2", model_name);
+ }
+ else {
+ elm_object_part_text_set(contents, "text.greeting.1", pwlock_get_string(IDS_SCM_BODY_WELCOME_E));
+ }
+
+ PWLOCK_MEMFREE(model_name);
+
+ elm_object_part_text_set(contents, "text.help",
+ pwlock_get_string(IDS_STU_BODY_SELECT_LANGUAGE));
+
+ button = elm_button_add(navi);
+ elm_object_style_set(button, "pwlock/lang_btn");
+ elm_object_part_content_set(contents, "button.select.lang", button);
+
+ elm_object_text_set(button, pwlock_get_lang_title());
+ evas_object_smart_callback_add(button, "clicked", _menu_greeting_button_lang_cb, ad);
+
+ emergency_btn = elm_button_add(navi);
+ elm_object_style_set(emergency_btn, "pwlock/bottom_btn");
+ elm_object_part_content_set(contents, "button.select.emergency", emergency_btn);
+
+ elm_object_text_set(emergency_btn, pwlock_get_string(IDS_ST_SK_EMERGENCY_CALL));
+ evas_object_smart_callback_add(emergency_btn, "clicked", _dial_cb, ad);
+
+ start_btn = elm_button_add(navi);
+ elm_object_style_set(start_btn, "pwlock/bottom_btn");
+ elm_object_part_content_set(contents, "button.select.start", start_btn);
+
+ elm_object_text_set(start_btn, pwlock_get_string(IDS_COM_SK_START));
+ evas_object_smart_callback_add(start_btn, "clicked", pwlock_greeting_next_cb, ad);
+
+ navi_it = elm_naviframe_item_push(navi, NULL, NULL, NULL, contents, NULL);
+ elm_naviframe_item_title_visible_set(navi_it, EINA_FALSE);
+
+ evas_object_show(ad->win);
+ _destroy_previous_ugs(ad);
+
+ return 1;
+}
+
+int show_connection(struct appdata *ad) {
+ _DBG("%s", __func__);
+ ad->ui_type = _UI_CONNECTION;
+ service_h service;
+
+ set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION);
+
+ //if (ad->connection_ug) {
+ // evas_object_show(ad->wifi_ug_layout);
+ // return 1;
+ //}
+
+ UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE);
+ struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
+
+ service_create(&service);
+
+ if (cbs == NULL) {
+ service_destroy(service); /* prevent */
+ return 0;
+ }
+ cbs->layout_cb = pwlock_ug_connection_layout_cb;
+ cbs->result_cb = pwlock_ug_connection_result_cb;
+ cbs->destroy_cb = pwlock_ug_connection_destroy_cb;
+ cbs->priv = (void *)ad;
+ if (!service) {
+ service_destroy(service);
+ free(cbs); /* memory leak */
+ return 0;
+ }
+ service_add_extra_data(service, "caller", "pwlock");
+ service_add_extra_data(service, "lbutton", pwlock_get_string(IDS_COM_BODY_PREVIOUS));
+ service_add_extra_data(service, "rbutton_next", pwlock_get_string(IDS_COM_SK_NEXT));
+ service_add_extra_data(service, "rbutton_skip", pwlock_get_string(IDS_COM_SK_SKIP));
+ service_add_extra_data(service, "lbutton_icon", IMAGEDIR"/A01-9_controlbar_icon_Previous.png");
+ service_add_extra_data(service, "rbutton_next_icon", IMAGEDIR"/A01-9_controlbar_icon_Next.png");
+ service_add_extra_data(service, "rbutton_skip_icon", IMAGEDIR"/A01-9_controlbar_icon_Skip.png");
+ service_add_extra_data(service, "scan_icon", IMAGEDIR"/A01-9_controlbar_icon_scan.png");
+
+ ad->connection_ug =
+ ug_create(NULL, "wifi-efl-UG", UG_MODE_FULLVIEW, service, cbs);
+ service_destroy(service);
+ free(cbs);
+ if (!ad->connection_ug) {
+ _DBG("Get connection ug failed.");
+ if (ad->btn_evt_state == BUTTON_STATE_PREV_CLICKED)
+ ad->state = _ST_TIME;
+ else
+ ad->state = _ST_FINISH;
+ do_state(ad);
+ return 0;
+ }
+ ad->current_ug = ad->connection_ug;
+ evas_object_show(ad->win);
+ _destroy_previous_ugs(ad);
+ return 1;
+}
+
+int show_tutorial(struct appdata *ad) {
+ _DBG("%s,%d", __func__, __LINE__);
+ Evas_Object *navi = NULL;
+ Evas_Object *prev_btn = NULL;
+ Evas_Object *next_btn = NULL;
+ Elm_Object_Item *navi_it = NULL;
+
+ if (!ad)
+ return 0;
+
+ set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION);
+
+ ad->ui_type = _UI_TUTORIAL;
+
+ pwlock_destroy(ad);
+
+ init_ui(ad);
+ navi = ad->elm_navigation_frame;
+
+ prev_btn = _create_toolbar_btn(navi, pwlock_get_string(IDS_COM_BODY_PREVIOUS), pwlock_tutorial_prev_cb, ad);
+ next_btn = _create_toolbar_btn(navi, pwlock_get_string(IDS_COM_SK_CANCEL), pwlock_tutorial_next_cb,ad);
+
+ navi_it =
+ elm_naviframe_item_push(navi, (const char *)_("TUTORIAL"),
+ NULL, NULL, NULL, NULL);
+
+ elm_object_item_part_content_set(navi_it, "toolbar_button1", prev_btn);
+ elm_object_item_part_content_set(navi_it, "toolbar_button2", next_btn);
+
+ evas_object_show(ad->win);
+ _destroy_previous_ugs(ad);
+
+ return 1;
+}
+
+int show_lang(struct appdata *ad)
+{
+ _DBG("%s", __func__);
+ ad->ui_type = _UI_LANG;
+ service_h service;
+ UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE);
+ struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
+
+ service_create(&service);
+
+ if (cbs == NULL) {
+ service_destroy(service); /* prevent */
+ 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 (!service) {
+ service_destroy(service);
+ free(cbs); /* memory leak */
+ return 0;
+ }
+ service_add_extra_data(service, "caller", "pwlock");
+ service_add_extra_data(service, "viewtype", "language");
+
+ ad->language_ug =
+ ug_create(NULL, "setting-phone-efl", UG_MODE_FULLVIEW, service, cbs);
+ service_destroy(service);
+ free(cbs);
+ if (!ad->language_ug) {
+ _DBG("Get phone ug failed.");
+ ad->state = _ST_GREETING;
+ do_state(ad);
+ return 0;
+ }
+ ad->current_ug = ad->language_ug;
+ evas_object_show(ad->win);
+ return 1;
+}
+
+int show_nosim(struct appdata *ad)
+{
+ _DBG("%s,%d", __func__, __LINE__);
+ Evas_Object *layout = NULL;
+ Evas_Object *navi = NULL;
+ Evas_Object *button = NULL;
+ Evas_Object *prev_btn = NULL;
+ Evas_Object *skip_btn = NULL;
+ Elm_Object_Item *navi_it = NULL;
+
+ if (!ad)
+ return 0;
+
+ set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION);
+
+ ad->ui_type = _UI_NOSIM;
+
+ pwlock_destroy(ad);
+
+ init_ui(ad);
+ navi = ad->elm_navigation_frame;
+
+ layout = pwlock_add_layout_from_edj(navi, EDJFILE, "pwlock-nosim-ui");
+
+ elm_object_part_text_set(layout, "text.help", pwlock_get_string(IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG));
+
+ button = elm_button_add(layout);
+ elm_object_text_set(button, pwlock_get_string(IDS_ST_BUTTON_TRY_AGAIN_ABB));
+ evas_object_smart_callback_add(button, "clicked", _nosim_retry_cb, ad);
+ elm_object_part_content_set(layout, "button.select.retry", button);
+
+ prev_btn = _create_toolbar_btn(navi, pwlock_get_string(IDS_COM_BODY_PREVIOUS), pwlock_nosim_prev_cb, ad);
+ skip_btn = _create_toolbar_btn(navi, pwlock_get_string(IDS_COM_SK_SKIP), pwlock_nosim_skip_cb, ad);
+
+ navi_it =
+ elm_naviframe_item_push(navi, (const char *)_(pwlock_get_string(IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE)),
+ NULL, NULL, layout, NULL);
+
+ elm_object_item_part_content_set(navi_it, "toolbar_button1", prev_btn);
+ elm_object_item_part_content_set(navi_it, "toolbar_button2", skip_btn);
+
+ evas_object_show(ad->win);
+ _destroy_previous_ugs(ad);
+
+ return 1;
+}
+
+int show_time(struct appdata *ad)
+{
+ _DBG("%s,%d", __func__, __LINE__);
+ if (!ad)
+ return 0;
+ ad->ui_type = _UI_TIME;
+
+ set_win_prop(ad, ECORE_X_WINDOW_TYPE_NOTIFICATION);
+
+ //if (ad->date_ug) {
+ // evas_object_hide(ad->wifi_ug_layout);
+ // return 1;
+ //}
+
+ ad->date_and_time_settings_loaded = 1;
+ service_h service;
+ UG_INIT_EFL(ad->win, UG_OPT_INDICATOR_ENABLE);
+ struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
+
+ service_create(&service);
+
+ if (cbs == NULL) {
+ service_destroy(service); /* prevent */
+ 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 (!service) {
+ service_destroy(service);
+ free(cbs); /* memory leak */
+ return 0;
+ }
+ service_add_extra_data(service, "caller", "pwlock");
+ service_add_extra_data(service, "lbutton", pwlock_get_string(IDS_COM_BODY_PREVIOUS));
+ service_add_extra_data(service, "rbutton", pwlock_get_string(IDS_COM_SK_NEXT));
+
+ ad->date_ug =
+ ug_create(NULL, "setting-time-efl", UG_MODE_FULLVIEW, service, cbs);
+ service_destroy(service);
+ free(cbs);
+ if (!ad->date_ug) {
+ _DBG("?????Get time ug failed.");
+ if (ad->btn_evt_state == BUTTON_STATE_PREV_CLICKED)
+ ad->state = _ST_GREETING;
+ else
+ ad->state = _ST_CONNECTION;
+ do_state(ad);
+ return 0;
+ }
+ ad->current_ug = ad->date_ug;
+ evas_object_show(ad->win);
+ _destroy_previous_ugs(ad);
+ return 1;
+}
+
+int show_finish(struct appdata *ad) {
+ _DBG("%s,%d", __func__, __LINE__);
+
+ Evas_Object *navi = NULL;
+ Evas_Object *prev_btn = NULL;
+ Evas_Object *finish_btn = NULL;
+ Elm_Object_Item *navi_it = NULL;
+ Evas_Object *contents = NULL;
+ Evas_Object *label = NULL;
+ Eina_Strbuf *finish_text;
+
+ if (!ad)
+ return 0;
+
+ ad->ui_type = _UI_FINISH;
+
+ pwlock_destroy(ad);
+
+ init_ui(ad);
+ navi = ad->elm_navigation_frame;
+
+ contents = pwlock_add_layout_from_edj(navi, EDJFILE, "pwlock-finish");
+
+ finish_text = eina_strbuf_new();
+
+ label = elm_label_add(contents);
+ elm_label_line_wrap_set(label, ELM_WRAP_WORD);
+ evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
+ evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ if (finish_text != NULL && eina_strbuf_append_printf(finish_text,
+ "<font size=32 color=#7C7C7C align=center><br> %s </font>",
+ pwlock_get_string(IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE)) == EINA_TRUE) {
+ elm_object_text_set(label, eina_strbuf_string_get(finish_text));
+ }
+
+ if (finish_text != NULL) {
+ eina_strbuf_free(finish_text);
+ }
+
+ elm_object_part_content_set(contents, "swl/label", label);
+
+ prev_btn = _create_toolbar_btn(navi, pwlock_get_string(IDS_COM_BODY_PREVIOUS), pwlock_finish_prev_cb, ad);
+ finish_btn = _create_toolbar_btn(navi, pwlock_get_string(IDS_ST_BODY_INSTALTAB_FINISH), pwlock_finish_cb, ad);
+
+ navi_it = elm_naviframe_item_push(navi, _get_header(ad->ui_type), NULL, NULL, contents, NULL);
+
+ elm_object_item_part_content_set(navi_it, "toolbar_button1", prev_btn);
+ elm_object_item_part_content_set(navi_it, "toolbar_button2", finish_btn);
+
+ evas_object_show(ad->win);
+ _destroy_previous_ugs(ad);
+
+ return 1;
+}
+
+int show_dialer(struct appdata *ad)
+{
+ _DBG("%s,%d", __func__, __LINE__);
+ if (!ad)
+ return 0;
+ ad->ui_type = _UI_DIALER;
+
+ service_h service;
+ service_create(&service);
+ 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) {
+ service_destroy(service); /* prevent */
+ return 0;
+ }
+ cbs->layout_cb = _ug_layout_cb;
+ cbs->result_cb = NULL;
+ cbs->destroy_cb = _ug_destroy_cb;
+ cbs->priv = (void *)ad;
+
+ if (!service) {
+ service_destroy(service);
+ free(cbs); /* memory leak */
+ return 0;
+ }
+
+ service_add_extra_data(service, "emergency_dialer", "emergency");
+ ad->dialer_ug = ug_create(NULL, "dialer-efl", UG_MODE_FULLVIEW, service, cbs);
+ service_destroy(service);
+ 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->layout_entry)));
+ 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;
+ }
+
+ _DBG("%s", __func__);
+
+ Evas_Object *popup = NULL;
+ Evas_Object *progressbar = NULL;
+ Evas_Object *box = NULL;
+ Evas_Object *label = NULL;
+
+ Eina_Strbuf *popup_str;
+
+ remove_waiting_popup(ad);
+
+ popup = elm_popup_add(ad->win);
+ ad->waiting_popup = popup;
+ box = elm_box_add(popup);
+ if (msg_str != NULL) {
+ popup_str = eina_strbuf_new();
+ label = elm_label_add(popup);
+ elm_label_line_wrap_set(label, EINA_TRUE);
+ if (popup_str != NULL && eina_strbuf_append_printf(popup_str,
+ "<font color=#000000>%s</font>", msg_str) == EINA_TRUE) {
+ elm_object_text_set(label, eina_strbuf_string_get(popup_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);
+
+ if (popup_str != NULL) {
+ eina_strbuf_free(popup_str);
+ }
+ }
+
+ 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);
+
+ evas_object_show(ad->win);
+}
+
+void remove_waiting_popup(struct appdata *ad)
+{
+ _DBG("%s", __func__);
+ if (!ad) {
+ return;
+ }
+ if (ad->waiting_popup) {
+ _DBG("delete 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;
+}
+
+void update_pw_entry(struct appdata *ad, char *input_data)
+{
+ _DBG("%s", __func__);
+
+ if (input_data == NULL)
+ return;
+ elm_entry_entry_set(_editfield_entry_get(ad->layout_entry), input_data);
+ elm_entry_cursor_end_set(_editfield_entry_get(ad->layout_entry));
+ _done_cb(ad, NULL, NULL);
+}
diff --git a/src/util.c b/src/util.c
new file mode 100755
index 0000000..6f2f9c6
--- /dev/null
+++ b/src/util.c
@@ -0,0 +1,263 @@
+/*
+ * pwlock
+ *
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <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 <iniparser.h>
+
+#include "util.h"
+
+#define LINEMAX 256
+#define MAXFILELEN 1048576 /* 32000 */
+
+#define PHLOCK_SOCK_PREFIX "/tmp/phlock"
+#define PHLOCK_SOCK_MAXBUFF 65535
+
+const char *sys_str_table[] = {
+ "IDS_COM_SK_DONE", /* 0 */
+ "IDS_COM_BODY_ENTER_PASSWORD",
+ "IDS_COM_BODY_PREVIOUS",
+ "IDS_COM_SK_NEXT",
+ "IDS_COM_SK_OK",
+ "IDS_COM_SK_CANCEL",
+ "IDS_COM_SK_START"
+};
+
+const char *app_str_table[] = {
+ "IDS_IDLE_BODY_AUTOMATIC",
+ "IDS_IDLE_HEADER_NETWORK_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_NETWORK_PERSONALISATION_ON_ENTER_CONTROL_KEY",
+ "IDS_IDLE_BODY_NETWORK_SUBSET_PERSONALISATION_ON_ENTER_CONTROL_KEY",
+ "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_WRONG_PASSWORD",
+ "IDS_IDLE_BUTTON_DIALER",
+ "IDS_IDLE_HEADER_DISPLAY_LANGUAGE",
+ "IDS_IDLE_BODY_PASSWORD_EMPTY",
+ "IDS_IDLE_BODY_PD_TO_PD_DIGITS_REQUIRED",
+ "Passwords do not match", /* TODO: System string request */
+ "PIN code has been changed", /* TODO: String request */
+ "SIM card error", /* TODO: String request */
+ "IDS_IDLE_POP_CHECKING_SIM_CARD_ING",
+ "Welcome to your", /* TODO: String request */
+ "IDS_SCM_BODY_WELCOME_E",
+ "IDS_STU_BODY_SELECT_LANGUAGE",
+ "IDS_ST_SK_EMERGENCY_CALL",
+ "IDS_ST_BODY_TAP_TO_SET_UP",
+ "IDS_COM_SK_SKIP",
+ "IDS_ST_BODY_INSTALTAB_FINISH",
+ "IDS_STU_BODY_DEVICE_IS_SET_UP_AND_READY_TO_USE",
+ "IDS_STU_POP_SETUP_COMPLETE",
+ "IDS_COM_BODY_NO_SIM_CARD_IN_DEVICE",
+ "IDS_STU_BODY_HOW_TO_INSERT_SIM_CARD_HELP_MSG",
+ "IDS_ST_BUTTON_TRY_AGAIN_ABB"
+};
+
+static void _log(char *msg)
+{
+ FILE *fp;
+
+ fp = fopen(LOGFILE, "a");
+ if (fp == NULL)
+ return;
+ fprintf(fp, "%s\n", msg);
+ fclose(fp);
+}
+
+void pwlock_log(char *fmt, ...)
+{
+ va_list ap;
+ char buf[LINEMAX];
+
+ va_start(ap, fmt);
+ vsnprintf(buf, sizeof(buf), fmt, ap);
+ va_end(ap);
+
+ _log(buf);
+}
+
+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(&current_time);
+ gmtime_r(&current_time, &local_t); /* for prevent 53555 */
+ int len = snprintf(debugString, sizeof(debugString),
+ "[%d-%02d-%02d, %02d:%02d:%02d]: ",
+ local_t.tm_year + 1900, local_t.tm_mon + 1,
+ 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) {
+ /* TODO:ERROR handling */
+ return;
+ } else {
+ debugString[len] = '\n';
+ }
+ /* FIXME this is for permission.. later we should fix and remove this... */
+ 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);
+ elm_win_conformant_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) {
+ /* get system string */
+ str = dgettext("sys_string", sys_str_table[id]);
+ } else {
+ /* get application string */
+ str =
+ dgettext("pwlock",
+ app_str_table[id - IDS_PWLOCK_SYSTEM_STRING_MAX]);
+ }
+
+ _DBG("get string : %s\n", str);
+
+ return str;
+}
+
+void pwlock_tolower(char *src, char *dest)
+{
+ int i;
+ int src_len=0;
+
+ if (!src || !dest) {
+ _DBG(" src=%p, dest=%p\n", src, dest);
+ return;
+ }
+ src_len = strlen(src);
+ for(i=0;i<src_len;i++) {
+ dest[i] = tolower(src[i]);
+ }
+ dest[i] = '\0';
+}