Initialize Tizen 2.3 2.3a_release submit/tizen_2.3/20140531.103053
authorSehong Na <sehong.na@samsung.com>
Sat, 31 May 2014 03:55:55 +0000 (12:55 +0900)
committerSehong Na <sehong.na@samsung.com>
Sat, 31 May 2014 03:55:55 +0000 (12:55 +0900)
170 files changed:
AUTHORS [new file with mode: 0755]
CMakeLists.txt [new file with mode: 0755]
LICENSE.Flora [new file with mode: 0755]
NOTICE [new file with mode: 0755]
daemon/accessibility.c [new file with mode: 0755]
daemon/accessibility.h [new file with mode: 0755]
daemon/common.c [new file with mode: 0755]
daemon/common.h [new file with mode: 0755]
daemon/device/brightness.c [new file with mode: 0755]
daemon/idletxt/idletxt.c [new file with mode: 0755]
daemon/list_util.c [new file with mode: 0755]
daemon/list_util.h [new file with mode: 0755]
daemon/media.c [new file with mode: 0755]
daemon/media.h [new file with mode: 0755]
daemon/minictrl/minictrl.c [new file with mode: 0755]
daemon/modules.c [new file with mode: 0755]
daemon/modules.h [new file with mode: 0755]
daemon/notifications/animated_image.c [new file with mode: 0755]
daemon/notifications/animated_image.h [new file with mode: 0755]
daemon/notifications/noti.c [new file with mode: 0755]
daemon/notifications/noti.h [new file with mode: 0755]
daemon/notifications/noti_box.c [new file with mode: 0755]
daemon/notifications/noti_box.h [new file with mode: 0755]
daemon/notifications/noti_gridbox.c [new file with mode: 0755]
daemon/notifications/noti_gridbox.h [new file with mode: 0755]
daemon/notifications/noti_list_item.c [new file with mode: 0755]
daemon/notifications/noti_list_item.h [new file with mode: 0755]
daemon/notifications/noti_listbox.c [new file with mode: 0755]
daemon/notifications/noti_listbox.h [new file with mode: 0755]
daemon/notifications/noti_node.c [new file with mode: 0755]
daemon/notifications/noti_node.h [new file with mode: 0755]
daemon/notifications/noti_section.c [new file with mode: 0755]
daemon/notifications/noti_section.h [new file with mode: 0755]
daemon/notifications/noti_util.c [new file with mode: 0755]
daemon/notifications/noti_util.h [new file with mode: 0755]
daemon/notifications/noti_win.c [new file with mode: 0755]
daemon/notifications/noti_win.h [new file with mode: 0755]
daemon/notifications/ticker.c [new file with mode: 0755]
daemon/quickpanel-ui.c [new file with mode: 0755]
daemon/quickpanel-ui.h [new file with mode: 0755]
daemon/service/keyboard.c [new file with mode: 0755]
daemon/service/keyboard.h [new file with mode: 0755]
daemon/service/noti_led.c [new file with mode: 0755]
daemon/service/noti_led.h [new file with mode: 0755]
daemon/vi/vi_manager.c [new file with mode: 0755]
daemon/vi/vi_manager.h [new file with mode: 0755]
data/CMakeLists.txt [new file with mode: 0755]
data/icons/Q02_Notification_brightness.png [new file with mode: 0755]
data/icons/quick_standard_btn_nor.png [new file with mode: 0755]
data/icons/quick_standard_btn_press.png [new file with mode: 0755]
data/images/00_check_bg.png [new file with mode: 0755]
data/images/00_check_bg_dim.png [new file with mode: 0755]
data/images/00_check_bg_press.png [new file with mode: 0755]
data/images/00_check_checking.png [new file with mode: 0755]
data/images/00_check_checking_dim.png [new file with mode: 0755]
data/images/00_divider_line.png [new file with mode: 0755]
data/images/00_progress_bar.png [new file with mode: 0755]
data/images/00_progress_bg.png [new file with mode: 0755]
data/images/00_slider_handle.png [new file with mode: 0755]
data/images/00_slider_handle_dim.png [new file with mode: 0755]
data/images/00_slider_handle_press.png [new file with mode: 0755]
data/images/Q02_quickpanel_button_nomal_01_center.png [new file with mode: 0755]
data/images/Q02_quickpanel_button_nomal_01_left.png [new file with mode: 0755]
data/images/Q02_quickpanel_button_nomal_01_right.png [new file with mode: 0755]
data/images/Q02_quickpanel_button_press_01_center.png [new file with mode: 0755]
data/images/Q02_quickpanel_button_press_01_left.png [new file with mode: 0755]
data/images/Q02_quickpanel_button_press_01_right.png [new file with mode: 0755]
data/images/bg_pattern.png [new file with mode: 0755]
data/images/icon_press.png [new file with mode: 0755]
data/images/notification_bg.png [new file with mode: 0755]
data/images/quick_btn_close_dim.png [new file with mode: 0755]
data/images/quick_btn_close_nor.png [new file with mode: 0755]
data/images/quick_btn_close_press.png [new file with mode: 0755]
data/images/quick_btn_close_white_dim.png [new file with mode: 0755]
data/images/quick_btn_close_white_nor.png [new file with mode: 0755]
data/images/quick_btn_close_white_press.png [new file with mode: 0755]
data/images/quick_handle_both.png [new file with mode: 0755]
data/images/quick_icon_bg_01.png [new file with mode: 0755]
data/images/quick_icon_bg_02.png [new file with mode: 0755]
data/images/quick_icon_bg_small.png [new file with mode: 0755]
data/images/quick_image_dimmed_land.png [new file with mode: 0755]
data/images/quick_image_dimmed_port.png [new file with mode: 0755]
data/images/quick_progress.9.png [new file with mode: 0755]
data/images/quick_progress_bg.9.png [new file with mode: 0755]
data/images/quick_progress_unknown_port_01.png [new file with mode: 0755]
data/images/quick_progress_unknown_port_02.png [new file with mode: 0755]
data/images_icon/Q02_Notification_brightness.png [new file with mode: 0755]
data/images_icon/quick_standard_btn_nor.png [new file with mode: 0755]
data/images_icon/quick_standard_btn_press.png [new file with mode: 0755]
data/quickpanel.desktop.in [new file with mode: 0644]
data/quickpanel.edc [new file with mode: 0755]
data/quickpanel.png [new file with mode: 0644]
data/quickpanel.sh.in [new file with mode: 0644]
data/quickpanel.xml.in [new file with mode: 0755]
data/quickpanel_brightness.edc [new file with mode: 0755]
data/quickpanel_def.h [new file with mode: 0755]
data/quickpanel_images.edc [new file with mode: 0755]
data/quickpanel_listbox.edc [new file with mode: 0755]
data/quickpanel_minictrl.edc [new file with mode: 0755]
data/quickpanel_noti_section.edc [new file with mode: 0755]
data/quickpanel_notibox.edc [new file with mode: 0755]
data/quickpanel_spn.edc [new file with mode: 0755]
data/quickpanel_theme.edc [new file with mode: 0755]
data/quickpanel_theme_element.edc [new file with mode: 0755]
data/sip.wav [new file with mode: 0644]
debian/changelog [new file with mode: 0755]
debian/compat [new file with mode: 0755]
debian/control [new file with mode: 0755]
debian/org.tizen.quickpanel.install.in [new file with mode: 0755]
debian/org.tizen.quickpanel.postinst.in [new file with mode: 0755]
debian/rules [new file with mode: 0755]
icons/quickpanel_icon_default.png [new file with mode: 0644]
org.tizen.quickpanel.manifest [new file with mode: 0755]
org.tizen.quickpanel.rule [new file with mode: 0755]
packaging/org.tizen.quickpanel.spec [new file with mode: 0755]
packaging/quickpanel.service [new file with mode: 0644]
po/CMakeLists.txt [new file with mode: 0755]
po/ar.po [new file with mode: 0755]
po/az.po [new file with mode: 0755]
po/bg.po [new file with mode: 0755]
po/ca.po [new file with mode: 0755]
po/cs.po [new file with mode: 0755]
po/da.po [new file with mode: 0755]
po/de_DE.po [new file with mode: 0755]
po/el_GR.po [new file with mode: 0755]
po/en.po [new file with mode: 0755]
po/en_PH.po [new file with mode: 0755]
po/en_US.po [new file with mode: 0755]
po/es_ES.po [new file with mode: 0755]
po/es_MX.po [new file with mode: 0755]
po/et.po [new file with mode: 0755]
po/eu.po [new file with mode: 0755]
po/fi.po [new file with mode: 0755]
po/fr_CA.po [new file with mode: 0755]
po/fr_FR.po [new file with mode: 0755]
po/ga.po [new file with mode: 0755]
po/gl.po [new file with mode: 0755]
po/hi.po [new file with mode: 0755]
po/hr.po [new file with mode: 0755]
po/hu.po [new file with mode: 0755]
po/hy.po [new file with mode: 0755]
po/is.po [new file with mode: 0755]
po/it_IT.po [new file with mode: 0755]
po/ja_JP.po [new file with mode: 0755]
po/ka.po [new file with mode: 0755]
po/kk.po [new file with mode: 0755]
po/ko_KR.po [new file with mode: 0755]
po/lt.po [new file with mode: 0755]
po/lv.po [new file with mode: 0755]
po/mk.po [new file with mode: 0755]
po/nb.po [new file with mode: 0755]
po/nl_NL.po [new file with mode: 0755]
po/pl.po [new file with mode: 0755]
po/pt_BR.po [new file with mode: 0755]
po/pt_PT.po [new file with mode: 0755]
po/ro.po [new file with mode: 0755]
po/ru_RU.po [new file with mode: 0755]
po/sk.po [new file with mode: 0755]
po/sl.po [new file with mode: 0755]
po/sr.po [new file with mode: 0755]
po/sv.po [new file with mode: 0755]
po/tr_TR.po [new file with mode: 0755]
po/uk.po [new file with mode: 0755]
po/uz.po [new file with mode: 0755]
po/zh_CN.po [new file with mode: 0755]
po/zh_HK.po [new file with mode: 0755]
po/zh_SG.po [new file with mode: 0755]
po/zh_TW.po [new file with mode: 0755]
test/quickpanel_debug_util.c [new file with mode: 0755]
test/quickpanel_debug_util.h [new file with mode: 0755]

diff --git a/AUTHORS b/AUTHORS
new file mode 100755 (executable)
index 0000000..24aebc0
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,2 @@
+youngsub ko <ys4610.ko at samsung dot com>
+seung taek jung <seungtaek.chung at samsung dot com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..6f4c1f9
--- /dev/null
@@ -0,0 +1,123 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(quickpanel C)
+
+FILE(GLOB_RECURSE DAEMON_SRCS daemon/*.c)
+AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/test TEST_SRCS)
+SET(SRCS ${DAEMON_SRCS} ${TEST_SRCS})
+
+SET(VENDOR "org.tizen")
+SET(PACKAGE ${PROJECT_NAME})
+SET(PKGNAME "${VENDOR}.${PACKAGE}")
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(BINDIR "${PREFIX}/bin")
+SET(RESDIR "${PREFIX}/res")
+SET(LOCALEDIR "${RESDIR}/locale")
+SET(ICONDIR "${RESDIR}/icons")
+SET(EDJDIR "${RESDIR}/edje")
+SET(DATADIR "${PREFIX}/data")
+SET(DESKTOPDIR "/usr/share/applications")
+SET(MANIFESTXMLDIR "/usr/share/packages")
+
+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}/daemon
+               ${CMAKE_CURRENT_SOURCE_DIR}/daemon/notifications
+               ${CMAKE_CURRENT_SOURCE_DIR}/daemon/service
+               ${CMAKE_CURRENT_SOURCE_DIR}/daemon/vi
+               ${CMAKE_CURRENT_SOURCE_DIR}/data
+               ${CMAKE_CURRENT_SOURCE_DIR}/test
+               )
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(pkgs REQUIRED 
+       capi-appfw-application
+       capi-appfw-app-manager
+       capi-system-runtime-info
+       capi-system-info
+       capi-system-device
+       capi-network-tethering
+       capi-media-player
+       capi-media-sound-manager
+       feedback
+       appcore-common
+       notification
+       vconf
+       appsvc
+       devman_haptic
+       libprivilege-control
+       ecore-x
+       edbus
+       evas
+       ecore
+       edje
+       ecore-input
+       icu-i18n
+       enotify
+       elementary
+       dlog
+       syspopup-caller
+       minicontrol-viewer
+       minicontrol-monitor
+       utilX
+#      deviced
+)
+
+FOREACH(flag ${pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Wall -g -O2 -fpie")
+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("-fpie")
+ADD_DEFINITIONS("-DQP_INDICATOR_WIDGET_ENABLE")
+ADD_DEFINITIONS("-DQP_BRIGHTNESS_ENABLE")
+ADD_DEFINITIONS("-DQP_MINICTRL_ENABLE")
+ADD_DEFINITIONS("-DQP_SCREENREADER_ENABLE")
+#ADD_DEFINITIONS("-DQP_SERVICE_NOTI_LED_ENABLE")
+ADD_DEFINITIONS("-DQP_ANIMATED_IMAGE_ENABLE")
+
+
+
+ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"")
+ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
+ADD_DEFINITIONS("-DPACKAGE_NAME=\"${PKGNAME}\"")
+ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"")
+ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
+ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"")
+ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
+ADD_DEFINITIONS("-DDATADIR=\"${DATADIR}\"")
+
+#ADD_DEFINITIONS("-DFILE_DEBUG")
+ADD_DEFINITIONS("-D_DLOG_USED")
+ADD_DEFINITIONS("-DHAVE_X")
+
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS} "-pie")
+#-lefence 
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/icons DESTINATION ${RESDIR})
+INSTALL(DIRECTORY DESTINATION ${DATADIR})
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PKGNAME}.rule DESTINATION /opt/etc/smack/accesses.d)
+
+# i18n
+ADD_SUBDIRECTORY(data)
+ADD_SUBDIRECTORY(po)
+
diff --git a/LICENSE.Flora b/LICENSE.Flora
new file mode 100755 (executable)
index 0000000..571fe79
--- /dev/null
@@ -0,0 +1,206 @@
+Flora License
+
+Version 1.1, April, 2013
+
+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 Tizen Compliance Specification
+and passes the Tizen Compliance Tests 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
+     and your own copyright statement or terms and conditions do not conflict
+     the conditions stated in the License including section 3.
+
+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.1 (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 (executable)
index 0000000..94d56df
--- /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.1
+Please, see the LICENSE.Flora file for Flora License, Version 1.1 terms and conditions.
diff --git a/daemon/accessibility.c b/daemon/accessibility.c
new file mode 100755 (executable)
index 0000000..a4a43ea
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdio.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "accessibility.h"
+
+HAPI Evas_Object *
+quickpanel_screen_reader_object_get(void *obj, screen_reader_object_type_e type, const char *part, Evas_Object *parent)
+{
+       Evas_Object *to = NULL;
+       Evas_Object *ao = NULL;
+
+       retif(obj == NULL, NULL, "invalid parameter");
+       retif(type == SCREEN_READER_OBJ_TYPE_EDJ_OBJECT && !part, NULL, "invalid parameter");
+
+       switch (type) {
+       case SCREEN_READER_OBJ_TYPE_ELM_OBJECT:
+               if (part != NULL) {
+                       to = (Evas_Object *)elm_object_part_content_get(obj, part);
+                       ao = (Evas_Object *)to;
+               } else {
+                       ao = (Evas_Object *)obj;
+               }
+               break;
+
+       case SCREEN_READER_OBJ_TYPE_EDJ_OBJECT:
+               to = (Evas_Object *)edje_object_part_object_get(elm_layout_edje_get((Evas_Object *)obj), part);
+               break;
+
+       default:        // evas, icon
+               to = (Evas_Object *)obj;
+       }
+
+       if (!ao && to && parent) {              // edj, evas, icon, elm_object_item
+               ao = elm_access_object_get(to);
+               if (ao == NULL) {
+                       ao = elm_access_object_register(to, parent);
+               }
+       }
+
+       return ao;
+}
diff --git a/daemon/accessibility.h b/daemon/accessibility.h
new file mode 100755 (executable)
index 0000000..bda3950
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __ACCESSIBILITY_H__
+#define __ACCESSIBILITY_H__
+
+typedef enum {
+       SCREEN_READER_OBJ_TYPE_ELM_OBJECT,
+       SCREEN_READER_OBJ_TYPE_EDJ_OBJECT,
+} screen_reader_object_type_e;
+
+Evas_Object *
+quickpanel_screen_reader_object_get(void *obj, screen_reader_object_type_e type, const char *part, Evas_Object *parent);
+#endif                         /* __ACCESSIBILITY_H__ */
diff --git a/daemon/common.c b/daemon/common.c
new file mode 100755 (executable)
index 0000000..c6587b0
--- /dev/null
@@ -0,0 +1,192 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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
+ *
+ * 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 "common.h"
+#include "quickpanel-ui.h"
+
+HAPI void quickpanel_util_char_replace(char *text, char s, char t) {
+       retif(text == NULL, , "invalid argument");
+
+       int i = 0, text_len = 0;
+
+       text_len = strlen(text);
+
+       for (i = 0; i < text_len; i++) {
+               if (*(text + i) == s) {
+                       *(text + i) = t;
+               }
+       }
+}
+
+HAPI void quickpanel_util_add_char_to_each_charactor(char *dst, const char *src, char t) {
+       retif(dst == NULL, , "invalid argument");
+       retif(src == NULL, , "invalid argument");
+
+       int i = 0, text_len = 0;
+
+       text_len = strlen(src);
+
+       for (i = 0; i < text_len; i++) {
+               *(dst + (i * 2)) = *(src + i);
+               *(dst + ((i * 2) + 1)) = t;
+       }
+}
+
+HAPI int quickpanel_util_is_phone_number(const char *address)
+{
+       retif(address == NULL, 0, "address is NULL");
+
+       int addr_len = 0;
+       addr_len = strlen(address);
+
+       if (addr_len == 0)
+               return 0;
+
+       /*  length check phone address should be longer than 2 and shorter than 40 */
+       if (addr_len > 2 && addr_len <= QP_UTIL_PHONE_NUMBER_MAX_LEN) {
+               const char *pszOneChar = address;
+
+               if (*pszOneChar == '+')
+                       ++pszOneChar;
+
+               while (*pszOneChar) {
+                       if (!isdigit(*pszOneChar) && (*pszOneChar != '*') && (*pszOneChar != '#'))
+                               return 0;
+
+                       ++pszOneChar;
+               }
+
+               return 1;
+       } else {
+               DBG("invalid address length [%d]", addr_len);
+               return 0;
+       }
+}
+
+void _current_popup_default_backkey_cb(void *data, Evas_Object *obj, void *event_info) {
+       Evas_Object *popup = data;
+       retif(popup == NULL, , "invalid argument");
+
+       if (popup!= NULL) {
+               evas_object_del(popup);
+       }
+}
+
+static void _current_popup_deleted_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       retif(obj == NULL, , "obj is NULL");
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid argument");
+
+       if (ad->popup == obj) {
+               ad->popup = NULL;
+       } else {
+               ERR("popup is created over the popup");
+       }
+}
+
+HAPI void quickpanel_ui_set_current_popup(Evas_Object *popup, Evas_Smart_Cb func_back) {
+       retif(popup == NULL, , "invalid argument");
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid argument");
+
+       ad->popup = popup;
+       evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _current_popup_deleted_cb, NULL);
+
+#ifdef TBD
+       if (func_back != NULL) {
+               ea_object_event_callback_add(popup, EA_CALLBACK_BACK, func_back, popup);
+       } else {
+               ea_object_event_callback_add(popup, EA_CALLBACK_BACK, _current_popup_default_backkey_cb, popup);
+       }
+#endif
+
+       if (func_back != NULL) {
+               evas_object_data_set(popup, EDATA_BACKKEY_CB, func_back);
+       } else {
+               evas_object_data_set(popup, EDATA_BACKKEY_CB, _current_popup_default_backkey_cb);
+       }
+}
+
+HAPI void quickpanel_ui_del_current_popup(void) {
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid argument");
+
+       if (ad->popup != NULL) {
+               evas_object_del(ad->popup);
+       }
+}
+
+HAPI void *quickpanel_ui_get_buffer_from_image(const char *file_path, size_t *memfile_size, char *ext, int ext_size)
+{
+       FILE *fp = NULL;
+       void *buffer = NULL;
+       char *buf_ext = NULL;
+
+       retif(file_path == NULL, NULL, "invalid data");
+
+       if (ext != NULL) {
+               buf_ext = ecore_file_strip_ext(file_path);
+               if (buf_ext != NULL) {
+                       strncpy(ext, buf_ext, ext_size);
+                       free(buf_ext);
+               }
+       }
+
+       fp = fopen(file_path, "r");
+       if (fp) {
+               struct stat stat_buf;
+               if (stat(file_path, &stat_buf) != 0) {
+                       ERR("Getting file information Error");
+                       goto err;
+               }
+
+               if (stat_buf.st_size > 0) {
+                       buffer = (void *)calloc(1, (size_t)stat_buf.st_size + 1);
+                       if (buffer == NULL) {
+                               ERR("failed to alloc a buffer");
+                               goto err;
+                       }
+                       int result = fread(buffer, sizeof(char), stat_buf.st_size, fp);
+                       if (result != stat_buf.st_size) {
+                               ERR("failed to read a file");
+                               free(buffer);
+                               buffer = NULL;
+                               goto err;
+                       }
+                       if (memfile_size != NULL) {
+                               *memfile_size = result;
+                       }
+               }
+       }
+
+err:
+       if (fp) {
+               fclose(fp);
+       }
+       return buffer;
+}
+
+HAPI Evas_Object *quickpanel_ui_get_focus_object(Evas_Object *parent) {
+       Evas_Object *focus = elm_button_add(parent);
+       retif(focus == NULL, NULL, "failed to create focus object");
+
+       elm_object_style_set(focus, "focus");
+
+       return focus;
+}
diff --git a/daemon/common.h b/daemon/common.h
new file mode 100755 (executable)
index 0000000..4d084b5
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 __QP_COMMON_H_
+#define __QP_COMMON_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <Elementary.h>
+#include "quickpanel_debug_util.h"
+
+#define QP_OK  (0)
+#define QP_FAIL        (-1)
+#define QP_UTIL_PHONE_NUMBER_MAX_LEN   40
+#define EDATA_BACKKEY_CB "bk_cb"
+
+#ifdef _DLOG_USED
+#undef LOG_TAG
+#define LOG_TAG "QUICKPANEL"
+#include <dlog.h>
+
+#define HAPI __attribute__((visibility("hidden")))
+
+#define DBG(fmt , args...) \
+       do { \
+               LOGD("[%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define INFO(fmt , args...) \
+       do { \
+               LOGI("[%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define WARN(fmt , args...) \
+       do { \
+               LOGI("[%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define ERR(fmt , args...) \
+       do { \
+               LOGE("[%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define SDBG(fmt , args...) \
+       do { \
+               LOGD("[%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define SINFO(fmt , args...) \
+       do { \
+               LOGI("[%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define SERR(fmt , args...) \
+       do { \
+               LOGE("[%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#elif FILE_DEBUG /*_DLOG_USED*/
+#define DBG(fmt , args...) \
+       do { \
+               debug_printf("[D]%s : %d] "fmt"\n", \
+                       __func__, __LINE__, ##args); \
+       } while (0)
+
+#define INFO(fmt , args...) \
+       do { \
+               debug_printf("[I][%s : %d] "fmt"\n",\
+                       __func__, __LINE__, ##args); \
+       } while (0)
+
+#define WARN(fmt , args...) \
+       do { \
+               debug_printf("[W][%s : %d] "fmt"\n", \
+                       __func__, __LINE__, ##args); \
+       } while (0)
+
+#define ERR(fmt , args...) \
+       do { \
+               debug_printf("[E][%s : %d] "fmt"\n", \
+                       __func__, __LINE__, ##args); \
+       } while (0)
+
+#else /*_DLOG_USED*/
+#define DBG(fmt , args...) \
+       do { \
+               fprintf("[D][%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define INFO(fmt , args...) \
+       do { \
+               fprintf("[I][%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define WARN(fmt , args...) \
+       do { \
+               fprintf("[W][%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+
+#define ERR(fmt , args...) \
+       do { \
+               fprintf("[E][%s : %d] "fmt"\n", __func__, __LINE__, ##args); \
+       } while (0)
+#endif /*_DLOG_USED*/
+
+#define msgif(cond, str, args...) do { \
+       if (cond) { \
+               ERR(str, ##args);\
+       } \
+} while (0);
+
+#define retif(cond, ret, str, args...) do { \
+       if (cond) { \
+               ERR(str, ##args);\
+               return ret;\
+       } \
+} while (0);
+
+#define gotoif(cond, target, str, args...) do { \
+       if (cond) { \
+               WARN(str, ##args); \
+               goto target; \
+       } \
+} while (0);
+
+
+void quickpanel_util_char_replace(char *text, char s, char t);
+void quickpanel_util_add_char_to_each_charactor(char *dst, const char *src, char t);
+int quickpanel_util_is_phone_number(const char *address);
+void quickpanel_ui_set_current_popup(Evas_Object *popup, Evas_Smart_Cb func_close);
+void quickpanel_ui_del_current_popup(void);
+void *quickpanel_ui_get_buffer_from_image(const char *file_path, size_t *memfile_size, char *ext, int ext_size);
+Evas_Object *quickpanel_ui_get_focus_object(Evas_Object *parent);
+
+#endif                         /* __QP_COMMON_H_ */
diff --git a/daemon/device/brightness.c b/daemon/device/brightness.c
new file mode 100755 (executable)
index 0000000..ce9d686
--- /dev/null
@@ -0,0 +1,586 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 <glib.h>
+#include <string.h>
+#include <vconf.h>
+#include <device.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "list_util.h"
+#include "quickpanel_def.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
+
+#define BRIGHTNESS_MIN 1
+#define BRIGHTNESS_MAX 100
+
+#define QP_BRIGHTNESS_CONTROL_ICON_IMG "Q02_Notification_brightness.png"
+
+typedef struct _brightness_ctrl_obj {
+       int min_level;
+       int max_level;
+       Evas_Object *viewer;
+       void *data;
+} brightness_ctrl_obj;
+
+static int quickpanel_brightness_init(void *data);
+static int quickpanel_brightness_fini(void *data);
+static void quickpanel_brightness_lang_changed(void *data);
+static void quickpanel_brightness_qp_opened(void *data);
+static void quickpanel_brightness_qp_closed(void *data);
+static void _brightness_view_update(void);
+static void _brightness_register_event_cb(brightness_ctrl_obj *ctrl_obj);
+static void _brightness_deregister_event_cb(brightness_ctrl_obj *ctrl_obj);
+
+QP_Module brightness_ctrl = {
+       .name = "brightness_ctrl",
+       .init = quickpanel_brightness_init,
+       .fini = quickpanel_brightness_fini,
+       .suspend = NULL,
+       .resume = NULL,
+       .hib_enter = NULL,
+       .hib_leave = NULL,
+       .lang_changed = quickpanel_brightness_lang_changed,
+       .refresh = NULL,
+       .get_height = NULL,
+       .qp_opened = quickpanel_brightness_qp_opened,
+       .qp_closed = quickpanel_brightness_qp_closed,
+};
+
+static brightness_ctrl_obj *g_ctrl_obj;
+
+#ifdef QP_SCREENREADER_ENABLE
+static void _set_slider_accessiblity_state(Evas_Object *obj, int value) {
+       Evas_Object *ao = NULL;
+       char buf[256] = {0,};
+       brightness_ctrl_obj *ctrl_obj = g_ctrl_obj;
+       retif(ctrl_obj == NULL, , "Invalid parameter!");
+       retif(ctrl_obj->viewer == NULL, , "Invalid parameter!");
+
+       ao = quickpanel_screen_reader_object_get(obj,
+                       SCREEN_READER_OBJ_TYPE_ELM_OBJECT, NULL, NULL);
+       if (ao != NULL) {
+               elm_access_info_set(ao, ELM_ACCESS_INFO, _S("IDS_COM_OPT_BRIGHTNESS"));
+               elm_access_info_set(ao, ELM_ACCESS_TYPE, _NOT_LOCALIZED("slider"));
+               snprintf(buf, sizeof(buf), _NOT_LOCALIZED("%d of %d"), value, ctrl_obj->max_level);
+               elm_access_info_set(ao, ELM_ACCESS_STATE, _NOT_LOCALIZED(buf));
+       }
+}
+#endif
+
+static void _set_text_to_part(Evas_Object *obj, const char *part, const char *text) {
+       const char *old_text = NULL;
+
+       retif(obj == NULL, , "Invalid parameter!");
+       retif(part == NULL, , "Invalid parameter!");
+       retif(text == NULL, , "Invalid parameter!");
+
+       old_text = elm_object_part_text_get(obj, part);
+       if (old_text != NULL) {
+               if (strcmp(old_text, text) == 0) {
+                       return ;
+               }
+       }
+
+       elm_object_part_text_set(obj, part, text);
+}
+
+static Evas_Object *_check_duplicated_image_loading(Evas_Object *obj, const char *part, const char *file_path) {
+       Evas_Object *old_ic = NULL;
+       const char *old_ic_path = NULL;
+
+       retif(obj == NULL, NULL, "Invalid parameter!");
+       retif(part == NULL, NULL, "Invalid parameter!");
+       retif(file_path == NULL, NULL, "Invalid parameter!");
+
+       old_ic = elm_object_part_content_get(obj, part);
+       if (old_ic != NULL) {
+               elm_image_file_get(old_ic, &old_ic_path, NULL);
+               if (old_ic_path != NULL) {
+                       if (strcmp(old_ic_path, file_path) == 0)
+                               return old_ic;
+               }
+
+               elm_object_part_content_unset(obj, part);
+               evas_object_del(old_ic);
+       }
+
+       return NULL;
+}
+
+static Evas_Object *_check_duplicated_loading(Evas_Object *obj, const char *part) {
+       Evas_Object *old_content = NULL;
+
+       retif(obj == NULL, NULL, "Invalid parameter!");
+       retif(part == NULL, NULL, "Invalid parameter!");
+
+       old_content = elm_object_part_content_get(obj, part);
+       if (old_content != NULL) {
+                       return old_content;
+       }
+
+       return NULL;
+}
+
+static int _brightness_get_automate_level(void) {
+       int is_on = 0;
+
+       if (vconf_get_int(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, &is_on) == 0)
+               return is_on;
+       else
+               return SETTING_BRIGHTNESS_AUTOMATIC_OFF;
+}
+
+static void _brightness_vconf_cb(keynode_t *key, void* data) {
+       brightness_ctrl_obj *ctrl_obj = NULL;
+
+       retif(data == NULL, , "Data parameter is NULL");
+       ctrl_obj = data;
+
+       if (ctrl_obj->viewer != NULL) {
+               _brightness_view_update();
+       }
+}
+
+static void quickpanel_brightness_qp_opened(void *data)
+{
+       struct appdata *ad = NULL;
+
+       retif(data == NULL, , "Invalid parameter!");
+       ad = data;
+
+       retif(g_ctrl_obj == NULL, , "Invalid parameter!");
+
+       if (g_ctrl_obj->viewer != NULL) {
+               _brightness_view_update();
+       }
+}
+
+static void quickpanel_brightness_qp_closed(void *data)
+{
+       struct appdata *ad = NULL;
+
+       retif(data == NULL, , "Invalid parameter!");
+       ad = data;
+
+       retif(g_ctrl_obj == NULL, , "Invalid parameter!");
+
+       if (g_ctrl_obj->viewer != NULL) {
+               _brightness_view_update();
+       }
+}
+
+static int _brightness_set_level(int level) {
+       int ret = DEVICE_ERROR_NONE;
+
+       ret = device_set_brightness_to_settings(0, level);
+       if (ret != DEVICE_ERROR_NONE) {
+               ERR("failed to set brightness");
+       }
+
+       return level;
+}
+
+static int _brightness_get_level(void) {
+       int level = 0;
+
+       if (vconf_get_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, &level) == 0)
+               return level;
+       else
+               return SETTING_BRIGHTNESS_LEVEL5;
+}
+
+static int _brightness_set_automate_level(int is_on) {
+       return vconf_set_int(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, is_on);
+}
+
+static void
+_brightness_ctrl_slider_changed_cb(void *data,
+                                                        Evas_Object *obj,
+                                                        void *event_info)
+{
+       int value = 0;
+       static int old_val = -1;
+       brightness_ctrl_obj *ctrl_obj = NULL;
+
+       retif(data == NULL, , "Data parameter is NULL");
+       ctrl_obj = data;
+
+       double val = elm_slider_value_get(obj);
+       value = (int)(val + 0.5);
+
+       if (value != old_val)
+       {
+               if (value >= ctrl_obj->min_level && value <= ctrl_obj->max_level) {
+                       DBG("brightness is changed to %d", value);
+                       _brightness_set_level(value);
+               }
+
+#ifdef QP_SCREENREADER_ENABLE
+               _set_slider_accessiblity_state(obj, value);
+#endif
+       }
+}
+
+static void _do_checker_toggle_cb(void *data,
+                                                               Evas_Object * obj)
+{
+       quickpanel_play_feedback();
+
+       retif(obj == NULL, , "obj parameter is NULL");
+
+       int status = elm_check_state_get(obj);
+       brightness_ctrl_obj *ctrl_obj = NULL;
+
+       retif(data == NULL, , "Data parameter is NULL");
+       ctrl_obj = data;
+
+       _brightness_set_automate_level(status);
+
+       if (ctrl_obj->viewer != NULL) {
+               _brightness_view_update();
+       }
+}
+
+static void
+_brightness_ctrl_slider_delayed_changed_cb(void *data,
+                                                        Evas_Object *obj,
+                                                        void *event_info)
+{
+       int value = 0;
+
+       value = _brightness_get_level();
+       DBG("brightness is changed to %d", value);
+       _brightness_set_level(value);
+}
+
+static void
+_brightness_ctrl_slider_drag_start_cb(void *data,
+                                                        Evas_Object *obj,
+                                                        void *event_info)
+{
+       _brightness_deregister_event_cb(data);
+}
+
+static void
+_brightness_ctrl_slider_drag_stop_cb(void *data,
+                                                        Evas_Object *obj,
+                                                        void *event_info)
+{
+       _brightness_register_event_cb(data);
+}
+
+static void _brightness_ctrl_checker_toggle_cb(void *data,
+                                                               Evas_Object * obj,
+                                                               void *event_info)
+{
+       _do_checker_toggle_cb(data, obj);
+}
+
+static void _text_clicked_cb(void *data, Evas_Object *o, const char *emission, const char *source)
+{
+       Evas_Object *check_obj = NULL;
+       brightness_ctrl_obj *ctrl_obj = data;
+       retif(data == NULL, , "invalid parameter");
+       retif(o == NULL, , "invalid parameter");
+       retif(emission == NULL, , "invalid parameter");
+
+       check_obj = _check_duplicated_loading(ctrl_obj->viewer,
+                               "elm.check.swallow");
+
+       if (check_obj != NULL) {
+               if (!strcmp(emission, "auto.clicked")) {
+                       elm_check_state_set(check_obj, !elm_check_state_get(check_obj));
+                       _do_checker_toggle_cb(data, check_obj);
+               }
+       }
+}
+
+static Evas_Object *_brightness_view_create(Evas_Object *list)
+{
+       Eina_Bool ret = EINA_TRUE;
+       Evas_Object *view = NULL;
+
+       retif(list == NULL, NULL, "list parameter is NULL");
+
+       view = elm_layout_add(list);
+
+       if (view != NULL) {
+               ret = elm_layout_file_set(view, DEFAULT_EDJ,
+                               "quickpanel/brightness_controller/default");
+
+               if (ret == EINA_FALSE) {
+                       ERR("failed to load brightness layout");
+               }
+               evas_object_size_hint_weight_set(view, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(view, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+               elm_object_signal_callback_add(view,
+                               "auto.clicked",
+                               "edje",
+                               _text_clicked_cb,
+                               g_ctrl_obj
+               );
+
+               evas_object_show(view);
+       }
+
+       return view;
+}
+
+static void _brightness_set_text(void)
+{
+       brightness_ctrl_obj *ctrl_obj = g_ctrl_obj;
+       retif(ctrl_obj == NULL, , "Invalid parameter!");
+       retif(ctrl_obj->viewer == NULL, , "Invalid parameter!");
+
+       _set_text_to_part(ctrl_obj->viewer, "elm.check.text", _("IDS_QP_BODY_AUTO"));
+       _set_text_to_part(ctrl_obj->viewer, "elm.text.label", _S("IDS_COM_OPT_BRIGHTNESS"));
+
+#ifdef QP_SCREENREADER_ENABLE
+       Evas_Object *ao = NULL;
+       ao = quickpanel_screen_reader_object_get(ctrl_obj->viewer,
+                       SCREEN_READER_OBJ_TYPE_EDJ_OBJECT, "accessibility.check.label", ctrl_obj->viewer);
+       if (ao != NULL) {
+               elm_access_info_set(ao, ELM_ACCESS_TYPE, _NOT_LOCALIZED("label"));
+               elm_access_info_set(ao, ELM_ACCESS_INFO, _("IDS_QP_BODY_AUTO"));
+       }
+#endif
+}
+
+static void _brightness_set_image(void)
+{
+       Evas_Object *ic = NULL;
+       Evas_Object *old_ic = NULL;
+       brightness_ctrl_obj *ctrl_obj = g_ctrl_obj;
+       retif(ctrl_obj == NULL, , "Invalid parameter!");
+       retif(ctrl_obj->viewer == NULL, , "Invalid parameter!");
+
+       old_ic = _check_duplicated_image_loading(ctrl_obj->viewer,
+                       "elm.swallow.thumbnail", QP_BRIGHTNESS_CONTROL_ICON_IMG);
+
+       if (old_ic == NULL) {
+               ic = elm_image_add(ctrl_obj->viewer);
+
+               if (ic != NULL) {
+                       elm_image_resizable_set(ic, EINA_FALSE, EINA_FALSE);
+                       elm_image_file_set(ic, DEFAULT_EDJ, QP_BRIGHTNESS_CONTROL_ICON_IMG);
+                       elm_object_part_content_set(ctrl_obj->viewer, "elm.swallow.thumbnail", ic);
+               }
+       }
+}
+
+static void _brightness_set_checker(void)
+{
+       Evas_Object *checker = NULL;
+       Evas_Object *old_obj = NULL;
+       brightness_ctrl_obj *ctrl_obj = g_ctrl_obj;
+       retif(ctrl_obj == NULL, , "Invalid parameter!");
+       retif(ctrl_obj->viewer == NULL, , "Invalid parameter!");
+
+       old_obj = _check_duplicated_loading(ctrl_obj->viewer,
+                       "elm.check.swallow");
+
+       if (old_obj == NULL) {
+               checker = elm_check_add(ctrl_obj->viewer);
+
+               if (checker != NULL) {
+                       elm_object_style_set(checker, "quickpanel");
+                       evas_object_smart_callback_add(checker,"changed",_brightness_ctrl_checker_toggle_cb , ctrl_obj);
+                       elm_object_part_content_set(ctrl_obj->viewer, "elm.check.swallow", checker);
+               } else {
+                       ERR("failed to create checker");
+                       return ;
+               }
+       } else {
+               checker = old_obj;
+       }
+
+       elm_check_state_set(checker, _brightness_get_automate_level());
+}
+
+static void _brightness_set_slider(void)
+{
+       int value = 0;
+       Evas_Object *slider = NULL;
+       Evas_Object *old_obj = NULL;
+       brightness_ctrl_obj *ctrl_obj = g_ctrl_obj;
+       retif(ctrl_obj == NULL, , "Invalid parameter!");
+       retif(ctrl_obj->viewer == NULL, , "Invalid parameter!");
+
+       old_obj = _check_duplicated_loading(ctrl_obj->viewer,
+                       "elm.swallow.slider");
+
+       if (old_obj == NULL) {
+               slider = elm_slider_add(ctrl_obj->viewer);
+
+               if (slider != NULL) {
+                       elm_object_style_set(slider, "quickpanel");
+
+                       evas_object_size_hint_weight_set(slider, EVAS_HINT_EXPAND, 0.0);
+                       evas_object_size_hint_align_set(slider, EVAS_HINT_FILL, 0.5);
+                       elm_slider_min_max_set(slider, ctrl_obj->min_level, ctrl_obj->max_level);
+                       evas_object_smart_callback_add(slider, "changed",
+                                       _brightness_ctrl_slider_changed_cb, ctrl_obj);
+                       evas_object_smart_callback_add(slider, "delay,changed",
+                                       _brightness_ctrl_slider_delayed_changed_cb, ctrl_obj);
+                       evas_object_smart_callback_add(slider, "slider,drag,start",
+                                       _brightness_ctrl_slider_drag_start_cb, ctrl_obj);
+                       evas_object_smart_callback_add(slider, "slider,drag,stop",
+                                       _brightness_ctrl_slider_drag_stop_cb, ctrl_obj);
+                       elm_object_part_content_set(ctrl_obj->viewer, "elm.swallow.slider", slider);
+               } else {
+                       ERR("failed to create slider");
+                       return ;
+               }
+       } else {
+               slider = old_obj;
+       }
+
+       value = _brightness_get_level();
+
+       elm_slider_value_set(slider, value);
+
+       if (_brightness_get_automate_level()) {
+               elm_object_disabled_set(slider, EINA_TRUE);
+       } else {
+               elm_object_disabled_set(slider, EINA_FALSE);
+       }
+
+#ifdef QP_SCREENREADER_ENABLE
+       _set_slider_accessiblity_state(slider, value);
+#endif
+}
+
+static void _brightness_view_update(void)
+{
+       _brightness_set_text();
+       _brightness_set_image();
+       _brightness_set_checker();
+       _brightness_set_slider();
+}
+
+static void _brightness_add(brightness_ctrl_obj *ctrl_obj, void *data)
+{
+       qp_item_data *qid = NULL;
+       struct appdata *ad;
+
+       ad = data;
+       retif(!ad->list, , "list is NULL");
+
+       ctrl_obj->viewer = _brightness_view_create(ad->list);
+       ctrl_obj->data = data;
+
+       if (ctrl_obj->viewer != NULL) {
+               qid = quickpanel_list_util_item_new(QP_ITEM_TYPE_BRIGHTNESS, ctrl_obj);
+               if (qid != NULL) {
+                       quickpanel_list_util_item_set_tag(ctrl_obj->viewer, qid);
+                       quickpanel_list_util_sort_insert(ad->list, ctrl_obj->viewer);
+               } else {
+                       ERR("fail to alloc vit");
+               }
+       } else {
+               ERR("failed to create brightness view");
+       }
+}
+
+static void _brightness_remove(brightness_ctrl_obj *ctrl_obj, void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "list is NULL");
+       retif(ad->list == NULL, , "list is NULL");
+
+       if (g_ctrl_obj != NULL) {
+               if (g_ctrl_obj->viewer != NULL) {
+                       quickpanel_list_util_item_unpack_by_object(ad->list
+                                       , g_ctrl_obj->viewer);
+                       quickpanel_list_util_item_del_tag(g_ctrl_obj->viewer);
+                       evas_object_del(g_ctrl_obj->viewer);
+               }
+               INFO("success to remove brightness controller");
+               free(g_ctrl_obj);
+               g_ctrl_obj = NULL;
+       }
+}
+
+static void _brightness_register_event_cb(brightness_ctrl_obj *ctrl_obj)
+{
+       int ret = 0;
+       retif(ctrl_obj == NULL, , "Data parameter is NULL");
+
+       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_LCD_BRIGHTNESS,
+                       _brightness_vconf_cb, ctrl_obj);
+       if (ret != 0) {
+               ERR("failed to register a cb key:%s err:%d",
+                               "VCONFKEY_SETAPPL_LCD_BRIGHTNESS", ret);
+       }
+}
+
+static void _brightness_deregister_event_cb(brightness_ctrl_obj *ctrl_obj)
+{
+       int ret = 0;
+
+       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, _brightness_vconf_cb);
+       if (ret != 0) {
+               ERR("failed to register a cb key:%s err:%d", "VCONFKEY_SETAPPL_LCD_BRIGHTNESS", ret);
+       }
+}
+
+static int quickpanel_brightness_init(void *data)
+{
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+
+       if (g_ctrl_obj == NULL) {
+               g_ctrl_obj = (brightness_ctrl_obj *)malloc(sizeof(brightness_ctrl_obj));
+       }
+
+       if (g_ctrl_obj != NULL) {
+               g_ctrl_obj->min_level = BRIGHTNESS_MIN;
+               g_ctrl_obj->max_level = BRIGHTNESS_MAX;
+
+               DBG("brightness range %d~%d\n", g_ctrl_obj->min_level, g_ctrl_obj->max_level);
+
+               _brightness_add(g_ctrl_obj, data);
+               _brightness_view_update();
+               _brightness_register_event_cb(g_ctrl_obj);
+       }
+
+       return QP_OK;
+}
+
+static int quickpanel_brightness_fini(void *data)
+{
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+
+       if (g_ctrl_obj != NULL) {
+               _brightness_deregister_event_cb(g_ctrl_obj);
+               _brightness_remove(g_ctrl_obj, data);
+       }
+
+       g_ctrl_obj = NULL;
+       return QP_OK;
+}
+
+static void quickpanel_brightness_lang_changed(void *data)
+{
+       retif(data == NULL, , "Invalid parameter!");
+
+       if (g_ctrl_obj != NULL && g_ctrl_obj->viewer != NULL) {
+               _brightness_view_update();
+       }
+}
diff --git a/daemon/idletxt/idletxt.c b/daemon/idletxt/idletxt.c
new file mode 100755 (executable)
index 0000000..b1a9694
--- /dev/null
@@ -0,0 +1,599 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 <vconf.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "quickpanel_def.h"
+
+#define QP_ENABLE_SLIDING_TEXT 0
+#define QP_ENABLE_SAT 0
+#define QP_IDLETXT_PART                "qp.noti.swallow.spn"
+
+#define QP_SPN_BASE_PART       "qp.base.spn.swallow"
+#define QP_SPN_BOX_PART                "qp.spn.swallow"
+#define QP_BUTTON_PART         "qp.button.swallow"
+
+#define QP_IDLETXT_MAX_KEY     4
+#define QP_IDLETXT_MAX_LEN     1024
+#define QP_IDLETXT_SLIDE_LEN   130
+
+#define QP_IDLETXT_LABEL_STRING        \
+       "<font_size=30 font_weight=Medium color=#959494FF align=left>%s</>"
+
+static int quickpanel_idletxt_init(void *data);
+static int quickpanel_idletxt_fini(void *data);
+static int quickpanel_idletxt_suspend(void *data);
+static int quickpanel_idletxt_resume(void *data);
+static void quickpanel_idletxt_lang_changed(void *data);
+
+QP_Module idletxt = {
+       .name = "idletxt",
+       .init = quickpanel_idletxt_init,
+       .fini = quickpanel_idletxt_fini,
+       .suspend = quickpanel_idletxt_suspend,
+       .resume = quickpanel_idletxt_resume,
+       .lang_changed = quickpanel_idletxt_lang_changed
+};
+
+static int _quickpanel_idletxt_map_exceptional_nwname(char *txt, char *map_txt, int map_txt_len)
+{
+       int is_mapped = 0;
+
+       if (txt == NULL || map_txt == NULL) {
+               return is_mapped;
+       }
+
+       if (strncasecmp(txt, "No Service", strlen("No Service")) == 0) {
+               strncpy(map_txt, _S("IDS_COM_BODY_NO_SERVICE"), map_txt_len);
+               is_mapped = 1;
+       } else if (strncasecmp(txt, "EMERGENCY", strlen("EMERGENCY")) == 0) {
+               strncpy(map_txt, _("IDS_CALL_POP_CALLING_EMERG_ONLY"), map_txt_len);
+               is_mapped = 1;
+       } else if (strncasecmp(txt, "Searching", strlen("Searching")) == 0) {
+               strncpy(map_txt, _S("IDS_COM_BODY_SEARCHING"), map_txt_len);
+               is_mapped = 1;
+       } else if (strncasecmp(txt, "SIM Error", strlen("SIM Error")) == 0) {
+               strncpy(map_txt, _S("IDS_COM_BODY_INVALID_SIM_CARD"), map_txt_len);
+               is_mapped = 1;
+       } else if (strncasecmp(txt, "NO SIM", strlen("NO SIM")) == 0) {
+               strncpy(map_txt, _S("IDS_COM_BODY_NO_SIM"), map_txt_len);
+               is_mapped = 1;
+       }
+
+       return is_mapped;
+}
+
+static Evas_Object *_quickpanel_idletxt_create_label(Evas_Object * parent,
+                                                    char *txt)
+{
+       Evas_Object *obj = NULL;
+       char buf[QP_IDLETXT_MAX_LEN] = { 0, };
+       char localized_txt[QP_IDLETXT_MAX_LEN] = { 0, };
+       int len = 0;
+
+       retif(parent == NULL || txt == NULL, NULL, "Invalid parameter!");
+
+       memset(buf, 0x00, sizeof(buf));
+
+       if (_quickpanel_idletxt_map_exceptional_nwname(txt, localized_txt, QP_IDLETXT_MAX_LEN) == 1) {
+               len = snprintf(buf, sizeof(buf), QP_IDLETXT_LABEL_STRING, localized_txt);
+       } else {
+               len = snprintf(buf, sizeof(buf), QP_IDLETXT_LABEL_STRING, txt);
+       }
+
+       retif(len < 0, NULL, "len < 0");
+
+       obj = elm_label_add(parent);
+       if (obj != NULL) {
+               struct appdata *ad = quickpanel_get_app_data();
+
+               if (ad != NULL)
+                       elm_label_wrap_width_set(obj, QP_SPN_TEXT_W * ad->scale);
+               else
+                       elm_label_wrap_width_set(obj, QP_SPN_TEXT_W);
+
+#if QP_ENABLE_SLIDING_TEXT
+               elm_label_slide_mode_set(obj, ELM_LABEL_SLIDE_MODE_AUTO);
+               elm_label_slide_duration_set(obj, 3);
+               elm_object_style_set(obj, "slide_bounce");
+#else
+               elm_label_ellipsis_set(obj, EINA_TRUE);
+#endif
+
+               elm_object_text_set(obj, buf);
+
+               evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND,
+                                                EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, 0.5);
+
+               evas_object_show(obj);
+       }
+
+       return obj;
+}
+
+static Evas_Object *_quickpanel_idletxt_create_box(Evas_Object * parent)
+{
+       Evas_Object *box = NULL;
+
+       retif(parent == NULL, NULL, "Invalid parameter!");
+
+       box = elm_box_add(parent);
+       if (box != NULL) {
+               elm_box_horizontal_set(box, EINA_FALSE);
+
+               evas_object_show(box);
+       }
+
+       return box;
+}
+
+static int _quickpanel_idletxt_get_txt(const char *key, char *txt, int size)
+{
+       int len = 0;
+       char *str = NULL;
+       int i = 0;
+
+       str = vconf_get_str(key);
+       if (str == NULL || str[0] == '\0')
+               return 0;
+
+       /* check ASCII code */
+       for (i = strlen(str) - 1; i >= 0; i--) {
+               if (str[i] <= 31 || str[i] >= 127)
+                       goto failed;
+       }
+
+       len = snprintf(txt, size, "%s", str);
+
+ failed:
+       if (str)
+               free(str);
+
+       return len;
+}
+
+static Evas_Object *_quickpanel_idletxt_add_label(Evas_Object * box,
+                                                 char *key[])
+{
+       char txt[QP_IDLETXT_MAX_LEN] = { 0, };
+       char buf[QP_IDLETXT_MAX_LEN] = { 0, };
+       int len = 0;
+       int i = 0;
+       Evas_Object *obj = NULL;
+
+       retif(key == NULL || key[0] == '\0', NULL, "Invalid parameter!");
+
+       memset(txt, 0x00, sizeof(txt));
+
+       for (i = 0; key[i]; i++) {
+               memset(buf, 0x00, sizeof(buf));
+
+               /* get next key string */
+               if (_quickpanel_idletxt_get_txt(key[i], buf, sizeof(buf))) {
+                       INFO("VCONFKEY(%s) = %s", key[i], buf);
+
+                       len = strlen(txt);
+
+                       snprintf(&txt[len], sizeof(txt) - len, "%s%s",
+                                len ? " - " : "", buf);
+               }
+       }
+
+       len = strlen(txt);
+
+       if (len) {
+               obj = _quickpanel_idletxt_create_label(box, txt);
+
+               if (obj != NULL) {
+                       return obj;
+               }
+       }
+
+       return NULL;
+}
+
+static Evas_Object *_quickpanel_idletxt_exception_add_label(Evas_Object * box)
+{
+       int service_type = VCONFKEY_TELEPHONY_SVCTYPE_SEARCH;
+       char *text = NULL;
+       Evas_Object *obj = NULL;
+
+       if (vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &service_type) != 0) {
+               ERR("fail to get VCONFKEY_TELEPHONY_SVCTYPE");
+       }
+
+       switch(service_type) {
+               case VCONFKEY_TELEPHONY_SVCTYPE_NOSVC:
+                       text = _S("IDS_COM_BODY_NO_SERVICE");
+                       break;
+               case VCONFKEY_TELEPHONY_SVCTYPE_EMERGENCY:
+                       text = _("IDS_CALL_POP_CALLING_EMERG_ONLY");
+                       break;
+               default:
+                       if (service_type > VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {
+                               text = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
+                       } else if (service_type == VCONFKEY_TELEPHONY_SVCTYPE_SEARCH)  {
+                               text = _S("IDS_COM_BODY_SEARCHING");
+                       } else {
+                               return NULL;
+                       }
+                       break;
+       }
+
+       if (text != NULL) {
+               obj = _quickpanel_idletxt_create_label(box, text);
+
+               if (obj != NULL) {
+                       return obj;
+               }
+       }
+
+       return NULL;
+}
+
+static Evas_Object *_quickpanel_idletxt_get_spn(Evas_Object * box)
+{
+       Evas_Object *label = NULL;
+       char *keylist[QP_IDLETXT_MAX_KEY] = { 0, };
+       int ret = 0;
+       int state = 0;
+       int i = 0;
+       int service_type = VCONFKEY_TELEPHONY_SVCTYPE_NONE;
+
+       /* make keylist */
+       if (vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &service_type) != 0) {
+               ERR("fail to get VCONFKEY_TELEPHONY_SVCTYPE");
+       }
+
+       ret = vconf_get_int(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, &state);
+       if (ret == 0) {
+               INFO("VCONFKEY(%s) = %d",
+                    VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, state);
+
+               if (state != VCONFKEY_TELEPHONY_DISP_INVALID
+                               && service_type > VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {
+                       if (i < QP_IDLETXT_MAX_KEY) {
+                               if (state & VCONFKEY_TELEPHONY_DISP_SPN) {
+                                       keylist[i++] =
+                                           strdup(VCONFKEY_TELEPHONY_SPN_NAME);
+                               }
+
+                               if (state & VCONFKEY_TELEPHONY_DISP_PLMN) {
+                                       keylist[i++] =
+                                           strdup(VCONFKEY_TELEPHONY_NWNAME);
+                               }
+                       }
+
+                       if (i > 0) {
+                               /* get string with keylist */
+                               label = _quickpanel_idletxt_add_label(box, keylist);
+
+                               /* free keylist */
+                               while (i > 0) {
+                                       if (keylist[i])
+                                               free(keylist[i]);
+
+                                       i--;
+                               }
+                       }
+               } else {
+                       label = _quickpanel_idletxt_exception_add_label(box);
+               }
+       }
+
+       return label;
+}
+
+#ifdef TBD
+static Evas_Object *_quickpanel_idletxt_get_sat_text(Evas_Object * box)
+{
+       Evas_Object *label = NULL;
+       char *keylist[] = { VCONFKEY_SAT_IDLE_TEXT, 0 };
+
+       /* get string with keylist */
+       label = _quickpanel_idletxt_add_label(box, keylist);
+
+       return label;
+}
+#endif
+
+static Eina_Bool _quickpanel_idletxt_button_clicked_timer_cb(void *data)
+{
+       quickpanel_launch_app(QP_SETTING_PKG_SETTING_EMUL, NULL);
+
+       quickpanel_close_quickpanel(true);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+
+static void _quickpanel_idletxt_button_clicked(void *data, Evas_Object * obj, void *event_info)
+{
+       struct appdata *ad = data;
+
+       quickpanel_play_feedback();
+
+       retif(obj == NULL, , "Invalid parameter!");
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->win == NULL, , "ad->win is NULL");
+
+       ecore_idler_add(_quickpanel_idletxt_button_clicked_timer_cb, NULL);
+}
+
+static void quickpanel_idletxt_update(void *data)
+{
+       struct appdata *ad = NULL;
+       Evas_Object *label = NULL;
+       Evas_Object *idletxtbox = NULL;
+       Evas_Object *button_settings = NULL;
+       Evas_Object *spn = NULL;
+
+       retif(!data, , "Invalid parameter!");
+       ad = data;
+
+       retif(!ad->ly, , "layout is NULL!");
+
+       spn = elm_object_part_content_get(ad->ly, QP_SPN_BASE_PART);
+       retif(!spn, , "spn layout is NULL!");
+
+       idletxtbox = elm_object_part_content_get(spn, QP_SPN_BOX_PART);
+       button_settings = elm_object_part_content_get(spn, QP_BUTTON_PART);
+
+       if (idletxtbox == NULL) {
+               idletxtbox = _quickpanel_idletxt_create_box(spn);
+               retif(idletxtbox == NULL, , "Failed to create box!");
+               elm_object_part_content_set(spn,
+                               QP_SPN_BOX_PART, idletxtbox);
+       }
+
+       elm_box_clear(idletxtbox);
+
+       /* get spn */
+       label = _quickpanel_idletxt_get_spn(idletxtbox);
+       if (label != NULL)
+               elm_box_pack_end(idletxtbox, label);
+
+       /* get sat idle text */
+#if QP_ENABLE_SAT
+       label = _quickpanel_idletxt_get_sat_text(idletxtbox);
+       if (label != NULL)
+               elm_box_pack_end(idletxtbox, label);
+#endif
+
+       if (button_settings == NULL) {
+               button_settings = elm_button_add(spn);
+               retif(button_settings == NULL, , "Failed to create clear button!");
+               elm_object_style_set(button_settings, "quickpanel_standard");
+               elm_object_part_content_set(spn,
+                               QP_BUTTON_PART, button_settings);
+               evas_object_smart_callback_add(button_settings, "clicked",
+                               _quickpanel_idletxt_button_clicked, ad);
+       }
+
+       elm_object_text_set(button_settings, _S("IDS_COM_BODY_SETTINGS"));
+}
+
+static void quickpanel_idletxt_changed_cb(keynode_t *node, void *data)
+{
+       quickpanel_idletxt_update(data);
+}
+
+static int _quickpanel_idletxt_register_event_handler(void *data)
+{
+       int ret = 0;
+
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVCTYPE,
+                               quickpanel_idletxt_changed_cb, data);
+       if (ret != 0)
+               ERR("Failed to register [%s]",
+                               VCONFKEY_TELEPHONY_SVCTYPE);
+
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,
+                               quickpanel_idletxt_changed_cb, data);
+       if (ret != 0)
+               ERR("Failed to register [%s]",
+                       VCONFKEY_TELEPHONY_SPN_DISP_CONDITION);
+
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_NAME,
+                               quickpanel_idletxt_changed_cb, data);
+       if (ret != 0)
+               ERR("Failed to register [%s]",
+                       VCONFKEY_TELEPHONY_SPN_NAME);
+
+
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME,
+                               quickpanel_idletxt_changed_cb, data);
+       if (ret != 0)
+               ERR("Failed to register [%s]",
+                       VCONFKEY_TELEPHONY_NWNAME);
+
+       ret = vconf_notify_key_changed(VCONFKEY_SAT_IDLE_TEXT,
+                               quickpanel_idletxt_changed_cb, data);
+       if (ret != 0)
+               ERR("Failed to register [%s]",
+                       VCONFKEY_SAT_IDLE_TEXT);
+
+
+       return QP_OK;
+}
+
+static int _quickpanel_idletxt_unregister_event_handler(void)
+{
+       int ret = 0;
+
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVCTYPE,
+                                    quickpanel_idletxt_changed_cb);
+       if (ret != 0)
+               ERR("Failed to unregister [%s]",
+                               VCONFKEY_TELEPHONY_SVCTYPE);
+
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,
+                                    quickpanel_idletxt_changed_cb);
+       if (ret != 0)
+               ERR("Failed to unregister [%s]",
+                       VCONFKEY_TELEPHONY_SPN_DISP_CONDITION);
+
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_NAME,
+                                    quickpanel_idletxt_changed_cb);
+       if (ret != 0)
+               ERR("Failed to unregister [%s]",
+                       VCONFKEY_TELEPHONY_SPN_NAME);
+
+
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NWNAME,
+                                    quickpanel_idletxt_changed_cb);
+       if (ret != 0)
+               ERR("Failed to unregister [%s]",
+                       VCONFKEY_TELEPHONY_NWNAME);
+
+       ret = vconf_ignore_key_changed(VCONFKEY_SAT_IDLE_TEXT,
+                                    quickpanel_idletxt_changed_cb);
+       if (ret != 0)
+               ERR("Failed to unregister [%s]",
+                       VCONFKEY_SAT_IDLE_TEXT);
+
+       return QP_OK;
+}
+
+static Evas_Object *_idletxt_load_edj(Evas_Object * parent, const char *file,
+                               const char *group)
+{
+       Eina_Bool r;
+       Evas_Object *eo = NULL;
+
+       retif(parent == NULL, NULL, "Invalid parameter!");
+
+       eo = elm_layout_add(parent);
+       retif(eo == NULL, NULL, "Failed to add layout object!");
+
+       r = elm_layout_file_set(eo, file, group);
+       retif(r != EINA_TRUE, NULL, "Failed to set edje object file!");
+
+       evas_object_size_hint_weight_set(eo,
+               EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(eo);
+
+       return eo;
+}
+
+static int quickpanel_idletxt_init(void *data)
+{
+       struct appdata *ad = NULL;
+       Evas_Object *spn = NULL;
+
+       retif(!data, QP_FAIL, "Invalid parameter!");
+       ad = data;
+
+       spn = _idletxt_load_edj(ad->ly, DEFAULT_EDJ, "quickpanel/spn");
+       retif(!spn, QP_FAIL, "fail to load spn layout");
+
+       elm_object_part_content_set(ad->ly, QP_SPN_BASE_PART, spn);
+
+       quickpanel_idletxt_update(data);
+
+       _quickpanel_idletxt_register_event_handler(data);
+
+       return QP_OK;
+}
+
+static int quickpanel_idletxt_fini(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       Evas_Object *spn = NULL;
+       Evas_Object *idletxtbox = NULL;
+
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       _quickpanel_idletxt_unregister_event_handler();
+
+       retif(!ad->ly, QP_FAIL, "Invalid parameter!");
+
+       spn = elm_object_part_content_unset(ad->ly, QP_SPN_BASE_PART);
+       retif(!spn, QP_OK, "spn is NULL");
+
+       idletxtbox = elm_object_part_content_get(spn, QP_SPN_BOX_PART);
+       if (idletxtbox) {
+               elm_object_part_content_unset(spn, QP_SPN_BOX_PART);
+               evas_object_del(idletxtbox);
+       }
+
+       evas_object_del(spn);
+
+       return QP_OK;
+}
+
+#if QP_ENABLE_SLIDING_TEXT
+static Evas_Object *_quickpanel_spn_label_get(void *data)
+{
+       Evas_Object *spn = NULL;
+       Evas_Object *label = NULL;
+       Evas_Object *idletxtbox = NULL;
+       struct appdata *ad = NULL;
+       retif(!data, NULL, "Invalid parameter!");
+       ad = data;
+
+       retif(!ad->ly, NULL, "layout is NULL!");
+
+       spn = elm_object_part_content_get(ad->ly, QP_SPN_BASE_PART);
+       retif(!spn, NULL, "spn layout is NULL!");
+
+       idletxtbox = elm_object_part_content_get(spn, QP_SPN_BOX_PART);
+       retif(!idletxtbox, NULL, "idletxtbox is NULL!");
+
+       Eina_List *list = elm_box_children_get(idletxtbox);
+       retif(!list, NULL, "list is NULL!");
+
+       label = eina_list_nth(list, 0);
+
+       return label;
+}
+#endif
+
+static int quickpanel_idletxt_suspend(void *data)
+{
+#if QP_ENABLE_SLIDING_TEXT
+       Evas_Object *label = _quickpanel_spn_label_get(data);
+
+       if (label != NULL) {
+               elm_label_slide_mode_set(label, ELM_LABEL_SLIDE_MODE_NONE);
+       }
+#endif
+
+       return QP_OK;
+}
+
+static int quickpanel_idletxt_resume(void *data)
+{
+#if QP_ENABLE_SLIDING_TEXT
+       Evas_Object *label = _quickpanel_spn_label_get(data);
+
+       if (label != NULL) {
+               elm_label_slide_mode_set(label, ELM_LABEL_SLIDE_MODE_AUTO);
+       }
+#endif
+
+       return QP_OK;
+}
+
+static void quickpanel_idletxt_lang_changed(void *data)
+{
+       retif(data == NULL, , "Invalid parameter!");
+
+       quickpanel_idletxt_update(data);
+}
diff --git a/daemon/list_util.c b/daemon/list_util.c
new file mode 100755 (executable)
index 0000000..fee28cf
--- /dev/null
@@ -0,0 +1,608 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 <Elementary.h>
+#include <stdlib.h>
+
+#include "common.h"
+#include "list_util.h"
+#include "vi_manager.h"
+
+#define E_DATA_ITEM_LABEL_H "QP_ITEM_DATA"
+
+struct _qp_item_data {
+       qp_item_type_e type;
+       void *data;
+};
+
+static Eina_Bool _anim_init_cb(void *data);
+static Eina_Bool _anim_job_cb(void *data);
+static Eina_Bool _anim_done_cb(void *data);
+
+HAPI qp_item_data *quickpanel_list_util_item_new(qp_item_type_e type, void *data)
+{
+       qp_item_data *qid = NULL;
+
+       qid = malloc(sizeof(struct _qp_item_data));
+       if (!qid) {
+               ERR("fail to alloc qid");
+               return NULL;
+       }
+
+       qid->type = type;
+       qid->data = data;
+
+       return qid;
+}
+
+HAPI void quickpanel_list_util_item_set_tag(Evas_Object *item, qp_item_data *qid)
+{
+       retif(item == NULL, , "invalid parameter");
+       retif(qid == NULL, , "invalid parameter");
+
+       evas_object_data_set(item, E_DATA_ITEM_LABEL_H, qid);
+}
+
+HAPI void quickpanel_list_util_item_del_tag(Evas_Object *item)
+{
+       retif(item == NULL, , "invalid parameter");
+
+       qp_item_data *qid = evas_object_data_get(item, E_DATA_ITEM_LABEL_H);
+
+       if (qid != NULL) {
+               evas_object_data_del(item, E_DATA_ITEM_LABEL_H);
+               free(qid);
+       }
+}
+
+HAPI void *quickpanel_list_util_item_get_data(qp_item_data *qid)
+{
+       void *user_data = NULL;
+
+       if (!qid)
+               return NULL;
+
+       user_data = qid->data;
+
+       return user_data;
+}
+
+HAPI void quickpanel_list_util_item_set_data(qp_item_data *qid, void *data)
+{
+       if (!qid)
+               return ;
+
+       qid->data = data;
+}
+
+HAPI int quickpanel_list_util_item_compare(const void *data1, const void *data2)
+{
+       int diff = 0;
+       qp_item_data *qid1 = NULL;
+       qp_item_data *qid2 = NULL;
+       const Evas_Object *eo1 = data1;
+       const Evas_Object *eo2 = data2;
+
+       if (!eo1) {
+               INFO("eo1 is NULL");
+               return -1;
+       }
+
+       if (!eo2) {
+               INFO("eo2 is NULL");
+               return 1;
+       }
+
+       qid1 = evas_object_data_get(eo1, E_DATA_ITEM_LABEL_H);
+       qid2 = evas_object_data_get(eo2, E_DATA_ITEM_LABEL_H);
+
+       if (!qid1) {
+               INFO("qid1 is NULL");
+               return -1;
+       }
+
+       if (!qid2) {
+               INFO("qid2 is NULL");
+               return 1;
+       }
+
+       /* elm_genlist sort is not working as i expected */
+       if (qid1->type == qid2->type)
+               return 1;
+
+       diff = qid1->type - qid2->type;
+       return diff;
+}
+
+static qp_item_type_e _get_item_type(qp_item_data *item_data)
+{
+       retif(item_data == NULL, QP_ITEM_TYPE_NONE, "a invalid data");
+
+       return item_data->type;
+}
+
+static int __item_compare(const void *data1, const void *data2)
+{
+       int diff = 0;
+       const Evas_Object *eo1 = data1;
+       const qp_item_data *qid1 = NULL;
+       const qp_item_data *qid2 = data2;
+
+       if (!data1) {
+               INFO("data1 is NULL");
+               return -1;
+       }
+
+       if (!data2) {
+               INFO("data2 is NULL");
+               return 1;
+       }
+
+       qid1 = evas_object_data_get(eo1, E_DATA_ITEM_LABEL_H);
+
+       if (!qid1) {
+               INFO("qid1 is NULL");
+               return -1;
+       }
+
+       diff = qid1->type - qid2->type;
+
+       return diff;
+}
+
+static void _list_util_layout_get_coord(Evas_Object *container, Evas_Object *first,
+       int *coord_x, int *coord_y) {
+       int x, y, h;
+       int off_y = 0;
+       struct appdata *ad = quickpanel_get_app_data();
+
+       retif(container == NULL, , "invalid parameter");
+       retif(ad == NULL, , "invalid data.");
+
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = elm_box_children_get(container);
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
+       {
+               if (obj != NULL) {
+                       evas_object_geometry_get(obj, NULL, NULL, NULL, &h);
+                       off_y += h;
+                       if (obj == first) break;
+               }
+       }
+
+       evas_object_geometry_get(container, &x, &y, NULL, &h);
+       if (off_y == 0 || y == 0) {
+               ERR("Failed get a valid height offset : %d %d", off_y, y);
+       }
+
+       if (coord_x != NULL) {
+               *coord_x = x;
+       }
+       if (coord_y != NULL) {
+               *coord_y = y + off_y;
+       }
+}
+
+Evas_Object *_list_util_get_first(Evas_Object *list,
+                                       Evas_Object *new_obj)
+{
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj = NULL;
+       Evas_Object *first = NULL;
+       Eina_List *item_list = elm_box_children_get(list);
+       qp_item_data *item_data = NULL;
+
+       retif(list == NULL, NULL, "invalid parameter");
+       retif(new_obj == NULL, NULL, "invalid parameter");
+
+       item_data = evas_object_data_get(new_obj, E_DATA_ITEM_LABEL_H);
+       retif(item_data == NULL, NULL, "invalid parameter");
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
+       {
+               if (obj != NULL) {
+                       if (__item_compare(obj, item_data) >= 0)
+                               break;
+               }
+
+               first = obj;
+       }
+
+       return first;
+}
+
+HAPI void quickpanel_list_util_item_unpack_by_object(Evas_Object *list
+               , Evas_Object *item)
+{
+       QP_VI *vi = NULL;
+       qp_item_data *qid = NULL;
+       retif(list == NULL, , "invalid parameter");
+       retif(item == NULL, , "invalid parameter");
+
+       qid = evas_object_data_get(item, E_DATA_ITEM_LABEL_H);
+       vi = quickpanel_vi_new_with_data(
+                       VI_OP_DELETE,
+                       _get_item_type(qid),
+                       list,
+                       item,
+                       _anim_init_cb,
+                       _anim_job_cb,
+                       _anim_done_cb,
+                       _anim_done_cb,
+                       vi,
+                       NULL,
+                       0,
+                       0);
+       quickpanel_vi_start(vi);
+}
+
+HAPI void quickpanel_list_util_sort_insert(Evas_Object *list,
+                                       Evas_Object *new_obj)
+{
+       QP_VI *vi = NULL;
+       qp_item_data *qid = NULL;
+       retif(list == NULL, , "invalid parameter");
+       retif(new_obj == NULL, , "invalid parameter");
+
+       qid = evas_object_data_get(new_obj, E_DATA_ITEM_LABEL_H);
+       vi = quickpanel_vi_new_with_data(
+                       VI_OP_INSERT,
+                       _get_item_type(qid),
+                       list,
+                       new_obj,
+                       _anim_init_cb,
+                       _anim_job_cb,
+                       _anim_done_cb,
+                       _anim_done_cb,
+                       vi,
+                       NULL,
+                       0,
+                       0);
+       quickpanel_vi_start(vi);
+}
+
+HAPI Elm_Transit *quickpanel_list_get_reorder_transit(Evas_Object *item, Elm_Transit *transit, int distance) {
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = NULL;
+       int is_start_relayout = 0;
+       Elm_Transit *transit_layout = NULL;
+       Evas_Object *container = NULL;
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, NULL, "invalid parameter");
+
+       container = ad->list;
+       retif(container == NULL, NULL, "invalid parameter");
+       retif(item == NULL, NULL, "invalid parameter");
+
+       item_list = elm_box_children_get(container);
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
+       {
+               if (obj == item) {
+                       is_start_relayout = 1;
+               } else if (obj != NULL && is_start_relayout == 1) {
+                       transit_layout = elm_transit_add();
+                       if (transit_layout != NULL) {
+                               elm_transit_effect_translation_add(transit_layout, 0, 0, 0, distance);
+                               elm_transit_object_add(transit_layout, obj);
+                               elm_transit_duration_set(transit_layout,
+                                               quickpanel_vim_get_duration(VI_OP_REORDER));
+                               elm_transit_tween_mode_set(transit_layout,
+                                               quickpanel_vim_get_tweenmode(VI_OP_REORDER));
+                               elm_transit_objects_final_state_keep_set(transit_layout, EINA_TRUE);
+                               if (transit != NULL) {
+                                       elm_transit_chain_transit_add(transit, transit_layout);
+                               } else {
+                                       elm_transit_go(transit_layout);
+                               }
+                       }
+               }
+       }
+
+       return transit_layout;
+}
+
+static void _anim_init_insert(void *data) {
+       QP_VI *vi = data;
+       retif(vi == NULL, , "invalid parameter");
+
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *container = vi->container;
+       Evas_Object *item = vi->target;
+
+       evas_object_clip_set(item, evas_object_clip_get(container));
+       evas_object_color_set(item, 0, 0, 0, 0);
+}
+
+static void _anim_job_insert(void *data) {
+       QP_VI *vi = data;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = NULL;
+       int is_start_relayout = 0;
+       int item_width, item_height = 0;
+       int coord_x = 0, coord_y = 0;
+       Elm_Transit *transit_layout = NULL;
+       Elm_Transit *transit_fadein = NULL;
+       Evas_Object *container = NULL;
+       Evas_Object *item = NULL;
+       Evas_Object *first = NULL;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       container = vi->container;
+       item = vi->target;
+       item_list = elm_box_children_get(container);
+
+       first = _list_util_get_first(container, item);
+       _list_util_layout_get_coord(container, first, &coord_x, &coord_y);
+       evas_object_move(item, coord_x, coord_y);
+       is_start_relayout = (first == NULL) ? 1 : 0;
+
+       evas_object_geometry_get(item, NULL, NULL, &item_width, &item_height);
+       if (item_width == 0 && item_height == 0) {
+               ERR("failed to get a size of item %d %d", item_width, item_height);
+               evas_object_size_hint_min_get (item, &item_width, &item_height);
+       }
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
+       {
+               if (obj == first) {
+                       is_start_relayout = 1;
+               } else if (obj != NULL && is_start_relayout == 1) {
+                       transit_layout = elm_transit_add();
+                       if (transit_layout != NULL) {
+                               elm_transit_effect_translation_add(transit_layout, 0, 0, 0, item_height);
+                               elm_transit_object_add(transit_layout, obj);
+                               elm_transit_duration_set(transit_layout,
+                                               quickpanel_vim_get_duration(VI_OP_REORDER));
+                               elm_transit_tween_mode_set(transit_layout,
+                                               quickpanel_vim_get_tweenmode(VI_OP_REORDER));
+                               elm_transit_objects_final_state_keep_set(transit_layout, EINA_TRUE);
+                               elm_transit_go(transit_layout);
+                       } else {
+                               ERR("Failed to create a transit");
+                       }
+               }
+       }
+
+       transit_fadein = elm_transit_add();
+       if (transit_fadein != NULL) {
+               elm_transit_object_add(transit_fadein, item);
+               elm_transit_effect_color_add(transit_fadein, 0, 0, 0, 0, 255, 255, 255, 255);
+               elm_transit_duration_set(transit_fadein,
+                               quickpanel_vim_get_duration(VI_OP_INSERT));
+               elm_transit_tween_mode_set(transit_fadein,
+                               quickpanel_vim_get_tweenmode(VI_OP_INSERT));
+               elm_transit_del_cb_set(transit_fadein, quickpanel_vi_done_cb_for_transit, vi);
+
+               if (transit_layout != NULL) {
+                       elm_transit_chain_transit_add(transit_layout, transit_fadein);
+               } else {
+                       elm_transit_go(transit_fadein);
+               }
+       } else {
+               if (transit_layout != NULL) elm_transit_del(transit_layout);
+               quickpanel_vi_done(vi);
+               ERR("Failed to create all the transit");
+       }
+}
+
+static void _anim_done_insert(void *data) {
+       QP_VI *vi = data;
+       retif(data == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *container = vi->container;
+       Evas_Object *item = vi->target;
+       Evas_Object *first = _list_util_get_first(container, item);
+
+       evas_object_color_set(item, 255, 255, 255, 255);
+
+       if (first == NULL) {
+               elm_box_pack_start(container, item);
+       } else {
+               elm_box_pack_after(container, item, first);
+       }
+}
+
+static void _anim_job_delete(void *data) {
+       QP_VI *vi = data;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = NULL;
+       int is_start_relayout = 0;
+       int item_width, item_height = 0;
+       Elm_Transit *transit_layout = NULL;
+       Elm_Transit *transit_fadeout = NULL;
+       Evas_Object *container = NULL;
+       Evas_Object *item = NULL;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       container = vi->container;
+       item = vi->target;
+       item_list = elm_box_children_get(container);
+
+       evas_object_geometry_get(item, NULL, NULL, &item_width, &item_height);
+       if (item_width == 0 && item_height == 0) {
+               ERR("failed to get a size of item %d %d", item_width, item_height);
+               evas_object_size_hint_min_get (item, &item_width, &item_height);
+       }
+
+       transit_fadeout = elm_transit_add();
+       if (transit_fadeout != NULL) {
+               elm_transit_object_add(transit_fadeout, item);
+               elm_transit_effect_color_add(transit_fadeout, 255, 255, 255, 255, 0, 0, 0, 0);
+               elm_transit_objects_final_state_keep_set(transit_fadeout, EINA_TRUE);
+               elm_transit_tween_mode_set(transit_fadeout,
+                               quickpanel_vim_get_tweenmode(VI_OP_DELETE));
+               elm_transit_duration_set(transit_fadeout,
+                               quickpanel_vim_get_duration(VI_OP_DELETE));
+               elm_transit_go(transit_fadeout);
+
+               EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
+               {
+                       if (obj == item) {
+                               is_start_relayout = 1;
+                       } else if (obj != NULL && is_start_relayout == 1) {
+                               transit_layout = elm_transit_add();
+                               if (transit_layout != NULL) {
+                                       elm_transit_effect_translation_add(transit_layout, 0, 0, 0, -item_height);
+                                       elm_transit_object_add(transit_layout, obj);
+                                       elm_transit_duration_set(transit_layout,
+                                                       quickpanel_vim_get_duration(VI_OP_REORDER));
+                                       elm_transit_tween_mode_set(transit_layout,
+                                                       quickpanel_vim_get_tweenmode(VI_OP_REORDER));
+                                       elm_transit_objects_final_state_keep_set(transit_layout, EINA_TRUE);
+                                       elm_transit_chain_transit_add(transit_fadeout, transit_layout);
+                               } else {
+                                       ERR("Failed to create a transit");
+                               }
+                       }
+               }
+       }
+
+       if (transit_layout != NULL) {
+               elm_transit_del_cb_set(transit_layout, quickpanel_vi_done_cb_for_transit,
+                               vi);
+       } else if (transit_fadeout != NULL) {
+               elm_transit_del_cb_set(transit_fadeout, quickpanel_vi_done_cb_for_transit,
+                               vi);
+       } else {
+               ERR("Failed to create all the transit");
+               quickpanel_vi_done(vi);
+       }
+}
+
+static void _anim_done_delete(void *data) {
+       QP_VI *vi = data;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *container = vi->container;
+       Evas_Object *item = vi->target;
+
+       elm_box_unpack(container, item);
+       evas_object_del(item);
+}
+
+static Eina_Bool _anim_init_cb(void *data) {
+       int i = 0;
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_init_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_init_insert,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; anim_init_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_init_table[i].op_type != vi->op_type)
+                       continue;
+
+               anim_init_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _anim_job_cb(void *data) {
+       int i = 0;
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_job_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_job_insert,
+               },
+               {
+                       .op_type = VI_OP_DELETE,
+                       .handler = _anim_job_delete,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; anim_job_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_job_table[i].op_type != vi->op_type)
+                       continue;
+
+               anim_job_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _anim_done_cb(void *data) {
+       int i = 0;
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_done_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_done_insert,
+               },
+               {
+                       .op_type = VI_OP_DELETE,
+                       .handler = _anim_done_delete,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; anim_done_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_done_table[i].op_type != vi->op_type)
+                       continue;
+
+               anim_done_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
diff --git a/daemon/list_util.h b/daemon/list_util.h
new file mode 100755 (executable)
index 0000000..6d4d8f2
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 _QP_LIST_UTIL_DEF_
+#define _QP_LIST_UTIL_DEF_
+
+#include <Elementary.h>
+
+typedef enum {
+       QP_ITEM_TYPE_NONE = -1,
+       QP_ITEM_TYPE_SETTING = 0,
+       QP_ITEM_TYPE_BRIGHTNESS,
+       QP_ITEM_TYPE_ONGOING_NOTI,
+       QP_ITEM_TYPE_MINICTRL_ONGOING,
+       QP_ITEM_TYPE_MINICTRL_TOP,
+       QP_ITEM_TYPE_MINICTRL_MIDDLE,
+       QP_ITEM_TYPE_MINICTRL_LOW,
+       QP_ITEM_TYPE_NOTI_GROUP,
+       QP_ITEM_TYPE_NOTI,
+       QP_ITEM_TYPE_BAR,
+       QP_ITEM_TYPE_MAX,
+} qp_item_type_e;
+
+typedef struct _qp_item_data qp_item_data;
+typedef struct _qp_item_count {
+       int group;
+       int ongoing;
+       int noti;
+       int minicontrol;
+} qp_item_count;
+
+
+qp_item_data *quickpanel_list_util_item_new(qp_item_type_e type, void *data);
+void quickpanel_list_util_item_set_tag(Evas_Object *item, qp_item_data *qid);
+void quickpanel_list_util_item_del_tag(Evas_Object *item);
+
+void *quickpanel_list_util_item_get_data(qp_item_data *qid);
+void quickpanel_list_util_item_set_data(qp_item_data *qid, void *data);
+int quickpanel_list_util_item_compare(const void *data1, const void *data2);
+
+void quickpanel_list_util_item_unpack_by_object(Evas_Object *list
+               , Evas_Object *item);
+
+void quickpanel_list_util_sort_insert(Evas_Object *list,
+                                       Evas_Object *new_obj);
+
+Elm_Transit *quickpanel_list_get_reorder_transit(Evas_Object *item,
+               Elm_Transit *transit, int distance);
+
+#endif /* _QP_LIST_UTIL_DEF_ */
+
diff --git a/daemon/media.c b/daemon/media.c
new file mode 100755 (executable)
index 0000000..203d71b
--- /dev/null
@@ -0,0 +1,289 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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
+ *
+ * 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 "common.h"
+#include "quickpanel-ui.h"
+
+static player_h g_sound_player;
+static Ecore_Timer *g_sound_player_timer;
+
+static void _quickpanel_player_free_job_cb(void *data)
+{
+       player_h sound_player = data;
+       player_state_e state = PLAYER_STATE_NONE;
+
+       retif(sound_player == NULL, , "invalid parameter");
+
+       if (player_get_state(sound_player, &state) == PLAYER_ERROR_NONE) {
+
+               INFO("the state of sound player %d", state);
+
+               if (state == PLAYER_STATE_PLAYING) {
+                       player_stop(sound_player);
+                       player_unprepare(sound_player);
+               }
+               if (state == PLAYER_STATE_READY) {
+                       player_unprepare(sound_player);
+               }
+       }
+       player_destroy(sound_player);
+}
+
+static void _quickpanel_player_free(player_h *sound_player)
+{
+       retif(sound_player == NULL, , "invalid parameter");
+       retif(*sound_player == NULL, , "invalid parameter");
+
+       ecore_job_add(_quickpanel_player_free_job_cb, *sound_player);
+       *sound_player = NULL;
+}
+
+static void
+_quickpanel_player_del_timeout_timer(void)
+{
+       if (g_sound_player_timer) {
+               ecore_timer_del(g_sound_player_timer);
+               g_sound_player_timer = NULL;
+       }
+}
+
+static Eina_Bool _quickpanel_player_timeout_cb(void *data)
+{
+       g_sound_player_timer = NULL;
+
+       retif(data == NULL, ECORE_CALLBACK_CANCEL, "invalid parameter");
+       player_h *sound_player = data;
+
+       _quickpanel_player_free(sound_player);
+       g_sound_player_timer = NULL;
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void
+_quickpanel_player_completed_cb(void *user_data)
+{
+       retif(user_data == NULL, , "invalid parameter");
+       player_h *sound_player = user_data;
+
+       _quickpanel_player_del_timeout_timer();
+       _quickpanel_player_free(sound_player);
+}
+
+static void
+_quickpanel_player_interrupted_cb(player_interrupted_code_e code, void *user_data)
+{
+       retif(user_data == NULL, , "invalid parameter");
+       player_h *sound_player = user_data;
+
+       _quickpanel_player_del_timeout_timer();
+       _quickpanel_player_free(sound_player);
+}
+
+static void
+_quickpanel_player_error_cb(int error_code, void *user_data)
+{
+       retif(user_data == NULL, , "invalid parameter");
+       player_h *sound_player = user_data;
+
+       _quickpanel_player_del_timeout_timer();
+       _quickpanel_player_free(sound_player);
+}
+
+HAPI void quickpanel_player_play(sound_type_e sound_type, const char *sound_file)
+{
+       player_h *sound_player = &g_sound_player;
+
+       int ret = PLAYER_ERROR_NONE;
+#ifdef TBD
+       int sndRet = SOUND_MANAGER_ERROR_NONE;
+#endif
+       player_state_e state = PLAYER_STATE_NONE;
+
+       _quickpanel_player_del_timeout_timer();
+
+       if (*sound_player != NULL) {
+               _quickpanel_player_free(sound_player);
+       }
+
+#ifdef TBD
+       if (sound_type == SOUND_TYPE_NOTIFICATION) {
+               sndRet = sound_manager_set_session_type(SOUND_SESSION_TYPE_NOTIFICATION);
+               if(sndRet != SOUND_MANAGER_ERROR_NONE) {
+                       ERR("sound_manager_set_session_type fail");
+                       return ;
+               }
+       }
+#endif
+
+       ret = player_create(sound_player);
+       if (ret != PLAYER_ERROR_NONE) {
+               ERR("creating the player handle failed[%d]", ret);
+               player_destroy(*sound_player);
+       }
+
+       ret = player_set_sound_type(*sound_player, sound_type);
+       if (ret != PLAYER_ERROR_NONE) {
+               ERR("player_set_sound_type() ERR: %x!!!!", ret);
+               _quickpanel_player_free(sound_player);
+               return ;
+       }
+
+       player_get_state(*sound_player, &state);
+       if (state > PLAYER_STATE_READY) {
+               _quickpanel_player_free(sound_player);
+               return;
+       }
+
+       ret = player_set_uri(*sound_player, sound_file);
+       if (ret != PLAYER_ERROR_NONE) {
+               ERR("set attribute---profile_uri[%d]", ret);
+               _quickpanel_player_free(sound_player);
+               return;
+       }
+
+       ret = player_prepare(*sound_player);
+       if (ret != PLAYER_ERROR_NONE) {
+               ERR("realizing the player handle failed[%d]", ret);
+               _quickpanel_player_free(sound_player);
+               return;
+       }
+
+       player_get_state(*sound_player, &state);
+       if (state != PLAYER_STATE_READY) {
+               ERR("state of player is invalid %d", state);
+               _quickpanel_player_free(sound_player);
+               return;
+       }
+
+       /* register callback */
+       ret = player_set_completed_cb(*sound_player, _quickpanel_player_completed_cb, sound_player);
+       if (ret != PLAYER_ERROR_NONE) {
+               ERR("player_set_completed_cb() ERR: %x!!!!", ret);
+               _quickpanel_player_free(sound_player);
+               return;
+       }
+
+       ret = player_set_interrupted_cb(*sound_player, _quickpanel_player_interrupted_cb, sound_player);
+       if (ret != PLAYER_ERROR_NONE) {
+               _quickpanel_player_free(sound_player);
+               return;
+       }
+
+       ret = player_set_error_cb(*sound_player, _quickpanel_player_error_cb, sound_player);
+       if (ret != PLAYER_ERROR_NONE) {
+               _quickpanel_player_free(sound_player);
+               return;
+       }
+
+       ret = player_start(*sound_player);
+       if (ret != PLAYER_ERROR_NONE) { /* if directly return retor.. */
+               ERR("player_start [%d]", ret);
+               _quickpanel_player_free(sound_player);
+               return;
+       }
+
+       g_sound_player_timer = ecore_timer_add(QP_PLAY_DURATION_LIMIT,
+                       _quickpanel_player_timeout_cb, sound_player);
+}
+
+HAPI void quickpanel_player_stop(void)
+{
+       _quickpanel_player_del_timeout_timer();
+
+       if (g_sound_player != NULL) {
+               _quickpanel_player_free(&g_sound_player);
+       }
+}
+
+HAPI int quickpanel_is_sound_enabled(void)
+{
+       int snd_status = 0, ret = -1;
+
+#ifdef VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS
+       int snd_disabled_status = 0;
+
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS, &snd_disabled_status);
+       msgif(ret != 0, "failed to get VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS");
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &snd_status);
+       msgif(ret != 0, "failed to get VCONFKEY_SETAPPL_SOUND_STATUS_BOOL");
+
+       if (snd_disabled_status == 0 && snd_status == 1) {
+               return 1;
+       }
+#else
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &snd_status);
+       msgif(ret != 0, "failed to get VCONFKEY_SETAPPL_SOUND_STATUS_BOOL");
+
+       if (snd_status == 1) {
+               return 1;
+       }
+#endif
+
+       return 0;
+}
+
+HAPI int quickpanel_is_vib_enabled(void)
+{
+       int vib_status = 0, ret = -1;
+
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vib_status);
+       if (ret == 0) {
+               if (vib_status == 1)
+                       return 1;
+       } else {
+               ERR("failed to get a value of VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL");
+       }
+
+       return 0;
+}
+
+HAPI void quickpanel_play_feedback(void)
+{
+       int snd_enabled = quickpanel_is_sound_enabled();
+       int vib_enabled = quickpanel_is_vib_enabled();
+
+       if (snd_enabled == 1) {
+               feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TOUCH_TAP);
+       } else  if (vib_enabled == 1) {
+               feedback_play_type(FEEDBACK_TYPE_VIBRATION, FEEDBACK_PATTERN_TOUCH_TAP);
+       }
+}
+
+HAPI int quickpanel_set_mute_toggle(void)
+{
+       int ret = -1;
+
+       if (quickpanel_is_sound_enabled() == 1 ||
+                       quickpanel_is_vib_enabled() == 1) {
+               ret = vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, 0);
+               msgif(ret != 0, "failed to set VCONFKEY_SETAPPL_SOUND_STATUS_BOOL");
+
+               ret = vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, 0);
+               msgif(ret != 0, "failed to set VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL");
+
+               return 0;
+       } else {
+               ret = vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, 1);
+               msgif(ret != 0, "failed to set VCONFKEY_SETAPPL_SOUND_STATUS_BOOL");
+
+               ret = vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, 0);
+               msgif(ret != 0, "failed to set VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL");
+
+               return 1;
+       }
+}
diff --git a/daemon/media.h b/daemon/media.h
new file mode 100755 (executable)
index 0000000..62ecb44
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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
+ *
+ * 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 __QUICKPANEL_MEDIA_H__
+#define __QUICKPANEL_MEDIA_H__
+
+#include <player.h>
+#include <sound_manager.h>
+#include <feedback.h>
+
+#define QP_PLAY_DURATION_LIMIT 15
+
+void quickpanel_player_play(sound_type_e sound_type, const char *sound_file);
+void quickpanel_player_stop(void);
+int quickpanel_is_sound_enabled(void);
+int quickpanel_is_vib_enabled(void);
+void quickpanel_play_feedback(void);
+int quickpanel_set_mute_toggle(void);
+
+#endif
diff --git a/daemon/minictrl/minictrl.c b/daemon/minictrl/minictrl.c
new file mode 100755 (executable)
index 0000000..96ea77a
--- /dev/null
@@ -0,0 +1,440 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 <glib.h>
+#include <Ecore_X.h>
+#include <minicontrol-viewer.h>
+#include <minicontrol-monitor.h>
+#include <string.h>
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "quickpanel_def.h"
+#include "list_util.h"
+#include "quickpanel_debug_util.h"
+
+#define QP_R_MARGIN 12
+#define MINICONTROL_WIDTH_P_MAX 692
+#define MINICONTROL_WIDTH_L_MAX 1252
+
+#define MINICONTROL_TYPE_STR_ONGOING "_ongoing]"
+
+static int quickpanel_minictrl_init(void *data);
+static int quickpanel_minictrl_fini(void *data);
+static int quickpanel_minictrl_suspend(void *data);
+static int quickpanel_minictrl_resume(void *data);
+
+QP_Module minictrl = {
+       .name = "minictrl",
+       .init = quickpanel_minictrl_init,
+       .fini = quickpanel_minictrl_fini,
+       .suspend = quickpanel_minictrl_suspend,
+       .resume = quickpanel_minictrl_resume,
+       .hib_enter = NULL,
+       .hib_leave = NULL,
+       .lang_changed = NULL,
+       .refresh = NULL,
+       .get_height = NULL,
+};
+
+struct _viewer_item {
+       char *name;
+       unsigned int width;
+       unsigned int height;
+       minicontrol_priority_e priority;
+       Evas_Object *viewer;
+       void *data;
+};
+
+GHashTable *g_prov_table;
+
+static void _viewer_freeze(Evas_Object *viewer)
+{
+       int freezed_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       freezed_count = elm_object_scroll_freeze_get(viewer);
+
+       WARN("viewer(scroller) is freezed");
+
+       if (freezed_count <= 0) {
+               elm_object_scroll_freeze_push(viewer);
+       }
+}
+
+static void _viewer_unfreeze(Evas_Object *viewer)
+{
+       int i = 0, freezed_count = 0;
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       freezed_count = elm_object_scroll_freeze_get(viewer);
+
+       WARN("viewer(scroller) is unfreezed");
+
+       for (i = 0 ; i < freezed_count; i++) {
+               elm_object_scroll_freeze_pop(viewer);
+       }
+}
+
+static Evas_Object *_get_minictrl_obj(Evas_Object *layout) {
+       retif(layout == NULL, NULL, "Invalid parameter!");
+
+       return elm_object_part_content_get(layout, "elm.icon");
+}
+
+static void _viewer_set_size(Evas_Object *layout, void *data, int width, int height)
+{
+       Evas_Object *viewer = NULL;
+       retif(layout == NULL, , "Invalid parameter!");
+       retif(data == NULL, , "Invalid parameter!");
+       retif(width < 0, , "Invalid parameter!");
+       retif(height < 0, , "Invalid parameter!");
+       struct appdata *ad = data;
+       int max_width = 0;
+       int resized_width = 0;
+
+       viewer = _get_minictrl_obj(layout);
+       retif(viewer == NULL, , "Invalid parameter!");
+
+       if (ad->angle == 90 || ad->angle == 270) {
+               max_width = (ad->scale * MINICONTROL_WIDTH_L_MAX) - 1;
+       } else {
+               max_width = (ad->scale * MINICONTROL_WIDTH_P_MAX) - 1;
+       }
+       resized_width = (width > max_width) ? max_width : width;
+
+       DBG("minicontroller view is resized to w:%d h:%d", resized_width, height);
+
+       evas_object_size_hint_min_set(viewer, resized_width, height);
+}
+
+static void _viewer_item_free(struct _viewer_item *item)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->list == NULL, , "Invalid parameter!");
+       retif(item == NULL, , "Invalid parameter!");
+
+       if (item->name)
+               free(item->name);
+
+       if (item->viewer) {
+#ifdef TBD
+               evas_object_unref(item->viewer);
+#endif
+               quickpanel_list_util_item_unpack_by_object(ad->list, item->viewer);
+               quickpanel_list_util_item_del_tag(item->viewer);
+               evas_object_del(item->viewer);
+       }
+
+       free(item);
+}
+
+static Evas_Object *_minictrl_create_view(struct appdata *ad, const char *name)
+{
+       retif(ad == NULL, NULL, "Invalid parameter!");
+       retif(ad->list == NULL, NULL, "Invalid parameter!");
+       retif(name == NULL, NULL, "Invalid parameter!");
+
+       Evas_Object *layout = NULL;
+
+       layout = elm_layout_add(ad->list);
+
+       elm_layout_file_set(layout, DEFAULT_EDJ,
+                       "quickpanel/minictrl/default");
+
+       evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(layout);
+
+       Evas_Object *viewer = minicontrol_viewer_add(layout, name);
+       if (!viewer) {
+               ERR("fail to add viewer - %s", name);
+               return NULL;
+       }
+#ifdef TBD
+       evas_object_ref(viewer);
+#endif
+       elm_object_focus_allow_set(viewer, EINA_TRUE);
+       elm_object_part_content_set(layout, "elm.icon", viewer);
+
+       return layout;
+}
+
+static int _minictrl_is_ongoing(const char *str)
+{
+       if (str == NULL) return 0;
+
+       if (strstr(str, MINICONTROL_TYPE_STR_ONGOING) != NULL) {
+               return 1;
+       } else {
+               return 0;
+       }
+}
+
+static qp_item_type_e _minictrl_priority_to_type(minicontrol_priority_e priority)
+{
+       qp_item_type_e type;
+
+       switch (priority) {
+       case MINICONTROL_PRIORITY_TOP:
+               type = QP_ITEM_TYPE_MINICTRL_TOP;
+               break;
+       case MINICONTROL_PRIORITY_MIDDLE:
+               type = QP_ITEM_TYPE_MINICTRL_MIDDLE;
+               break;
+       case MINICONTROL_PRIORITY_LOW:
+       default:
+               type = QP_ITEM_TYPE_MINICTRL_LOW;
+               break;
+       }
+
+       return type;
+}
+
+static void _minictrl_release_cb(void *data, Evas *e,
+               Evas_Object *obj, void *event_info) {
+       struct appdata *ad;
+       retif(!data, , "data is NULL");
+       ad = data;
+
+       _viewer_unfreeze(ad->scroller);
+}
+
+static void _minictrl_add(const char *name, unsigned int width,
+                               unsigned int height,
+                               minicontrol_priority_e priority,
+                               void *data)
+{
+       qp_item_data *qid = NULL;
+       struct _viewer_item *vit = NULL;
+       qp_item_type_e type;
+       struct appdata *ad;
+       Evas_Object *viewer = NULL;
+
+       retif(!name, , "name is NULL");
+       retif(!data, , "data is NULL");
+
+       ad = data;
+       retif(!ad->list, , "list is NULL");
+
+       if (g_prov_table) {
+               struct _viewer_item *found = NULL;
+               found = g_hash_table_lookup(g_prov_table, name);
+
+               if (found) {
+                       ERR("already have it : %s", name);
+                       return;
+               }
+       } else {
+               ERR("g_prov_table is NULL");
+               return;
+       }
+
+       /* elm_plug receives 'server_del' event,
+        * if it repeats connect and disconnect frequently.
+        *
+        */
+       viewer = _minictrl_create_view(ad, name);
+       _viewer_set_size(viewer, ad, width, height);
+       quickpanel_initial_resize(viewer,
+                       (height > QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_MINICONTR_SEPERATOR_HEIGHT)
+                       ? height : QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_MINICONTR_SEPERATOR_HEIGHT);
+
+       evas_object_event_callback_add(_get_minictrl_obj(viewer), EVAS_CALLBACK_MOUSE_UP,
+                       _minictrl_release_cb, ad);
+
+       vit = malloc(sizeof(struct _viewer_item));
+       if (!vit) {
+               ERR("fail to alloc vit");
+               evas_object_del(viewer);
+               return;
+       }
+
+       if (_minictrl_is_ongoing(name) == 1) {
+               type = QP_ITEM_TYPE_MINICTRL_ONGOING;
+       } else {
+               type = _minictrl_priority_to_type(priority);
+       }
+       qid = quickpanel_list_util_item_new(type, vit);
+       if (!qid) {
+               ERR("fail to alloc vit");
+               evas_object_del(viewer);
+               free(vit);
+               return;
+       }
+       vit->name = strdup(name);
+       vit->width = width;
+       vit->height = height;
+       vit->priority = priority;
+       vit->viewer = viewer;
+       vit->data = data;
+       quickpanel_list_util_item_set_tag(vit->viewer, qid);
+       quickpanel_list_util_sort_insert(ad->list, vit->viewer);
+
+       g_hash_table_insert(g_prov_table, g_strdup(name), vit);
+
+       INFO("success to add minicontrol %s", name);
+}
+
+static void _minictrl_remove(const char *name, void *data)
+{
+       if (g_prov_table) {
+               if (g_hash_table_remove(g_prov_table, name))
+               {
+                       INFO("success to remove %s", name);
+
+                       retif(data == NULL, , "data is NULL");
+               }
+               else
+                       WARN("unknown provider name : %s", name);
+       }
+}
+
+static void _minictrl_update(const char *name, unsigned int width,
+                               unsigned int height, void *data)
+{
+       struct _viewer_item *found = NULL;
+       struct appdata *ad = NULL;
+
+       if (!g_prov_table)
+               return;
+
+       retif(!data, , "data is NULL");
+       ad = data;
+
+       found = g_hash_table_lookup(g_prov_table, name);
+
+       if (!found) {
+               WARN("unknown provider name : %s", name);
+               return;
+       }
+
+       found->width = width;
+       found->height = height;
+
+       if (found->viewer) {
+               _viewer_set_size(found->viewer, ad, width, height);
+       }
+}
+
+static void _minictrl_request(const char *name, int action, void *data)
+{
+       struct appdata *ad = NULL;
+       retif(!name, , "name is NULL");
+       retif(!data, , "data is NULL");
+       ad = data;
+
+       if (action == MINICONTROL_REQ_HIDE_VIEWER) {
+               quickpanel_close_quickpanel(true);
+       }
+       if (action == MINICONTROL_REQ_FREEZE_SCROLL_VIEWER) {
+               if (ad->list != NULL) {
+                       ERR("freezed by %s", name);
+                       _viewer_freeze(ad->scroller);
+               }
+       }
+       if (action == MINICONTROL_REQ_UNFREEZE_SCROLL_VIEWER) {
+               if (ad->list != NULL) {
+                       ERR("unfreezed by %s", name);
+                       _viewer_unfreeze(ad->scroller);
+               }
+       }
+}
+
+static void _mctrl_monitor_cb(minicontrol_action_e action,
+                               const char *name, unsigned int width,
+                               unsigned int height,
+                               minicontrol_priority_e priority,
+                               void *data)
+{
+       retif(!data, , "data is NULL");
+       retif(!name, , "name is NULL");
+
+       switch (action) {
+       case MINICONTROL_ACTION_START:
+               _minictrl_add(name, width, height, priority, data);
+               break;
+       case MINICONTROL_ACTION_RESIZE:
+               _minictrl_update(name, width, height, data);
+               break;
+       case MINICONTROL_ACTION_STOP:
+               _minictrl_remove(name, data);
+               break;
+       case MINICONTROL_ACTION_REQUEST:
+               _minictrl_request(name, width, data);
+               break;
+       default:
+               break;
+       }
+}
+
+static int quickpanel_minictrl_init(void *data)
+{
+       minicontrol_error_e ret;
+
+       retif(!data, QP_FAIL, "Invalid parameter!");
+
+       g_prov_table = g_hash_table_new_full(g_str_hash, g_str_equal,
+                                       (GDestroyNotify)g_free,
+                                       (GDestroyNotify)_viewer_item_free);
+
+       ret = minicontrol_monitor_start(_mctrl_monitor_cb, data);
+       if (ret != MINICONTROL_ERROR_NONE) {
+               ERR("fail to minicontrol_monitor_start()- %d", ret);
+               return QP_FAIL;
+       }
+
+       return QP_OK;
+}
+
+static int quickpanel_minictrl_fini(void *data)
+{
+       minicontrol_error_e ret;
+       ret = minicontrol_monitor_stop();
+       if (ret != MINICONTROL_ERROR_NONE)
+               ERR("fail to minicontrol_monitor_stop()- %d", ret);
+
+       if (g_prov_table) {
+               g_hash_table_remove_all(g_prov_table);
+               g_prov_table = NULL;
+       }
+
+       return QP_OK;
+}
+
+static int quickpanel_minictrl_suspend(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       if (ad->list != NULL) {
+               _viewer_unfreeze(ad->scroller);
+       }
+
+       return QP_OK;
+}
+
+static int quickpanel_minictrl_resume(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       if (ad->list != NULL) {
+               _viewer_unfreeze(ad->scroller);
+       }
+
+       return QP_OK;
+}
diff --git a/daemon/modules.c b/daemon/modules.c
new file mode 100755 (executable)
index 0000000..d052993
--- /dev/null
@@ -0,0 +1,205 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 "common.h"
+#include "modules.h"
+
+/*******************************************************************
+  *
+  * MODULES
+  *
+  *****************************************************************/
+/* searchbar */
+/* extern QP_Module searchbar; */
+#ifdef QP_MINICTRL_ENABLE
+extern QP_Module minictrl;
+#endif /* QP_MINICTRL_ENABLE */
+
+#ifdef QP_BRIGHTNESS_ENABLE
+/* brightness */
+extern QP_Module brightness_ctrl;
+#endif /* QP_BRIGHTNESS_ENABLE */
+
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+extern QP_Module animated_image;
+#endif
+extern QP_Module vi_manager;
+/* notification */
+extern QP_Module noti;
+extern QP_Module ticker;
+/* idle test */
+extern QP_Module idletxt;
+
+static QP_Module *modules[] = {
+       &vi_manager,
+#ifdef QP_MINICTRL_ENABLE
+       &minictrl,
+#endif /* QP_MINICTRL_ENABLE */
+#ifdef QP_BRIGHTNESS_ENABLE
+       &brightness_ctrl,
+#endif /* QP_BRIGHTNESS_ENABLE */
+       &noti,
+       &ticker,
+       &idletxt,
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+       &animated_image,
+#endif
+};
+
+HAPI int init_modules(void *data)
+{
+       int i;
+
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+
+       for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
+               if (modules[i]->init)
+                       modules[i]->init(data);
+       }
+
+       return QP_OK;
+}
+
+HAPI int fini_modules(void *data)
+{
+       int i;
+
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+
+       for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
+               if (modules[i]->fini)
+                       modules[i]->fini(data);
+       }
+
+       return QP_OK;
+}
+
+HAPI int suspend_modules(void *data)
+{
+       int i;
+
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+
+       for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
+               if (modules[i]->suspend)
+                       modules[i]->suspend(data);
+       }
+
+       return QP_OK;
+}
+
+HAPI int resume_modules(void *data)
+{
+       int i;
+
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+
+       for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
+               if (modules[i]->resume)
+                       modules[i]->resume(data);
+       }
+
+       return QP_OK;
+}
+
+HAPI int hib_enter_modules(void *data)
+{
+       int i;
+
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+
+       for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
+               if (modules[i]->hib_enter)
+                       modules[i]->hib_enter(data);
+       }
+
+       return QP_OK;
+}
+
+HAPI int hib_leave_modules(void *data)
+{
+       int i;
+
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+
+       for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
+               if (modules[i]->hib_leave)
+                       modules[i]->hib_leave(data);
+       }
+
+       return QP_OK;
+}
+
+/******************************************************************
+  *
+  * LANGUAGE
+  *
+  ****************************************************************/
+
+HAPI void lang_change_modules(void *data)
+{
+       int i;
+       retif(data == NULL, , "Invalid parameter!");
+
+       for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
+               if (modules[i]->lang_changed)
+                       modules[i]->lang_changed(data);
+       }
+}
+
+HAPI void refresh_modules(void *data)
+{
+       int i;
+       retif(data == NULL, , "Invalid parameter!");
+
+       for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
+               if (modules[i]->refresh)
+                       modules[i]->refresh(data);
+       }
+}
+
+/******************************************************************
+  *
+  * Quickpanel open/close Events
+  *
+  ****************************************************************/
+HAPI int qp_opened_modules(void *data)
+{
+       int i;
+
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+
+       for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
+               if (modules[i]->qp_opened)
+                       modules[i]->qp_opened(data);
+       }
+
+       return QP_OK;
+}
+
+HAPI int qp_closed_modules(void *data)
+{
+       int i;
+
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+
+       for (i = 0; i < sizeof(modules) / sizeof(modules[0]); i++) {
+               if (modules[i]->qp_closed)
+                       modules[i]->qp_closed(data);
+       }
+
+       return QP_OK;
+}
diff --git a/daemon/modules.h b/daemon/modules.h
new file mode 100755 (executable)
index 0000000..d35cec2
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 __QP_MODULES_H__
+#define __QP_MODULES_H__
+
+#include <stdlib.h>
+#include "quickpanel-ui.h"
+
+extern int init_modules(void *data);
+extern int fini_modules(void *data);
+extern int suspend_modules(void *data);
+extern int resume_modules(void *data);
+extern int hib_enter_modules(void *data);
+extern int hib_leave_modules(void *data);
+extern void lang_change_modules(void *data);
+extern void refresh_modules(void *data);
+extern int qp_opened_modules(void *data);
+extern int qp_closed_modules(void *data);
+
+#endif /* __QP_MODULES_H__ */
diff --git a/daemon/notifications/animated_image.c b/daemon/notifications/animated_image.c
new file mode 100755 (executable)
index 0000000..8df9d93
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "animated_image.h"
+
+static int quickpanel_animated_image_init(void *data);
+static int quickpanel_animated_image_fini(void *data);
+static int quickpanel_animated_image_suspend(void *data);
+static int quickpanel_animated_image_resume(void *data);
+
+QP_Module animated_image = {
+       .name = "animated_image",
+       .init = quickpanel_animated_image_init,
+       .fini = quickpanel_animated_image_fini,
+       .suspend = quickpanel_animated_image_suspend,
+       .resume = quickpanel_animated_image_resume,
+       .lang_changed = NULL,
+       .refresh = NULL
+};
+
+static Eina_List *g_animated_image_list = NULL;
+static char g_animated_image_group_name[32] = {0,};
+
+static void _animated_image_list_add(Evas_Object *image)
+{
+       retif(image == NULL, ,"invalid parameter");
+
+       g_animated_image_list = eina_list_append(g_animated_image_list, image);
+}
+
+static void _animated_image_play(Eina_Bool on)
+{
+       const Eina_List *l = NULL;
+       const Eina_List *ln = NULL;
+       Evas_Object *entry_obj = NULL;
+
+       retif(g_animated_image_list == NULL, ,"list is empty");
+
+       EINA_LIST_FOREACH_SAFE(g_animated_image_list, l, ln, entry_obj) {
+               if (entry_obj == NULL) continue;
+
+               if (on == EINA_TRUE) {
+                       if (elm_image_animated_play_get(entry_obj) == EINA_FALSE) {
+                               elm_image_animated_play_set(entry_obj, EINA_TRUE);
+                       }
+               } else {
+                       if (elm_image_animated_play_get(entry_obj) == EINA_TRUE) {
+                               elm_image_animated_play_set(entry_obj, EINA_FALSE);
+                       }
+               }
+       }
+}
+
+static void _animated_image_deleted_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       retif(obj == NULL, , "obj is NULL");
+       retif(g_animated_image_list == NULL, , "list is empty");
+
+       g_animated_image_list = eina_list_remove(g_animated_image_list, obj);
+}
+
+HAPI void quickpanel_animated_image_add(Evas_Object *image) {
+       retif(image == NULL, , "image is NULL");
+
+       if (elm_image_animated_available_get(image) == EINA_TRUE) {
+               elm_image_animated_set(image, EINA_TRUE);
+               if (quickpanel_is_suspended() == 0) {
+                       elm_image_animated_play_set(image, EINA_TRUE);
+               } else {
+                       elm_image_animated_play_set(image, EINA_FALSE);
+               }
+               _animated_image_list_add(image);
+               evas_object_event_callback_add(image, EVAS_CALLBACK_DEL, _animated_image_deleted_cb, NULL);
+       }
+}
+
+HAPI char *quickpanel_animated_image_get_groupname(const char *path) {
+       static int s_image_index = 0;
+
+       if (path != NULL) {
+               if (strstr(path, "gif") != NULL || strstr(path, "GIF") != NULL) {
+                        snprintf(g_animated_image_group_name, sizeof(g_animated_image_group_name),
+                                        "%d:EVAS", s_image_index++);
+
+                        return g_animated_image_group_name;
+               }
+       }
+
+       return NULL;
+}
+
+/*****************************************************************************
+ *
+ * Util functions
+ *
+ *****************************************************************************/
+static int quickpanel_animated_image_init(void *data)
+{
+       return QP_OK;
+}
+
+static int quickpanel_animated_image_fini(void *data)
+{
+       return QP_OK;
+}
+
+static int quickpanel_animated_image_suspend(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       INFO("animated image going to be suspened");
+       _animated_image_play(EINA_FALSE);
+
+       return QP_OK;
+}
+
+static int quickpanel_animated_image_resume(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       INFO("animated image going to be resumed");
+       _animated_image_play(EINA_TRUE);
+
+       return QP_OK;
+}
diff --git a/daemon/notifications/animated_image.h b/daemon/notifications/animated_image.h
new file mode 100755 (executable)
index 0000000..25f2d6a
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __QUICKPANEL_ANIMATED_IMAGE_H__
+#define __QUICKPANEL_ANIMATED_IMAGE_H__
+
+#include "quickpanel-ui.h"
+#include "common.h"
+
+HAPI void quickpanel_animated_image_add(Evas_Object *image);
+HAPI char *quickpanel_animated_image_get_groupname(const char *path);
+
+#endif
diff --git a/daemon/notifications/noti.c b/daemon/notifications/noti.c
new file mode 100755 (executable)
index 0000000..2e26968
--- /dev/null
@@ -0,0 +1,1212 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 <appsvc.h>
+
+#include <time.h>
+#include <vconf.h>
+#include <appcore-common.h>
+#include <app_service.h>
+#include <Ecore_X.h>
+#include <notification.h>
+
+#include "quickpanel-ui.h"
+#include "quickpanel_def.h"
+#include "common.h"
+#include "noti_node.h"
+#include "noti_gridbox.h"
+#include "noti_box.h"
+#include "noti_listbox.h"
+#include "noti_list_item.h"
+#include "noti_section.h"
+#include "noti.h"
+#include "list_util.h"
+#ifdef QP_SERVICE_NOTI_LED_ENABLE
+#include "noti_led.h"
+#endif
+#include "vi_manager.h"
+
+#ifndef VCONFKEY_QUICKPANEL_STARTED
+#define VCONFKEY_QUICKPANEL_STARTED "memory/private/"PACKAGE_NAME"/started"
+#endif /* VCONFKEY_QUICKPANEL_STARTED */
+
+#define QP_NOTI_ONGOING_DBUS_PATH      "/dbus/signal"
+#define QP_NOTI_ONGOING_DBUS_INTERFACE "notification.ongoing"
+
+static noti_node *g_noti_node;
+static Evas_Object *g_noti_section;
+static Evas_Object *g_noti_listbox;
+static Evas_Object *g_noti_gridbox;
+
+static int quickpanel_noti_init(void *data);
+static int quickpanel_noti_fini(void *data);
+static int quickpanel_noti_suspend(void *data);
+static int quickpanel_noti_resume(void *data);
+static void quickpanel_noti_lang_changed(void *data);
+static void quickpanel_noti_refresh(void *data);
+static void _quickpanel_noti_cleanup(void *data);
+static int _quickpanel_noti_check_first_start(void);
+static void _quickpanel_noti_section_add(void);
+
+QP_Module noti = {
+       .name = "noti",
+       .init = quickpanel_noti_init,
+       .fini = quickpanel_noti_fini,
+       .suspend = quickpanel_noti_suspend,
+       .resume = quickpanel_noti_resume,
+       .lang_changed = quickpanel_noti_lang_changed,
+       .hib_enter = NULL,
+       .hib_leave = NULL,
+       .refresh = quickpanel_noti_refresh,
+       .get_height = NULL,
+};
+
+static notification_h _quickpanel_noti_update_item_progress(const char *pkgname,
+                                                           int priv_id,
+                                                           double progress)
+{
+       char *noti_pkgname = NULL;
+       int noti_priv_id = 0;
+
+       noti_node_item *node = noti_node_get(g_noti_node, priv_id);
+
+       if (node != NULL && node->noti != NULL) {
+               notification_get_pkgname(node->noti, &noti_pkgname);
+               notification_get_id(node->noti, NULL, &noti_priv_id);
+               if (!strcmp(noti_pkgname, pkgname)
+                   && priv_id == noti_priv_id) {
+
+                       if (notification_set_progress(node->noti, progress) != NOTIFICATION_ERROR_NONE) {
+                               ERR("fail to set progress");
+                       }
+                       return node->noti;
+               }
+       }
+
+       return NULL;
+}
+
+static notification_h _quickpanel_noti_update_item_size(const char *pkgname,
+                                                       int priv_id,
+                                                       double size)
+{
+       char *noti_pkgname = NULL;
+       int noti_priv_id = 0;
+
+       noti_node_item *node = noti_node_get(g_noti_node, priv_id);
+
+       if (node != NULL && node->noti != NULL) {
+               notification_get_pkgname(node->noti, &noti_pkgname);
+               notification_get_id(node->noti, NULL, &noti_priv_id);
+               if (!strcmp(noti_pkgname, pkgname)
+                   && priv_id == noti_priv_id) {
+                       notification_set_size(node->noti, size);
+                       return node->noti;
+               }
+       }
+
+       return NULL;
+}
+
+static notification_h _quickpanel_noti_update_item_content(const char *pkgname,
+                                                       int priv_id,
+                                                       char *content)
+{
+       char *noti_pkgname = NULL;
+       int noti_priv_id = 0;
+
+       noti_node_item *node = noti_node_get(g_noti_node, priv_id);
+
+       if (node != NULL && node->noti != NULL) {
+               notification_get_pkgname(node->noti, &noti_pkgname);
+               notification_get_id(node->noti, NULL, &noti_priv_id);
+               if (!strcmp(noti_pkgname, pkgname)
+                   && priv_id == noti_priv_id) {
+                       notification_set_text(node->noti,
+                               NOTIFICATION_TEXT_TYPE_CONTENT,
+                               content, NULL,
+                               NOTIFICATION_VARIABLE_TYPE_NONE);
+                       return node->noti;
+               }
+       }
+
+       return NULL;
+}
+
+static void _quickpanel_noti_update_progressbar(void *data,
+                                               notification_h update_noti)
+{
+       struct appdata *ad = NULL;
+       Elm_Object_Item *found = NULL;
+       noti_node_item *node = NULL;
+
+       retif(!data, , "data is NULL");
+       ad = data;
+
+       retif(!ad->list, , "ad->list is NULL");
+
+       int priv_id = 0;
+
+       if (notification_get_id(update_noti, NULL, &priv_id) == NOTIFICATION_ERROR_NONE) {
+               node = noti_node_get(g_noti_node, priv_id);
+
+               if (node != NULL) {
+                       found = node->view;
+               }
+       }
+
+       retif(node == NULL, , "fail to find node of priv_id:%d", priv_id);
+       retif(node->view == NULL, , "fail to find %p", node->view);
+
+       listbox_update_item(g_noti_listbox, node->view);
+}
+
+static void _quickpanel_noti_item_progress_update_cb(void *data,
+                                               DBusMessage *msg)
+{
+       DBusError err;
+       char *pkgname = 0;
+       int priv_id = 0;
+       double progress = 0;
+       notification_h noti = NULL;
+
+       retif(data == NULL || msg == NULL, , "Invalid parameter!");
+
+       dbus_error_init(&err);
+       dbus_message_get_args(msg, &err,
+                       DBUS_TYPE_STRING, &pkgname,
+                       DBUS_TYPE_INT32, &priv_id,
+                       DBUS_TYPE_DOUBLE, &progress,
+                       DBUS_TYPE_INVALID);
+
+       if (dbus_error_is_set(&err)) {
+               ERR("dbus err: %s", err.message);
+               dbus_error_free(&err);
+               return;
+       }
+
+       if (pkgname == NULL) {
+               ERR("pkgname is null");
+               return;
+       }
+
+       /* check item on the list */
+       noti = _quickpanel_noti_update_item_progress(pkgname,
+                                               priv_id, progress);
+       retif(noti == NULL, , "Can not found noti data.");
+
+       SDBG("pkgname[%s], priv_id[%d], progress[%lf]",
+                               pkgname, priv_id, progress);
+       _quickpanel_noti_update_progressbar(data, noti);
+}
+
+static void _quickpanel_noti_item_size_update_cb(void *data, DBusMessage * msg)
+{
+       DBusError err;
+       char *pkgname = 0;
+       int priv_id = 0;
+       double size = 0;
+       notification_h noti = NULL;
+
+       retif(data == NULL || msg == NULL, , "Invalid parameter!");
+
+       dbus_error_init(&err);
+       dbus_message_get_args(msg, &err,
+                       DBUS_TYPE_STRING, &pkgname,
+                       DBUS_TYPE_INT32, &priv_id,
+                       DBUS_TYPE_DOUBLE, &size, DBUS_TYPE_INVALID);
+       if (dbus_error_is_set(&err)) {
+               ERR("dbus err: %s", err.message);
+               dbus_error_free(&err);
+               return;
+       }
+
+       if (pkgname == NULL) {
+               ERR("pkgname is null");
+               return;
+       }
+
+       /* check item on the list */
+       noti = _quickpanel_noti_update_item_size(pkgname, priv_id, size);
+       retif(noti == NULL, , "Can not found noti data.");
+
+       SDBG("pkgname[%s], priv_id[%d], progress[%lf]",
+                               pkgname, priv_id, size);
+
+       _quickpanel_noti_update_progressbar(data, noti);
+}
+
+static void _quickpanel_noti_item_content_update_cb(void *data,
+                                               DBusMessage *msg)
+{
+       DBusError err;
+       char *pkgname = NULL;
+       int priv_id = 0;
+       char *content = NULL;
+       notification_h noti = NULL;
+
+       retif(data == NULL || msg == NULL, , "Invalid parameter!");
+
+       dbus_error_init(&err);
+       dbus_message_get_args(msg, &err,
+                       DBUS_TYPE_STRING, &pkgname,
+                       DBUS_TYPE_INT32, &priv_id,
+                       DBUS_TYPE_STRING, &content, DBUS_TYPE_INVALID);
+
+       if (pkgname == NULL) {
+               ERR("pkgname  is null");
+               return;
+       }
+       if (content == NULL) {
+               ERR("content is null");
+               return;
+       }
+
+       if (dbus_error_is_set(&err)) {
+               ERR("dbus err: %s", err.message);
+               dbus_error_free(&err);
+               return;
+       }
+
+       SDBG("pkgname[%s], priv_id[%d], content[%s]",
+                               pkgname, priv_id, content);
+
+       /* check item on the list */
+       noti = _quickpanel_noti_update_item_content(pkgname, priv_id, content);
+       retif(noti == NULL, , "Can not found noti data.");
+
+       _quickpanel_noti_update_progressbar(data, noti);
+}
+
+static void _quickpanel_do_noti_delete(notification_h noti) {
+       char *pkgname = NULL;
+       char *caller_pkgname = NULL;
+       int flags = 0, priv_id = 0, flag_delete = 0;
+       notification_type_e type = NOTIFICATION_TYPE_NONE;
+
+       quickpanel_play_feedback();
+
+       retif(noti == NULL, , "Invalid parameter!");
+
+       notification_get_pkgname(noti, &caller_pkgname);
+       notification_get_application(noti, &pkgname);
+       if (pkgname == NULL)
+               pkgname = caller_pkgname;
+
+       notification_get_id(noti, NULL, &priv_id);
+       notification_get_property(noti, &flags);
+       notification_get_type(noti, &type);
+
+       if (flags & NOTIFICATION_PROP_PERMANENT_DISPLAY)
+               flag_delete = 0;
+       else
+               flag_delete = 1;
+
+       if (flag_delete == 1 && type == NOTIFICATION_TYPE_NOTI) {
+               notification_delete_by_priv_id(caller_pkgname, NOTIFICATION_TYPE_NOTI,
+                               priv_id);
+       }
+}
+
+static void _quickpanel_do_noti_press(notification_h noti, int pressed_area) {
+       int ret = -1;
+       char *pkgname = NULL;
+       char *caller_pkgname = NULL;
+       bundle *args = NULL;
+       bundle *group_args = NULL;
+       bundle *responding_service_handle = NULL;
+       bundle *single_service_handle = NULL;
+       bundle *multi_service_handle = NULL;
+       int flags = 0, group_id = 0, priv_id = 0, count = 0, flag_launch = 0,
+                       flag_delete = 0;
+       notification_type_e type = NOTIFICATION_TYPE_NONE;
+
+       quickpanel_play_feedback();
+
+       retif(noti == NULL, , "Invalid parameter!");
+
+       notification_get_pkgname(noti, &caller_pkgname);
+       notification_get_application(noti, &pkgname);
+       if (pkgname == NULL)
+               pkgname = caller_pkgname;
+
+       notification_get_id(noti, &group_id, &priv_id);
+       notification_get_property(noti, &flags);
+       notification_get_type(noti, &type);
+
+       if (flags & NOTIFICATION_PROP_DISABLE_APP_LAUNCH)
+               flag_launch = 0;
+       else
+               flag_launch = 1;
+
+       if (flags & NOTIFICATION_PROP_DISABLE_AUTO_DELETE)
+               flag_delete = 0;
+       else
+               flag_delete = 1;
+
+       notification_get_execute_option(noti,
+                       NOTIFICATION_EXECUTE_TYPE_RESPONDING,
+                               NULL, &responding_service_handle);
+       notification_get_execute_option(noti,
+                               NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH,
+                               NULL, &single_service_handle);
+       notification_get_execute_option(noti,
+                               NOTIFICATION_EXECUTE_TYPE_MULTI_LAUNCH,
+                               NULL, &multi_service_handle);
+
+       if (pressed_area == NOTI_PRESS_BUTTON_1 && responding_service_handle != NULL) {
+               DBG("");
+               quickpanel_close_quickpanel(true);
+               ret = quickpanel_launch_app(NULL, responding_service_handle);
+               quickpanel_launch_app_inform_result(pkgname, ret);
+       } else if (flag_launch == 1) {
+               /* Hide quickpanel */
+               quickpanel_close_quickpanel(true);
+
+               char *text_count = NULL;
+               notification_get_text(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT, &text_count);
+
+               if (text_count != NULL) {
+                       count = atoi(text_count);
+               } else {
+                       count = 1;
+               }
+
+               if (single_service_handle != NULL && multi_service_handle == NULL) {
+                       DBG("");
+                       ret = quickpanel_launch_app(NULL, single_service_handle);
+                       quickpanel_launch_app_inform_result(pkgname, ret);
+               }
+               if (single_service_handle == NULL && multi_service_handle != NULL) {
+                       DBG("");
+                       ret = quickpanel_launch_app(NULL, multi_service_handle);
+                       quickpanel_launch_app_inform_result(pkgname, ret);
+               }
+               if (single_service_handle != NULL && multi_service_handle != NULL) {
+                       DBG("");
+                       if (count <= 1) {
+                               ret = quickpanel_launch_app(NULL, single_service_handle);
+                               quickpanel_launch_app_inform_result(pkgname, ret);
+                       } else {
+                               ret = quickpanel_launch_app(NULL, multi_service_handle);
+                               quickpanel_launch_app_inform_result(pkgname, ret);
+                       }
+               }
+               if (single_service_handle == NULL && multi_service_handle == NULL) {
+                       DBG("");
+                       notification_get_args(noti, &args, &group_args);
+
+                       if (count > 1 && group_args != NULL) {
+                               ret = quickpanel_launch_app(pkgname, group_args);
+                               quickpanel_launch_app_inform_result(pkgname, ret);
+                       } else {
+                               ret = quickpanel_launch_app(pkgname, args);
+                               quickpanel_launch_app_inform_result(pkgname, ret);
+                       }
+               }
+       }
+
+       if (flag_delete == 1 && type == NOTIFICATION_TYPE_NOTI) {
+               notification_delete_by_priv_id(caller_pkgname,
+                               NOTIFICATION_TYPE_NOTI,
+                               priv_id);
+       }
+}
+
+static void quickpanel_notibox_delete_cb(void *data, Evas_Object * obj) {
+       DBG("");
+       noti_node_item *item = data;
+       retif(item == NULL, , "Invalid parameter!");
+
+       notification_h noti = item->noti;
+       retif(noti == NULL, , "Invalid parameter!");
+
+       _quickpanel_do_noti_delete(noti);
+
+}
+
+static void quickpanel_notibox_button_1_cb(void *data, Evas_Object * obj) {
+       DBG("");
+       noti_node_item *item = data;
+       retif(item == NULL, , "Invalid parameter!");
+
+       notification_h noti = item->noti;
+       retif(noti == NULL, , "Invalid parameter!");
+
+       _quickpanel_do_noti_press(noti, NOTI_PRESS_BUTTON_1);
+}
+
+static void quickpanel_notibox_select_cb(void *data, Evas_Object * obj) {
+       DBG("");
+       noti_node_item *item = data;
+       retif(item == NULL, , "Invalid parameter!");
+
+       notification_h noti = item->noti;
+       retif(noti == NULL, , "Invalid parameter!");
+
+       _quickpanel_do_noti_press(noti, NOTI_PRESS_BG);
+}
+
+static void quickpanel_noti_listitem_select_cb(void *data, Evas_Object * obj) {
+       DBG("");
+       noti_node_item *item = data;
+       retif(item == NULL, , "Invalid parameter!");
+
+       notification_h noti = item->noti;
+       retif(noti == NULL, , "Invalid parameter!");
+
+       _quickpanel_do_noti_press(noti, NOTI_PRESS_BG);
+}
+
+static inline void __ongoing_comp_n_copy(notification_h old, notification_h new)
+{
+       int priv_id = 0;
+       int new_priv_id = 0;
+       char *pkgname = NULL;
+       char *new_pkgname = NULL;
+
+       if (!old)
+               return;
+
+       if (!new)
+               return;
+
+       notification_get_id(old, NULL, &priv_id);
+       notification_get_id(new, NULL, &new_priv_id);
+
+       notification_get_pkgname(old, &pkgname);
+       notification_get_pkgname(new, &new_pkgname);
+
+       if (!pkgname || !new_pkgname)
+               return;
+
+       if (!strcmp(pkgname, new_pkgname) && priv_id == new_priv_id) {
+               double percentage = 0.0;
+               double size = 0.0;
+               time_t insert_time = 0;
+               time_t new_insert_time = 0;
+
+               notification_get_progress(old, &percentage);
+               notification_get_size(old, &size);
+               if (notification_set_progress(new, percentage) != NOTIFICATION_ERROR_NONE) {
+                       ERR("fail to set progress");
+               }
+               if (notification_set_size(new, size) != NOTIFICATION_ERROR_NONE) {
+                       ERR("fail to set size");
+               }
+               notification_get_insert_time(old, &insert_time);
+               notification_get_insert_time(new, &new_insert_time);
+
+               if (insert_time == new_insert_time) {
+                       char *content = NULL;
+                       notification_get_text(old,
+                               NOTIFICATION_TEXT_TYPE_CONTENT, &content);
+                       notification_set_text(new,
+                               NOTIFICATION_TEXT_TYPE_CONTENT, content,
+                               NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+               }
+       }
+}
+
+static void _quickpanel_noti_clear_list_all(void)
+{
+       if (g_noti_node != NULL) {
+               noti_node_remove_all(g_noti_node);
+       }
+
+       if (g_noti_listbox != NULL) {
+               listbox_remove_all_item(g_noti_listbox, EINA_TRUE);
+       }
+       if (g_noti_gridbox != NULL) {
+               gridbox_remove_all_item(g_noti_gridbox, EINA_TRUE);
+       }
+}
+
+static void _noti_section_deleted_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       g_noti_section = NULL;
+       INFO("VIM noti_section deleted");
+
+       if (noti_node_get_item_count(g_noti_node, NOTIFICATION_TYPE_NOTI) > 0) {
+               _quickpanel_noti_section_add();
+       }
+}
+
+static void _quickpanel_noti_section_add(void)
+{
+       int noti_count = 0;
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->list == NULL, , "Invalid parameter!");
+
+       if (g_noti_section == NULL) {
+               g_noti_section = noti_section_create(ad->list);
+               if (g_noti_section != NULL) {
+                       noti_section_set_deleted_cb(g_noti_section, _noti_section_deleted_cb, NULL);
+                       noti_count = noti_node_get_item_count(g_noti_node, NOTIFICATION_TYPE_NOTI);
+                       noti_section_update(g_noti_section, noti_count);
+               }
+       }
+}
+
+static void _quickpanel_noti_section_remove(void)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->list == NULL, , "Invalid parameter!");
+
+       if (g_noti_section != NULL) {
+               noti_section_remove(g_noti_section);
+       }
+}
+
+static void _quickpanel_noti_box_deleted_cb(void *data, Evas_Object *obj) {
+       if (gridbox_get_item_count(g_noti_gridbox) <= 0
+                       && noti_node_get_item_count(g_noti_node, NOTIFICATION_TYPE_NOTI) <= 0) {
+               _quickpanel_noti_section_remove();
+       }
+}
+
+static void _quickpanel_list_box_deleted_cb(void *data, Evas_Object *obj) {
+}
+
+static void _quickpanel_noti_ongoing_add(Evas_Object *list, void *data, int is_prepend)
+{
+       Evas_Object *noti_list_item = NULL;
+       notification_ly_type_e layout = NOTIFICATION_LY_ONGOING_EVENT;
+
+       retif(list == NULL, , "Invalid parameter!");
+       notification_h noti = data;
+
+       if (noti != NULL) {
+               notification_get_layout(noti, &layout);
+               noti_list_item = noti_list_item_create(g_noti_listbox, layout);
+
+               if (noti_list_item != NULL) {
+                       noti_node_item *item = noti_node_add(g_noti_node, (void*)data, (void*)noti_list_item);
+                       if (item != NULL) {
+                               noti_list_item_node_set(noti_list_item, item);
+                               noti_list_item_set_item_selected_cb(noti_list_item, quickpanel_noti_listitem_select_cb);
+                               listbox_add_item(g_noti_listbox, noti_list_item, is_prepend);
+                       }
+               } else
+                       ERR("fail to insert item to list : %p", data);
+       }
+
+       DBG("noti[%p] data[%p] added listbox[%p]",
+                       data, noti_list_item, g_noti_listbox);
+}
+
+static void _quickpanel_noti_noti_add(Evas_Object *list, void *data, int is_prepend)
+{
+       notification_h noti = data;
+       notification_ly_type_e layout = NOTIFICATION_LY_NOTI_EVENT_SINGLE;
+       Evas_Object *noti_box = NULL;
+
+       retif(list == NULL, , "Invalid parameter!");
+
+       if (noti != NULL) {
+               notification_get_layout(noti, &layout);
+               Evas_Object *noti_box = noti_box_create(g_noti_gridbox, layout);
+
+               if (noti_box != NULL) {
+                       noti_node_item *item = noti_node_add(g_noti_node, (void*)data, (void*)noti_box);
+                       if (item != NULL) {
+                               noti_box_node_set(noti_box, item);
+                               noti_box_set_item_selected_cb(noti_box, quickpanel_notibox_select_cb);
+                               noti_box_set_item_button_1_cb(noti_box, quickpanel_notibox_button_1_cb);
+                               noti_box_set_item_deleted_cb(noti_box, quickpanel_notibox_delete_cb);
+
+                               if (g_noti_section == NULL) {
+                                       _quickpanel_noti_section_add();
+                               }
+                               gridbox_add_item(g_noti_gridbox, noti_box, is_prepend);
+                       }
+               } else
+                       ERR("fail to insert item to list : %p", data);
+       }
+
+       DBG("noti[%p] view[%p] added gridbox[%p]",
+                       data, noti_box, g_noti_gridbox);
+}
+
+static void _quickpanel_noti_update_notilist(struct appdata *ad)
+{
+       Evas_Object *list = NULL;
+       notification_h noti = NULL;
+       notification_h noti_save = NULL;
+       notification_list_h get_list = NULL;
+       int applist = NOTIFICATION_DISPLAY_APP_ALL;
+
+       DBG("");
+
+       retif(ad == NULL, , "Invalid parameter!");
+
+       list = ad->list;
+       retif(list == NULL, , "Failed to get noti genlist.");
+
+       _quickpanel_noti_clear_list_all();
+
+       notification_get_list(NOTIFICATION_TYPE_ONGOING, -1, &get_list);
+       while (get_list != NULL) {
+               noti = notification_list_get_data(get_list);
+               notification_get_display_applist(noti, &applist);
+
+               if (applist &
+                   NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY) {
+                       notification_clone(noti, &noti_save);
+                       _quickpanel_noti_ongoing_add(list, noti_save, LISTBOX_APPEND);
+               }
+               get_list = notification_list_get_next(get_list);
+       }
+       notification_free_list(get_list);
+
+       notification_get_list(NOTIFICATION_TYPE_NOTI , -1, &get_list);
+       while (get_list != NULL) {
+               noti = notification_list_get_data(get_list);
+               notification_get_display_applist(noti, &applist);
+
+               if (applist &
+                   NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY) {
+                       notification_clone(noti, &noti_save);
+                       _quickpanel_noti_noti_add(list, noti_save, GRIDBOX_APPEND);
+               }
+               get_list = notification_list_get_next(get_list);
+       }
+       notification_free_list(get_list);
+
+       if (g_noti_gridbox != NULL) {
+               elm_box_recalculate(g_noti_gridbox);
+       }
+}
+
+static void _quickpanel_noti_delete_volatil_data(void)
+{
+       notification_list_h noti_list = NULL;
+       notification_list_h noti_list_head = NULL;
+       notification_h noti = NULL;
+       int property = 0;
+
+       notification_get_grouping_list(NOTIFICATION_TYPE_NONE, -1, &noti_list);
+
+       noti_list_head = noti_list;
+
+       while (noti_list != NULL) {
+               noti = notification_list_get_data(noti_list);
+               notification_get_property(noti, &property);
+
+               if (property & NOTIFICATION_PROP_VOLATILE_DISPLAY) {
+                       notification_set_property(noti,
+                               property |
+                               NOTIFICATION_PROP_DISABLE_UPDATE_ON_DELETE);
+                       notification_delete(noti);
+               }
+
+               noti_list = notification_list_get_next(noti_list);
+       }
+
+       notification_free_list(noti_list_head);
+
+       notification_update(NULL);
+}
+
+inline static void _print_debuginfo_from_noti(notification_h noti) {
+       retif(noti == NULL, , "Invalid parameter!");
+
+       char *noti_pkgname = NULL;
+       char *noti_launch_pkgname = NULL;
+       notification_type_e noti_type = NOTIFICATION_TYPE_NONE;
+
+       notification_get_pkgname(noti, &noti_pkgname);
+       notification_get_application(noti, &noti_launch_pkgname);
+       notification_get_type(noti, &noti_type);
+
+       if (noti_pkgname != NULL) {
+               ERR("pkg:%s", noti_pkgname);
+       }
+       if (noti_launch_pkgname != NULL) {
+               ERR("pkgl:%s", noti_launch_pkgname);
+       }
+
+       ERR("type:%d", noti_type);
+}
+
+static void _quickpanel_noti_detailed_changed_cb(void *data, notification_type_e type, notification_op *op_list, int num_op)
+{
+       int i = 0;
+       int op_type = 0;
+       int priv_id = 0;
+       struct appdata *ad = NULL;
+       notification_h noti_new = NULL;
+       notification_h noti_from_master = NULL;
+       notification_type_e noti_type = NOTIFICATION_TYPE_NONE;
+       int noti_applist = NOTIFICATION_DISPLAY_APP_ALL;
+       notification_ly_type_e noti_layout = NOTIFICATION_LY_NONE;
+
+       retif(data == NULL, , "Invalid parameter!");
+       ad = data;
+
+       ERR("num_op:%d", num_op);
+
+       for (i = 0; i < num_op; i++) {
+               notification_op_get_data(op_list + i, NOTIFICATION_OP_DATA_TYPE, &op_type);
+               notification_op_get_data(op_list + i, NOTIFICATION_OP_DATA_PRIV_ID, &priv_id);
+               notification_op_get_data(op_list + i, NOTIFICATION_OP_DATA_NOTI, &noti_from_master);
+
+               ERR("noti operation:%d privid:%d", op_type, priv_id);
+
+               if (op_type == NOTIFICATION_OP_INSERT) {
+
+                       if (noti_from_master == NULL) {
+                               ERR("failed to get a notification from master");
+                               continue;
+                       }
+                       if (notification_clone(noti_from_master, &noti_new) != NOTIFICATION_ERROR_NONE) {
+                               ERR("failed to create a cloned notification");
+                               continue;
+                       }
+
+                       _print_debuginfo_from_noti(noti_new);
+#ifdef QP_SERVICE_NOTI_LED_ENABLE
+                       quickpanel_service_noti_led_proc(noti_new, op_type);
+#endif
+
+                       notification_get_type(noti_new, &noti_type);
+                       notification_get_display_applist(noti_new, &noti_applist);
+                       notification_get_layout(noti_new, &noti_layout);
+
+                       if (noti_applist & NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY) {
+                               noti_node_item *node = noti_node_get(g_noti_node, priv_id);
+                               if (node != NULL) {
+                                       if (noti_type == NOTIFICATION_TYPE_NOTI) {
+                                               DBG("cb after inserted:%d", priv_id);
+                                       }
+                                       notification_free(noti_new);
+                               } else {
+                                       if (noti_type == NOTIFICATION_TYPE_NOTI) {
+                                               _quickpanel_noti_noti_add(ad->list, noti_new, GRIDBOX_PREPEND);
+                                       } else if (noti_type == NOTIFICATION_TYPE_ONGOING) {
+                                               _quickpanel_noti_ongoing_add(ad->list, noti_new, LISTBOX_PREPEND);
+                                       }
+                               }
+                       } else {
+                               notification_free(noti_new);
+                       }
+               } else if (op_type == NOTIFICATION_OP_DELETE) {
+                       noti_node_item *node = noti_node_get(g_noti_node, priv_id);
+
+                       if (node != NULL && node->noti != NULL) {
+                               notification_h noti = node->noti;
+                               notification_get_type(noti, &noti_type);
+
+#ifdef QP_SERVICE_NOTI_LED_ENABLE
+                               quickpanel_service_noti_led_proc(noti, op_type);
+#endif
+                               _print_debuginfo_from_noti(noti);
+
+                               if (noti_type == NOTIFICATION_TYPE_NOTI) {
+                                       gridbox_remove_item(g_noti_gridbox, node->view, 1);
+                               } else if (noti_type == NOTIFICATION_TYPE_ONGOING) {
+                                       listbox_remove_item(g_noti_listbox, node->view, 1);
+                               }
+                               noti_node_remove(g_noti_node, priv_id);
+                       }
+               } else if (op_type == NOTIFICATION_OP_UPDATE) {
+                       noti_node_item *node = noti_node_get(g_noti_node, priv_id);
+                       notification_h old_noti = NULL;
+
+                       if (noti_from_master == NULL) {
+                               ERR("failed to get a notification from master");
+                               continue;
+                       }
+                       if (notification_clone(noti_from_master, &noti_new) != NOTIFICATION_ERROR_NONE) {
+                               ERR("failed to create a cloned notification");
+                               continue;
+                       }
+
+#ifdef QP_SERVICE_NOTI_LED_ENABLE
+                       quickpanel_service_noti_led_proc(noti_new, op_type);
+#endif
+                       _print_debuginfo_from_noti(noti_new);
+
+                       if (node != NULL && node->view != NULL && node->noti != NULL) {
+                               notification_get_type(noti_new, &noti_type);
+
+                               if (noti_type == NOTIFICATION_TYPE_NOTI) {
+                                       gridbox_remove_item(g_noti_gridbox, node->view, 1);
+                                       noti_node_remove(g_noti_node, priv_id);
+                                       _quickpanel_noti_noti_add(ad->list, noti_new, GRIDBOX_PREPEND);
+                               } else if (noti_type == NOTIFICATION_TYPE_ONGOING) {
+                                       old_noti = node->noti;
+                                       node->noti = noti_new;
+
+                                       listbox_update_item(g_noti_listbox, node->view);
+                               }
+
+                               if (old_noti != NULL) {
+                                       notification_free(old_noti);
+                               }
+                       } else {
+                               notification_get_display_applist(noti_new, &noti_applist);
+
+                               if (noti_applist & NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY) {
+                                       if (noti_type == NOTIFICATION_TYPE_NOTI) {
+                                               _quickpanel_noti_noti_add(ad->list, noti_new, GRIDBOX_PREPEND);
+                                       } else if (noti_type == NOTIFICATION_TYPE_ONGOING) {
+                                               _quickpanel_noti_ongoing_add(ad->list, noti_new, GRIDBOX_PREPEND);
+                                       }
+                               } else {
+                                       notification_free(noti_new);
+                               }
+                       }
+               } else if (op_type == NOTIFICATION_OP_SERVICE_READY) {
+                       if (_quickpanel_noti_check_first_start()) {
+                               _quickpanel_noti_cleanup(ad);
+                       }
+                       _quickpanel_noti_update_notilist(ad);
+
+#ifdef QP_SERVICE_NOTI_LED_ENABLE
+                       quickpanel_service_noti_led_init(ad, g_noti_node);
+#endif
+                       quickpanel_vim_set_state_ready();
+               }
+       }
+
+       int noti_count = noti_node_get_item_count(g_noti_node, NOTIFICATION_TYPE_NOTI);
+
+       if (g_noti_section != NULL) {
+               noti_section_update(g_noti_section, noti_count);
+       }
+
+       ERR("current noti count:%d", noti_count);
+}
+
+static void _quickpanel_noti_update_desktop_cb(keynode_t *node, void *data)
+{
+       char *event = NULL;
+       char type[10] = {0,};
+       char package[1024] = {0,};
+
+       event = vconf_get_str(vconf_keynode_get_name(node));
+       retif(NULL == event, , "invalid event");
+
+       DBG("%s", event);
+
+       if (sscanf(event, "%10[^:]:%1023s", type, package) != 2) {
+               DBG("Failed to parse the event format : [%s], [%s]", type, package);
+       }
+
+       if (strncasecmp(type, "delete", strlen(type)) == 0) {
+               notification_delete_all_by_type(package, NOTIFICATION_TYPE_NONE);
+       }
+
+       if (event != NULL)
+               free(event);
+}
+
+static void _quickpanel_noti_update_sim_status_cb(keynode_t *node, void *data)
+{
+       struct appdata *ad = data;
+
+       if (ad != NULL && ad->list != NULL) {
+               if (notification_is_service_ready() == 1) {
+                       _quickpanel_noti_update_notilist(ad);
+               }
+       }
+}
+
+static int _quickpanel_noti_register_event_handler(struct appdata *ad)
+{
+       int ret = 0;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       /* Add dbus signal */
+       e_dbus_init();
+       ad->dbus_connection = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+       if (ad->dbus_connection == NULL) {
+               ERR("noti register : failed to get dbus bus");
+               return -1;
+       }
+
+       ad->dbus_handler_size =
+               e_dbus_signal_handler_add(ad->dbus_connection, NULL,
+                       QP_NOTI_ONGOING_DBUS_PATH,
+                       QP_NOTI_ONGOING_DBUS_INTERFACE, "update_progress",
+                       _quickpanel_noti_item_progress_update_cb,
+                       ad);
+       if (ad->dbus_handler_size == NULL)
+               ERR("fail to add size signal");
+
+       ad->dbus_handler_progress =
+               e_dbus_signal_handler_add(ad->dbus_connection, NULL,
+                       QP_NOTI_ONGOING_DBUS_PATH,
+                       QP_NOTI_ONGOING_DBUS_INTERFACE, "update_size",
+                       _quickpanel_noti_item_size_update_cb,
+                       ad);
+       if (ad->dbus_handler_progress == NULL)
+               ERR("fail to add progress signal");
+
+       ad->dbus_handler_content =
+               e_dbus_signal_handler_add(ad->dbus_connection, NULL,
+                       QP_NOTI_ONGOING_DBUS_PATH,
+                       QP_NOTI_ONGOING_DBUS_INTERFACE, "update_content",
+                       _quickpanel_noti_item_content_update_cb,
+                       ad);
+       if (ad->dbus_handler_content == NULL)
+               ERR("fail to add content signal");
+
+       /* Notify vconf key */
+       ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
+                                      _quickpanel_noti_update_sim_status_cb,
+                                      (void *)ad);
+       if (ret != 0)
+               ERR("Failed to register SIM_SLOT change callback!");
+
+       /* Notify vconf key */
+       ret = vconf_notify_key_changed(VCONFKEY_MENUSCREEN_DESKTOP,
+                                      _quickpanel_noti_update_desktop_cb,
+                                      (void *)ad);
+       if (ret != 0)
+               ERR("Failed to register DESKTOP change callback!");
+
+       /* Register notification changed cb */
+       notification_register_detailed_changed_cb(_quickpanel_noti_detailed_changed_cb, ad);
+
+       return ret;
+}
+
+static int _quickpanel_noti_unregister_event_handler(struct appdata *ad)
+{
+       int ret = 0;
+
+       /* Unregister notification changed cb */
+       notification_unregister_detailed_changed_cb(_quickpanel_noti_detailed_changed_cb, (void *)ad);
+
+       /* Ignore vconf key */
+       ret = vconf_ignore_key_changed(VCONFKEY_MENUSCREEN_DESKTOP,
+                       _quickpanel_noti_update_desktop_cb);
+       if (ret != 0)
+               ERR("Failed to ignore DESKTOP change callback!");
+
+       ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
+                               _quickpanel_noti_update_sim_status_cb);
+       if (ret != 0)
+               ERR("Failed to ignore SIM_SLOT change callback!");
+
+       /* Delete dbus signal */
+       if (ad->dbus_handler_size != NULL) {
+               e_dbus_signal_handler_del(ad->dbus_connection,
+                               ad->dbus_handler_size);
+               ad->dbus_handler_size = NULL;
+       }
+       if (ad->dbus_handler_progress != NULL) {
+               e_dbus_signal_handler_del(ad->dbus_connection,
+                               ad->dbus_handler_progress);
+               ad->dbus_handler_progress = NULL;
+       }
+       if (ad->dbus_handler_content != NULL) {
+               e_dbus_signal_handler_del(ad->dbus_connection,
+                               ad->dbus_handler_content);
+               ad->dbus_handler_content = NULL;
+       }
+
+#ifdef TBD
+       if (ad->dbus_connection != NULL) {
+               e_dbus_connection_close(ad->dbus_connection);
+               ad->dbus_connection = NULL;
+       }
+#endif
+       e_dbus_shutdown();
+
+       return QP_OK;
+}
+
+static int _quickpanel_noti_check_first_start(void)
+{
+       int status = 0;
+       int ret = 0;
+
+       ret = vconf_get_bool(VCONFKEY_QUICKPANEL_STARTED, &status);
+       if (ret == 0 && status == 0) {
+               /* reboot */
+               ret = vconf_set_bool(VCONFKEY_QUICKPANEL_STARTED, 1);
+               INFO("set : %s, result : %d", VCONFKEY_QUICKPANEL_STARTED, ret);
+       }
+
+       if (status)
+               return 0;
+
+       return 1;
+}
+
+static void _quickpanel_noti_init(void *data)
+{
+       struct appdata *ad = NULL;
+
+       retif(data == NULL, , "Invalid parameter!");
+       ad = data;
+
+       retif(ad->list == NULL, , "Invalid parameter!");
+
+       DBG("wr");
+
+       if (g_noti_listbox == NULL) {
+               g_noti_listbox = listbox_create(ad->list, quickpanel_get_app_data());
+               listbox_set_item_deleted_cb(g_noti_listbox, _quickpanel_list_box_deleted_cb);
+               quickpanel_list_util_sort_insert(ad->list, g_noti_listbox);
+       }
+
+       if (g_noti_gridbox == NULL) {
+               g_noti_gridbox = gridbox_create(ad->list, quickpanel_get_app_data());
+               gridbox_set_item_deleted_cb(g_noti_gridbox, _quickpanel_noti_box_deleted_cb);
+               quickpanel_list_util_sort_insert(ad->list, g_noti_gridbox);
+       }
+}
+
+static void _quickpanel_noti_fini(void *data)
+{
+       struct appdata *ad = NULL;
+
+       retif(data == NULL, , "Invalid parameter!");
+       ad = data;
+
+       retif(ad->list == NULL, , "Invalid parameter!");
+
+       DBG("dr");
+
+       if (g_noti_listbox != NULL) {
+               listbox_remove(g_noti_listbox);
+               quickpanel_list_util_item_unpack_by_object(ad->list
+                               , g_noti_listbox);
+               g_noti_listbox = NULL;
+       }
+
+       if (g_noti_gridbox != NULL) {
+               gridbox_remove(g_noti_gridbox);
+               quickpanel_list_util_item_unpack_by_object(ad->list
+                               , g_noti_gridbox);
+               g_noti_gridbox = NULL;
+       }
+}
+
+static void _quickpanel_noti_cleanup(void *data) {
+       notifiation_clear(NOTIFICATION_TYPE_ONGOING);
+       _quickpanel_noti_delete_volatil_data();
+}
+
+static int quickpanel_noti_init(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       noti_node_create(&g_noti_node);
+
+       _quickpanel_noti_init(ad);
+
+       _quickpanel_noti_register_event_handler(ad);
+
+       return QP_OK;
+}
+
+static int quickpanel_noti_fini(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+#ifdef QP_SERVICE_NOTI_LED_ENABLE
+       quickpanel_service_noti_led_fini(ad);
+#endif
+
+       /* Unregister event handler */
+       _quickpanel_noti_unregister_event_handler(data);
+
+       _quickpanel_noti_clear_list_all();
+
+       _quickpanel_noti_fini(ad);
+
+       if (g_noti_node != NULL) {
+               noti_node_destroy(&g_noti_node);
+       }
+
+       return QP_OK;
+}
+
+static int quickpanel_noti_suspend(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       return QP_OK;
+}
+
+static void _noti_node_ongoing_update_cb(gpointer key, gpointer value, gpointer user_data)
+{
+       notification_type_e noti_type = NOTIFICATION_TYPE_NONE;
+       Evas_Object *noti_listbox = user_data;
+       noti_node_item *node = (noti_node_item *)value;
+
+       if (noti_listbox != NULL && node != NULL) {
+               if (node->noti != NULL && node->view != NULL) {
+                       notification_get_type(node->noti, &noti_type);
+                       if (noti_type == NOTIFICATION_TYPE_ONGOING) {
+                               listbox_update_item(noti_listbox, node->view);
+                       }
+               }
+       }
+}
+
+static int quickpanel_noti_resume(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       if (ad->list != NULL && g_noti_node != NULL) {
+               if (noti_node_get_item_count(g_noti_node, QP_ITEM_TYPE_ONGOING_NOTI) > 0) {
+                       if (g_noti_node->table != NULL) {
+                               g_hash_table_foreach(g_noti_node->table, _noti_node_ongoing_update_cb, g_noti_listbox);
+                       }
+               }
+       }
+
+       return QP_OK;
+}
+
+static void quickpanel_noti_refresh(void *data) {
+       struct appdata *ad = NULL;
+
+       retif(data == NULL, , "Invalid parameter!");
+       ad = data;
+
+       if (g_noti_gridbox != NULL) {
+               gridbox_rotation(g_noti_gridbox, ad->angle);
+       }
+}
+
+static void quickpanel_noti_lang_changed(void *data)
+{
+       int noti_count = 0;
+       struct appdata *ad = data;
+
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (notification_is_service_ready() == 1) {
+               _quickpanel_noti_update_notilist(ad);
+               if (g_noti_node != NULL && g_noti_section != NULL) {
+                       noti_count = noti_node_get_item_count(g_noti_node, NOTIFICATION_TYPE_NOTI);
+                       noti_section_update(g_noti_section, noti_count);
+               }
+       }
+}
diff --git a/daemon/notifications/noti.h b/daemon/notifications/noti.h
new file mode 100755 (executable)
index 0000000..5bac7b0
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 __NOTI_H__
+#define __NOTI_H__
+
+#include "quickpanel-ui.h"
+
+#define NOTI_PRESS_BG 0
+#define NOTI_PRESS_BUTTON_1 1
+char *quickpanel_noti_get_time(time_t t, char *buf, int buf_len);
+#endif
diff --git a/daemon/notifications/noti_box.c b/daemon/notifications/noti_box.c
new file mode 100755 (executable)
index 0000000..f4ab9f0
--- /dev/null
@@ -0,0 +1,969 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 <string.h>
+#include <Ecore_X.h>
+
+#include "quickpanel-ui.h"
+#include "common.h"
+#include "list_util.h"
+#include "quickpanel_def.h"
+#include "noti_box.h"
+#include "noti_node.h"
+#include "noti.h"
+#include "noti_util.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+#include "animated_image.h"
+#endif
+
+#define IMAGE_NO_RESIZE 0
+#define IMAGE_RESIZE 1
+
+#define IMAGE_BY_FILE 0
+#define IMAGE_BY_BUFFER 1
+
+#define TEXT_NO_CR 0
+#define TEXT_CR 1
+
+static void _noti_box_call_item_cb(Evas_Object *noti_box, const char *emission) {
+       retif(noti_box == NULL, , "invalid parameter");
+       retif(emission == NULL, , "invalid parameter");
+
+       static double time_called = 0.0;
+
+       if (time_called == 0) {
+               time_called = ecore_loop_time_get();
+       } else {
+               if ((ecore_loop_time_get() - time_called) < 0.4) {
+                       DBG("click rejected");
+                       return;
+               }
+               time_called = ecore_loop_time_get();
+       }
+
+       void (*cb)(void *data, Evas_Object *obj) = NULL;
+       noti_box_h *data = NULL;
+       data = evas_object_data_get(noti_box, E_DATA_NOTI_BOX_H);
+
+       if (strncmp(emission,"selected", strlen("selected")) == 0) {
+               cb = evas_object_data_get(noti_box, E_DATA_CB_SELECTED_ITEM);
+
+               if (cb != NULL && data != NULL) {
+                       cb(data->data, noti_box);
+               }
+       }
+       if (strncmp(emission,"button_1", strlen("button_1")) == 0) {
+               cb = evas_object_data_get(noti_box, E_DATA_CB_BUTTON_1);
+
+               if (cb != NULL && data != NULL) {
+                       cb(data->data, noti_box);
+               }
+       }
+       if (strncmp(emission,"deleted", strlen("deleted")) == 0) {
+               cb = evas_object_data_get(noti_box, E_DATA_CB_DELETED_ITEM);
+
+               if (cb != NULL && data != NULL) {
+                       cb(data->data, noti_box);
+               }
+       }
+}
+
+static void _attach_memfile(Evas_Object *noti_box, notification_image_type_e image_type, void *memfile)
+{
+       char buf[32] = {0,};
+
+       snprintf(buf, sizeof(buf), "%s_%d", E_DATA_NOTI_BOX_MB_BG, image_type);
+
+       void *memfile_attached = evas_object_data_get(noti_box, buf);
+       if (memfile_attached != NULL) {
+               free(memfile_attached);
+       }
+       evas_object_data_set(noti_box, buf, memfile);
+}
+
+static void _deattach_memfile_all(Evas_Object *noti_box)
+{
+       char buf[32] = {0,};
+       void *memfile = NULL;
+       int i = NOTIFICATION_TEXT_TYPE_NONE + 1;
+
+       for ( ; i < NOTIFICATION_TEXT_TYPE_MAX; i++) {
+               snprintf(buf, sizeof(buf), "%s_%d", E_DATA_NOTI_BOX_MB_BG, i);
+
+               memfile = evas_object_data_get(noti_box, buf);
+               if (memfile != NULL) {
+                       free(memfile);
+               }
+               evas_object_data_set(noti_box, buf, NULL);
+               evas_object_data_del(noti_box, buf);
+       }
+}
+
+static void _signal_cb(void *data, Evas_Object *o, const char *emission, const char *source)
+{
+       retif(data == NULL, , "invalid parameter");
+       retif(o == NULL, , "invalid parameter");
+       retif(emission == NULL, , "invalid parameter");
+
+       _noti_box_call_item_cb(o, emission);
+}
+
+#ifdef QP_SCREENREADER_ENABLE
+static inline void _check_and_add_to_buffer(notification_h noti,
+               notification_text_type_e text_type, Eina_Strbuf *str_buf) {
+       char buf[256] = { 0, };
+       char buf_number[QP_UTIL_PHONE_NUMBER_MAX_LEN * 2] = { 0, };
+
+       char *text = NULL;
+       time_t time = 0;
+
+       if (notification_get_time_from_text(noti, text_type, &time) == NOTIFICATION_ERROR_NONE) {
+               if ((int)time > 0) {
+                       quickpanel_noti_get_time(time, buf, sizeof(buf));
+                       text = buf;
+               }
+       } else {
+               notification_get_text(noti, text_type, &text);
+       }
+
+       if (text != NULL) {
+               if (strlen(text) > 0) {
+                       if (quickpanel_util_is_phone_number(text)) {
+                               quickpanel_util_add_char_to_each_charactor(buf_number, text, ' ');
+                               eina_strbuf_append(str_buf, buf_number);
+                       } else {
+                               eina_strbuf_append(str_buf, text);
+                       }
+               }
+       }
+}
+
+static void _noti_box_set_rs_layout_single(Evas_Object *noti_box,
+               notification_h noti) {
+       Evas_Object *ao = NULL;
+       Eina_Strbuf *str_buf = NULL;
+       char *dir = NULL;
+       char *domain = NULL;
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL)
+               bindtextdomain(domain, dir);
+
+       str_buf = eina_strbuf_new();
+       retif(str_buf == NULL, , "invalid parameter");
+
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_TITLE, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_CONTENT, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_1, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_2, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2, str_buf);
+
+       if (str_buf != NULL) {
+               ao = quickpanel_screen_reader_object_get(noti_box,
+                               SCREEN_READER_OBJ_TYPE_EDJ_OBJECT, "accessibility", noti_box);
+               if (ao != NULL) {
+                       elm_access_info_set(ao, ELM_ACCESS_TYPE, _("IDS_QP_BUTTON_NOTIFICATION"));
+                       elm_access_info_set(ao, ELM_ACCESS_INFO, eina_strbuf_string_get(str_buf));
+               }
+
+               ao = quickpanel_screen_reader_object_get(noti_box,
+                               SCREEN_READER_OBJ_TYPE_EDJ_OBJECT, "accessibility.closebutton", noti_box);
+               if (ao != NULL) {
+                       elm_access_info_set(ao, ELM_ACCESS_TYPE, _("IDS_COM_BODY_BUTTON_T_TTS"));
+                       elm_access_info_set(ao, ELM_ACCESS_INFO, _("IDS_COM_SK_DISMISS"));
+               }
+
+               eina_strbuf_free(str_buf);
+       }
+}
+
+static void _noti_box_set_rs_layout_multi(Evas_Object *noti_box,
+               notification_h noti) {
+       DBG("");
+
+       Evas_Object *ao = NULL;
+       Eina_Strbuf *str_buf = NULL;
+       char *dir = NULL;
+       char *domain = NULL;
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL)
+               bindtextdomain(domain, dir);
+
+       str_buf = eina_strbuf_new();
+       retif(str_buf == NULL, , "invalid parameter");
+
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_TITLE, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_CONTENT, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_1, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_2, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2, str_buf);
+
+       if (str_buf != NULL) {
+               ao = quickpanel_screen_reader_object_get(noti_box,
+                               SCREEN_READER_OBJ_TYPE_EDJ_OBJECT, "accessibility", noti_box);
+               if (ao != NULL) {
+                       elm_access_info_set(ao, ELM_ACCESS_TYPE, _("IDS_QP_BUTTON_NOTIFICATION"));
+                       elm_access_info_set(ao, ELM_ACCESS_INFO, eina_strbuf_string_get(str_buf));
+               }
+
+               ao = quickpanel_screen_reader_object_get(noti_box,
+                               SCREEN_READER_OBJ_TYPE_EDJ_OBJECT, "accessibility.closebutton", noti_box);
+               if (ao) {
+                       elm_access_info_set(ao, ELM_ACCESS_TYPE, _("IDS_COM_BODY_BUTTON_T_TTS"));
+                       elm_access_info_set(ao, ELM_ACCESS_INFO, _("IDS_COM_SK_DISMISS"));
+               }
+
+               eina_strbuf_free(str_buf);
+       }
+}
+
+static void _noti_box_set_rs_layout_thumbnail(Evas_Object *noti_box,
+               notification_h noti) {
+       DBG("");
+
+       Evas_Object *ao = NULL;
+       Eina_Strbuf *str_buf = NULL;
+       char *dir = NULL;
+       char *domain = NULL;
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL)
+               bindtextdomain(domain, dir);
+
+       str_buf = eina_strbuf_new();
+       retif(str_buf == NULL, , "invalid parameter");
+
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_TITLE, str_buf);
+       _check_and_add_to_buffer(noti, NOTIFICATION_TEXT_TYPE_CONTENT, str_buf);
+
+       if (str_buf != NULL) {
+               DBG("access:%s", eina_strbuf_string_get(str_buf));
+
+               ao = quickpanel_screen_reader_object_get(noti_box,
+                               SCREEN_READER_OBJ_TYPE_EDJ_OBJECT, "accessibility", noti_box);
+               if (ao != NULL) {
+                       elm_access_info_set(ao, ELM_ACCESS_TYPE, _("IDS_QP_BUTTON_NOTIFICATION"));
+                       elm_access_info_set(ao, ELM_ACCESS_INFO, eina_strbuf_string_get(str_buf));
+               }
+
+               ao = quickpanel_screen_reader_object_get(noti_box,
+                               SCREEN_READER_OBJ_TYPE_EDJ_OBJECT, "accessibility.closebutton", noti_box);
+               if (ao != NULL) {
+                       elm_access_info_set(ao, ELM_ACCESS_TYPE, _("IDS_COM_BODY_BUTTON_T_TTS"));
+                       elm_access_info_set(ao, ELM_ACCESS_INFO, _("IDS_COM_SK_DISMISS"));
+               }
+
+               eina_strbuf_free(str_buf);
+       }
+}
+#endif
+
+HAPI Evas_Object *noti_box_create(Evas_Object *parent, notification_ly_type_e layout) {
+       Evas_Object *box = NULL;
+
+       box = elm_layout_add(parent);
+
+       if (layout == NOTIFICATION_LY_NOTI_EVENT_SINGLE
+                       || layout == NOTIFICATION_LY_NOTI_EVENT_MULTIPLE) {
+               elm_layout_file_set(box, DEFAULT_EDJ,
+                               "quickpanel/notibox/single_multi");
+       } else if (layout == NOTIFICATION_LY_NOTI_THUMBNAIL) {
+               elm_layout_file_set(box, DEFAULT_EDJ, "quickpanel/notibox/thumbnail");
+       } else {
+               elm_layout_file_set(box, DEFAULT_EDJ,
+                               "quickpanel/notibox/single_multi");
+       }
+
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(box);
+
+       noti_box_h *box_h = (noti_box_h *) malloc(sizeof(noti_box_h));
+       box_h->layout = layout;
+       box_h->status = STATE_NORMAL;
+       box_h->data = NULL;
+       evas_object_data_set(box, E_DATA_NOTI_BOX_H, box_h);
+       INFO("created notibox:%p", box);
+
+       //add event
+       elm_object_signal_callback_add(box,
+                       "selected",
+                       "edje",
+                       _signal_cb,
+                       parent
+       );
+
+       //add event
+       elm_object_signal_callback_add(box,
+                       "button_1",
+                       "edje",
+                       _signal_cb,
+                       parent
+       );
+
+       //add event
+       elm_object_signal_callback_add(box,
+                       "deleted",
+                       "edje",
+                       _signal_cb,
+                       parent
+       );
+
+       return box;
+}
+
+static Evas_Object *_set_image(Evas_Object *noti_box, notification_h noti,
+               notification_image_type_e image_type, const char *part, int is_stretch, int is_use_buffer) {
+
+       Evas_Object *content = NULL;
+       char *image = NULL;
+       int w = 0, h =0;
+       int part_w = 0, part_h =0;
+       double scale = 1.0;
+       char ext[32] = {0,};
+       void *memfile = NULL;
+       size_t memfile_size = 0;
+
+       retif(part == NULL, NULL,"invalid parameter");
+
+       struct appdata *ad = quickpanel_get_app_data();
+       if (ad != NULL) {
+               scale = ad->scale;
+       }
+
+       notification_get_image(noti, image_type, &image);
+
+       if (image != NULL) {
+               content = elm_image_add(noti_box);
+               if (is_use_buffer == IMAGE_BY_BUFFER) {
+                       memfile = quickpanel_ui_get_buffer_from_image(image, &memfile_size, ext, sizeof(ext));
+                       if (memfile != NULL && memfile_size > 0) {
+                               _attach_memfile(noti_box, image_type, memfile);
+                               if (elm_image_memfile_set(content, memfile, memfile_size, ext,
+                                               quickpanel_animated_image_get_groupname(image)) == EINA_FALSE) {
+                                       ERR("failed to set memfile set");
+                                       elm_image_file_set(content, image,
+                                                       quickpanel_animated_image_get_groupname(image));
+                               }
+                       } else {
+                               elm_image_file_set(content, image,
+                                               quickpanel_animated_image_get_groupname(image));
+                       }
+               } else {
+                       elm_image_file_set(content, image,
+                                       quickpanel_animated_image_get_groupname(image));
+               }
+               if (is_stretch == IMAGE_RESIZE) {
+                       elm_image_aspect_fixed_set(content, EINA_FALSE);
+                       elm_image_resizable_set(content, EINA_TRUE, EINA_TRUE);
+               } else {
+                       elm_image_object_size_get(content, &w, &h);
+
+                       if (strcmp(part, BOX_PART_ICON) == 0) {
+                               part_w = scale * BOX_ICON_SIZE_W;
+                               part_h = scale * BOX_ICON_SIZE_H;
+                       }
+                       if (strcmp(part, BOX_PART_ICON_SUB) == 0) {
+                               part_w = scale * BOX_ICON_SUB_SIZE_W;
+                               part_h = scale * BOX_ICON_SUB_SIZE_H;
+                       }
+
+                       if (part_w != 0 && part_h != 0) {
+                               if (w > part_w || h > part_h) {
+                                       elm_image_aspect_fixed_set(content, EINA_FALSE);
+                                       elm_image_resizable_set(content, EINA_TRUE, EINA_TRUE);
+                               } else {
+                                       elm_image_aspect_fixed_set(content, EINA_TRUE);
+                                       elm_image_resizable_set(content, EINA_FALSE, EINA_FALSE);
+                               }
+                       } else {
+                               elm_image_aspect_fixed_set(content, EINA_TRUE);
+                               elm_image_resizable_set(content, EINA_FALSE, EINA_FALSE);
+                       }
+               }
+
+               elm_object_part_content_set(noti_box, part, content);
+               elm_object_signal_emit(noti_box, "object.show", part);
+       }
+
+       return content;
+}
+
+static int _set_text(Evas_Object *noti_box, notification_h noti,
+               notification_text_type_e text_type, const char *part, int is_need_effect, int is_support_cr) {
+       char buf[128] = { 0, };
+
+       char *text = NULL;
+       char *text_utf8 = NULL;
+       time_t time = 0;
+
+       if (notification_get_time_from_text(noti, text_type, &time) == NOTIFICATION_ERROR_NONE) {
+               if ((int)time > 0) {
+                       quickpanel_noti_get_time(time, buf, sizeof(buf));
+                       text = buf;
+               }
+       } else {
+               notification_get_text(noti, text_type, &text);
+       }
+
+       if (text != NULL) {
+               if (strlen(text) > 0) {
+
+                       if (is_support_cr == TEXT_CR) {
+                               text_utf8 = elm_entry_utf8_to_markup(text);
+                               if (text_utf8 != NULL) {
+                                       elm_object_part_text_set(noti_box, part, text_utf8);
+                                       free(text_utf8);
+                               } else {
+                                       elm_object_part_text_set(noti_box, part, text);
+                               }
+                       } else {
+                               quickpanel_util_char_replace(text, _NEWLINE, _SPACE);
+                               elm_object_part_text_set(noti_box, part, text);
+                       }
+
+                       if (is_need_effect == 1)
+                               elm_object_signal_emit(noti_box, "object.show.effect", part);
+                       else
+                               elm_object_signal_emit(noti_box, "object.show", part);
+               }
+
+               return strlen(text);
+       }
+
+       return 0;
+}
+
+static int _check_text_null(notification_h noti,
+               notification_text_type_e text_type) {
+       char *text = NULL;
+
+       notification_get_text(noti, text_type, &text);
+
+       if (text == NULL) {
+               return 1;
+       }
+
+       return 0;
+}
+
+static int _check_image_null(notification_h noti,
+               notification_image_type_e image_type) {
+       char *image = NULL;
+
+       notification_get_image(noti, image_type, &image);
+
+       if (image == NULL) {
+               return 1;
+       }
+
+       if (strncasecmp(image, "(null)", strlen(image)) == 0) {
+               return 1;
+       }
+
+       return 0;
+}
+
+static void _noti_box_set_layout_single(Evas_Object *noti_box,
+               notification_h noti) {
+       char *dir = NULL;
+       char *domain = NULL;
+       int is_need_effect = 0;
+       int is_contents_only = 0;
+       int is_sub_info_1_only = 0;
+       Evas_Object *icon = NULL;
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
+               is_need_effect = 1;
+       }
+
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) == 1) {
+               is_contents_only = 1;
+       }
+
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) != 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) == 1) {
+               is_sub_info_1_only = 1;
+       }
+
+       DBG("is_contents_only:%d is_sub_info_1_only:%d", is_contents_only, is_sub_info_1_only);
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL)
+               bindtextdomain(domain, dir);
+
+       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_TITLE,
+                       "object.text.title", is_need_effect, TEXT_CR);
+
+       if (is_contents_only == 1) {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                               "object.text.contents.multiline", is_need_effect, TEXT_CR);
+       } else {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                               "object.text.contents", is_need_effect, TEXT_NO_CR);
+
+               if (is_sub_info_1_only == 1) {
+                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                                               "object.text.info.1.multiline", is_need_effect, TEXT_CR);
+               } else {
+                       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 0) {
+                               if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1) {
+                                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                       "object.text.info.1", is_need_effect, TEXT_NO_CR);
+                               } else {
+                                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                       "object.text.info.1.short", is_need_effect, TEXT_NO_CR);
+                                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1,
+                                                       "object.text.info.sub.1", is_need_effect, TEXT_NO_CR);
+                               }
+                       }
+                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
+                                       "object.text.info.2", is_need_effect, TEXT_NO_CR);
+               }
+       }
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
+               _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON,
+                               "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+               icon = _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+               quickpanel_animated_image_add(icon);
+#endif
+       } else {
+               icon = _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+               quickpanel_animated_image_add(icon);
+#endif
+               _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB,
+                               "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+       }
+       _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND,
+                       "object.icon.background", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
+               elm_object_signal_emit(noti_box, "box.show.dim", "box.prog");
+       }
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 1) {
+               elm_object_signal_emit(noti_box, "box.hide.icon.bg", "box.prog");
+       }
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 0
+                       || _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
+               elm_object_signal_emit(noti_box, "box.show.sub.bg", "box.prog");
+       }
+
+#ifdef QP_SCREENREADER_ENABLE
+       _noti_box_set_rs_layout_single(noti_box, noti);
+#endif
+}
+
+static void _noti_box_set_layout_multi(Evas_Object *noti_box,
+               notification_h noti) {
+       int length = 0;
+       char *dir = NULL;
+       char *domain = NULL;
+       char buf[128] = {0,};
+       int is_need_effect = 0;
+       int is_sub_info_1_only = 0;
+       Evas_Object *icon = NULL;
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
+               is_need_effect = 1;
+       }
+
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) != 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) == 1) {
+               is_sub_info_1_only = 1;
+       }
+
+       DBG("is_sub_info_1_only:%d", is_sub_info_1_only);
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL)
+               bindtextdomain(domain, dir);
+
+       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_TITLE,
+                       "object.text.title", is_need_effect, TEXT_CR);
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT) == 0) {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                               "object.text.contents.short", is_need_effect, TEXT_NO_CR);
+               length = _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT,
+                               "object.text.count", is_need_effect, TEXT_NO_CR);
+               length = (length >= 5) ? 5 : length;
+               snprintf(buf, sizeof(buf), "box.count.%d", length);
+               elm_object_signal_emit(noti_box, buf, "box.prog");
+       } else {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                               "object.text.contents", is_need_effect, TEXT_NO_CR);
+       }
+
+       if (is_sub_info_1_only == 1) {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                                       "object.text.info.1.multiline", is_need_effect, TEXT_CR);
+       } else {
+               if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 0) {
+                       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1) == 1) {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                               "object.text.info.1", is_need_effect, TEXT_NO_CR);
+                       } else {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                               "object.text.info.1.short", is_need_effect, TEXT_NO_CR);
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1,
+                                               "object.text.info.sub.1", is_need_effect, TEXT_NO_CR);
+                       }
+               }
+               if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 0) {
+                       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2) == 1) {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
+                                               "object.text.info.2", is_need_effect, TEXT_NO_CR);
+                       } else {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
+                                               "object.text.info.2.short", is_need_effect, TEXT_NO_CR);
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2,
+                                               "object.text.info.sub.2", is_need_effect, TEXT_NO_CR);
+                       }
+               }
+       }
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
+               _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON,
+                               "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+               icon = _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+               quickpanel_animated_image_add(icon);
+#endif
+       } else {
+               icon = _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+               quickpanel_animated_image_add(icon);
+#endif
+               _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB,
+                               "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+       }
+       _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND,
+                       "object.icon.background", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
+               elm_object_signal_emit(noti_box, "box.show.dim", "box.prog");
+       }
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 1) {
+               elm_object_signal_emit(noti_box, "box.hide.icon.bg", "box.prog");
+       }
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 0
+                       || _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
+               elm_object_signal_emit(noti_box, "box.show.sub.bg", "box.prog");
+       }
+
+#ifdef QP_SCREENREADER_ENABLE
+       _noti_box_set_rs_layout_multi(noti_box, noti);
+#endif
+}
+
+static void _noti_box_set_layout_thumbnail(Evas_Object *noti_box,
+               notification_h noti) {
+       int length = 0;
+       char *dir = NULL;
+       char *domain = NULL;
+       char buf[128] = {0,};
+       int is_need_effect = 0;
+       int is_sub_info_1_only = 0;
+       int is_show_info = 0;
+       Evas_Object *icon = NULL;
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0)
+               is_need_effect = 1;
+       else
+               is_need_effect = 0;
+
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) != 1
+               && _check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 1) {
+               is_sub_info_1_only = 1;
+       }
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_LIST_1)!= 1
+               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_LIST_2) == 1
+               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_LIST_3) == 1
+               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_LIST_4) == 1
+               && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_LIST_5) == 1) {
+               is_show_info = 1;
+       }
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL)
+               bindtextdomain(domain, dir);
+
+       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_TITLE,
+                       "object.text.title", is_need_effect, TEXT_CR);
+       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT) == 0) {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                               "object.text.contents.short", is_need_effect, TEXT_NO_CR);
+               length = _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT,
+                               "object.text.count", is_need_effect, TEXT_NO_CR);
+               length = (length >= 5) ? 5 : length;
+               snprintf(buf, sizeof(buf), "box.count.%d", length);
+               elm_object_signal_emit(noti_box, buf, "box.prog");
+       } else {
+               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_CONTENT,
+                               "object.text.contents", is_need_effect, TEXT_NO_CR);
+       }
+
+       if (is_show_info == 1) {
+               if (is_sub_info_1_only == 1) {
+                       _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                                               "object.text.info.1.multiline", is_need_effect, TEXT_CR);
+               } else {
+                       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_1) == 0) {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_1,
+                                                                               "object.text.info.1", is_need_effect, TEXT_NO_CR);
+                       }
+                       if (_check_text_null(noti, NOTIFICATION_TEXT_TYPE_INFO_2) == 0) {
+                               _set_text(noti_box, noti, NOTIFICATION_TEXT_TYPE_INFO_2,
+                                                                               "object.text.info.2", is_need_effect, TEXT_NO_CR);
+                       }
+               }
+       }
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
+               _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON,
+                               "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+               icon = _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+               quickpanel_animated_image_add(icon);
+#endif
+       } else {
+               icon = _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON,
+                               "object.icon", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+               quickpanel_animated_image_add(icon);
+#endif
+               _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB,
+                               "object.icon.sub", IMAGE_NO_RESIZE, IMAGE_BY_FILE);
+       }
+       _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND,
+                       "object.icon.background", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+
+       _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_LIST_1,
+                       "object.thumbnail.list.1", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+       _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_LIST_2,
+                       "object.thumbnail.list.2", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+       _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_LIST_3,
+                       "object.thumbnail.list.3", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+       _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_LIST_4,
+                       "object.thumbnail.list.4", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+       _set_image(noti_box, noti, NOTIFICATION_IMAGE_TYPE_LIST_5,
+                       "object.thumbnail.list.5", IMAGE_RESIZE, IMAGE_BY_BUFFER);
+
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_BACKGROUND) == 0) {
+               elm_object_signal_emit(noti_box, "box.show.dim", "box.prog");
+       }
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON) == 1
+                       && _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 1) {
+               elm_object_signal_emit(noti_box, "box.hide.icon.bg", "box.prog");
+       }
+       if (_check_image_null(noti, NOTIFICATION_IMAGE_TYPE_ICON_SUB) == 0
+                       || _check_image_null(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL) == 0) {
+               elm_object_signal_emit(noti_box, "box.show.sub.bg", "box.prog");
+       }
+
+#ifdef QP_SCREENREADER_ENABLE
+       _noti_box_set_rs_layout_thumbnail(noti_box, noti);
+#endif
+}
+
+static void _noti_box_set_layout(Evas_Object *noti_box, notification_h noti,
+               notification_ly_type_e layout) {
+
+       INFO("layout:%d", layout);
+
+       switch (layout) {
+               case NOTIFICATION_LY_NOTI_EVENT_SINGLE:
+                       _noti_box_set_layout_single(noti_box, noti);
+                       break;
+               case NOTIFICATION_LY_NOTI_EVENT_MULTIPLE:
+                       _noti_box_set_layout_multi(noti_box, noti);
+                       break;
+               case NOTIFICATION_LY_NOTI_THUMBNAIL:
+                       _noti_box_set_layout_thumbnail(noti_box, noti);
+                       break;
+               case NOTIFICATION_LY_NONE:
+               case NOTIFICATION_LY_ONGOING_EVENT:
+               case NOTIFICATION_LY_ONGOING_PROGRESS:
+               case NOTIFICATION_LY_MAX:
+                       ERR("not supported layout type:%d", layout);
+                       break;
+       }
+}
+
+HAPI void noti_box_remove(Evas_Object *noti_box) {
+
+       retif(noti_box == NULL, , "invalid parameter");
+
+       noti_box_h *noti_box_h = evas_object_data_get(noti_box, E_DATA_NOTI_BOX_H);
+
+       if (noti_box_h != NULL)
+               free(noti_box_h);
+
+       evas_object_data_del(noti_box, E_DATA_NOTI_BOX_H);
+       evas_object_data_del(noti_box, E_DATA_CB_SELECTED_ITEM);
+       evas_object_data_del(noti_box, E_DATA_CB_DELETED_ITEM);
+
+       INFO("removed notibox:%p", noti_box);
+       _deattach_memfile_all(noti_box);
+
+       evas_object_del(noti_box);
+}
+
+HAPI void noti_box_set_status(Evas_Object *noti_box, int status) {
+       retif(noti_box == NULL, , "invalid parameter");
+
+       noti_box_h *noti_box_h = evas_object_data_get(noti_box, E_DATA_NOTI_BOX_H);
+
+       if (noti_box_h != NULL) {
+               noti_box_h->status = status;
+       }
+}
+
+HAPI int noti_box_get_status(Evas_Object *noti_box) {
+       retif(noti_box == NULL, STATE_NORMAL, "invalid parameter");
+
+       noti_box_h *noti_box_h = evas_object_data_get(noti_box, E_DATA_NOTI_BOX_H);
+
+       if (noti_box_h != NULL) {
+               return noti_box_h->status;
+       }
+
+       return STATE_DELETING;
+}
+
+HAPI void noti_box_node_set(Evas_Object *noti_box, void *data) {
+       retif(noti_box == NULL, , "invalid parameter");
+       retif(data == NULL, , "invalid parameter");
+
+       noti_box_h *noti_box_data = evas_object_data_get(noti_box, E_DATA_NOTI_BOX_H);
+
+       if (noti_box_data != NULL) {
+               noti_box_data->data = data;
+
+               if (data != NULL) {
+                       noti_node_item *item = data;
+                       _noti_box_set_layout(noti_box, item->noti, noti_box_data->layout);
+               }
+       }
+}
+
+HAPI void *noti_box_node_get(Evas_Object *noti_box) {
+       retif(noti_box == NULL, NULL, "invalid parameter");
+
+       noti_box_h *noti_box_data = evas_object_data_get(noti_box, E_DATA_NOTI_BOX_H);
+
+       if (noti_box_data != NULL) {
+               return noti_box_data->data;
+       }
+
+       return NULL;
+}
+
+#ifdef QP_SCREENREADER_ENABLE
+static void
+_noti_box_selected_activate_cb(void *user_data, Evas_Object *part_obj, Elm_Object_Item *item) {
+       Evas_Object *noti_box = user_data;
+
+       retif(noti_box == NULL, , "invalid parameter");
+
+       _noti_box_call_item_cb(noti_box, "selected");
+
+}
+
+static void
+_noti_box_button_1_activate_cb(void *user_data, Evas_Object *part_obj, Elm_Object_Item *item) {
+       Evas_Object *noti_box = user_data;
+
+       retif(noti_box == NULL, , "invalid parameter");
+
+       _noti_box_call_item_cb(noti_box, "button_1");
+
+}
+
+static void
+_noti_box_deleted_activate_cb(void *user_data, Evas_Object *part_obj, Elm_Object_Item *item) {
+       Evas_Object *noti_box = user_data;
+
+       retif(noti_box == NULL, , "invalid parameter");
+
+       _noti_box_call_item_cb(noti_box, "deleted");
+
+}
+#endif
+
+HAPI void noti_box_set_item_selected_cb(Evas_Object *noti_box,
+               void(*selected_cb)(void *data, Evas_Object *obj)) {
+       retif(noti_box == NULL, , "invalid parameter");
+       retif(selected_cb == NULL, , "invalid parameter");
+
+       evas_object_data_set(noti_box, E_DATA_CB_SELECTED_ITEM, selected_cb);
+
+#ifdef QP_SCREENREADER_ENABLE
+       Evas_Object *ao = NULL;
+       ao = quickpanel_screen_reader_object_get(noti_box,
+                       SCREEN_READER_OBJ_TYPE_EDJ_OBJECT, "accessibility", noti_box);
+       if (ao != NULL) {
+               elm_access_activate_cb_set(ao, _noti_box_selected_activate_cb, noti_box);
+       }
+#endif
+}
+
+HAPI void noti_box_set_item_button_1_cb(Evas_Object *noti_box,
+               void(*button_1_cb)(void *data, Evas_Object *obj)) {
+       retif(noti_box == NULL, , "invalid parameter");
+       retif(button_1_cb == NULL, , "invalid parameter");
+
+       evas_object_data_set(noti_box, E_DATA_CB_BUTTON_1, button_1_cb);
+}
+
+HAPI void noti_box_set_item_deleted_cb(Evas_Object *noti_box,
+               void(*deleted_cb)(void *data, Evas_Object *obj)) {
+       retif(noti_box == NULL, , "invalid parameter");
+       retif(deleted_cb == NULL, , "invalid parameter");
+
+       evas_object_data_set(noti_box, E_DATA_CB_DELETED_ITEM, deleted_cb);
+
+#ifdef QP_SCREENREADER_ENABLE
+       Evas_Object *ao = NULL;
+       ao = quickpanel_screen_reader_object_get(noti_box,
+                       SCREEN_READER_OBJ_TYPE_EDJ_OBJECT, "accessibility.closebutton", noti_box);
+       if (ao != NULL) {
+               elm_access_activate_cb_set(ao, _noti_box_deleted_activate_cb, noti_box);
+       }
+#endif
+}
diff --git a/daemon/notifications/noti_box.h b/daemon/notifications/noti_box.h
new file mode 100755 (executable)
index 0000000..98366e1
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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
+ *
+ * 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 __QUICKPANEL_NOTI_BOX_H__
+#define __QUICKPANEL_NOTI_BOX_H__
+
+#include <notification.h>
+
+#define STATE_NORMAL 1
+#define STATE_DELETING 0
+
+#define E_DATA_NOTI_BOX_H "noti_box"
+#define E_DATA_CB_SELECTED_ITEM "noti_box_cb_selected"
+#define E_DATA_CB_BUTTON_1 "noti_box_cb_button_1"
+#define E_DATA_CB_DELETED_ITEM "noti_box_cb_deleted"
+#define E_DATA_NOTI_BOX_MB_BG "noti_box_mb"
+
+typedef struct _noti_box_h {
+       int status;
+       void *data;
+       notification_ly_type_e  layout;
+} noti_box_h;
+
+Evas_Object *noti_box_create(Evas_Object *parent, notification_ly_type_e layout);
+void noti_box_node_set(Evas_Object *noti_box, void *data);
+void *noti_box_node_get(Evas_Object *noti_box);
+void noti_box_remove(Evas_Object *noti_box);
+void noti_box_set_item_selected_cb(Evas_Object *noti_box,
+               void(*selected_cb)(void *data, Evas_Object *obj));
+void noti_box_set_item_button_1_cb(Evas_Object *noti_box,
+               void(*button_1_cb)(void *data, Evas_Object *obj));
+void noti_box_set_item_deleted_cb(Evas_Object *noti_box,
+               void(*deleted_cb)(void *data, Evas_Object *obj));
+int noti_box_get_status(Evas_Object *noti_box);
+void noti_box_set_status(Evas_Object *noti_box, int status);
+
+#endif
diff --git a/daemon/notifications/noti_gridbox.c b/daemon/notifications/noti_gridbox.c
new file mode 100755 (executable)
index 0000000..ba04498
--- /dev/null
@@ -0,0 +1,826 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 "quickpanel-ui.h"
+#include "common.h"
+#include "list_util.h"
+#include "quickpanel_def.h"
+#include "noti_gridbox.h"
+#include "noti_box.h"
+#include "vi_manager.h"
+
+#define E_DATA_LAYOUT_PORTRAIT "layout_portrait"
+#define E_DATA_LAYOUT_LANDSCAPE "layout_landscape"
+#define E_DATA_CB_DELETE_ITEM "cb_delete_item"
+#define E_DATA_CB_REMOVED "cb_removed"
+#define E_DATA_APP_DATA "app_data"
+
+typedef struct _gridbox_info_layout {
+       int n_per_rows;
+       int padding_top;
+       int padding_left;
+       int padding_right;
+       int padding_bottom;
+       int padding_between;
+       int child_w;
+       int child_h;
+       double scale;
+       int limit_w;
+} gridbox_info_layout;
+
+static Eina_Bool _anim_init_cb(void *data);
+static Eina_Bool _anim_job_cb(void *data);
+static Eina_Bool _anim_done_cb(void *data);
+
+static gridbox_info_layout *_gridbox_get_layout(Evas_Object *gridbox) {
+       struct appdata *ad = quickpanel_get_app_data();
+       gridbox_info_layout *info_layout = NULL;
+
+       retif(gridbox == NULL, NULL, "invalid parameter");
+       retif(ad == NULL, NULL, "invalid data.");
+
+       if (ad->angle == 270 || ad->angle == 90) {
+               info_layout = evas_object_data_get(gridbox, E_DATA_LAYOUT_LANDSCAPE);
+       } else {
+               info_layout = evas_object_data_get(gridbox, E_DATA_LAYOUT_PORTRAIT);
+       }
+
+       return info_layout;
+}
+
+static void _gridbox_layout_get_pos(int order, int *x, int *y, void *data) {
+       gridbox_info_layout *info_layout = data;
+       retif(info_layout == NULL, , "invalid parameter");
+
+       int n_per_row = info_layout->n_per_rows;
+
+       int row = (order - 1) / n_per_row;
+       int column = (order - 1) - (row * n_per_row);
+
+       int row_x = info_layout->padding_left
+                       + ((info_layout->child_w + info_layout->padding_between) * column);
+
+       int row_y = info_layout->padding_top
+                       + ((info_layout->child_h + info_layout->padding_between) * row);
+
+       if (x != NULL)
+               *x = row_x;
+
+       if (y != NULL)
+               *y = row_y;
+}
+
+static void _gridbox_layout_get_coord(Evas_Object *gridbox, int num_child, int index,
+               void *layout_data, int *coord_x, int *coord_y) {
+       int x, y, w, h;
+       int off_x = 0, off_y = 0;
+       int child_w;
+       int space_w = 0;
+       int num_padding_between = 0;
+       struct appdata *ad = quickpanel_get_app_data();
+       gridbox_info_layout *info_layout = NULL;
+
+       retif(gridbox == NULL, , "invalid parameter");
+       retif(ad == NULL, , "invalid data.");
+
+       if (layout_data != NULL) {
+               info_layout = (gridbox_info_layout *) layout_data;
+       } else {
+               info_layout = _gridbox_get_layout(gridbox);
+       }
+       retif(info_layout == NULL, , "invalid data.");
+
+       //box geometry
+       evas_object_geometry_get(gridbox, &x, &y, &w, &h);
+
+       num_padding_between = info_layout->n_per_rows / 2;
+       num_padding_between += (info_layout->n_per_rows > 1 && (info_layout->n_per_rows % 2) > 0) ? 1 : 0;
+
+       space_w = (info_layout->padding_left * 2) + (info_layout->padding_between * num_padding_between);
+       child_w = (info_layout->limit_w - space_w) / info_layout->n_per_rows;
+
+       info_layout->child_w = child_w;
+       _gridbox_layout_get_pos(index, &off_x, &off_y, info_layout);
+
+       if (coord_x != NULL) {
+               *coord_x = x + off_x;
+       }
+       if (coord_y != NULL) {
+               *coord_y = y + off_y;
+       }
+}
+
+static void _gridbox_layout(Evas_Object *o, Evas_Object_Box_Data *priv,
+               void *data) {
+       int n_children;
+       int x, y, w, h;
+       int off_x = 0, off_y = 0;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object_Box_Option *opt;
+       int child_w;
+       int space_w = 0;
+       int num_padding_between = 0;
+
+       retif(o == NULL, , "invalid parameter");
+       retif(priv == NULL, , "invalid parameter");
+       retif(data == NULL, , "invalid parameter");
+
+       gridbox_info_layout *info_layout = (gridbox_info_layout *) data;
+
+       n_children = eina_list_count(priv->children);
+       DBG("layout function:%d", n_children);
+       if (!n_children) {
+               evas_object_size_hint_min_set(o, -1, 0);
+               return;
+       }
+
+       //box geometry
+       evas_object_geometry_get(o, &x, &y, &w, &h);
+
+       num_padding_between = info_layout->n_per_rows / 2;
+       num_padding_between += (info_layout->n_per_rows > 1 && (info_layout->n_per_rows % 2) > 0) ? 1 : 0;
+
+       space_w = (info_layout->padding_left * 2) + (info_layout->padding_between * num_padding_between);
+       child_w = (info_layout->limit_w - space_w) / info_layout->n_per_rows;
+
+       info_layout->child_w = child_w;
+
+       int order_children = 1;
+       EINA_LIST_FOREACH_SAFE(priv->children, l, l_next, opt)
+       {
+               _gridbox_layout_get_pos(order_children, &off_x, &off_y, info_layout);
+               evas_object_move(opt->obj, x + off_x, y + off_y);
+               evas_object_size_hint_min_set(opt->obj, info_layout->child_w,
+                               info_layout->child_h);
+               evas_object_resize(opt->obj, info_layout->child_w,
+                               info_layout->child_h);
+               order_children++;
+       }
+
+       evas_object_size_hint_min_set(o, -1,
+                       off_y + info_layout->child_h + info_layout->padding_bottom);
+}
+
+HAPI Evas_Object *gridbox_create(Evas_Object *parent, void *data) {
+
+       retif(parent == NULL, NULL, "invalid parameter");
+       retif(data == NULL, NULL, "invalid parameter");
+       struct appdata *ad = data;
+       Evas_Object *gridbox = NULL;
+
+       gridbox_info_layout *info_layout_portrait = NULL;
+       gridbox_info_layout *info_layout_landscape = NULL;
+
+       info_layout_portrait = (gridbox_info_layout *) malloc(
+                       sizeof(gridbox_info_layout));
+       retif(info_layout_portrait == NULL, NULL, "memory allocation failed");
+       info_layout_portrait->padding_between = 12 * ad->scale;
+       info_layout_portrait->padding_top = 0;
+       info_layout_portrait->padding_left = 14 * ad->scale;
+       info_layout_portrait->padding_bottom = 12 * ad->scale;
+       info_layout_portrait->n_per_rows = 2;
+       info_layout_portrait->child_w = 0; //340;
+       info_layout_portrait->child_h = BOX_HEIGHT_P * ad->scale; //400;
+       info_layout_portrait->limit_w = ad->win_width; //400;
+       info_layout_portrait->scale = ad->scale;
+
+       info_layout_landscape = (gridbox_info_layout *) malloc(
+                       sizeof(gridbox_info_layout));
+       if (info_layout_landscape == NULL) {
+               free(info_layout_portrait);
+               ERR("memory allocation failed");
+               return NULL;
+       }
+       info_layout_landscape->padding_between = 12 * ad->scale;
+       info_layout_landscape->padding_top = 0;
+       info_layout_landscape->padding_left = 14 * ad->scale;
+       info_layout_landscape->padding_bottom = 12 * ad->scale;
+       info_layout_landscape->n_per_rows = 3;
+       info_layout_landscape->child_w = 0; //409;
+       info_layout_landscape->child_h = BOX_HEIGHT_L * ad->scale; //400;
+       info_layout_landscape->limit_w = ad->win_height; //400;
+       info_layout_landscape->scale = ad->scale;
+
+       gridbox = elm_box_add(parent);
+       evas_object_size_hint_weight_set(gridbox, EVAS_HINT_EXPAND,
+                       EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(gridbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       if (ad->angle == 270 || ad->angle == 90)
+               elm_box_layout_set(gridbox, _gridbox_layout, info_layout_landscape,
+                               NULL);
+       else
+               elm_box_layout_set(gridbox, _gridbox_layout, info_layout_portrait,
+                               NULL);
+
+       evas_object_show(gridbox);
+
+       evas_object_data_set(gridbox, E_DATA_LAYOUT_PORTRAIT, info_layout_portrait);
+       evas_object_data_set(gridbox, E_DATA_LAYOUT_LANDSCAPE,
+                       info_layout_landscape);
+       evas_object_data_set(gridbox, E_DATA_CB_DELETE_ITEM, NULL);
+       evas_object_data_set(gridbox, E_DATA_APP_DATA, ad);
+
+       qp_item_data *qid
+               = quickpanel_list_util_item_new(QP_ITEM_TYPE_NOTI, NULL);
+       quickpanel_list_util_item_set_tag(gridbox, qid);
+
+       return gridbox;
+}
+
+HAPI void gridbox_remove(Evas_Object *gridbox) {
+       retif(gridbox == NULL, , "invalid parameter");
+
+       gridbox_info_layout *info_layout_portrait = evas_object_data_get(gridbox,
+                       E_DATA_LAYOUT_PORTRAIT);
+       gridbox_info_layout *info_layout_landscape = evas_object_data_get(gridbox,
+                       E_DATA_LAYOUT_LANDSCAPE);
+
+       gridbox_remove_all_item(gridbox, 0);
+       evas_object_data_del(gridbox, E_DATA_LAYOUT_PORTRAIT);
+       evas_object_data_del(gridbox, E_DATA_LAYOUT_LANDSCAPE);
+       evas_object_data_del(gridbox, E_DATA_CB_DELETE_ITEM);
+       evas_object_data_del(gridbox, E_DATA_APP_DATA);
+       quickpanel_list_util_item_del_tag(gridbox);
+       evas_object_del(gridbox);
+
+       if (info_layout_portrait != NULL)
+               free(info_layout_portrait);
+       if (info_layout_landscape != NULL)
+               free(info_layout_landscape);
+}
+
+HAPI void gridbox_set_item_deleted_cb(Evas_Object *gridbox,
+               void(*deleted_cb)(void *data, Evas_Object *obj)) {
+       retif(gridbox == NULL, , "invalid parameter");
+       retif(deleted_cb == NULL, , "invalid parameter");
+
+       evas_object_data_set(gridbox, E_DATA_CB_DELETE_ITEM, deleted_cb);
+}
+
+static void _gridbox_call_item_deleted_cb(Evas_Object *gridbox, void *data,
+               Evas_Object *obj) {
+       retif(gridbox == NULL, , "invalid parameter");
+
+       void (*deleted_cb)(void *data, Evas_Object *obj) = NULL;
+
+       deleted_cb = evas_object_data_get(gridbox, E_DATA_CB_DELETE_ITEM);
+
+       if (deleted_cb != NULL) {
+               deleted_cb(data, obj);
+       }
+}
+
+HAPI void gridbox_add_item(Evas_Object *gridbox, Evas_Object *item, int is_prepend) {
+       QP_VI *vi = NULL;
+       const char *signal = NULL;
+       gridbox_info_layout *info_layout = NULL;
+
+       retif(gridbox == NULL, , "invalid parameter");
+       retif(item == NULL, , "invalid parameter");
+
+       struct appdata *ad = evas_object_data_get(gridbox, E_DATA_APP_DATA);
+       if (ad != NULL) {
+               if (ad->angle == 270 || ad->angle == 90) {
+                       signal = "box.landscape";
+               } else {
+                       signal = "box.portrait";
+               }
+       }
+
+       DBG("set to %s, %x", signal, item);
+       elm_object_signal_emit(item, signal, "box.prog");
+       edje_object_message_signal_process(_EDJ(item));
+       elm_layout_sizing_eval(item);
+
+       info_layout = _gridbox_get_layout(gridbox);
+       retif(info_layout == NULL, , "invalid parameter");
+
+       _gridbox_layout_get_coord(gridbox, 0, 1, NULL, NULL, NULL);
+
+       evas_object_size_hint_min_set(item, info_layout->child_w,
+                       info_layout->child_h);
+       evas_object_resize(item, info_layout->child_w,
+                       info_layout->child_h);
+
+       vi = quickpanel_vi_new_with_data(
+                       VI_OP_INSERT,
+                       QP_ITEM_TYPE_NOTI,
+                       gridbox,
+                       item,
+                       _anim_init_cb,
+                       _anim_job_cb,
+                       _anim_done_cb,
+                       _anim_done_cb,
+                       vi,
+                       NULL,
+                       is_prepend,
+                       0);
+       quickpanel_vi_start(vi);
+}
+
+static void _anim_init_insert(void *data) {
+       QP_VI *vi = data;
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *gridbox = vi->container;
+       Evas_Object *item = vi->target;
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+
+       evas_object_clip_set(item, evas_object_clip_get(gridbox));
+       evas_object_color_set(item, 0, 0, 0, 0);
+}
+
+static void _anim_job_insert(void *data) {
+       QP_VI *vi = data;
+       int index = 1, index_child = 1;
+       int is_prepend = 0;
+       int coord_x, coord_y = 0;
+       int coord_old_x, coord_old_y = 0;
+       int coord_fix_x, coord_fix_y = 0;
+       Evas_Object *gridbox = NULL;
+       Evas_Object *item = NULL;
+       Elm_Transit *transit_layout = NULL;
+       Elm_Transit *transit_fadein = NULL;
+       gridbox_info_layout *info_layout = NULL;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       gridbox = vi->container;
+       item = vi->target;
+       is_prepend = vi->extra_flag_1;
+
+       info_layout = _gridbox_get_layout(gridbox);
+       retif(info_layout == NULL, , "invalid parameter");
+
+       if (is_prepend != 1) {
+               index_child = gridbox_get_item_count(gridbox);
+       }
+       _gridbox_layout_get_coord(gridbox, 0, index_child, NULL, &coord_x, &coord_y);
+       evas_object_move(item, coord_x, coord_y);
+
+       if (is_prepend == 1) {
+               Eina_List *l;
+               Eina_List *l_next;
+               Evas_Object *obj;
+               Eina_List *item_list = elm_box_children_get(gridbox);
+
+               DBG("all count:%d", eina_list_count (item_list));
+
+               EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
+               {
+                       if (obj != NULL) {
+                               transit_layout = elm_transit_add();
+                               if (transit_layout != NULL) {
+                                       evas_object_geometry_get(obj, &coord_old_x, &coord_old_y, NULL, NULL);
+                                       _gridbox_layout_get_coord(gridbox, 0, index + 1, NULL, &coord_x, &coord_y);
+
+                                       coord_x = coord_x - coord_old_x;
+                                       coord_y = coord_y - coord_old_y;
+                                       coord_fix_x = (coord_x != 0) ? coord_x / coord_x : 0;
+                                       coord_fix_y = (coord_y != 0) ? coord_y / coord_y : 0;
+                                       elm_transit_effect_translation_add(transit_layout, 0, 0, coord_x + coord_fix_x, coord_y + coord_fix_y);
+                                       elm_transit_object_add(transit_layout, obj);
+                                       elm_transit_duration_set(transit_layout,
+                                                       quickpanel_vim_get_duration(VI_OP_REORDER));
+                                       elm_transit_tween_mode_set(transit_layout,
+                                                       quickpanel_vim_get_tweenmode(VI_OP_REORDER));
+                                       elm_transit_objects_final_state_keep_set(transit_layout, EINA_TRUE);
+                                       elm_transit_go(transit_layout);
+                               } else {
+                                       ERR("failed to create a transit");
+                               }
+                       }
+                       index++;
+               }
+       }
+
+       transit_fadein = elm_transit_add();
+       if (transit_fadein != NULL) {
+               elm_transit_object_add(transit_fadein, item);
+               elm_transit_effect_color_add(transit_fadein, 0, 0, 0, 0, 255, 255, 255, 255);
+               elm_transit_duration_set(transit_fadein,
+                               quickpanel_vim_get_duration(VI_OP_INSERT));
+               elm_transit_tween_mode_set(transit_fadein,
+                               quickpanel_vim_get_tweenmode(VI_OP_INSERT));
+               elm_transit_del_cb_set(transit_fadein,
+                               quickpanel_vi_done_cb_for_transit, vi);
+               if (transit_layout != NULL) {
+                       elm_transit_chain_transit_add(transit_layout, transit_fadein);
+               } else {
+                       elm_transit_go(transit_fadein);
+               }
+       } else {
+               ERR("failed to create a transit");
+               quickpanel_vi_done(vi);
+       }
+}
+
+static void _anim_done_insert(void *data) {
+       QP_VI *vi = data;
+       retif(vi == NULL, , "invalid parameter");
+
+       Evas_Object *gridbox = vi->container;
+       Evas_Object *item = vi->target;
+       int is_prepend = vi->extra_flag_1;
+
+       retif(gridbox == NULL, , "invalid parameter");
+       retif(item == NULL, , "invalid parameter");
+
+       evas_object_color_set(item, 255, 255, 255, 255);
+
+       if (is_prepend == GRIDBOX_PREPEND)
+               elm_box_pack_start(gridbox, item);
+       else
+               elm_box_pack_end(gridbox, item);
+}
+
+static void _anim_job_delete(void *data) {
+       QP_VI *vi = data;
+       int coord_x, coord_y = 0;
+       int coord_old_x, coord_old_y = 0;
+       int coord_fix_x, coord_fix_y = 0;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Elm_Transit *transit_layout = NULL;
+       Elm_Transit *transit_fadein = NULL;
+       Evas_Object *gridbox = vi->container;
+       Evas_Object *item = vi->target;
+
+       transit_fadein = elm_transit_add();
+       if (transit_fadein != NULL) {
+               elm_transit_object_add(transit_fadein, item);
+               elm_transit_effect_color_add(transit_fadein, 255, 255, 255, 255, 0, 0, 0, 0);
+               elm_transit_objects_final_state_keep_set(transit_fadein, EINA_TRUE);
+               elm_transit_tween_mode_set(transit_fadein,
+                               quickpanel_vim_get_tweenmode(VI_OP_DELETE));
+               elm_transit_duration_set(transit_fadein,
+                               quickpanel_vim_get_duration(VI_OP_DELETE));
+               elm_transit_go(transit_fadein);
+       } else {
+               ERR("failed to create a transit");
+       }
+
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj;
+       Eina_List *item_list = elm_box_children_get(gridbox);
+
+       DBG("all count:%d", eina_list_count (item_list));
+
+       int index_child = 1;
+       int is_start_relayout = 0;
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
+       {
+               if (obj == item) {
+                       is_start_relayout = 1;
+               } else if (obj != NULL && is_start_relayout == 1) {
+                       transit_layout = elm_transit_add();
+                       if (transit_layout != NULL) {
+                               evas_object_geometry_get(obj, &coord_old_x, &coord_old_y, NULL, NULL);
+                               _gridbox_layout_get_coord(gridbox, 0, index_child - 1, NULL, &coord_x, &coord_y);
+
+                               coord_x = coord_x - coord_old_x;
+                               coord_y = coord_y - coord_old_y;
+                               coord_fix_x = (coord_x != 0) ? coord_x/coord_x : 0;
+                               coord_fix_y = (coord_y != 0) ? coord_y/coord_y : 0;
+                               elm_transit_effect_translation_add(transit_layout, 0, 0, coord_x + coord_fix_x, coord_y + coord_fix_y);
+                               elm_transit_object_add(transit_layout, obj);
+                               elm_transit_duration_set(transit_layout,
+                                               quickpanel_vim_get_duration(VI_OP_REORDER));
+                               elm_transit_tween_mode_set(transit_layout,
+                                               quickpanel_vim_get_tweenmode(VI_OP_REORDER));
+                               elm_transit_objects_final_state_keep_set(transit_layout, EINA_TRUE);
+                               if (transit_fadein != NULL) {
+                                       elm_transit_chain_transit_add(transit_fadein, transit_layout);
+                               }
+                       } else {
+                               ERR("failed to create a transit");
+                       }
+               }
+               index_child++;
+       }
+
+       if (transit_layout != NULL) {
+               elm_transit_del_cb_set(transit_layout, quickpanel_vi_done_cb_for_transit,
+                               vi);
+       } else if (transit_fadein != NULL){
+               elm_transit_del_cb_set(transit_fadein, quickpanel_vi_done_cb_for_transit,
+                               vi);
+       } else {
+               ERR("failed to create a transit");
+               quickpanel_vi_done(vi);
+       }
+}
+
+static void _anim_done_delete(void *data) {
+       QP_VI *vi = data;
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *gridbox = vi->container;
+       Evas_Object *item = vi->target;
+
+       elm_box_unpack(gridbox, item);
+       noti_box_remove(item);
+       _gridbox_call_item_deleted_cb(gridbox, noti_box_node_get(item), NULL);
+}
+
+HAPI void gridbox_remove_item(Evas_Object *gridbox, Evas_Object *item, int with_animation) {
+       QP_VI *vi = NULL;
+       retif(gridbox == NULL, , "invalid parameter");
+       retif(item == NULL, , "invalid parameter");
+
+       if (with_animation == 1) {
+               vi = quickpanel_vi_new_with_data(
+                               VI_OP_DELETE,
+                               QP_ITEM_TYPE_NOTI,
+                               gridbox,
+                               item,
+                               _anim_init_cb,
+                               _anim_job_cb,
+                               _anim_done_cb,
+                               _anim_done_cb,
+                               vi,
+                               NULL,
+                               0,
+                               0);
+               quickpanel_vi_start(vi);
+       } else {
+               void *node = noti_box_node_get(item);
+               elm_box_unpack(gridbox, item);
+               noti_box_remove(item);
+               _gridbox_call_item_deleted_cb(gridbox,
+                               node, NULL);
+       }
+}
+
+static void _anim_job_delete_all(void *data) {
+       QP_VI *vi = data;
+       retif(vi == NULL, , "invalid parameter");
+
+       quickpanel_vi_done(vi);
+}
+
+static void _anim_done_delete_all(void *data) {
+       QP_VI *vi = data;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = NULL;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+
+       Evas_Object *gridbox = vi->container;
+
+       item_list = elm_box_children_get(gridbox);
+       retif(item_list == NULL, , "invalid parameter");
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
+       {
+               if (obj != NULL)
+               {
+                       DBG("try to remove:%p", obj);
+                       gridbox_remove_item(gridbox, obj, EINA_TRUE);
+               }
+       }
+}
+
+HAPI void gridbox_remove_all_item(Evas_Object *gridbox, int with_animation) {
+       QP_VI *vi = NULL;
+       retif(gridbox == NULL, , "invalid parameter");
+
+       vi = quickpanel_vi_new_with_data(
+                       VI_OP_DELETE_ALL,
+                       QP_ITEM_TYPE_NOTI,
+                       gridbox,
+                       NULL,
+                       _anim_init_cb,
+                       _anim_job_cb,
+                       _anim_done_cb,
+                       _anim_done_cb,
+                       vi,
+                       NULL,
+                       0,
+                       0);
+       quickpanel_vi_start(vi);
+}
+
+HAPI void gridbox_update_item(Evas_Object *gridbox, Evas_Object *item) {
+
+       retif(gridbox == NULL, , "invalid parameter");
+       retif(item == NULL, , "invalid parameter");
+}
+
+HAPI void gridbox_remove_and_add_item(Evas_Object *gridbox, Evas_Object *item
+               ,void (*update_cb)(Evas_Object *list, void *data, int is_prepend)
+               ,void *container, void *data, int pos) {
+       QP_VI *vi = NULL;
+       retif(gridbox == NULL, , "invalid parameter");
+       retif(item == NULL, , "invalid parameter");
+       retif(update_cb == NULL, , "invalid parameter");
+       retif(container == NULL, , "invalid parameter");
+       retif(data == NULL, , "invalid parameter");
+
+       vi = quickpanel_vi_new_with_data(
+                       VI_OP_DELETE,
+                       QP_ITEM_TYPE_NOTI,
+                       gridbox,
+                       item,
+                       _anim_init_cb,
+                       _anim_job_cb,
+                       _anim_done_cb,
+                       _anim_done_cb,
+                       vi,
+                       NULL,
+                       0,
+                       0);
+       quickpanel_vi_start(vi);
+}
+
+HAPI void gridbox_finalize_rotation_cb(void *data) {
+       retif(data == NULL, , "invalid parameter");
+       Evas_Object *gridbox = data;
+
+       elm_box_recalculate(gridbox);
+}
+
+HAPI void gridbox_rotation(Evas_Object *gridbox, int angle) {
+       const char *signal = NULL;
+
+       retif(gridbox == NULL, , "invalid parameter");
+
+       gridbox_info_layout *info_layout_portrait = evas_object_data_get(gridbox,
+                       E_DATA_LAYOUT_PORTRAIT);
+       gridbox_info_layout *info_layout_landscape = evas_object_data_get(gridbox,
+                       E_DATA_LAYOUT_LANDSCAPE);
+
+       retif(info_layout_portrait == NULL || info_layout_landscape == NULL, ,
+                       "gridbox is crashed");
+
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj;
+       Eina_List *item_list = elm_box_children_get(gridbox);
+
+       if (angle == 270 || angle == 90) {
+               signal = "box.landscape";
+       } else {
+               signal = "box.portrait";
+       }
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
+       {
+               if (obj != NULL) {
+                       elm_object_signal_emit(obj, signal, "box.prog");
+                       edje_object_message_signal_process(_EDJ(obj));
+                       elm_layout_sizing_eval(obj);
+                       DBG("set to %s, %x", signal, obj);
+               }
+       }
+
+       if (angle == 270 || angle == 90) {
+               elm_box_layout_set(gridbox, _gridbox_layout, info_layout_landscape,
+                               NULL);
+       } else {
+               elm_box_layout_set(gridbox, _gridbox_layout, info_layout_portrait,
+                               NULL);
+       }
+
+       DBG("rotation angle is %d", angle);
+}
+
+HAPI int gridbox_get_item_count(Evas_Object *gridbox) {
+       Eina_List *items = NULL;
+       retif(gridbox == NULL, 0, "invalid parameter");
+
+       if ((items = elm_box_children_get(gridbox)) != NULL) {
+               return eina_list_count(items);
+       } else {
+               return 0;
+       }
+}
+
+static Eina_Bool _anim_init_cb(void *data) {
+       int i = 0;
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_init_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_init_insert,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; anim_init_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_init_table[i].op_type != vi->op_type)
+                       continue;
+
+               anim_init_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _anim_job_cb(void *data) {
+       int i = 0;
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_job_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_job_insert,
+               },
+               {
+                       .op_type = VI_OP_DELETE,
+                       .handler = _anim_job_delete,
+               },
+               {
+                       .op_type = VI_OP_DELETE_ALL,
+                       .handler = _anim_job_delete_all,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; anim_job_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_job_table[i].op_type != vi->op_type)
+                       continue;
+
+               anim_job_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _anim_done_cb(void *data) {
+       int i = 0;
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_done_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_done_insert,
+               },
+               {
+                       .op_type = VI_OP_DELETE,
+                       .handler = _anim_done_delete,
+               },
+               {
+                       .op_type = VI_OP_DELETE_ALL,
+                       .handler = _anim_done_delete_all,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       for (i = 0; anim_done_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_done_table[i].op_type != vi->op_type)
+                       continue;
+
+               anim_done_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
diff --git a/daemon/notifications/noti_gridbox.h b/daemon/notifications/noti_gridbox.h
new file mode 100755 (executable)
index 0000000..976f7d2
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 __QUICKPANEL_GRIDBOX_H__
+#define __QUICKPANEL_GRIDBOX_H__
+
+#define GRIDBOX_PREPEND 1
+#define GRIDBOX_APPEND 0
+
+Evas_Object *gridbox_create(Evas_Object *parent, void *data);
+void gridbox_remove(Evas_Object *gridbox);
+void gridbox_add_item(Evas_Object *gridbox, Evas_Object *item, int is_prepend);
+void gridbox_remove_item(Evas_Object *gridbox, Evas_Object *item, int with_animation);
+void gridbox_rotation(Evas_Object *gridbox, int angle);
+void gridbox_remove_and_add_item(Evas_Object *gridbox, Evas_Object *item
+               ,void (*update_cb)(Evas_Object *list, void *data, int is_prepend)
+               ,void *container, void *data, int pos);
+void gridbox_remove_all_item(Evas_Object *gridbox, int with_animation);
+void gridbox_set_item_deleted_cb(Evas_Object *gridbox,
+               void(*deleted_cb)(void *data, Evas_Object *obj));
+int gridbox_get_item_count(Evas_Object *gridbox);
+#endif
diff --git a/daemon/notifications/noti_list_item.c b/daemon/notifications/noti_list_item.c
new file mode 100755 (executable)
index 0000000..a66c36c
--- /dev/null
@@ -0,0 +1,688 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 <string.h>
+#include <Ecore_X.h>
+
+#include "quickpanel-ui.h"
+#include "common.h"
+#include "list_util.h"
+#include "quickpanel_def.h"
+#include "noti_list_item.h"
+#include "noti_node.h"
+#include "noti.h"
+#include "noti_util.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+#include "animated_image.h"
+#endif
+
+#define QP_DEFAULT_ICON        ICONDIR"/quickpanel_icon_default.png"
+
+#ifdef QP_SCREENREADER_ENABLE
+static inline void _check_and_add_to_buffer(Eina_Strbuf *str_buf, const char *text) {
+       char buf_number[QP_UTIL_PHONE_NUMBER_MAX_LEN * 2] = { 0, };
+
+       retif(str_buf == NULL, , "Invalid parameter!");
+
+       if (text != NULL) {
+               if (strlen(text) > 0) {
+                       if (quickpanel_util_is_phone_number(text)) {
+                               quickpanel_util_add_char_to_each_charactor(buf_number, text, ' ');
+                               eina_strbuf_append(str_buf, buf_number);
+                       } else {
+                               eina_strbuf_append(str_buf, text);
+                       }
+               }
+       }
+}
+#endif
+
+static Evas_Object *_check_duplicated_progress_loading(Evas_Object *obj, const char *part, const char *style_name) {
+       Evas_Object *old_content = NULL;
+       const char *old_style_name = NULL;
+
+       retif(obj == NULL, NULL, "Invalid parameter!");
+       retif(part == NULL, NULL, "Invalid parameter!");
+       retif(style_name == NULL, NULL, "Invalid parameter!");
+
+       old_content = elm_object_part_content_get(obj, part);
+       if (old_content != NULL) {
+               old_style_name = elm_object_style_get(old_content);
+               if (old_style_name != NULL) {
+                       if (strcmp(old_style_name, style_name) == 0)
+                               return old_content;
+
+                       elm_object_part_content_unset(obj, part);
+                       evas_object_del(old_content);
+               }
+       }
+
+       return NULL;
+}
+
+static Evas_Object *_check_duplicated_image_loading(Evas_Object *obj, const char *part, const char *file_path) {
+       Evas_Object *old_ic = NULL;
+       const char *old_ic_path = NULL;
+
+       retif(obj == NULL, NULL, "Invalid parameter!");
+       retif(part == NULL, NULL, "Invalid parameter!");
+       retif(file_path == NULL, NULL, "Invalid parameter!");
+
+       old_ic = elm_object_part_content_get(obj, part);
+       if (old_ic != NULL) {
+               elm_image_file_get(old_ic, &old_ic_path, NULL);
+               if (old_ic_path != NULL) {
+                       if (strcmp(old_ic_path, file_path) == 0)
+                               return old_ic;
+               }
+
+               elm_object_part_content_unset(obj, part);
+               evas_object_del(old_ic);
+       }
+
+       return NULL;
+}
+
+static void _set_text_to_part(Evas_Object *obj, const char *part, const char *text) {
+       const char *old_text = NULL;
+
+       retif(obj == NULL, , "Invalid parameter!");
+       retif(part == NULL, , "Invalid parameter!");
+       retif(text == NULL, , "Invalid parameter!");
+
+       old_text = elm_object_part_text_get(obj, part);
+       if (old_text != NULL) {
+               if (strcmp(old_text, text) == 0) {
+                       return ;
+               }
+       }
+
+       elm_object_part_text_set(obj, part, text);
+}
+
+static char *_noti_get_progress(notification_h noti, char *buf,
+                                          int buf_len)
+{
+       double size = 0.0;
+       double percentage = 0.0;
+
+       retif(noti == NULL, NULL, "Invalid parameter!");
+       retif(buf == NULL, NULL, "Invalid parameter!");
+
+       notification_get_size(noti, &size);
+       notification_get_progress(noti, &percentage);
+
+       if (percentage > 0) {
+               if (percentage < 1.0 ) {
+                       if (snprintf(buf, buf_len, "%d%%", (int)(percentage * 100.0 + 0.5)) <= 0) {
+                               return NULL;
+                       }
+               }
+               if (percentage >= 1.0) {
+                       snprintf(buf, buf_len, "%d%%", 100);
+               }
+
+               return buf;
+       } else if (size > 0 && percentage == 0) {
+               if (size > (1 << 30)) {
+                       if (snprintf(buf, buf_len, "%.1lfGB",
+                               size / 1000000000.0) <= 0)
+                               return NULL;
+
+                       return buf;
+               } else if (size > (1 << 20)) {
+                       if (snprintf(buf, buf_len, "%.1lfMB",
+                               size / 1000000.0) <= 0)
+                               return NULL;
+
+                       return buf;
+               } else if (size > (1 << 10)) {
+                       if (snprintf(buf, buf_len, "%.1lfKB",
+                               size / 1000.0) <= 0)
+                               return NULL;
+
+                       return buf;
+               } else {
+                       if (snprintf(buf, buf_len, "%.0lfB", size) <= 0)
+                               return NULL;
+
+                       return buf;
+               }
+       }
+
+       return NULL;
+}
+
+static void _noti_list_item_ongoing_set_progressbar(Evas_Object *noti_list_item)
+{
+       notification_h noti = NULL;
+       Evas_Object *ic = NULL;
+       Evas_Object *old_ic = NULL;
+       double size = 0.0;
+       double percentage = 0.0;
+       notification_type_e type = NOTIFICATION_TYPE_NONE;
+       notification_ly_type_e layout = NOTIFICATION_LY_NONE ;
+
+       retif(noti_list_item == NULL, , "Invalid parameter!");
+
+       noti_list_item_h *noti_list_item_data = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
+       retif(noti_list_item_data == NULL, , "data is NULL");
+
+       noti_node_item *item = noti_list_item_data->data;
+       retif(item == NULL, , "data is NULL");
+
+       noti = item->noti;
+       retif(noti == NULL, , "noti is NULL");
+
+       notification_get_type(noti, &type);
+       if (type == NOTIFICATION_TYPE_ONGOING) {
+               notification_get_size(noti, &size);
+               notification_get_progress(noti, &percentage);
+               notification_get_layout(noti, &layout);
+
+               if (layout != NOTIFICATION_LY_ONGOING_EVENT) {
+                       if (percentage > 0 && percentage <= 1) {
+                               old_ic = _check_duplicated_progress_loading(noti_list_item,
+                                               "elm.swallow.progress", "quickpanel/list_progress");
+                               if (old_ic == NULL) {
+                                       ic = elm_progressbar_add(noti_list_item);
+                                       if (ic == NULL)
+                                               return ;
+                                       elm_object_style_set(ic, "quickpanel/list_progress");
+                               } else {
+                                       ic = old_ic;
+                               }
+
+                               elm_progressbar_value_set(ic, percentage);
+                               elm_progressbar_horizontal_set(ic, EINA_TRUE);
+                               elm_progressbar_pulse(ic, EINA_FALSE);
+                       } else if (size >= 0 && percentage == 0) {
+                               old_ic = _check_duplicated_progress_loading(noti_list_item,
+                                               "elm.swallow.progress", "quickpanel/pending_list");
+                               if (old_ic == NULL) {
+                                       ic = elm_progressbar_add(noti_list_item);
+                                       if (ic == NULL)
+                                               return ;
+                                       elm_object_style_set(ic, "quickpanel/pending_list");
+                               } else {
+                                       ic = old_ic;
+                               }
+
+                               elm_progressbar_horizontal_set(ic, EINA_TRUE);
+                               elm_progressbar_pulse(ic, EINA_TRUE);
+                       }
+               }
+       }
+
+       if (ic != NULL) {
+               elm_object_part_content_set(noti_list_item, "elm.swallow.progress", ic);
+       }
+}
+
+static void _noti_list_item_ongoing_set_icon(Evas_Object *noti_list_item)
+{
+       notification_h noti = NULL;
+       Evas_Object *ic = NULL;
+       Evas_Object *old_ic = NULL;
+       char *icon_path = NULL;
+       char *thumbnail_path = NULL;
+       char *main_icon_path = NULL;
+       char *sub_icon_path = NULL;
+
+       retif(noti_list_item == NULL, , "Invalid parameter!");
+
+       noti_list_item_h *noti_list_item_data = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
+       retif(noti_list_item_data == NULL, , "data is NULL");
+
+       noti_node_item *item = noti_list_item_data->data;
+       retif(item == NULL, , "data is NULL");
+
+       noti = item->noti;
+       retif(noti == NULL, , "noti is NULL");
+
+       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_THUMBNAIL,
+                              &thumbnail_path);
+       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, &icon_path);
+
+       if (thumbnail_path != NULL && icon_path != NULL) {
+               main_icon_path = thumbnail_path;
+               sub_icon_path = icon_path;
+       } else if (icon_path != NULL && thumbnail_path == NULL) {
+               main_icon_path = icon_path;
+               sub_icon_path = NULL;
+       } else if (icon_path == NULL && thumbnail_path != NULL) {
+               main_icon_path = thumbnail_path;
+               sub_icon_path = NULL;
+       } else {
+               main_icon_path = NULL;
+               sub_icon_path = NULL;
+       }
+
+       if (main_icon_path != NULL) {
+               old_ic = _check_duplicated_image_loading(noti_list_item,
+                               "elm.swallow.thumbnail", main_icon_path);
+
+               if (old_ic == NULL) {
+                       ic = elm_image_add(noti_list_item);
+                       elm_image_resizable_set(ic, EINA_FALSE, EINA_TRUE);
+                       elm_image_file_set(ic, main_icon_path, quickpanel_animated_image_get_groupname(main_icon_path));
+                       elm_object_part_content_set(noti_list_item, "elm.swallow.thumbnail", ic);
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+                       quickpanel_animated_image_add(ic);
+#endif
+               }
+       }
+
+       if (sub_icon_path != NULL) {
+               old_ic = _check_duplicated_image_loading(noti_list_item,
+                               "elm.swallow.icon", sub_icon_path);
+
+               if (old_ic == NULL) {
+                       ic = elm_image_add(noti_list_item);
+                       elm_image_resizable_set(ic, EINA_FALSE, EINA_TRUE);
+                       elm_image_file_set(ic, sub_icon_path, quickpanel_animated_image_get_groupname(sub_icon_path));
+                       elm_object_part_content_set(noti_list_item, "elm.swallow.icon", ic);
+               }
+       }
+
+       if (main_icon_path == NULL && sub_icon_path == NULL) {
+               old_ic = _check_duplicated_image_loading(noti_list_item,
+                               "elm.swallow.thumbnail", QP_DEFAULT_ICON);
+
+               if (old_ic == NULL) {
+                       ic = elm_image_add(noti_list_item);
+                       elm_image_resizable_set(ic, EINA_FALSE, EINA_TRUE);
+                       elm_image_file_set(ic, QP_DEFAULT_ICON, quickpanel_animated_image_get_groupname(QP_DEFAULT_ICON));
+                       elm_object_part_content_set(noti_list_item, "elm.swallow.thumbnail", ic);
+#ifdef QP_ANIMATED_IMAGE_ENABLE
+                       quickpanel_animated_image_add(ic);
+#endif
+               }
+       }
+}
+
+static void _noti_list_item_ongoing_set_text(Evas_Object *noti_list_item)
+{
+       notification_h noti = NULL;
+       notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
+       char *text = NULL;
+       char *text_utf8 = NULL;
+       char *domain = NULL;
+       char *dir = NULL;
+       char *pkgname = NULL;
+       char *caller_pkgname = NULL;
+       int group_id = 0, priv_id = 0;
+       char buf[128] = { 0, };
+       notification_type_e type = NOTIFICATION_TYPE_NONE;
+       double size = 0.0;
+       double percentage = 0.0;
+       notification_ly_type_e layout = NOTIFICATION_LY_NONE ;
+#ifdef QP_SCREENREADER_ENABLE
+       Evas_Object *ao = NULL;
+       Eina_Strbuf *str_buf = NULL;
+#endif
+
+       retif(noti_list_item == NULL, , "Invalid parameter!");
+
+       noti_list_item_h *noti_list_item_data = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
+       retif(noti_list_item_data == NULL, , "data is NULL");
+
+       noti_node_item *item = noti_list_item_data->data;
+       retif(item == NULL, , "data is NULL");
+
+       noti = item->noti;
+       retif(noti == NULL, , "noti is NULL");
+
+       /* Set text domain */
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL)
+               bindtextdomain(domain, dir);
+
+#ifdef QP_SCREENREADER_ENABLE
+       ao = quickpanel_screen_reader_object_get(noti_list_item,
+                       SCREEN_READER_OBJ_TYPE_EDJ_OBJECT, "accessibility", noti_list_item);
+       if (ao != NULL) {
+               str_buf = eina_strbuf_new();
+               elm_access_info_set(ao, ELM_ACCESS_TYPE, _("IDS_QP_BUTTON_NOTIFICATION"));
+       }
+#endif
+
+       /* Get pkgname & id */
+       notification_get_pkgname(noti, &pkgname);
+       notification_get_application(noti, &caller_pkgname);
+       notification_get_id(noti, &group_id, &priv_id);
+       notification_get_type(noti, &type);
+       notification_get_size(noti, &size);
+       notification_get_progress(noti, &percentage);
+       notification_get_layout(noti, &layout);
+
+       SDBG("percentage:%f size:%f", percentage, size);
+
+       noti_err = notification_get_text(noti,
+                                                       NOTIFICATION_TEXT_TYPE_TITLE,
+                                                       &text);
+
+       if (noti_err == NOTIFICATION_ERROR_NONE && text != NULL) {
+               quickpanel_util_char_replace(text, _NEWLINE, _SPACE);
+               _set_text_to_part(noti_list_item, "elm.text.title", text);
+#ifdef QP_SCREENREADER_ENABLE
+               _check_and_add_to_buffer(str_buf, text);
+#endif
+       }
+
+       noti_err = notification_get_text(noti,
+                       NOTIFICATION_TEXT_TYPE_CONTENT,
+                                                       &text);
+       if (noti_err == NOTIFICATION_ERROR_NONE && text != NULL) {
+               if (layout == NOTIFICATION_LY_ONGOING_EVENT) {
+                       text_utf8 = elm_entry_utf8_to_markup(text);
+                       if (text_utf8 != NULL) {
+                               _set_text_to_part(noti_list_item, "elm.text.content.multiline", text_utf8);
+                               free(text_utf8);
+                       } else {
+                               _set_text_to_part(noti_list_item, "elm.text.content.multiline", text);
+                       }
+
+                       elm_object_signal_emit(noti_list_item, "elm,state,elm.text.content.multiline,active", "elm");
+#ifdef QP_SCREENREADER_ENABLE
+                       _check_and_add_to_buffer(str_buf, text);
+#endif
+               } else {
+                       quickpanel_util_char_replace(text, _NEWLINE, _SPACE);
+                       _set_text_to_part(noti_list_item, "elm.text.content", text);
+                       elm_object_signal_emit(noti_list_item, "elm,state,elm.text.content,active", "elm");
+#ifdef QP_SCREENREADER_ENABLE
+                       _check_and_add_to_buffer(str_buf, text);
+#endif
+               }
+       }
+
+       if (layout != NOTIFICATION_LY_ONGOING_EVENT) {
+               text = _noti_get_progress(noti, buf,
+                                                                         sizeof(buf));
+               if (text != NULL) {
+                       quickpanel_util_char_replace(text, _NEWLINE, _SPACE);
+                       _set_text_to_part(noti_list_item, "elm.text.time", text);
+#ifdef QP_SCREENREADER_ENABLE
+                       _check_and_add_to_buffer(str_buf, text);
+#endif
+               } else {
+                       _set_text_to_part(noti_list_item, "elm.text.time", "");
+               }
+       }
+
+#ifdef QP_SCREENREADER_ENABLE
+       if (ao != NULL && str_buf != NULL) {
+               elm_access_info_set(ao, ELM_ACCESS_INFO, eina_strbuf_string_get(str_buf));
+               eina_strbuf_free(str_buf);
+       }
+#endif
+}
+
+static void _noti_list_item_call_item_cb(Evas_Object *noti_list_item, const char *emission) {
+       retif(noti_list_item == NULL, , "invalid parameter");
+       retif(emission == NULL, , "invalid parameter");
+
+       static double time_called = 0.0;
+
+       if (time_called == 0) {
+               time_called = ecore_loop_time_get();
+       } else {
+               if ((ecore_loop_time_get() - time_called) < 0.4) {
+                       DBG("click rejected");
+                       return;
+               }
+               time_called = ecore_loop_time_get();
+       }
+
+       void (*cb)(void *data, Evas_Object *obj) = NULL;
+       noti_list_item_h *data = NULL;
+
+       data = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
+
+       if (strncmp(emission,"selected", strlen("selected")) == 0) {
+               cb = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_CB_SELECTED_ITEM);
+
+               if (cb != NULL && data != NULL) {
+                       cb(data->data, noti_list_item);
+               }
+       }
+       if (strncmp(emission,"button_1", strlen("button_1")) == 0) {
+               cb = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_CB_BUTTON_1);
+
+               if (cb != NULL && data != NULL) {
+                       cb(data->data, noti_list_item);
+               }
+       }
+       if (strncmp(emission,"deleted", strlen("deleted")) == 0) {
+               cb = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_CB_DELETED_ITEM);
+
+               if (cb != NULL && data != NULL) {
+                       cb(data->data, noti_list_item);
+               }
+       }
+}
+
+static void _signal_cb(void *data, Evas_Object *o, const char *emission, const char *source)
+{
+       retif(data == NULL, , "invalid parameter");
+       retif(o == NULL, , "invalid parameter");
+       retif(emission == NULL, , "invalid parameter");
+
+       _noti_list_item_call_item_cb(o, emission);
+}
+
+HAPI Evas_Object *noti_list_item_create(Evas_Object *parent, notification_ly_type_e layout) {
+       Evas_Object *box = NULL;
+
+       retif(parent == NULL, NULL, "Invalid parameter!");
+
+       box = elm_layout_add(parent);
+
+       elm_layout_file_set(box, DEFAULT_EDJ,
+                       "quickpanel/listitem/default");
+
+       evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       quickpanel_initial_resize(box, QP_THEME_LIST_ITEM_ONGOING_HEIGHT);
+       evas_object_show(box);
+
+       noti_list_item_h *box_h = (noti_list_item_h *) malloc(sizeof(noti_list_item_h));
+       box_h->layout = layout;
+       box_h->status = STATE_NORMAL;
+       box_h->data = NULL;
+       evas_object_data_set(box, E_DATA_NOTI_LIST_ITEM_H, box_h);
+       DBG("created box:%p", box);
+
+       //add event
+       elm_object_signal_callback_add(box,
+                       "selected",
+                       "edje",
+                       _signal_cb,
+                       parent
+       );
+
+       //add event
+       elm_object_signal_callback_add(box,
+                       "button_1",
+                       "edje",
+                       _signal_cb,
+                       parent
+       );
+
+       //add event
+       elm_object_signal_callback_add(box,
+                       "deleted",
+                       "edje",
+                       _signal_cb,
+                       parent
+       );
+
+       return box;
+}
+
+static void _noti_list_item_set_layout_ongoing_noti(Evas_Object *noti_list_item,
+               notification_h noti) {
+       retif(noti_list_item == NULL, , "invalid parameter");
+
+       _noti_list_item_ongoing_set_progressbar(noti_list_item);
+       _noti_list_item_ongoing_set_icon(noti_list_item);
+       _noti_list_item_ongoing_set_text(noti_list_item);
+}
+
+static void _noti_list_item_set_layout(Evas_Object *noti_list_item, notification_h noti,
+               notification_ly_type_e layout) {
+
+       switch (layout) {
+               case NOTIFICATION_LY_NOTI_EVENT_SINGLE:
+                       break;
+               case NOTIFICATION_LY_NOTI_EVENT_MULTIPLE:
+                       break;
+               case NOTIFICATION_LY_NOTI_THUMBNAIL:
+                       break;
+               case NOTIFICATION_LY_NONE:
+                       break;
+               case NOTIFICATION_LY_ONGOING_EVENT:
+               case NOTIFICATION_LY_ONGOING_PROGRESS:
+                       _noti_list_item_set_layout_ongoing_noti(noti_list_item, noti);
+                       break;
+               case NOTIFICATION_LY_MAX:
+                       ERR("not supported layout type:%d", layout);
+                       break;
+       }
+}
+
+HAPI void noti_list_item_remove(Evas_Object *noti_list_item) {
+
+       retif(noti_list_item == NULL, , "invalid parameter");
+
+       noti_list_item_h *noti_list_item_h = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
+
+       if (noti_list_item_h != NULL)
+               free(noti_list_item_h);
+
+       evas_object_data_del(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
+       evas_object_data_del(noti_list_item, E_DATA_NOTI_LIST_CB_SELECTED_ITEM);
+       evas_object_data_del(noti_list_item, E_DATA_NOTI_LIST_CB_BUTTON_1);
+       evas_object_data_del(noti_list_item, E_DATA_NOTI_LIST_CB_DELETED_ITEM);
+
+       evas_object_del(noti_list_item);
+}
+
+HAPI void noti_list_item_update(Evas_Object *noti_list_item) {
+       retif(noti_list_item == NULL, , "invalid parameter");
+
+       _noti_list_item_ongoing_set_progressbar(noti_list_item);
+       _noti_list_item_ongoing_set_icon(noti_list_item);
+       _noti_list_item_ongoing_set_text(noti_list_item);
+}
+
+HAPI void noti_list_item_set_status(Evas_Object *noti_list_item, int status) {
+       retif(noti_list_item == NULL, , "invalid parameter");
+
+       noti_list_item_h *noti_list_item_h = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
+
+       if (noti_list_item_h != NULL) {
+               noti_list_item_h->status = status;
+       }
+}
+
+HAPI int noti_list_item_get_status(Evas_Object *noti_list_item) {
+       retif(noti_list_item == NULL, STATE_NORMAL, "invalid parameter");
+
+       noti_list_item_h *noti_list_item_h = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
+
+       if (noti_list_item_h != NULL) {
+               return noti_list_item_h->status;
+       }
+
+       return STATE_DELETING;
+}
+
+HAPI void noti_list_item_node_set(Evas_Object *noti_list_item, void *data) {
+       retif(noti_list_item == NULL, , "invalid parameter");
+       retif(data == NULL, , "invalid parameter");
+
+       noti_list_item_h *noti_list_item_data = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
+
+       if (noti_list_item_data != NULL) {
+               noti_list_item_data->data = data;
+
+               if (data != NULL) {
+                       noti_node_item *item = data;
+                       _noti_list_item_set_layout(noti_list_item, item->noti, noti_list_item_data->layout);
+               }
+       }
+}
+
+HAPI void *noti_list_item_node_get(Evas_Object *noti_list_item) {
+       retif(noti_list_item == NULL, NULL, "invalid parameter");
+
+       noti_list_item_h *noti_list_item_data = evas_object_data_get(noti_list_item, E_DATA_NOTI_LIST_ITEM_H);
+
+       if (noti_list_item_data != NULL) {
+               return noti_list_item_data->data;
+       }
+
+       return NULL;
+}
+
+#ifdef QP_SCREENREADER_ENABLE
+static void
+_noti_list_item_selected_activate_cb(void *user_data, Evas_Object *part_obj, Elm_Object_Item *item) {
+       Evas_Object *noti_list_item = user_data;
+
+       retif(noti_list_item == NULL, , "invalid parameter");
+
+       _noti_list_item_call_item_cb(noti_list_item, "selected");
+}
+#endif
+
+HAPI void noti_list_item_set_item_selected_cb(Evas_Object *noti_list_item,
+               void(*selected_cb)(void *data, Evas_Object *obj)) {
+       retif(noti_list_item == NULL, , "invalid parameter");
+       retif(selected_cb == NULL, , "invalid parameter");
+
+       evas_object_data_set(noti_list_item, E_DATA_NOTI_LIST_CB_SELECTED_ITEM, selected_cb);
+
+#ifdef QP_SCREENREADER_ENABLE
+       Evas_Object *ao = NULL;
+       ao = quickpanel_screen_reader_object_get(noti_list_item,
+                       SCREEN_READER_OBJ_TYPE_EDJ_OBJECT, "accessibility", noti_list_item);
+       if (ao != NULL) {
+               elm_access_activate_cb_set(ao, _noti_list_item_selected_activate_cb, noti_list_item);
+       }
+#endif
+}
+
+HAPI void noti_list_item_set_item_button_1_cb(Evas_Object *noti_list_item,
+               void(*button_1_cb)(void *data, Evas_Object *obj)) {
+       retif(noti_list_item == NULL, , "invalid parameter");
+       retif(button_1_cb == NULL, , "invalid parameter");
+
+       evas_object_data_set(noti_list_item, E_DATA_NOTI_LIST_CB_BUTTON_1, button_1_cb);
+}
+
+HAPI void noti_list_item_set_item_deleted_cb(Evas_Object *noti_list_item,
+               void(*deleted_cb)(void *data, Evas_Object *obj)) {
+       retif(noti_list_item == NULL, , "invalid parameter");
+       retif(deleted_cb == NULL, , "invalid parameter");
+
+       evas_object_data_set(noti_list_item, E_DATA_NOTI_LIST_CB_DELETED_ITEM, deleted_cb);
+}
diff --git a/daemon/notifications/noti_list_item.h b/daemon/notifications/noti_list_item.h
new file mode 100755 (executable)
index 0000000..b829ae5
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 __QUICKPANEL_NOTI_LIST_ITEM_H__
+#define __QUICKPANEL_NOTI_LIST_ITEM_H__
+
+#include <notification.h>
+
+#define STATE_NORMAL 1
+#define STATE_DELETING 0
+
+#define E_DATA_NOTI_LIST_ITEM_H "noti_list_item"
+#define E_DATA_NOTI_LIST_CB_SELECTED_ITEM "noti_list_item_cb_selected"
+#define E_DATA_NOTI_LIST_CB_BUTTON_1 "noti_list_item_cb_button_1"
+#define E_DATA_NOTI_LIST_CB_DELETED_ITEM "noti_list_item_cb_deleted"
+
+typedef struct _noti_list_item_h {
+       int status;
+       void *data;
+       notification_ly_type_e  layout;
+} noti_list_item_h;
+
+Evas_Object *noti_list_item_create(Evas_Object *parent, notification_ly_type_e layout);
+void noti_list_item_node_set(Evas_Object *noti_list_item, void *data);
+void *noti_list_item_node_get(Evas_Object *noti_list_item);
+void noti_list_item_remove(Evas_Object *noti_list_item);
+void noti_list_item_set_item_selected_cb(Evas_Object *noti_list_item,
+               void(*selected_cb)(void *data, Evas_Object *obj));
+void noti_list_item_set_item_button_1_cb(Evas_Object *noti_list_item,
+               void(*button_1_cb)(void *data, Evas_Object *obj));
+void noti_list_item_set_item_deleted_cb(Evas_Object *noti_list_item,
+               void(*deleted_cb)(void *data, Evas_Object *obj));
+int noti_list_item_get_status(Evas_Object *noti_list_item);
+void noti_list_item_set_status(Evas_Object *noti_list_item, int status);
+void noti_list_item_update(Evas_Object *noti_list_item);
+
+
+#endif
diff --git a/daemon/notifications/noti_listbox.c b/daemon/notifications/noti_listbox.c
new file mode 100755 (executable)
index 0000000..51fa345
--- /dev/null
@@ -0,0 +1,636 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 "quickpanel-ui.h"
+#include "common.h"
+#include "list_util.h"
+#include "quickpanel_def.h"
+#include "noti_listbox.h"
+#include "noti_list_item.h"
+#include "vi_manager.h"
+
+#define E_DATA_LAYOUT_PORTRAIT "layout_portrait"
+#define E_DATA_LAYOUT_LANDSCAPE "layout_landscape"
+#define E_DATA_CB_DELETE_ITEM "cb_delete_item"
+#define E_DATA_CB_REMOVED "cb_removed"
+#define E_DATA_APP_DATA "app_data"
+
+static Eina_Bool _anim_init_cb(void *data);
+static Eina_Bool _anim_job_cb(void *data);
+static Eina_Bool _anim_done_cb(void *data);
+
+static int _listbox_layout_item_valid(Evas_Object *container, Evas_Object *item)
+{
+       Eina_List *list = NULL;
+       retif(container == NULL, 0, "invalid parameter");
+       list = elm_box_children_get(container);
+       retif(list == NULL, 0, "invalid parameter");
+
+       if (eina_list_data_find(list, item) != NULL) {
+               return 1;
+       }
+
+       return 0;
+}
+
+static void _listbox_layout_get_coord(Evas_Object *container, int is_prepend,
+       int *coord_x, int *coord_y) {
+       int x, y, h;
+       int off_y = 0;
+       struct appdata *ad = quickpanel_get_app_data();
+
+       retif(container == NULL, , "invalid parameter");
+       retif(ad == NULL, , "invalid data.");
+
+       if (is_prepend == 0) {
+               Eina_List *l;
+               Eina_List *l_next;
+               Evas_Object *obj = NULL;
+               Eina_List *item_list = elm_box_children_get(container);
+
+               EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
+               {
+                       if (obj != NULL) {
+                               evas_object_geometry_get(obj, NULL, NULL, NULL, &h);
+                               off_y += h;
+                       }
+               }
+       }
+
+       evas_object_geometry_get(container, &x, &y, NULL, &h);
+       if (off_y == 0 || y == 0) {
+               ERR("Failed get a valid height offset : %d %d", off_y, y);
+       }
+
+       if (coord_x != NULL) {
+               *coord_x = x;
+       }
+       if (coord_y != NULL) {
+               *coord_y = y + off_y;
+       }
+}
+
+HAPI Evas_Object *listbox_create(Evas_Object *parent, void *data) {
+       struct appdata *ad = data;
+       Evas_Object *listbox = NULL;
+
+       retif(parent == NULL, NULL, "invalid parameter");
+       retif(data == NULL, NULL, "invalid parameter");
+
+       listbox = elm_box_add(parent);
+       evas_object_size_hint_weight_set(listbox, EVAS_HINT_EXPAND,
+                       EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(listbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_box_horizontal_set(listbox, EINA_FALSE);
+       evas_object_show(listbox);
+
+       evas_object_data_set(listbox, E_DATA_CB_DELETE_ITEM, NULL);
+       evas_object_data_set(listbox, E_DATA_APP_DATA, ad);
+
+       qp_item_data *qid
+               = quickpanel_list_util_item_new(QP_ITEM_TYPE_ONGOING_NOTI, NULL);
+       quickpanel_list_util_item_set_tag(listbox, qid);
+
+       return listbox;
+}
+
+HAPI void listbox_remove(Evas_Object *listbox) {
+       retif(listbox == NULL, , "invalid parameter");
+
+       listbox_remove_all_item(listbox, 0);
+       evas_object_data_del(listbox, E_DATA_CB_DELETE_ITEM);
+       evas_object_data_del(listbox, E_DATA_APP_DATA);
+       quickpanel_list_util_item_del_tag(listbox);
+       evas_object_del(listbox);
+}
+
+HAPI void listbox_set_item_deleted_cb(Evas_Object *listbox,
+               void(*deleted_cb)(void *data, Evas_Object *obj)) {
+       retif(listbox == NULL, , "invalid parameter");
+       retif(deleted_cb == NULL, , "invalid parameter");
+
+       evas_object_data_set(listbox, E_DATA_CB_DELETE_ITEM, deleted_cb);
+}
+
+static void _listbox_call_item_deleted_cb(Evas_Object *listbox, void *data,
+               Evas_Object *obj) {
+       retif(listbox == NULL, , "invalid parameter");
+
+       void (*deleted_cb)(void *data, Evas_Object *obj) = NULL;
+
+       deleted_cb = evas_object_data_get(listbox, E_DATA_CB_DELETE_ITEM);
+
+       if (deleted_cb != NULL) {
+               deleted_cb(data, obj);
+       }
+}
+
+HAPI void listbox_add_item(Evas_Object *listbox, Evas_Object *item, int is_prepend) {
+       QP_VI *vi = NULL;
+       const char *signal = NULL;
+       retif(listbox == NULL, , "invalid parameter");
+       retif(item == NULL, , "invalid parameter");
+
+       struct appdata *ad = evas_object_data_get(listbox, E_DATA_APP_DATA);
+
+       if (ad != NULL) {
+               if (ad->angle == 270 || ad->angle == 90) {
+                       signal = "box.landscape";
+               } else {
+                       signal = "box.portrait";
+               }
+       }
+
+       DBG("set to %s, %x", signal, item);
+
+       elm_object_signal_emit(item, signal, "box.prog");
+       edje_object_message_signal_process(_EDJ(item));
+       elm_layout_sizing_eval(item);
+
+       vi = quickpanel_vi_new_with_data(
+                       VI_OP_INSERT,
+                       QP_ITEM_TYPE_ONGOING_NOTI,
+                       listbox,
+                       item,
+                       _anim_init_cb,
+                       _anim_job_cb,
+                       _anim_done_cb,
+                       _anim_done_cb,
+                       vi,
+                       NULL,
+                       is_prepend,
+                       0);
+       quickpanel_vi_start(vi);
+}
+
+HAPI void listbox_remove_item(Evas_Object *listbox, Evas_Object *item, int with_animation) {
+       QP_VI *vi = NULL;
+       retif(listbox == NULL, , "invalid parameter");
+       retif(item == NULL, , "invalid parameter");
+
+
+       DBG("remove:%p", item);
+
+       if (with_animation == 1) {
+               vi = quickpanel_vi_new_with_data(
+                               VI_OP_DELETE,
+                               QP_ITEM_TYPE_ONGOING_NOTI,
+                               listbox,
+                               item,
+                               _anim_init_cb,
+                               _anim_job_cb,
+                               _anim_done_cb,
+                               _anim_done_cb,
+                               vi,
+                               NULL,
+                               0,
+                               0);
+               quickpanel_vi_start(vi);
+       } else {
+               DBG("%p", item);
+               void *node = noti_list_item_node_get(item);
+               elm_box_unpack(listbox, item);
+               noti_list_item_remove(item);
+               _listbox_call_item_deleted_cb(listbox,
+                               node, NULL);
+       }
+}
+
+static void _anim_job_delete_all(void *data) {
+       QP_VI *vi = data;
+       retif(vi == NULL, , "invalid parameter");
+
+       quickpanel_vi_done(vi);
+}
+
+static void _anim_done_delete_all(void *data) {
+       QP_VI *vi = data;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = NULL;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+
+       Evas_Object *listbox = vi->container;
+
+       item_list = elm_box_children_get(listbox);
+       retif(item_list == NULL, , "invalid parameter");
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
+       {
+               if (obj != NULL)
+               {
+                       DBG("try to remove:%p", obj);
+                       listbox_remove_item(listbox, obj, EINA_TRUE);
+               }
+       }
+}
+
+HAPI void listbox_remove_all_item(Evas_Object *listbox, int with_animation) {
+       QP_VI *vi = NULL;
+       retif(listbox == NULL, , "invalid parameter");
+
+       vi = quickpanel_vi_new_with_data(
+                       VI_OP_DELETE_ALL,
+                       QP_ITEM_TYPE_ONGOING_NOTI,
+                       listbox,
+                       NULL,
+                       _anim_init_cb,
+                       _anim_job_cb,
+                       _anim_done_cb,
+                       _anim_done_cb,
+                       vi,
+                       NULL,
+                       0,
+                       0);
+       quickpanel_vi_start(vi);
+}
+
+HAPI void listbox_update(Evas_Object *listbox) {
+       retif(listbox == NULL, , "invalid parameter");
+
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj;
+       Eina_List *item_list = elm_box_children_get(listbox);
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
+       {
+               noti_list_item_update(obj);
+       }
+}
+
+HAPI void listbox_update_item(Evas_Object *listbox, Evas_Object *item) {
+       retif(listbox == NULL, , "invalid parameter");
+       retif(item == NULL, , "invalid parameter");
+
+       if (_listbox_layout_item_valid(listbox, item)) {
+               noti_list_item_update(item);
+       }
+}
+
+HAPI void listbox_rotation(Evas_Object *listbox, int angle) {
+       const char *signal = NULL;
+
+       retif(listbox == NULL, , "invalid parameter");
+
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj;
+       Eina_List *item_list = elm_box_children_get(listbox);
+
+       if (angle == 270 || angle == 90) {
+               signal = "box.landscape";
+       } else {
+               signal = "box.portrait";
+       }
+
+       DBG("all count:%d", eina_list_count(item_list));
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
+       {
+               if (obj != NULL) {
+                       elm_object_signal_emit(obj, signal, "box.prog");
+                       edje_object_message_signal_process(_EDJ(obj));
+                       elm_layout_sizing_eval(obj);
+                       DBG("set to %s, %x", signal, obj);
+               }
+       }
+
+       DBG("rotation angle is %d", angle);
+}
+
+static void _anim_init_insert(void *data) {
+       QP_VI *vi = data;
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *container = vi->container;
+       Evas_Object *item = vi->target;
+
+       evas_object_clip_set(item, evas_object_clip_get(container));
+       evas_object_color_set(item, 0, 0, 0, 0);
+}
+
+static void _anim_job_insert(void *data) {
+       QP_VI *vi = data;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = NULL;
+       int item_width, item_height = 0;
+       int coord_x = 0, coord_y = 0;
+       int is_prepend = 0;
+       Elm_Transit *transit_layout_parent = NULL;
+       Elm_Transit *transit_layout = NULL;
+       Elm_Transit *transit_fadein = NULL;
+       Evas_Object *container = NULL;
+       Evas_Object *item = NULL;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       container = vi->container;
+       item = vi->target;
+       is_prepend = vi->extra_flag_1;
+       item_list = elm_box_children_get(container);
+
+       _listbox_layout_get_coord(container, is_prepend, &coord_x, &coord_y);
+       evas_object_move(item, coord_x, coord_y);
+
+       evas_object_geometry_get(item, NULL, NULL, &item_width, &item_height);
+       if (item_width == 0 && item_height == 0) {
+               ERR("failed to get a size of item %d %d", item_width, item_height);
+               evas_object_size_hint_min_get (item, &item_width, &item_height);
+       }
+
+       transit_layout_parent = quickpanel_list_get_reorder_transit(container, NULL, item_height);
+
+       if (is_prepend) {
+               EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
+               {
+                       transit_layout = elm_transit_add();
+                       if (transit_layout != NULL) {
+                               elm_transit_effect_translation_add(transit_layout, 0, 0, 0, item_height);
+                               elm_transit_object_add(transit_layout, obj);
+                               elm_transit_duration_set(transit_layout,
+                                               quickpanel_vim_get_duration(VI_OP_REORDER));
+                               elm_transit_tween_mode_set(transit_layout,
+                                               quickpanel_vim_get_tweenmode(VI_OP_REORDER));
+                               elm_transit_objects_final_state_keep_set(transit_layout, EINA_TRUE);
+#ifdef TBD
+                               if (transit_layout_parent != NULL) {
+                                       elm_transit_chain_transit_add(transit_layout_parent, transit_layout);
+                               } else {
+                                       elm_transit_go(transit_layout);
+                               }
+#else
+                               elm_transit_go(transit_layout);
+#endif
+                       } else {
+                               ERR("failed to create a transit");
+                       }
+               }
+       }
+
+       transit_fadein = elm_transit_add();
+       if (transit_fadein != NULL) {
+               elm_transit_object_add(transit_fadein, item);
+               elm_transit_effect_color_add(transit_fadein, 0, 0, 0, 0, 255, 255, 255, 255);
+               elm_transit_duration_set(transit_fadein,
+                               quickpanel_vim_get_duration(VI_OP_INSERT));
+               elm_transit_tween_mode_set(transit_fadein,
+                               quickpanel_vim_get_tweenmode(VI_OP_INSERT));
+               elm_transit_del_cb_set(transit_fadein, quickpanel_vi_done_cb_for_transit, vi);
+
+               if (transit_layout != NULL) {
+                       elm_transit_chain_transit_add(transit_layout, transit_fadein);
+               } else {
+                       if (transit_layout_parent != NULL) {
+                               elm_transit_chain_transit_add(transit_layout_parent, transit_fadein);
+                       } else {
+                               elm_transit_go(transit_fadein);
+                       }
+               }
+       } else {
+               ERR("Failed to create all the transit");
+               quickpanel_vi_done(vi);
+       }
+}
+
+static void _anim_done_insert(void *data) {
+       QP_VI *vi = data;
+       int is_prepend = 0;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *container = vi->container;
+       Evas_Object *item = vi->target;
+       is_prepend = vi->extra_flag_1;
+
+       evas_object_color_set(item, 255, 255, 255, 255);
+
+       if (is_prepend == LISTBOX_PREPEND)
+               elm_box_pack_start(container, item);
+       else
+               elm_box_pack_end(container, item);
+}
+
+static void _anim_job_delete(void *data) {
+       QP_VI *vi = data;
+       Eina_List *l;
+       Eina_List *l_next;
+       Evas_Object *obj = NULL;
+       Eina_List *item_list = NULL;
+       int is_start_relayout = 0;
+       int item_width, item_height = 0;
+       Elm_Transit *transit_layout_parent = NULL;
+       Elm_Transit *transit_layout = NULL;
+       Elm_Transit *transit_fadeout = NULL;
+       Evas_Object *container = NULL;
+       Evas_Object *item = NULL;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       container = vi->container;
+       item = vi->target;
+       item_list = elm_box_children_get(container);
+
+       evas_object_geometry_get(item, NULL, NULL, &item_width, &item_height);
+       if (item_width == 0 && item_height == 0) {
+               ERR("failed to get a size of item %d %d", item_width, item_height);
+               evas_object_size_hint_min_get (item, &item_width, &item_height);
+       }
+
+       transit_fadeout = elm_transit_add();
+       if (transit_fadeout != NULL) {
+               elm_transit_object_add(transit_fadeout, item);
+               elm_transit_effect_color_add(transit_fadeout, 255, 255, 255, 255, 0, 0, 0, 0);
+               elm_transit_objects_final_state_keep_set(transit_fadeout, EINA_TRUE);
+               elm_transit_duration_set(transit_fadeout, quickpanel_vim_get_duration(VI_OP_DELETE));
+               elm_transit_go(transit_fadeout);
+       } else {
+               ERR("failed to create a transit");
+       }
+
+       EINA_LIST_FOREACH_SAFE(item_list, l, l_next, obj)
+       {
+               if (obj == item) {
+                       is_start_relayout = 1;
+               } else if (obj != NULL && is_start_relayout == 1) {
+                       transit_layout = elm_transit_add();
+                       if (transit_layout != NULL) {
+                               elm_transit_effect_translation_add(transit_layout, 0, 0, 0, -item_height);
+                               elm_transit_object_add(transit_layout, obj);
+                               elm_transit_duration_set(transit_layout,
+                                               quickpanel_vim_get_duration(VI_OP_REORDER));
+                               elm_transit_tween_mode_set(transit_layout,
+                                               quickpanel_vim_get_tweenmode(VI_OP_REORDER));
+                               elm_transit_objects_final_state_keep_set(transit_layout, EINA_TRUE);
+                               if (transit_fadeout != NULL) {
+                                       elm_transit_chain_transit_add(transit_fadeout, transit_layout);
+                               }
+                       } else {
+                               ERR("failed to create a transit");
+                       }
+               }
+       }
+
+#ifdef TBD
+       transit_layout_parent = quickpanel_list_get_reorder_transit(container,
+                       (transit_layout != NULL) ? transit_layout : transit_fadeout, -item_height);
+#else
+       transit_layout_parent = quickpanel_list_get_reorder_transit(container,
+                       transit_fadeout, -item_height);
+#endif
+
+       if (transit_layout_parent != NULL) {
+               elm_transit_del_cb_set(transit_layout_parent, quickpanel_vi_done_cb_for_transit,
+                                               vi);
+       } else if (transit_layout != NULL) {
+               elm_transit_del_cb_set(transit_layout, quickpanel_vi_done_cb_for_transit,
+                                               vi);
+       } else if (transit_fadeout != NULL) {
+               elm_transit_del_cb_set(transit_fadeout, quickpanel_vi_done_cb_for_transit,
+                                               vi);
+       } else {
+               ERR("Failed to create all the transit");
+               quickpanel_vi_done(vi);
+       }
+}
+
+static void _anim_done_delete(void *data) {
+       QP_VI *vi = data;
+
+       retif(vi == NULL, , "invalid parameter");
+       retif(vi->container == NULL, , "invalid parameter");
+       retif(vi->target == NULL, , "invalid parameter");
+
+       Evas_Object *container = vi->container;
+       Evas_Object *item = vi->target;
+
+       elm_box_unpack(container, item);
+       noti_list_item_remove(item);
+       _listbox_call_item_deleted_cb(container,
+                       noti_list_item_node_get(item), NULL);
+}
+
+static Eina_Bool _anim_init_cb(void *data) {
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_init_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_init_insert,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       int i = 0;
+       for (i = 0; anim_init_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_init_table[i].op_type != vi->op_type)
+                       continue;
+
+               anim_init_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _anim_job_cb(void *data) {
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_job_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_job_insert,
+               },
+               {
+                       .op_type = VI_OP_DELETE,
+                       .handler = _anim_job_delete,
+               },
+               {
+                       .op_type = VI_OP_DELETE_ALL,
+                       .handler = _anim_job_delete_all,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       int i = 0;
+       for (i = 0; anim_job_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_job_table[i].op_type != vi->op_type)
+                       continue;
+
+               anim_job_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _anim_done_cb(void *data) {
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       static qp_vi_op_table anim_done_table[] = {
+               {
+                       .op_type = VI_OP_INSERT,
+                       .handler = _anim_done_insert,
+               },
+               {
+                       .op_type = VI_OP_DELETE,
+                       .handler = _anim_done_delete,
+               },
+               {
+                       .op_type = VI_OP_DELETE_ALL,
+                       .handler = _anim_done_delete_all,
+               },
+               {
+                       .op_type = VI_OP_NONE,
+                       .handler = NULL,
+               },
+       };
+
+       int i = 0;
+       for (i = 0; anim_done_table[i].op_type != VI_OP_NONE; i++) {
+               if (anim_done_table[i].op_type != vi->op_type)
+                       continue;
+
+               anim_done_table[i].handler(vi);
+               break;
+       }
+
+       return EINA_TRUE;
+}
diff --git a/daemon/notifications/noti_listbox.h b/daemon/notifications/noti_listbox.h
new file mode 100755 (executable)
index 0000000..9171bd0
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 __QUICKPANEL_NOTI_LISTBOX_H__
+#define __QUICKPANEL_NOTI_LISTBOX_H__
+
+#define LISTBOX_PREPEND 1
+#define LISTBOX_APPEND 0
+
+Evas_Object *listbox_create(Evas_Object *parent, void *data);
+void listbox_remove(Evas_Object *listbox);
+void listbox_add_item(Evas_Object *listbox, Evas_Object *item, int is_prepend);
+void listbox_remove_item(Evas_Object *listbox, Evas_Object *item, int with_animation);
+void listbox_rotation(Evas_Object *listbox, int angle);
+void listbox_remove_all_item(Evas_Object *listbox, int with_animation);
+void listbox_set_item_deleted_cb(Evas_Object *listbox,
+               void(*deleted_cb)(void *data, Evas_Object *obj));
+void listbox_update(Evas_Object *listbox);
+void listbox_update_item(Evas_Object *listbox, Evas_Object *item);
+#endif
diff --git a/daemon/notifications/noti_node.c b/daemon/notifications/noti_node.c
new file mode 100755 (executable)
index 0000000..a8199cf
--- /dev/null
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 "quickpanel-ui.h"
+#include "common.h"
+#include "list_util.h"
+#include "noti_node.h"
+
+static void _noti_node_free(noti_node_item *node);
+
+HAPI void noti_node_create(noti_node **handle)
+{
+       retif(handle == NULL, , "Invalid parameter!");
+
+       *handle = (noti_node *)malloc(sizeof(noti_node));
+
+       if (*handle != NULL) {
+               (*handle)->table = g_hash_table_new_full(g_direct_hash, g_direct_equal,
+                                                       NULL,
+                                                       (GDestroyNotify)_noti_node_free);
+
+               (*handle)->n_ongoing = 0;
+               (*handle)->n_noti = 0;
+       } else {
+               *handle = NULL;
+       }
+}
+
+HAPI void noti_node_destroy(noti_node **handle)
+{
+       retif(handle == NULL, , "Invalid parameter!");
+       retif(*handle == NULL, , "Invalid parameter!");
+
+       g_hash_table_remove_all((*handle)->table);
+       g_hash_table_destroy((*handle)->table);
+       (*handle)->table = NULL;
+
+       free((*handle));
+       *handle = NULL;
+}
+
+HAPI noti_node_item *noti_node_add(noti_node *handle, notification_h noti, void *view)
+{
+       int priv_id = 0;
+       notification_type_e noti_type = NOTIFICATION_TYPE_NONE;
+       noti_node_item *node = NULL;
+
+       retif(handle == NULL || noti == NULL, NULL, "Invalid parameter!");
+
+       if (notification_get_id(noti, NULL, &priv_id) == NOTIFICATION_ERROR_NONE) {
+               node = malloc(sizeof(noti_node_item));
+               if (!node) {
+                       ERR("fail to alloc item");
+                       return NULL;
+               }
+
+               node->noti = noti;
+               node->view = view;
+
+               g_hash_table_insert(handle->table, GINT_TO_POINTER(priv_id), (gpointer *)node);
+
+               notification_get_type(noti, &noti_type);
+
+               if (noti_type == NOTIFICATION_TYPE_NOTI)
+                       handle->n_noti++;
+               else if (noti_type == NOTIFICATION_TYPE_ONGOING)
+                       handle->n_ongoing++;
+
+               return node;
+       }
+
+       return NULL;
+}
+
+HAPI void noti_node_remove(noti_node *handle, int priv_id)
+{
+       notification_type_e noti_type = NOTIFICATION_TYPE_NONE;
+
+       retif(handle == NULL, , "Invalid parameter!");
+       retif(handle->table == NULL, , "Invalid parameter!");
+
+       noti_node_item *item = noti_node_get(handle, priv_id);
+
+       if (item != NULL) {
+               if (item->noti != NULL) {
+                       notification_get_type(item->noti, &noti_type);
+
+                       if (noti_type == NOTIFICATION_TYPE_NOTI)
+                               handle->n_noti--;
+                       else if (noti_type == NOTIFICATION_TYPE_ONGOING)
+                               handle->n_ongoing--;
+               }
+
+               notification_free(item->noti);
+               item->noti = NULL;
+               item->view = NULL;
+
+               if (g_hash_table_remove(handle->table, GINT_TO_POINTER(priv_id)))
+               {
+                       INFO("success to remove %d", priv_id);
+               }
+       }
+}
+
+HAPI void noti_node_remove_all(noti_node *handle)
+{
+       retif(handle == NULL, , "Invalid parameter!");
+       retif(handle->table == NULL, , "Invalid parameter!");
+
+       g_hash_table_remove_all(handle->table);
+       handle->n_noti = 0;
+       handle->n_ongoing = 0;
+       INFO("all the nodes are removed");
+}
+
+HAPI noti_node_item *noti_node_get(noti_node *handle, int priv_id)
+{
+       retif(handle == NULL, NULL, "Invalid parameter!");
+       retif(handle->table == NULL, NULL, "Invalid parameter!");
+
+       return (noti_node_item *)g_hash_table_lookup
+                       (handle->table, GINT_TO_POINTER(priv_id));
+}
+
+HAPI int noti_node_get_item_count(noti_node *handle, notification_type_e noti_type)
+{
+       retif(handle == NULL, 0, "Invalid parameter!");
+
+       if (noti_type == NOTIFICATION_TYPE_NOTI)
+               return handle->n_noti;
+       else if (noti_type == NOTIFICATION_TYPE_ONGOING)
+               return handle->n_ongoing;
+
+       return 0;
+}
+
+static void _noti_node_free(noti_node_item *node)
+{
+       retif(node == NULL, , "Invalid parameter!");
+
+       DBG("item_node is freed:%p", node);
+
+       free(node);
+}
diff --git a/daemon/notifications/noti_node.h b/daemon/notifications/noti_node.h
new file mode 100755 (executable)
index 0000000..f071981
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 __QUICKPANEL_NOTI_NODE_H__
+#define __QUICKPANEL_NOTI_NODE_H__
+
+#include <glib.h>
+#include <notification.h>
+
+typedef struct _noti_node {
+       GHashTable *table;
+       int n_ongoing;
+       int n_noti;
+} noti_node;
+
+typedef struct _noti_node_item {
+       notification_h noti;
+       void *view;
+} noti_node_item;
+
+void noti_node_create(noti_node **handle);
+void noti_node_destroy(noti_node **handle);
+noti_node_item *noti_node_add(noti_node *handle, notification_h noti, void *view);
+void noti_node_remove(noti_node *handle, int priv_id);
+void noti_node_remove_all(noti_node *handle);
+noti_node_item *noti_node_get(noti_node *handle, int priv_id);
+int noti_node_get_item_count(noti_node *handle, notification_type_e noti_type);
+
+#endif
diff --git a/daemon/notifications/noti_section.c b/daemon/notifications/noti_section.c
new file mode 100755 (executable)
index 0000000..4ec627c
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 <notification.h>
+#include "quickpanel-ui.h"
+#include "quickpanel_def.h"
+#include "common.h"
+#include "noti.h"
+#include "noti_section.h"
+#include "list_util.h"
+#ifdef QP_SCREENREADER_ENABLE
+#include "accessibility.h"
+#endif
+
+static void _noti_section_button_clicked_cb(void *data, Evas_Object * obj,
+                                       void *event_info)
+{
+       notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
+
+       noti_err = notifiation_clear(NOTIFICATION_TYPE_NOTI);
+
+       DBG("notiifcations going to be cleared: noti_err(%d)", noti_err);
+
+       quickpanel_play_feedback();
+}
+
+static void _noti_section_set_button(Evas_Object *noti_section)
+{
+       Evas_Object *eo = NULL;
+       Evas_Object *old_eo = NULL;
+
+       retif(noti_section == NULL, , "invalid parameter");
+
+       old_eo = elm_object_part_content_get(noti_section, "elm.swallow.icon");
+
+       if (old_eo == NULL) {
+               eo = elm_button_add(noti_section);
+               retif(eo == NULL, , "Failed to create clear button!");
+               elm_object_style_set(eo, "quickpanel_standard");
+               evas_object_smart_callback_add(eo, "clicked",
+                               _noti_section_button_clicked_cb, NULL);
+               elm_object_part_content_set(noti_section, "elm.swallow.icon", eo);
+       } else {
+               eo = old_eo;
+       }
+
+       elm_object_text_set(eo, _S("IDS_COM_BODY_CLEAR_ALL"));
+}
+
+static void _noti_section_set_text(Evas_Object *noti_section, int count)
+{
+#ifdef QP_SCREENREADER_ENABLE
+       Evas_Object *ao = NULL;
+#endif
+       char text[128] = {0,};
+       char format[256] = {0,};
+       const char *old_text = NULL;
+
+       retif(noti_section == NULL, , "invalid parameter");
+
+       if (count > 1) {
+               snprintf(format, sizeof(format), "%s %%d", _("IDS_QP_BODY_NOTIFICATIONS_ABB2"));
+       } else {
+               snprintf(format, sizeof(format), "%s %%d", _("IDS_QP_BUTTON_NOTIFICATION"));
+       }
+       snprintf(text, sizeof(text), format, count);
+
+       old_text = elm_object_part_text_get(noti_section, "elm.text.text");
+       if (old_text != NULL) {
+               if (strcmp(old_text, text) == 0) {
+                       return ;
+               }
+       }
+
+#ifdef QP_SCREENREADER_ENABLE
+       ao = quickpanel_screen_reader_object_get(noti_section,
+                       SCREEN_READER_OBJ_TYPE_EDJ_OBJECT, "accessibility.label", noti_section);
+
+       if (ao != NULL) {
+               elm_access_info_set(ao, ELM_ACCESS_TYPE, _NOT_LOCALIZED("label"));
+               elm_access_info_set(ao, ELM_ACCESS_INFO, text);
+       }
+#endif
+
+       elm_object_part_text_set(noti_section, "elm.text.text", text);
+}
+
+HAPI Evas_Object *noti_section_create(Evas_Object *parent) {
+       Eina_Bool ret = EINA_FALSE;
+       Evas_Object *section = NULL;
+
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, NULL, "invalid parameter");
+       retif(parent == NULL, NULL, "invalid parameter");
+
+       section = elm_layout_add(parent);
+       ret = elm_layout_file_set(section, DEFAULT_EDJ,
+                       "quickpanel/notisection/default");
+       retif(ret == EINA_FALSE, NULL, "failed to load layout");
+
+       evas_object_size_hint_weight_set(section, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(section, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       quickpanel_initial_resize(section, QP_THEME_LIST_ITEM_GROUP_HEIGHT);
+       evas_object_show(section);
+
+       qp_item_data *qid
+               = quickpanel_list_util_item_new(QP_ITEM_TYPE_NOTI_GROUP, NULL);
+       quickpanel_list_util_item_set_tag(section, qid);
+       quickpanel_list_util_sort_insert(ad->list, section);
+
+       return section;
+}
+
+HAPI void noti_section_update(Evas_Object *noti_section, int noti_count) {
+       retif(noti_section == NULL, , "invalid parameter");
+
+       _noti_section_set_button(noti_section);
+       _noti_section_set_text(noti_section, noti_count);
+}
+
+HAPI void noti_section_set_deleted_cb(Evas_Object *noti_section,
+               Evas_Object_Event_Cb func, void *data) {
+       retif(noti_section == NULL, , "invalid parameter");
+       retif(func == NULL, , "invalid parameter");
+
+       evas_object_event_callback_add(noti_section, EVAS_CALLBACK_DEL, func, data);
+}
+
+HAPI void noti_section_remove(Evas_Object *noti_section) {
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+       retif(noti_section == NULL, , "invalid parameter");
+
+       quickpanel_list_util_item_del_tag(noti_section);
+       quickpanel_list_util_item_unpack_by_object(ad->list, noti_section);
+}
diff --git a/daemon/notifications/noti_section.h b/daemon/notifications/noti_section.h
new file mode 100755 (executable)
index 0000000..c914258
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 __QUICKPANEL_NOTI_SECTION_H__
+#define __QUICKPANEL_NOTI_SECTION_H__
+
+Evas_Object *noti_section_create(Evas_Object *parent);
+void noti_section_update(Evas_Object *noti_section, int noti_count);
+void noti_section_remove(Evas_Object *noti_section) ;
+void noti_section_set_deleted_cb(Evas_Object *noti_section,
+               Evas_Object_Event_Cb func, void *data);
+
+#endif
\ No newline at end of file
diff --git a/daemon/notifications/noti_util.c b/daemon/notifications/noti_util.c
new file mode 100755 (executable)
index 0000000..78ca8aa
--- /dev/null
@@ -0,0 +1,259 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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
+ *
+ * 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 <unicode/uloc.h>
+#include <unicode/udat.h>
+#include <unicode/udatpg.h>
+#include <unicode/ustring.h>
+#include <runtime_info.h>
+#include <vconf.h>
+
+#include "quickpanel-ui.h"
+#include "common.h"
+#include "noti_util.h"
+
+#define QP_NOTI_DAY_DEC        (24 * 60 * 60)
+#define QP_NOTI_TIME_LEN_LIMIT 12
+
+HAPI int quickpanel_noti_get_event_count_from_noti(notification_h noti) {
+       char *text_count = NULL;
+
+       retif(noti == NULL, 0, "Invalid parameter!");
+
+       notification_get_text(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT, &text_count);
+       if (text_count != NULL) {
+               return atoi(text_count);
+       }
+       return 1;
+}
+
+HAPI int quickpanel_noti_get_event_count_by_pkgname(const char *pkgname) {
+       int count = 0;
+       notification_h noti = NULL;
+       notification_list_h noti_list = NULL;
+
+       retif(pkgname == NULL, 0, "Invalid parameter!");
+
+       notification_get_detail_list(pkgname, NOTIFICATION_GROUP_ID_NONE, NOTIFICATION_PRIV_ID_NONE, -1, &noti_list);
+       if (noti_list != NULL) {
+               noti = notification_list_get_data(noti_list);
+               if (noti != NULL) {
+                       count = quickpanel_noti_get_event_count_from_noti(noti);
+               }
+               notification_free_list(noti_list);
+               return count;
+       }
+
+       return 0;
+}
+
+static char* _get_locale(void)
+{
+       char *szLocale = vconf_get_str(VCONFKEY_REGIONFORMAT);
+       if(szLocale == NULL)
+       {
+               ERR("Cannot get region format.");
+               return strdup("en_US.UTF-8");
+       }
+
+       return szLocale;
+}
+
+static char* _get_timezone_from_vconf(void)
+{
+       char *szTimezone = NULL;
+       szTimezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);
+       if(szTimezone == NULL)
+       {
+               ERR("Cannot get time zone.");
+               return strdup("N/A");
+       }
+
+       return szTimezone;
+}
+
+char* _get_timezone(void)
+{
+       char buf[1024] = {0,};
+       ssize_t len = readlink("/opt/etc/localtime", buf, sizeof(buf)-1);
+
+       if (len != -1)
+       {
+               buf[len] = '\0';
+       }
+       else
+       {
+               ERR("failed to get a timezone information");
+               return _get_timezone_from_vconf();
+       }
+
+       return strdup(buf + 20);
+}
+
+HAPI char *quickpanel_noti_get_time(time_t t, char *buf, int buf_len)
+{
+       int ret = 0;
+       UErrorCode status = U_ZERO_ERROR;
+       UDate date;
+       UDateTimePatternGenerator *generator = NULL;
+       UDateFormat *formatter = NULL;
+       UChar utimezone_id[40] = {0,};
+       UChar skeleton[40] = { 0 };
+       UChar pattern[40] = { 0 };
+       UChar formatted[40] = { 0 };
+       int32_t patternCapacity, formattedCapacity;
+       int32_t skeletonLength, patternLength, formattedLength;
+       time_t today;
+       struct tm loc_time;
+       char *timezone = NULL;
+       char *locale = NULL;
+       char bf1[32] = { 0, };
+       bool is_24hour_enabled = FALSE;
+       int is_show_time = 0;
+
+       today = time(NULL);
+       localtime_r(&today, &loc_time);
+
+       loc_time.tm_sec = 0;
+       loc_time.tm_min = 0;
+       loc_time.tm_hour = 0;
+       today = mktime(&loc_time);
+
+       localtime_r(&t, &loc_time);
+
+       if (buf == NULL) {
+               return NULL;
+       }
+
+       if (t < today) {
+               /* ascii to unicode for input skeleton */
+               u_uastrcpy(skeleton, UDAT_ABBR_MONTH_DAY);
+               skeletonLength = strlen(UDAT_ABBR_MONTH_DAY);
+               is_show_time = 0;
+       } else {
+               ret = runtime_info_get_value_bool(
+                                       RUNTIME_INFO_KEY_24HOUR_CLOCK_FORMAT_ENABLED, &is_24hour_enabled);
+               if (ret == RUNTIME_INFO_ERROR_NONE && is_24hour_enabled == TRUE) {
+                       /* ascii to unicode for input skeleton */
+                       u_uastrcpy(skeleton, "HHmm");
+                       skeletonLength = strlen("HHmm");
+               } else {
+                       /* ascii to unicode for input skeleton */
+                       u_uastrcpy(skeleton, "hhmm");
+                       skeletonLength = strlen("hhmm");
+               }
+               is_show_time = 1;
+       }
+
+       /* set UDate  from time_t */
+       date = (UDate)t * 1000;
+
+       patternCapacity =
+               (int32_t) (sizeof(pattern) / sizeof((pattern)[0]));
+
+       timezone = _get_timezone();
+       locale = _get_locale();
+
+       if (u_uastrncpy(utimezone_id, timezone, 40) == NULL) {
+               ERR("u_uastrncpy() error.");
+               ret = 0;
+               goto err;
+       }
+
+       ucal_setDefaultTimeZone(utimezone_id , &status);
+       if (U_FAILURE(status)) {
+               ERR("ucal_setDefaultTimeZone() is failed.");
+               ret = 0;
+               goto err;
+       }
+
+       uloc_setDefault(__secure_getenv("LC_TIME"), &status);
+       if (U_FAILURE(status)) {
+               ERR("uloc_setDefault() is failed.");
+               ret = 0;
+               goto err;
+       }
+
+       /* open datetime pattern generator */
+       generator = udatpg_open(locale, &status);
+       if (generator == NULL) {
+               ret = 0;
+               goto err;
+       }
+
+       /* get best pattern using skeleton */
+       patternLength =
+               udatpg_getBestPattern(generator, skeleton, skeletonLength,
+                                 pattern, patternCapacity, &status);
+
+       /* open datetime formatter using best pattern */
+       formatter =
+               udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1,
+                         pattern, patternLength, &status);
+       if (formatter == NULL) {
+               ret = 0;
+               goto err;
+       }
+
+       /* calculate formatted string capacity */
+       formattedCapacity =
+               (int32_t) (sizeof(formatted) / sizeof((formatted)[0]));
+
+       /* formatting date using formatter by best pattern */
+       formattedLength =
+               udat_format(formatter, date, formatted, formattedCapacity,
+                       NULL, &status);
+
+       /* unicode to ascii to display */
+       u_austrcpy(bf1, formatted);
+       ret = snprintf(buf, buf_len, "%s", bf1);
+
+       if (is_show_time == 1 && strlen(buf) > QP_NOTI_TIME_LEN_LIMIT) {
+               if (is_24hour_enabled == TRUE) {
+                       ret = strftime(buf, buf_len, "%H:%M", &loc_time);
+               } else {
+                       strftime(bf1, sizeof(bf1), "%l:%M", &loc_time);
+
+                       if (loc_time.tm_hour >= 0 && loc_time.tm_hour < 12)
+                               ret = snprintf(buf, buf_len, "%s%s", bf1, "AM");
+                       else
+                               ret = snprintf(buf, buf_len, "%s%s", bf1, "PM");
+               }
+       }
+
+       err:
+               if (timezone) {
+                       free(timezone);
+                       timezone = NULL;
+               }
+
+               if (locale) {
+                       free(locale);
+                       locale = NULL;
+               }
+
+               if (generator) {
+                       udatpg_close(generator);
+                       generator = NULL;
+               }
+
+               if (formatter) {
+                       udat_close(formatter);
+                       formatter = NULL;
+               }
+
+       return ret <= 0 ? NULL : buf;
+}
diff --git a/daemon/notifications/noti_util.h b/daemon/notifications/noti_util.h
new file mode 100755 (executable)
index 0000000..e12003d
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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
+ *
+ * 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 _QP_NOTI_UTIL_DEF_
+#define _QP_NOTI_UTIL_DEF_
+
+#include <notification.h>
+
+HAPI int quickpanel_noti_get_event_count_from_noti(notification_h noti);
+int quickpanel_noti_get_event_count_by_pkgname(const char *pkgname);
+char *quickpanel_noti_get_time(time_t t, char *buf, int buf_len);
+
+#endif
diff --git a/daemon/notifications/noti_win.c b/daemon/notifications/noti_win.c
new file mode 100755 (executable)
index 0000000..c97fe7d
--- /dev/null
@@ -0,0 +1,315 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 <Elementary.h>
+#include <utilX.h>
+
+#define NOTI_HEIGHT 50
+#ifndef __UNUSED__
+#define __UNUSED__ __attribute__((unused))
+#endif
+/* Using this macro to emphasize that some portion like stacking and
+rotation handling are implemented for X based platform
+*/
+
+#ifdef HAVE_X
+#include <Ecore_X.h>
+#endif
+#include "common.h"
+#include "noti_win.h"
+
+struct Internal_Data {
+       Evas_Object *content;
+       Ecore_Event_Handler *rotation_event_handler;
+       Evas_Coord w;
+       Evas_Coord h;
+       int angle;
+       enum Noti_Orient orient;
+};
+
+static const char *data_key = "_data";
+
+static void _set_win_type_notification_level(Evas_Object *win)
+{
+       retif(win == NULL, , "invalid parameter");
+
+       Ecore_X_Window w = elm_win_xwindow_get(win);
+
+       if (w > 0) {
+               ecore_x_icccm_hints_set(w, 0, ECORE_X_WINDOW_STATE_HINT_NONE, 0, 0,
+                       0, 0, 0);
+               ecore_x_netwm_opacity_set(w, 0);
+
+               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_HIGH);
+       }
+}
+
+static void _show(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj,
+       void *event_info __UNUSED__)
+{
+       struct Internal_Data *wd = evas_object_data_get(obj, data_key);
+
+       if (!wd)
+               return;
+       if (wd->content)
+               evas_object_show(wd->content);
+}
+
+static void _content_hide(void *data, Evas *e __UNUSED__,
+       Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+       evas_object_hide(data);
+}
+
+static void _content_changed_size_hints(void *data, Evas *e __UNUSED__,
+       Evas_Object *obj, void *event_info __UNUSED__)
+{
+       Evas_Coord h;
+       struct Internal_Data *wd = evas_object_data_get(data, data_key);
+
+       if (!wd)
+               return;
+
+       evas_object_size_hint_min_get(obj, NULL, &h);
+       if ((h > 0)) {
+               wd->h = h;
+               evas_object_size_hint_min_set(obj, wd->w, wd->h);
+               evas_object_size_hint_min_set(data, wd->w, wd->h);
+               evas_object_resize(data, wd->w, wd->h);
+       }
+}
+
+static void _sub_del(void *data __UNUSED__, Evas_Object *obj, void *event_info)
+{
+       struct Internal_Data *wd = evas_object_data_get(obj, data_key);
+       Evas_Object *sub = event_info;
+
+       if (!wd)
+               return;
+       if (sub == wd->content) {
+               evas_object_event_callback_del(wd->content, EVAS_CALLBACK_HIDE,
+                       _content_hide);
+               evas_object_event_callback_del(wd->content,
+                       EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+                       _content_changed_size_hints);
+               wd->content = NULL;
+       }
+}
+
+static void _del(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj,
+       void *event_info __UNUSED__)
+{
+       struct Internal_Data *wd = evas_object_data_get(obj, data_key);
+
+       if (!wd)
+               return;
+       if (wd->rotation_event_handler)
+               ecore_event_handler_del(wd->rotation_event_handler);
+       evas_object_data_set(data, data_key, NULL);
+       free(wd);
+}
+
+#ifdef HAVE_X
+static void _update_geometry_on_rotation(Evas_Object *obj, int angle,
+               int *x, int *y, int *w)
+{
+       Evas_Coord root_w, root_h;
+       struct Internal_Data *wd = evas_object_data_get(obj, data_key);
+
+       if (!wd)
+               return;
+
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &root_w,
+               &root_h);
+
+       /* rotate window */
+       switch (angle) {
+       case 90:
+               *w = root_h;
+               if (wd->orient == NOTI_ORIENT_BOTTOM)
+                       *x = root_w - wd->h;
+               break;
+       case 270:
+               *w = root_h;
+               if (!(wd->orient == NOTI_ORIENT_BOTTOM))
+                       *x = root_w - wd->h;
+               break;
+       case 180:
+               *w = root_w;
+               if (!wd->orient == NOTI_ORIENT_BOTTOM)
+                       *y = root_h - wd->h;
+               break;
+       case 0:
+       default:
+               *w = root_w;
+               if (wd->orient == NOTI_ORIENT_BOTTOM)
+                       *y = root_h - wd->h;
+               break;
+       }
+}
+
+static void _win_rotated(Evas_Object *obj)
+{
+       int x = 0;
+       int y = 0;
+       int w = 0;
+       int angle = 0;
+       struct Internal_Data *wd =  evas_object_data_get(obj, data_key);
+
+       if (!wd)
+               return;
+       angle = elm_win_rotation_get(obj);
+       if (angle % 90)
+               return;
+       angle %= 360;
+       if (angle < 0)
+               angle += 360;
+       wd->angle = angle;
+
+       _update_geometry_on_rotation(obj, wd->angle, &x, &y, &w);
+
+       evas_object_move(obj, x, y);
+       wd->w = w;
+       evas_object_resize(obj, wd->w, wd->h);
+}
+
+static Eina_Bool _prop_change(void *data, int type __UNUSED__, void *event)
+{
+       Ecore_X_Event_Window_Property *ev;
+       struct Internal_Data *wd = evas_object_data_get(data, data_key);
+
+       if (!wd)
+               return ECORE_CALLBACK_PASS_ON;
+       ev = event;
+       if (ev->atom == ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE)
+               if (ev->win == elm_win_xwindow_get(data))
+                       _win_rotated(data);
+       return ECORE_CALLBACK_PASS_ON;
+}
+#endif
+
+HAPI Evas_Object *noti_win_add(Evas_Object *parent)
+{
+       Evas_Object *win;
+       Evas_Object *bg;
+       struct Internal_Data *wd;
+       Evas_Coord w = 0;
+
+       win = elm_win_add(parent, "noti_win", ELM_WIN_NOTIFICATION);
+       elm_win_alpha_set(win, EINA_TRUE);
+
+       if (!win)
+               return NULL;
+
+       elm_win_indicator_mode_set(win, ELM_WIN_INDICATOR_HIDE);
+       elm_win_title_set(win, "noti_win");
+       elm_win_borderless_set(win, EINA_TRUE);
+       elm_win_autodel_set(win, EINA_TRUE);
+       evas_object_size_hint_weight_set(win, EVAS_HINT_EXPAND,
+               EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(win, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       bg = elm_bg_add(win);
+       evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND,
+               EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(win, bg);
+
+       _set_win_type_notification_level(win);
+
+       wd = (struct Internal_Data *) calloc(1, sizeof(struct Internal_Data));
+       if (!wd)
+               return NULL;
+       evas_object_data_set(win, data_key, wd);
+       wd->angle = 0;
+       wd->orient = NOTI_ORIENT_TOP;
+       evas_object_move(win, 0, 0);
+#ifdef HAVE_X
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, NULL);
+       evas_object_resize(win, w, NOTI_HEIGHT);
+       wd->rotation_event_handler = ecore_event_handler_add(
+               ECORE_X_EVENT_WINDOW_PROPERTY, _prop_change, win);
+#endif
+       wd->w = w;
+       wd->h = NOTI_HEIGHT;
+       evas_object_smart_callback_add(win, "sub-object-del", _sub_del, NULL);
+       evas_object_event_callback_add(win, EVAS_CALLBACK_SHOW, _show, NULL);
+       evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _del, NULL);
+       return win;
+}
+
+HAPI void noti_win_content_set(Evas_Object *obj, Evas_Object *content)
+{
+       Evas_Coord h;
+       struct Internal_Data *wd;
+
+       if (!obj)
+               return;
+       wd = evas_object_data_get(obj, data_key);
+       if (!wd)
+               return;
+       if (wd->content)
+               evas_object_del(content);
+       wd->content = content;
+       if (content) {
+               evas_object_size_hint_weight_set(wd->content, EVAS_HINT_EXPAND,
+                       EVAS_HINT_EXPAND);
+               elm_win_resize_object_add(obj, wd->content);
+               evas_object_size_hint_min_get(wd->content, NULL, &h);
+               if (h)
+                       wd->h = h;
+               evas_object_size_hint_min_set(wd->content, wd->w, wd->h);
+               evas_object_resize(obj, wd->w, wd->h);
+               evas_object_event_callback_add(wd->content, EVAS_CALLBACK_HIDE,
+                               _content_hide, obj);
+               evas_object_event_callback_add(wd->content,
+                               EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+                               _content_changed_size_hints, obj);
+       }
+}
+
+HAPI void noti_win_orient_set(Evas_Object *obj, enum Noti_Orient orient)
+{
+#ifdef HAVE_X
+       Evas_Coord root_w, root_h;
+#endif
+       struct Internal_Data *wd = evas_object_data_get(obj, data_key);
+
+       if (!wd)
+               return;
+       if (orient >= NOTI_ORIENT_LAST)
+               return;
+#ifdef HAVE_X
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &root_w,
+               &root_h);
+#endif
+       switch (orient) {
+       case NOTI_ORIENT_BOTTOM:
+#ifdef HAVE_X
+               evas_object_move(obj, 0, root_h - wd->h);
+#endif
+               wd->orient = NOTI_ORIENT_BOTTOM;
+               break;
+       case NOTI_ORIENT_TOP:
+       default:
+#ifdef HAVE_X
+               evas_object_move(obj, 0, 0);
+#endif
+               wd->orient = NOTI_ORIENT_TOP;
+               break;
+       }
+}
diff --git a/daemon/notifications/noti_win.h b/daemon/notifications/noti_win.h
new file mode 100755 (executable)
index 0000000..b8345d3
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 __NOTI_WIN_H__
+#define __NOTI_WIN_H__
+#include <Evas.h>
+
+enum Noti_Orient {
+       NOTI_ORIENT_TOP = 0,
+       NOTI_ORIENT_BOTTOM,
+       NOTI_ORIENT_LAST
+       } ;
+
+/* Creates and return a new window (of widget type elm_win) of width equal to
+root window
+*/
+Evas_Object *noti_win_add(Evas_Object *parent);
+
+/* Sets an Evas Object as content of the notification window created using
+noti_win_add
+*/
+void noti_win_content_set(Evas_Object *obj, Evas_Object *content);
+
+/* Sets the orientation of the notification window, this can be of type
+Noti_Orient
+*/
+void noti_win_orient_set(Evas_Object *obj, enum Noti_Orient orient);
+#endif
diff --git a/daemon/notifications/ticker.c b/daemon/notifications/ticker.c
new file mode 100755 (executable)
index 0000000..80841fe
--- /dev/null
@@ -0,0 +1,883 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 <Elementary.h>
+#include <Ecore_X.h>
+#include <appcore-common.h>
+#include <vconf.h>
+#include <appsvc.h>
+#include <app_service.h>
+#include <notification.h>
+#include <feedback.h>
+
+#include "quickpanel-ui.h"
+#include "common.h"
+#include "noti.h"
+#include "noti_win.h"
+#include "noti_util.h"
+
+#define QP_TICKER_DURATION     5
+#define QP_TICKER_DETAIL_DURATION 6
+
+#define TICKER_MSG_LEN                         1024
+#define DEFAULT_ICON ICONDIR           "/quickpanel_icon_default.png"
+
+#define E_DATA_IS_TICKERNOTI_CONTENT "E_DATA_TN_CONTENT"
+#define E_DATA_IS_TICKERNOTI_EXECUTED "E_DATA_TN_EXECUTED"
+
+#define FORMAT_1LINE "<font_size=29><color=#BABABA>%s</color></font>"
+#define FORMAT_2LINE "<font_size=26><color=#BABABA>%s</color></font><br><font_size=29><color=#F4F4F4>%s</color></font>"
+#define FORMAT_2LINE_SINGLE "<font_size=26><color=#BABABA>%s</color></font><br><font_size=29><color=#F4F4F4>%s %s</color></font>"
+#define FORMAT_2LINE_MULTI "<font_size=26><color=#BABABA>%s</color></font><br><font_size=29><color=#F4F4F4>%s %s</color></font>"
+
+static Evas_Object *g_window;
+static Evas_Object *g_ticker;
+static Ecore_Timer *g_timer;
+static int g_noti_height;
+
+static int quickpanel_ticker_init(void *data);
+static int quickpanel_ticker_fini(void *data);
+static int quickpanel_ticker_enter_hib(void *data);
+static int quickpanel_ticker_leave_hib(void *data);
+void quickpanel_ticker_reflesh(void *data);
+static void _quickpanel_ticker_destroy_tickernoti(Evas_Object *tickernoti);
+static int _quickpanel_ticker_get_angle(void *data);
+
+QP_Module ticker = {
+       .name = "ticker",
+       .init = quickpanel_ticker_init,
+       .fini = quickpanel_ticker_fini,
+       .hib_enter = quickpanel_ticker_enter_hib,
+       .hib_leave = quickpanel_ticker_leave_hib,
+       .lang_changed = NULL,
+       .refresh = quickpanel_ticker_reflesh
+};
+
+static int _is_lockscreen_launched(void) {
+       int ret = 0;
+       int is_lock_launched = VCONFKEY_IDLE_UNLOCK;
+
+       if ((ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &is_lock_launched)) == 0) {
+               if (ret == 0 && is_lock_launched == VCONFKEY_IDLE_LOCK) {
+                       return 1;
+               }
+       }
+
+       return 0;
+}
+
+/*****************************************************************************
+ *
+ * (Static) Util functions
+ *
+ *****************************************************************************/
+static void _quickpanel_ticker_clicked_cb(void *data, Evas_Object *obj,
+                       const char *emission, const char *source) {
+       int ret = -1;
+       char *pkgname = NULL;
+       char *caller_pkgname = NULL;
+       bundle *args = NULL;
+       bundle *group_args = NULL;
+       bundle *single_service_handle = NULL;
+       bundle *multi_service_handle = NULL;
+       int flags = 0, group_id = 0, priv_id = 0, count = 0, flag_launch = 0,
+                       flag_delete = 0;
+       notification_type_e type = NOTIFICATION_TYPE_NONE;
+       notification_h noti = NULL;
+       int *is_ticker_executed = NULL;
+
+       noti = data;
+       retif(noti == NULL, , "Invalid parameter!");
+
+       quickpanel_play_feedback();
+
+       if (_is_lockscreen_launched()) {
+               return ;
+       }
+
+       notification_get_pkgname(noti, &caller_pkgname);
+       notification_get_application(noti, &pkgname);
+       if (pkgname == NULL)
+               pkgname = caller_pkgname;
+
+       notification_get_id(noti, &group_id, &priv_id);
+       notification_get_property(noti, &flags);
+       notification_get_type(noti, &type);
+
+       if (flags & NOTIFICATION_PROP_DISABLE_APP_LAUNCH) {
+               flag_launch = 0;
+       } else {
+               is_ticker_executed = evas_object_data_get(obj, E_DATA_IS_TICKERNOTI_EXECUTED);
+               if (is_ticker_executed != NULL) {
+                       if (*is_ticker_executed == 0) {
+                               flag_launch = 1;
+                               *is_ticker_executed = 1;
+                       } else {
+                               flag_launch = 0;
+                       }
+               } else {
+                       flag_launch = 0;
+               }
+       }
+
+       if (flags & NOTIFICATION_PROP_DISABLE_AUTO_DELETE)
+               flag_delete = 0;
+       else
+               flag_delete = 1;
+
+       notification_get_execute_option(noti,
+                               NOTIFICATION_EXECUTE_TYPE_SINGLE_LAUNCH,
+                               NULL, &single_service_handle);
+       notification_get_execute_option(noti,
+                               NOTIFICATION_EXECUTE_TYPE_MULTI_LAUNCH,
+                               NULL, &multi_service_handle);
+
+       if (flag_launch == 1) {
+               /* Hide quickpanel */
+               quickpanel_close_quickpanel(true);
+
+               char *text_count = NULL;
+               notification_get_text(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT, &text_count);
+
+               if (text_count != NULL) {
+                       count = atoi(text_count);
+               } else {
+                       count = 1;
+               }
+
+               if (single_service_handle != NULL && multi_service_handle == NULL) {
+                       ret = quickpanel_launch_app(NULL, single_service_handle);
+                       quickpanel_launch_app_inform_result(pkgname, ret);
+               }
+               if (single_service_handle == NULL && multi_service_handle != NULL) {
+                       ret = quickpanel_launch_app(NULL, multi_service_handle);
+                       quickpanel_launch_app_inform_result(pkgname, ret);
+               }
+               if (single_service_handle != NULL && multi_service_handle != NULL) {
+                       if (count <= 1) {
+                               ret = quickpanel_launch_app(NULL, single_service_handle);
+                               quickpanel_launch_app_inform_result(pkgname, ret);
+                       } else {
+                               ret = quickpanel_launch_app(NULL, multi_service_handle);
+                               quickpanel_launch_app_inform_result(pkgname, ret);
+                       }
+               }
+               if (single_service_handle == NULL && multi_service_handle == NULL) {
+                       notification_get_args(noti, &args, &group_args);
+
+                       if (count > 1 && group_args != NULL) {
+                               ret = quickpanel_launch_app(pkgname, group_args);
+                               quickpanel_launch_app_inform_result(pkgname, ret);
+                       } else {
+                               ret = quickpanel_launch_app(pkgname, args);
+                               quickpanel_launch_app_inform_result(pkgname, ret);
+                       }
+               }
+       }
+
+       if (flag_delete == 1 && type == NOTIFICATION_TYPE_NOTI) {
+               notification_delete_by_priv_id(caller_pkgname,
+                               NOTIFICATION_TYPE_NOTI,
+                               priv_id);
+       }
+}
+
+static inline void __ticker_only_noti_del(notification_h noti)
+{
+       int applist = NOTIFICATION_DISPLAY_APP_ALL;
+
+       retif(noti == NULL, ,"noti is null");
+
+       notification_get_display_applist(noti, &applist);
+       if (applist & NOTIFICATION_DISPLAY_APP_TICKER) {
+               if (!(applist & NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY)) {
+                       char *pkgname = NULL;
+                       int priv_id = 0;
+
+                       notification_get_pkgname(noti, &pkgname);
+                       notification_get_id(noti, NULL, &priv_id);
+                       notification_delete_by_priv_id(pkgname,
+                                               NOTIFICATION_TYPE_NONE,
+                                               priv_id);
+               }
+       }
+}
+
+static void _quickpanel_ticker_hide(void *data)
+{
+       if (g_ticker) {
+               evas_object_hide(g_ticker);
+               _quickpanel_ticker_destroy_tickernoti(g_ticker);
+               g_ticker = NULL;
+       }
+}
+
+static Eina_Bool _quickpanel_ticker_timeout_cb(void *data)
+{
+       INFO("ticker dismissed by timeout callback");
+
+       if (g_timer) {
+               ecore_timer_del(g_timer);
+               g_timer = NULL;
+       }
+
+       _quickpanel_ticker_hide(data);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void _quickpanel_ticker_detail_hide_cb(void *data, Evas *e,
+                                       Evas_Object *obj,
+                                       void *event_info)
+{
+       INFO("ticker dismissed by touching a hide button");
+
+       notification_h noti = (notification_h) data;
+
+       if (g_timer) {
+               ecore_timer_del(g_timer);
+               g_timer = NULL;
+       }
+
+       retif(noti == NULL, , "Invalid parameter!");
+
+       __ticker_only_noti_del(noti);
+       notification_free(noti);
+}
+
+static void _quickpanel_ticker_detail_show_cb(void *data, Evas *e,
+                                       Evas_Object *obj,
+                                       void *event_info)
+{
+       DBG("");
+}
+
+static void _quickpanel_ticker_button_clicked_cb(void *data, Evas_Object *obj,
+                                       void *event_info)
+{
+       if (g_timer) {
+               ecore_timer_del(g_timer);
+               g_timer = NULL;
+       }
+
+       _quickpanel_ticker_hide(data);
+}
+
+static Evas_Object *_quickpanel_ticker_create_button(Evas_Object *parent,
+                                               notification_h noti)
+{
+       Evas_Object *button = NULL;
+
+       retif(noti == NULL || parent == NULL, NULL, "Invalid parameter!");
+
+       if (_is_lockscreen_launched()) {
+               return NULL;
+       }
+
+       button = elm_button_add(parent);
+       elm_object_style_set(button, "tickernoti");
+       elm_object_text_set(button, _S("IDS_COM_BODY_CLOSE"));
+       evas_object_smart_callback_add(button, "clicked",
+                               _quickpanel_ticker_button_clicked_cb, noti);
+
+       return button;
+}
+
+static Evas_Object *_quickpanel_ticker_create_icon(Evas_Object *parent,
+                                               notification_h noti)
+{
+       char *icon_path = NULL;
+       Evas_Object *icon = NULL;
+
+       retif(noti == NULL || parent == NULL, NULL, "Invalid parameter!");
+
+       notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, &icon_path);
+       icon = elm_image_add(parent);
+
+       if (icon_path == NULL
+           || (elm_image_file_set(icon, icon_path, NULL) == EINA_FALSE)) {
+               elm_image_file_set(icon, DEFAULT_ICON, NULL);
+               elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
+       }
+
+       return icon;
+}
+
+static inline char *_get_text(notification_h noti, notification_text_type_e text_type) {
+       time_t time = 0;
+       char *text = NULL;
+       char buf[TICKER_MSG_LEN] = { 0, };
+
+       if (notification_get_time_from_text(noti, text_type, &time) == NOTIFICATION_ERROR_NONE) {
+               if ((int)time > 0) {
+                       quickpanel_noti_get_time(time, buf, sizeof(buf));
+                       text = buf;
+               }
+       } else {
+               notification_get_text(noti, text_type, &text);
+       }
+
+       if (text != NULL)
+               return elm_entry_utf8_to_markup(text);
+
+       return NULL;
+}
+
+static char *_quickpanel_ticker_get_label_layout_default(notification_h noti)
+{
+       char buf[TICKER_MSG_LEN] = { 0, };
+       int len = 0;
+       char *domain = NULL;
+       char *dir = NULL;
+       char *title_utf8 = NULL;
+       char *content_utf8 = NULL;
+       char *event_count_utf8 = NULL;
+
+       retif(noti == NULL, NULL, "Invalid parameter!");
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL)
+               bindtextdomain(domain, dir);
+
+       title_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_TITLE);
+       content_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT);
+
+       event_count_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_EVENT_COUNT);
+
+       if (event_count_utf8 == NULL) {
+               if (title_utf8 && content_utf8) {
+                       len = snprintf(buf, sizeof(buf),FORMAT_2LINE, title_utf8, content_utf8);
+               } else if (title_utf8) {
+                       len = snprintf(buf, sizeof(buf),FORMAT_1LINE, title_utf8);
+               }
+       } else {
+               if (title_utf8 && content_utf8) {
+                       len = snprintf(buf, sizeof(buf),FORMAT_2LINE_MULTI, title_utf8, event_count_utf8, content_utf8);
+               } else if (title_utf8) {
+                       len = snprintf(buf, sizeof(buf),FORMAT_1LINE, title_utf8);
+               }
+       }
+
+       if (title_utf8)
+               free(title_utf8);
+
+       if (content_utf8)
+               free(content_utf8);
+
+       if (event_count_utf8)
+               free(event_count_utf8);
+
+       if (len > 0)
+               return strdup(buf);
+
+       return NULL;
+}
+
+static char *_quickpanel_ticker_get_label_layout_single(notification_h noti)
+{
+       char buf[TICKER_MSG_LEN] = { 0, };
+       int len = 0;
+       char *domain = NULL;
+       char *dir = NULL;
+       char *title_utf8 = NULL;
+       char *content_utf8 = NULL;
+       char *info_1_utf8 = NULL;
+       char *info_sub_1_utf8 = NULL;
+
+       retif(noti == NULL, NULL, "Invalid parameter!");
+
+       notification_get_text_domain(noti, &domain, &dir);
+       if (domain != NULL && dir != NULL)
+               bindtextdomain(domain, dir);
+
+       title_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_TITLE);
+       content_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT);
+
+       info_1_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_1);
+       info_sub_1_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1);
+
+       if (info_1_utf8 == NULL) {
+               if (title_utf8 && content_utf8) {
+                       len = snprintf(buf, sizeof(buf),FORMAT_2LINE, title_utf8, content_utf8);
+               } else if (title_utf8) {
+                       len = snprintf(buf, sizeof(buf),FORMAT_1LINE, title_utf8);
+               } else if (content_utf8) {
+                       len = snprintf(buf, sizeof(buf),FORMAT_1LINE, content_utf8);
+               }
+       } else {
+               if (info_sub_1_utf8) {
+                       if (content_utf8)
+                               len = snprintf(buf, sizeof(buf), FORMAT_2LINE_SINGLE, content_utf8, info_1_utf8, info_sub_1_utf8);
+                       else if (title_utf8)
+                               len = snprintf(buf, sizeof(buf), FORMAT_2LINE_SINGLE, title_utf8, info_1_utf8, info_sub_1_utf8);
+               } else {
+                       if (content_utf8)
+                               len = snprintf(buf, sizeof(buf), FORMAT_2LINE, content_utf8, info_1_utf8);
+                       else if (title_utf8)
+                               len = snprintf(buf, sizeof(buf), FORMAT_2LINE, title_utf8, info_1_utf8);
+               }
+       }
+
+       if (title_utf8)
+               free(title_utf8);
+
+       if (content_utf8)
+               free(content_utf8);
+
+       if (info_1_utf8)
+               free(info_1_utf8);
+
+       if (info_sub_1_utf8)
+               free(info_sub_1_utf8);
+
+       if (len > 0)
+               return strdup(buf);
+
+       return NULL;
+}
+
+static char *_quickpanel_ticker_get_label(notification_h noti)
+{
+       char *result = NULL;
+       notification_ly_type_e layout;
+
+       retif(noti == NULL, NULL, "Invalid parameter!");
+
+       notification_get_layout(noti, &layout);
+
+
+       if (layout == NOTIFICATION_LY_NOTI_EVENT_SINGLE) {
+               result = _quickpanel_ticker_get_label_layout_single(noti);
+       } else {
+               result = _quickpanel_ticker_get_label_layout_default(noti);
+       }
+
+       return result;
+}
+
+static void _noti_hide_cb(void *data, Evas_Object *obj,
+                       const char *emission, const char *source)
+{
+       DBG("");
+
+       if (g_timer) {
+               ecore_timer_del(g_timer);
+               g_timer = NULL;
+       }
+
+       _quickpanel_ticker_hide(data);
+}
+
+static Evas_Object *_quickpanel_ticker_create_tickernoti(void *data)
+{
+       notification_h noti = (notification_h) data;
+       Evas_Object *tickernoti = NULL;
+       Evas_Object *icon = NULL;
+       Evas_Object *detail = NULL;
+       Evas_Object *button = NULL;
+       char *buf = NULL;
+       const char *data_win_height = NULL;
+       int noti_height = 0;
+       int *is_ticker_executed = NULL;
+
+       retif(noti == NULL, NULL, "Invalid parameter!");
+
+       tickernoti = noti_win_add(NULL);
+       retif(tickernoti == NULL, NULL, "Failed to add elm tickernoti.");
+
+       detail = elm_layout_add(tickernoti);
+       if (!detail) {
+               ERR("Failed to get detailview.");
+               _quickpanel_ticker_destroy_tickernoti(tickernoti);
+               return NULL;
+       }
+       elm_layout_theme_set(detail, "tickernoti", "base", "default");
+       elm_object_signal_callback_add(detail, "request,hide", "",
+                               _noti_hide_cb, noti);
+       elm_object_signal_callback_add(detail, "clicked", "",
+                       _quickpanel_ticker_clicked_cb, noti);
+
+       data_win_height = (char *)elm_layout_data_get(detail, "height");
+       if (data_win_height != NULL && elm_config_scale_get() > 0.0)
+               noti_height = (int)(elm_config_scale_get()
+                                       * atoi(data_win_height));
+       evas_object_size_hint_min_set(detail, 1, noti_height);
+       g_noti_height = noti_height;
+
+       noti_win_content_set(tickernoti, detail);
+
+       icon = _quickpanel_ticker_create_icon(detail, noti);
+       if (icon != NULL)
+               elm_object_part_content_set(detail, "icon", icon);
+
+       button = _quickpanel_ticker_create_button(detail, noti);
+       if (button != NULL)
+               elm_object_part_content_set(detail, "button", button);
+
+       buf = _quickpanel_ticker_get_label(noti);
+       if (buf != NULL) {
+               elm_object_part_text_set(detail, "elm.text", buf);
+               free(buf);
+       }
+
+       /* Use style "default" for detailview mode and
+        * "info" for text only mode
+        */
+       elm_object_style_set(tickernoti, "default");
+       evas_object_data_set(tickernoti, E_DATA_IS_TICKERNOTI_CONTENT, detail);
+       is_ticker_executed = (int *)malloc(sizeof(int));
+       if (is_ticker_executed != NULL) {
+               *is_ticker_executed = 0;
+               evas_object_data_set(detail, E_DATA_IS_TICKERNOTI_EXECUTED, is_ticker_executed);
+       }
+
+       return tickernoti;
+}
+
+static void _quickpanel_ticker_destroy_tickernoti(Evas_Object *tickernoti)
+{
+       int *is_ticker_executed = NULL;
+       Evas_Object *detail = NULL;
+
+       retif(tickernoti == NULL, , "Invalid parameter!");
+
+       detail = evas_object_data_get(tickernoti, E_DATA_IS_TICKERNOTI_CONTENT);
+
+       if (detail != NULL) {
+               is_ticker_executed = evas_object_data_get(detail, E_DATA_IS_TICKERNOTI_EXECUTED);
+               if (is_ticker_executed != NULL) {
+                       evas_object_data_del(detail, E_DATA_IS_TICKERNOTI_EXECUTED);
+                       free(is_ticker_executed);
+               }
+               evas_object_data_del(detail, E_DATA_IS_TICKERNOTI_CONTENT);
+       }
+
+       evas_object_del(tickernoti);
+}
+
+static int _quickpanel_ticker_get_angle(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       Ecore_X_Window xwin, root;
+       int ret = 0, angle = 0, count = 0;
+       unsigned char *prop_data = NULL;
+
+       xwin = elm_win_xwindow_get(ad->win);
+       root = ecore_x_window_root_get(xwin);
+
+       ret = ecore_x_window_prop_property_get(root,
+                               ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE,
+                               ECORE_X_ATOM_CARDINAL, 32,
+                               &prop_data, &count);
+
+       if (ret && prop_data) {
+               memcpy(&angle, prop_data, sizeof(int));
+
+               if (prop_data)
+                       free(prop_data);
+
+               return angle;
+       } else {
+               ERR("Fail to get angle");
+               if (prop_data)
+                       free(prop_data);
+
+               return -1;
+       }
+}
+
+static void _quickpanel_ticker_update_geometry_on_rotation(void *data, int *x, int *y, int *w, int *h) {
+       int angle = 0;
+
+       if (!data)
+               return;
+       angle = _quickpanel_ticker_get_angle(data);
+       Evas_Coord root_w, root_h;
+
+       /*
+        * manually calculate win_tickernoti_indi window position & size
+        *  - win_indi is not full size window
+        */
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &root_w, &root_h);
+       evas_object_size_hint_min_get(g_ticker, NULL, &g_noti_height);
+
+       DBG("angle:%d", angle);
+
+       // rotate win
+       switch(angle)
+       {
+               case 90:
+                       *h = g_noti_height;
+                       *w = root_h;
+                       break;
+               case 270:
+                       *h = g_noti_height;
+                       *w = root_h;
+                       *x = root_w - g_noti_height;
+                       break;
+               case 180:
+                       *w = root_w;
+                       *h = g_noti_height;
+                       *y = root_h - g_noti_height;
+                       break;
+               case 0:
+               default:
+                       *w = root_w;
+                       *h = g_noti_height;
+                       break;
+       }
+       elm_win_rotation_set(g_ticker, angle);
+}
+
+static void _quickpanel_ticker_win_rotated(void *data) {
+       retif(data == NULL, ,"data is NULL");
+       struct appdata *ad = data;
+       int x = 0, y = 0, w = 0, h = 0;
+
+       _quickpanel_ticker_update_geometry_on_rotation(ad, &x, &y, &w, &h);
+
+       if (g_ticker != NULL) {
+               evas_object_move(g_ticker, x, y);
+               evas_object_resize(g_ticker, w, h);
+       }
+}
+
+static void _quickpanel_noti_media_feedback_sound(notification_h noti) {
+       retif(noti == NULL, ,"op_list is NULL");
+
+       if (quickpanel_is_sound_enabled() == 1) {
+               notification_sound_type_e nsound_type = NOTIFICATION_SOUND_TYPE_NONE;
+               const char *nsound_path = NULL;
+#ifdef VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR
+               char *default_msg_tone = NULL;
+#endif
+
+               notification_get_sound(noti, &nsound_type, &nsound_path);
+               DBG("notification sound: %d, %s", nsound_type, nsound_path);
+
+               switch (nsound_type) {
+                       case NOTIFICATION_SOUND_TYPE_USER_DATA:
+                               quickpanel_player_play(SOUND_TYPE_NOTIFICATION, nsound_path);
+                               break;
+                       case NOTIFICATION_SOUND_TYPE_DEFAULT:
+#ifdef VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR
+                               default_msg_tone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
+
+                               if (default_msg_tone != NULL) {
+                                       quickpanel_player_play(SOUND_TYPE_NOTIFICATION, default_msg_tone);
+                                       free(default_msg_tone);
+                               } else {
+                                       feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_UNLOCK);
+                               }
+#else
+                               feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_UNLOCK);
+#endif
+                               break;
+                       case NOTIFICATION_SOUND_TYPE_MAX:
+                       case NOTIFICATION_SOUND_TYPE_NONE:
+                               break;
+               }
+       }
+}
+
+static void _quickpanel_noti_media_feedback_vibration(notification_h noti) {
+       retif(noti == NULL, ,"op_list is NULL");
+
+       /* Play Vibration */
+       notification_vibration_type_e nvibration_type =
+               NOTIFICATION_VIBRATION_TYPE_NONE;
+       const char *nvibration_path = NULL;
+
+       notification_get_vibration(noti, &nvibration_type, &nvibration_path);
+       DBG("notification vibration: %d, %s", nvibration_type, nvibration_path);
+       switch (nvibration_type) {
+               case NOTIFICATION_VIBRATION_TYPE_USER_DATA:
+               case    NOTIFICATION_VIBRATION_TYPE_DEFAULT:
+                       feedback_play_type(FEEDBACK_TYPE_VIBRATION, FEEDBACK_PATTERN_MESSAGE);
+                       break;
+               case NOTIFICATION_VIBRATION_TYPE_MAX:
+               case NOTIFICATION_VIBRATION_TYPE_NONE:
+                       break;
+       }
+}
+
+static Eina_Bool _idler_show_cb(void *data)
+{
+       Evas_Object *win = data;
+       retif(win == NULL, EINA_FALSE, "Invalid parameter!");
+
+       evas_object_show(win);
+
+       return EINA_FALSE;
+}
+
+
+static void _quickpanel_ticker_noti_detailed_changed_cb(void *data, notification_type_e type, notification_op *op_list, int num_op)
+{
+       notification_h noti = NULL;
+       notification_h noti_from_master = NULL;
+       int flags = 0;
+       int applist = NOTIFICATION_DISPLAY_APP_ALL;
+       int ret = 0;
+       int op_type = 0;
+       int priv_id = 0;
+
+       INFO("_quickpanel_ticker_noti_changed_cb");
+
+       retif(op_list == NULL, ,"op_list is NULL");
+
+       if (num_op == 1) {
+               notification_op_get_data(op_list, NOTIFICATION_OP_DATA_TYPE, &op_type);
+               notification_op_get_data(op_list, NOTIFICATION_OP_DATA_PRIV_ID, &priv_id);
+               notification_op_get_data(op_list, NOTIFICATION_OP_DATA_NOTI, &noti_from_master);
+               DBG("op_type:%d", op_type);
+               DBG("op_priv_id:%d", priv_id);
+               DBG("noti:%p", noti_from_master);
+
+               if (op_type != NOTIFICATION_OP_INSERT &&
+                               op_type != NOTIFICATION_OP_UPDATE) {
+                       return ;
+               }
+               if (noti_from_master == NULL) {
+                       ERR("failed to get a notification from master");
+                       return ;
+               }
+               if (notification_clone(noti_from_master, &noti) != NOTIFICATION_ERROR_NONE) {
+                       ERR("failed to create a cloned notification");
+                       return ;
+               }
+       }
+
+       retif(noti == NULL, ,"noti is NULL");
+
+       if (op_type == NOTIFICATION_OP_INSERT || op_type == NOTIFICATION_OP_UPDATE) {
+               INFO("playing notification sound");
+               _quickpanel_noti_media_feedback_sound(noti);
+               _quickpanel_noti_media_feedback_vibration(noti);
+       }
+
+       notification_get_display_applist(noti, &applist);
+       if (!(applist & NOTIFICATION_DISPLAY_APP_TICKER)) {
+               INFO("displaying ticker option is off");
+               notification_free(noti);
+               return ;
+       }
+
+       /* Skip if previous ticker is still shown */
+       if (g_ticker != NULL) {
+               _quickpanel_ticker_hide(NULL);
+       }
+
+       /* Check tickernoti flag */
+       notification_get_property(noti, &flags);
+
+       if (flags & NOTIFICATION_PROP_DISABLE_TICKERNOTI) {
+               INFO("NOTIFICATION_PROP_DISABLE_TICKERNOTI");
+               __ticker_only_noti_del(noti);
+               notification_free(noti);
+       } else if (applist & NOTIFICATION_DISPLAY_APP_TICKER) {
+               if (_is_lockscreen_launched()) {
+                       ERR("lockscreen launched, creating a ticker canceled");
+                       notification_free(noti);
+                       return;
+               }
+
+               if (quickpanel_is_opened()) {
+                       ERR("quickpanel is opened, tickernoit will be not displayed");
+                       notification_free(noti);
+                       return;
+               }
+
+               if (_quickpanel_ticker_get_angle(quickpanel_get_app_data()) == -1) {
+                       ERR("[workaround] WM not ready");
+                       notification_free(noti);
+                       return;
+               }
+
+               /* Display ticker */
+               if (g_timer) {
+                       ecore_timer_del(g_timer);
+                       g_timer = NULL;
+               }
+
+               g_ticker = _quickpanel_ticker_create_tickernoti(noti);
+               if (g_ticker == NULL) {
+                       ERR("Fail to create tickernoti");
+                       __ticker_only_noti_del(noti);
+                       notification_free(noti);
+                       return;
+               }
+
+               g_timer = ecore_timer_add(QP_TICKER_DURATION,
+                               _quickpanel_ticker_timeout_cb, noti);
+
+               _quickpanel_ticker_win_rotated(data);
+               ecore_idler_add(_idler_show_cb, g_ticker);
+
+               evas_object_event_callback_add(g_ticker, EVAS_CALLBACK_SHOW,
+                                       _quickpanel_ticker_detail_show_cb,
+                                       g_ticker);
+               evas_object_event_callback_add(g_ticker, EVAS_CALLBACK_HIDE,
+                                       _quickpanel_ticker_detail_hide_cb,
+                                       noti);
+       }
+}
+
+/*****************************************************************************
+ *
+ * Util functions
+ *
+ *****************************************************************************/
+static int quickpanel_ticker_init(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+
+       g_window = ad->win;
+
+       notification_register_detailed_changed_cb(_quickpanel_ticker_noti_detailed_changed_cb,
+                                       data);
+
+       return QP_OK;
+}
+
+static int quickpanel_ticker_fini(void *data)
+{
+       if (g_timer) {
+               ecore_timer_del(g_timer);
+               g_timer = NULL;
+       }
+
+       return QP_OK;
+}
+
+static int quickpanel_ticker_enter_hib(void *data)
+{
+       return QP_OK;
+}
+
+static int quickpanel_ticker_leave_hib(void *data)
+{
+       return QP_OK;
+}
+
+void quickpanel_ticker_reflesh(void *data)
+{
+       retif(data == NULL, , "Invalid parameter!");
+
+       if (g_ticker != NULL) {
+               _quickpanel_ticker_win_rotated(data);
+       }
+}
diff --git a/daemon/quickpanel-ui.c b/daemon/quickpanel-ui.c
new file mode 100755 (executable)
index 0000000..68cee06
--- /dev/null
@@ -0,0 +1,1181 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 <app.h>
+#include <system_info.h>
+#include <sys/utsname.h>
+#include <X11/Xlib.h>
+#include <utilX.h>
+#include <Ecore_Input.h>
+#include <vconf.h>
+#include <unistd.h>
+#include <privilege-control.h>
+#include <bundle.h>
+#include <notification.h>
+
+#include "common.h"
+#include "quickpanel-ui.h"
+#include "modules.h"
+#include "quickpanel_def.h"
+#include "list_util.h"
+#include "keyboard.h"
+#include "vi_manager.h"
+
+#define QP_WINDOW_PRIO 300
+#define QP_ENABLE_HIDING_INDICATOR 1
+
+static struct appdata *g_app_data = NULL;
+
+/* binary information */
+#define QP_EMUL_STR            "Emulator"
+
+static Ecore_X_Atom E_ILLUME_ATOM_MV_QUICKPANEL_STATE;
+
+static void _quickpanel_cache_flush(void *evas);
+static void _quickpanel_init_size_genlist(void *data);
+static void _quickpanel_ui_update_height(void *data);
+#ifdef TBD_RSA
+static void _quickpanel_ui_set_indicator_cover(void *data);
+#endif
+static void _quickpanel_move_data_to_service(const char *key, const char *val, void *data);
+
+HAPI void *quickpanel_get_app_data(void)
+{
+       return g_app_data;
+}
+
+HAPI int quickpanel_is_opened(void)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, 0, "invalid data.");
+
+       return ad->is_opened;
+}
+
+HAPI int quickpanel_is_suspended(void)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, 0, "invalid data.");
+
+       return ad->is_suspended;
+}
+
+HAPI int quickpanel_is_emul(void)
+{
+       int is_emul = 0;
+       char *info = NULL;
+
+       if (system_info_get_value_string(SYSTEM_INFO_KEY_MODEL, &info) == 0) {
+               if (info == NULL) return 0;
+               if (!strncmp(QP_EMUL_STR, info, strlen(info))) {
+                       is_emul = 1;
+               }
+       }
+
+       if (info != NULL) free(info);
+
+       return is_emul;
+}
+
+HAPI void quickpanel_initial_resize(Evas_Object *obj, int height)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid data.");
+
+       if (ad->angle == 90 || ad->angle == 270) {
+               evas_object_resize(obj, ad->win_height, height * ad->scale);
+       } else  {
+               evas_object_resize(obj, ad->win_width, height * ad->scale);
+       }
+}
+
+HAPI int quickpanel_launch_app(char *app_id, void *data)
+{
+       int ret = SERVICE_ERROR_NONE;
+       service_h service = NULL;
+
+       retif(app_id == NULL && data == NULL, SERVICE_ERROR_INVALID_PARAMETER, "Invialid parameter!");
+
+       ret = service_create(&service);
+       if (ret != SERVICE_ERROR_NONE) {
+               ERR("service_create() return error : %d", ret);
+               return ret;
+       }
+       retif(service == NULL, SERVICE_ERROR_INVALID_PARAMETER, "fail to create service handle!");
+
+       if (app_id != NULL) {
+               service_set_operation(service, SERVICE_OPERATION_DEFAULT);
+               service_set_app_id(service, app_id);
+
+               if (data != NULL) {
+                       bundle_iterate((bundle *)data, _quickpanel_move_data_to_service, service);
+               }
+       } else {
+               service_import_from_bundle(service, data);
+       }
+
+       ret = service_send_launch_request(service, NULL, NULL);
+       if (ret != SERVICE_ERROR_NONE) {
+               ERR("service_send_launch_request() is failed : %d", ret);
+               service_destroy(service);
+               return ret;
+       }
+       service_destroy(service);
+       return ret;
+}
+
+HAPI void quickpanel_launch_app_inform_result(const char *pkgname, int retcode)
+{
+       retif(retcode == SERVICE_ERROR_NONE, , "Invialid parameter!");
+       retif(pkgname == NULL && retcode != SERVICE_ERROR_APP_NOT_FOUND, , "Invialid parameter!");
+       retif(retcode == SERVICE_ERROR_LAUNCH_REJECTED, , "launching rejected");
+
+       const char *msg = NULL;
+
+       if (retcode == SERVICE_ERROR_APP_NOT_FOUND) {
+               notification_status_message_post(_S("IDS_COM_BODY_NO_APPLICATIONS_CAN_PERFORM_THIS_ACTION"));
+       } else {
+               Eina_Strbuf *strbuf = eina_strbuf_new();
+
+               if (strbuf != NULL) {
+                       eina_strbuf_append_printf(strbuf, _S("IDS_IDLE_POP_UNABLE_TO_LAUNCH_PS"), pkgname);
+                       eina_strbuf_append_printf(strbuf, "(%d)", retcode);
+                       msg = eina_strbuf_string_get(strbuf);
+
+                       if (msg != NULL) {
+                               notification_status_message_post(msg);
+                       }
+                       eina_strbuf_free(strbuf);
+               }
+       }
+}
+
+#ifdef TBD
+static Eina_Bool _anim_job_rotation(void *data) {
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       struct appdata *ad = vi->extra_data_1;
+       int new_angle =  vi->extra_flag_1;
+
+       if (ad != NULL) {
+               elm_win_rotation_with_resize_set(ad->win,
+                                                new_angle);
+
+               ad->angle = new_angle;
+#ifdef TBD_RSA
+               _quickpanel_ui_set_indicator_cover(ad);
+#endif
+       }
+
+       quickpanel_vi_done(vi);
+
+       return EINA_TRUE;
+}
+
+static Eina_Bool _anim_done_rotation(void *data) {
+       QP_VI *vi = data;
+       retif(vi == NULL, EINA_FALSE, "invalid parameter");
+
+       struct appdata *ad = vi->extra_data_1;
+       int new_angle =  vi->extra_flag_1;
+
+       if (ad != NULL) {
+               elm_win_rotation_with_resize_set(ad->win, new_angle);
+
+               ad->angle = new_angle;
+#ifdef TBD_RSA
+               _quickpanel_ui_set_indicator_cover(ad);
+#endif
+
+               refresh_modules(ad);
+
+               _quickpanel_init_size_genlist(ad);
+               _quickpanel_ui_update_height(ad);
+       }
+
+       return EINA_TRUE;
+}
+#endif
+
+static void _quickpanel_move_data_to_service(const char *key, const char *val, void *data)
+{
+       retif(data == NULL || key == NULL || val == NULL, , "Invialid parameter!");
+
+       service_h service = data;
+       service_add_extra_data(service, key, val);
+}
+
+static void atoms_init_quickpanel(void)
+{
+       E_ILLUME_ATOM_MV_QUICKPANEL_STATE = ecore_x_atom_get("_E_MOVE_QUICKPANEL_STATE");
+}
+
+/******************************************************************************
+  *
+  * UI
+  *
+  ****************************************************************************/
+static Eina_Bool _quickpanel_ui_refresh_cb(void *data)
+{
+       struct appdata *ad = NULL;
+
+       retif(data == NULL, QP_FAIL, "Invalid parameter!");
+       ad = data;
+
+       INFO(" >>>>>>>>>>>>>>> Refresh QP modules!! <<<<<<<<<<<<<<<< ");
+       refresh_modules(data);
+
+       _quickpanel_init_size_genlist(ad);
+       _quickpanel_ui_update_height(ad);
+
+       return EINA_FALSE;
+}
+
+static void _quickpanel_cache_flush(void *evas)
+{
+       int file_cache;
+       int collection_cache;
+       int image_cache;
+       int font_cache;
+
+       retif(evas == NULL, , "Evas is NULL\n");
+
+       file_cache = edje_file_cache_get();
+       collection_cache = edje_collection_cache_get();
+       image_cache = evas_image_cache_get(evas);
+       font_cache = evas_font_cache_get(evas);
+
+       edje_file_cache_set(file_cache);
+       edje_collection_cache_set(collection_cache);
+       evas_image_cache_set(evas, 0);
+       evas_font_cache_set(evas, 0);
+
+       evas_image_cache_flush(evas);
+       evas_render_idle_flush(evas);
+       evas_font_cache_flush(evas);
+
+       edje_file_cache_flush();
+       edje_collection_cache_flush();
+
+       edje_file_cache_set(file_cache);
+       edje_collection_cache_set(collection_cache);
+       evas_image_cache_set(evas, image_cache);
+       evas_font_cache_set(evas, font_cache);
+}
+
+static int _quickpanel_ui_rotation_get_angle(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       Ecore_X_Window xwin, root;
+       int ret = 0, angle = 0, count = 0;
+       unsigned char *prop_data = NULL;
+
+       retif(data == NULL, -1, "Invalid parameter!");
+
+       xwin = elm_win_xwindow_get(ad->win);
+       root = ecore_x_window_root_get(xwin);
+
+       ret = ecore_x_window_prop_property_get(root,
+                               ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE,
+                               ECORE_X_ATOM_CARDINAL, 32,
+                               &prop_data, &count);
+
+       if (ret && prop_data) {
+               memcpy(&angle, prop_data, sizeof(int));
+
+               if (prop_data)
+                       free(prop_data);
+
+               return angle;
+       } else {
+               ERR("Fail to get angle");
+               if (prop_data)
+                       free(prop_data);
+
+               return -1;
+       }
+}
+
+static void _quickpanel_ui_rotation(void *data, int new_angle)
+{
+       struct appdata *ad = data;
+       retif(data == NULL, , "Invalid parameter!");
+
+       INFO("ROTATION: new:%d old:%d", new_angle, ad->angle);
+
+       if (new_angle == 0 || new_angle == 90 || new_angle == 180 || new_angle == 270) {
+               if (new_angle != ad->angle) {
+                       ad->angle = new_angle;
+#ifdef TBD_RSA
+                       _quickpanel_ui_set_indicator_cover(ad);
+#endif
+                       refresh_modules(ad);
+                       _quickpanel_init_size_genlist(ad);
+                       _quickpanel_ui_update_height(ad);
+               }
+       }
+}
+
+void quickpanel_ticker_reflesh(void *data);
+
+static Eina_Bool quickpanel_ui_client_message_cb(void *data, int type,
+                                                void *event)
+{
+       int new_angle = 0;
+       struct appdata *ad = data;
+       Ecore_X_Event_Client_Message *ev = event;
+
+       retif(data == NULL || event == NULL,
+               ECORE_CALLBACK_RENEW, "Invalid parameter!");
+
+       if (ev->message_type == ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE) {
+                       new_angle = ev->data.l[0];
+                       quickpanel_ticker_reflesh(ad);
+       } else if (ev->message_type == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE) {
+               if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF) {
+                       ad->is_opened = 0;
+                       qp_closed_modules(data);
+                       quickpanel_player_stop();
+#if QP_ENABLE_HIDING_INDICATOR
+                       elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_HIDE);
+#endif
+                       if (utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win), KEY_BACK) != 0) {
+                               ERR("failed to ungrab KEY_QUICKPANEL");
+                       }
+               }
+       } else if (ad->E_ILLUME_ATOM_MV_QUICKPANEL_STATE != NULL) {
+               if (ev->message_type == *(ad->E_ILLUME_ATOM_MV_QUICKPANEL_STATE)) {
+                       if (ev->data.l[0] == 1) {
+                               if (ad->is_opened == 0) {
+#if QP_ENABLE_HIDING_INDICATOR
+                                       elm_win_indicator_mode_set(ad->win, ELM_WIN_INDICATOR_SHOW);
+#endif
+                                       INFO("quickpanel going to be opened");
+                               }
+                       }
+                       if (ev->data.l[0] == 0) {
+                               if (ad->is_opened == 0) {
+                                       INFO("quickpanel is closed");
+                                       ad->is_opened = 1;
+                                       qp_opened_modules(data);
+                                       quickpanel_player_stop();
+                                       if (utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win), KEY_BACK, TOP_POSITION_GRAB) != 0) {
+                                               ERR("failed to grab KEY_BACK");
+                                       }
+                               }
+                       }
+               }
+       }
+       return ECORE_CALLBACK_RENEW;
+}
+
+static void _quickpanel_signal_handler(int signum, siginfo_t *info, void *unused)
+{
+       ERR("quickpanel going to be terminated");
+       app_efl_exit();
+}
+
+static Eina_Bool _quickpanel_ui_delayed_indicator_show_cb(void *data)
+{
+       Evas_Object *win = data;
+       retif(win == NULL, EINA_FALSE, "Invalid parameter!");
+
+       elm_win_indicator_mode_set(win, ELM_WIN_INDICATOR_HIDE);
+
+       return EINA_FALSE;
+}
+
+
+static void _quickpanel_app_rotate_cb(void *data, Evas_Object *obj, void *event)
+{
+       int angle = 0;
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       angle = elm_win_rotation_get((Evas_Object *)obj);
+
+       DBG("ROTATE:%d", angle);
+
+       _quickpanel_ui_rotation(ad, angle);
+}
+
+static Evas_Object *_quickpanel_ui_window_add(const char *name, int prio)
+{
+       Evas_Object *eo = NULL;
+       Ecore_X_Window xwin;
+
+       eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
+
+       if (eo != NULL) {
+               elm_win_alpha_set(eo, EINA_TRUE);
+#if QP_ENABLE_HIDING_INDICATOR
+               elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
+               ecore_idler_add(_quickpanel_ui_delayed_indicator_show_cb, eo);
+#else
+               elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
+#endif
+
+               elm_win_title_set(eo, name);
+               elm_win_borderless_set(eo, EINA_TRUE);
+               elm_win_autodel_set(eo, EINA_TRUE);
+
+               /* set this window as a quickpanel */
+               elm_win_quickpanel_set(eo, 1);
+               elm_win_quickpanel_priority_major_set(eo, prio);
+
+               if (elm_win_wm_rotation_supported_get(eo))
+               {
+                       int rots[4] = { 0, 90, 180, 270 };
+                       elm_win_wm_rotation_available_rotations_set(eo, rots, 4);
+               }
+
+               /* icccm name class set */
+               xwin = elm_win_xwindow_get(eo);
+               ecore_x_icccm_name_class_set(xwin, "QUICKPANEL", "QUICKPANEL");
+
+               unsigned int val = 1;
+               ecore_x_window_prop_card32_set
+                       (xwin, ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL, &val, 1);
+
+               evas_object_show(eo);
+       }
+
+       return eo;
+}
+
+#ifdef TBD
+static void _quickpanel_add_debugging_bar(Evas_Object *list)
+{
+       Eina_Bool ret = EINA_FALSE;
+       Evas_Object *bar = elm_layout_add(list);
+
+       ret = elm_layout_file_set(bar, DEFAULT_EDJ,
+                       "quickpanel/seperator/default");
+
+       if (ret != EINA_FALSE) {
+               evas_object_size_hint_weight_set(bar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+               evas_object_size_hint_align_set(bar, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+               qp_item_data *qid
+                       = quickpanel_list_util_item_new(QP_ITEM_TYPE_BAR, NULL);
+               quickpanel_list_util_item_set_tag(bar, qid);
+               quickpanel_list_util_sort_insert(list, bar);
+               evas_object_show(bar);
+       }
+}
+#endif
+
+HAPI Evas_Object *quickpanel_ui_load_edj(Evas_Object * parent, const char *file,
+                                           const char *group, int is_just_load)
+{
+       Eina_Bool r;
+       Evas_Object *eo = NULL;
+
+       retif(parent == NULL, NULL, "Invalid parameter!");
+
+       eo = elm_layout_add(parent);
+       retif(eo == NULL, NULL, "Failed to add layout object!");
+
+       r = elm_layout_file_set(eo, file, group);
+       retif(r != EINA_TRUE, NULL,
+               "Failed to set edje object file[%s-%s]!", file, group);
+
+       evas_object_size_hint_weight_set(eo,
+                                        EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+       if (is_just_load == 1) {
+               elm_win_resize_object_add(parent, eo);
+       }
+       evas_object_show(eo);
+
+       return eo;
+}
+
+static int _quickpanel_ui_create_win(void *data)
+{
+       struct appdata *ad = data;
+       int w = 0;
+       int h = 0;
+       int initial_angle = 0;
+
+       retif(data == NULL, QP_FAIL, "Invialid parameter!");
+
+       ad->win = _quickpanel_ui_window_add("Quickpanel Window",
+                                       QP_WINDOW_PRIO);
+       if (ad->win == NULL) {
+               ERR("ui create : failed to create window.");
+               return -1;
+       }
+
+       evas_object_smart_callback_add(ad->win, "wm,rotation,changed",
+                                       _quickpanel_app_rotate_cb, ad);
+
+#ifdef QP_INDICATOR_WIDGET_ENABLE
+       ad->comformant = elm_conformant_add(ad->win);
+#if QP_ENABLE_HIDING_INDICATOR
+       elm_object_style_set(ad->comformant, "without_resize");
+#else
+       elm_object_style_set(ad->comformant, "nokeypad");
+#endif
+
+       ad->ly = quickpanel_ui_load_edj(ad->comformant,
+                               DEFAULT_EDJ, "quickpanel/gl_base", 0);
+       if (ad->ly == NULL)
+               return -1;
+
+       evas_object_size_hint_weight_set(ad->comformant,
+                                        EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_win_resize_object_add(ad->win, ad->comformant);
+       evas_object_show(ad->comformant);
+       elm_object_content_set(ad->comformant, ad->ly);
+
+#else
+       ad->ly = quickpanel_ui_load_edj(ad->win,
+                               DEFAULT_EDJ, "quickpanel/gl_base", 0);
+       if (ad->ly == NULL)
+               return -1;
+#endif
+
+       /* get noti evas */
+       ad->evas = evas_object_evas_get(ad->win);
+
+       Evas_Object *sc = elm_scroller_add(ad->ly);
+       retif(!sc, EINA_FALSE, "fail to add scroller");
+       elm_scroller_bounce_set(sc, EINA_TRUE, EINA_TRUE);
+       elm_scroller_policy_set(sc,
+                       ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+       evas_object_size_hint_weight_set(sc,
+                       EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_fill_set(sc, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_show(sc);
+
+       Evas_Object *box = elm_box_add(sc);
+       if (!box) {
+               ERR("fail to add box");
+               evas_object_del(sc);
+               return EINA_FALSE;
+       }
+       evas_object_size_hint_weight_set(box,
+                       EVAS_HINT_EXPAND, 0);
+       elm_box_horizontal_set(box, EINA_FALSE);
+       ad->list = box;
+       ad->scroller = sc;
+
+#ifdef TBD
+       _quickpanel_add_debugging_bar(ad->list);
+#endif
+
+       elm_object_content_set(sc, box);
+       elm_object_part_content_set(ad->ly, "qp.gl_base.gl.swallow", ad->scroller);
+       evas_object_show(ad->list);
+
+       ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+       evas_object_resize(ad->win, w, h);
+
+       ad->win_width = w;
+       ad->win_height = h;
+
+       _quickpanel_init_size_genlist(ad);
+#ifdef TBD_RSA
+       _quickpanel_ui_set_indicator_cover(ad);
+#endif
+
+       initial_angle = _quickpanel_ui_rotation_get_angle(ad);
+       _quickpanel_ui_rotation(ad, initial_angle);
+       return 0;
+}
+#ifdef TBD_RSA
+static void _quickpanel_ui_set_indicator_cover(void *data)
+{
+       retif(data == NULL, , "data is NULL");
+       struct appdata *ad = data;
+
+       int x_2 = 0, y_2 = 0;
+       int angle = ad->angle;
+
+       int width = INDICATOR_COVER_W * ad->scale;
+       int height = INDICATOR_COVER_H * ad->scale;
+
+       switch (angle) {
+               case 0:
+                       x_2 = ad->win_width - width;
+                       y_2 = 0;
+                       break;
+               case 90:
+                       x_2 = ad->win_height - width;
+                       y_2 = 0;
+                       break;
+               case 180:
+                       x_2 = ad->win_width - width;
+                       y_2 = 0;
+                       break;
+               case 270:
+                       x_2 = ad->win_height - width;
+                       y_2 = 0;
+                       break;
+       }
+
+       if (ad->cover_indicator_right == NULL) {
+               Evas_Object *bg = evas_object_rectangle_add(ad->evas);
+               evas_object_color_set(bg, 52, 52, 50, 255); // opaque white background
+               evas_object_repeat_events_set(bg, EINA_FALSE);
+               evas_object_resize(bg, width, height); // covers full canvas
+               evas_object_move(bg, x_2, y_2);
+               evas_object_show(bg);
+               ad->cover_indicator_right = bg;
+       } else {
+               evas_object_move(ad->cover_indicator_right, x_2, y_2);
+       }
+}
+#endif
+
+static void _quickpanel_ui_window_set_input_region(void *data, int contents_height)
+{
+       struct appdata *ad = NULL;
+       Ecore_X_Window xwin;
+       Ecore_X_Atom atom_window_input_region = 0;
+       unsigned int window_input_region[4] = {0,};
+
+       retif(data == NULL,  , "Invialid parameter!");
+       ad = data;
+
+       xwin = elm_win_xwindow_get(ad->win);
+
+       INFO("angle:%d", ad->angle);
+       switch (ad->angle) {
+               case 0:
+                       window_input_region[0] = 0; //X
+                       window_input_region[1] = contents_height; // Y
+                       window_input_region[2] = ad->win_width; // Width
+                       window_input_region[3] = ad->scale * QP_HANDLE_H; // height
+                       break;
+               case 90:
+                       window_input_region[0] = contents_height; //X
+                       window_input_region[1] = 0; // Y
+                       window_input_region[2] = ad->scale * QP_HANDLE_H; // Width
+                       window_input_region[3] = ad->win_height; // height
+                       break;
+               case 180:
+                       window_input_region[0] = 0; //X
+                       window_input_region[1] = ad->win_height - contents_height - ad->scale * QP_HANDLE_H; // Y
+                       window_input_region[2] = ad->win_width; // Width
+                       window_input_region[3] = ad->scale * QP_HANDLE_H; // height
+                       break;
+               case 270:
+                       window_input_region[0] = ad->win_width - contents_height - ad->scale * QP_HANDLE_H ; //X
+                       window_input_region[1] = 0; // Y
+                       window_input_region[2] = ad->scale * QP_HANDLE_H; // Width
+                       window_input_region[3] = ad->win_height; // height
+                       break;
+       }
+
+       INFO("win_input_0:%d\nwin_input_1:%d\nwin_input_2:%d\nwin_input_3:%d\n"
+                       ,window_input_region[0]
+                       ,window_input_region[1]
+                       ,window_input_region[2]
+                   ,window_input_region[3]
+                       );
+
+       atom_window_input_region = ecore_x_atom_get(STR_ATOM_WINDOW_INPUT_REGION);
+       ecore_x_window_prop_card32_set(xwin, atom_window_input_region, window_input_region, 4);
+}
+
+static void _quickpanel_ui_window_set_content_region(void *data, int contents_height)
+{
+       struct appdata *ad = NULL;
+       Ecore_X_Window xwin;
+       Ecore_X_Atom atom_window_contents_region = 0;
+       unsigned int window_contents_region[4] = {0,};
+
+       retif(data == NULL,  , "Invialid parameter!");
+       ad = data;
+
+       xwin = elm_win_xwindow_get(ad->win);
+
+       INFO("angle:%d", ad->angle);
+       switch (ad->angle) {
+               case 0:
+                       window_contents_region[0] = 0; //X
+                       window_contents_region[1] = 0; // Y
+                       window_contents_region[2] = ad->win_width; // Width
+                       window_contents_region[3] = contents_height; // height
+                       break;
+               case 90:
+                       window_contents_region[0] = 0; //X
+                       window_contents_region[1] = 0; // Y
+                       window_contents_region[2] = contents_height; // Width
+                       window_contents_region[3] = ad->win_height; // height
+                       break;
+               case 180:
+                       window_contents_region[0] = 0; //X
+                       window_contents_region[1] = ad->win_height - contents_height; // Y
+                       window_contents_region[2] = ad->win_width; // Width
+                       window_contents_region[3] = contents_height; // height
+                       break;
+               case 270:
+                       window_contents_region[0] = ad->win_width - contents_height ; //X
+                       window_contents_region[1] = 0; // Y
+                       window_contents_region[2] = contents_height; // Width
+                       window_contents_region[3] = ad->win_height; // height
+                       break;
+       }
+
+       DBG("win_contents_0:%d\nwin_contents_1:%d\nwin_contents_2:%d\nwin_contents_3:%d\n"
+                       ,window_contents_region[0]
+                       ,window_contents_region[1]
+                       ,window_contents_region[2]
+                   ,window_contents_region[3]
+                       );
+
+    atom_window_contents_region = ecore_x_atom_get(STR_ATOM_WINDOW_CONTENTS_REGION);
+    ecore_x_window_prop_card32_set(xwin, atom_window_contents_region, window_contents_region, 4);
+}
+
+static int _quickpanel_ui_delete_win(void *data)
+{
+       struct appdata *ad = data;
+       retif(data == NULL, QP_FAIL, "Invialid parameter!");
+
+       if (ad->list != NULL) {
+               evas_object_del(ad->list);
+               ad->list = NULL;
+       }
+       if (ad->scroller != NULL) {
+               evas_object_del(ad->scroller);
+               ad->scroller = NULL;
+       }
+       if (ad->ly != NULL) {
+               evas_object_del(ad->ly);
+               ad->ly = NULL;
+       }
+       if (ad->win != NULL) {
+               evas_object_del(ad->win);
+               ad->win = NULL;
+       }
+
+       return QP_OK;
+}
+
+static void _quickpanel_ui_vconf_event_powerff_cb(keynode_t *node,
+                                               void *data)
+{
+       int val;
+       if (vconf_get_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, &val) == 0 &&
+                       (val == VCONFKEY_SYSMAN_POWER_OFF_DIRECT || val == VCONFKEY_SYSMAN_POWER_OFF_RESTART)) {
+               app_efl_exit();
+       }
+}
+
+static void _quickpanel_ui_vconf_event_lcdoff_cb(keynode_t *node,
+                                               void *data)
+{
+       int ret = 0;
+       int pm_state = VCONFKEY_PM_STATE_NORMAL;
+
+       ret = vconf_get_int(VCONFKEY_PM_STATE, &pm_state);
+
+       if (ret == 0 && pm_state == VCONFKEY_PM_STATE_LCDOFF) {
+               quickpanel_close_quickpanel(false);
+       }
+}
+
+static void _quickpanel_ui_vconf_event_init(struct appdata *ad)
+{
+       int ret = 0;
+
+       ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
+                       _quickpanel_ui_vconf_event_lcdoff_cb, ad);
+       if (ret != 0) {
+               ERR("VCONFKEY_PM_STATE: %d", ret);
+       }
+
+       ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS,
+                       _quickpanel_ui_vconf_event_powerff_cb, ad);
+       if (ret != 0) {
+               ERR("VCONFKEY_PM_STATE: %d", ret);
+       }
+}
+
+static void _quickpanel_ui_vconf_event_fini(struct appdata *ad)
+{
+       int ret = 0;
+
+       ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
+                       _quickpanel_ui_vconf_event_lcdoff_cb);
+       if (ret != 0) {
+               ERR("VCONFKEY_PM_STATE: %d", ret);
+       }
+
+       ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS,
+                       _quickpanel_ui_vconf_event_powerff_cb);
+       if (ret != 0) {
+               ERR("VCONFKEY_PM_STATE: %d", ret);
+       }
+}
+
+static void _quickpanel_ui_init_ecore_event(struct appdata *ad)
+{
+       Ecore_Event_Handler *hdl = NULL;
+
+       /* Register window rotate event */
+       hdl = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,
+                               quickpanel_ui_client_message_cb, ad);
+       if (hdl == NULL)
+               ERR("failed to add handler(ECORE_X_EVENT_CLIENT_MESSAGE)");
+
+       ad->hdl_client_message = hdl;
+}
+
+static void _quickpanel_ui_fini_ecore_event(struct appdata *ad)
+{
+       if (ad->hdl_client_message != NULL) {
+               ecore_event_handler_del(ad->hdl_client_message);
+               ad->hdl_client_message = NULL;
+       }
+}
+
+static void _quickpanel_ui_setting_show(struct appdata *ad, int show)
+{
+       if (!ad)
+               return;
+
+       if (!ad->ly)
+               return;
+}
+
+static void _quickpanel_ui_update_height(void *data)
+{
+       int contents_height = 0;
+       int height_genlist = 0;
+
+       struct appdata *ad = NULL;
+
+       retif(data == NULL, , "data is NULL");
+       ad = data;
+
+       height_genlist = ad->gl_limit_height;
+       contents_height = ad->gl_distance_from_top + height_genlist + ad->gl_distance_to_bottom - ad->scale * QP_HANDLE_H;
+
+       _quickpanel_ui_window_set_input_region(ad, contents_height);
+       _quickpanel_ui_window_set_content_region(ad, contents_height);
+}
+
+static void _quickpanel_init_size_genlist(void *data)
+{
+       struct appdata *ad = NULL;
+       int max_height_window = 0;
+       Evas_Coord genlist_y = 0;
+       Evas_Coord spn_height = 0;
+
+       retif(data == NULL, , "data is NULL");
+       ad = data;
+
+       if (ad->angle == 90 || ad->angle == 270 )
+               max_height_window = ad->win_width;
+       else
+               max_height_window = ad->win_height;
+
+       edje_object_part_geometry_get(_EDJ(ad->ly), "qp.gl_base.gl.swallow", NULL, &genlist_y, NULL, NULL);
+       edje_object_part_geometry_get(_EDJ(ad->ly), "qp.base.spn.swallow", NULL, NULL, NULL, &spn_height);
+
+       ad->gl_distance_from_top = genlist_y;
+       ad->gl_distance_to_bottom = spn_height + (1 * ad->scale) + (ad->scale*QP_HANDLE_H) ;
+       ad->gl_limit_height = max_height_window - ad->gl_distance_from_top - ad->gl_distance_to_bottom;
+}
+
+/*****************************************************************************
+  *
+  * App efl main interface
+  *
+  ****************************************************************************/
+static bool quickpanel_app_create(void *data)
+{
+       DBG("");
+
+       pid_t pid;
+       int r;
+
+       // signal handler
+       struct sigaction act;
+       act.sa_sigaction = _quickpanel_signal_handler;
+       act.sa_flags = SA_SIGINFO;
+
+       int ret = sigemptyset(&act.sa_mask);
+       if (ret < 0) {
+               ERR("Failed to sigemptyset[%s]", strerror(errno));
+       }
+       ret = sigaddset(&act.sa_mask, SIGTERM);
+       if (ret < 0) {
+               ERR("Failed to sigaddset[%s]", strerror(errno));
+       }
+       ret = sigaction(SIGTERM, &act, NULL);
+       if (ret < 0) {
+               ERR("Failed to sigaction[%s]", strerror(errno));
+       }
+
+       pid = setsid();
+       if (pid < 0)
+               WARN("Failed to set session id!");
+
+       r = nice(2);
+       if (r == -1)
+               WARN("Failed to set nice value!");
+
+       return TRUE;
+}
+
+static void quickpanel_app_terminate(void *data)
+{
+       DBG("");
+
+       struct appdata *ad = data;
+       retif(ad == NULL, , "invalid data.");
+
+       /* fini quickpanel modules */
+       fini_modules(ad);
+
+       _quickpanel_cache_flush(ad->evas);
+
+       feedback_deinitialize();
+
+       quickpanel_service_keyboard_fini(ad);
+
+       /* unregister system event callback */
+       _quickpanel_ui_vconf_event_fini(ad);
+
+       _quickpanel_ui_fini_ecore_event(ad);
+
+       if (ad->cover_indicator_right != NULL) {
+               evas_object_del(ad->cover_indicator_right);
+               ad->cover_indicator_right = NULL;
+       }
+       /* delete quickpanel window */
+       _quickpanel_ui_delete_win(ad);
+
+       INFO(" >>>>>>>>>>>>>>> QUICKPANEL IS TERMINATED!! <<<<<<<<<<<<<<<< ");
+}
+
+static void quickpanel_app_pause(void *data)
+{
+       DBG("");
+
+       struct appdata *ad = data;
+       retif(ad == NULL,, "invalid data.");
+
+       suspend_modules(ad);
+       quickpanel_ui_del_current_popup();
+
+       ad->is_suspended = 1;
+
+       if (ad->evas != NULL) {
+               _quickpanel_cache_flush(ad->evas);
+               evas_event_feed_mouse_cancel(ad->evas, ecore_time_get(), NULL);
+       }
+}
+
+static void quickpanel_app_resume(void *data)
+{
+       DBG("");
+
+       struct appdata *ad = data;
+       retif(ad == NULL,, "invalid data.");
+
+       ad->is_suspended = 0;
+
+       resume_modules(data);
+}
+
+static void quickpanel_app_service(service_h service, void *data)
+{
+       struct appdata *ad = data;
+       int ret = 0;
+
+       retif(ad == NULL, , "Invialid parameter!");
+
+       INFO(" >>>>>>>>>>>>>>> QUICKPANEL IS STARTED!! <<<<<<<<<<<<<<<< ");
+
+       /* Check emulator */
+       ad->is_emul = quickpanel_is_emul();
+       INFO("quickpanel run in %s", ad->is_emul ? "Emul" : "Device");
+
+       ad->scale = elm_config_scale_get();
+       if (ad->scale < 0)
+               ad->scale = 1.0;
+
+       INFO("quickpanel scale %f", ad->scale);
+
+       ad->is_suspended = 1;
+
+       /* Get theme */
+       elm_theme_extension_add(NULL, DEFAULT_THEME_EDJ);
+
+       /* create quickpanel window */
+       ret = _quickpanel_ui_create_win(ad);
+       retif(ret != QP_OK, , "Failed to create window!");
+
+       atoms_init_quickpanel();
+
+       ad->E_ILLUME_ATOM_MV_QUICKPANEL_STATE = &E_ILLUME_ATOM_MV_QUICKPANEL_STATE;
+
+       _quickpanel_ui_init_ecore_event(ad);
+
+       _quickpanel_ui_vconf_event_init(ad);
+
+       feedback_initialize();
+
+#ifdef QP_SETTING_ENABLE
+       _quickpanel_ui_setting_show(ad, 1);
+#else /* QP_SETTING_ENABLE */
+       _quickpanel_ui_setting_show(ad, 0);
+#endif /* QP_SETTING_ENABLE */
+
+       /* init quickpanel modules */
+       init_modules(ad);
+
+       quickpanel_service_keyboard_init(ad);
+
+       ecore_idler_add(_quickpanel_ui_refresh_cb, ad);
+}
+
+static void quickpanel_app_language_changed_cb(void *data)
+{
+       retif(data == NULL, , "Invalid parameter!");
+
+       INFO(" >>>>>>>>>>>>>>> LANGUAGE CHANGED!! <<<<<<<<<<<<<<<< ");
+       lang_change_modules(data);
+}
+
+static void quickpanel_app_region_format_changed_cb(void *data)
+{
+       INFO(" >>>>>>>>>>>>>>> region_format CHANGED!! <<<<<<<<<<<<<<<< ");
+       lang_change_modules(data);
+}
+
+HAPI void quickpanel_open_quickpanel(void) {
+       Ecore_X_Window xwin;
+       Ecore_X_Window zone;
+       struct appdata *ad = g_app_data;
+
+       DBG("");
+
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->win == NULL, , "Invalid parameter!");
+
+       xwin = elm_win_xwindow_get(ad->win);
+       if (xwin != 0) {
+               if ((zone = ecore_x_e_illume_zone_get(xwin)) != 0) {
+                       if (ecore_x_e_illume_quickpanel_state_get(zone) == ECORE_X_ILLUME_QUICKPANEL_STATE_OFF) {
+                               ecore_x_e_illume_quickpanel_state_send(zone, ECORE_X_ILLUME_QUICKPANEL_STATE_ON);
+                       }
+               } else {
+                       ERR("failed to get zone");
+               }
+       } else {
+               ERR("failed to get xwin");
+       }
+}
+
+HAPI void quickpanel_close_quickpanel(bool is_check_lock) {
+       Ecore_X_Window xwin;
+       Ecore_X_Window zone;
+       int is_lock_launched = VCONFKEY_IDLE_UNLOCK;
+       struct appdata *ad = g_app_data;
+
+       DBG("");
+
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->win == NULL, , "Invalid parameter!");
+
+       if (is_check_lock == true) {
+               if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &is_lock_launched) == 0) {
+                       if (is_lock_launched == VCONFKEY_IDLE_LOCK) {
+                               vconf_set_int(VCONFKEY_IDLE_LOCK_STATE, VCONFKEY_IDLE_UNLOCK);
+                               ERR("do unlock");
+                       }
+               }
+       }
+
+       xwin = elm_win_xwindow_get(ad->win);
+       if (xwin != 0) {
+               if ((zone = ecore_x_e_illume_zone_get(xwin)) != 0) {
+                       if (ecore_x_e_illume_quickpanel_state_get(zone) == ECORE_X_ILLUME_QUICKPANEL_STATE_ON) {
+                               ecore_x_e_illume_quickpanel_state_send(zone, ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
+                       }
+               } else {
+                       ERR("failed to get zone");
+               }
+       } else {
+               ERR("failed to get xwin");
+       }
+}
+
+HAPI void quickpanel_toggle_openning_quickpanel(void) {
+       Ecore_X_Window xwin;
+       Ecore_X_Window zone;
+       struct appdata *ad = g_app_data;
+
+       DBG("");
+
+       retif(ad == NULL, , "Invalid parameter!");
+       retif(ad->win == NULL, , "Invalid parameter!");
+
+       xwin = elm_win_xwindow_get(ad->win);
+       if (xwin != 0) {
+               if ((zone = ecore_x_e_illume_zone_get(xwin)) != 0) {
+                       if (ecore_x_e_illume_quickpanel_state_get(zone) == ECORE_X_ILLUME_QUICKPANEL_STATE_ON) {
+                               ecore_x_e_illume_quickpanel_state_send(zone, ECORE_X_ILLUME_QUICKPANEL_STATE_OFF);
+                       } else {
+                               ecore_x_e_illume_quickpanel_state_send(zone, ECORE_X_ILLUME_QUICKPANEL_STATE_ON);
+                       }
+               } else {
+                       ERR("failed to get zone");
+               }
+       } else {
+               ERR("failed to get xwin");
+       }
+}
+
+int main(int argc, char *argv[])
+{
+       int r = 0;
+       struct appdata ad;
+       app_event_callback_s app_callback = {0,};
+
+       r = control_privilege();
+       if (r != 0) {
+               WARN("Failed to control privilege!");
+       }
+
+       app_callback.create = quickpanel_app_create;
+       app_callback.terminate = quickpanel_app_terminate;
+       app_callback.pause = quickpanel_app_pause;
+       app_callback.resume = quickpanel_app_resume;
+       app_callback.service = quickpanel_app_service;
+       app_callback.low_memory = NULL;
+       app_callback.low_battery = NULL;
+       app_callback.device_orientation = NULL;
+       app_callback.language_changed = quickpanel_app_language_changed_cb;
+       app_callback.region_format_changed = quickpanel_app_region_format_changed_cb;
+
+       memset(&ad, 0x0, sizeof(struct appdata));
+
+       g_app_data = &ad;
+
+       return app_efl_main(&argc, &argv, &app_callback, (void *)&ad);
+}
diff --git a/daemon/quickpanel-ui.h b/daemon/quickpanel-ui.h
new file mode 100755 (executable)
index 0000000..570f16f
--- /dev/null
@@ -0,0 +1,137 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 __QUICKPANEL_UI_H__
+#define __QUICKPANEL_UI_H__
+
+#include <Elementary.h>
+#include <Ecore_X.h>
+#include <X11/Xatom.h>
+#include "media.h"
+
+#if !defined(VENDOR)
+#  define VENDOR "org.tizen"
+#endif
+#if !defined(PACKAGE)
+#  define PACKAGE                      "quickpanel"
+#endif
+
+#if !defined(LOCALEDIR)
+#  define LOCALEDIR                    "/usr/apps/"VENDOR"."PACKAGE"/res/locale"
+#endif
+
+#if !defined(EDJDIR)
+#  define EDJDIR                       "/usr/apps/"VENDOR"."PACKAGE"/res/edje"
+#endif
+
+/* EDJ theme */
+#define DEFAULT_EDJ            EDJDIR"/"PACKAGE".edj"
+#define DEFAULT_THEME_EDJ      EDJDIR"/"PACKAGE"_theme.edj"
+
+#define _EDJ(o) elm_layout_edje_get(o)
+#define _S(str)        dgettext("sys_string", str)
+#undef _
+#define _(str) gettext(str)
+#define _NOT_LOCALIZED(str) (str)
+
+#define STR_ATOM_WINDOW_INPUT_REGION    "_E_COMP_WINDOW_INPUT_REGION"
+#define STR_ATOM_WINDOW_CONTENTS_REGION "_E_COMP_WINDOW_CONTENTS_REGION"
+
+#define MAX_NAM_LEN 4096
+
+#define INDICATOR_COVER_W 82
+#define INDICATOR_COVER_H 60
+
+#define _NEWLINE '\n'
+#define _SPACE ' '
+#define QP_SETTING_PKG_SETTING VENDOR".setting"
+#define QP_SETTING_PKG_SETTING_EMUL    "kto5jikgul.Settings"
+
+struct appdata {
+       Evas_Object *win;
+#ifdef QP_INDICATOR_WIDGET_ENABLE
+       Evas_Object *comformant;
+#endif
+       Evas_Object *ly;
+       Evas *evas;
+
+       Evas_Object *scroller;
+       Evas_Object *list;
+       Evas_Object *popup;
+       int angle;
+       double scale;
+       char *theme;
+
+       int win_width;
+       int win_height;
+       int gl_limit_height;
+       int gl_distance_from_top;
+       int gl_distance_to_bottom;
+
+       int is_emul; /* 0 : target, 1 : emul */
+       int is_suspended;
+       int is_opened;
+
+       Ecore_Event_Handler *hdl_client_message;
+       Ecore_Event_Handler *hdl_hardkey_down;
+       Ecore_Event_Handler *hdl_hardkey_up;
+
+       E_DBus_Connection *dbus_connection;
+       E_DBus_Signal_Handler *dbus_handler_size;
+       E_DBus_Signal_Handler *dbus_handler_progress;
+       E_DBus_Signal_Handler *dbus_handler_content;
+
+       Evas_Object *cover_indicator_right;
+
+       Ecore_X_Atom *E_ILLUME_ATOM_MV_QUICKPANEL_STATE;
+};
+
+typedef struct _QP_Module {
+       char *name;
+       /* func */
+       int (*init) (void *);
+       int (*fini) (void *);
+       int (*suspend) (void *);
+       int (*resume) (void *);
+       int (*hib_enter) (void *);
+       int (*hib_leave) (void *);
+       void (*lang_changed) (void *);
+       void (*refresh) (void *);
+       unsigned int (*get_height) (void *);
+       void (*qp_opened) (void *);
+       void (*qp_closed) (void *);
+
+       /* do not modify this area */
+       /* internal data */
+       Eina_Bool state;
+} QP_Module;
+
+int quickpanel_launch_app(char *app_id, void *data);
+void quickpanel_launch_app_inform_result(const char *pkgname, int retcode);
+int quickpanel_is_emul(void);
+void quickpanel_init_size_genlist(void *data);
+void quickpanel_initial_resize(Evas_Object *obj, int height);
+void *quickpanel_get_app_data(void);
+int quickpanel_is_suspended(void);
+int quickpanel_is_opened(void);
+Evas_Object *quickpanel_ui_load_edj(Evas_Object * parent, const char *file,
+                                           const char *group, int is_just_load);
+void quickpanel_ui_set_indicator_cover(void *data);
+void quickpanel_close_quickpanel(bool is_check_lock);
+void quickpanel_open_quickpanel(void);
+void quickpanel_toggle_openning_quickpanel(void);
+
+#endif                         /* __QUICKPANEL_UI_H__ */
diff --git a/daemon/service/keyboard.c b/daemon/service/keyboard.c
new file mode 100755 (executable)
index 0000000..0d62d39
--- /dev/null
@@ -0,0 +1,139 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <vconf.h>
+#include <utilX.h>
+#include <X11/Xlib.h>
+#include <Ecore_Input.h>
+#include <feedback.h>
+#include "common.h"
+#include "noti_util.h"
+#include "keyboard.h"
+
+static Eina_Bool _service_hardkey_up_cb(void *data, int type, void *event)
+{
+       struct appdata *ad = NULL;
+       Ecore_Event_Key *key_event = NULL;
+
+       retif(data == NULL || event == NULL,
+               EINA_FALSE, "Invalid parameter!");
+       ad = data;
+       key_event = event;
+
+       if (!strcmp(key_event->keyname, KEY_BACK)) {
+               if (ad->popup != NULL) {
+                       Evas_Smart_Cb back_cb = evas_object_data_get(ad->popup, EDATA_BACKKEY_CB);
+                       if (back_cb != NULL) {
+                               back_cb(ad->popup, ad->popup, NULL);
+                       }
+               } else {
+                       quickpanel_close_quickpanel(false);
+               }
+       }
+       return EINA_FALSE;
+}
+
+static Eina_Bool _service_hardkey_down_cb(void *data, int type, void *event)
+{
+       struct appdata *ad = NULL;
+       Ecore_Event_Key *key_event = NULL;
+
+       retif(data == NULL || event == NULL,
+               EINA_FALSE, "Invalid parameter!");
+       ad = data;
+       key_event = event;
+
+       if (!strcmp(key_event->keyname, KEY_SELECT)) {
+               quickpanel_close_quickpanel(false);
+       } else if (!strcmp(key_event->keyname, KEY_QUICKPANEL)) {
+               quickpanel_toggle_openning_quickpanel();
+       } else if (!strcmp(key_event->keyname, KEY_MUTE)) {
+               if (quickpanel_set_mute_toggle()) {
+                       if (feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_GENERAL) != FEEDBACK_ERROR_NONE){
+                               ERR("failed to play a sound");
+                       }
+               }
+       }
+       return EINA_FALSE;
+}
+
+HAPI void quickpanel_service_keyboard_init(void *data) {
+       struct appdata *ad = data;
+       Ecore_Event_Handler *hdl_key_down = NULL;
+       Ecore_Event_Handler *hdl_key_up = NULL;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win), KEY_SELECT, SHARED_GRAB) != 0) {
+               ERR("failed to grab KEY_MUTE");
+       }
+
+       if (utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win), KEY_MUTE, SHARED_GRAB) != 0) {
+               ERR("failed to grab KEY_MUTE");
+       }
+
+       if (utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win), KEY_QUICKPANEL, SHARED_GRAB) != 0) {
+               ERR("failed to grab KEY_QUICKPANEL");
+       }
+
+#ifdef TBD
+       if (utilx_grab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win), KEY_BACK, TOP_POSITION_GRAB) != 0) {
+               ERR("failed to grab KEY_BACK");
+       }
+#endif
+
+       hdl_key_down = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _service_hardkey_down_cb, ad);
+       if (hdl_key_down != NULL)
+               ERR("failed to add handler(ECORE_EVENT_KEY_DOWN)");
+       ad->hdl_hardkey_down = hdl_key_down;
+
+       hdl_key_up = ecore_event_handler_add(ECORE_EVENT_KEY_UP, _service_hardkey_up_cb, ad);
+       if (hdl_key_up != NULL)
+               ERR("failed to add handler(ECORE_EVENT_KEY_UP)");
+       ad->hdl_hardkey_up = hdl_key_up;
+}
+
+HAPI void quickpanel_service_keyboard_fini(void *data) {
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (ad->hdl_hardkey_up != NULL) {
+               ecore_event_handler_del(ad->hdl_hardkey_up);
+               ad->hdl_hardkey_up = NULL;
+       }
+
+       if (ad->hdl_hardkey_down != NULL) {
+               ecore_event_handler_del(ad->hdl_hardkey_down);
+               ad->hdl_hardkey_down = NULL;
+       }
+
+       if (utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win), KEY_SELECT) != 0) {
+               ERR("failed to ungrab KEY_MUTE");
+       }
+
+       if (utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win), KEY_MUTE) != 0) {
+               ERR("failed to ungrab KEY_MUTE");
+       }
+
+       if (utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win), KEY_QUICKPANEL) != 0) {
+               ERR("failed to ungrab KEY_QUICKPANEL");
+       }
+
+#ifdef TBD
+       if (utilx_ungrab_key(ecore_x_display_get(), elm_win_xwindow_get(ad->win), KEY_BACK) != 0) {
+               ERR("failed to ungrab KEY_QUICKPANEL");
+       }
+#endif
+}
diff --git a/daemon/service/keyboard.h b/daemon/service/keyboard.h
new file mode 100755 (executable)
index 0000000..c38f35c
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _QP_SERVICE_KEYBOARD_DEF_
+#define _QP_SERVICE_KEYBOARD_DEF_
+
+#include "quickpanel-ui.h"
+
+void quickpanel_service_keyboard_init(void *data);
+void quickpanel_service_keyboard_fini(void *data);
+
+#endif
diff --git a/daemon/service/noti_led.c b/daemon/service/noti_led.c
new file mode 100755 (executable)
index 0000000..f020664
--- /dev/null
@@ -0,0 +1,324 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <vconf.h>
+#include "common.h"
+#include "noti_util.h"
+#include "noti_led.h"
+#include "noti_node.h"
+
+#ifdef QP_SERVICE_NOTI_LED_ENABLE
+#define LED_ON 1
+#define LED_OFF 0
+
+typedef struct _QP_LED {
+       int priv_id;
+       notification_led_op_e op;
+       int argb;
+       int timestamp;
+} QP_LED_T;
+
+static struct _s_led_info {
+       Eina_List *list;
+       int is_turned_on;
+} s_led_info = {
+       .list = NULL,
+       .is_turned_on = 0,
+};
+
+static QP_LED_T * _led_entry_new(int priv_id, notification_led_op_e op, int argb)
+{
+       QP_LED_T *led_entry = (QP_LED_T *)calloc(1, sizeof(QP_LED_T));
+
+       retif(led_entry == NULL, NULL, "failed to memory allocation");
+
+       led_entry->priv_id = priv_id;
+       led_entry->op = op;
+       led_entry->argb = argb;
+       led_entry->timestamp = (int)time(NULL);
+
+       return led_entry;
+}
+
+static void _led_entry_del(QP_LED_T *led_entry)
+{
+       retif(led_entry == NULL, ,"invalid parameter");
+
+       free(led_entry);
+}
+
+static int
+_led_list_sort_cb(const void *data1, const void *data2)
+{
+       QP_LED_T *entry_1 = (QP_LED_T *)data1;
+       QP_LED_T *entry_2 = (QP_LED_T *)data2;
+
+       if (entry_1 == NULL || entry_2 == NULL) return 0;
+
+       return entry_2->timestamp - entry_1->timestamp;
+}
+
+static void _led_list_add(QP_LED_T *led_entry)
+{
+       retif(led_entry == NULL, ,"invalid parameter");
+
+       s_led_info.list = eina_list_sorted_insert(s_led_info.list, _led_list_sort_cb, led_entry);
+}
+
+static void _led_list_del(QP_LED_T *led_entry)
+{
+       retif(led_entry == NULL, ,"invalid parameter");
+
+       s_led_info.list = eina_list_remove(s_led_info.list, led_entry);
+}
+
+static void _led_list_sort(void)
+{
+       retif(s_led_info.list == NULL, ,"invalid parameter");
+
+       s_led_info.list = eina_list_sort(s_led_info.list, 0, _led_list_sort_cb);
+}
+
+static QP_LED_T *_led_list_find_by_priv_id(int priv_id)
+{
+       Eina_List *l;
+       Eina_List *n;
+       QP_LED_T *led_entry = NULL;
+
+       retif(s_led_info.list == NULL, NULL,"invalid parameter");
+
+       EINA_LIST_FOREACH_SAFE(s_led_info.list, l, n, led_entry) {
+               if (led_entry != NULL) {
+                       if (led_entry->priv_id == priv_id) return led_entry;
+               }
+       }
+
+       return NULL;
+}
+
+static void _led_list_clean_up(void)
+{
+       Eina_List *l;
+       Eina_List *n;
+       QP_LED_T *led_entry = NULL;
+       Eina_List *list_temp = NULL;
+
+       retif(s_led_info.list == NULL, ,"invalid parameter");
+
+       list_temp = s_led_info.list;
+       s_led_info.list = NULL;
+       EINA_LIST_FOREACH_SAFE(list_temp, l, n, led_entry) {
+               if (led_entry != NULL) {
+                       _led_entry_del(led_entry);
+               }
+       }
+
+       eina_list_free(list_temp);
+
+}
+
+static QP_LED_T *_led_list_get_first(void)
+{
+       return eina_list_nth(s_led_info.list, 0);
+}
+
+static inline int _is_led_enabled(void) {
+       int ret = -1;
+       int status = 1;
+
+       ret = vconf_get_bool(VCONFKEY_SETAPPL_LED_INDICATOR_NOTIFICATIONS, &status);
+
+       if (ret == 0) {
+               if (status == 0) {
+                       ERR("LED notification turned off");
+                       return 0;
+               }
+       } else {
+               ERR("failed to get value of VCONFKEY_SETAPPL_LED_INDICATOR_NOTIFICATIONS:%d", ret);
+       }
+
+       return 1;
+}
+
+static void _noti_led_on(QP_LED_T *led_entry) {
+       int ret = 0;
+       retif(led_entry == NULL, , "invalid data");
+
+       INFO("try to turn on LED with OP:%d ARGB:%x", led_entry->op, led_entry->argb);
+
+       if (led_entry->op == NOTIFICATION_LED_OP_ON) {
+               if ((ret = led_set_mode(LED_MISSED_NOTI, LED_ON)) == -1) {
+                       ERR("failed led_set_mode:%d", ret);
+               } else {
+                       s_led_info.is_turned_on = 1;
+               }
+       } else if (led_entry->op == NOTIFICATION_LED_OP_ON_CUSTOM_COLOR) {
+               if ((ret = led_set_mode_with_color(LED_MISSED_NOTI, LED_ON, led_entry->argb)) == -1) {
+                       ERR("failed led_set_mode:%d", ret);
+               } else {
+                       s_led_info.is_turned_on = 1;
+               }
+       } else {
+               ERR("NOTIFICATION_LED_OP_OFF");
+       }
+}
+
+static void _noti_led_off(void) {
+       int ret = 0;
+
+       INFO("try to turn off LED");
+       retif(s_led_info.is_turned_on == 0, , "LED already turned off");
+
+       if ((ret = led_set_mode(LED_MISSED_NOTI, LED_OFF)) == -1) {
+               ERR("failed led_set_mode:%d", ret);
+       } else {
+               s_led_info.is_turned_on = 0;
+       }
+}
+
+HAPI void quickpanel_service_noti_led_proc(notification_h noti, int op_type) {
+       int priv_id = 0;
+       int led_argb = 0;
+       QP_LED_T *led_entry = NULL;
+       notification_led_op_e led_op = -1;
+       retif(noti == NULL, , "Invalid parameter!");
+
+       notification_get_id(noti, NULL, &priv_id);
+       notification_get_led(noti, &led_op, &led_argb);
+       retif(led_op == NOTIFICATION_LED_OP_OFF, , "no led option");
+
+       if (op_type == NOTIFICATION_OP_INSERT || op_type == NOTIFICATION_OP_UPDATE) {
+               led_entry = _led_list_find_by_priv_id(priv_id);
+               if (led_entry != NULL) {
+                       led_entry->op = led_op;
+                       led_entry->argb = led_argb;
+                       led_entry->timestamp = (int)time(NULL);
+                       _led_list_sort();
+               } else {
+                       led_entry = _led_entry_new(priv_id, led_op, led_argb);
+                       _led_list_add(led_entry);
+               }
+       } else if (op_type == NOTIFICATION_OP_DELETE) {
+               led_entry = _led_list_find_by_priv_id(priv_id);
+               if (led_entry != NULL) {
+                       _led_list_del(led_entry);
+                       _led_entry_del(led_entry);
+               }
+       }
+
+       //turn on or off LED
+       if (_is_led_enabled() == 1) {
+               led_entry = _led_list_get_first();
+               if (led_entry != NULL) {
+                       _noti_led_on(led_entry);
+               } else {
+                       _noti_led_off();
+               }
+       } else {
+               _noti_led_off();
+       }
+}
+
+static void _led_option_vconf_cb(keynode_t *node, void *data)
+{
+       QP_LED_T *led_entry = NULL;
+
+       if (_is_led_enabled() == 1) {
+               INFO("led notification is enabled");
+               led_entry = _led_list_get_first();
+               if (led_entry != NULL) {
+                       DBG("try to turn on LED, op:%d argb:%x", led_entry->op, led_entry->argb);
+                       _noti_led_on(led_entry);
+               } else {
+                       _noti_led_off();
+               }
+       } else {
+               INFO("led notification is disabled");
+               _noti_led_off();
+       }
+}
+
+static void _led_init_data_cb(gpointer key, gpointer value, gpointer user_data)
+{
+       int priv_id = 0;
+       int led_argb = 0;
+       notification_led_op_e led_op = -1;
+       noti_node_item *node = (noti_node_item *)value;
+       retif(node == NULL, , "Invalid parameter!");
+       retif(node->noti == NULL, , "Invalid parameter!");
+
+       notification_get_id(node->noti, NULL, &priv_id);
+       notification_get_led(node->noti, &led_op, &led_argb);
+       if (led_op >= NOTIFICATION_LED_OP_ON) {
+               QP_LED_T *new_entry = _led_entry_new(priv_id, led_op, led_argb);
+               _led_list_add(new_entry);
+       }
+}
+
+static void _led_init_data(noti_node *nodes)
+{
+       QP_LED_T *led_entry = NULL;
+       retif(nodes == NULL, , "Invalid parameter!");
+       retif(nodes->table == NULL, , "Invalid parameter!");
+
+       g_hash_table_foreach(nodes->table, _led_init_data_cb, NULL);
+
+       if (_is_led_enabled() == 1) {
+               led_entry = _led_list_get_first();
+               if (led_entry != NULL) {
+                       _noti_led_on(led_entry);
+               } else {
+                       _noti_led_off();
+               }
+       } else {
+               _noti_led_off();
+       }
+}
+
+HAPI void quickpanel_service_noti_led_init(void *data, void *nodes) {
+       int ret = 0;
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_LED_INDICATOR_NOTIFICATIONS,
+                       _led_option_vconf_cb,
+                               ad);
+       if (ret != 0) {
+               ERR("failed to notify key[%s] : %d",
+                       VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, ret);
+       }
+
+       if (nodes != NULL) {
+               _led_init_data((noti_node *)nodes);
+       }
+}
+
+HAPI void quickpanel_service_noti_led_fini(void *data) {
+       int ret = 0;
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_LED_INDICATOR_NOTIFICATIONS,
+                       _led_option_vconf_cb);
+       if (ret != 0) {
+               ERR("failed to ignore key[%s] : %d",
+                               VCONFKEY_SETAPPL_LED_INDICATOR_NOTIFICATIONS, ret);
+       }
+
+       _led_list_clean_up();
+}
+
+#endif
diff --git a/daemon/service/noti_led.h b/daemon/service/noti_led.h
new file mode 100755 (executable)
index 0000000..6380565
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _QP_NOTI_LED_DEF_
+#define _QP_NOTI_LED_DEF_
+
+#ifdef QP_SERVICE_NOTI_LED_ENABLE
+#include <notification.h>
+#include <dd-led.h>
+#include "quickpanel-ui.h"
+
+void quickpanel_service_noti_led_init(void *data, void *noti_node);
+void quickpanel_service_noti_led_fini(void *data);
+void quickpanel_service_noti_led_proc(notification_h noti, int op_type);
+
+#endif
+#endif
diff --git a/daemon/vi/vi_manager.c b/daemon/vi/vi_manager.c
new file mode 100755 (executable)
index 0000000..282f2d3
--- /dev/null
@@ -0,0 +1,390 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "vi_manager.h"
+
+static int quickpanel_vi_init(void *data);
+static int quickpanel_vi_fini(void *data);
+static int quickpanel_vi_resume(void *data);
+static void quickpanel_vi_qp_opened(void *data);
+
+QP_Module vi_manager = {
+       .name = "vi_manager",
+       .init = quickpanel_vi_init,
+       .fini = quickpanel_vi_fini,
+       .resume = quickpanel_vi_resume,
+       .qp_opened = quickpanel_vi_qp_opened,
+       .lang_changed = NULL,
+       .refresh = NULL
+};
+
+static struct info {
+       Eina_List *vi_list;
+       QP_VI *current;
+       qp_vim_state_type state;
+} s_info = {
+       .vi_list = NULL,
+       .current = NULL,
+       .state = VIM_STATE_NOT_READY,
+};
+
+static QP_VI *_vi_list_get_first(void);
+static void _vi_list_del(QP_VI *vi);
+
+static inline void _vim_set_state(qp_vim_state_type state) {
+       s_info.state = state;
+}
+
+static inline qp_vim_state_type _vim_get_state(void) {
+       return s_info.state;
+}
+
+static void _vi_freeze_start(void)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+       retif(ad->list == NULL, , "invalid parameter");
+
+       if (!evas_object_freeze_events_get(ad->scroller)) {
+               INFO("VIM freezing");
+               evas_object_freeze_events_set(ad->scroller, EINA_TRUE);
+       }
+}
+
+static void _vi_freeze_stop(void)
+{
+       struct appdata *ad = quickpanel_get_app_data();
+       retif(ad == NULL, , "invalid parameter");
+       retif(ad->list == NULL, , "invalid parameter");
+
+       if (evas_object_freeze_events_get(ad->scroller)) {
+               INFO("VIM unfreezing");
+               evas_object_freeze_events_set(ad->scroller, EINA_FALSE);
+       }
+}
+
+static void _vi_restart_job_cb(void *data)
+{
+       QP_VI *next_vi = NULL;
+
+       if (_vim_get_state() == VIM_STATE_READY) {
+               next_vi = _vi_list_get_first();
+
+               if (next_vi) {
+                       if (next_vi->job_cb != NULL) {
+                               _vim_set_state(VIM_STATE_WORKING);
+                               next_vi->state = VI_STATE_RUNNING;
+                               next_vi->job_cb(next_vi);
+                       }
+               }
+       } else if (_vim_get_state() == VIM_STATE_SUSPENDED
+                       || _vim_get_state() == VIM_STATE_NOT_READY){
+               while ((next_vi = _vi_list_get_first()) != NULL) {
+                       quickpanel_vi_done(next_vi);
+               }
+       }
+}
+
+static void _vi_list_add(QP_VI *new_vi)
+{
+       retif(new_vi == NULL, ,"invalid parameter");
+
+       s_info.vi_list = eina_list_append(s_info.vi_list, new_vi);
+}
+
+static int _vi_list_count(void)
+{
+       retif(s_info.vi_list == NULL, 0, "list null");
+
+       return eina_list_count(s_info.vi_list);
+}
+
+static void _vi_list_del(QP_VI *vi)
+{
+       retif(vi == NULL, ,"invalid parameter");
+
+       s_info.vi_list = eina_list_remove(s_info.vi_list, vi);
+}
+
+static int _vi_list_is_data_valid(void *node)
+{
+       if (eina_list_data_find(s_info.vi_list, node) != NULL) {
+               return 1;
+       }
+
+       return 0;
+}
+
+static QP_VI *_vi_list_get_first(void)
+{
+       QP_VI *vi = eina_list_nth(s_info.vi_list, 0);
+
+       return vi;
+}
+
+HAPI QP_VI *quickpanel_vi_new(void) {
+       QP_VI *vi = (QP_VI *)calloc(1, sizeof(QP_VI));
+
+       retif(vi == NULL, NULL, "failed to memory allocation");
+
+       return vi;
+}
+
+HAPI QP_VI *quickpanel_vi_new_with_data(qp_vi_op_type op_type,
+                                                                               qp_item_type_e item_type,
+                                                                               void *container,
+                                                                               void *target,
+                                                                               vi_cb init_cb,
+                                                                               vi_cb job_cb,
+                                                                               vi_cb done_cb,
+                                                                               vi_cb interrupt_cb,
+                                                                               void *extra_data_1,
+                                                                               void *extra_data_2,
+                                                                               int extra_flag_1,
+                                                                               int extra_flag_2) {
+       QP_VI *vi = (QP_VI *)calloc(1, sizeof(QP_VI));
+
+       retif(vi == NULL, NULL, "failed to memory allocation");
+
+       vi->state = VI_STATE_NOT_READY;
+       vi->op_type = op_type;
+       vi->item_type = item_type;
+       vi->container = container;
+       vi->target = target;
+       vi->init_cb = init_cb;
+       vi->job_cb = job_cb;
+       vi->done_cb = done_cb;
+       vi->interrupt_cb = interrupt_cb;
+       vi->extra_data_1 = extra_data_1;
+       vi->extra_data_2 = extra_data_2;
+       vi->extra_flag_1 = extra_flag_1;
+       vi->extra_flag_2 = extra_flag_2;
+
+       return vi;
+}
+
+HAPI void quickpanel_vi_start(QP_VI *vi) {
+       retif(vi == NULL, , "vi is NULL");
+
+       if (vi->init_cb != NULL) {
+               vi->init_cb(vi);
+       }
+
+       vi->state = VI_STATE_READY;
+
+       _vi_freeze_start();
+       _vi_list_add(vi);
+       if (vi->target != NULL) {
+               evas_object_ref(vi->target);
+               if (vi->op_type == VI_OP_DELETE) {
+                       evas_object_freeze_events_set(vi->target, EINA_TRUE);
+               }
+       }
+       if (_vim_get_state() == VIM_STATE_NOT_READY)
+               _vi_restart_job_cb(NULL);
+       else
+               ecore_job_add(_vi_restart_job_cb, NULL);
+}
+
+HAPI void quickpanel_vi_interrupt(QP_VI *vi) {
+       retif(vi == NULL, , "vi is NULL");
+
+       if (!_vi_list_is_data_valid(vi)) {
+               return ;
+       }
+
+       _vi_list_del(vi);
+
+       if (vi->interrupt_cb != NULL) {
+               vi->interrupt_cb(vi);
+               vi->state = VI_STATE_INTERRUPTED;
+       }
+
+       if (s_info.current == vi) {
+               s_info.current = NULL;
+       }
+       if (_vim_get_state() == VIM_STATE_WORKING) {
+               if (!quickpanel_is_opened()) {
+                       _vim_set_state(VIM_STATE_SUSPENDED);
+               } else {
+                       _vim_set_state(VIM_STATE_READY);
+               }
+       }
+
+       evas_object_unref(vi->target);
+       free(vi);
+
+       if (_vi_list_count() <= 0) {
+               _vi_freeze_stop();
+       }
+
+       ecore_job_add(_vi_restart_job_cb, NULL);
+}
+
+HAPI void quickpanel_vi_done(QP_VI *vi) {
+       retif(vi == NULL, , "vi is NULL");
+
+       if (!_vi_list_is_data_valid(vi)) {
+               return ;
+       }
+
+       _vi_list_del(vi);
+
+       if (vi->done_cb != NULL) {
+               vi->done_cb(vi);
+               vi->state = VI_STATE_DONE;
+       }
+
+       if (s_info.current == vi) {
+               s_info.current = NULL;
+       }
+       if (_vim_get_state() == VIM_STATE_WORKING) {
+               if (!quickpanel_is_opened()) {
+                       _vim_set_state(VIM_STATE_SUSPENDED);
+               } else {
+                       _vim_set_state(VIM_STATE_READY);
+               }
+       }
+
+       evas_object_unref(vi->target);
+       free(vi);
+
+       if (_vi_list_count() <= 0) {
+               _vi_freeze_stop();
+       }
+
+       ecore_job_add(_vi_restart_job_cb, NULL);
+}
+
+HAPI void quickpanel_vi_done_cb_for_transit(void *data, Elm_Transit *transit) {
+       retif(data == NULL, , "data is NULL");
+
+       quickpanel_vi_done(data);
+}
+
+HAPI void quickpanel_vim_set_state_ready(void) {
+       if (!quickpanel_is_opened()) {
+               _vim_set_state(VIM_STATE_SUSPENDED);
+       } else {
+               _vim_set_state(VIM_STATE_READY);
+       }
+}
+
+#define VIM_DURATION_INSERT 0.17
+#define VIM_DURATION_UPDATE 0.17
+#define VIM_DURATION_DELETE 0.17
+#define VIM_DURATION_REORDER 0.25
+#define VIM_THROTTLE_THRESHOLD 10
+
+HAPI double quickpanel_vim_get_duration(qp_vi_op_type op_type) {
+       int count = 0;
+       double duration = 0.0;
+
+       switch (op_type) {
+               case VI_OP_INSERT:
+                       duration =  VIM_DURATION_INSERT;
+                       break;
+               case VI_OP_UPDATE:
+                       duration =  VIM_DURATION_UPDATE;
+                       break;
+               case VI_OP_DELETE:
+                       duration =  VIM_DURATION_DELETE;
+                       break;
+               case VI_OP_REORDER:
+                       duration =  VIM_DURATION_REORDER;
+                       break;
+               default :
+                       duration = VIM_DURATION_INSERT;
+                       break;
+       }
+
+       if ((count = _vi_list_count()) > VIM_THROTTLE_THRESHOLD) {
+               duration = duration * (1.0 / (double)count);
+       }
+
+       return duration;
+}
+
+HAPI Elm_Transit_Tween_Mode quickpanel_vim_get_tweenmode(qp_vi_op_type op_type) {
+       Elm_Transit_Tween_Mode mode = ELM_TRANSIT_TWEEN_MODE_LINEAR;
+
+       switch (op_type) {
+               case VI_OP_INSERT:
+                       mode =  ELM_TRANSIT_TWEEN_MODE_DECELERATE;
+                       break;
+               case VI_OP_UPDATE:
+                       mode =  ELM_TRANSIT_TWEEN_MODE_DECELERATE;
+                       break;
+               case VI_OP_DELETE:
+                       mode =  ELM_TRANSIT_TWEEN_MODE_ACCELERATE;
+                       break;
+               case VI_OP_REORDER:
+                       mode =  ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL;
+                       break;
+               default :
+                       mode = ELM_TRANSIT_TWEEN_MODE_LINEAR;
+                       break;
+       }
+
+       return mode;
+}
+
+/*****************************************************************************
+ *
+ * Util functions
+ *
+ *****************************************************************************/
+static int quickpanel_vi_init(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       _vim_set_state(VIM_STATE_NOT_READY);
+
+       return QP_OK;
+}
+
+static int quickpanel_vi_fini(void *data)
+{
+       struct appdata *ad = (struct appdata *)data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       _vim_set_state(VIM_STATE_NOT_READY);
+
+       return QP_OK;
+}
+
+static int quickpanel_vi_resume(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, QP_FAIL, "Invalid parameter!");
+
+       if (_vim_get_state() == VIM_STATE_SUSPENDED) {
+               _vim_set_state(VIM_STATE_READY);
+       }
+
+       return QP_OK;
+}
+
+static void quickpanel_vi_qp_opened(void *data)
+{
+       struct appdata *ad = data;
+       retif(ad == NULL, , "Invalid parameter!");
+
+       if (_vim_get_state() == VIM_STATE_SUSPENDED) {
+               _vim_set_state(VIM_STATE_READY);
+       }
+}
diff --git a/daemon/vi/vi_manager.h b/daemon/vi/vi_manager.h
new file mode 100755 (executable)
index 0000000..569bb7d
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __QUICKPANEL_VI_MANAGER_H__
+#define __QUICKPANEL_VI_MANAGER_H__
+
+#include "quickpanel-ui.h"
+#include "common.h"
+#include "list_util.h"
+
+typedef Eina_Bool (*vi_cb)(void *data);
+
+typedef enum _qp_vim_state_type {
+       VIM_STATE_NOT_READY = 0,
+       VIM_STATE_READY,
+       VIM_STATE_WORKING,
+       VIM_STATE_SUSPENDED,
+} qp_vim_state_type;
+
+typedef enum _qp_vi_state_type {
+       VI_STATE_NOT_READY = 0,
+       VI_STATE_READY = 1,
+       VI_STATE_RUNNING,
+       VI_STATE_DONE,
+       VI_STATE_INTERRUPTED,
+} qp_vi_state_type;
+
+typedef enum _qp_vi_op_type {
+       VI_OP_NONE = -1,
+       VI_OP_INSERT = 0,
+       VI_OP_UPDATE,
+       VI_OP_DELETE,
+       VI_OP_DELETE_ALL,
+       VI_OP_REORDER,
+       VI_OP_ROTATION,
+} qp_vi_op_type;
+
+typedef struct _QP_VI {
+       qp_vi_state_type state;
+       qp_vi_op_type op_type;
+       qp_item_type_e item_type;
+       void *container;
+       void *target;
+       vi_cb init_cb;
+       vi_cb job_cb;
+       vi_cb done_cb;
+       vi_cb interrupt_cb;
+       void *extra_data_1;
+       void *extra_data_2;
+       int extra_flag_1;
+       int extra_flag_2;
+} QP_VI;
+
+typedef  struct _qp_vi_op_table {
+       qp_vi_op_type op_type;
+       void (*handler)(void *data);
+} qp_vi_op_table;
+
+QP_VI *quickpanel_vi_new(void);
+QP_VI *quickpanel_vi_new_with_data(    qp_vi_op_type op_type,
+                                                                               qp_item_type_e item_type,
+                                                                               void *container,
+                                                                               void *target,
+                                                                               vi_cb init_cb,
+                                                                               vi_cb job_cb,
+                                                                               vi_cb done_cb,
+                                                                               vi_cb interrupt_cb,
+                                                                               void *extra_data_1,
+                                                                               void *extra_data_2,
+                                                                               int extra_flag_1,
+                                                                               int extra_flag_2);
+void quickpanel_vi_start(QP_VI *vi);
+void quickpanel_vi_interrupt(QP_VI *vi);
+void quickpanel_vi_done(QP_VI *vi);
+void quickpanel_vim_set_state_ready(void);
+double quickpanel_vim_get_duration(qp_vi_op_type op_type);
+void quickpanel_vi_done_cb_for_transit(void *data, Elm_Transit *transit);
+Elm_Transit_Tween_Mode quickpanel_vim_get_tweenmode(qp_vi_op_type op_type);
+
+#endif
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..e931f55
--- /dev/null
@@ -0,0 +1,30 @@
+#CONFIGURE_FILE(${PROJECT_NAME}.desktop.in ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.desktop)
+#INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.desktop DESTINATION ${DESKTOPDIR})
+CONFIGURE_FILE(${PROJECT_NAME}.xml.in ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.xml)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.xml DESTINATION ${MANIFESTXMLDIR})
+
+CONFIGURE_FILE(${PROJECT_NAME}.sh.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME} DESTINATION /etc/init.d/)
+
+#CONFIGURE_FILE(${PROJECT_NAME}.png ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.png COPYONLY)
+#INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${VENDOR}.${PROJECT_NAME}.png DESTINATION "/usr/share/icons/default/small")
+
+ADD_CUSTOM_TARGET(quickpanel.edj
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images_icon  -id ${CMAKE_CURRENT_SOURCE_DIR}/images
+               ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel.edc
+               ${CMAKE_CURRENT_BINARY_DIR}/quickpanel.edj
+               DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} quickpanel.edj)
+
+ADD_CUSTOM_TARGET(quickpanel_theme.edj
+               COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/images_icon -id ${CMAKE_CURRENT_SOURCE_DIR}/images
+               ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel_theme.edc
+               ${CMAKE_CURRENT_BINARY_DIR}/quickpanel_theme.edj
+               DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/quickpanel_theme.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} quickpanel_theme.edj)
+
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/quickpanel.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/quickpanel_theme.edj DESTINATION ${EDJDIR})
+INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.png")
diff --git a/data/icons/Q02_Notification_brightness.png b/data/icons/Q02_Notification_brightness.png
new file mode 100755 (executable)
index 0000000..e2c8cf8
Binary files /dev/null and b/data/icons/Q02_Notification_brightness.png differ
diff --git a/data/icons/quick_standard_btn_nor.png b/data/icons/quick_standard_btn_nor.png
new file mode 100755 (executable)
index 0000000..5d2cc63
Binary files /dev/null and b/data/icons/quick_standard_btn_nor.png differ
diff --git a/data/icons/quick_standard_btn_press.png b/data/icons/quick_standard_btn_press.png
new file mode 100755 (executable)
index 0000000..c94d052
Binary files /dev/null and b/data/icons/quick_standard_btn_press.png differ
diff --git a/data/images/00_check_bg.png b/data/images/00_check_bg.png
new file mode 100755 (executable)
index 0000000..4105992
Binary files /dev/null and b/data/images/00_check_bg.png differ
diff --git a/data/images/00_check_bg_dim.png b/data/images/00_check_bg_dim.png
new file mode 100755 (executable)
index 0000000..4105992
Binary files /dev/null and b/data/images/00_check_bg_dim.png differ
diff --git a/data/images/00_check_bg_press.png b/data/images/00_check_bg_press.png
new file mode 100755 (executable)
index 0000000..365a256
Binary files /dev/null and b/data/images/00_check_bg_press.png differ
diff --git a/data/images/00_check_checking.png b/data/images/00_check_checking.png
new file mode 100755 (executable)
index 0000000..45fbafe
Binary files /dev/null and b/data/images/00_check_checking.png differ
diff --git a/data/images/00_check_checking_dim.png b/data/images/00_check_checking_dim.png
new file mode 100755 (executable)
index 0000000..45fbafe
Binary files /dev/null and b/data/images/00_check_checking_dim.png differ
diff --git a/data/images/00_divider_line.png b/data/images/00_divider_line.png
new file mode 100755 (executable)
index 0000000..fa2f19e
Binary files /dev/null and b/data/images/00_divider_line.png differ
diff --git a/data/images/00_progress_bar.png b/data/images/00_progress_bar.png
new file mode 100755 (executable)
index 0000000..1675b22
Binary files /dev/null and b/data/images/00_progress_bar.png differ
diff --git a/data/images/00_progress_bg.png b/data/images/00_progress_bg.png
new file mode 100755 (executable)
index 0000000..452e1d7
Binary files /dev/null and b/data/images/00_progress_bg.png differ
diff --git a/data/images/00_slider_handle.png b/data/images/00_slider_handle.png
new file mode 100755 (executable)
index 0000000..829373d
Binary files /dev/null and b/data/images/00_slider_handle.png differ
diff --git a/data/images/00_slider_handle_dim.png b/data/images/00_slider_handle_dim.png
new file mode 100755 (executable)
index 0000000..746f632
Binary files /dev/null and b/data/images/00_slider_handle_dim.png differ
diff --git a/data/images/00_slider_handle_press.png b/data/images/00_slider_handle_press.png
new file mode 100755 (executable)
index 0000000..8475715
Binary files /dev/null and b/data/images/00_slider_handle_press.png differ
diff --git a/data/images/Q02_quickpanel_button_nomal_01_center.png b/data/images/Q02_quickpanel_button_nomal_01_center.png
new file mode 100755 (executable)
index 0000000..69c5b73
Binary files /dev/null and b/data/images/Q02_quickpanel_button_nomal_01_center.png differ
diff --git a/data/images/Q02_quickpanel_button_nomal_01_left.png b/data/images/Q02_quickpanel_button_nomal_01_left.png
new file mode 100755 (executable)
index 0000000..4d35a98
Binary files /dev/null and b/data/images/Q02_quickpanel_button_nomal_01_left.png differ
diff --git a/data/images/Q02_quickpanel_button_nomal_01_right.png b/data/images/Q02_quickpanel_button_nomal_01_right.png
new file mode 100755 (executable)
index 0000000..ef53ed9
Binary files /dev/null and b/data/images/Q02_quickpanel_button_nomal_01_right.png differ
diff --git a/data/images/Q02_quickpanel_button_press_01_center.png b/data/images/Q02_quickpanel_button_press_01_center.png
new file mode 100755 (executable)
index 0000000..fcd401b
Binary files /dev/null and b/data/images/Q02_quickpanel_button_press_01_center.png differ
diff --git a/data/images/Q02_quickpanel_button_press_01_left.png b/data/images/Q02_quickpanel_button_press_01_left.png
new file mode 100755 (executable)
index 0000000..585e850
Binary files /dev/null and b/data/images/Q02_quickpanel_button_press_01_left.png differ
diff --git a/data/images/Q02_quickpanel_button_press_01_right.png b/data/images/Q02_quickpanel_button_press_01_right.png
new file mode 100755 (executable)
index 0000000..1e848c7
Binary files /dev/null and b/data/images/Q02_quickpanel_button_press_01_right.png differ
diff --git a/data/images/bg_pattern.png b/data/images/bg_pattern.png
new file mode 100755 (executable)
index 0000000..5ad9848
Binary files /dev/null and b/data/images/bg_pattern.png differ
diff --git a/data/images/icon_press.png b/data/images/icon_press.png
new file mode 100755 (executable)
index 0000000..9102659
Binary files /dev/null and b/data/images/icon_press.png differ
diff --git a/data/images/notification_bg.png b/data/images/notification_bg.png
new file mode 100755 (executable)
index 0000000..5cf6c0d
Binary files /dev/null and b/data/images/notification_bg.png differ
diff --git a/data/images/quick_btn_close_dim.png b/data/images/quick_btn_close_dim.png
new file mode 100755 (executable)
index 0000000..af02c5d
Binary files /dev/null and b/data/images/quick_btn_close_dim.png differ
diff --git a/data/images/quick_btn_close_nor.png b/data/images/quick_btn_close_nor.png
new file mode 100755 (executable)
index 0000000..9041e29
Binary files /dev/null and b/data/images/quick_btn_close_nor.png differ
diff --git a/data/images/quick_btn_close_press.png b/data/images/quick_btn_close_press.png
new file mode 100755 (executable)
index 0000000..8eb09b8
Binary files /dev/null and b/data/images/quick_btn_close_press.png differ
diff --git a/data/images/quick_btn_close_white_dim.png b/data/images/quick_btn_close_white_dim.png
new file mode 100755 (executable)
index 0000000..cac9843
Binary files /dev/null and b/data/images/quick_btn_close_white_dim.png differ
diff --git a/data/images/quick_btn_close_white_nor.png b/data/images/quick_btn_close_white_nor.png
new file mode 100755 (executable)
index 0000000..476fe97
Binary files /dev/null and b/data/images/quick_btn_close_white_nor.png differ
diff --git a/data/images/quick_btn_close_white_press.png b/data/images/quick_btn_close_white_press.png
new file mode 100755 (executable)
index 0000000..339a81e
Binary files /dev/null and b/data/images/quick_btn_close_white_press.png differ
diff --git a/data/images/quick_handle_both.png b/data/images/quick_handle_both.png
new file mode 100755 (executable)
index 0000000..485a329
Binary files /dev/null and b/data/images/quick_handle_both.png differ
diff --git a/data/images/quick_icon_bg_01.png b/data/images/quick_icon_bg_01.png
new file mode 100755 (executable)
index 0000000..4fa4a24
Binary files /dev/null and b/data/images/quick_icon_bg_01.png differ
diff --git a/data/images/quick_icon_bg_02.png b/data/images/quick_icon_bg_02.png
new file mode 100755 (executable)
index 0000000..39a1a02
Binary files /dev/null and b/data/images/quick_icon_bg_02.png differ
diff --git a/data/images/quick_icon_bg_small.png b/data/images/quick_icon_bg_small.png
new file mode 100755 (executable)
index 0000000..974be6f
Binary files /dev/null and b/data/images/quick_icon_bg_small.png differ
diff --git a/data/images/quick_image_dimmed_land.png b/data/images/quick_image_dimmed_land.png
new file mode 100755 (executable)
index 0000000..0b445b8
Binary files /dev/null and b/data/images/quick_image_dimmed_land.png differ
diff --git a/data/images/quick_image_dimmed_port.png b/data/images/quick_image_dimmed_port.png
new file mode 100755 (executable)
index 0000000..ec11f45
Binary files /dev/null and b/data/images/quick_image_dimmed_port.png differ
diff --git a/data/images/quick_progress.9.png b/data/images/quick_progress.9.png
new file mode 100755 (executable)
index 0000000..1675b22
Binary files /dev/null and b/data/images/quick_progress.9.png differ
diff --git a/data/images/quick_progress_bg.9.png b/data/images/quick_progress_bg.9.png
new file mode 100755 (executable)
index 0000000..452e1d7
Binary files /dev/null and b/data/images/quick_progress_bg.9.png differ
diff --git a/data/images/quick_progress_unknown_port_01.png b/data/images/quick_progress_unknown_port_01.png
new file mode 100755 (executable)
index 0000000..87a8a35
Binary files /dev/null and b/data/images/quick_progress_unknown_port_01.png differ
diff --git a/data/images/quick_progress_unknown_port_02.png b/data/images/quick_progress_unknown_port_02.png
new file mode 100755 (executable)
index 0000000..2d9b954
Binary files /dev/null and b/data/images/quick_progress_unknown_port_02.png differ
diff --git a/data/images_icon/Q02_Notification_brightness.png b/data/images_icon/Q02_Notification_brightness.png
new file mode 100755 (executable)
index 0000000..e2c8cf8
Binary files /dev/null and b/data/images_icon/Q02_Notification_brightness.png differ
diff --git a/data/images_icon/quick_standard_btn_nor.png b/data/images_icon/quick_standard_btn_nor.png
new file mode 100755 (executable)
index 0000000..5d2cc63
Binary files /dev/null and b/data/images_icon/quick_standard_btn_nor.png differ
diff --git a/data/images_icon/quick_standard_btn_press.png b/data/images_icon/quick_standard_btn_press.png
new file mode 100755 (executable)
index 0000000..c94d052
Binary files /dev/null and b/data/images_icon/quick_standard_btn_press.png differ
diff --git a/data/quickpanel.desktop.in b/data/quickpanel.desktop.in
new file mode 100644 (file)
index 0000000..654043c
--- /dev/null
@@ -0,0 +1,14 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=@PROJECT_NAME@
+Comment=@PROJECT_NAME@
+Exec=@BINDIR@/@PROJECT_NAME@
+Icon=@PKGNAME@.png
+Terminal=false
+Type=Application
+Categories=Application;Utility;
+Version=0.1.0
+Nodisplay=True
+X-TIZEN-TaskManage=False
+X-TIZEN-Multiple=False
+X-TIZEN-Removable=False
diff --git a/data/quickpanel.edc b/data/quickpanel.edc
new file mode 100755 (executable)
index 0000000..bb46a6b
--- /dev/null
@@ -0,0 +1,193 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 "quickpanel_def.h"
+
+#define QP_SETTING_H 134
+#define QP_SETTING_SEPERATOR_H 0
+
+#define QUICKPANEL_FOCUS_OBJECT(NAME, TO_1, TO_2)\
+                       part {\
+                               name: NAME;\
+                               type: SWALLOW;\
+                               scale: 1;\
+                               mouse_events: 1;\
+                               repeat_events: 1;\
+                               description {\
+                                       state: "default" 0.0;\
+                                       rel1 { relative: 0.0 0.00; to, TO_1; }\
+                                       rel2 { relative: 1.0 1.00; to, TO_2; }\
+                                       fixed: 1 1;\
+                                       visible: 1;\
+                               }\
+                       }\
+
+images {
+       image: "notification_bg.png" COMP;
+       image: "quick_handle_both.png" COMP;
+}
+
+collections {
+       group { name: "quickpanel/gl_base";
+               parts {
+                       part {
+                               name: "background";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       color: QP_BG_COLOR;
+                                       visible: QP_BG_VISIBILITY;
+                               }
+                       }
+                       part{
+                               name: "background.wallpaper";
+                               type:IMAGE;
+                               scale:1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                       }
+                                       image {
+                                               normal:"notification_bg.png";
+                                       }
+                                       align:0 0;
+                                       visible: 1;
+                               }
+                       }
+                       part{
+                               name: "qp.base.indicator";
+                               type:RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 QP_INDICATOR_H;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "background";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                               to: "background";
+                                       }
+                                       align: 0.0 0.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part{
+                               name: "qp.base.spn.swallow";
+                               type: SWALLOW;
+                               scale: 1;
+                               mouse_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 0 QP_SPN_H;
+                                       rel1 {
+                                               to_y, "qp.base.indicator";
+                                               relative: 0.0 1.0;
+                                       }
+                                       rel2 {
+                                               to_y, "qp.base.indicator";
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "qp.gl_base.gl.swallow";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
+                                       rel1 {
+                                               to_y:"qp.base.spn.swallow";
+                                               relative: 0.0 1.0;
+                                       }
+                                       rel2 {
+                                               to_y:"qp.base.handler";
+                                               relative: 1.0 0.0;
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part{
+                               name: "qp.base.handler.bg";
+                               type:IMAGE;
+                               scale:1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 QP_HANDLE_TOTAL_H;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                       }
+                                       image {
+                                               normal:"quick_handle_both.png";
+                                               border: 1 1 1 1;
+                                               border_scale: 1;
+                                       }
+                                       align: 0.0 1.0;
+                               }
+                       }
+                       part{
+                               name: "qp.base.handler";
+                               type:RECT;
+                               scale:1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 QP_HANDLE_H;
+                                       rel1 {
+                                               relative: 0.0 1.0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 0.0 1.0;
+                                       color: 0 0 0 0;
+                               }
+                       }
+               }
+               programs {
+                       program {
+                               name: "background.touch";
+                               action: SIGNAL_EMIT "close.quickpanel" "";
+                               signal: "mouse,down,1";
+                               source: "background";
+                       }
+               }
+       }
+
+#include "quickpanel_spn.edc"
+#include "quickpanel_brightness.edc"
+
+#include "quickpanel_minictrl.edc"
+#include "quickpanel_noti_section.edc"
+#include "quickpanel_notibox.edc"
+#include "quickpanel_listbox.edc"
+#include "quickpanel_images.edc"
+}
diff --git a/data/quickpanel.png b/data/quickpanel.png
new file mode 100644 (file)
index 0000000..ef74fd1
Binary files /dev/null and b/data/quickpanel.png differ
diff --git a/data/quickpanel.sh.in b/data/quickpanel.sh.in
new file mode 100644 (file)
index 0000000..cf77090
--- /dev/null
@@ -0,0 +1 @@
+@BINDIR@/@PROJECT_NAME@ &
diff --git a/data/quickpanel.xml.in b/data/quickpanel.xml.in
new file mode 100755 (executable)
index 0000000..fdfb1c8
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns="http://tizen.org/ns/packages" package="@PKGNAME@" version="0.3.58" install-location="internal-only">
+       <label>@PROJECT_NAME@</label>
+       <author email="yjoo93.park@samsung.com" href="www.samsung.com">Youngjoo Park</author>
+       <author email="seungtaek.chung@samsung.com" href="www.samsung.com">seungtaek chung</author>
+       <author email="ys4610.ko@samsung.com" href="www.samsung.com">Youngsub Ko</author>
+       <description>@PROJECT_NAME@</description>
+       <ui-application appid="@PKGNAME@" exec="@BINDIR@/@PROJECT_NAME@" nodisplay="true" multiple="false" type="capp" taskmanage="false">
+               <label>@PROJECT_NAME@</label>
+       </ui-application>
+</manifest>
diff --git a/data/quickpanel_brightness.edc b/data/quickpanel_brightness.edc
new file mode 100755 (executable)
index 0000000..ac22e8e
--- /dev/null
@@ -0,0 +1,457 @@
+//#define DEBUG
+//#define DEBUG_TEXT
+
+       styles {
+               style {
+                       name: "checkbox_text";
+                       base: "font=Tizen:style=Regular text_class=tizen font_size=26 color=#FFFFFFFF ellipsis=0.0 wrap=mixed";
+               }
+       }
+
+       group { name: "quickpanel/brightness_controller/default";
+
+               script {
+                       public ctnt_shown;
+                       public time_shown;
+               }
+
+               parts {
+                       part { name: "base";
+                               type: RECT;
+                               repeat_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_BRIGHTNESS_HEIGHT;
+                                       max: 9999 QP_THEME_LIST_ITEM_BRIGHTNESS_HEIGHT;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                       }
+                                       align: 0.0 0.0;
+                                       color: QP_THEME_BG_COLOR;
+                                       visible: QP_THEME_BG_VISIBILITY;
+                               }
+                       }
+                       part { name: "bg_image";
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       color: QP_THEME_NOTI_BG_COLOR;
+                               }
+                               description {
+                                       state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: QP_THEME_NOTI_BG_COLOR;
+                               }
+                       }
+                       part { name: "elm.padding.top";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 37;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.padding.left.bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 14 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel2.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                                       color: QP_THEME_BG_COLOR;
+                                       visible: QP_THEME_BG_VISIBILITY;
+                               }
+                       }
+                       part { name: "elm.padding.right.bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 14 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 1.0 0.0;
+                                       color: QP_THEME_BG_COLOR;
+                                       visible: QP_THEME_BG_VISIBILITY;
+                               }
+                       }
+                       part { name: "elm.padding.right.check.text";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 16 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 1.0 0.0;
+                                       color: QP_THEME_BG_COLOR;
+                                       visible: QP_THEME_BG_VISIBILITY;
+                               }
+                       }
+                       part { name: "elm.content.bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 14 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               to_x:"elm.padding.left.bg";
+                                               to_y:"base";
+                                               relative: 1.0 0.0;
+                                       }
+                                       rel2 {
+                                               to_x:"elm.padding.right.bg";
+                                               to_y:"base";
+                                               relative: 0.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                                       visible: 1;
+                                       color: QP_THEME_NOTI_BG_COLOR;
+                               }
+                       }
+                       part { name: "elm.padding.left";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 28 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel2.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.padding.right";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 28 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 1.0 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.padding.bottom.check.text";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 39;
+                                       fixed: 0 1;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 1.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 0.0 1.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.padding.bottom";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 39;
+                                       fixed: 0 1;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 1.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 0.0 1.0;
+                                       color: QP_THEME_BG_COLOR;
+                                       visible: QP_THEME_BG_VISIBILITY;
+                               }
+                       }
+                       part { name: "elm.rect.thumbnail";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 52 52;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to_x:"elm.padding.left";
+                                               to_y:"elm.padding.top";
+                                               relative: 1.0 1.0;
+                                       }
+                                       rel2 {
+                                               to_x:"elm.padding.left";
+                                               to_y:"elm.padding.top";
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                                       visible:0;
+                               }
+                       }
+                       part { name: "elm.swallow.thumbnail";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       rel1 {
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.thumbnail";
+                                       }
+                               }
+                       }
+                       part { name: "elm.padding.thumbnail.x";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 6 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               to:"elm.rect.thumbnail";
+                                               relative: 1.0 0.0;
+                                       }
+                                       rel2 {
+                                               to:"elm.rect.thumbnail";
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.rect.slider";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 20;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 1.0 0.0;
+                                               to_x: "elm.padding.thumbnail.x";
+                                               to_y: "elm.rect.thumbnail";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.slider.padding.x";
+                                               to_y: "elm.rect.thumbnail";
+                                       }
+                                       align: 0.0 0.5;
+                                       visible:0;
+                               }
+                       }
+                       part { name: "elm.swallow.slider";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to: "elm.rect.slider";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.slider";
+                                       }
+                               }
+                       }
+                       part { name: "elm.slider.padding.x";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 22 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to: "elm.check.rect";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to: "elm.check.rect";
+                                       }
+                                       align: 1.0 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.check.rect";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 48 48;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.check.text.padding.x";
+                                               to_y: "elm.padding.bottom.check.text";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.check.text.padding.x";
+                                               to_y: "elm.padding.bottom.check.text";
+                                       }
+                                       align: 1.0 1.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.check.swallow";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to: "elm.check.rect";
+                                       }
+                                       rel2 {
+                                               to: "elm.check.rect";
+                                       }
+                               }
+                       }
+                       part { name: "elm.check.text.padding.x";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.check.text.rect";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.check.text.rect";
+                                       }
+                                       align: 1.0 0.0;
+                                       visible:0;
+                               }
+                       }
+                       part { name: "elm.check.text.rect";
+                               type: RECT;
+                               scale: 1;
+                               mouse_events: 1;
+                               description { state: "default" 0.0;
+                                       fixed: 1 1;
+                                       min: 90 96;
+                                       max: 90 96;
+                                       rel1 {
+                                               relative: 0.0 0.5;
+                                               to_x:"elm.padding.right.check.text";
+                                               to_y:"elm.check.rect";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.5;
+                                               to_x:"elm.padding.right.check.text";
+                                               to_y:"elm.check.rect";
+                                       }
+                                       align: 1.0 0.5;
+                                       visible:1;
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part { name: "elm.check.text";
+                               type: TEXTBLOCK;
+                               multiline: 1;
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       rel1 {
+                                               to: "elm.check.text.rect";
+                                       }
+                                       rel2 {
+                                               to: "elm.check.text.rect";
+                                       }
+                                       text {
+                                               style: "checkbox_text";
+                                               align: 0.0 0.5;
+                                               size: 26;
+                                               size_range: 25 26;
+                                               fit: 1 0;
+                                               min: 0 1;
+                                       }
+                               }
+                       }
+                       part {
+                               name: "accessibility.check.label";
+                               type: RECT;
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               to: "elm.check.text.rect";
+                                       }
+                                       rel2 {
+                                               to: "elm.check.text.rect";
+                                       }
+                                       color: QP_ACCESSIBILITY_TEST_COLOR;
+                                       visible: 1;
+                               }
+                       }
+               }
+
+               programs {
+                       program{
+                               name: "text.click";
+                               signal: "mouse,clicked,1";
+                               source: "elm.check.text.rect";
+                               action: SIGNAL_EMIT "auto.clicked" "edje";
+                       }
+                       program { name: "show_content";
+                               signal: "elm,state,elm.swallow.slider,active";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"elm.swallow.slider", "show", 0.0);
+                                       set_int(ctnt_shown, 1);
+                               }
+                       }
+                       program { name: "go_active";
+                               signal: "elm,state,selected";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"bg_image", "selected", 0.0);
+                                       set_state(PART:"elm.check.text", "selected", 0.0);
+                                       if (get_int(ctnt_shown) == 1)
+                                       set_state(PART:"elm.swallow.slider", "selected", 0.0);
+                               }
+                       }
+                       program { name: "go_passive";
+                               signal: "elm,state,unselected";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"bg_image", "default", 0.0);
+                                       set_state(PART:"elm.check.text", "default", 0.0);
+                                       if (get_int(ctnt_shown) == 1)
+                                       set_state(PART:"elm.swallow.slider", "show", 0.0);
+                               }
+                       }
+               }
+       }
\ No newline at end of file
diff --git a/data/quickpanel_def.h b/data/quickpanel_def.h
new file mode 100755 (executable)
index 0000000..5682b66
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 __QUICKPANEL_EDC_DEF_H__
+#define __QUICKPANEL_EDC_DEF_H__
+
+#define QP_INDICATOR_H 0
+#define QP_INDICATOR_COMPENSATE_H      50
+
+#define QP_HANDLE_H     64
+#define QP_HANDLE_TOTAL_H       80
+#define QP_SPN_H 80
+#define QP_SPN_TEXT_W 520
+
+#define QP_BG_VISIBILITY       0
+#define QP_BG_COLOR    255 255 255 255
+#define QP_SETTING_BG_COLOR 255 255 255 255
+#define QP_SETTING_ICON_BG_COLOR 26 26 26 255
+#define QP_ACCESSIBILITY_TEST_COLOR 0 0 0 0;
+#define QP_THEME_BG_VISIBILITY                         0
+#define QP_THEME_BG_COLOR                              255 255 255 255
+#define QP_THEME_NOTI_BG_COLOR                         28 29 30 255
+#define QP_THEME_LIST_ITEM_GROUP_HEIGHT 80
+#define QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT 180
+#define QP_THEME_LIST_ITEM_MINICONTR_SEPERATOR_HEIGHT 12
+#define QP_THEME_LIST_ITEM_ONGOING_HEIGHT 180
+#define QP_THEME_LIST_ITEM_ONGOING_SEPERATOR_HEIGHT 12
+#define QP_THEME_LIST_ITEM_BRIGHTNESS_HEIGHT 126
+#define QP_THEME_LIST_ITEM_MULTIWINDOW_HEIGHT 180
+#define QP_THEME_LIST_TITLE_FONT_NAME                  "Tizen:style=Medium"
+#define QP_THEME_LIST_TITLE_FONT_COLOR                 149 148 148 255
+#define QP_THEME_LIST_TITLE_FONT_SIZE                  36
+
+#define BOX_PART_ICON "object.icon"
+#define BOX_PART_ICON_SUB "object.icon.sub"
+#define BOX_ICON_SIZE_W 124
+#define BOX_ICON_SIZE_H 124
+#define BOX_ICON_SUB_SIZE_W 56
+#define BOX_ICON_SUB_SIZE_H 56
+
+#define BOX_COLOR_BG 28 29 30 255
+#define BOX_WIDTH_P 340
+#define BOX_HEIGHT_P 322
+#define BOX_WIDTH_L 406
+#define BOX_HEIGHT_L 322
+
+#define BOX_MARGIN_L_TEXT_H 14
+#define BOX_MARGIN_R_TEXT_H 11
+#define BOX_TEXT_CONTENTS_HEIGHT 36
+#define BOX_TEXT_INFO_HEIGHT 35
+#define BOX_TEXT_SUB_WIDTH 115
+#define BOX_TEXT_SUB_PADDING_WIDTH 3
+
+#endif /*__QUICKPANEL_EDC_DEF_H__*/
diff --git a/data/quickpanel_images.edc b/data/quickpanel_images.edc
new file mode 100755 (executable)
index 0000000..7000e69
--- /dev/null
@@ -0,0 +1,34 @@
+#define RESOURCE_IMAGE( FILE_NAME ) \
+   group { \
+      name: FILE_NAME; \
+      images.image: FILE_NAME COMP; \
+      parts { \
+         part { name: "image"; \
+            description { \
+               state: "default" 0.0; \
+               image.normal: FILE_NAME; \
+               aspect: 1 1; \
+               aspect_preference: BOTH; \
+            } \
+         } \
+      } \
+   }
+
+#define RESOURCE_IMAGE_LOSSY( FILE_NAME ) \
+   group { \
+      name: FILE_NAME; \
+      images.image: FILE_NAME LOSSY 85; \
+      parts { \
+         part { name: "image"; \
+            description { \
+               state: "default" 0.0; \
+               image.normal: FILE_NAME; \
+               aspect: 1 1; \
+               aspect_preference: BOTH; \
+            } \
+         } \
+      } \
+   }
+
+;
+       RESOURCE_IMAGE("Q02_Notification_brightness.png");
diff --git a/data/quickpanel_listbox.edc b/data/quickpanel_listbox.edc
new file mode 100755 (executable)
index 0000000..49da046
--- /dev/null
@@ -0,0 +1,629 @@
+//#define DEBUG
+//#define DEBUG_TEXT
+
+       styles {
+               style {
+                       name: "ongoing_content_text";
+                       base: "font=Tizen:style=Roman text_class=tizen align=left valign=top font_size=28 linegap=-6 ellipsis=1.0 color=#828384FF wrap=mixed";
+               }
+       }
+
+       group {
+               name: "quickpanel/listitem/default";
+
+               images {
+                       image: "quick_icon_bg_02.png" COMP;
+               }
+
+               script {
+                       public ctnt_shown;
+                       public ctnt_multiline_shown;
+               }
+
+               parts {
+                       part { name: "base";
+                               type: RECT;
+                               repeat_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_ONGOING_HEIGHT + QP_THEME_LIST_ITEM_ONGOING_SEPERATOR_HEIGHT;
+                                       max: 9999 QP_THEME_LIST_ITEM_ONGOING_HEIGHT + QP_THEME_LIST_ITEM_ONGOING_SEPERATOR_HEIGHT;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                       }
+                                       align: 0.0 0.0;
+                                       color: QP_THEME_BG_COLOR;
+                                       visible: QP_THEME_BG_VISIBILITY;
+                               }
+                       }
+                       part { name: "bg_image";
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       color: QP_THEME_NOTI_BG_COLOR;
+                               }
+                               description {
+                                       state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: QP_THEME_NOTI_BG_COLOR;
+                               }
+                       }
+                       part { name: "elm.padding.top";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 16 + QP_THEME_LIST_ITEM_ONGOING_SEPERATOR_HEIGHT;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part { name: "elm.padding.top.text.contents";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 61 + QP_THEME_LIST_ITEM_ONGOING_SEPERATOR_HEIGHT;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part { name: "elm.padding.bottom.mutiline.content";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 1.0;
+                                       align: 0.0 1.0;
+                               }
+                       }
+                       part { name: "elm.padding.bottom.time";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 82;
+                                       fixed: 0 1;
+#ifdef DEBUG
+                                       visible: 1;
+                                       color: 0 255 0 255;
+#else
+                                       visible: 0;
+#endif
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 1.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 0.0 1.0;
+                               }
+                       }
+                       part { name: "elm.padding.bottom.progress";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 52;
+                                       fixed: 0 1;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 1.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 0.0 1.0;
+#ifdef DEBUG
+                                       visible: 1;
+                                       color: 0 0 255 255;
+#else
+                                       visible: 0;
+#endif
+                               }
+                       }
+                       part { name: "elm.padding.bottom.icon";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 31;
+                                       fixed: 0 1;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 1.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 0.0 1.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.padding.left.bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 14 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                                       color: QP_THEME_BG_COLOR;
+                                       visible: QP_THEME_BG_VISIBILITY;
+                               }
+                       }
+                       part { name: "elm.padding.right.bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 14 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 1.0 0.0;
+                                       color: QP_THEME_BG_COLOR;
+                                       visible: QP_THEME_BG_VISIBILITY;
+                               }
+                       }
+                       part { name: "elm.padding.top.bg";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_ONGOING_SEPERATOR_HEIGHT;
+                                       fixed: 0 1;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                                       color: QP_THEME_BG_COLOR;
+                                       visible: QP_THEME_BG_VISIBILITY;
+                               }
+                       }
+                       part { name: "elm.content.bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               to_x:"elm.padding.left.bg";
+                                               to_y:"elm.padding.top.bg";
+                                               relative: 1.0 1.0;
+                                       }
+                                       rel2 {
+                                               to_x:"elm.padding.right.bg";
+                                               to_y:"base";
+                                               relative: 0.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                                       visible: 1;
+                                       color: QP_THEME_NOTI_BG_COLOR;
+                               }
+                       }
+                       part { name: "elm.padding.left";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 28 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.padding.right";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 20 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 1.0 0.0;
+#ifdef DEBUG
+                                       visible: 1;
+                                       color: 255 0 0 190;
+#else
+                                       visible: 0;
+#endif
+                               }
+                       }
+                       part { name: "elm.rect.thumbnail";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 124 124;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.bottom.icon";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.bottom.icon";
+                                       }
+                                       align: 1.0 1.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.thumbnail.bg";
+                               type: IMAGE;
+                               mouse_events: 0;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 0 0;
+                                       rel1 {to: "elm.rect.thumbnail";}
+                                       rel2 {to: "elm.rect.thumbnail";}
+                                       image {
+                                               normal:"quick_icon_bg_02.png";
+                                               border: 0 0 0 0;
+                                               border_scale: 1;
+                                       }
+                               }
+                       }
+                       part { name: "elm.swallow.thumbnail";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       align: 0.5 0.5;
+                               }
+                       }
+                       part { name: "elm.swallow.icon";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 40 40;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                               to: "elm.rect.thumbnail";
+                                       }
+                                       align: 1.0 1.0;
+                               }
+                       }
+                       part { name: "elm.padding.right.slider.bounder";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 202 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.padding.right";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                       }
+                                       visible: 0;
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part { name: "elm.padding.right.text.bounder";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 144 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.padding.right";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right";
+                                       }
+                                       visible: 0;
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part { name: "elm.text.title";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 36;
+                                       align: 0.0 0.0;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.left";
+                                               to_y: "elm.padding.top";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right.text.bounder";
+                                               to_y: "elm.padding.top";
+                                       }
+                                       color: 248 246 239 255;
+                                       text {
+                                               font: "Tizen:style=Regular";
+                                               text_class: "tizen";
+                                               size: 32;
+                                               fit: 0 1;
+                                               ellipsis: 0.0;
+                                               align: 0.0 0.5;
+                                               size_range: 34 44;
+                                       }
+                               }
+                               description { state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: 248 246 239 255;
+                               }
+                       }
+                       part { name: "elm.text.time";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       fixed: 0 1;
+                                       min: 0 28;
+                                       align: 0.0 1.0;
+                                       rel1 {
+                                               relative: 1.0 0.0;
+                                               to_x: "elm.padding.left";
+                                               to_y: "elm.padding.bottom.time";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.padding.right.slider.bounder";
+                                               to_y: "elm.padding.bottom.time";
+                                       }
+                                       color: 255 255 255 255;
+                                       text {
+                                               font: "Tizen:style=Medium";
+                                               text_class: "tizen";
+                                               size: 28;
+                                               align: 1.0 0.0;
+                                       }
+                               }
+                               description { state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: 255 255 255 255;
+                               }
+                       }
+                       part { name: "elm.rect.content";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       min: 0 28;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.left";
+                                               to_y: "elm.padding.top.text.contents";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 1.0;
+                                               to_x: "elm.padding.right.text.bounder";
+                                               to_y: "elm.padding.top.text.contents";
+                                       }
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.text.content";
+                               type: TEXT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       fixed: 0 1;
+                                       rel1 {
+                                               to: "elm.rect.content";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.content";
+                                       }
+                                       color: 130 131 132 255;
+                                       text {
+                                               font: "Tizen:style=Roman";
+                                               text_class: "tizen";
+                                               size: 28;
+                                               fit: 0 1;
+                                               ellipsis: 0.0;
+                                               size_range: 26 30;
+                                               align: 0.0 0.5;
+                                       }
+                                       visible: 0;
+                               }
+                               description { state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible: 1;
+                               }
+                               description { state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: 130 131 132 255;
+                                       visible: 1;
+                               }
+                       }
+                       part { name: "elm.rect.content.multiline";
+                               type: RECT;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       min: 0 0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 1.0 1.0;
+                                               to_x: "elm.padding.left";
+                                               to_y: "elm.text.title";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.padding.right.text.bounder";
+                                               to_y: "elm.padding.bottom.mutiline.content";
+                                       }
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.text.content.multiline";
+                               type: TEXTBLOCK;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to: "elm.rect.content.multiline";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.content.multiline";
+                                       }
+                                       text {
+                                                       style: "ongoing_content_text";
+                                                       align: 0.0 0.0;
+                                                       fit: 0 0;
+                                       }
+                                       visible:0;
+                               }
+                               description { state: "show" 0.0;
+                                       inherit: "default" 0.0;
+                                       visible:1;
+                               }
+                               description { state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: 130 131 132 255;
+                                       visible: 1;
+                               }
+                       }
+                       part { name: "elm.box.progress";
+                               type: BOX;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 20;
+                                       fixed: 0 1;
+                                       align: 0.0 1.0;
+                                       rel1 {
+                                               relative: 1.0 0.0;
+                                               to_x: "elm.padding.left";
+                                               to_y: "elm.padding.bottom.progress";
+                                       }
+                                       rel2 {
+                                               relative: 0.0 0.0;
+                                               to_x: "elm.padding.right.slider.bounder";
+                                               to_y: "elm.padding.bottom.progress";
+                                       }
+#ifdef DEBUG
+                                       visible: 1;
+                                       color: 100 100 100 200;
+#else
+                                       visible: 0;
+#endif
+                               }
+                       }
+                       part { name: "elm.swallow.progress";
+                               type: SWALLOW;
+                               mouse_events: 0;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       rel1 {
+                                               to: "elm.box.progress";
+                                       }
+                                       rel2 {
+                                               to: "elm.box.progress";
+                                       }
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part {
+                               name: "object.layer.touch.background";
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               scale: 1;
+                               type: RECT;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {to: "base";}
+                                       rel2 {to: "base";}
+                                       color: 0 0 0 0;
+                               }
+                       }
+                       part {
+                               name: "accessibility";
+                               type: RECT;
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               to: "elm.content.bg";
+                                       }
+                                       rel2 {
+                                               to: "elm.content.bg";
+                                       }
+                                       color: QP_ACCESSIBILITY_TEST_COLOR;
+                                       visible: 1;
+                               }
+                       }
+               }
+
+               programs {
+                       program{
+                               name: "listbox.touch.down";
+                               signal: "mouse,clicked,1";
+                               source: "object.layer.touch.background";
+                               action: SIGNAL_EMIT "selected" "edje";
+                       }
+                       program { name: "show_content";
+                               signal: "elm,state,elm.text.content,active";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"elm.text.content", "show", 0.0);
+                                       set_int(ctnt_shown, 1);
+                               }
+                       }
+                       program { name: "show_content_multiline";
+                               signal: "elm,state,elm.text.content.multiline,active";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"elm.text.content.multiline", "show", 0.0);
+                                       set_int(ctnt_multiline_shown, 1);
+                               }
+                       }
+               }
+       }
\ No newline at end of file
diff --git a/data/quickpanel_minictrl.edc b/data/quickpanel_minictrl.edc
new file mode 100755 (executable)
index 0000000..ecfcf3f
--- /dev/null
@@ -0,0 +1,181 @@
+//#define DEBUG
+//#define DEBUG_TEXT
+
+       group { name: "quickpanel/minictrl/default";
+               parts {
+                       part { name: "base";
+                               type: RECT;
+                               repeat_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_MINICONTRL_HEIGHT + QP_THEME_LIST_ITEM_MINICONTR_SEPERATOR_HEIGHT;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                       }
+                                       align: 0.0 0.0;
+                                       color: QP_THEME_BG_COLOR;
+                                       visible: QP_THEME_BG_VISIBILITY;
+                               }
+                       }
+                       part { name: "bg_image";
+                               mouse_events: 0;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       color: QP_THEME_NOTI_BG_COLOR;
+                               }
+                               description {
+                                       state: "selected" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: QP_THEME_NOTI_BG_COLOR;
+                               }
+                       }
+                       part { name: "elm.padding.top";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 20 + QP_THEME_LIST_ITEM_ONGOING_SEPERATOR_HEIGHT;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part { name: "elm.padding.left.bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 14 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                                       color: QP_THEME_BG_COLOR;
+                                       visible: QP_THEME_BG_VISIBILITY;
+                               }
+                       }
+                       part { name: "elm.padding.right.bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 14 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 1.0 0.0;
+                                       color: QP_THEME_BG_COLOR;
+                                       visible: QP_THEME_BG_VISIBILITY;
+                               }
+                       }
+                       part { name: "elm.padding.top.bg";
+                               type: RECT;
+                               scale: 1;
+                               description { state: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_MINICONTR_SEPERATOR_HEIGHT;
+                                       fixed: 0 1;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                                       color: QP_THEME_BG_COLOR;
+                                       visible: QP_THEME_BG_VISIBILITY;
+                               }
+                       }
+                       part { name: "elm.content.bg";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               to_x:"elm.padding.left.bg";
+                                               to_y:"elm.padding.top.bg";
+                                               relative: 1.0 1.0;
+                                       }
+                                       rel2 {
+                                               to_x:"elm.padding.right.bg";
+                                               to_y:"elm.padding.bottom";
+                                               relative: 0.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                                       visible: 1;
+                                       color: QP_THEME_NOTI_BG_COLOR;
+                               }
+                       }
+                       part { name: "elm.padding.left";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 28 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.padding.right";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 18 0;
+                                       fixed: 1 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 1.0 0.0;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.icon";
+                               type: SWALLOW;
+                               mouse_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       align: 0.0 0.0;
+                                       rel1 {
+                                               to: "elm.content.bg";
+                                       }
+                                       rel2 {
+                                               to_x: "elm.content.bg";
+                                               to_y: "elm.padding.bottom";
+                                               relative: 1.0 0.0;
+                                       }
+                               }
+                       }
+                       part { name: "elm.padding.bottom";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 0;
+                                       fixed: 1 0;
+                                       rel1.relative: 0.0 1.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 0.0 1.0;
+                                       visible: 0;
+                               }
+                       }
+               }
+       }
\ No newline at end of file
diff --git a/data/quickpanel_noti_section.edc b/data/quickpanel_noti_section.edc
new file mode 100755 (executable)
index 0000000..26a31d4
--- /dev/null
@@ -0,0 +1,205 @@
+//#define DEBUG
+//#define DEBUG_TEXT
+
+       group { name: "quickpanel/notisection/default";
+
+               parts {
+                       part { name: "base";
+                               type: RECT;
+                               repeat_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 QP_THEME_LIST_ITEM_GROUP_HEIGHT;
+                                       max: 9999 QP_THEME_LIST_ITEM_GROUP_HEIGHT;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                       }
+                                       align: 0.0 0.0;
+                                       color: QP_THEME_BG_COLOR;
+                                       visible: QP_THEME_BG_VISIBILITY;
+                               }
+                       }
+                       part { name: "elm.padding.left";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 26 0;
+                                       fixed: 1 0;
+                                       visible: 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 0.0 1.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part { name: "elm.padding.right";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 14 0;
+                                       fixed: 1 0;
+                                       visible: 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 1.0 0.0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 1.0 0.0;
+                               }
+                       }
+                       part { name: "elm.padding.top";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 11;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 0.0;
+                                       rel2.relative: 1.0 0.0;
+                                       align: 0.0 0.0;
+                               }
+                       }
+                       part { name: "elm.padding.bottom";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 11;
+                                       fixed: 0 1;
+                                       visible: 0;
+                                       rel1.to:"base";
+                                       rel2.to:"base";
+                                       rel1.relative: 0.0 1.0;
+                                       rel2.relative: 1.0 1.0;
+                                       align: 0.0 1.0;
+                               }
+                       }
+
+                       part { name: "elm.rect.text";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 500 0;
+                                       fixed: 1 0;
+                                       rel1 {
+                                               to_x: "elm.padding.left";
+                                               relative: 1.0 0.0;
+                                       }
+                                       rel2 {
+                                               to_x: "elm.padding.left";
+                                               relative: 1.0 1.0;
+                                       }
+                                       align: 0.0 0.0;
+                                       visible:0;
+                               }
+                       }
+                       part { name: "elm.text.text";
+                               type: TEXT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               to: "elm.rect.text";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.text";
+                                       }
+                                       color: QP_THEME_LIST_TITLE_FONT_COLOR;
+                                       text {
+                                               font: QP_THEME_LIST_TITLE_FONT_NAME;
+                                               text_class: "tizen";
+                                               size: QP_THEME_LIST_TITLE_FONT_SIZE;
+                                               align: 0.0 0.5;
+                                               ellipsis: 0.0;
+                                       }
+                               }
+                       }
+
+                       part { name: "elm.rect.icon";
+                               type: RECT;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 158 58;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.top";
+                                               relative: 0.0 1.0;
+                                       }
+                                       rel2 {
+                                               to_x: "elm.padding.right";
+                                               to_y: "elm.padding.bottom";
+                                               relative: 0.0 0.0;
+                                       }
+                                       align: 1.0 0.5;
+                                       visible: 0;
+                               }
+                       }
+                       part { name: "elm.swallow.icon";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               to: "elm.rect.icon";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.icon";
+                                       }
+                               }
+                       }
+                       part {
+                               name: "accessibility.label";
+                               type: RECT;
+                               mouse_events: 1;
+                               repeat_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 {
+                                               to: "elm.rect.text";
+                                       }
+                                       rel2 {
+                                               to: "elm.rect.text";
+                                       }
+                                       color: QP_ACCESSIBILITY_TEST_COLOR;
+                                       visible: 1;
+                               }
+                       }
+               }
+       }
+
+       group { name: "quickpanel/seperator/default";
+               parts {
+                       part { name: "base";
+                               type: RECT;
+                               repeat_events: 1;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       min: 0 1;
+                                       max: 9999 1;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 0.0;
+                                       }
+                                       align: 0.0 0.0;
+                                       color: 255 0 0 100;
+                                       visible: 1;
+                               }
+                       }
+               }
+       }
\ No newline at end of file
diff --git a/data/quickpanel_notibox.edc b/data/quickpanel_notibox.edc
new file mode 100755 (executable)
index 0000000..0c17fe4
--- /dev/null
@@ -0,0 +1,3779 @@
+//#define DEBUG
+//#define DEBUG_TEXT
+
+#define MAKE_PART_SHOW_PROGRAM(PARTNAME)\
+               program{\
+                       name: PARTNAME".object.show";\
+                       signal: "object.show";\
+                       source: PARTNAME;\
+                       action: STATE_SET "show" 0.0;\
+                       target: PARTNAME;\
+               }\
+
+#define MAKE_PART_SHOW_TEXT_PROGRAM(PARTNAME)\
+               program{\
+                       name: PARTNAME".text.show";\
+                       signal: "object.show";\
+                       source: PARTNAME;\
+                       action: STATE_SET "show" 0.0;\
+                       target: PARTNAME;\
+               }\
+               program{\
+                       name: PARTNAME".text.show.efect";\
+                       signal: "object.show.effect";\
+                       source: PARTNAME;\
+                       action: STATE_SET "show.effect" 0.0;\
+                       target: PARTNAME;\
+               }\
+
+images {
+       image: "quick_icon_bg_02.png" COMP;
+       image: "quick_btn_close_press.png" COMP;
+       image: "quick_btn_close_dim.png" COMP;
+       image: "quick_btn_close_nor.png" COMP;
+       image: "quick_btn_close_white_press.png" COMP;
+       image: "quick_btn_close_white_dim.png" COMP;
+       image: "quick_btn_close_white_nor.png" COMP;
+       image: "quick_image_dimmed_port.png" COMP;
+       image: "quick_image_dimmed_land.png" COMP;
+       image: "quick_icon_bg_small.png" COMP;
+       image: "icon_press.png" COMP;
+}
+
+#define BOX_FONT_SHADOW_COLOR 0 0 0 191
+#define BOX_FONT_OUTLINE_COLOR 0 0 0 191
+#define BOX_FONT_NO_SHADOW_COLOR 0 0 0 0
+#define BOX_FONT_NO_OUTLINE_COLOR 0 0 0 0
+
+#define BOX_CONTENTS_FONT "Tizen:style=Medium"
+#define BOX_CONTENTS_FONT_SIZE 32
+#define BOX_CONTENTS_FONT_COLOR 248 246 239 255
+
+#define BOX_INFO_FONT "Tizen:style=Regular"
+#define BOX_INFO_FONT_SIZE 28
+#define BOX_INFO_FONT_COLOR 248 246 239 127
+
+#define BOX_INFO_SHORT_FONT "Tizen:style=Medium"
+#define BOX_INFO_SHORT_FONT_SIZE 28
+#define BOX_INFO_SHORT_FONT_COLOR 248 246 239 127
+
+#define BOX_INFO_SUB_FONT "Tizen:style=Regular"
+#define BOX_INFO_SUB_FONT_SIZE 20
+#define BOX_INFO_SUB_FONT_COLOR 248 246 239 127
+
+#define BOX_INFO_COUNT_FONT "Tizen:style=Medium"
+#define BOX_INFO_COUNT_FONT_SIZE 46
+#define BOX_INFO_COUNT_FONT_COLOR 248 246 239 255
+
+#define TEXT_CLASS_TIZEN "tizen"
+#define TEXT_EFFECT "OUTLINE_SHADOW"
+
+styles {
+       style {
+               name: "notibox_title";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=38 color=#F8F6EF ellipsis=1.0 wrap=mixed";
+       }
+
+       style {
+               name: "notibox_title_effect";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=38 color=#F8F6EF ellipsis=1.0 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
+       }
+
+       style {
+               name: "notibox_contents";
+               base: "font=Tizen:style=Medium text_class=tizen font_size=32 color=#F8F6EF ellipsis=1.0 linegap=-6 wrap=mixed";
+       }
+
+       style {
+               name: "notibox_contents_effect";
+               base: "font=Tizen:style=Medium text_class=tizen font_size=32 color=#F8F6EF ellipsis=1.0 linegap=-6 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
+       }
+
+       style {
+               name: "notibox_info";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=28 color=#F8F6EF7F ellipsis=1.0 linegap=-6 wrap=mixed";
+       }
+
+       style {
+               name: "notibox_info_effect";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=28 color=#F8F6EF7F ellipsis=1.0 linegap=-6 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
+       }
+
+       style {
+               name: "notibox_info_short";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=28 color=#F8F6EF7F ellipsis=1.0 linegap=-6 wrap=mixed";
+       }
+
+       style {
+               name: "notibox_info_short_effect";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=28 color=#F8F6EF7F ellipsis=1.0 linegap=-6 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
+       }
+
+       style {
+               name: "notibox_info_sub";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=20 color=#F8F6EF7F ellipsis=1.0 linegap=-6 wrap=mixed";
+       }
+
+       style {
+               name: "notibox_info_sub_effect";
+               base: "font=Tizen:style=Regular text_class=tizen font_size=20 color=#F8F6EF7F ellipsis=1.0 linegap=-6 wrap=mixed style=outline_shadow outline_color=#000000BF shadow_color=#000000BF";
+       }
+}
+
+group {
+       name: "quickpanel/notibox/single_multi";
+
+       script {
+               public g_is_close_button_disabled;
+               public g_is_show_dim_bg;
+               public g_is_close_button_type_2;
+
+               public init_variables() {
+                       set_int(g_is_close_button_disabled, 0);
+                       set_int(g_is_show_dim_bg, 0);
+                       set_int(g_is_close_button_type_2, 0);
+               }
+       }
+
+       parts {
+               part {
+                       name: "background";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               color: BOX_COLOR_BG;
+                               align: 0.0 0.0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                       }
+               }
+
+               //section layout for margin
+
+               part {
+                       name: "margin.left";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BOX_MARGIN_L_TEXT_H 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 0 0 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "margin.right";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BOX_MARGIN_R_TEXT_H 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                               }
+                               align: 1.0 0.0;
+#ifdef DEBUG
+                               color: 0 0 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "margin.right.icon";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 8 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                               }
+                               align: 1.0 0.0;
+#ifdef DEBUG
+                               color: 0 255 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "margin.top.icon";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 44;
+                               fixed: 0 1;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 255 0 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "margin.top.text";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 20;
+                               fixed: 0 1;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 0 0 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "margin.bottom";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 14;
+                               fixed: 0 1;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 0 0 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "margin.bottom.thin";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 2;
+                               fixed: 0 1;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 0 0 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+
+               //section layout for elements
+               //section layout for icon
+               part {
+                       name: "rect.icon.bg";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               max: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"margin.right.icon";
+                                       to_y:"margin.top.icon";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right.icon";
+                                       to_y:"margin.top.icon";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 1.0 0.0;
+#ifdef DEBUG
+                               color: 255 0 0 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.icon";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               max: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               fixed: 1 1;
+                               rel1 {
+                                       to:"rect.icon.bg";
+                                       relative: 0.5 0.5;
+                               }
+                               rel2 {
+                                       to:"rect.icon.bg";
+                                       relative: 0.5 0.5;
+                               }
+                               align: 0.5 0.5;
+#ifdef DEBUG
+                               color: 205 205 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.icon.sub.padding";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 15;
+                               fixed: 0 1;
+                               rel1 {
+                                       to:"rect.icon.bg";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to:"rect.icon.bg";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 235 215 235 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.icon.sub";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BOX_ICON_SUB_SIZE_W BOX_ICON_SUB_SIZE_H;
+                               max: BOX_ICON_SUB_SIZE_W BOX_ICON_SUB_SIZE_H;
+                               fixed: 1 1;
+                               rel1 {
+                                       to:"rect.icon.sub.padding";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       to:"rect.icon.sub.padding";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 1.0 1.0;
+#ifdef DEBUG
+                               color: 255 0 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+
+               //section layout for close button
+               part {
+                       name: "rect.button.close";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 38 38;
+                               max: 38 38;
+                               fixed: 1 1;
+                               rel1 {
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 0.0;
+                               }
+                               align: 1.0 0.0;
+#ifdef DEBUG
+                               color: 255 255 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+
+               //section layout for texts
+               part {
+                       name: "rect.text.title";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 190 150;
+                               max: 190 150;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"margin.top.text";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       to_x:"rect.icon.bg";
+                                       to_y:"margin.top.text";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 100 100 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 260 132;
+                               max: 260 132;
+                       }
+               }
+
+               part {
+                       name: "rect.text.info.2";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 BOX_TEXT_INFO_HEIGHT;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 100 100 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.info.sub.2";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BOX_TEXT_SUB_WIDTH BOX_TEXT_INFO_HEIGHT;
+                               max: BOX_TEXT_SUB_WIDTH BOX_TEXT_INFO_HEIGHT;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 1.0 1.0;
+#ifdef DEBUG
+                               color: 76 76 76 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.info.sub.2.padding";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BOX_TEXT_SUB_PADDING_WIDTH 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       to:"rect.text.info.sub.2";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to:"rect.text.info.sub.2";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 1.0 1.0;
+#ifdef DEBUG
+                               color: 90 90 90 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.info.2.short";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.info.2";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"rect.text.info.sub.2.padding";
+                                       to_y:"rect.text.info.2";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 102 103 104 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.info.1";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 BOX_TEXT_INFO_HEIGHT;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.info.2";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.info.2";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 100 150 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.info.1.multiline";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.info.1";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.bottom.thin";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 255 150 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.info.sub.1";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BOX_TEXT_SUB_WIDTH BOX_TEXT_INFO_HEIGHT;
+                               max: BOX_TEXT_SUB_WIDTH BOX_TEXT_INFO_HEIGHT;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.info.2";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.info.2";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 1.0 1.0;
+#ifdef DEBUG
+                               color: 76 76 76 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.info.sub.1.padding";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BOX_TEXT_SUB_PADDING_WIDTH 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       to:"rect.text.info.sub.1";
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       to:"rect.text.info.sub.1";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 1.0 1.0;
+#ifdef DEBUG
+                               color: 90 90 90 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.info.1.short";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.info.1";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"rect.text.info.sub.1.padding";
+                                       to_y:"rect.text.info.1";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 102 103 104 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.margin.contents";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 14;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.info.1";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.info.1";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 255 255 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.margin.count";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 5;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.info.1";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.info.1";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 255 255 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.contents";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 BOX_TEXT_CONTENTS_HEIGHT;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.margin.contents";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.margin.contents";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 100 150 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.contents.multiline";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.contents";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.bottom.thin";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 100 150 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.count";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 30 50;
+                               max: 30 50;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.margin.count";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.margin.count";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 190 190 190 255;
+#else
+                               visible:0;
+#endif
+                       }
+                       description {
+                               state: "count1" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "count2" 0.0;
+                               inherit: "default" 0.0;
+                               min: 60 50;
+                       }
+                       description {
+                               state: "count3" 0.0;
+                               inherit: "default" 0.0;
+                               min: 90 50;
+                       }
+                       description {
+                               state: "count4" 0.0;
+                               inherit: "default" 0.0;
+                               min: 120 50;
+                       }
+                       description {
+                               state: "count5" 0.0;
+                               inherit: "default" 0.0;
+                               min: 150 50;
+                       }
+               }
+               part {
+                       name: "rect.text.count.padding";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 10 58;
+                               rel1 {
+                                       to:"rect.text.count";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to:"rect.text.count";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 0 0 0 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.contents.short";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 BOX_TEXT_CONTENTS_HEIGHT;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x:"rect.text.count.padding";
+                                       to_y:"rect.text.margin.contents";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.margin.contents";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 40 255 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+
+               //section objects
+               part{
+                       name: "object.icon.background";
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "background";}
+                               rel2 {to: "background";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+               part{
+                       name: "object.icon.bg";
+                       type:IMAGE;
+                       scale:1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "rect.icon.bg";}
+                               rel2 {to: "rect.icon.bg";}
+                               image {
+                                       normal:"quick_icon_bg_02.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+               }
+               part{
+                       name: "object.icon.bg.dim";
+                       type:IMAGE;
+                       scale:1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "background";}
+                               rel2 {to: "background";}
+                               image {
+                                       normal:"quick_image_dimmed_port.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_image_dimmed_port.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:1;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_image_dimmed_land.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:1;
+                       }
+               }
+               part{
+                       name: BOX_PART_ICON;
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               max: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               rel1 {to: "rect.icon";}
+                               rel2 {to: "rect.icon";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+               part{
+                       name: "object.icon.press";
+                       type:IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               max: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               rel1 {to: "rect.icon";}
+                               rel2 {to: "rect.icon";}
+                               image {
+                                       normal:"icon_press.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+               }
+               part{
+                       name: "object.icon.sub.bg";
+                       type:IMAGE;
+                       scale:1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "rect.icon.sub";}
+                               rel2 {to: "rect.icon.sub";}
+                               image {
+                                       normal:"quick_icon_bg_small.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+               }
+               part{
+                       name: BOX_PART_ICON_SUB;
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: BOX_ICON_SUB_SIZE_W BOX_ICON_SUB_SIZE_H;
+                               max: BOX_ICON_SUB_SIZE_W BOX_ICON_SUB_SIZE_H;
+                               rel1 {to: "rect.icon.sub";}
+                               rel2 {to: "rect.icon.sub";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+
+               part {
+                       name: "object.text.title";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       multiline: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.title";}
+                               rel2 {to: "rect.text.title";}
+                               text {
+                                       style: "notibox_title";
+                                       size: 38;
+                                       size_range: 35 38;
+                                       fit: 1 0;
+                                       min: 0 1;
+                                       align: 0.0 0.0;
+#ifdef DEBUG_TEXT
+                                       text: "some string of text to display";
+#endif
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "notibox_title_effect";
+                               }
+                               visible:1;
+                       }
+               }
+
+               part {
+                       name: "object.text.contents";
+                       scale: 1;
+                       type: TEXT;
+                       effect: TEXT_EFFECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.contents";}
+                               rel2 {to: "rect.text.contents";}
+                               color: BOX_CONTENTS_FONT_COLOR;
+                               text {
+                                       font: BOX_CONTENTS_FONT;
+                                       text_class: TEXT_CLASS_TIZEN;
+                                       size: BOX_CONTENTS_FONT_SIZE;
+                                       align: 0.0 0.5;
+#ifdef DEBUG_TEXT
+                                       text: "some string of text to display";
+#endif
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.contents.short";
+                       scale: 1;
+                       type: TEXT;
+                       effect: TEXT_EFFECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.contents.short";}
+                               rel2 {to: "rect.text.contents.short";}
+                               color: BOX_CONTENTS_FONT_COLOR;
+                               text {
+                                       font: BOX_CONTENTS_FONT;
+                                       text_class: TEXT_CLASS_TIZEN;
+                                       size: BOX_CONTENTS_FONT_SIZE;
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.contents.multiline";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       multiline: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to: "rect.text.contents.multiline";
+                               }
+                               rel2 {
+                                       to: "rect.text.contents.multiline";
+                               }
+                               text {
+                                               style: "notibox_contents";
+                                               align: 0.0 0.0;
+                                               fit: 0 0;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "notibox_contents_effect";
+                               }
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.count";
+                       scale: 1;
+                       type: TEXT;
+                       effect: TEXT_EFFECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.count";}
+                               rel2 {to: "rect.text.count";}
+                               color: BOX_INFO_COUNT_FONT_COLOR;
+                               text {
+                                       font: BOX_INFO_COUNT_FONT;
+                                       text_class: TEXT_CLASS_TIZEN;
+                                       size: BOX_INFO_COUNT_FONT_SIZE;
+                                       align: 0.0 1.0;
+#ifdef DEBUG_TEXT
+                                       text: "3";
+#endif
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
+                       }
+               }
+
+               part {
+                       name: "object.text.info.1";
+                       scale: 1;
+                       type: TEXT;
+                       effect: TEXT_EFFECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.info.1";}
+                               rel2 {to: "rect.text.info.1";}
+                               color: BOX_INFO_FONT_COLOR;
+                               text {
+                                       font: BOX_INFO_FONT;
+                                       text_class: TEXT_CLASS_TIZEN;
+                                       size: BOX_INFO_FONT_SIZE;
+                                       align: 0.0 0.5;
+#ifdef DEBUG_TEXT
+                                       text: "some string of text to display";
+#endif
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.info.1.short";
+                       scale: 1;
+                       type: TEXT;
+                       effect: TEXT_EFFECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.info.1.short";}
+                               rel2 {to: "rect.text.info.1.short";}
+                               color: BOX_INFO_SHORT_FONT_COLOR;
+                               text {
+                                       font: BOX_INFO_SHORT_FONT;
+                                       text_class: TEXT_CLASS_TIZEN;
+                                       size: BOX_INFO_SHORT_FONT_SIZE;
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.info.1.multiline";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       multiline: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to: "rect.text.info.1.multiline";
+                               }
+                               rel2 {
+                                       to: "rect.text.info.1.multiline";
+                               }
+                               text {
+                                               style: "notibox_info";
+                                               align: 0.0 0.0;
+                                               fit: 0 0;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "notibox_info_effect";
+                               }
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.info.sub.1";
+                       scale: 1;
+                       type: TEXT;
+                       effect: TEXT_EFFECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.info.sub.1";}
+                               rel2 {to: "rect.text.info.sub.1";}
+                               color: BOX_INFO_SUB_FONT_COLOR;
+                               text {
+                                       font: BOX_INFO_SUB_FONT;
+                                       text_class: TEXT_CLASS_TIZEN;
+                                       size: BOX_INFO_SUB_FONT_SIZE;
+                                       align: 1.0 0.5;
+#ifdef DEBUG_TEXT
+                                       text: "some string of text to display";
+#endif
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
+                       }
+               }
+
+               part {
+                       name: "object.text.info.2";
+                       scale: 1;
+                       type: TEXT;
+                       effect: TEXT_EFFECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.info.2";}
+                               rel2 {to: "rect.text.info.2";}
+                               color: BOX_INFO_FONT_COLOR;
+                               text {
+                                       font: BOX_INFO_FONT;
+                                       text_class: TEXT_CLASS_TIZEN;
+                                       size: BOX_INFO_FONT_SIZE;
+                                       align: 0.0 0.5;
+#ifdef DEBUG_TEXT
+                                       text: "some string of text to display";
+#endif
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.info.2.short";
+                       scale: 1;
+                       type: TEXT;
+                       effect: TEXT_EFFECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.info.2.short";}
+                               rel2 {to: "rect.text.info.2.short";}
+                               color: BOX_INFO_SHORT_FONT_COLOR;
+                               text {
+                                       font: BOX_INFO_SHORT_FONT;
+                                       text_class: TEXT_CLASS_TIZEN;
+                                       size: BOX_INFO_SHORT_FONT_SIZE;
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.info.sub.2";
+                       scale: 1;
+                       type: TEXT;
+                       effect: TEXT_EFFECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.info.sub.2";}
+                               rel2 {to: "rect.text.info.sub.2";}
+                               color: BOX_INFO_SUB_FONT_COLOR;
+                               text {
+                                       font: BOX_INFO_SUB_FONT;
+                                       text_class: TEXT_CLASS_TIZEN;
+                                       size: BOX_INFO_SUB_FONT_SIZE;
+                                       align: 1.0 0.5;
+#ifdef DEBUG_TEXT
+                                       text: "some string of text to display";
+#endif
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.layer.touch.background";
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       scale: 1;
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "background";}
+                               rel2 {to: "background";}
+                               color: 0 0 0 0;
+                       }
+               }
+               part {
+                       name: "object.layer.touch.button.1";
+                       mouse_events: 1;
+                       repeat_events: 0;
+                       scale: 1;
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to_x: "rect.icon";
+                                       to_y: "object.button.close";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {to: "rect.icon";}
+                               color: 0 0 0 0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               part{
+                       name: "object.button.close";
+                       type:RECT;
+                       scale:1;
+                       description {
+                               state: "default" 0.0;
+                               min:100 64;
+                               rel1 {
+                                       to: "rect.button.close";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to: "rect.button.close";
+                                       relative: 1.0 0.0;
+                               }
+                               color: 0 0 0 0;
+                               align: 1.0 0.0;
+                       }
+               }
+               part{
+                       name: "object.image.button.close";
+                       type:IMAGE;
+                       scale:1;
+                       repeat_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.button.close";}
+                               rel2 {to: "rect.button.close";}
+                               image {
+                                       normal:"quick_btn_close_nor.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               align: 0.0 1.0;
+                               visible: 0;
+                       }
+                       description {
+                               state: "normal" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+                       description {
+                               state: "pressed" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_btn_close_press.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               align: 0.0 1.0;
+                               visible: 1;
+                       }
+                       description {
+                               state: "disabled" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_btn_close_dim.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               align: 0.0 1.0;
+                               visible: 1;
+                       }
+               }
+               part{
+                       name: "object.image.button.close.2";
+                       type:IMAGE;
+                       scale:1;
+                       repeat_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.button.close";}
+                               rel2 {to: "rect.button.close";}
+                               image {
+                                       normal:"quick_btn_close_white_nor.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               align: 0.0 1.0;
+                               visible: 0;
+                       }
+                       description {
+                               state: "normal" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+                       description {
+                               state: "pressed" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_btn_close_white_press.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               align: 0.0 1.0;
+                               visible: 1;
+                       }
+                       description {
+                               state: "disabled" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_btn_close_white_dim.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               align: 0.0 1.0;
+                               visible: 1;
+                       }
+               }
+               part {
+                       name: "accessibility";
+                       type: RECT;
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to: "background";
+                               }
+                               rel2 {
+                                       to: "background";
+                               }
+                               color: QP_ACCESSIBILITY_TEST_COLOR;
+                               visible: 1;
+                       }
+               }
+               part {
+                       name: "accessibility.closebutton";
+                       type: RECT;
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to: "rect.button.close";
+                               }
+                               rel2 {
+                                       to: "rect.button.close";
+                               }
+                               color: QP_ACCESSIBILITY_TEST_COLOR;
+                               visible: 1;
+                       }
+               }
+       }
+
+       programs {
+               program {
+                       name: "init.layout";
+                       signal: "load";
+                       source: "";
+                       in: 0.0 0.0;
+                       script{
+                               init_variables();
+                               set_state(PART:"object.image.button.close", "normal", 0.0);
+                               set_state(PART:"object.image.button.close.2", "default", 0.0);
+                       }
+               }
+               program{
+                       name: "box.show.dim";
+                       signal: "box.show.dim";
+                       source: "box.prog";
+                       script {
+                               set_int(g_is_show_dim_bg, 1);
+                               set_int(g_is_close_button_type_2, 1);
+                               set_state(PART:"object.image.button.close", "default", 0.0);
+                               set_state(PART:"object.image.button.close.2", "normal", 0.0);
+                       }
+               }
+               program{
+                       name: "box.hide.dim";
+                       signal: "box.hide.dim";
+                       source: "box.prog";
+                       script {
+                               set_int(g_is_show_dim_bg, 0);
+                       }
+               }
+               program{
+                       name: "box.portrait";
+                       signal: "box.portrait";
+                       source: "box.prog";
+                       action: STATE_SET "portrait" 0.0;
+                       target: "background";
+                       target: "rect.text.title";
+                       after: "box.portrait.custom";
+               }
+               program{
+                       name: "box.landscape";
+                       signal: "box.landscape";
+                       source: "box.prog";
+                       action: STATE_SET "landscape" 0.0;
+                       target: "background";
+                       target: "rect.text.title";
+                       after: "box.landscape.custom";
+               }
+               program{
+                       name: "box.portrait.custom";
+                       source: "box.prog";
+                       script {
+                               if (get_int(g_is_show_dim_bg) == 1) {
+                                       set_state(PART:"object.icon.bg.dim", "portrait", 0.0);
+                               }
+                       }
+               }
+               program{
+                       name: "box.landscape.custom";
+                       source: "box.prog";
+                       script {
+                               if (get_int(g_is_show_dim_bg) == 1) {
+                                       set_state(PART:"object.icon.bg.dim", "landscape", 0.0);
+                               }
+                       }
+               }
+               program{
+                       name: "box.touch.down";
+                       signal: "mouse,clicked,1";
+                       source: "object.layer.touch.background";
+                       action: SIGNAL_EMIT "selected" "edje";
+               }
+               program{
+                       name: "box.button.1.touch.clicked";
+                       signal: "mouse,clicked,1";
+                       source: "object.layer.touch.button.1";
+                       action: SIGNAL_EMIT "button_1" "edje";
+               }
+               program{
+                       name: "box.button.1.touch.down";
+                       signal: "mouse,down,1";
+                       source: "object.layer.touch.button.1";
+                       action: STATE_SET "show" 0.0;
+                       target: "object.icon.press";
+               }
+               program{
+                       name: "box.button.1.touch.up";
+                       signal: "mouse,up,1";
+                       source: "object.layer.touch.button.1";
+                       action: STATE_SET "hide" 0.0;
+                       target: "object.icon.press";
+               }
+               program{
+                       name: "box.button.close.1";
+                       signal: "mouse,down,1";
+                       source: "object.button.close";
+                       script {
+                               if (get_int(g_is_close_button_disabled) == 0) {
+                                       if (get_int(g_is_close_button_type_2) == 0) {
+                                               set_state(PART:"object.image.button.close", "pressed", 0.0);
+                                       } else {
+                                               set_state(PART:"object.image.button.close.2", "pressed", 0.0);
+                                       }
+                               }
+                       }
+               }
+               program{
+                       name: "box.button.close.2";
+                       signal: "mouse,up,1";
+                       source: "object.button.close";
+                       script {
+                               if (get_int(g_is_close_button_type_2) == 0) {
+                                       set_state(PART:"object.image.button.close", "normal", 0.0);
+                               } else {
+                                       set_state(PART:"object.image.button.close.2", "normal", 0.0);
+                               }
+                       }
+               }
+               program{
+                       name: "box.button.close.3";
+                       signal: "mouse,clicked,1";
+                       source: "object.button.close";
+                       script {
+                               if (get_int(g_is_close_button_disabled) == 0) {
+                                       if (get_int(g_is_close_button_type_2) == 0) {
+                                               set_state(PART:"object.image.button.close", "normal", 0.0);
+                                       } else {
+                                               set_state(PART:"object.image.button.close.2", "normal", 0.0);
+                                       }
+                                       emit("deleted", "edje");
+                               }
+                       }
+               }
+               program{
+                       name: "box.button.close.4";
+                       signal: "disabled";
+                       source: "object.button.close";
+                       script {
+                               set_state(PART:"object.image.button.close", "disabled", 0.0);
+                               set_int(g_is_close_button_disabled, 1);
+                       }
+               }
+               program{
+                       name: "box.show.icon.bg";
+                       signal: "box.show.icon.bg";
+                       source: "box.prog";
+                       action: STATE_SET "show" 0.0;
+                       target: "object.icon.bg";
+                       target: "object.layer.touch.button.1";
+               }
+               program{
+                       name: "box.hide.icon.bg";
+                       signal: "box.hide.icon.bg";
+                       source: "box.prog";
+                       action: STATE_SET "hide" 0.0;
+                       target: "object.icon.bg";
+                       target: "object.layer.touch.button.1";
+               }
+               program{
+                       name: "box.show.icon.sub.bg";
+                       signal: "box.show.sub.bg";
+                       source: "box.prog";
+                       action: STATE_SET "show" 0.0;
+                       target: "object.icon.sub.bg";
+               }
+               program{
+                       name: "box.hide.icon.sub.bg";
+                       signal: "box.hide.sub.bg";
+                       source: "box.prog";
+                       action: STATE_SET "hide" 0.0;
+                       target: "object.icon.sub.bg";
+               }
+               program{
+                       name: "box.count.1";
+                       signal: "box.count.1";
+                       source: "box.prog";
+                       action: STATE_SET "count1" 0.0;
+                       target: "rect.text.count";
+               }
+               program{
+                       name: "box.count.2";
+                       signal: "box.count.2";
+                       source: "box.prog";
+                       action: STATE_SET "count2" 0.0;
+                       target: "rect.text.count";
+               }
+               program{
+                       name: "box.count.3";
+                       signal: "box.count.3";
+                       source: "box.prog";
+                       action: STATE_SET "count3" 0.0;
+                       target: "rect.text.count";
+               }
+               program{
+                       name: "box.count.4";
+                       signal: "box.count.4";
+                       source: "box.prog";
+                       action: STATE_SET "count4" 0.0;
+                       target: "rect.text.count";
+               }
+               program{
+                       name: "box.count.5";
+                       signal: "box.count.5";
+                       source: "box.prog";
+                       action: STATE_SET "count5" 0.0;
+                       target: "rect.text.count";
+               }
+               MAKE_PART_SHOW_PROGRAM("object.icon.background")
+               MAKE_PART_SHOW_PROGRAM("object.icon")
+               MAKE_PART_SHOW_PROGRAM("object.icon.sub")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.title")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents.short")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents.multiline")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.count")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.1")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.1.short")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.1.multiline")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.sub.1")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.2")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.2.short")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.sub.2")
+       }
+}
+
+
+group {
+       name: "quickpanel/notibox/thumbnail";
+
+       script {
+               public g_is_close_button_disabled;
+               public g_is_show_dim_bg;
+               public g_is_close_button_type_2;
+
+               public init_variables() {
+                       set_int(g_is_close_button_disabled, 0);
+                       set_int(g_is_show_dim_bg, 0);
+                       set_int(g_is_close_button_type_2, 0);
+               }
+       }
+
+       parts {
+               part {
+                       name: "background";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BOX_WIDTH_P BOX_HEIGHT_P;
+                               color: BOX_COLOR_BG;
+                               align: 0.0 0.0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: BOX_WIDTH_L BOX_HEIGHT_L;
+                       }
+               }
+
+               //section layout for margin
+
+               part {
+                       name: "margin.left";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BOX_MARGIN_L_TEXT_H 0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 0 0 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "margin.right";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BOX_MARGIN_R_TEXT_H 0;
+                               rel1 {
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                               }
+                               align: 1.0 0.0;
+#ifdef DEBUG
+                               color: 0 0 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "margin.left.thumnail";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 12 0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 25 0 60 255;
+#else
+                               visible:0;
+#endif
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 14 0;
+                       }
+               }
+               part {
+                       name: "margin.right.thumnail";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 12 0;
+                               rel1 {
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                               }
+                               align: 1.0 0.0;
+#ifdef DEBUG
+                               color: 25 0 60 255;
+#else
+                               visible:0;
+#endif
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 14 0;
+                       }
+               }
+               part {
+                       name: "margin.right.icon";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 8 0;
+                               rel1 {
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                               }
+                               align: 1.0 0.0;
+#ifdef DEBUG
+                               color: 0 255 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "margin.top.icon";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 44;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 255 0 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "margin.top.text";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 20;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 0 0 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "margin.bottom";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 14;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 0 0 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "margin.bottom.thin";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 2;
+                               fixed: 0 1;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 0 0 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+
+               //section layout for elements
+               //section layout for icon
+               part {
+                       name: "rect.icon.bg";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               max: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               rel1 {
+                                       to_x:"margin.right.icon";
+                                       to_y:"margin.top.icon";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right.icon";
+                                       to_y:"margin.top.icon";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 1.0 0.0;
+#ifdef DEBUG
+                               color: 255 0 0 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.icon";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               max: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               rel1 {
+                                       to:"rect.icon.bg";
+                                       relative: 0.5 0.5;
+                               }
+                               rel2 {
+                                       to:"rect.icon.bg";
+                                       relative: 0.5 0.5;
+                               }
+                               align: 0.5 0.5;
+#ifdef DEBUG
+                               color: 205 205 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.icon.sub.padding";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 15;
+                               rel1 {
+                                       to:"rect.icon.bg";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to:"rect.icon.bg";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 235 215 235 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.icon.sub";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: BOX_ICON_SUB_SIZE_W BOX_ICON_SUB_SIZE_H;
+                               max: BOX_ICON_SUB_SIZE_W BOX_ICON_SUB_SIZE_H;
+                               rel1 {
+                                       to:"rect.icon.sub.padding";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       to:"rect.icon.sub.padding";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 1.0 1.0;
+#ifdef DEBUG
+                               color: 255 0 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+
+               //section layout for close button
+               part {
+                       name: "rect.button.close";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 38 38;
+                               rel1 {
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       relative: 1.0 0.0;
+                               }
+                               align: 1.0 0.0;
+#ifdef DEBUG
+                               color: 255 255 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+
+               //section layout for texts
+               part {
+                       name: "rect.text.title";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 190 150;
+                               max: 190 150;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"margin.top.text";
+                                       relative: 1.0 1.0;
+                               }
+                               rel2 {
+                                       to_x:"rect.icon.bg";
+                                       to_y:"margin.top.text";
+                                       relative: 0.0 1.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 100 100 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 260 189;
+                               max: 260 189;
+                       }
+               }
+
+               part {
+                       name: "rect.text.info.2";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 BOX_TEXT_INFO_HEIGHT;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x:"rect.thumbnail.list.1.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 100 100 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.info.1";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 BOX_TEXT_INFO_HEIGHT;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x:"rect.thumbnail.list.1.padding";
+                                       to_y:"rect.text.info.2";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.info.2";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 100 150 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.info.1.multiline";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"rect.thumbnail.list.1.padding";
+                                       to_y:"rect.text.info.1";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"margin.bottom.thin";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 255 150 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+
+               part {
+                       name: "rect.text.margin.contents";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 14;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.thumbnail.list.1";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.thumbnail.list.1";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 255 255 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.margin.count";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 10;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.thumbnail.list.1";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.thumbnail.list.1";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 255 255 255 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.contents";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 BOX_TEXT_CONTENTS_HEIGHT;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.margin.contents";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.margin.contents";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 100 150 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.count";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 30 50;
+                               max: 30 50;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.margin.count";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.left";
+                                       to_y:"rect.text.margin.count";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 190 190 190 255;
+#else
+                               visible:0;
+#endif
+                       }
+                       description {
+                               state: "count1" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "count2" 0.0;
+                               inherit: "default" 0.0;
+                               min: 60 50;
+                       }
+                       description {
+                               state: "count3" 0.0;
+                               inherit: "default" 0.0;
+                               min: 90 50;
+                       }
+                       description {
+                               state: "count4" 0.0;
+                               inherit: "default" 0.0;
+                               min: 120 50;
+                       }
+                       description {
+                               state: "count5" 0.0;
+                               inherit: "default" 0.0;
+                               min: 150 50;
+                       }
+               }
+               part {
+                       name: "rect.text.count.padding";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 10 58;
+                               rel1 {
+                                       to:"rect.text.count";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to:"rect.text.count";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 0 0 0 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.text.contents.short";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 BOX_TEXT_CONTENTS_HEIGHT;
+                               fixed: 0 1;
+                               rel1 {
+                                       to_x:"rect.text.count.padding";
+                                       to_y:"rect.text.margin.contents";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.right";
+                                       to_y:"rect.text.margin.contents";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 40 255 100 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+
+               //section layout for thumbnail
+               part {
+                       name: "rect.thumbnail.list.1";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 70 70;
+                               rel1 {
+                                       to_x:"margin.left.thumnail";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"margin.left.thumnail";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 255 0 0 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.thumbnail.list.1.padding";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 12 0;
+                               rel1 {
+                                       to:"rect.thumbnail.list.1";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to:"rect.thumbnail.list.1";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 0 0 0 255;
+#else
+                               visible:0;
+#endif
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 8 0;
+                       }
+               }
+               part {
+                       name: "rect.thumbnail.list.2";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 70 70;
+                               rel1 {
+                                       to_x:"rect.thumbnail.list.1.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"rect.thumbnail.list.1.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 255 0 0 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.thumbnail.list.2.padding";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 12 0;
+                               rel1 {
+                                       to:"rect.thumbnail.list.2";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to:"rect.thumbnail.list.2";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 0 0 0 255;
+#else
+                               visible:0;
+#endif
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 8 0;
+                       }
+               }
+               part {
+                       name: "rect.thumbnail.list.3";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 70 70;
+                               rel1 {
+                                       to_x:"rect.thumbnail.list.2.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"rect.thumbnail.list.2.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 255 0 0 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.thumbnail.list.3.padding";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 12 0;
+                               rel1 {
+                                       to:"rect.thumbnail.list.3";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to:"rect.thumbnail.list.3";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 0 0 0 255;
+#else
+                               visible:0;
+#endif
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 8 0;
+                       }
+               }
+               part {
+                       name: "rect.thumbnail.list.4";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 70 70;
+                               rel1 {
+                                       to_x:"rect.thumbnail.list.3.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"rect.thumbnail.list.3.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 255 0 0 255;
+#else
+                               visible:0;
+#endif
+                       }
+               }
+               part {
+                       name: "rect.thumbnail.list.4.padding";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 12 0;
+                               rel1 {
+                                       to:"rect.thumbnail.list.4";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to:"rect.thumbnail.list.4";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+#ifdef DEBUG
+                               color: 0 0 0 255;
+#else
+                               visible:0;
+#endif
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               min: 8 0;
+                       }
+               }
+               part {
+                       name: "rect.thumbnail.list.5";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 70 70;
+                               rel1 {
+                                       to_x:"rect.thumbnail.list.4.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x:"rect.thumbnail.list.4.padding";
+                                       to_y:"margin.bottom";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 0.0 1.0;
+#ifdef DEBUG
+                               color: 255 0 0 255;
+#else
+                               visible:0;
+#endif
+
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                       }
+               }
+
+               part{
+                       name: "object.icon.background";
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "background";}
+                               rel2 {to: "background";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+               part{
+                       name: "object.icon.bg";
+                       type:IMAGE;
+                       scale:1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "rect.icon.bg";}
+                               rel2 {to: "rect.icon.bg";}
+                               image {
+                                       normal:"quick_icon_bg_02.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+               }
+               part{
+                       name: "object.icon.bg.dim";
+                       type:IMAGE;
+                       scale:1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "background";}
+                               rel2 {to: "background";}
+                               image {
+                                       normal:"quick_image_dimmed_port.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_image_dimmed_port.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:1;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_image_dimmed_land.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:1;
+                       }
+               }
+               part{
+                       name: BOX_PART_ICON;
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               max: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               rel1 {to: "rect.icon";}
+                               rel2 {to: "rect.icon";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+               part{
+                       name: "object.icon.press";
+                       type:IMAGE;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 1 1;
+                               min: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               max: BOX_ICON_SIZE_W BOX_ICON_SIZE_H;
+                               rel1 {to: "rect.icon";}
+                               rel2 {to: "rect.icon";}
+                               image {
+                                       normal:"icon_press.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+               }
+               part{
+                       name: "object.icon.sub.bg";
+                       type:IMAGE;
+                       scale:1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "rect.icon.sub";}
+                               rel2 {to: "rect.icon.sub";}
+                               image {
+                                       normal:"quick_icon_bg_small.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible:0;
+                       }
+               }
+               part{
+                       name: BOX_PART_ICON_SUB;
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               min: BOX_ICON_SUB_SIZE_W BOX_ICON_SUB_SIZE_H;
+                               max: BOX_ICON_SUB_SIZE_W BOX_ICON_SUB_SIZE_H;
+                               rel1 {to: "rect.icon.sub";}
+                               rel2 {to: "rect.icon.sub";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+
+               //section thumbnail
+               part{
+                       name: "object.thumbnail.list.1";
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "rect.thumbnail.list.1";}
+                               rel2 {to: "rect.thumbnail.list.1";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+               part{
+                       name: "object.thumbnail.list.2";
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "rect.thumbnail.list.2";}
+                               rel2 {to: "rect.thumbnail.list.2";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+               part{
+                       name: "object.thumbnail.list.3";
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "rect.thumbnail.list.3";}
+                               rel2 {to: "rect.thumbnail.list.3";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+               part{
+                       name: "object.thumbnail.list.4";
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "rect.thumbnail.list.4";}
+                               rel2 {to: "rect.thumbnail.list.4";}
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+               }
+               part{
+                       name: "object.thumbnail.list.5";
+                       type:SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               fixed: 0 0;
+                               rel1 {to: "rect.thumbnail.list.5";}
+                               rel2 {to: "rect.thumbnail.list.5";}
+                               visible: 0;
+                       }
+                       description {
+                               state: "portrait" 0.0;
+                               inherit: "default" 0.0;
+                       }
+                       description {
+                               state: "landscape" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+               }
+
+               part {
+                       name: "object.text.title";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       multiline: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.title";}
+                               rel2 {to: "rect.text.title";}
+                               text {
+                                       style: "notibox_title";
+                                       size: 38;
+                                       size_range: 35 38;
+                                       fit: 1 0;
+                                       min: 0 1;
+                                       align: 0.0 0.0;
+#ifdef DEBUG_TEXT
+                                       text: "some string of text to display";
+#endif
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "notibox_title_effect";
+                               }
+                               visible:1;
+                       }
+               }
+
+               part {
+                       name: "object.text.contents";
+                       scale: 1;
+                       type: TEXT;
+                       effect: TEXT_EFFECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.contents";}
+                               rel2 {to: "rect.text.contents";}
+                               color: BOX_CONTENTS_FONT_COLOR;
+                               text {
+                                       font: BOX_CONTENTS_FONT;
+                                       text_class: TEXT_CLASS_TIZEN;
+                                       size: BOX_CONTENTS_FONT_SIZE;
+                                       align: 0.0 0.5;
+#ifdef DEBUG_TEXT
+                                       text: "some string of text to display";
+#endif
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
+                       }
+               }
+               part {
+                       name: "object.text.contents.short";
+                       scale: 1;
+                       type: TEXT;
+                       effect: TEXT_EFFECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.contents.short";}
+                               rel2 {to: "rect.text.contents.short";}
+                               color: BOX_CONTENTS_FONT_COLOR;
+                               text {
+                                       font: BOX_CONTENTS_FONT;
+                                       text_class: TEXT_CLASS_TIZEN;
+                                       size: BOX_CONTENTS_FONT_SIZE;
+                                       align: 0.0 0.5;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
+                       }
+               }
+
+               part {
+                       name: "object.text.count";
+                       scale: 1;
+                       type: TEXT;
+                       effect: TEXT_EFFECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.count";}
+                               rel2 {to: "rect.text.count";}
+                               color: BOX_INFO_COUNT_FONT_COLOR;
+                               text {
+                                       font: BOX_INFO_COUNT_FONT;
+                                       text_class: TEXT_CLASS_TIZEN;
+                                       size: BOX_INFO_COUNT_FONT_SIZE;
+                                       align: 0.0 0.5;
+#ifdef DEBUG_TEXT
+                                       text: "3";
+#endif
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
+                       }
+               }
+
+               part {
+                       name: "object.text.info.1";
+                       scale: 1;
+                       type: TEXT;
+                       effect: TEXT_EFFECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.info.1";}
+                               rel2 {to: "rect.text.info.1";}
+                               color: BOX_INFO_FONT_COLOR;
+                               text {
+                                       font: BOX_INFO_FONT;
+                                       text_class: TEXT_CLASS_TIZEN;
+                                       size: BOX_INFO_FONT_SIZE;
+                                       align: 0.0 0.5;
+#ifdef DEBUG_TEXT
+                                       text: "some string of text to display";
+#endif
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
+                       }
+               }
+
+               part {
+                       name: "object.text.info.1.multiline";
+                       scale: 1;
+                       type: TEXTBLOCK;
+                       multiline: 1;
+                       description {
+                               state: "default" 0.0;
+                               align: 0.0 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       to: "rect.text.info.1.multiline";
+                               }
+                               rel2 {
+                                       to: "rect.text.info.1.multiline";
+                               }
+                               text {
+                                               style: "notibox_info";
+                                               align: 0.0 0.0;
+                                               fit: 0 0;
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               text {
+                                       style: "notibox_info_effect";
+                               }
+                               visible:1;
+                       }
+               }
+
+               part {
+                       name: "object.text.info.2";
+                       scale: 1;
+                       type: TEXT;
+                       effect: TEXT_EFFECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.text.info.2";}
+                               rel2 {to: "rect.text.info.2";}
+                               color: BOX_INFO_FONT_COLOR;
+                               text {
+                                       font: BOX_INFO_FONT;
+                                       text_class: TEXT_CLASS_TIZEN;
+                                       size: BOX_INFO_FONT_SIZE;
+                                       align: 0.0 0.5;
+#ifdef DEBUG_TEXT
+                                       text: "some string of text to display";
+#endif
+                               }
+                               visible:0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "show.effect" 0.0;
+                               inherit: "default" 0.0;
+                               color2: BOX_FONT_SHADOW_COLOR;
+                               color3: BOX_FONT_OUTLINE_COLOR;
+                               visible:1;
+                       }
+               }
+
+               part {
+                       name: "object.layer.touch.background";
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       scale: 1;
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "background";}
+                               rel2 {to: "background";}
+                               color: 0 0 0 0;
+                       }
+               }
+               part {
+                       name: "object.layer.touch.button.1";
+                       mouse_events: 1;
+                       repeat_events: 0;
+                       scale: 1;
+                       type: RECT;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to_x: "rect.icon";
+                                       to_y: "object.button.close";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {to: "rect.icon";}
+                               color: 0 0 0 0;
+                       }
+                       description {
+                               state: "show" 0.0;
+                               inherit: "default" 0.0;
+                               visible:1;
+                       }
+                       description {
+                               state: "hide" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 0;
+                       }
+               }
+               part{
+                       name: "object.button.close";
+                       type:RECT;
+                       scale:1;
+                       description {
+                               state: "default" 0.0;
+                               min:100 64;
+                               rel1 {
+                                       to: "rect.button.close";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to: "rect.button.close";
+                                       relative: 1.0 0.0;
+                               }
+                               align: 1.0 0.0;
+                               color: 0 0 0 0;
+                       }
+               }
+               part{
+                       name: "object.image.button.close";
+                       type:IMAGE;
+                       scale:1;
+                       repeat_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.button.close";}
+                               rel2 {to: "rect.button.close";}
+                               image {
+                                       normal:"quick_btn_close_nor.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               align: 0.0 1.0;
+                               visible: 0;
+                       }
+                       description {
+                               state: "normal" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+                       description {
+                               state: "pressed" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_btn_close_press.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               align: 0.0 1.0;
+                               visible: 1;
+                       }
+                       description {
+                               state: "disabled" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_btn_close_dim.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               align: 0.0 1.0;
+                               visible: 1;
+                       }
+               }
+               part{
+                       name: "object.image.button.close.2";
+                       type:IMAGE;
+                       scale:1;
+                       repeat_events: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {to: "rect.button.close";}
+                               rel2 {to: "rect.button.close";}
+                               image {
+                                       normal:"quick_btn_close_white_nor.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               align: 0.0 1.0;
+                               visible: 0;
+                       }
+                       description {
+                               state: "normal" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                       }
+                       description {
+                               state: "pressed" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_btn_close_white_press.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               align: 0.0 1.0;
+                               visible: 1;
+                       }
+                       description {
+                               state: "disabled" 0.0;
+                               inherit: "default" 0.0;
+                               image {
+                                       normal:"quick_btn_close_white_dim.png";
+                                       border: 0 0 0 0;
+                                       border_scale: 1;
+                               }
+                               align: 0.0 1.0;
+                               visible: 1;
+                       }
+               }
+               part {
+                       name: "accessibility";
+                       type: RECT;
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to: "background";
+                               }
+                               rel2 {
+                                       to: "background";
+                               }
+                               color: QP_ACCESSIBILITY_TEST_COLOR;
+                               visible: 1;
+                       }
+               }
+               part {
+                       name: "accessibility.closebutton";
+                       type: RECT;
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to: "rect.button.close";
+                               }
+                               rel2 {
+                                       to: "rect.button.close";
+                               }
+                               color: QP_ACCESSIBILITY_TEST_COLOR;
+                               visible: 1;
+                       }
+               }
+       }
+
+       programs {
+               program {
+                       name: "init.layout";
+                       signal: "load";
+                       source: "";
+                       in: 0.0 0.0;
+                       script{
+                               init_variables();
+                               set_state(PART:"object.image.button.close", "normal", 0.0);
+                               set_state(PART:"object.image.button.close.2", "default", 0.0);
+                       }
+               }
+               program{
+                       name: "box.show.dim";
+                       signal: "box.show.dim";
+                       source: "box.prog";
+                       script {
+                               set_int(g_is_show_dim_bg, 1);
+                               set_int(g_is_close_button_type_2, 1);
+                               set_state(PART:"object.image.button.close", "default", 0.0);
+                               set_state(PART:"object.image.button.close.2", "normal", 0.0);
+                       }
+               }
+               program{
+                       name: "box.hide.dim";
+                       signal: "box.hide.dim";
+                       source: "box.prog";
+                       script {
+                               set_int(g_is_show_dim_bg, 0);
+                       }
+               }
+               program{
+                       name: "box.portrait";
+                       signal: "box.portrait";
+                       source: "box.prog";
+                       action: STATE_SET "portrait" 0.0;
+                       target: "background";
+                       target: "margin.left.thumnail";
+                       target: "margin.right.thumnail";
+                       target: "rect.text.title";
+                       target: "rect.thumbnail.list.1.padding";
+                       target: "rect.thumbnail.list.2.padding";
+                       target: "rect.thumbnail.list.3.padding";
+                       target: "rect.thumbnail.list.4.padding";
+                       target: "rect.thumbnail.list.5";
+                       target: "object.thumbnail.list.5";
+                       after: "box.portrait.custom";
+               }
+               program{
+                       name: "box.landscape";
+                       signal: "box.landscape";
+                       source: "box.prog";
+                       action: STATE_SET "landscape" 0.0;
+                       target: "background";
+                       target: "margin.left.thumnail";
+                       target: "margin.right.thumnail";
+                       target: "rect.text.title";
+                       target: "rect.thumbnail.list.1.padding";
+                       target: "rect.thumbnail.list.2.padding";
+                       target: "rect.thumbnail.list.3.padding";
+                       target: "rect.thumbnail.list.4.padding";
+                       target: "rect.thumbnail.list.5";
+                       target: "object.thumbnail.list.5";
+                       after: "box.landscape.custom";
+               }
+               program{
+                       name: "box.portrait.custom";
+                       source: "box.prog";
+                       script {
+                               if (get_int(g_is_show_dim_bg) == 1) {
+                                       set_state(PART:"object.icon.bg.dim", "portrait", 0.0);
+                               }
+                       }
+               }
+               program{
+                       name: "box.landscape.custom";
+                       source: "box.prog";
+                       script {
+                               if (get_int(g_is_show_dim_bg) == 1) {
+                                       set_state(PART:"object.icon.bg.dim", "landscape", 0.0);
+                               }
+                       }
+               }
+               program{
+                       name: "box.touch.down";
+                       signal: "mouse,clicked,1";
+                       source: "object.layer.touch.background";
+                       action: SIGNAL_EMIT "selected" "edje";
+               }
+               program{
+                       name: "box.button.1.touch.clicked";
+                       signal: "mouse,clicked,1";
+                       source: "object.layer.touch.button.1";
+                       action: SIGNAL_EMIT "button_1" "edje";
+               }
+               program{
+                       name: "box.button.1.touch.down";
+                       signal: "mouse,down,1";
+                       source: "object.layer.touch.button.1";
+                       action: STATE_SET "show" 0.0;
+                       target: "object.icon.press";
+               }
+               program{
+                       name: "box.button.1.touch.up";
+                       signal: "mouse,up,1";
+                       source: "object.layer.touch.button.1";
+                       action: STATE_SET "hide" 0.0;
+                       target: "object.icon.press";
+               }
+               program{
+                       name: "box.button.close.1";
+                       signal: "mouse,down,1";
+                       source: "object.button.close";
+                       script {
+                               if (get_int(g_is_close_button_disabled) == 0) {
+                                       if (get_int(g_is_close_button_type_2) == 0) {
+                                               set_state(PART:"object.image.button.close", "pressed", 0.0);
+                                       } else {
+                                               set_state(PART:"object.image.button.close.2", "pressed", 0.0);
+                                       }
+                               }
+                       }
+               }
+               program{
+                       name: "box.button.close.2";
+                       signal: "mouse,up,1";
+                       source: "object.button.close";
+                       script {
+                               if (get_int(g_is_close_button_type_2) == 0) {
+                                       set_state(PART:"object.image.button.close", "normal", 0.0);
+                               } else {
+                                       set_state(PART:"object.image.button.close.2", "normal", 0.0);
+                               }
+                       }
+               }
+               program{
+                       name: "box.button.close.3";
+                       signal: "mouse,clicked,1";
+                       source: "object.button.close";
+                       script {
+                               if (get_int(g_is_close_button_disabled) == 0) {
+                                       if (get_int(g_is_close_button_type_2) == 0) {
+                                               set_state(PART:"object.image.button.close", "normal", 0.0);
+                                       } else {
+                                               set_state(PART:"object.image.button.close.2", "normal", 0.0);
+                                       }
+                                       emit("deleted", "edje");
+                               }
+                       }
+               }
+               program{
+                       name: "box.button.close.4";
+                       signal: "disabled";
+                       source: "object.button.close";
+                       script {
+                               set_state(PART:"object.image.button.close", "disabled", 0.0);
+                               set_int(g_is_close_button_disabled, 1);
+                       }
+               }
+               program{
+                       name: "box.show.icon.bg";
+                       signal: "box.show.icon.bg";
+                       source: "box.prog";
+                       action: STATE_SET "show" 0.0;
+                       target: "object.icon.bg";
+                       target: "object.layer.touch.button.1";
+               }
+               program{
+                       name: "box.hide.icon.bg";
+                       signal: "box.hide.icon.bg";
+                       source: "box.prog";
+                       action: STATE_SET "hide" 0.0;
+                       target: "object.icon.bg";
+                       target: "object.layer.touch.button.1";
+               }
+               program{
+                       name: "box.show.icon.sub.bg";
+                       signal: "box.show.sub.bg";
+                       source: "box.prog";
+                       action: STATE_SET "show" 0.0;
+                       target: "object.icon.sub.bg";
+               }
+               program{
+                       name: "box.hide.icon.sub.bg";
+                       signal: "box.hide.sub.bg";
+                       source: "box.prog";
+                       action: STATE_SET "hide" 0.0;
+                       target: "object.icon.sub.bg";
+               }
+               program{
+                       name: "box.count.1";
+                       signal: "box.count.1";
+                       source: "box.prog";
+                       action: STATE_SET "count1" 0.0;
+                       target: "rect.text.count";
+               }
+               program{
+                       name: "box.count.2";
+                       signal: "box.count.2";
+                       source: "box.prog";
+                       action: STATE_SET "count2" 0.0;
+                       target: "rect.text.count";
+               }
+               program{
+                       name: "box.count.3";
+                       signal: "box.count.3";
+                       source: "box.prog";
+                       action: STATE_SET "count3" 0.0;
+                       target: "rect.text.count";
+               }
+               program{
+                       name: "box.count.4";
+                       signal: "box.count.4";
+                       source: "box.prog";
+                       action: STATE_SET "count4" 0.0;
+                       target: "rect.text.count";
+               }
+               program{
+                       name: "box.count.5";
+                       signal: "box.count.5";
+                       source: "box.prog";
+                       action: STATE_SET "count5" 0.0;
+                       target: "rect.text.count";
+               }
+               MAKE_PART_SHOW_PROGRAM("object.icon.background")
+               MAKE_PART_SHOW_PROGRAM("object.icon")
+               MAKE_PART_SHOW_PROGRAM("object.icon.sub")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.title")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.contents.short")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.count")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.1")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.1.multiline")
+               MAKE_PART_SHOW_TEXT_PROGRAM("object.text.info.2")
+               MAKE_PART_SHOW_PROGRAM("object.thumbnail.list.1")
+               MAKE_PART_SHOW_PROGRAM("object.thumbnail.list.2")
+               MAKE_PART_SHOW_PROGRAM("object.thumbnail.list.3")
+               MAKE_PART_SHOW_PROGRAM("object.thumbnail.list.4")
+       }
+}
\ No newline at end of file
diff --git a/data/quickpanel_spn.edc b/data/quickpanel_spn.edc
new file mode 100755 (executable)
index 0000000..da77a19
--- /dev/null
@@ -0,0 +1,157 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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.
+ */
+
+group {
+       name: "quickpanel/spn";
+       parts {
+               part { name: "base";
+                       type: RECT;
+                       repeat_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 QP_SPN_H;
+                               color: QP_BG_COLOR;
+                               visible: QP_BG_VISIBILITY;
+                       }
+               }
+               part { name: "elm.padding.left";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 26 0;
+                               fixed: 1 0;
+                               visible: 0;
+                               rel1.relative: 0.0 0.0;
+                               rel2.relative: 0.0 1.0;
+                               align: 0.0 0.0;
+                               visible: 0;
+                       }
+               }
+               part { name: "elm.padding.right";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 14 0;
+                               fixed: 1 0;
+                               visible: 0;
+                               rel1.relative: 1.0 0.0;
+                               rel2.relative: 1.0 0.0;
+                               align: 1.0 0.0;
+                               visible: 0;
+                       }
+               }
+               part { name: "elm.padding.top";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 11;
+                               fixed: 0 1;
+                               visible: 0;
+                               rel1.relative: 0.0 0.0;
+                               rel2.relative: 1.0 0.0;
+                               align: 0.0 0.0;
+                               visible: 0;
+                       }
+               }
+               part { name: "elm.padding.bottom";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 0 11;
+                               fixed: 0 1;
+                               visible: 0;
+                               rel1.relative: 0.0 1.0;
+                               rel2.relative: 1.0 1.0;
+                               align: 0.0 1.0;
+                               visible: 0;
+                       }
+               }
+
+               part { name: "elm.rect.spn";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: QP_SPN_TEXT_W 0;
+                               fixed: 1 0;
+                               rel1 {
+                                       to_x: "elm.padding.left";
+                                       relative: 1.0 0.0;
+                               }
+                               rel2 {
+                                       to_x: "elm.padding.left";
+                                       relative: 1.0 1.0;
+                               }
+                               align: 0.0 0.0;
+                               visible:0;
+                       }
+               }
+               part { name: "qp.spn.swallow";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to: "elm.rect.spn";
+                               }
+                               rel2 {
+                                       to: "elm.rect.spn";
+                               }
+                       }
+               }
+
+               part { name: "elm.rect.icon";
+                       type: RECT;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               min: 158 58;
+                               fixed: 1 1;
+                               rel1 {
+                                       to_x: "elm.padding.right";
+                                       to_y: "elm.padding.top";
+                                       relative: 0.0 1.0;
+                               }
+                               rel2 {
+                                       to_x: "elm.padding.right";
+                                       to_y: "elm.padding.bottom";
+                                       relative: 0.0 0.0;
+                               }
+                               align: 1.0 0.5;
+                               visible: 0;
+                       }
+               }
+               part { name: "qp.button.swallow";
+                       type: SWALLOW;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1 {
+                                       to: "elm.rect.icon";
+                               }
+                               rel2 {
+                                       to: "elm.rect.icon";
+                               }
+                       }
+               }
+       }
+}
+
diff --git a/data/quickpanel_theme.edc b/data/quickpanel_theme.edc
new file mode 100755 (executable)
index 0000000..9666c2e
--- /dev/null
@@ -0,0 +1,299 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 "quickpanel_def.h"
+
+collections {
+       #include "quickpanel_theme_element.edc"
+
+       styles {
+               style {
+                       name: "button_text";
+                       base: "font=Tizen:style=Regular text_class=tizen align=center font_size=28 color=#FFFFFFFF linegap=-6 ellipsis=0.0 wrap=mixed";
+               }
+       }
+
+#define NOTI_BUTTON_STATE_ENABLED 0
+#define NOTI_BUTTON_STATE_DISABLED 1
+
+       group { name: "elm/button/base/quickpanel_standard";
+               images {
+                       image: "quick_standard_btn_press.png" COMP;
+                       image: "quick_standard_btn_nor.png" COMP;
+               }
+
+               script {
+                       public button_state = NOTI_BUTTON_STATE_ENABLED;
+               }
+               parts {
+                       part { name: "button_image";
+                               type: IMAGE;
+                               mouse_events: 1;
+                               scale: 1;
+                               description { 
+                                       state: "default" 0.0;
+                                       min: 145 59;
+                                       fixed: 1 1;
+                                       rel1 {
+                                               relative: 0.0 0.0;
+                                       }
+                                       rel2 {
+                                               relative: 1.0 1.0;
+                                       }
+                                       image {
+                                               normal: "quick_standard_btn_nor.png";
+                                               border: 10 10 0 0;
+                                       }
+                               }
+                               description { state: "clicked" 0.0;
+                                       inherit: "default" 0.0;
+                                       image {
+                                               normal: "quick_standard_btn_press.png";
+                                               border: 10 10 0 0;
+                                       }
+                               }
+                               description { state: "disabled" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                               description { state: "focused" 0.0;
+                                       inherit: "default" 0.0;
+                               }
+                       }
+               part {   name: "elm.text.rect";
+                       type: RECT;
+                       mouse_events: 0;
+                       scale: 1;
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               fixed: 1 1;
+                               align: 0.5 0.5;
+                                       rel1 {
+                                               relative: 0.10 0.12;
+                                               to: "button_image";
+                                       }
+                                       rel2 {
+                                               relative: 0.90 0.88;
+                                               to: "button_image";
+                                       }
+                       }
+               }
+               part {   name: "elm.text";
+                       type: TEXTBLOCK;
+                       mouse_events: 0;
+                       scale: 1;
+                       multiline: 1;
+                       description { state: "default" 0.0;
+                               visible: 0;
+                               fixed: 1 1;
+                               color: 149 148 148 255;
+                                       rel1 {
+                                               to: "elm.text.rect";
+                                       }
+                                       rel2 {
+                                               to: "elm.text.rect";
+                                       }
+                               text {
+                                               style: "button_text";
+                                               size: 28;
+                                               align: 0.5 0.5;
+                                               fit: 1 1;
+                                               size_range: 22 28;
+                               }
+                       }
+                       description { state: "visible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               min: 1 1;
+                       }
+                       description { state: "clicked" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               min: 1 1;
+                               color: 255 255 255 255;
+                       }
+                       description { state: "disabled" 0.0;
+                               inherit: "default" 0.0;
+                               color: 0 0 0 128;
+                       }
+                       description { state: "disabled_visible" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               min: 1 1;
+                       }
+                       description { state: "focused" 0.0;
+                               inherit: "default" 0.0;
+                               visible: 1;
+                               min: 1 1;
+                               color: 255 255 255 255;
+                       }
+               }
+               part { name: "over1";
+                       mouse_events: 0;
+                       description { state: "default" 0.0;
+                               rel2.relative: 1.0 0.5;
+                       }
+               }
+               part { name: "over2";
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       ignore_flags: ON_HOLD;
+                       description { state: "default" 0.0;
+                               rel1.to: "button_image";
+                               rel2.to: "button_image";
+                       }
+               }
+               part { name: "over3";
+                       mouse_events: 1;
+                       repeat_events: 1;
+                       description { state: "default" 0.0;
+                               rel1.to: "button_image";
+                               rel2.to: "button_image";
+                               color: 0 0 0 0;
+                       }
+               }
+               part { name: "disabler";
+                       type: RECT;
+                       description { state: "default" 0.0;
+                               rel1.to: "button_image";
+                               rel2.to: "button_image";
+                               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";
+                       target: "elm.text";
+               }
+               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.text", st, 30, vl);
+                               if (!strcmp(st, "clicked") || !strcmp(st, "focused"))
+                               {
+                                       emit("elm,action,default,text,set", "");
+                                       set_state(PART:"elm.text", "visible", 0.0);
+                               }
+                               if(get_int(button_state) != NOTI_BUTTON_STATE_DISABLED)
+                               {
+                                       set_state(PART:"button_image", "default", 0.0);
+                               }
+                       }
+                       after: button_unpress;
+               }
+               program { name: "button_unclick3";
+                       signal: "mouse,clicked,1";
+                       source: "over2";
+                       action: SIGNAL_EMIT "elm,action,click" "";
+               }
+               program { name: "text_show";
+                       signal: "elm,state,text,visible";
+                       source: "elm";
+                       script {
+                               if(get_int(button_state) != NOTI_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";
+                       action: STATE_SET "default" 0.0;
+                       target: "elm.text";
+               }
+
+               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, NOTI_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, NOTI_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";
+                       action: STATE_SET "visible" 0.0;
+                       target: "elm.text";
+               }
+               program { name: "reset_button_state";
+                       signal: "elm,action,button,reset";
+                       source: "elm";
+                       action: STATE_SET "default" 0.0;
+                       target: "button_image";
+               }
+       }
+}
diff --git a/data/quickpanel_theme_element.edc b/data/quickpanel_theme_element.edc
new file mode 100755 (executable)
index 0000000..3fe097d
--- /dev/null
@@ -0,0 +1,2003 @@
+#define SLIDER_INDICATOR_TEXT_COLOR_INC      255 255 255 255
+#define SLIDER_UNITS_TEXT_COLOR_INC      0 0 0 255
+#define SLIDER_UNITS_TEXT_SIZE_INC  30
+#define SLIDER_INDICATOR_TEXT_SIZE_INC  26
+#define SLIDER_BASE_HEIGHT_INC  16
+#define SLIDER_BASE_MIN_WIDTH_INC 375
+#define SLIDER_BASE_HEIGHT_INC  16
+#define SLIDER_SWALLOW_BAR_MIN_WIDTH_INC  20
+#define SLIDER_SWALLOW_BAR_HEIGHT_INC  72
+#define SLIDER_INDICATOR_MAX_WIDTH_INC 52
+#define SLIDER_INDICATOR_WIDTH_INC 52
+#define SLIDER_INDICATOR_HEIGHT_INC 72
+#define PROGRESS_BG_IMAGE_BORDER_INC  17 17 17 17
+#define PROGRESS_BAR_IMAGE_BORDER_INC  8 8 15 18
+#define PROGRESS_BAR_IMAGE_PADDING_SIZE_INC  0 0
+#define PROGRESS_BAR_IMAGE_VERTICAL_PADDING_SIZE_INC  0 9
+
+   group { name: "elm/slider/horizontal/indicator/default";
+           alias: "elm/slider/horizontal/indicator/disabled";
+           alias: "elm/slider/vertical/indicator/default";
+           alias: "elm/slider/vertical/indicator/disabled";
+           alias: "elm/slider/horizontal/indicator/tap_to_drag";
+      images {
+         image: "00_slider_handle.png" COMP;
+         image: "00_slider_handle_dim.png" COMP;
+         image: "00_slider_handle_press.png" COMP;
+      }
+      parts {
+         part { name: "button_events";
+            type: RECT;
+            mouse_events: 1;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               min: 2*SLIDER_INDICATOR_WIDTH_INC 1.5*SLIDER_INDICATOR_HEIGHT_INC;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               color: 0 0 0 0;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+            }
+         }
+         part { name: "button0";
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               min: SLIDER_INDICATOR_WIDTH_INC SLIDER_INDICATOR_HEIGHT_INC;
+               max: SLIDER_INDICATOR_MAX_WIDTH_INC SLIDER_INDICATOR_HEIGHT_INC;
+               rel1 {
+                  to: "elm.indicator";
+                  offset: 0 0;
+               }
+               rel2 {
+                  to: "elm.indicator";
+                  offset: 0 0;
+               }
+               image {
+                  normal: "00_slider_handle.png";
+                  border: 1 1 1 1;
+                  border_scale: 1;
+               }
+            }
+            description { state: "pressed" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "00_slider_handle_press.png";
+               }
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "00_slider_handle_dim.png";
+               }
+            }
+         }
+         part { name: "elm.indicator";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               visible: 1;
+               color: SLIDER_INDICATOR_TEXT_COLOR_INC;
+               text {
+                  font: "Tizen:style=Medium";
+                  size: SLIDER_INDICATOR_TEXT_SIZE_INC;
+                  min: 1 1;
+                  align: 0.5 0.5;
+                  text_class: "tizen";
+               }
+            }
+            description { state: "hide" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+             }
+         }
+      }
+      programs {
+         program { name: "set_val_show";
+            signal: "elm,state,val,show";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "elm.indicator";
+         }
+         program { name: "set_val_hide";
+            signal: "elm,state,val,hide";
+            source: "elm";
+            action:  STATE_SET "hide" 0.0;
+            target: "elm.indicator";
+         }
+         program { name: "slider_disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action:  STATE_SET "disabled" 0.0;
+            target: "button0";
+            target: "button_events";
+         }
+         program { name: "slider_enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "button0";
+            target: "button_events";
+         }
+         program { name: "mouse_down";
+            signal: "mouse,down,*";
+            source: "button_events";
+            action:  STATE_SET "pressed" 0.0;
+            target: "button0";
+         }
+         program { name: "mouse_up";
+            signal: "mouse,up,*";
+            source: "button_events";
+            action:  STATE_SET "default" 0.0;
+            target: "button0";
+         }
+      }
+   }
+
+   group { name: "elm/slider/horizontal/quickpanel";
+           alias: "elm/slider/horizontal/disabled";
+      images {
+         image: "00_progress_bg.png" COMP;
+         image: "00_progress_bar.png" COMP;
+      }
+      script {
+         public invert_on = 0;
+         public set_invert_on() {
+            set_state(PART:"level", "inverted", 0.0);
+            set_state(PART:"level2", "inverted", 0.0);
+            set_int(invert_on, 1);
+         }
+         public set_invert_off() {
+            set_state(PART:"level", "default", 0.0);
+            set_state(PART:"level2", "default", 0.0);
+            set_int(invert_on, 0);
+         }
+         public thumb_down() {
+            if(get_int(invert_on) == 0)
+               set_state(PART:"level", "pressed", 0.0);
+            else if(get_int(invert_on) == 1)
+               set_state(PART:"level2", "pressed", 0.0);
+            }
+         public thumb_up() {
+            if(get_int(invert_on) == 0)
+               set_state(PART:"level", "default", 0.0);
+            else if(get_int(invert_on) == 1)
+               set_state(PART:"level2", "inverted", 0.0);
+            }
+         }
+         parts {
+            part { name: "base";
+               mouse_events: 0;
+               scale: 1;
+               description { state: "default" 0.0;
+                  min: SLIDER_BASE_MIN_WIDTH_INC SLIDER_BASE_HEIGHT_INC;
+                  max: 99999 SLIDER_BASE_HEIGHT_INC;
+                  rel1.to: "bg";
+                  rel2.to: "bg";
+                  image.normal: "00_progress_bg.png";
+                  image.border: 10 10 0 0;
+                  image.border_scale: 1;
+               }
+            }
+            part {
+               name: "bar_image_left_padding";
+               type: RECT;
+               scale: 1;
+               description {
+                  state: "default" 0.0;
+                  visible: 0;
+                  min: PROGRESS_BAR_IMAGE_PADDING_SIZE_INC;
+                  max: PROGRESS_BAR_IMAGE_PADDING_SIZE_INC;
+                  fixed: 1 0;
+                  rel1.to: "base";
+                  rel2 {
+                     relative: 0.0  1.0;
+                     to: "base";
+                  }
+                  align: 0.0 0.5;
+               }
+            }
+            part {
+               name: "bar_image_right_padding";
+               type: RECT;
+               scale: 1;
+               description {
+                  state: "default" 0.0;
+                  visible: 0;
+                  min: PROGRESS_BAR_IMAGE_PADDING_SIZE_INC;
+                  max: PROGRESS_BAR_IMAGE_PADDING_SIZE_INC;
+                  fixed: 1 0;
+                  rel1 {
+                     relative: 1.0  0.0;
+                     to: "base";
+                  }
+                  rel2.to: "base";
+                  align: 1.0 0.5;
+               }
+            }
+            part { name: "level";
+               mouse_events: 0;
+               scale: 1;
+               clip_to: "clipper";
+               description { state: "default" 0.0;
+                  fixed: 1 1;
+                  rel1 {
+                     to_x: "bar_image_left_padding";
+                     to_y: "base";
+                     relative: 1.0 0.0;
+                  }
+                  rel2 {
+                     to_y: "base";
+                     to_x: "elm.dragable.slider";
+                     offset: -5 -1;
+                     relative: 0.5 1.0;
+                  }
+                  image.normal: "00_progress_bar.png";
+                  image.border: 10 10 0 0;
+                  image.border_scale: 1;
+               }
+               description { state: "inverted" 0.0;
+                  inherit: "default" 0.0;
+                  visible: 0;
+               }
+               description { state: "pressed" 0.0;
+                  inherit: "default" 0.0;
+                  image.normal: "00_progress_bar.png";
+               }
+            }
+            part { name: "level2";
+               mouse_events: 0;
+               scale: 1;
+               clip_to: "clipper";
+               description { state: "default" 0.0;
+                  fixed: 1 1;
+                  visible: 0;
+                  rel1 {
+                     to_y: "base";
+                     to_x: "elm.dragable.slider";
+                     relative: 0.5 0.0;
+                  }
+                  rel1 {
+                     to_x: "bar_image_right_padding";
+                     to_y: "base";
+                     relative: 0.0 1.0;
+                  }
+                  image.normal: "00_progress_bar.png";
+                  image.border: 0 0 4 4;
+                  image.border_scale: 1;
+               }
+               description { state: "inverted" 0.0;
+                  inherit: "default" 0.0;
+                  visible: 1;
+               }
+               description { state: "pressed" 0.0;
+                  inherit: "default" 0.0;
+                  visible: 1;
+                  image.normal: "00_progress_bar.png";
+               }
+            }
+            part { name: "bg";
+               type: RECT;
+               mouse_events: 0;
+               scale: 1;
+               description { state: "default" 0.0;
+                  visible: 0;
+                  rel1.to: "elm.swallow.bar";
+                  rel2.to: "elm.swallow.bar";
+                  rel2.offset: 3 0;
+                  color: 0 0 0 0;
+               }
+            }
+            part { name: "elm.swallow.bar";
+               type: SWALLOW;
+               scale: 1;
+               description { state: "default" 0.0;
+                  min: SLIDER_SWALLOW_BAR_MIN_WIDTH_INC SLIDER_SWALLOW_BAR_HEIGHT_INC;
+                  max: 99999 SLIDER_SWALLOW_BAR_HEIGHT_INC;
+                  align: 1.0 0.5;
+                  rel1 {
+                     to_x: "bar_left_padding";
+                     relative: 1.0 0.0;
+                  }
+                  rel2 {
+                     to_x: "bar_right_padding";
+                     relative: 0.0 1.0;
+                  }
+               }
+            }
+            part {
+               name: "bar_left_padding";
+               type: SWALLOW;
+               scale: 1;
+               description {
+                  state: "default" 0.0;
+                  visible: 0;
+                  min: 10 0;
+                  fixed: 1 1;
+                  rel1 {
+                     relative: 1.0  0.5;
+                     to_x: "elm.text";
+                  }
+                  rel2 {
+                     relative: 1.0  0.5;
+                     to_x: "elm.text";
+                  }
+                  align: 0.0 0.5;
+               }
+            }
+            part {
+               name: "bar_right_padding";
+               type: SWALLOW;
+               scale: 1;
+               description {
+                  state: "default" 0.0;
+                  visible: 0;
+                  min: 10 0;
+                  fixed: 1 1;
+                  rel1 {
+                     relative: 0.0  0.5;
+                     to_x: "elm.units";
+                  }
+                  rel2 {
+                     relative: 0.0  0.5;
+                     to_x: "elm.units";
+                  }
+                  align: 1.0 0.5;
+               }
+            }
+            part { name: "elm.swallow.icon";
+               type: SWALLOW;
+               scale: 1;
+               description { state: "default" 0.0;
+                  visible: 0;
+                  align: 0.0 0.5;
+                  rel1 {
+                     to_y: "elm.swallow.bar";
+                  }
+                  rel2 {
+                     relative: 0.0 1.0;
+                     to_y: "elm.swallow.bar";
+                  }
+               }
+               description { state: "visible" 0.0;
+                  inherit: "default" 0.0;
+                  visible: 1;
+                  aspect: 1.0 1.0;
+                  aspect_preference: VERTICAL;
+               }
+            }
+            part { name: "elm.text";
+               type: TEXT;
+               mouse_events: 0;
+               scale: 1;
+               description { state: "default" 0.0;
+                  visible: 0;
+                  fixed: 1 1;
+                  align: 0.0 0.5;
+                  rel1.to_x: "elm.swallow.icon";
+                  rel1.relative: 1.0 0.0;
+                  rel1.offset: -1 4;
+                  rel2.to_x: "elm.swallow.icon";
+                  rel2.relative: 1.0 1.0;
+                  rel2.offset: -1 -5;
+                  color: SLIDER_UNITS_TEXT_COLOR_INC;
+                  text {
+                     font: "Tizen:style=Medium";
+                     size: SLIDER_UNITS_TEXT_SIZE_INC;
+                     min: 0 0;
+                     align: 0.0 0.5;
+                     text_class: "tizen";
+                  }
+               }
+               description { state: "visible" 0.0;
+                  inherit: "default" 0.0;
+                  visible: 1;
+                  text.min: 1 1;
+                  rel1.offset: 0 4;
+                  rel2.offset: 0 -5;
+               }
+            }
+            part { name: "elm.swallow.end";
+               type: SWALLOW;
+               scale: 1;
+               description { state: "default" 0.0;
+                  visible: 0;
+                  align: 1.0 0.5;
+                  rel1 {
+                     relative: 1.0 0.0;
+                     to_y: "elm.swallow.bar";
+                  }
+                  rel2 {
+                     relative: 1.0 1.0;
+                     to_y: "elm.swallow.bar";
+                  }
+               }
+               description { state: "visible" 0.0;
+                  inherit: "default" 0.0;
+                  visible: 1;
+                  aspect: 1.0 1.0;
+                  aspect_preference: VERTICAL;
+               }
+            }
+            part { name: "units";
+               mouse_events: 0;
+               scale: 1;
+               description { state: "default" 0.0;
+                  visible: 0;
+                  rel1 {
+                     to_x: "elm.units";
+                     offset: 0 5;
+                  }
+                  image {
+   //                  normal: "sl_units.png";
+                     border: 0 5 3 8;
+                     border_scale: 1;
+                  }
+               }
+               description { state: "visible" 0.0;
+                  inherit: "default" 0.0;
+                  visible: 1;
+               }
+            }
+            part { name: "elm.units";
+               type: TEXT;
+               mouse_events: 0;
+               scale: 1;
+               description { state: "default" 0.0;
+                  visible: 0;
+                  fixed: 1 1;
+                  align: 1.0 0.5;
+                  rel1.relative: 0.0 0.0;
+                  rel1.offset: 0 8;
+                  rel1.to_x: "elm.swallow.end";
+                  rel2.relative: 0.0 1.0;
+                  rel2.offset: 0 -9;
+                  rel2.to_x: "elm.swallow.end";
+                  color: SLIDER_UNITS_TEXT_COLOR_INC;
+                  text {
+                     font: "Tizen:style=Bold";
+                     size: SLIDER_UNITS_TEXT_SIZE_INC;
+                     min: 0 0;
+                     align: 0.0 0.5;
+                     text_class: "tizen";
+                  }
+               }
+               description { state: "visible" 0.0;
+                  inherit: "default" 0.0;
+                  fixed: 1 1;
+                  visible: 1;
+                  text.min: 1 1;
+                  rel1.offset: -5 0;
+                  rel2.offset: -5 -1;
+               }
+            }
+            part { name: "elm.dragable.slider";
+               type: GROUP;
+               source: "elm/slider/horizontal/indicator/default";
+               mouse_events: 1;
+               scale: 1;
+               dragable {
+                  x: 1 1 0;
+                  y: 0 0 0;
+                  confine: "bg";
+               }
+               description { state: "default" 0.0;
+                  min: SLIDER_INDICATOR_WIDTH_INC SLIDER_INDICATOR_HEIGHT_INC;
+                  fixed: 1 1;
+                  rel1 {
+                     relative: 0.5 0.0;
+                     to_x: "bg";
+                  }
+                  rel2 {
+                     relative: 0.5 1.0;
+                     to_x: "bg";
+                  }
+                  color: 0 0 0 0;
+               }
+            }
+            part { name: "disabler";
+               type: RECT;
+               mouse_events: 1;
+               repeat_events: 0;
+               scale: 1;
+               description { state: "default" 0.0;
+                  visible: 0;
+                  min: 1 1;
+                  color: 0 0 0 0;
+               }
+               description { state: "disabled" 0.0;
+                  inherit: "default" 0.0;
+                  visible: 1;
+               }
+            }
+            part { name: "clipper";
+               type: RECT;
+               description { state: "default" 0.0;
+                  color: 255 255 255 255;
+               }
+               description { state: "disabled" 0.0;
+                  color: 255 255 255 102;
+               }
+            }
+         }
+         programs {
+            program { name: "text_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            action:  STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+         program { name: "text_hide";
+            signal: "elm,state,text,hidden";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "elm.text";
+         }
+         program { name: "icon_show";
+            signal: "elm,state,icon,visible";
+            source: "elm";
+            action:  STATE_SET "visible" 0.0;
+            target: "elm.swallow.icon";
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "elm.swallow.icon";
+         }
+         program { name: "end_show";
+            signal: "elm,state,end,visible";
+            source: "elm";
+            action:  STATE_SET "visible" 0.0;
+            target: "elm.swallow.end";
+         }
+         program { name: "end_hide";
+            signal: "elm,state,end,hidden";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "elm.swallow.end";
+         }
+         program { name: "units_show";
+            signal: "elm,state,units,visible";
+            source: "elm";
+            action:  STATE_SET "visible" 0.0;
+            target: "elm.units";
+            target: "units";
+         }
+         program { name: "units_hide";
+            signal: "elm,state,units,hidden";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "elm.units";
+            target: "units";
+         }
+         program { name: "invert_on";
+            signal: "elm,state,inverted,on";
+            source: "elm";
+            script {
+               set_invert_on();
+            }
+         }
+         program { name: "invert_off";
+            signal: "elm,state,inverted,off";
+            source: "elm";
+            script {
+               set_invert_off();
+            }
+         }
+         program { name: "val_show";
+            signal: "mouse,down,*";
+            source: "elm.dragable.slider";
+            script {
+               thumb_down();
+            }
+         }
+         program { name: "val_hide";
+            signal: "mouse,up,*";
+            source: "elm.dragable.slider";
+            script {
+               thumb_up();
+            }
+         }
+         program { name: "slider_disable";
+            signal: "elm,state,disabled";
+            source: "elm";
+            action:  STATE_SET "disabled" 0.0;
+            target: "disabler";
+            target: "clipper";
+         }
+         program { name: "slider_enable";
+            signal: "elm,state,enabled";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "disabler";
+            target: "clipper";
+         }
+      }
+   }
+
+#define CHECK_STATE_DEFAULT 0
+#define CHECK_STATE_VISIBLE 1
+#define CHECK_STATE_DISABLED_VISIBLE 2
+#define CHECK_STATE_DISABLED 3
+
+#define CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC        50 50 50 255
+#define CHECK_DEFAULT_TEXT_PRESSED_COLOR_INC      248 246 239 255
+#define CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC          50 50 50 76
+#define CHECK_DISCLIP_NORMAL_COLOR_INC             255 255 255 255
+#define CHECK_DISCLIP_DISABLED_COLOR_INC           255 255 255 76
+
+#define CHECK_HIDE 0
+#define CHECK_SHOW 1
+
+#define CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC 48 48
+
+////////////////////////////////////////////////////////////////////////////////
+#define CHECK_STYLE_DEFAULT(style_name, min_width, min_height) \
+   group { name: "elm/check/base/"style_name; \
+      images { \
+         image: "00_check_bg.png" COMP; \
+         image: "00_check_bg_press.png" COMP; \
+         image: "00_check_bg_dim.png" COMP; \
+         image: "00_check_checking.png" COMP; \
+         image: "00_check_checking_dim.png" COMP; \
+      } \
+      script { \
+         public check_state = CHECK_STATE_DEFAULT; \
+         public check_visible = CHECK_HIDE; \
+      } \
+      parts { \
+         part { name: "back_bg"; \
+            type: RECT; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               rel2.relative: 0.0 1.0; \
+               align: 0 0.5; \
+               min: min_width min_height; \
+               fixed: 1 0; \
+               color: 0 0 0 0; \
+            } \
+         } \
+         part { name: "bg"; \
+            mouse_events: 0; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               min: CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC; \
+               max: CHECK_STYLE_DEFAULT_BG_NORMAL_MIN_MAX_INC; \
+               fixed: 1 1; \
+               rel1.to: "back_bg"; \
+               rel2.to: "back_bg"; \
+               image.normal: "00_check_bg.png"; \
+               fill.smooth : 0; \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+            } \
+            description { state: "pressed" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: "00_check_bg_press.png"; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               image.normal: "00_check_bg_dim.png"; \
+            } \
+         } \
+         part { name: "check"; \
+            clip_to: "sequence_clip"; \
+            mouse_events: 0; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               rel1.to: "bg"; \
+               rel2.to: "bg"; \
+               visible: 0; \
+               image.normal: "00_check_checking.png"; \
+               color: 255 255 255 0; \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+               color: 255 255 255 255; \
+            } \
+            description { state: "disabled_visible" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+               image.normal: "00_check_checking_dim.png"; \
+            } \
+         } \
+         part { name: "sequence_clip"; \
+            type: RECT; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               rel2.relative: 0.0 1.0; \
+               color: 255 255 255 255; \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               rel2.relative: 1.0 1.0; \
+            } \
+         } \
+         part { name: "elm.swallow.content"; \
+            type: SWALLOW; \
+            clip_to: "disclip"; \
+            description { state: "default" 0.0; \
+               fixed: 1 0; \
+               visible: 0; \
+               align: 0.0 0.5; \
+               rel1 { \
+                  to_x: "bg"; \
+                  relative: 1.0 0.0; \
+                  offset: 1 1; \
+               } \
+               rel2 { \
+                  to_x: "bg"; \
+                  relative: 1.0 1.0; \
+                  offset: 2 -2; \
+               } \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               fixed: 1 1; \
+               visible: 1; \
+               aspect: 1.0 1.0; \
+               aspect_preference: VERTICAL; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+            } \
+            description { state: "disabled_visible" 0.0; \
+               inherit: "default" 0.0; \
+               fixed: 1 1; \
+               visible: 1; \
+               aspect: 1.0 1.0; \
+            } \
+         } \
+         part { name: "elm.text"; \
+            type: TEXTBLOCK; \
+            mouse_events: 0; \
+            clip_to: "disclip"; \
+            scale: 1; \
+            description { state: "default" 0.0; \
+               visible: 0; \
+               fixed: 0 1; \
+               rel1 { \
+                  relative: 1.0 0.5; \
+                  offset: 1 1; \
+                  to_x: "elm.swallow.content"; \
+               } \
+               rel2 { \
+                  relative: 1.0 0.5; \
+                  offset: -2 -2; \
+               } \
+               align: 0.0 0.5; \
+               text { \
+                  style: "check_label_textblock_style"; \
+                  min: 0 0; \
+               } \
+               color: CHECK_DEFAULT_TEXT_NORMAL_COLOR_INC; \
+            } \
+            description { state: "visible" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+               text.min: 1 1; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+            } \
+            description { state: "disabled_visible" 0.0; \
+               inherit: "default" 0.0; \
+               visible: 1; \
+               text.min: 1 1; \
+               color: CHECK_DEFAULT_TEXT_DISABLED_COLOR_INC; \
+            } \
+         } \
+         part { name: "events1"; \
+            type: RECT; \
+            ignore_flags: ON_HOLD; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+            } \
+         } \
+         part { name: "events2"; \
+            type: RECT; \
+            repeat_events: 1; \
+            description { state: "default" 0.0; \
+               color: 0 0 0 0; \
+            } \
+         } \
+         part { name: "disclip"; \
+            type: RECT; \
+            mouse_events: 0; \
+            description { state: "default" 0.0; \
+               color: CHECK_DISCLIP_NORMAL_COLOR_INC; \
+            } \
+            description { state: "disabled" 0.0; \
+               inherit: "default" 0.0; \
+               color: CHECK_DISCLIP_DISABLED_COLOR_INC; \
+            } \
+         } \
+         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: "show"; \
+            signal: "show"; \
+            script { \
+               set_int(check_visible, CHECK_SHOW); \
+            } \
+         } \
+         program { name: "hide"; \
+            signal: "hide"; \
+            script { \
+               set_int(check_visible, CHECK_HIDE); \
+            } \
+         } \
+         program { name: "click"; \
+            signal: "mouse,clicked,1"; \
+            source: "events1"; \
+            action: SIGNAL_EMIT "elm,action,check,toggle" ""; \
+         } \
+         program { name: "bg_normal"; \
+            signal: "mouse,up,1"; \
+            source: "events2"; \
+            action: STATE_SET "default" 0.0; \
+            target: "bg"; \
+         } \
+         program { name: "pressed"; \
+            signal: "mouse,down,1"; \
+            source: "events2"; \
+            action: STATE_SET "pressed" 0.0; \
+            target: "bg"; \
+         } \
+         program { name: "mouse,out"; \
+            signal: "mouse,out"; \
+            source: "events2"; \
+            script { \
+               if (get_int(check_state) == CHECK_STATE_VISIBLE) \
+                 { \
+                    set_state(PART:"check", "visible", 0.0); \
+                    set_state(PART:"sequence_clip", "visible", 0.0); \
+                 } \
+               else \
+                 { \
+                    set_state(PART:"check", "default", 0.0); \
+                    set_state(PART:"sequence_clip", "default", 0.0); \
+                 } \
+            } \
+         } \
+         program { name: "check_on"; \
+            signal: "elm,state,check,on"; \
+            source: "elm"; \
+            script { \
+               set_int(check_state, CHECK_STATE_VISIBLE); \
+               if (get_int(check_visible) == CHECK_SHOW) \
+                 { \
+                    run_program(PROGRAM:"check_show_effect"); \
+                    run_program(PROGRAM:"check_draw_effect"); \
+                 } \
+               else \
+                 { \
+                    set_state(PART:"check", "visible", 0.0); \
+                    set_state(PART:"sequence_clip", "visible", 0.0); \
+                 } \
+            } \
+         } \
+         program { name: "check_off"; \
+            signal: "elm,state,check,off"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "check"; \
+            script { \
+               if (get_int(check_state) == CHECK_STATE_VISIBLE) \
+                 { \
+                    set_int(check_state, CHECK_STATE_DEFAULT); \
+                    set_state(PART:"check", "default", 0.0); \
+                    set_state(PART:"sequence_clip", "default", 0.0); \
+                 } \
+            } \
+         } \
+         program { name: "check_show_effect"; \
+            action: STATE_SET "visible" 0.0; \
+            transition: LINEAR 0.233; \
+            target: "check"; \
+         } \
+         program { name: "check_draw_effect"; \
+            action: STATE_SET "visible" 0.0; \
+            transition: LINEAR 0.267; \
+            target: "sequence_clip"; \
+         } \
+         program { name: "text_show"; \
+            signal: "elm,state,text,visible"; \
+            source: "elm"; \
+            action: STATE_SET "visible" 0.0; \
+            target: "elm.text"; \
+         } \
+         program { name: "text_hide"; \
+            signal: "elm,state,text,hidden"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.text"; \
+         } \
+         program { name: "icon_show"; \
+            signal: "elm,state,icon,visible"; \
+            source: "elm"; \
+            action: STATE_SET "visible" 0.0; \
+            target: "elm.swallow.content"; \
+         } \
+         program { name: "icon_hide"; \
+            signal: "elm,state,icon,hidden"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "elm.swallow.content"; \
+         } \
+         program { name: "disable"; \
+            signal: "elm,state,disabled"; \
+            source: "elm"; \
+            action: STATE_SET "disabled" 0.0; \
+            target: "disabler"; \
+            target: "disclip"; \
+            target: "bg"; \
+            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); \
+               get_state(PART:"elm.swallow.content", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"elm.swallow.content", "disabled_visible", 0.0); \
+               else \
+                 set_state(PART:"elm.swallow.content", "disabled", 0.0); \
+               get_state(PART:"check", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 { \
+                    set_state(PART:"check", "disabled_visible", 0.0); \
+                    set_int(check_state, CHECK_STATE_DISABLED_VISIBLE); \
+                 } \
+            } \
+         } \
+         program { name: "enable"; \
+            signal: "elm,state,enabled"; \
+            source: "elm"; \
+            action: STATE_SET "default" 0.0; \
+            target: "disabler"; \
+            target: "disclip"; \
+            target: "bg"; \
+            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); \
+               get_state(PART:"elm.swallow.content", st, 30, vl); \
+               if (!strcmp(st, "visible")) \
+                 set_state(PART:"elm.swallow.content", "visible", 0.0); \
+               else \
+                 set_state(PART:"elm.swallow.content", "default", 0.0); \
+               get_state(PART:"check", st, 30, vl); \
+               if (!strcmp(st, "disabled_visible")) \
+                 { \
+                    set_state(PART:"check", "visible", 0.0); \
+                    set_state(PART:"sequence_clip", "visible", 0.0); \
+                    set_int(check_state, CHECK_STATE_VISIBLE); \
+                 } \
+               else \
+                 set_int(check_state, CHECK_STATE_DEFAULT); \
+            } \
+         } \
+      } \
+   }\
+
+CHECK_STYLE_DEFAULT("quickpanel", 48, 48)
+
+#define PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC 20
+#define PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC          128 128 128 255
+#define PROGRESSBAR_LIST_PROGRESS_STYLE_STATUS_TEXT_COLOR_INC          128 128 128 255
+#define PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC 20
+
+   group { name: "elm/progressbar/horizontal/quickpanel/list_progress";
+      images {
+         image: "quick_progress.9.png" COMP;
+         image: "quick_progress_bg.9.png" COMP;
+      }
+      parts {
+         part { name: "elm.padding.left";
+            type: RECT;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 0.0  0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 0.0  1.0;
+                  offset: 0 0;
+               }
+               visible: 0;
+               align: 0.0 0.0;
+            }
+         }
+         part { name: "elm.padding.right";
+            type: RECT;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 0;
+               rel1 {
+                  relative: 1.0  0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0  1.0;
+                  offset:   0   0;
+               }
+               visible: 0;
+               align: 1.0 0.0;
+            }
+         }
+         part { name: "elm.background.progressbar";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to_x: "elm.padding.left";
+                  relative: 1.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  to_x: "elm.padding.right";
+                  relative: 0.0 1.0;
+                  offset: 0 0;
+               }
+            }
+         }
+         part { name: "elm.swallow.bar";
+            mouse_events: 0;
+            scale: 1;
+            type: SWALLOW;
+            description {
+               min: 1 PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC;
+               max: 99999 PROGRESSBAR_LIST_PROGRESS_HEIGHT_INC;
+               state: "default" 0.0;
+               rel1 {
+                  to: "elm.background.progressbar";
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  to: "elm.background.progressbar";
+                  relative: 1.0 1.0;
+               }
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            description { state: "default" 0.0;
+               visible: 0;
+               align: 0.0 0.5;
+               rel1 {
+                  offset: 0 0;
+                  to_y: "elm.background.progressbar";
+               }
+               rel2 {
+                  offset: 0 -1;
+                  relative: 0.0 1.0;
+                  to_y: "elm.background.progressbar";
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+               aspect: 1.0 1.0;
+               aspect_preference: VERTICAL;
+               rel2.offset: 4 -1;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               visible: 0;
+               fixed: 1 1;
+               align: 0.0 0.5;
+               rel1.to_x: "elm.swallow.content";
+               rel1.relative: 1.0 0.0;
+               rel2.to_x: "elm.swallow.content";
+               rel2.relative: 1.0 1.0;
+               color: PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC;
+               text {
+                  font: "Tizen:style=Medium";
+                  size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC;
+                  min: 0 0;
+                  align: 0.0 0.5;
+                  text_class: "tizen";
+               }
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               text.min: 1 1;
+            }
+         }
+         part { name: "background";
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "elm.background.progressbar";
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  to: "elm.swallow.bar";
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  to: "elm.swallow.bar";
+                  relative: 1.0 1.0;
+               }
+               image {
+                  normal: "quick_progress_bg.9.png";
+                  border: 10 10 0 0;
+               }
+            }
+         }
+         part { name: "elm.text.status";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            description { state: "default" 0.0;
+               fixed: 1 1;
+               visible: 0;
+               rel1 {
+                  to: "background";
+                  relative: 0.5 0.5;
+               }
+               rel2 {
+                  to: "background";
+                  relative: 0.5 0.5;
+               }
+               text {
+                  font: "Tizen:style=Medium";
+                  size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC;
+                  min: 0 0;
+                  align: 0.5 0.0;
+                  text_class: "tizen";
+               }
+               color: PROGRESSBAR_LIST_PROGRESS_STYLE_TEXT_COLOR_INC;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               text.min: 1 1;
+            }
+         }
+         part { name: "elm.progress.progressbar";
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "elm.background.progressbar";
+            description {
+               state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 1;
+               rel1 {
+                  to: "elm.swallow.bar";
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  to_y: "elm.swallow.bar";
+                  to_x: "elm.cur.progressbar";
+                  offset: -1 -1;
+               }
+               image {
+                  normal: "quick_progress.9.png";
+                  border: 10 10 0 0;
+               }
+            }
+            description {
+               state: "invert" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  to_y: "elm.swallow.bar";
+                  to_x: "elm.cur.progressbar";
+               }
+               rel2 {
+                  to: "elm.swallow.bar";
+                  relative: 1.0 1.0;
+               }
+            }
+            description {
+               state: "state_begin" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  to: "elm.swallow.bar";
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  to: "elm.swallow.bar";
+                  relative: 0.1 1.0;
+               }
+            }
+            description {
+               state: "state_end" 0.0;
+               inherit: "default" 0.0;
+               rel1 {
+                  to: "elm.swallow.bar";
+                  relative: 0.9 0.0;
+               }
+               rel2 {
+                  to: "elm.swallow.bar";
+                  relative: 1.0 1.0;
+               }
+            }
+         }
+         part { name: "text-bar";
+            type: TEXT;
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "progress-rect";
+            //effect: SOFT_SHADOW;
+            scale: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               fixed: 1 1;
+               visible: 0;
+               rel1.to: "elm.text.status";
+               rel1.offset: -1 -1;
+               rel2.to: "elm.text.status";
+               text {
+                  text_source: "elm.text.status";
+                  font: "Tizen:style=Medium";
+                  size: PROGRESSBAR_STATUS_TEXT_FONT_SIZE_INC;
+                  min: 0 0;
+                  align: 0.0 0.0;
+                  text_class: "tizen";
+               }
+               color: PROGRESSBAR_LIST_PROGRESS_STYLE_STATUS_TEXT_COLOR_INC;
+            }
+            description { state: "show" 0.0;
+               inherit: "default" 0.0;
+               visible: 0;
+               text.min: 1 1;
+            }
+         }
+         part { name: "elm.cur.progressbar";
+            mouse_events: 0;
+            scale: 1;
+            dragable {
+               confine: "background";
+               x: 1 1 1;
+               y: 0 0 0;
+            }
+            description { state: "default" 0.0;
+               min: 0 28;
+               fixed: 1 1;
+               visible: 0;
+               rel1 {
+                  to: "background";
+                  relative: 0 0;
+               }
+               rel2.to: "background";
+           }
+         }
+         part { name: "progress-rect";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               rel1.to: "elm.progress.progressbar";
+               rel2.to: "elm.progress.progressbar";
+            }
+         }
+      }
+      programs {
+         program { name: "label_show";
+            signal: "elm,state,text,visible";
+            source: "elm";
+            action:  STATE_SET "visible" 0.0;
+            target: "elm.text";
+         }
+         program { name: "label_hide";
+            signal: "elm,state,text,hidden";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "elm.text";
+         }
+         program { name: "icon_show";
+            signal: "elm,state,icon,visible";
+            source: "elm";
+            action:  STATE_SET "visible" 0.0;
+            target: "elm.swallow.content";
+         }
+         program { name: "icon_hide";
+            signal: "elm,state,icon,hidden";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "elm.swallow.content";
+         }
+         program { name: "units_show";
+            signal: "elm,state,units,visible";
+            source: "elm";
+            action:  STATE_SET "show" 0.0;
+            target: "text-bar";
+            target: "elm.text.status";
+         }
+         program { name: "units_hide";
+            signal: "elm,state,units,hidden";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "text-bar";
+            target: "elm.text.status";
+         }
+         program { name: "slide_to_end";
+            action:  STATE_SET "state_end" 0.0;
+            transition: LINEAR 0.5;
+            target: "elm.progress.progressbar";
+            after: "slide_to_begin";
+         }
+         program { name: "slide_to_begin";
+            signal: "elm,state,slide,begin";
+            action: STATE_SET "state_begin" 0.0;
+            target: "elm.progress.progressbar";
+            transition: LINEAR 0.5;
+            after: "slide_to_end";
+         }
+         program { name: "start_pulse";
+            signal: "elm,state,pulse,start";
+            source: "elm";
+           // after: "slide_to_end";
+         }
+         program { name: "stop_pulse";
+            signal: "elm,state,pulse,stop";
+            source: "elm";
+            action: ACTION_STOP;
+            target: "slide_to_begin";
+            target: "slide_to_end";
+            target: "start_pulse";
+            //after: "state_pulse";
+         }
+         program { name: "state_pulse";
+            signal: "elm,state,pulse";
+            source: "elm";
+            action: STATE_SET "state_begin" 0.0;
+            target: "elm.progress.progressbar";
+            after: "units_hide";
+         }
+         program { name: "state_fraction";
+            signal: "elm,state,fraction";
+            source: "elm";
+            action: ACTION_STOP;
+            target: "slide_to_begin";
+            target: "slide_to_end";
+            target: "start_pulse";
+            action: STATE_SET "default" 0.0;
+            target: "elm.progress.progressbar";
+         }
+         program { name: "set_invert_on";
+            signal: "elm,state,inverted,on";
+            source: "elm";
+            action:  STATE_SET "invert" 0.0;
+            target: "elm.progress.progressbar";
+         }
+         program { name: "set_invert_off";
+            signal: "elm,state,inverted,off";
+            source: "elm";
+            action:  STATE_SET "default" 0.0;
+            target: "elm.progress.progressbar";
+         }
+      }
+   }
+
+#define PROGRESSBAR_LIST_PENDING_HEIGHT_INC 20
+
+   group { name: "elm/progressbar/horizontal/quickpanel/pending_list";
+      images {
+         image: "quick_progress_unknown_port_01.png" COMP;
+         image: "quick_progress_unknown_port_02.png" COMP;
+      }
+      parts {
+         part { name: "elm.background.progressbar";
+            type: RECT;
+            mouse_events: 0;
+            scale: 1;
+            description {
+               state: "default" 0.0;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+               }
+            }
+         }
+         part { name: "elm.swallow.bar";
+            mouse_events: 0;
+            scale: 1;
+            type: SWALLOW;
+            description {
+               min: 1 PROGRESSBAR_LIST_PENDING_HEIGHT_INC;
+               max: 99999 PROGRESSBAR_LIST_PENDING_HEIGHT_INC;
+               state: "default" 0.0;
+               rel1 {
+                  to: "elm.background.progressbar";
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  to: "elm.background.progressbar";
+                  relative: 1.0 1.0;
+               }
+            }
+         }
+         part { name: "elm.progress.progressbar";
+            mouse_events: 0;
+            scale: 1;
+            clip_to: "elm.background.progressbar";
+            description {
+               state: "default" 0.0;
+               min: 0 0;
+               fixed: 1 1;
+               rel1 {
+                  to: "elm.swallow.bar";
+                  relative: 0.0 0.0;
+               }
+               rel2 {
+                  to: "elm.swallow.bar";
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+               }
+               image {
+                  normal: "quick_progress_unknown_port_01.png";
+                  border: 7 7 0 0;
+               }
+            }
+            description {
+               state: "state_begin" 0.0;
+               inherit: "default" 0.0;
+            }
+            description {
+               state: "state_end" 0.0;
+               inherit: "default" 0.0;
+               image {
+                  normal: "quick_progress_unknown_port_02.png";
+                  border: 7 7 0 0;
+               }
+            }
+         }
+      }
+      programs {
+         program { name: "slide_to_end";
+            action:  STATE_SET "state_end" 0.0;
+            in: 0.3 0.0;
+            target: "elm.progress.progressbar";
+            after: "slide_to_begin";
+         }
+         program { name: "slide_to_begin";
+            signal: "elm,state,slide,begin";
+            action: STATE_SET "state_begin" 0.0;
+            target: "elm.progress.progressbar";
+            in: 0.3 0.0;
+            after: "slide_to_end";
+         }
+         program { name: "start_pulse";
+            signal: "elm,state,pulse,start";
+            source: "elm";
+            after: "slide_to_end";
+         }
+         program { name: "stop_pulse";
+            signal: "elm,state,pulse,stop";
+            source: "elm";
+            action: ACTION_STOP;
+            target: "slide_to_begin";
+            target: "slide_to_end";
+            target: "start_pulse";
+            after: "init_pulse";
+         }
+         program { name: "init_pulse";
+            action: STATE_SET "default" 0.0;
+            target: "elm.progress.progressbar";
+         }
+      }
+   }
+
+#define BUTTON_STATE_ENABLED 0
+#define BUTTON_STATE_DISABLED 1
+
+#define BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC 58 58 58 255
+#define BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC 248 246 239 255
+#define BUTTON_TEXT_STYLE1_FOCUSED_COLOR_INC 248 246 239 255
+#define BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC 58 58 58 76
+#define BUTTON_TEXT_STYLE1_BG_MIN_INC 100 74
+#define BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC 148 74
+#define BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC 74 74
+#define BUTTON_TEXT_STYLE1_BG_BORDER_INC 13 13 13 13
+#define BUTTON_TEXT_STYLE1_PADDING_MIN_INC 0 0
+#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC 45 45
+#define BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC 4 0
+#define BUTTON_TEXT_STYLE1_VISIBLE_ICON_MIN_MAX_INC 87 87
+#define BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC 87 87
+#define BUTTON_TEXT_STYLE1_FONT_SIZE_INC 36
+#define BUTTON_TEXT_SHADOW_NORMAL_COLOR_INC 255 255 255 255
+#define BUTTON_TEXT_SHADOW_DIM_COLOR_INC 255 255 255 255
+#define BUTTON_TEXT_SHADOW_PRESSED_COLOR_INC 0 0 0 255
+#define BUTTON_DISCLIP_NORMAL_COLOR_INC           255 255 255 255
+#define BUTTON_DISCLIP_DISABLED_COLOR_INC         255 255 255 76
+
+///////////////////////////////////////////////////////////////////////////////////////
+   group { name: "elm/button/base/quickpanel/icon_only";
+
+      images {
+         image: "00_button_01.png" COMP;
+         image: "00_button_01_press.png" COMP;
+         image: "00_button_01_dim.png" COMP;
+      }
+      script {
+         public button_state = BUTTON_STATE_ENABLED;
+      }
+      parts {
+         part { name: "button_image";
+            scale: 1;
+            description { state: "default" 0.0;
+               image {
+                  border: BUTTON_TEXT_STYLE1_BG_BORDER_INC;
+               }
+            }
+            description { state: "clicked" 0.0;
+               inherit: "default" 0.0;
+               //image.normal: "00_button_01_press.png";
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               //image.normal: "00_button_01_dim.png";
+            }
+            description { state: "focused" 0.0;
+               inherit: "default" 0.0;
+               //image.normal: "00_button_01_press.png";
+            }
+         }
+         part { name: "padding_left_top";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 0.0 0.0;
+               rel2.relative: 0.0 0.0;
+               min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part { name: "bg";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_BG_MIN_INC;
+               visible: 0;
+            }
+            description { state: "visible" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_BG_MIN_INC;
+            }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_ICONONLY_BG_MIN_INC;
+            }
+         }
+         part { name: "padding_right_bottom";
+            type: RECT;
+            scale: 1;
+            mouse_events: 0;
+            description { state: "default" 0.0;
+               align: 1.0 1.0;
+               rel1.relative: 1.0 1.0;
+               min: BUTTON_TEXT_STYLE1_PADDING_MIN_INC;
+               fixed: 1 1;
+               visible: 0;
+            }
+         }
+         part { name: "icon_rect";
+            type: RECT;
+            scale: 1;
+            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;
+               inherit: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_VISIBLE_ICON_RECT_MIN_MAX_INC;
+            }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part { name: "padding_after_icon";
+            type: RECT;
+            scale: 1;
+            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;
+               inherit: "default" 0.0;
+               min: BUTTON_TEXT_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+            }
+            description { state: "icononly" 0.0;
+               inherit: "default" 0.0;
+            }
+         }
+         part { name: "padding_before_text";
+            type: RECT;
+            scale: 1;
+            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_STYLE1_VISIBLE_PADDING_ICON_TEXT_MIN_INC;
+               visible: 0;
+            }
+         }
+         part { name: "elm.swallow.content";
+            type: SWALLOW;
+            scale: 1;
+            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_STYLE1_VISIBLE_ICON_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_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_STYLE1_ICONONLY_ICON_MIN_MAX_INC;
+               max: BUTTON_TEXT_STYLE1_ICONONLY_ICON_MIN_MAX_INC;
+            }
+         }
+         part { name: "elm.text";
+            type: TEXT;
+            mouse_events: 0;
+            effect: SHADOW BOTTOM;
+            scale: 1;
+            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;
+               color2: BUTTON_TEXT_SHADOW_NORMAL_COLOR_INC;
+               text {
+                  font: "Tizen:style=Regular";
+                  size: BUTTON_TEXT_STYLE1_FONT_SIZE_INC;
+                  min: 0 0;
+                  max: 1 0;
+                  text_class: "tizen";
+               }
+            }
+            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;
+               color2: BUTTON_TEXT_SHADOW_PRESSED_COLOR_INC;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+            }
+            description { state: "disabled_visible" 0.0;
+               inherit: "default" 0.0;
+               color: BUTTON_TEXT_STYLE1_DISABLED_COLOR_INC;
+               color2: BUTTON_TEXT_SHADOW_DIM_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: BUTTON_DISCLIP_NORMAL_COLOR_INC;
+            }
+            description { state: "disabled" 0.0;
+               inherit: "default" 0.0;
+               color: BUTTON_DISCLIP_DISABLED_COLOR_INC;
+            }
+         }
+         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: "button_unclick3";
+            signal: "mouse,clicked,1";
+            source: "over2";
+            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";
+            target: "clipper";
+            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: "clipper";
+            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";
+         }
+      }
+   }
\ No newline at end of file
diff --git a/data/sip.wav b/data/sip.wav
new file mode 100644 (file)
index 0000000..a4394bf
Binary files /dev/null and b/data/sip.wav differ
diff --git a/debian/changelog b/debian/changelog
new file mode 100755 (executable)
index 0000000..f370e99
--- /dev/null
@@ -0,0 +1,8 @@
+quickpanel (0.1.1-112) unstable; urgency=low
+
+  * update boilerplate
+  * Git: pkgs/q/quickpanel
+  * Tag: quickpanel_0.1.1-112
+
+ -- Jeonghoon Park <jh1979.park@samsung.com>  Wed, 02 May 2012 17:45:20 +0900
+
diff --git a/debian/compat b/debian/compat
new file mode 100755 (executable)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100755 (executable)
index 0000000..58806f9
--- /dev/null
@@ -0,0 +1,17 @@
+Source: quickpanel
+Section: devel
+Priority: extra
+Maintainer: Jeonghoon Park <jh1979.park@samsung.com>, Youngjoo Park <yjoo93.park@samsung.com> 
+Build-Depends: debhelper (>= 5), libnotification-dev, libaul-1-dev, libelm-dev, libappcore-efl-dev, libappcore-common-dev, dlog-dev, libslp-setting-dev, libheynoti-dev, libsvi-dev, libprivilege-control-dev, libecore-dev, libedbus-dev, libevas-dev, libedje-dev, libmm-sound-dev, libicu-dev, libappsvc-dev, iniparser-dev, syspopup-caller-dev
+Standards-Version: 3.7.2
+
+Package: org.tizen.quickpanel
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, libappcore-efl-0, libelm-bin, libaul-1, libnotification-0, libsvi-0, libicu
+Description: Quickpanel Application
+
+Package: org.tizen.quickpanel-dbg
+Section: debug
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, org.tizen.quickpanel (= ${Source-Version})
+Description: Quickpanel Application
diff --git a/debian/org.tizen.quickpanel.install.in b/debian/org.tizen.quickpanel.install.in
new file mode 100755 (executable)
index 0000000..fb4746c
--- /dev/null
@@ -0,0 +1,6 @@
+@PREFIX@/bin/*
+@PREFIX@/res/locale/*
+@PREFIX@/res/edje/*
+@PREFIX@/data
+/opt/share/applications/*
+/etc/init.d/*
diff --git a/debian/org.tizen.quickpanel.postinst.in b/debian/org.tizen.quickpanel.postinst.in
new file mode 100755 (executable)
index 0000000..aabc3cb
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+
+if [ ${USER} = "root" ]
+then
+       chown -R 5000:5000 @PREFIX@/data
+fi
+
+chmod 755 /etc/init.d/quickpanel
+mkdir -p /etc/rc.d/rc5.d/
+mkdir -p /etc/rc.d/rc3.d/
+ln -s  /etc/init.d/quickpanel /etc/rc.d/rc5.d/S51quickpanel
+ln -s  /etc/init.d/quickpanel /etc/rc.d/rc3.d/S51quickpanel
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..b0c2d9f
--- /dev/null
@@ -0,0 +1,114 @@
+#!/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 ?= -Wall -g
+LDFLAGS ?=
+PREFIX ?= /opt/apps/org.tizen.quickpanel
+RESDIR ?= $(PREFIX)/res
+DATADIR ?= $(PREFIX)/data
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -O0
+else
+       CFLAGS += -O2
+endif
+
+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)
+
+       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.quickpanel-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/icons/quickpanel_icon_default.png b/icons/quickpanel_icon_default.png
new file mode 100644 (file)
index 0000000..ef74fd1
Binary files /dev/null and b/icons/quickpanel_icon_default.png differ
diff --git a/org.tizen.quickpanel.manifest b/org.tizen.quickpanel.manifest
new file mode 100755 (executable)
index 0000000..af7de6f
--- /dev/null
@@ -0,0 +1,13 @@
+<manifest>
+       <define>
+           <domain name="org.tizen.quickpanel"/>
+       </define>
+       <assign>
+               <filesystem path="/etc/init.d/quickpanel" label="_" exec_label="none"/>
+               <filesystem path="/etc/rc.d/rc3.d/S51quickpanel" label="_" exec_label="none"/>
+               <filesystem path="/etc/rc.d/rc5.d/S51quickpanel" label="_" exec_label="none"/>
+       </assign>
+       <request>
+           <domain name="org.tizen.quickpanel"/>
+       </request>
+</manifest>
diff --git a/org.tizen.quickpanel.rule b/org.tizen.quickpanel.rule
new file mode 100755 (executable)
index 0000000..ad95881
--- /dev/null
@@ -0,0 +1,47 @@
+org.tizen.quickpanel system::vconf rwxat
+org.tizen.quickpanel system::homedir arwxat
+org.tizen.quickpanel system::media rwxat
+org.tizen.quickpanel system::share rwxat
+org.tizen.quickpanel system::use_internet r
+org.tizen.quickpanel system::vconf_network rwx
+org.tizen.quickpanel system::vconf_system rwx
+org.tizen.quickpanel system::vconf_inhouse rwx
+org.tizen.quickpanel system::vconf_multimedia rw
+org.tizen.quickpanel secure-storage-client rw
+org.tizen.quickpanel pulseaudio rwxat
+org.tizen.quickpanel system rx
+org.tizen.quickpanel xorg rw
+org.tizen.quickpanel device::bklight rw
+org.tizen.quickpanel org.tizen.indicator rwx
+org.tizen.quickpanel crash-popup rx
+org.tizen.quickpanel system-server rwx
+org.tizen.quickpanel immvibed rw
+org.tizen.quickpanel display_wd rx
+org.tizen.quickpanel sound_server rwxa
+org.tizen.quickpanel dbus rwx
+org.tizen.quickpanel e17 rw
+
+org.tizen.quickpanel svi-data x
+org.tizen.quickpanel ail::db rw
+org.tizen.quickpanel com.samsung.oma-dm rx
+org.tizen.quickpanel svi-data rx
+org.tizen.quickpanel _ w
+org.tizen.quickpanel sys-assert::core rwxat
+org.tizen.quickpanel isf rwx
+org.tizen.quickpanel media-server rx
+org.tizen.quickpanel deviced rwx
+org.tizen.quickpanel notification::db rw
+org.tizen.quickpanel data-provider-master rw
+org.tizen.quickpanel data-provider-master::notification rw
+org.tizen.quickpanel data-provider-master::notification.client rw
+org.tizen.quickpanel org.tizen.setting::default-resources rx
+org.tizen.quickpanel starter::vconf rw
+org.tizen.quickpanel device::app_logging w
+org.tizen.quickpanel device::sys_logging w
+org.tizen.quickpanel oma-ds-agent::cfg r
+org.tizen.quickpanel oma-ds-agent::svc rw
+
+e17 org.tizen.quickpanel rw
+system org.tizen.quickpanel w
+display_wd org.tizen.quickpanel w
+dbus org.tizen.quickpanel rwx
diff --git a/packaging/org.tizen.quickpanel.spec b/packaging/org.tizen.quickpanel.spec
new file mode 100755 (executable)
index 0000000..6952929
--- /dev/null
@@ -0,0 +1,96 @@
+%define PREFIX    /usr/apps/%{name}
+%define RESDIR    %{PREFIX}/res
+%define DATADIR    %{PREFIX}/data
+
+Name:       org.tizen.quickpanel
+Summary:    Quick Panel
+Version:    0.3.58
+Release:    1
+Group:      util
+License:    Flora Software License
+Source0:    %{name}-%{version}.tar.gz
+Source101:  quickpanel.service
+
+BuildRequires: pkgconfig(capi-appfw-application)
+BuildRequires: pkgconfig(capi-appfw-app-manager)
+BuildRequires: pkgconfig(capi-system-runtime-info)
+BuildRequires: pkgconfig(capi-system-info)
+BuildRequires: pkgconfig(capi-system-device)
+BuildRequires: pkgconfig(capi-network-tethering)
+BuildRequires: pkgconfig(capi-media-player)
+BuildRequires: pkgconfig(feedback)
+BuildRequires: pkgconfig(appcore-common)
+BuildRequires: pkgconfig(notification)
+BuildRequires: pkgconfig(vconf)
+BuildRequires: pkgconfig(appsvc)
+BuildRequires: pkgconfig(devman_haptic)
+BuildRequires: pkgconfig(libprivilege-control)
+BuildRequires: pkgconfig(ecore-x)
+BuildRequires: pkgconfig(edbus)
+BuildRequires: pkgconfig(evas)
+BuildRequires: pkgconfig(ecore)
+BuildRequires: pkgconfig(edje)
+BuildRequires: pkgconfig(icu-i18n)
+BuildRequires: pkgconfig(dlog)
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(syspopup-caller)
+BuildRequires: pkgconfig(minicontrol-viewer)
+BuildRequires: pkgconfig(minicontrol-monitor)
+#BuildRequires: pkgconfig(deviced)
+BuildRequires: pkgconfig(utilX)
+BuildRequires: gettext-tools
+BuildRequires: cmake
+BuildRequires: edje-tools
+
+Requires(post): /usr/bin/vconftool
+Requires: e17
+%description
+Quick Panel
+
+%prep
+%setup -q
+
+
+%build
+LDFLAGS+="-Wl,--rpath=%{PREFIX}/lib -Wl,--as-needed";export LDFLAGS
+cmake . -DCMAKE_INSTALL_PREFIX=%{PREFIX}
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+%make_install
+mkdir -p %{buildroot}/%{_sysconfdir}/rc.d/rc5.d/
+mkdir -p %{buildroot}/%{_sysconfdir}/rc.d/rc3.d/
+ln -s ../../init.d/quickpanel %{buildroot}/%{_sysconfdir}/rc.d/rc5.d/S51quickpanel
+ln -s ../../init.d/quickpanel %{buildroot}/%{_sysconfdir}/rc.d/rc3.d/S51quickpanel
+
+mkdir -p %{buildroot}%{_libdir}/systemd/user/core-efl.target.wants
+install -m 0644 %SOURCE101 %{buildroot}%{_libdir}/systemd/user/
+ln -s ../quickpanel.service %{buildroot}%{_libdir}/systemd/user/core-efl.target.wants/quickpanel.service
+
+mkdir -p %{buildroot}/usr/share/license
+cp -f LICENSE.Flora %{buildroot}/usr/share/license/%{name}
+
+%post
+vconftool set -t bool db/setting/rotate_lock 0 -u 5000 -f
+vconftool set -t bool db/setting/drivingmode/drivingmode 0 -u 5000 -f
+vconftool set -t bool memory/private/%{name}/started 0 -i -u 5000 -f
+vconftool set -t bool memory/private/%{name}/enable_ask 1 -i -u 5000 -f
+vconftool set -t bool memory/private/%{name}/disable_ask 1 -i -u 5000 -f
+vconftool set -t bool memory/private/%{name}/hotspot/enable_ask 1 -i -u 5000 -f
+
+%files
+%manifest %{name}.manifest
+%defattr(-,root,root,-)
+%attr(755,-,-) %{_sysconfdir}/init.d/quickpanel
+%attr(775,app,app) %{DATADIR}
+%{PREFIX}/bin/*
+%{RESDIR}/*
+/usr/share/packages/%{name}.xml
+%{_sysconfdir}/rc.d/rc3.d/S51quickpanel
+%{_sysconfdir}/rc.d/rc5.d/S51quickpanel
+%{_sysconfdir}/init.d/quickpanel
+%{_libdir}/systemd/user/quickpanel.service
+%{_libdir}/systemd/user/core-efl.target.wants/quickpanel.service
+/usr/share/license/%{name}
+/opt/etc/smack/accesses.d/%{name}.rule
\ No newline at end of file
diff --git a/packaging/quickpanel.service b/packaging/quickpanel.service
new file mode 100644 (file)
index 0000000..ef2776e
--- /dev/null
@@ -0,0 +1,11 @@
+
+[Unit]
+Description=Start the Quickpanel
+Before=core-efl.target
+After=xorg.target starter.service e17.service
+
+[Service]
+ExecStart=/usr/apps/org.tizen.quickpanel/bin/quickpanel
+
+[Install]
+WantedBy=tizen-mobile.target
diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..5495a31
--- /dev/null
@@ -0,0 +1,24 @@
+# for i18n
+
+SET(POFILES ar.po az.po bg.po ca.po cs.po da.po de_DE.po el_GR.po en.po en_PH.po en_US.po es_ES.po es_MX.po et.po eu.po fi.po fr_CA.po fr_FR.po ga.po gl.po hi.po hr.po hu.po hy.po is.po it_IT.po ja_JP.po ka.po kk.po ko_KR.po lt.po lv.po mk.po nb.po nl_NL.po pl.po pt_BR.po pt_PT.po ro.po ru_RU.po sk.po sl.po sr.po sv.po tr_TR.po uk.po uz.po zh_CN.po zh_HK.po zh_SG.po zh_TW.po)
+
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+       SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+       MESSAGE("PO: ${pofile}")
+       GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+       GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+       SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+       ADD_CUSTOM_COMMAND(
+                       OUTPUT ${moFile}
+                       COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+                       DEPENDS ${absPofile}
+       )
+       INSTALL(FILES ${moFile}
+                       DESTINATION ${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/ar.po b/po/ar.po
new file mode 100755 (executable)
index 0000000..4cdbbe5
--- /dev/null
+++ b/po/ar.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "إشعارات"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "مكالمات طوارئ فقط"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "تدوير"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "إشعارات (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "الاهتزاز"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "صوت واهتزاز"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "تدوير تلقائي"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "قفل التدوير"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "وضع التخزين كبير السعة"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "تعطيل"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "تفعيل"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "غير مدعوم"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "إيقاف"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "قم بإدخال البطاقة للنفاذ إلى خدمات الشبكة"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "عدم السؤال مرة أخرى"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "إدخال بطاقة SIM وإعادة تشغيل الجهاز لاستخدام التقييد"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "الاتصال من خلال حزم البيانات قد تتطلب تكاليف إضافية. متابعة؟"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "تلقائي"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "توفير الطاقة"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "تقييد"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "بيانات الهاتف المحمول"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "وضع القيادة"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "يتعذر الاتصال بشبكات الهاتف المحمول أثناء تفعيل وضع الطيران. اتصل بشبكة Wi-Fi بدلا من ذلك أو قم بإلغاء تفعيل وضع الطيران، ثم أعد المحاولة"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "يستهلك تقييد Wi-Fi‬ الكثير من طاقة البطارية وتزيد من استخدام البيانات. هل تريد المتابعة؟"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "إلغاء تفعيل التقييد لاستخدام Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "لتفعيل وضع توفير الطاقة، قم بتفعيل وظيفة واحدة ذات صلة"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "إيقاف تشغيل التقييد لاستخدام Wi-Fi"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "لا يمكن تنشيط كل من Wi-Fi وMobile AP في الوقت نفسه. هل تريد إلغاء تنشيط Mobile AP؟"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "مراقبة الشاشة"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "استبدال زر الإعداد السريع"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "إضافة زر الإعداد السريع"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "لن يمكنك استخدام تطبيقات، مثل الإنترنت والبريد الإلكتروني عبر شبكات الهاتف المحمول بعد الآن. هل تريد المتابعة؟"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "الزر"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "إشعار"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "موافق"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "غير موافق"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "تتحكم التطبيقات التي تستخدمها في موقع GPS واستخدام بيانات الموقع"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "موافقة المستخدم"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "صوت"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "بيانات\nالهاتف"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "وضع\nالطيران"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "سكون\nذكي"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "توفير\nالطاقة"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "تقييد"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "كتم"
+
diff --git a/po/az.po b/po/az.po
new file mode 100755 (executable)
index 0000000..53b9016
--- /dev/null
+++ b/po/az.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Bildirişlər"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Yalnız fövqəladə zənglər üçün"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Fırlatma"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Bildirişlər (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibrasiya"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Səs və titrəmə"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Avto fırlatma"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Fırlanma kilidi"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Kütləvi yaddaş rejimi"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Söndür"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Qoş"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Dəstəklənmədi"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Söndürmək"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Şəbəkə xidmətlərinə daxil olmaq üçün SİM kartı daxil edin"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Bir də soruşma"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "SIM kartı daxil edin və bağlanmadan istifadə etmək üçün cihazı yenidən başladın"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Paket məlumatları vasitəsilə qoşulma əlavə qiymət tətbiq edə bilər. Davam edilsin?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Avtomatik"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Enerji qorunması"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Bağlanma"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobil məlumatlar"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Sürücülük rejimi"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Uçuş rejimi aktiv olduqda mobil şəbəkələrə qoşulmaq mümkün deyil. Əvəzinə Wi-Fi şəbəkəsinə qoşulun və ya Uçuş rejimini qeyri-aktiv edin və yenidən cəhd edin"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi bağlanma daha çox batareyadan istifadə edir və verilənlərdən istifadənizi artırır. Davam etsin?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Wi-Fi-dan istifadə etmək üçün bağlanmanı söndür"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Enerji qorunması rejimini aktivləşdirmək üçün ən azı bir müvafiq funksiyanı aktivəşdirin"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Bağlanmadan istifadə etmək üçün Wi-Fi-ı söndür"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi və Mobile AP eyni zamanda aktivləşdirilə bilməz. Mobile AP qeyri-aktiv edilsin?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Çevik parametr düyməsini əvəz et"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Sürətli parametr düyməsi əlavə et"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Siz artıq mobil şəbəkələr vasitəsilə İnternet və Epoçt kimi proqramlardan istifadə edə bilməyəcəksiniz. Davam edilsin?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Düymə"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Bildiriş"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Razıyam"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Müvafiq deyil"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS məkanı və məkan məlumatlarınızdan istifadə istifadə etdiyiniz proqramlarla idarə olunur"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "İstifadəçi razılığı"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Səs"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobil\nməlumatlr"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Uçuş\nrejimi"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Smart\nqalma"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Enerji\nqrnmsı"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Bağlanma"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Səssiz"
+
diff --git a/po/bg.po b/po/bg.po
new file mode 100755 (executable)
index 0000000..a0114e7
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Уведомления"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Само спешни повиквания"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Въртене"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Уведомления (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Вибрация"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Звънене и вибрация"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Автом. завърт."
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Заключв. завъртане"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Режим запам. устройство"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Забрани"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Разрешаване"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Не се поддържа"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Отхвърляне"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Поставете SIM картата, за да получите достъп до услуги на мрежата"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Не питай повече"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Поставете SIM карта и рестартирайте устройството, за да използвате привързване"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "При свързване за пакетни данни може да се начислят допълнителни такси. Продължаване?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Авто"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Пестене на енергия"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Привързване"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Мобилни данни"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Режим Шофиране"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Не може да се свърже към мобилни мрежи, когато е активиран режим Полет. Вместо това се свържете към Wi-Fi мрежа или деактивирайте режим Полет и опитайте отново"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi привързване изразходва повече енергия от батерията и увеличава потреблението на данни. Продължаване?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Деактивирайте привързване, за да използвате Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "За да активирате режим Пестене на енергия, активирайте поне една релевантна функция"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Изключете Wi-Fi, за да използвате привързване"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi и Mobile AP не могат да бъдат активирани едновременно.. Деактивиране на Mobile AP?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Огледален режим на екрана"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Заместване на бутона за бърза настройка"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Добавяне на бутон за бърза настройка"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Повече няма да можете да използвате приложения, като Интернет и Имейл, през мобилни мрежи. Продължаване?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Бутон"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Уведом."
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Съгласен"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Несъгласен"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS местоположението и използването на вашите данни за местоположение се контролират от приложенията, които използвате"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Съгласие от потребителя"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Звук"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Мобилни\nданни"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Режим\nполет"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Умно\nоставане"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Пест. на\nенерг."
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Привързване"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Заглуш."
+
diff --git a/po/ca.po b/po/ca.po
new file mode 100755 (executable)
index 0000000..dcbb5f5
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notificacions"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Només trucades d'emergència"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotació"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Notificacions (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibració"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "So i vibració"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Rotació auto."
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Bloq de rotació"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Mode emmagatzemat massiu"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Desactiv"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Activar"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "No s'admet"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Descartar"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insereixi la targeta SIM per a accedir als serveis de xarxa"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "No ho tornis a preguntar"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Insereixi una targeta SIM i reiniciï el dispositiu per utilitzar tethering"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "La connexió mitjançant paquet de dades pot suposar un cost addicional. Vol continuar?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Estalvi d'energia"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Dades mòbils"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Mode de conducció"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "No es pot connectar a xarxes mòbils mentre el mode Vol està habilitat. Connecti a una xarxa Wi-Fi en el seu lloc, o deshabiliti el mode Vol i torni-ho a intentar"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "El tethering Wi-Fi consumeix més bateria i augmenta el consum de dades. Continuar?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Deshabilitar tethering per utilitzar Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Per habilitar el mode d'estalvi d'energia, habiliti almenys una funció pertinent"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Desactivar el Wi-Fi per utilitzar tethering"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "No es poden activar els punt d'accés Wi-Fi i mòbil al mateix temps. Desactivar al punt d'accés mòbil?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Simetria de pantalla"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Substituir botó d'ajustament ràpid"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Afegir botó d'ajustament ràpid"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Ja no podrà utilitzar aplicacions com ara Internet i el correu electrònic mitjançant xarxes de mòbil. Continuar?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Botó"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notificac"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Aceptar"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "No acceptar"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "La ubicació GPS i l'ús de les dades de la ubicació les controlen les aplicacions que utilitza"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Consentiment d'usuari"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "So"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Dades\nmòbils"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Mode\nVol"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Estada\nintel"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Estalvi\nenergia"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Silenci"
+
diff --git a/po/cs.po b/po/cs.po
new file mode 100755 (executable)
index 0000000..9650af0
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Oznámení"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Pouze tísňová volání"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Otočení"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Oznámení (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibrace"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Zvuk a vibrace"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Automat. otočení"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Zámek otočení"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Režim velkokap. pam. zař."
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Vypnout"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Povolit"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Není podporováno"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Konec"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Chcete-li používat síťové služby, vložte SIM kartu"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Příště se neptat"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Chcete-li použít sdílení připojení, vložte SIM kartu a restartujte zařízení"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Připojení prostřednictvím datových paketů může zahrnovat další poplatky. Chcete pokračovat?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Úsporný režim"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Sdílení internetového připojení"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobilní data"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Režim Vozidlo"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "V režimu Letadlo není možné se připojit k mobilním sítím. Připojte se pomocí sítě Wi-Fi, nebo vypněte režim Letadlo a opakujte akci"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Sdílení připojení Wi-Fi spotřebovává více energie z baterie a zvyšuje využívání dat. Pokračovat?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Chcete-li použít Wi-Fi, vypněte sdílení připojení k Intern."
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Chcete-li zapnout Úsporný režim, zapněte alespoň jednu související funkci"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Chcete použít sdílení připojení k Internetu, vypněte Wi-Fi"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi a mobilní přístupový bod nelze aktivovat současně. Chcete deaktivovat mobilní přístupový bod?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Zrcadlení obrazovky"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Vyměnit tlačítko rychlého nastavení"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Přidat tlačítko rychlého nastavení"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Nebudete moci dále používat aplikace jako je Internet a E-mail prostřednictvím mobilních sítí. Chcete pokračovat?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Tlačítko"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Oznámení"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Souhlasím"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Nesouhlasím"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "Poloha GPS a použití údajů o poloze je řízeno používanými aplikacemi"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Souhlas uživatele"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Zvuk"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobilní\ndata"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Režim\nLetadlo"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Chytrý\npoh. st."
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Úsporný\nrežim"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Ztlumit"
+
diff --git a/po/da.po b/po/da.po
new file mode 100755 (executable)
index 0000000..9cbd7f1
--- /dev/null
+++ b/po/da.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Meddelelser"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Kun nødopkald"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotation"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Meddelelser (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibration"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Lyd og vibration"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Auto rotation"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Lås rotation"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Masselager-tilstand"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Deaktivér"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Aktivér"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Understøttes ikke"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Afvis"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Indsæt SIM-kortet for at få adgang til netværkstjenesterne"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Spørg ikke igen"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Isæt SIM-kort, og genstart enhed for at bruge deling"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Tilslutning via pakkedata kan medføre ekstra gebyrer. Fortsæt?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Strøm\n-besparelse"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Internetdeling"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobildata"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Køretilstand"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Kan ikke oprette forbindelse til mobile netværk, da Flytilstand er aktiveret. Opret forbindelse til Wi-Fi-netværk i stedet, eller deaktivér Flytilstand og prøv igen"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi-deling bruger mere batteri og forøger dit dataforbrug. Fortsæt?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Deaktivér deling for at bruge Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Aktivér mindst én relevant funktion for at aktivere Strømsparetilstand"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Sluk for Wi-Fi for at bruge deling"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Både Wi-Fi og mobilt adgangspunkt kan ikke være aktiveret på samme tid. Deaktivér mobilt adgangspunkt?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Skærmspejling"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Erstat hurtig indstillingsknap"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Tilføj hurtig indstillingsknap"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Du kan ikke længere bruge programmer, såsom internettet og e-mail via mobile netværk. Fortsæt?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Tast"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Besked"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Acceptér"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Uenig"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS-placering og brug af dine placeringsdata styres af det program, du anvender"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Brugersamtykke"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Lyd"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobil\ndata"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Fly\ntilstand"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Smart sk.\nst.by"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Strøm\nbespar."
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Lydløs"
+
diff --git a/po/de_DE.po b/po/de_DE.po
new file mode 100755 (executable)
index 0000000..d4bbc09
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Benachricht."
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Nur Notrufe möglich"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Drehung"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Benachrichtigungen (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibration"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Ton & Vibration"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Automat.\nAusrichten"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Automat.\nAusrichten"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Massenspeichermodus"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Deaktiv."
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Aktivieren"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Nicht unterstützt"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Ablehnen"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "SIM-Karte einsetzen, um auf Netzdienste zuzugreifen"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Nicht erneut fragen"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "SIM-Karte einsetzen und Gerät neu starten, um Tethering zu verwenden."
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Die Verbindung über Paketdaten kann zusätzliche Kosten erzeugen. Fortfahren?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Energiesparmodus"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobile Datenverbindung"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Fahrzeugmodus"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Bei aktiviertem Offline-Modus kann keine Verbindung mit mobilen Netzwerken hergestellt werden. Verbinden Sie sich stattdessen mit WLAN oder deaktivieren Sie den Offline-Modus und versuchen Sie es erneut."
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "WLAN-Tethering verbraucht mehr Akkuleistung und erhöht Ihre Datenverarbeitung. Fortfahren?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Tethering deaktivieren, um WLAN zu verwenden"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Energiesparmodus durch Aktivierung mindestens einer relevanten Funktion aktivieren."
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "WLAN ausschalten, um Tethering zu verwenden"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "WLAN und Mobile AP können nicht zur gleichen Zeit aktiviert werden. Mobile AP deaktivieren?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Bildschirmspiegelung"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Schnelleinstellungstaste ersetzen"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Schnelleinstellungstaste hinzufügen"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Sie können Anwendungen wie Internet und E-Mail mehr über mobile Netzwerke verwenden. Fortfahren?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Bildschirm-\nspiegelung"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Taste"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Benachr."
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Zustimmen"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Ablehnen"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS-Standort und Verwendung Ihrer Standortdaten werden von den von Ihnen verwendeten Anwendungen kontrolliert"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Benutzerzustimmung"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Ton"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobile\nDaten"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Offline-\nModus"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Smart\nStay"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Energie\nsparen"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Stumm"
+
diff --git a/po/el_GR.po b/po/el_GR.po
new file mode 100755 (executable)
index 0000000..9a2ee21
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Ειδοποιήσεις"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Μόνο επείγουσες κλήσεις"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Περιστρ."
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Ειδοποιήσεις (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Δόνηση"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Ήχος & δόνηση"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Αυτόμ. περιστρ."
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Κλείδ. περιστρ."
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Λειτ. μαζικής αποθήκευσης"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Απενεργ."
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Ενεργό"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Δεν υποστηρίζεται"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Ματαίωση"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Εισάγετε την κάρτα SIM για παροχή πρόσβασης στις υπηρεσίες δικτύου"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Να μην ερωτηθώ ξανά"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Εισαγάγετε την κάρτα SIM και επανεκκινήστε τη συσκευή για να χρησιμοποιήσετε τη λειτουργία tethering"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Ενδέχεται να υπάρχουν επιπλέον χρεώσεις για τη σύνδεση μέσω πακέτου δεδομένων. Συνέχεια;"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Αυτόματο"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Εξοικονόμηση ενέργειας"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Δεδομ. κινητής συσκ."
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Λειτουργία οδήγησης"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Δεν είναι δυνατή η σύνδεση σε δίκτυα κινητής τηλεφωνίας όσο είναι ενεργοποιημένη η λειτουργία πτήσης. Συνδεθείτε σε δίκτυο Wi-Fi ή απενεργοποιήστε τη λειτουργία πτήσης και δοκιμάστε ξανά"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Το tethering μέσω Wi-Fi καταναλώνει περισσότερη ισχύ μπαταρίας και αυξάνει τη χρήση δεδομένων. Συνέχεια;"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Απενεργοποιήστε τη λειτουργία tethering για χρήση του Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Για την ενεργοποίηση της λειτουργίας εξοικονόμησης ενέργειας, ενεργοποιήστε τουλάχιστον μία σχετική λειτουργία"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Απενεργοποιήστε το Wi-Fi για χρήση της λειτουργίας tethering"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Τόσο το Wi-Fi όσο και το AP για κινητά δεν μπορούν να ενεργοποιηθούν ταυτόχρονα. Απενεργοποίηση AP για κινητά;"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Κατοπτρισμός οθόνης"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Αντικατάσταση κουμπιού γρήγορης ρύθμισης"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Κουμπί προσθήκης γρήγορης ρύθμισης"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Δεν θα μπορείτε πλέον να χρησιμοποιείτε εφαρμογές όπως το Internet και το Email μέσω δικτύων κινητής τηλεφωνίας. Συνέχεια;"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Κουμπί"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Ειδοποίηση"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Αποδοχή"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Δεν συμφωνώ"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "Η τοποθεσία GPS και η χρήση των δεδομένων τοποθεσίας σας ελέγχονται από τις εφαρμογές τις οποίες χρησιμοποιείτε"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Συγκατάθεση χρήστη"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Ήχος"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Δεδομ.\nκινητού"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Λειτ.\nπτήσης"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Έξυπνη\nδιαμονή"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Εξοικ.\nενέργ."
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Σίγαση"
+
diff --git a/po/en.po b/po/en.po
new file mode 100755 (executable)
index 0000000..fe6b345
--- /dev/null
+++ b/po/en.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notifications"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Emergency calls only"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotation"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Notifications (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibration"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Sound & vibration"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Auto rotation"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Rotation lock"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Mass storage mode"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Disable"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Enable"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Unsupported"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Dismiss"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insert SIM card to access network services"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Do not ask again"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Insert SIM card and restart device to use tethering"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Connecting via packet data may incur additional charges. Continue?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Power saving"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobile data"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Driving mode"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Unable to connect to mobile networks while Flight mode is enabled. Connect to Wi-Fi network instead, or disable Flight mode and try again."
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi tethering consumes more battery power and increases your data usage. Continue?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Disable tethering to use Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "To enable Power saving mode, enable at least one relevant function"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Turn off Wi-Fi to use tethering"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Both Wi-Fi and mobile AP cannot be activated at the same time. Deactivate mobile AP?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Replace quick setting button"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Add quick setting button"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "You will no longer be able to use applications such as Internet and Email via mobile networks. Continue?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Button"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notification"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Agree"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Disagree"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS location and use of your location data are controlled by the applications you use"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "User consent"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Sound"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobile\ndata"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Flight\nmode"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Smart\nstay"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Power\nsaving"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Mute"
+
diff --git a/po/en_PH.po b/po/en_PH.po
new file mode 100755 (executable)
index 0000000..a556c0c
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notifications"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Emergency calls only"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotation"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Notifications (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibration"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Sound & vibration"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Auto rotation"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Rotation lock"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Mass storage mode"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Disable"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Enable"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Unsupported"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Dismiss"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insert SIM card to access network services"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Do not ask again"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Insert SIM card and restart device to use tethering"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Connecting via packet data may incur additional charges. Continue?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Power saving"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobile data"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Driving mode"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Unable to connect to mobile network while Flight mode is enabled. Connect to Wi-Fi network instead, or disable Flight mode and try again"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi tethering consumes more battery power and increases your data usage. Continue?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Disable tethering to use Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "To enable Power saving mode, enable at least one relevant function"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Turn off Wi-Fi to use tethering"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Both Wi-Fi and Mobile AP cannot be activated at the same time. Deactivate Mobile AP?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Replace quick setting button"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Add quick setting button"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "You will no longer be able to use applications such as Internet and Email via mobile networks. Continue?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Button"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notification"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Agree"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Disagree"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS location and use of your location data are controlled by the applications you use"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "User consent"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Sound"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobile\ndata"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Flight\nmode"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Smart\nstay"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Power\nsaving"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Mute"
+
diff --git a/po/en_US.po b/po/en_US.po
new file mode 100755 (executable)
index 0000000..c89ca83
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notifications"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Emergency calls only"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotation"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Notifications (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibration"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Sound & vibration"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Auto rotation"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Rotation lock"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Mass storage mode"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Turn off"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Turn on"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Unsupported"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Dismiss"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insert SIM card to access network services"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Do not ask again"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Insert SIM card and restart device to use tethering"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Connecting via packet data may incur additional charges. Continue?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Power saving"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobile data"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Driving mode"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Unable to connect to mobile networks while Airplane mode is turned on. Connect to Wi-Fi network instead, or turn off Airplane mode and try again."
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi tethering consumes more battery power and increases your data usage. Continue?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Turn off tethering to use Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "To turn on Power saving mode, turn on at least one relevant function"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Turn off Wi-Fi to use tethering."
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Both Wi-Fi and Mobile AP cannot be activated at the same time. Deactivate Mobile AP?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Replace quick setting button"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Add quick setting button"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "You will no longer be able to use applications such as Internet and Email via mobile networks. Continue?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Button"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notification"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Agree"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Disagree"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS location and use of your location data are controlled by the applications you use"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "User consent"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Sound"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobile\ndata"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Airplane \nmode"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Smart\nstay"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Power\nsaving"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Mute"
+
diff --git a/po/es_ES.po b/po/es_ES.po
new file mode 100755 (executable)
index 0000000..5eb932a
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notificación"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Sólo llamadas de emergencia"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotación"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Notificaciones (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibración"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Sonido y vibración"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Rotación autom"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Bloq rotación"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Modo almacenam masivo"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Desactiv"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Habilitar"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "No admitido"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Rechazar"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Inserte la tarjeta SIM para acceder a los servicios de red"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "No preguntar de nuevo"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Introduzca la tarjeta SIM y reinicie el dispositivo para utilizar anclaje a red"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "La conexión mediante paquetes de datos puede suponer gastos adicionales. ¿Continuar?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Ahorro de energía"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Módem USB"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Datos móviles"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Modo coche"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "No se puede conectar a redes móviles mientras el modo Avión está activado. Conecte a una red Wi-Fi en su lugar o desactive el modo Avión y vuelva a intentarlo"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "El anclaje a red Wi-Fi consume mucha batería y aumenta el uso de datos. ¿Continuar?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Desactive el anclaje a red para usar Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Para habilitar el modo de ahorro de energía, active al menos una función relevante"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Apague la Wi-Fi para usar anclaje a red"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Las conexiones Wi-Fi y Mobile AP no se pueden activar al mismo tiempo. ¿Desactivar Mobile AP?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Reemplazar botón de ajuste rápido"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Añadir botón de ajuste rápido"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Ya no podrá utilizar aplicaciones de datos como Internet y el correo electrónico mediante redes móviles. ¿Continuar?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Compartir\npantalla"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Botón"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notificac"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Acepto"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "No acepto"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "La ubicación del GPS y el uso de los datos de ubicación los controlan las aplicaciones que utiliza"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Consentimiento del usuario"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Sonido"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Datos\nmóviles"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Modo\navión"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Smart\nstay"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Ahorro\nenergía"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Silencio"
+
diff --git a/po/es_MX.po b/po/es_MX.po
new file mode 100755 (executable)
index 0000000..1512ea4
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notific."
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Sólo llamadas de emergencia"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotación"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Notificaciones (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibración"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Sonido y vibración"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Rotación auto."
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Bloq rotación"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Modo de almacenamiento masivo"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Desactiv."
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Activar"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "No compatible"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Rechazar"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insertar tarjeta SIM para acceder a los servicios de red"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "No volver a preguntar"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Inserte tarjeta SIM y reinicie el dispositivo para usar la redirección"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "La conexión mediante paquete de datos puede suponer gastos adicionales. ¿Continuar?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Ahorro de energía"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Anclaje a red"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Datos móviles"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Perfil Manejo"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "No es posible conectar a las redes móviles mientras que el perfil Fuera de línea está activado. Conéctese a una red Wi-Fi o desactive el perfil Fuera de línea e inténtelo de nuevo"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "La redirección de Wi-Fi consume más batería y aumenta el uso de datos. ¿Continuar?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Desactive la redirección para usar Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Para activar el Modo de ahorro de energía, active, al menos, una función importante"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Desactive Wi-Fi para usar la redirección"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Las conexiones Wi-Fi y Mobile AP no se pueden activar al mismo tiempo. ¿Desactivar Mobile AP?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Reemplazar el botón de configuración rápida"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Añadir botón de configuración rápida"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Ya no podrá usar aplicaciones como Internet y correo a través de redes móviles. ¿Continuar?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Pantalla\nEspejo"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Botón"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notific."
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Acepto"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "En desacuer."
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "La ubicación del GPS y el uso de los datos de ubicación los controlan las aplicaciones que utiliza"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Consentimiento del usuario"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Sonido"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Móvil\ny datos"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Fuera de\n línea"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Perma.\nintelig."
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Ahorro de\nenergía"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Silencio"
+
diff --git a/po/et.po b/po/et.po
new file mode 100755 (executable)
index 0000000..01dc7e4
--- /dev/null
+++ b/po/et.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Teavitused"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Ainult hädaabikõned"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Pööram."
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Teavitused (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Värin"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Heli ja värin"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Autom. pööram."
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Pööramise lukk"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Massmälurežiim"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Desaktiv."
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Luba"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Toetuseta"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Keeldu"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Sisestage SIM-kaart, et pääseda ligi võrguteenustele"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Ära küsi enam"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Vahendamiseks sisestage SIM-kaart ja taaskäivitage seade"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Pakettandmesideühenduse loomisel võivad rakenduda lisatasud. Kas jätkata?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Energia säästmine"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Mobiilse internetiga ühendamine"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobiilne andmeside"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Sõidurežiim"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Mobiilsete võrkudega ei saa ühendust luua, kui lennurežiim on aktiveeritud. Looge selle asemel ühendus Wi-Fi võrguga või desaktiveerige lennurežiim ja proovige uuesti"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi kaudu vahendamine tarbib rohkem akutoidet ja suurendab andmekasutust. Kas jätkata?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Wi-Fi kasutamiseks desaktiveerige modem"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Energiasäästurežiimi aktiveerimiseks aktiveerige vähemalt üks asjakohane funktsioon"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Modemi kasutamiseks lülitage Wi-Fi välja"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fit ja Mobile AP-d ei saa aktiveerida samaaegselt. Kas desaktiveerida Mobile AP?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Asenda kiirseadistuse nupp"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Lisa kiirseadistuse nupp"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Te ei saa enam mobiilsidevõrgu kaudu kasutada rakendusi nagu internet ja e-post. Kas jätkata?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Nupp"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Teavitus"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Nõustu"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Ei nõustu"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS-asukohta ja teie asukohaandmete kasutamist kontrollib rakendus, mida te kasutate"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Kasutaja nõusolek"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Heli"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobiili-\nandmes."
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Lennu-\nrežiim"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Nutikas\nolek"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Energia-\nsääst"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Modem"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Vaigista"
+
diff --git a/po/eu.po b/po/eu.po
new file mode 100755 (executable)
index 0000000..b15a0fa
--- /dev/null
+++ b/po/eu.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Jakinarazpenak"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Larrialdi deiak bakarrik"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Biraketa"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Jakinarazpenak (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Bibrazioa"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Soinu & bibrazioa"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Errotaz. autom."
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Biraketa blokeoa"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Biltegiratze masibo modua"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Ezgaitu"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Gaitu"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Ez bateragarria"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Kendu"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Sartu SIM txartela sare zerbitzuetara sartzeko"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Ez galdetu berriz"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Sartu SIM txartela eta berrabiarazi gailua ainguraketa erabiltzeko"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Litekeena da pakete datuen bidez konektatzeak kosturen bat izatea. Jarraitu?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Bateria aurreztea"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Sare ainguraketa"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Datu mugikorrak"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Gidatze modua"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Ezin da sare mugikorretara konektatu Hegaldi modua gaituta dagoen bitartean. Konektatu Wi-Fi sarera bestela, edo ezgaitu Hegaldi modua eta saiatu berriz"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi ainguraketak bateria gehiago kontsumitzen du eta zure datuen erabilera areagotzen du. Jarraitu?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Desgaitu ainguraketa Wi-Fi erabiltzeko"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Bateria aurrezteko modua gaitzeko, gaitu funtzio nagusi bat gutxienez"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Itzali Wi-Fia ainguraketa erabiltzeko"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi eta Mobile AP ezin dira aldi berean aktibatu. Desaktibatu Mobile AP?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Pantaila Islatzea"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Ordeztu ezarpen azkarraren botoia"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Gehitu ezarpen azkarraren botoia"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Aurrerantzean ezingo duzu Internet eta Posta elektronikoa gisako aplikazioak erabili sare mugikorren bidez. Jarraitu?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Botoia"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Jakinaraz."
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Ados"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Ez nago ados"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS kokapena eta zure kokapen datuen erabilera zuk erabiltzen duzun aplikazioak kontrolatzen ditu"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Erabiltzaile baimena"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Soinua"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Datu\nmugik."
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Hegaldia\nmodua"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Egonal.\nazkarra"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Bateria\naurrez."
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Isilarazi"
+
diff --git a/po/fi.po b/po/fi.po
new file mode 100755 (executable)
index 0000000..e2a6a20
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Ilmoitukset"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Vain hätäpuhelut"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Kierto"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Ilmoitukset (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Värinä"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Ääni ja värinä"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Autom. kierto"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Kierron lukitus"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Massamuistitila"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Ei käyt."
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Päälle"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Ei tuettu"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Hylkää"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Pääset verkkopalveluihin asettamalla SIM-kortin paikalleen"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Älä kysy uudelleen"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Aseta SIM-kortti ja käynnistä laite uudelleen yhteyden jakamista varten"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Pakettidatan kautta yhdistämisestä voidaan periä lisämaksuja. Jatketaanko?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Virransäästö"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Yhteyden jako"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobiilidata"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Ajotila"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Matkapuhelinverkkoihin ei voi ottaa yhteyttä, kun lentotila on käytössä. Muodosta sen sijaan yhteys Wi-Fi-verkon kautta tai poista lentotila käytöstä ja yritä uudelleen"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi-yhteyden jakaminen kuluttaa enemmän virtaa ja lisää datan käyttöä. Jatketaanko?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Poista yhteyden jakaminen käytöstä Wi-Fin käyttöä varten"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Jos haluat ottaa virransäästötilan käyttöön, ota ainakin yksi olennainen toiminto käyttöön"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Poista Wi-Fi käytöstä yhteyden jakamista varten"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fiä ja mobiilitukiasemaa ei voi ottaa käyttöön samaan aikaan. Haluatko poistaa mobiilitukiaseman käytöstä?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Näytön peilaus"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Vaihda pika-asetuspainike"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Lisää pika-asetuspainike"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Et enää voi käyttää sovelluksia, kuten Internetiä ja sähköpostia, matkapuhelinverkkojen kautta. Jatketaanko?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Painike"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Ilmoitus"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Hyväksyn"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Eri mieltä"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "Käytettävät sovellukset säätelevät GPS-sijaintia ja sijaintitietojen käyttöä"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Käyttäjän suostumus"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Ääni"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobiilidata"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Lento-\ntila"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Älykäs\nkatkaisu"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Virran-\nsäästö"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Yhteys"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Mykistä"
+
diff --git a/po/fr_CA.po b/po/fr_CA.po
new file mode 100755 (executable)
index 0000000..1ff80fa
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notifications"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Appels d'urgence uniquement"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotation"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Notifications (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibreur"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Son et vibreur"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Rotation auto"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Verr. rotation"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Mode stockage de masse"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Désactiver"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Activer"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Non pris en charge"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Ignorer"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insérez une carte SIM pour accéder aux services réseau"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Ne plus demander"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Insérez une carte SIM et redémarrez l'appareil pour utiliser le modem"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "La connexion via des données par paquet peut entrainer des frais supplémentaires. Continuer ?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Économie d'énergie"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Fonction modem"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Données mobiles"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Mode Voiture"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Impossible de se connecter aux réseaux mobiles lorsque le mode Hors-ligne est activé. Connectez-vous au réseau Wifi à la place ou désactivez le mode Hors-ligne et réessayez"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Le modem Wifi consomme plus d'énergie et augmente l'utilisation des données. Continuer ?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Désactivez le modem pour utiliser le Wifi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Pour activer le mode Économie d'énergie, activez au moins une fonction appropriée"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Désactivez le Wifi pour utiliser le modem"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Activation simultanée de wifi et du point d'accès mobile impossible. Désactiver le point d'accès mobile ?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Réplication de l'écran"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Remplacer un bouton de configuration rapide"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Ajouter une option de configuration rapide"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Vous ne pourrez plus utiliser les applications telles qu'Internet et la messagerie via les réseaux mobiles. Continuer ?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Bouton"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notific."
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Accepter"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Refuser"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "La position GPS et l'utilisation des données de votre position sont contrôlées par les applications que vous utilisez"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Accord de l'utilisateur"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Son"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Données\nmobiles"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Mode\nHors-ligne"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Veille\nintell."
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Éco.\nénergie"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Modem"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Muet"
+
diff --git a/po/fr_FR.po b/po/fr_FR.po
new file mode 100755 (executable)
index 0000000..3d20a60
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notifications"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Appels d'urgence uniquement"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotation"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Notifications (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibreur"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Son et vibreur"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Rotation auto"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Désactiver\nrotation"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Mode stockage de masse"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Désactiv."
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Activer"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Non pris en charge"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Ignorer"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insérez une carte SIM pour accéder aux services réseau"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Ne plus demander"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Insérez une carte SIM et redémarrez l'appareil pour utiliser le modem"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Les connexions de données peuvent entraîner des frais supplémentaires. Continuer ?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto."
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Économie d'énergie"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Fonction modem"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Données mobiles"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Profil Voiture"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Impossible de se connecter aux réseaux mobiles lorsque le mode Hors-ligne est activé. Connectez-vous au réseau Wi-Fi à la place ou désactivez le mode Hors-ligne et réessayez"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Le modem Wi-Fi consomme plus d'énergie et augmente l'utilisation des données. Continuer ?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Désactivez le modem pour utiliser le Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Pour activer le mode Économie d'énergie, activez au moins une fonction appropriée"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Désactivez le Wi-Fi pour utiliser le modem"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Activation simultanée du Wi-Fi et du point d'accès mobile impossible. Désactiver le point d'accès mobile ?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Remplacer un bouton de configuration rapide"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Ajouter une option de configuration rapide"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Vous ne pourrez plus utiliser les applications telles qu'Internet et la messagerie via les réseaux mobiles. Continuer ?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Touche"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notific."
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Accepter"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Refuser"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "La position GPS et l'utilisation des données de votre position sont contrôlées par les applications que vous utilisez"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Accord de l'utilisateur"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Son"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Données\nmobiles"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Mode\nHors-ligne"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Smart\nStay"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Éco.\nénergie"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Modem"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Muet"
+
diff --git a/po/ga.po b/po/ga.po
new file mode 100755 (executable)
index 0000000..baff52e
--- /dev/null
+++ b/po/ga.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Fógraí"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Glaonna éigeandála amháin"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rothlú"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Fógraí (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Crith"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Fuaim & crith"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Uathrothlú"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Glas rothl."
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Mód ollstórála"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Díchumasú"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Cumasaigh"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Gan tacú"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Ruaig"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Ionsáigh cárta SIM le seirbhísí líonra a rochtain"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Ná hiarr arís"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Ionsáigh cárta SIM agus atosaigh an gléas le nascaireacht a úsáid"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Is féidir go ngearrfar táillí breise ar nascadh le sonraí pacáiste. Ar aghaidh?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Uath-"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Coigilt chumhachta"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Ag déanamh teaghráin"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Sonraí móibíleacha"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Mód tiomána"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Ní féidir nascadh le líonraí móibíleacha agus mód Eitilte cumasaithe. Nasc le líonra Wi-Fi, nó díchumasaigh mód Eitilte agus triail arís é"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Ídíonn nascaireacht Wi-Fi níos mó cumhacht ceallra agus méadaíonn úsáid do shonraí. Ar aghaidh?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Díchumasaigh nascaireacht le Wi-Fi a úsáid"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Cumasaigh feidhm ábhartha amháin ar a laghad le Mód coigilte cumhachta a chumasú"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Cas as Wi-Fi le nascaireacht a úsáid"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Ní féidir Wi-Fi agus AP Móibíleach a chur i ngníomh ag an am céanna. Díghníomhachtaigh AP Móibíleach?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Scáthánú Scáileáin"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Ionadaigh cnaipe mear-shocruithe"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Cuir cnaipe mear-shocruithe leis"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Ní bheidh tú in ann feidhmchláir amhail Idirlíon agus R-phost a úsáid a thuilleadh le líonraí móibíleacha. Ar aghaidh?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Cnaipe"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Fógra"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Aontaim"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Ní aontaím"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "Tá suíomh GPS agus úsáid sonraí do shuímh á rialú ag na feidhmchláir a úsáideann tú"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Toiliú úsáideora"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Fuaim"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Sonraí\nmóibíl."
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Mód\neitilte"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Fanacht\ncliste"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Coigilt\nchumh."
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Nascaireacht"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Balbh"
+
diff --git a/po/gl.po b/po/gl.po
new file mode 100755 (executable)
index 0000000..f485233
--- /dev/null
+++ b/po/gl.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notificacións"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Só chamadas de urxencia"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotación"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Notificacións (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibración"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Son e vibración"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Rotación aut"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Reloxo de rotación"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Modo almacenamento masivo"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Desactivar"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Activar"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Non admitido"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Rexeitar"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insira a tarxeta SIM para acceder aos servizos de rede"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Non preguntar outra vez"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Insire a tarxeta SIM e reinicia o dispositivo para usar a ancoraxe á rede"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Conectarse a través do paquete de datos pode carrexar custos adicionais. Continuar?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Aforro de enerxía"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Ancoraxe á rede"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Datos móbiles"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Modo conducir"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Non se pode conectar con redes móbiles co modo de avión activado. Conéctate a unha rede Wi-Fi no seu lugar ou desactiva o modo de avión e téntao de novo"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "A ancoraxe á rede Wi-Fi consume máis batería e incrementa o uso de información. Continuar?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Desactiva a ancoraxe á rede para usar a Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Para activar o modo de aforro de enerxía, activa polo menos unha función relevante"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Desactiva a Wi-Fi para usar a ancoraxe á rede"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "O Wi-Fi e AP Móbil non poden activarse ao mesmo tempo. Desactivar AP Móbil?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Reflexo da pantalla"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Substitúe o botón de axuste rápido"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Engade botón de axuste rápido"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Non poderás continuar utilizando aplicacións como Internet e Correo electrónico a través de redes móbiles. Desexas continuar?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Botón"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notific."
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Acepto"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Non acepto"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "A localización e o uso dos datos da túa localización están controlados polas aplicacións que empregas"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Consentimento de usuario"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Son"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Datos\nmóbiles"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Modo\navión"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Smart\nstay"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Aforro\nenerxía"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Silenc."
+
diff --git a/po/hi.po b/po/hi.po
new file mode 100755 (executable)
index 0000000..d698e6e
--- /dev/null
+++ b/po/hi.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "अधिसूचनाएँ"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "ऑलशेयर कास्ट"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "केवल आपात कॉलें"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "रोटेशन"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "सूचनाएँ (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "कंपन"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "ध्वनि और कंपन"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "ऑटो रोटेशन"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "रोटेशन लॉक"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "मास स्टोरेज मोड"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "अक्षम करें"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "सक्षम करें"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "असमर्थित"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "निरस्त"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "नेटवर्क सेवाएँ प्राप्त करने के लिए SIM कार्ड डालें"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "दोबारा न पूछें"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "टेथरिंग का उपयोग करने के लिए SIM कार्ड सम्मिलित करें और डिवाइस रीस्टार्ट करें"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "पैकेट डाटा द्वारा कनेक्ट करने के लिए अतिरिक्त शुल्क लग सकते हैं। जारी रखें?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "स्वत:"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "पॉवर बचत"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "टेथरिंग"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "मोबाइल डाटा"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "ड्राइविंग मोड"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "फ़्लाइट मोड सक्षम होने के दौरान मोबाइल नेटवर्क से कनेक्ट करने में अक्षम। इसके बजाय Wi-Fi नेटवर्क से कनेक्ट करें, या फ़्लाइट मोड अक्षम करें और फिर से प्रयास करें।"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi टेथरिंग बैटरी पॉवर की ज्यादा खपत करता है और आपके डाटा उपयोग को बढ़ाता है। जारी रखें?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Wi-Fi का उपयोग करने के लिए टेथरिंग अक्षम करें"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "पॉवर सेविंग मोड सक्षम करने के लिए, कम से कम एक संबंधित फ़ंक्‍शन सक्षम करें"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "टेथरिंग का उपयोग करने के लिए Wi-Fi बंद करें"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "एक ही समय में Wi-Fi और Mobile AP सक्रिय नहीं कर सकते हैं। Mobile AP निष्क्रिय करें?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "स्क्रीन मिररिंग"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "त्वरित सेटिंग्स बटन बदलें"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "त्वरित सेटिंग बटन जोड़ें"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "अब आप मोबाइल नेटवर्क्स के द्वारा इंटरनेट और ईमेल जैसी ऐप्लीकेशन का उपयोग नहीं कर पाएँगे। जारी रखें?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "बटन"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "अधिसूचना"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "सहमत"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "असहमती"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS स्थान और आप के स्थान डाटा का उपयोग आप के द्वारा उपयोगित एप्लीकेशंस नियंत्रित करते हैं"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "उपभोक्ता स्वीकृति"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "ध्वनि"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "मोबाइल\nडाटा"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "फ़्लाइट\nमोड"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "स्मार्ट\nस्टे"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "पॉवर\nबचत"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "टेथरिंग"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "मूक"
+
diff --git a/po/hr.po b/po/hr.po
new file mode 100755 (executable)
index 0000000..d308ada
--- /dev/null
+++ b/po/hr.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Obavijesti"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Samo SOS pozivi"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotacija"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Obavijesti (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibracija"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Zvuk i vibracije"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Auto. rotacija"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Zaklj. rotacije"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Način masovne memorije"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Isključi"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Uključi"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Nepodržano"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Prekini"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Umetnite SIM karticu za pristup mrežnim uslugama"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Više ne pitaj"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Umetnite SIM karticu i pokrenite uređaj da biste koristili dijeljenje"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Spajanje preko paketnih podataka može izazvati dodatne troškove. Nastaviti?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Štednja baterije"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Dijeljenje veze"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobilni podaci"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "U vožnji"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Nemoguće spojiti se na mobilne mreže dok je uključen profil Bez mreže. Umjesto toga spojite se na Wi-Fi mrežu ili isključite profil Bez mreže i pokušajte ponovno"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi dijeljenje povećava potrošnju baterije i količinu prijenosa podataka. Nastavak?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Isključite dijeljenje da biste koristili Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Da biste uključili štednju baterije, uključite najmanje jednu odgovarajuću funkciju"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Isključite Wi-Fi da biste koristili dijeljenje"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Istodobno ne možete uključiti Wi-Fi i Mobile AP. Isključiti Mobilnu pristupnu točku?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Dijeljenje Zaslona"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Zamijeni gumb za brze postavke"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Dodaj gumb za brze postavke"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Nećete više moći koristiti aplikacije kao što su internet i email putem mobilnih mreža. Nastavak?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Dijeljenje\nZaslona"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Tipka"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Obavijest"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Prihvaćam"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Ne prihvaćam"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS lokacija i korištenje vaših podataka o lokaciji kontrolira se aplikacijama koje koristite"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Pristanak korisnika"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Zvuk"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobilni\npodaci"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Profil\nBez mr."
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Pametno\nmirovanje"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Štednja\nbaterije"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Bešumno"
+
diff --git a/po/hu.po b/po/hu.po
new file mode 100755 (executable)
index 0000000..c4efb92
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Értesítések"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Csak segélyhívás indítható"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Forgatás"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Értesítések (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Rezgés"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Hang és rezgés"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Aut. elforg."
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Tájolás rögz."
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Háttértár mód"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Kikapcsol"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Engedélyezés"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Nem támogatott"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Elutasít"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Hálózati szolgáltatások eléréséhez helyezze be a SIM kártyát"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Máskor ne legyen kérdés"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Az internetmegosztás használatához helyezzen be SIM kártyát, és indítsa újra az eszközt"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Az adatkapcsolatért a szolgáltató további költségeket számíthat fel. Folytatja?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto."
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Energiatakarékosság"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Internetmegosztás"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobil adatok"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Vezetés mód"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Amíg a Repülő üzemmód be van kapcsolva, nem lehet a mobilhálózathoz kapcsolódni. Kapcsolódjon Wi-Fi hálózathoz, vagy tiltsa le a Repülő üzemmódot, és próbálja újra"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "A Wi-Fi internetmegosztás használata gyorsan meríti az akkumulátort, és nagyobb adatforgalmat eredményez. Folytatja?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "A Wi-Fi használatához tiltsa le az internetmegosztást"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Az Energiatakarékos mód engedélyezéséhez legalább egy releváns funkciót engedélyezzen"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Az internetmegosztás használatához kapcsolja ki a Wi-Fi-t"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "A Wi-Fi és a Mobil AP-nem lehet egyszerre aktív. Kikapcsolja a Mobil AP-t?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Képernyőtükrözés"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Gyorsbeállító gomb cseréje"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Gyorsbeállító gomb hozzáadása"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Nem lesz lehetséges az olyan alkalmazások használata a mobilhálózaton keresztül, mint az Internet vagy az E-mail. Folytatja?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Gomb"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Értesítés"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Elfogad"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Elutasít"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "A GPS helymeghatározást és a pozícióadatot az Ön által használt alkalmazások vezérlik"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Felhasználói beleegyezés"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Hang"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobil\nint.kap."
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Repülő\nüzemmód"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Intell.\nkép.zár"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Energia-\ntakarék."
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Némít"
+
diff --git a/po/hy.po b/po/hy.po
new file mode 100755 (executable)
index 0000000..c996d6a
--- /dev/null
+++ b/po/hy.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Ծանուցումներ"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Միայն հրատապ կանչեր"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Պտտում"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Ծանուցումներ (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Թրթռում"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Ձայն և թրթռում"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Ինքնապտտում"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Պտտման կողպում"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Զանգվածային պահոցի ռեժիմ"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Կասեցնել"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Ակտիվացնլ"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Չսատարվող"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Չղրկլ"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Տեղադրեք SIM քարտը՝ ցանցային ծառայություններ մտնելու համար"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Այլևս չհարցնել"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Մտցնել SIM քարտ և վերագործարկել սարքը՝ տեղակապում օգտագործելու համար"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Փաթեթային տվյալների միջոցով միացումը կարող է լրացուցիչ վճար պահանջել: Շարունակե՞լ:"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Ավտոմատ"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Էներգիայի խնայում"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Տեղակապում"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Շարժական տվյալներ"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Վարման ռեժիմ"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Անհնար է միանալ շարժական կապի ցանցերին, երբ Թռիչքային ռեժիմն ընձեռված է: Փոխարենը միացեք Wi-Fi ցանցին կամ կասեցրեք Թռիչքային ռեժիմն ու նորից փորձեք"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi տեղակապումը մարտկոցի ավելի շատ էներգիա է սպառում և ավելացնում է տվյալների օգտագործումը. շարունակե՞լ:"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Կասեցրեք տեղակապումը՝ Wi-Fi-ից օգտվելու համար"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Էներգիայի խնայման ռեժիմն ընձեռելու համար ընձեռեք առնվազն մեկ համապատասխան գործառույթ"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Անջատեք Wi-Fi-ը՝ տեղակապում օգտագործելու համար"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi-ն ու Mobile AP-ն չեն կարող միաժամանակ ակտիվացվել: Ապաակտիվացնե՞լ Mobile AP-ն:"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Փոխարինել արագ դրվածքների կոճակը"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Ավելացնել արագ դրվածքների կոճակ"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Դուք այլևս չեք կարողանա շարժական կապի ցանցերի միջոցով օգտագործել այնպիսի ծրագրեր, ինչպիսիք են Ինտերնետը և Էլփոստը. շարունակե՞լ:"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Կոճակ"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Ծանուցում"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Հմձայն եմ"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Առարկել"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS-ի տեղն ու Ձեր տեղի տվյալները վերահսկվում են Ձեր օգտագործած ծրագրերով"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Օգտվողի համաձայնություն"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Հնչյուն"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Շարժ.\nտվյալներ"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Թռիչքային\nռեժիմ"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Խելացի\nհապաղում"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Էներգ.\nsխնայում"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Տեղակապում"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Անձայն"
+
diff --git a/po/is.po b/po/is.po
new file mode 100755 (executable)
index 0000000..6f110a8
--- /dev/null
+++ b/po/is.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Tilkynningar"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Aðeins neyðarhringingar"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Snúa"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Tilkynningar (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Titringur"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Hljóð og titringur"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Sjálfv. snún."
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Snún.lás"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Gagnageymslustilling"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Slökkva"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Gera virkt"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Óstutt"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Sleppa"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Setjið SIM kort í til að fá aðgang að netþjónustu"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Ekki spyrja aftur"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Settu inn SIM-kort og endurræstu tækið til að nota tjóðrun"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Gjald kann að vera tekið fyrir pakkagagnatengingu. Viltu halda áfram?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Sjálfvirkt"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Orkusparnaður"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Sími sem netaðgangsstaður"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Farsímagögn"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Akstursstilling"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Ekki hægt að tengjast farsímagögnum þegar kveikt er á flugstillingu. Tengdu við Wi-Fit net í staðinn, eða slökktu á flugstillingu og reyndu aftur"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi tjóðrun notar meiri orku og eykur gagnaflutning. Halda áfram?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Slökktu á tjóðrun til að nota Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Til að kveikja á orkusparnaðarstillingu þarftu að kveikja á minnst einni tengdri aðgerð"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Slökktu á Wi-Fi til að nota tjóðrun"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Það er ekki hægt að nota Wi-Fi og farsímaaðgangsstað á sama tíma. Viltu loka farsímaaðgangsstaðnum?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Skjáspeglun"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Skipta flýtistillingahnappi út"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Bæta við flýtistillingahnappi"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Þú munt ekki lengur geta notað forrit eins og netið og tölvupóst í gegnum farsímakerfi. Viltu halda áfram?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Hnappur"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Tilkynning"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Samþykkt"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Hafna"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS-staðsetningu og notkun á staðsetningargögnum þínum er stjórnað af þeim forritum sem þú notar"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Samþykki notanda"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Hljóð"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Farsíma-\ngögn"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Flug-\nstilling"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Snjall-\ndvöl"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Orku-\nsparn."
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tjóðrun"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Hljóð af"
+
diff --git a/po/it_IT.po b/po/it_IT.po
new file mode 100755 (executable)
index 0000000..471b918
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notifiche"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Solo chiamate di emergenza"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Ruota"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Notifiche (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibraz."
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Suono e vibraz."
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Rotazione\nauto"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Blocco rotazione"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Modalità archiv. di massa"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Disattiva"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Attiva"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Non supportato"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Rifiuta"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Inserite una scheda SIM per accedere ai servizi di rete"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Non chiedere di nuovo"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Inserire la scheda SIM e riavviare il dispositivo per utilizzare il tethering"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "La connessione a pacchetti dati può determinare costi aggiuntivi. Continuare?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Risparmio energetico"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Connessione dati"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Modalità alla Guida"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Impossibile connettersi alle reti mobili se la modalità Offline è attivata. Connettersi alla rete Wi-Fi o disattivare la modalità Offline e riprovare"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Il tethering Wi-Fi aumenta il consumo della batteria e l'uso dei dati. Continuare?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Per utilizzare il Wi-Fi, disattivate il tethering"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Per attivare la modalità Risparmio energetico, attivate almeno una funzione pertinente"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Per utilizzare il tethering, disattivate il Wi-Fi"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Impossibile attivare contemporaneamente sia Wi-Fi che Router Wi-Fi. Disattivare Router Wi-Fi?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Condivisione schermo"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Sostituisce il pulsante di impostazione rapida"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Aggiungete il pulsante di impostazione rapida"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Non potrete più utilizzare applicazioni quali Internet ed E-mail con connessione dati. Continuare?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Condiv.\nSchermo"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Pulsante"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notifica"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Accetto"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Rifiuto"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "La posizione GPS e l'uso dei dati sulla posizione sono controllati dalle applicazioni utilizzate"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Consenso utente"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Suono"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Conn.\ndati"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Mod.\noffline"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Standby\nintell."
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Risparmio\nenergia"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Muto"
+
diff --git a/po/ja_JP.po b/po/ja_JP.po
new file mode 100755 (executable)
index 0000000..56a90cc
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "通知"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "緊急通報のみ発信可能です。"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "回転"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "通知(%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "バイブ"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "サウンドとバイブ"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "画面回転"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "回転ロック"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "マスストレージモード"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "無効"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "有効"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "未対応です"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "無効"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "ネットワークサービスを利用するにはSIMカードを挿入してください。"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "今後表示しない"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "テザリングを使用するには、SIMカードを挿入し、端末を再起動してください。"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "モバイルデータを使用すると、追加料金が発生する可能性があります。続行しますか?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "自動"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "省電力"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "テザリング"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "モバイル​データ"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "クルマ​モード"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "機内モードが有効な間は、モバイルネットワークに接続できません。代わりにWi-Fiネットワークに接続するか、機内モードを無効にして、再度実行してください。"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fiテザリングはバッテリーをより多く消費し、データ使用量が増加します。続行しますか?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Wi-Fiを使用するには、テザリングを無効にしてください。"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "省電力モードを有効にするには、少なくとも1つの関連機能を選択してください。"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "テザリングを使用するには、Wi-FiをOFFにしてください。"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-FiとWi-Fiテザリング両方は同時起動できません。Wi-Fiテザリングを無効にしますか?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "クイック設定ボタンを置き換え"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "クイック設定ボタンを追加"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "モバイルネットワークで、ブラウザやEメールなどのアプリケーションが使用できなくなります。続行しますか?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "ボタン"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "通知"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "同意"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "同意しない"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPSからの位置情報取得は、使用するアプリケーションによって管理されます。"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "ユーザー同意"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "サウンド"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "モバイル​データ"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "機内モード"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "スマート\nステイ"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "省電力"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "テザリング"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "サイレント"
+
diff --git a/po/ka.po b/po/ka.po
new file mode 100755 (executable)
index 0000000..dfbbdba
--- /dev/null
+++ b/po/ka.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "შეტყობინებები"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "მხოლოდ გადაუდებელი ზარები"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "ბრუნვა"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "შეტყობინებები (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "ვიბრაცია"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "ხმა და ვიბრაცია"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "ავტო. მობრუნება"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "ბრუნვის დაბლოკვა"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "მასიური მეხსიერების რეჟ."
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "გამორთვა"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "გააქტიურება"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "გაუთვალისწინებელი"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "უარყოფა"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "ქსელის მომსახურების მისაღებად ჩასვით SIM ბარათი"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "აღარ მკითხო"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "ჩადეთ SIM და გადატვირთეთ აპარატი, რომ გამოიყენოთ მობილური ინტერნეტი კომპიუტერში"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "მონაცემთა პაკეტით კავშირისთვის შეიძლება დამატებითი გადასახადი იყოს. განაგრძობთ?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "ავტომატური"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "ენერგიის დაზოგვა"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "მიბმა"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "მობილური მონაცემები"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "მანქანის მართვის რეჟიმი"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "მობილურ ქსელებს ვერ დაუკავშირდებით, სანამ ჩართულია ფრენის რეჟიმი. სანაცვლოდ, დაუკავშირდით Wi-Fi ქსელს, ან გამორთეთ ფრენის რეჟიმი და ისევ ცადეთ"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi მობილური ინტერნეტი ხარჯავს უფო მეტ ენერგიას და ზრდის მონაცემთა გამოყენებას. განაგრძობთ?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "გამორთეთ მობილური ინტერნეტი კომპიუტერში, რომ ჩართოთ Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "ენერგიის დაზოგვის რეჟიმის გასააქტიურებლად, ჩართეთ მინიმუმ ერთი შესაბამისი ფუნქცია"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "გამორთეთ Wi-Fi, რომ გამოიყენოთ მობილური ინტერნეტი კომპიუტერში"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi და Mobile AP ვერ გააქტიურდება ერთიდაიმავე დროს. გამოირთოს Mobile AP?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "პარამეტრების სწრაფი დაყენების ღილაკის გამოცვლა"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "პარამეტრების სწრაფი დაყენების ღილაკის დამატება"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "მობილური ქსელებით ვეღარ შეძლებთ ისეთი პროგრამების გამოყენებას, როგორიცაა ინტერნეტი და ელ.ფოსტა. განაგრძობთ?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "ღილაკი"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "შეტყობინება"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "თანხმობა"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "არ ვეთანხმები"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS ლოკაცია და თქვენი ლოკაციის მონაცემების გამოყენება იმართება თქვენს მიერ გამოყენებული პროგრამების მიერ"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "მომხმარებლის თანხმობა"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "ხმა"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "მობილ.\nმონაცემ."
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "ფრენის\nრეჟიმი"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "სმართ-\nგაჩერება"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "დაზოგეთ\nენერგია"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "უხმო"
+
diff --git a/po/kk.po b/po/kk.po
new file mode 100755 (executable)
index 0000000..9a14e5a
--- /dev/null
+++ b/po/kk.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Хабарландыру"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Тек жедел қоңырау  үшін"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Бұру"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Мәлімдемелер (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Діріл"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Дыбыс және діріл"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Авто бұру"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Бұруды құлыптау"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Жалпы сақтау режимі"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Өшіру"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Қосу"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Қолдаусыз"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Қабылдамау"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Желі қызметтеріне өту үшін SIM картасына салу"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Қайтадан сұрамаңыз"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "SIM картасын салып, байланыстыруды пайдалану үшін құрылғыны өшіріп қосыңыз"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Пакет деректері арқылы қосылуға қосымша ақылардың алынуы мүмкін. Жалғастыру керек пе?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Авто"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Қуат үнемдеу"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Шектеу"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Ұялы деректер"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Жүргізу режимі"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Ұшу режимі қосылғанда ұялы байланыс желілеріне қосылу мүмкін емес. Оның орнына Wi-Fi желісіне қосылыңыз немесе ұшу режимін өшіріңіз, сосын әрекетті қайталап көріңіз"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi байланыстыру батарея зарядын көп пайдаланып, деректеріңіздің пайдаланылуын арттырады. Жалғастыру керек пе?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Wi-Fi пайдалану үшін байланыстыруды өшіріңіз"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Қуат үнемдеу режимін қосу үшін кемінде бір тиісті функцияны қосыңыз"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Байланыстыруды пайдалану үшін Wi-Fi өшіріңіз"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi және Mobile AP екеуін де бір уақытта іске қосу мүмкін емес. Mobile AP мүмкіндігін өшіру керек пе?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Жылдам параметр түймесін ауыстыру"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Жылдам параметр түймесін қосу"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Интернет және электрондық пошта сияқты бағдарламаларды ұялы байланыс желілері арқылы енді пайдалана алмайсыз. Жалғастыру керек пе?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Түйме"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Хабарландыру"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Келісемін"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Келіспеу"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS орны және орын деректерін пайдалану қолданыстағы бағдарламалармен бақыланады"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Пайдаланушы келісімі"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Дыбыс"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Ұялы\nдеректер"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Ұшу\nрежимі"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Смарт\nқалу"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Қуат\nүнемдеу"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Шектеу"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Дыбыссыз"
+
diff --git a/po/ko_KR.po b/po/ko_KR.po
new file mode 100755 (executable)
index 0000000..d2c2be9
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "알림"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "긴급전화만 가능합니다"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "회전"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "알림(%d개)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "진동"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "소리 및\n진동"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "자동 회전"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "회전 잠금"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "이동식 메모리 모드"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "차단"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "허용"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "지원되지 않습니다"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "해제"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "네트워크 서비스를 이용하려면 SIM을 삽입하세요"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "다시 묻지 않기"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "테더링을 이용하려면 SIM 카드를 삽입하고 디바이스를 다시 시작하세요"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "패킷 데이터로 연결하면 요금이 발생할 수 있습니다. 계속할까요?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "자동"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "절전 모드"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "테더링"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "모바일 데이터"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "운전 모드"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "비행기 탑승 모드가 실행 중에는 모바일 네트워크에 연결할 수 없습니다. Wi-Fi 네트워크에 연결하거나 비행기 탑승 모드를 해제한 후 다시 시도하세요."
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi 테더링을 사용하면 배터리가 많이 소모되며 데이터 사용량이 증가합니다. 계속할까요?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Wi-Fi를 사용하려면 테더링을 끄세요"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "절전 모드를 실행하려면 최소 하나 이상의 관련 기능을 선택하세요"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "테더링을 사용하려면 Wi-Fi를 끄세요"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi와 모바일 AP를 동시에 실행할 수 없습니다. 모바일 AP를 해제할까요?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "빠른 설정 버튼 교체"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "빠른 설정 버튼 추가"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "모바일 네트워크를 통해 인터넷, 이메일 등의 애플리케이션을 사용할 수 없게 됩니다. 계속할까요?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "버튼"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "알림"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "동의"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "동의 안 함"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS 위치와 위치 정보 사용은 사용 중인 애플리케이션의 통제를 받습니다"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "사용자 동의"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "소리"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "모바일\n데이터"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "비행기\n탑승 모드"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "스마트\n스테이"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "절전\n모드"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "테더링"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "음소거"
+
diff --git a/po/lt.po b/po/lt.po
new file mode 100755 (executable)
index 0000000..a17e37f
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Pranešimai"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Tik pagalbos skambučiai"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotacija"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Pranešimai (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibracija"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Garsas ir vibrac."
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Aut. suk."
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Sukamasis užraktas"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Duomenų saugyklos režimas"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Išjungti"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Įjungti"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Nepalaikoma"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Nutraukti"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Įdėkite SIM kortelę, kad galėtumėte  naudotis tinklo paslaugomis"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Neklauskite dar kartą"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Norėdami naudoti siejimą, įdėkite SIM kortelę ir paleiskite įrenginį iš naujo"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Jungiantis paketinių duomenų perdavimo ryšiu gali būti taikomi papildomi mokesčiai. Tęsti?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Energijos taupymas"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Siejama"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobilieji duomenys"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Vairavimo režimas"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Neįmanoma prisijungti prie mobiliųjų tinklų, kol įjungtas skrydžio režimas. Vietoj to prisijunkite prie „Wi-Fi“ tinklo arba išjunkite skrydžio režimą ir pabandykite dar kartą"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Esant įjungtam „Wi-Fi“ siejimui, suvartojama daugiau akumuliatoriaus energijos ir padidėja duomenų naudojimas. Tęsti?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Išjunkite siejimą, kad galėtumėte naudoti „Wi-Fi“"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Jei norite įjungti energijos taupymo režimą, suaktyvinkite bent vieną atitinkamą funkciją"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Išjunkite „Wi-Fi“, kad galėtumėte naudoti siejimą"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Tuo pat metu negalima suaktyvinti ir „Wi-Fi“, ir „Mobile AP“. Išjungti „Mobile AP“?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Pakeisti greitojo nustatymo mygtuką"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Pridėti greitojo nustatymo mygtuką"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Daugiau nebegalėsite per mobiliuosius tinklus naudotis tokiomis programomis kaip internetas ir el. paštas. Tęsti?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Mygtukas"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Pranešimas"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Sutikti"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Nesutikti"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "Vietos nustatymą naudojant GPS ir jūsų vietos duomenis kontroliuoja jūsų naudojamos programos"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Naudotojo sutikimas"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Garsas"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mob.\nduomenys"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Skrydžio\nrežim."
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Išman.\nlaukimas"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Energ.\ntaupymas"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Siejama"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Nutil."
+
diff --git a/po/lv.po b/po/lv.po
new file mode 100755 (executable)
index 0000000..2cebe2e
--- /dev/null
+++ b/po/lv.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Paziņojumi"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Tikai ārkārtas zvani"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Pagrieš."
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Paziņojumi (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibrācija"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Skaņa un vibrācija"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Autom. pagriezt"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Pagr. bloķ."
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Lielapjoma atmiņas režīms"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Deaktiviz."
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Aktivizēt"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Neatbalstīts"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Noraidīt"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Lai piekļūtu tīkla pakalpojumiem, ievietojiet SIM karti"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Vairs nevaicāt"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Lai lietotu piesaisti, Ievietojiet SIM karti un restartējiet tālruni"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Par savienojuma izveidi, izmantojot pakešu datus, var tikt piemērota papildu maksa. Vai turpināt?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Enerģijas taupīšana"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Ierīces piesaiste tālrunim"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobilie dati"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Braukšanas režīms"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Nevar izveidot savienojumu ar mobilajiem tīkliem, kamēr ir aktivizēts lidojuma režīms. Tā vietā izveidojiet savienojumu ar Wi-Fi tīklu vai deaktivizējiet lidojuma režīmu un mēģiniet vēlreiz"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi piesaiste patērē daudz akumulatora enerģijas un palielina datu lietošanas apjomu. Vai turpināt?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Lai izmantotu Wi-Fi, deaktivizējiet piesaisti"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Lai aktivizētu enerģijas taupīšanas režīmu, aktivizējiet vismaz vienu atbilstošu funkciju"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Lai izmantotu piesaisti, izslēdziet Wi-Fi"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Vienlaikus nevar aktivizēt Wi-Fi un Mobile AP. Vai deaktivizēt Mobile AP?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Aizstāt ātro iestatījumu pogu"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Pievienot ātro iestatījumu pogu"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Jūs vairs nevarēsit lietot atsevišķas programmas, piemēram, interneta pārlūkprogrammas un e-pastu, izmantojot mobilos tīklus. Vai turpināt?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Poga"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Paziņojums"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Piekrist"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Nepiekrītu"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS atrašanās vietu un jūsu atrašanās vietas datu izmantošanu pārvalda jūsu lietotās programmas"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Lietotāja piekrišana"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Skaņa"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobilie\ndati"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Lidojuma\nrežīms"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Viedā\nsekošana"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Enerģijas\ntaup."
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Piesaiste"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Izsl. sk."
+
diff --git a/po/mk.po b/po/mk.po
new file mode 100755 (executable)
index 0000000..811eaeb
--- /dev/null
+++ b/po/mk.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Известувања"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Само итни повици"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Заврт."
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Известувања (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Вибрации"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Звук и вибрации"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Автом. вртење"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Закл. вртење"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Режим за надвор. меморија"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Исклучи"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Вклучи"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Неподдржано"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Откажи"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Вметнете SIM-картичка за да пристапите кон мрежните услуги"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Не прашувај веќе"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Вметнете SIM-картичка и рестартирајте го уредот за да го користите делењето"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "За поврзување преку пакетни податоци може да се наплаќа дополнително. Сепак продолжи?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Автоматски"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Штедење енергија"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Споделување"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Мобилни податоци"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Режим за возење"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Не може да се поврзе со мобилни мрежи додека е вклучен режим за летало. Поврзете се со мрежа Wi-Fi или исклучете го режимот за летало и обидете се повторно"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Делењето Wi-Fi троши повеќе батерија и го зголемува користењето податоци. Сепак продолжи?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Исклучете делење за да користите Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "За да вклучите Режим за штедење енергија, вклучете барем една релевантна функција"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Исклучете го Wi-Fi за да користите делење"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Не може истовремено да се активни и Wi-Fi и мобилна пристапна точка. Да се исклучи мобилната пристапна точка?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Одразување екран"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Замени копче за брзо поставување"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Додавање копче за брзо поставување"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Веќе нема да можете да користите апликации како интернет и Email преку мобилни мрежи. Продолжи?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Копче"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Извест."
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Добро"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Не се согласувам"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "Локацијата GPS и користењето на податоците за вашата локација ги контролираат апликациите што ги користите"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Согласност на корисникот"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Звук"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Мобилни\nподатоци"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Режим\nза летало"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Паметно\nмирув."
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Штедење енергија"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Поврзување"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Иск.мик"
+
diff --git a/po/nb.po b/po/nb.po
new file mode 100755 (executable)
index 0000000..b1d153e
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Varsler"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Kun nødanrop"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotasjon"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Varsler (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibrasjon"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Lyd og vibrasjon"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Auto- rotasjon"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Rotasjons-lås"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Masselagringsmodus"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Deaktiver"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Aktiver"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Støttes ikke"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Stopp"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Sett inn SIM-kort for å få tilgang til nettverkstjenester"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Ikke spør på nytt"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Sett inn SIM-kort og start enheten på nytt for å bruke Internettdeling"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Ved tilkobling via pakkedata kan det oppstå ekstra kostnader. Fortsette?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Strøm-\nsparing"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Internettdeling"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobildata"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Kjøremodus"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Kan ikke koble til mobilnettverk mens Flymodus er aktivert. Koble til Wi-Fi-nettverk i stedet, eller deaktiver Flymodus og prøv på nytt"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi-Internettdeling forbruker mer batteristrøm og øker databruken. Fortsette?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Deaktiver Internettdeling for å bruke Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "For å aktivere strømsparingsmodus må du aktivere minst én relevant funksjon"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Slå av Wi-Fi for å bruke Internettdeling"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Både Wi-Fi og mobilt tilgangspunkt kan ikke aktiveres samtidig. Deaktivere mobilt tilgangspunkt?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Bytt ut hurtiginnstillingsknapp"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Legg til en hurtiginnstillingsknapp"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Du vil ikke lenger kunne bruke programmer som Internett og E-post via mobilnettverk. Fortsette?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Knapp"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Varsel"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Godkjenn"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Uenig"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS-plassering og bruk av dine plasseringsdata kontrolleres av programmene du bruker"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Brukertillatelse"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Lyd"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobil-\ndata"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Fly-\nmodus"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Smart-\nhvilemod."
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Strøm-\nsparing"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Stille"
+
diff --git a/po/nl_NL.po b/po/nl_NL.po
new file mode 100755 (executable)
index 0000000..6425203
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Meldingen"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Alleen noodoproepen"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotatie"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Meldingen (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Trillen"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Geluid en trillen"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Autom. draaien"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Rotatie vergrend."
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Massaopslagmodus"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Uitzetten"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Aanzetten"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Niet ondersteund"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Uitzetten"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Plaats de SIM-kaart voor netwerkdiensten"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Niet nogmaals vragen"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "SIM-kaart plaatsen en apparaat opnieuw opstarten om tethering te gebruiken"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Aan verbinding via pakketgegevens zijn mogelijk extra kosten verbonden. Doorgaan?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Spaarstand"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobiele gegevens"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Autostand"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Kan niet verbinden met mobiele netwerken als Vliegtuigstand is ingeschakeld. Maak in plaats daarvan verbinding via Wi-Fi-netwerk of schakel Vliegtuigstand uit en probeer het opnieuw"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi-tethering verbruikt meer voeding en verhoogt uw gegevensgebruik. Doorgaan?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Tethering uitschakelen om Wi-Fi te gebruiken"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Schakel ten minste één relevante functie in om de spaarstand in te schakelen"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Wi-Fi uitschakelen om tethering te gebruiken"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi en mobiel access point kunnen niet tegelijkertijd zijn geactiveerd. Mobiel access point uitschakelen?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Snelle instelknop vervangen"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Snelle instelknop toevoegen"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "U kunt niet langer applicaties als internet en E-mail gebruiken via mobiele netwerken. Doorgaan?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Knop"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Melding"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Akkoord"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Niet akkoord"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS-locatie en gebruik van uw locatiegegevens worden geregeld door de gebruikte applicaties"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Toestemming gebruiker"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Geluid"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobiele\ngegevens"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Vliegtuig-\nstand"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Slim\nsluimer"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Spaar-\nstand"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Stil"
+
diff --git a/po/pl.po b/po/pl.po
new file mode 100755 (executable)
index 0000000..153db4b
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Powiadomienia"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Tylko połączenia alarmowe"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Obrót"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Powiadomienia (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Wibracja"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Dźwięk i wibracja"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Automat. obrót"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Blokada obrotu"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Tryb pamięci masowej"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Wyłącz"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Włącz"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Nieobsługiwane"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Porzuć"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Włóż kartę SIM, aby uzyskać dostęp do usług sieciowych"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Nie pokazuj ponownie"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Włóż kartę SIM i uruchom urządzenie ponownie, aby korzystać z udostępniania"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Połączenie przez sieć może spowodować naliczenie dodatkowych opłat. Kontynuować?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Oszczędzanie energii"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Udost. poł. internetowego"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Sieć komórkowa"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Tryb Samochód"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Kiedy tryb Offline jest włączony, nie można korzystać z sieci komórkowych. Połącz się z siecią Wi-Fi lub wyłącz tryb Offline i spróbuj ponownie"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Router Wi-Fi zwiększa zużycie baterii i danych. Kontynuować?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Wyłącz router, aby korzystać z sieci Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Aby włączyć tryb Oszczędzanie energii, włącz przynajmniej jedną związaną z nim funkcję"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Wyłącz sieć Wi-Fi, aby korzystać z routera"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Sieć Wi-Fi i Router Wi-Fi nie mogą być uruchomione jednocześnie. Wyłączyć Router Wi-Fi?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Odbicie lustrzane ekranu"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Zamień przycisk ustawień szybkiego panelu"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Dodawanie przycisku ustawień szybkiego panelu"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Nie będzie już możliwe korzystanie z takich aplikacji jak przeglądarka czy poczta e-mail za pośrednictwem sieci telefonii komórkowej. Kontynuować?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Przycisk"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Powiadom."
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Akceptuję"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Brak zgody"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "Lokalizacja GPS oraz wykorzystanie danych dotyczących Twojej lokalizacji są kontrolowane przez używane aplikacje"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Zgoda użytkownika"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Dźwięk"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Dane\nkomórkowe"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Tryb\nOffline"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Smart\nstay"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Oszcz.\nenergii"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Router"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Wycisz"
+
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100755 (executable)
index 0000000..1203ad0
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notificações"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Somente chamadas de emergência"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotação"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Notificações (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibração"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Som e vibração"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Rotação autom."
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Bloquear rotação"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Modo de armaz. em massa"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Desativar"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Ativar"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Não suportado"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Cancelar"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insira um cartão SIM para acessar serviços de rede"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Não perguntar mais"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Insira o cartão SIM e reinicie o dispositivo para usar a ancoragem"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "O acesso à rede através de pacotes de dados pode implicar em cobrança de taxas adicionais. Continuar?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Economia de energia"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Ancoragem"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Dados móveis"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Modo de condução"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Não é possível conectar-se à rede de dados móveis enquanto o modo Offline está ativado. Conecte-se à rede Wi-Fi ou desative o modo Offline e tente novamente"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "A ancoragem Wi-Fi consome mais bateria e aumenta o seu uso de dados. Continuar?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Desativar compartilhamento de rede via Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Para ativar o modo de Economia de energia, ative pelo menos uma função relevante"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Desligar Wi-Fi para usar compartilhamento de rede"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Impossível utilizar Wi-Fi ou AllShare com o Roteador Wi-Fi simultaneamente. Desativar o Roteador Wi-Fi?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Espelhamento de tela"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Substituir botão de configuração rápida"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Adicionar botão de configuração rápida"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Você não será mais capaz de usar aplicativos como a Internet e E-mail através de redes móveis. Continuar?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Botão"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notific."
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Concordo"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Discordo"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "A localização GPS e a utilização dos seus dados de localização são controlados pelas aplicações utilizadas"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Consentimento do usuário"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Som"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Dados\nmóveis"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Modo\nOffline"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Smart\nstay"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Econ. de\nenergia"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Ancoragem"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Silenciar"
+
diff --git a/po/pt_PT.po b/po/pt_PT.po
new file mode 100755 (executable)
index 0000000..85d7d9e
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notificações"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Apenas chamadas de emergência"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotação"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Notificações (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibração"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Som e vibração"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Rotação autom."
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Bloqueio rotação"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Modo armazenamento massa"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Desactivar"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Activar"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Não suportado"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Cancelar"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Insira o cartão SIM para aceder aos serviços de rede"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Não voltar a perguntar"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Inserir cartão SIM e reiniciar o dispositivo para utilizar a ancoragem"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "O acesso à rede através de pacotes de dados pode implicar a cobrança de taxas adicionais. Continuar?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Economia de energia"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Partilha de Internet"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Dados móveis"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Modo de condução"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Impossível ligar às redes móveis enquanto o modo de Voo está activado. Ligue à rede Wi-Fi em substituição ou desactive o modo de Voo e tente novamente"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "A ancoragem Wi-Fi consome mais bateria e aumenta a utilização de dados. Continuar?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Desactive a ancoragem para utilizar o Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Para activar o Modo de economia de energia, active pelo menos uma função relevante"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Desligar o Wi-Fi para utilizar a ancoragem"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Impossível activar Wi-Fi e PA Móvel em simultâneo. Desactivar PA Móvel?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Espelhamento do ecrã"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Substituir botão de definição rápida"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Adicionar botão de definição rápida"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Deixará de poder utilizar aplicações, tais como Internet e E-mail através de redes móveis. Continuar?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Tecla"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notificaç"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Concordo"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Discordo"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "A localização GPS e a utilização dos seus dados de localização são controlados pelas aplicações utilizadas"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Consentimento do utilizador"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Som"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Dados\nmóveis"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Modo\nde voo"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Susp.\nintelig"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Econ.\nenergia"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Silen."
+
diff --git a/po/ro.po b/po/ro.po
new file mode 100755 (executable)
index 0000000..af498d9
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Notificări"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Numai apeluri de urgenţă"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotire"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Notificări (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibraţie"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Sunet şi vibraţie"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Rotire auto."
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Blocare rotire"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Mod de stocare în masă"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Dezactiv."
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Activare"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Neacceptat"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Oprire"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Introduceţi cartela SIM pentru a accesa serviciile de reţea"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Nu întreba din nou"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Introduceţi cartela SIM şi reporniţi dispozitivul pentru a utiliza furnizarea accesului la Internet"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Conectarea folosind pachetele de date poate genera costuri suplimentare. Continuaţi?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Automat"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Economisire energie"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Date mobile"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Mod la volan"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Imposibil de conectat la reţelele mobile când modul Avion este activat. Conectaţi-vă utilizând reţeaua Wi-Fi sau dezactivaţi modul Avion şi încercaţi din nou"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Furnizarea accesului la Internet prin Wi-Fi consumă mai mult din energia bateriei şi creşte volumul de date utilizat. Continuaţi?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Dezact. furnizarea accesului la internet pt. a utiliza Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Pentru activarea modului Economisire energie, activaţi cel puţin o funcţie relevantă"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Opriţi Wi-Fi pentru a utiliza furnizarea accesului la internet"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi şi PA mobil nu pot fi activate simultan. Dezactivaţi PA mobil?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Oglindire ecran"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Înlocuiţi butonul pentru setare rapidă"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Adăugaţi un buton pentru setare rapidă"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Nu veţi mai putea utiliza aplicaţii precum Internetul şi E-mailul prin intermediul reţelelor mobile. Continuaţi?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Duplicare\nEcran"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Buton"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Notificare"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "De acord"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Refuzare"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "Locaţia GPS şi utilizarea datelor locaţiei dvs. sunt controlate de aplicaţiile pe care le utilizaţi"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Consimţământ utilizator"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Sunet"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Date\nmobile"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Mod\nAvion"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Repaus\nintelig."
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Econom.\nenergie"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Mut"
+
diff --git a/po/ru_RU.po b/po/ru_RU.po
new file mode 100755 (executable)
index 0000000..865582f
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Уведомления"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Только экстренные вызовы"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Поворот"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Уведомления (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Вибрация"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Звук и вибрация"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Авто поворот"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Блокир. поворот"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Режим съемного устройства"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Выкл."
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Включить"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Не поддерживается"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Отменить"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Вставьте SIM-карту для доступа к услугам сети"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Больше не спрашивать"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Чтобы воспользоваться модемом, вставьте SIM-карту и перезагрузите устройство"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "За передачу данных может взиматься дополнительная плата в соответствии с тарифным планом. Продолжить?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Авто"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Экономия энергии"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Модем"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Мобильные данные"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Режим Вождение"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Невозможно подключиться к мобильной сети в автономном режиме. Подключитесь к сети Wi-Fi или отключите автономный режим и повторите попытку"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "При использовании модема Wi-Fi быстро расходуется заряд батареи и увеличивается объем передаваемых данных. Продолжить?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Отключите модем для использования Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Чтобы использовать режим энергосбережения, включите по крайней мере одну функцию"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Отключите Wi-Fi, чтобы использовать модем"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Нельзя активировать одновременно Wi-Fi и Mobile AP. Отключить Mobile AP?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Заменить кнопку быстрых настроек"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Добавить кнопку быстрых настроек"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Вы больше не сможете использовать Интернет, электронную почту и другие приложения через мобильную сеть. Продолжить?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Кнопка"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Уведомление"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Принять"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Отказаться"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS-данные о местоположении и их применение контролируются используемыми приложениями"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Согласие пользователя"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Звук"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Мобил.\nданные"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Автономн.\nрежим"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Интеллект.\nожид."
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Энерго\nсбереж."
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Модем"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Без звука"
+
diff --git a/po/sk.po b/po/sk.po
new file mode 100755 (executable)
index 0000000..148db01
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Oznámenia"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Len tiesňové volania"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Otočenie"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Oznámenia (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibrácia"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Zvuk a vibrácia"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Autom. otáčanie"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Zamknutie otáčania"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Režim veľkokapac. pamäte"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Zakázať"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Povoliť"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Nie je podporované"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Odmietnuť"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Vložte SIM kartu na prístup k službám siete"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Už sa nepýtať"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Pred použitím zdieľania pripojenia vložte kartu SIM a reštartujte zariadenie"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Paketové dátové pripojenie môže vyžadovať ďalšie poplatky. Pokračovať?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Šetrenie energie"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Zdieľanie pripojenia"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobilné dáta"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Jazdný režim"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Keď je zapnutý letový režim, nedá sa pripojiť k mobilným sieťam. Pripojte sa namiesto toho k sieti Wi-Fi alebo vypnite letový režim a skúste to znova"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Zdieľanie pripojenia Wi-Fi spotrebúva viac energie batérie a zvyšuje používanie dátových prenosov. Pokračovať?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Pred použitím siete Wi-Fi vypnite zdieľanie pripojenia"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Ak chcete zapnúť režim šetrenia energie, zapnite aspoň jednu relevantnú funkciu"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Pred použitím zdieľania pripojenia vypnite sieť Wi-Fi"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi a mobilný prístupový bod sa nedajú aktivovať súčasne. Deaktivovať mobilný prístupový bod?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Zrkadlenie obrazovky"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Nahradiť tlačidlo rýchleho nastavenia"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Pridajte tlačidlo rýchleho nastavenia"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Nebudete viac môcť používať aplikácie ako Internet a E-mail cez mobilné siete. Pokračovať?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Tlačidlo"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Oznámenie"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Súhlasím"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Nesúhlasím"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "Polohu GPS a používanie údajov o vašej polohe ovládajú aplikácie, ktoré používate"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Súhlas používateľa"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Zvuk"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobilné\ndáta"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Letový\nrežim"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Intel.\nzap.obr."
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Šetren.\nenergie"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Stlmiť"
+
diff --git a/po/sl.po b/po/sl.po
new file mode 100755 (executable)
index 0000000..22bf295
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Obvestila"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Samo klici v sili"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Zasuk"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Obvestila (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibr."
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Zvok in vibrir."
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Samodej. vrtenje"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Zaklep. sukanja"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Način shranjevanja"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Onemogoči"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Omogoči"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Ni podprto"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Opusti"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Za dostop do omrežnih storitev vstavite kartico SIM"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Ne vprašaj znova"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Vstavite kartico SIM in znova zaženite napravo, če želite uporabljati telefon kot modem"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Povezovanje preko paketnega prenosa podatkov lahko povzroči dodatne stroške. Nadaljujem?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Samodejno"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Varčevanje z energijo"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobilni podatki"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Način vožnje"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Ko je omogočen način letenja, povezava z mobilnimi omrežji ni mogoča. Povežite se z omrežjem Wi-Fi ali onemogočite način letenja in poskusite znova"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Uporaba telefona kot modema prek omrežja Wi-Fi porabi več baterije in poveča uporabo podatkov. Želite nadaljevati?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Za uporabo Wi-Fi onemogočite uporabo telefona kot modema"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Če želite omogočiti Način za varčevanje z energijo, morate omogočiti vsaj eno ustrezno funkcijo"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Izklopite Wi-Fi, če želite uporabljati telefon kot modem"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi in mobilna DT ne moreta biti vklopljeni hkrati. Izklopim mobilno DT?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Zrcaljenje zaslona"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Spremenite gumb za hitre nastavitve"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Dodaj gumb za hitre nastavitve"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Programov, kot so internet in e-pošta ne boste mogli več uporabljati prek mobilnih omrežij. Želite nadaljevati?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Gumb"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Obvestilo"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Sprejmem"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Se ne strinjam"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "Lokacijo GPS in uporabo vaših podatkov o lokaciji nadzorujejo programi, ki jih uporabljate"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Uporabniško soglasje"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Zvok"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobilni\npodatki"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Način\nletenja"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Smart\nstay"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Varč.\nz energ."
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Nemo"
+
diff --git a/po/sr.po b/po/sr.po
new file mode 100755 (executable)
index 0000000..2dcc686
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Obaveštenja"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Samo pozivi u hitnim slučajevima"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotacija"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Obaveštenja (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibracija"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Zvuk i vibracija"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Autom. rotacija"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Zaklj. pri rotac."
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Režim masovne memorije"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Onemogući"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Omogući"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Nepodržano"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Odbaci"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Ubaci SIM karticu za pristup mrežnim uslugama"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Ne pitaj ponovo"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Ubaci SIM karticu i restartuj uređaj da bi koristio/la vezivanje"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Povezivanje putem paketnih podataka može izazvati dodatne troškove. Nastavak?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Automatski"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Štednja energije"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Vezivanje"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Podaci za mob. uređaje"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Režim vožnje"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Povezivanje na mobilne mreže nije moguć kada je omogućen režim letenja. Umesto toga, poveži se na Wi-Fi mrežu ili onemogući režim letenja i pokušaj ponovo"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi vezivanje troši više energije i povećava upotrebu podataka. Nastaviti?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Onemogući vezivanje da bi koristio/la Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Da bi omogućio/la režim štednje energije, omogući barem jednu važnu funkciju"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Isključi Wi-Fi da bi koristio/la vezivanje"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi i mobilna pristupna tačka se ne mogu uključiti istovremeno. Isključi mobilnu pristupnu tačku?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Preslikavanje ekrana"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Zameni dugme za brzo podešavanje"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Dodaj dugme za brzo podešavanje"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Nećeš moći više da koristiš aplikacije kao što su Internet i e-pošta putem mobilnih mreža. Nastaviti?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Taster"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Obavešt."
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Slažem se"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Ne slažem se"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "Korišćene aplikacije kontrolišu GPS lokaciju i korišćenje podataka o lokaciji"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Saglasnost korisnika"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Zvuk"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobilni\npodaci"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Profil\nletenja"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Pametan\nostanak"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Štednja\nnapajanja"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Vezivanje"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Isklj.ton"
+
diff --git a/po/sv.po b/po/sv.po
new file mode 100755 (executable)
index 0000000..946eabb
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Meddelanden"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Endast nödsamtal"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Rotation"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Meddelanden (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibration"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Ljud och vibration"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Auto-rotering"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Roteringslås"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Masslagringsläge"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Inaktivera"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Aktivera"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Stöds inte"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Stäng"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Sätt in SIM-kort för att få tillgång till nätverkstjänster"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Fråga inte igen"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Sätt i ett SIM-kort och starta om enheten för att använda Internetdelning"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Anslutning via paketdata kan medföra ytterligare kostnader. Vill du fortsätta?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Auto"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Energisparläge"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Internetdelning"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobil data"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Billäge"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Det går inte att ansluta till mobila nätverk eftersom Flygläge är aktiverat. Anslut till ett Wi-Fi-nätverk istället eller inaktivera Flygläge och gör ett nytt försök"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Vid användning av Wi-Fi-internetdelning förbrukas mer batteri och dataanvändningen ökar. Fortsätta?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Inaktivera Internetdelning för att använda Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Aktivera minst en relevant funktion för att aktivera energisparläget"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Stäng av Wi-Fi för att använda internetdelning"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Det går inte att aktivera både Wi-Fi och Mobile AP samtidigt. Avaktivera Mobile AP?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Ersätt snabbinställningsknappen"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Lägg till snabbinställningsknapp"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Du kommer inte längre att kunna använda program som Internet och e-post via mobilnätverk. Fortsätta?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Knapp"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Meddelande"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Godkänn"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Samtycker inte"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS-position och användning av dina positionsdata hanteras av programmet som används"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Användarmedgivande"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Ljud"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobil\ndata"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Flyg-\nläge"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Smart-\nstopp"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Energi\nsparläge"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Tethering"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Ljud av"
+
diff --git a/po/tr_TR.po b/po/tr_TR.po
new file mode 100755 (executable)
index 0000000..16d7ed6
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Bildirimler"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Yalnızca acil aramalar"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Döndürme"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Bildirimler (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Titreşim"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Ses ve titreşim"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Otomatk döndürme"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Döndürme kilidi"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Yığın depolama modu"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Devre dışı"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Etkin"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Desteklenmiyor"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Durdur"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Şebeke servislerine erişmek için SIM kartını takın"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Tekrar sorma"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Bağlantıyı kullanmak için SIM kartı takın ve cihazı tekrar başlatın"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Paket verisi kanalıyla bağlanmak ek ücretlere neden olabilir devam edilsin mi?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Otomatik"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Güç tasarrufu"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Bağlantı"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobil veri"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Sürüş modu"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Uçuş modu etkinken, mobil ağlara bağlanamıyor. Bunun yerine Wi-Fi ağına bağlanın veya mobil veriyi devre dışı bırakın ve tekrar deneyin"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi bağlantısı daha fazla pil gücü tüketir ve veri kullanımınızı arttırır. Devam edilsin mi?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Wi-Fi'yi kullanmak için bağlanmayı devre dışı bırakın"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Güç tasarrufu modunu etkinleştirmek için en az bir uygun fonksiyonu etkinleştirin"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Bağlanmayı kullanmak için Wi-Fi'yi kapatın"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Hem Wi-Fi hem de Mobil AP aynı anda etkinleştirilemez. Mobil AP devre dışı bırakılsın mı?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Ekran Yansıtma"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Hızlı ayar düğmesini değiştir"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Hızlı ayar düğmesi ekle"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Artık İnternet ve E-posta gibi uygulamaları mobil ağlar üzerinden kullanamayacaksınız. Devam edin?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Ekran\nYansıtma"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Düğme"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Bildirim"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Onayla"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Onaylama"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS konumu ve konum verinizin kullanımı kullandığınız uygulamalar tarafından kontrol edilir"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Kullanıcı izni"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Ses"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobil\nverisi"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Uçuş\nmodu"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Akıllı\nbekleme"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Güç\ntasarrufu"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Bağlantı"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Sessiz"
+
diff --git a/po/uk.po b/po/uk.po
new file mode 100755 (executable)
index 0000000..27990af
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Сповіщення"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Лише екстрені виклики"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Обертан."
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Сповіщення (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Вібрація"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Звук і вібрація"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Автооберт."
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Блок. обертання"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Режим накопичувача"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "Вимкнути"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Увімкнути"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Не підтримується"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "Відхилити"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Щоб отримати доступ до послуг мережі, вставте SIM-картку"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Надалі не запитувати"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Вставте SIM-картку та перезавантажте пристрій, щоб скористатися прив'язкою"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Підключення з використанням пакетних даних може потребувати додаткової оплати. Продовжити?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Авто"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Енергозбереження"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Прив’язка"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Мобільні дані"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Режим За кермом"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Неможливо підключитися до мобільної мережі у разі ввімкненого режиму без зв'язку. Підключіться до мережі Wi-Fi або вимкніть режим без зв'язку та спробуйте ще раз"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Прив'язка Wi-Fi використовує більше заряду акумулятора та збільшує використання даних. Продовжити?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Вимкніть прив'язку, щоб скористатися Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Щоб ввімкнути режим енергозбереження, увімкніть принаймні одну відповідну функцію"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Вимкніть Wi-Fi, щоб скористатися прив'язкою"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Мережі Wi-Fi та Mobile AP не можна активувати одночасно. Вимкнути Mobile AP?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Дублювання екрану"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Замінити кнопку установок панелі швидкого доступу"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Додати кнопку швидкого доступу до установок"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Більше не можна буде використовувати такі послуги, як доступ до Інтернету та обмін повідомленнями Email через мобільні мережі. Продовжити?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Дублюв.\nекрана"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Кнопка"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Сповіщення"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Згоден"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Не погодитися"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "Керування GPS-розташуванням і використанням даних про розташування здійснюється за допомогою програми, яка використовується вами"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Згода користувача"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Звук"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Мобільні\nдані"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Реж.\nбез зв’яз."
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Смарт-\nрежим"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Енерго\nзбереж."
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Прив’язка"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Вимк.звук"
+
diff --git a/po/uz.po b/po/uz.po
new file mode 100755 (executable)
index 0000000..9dd2ff2
--- /dev/null
+++ b/po/uz.po
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "Bildirishnoma"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "Faqat favqulodda qo‘ng‘iroqlar"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "Aylant."
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "Eslatmalar (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "Vibrats"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "Ovoz & vibratsiya"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "Avto. aylantirish"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "Aylantirish bloki"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "Katta hajmli xot. rejimi"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "O‘chirish"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "Yoqish"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "Qo‘llab-quvvatlanmaydigan"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "O‘tkazish"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "Tarmoq xizmatlariga kirish uchun SIM-karta kiriting"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "Boshqa so‘ralmasin"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "Bog‘lanishdan foydalanish uchun, SIM-kartani kiriting va qurilmani qayta ishga tushiring"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "Paketli ma’lumot orqali ulanish uchun qo‘shimcha to‘lov olinishi mumkin. Davom ettirilsinmi?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "Avtomatik"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "Quvvat tejash"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "Bog‘lash"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "Mobile data"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "Mashina rejimi"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "Uchish rejimi yoqilganda, mobil tarmoqlarga ulanib bo‘lmaydi. Uning o‘rniga Wi-Fi tarmoqqa ulaning yoki Uchish rejimini yoqing va qayta urinib ko‘ring"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi bog‘lanish ko‘proq batareya quvvatini sarflaydi va ma’lumot ishlatilishini oshiradi. Davom ettirilsinmi?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "Wi-Fidan foydalanish uchun bog‘lanishni o‘chiring"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "Quvvat tejash rejimini yoqish uchun kamida bitta mos funksiyani yoqing"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "Bog‘lanishdan foydalanish uchun Wi-Fini o‘chiring"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Bir vaqtning o‘zida Wi-Fi va Mobile APni faollashtirib bo‘lmaydi. Mobile AP o‘chirilsinmi?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "Tezkor sozlash tugmasini almashtirish"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "Tezkor sozlash tugmasini qo‘shish"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "Mobil tarmoqlar orqali Internet va E-pochta kabi ilovalardan foydalana olmaysiz. Davom ettirilsinmi?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "Tugma"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "Bildir-noma"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "Roziman"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "Rozi emas"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS joylashuvi va Sizning joylashuvingiz ma’lumotidan foydalanish Siz ishlatayotgan ilovalar orqali nazorat qilinadi"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "Foydalanuvchi roziligi"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "Ohang"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "Mobil\nma’lumot"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "Uchish\nrejimi"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Smart\nturish"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "Quvvat\ntejash"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "Bog‘lanish"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "Ovozsiz"
+
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100755 (executable)
index 0000000..6b0f717
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "通知"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "仅限紧急通话"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "转动"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "通知 (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "振动"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "声音和振动"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "自动旋转"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "旋转锁定"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "大容量存储模式"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "禁用"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "启动"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "不支持"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "解除"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "插入SIM卡以访问网络服务"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "不再询问"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "插入 SIM 卡并重启设备以使用网络共享"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "通过分组数据连接可能产生额外费用。继续?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "自动"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "省电模式"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "网络分享"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "移动数据"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "驾驶模式"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "飞行模式启用时无法连接至移动网络。连接至 Wi-Fi 网络,或禁用飞行模式并重试"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi 网络共享消耗更多电池电力并增加您的数据使用量。是否继续?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "禁用网络共享以使用 Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "若要启用节电模式,至少启用一个相关功能"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "关闭 Wi-Fi 以使用网络共享"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi和移动接入无法同时启动。取消移动接入?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "替换快捷设置按钮"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "添加快捷设置按钮"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "您将无法继续通过移动网络使用互联网和电子邮件等应用程序。是否继续?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "屏幕\n镜像"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "按钮"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "通知"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "同意"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "不同意"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS位置和您的位置数据的使用由您使用的应用程序来控制"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "用户同意"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "声音"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "移动\n数据"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "飞行\n模式"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "Smart\nstay"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "省电\n模式"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "网络共享"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "静音"
+
diff --git a/po/zh_HK.po b/po/zh_HK.po
new file mode 100755 (executable)
index 0000000..371dc73
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "通知"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "只限緊急通話"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "旋轉"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "通知(%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "震動"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "聲音和震動"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "自動旋轉"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "旋轉鎖定"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "大容量儲存裝置模式"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "關閉"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "啟用"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "不支援"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "解除"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "請插入 SIM 卡以存取服務"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "不再詢問"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "插入 SIM 卡並重新啟動裝置以使用網絡共用"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "透過分組數據連接可能會產生額外費用。要繼續嗎?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "自動"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "省電模式"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "網絡共享"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "流動數據"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "駕駛模式"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "飛行模式啟用時無法連接至流動網絡。請連接 Wi-Fi 網絡或停用飛行模式並重試"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi 網絡共用會消耗更多電力並增加您的數據使用量。繼續嗎?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "停用網絡共享以使用 Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "若要啟用省電模式,請至少啟用一項相關功能"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "關閉 Wi-Fi 以使用網絡共享"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi和Mobile AP不可同時啟動。關閉Mobile AP嗎?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "取代快速設定按鈕"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "加入快速設定按鈕"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "您無法再透過流動網絡使用如互聯網和電子郵件等的應用程式。繼續嗎?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "按鈕"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "通知"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "同意"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "不同意"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS 位置和位置數據的使用由您使用的應用程式控制"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "用戶贊成"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "聲音"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "流動\n數據"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "飛行\n模式"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "智能\n休眠"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "省電\n模式"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "網絡共享"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "靜音"
+
diff --git a/po/zh_SG.po b/po/zh_SG.po
new file mode 100755 (executable)
index 0000000..e0cf3b4
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "通知"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "仅限紧急通话"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "转动"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "通知 (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "振动"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "声音和振动"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "自动旋转"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "旋转锁定"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "大容量存储模式"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "关闭"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "启动"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "不支持"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "解除"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "要使用网络服务须先插入SIM卡"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "不再询问"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "插入 SIM 卡并重启设备以使用网络共享"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "通过分组数据连接可能产生额外费用。继续?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "自动"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "省电"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "网络分享"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "移动数据"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "驾驶模式"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "飞行模式启用时无法连接至移动网络。连接至WLAN网络,或禁用飞行模式并重试"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "WLAN网络共享消耗更多电池电力并增加您的数据使用量。是否继续?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "禁用网络共享以使用 Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "若要启用节电模式,至少启用一个相关功能"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "关闭 Wi-Fi 以使用网络共享"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi-Fi和移动AP无法同时启动。取消移动AP?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "屏幕镜像"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "替换快捷设置按钮"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "添加快捷设置按钮"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "您将无法继续通过移动网络使用互联网和电子邮件等应用程序。是否继续?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "屏幕\n镜像"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "按钮"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "通知"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "同意"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "不同意"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS位置和您的位置数据的使用由使用的应用程序来控制"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "用户同意"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "声音"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "移动\n数据"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "闪光灯\n模式"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "智能\n休眠"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "节\n电"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "网络共享"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "静音"
+
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100755 (executable)
index 0000000..b296fc3
--- /dev/null
@@ -0,0 +1,150 @@
+msgid "IDS_COM_BODY_NFC"
+msgstr "NFC"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_ABB2"
+msgstr "通知"
+
+msgid "IDS_WIFI_BODY_ALLSHARE_CAST"
+msgstr "AllShare Cast"
+
+msgid "IDS_CALL_POP_CALLING_EMERG_ONLY"
+msgstr "僅限緊急通話"
+
+msgid "IDS_QP_BUTTON_ROTATION"
+msgstr "旋轉"
+
+msgid "IDS_QP_BODY_NOTIFICATIONS_HPD"
+msgstr "通知 (%d)"
+
+msgid "IDS_QP_BUTTON_VIBRATION"
+msgstr "震動"
+
+msgid "IDS_QP_BUTTON2_SOUND_N_VIBRATION"
+msgstr "聲音與震動"
+
+msgid "IDS_QP_TAB4_AUTO_ROTATION"
+msgstr "自動旋轉"
+
+msgid "IDS_QP_BUTTON2_ROTATION_LOCK"
+msgstr "旋轉鎖定"
+
+msgid "IDS_QP_BODY_MASS_STORAGE_MODE"
+msgstr "大容量儲存裝置模式"
+
+msgid "IDS_QP_BUTTON_DISABLE"
+msgstr "停用"
+
+msgid "IDS_QP_BUTTON_ENABLE"
+msgstr "啟用"
+
+msgid "IDS_COM_POP_UNSUPPORTED"
+msgstr "不支援"
+
+msgid "IDS_COM_SK_DISMISS"
+msgstr "關閉"
+
+msgid "IDS_COM_POP_PELASE_INSERT_SIM_CARD_TO_ACCESS_NETWORK_SERVICES"
+msgstr "請插入 SIM 卡以存取網路服務"
+
+msgid "IDS_COM_BODY_DO_NOT_ASK_AGAIN"
+msgstr "不再詢問"
+
+msgid "IDS_QP_POP_INSERT_SIM_CARD_AND_RESTART_DEVICE_TO_USE_TETHERING"
+msgstr "插入 SIM 卡並重新啟動裝置以使用網路共享"
+
+msgid "IDS_QP_POP_CONNECTING_VIA_PACKET_DATA_MAY_INCUR_ADDITIONAL_CHARGES_CONTINUE_Q"
+msgstr "透過數據傳輸連線可能會產生額外費用。要繼續嗎?"
+
+msgid "IDS_QP_BODY_AUTO"
+msgstr "自動"
+
+msgid "IDS_QP_TAB_POWER_SAVING"
+msgstr "省電"
+
+msgid "IDS_QP_TAB_TETHERING"
+msgstr "網路共享"
+
+msgid "IDS_QP_TAB_MOBILE_DATA"
+msgstr "行動數據"
+
+msgid "IDS_QP_TAB_DRIVING_MODE"
+msgstr "駕駛模式"
+
+msgid "IDS_COM_POP_UNABLE_TO_CONNECT_TO_MOBILE_NETWORK_WHILE_FLIGHT_MODE_IS_ENABLED_MSG"
+msgstr "啟用飛航模式時無法連接行動網路。請連接 Wi-Fi 網路或停用飛航模式再重試"
+
+msgid "IDS_QP_POP_WI_FI_TETHERING_CONSUMES_MORE_BATTERY_POWER_AND_INCREASES_YOUR_DATA_USAGE_CONTINUE_Q"
+msgstr "Wi-Fi 網路共享會消耗更多電力並增加您的資料用量。繼續嗎?"
+
+msgid "IDS_QP_POP_DISABLE_TETHERING_TO_USE_WI_FI"
+msgstr "停用網路共享以使用 Wi-Fi"
+
+msgid "IDS_QP_POP_TO_ENABLE_POWER_SAVING_MODE_ENABLE_AT_LEAST_ONE_RELEVANT_FUNCTION"
+msgstr "若要啟用省電模式,請至少啟用一項相關功能"
+
+msgid "IDS_QP_POP_TURN_OFF_WI_FI_TO_USE_TETHERING"
+msgstr "關閉 Wi-Fi 以使用網路共享"
+
+msgid "IDS_WIFI_POP_BOTH_WI_FI_AND_MOBILE_AP_CANNOT_BE_ACTIVATED_AT_THE_SAME_TIME_DEACTIVATE_MOBILE_AP_Q"
+msgstr "Wi - Fi和行動AP不能在同一時間被啟動。停用行動AP?"
+
+msgid "IDS_ASCAST_HEADER_SCREEN_MIRRORING"
+msgstr "Screen Mirroring"
+
+msgid "IDS_QP_HEADER_REPLACE_QUICK_SETTING_BUTTON"
+msgstr "取代快速設定按鈕"
+
+msgid "IDS_QP_HEADER_ADD_QUICK_SETTING_BUTTON"
+msgstr "新增快速設定按鈕"
+
+msgid "IDS_QP_POP_YOU_WILL_NO_LONGER_BE_ABLE_TO_USE_APPLICATIONS_SUCH_AS_INTERNET_NOTI_MSG"
+msgstr "您無法再透過行動網路使用如網際網路和電子郵件等的應用程式。繼續嗎?"
+
+msgid "IDS_QP_BUTTON2_SCREEN_N_MIRRORING"
+msgstr "Screen\nMirroring"
+
+msgid "IDS_COM_BODY_BUTTON_T_TTS"
+msgstr "按鍵"
+
+msgid "IDS_QP_BUTTON2_GPS"
+msgstr "GPS"
+
+msgid "IDS_QP_BUTTON_NOTIFICATION"
+msgstr "通知"
+
+msgid "IDS_COM_BUTTON_AGREE"
+msgstr "同意"
+
+msgid "IDS_COM_BUTTON_DISAGREE"
+msgstr "不同意"
+
+msgid "IDS_ST_BODY_GPS_LOCATION_USE_CONTROLLED_BY_APPLICATIONS_MSG"
+msgstr "GPS定位和你的位置資料將被你的用應程式使用"
+
+msgid "IDS_ST_HEADER_USER_CONSENT"
+msgstr "用戶同意"
+
+msgid "IDS_QP_BUTTON_SOUND_ABB"
+msgstr "音效"
+
+msgid "IDS_QP_BUTTON2_MOBILE_DATA"
+msgstr "行動\n資料"
+
+msgid "IDS_QP_BUTTON2_FLIGHT_N_MODE"
+msgstr "飛航\n模式"
+
+msgid "IDS_QP_BUTTON2_S_BEAM"
+msgstr "S Beam"
+
+msgid "IDS_QP_BUTTON2_SMART_N_STAY"
+msgstr "智慧\n休眠"
+
+msgid "IDS_QP_BUTTON2_POWER_N_SAVING"
+msgstr "省電\n模式"
+
+msgid "IDS_QP_BUTTON2_TETHERING"
+msgstr "網路共享"
+
+msgid "IDS_QP_BUTTON_MUTE_ABB"
+msgstr "靜音"
+
diff --git a/test/quickpanel_debug_util.c b/test/quickpanel_debug_util.c
new file mode 100755 (executable)
index 0000000..c151cfd
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <time.h>
+#include <common.h>
+#include <glib.h>
+
+#define LINEMAX 256
+#define MAXFILELEN     1048576 /* 32000 */
+#define LOGFILE "/tmp/quickpanel.log"
+
+void debug_printf(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);
+       /* local_t = gmtime(&current_time); */
+       gmtime_r(&current_time, &local_t); /* for prevent 53555 */
+       int len = snprintf(debugString, sizeof(debugString),
+                       "[%d-%02d-%02d, %02d:%02d:%02d]: ", local_t.tm_year + 1900,
+                       local_t.tm_mon + 1, 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... */
+       /* system("chmod 666 "LOGFILE); */
+       if ((fd = fopen(LOGFILE, "at+")) == NULL) {
+               DBG("File fopen fail for writing Pwlock information");
+       } else {
+               int pid = -1;
+               if (fwrite(debugString, strlen(debugString), 1, fd) < 1) {
+                       DBG("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);
+                       }
+                       /* system("rm -rf "LOGFILE);  */
+               } 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);
+                               }
+                               /* system("rm -rf "LOGFILE); */
+                       } else
+                               fclose(fd);
+               }
+       }
+}
diff --git a/test/quickpanel_debug_util.h b/test/quickpanel_debug_util.h
new file mode 100755 (executable)
index 0000000..350928b
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2012  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (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 __QUICKPANEL_DEBUG_UTIL_H_
+#define __QUICKPANEL_DEBUG_UTIL_H_
+
+void debug_printf(char *fmt, ...);
+
+#endif                         /* __QUICKPANEL_DEBUG_UTIL_H_ */